tx · 3peFp4UMKNWAxmBkfe7ST71CAYthHZAPeUBV5NXmrhmc

3N2iycpXC7Fomf1vYLmz9uUWwLR2ZvxRCyw:  -0.00700000 Waves

2023.03.20 23:29 [2498816] smart account 3N2iycpXC7Fomf1vYLmz9uUWwLR2ZvxRCyw > SELF 0.00000000 Waves

{ "type": 13, "id": "3peFp4UMKNWAxmBkfe7ST71CAYthHZAPeUBV5NXmrhmc", "fee": 700000, "feeAssetId": null, "timestamp": 1679344196738, "version": 2, "chainId": 84, "sender": "3N2iycpXC7Fomf1vYLmz9uUWwLR2ZvxRCyw", "senderPublicKey": "3TJ91ZMX9cHrPAcqCiYodSdxYs8AiLNHyvRJNK1PDc6i", "proofs": [ "7vB6LjF8Xghof9xWgwobSwJxJf88WyY4bH8kSST4MuX8FPsWZgsR9ZDzukvdetA8PkdFZyCXhUdyFuiCgG3ubdu" ], "script": "base64:BgIcCAISABIDCgEIEgUKAwEBCBIDCgEBEgASAwoBCAUABkF1cnVlcwEgOYDtDd1mVUaSfSlX4MdFqsCgGC27Z5CEtJGKkGOZYFwBCW9ubHlPd25lcgEBaQMJAAACCAUEdGhpcwVieXRlcwgIBQFpBmNhbGxlcgVieXRlcwUEdW5pdAkAAgECKU9ubHkgZGFwcCBhY2NvdW50IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24hARBnZXRBdXJ1ZXNQYXltZW50AQFpAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFFBheW1lbnQgbm90IGF0dGFjaGVkBAFwCQCRAwIIBQFpCHBheW1lbnRzAAAEByRtYXRjaDAIBQFwB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQHYXNzZXRJZAUHJG1hdGNoMAMJAAACBQdhc3NldElkBQZBdXJ1ZXMIBQFwBmFtb3VudAkAAgECIE9ubHkgYXVydWVzIGFjY2VwdGVkIGFzIHBheW1lbnQhCQACAQIgT25seSBhdXJ1ZXMgYWNjZXB0ZWQgYXMgcGF5bWVudCEBDGdldEFzc2V0RGF0YQEHYXNzZXRJZAMJAAACBQdhc3NldElkAAAJAJYKBAIFTWluZXICR1V0aWxpdHkgYnVpbGRpbmcgdGhhdCBoZWxwcyB5b3UgdG8gbWluZSBhdXJ1ZXMgYXQgY2VydGFpbiBibG92ayBoZWlnaHQuALDqAQIHX19taW5lcgMJAAACBQdhc3NldElkAAEJAJYKBAIFQ2Fub24CR1V0aWxpdHkgYnVpbGRpbmcgdGhhdCBoZWxwcyB5b3UgdG8gbWluZSBhdXJ1ZXMgYXQgY2VydGFpbiBibG92ayBoZWlnaHQuAKjDAQIGX2Nhbm9uAwkAAAIFB2Fzc2V0SWQAAgkAlgoEAgRYYm93AkdVdGlsaXR5IGJ1aWxkaW5nIHRoYXQgaGVscHMgeW91IHRvIG1pbmUgYXVydWVzIGF0IGNlcnRhaW4gYmxvdmsgaGVpZ2h0LgCYdQIFX3hib3cDCQAAAgUHYXNzZXRJZAADCQCWCgQCBVRlc2xhAkdVdGlsaXR5IGJ1aWxkaW5nIHRoYXQgaGVscHMgeW91IHRvIG1pbmUgYXVydWVzIGF0IGNlcnRhaW4gYmxvdmsgaGVpZ2h0LgCgnAECBl90ZXNsYQMJAAACBQdhc3NldElkAAQJAAIBAhdZb3UgY2FuJ3QgYnV5IHRvd25oYWxsIQMJAAACBQdhc3NldElkAAUJAJYKBAIGQXJjaGVyAkdVdGlsaXR5IGJ1aWxkaW5nIHRoYXQgaGVscHMgeW91IHRvIG1pbmUgYXVydWVzIGF0IGNlcnRhaW4gYmxvdmsgaGVpZ2h0LgCUIwIHX2FyY2hlcgMJAAACBQdhc3NldElkAAYJAJYKBAIFUm9ib3QCR1V0aWxpdHkgYnVpbGRpbmcgdGhhdCBoZWxwcyB5b3UgdG8gbWluZSBhdXJ1ZXMgYXQgY2VydGFpbiBibG92ayBoZWlnaHQuAPwqAgVfcm9ibwMJAAACBQdhc3NldElkAAcJAJYKBAIJVmFsa3lyaWVlAkdVdGlsaXR5IGJ1aWxkaW5nIHRoYXQgaGVscHMgeW91IHRvIG1pbmUgYXVydWVzIGF0IGNlcnRhaW4gYmxvdmsgaGVpZ2h0LgDwLgIKX3ZhbGt5cmllZQkAAgECD1Vua293biBhc3NldElkIQELZ2V0QXNzZXRLZXkBBG5hbWUDCQAAAgUEbmFtZQIFTWluZXICB19fbWluZXIDCQAAAgUEbmFtZQIFQ2Fub24CBl9jYW5vbgMJAAACBQRuYW1lAgRYYm93AgVfeGJvdwMJAAACBQRuYW1lAgVUZXNsYQIGX3Rlc2xhAwkAAAIFBG5hbWUCCFRvd25oYWxsCQACAQIhWW91IGNhbid0IGFkZCBvciByZW1vdmUgdG93bmhhbGwhAwkAAAIFBG5hbWUCBkFyY2hlcgIHX2FyY2hlcgMJAAACBQRuYW1lAgVSb2JvdAIFX3JvYm8DCQAAAgUEbmFtZQIJVmFsa3lyaWVlAgpfdmFsa3lyaWVlCQACAQINVW5rb3duIEFzc2V0IQYBaQEJc3RhcnRHYW1lAAQHYWRkcmVzcwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBAxnYW1lU3RhdGVLZXkJAKwCAgUHYWRkcmVzcwIJX2lzU3RydGVkAwkAAAIJAJsIAgUEdGhpcwUMZ2FtZVN0YXRlS2V5BQR1bml0BAZ1c2VySWQEByRtYXRjaDAJAJoIAgUEdGhpcwIGdXNlcklkAwkAAQIFByRtYXRjaDACA0ludAQBeAUHJG1hdGNoMAkAZAIFAXgAAQAABAd0aElzc3VlCQDCCAUCCFRvd25oYWxsAhFIUSBvZiB5b3VyIGVtcGlyZQABAAAHBAl0aEFzc2V0SWQJANgEAQkAuAgBBQd0aElzc3VlCQCUCgIJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDGdhbWVTdGF0ZUtleQYJAMwIAgkBB1JlaXNzdWUDBQZBdXJ1ZXMAoI0GBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAoI0GBQZBdXJ1ZXMJAMwIAgUHdGhJc3N1ZQkAzAgCCQELU3RyaW5nRW50cnkCBQl0aEFzc2V0SWQFB2FkZHJlc3MJAMwIAgkBDEludGVnZXJFbnRyeQICBnVzZXJJZAUGdXNlcklkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKQDAQUGdXNlcklkBQdhZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB2FkZHJlc3MCCV90b3duaGFsbAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB2FkZHJlc3MCEF90b3duaGFsbF9wbGFjZWQAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQdhZGRyZXNzAgZfbWluZXIAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQdhZGRyZXNzAg1fbWluZXJfcGxhY2VkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHYWRkcmVzcwIGX2Nhbm9uAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHYWRkcmVzcwINX2Nhbm9uX3BsYWNlZAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB2FkZHJlc3MCBV94Ym93AAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHYWRkcmVzcwIMX3hib3dfcGxhY2VkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHYWRkcmVzcwIGX3Rlc2xhAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHYWRkcmVzcwINX3Rlc2xhX3BsYWNlZAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB2FkZHJlc3MCB19hcmNoZXIAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQdhZGRyZXNzAgVfcm9ibwAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB2FkZHJlc3MCCl92YWxreXJpZWUAAAUDbmlsBQR1bml0CQACAQIVR2FtZSBhbHJlYWR5IHN0YXJ0ZWQhAWkBCHNhdmVHYW1lAQRkYXRhBAV0aENudAkAZQIJAJADAQkAvQkCBQRkYXRhAhBidWlsZGluZ0luZGV4Jzo0AAEECG1pbmVyQ250CQBlAgkAkAMBCQC9CQIFBGRhdGECEGJ1aWxkaW5nSW5kZXgnOjAAAQQIY2Fub25DbnQJAGUCCQCQAwEJAL0JAgUEZGF0YQIQYnVpbGRpbmdJbmRleCc6MQABBAd4Ym93Q250CQBlAgkAkAMBCQC9CQIFBGRhdGECEGJ1aWxkaW5nSW5kZXgnOjIAAQQIdGVzbGFDbnQJAGUCCQCQAwEJAL0JAgUEZGF0YQIQYnVpbGRpbmdJbmRleCc6MwABBAdhZGRyZXNzCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEBXRoQXZhCQBkAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQdhZGRyZXNzAglfdG93bmhhbGwJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUHYWRkcmVzcwIQX3Rvd25oYWxsX3BsYWNlZAQIbWluZXJBdmEJAGQCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFB2FkZHJlc3MCBl9taW5lcgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQdhZGRyZXNzAg1fbWluZXJfcGxhY2VkBAhjYW5vbkF2YQkAZAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMJAKwCAgUHYWRkcmVzcwIGX2Nhbm9uCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFB2FkZHJlc3MCDV9jYW5vbl9wbGFjZWQEB3hib3dBdmEJAGQCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFB2FkZHJlc3MCBV94Ym93CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFB2FkZHJlc3MCDF94Ym93X3BsYWNlZAQIdGVzbGFBdmEJAGQCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFB2FkZHJlc3MCBl90ZXNsYQkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQdhZGRyZXNzAg1fdGVzbGFfcGxhY2VkAwMDAwMJAGcCBQV0aEF2YQUFdGhDbnQJAGcCBQhtaW5lckF2YQUIbWluZXJDbnQHCQBnAgUIY2Fub25BdmEFCGNhbm9uQ250BwkAZwIFB3hib3dBdmEFB3hib3dDbnQHCQBnAgUIdGVzbGFBdmEFCHRlc2xhQ250BwkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUHYWRkcmVzcwIFX2RhdGEFBGRhdGEJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHYWRkcmVzcwIJX3Rvd25oYWxsCQBlAgUFdGhBdmEFBXRoQ250CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB2FkZHJlc3MCEF90b3duaGFsbF9wbGFjZWQFBXRoQ250CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB2FkZHJlc3MCBl9taW5lcgkAZQIFCG1pbmVyQXZhBQhtaW5lckNudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQdhZGRyZXNzAg1fbWluZXJfcGxhY2VkBQhtaW5lckNudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQdhZGRyZXNzAgZfY2Fub24JAGUCBQhjYW5vbkF2YQUIY2Fub25DbnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHYWRkcmVzcwINX2Nhbm9uX3BsYWNlZAUIY2Fub25DbnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHYWRkcmVzcwIFX3hib3cJAGUCBQd4Ym93QXZhBQd4Ym93Q250CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFB2FkZHJlc3MCDF94Ym93X3BsYWNlZAUHeGJvd0NudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQdhZGRyZXNzAgZfdGVzbGEJAGUCBQh0ZXNsYUF2YQUIdGVzbGFDbnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHYWRkcmVzcwINX3Rlc2xhX3BsYWNlZAUIdGVzbGFDbnQFA25pbAUEdW5pdAkAAgECJFBsYWNlZCBtb3JlIGJ1aWxkaW5nIHRoZW4geW91IG93bmVkIQFpAQlyZXdhcmRXYXIDCGJ1aWxkaW5nBnRyb29wcwhvcHBvbmVudAkAlAoCCQDMCAIJAQdSZWlzc3VlAwUGQXVydWVzCQBkAgkAaAIFCGJ1aWxkaW5nAIgnCQBoAgUGdHJvb3BzANAPBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAGgCBQhidWlsZGluZwCIJwUGQXVydWVzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkAmwMBBQhvcHBvbmVudAkAaAIFBnRyb29wcwDQDwUGQXVydWVzBQNuaWwFBHVuaXQBaQEDYnV5AQdhc3NldElkBAdhZGRyZXNzCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEDGF1cnVlc0Ftb3VudAkBEGdldEF1cnVlc1BheW1lbnQBBQFpBAskdDA3MTMyNzE5MQkBDGdldEFzc2V0RGF0YQEFB2Fzc2V0SWQEBG5hbWUIBQskdDA3MTMyNzE5MQJfMQQLZGVzY3JpcHRpb24IBQskdDA3MTMyNzE5MQJfMgQFcHJpY2UIBQskdDA3MTMyNzE5MQJfMwQDa2V5CAULJHQwNzEzMjcxOTECXzQDCQBnAgUMYXVydWVzQW1vdW50BQVwcmljZQQKY3VycmVudENudAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwkArAICBQdhZGRyZXNzBQNrZXkEBWlzc3VlCQDCCAUFBG5hbWUFC2Rlc2NyaXB0aW9uAAEAAAcEDWlzc3VlZEFzc2V0SWQJANgEAQkAuAgBBQVpc3N1ZQkAlAoCCQDMCAIFBWlzc3VlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQCbAwEFDWlzc3VlZEFzc2V0SWQJAMwIAgkBBEJ1cm4CBQZBdXJ1ZXMFDGF1cnVlc0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQdhZGRyZXNzBQNrZXkJAGQCBQpjdXJyZW50Q250AAEJAMwIAgkBC1N0cmluZ0VudHJ5AgUNaXNzdWVkQXNzZXRJZAUHYWRkcmVzcwUDbmlsBQR1bml0CQACAQkArAICAhpOb3QgZW5vdWdoIHBheW1lbnQgdG8gYnV5IAUEbmFtZQFpAQhhZGRBc3NldAADCQAAAgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIdTm8gTkZUIGF0dGFjaGVkIHRvIHRoaXMgY2FsbCEEA25mdAkAkQMCCAUBaQhwYXltZW50cwAABAckbWF0Y2gwCAUDbmZ0B2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQHYXNzZXRJZAUHJG1hdGNoMAQHJG1hdGNoMQkA7AcBBQdhc3NldElkAwkAAQIFByRtYXRjaDECBUFzc2V0BAVhc3NldAUHJG1hdGNoMQMJAAACCAUFYXNzZXQGaXNzdWVyBQR0aGlzAwkAAAIJAJ0IAgUEdGhpcwkA2AQBBQdhc3NldElkBQR1bml0BAdhZGRyZXNzCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEA2tleQkBC2dldEFzc2V0S2V5AQgFBWFzc2V0BG5hbWUECGFzc2V0Q250CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFB2FkZHJlc3MFA2tleQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQgIBQFpBmNhbGxlcgVieXRlcwABBQdhc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJANgEAQUHYXNzZXRJZAUHYWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQdhZGRyZXNzBQNrZXkJAGQCBQhhc3NldENudAABBQNuaWwFBHVuaXQJAAIBAhxBc3NldCBhbHJlYWR5IGFkZGVkIHRvIGdhbWUhCQACAQIPV3JvbmcgTkZUIHNlbnQhCQACAQIQQ2FuJ3QgZmluZCBhc3NldAkAAgECG05vdCBhYmxlIHRvIGZpbmQgYXNzZXQgaWQhIQFpAQtyZW1vdmVBc3NldAEHYXNzZXRJZAQFb3duZXIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFB2Fzc2V0SWQDCQAAAgkAmwMBBQVvd25lcggIBQFpBmNhbGxlcgVieXRlcwQHJG1hdGNoMAkA7AcBCQDZBAEFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwBANrZXkJAQtnZXRBc3NldEtleQEIBQVhc3NldARuYW1lBAdhZGRyZXNzCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMECGFzc2V0Q250CQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQCsAgIFB2FkZHJlc3MFA2tleQMJAGYCBQhhc3NldENudAAACQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUHYXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQdhZGRyZXNzBQNrZXkJAGUCBQhhc3NldENudAABBQNuaWwFBHVuaXQJAAIBCQCsAgIJAKwCAgIEQWxsIAgFBWFzc2V0BG5hbWUCFSBhcmUgbG9jayBpbnNpZGUgZ2FtZQkAAgECEENhbid0IGZpbmQgYXNzZXQJAAIBAiBZb3UgYXJlIG5vdCBvd25lciBvZiB0aGlzIGFzc2V0IQDHEYWS", "height": 2498816, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: B9cdsqbSqdt6HRruTRKEy9r7g2LxjmTnSeQKpZ1UXw7i Next: 85chFtf9RwJkFyWCunzsnnEP61TNpVh2WHyMGstNDoto Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let Aurues = base58'4sUGAwEDLVm6Z3sNbLapWXtEtMkhRU8fypam9dLT4UjM'
5+
46 func onlyOwner (i) = if ((this.bytes == i.caller.bytes))
57 then unit
68 else throw("Only dapp account can call this function!")
911 func getAuruesPayment (i) = if ((size(i.payments) == 0))
1012 then throw("Payment not attached")
1113 else {
12- let Aurues = toBytes(getStringValue(this, "Aurues"))
1314 let p = i.payments[0]
1415 match p.assetId {
1516 case assetId: ByteVector =>
3637 then $Tuple4("Archer", "Utility building that helps you to mine aurues at certain blovk height.", 4500, "_archer")
3738 else if ((assetId == 6))
3839 then $Tuple4("Robot", "Utility building that helps you to mine aurues at certain blovk height.", 5500, "_robo")
39- else $Tuple4("Valkyriee", "Utility building that helps you to mine aurues at certain blovk height.", 6000, "_valkyriee")
40+ else if ((assetId == 7))
41+ then $Tuple4("Valkyriee", "Utility building that helps you to mine aurues at certain blovk height.", 6000, "_valkyriee")
42+ else throw("Unkown assetId!")
4043
4144
42-@Callable(i)
43-func init (Aurues) = {
44- let ownerCheck = onlyOwner(i)
45- if ((ownerCheck == ownerCheck))
46- then if ((getString(this, "Aurues") == unit))
47- then $Tuple2([StringEntry("Aurues", Aurues)], unit)
48- else throw("Game already init!")
49- else throw("Strict value is not equal to itself.")
50- }
51-
45+func getAssetKey (name) = if ((name == "Miner"))
46+ then "__miner"
47+ else if ((name == "Canon"))
48+ then "_canon"
49+ else if ((name == "Xbow"))
50+ then "_xbow"
51+ else if ((name == "Tesla"))
52+ then "_tesla"
53+ else if ((name == "Townhall"))
54+ then throw("You can't add or remove townhall!")
55+ else if ((name == "Archer"))
56+ then "_archer"
57+ else if ((name == "Robot"))
58+ then "_robo"
59+ else if ((name == "Valkyriee"))
60+ then "_valkyriee"
61+ else throw("Unkown Asset!")
5262
5363
5464 @Callable(i)
5565 func startGame () = {
5666 let address = toBase58String(i.caller.bytes)
57- let Aurues = toBytes(getStringValue(this, "Aurues"))
5867 let gameStateKey = (address + "_isStrted")
5968 if ((getBoolean(this, gameStateKey) == unit))
6069 then {
70+ let userId = match getInteger(this, "userId") {
71+ case x: Int =>
72+ (x + 1)
73+ case _ =>
74+ 0
75+ }
6176 let thIssue = Issue("Townhall", "HQ of your empire", 1, 0, false)
6277 let thAssetId = toBase58String(calculateAssetId(thIssue))
63- $Tuple2([BooleanEntry(gameStateKey, true), Reissue(Aurues, 100000, true), thIssue, StringEntry(thAssetId, address), IntegerEntry((address + "_townhall"), 1), IntegerEntry((address + "_townhall_placed"), 0), IntegerEntry((address + "_miner"), 0), IntegerEntry((address + "_miner_placed"), 0), IntegerEntry((address + "_canon"), 0), IntegerEntry((address + "_canon_placed"), 0), IntegerEntry((address + "_xbow"), 0), IntegerEntry((address + "_xbow_placed"), 0), IntegerEntry((address + "_tesla"), 0), IntegerEntry((address + "_tesla_placed"), 0), IntegerEntry((address + "_archer"), 0), IntegerEntry((address + "_robo"), 0), IntegerEntry((address + "_valkyriee"), 0)], unit)
78+ $Tuple2([BooleanEntry(gameStateKey, true), Reissue(Aurues, 100000, true), ScriptTransfer(i.caller, 100000, Aurues), thIssue, StringEntry(thAssetId, address), IntegerEntry("userId", userId), StringEntry(toString(userId), address), IntegerEntry((address + "_townhall"), 1), IntegerEntry((address + "_townhall_placed"), 0), IntegerEntry((address + "_miner"), 0), IntegerEntry((address + "_miner_placed"), 0), IntegerEntry((address + "_canon"), 0), IntegerEntry((address + "_canon_placed"), 0), IntegerEntry((address + "_xbow"), 0), IntegerEntry((address + "_xbow_placed"), 0), IntegerEntry((address + "_tesla"), 0), IntegerEntry((address + "_tesla_placed"), 0), IntegerEntry((address + "_archer"), 0), IntegerEntry((address + "_robo"), 0), IntegerEntry((address + "_valkyriee"), 0)], unit)
6479 }
6580 else throw("Game already started!")
6681 }
6883
6984
7085 @Callable(i)
86+func saveGame (data) = {
87+ let thCnt = (size(split_51C(data, "buildingIndex':4")) - 1)
88+ let minerCnt = (size(split_51C(data, "buildingIndex':0")) - 1)
89+ let canonCnt = (size(split_51C(data, "buildingIndex':1")) - 1)
90+ let xbowCnt = (size(split_51C(data, "buildingIndex':2")) - 1)
91+ let teslaCnt = (size(split_51C(data, "buildingIndex':3")) - 1)
92+ let address = toBase58String(i.caller.bytes)
93+ let thAva = (getIntegerValue(this, (address + "_townhall")) + getIntegerValue(this, (address + "_townhall_placed")))
94+ let minerAva = (getIntegerValue(this, (address + "_miner")) + getIntegerValue(this, (address + "_miner_placed")))
95+ let canonAva = (getIntegerValue(this, (address + "_canon")) + getIntegerValue(this, (address + "_canon_placed")))
96+ let xbowAva = (getIntegerValue(this, (address + "_xbow")) + getIntegerValue(this, (address + "_xbow_placed")))
97+ let teslaAva = (getIntegerValue(this, (address + "_tesla")) + getIntegerValue(this, (address + "_tesla_placed")))
98+ if (if (if (if (if ((thAva >= thCnt))
99+ then (minerAva >= minerCnt)
100+ else false)
101+ then (canonAva >= canonCnt)
102+ else false)
103+ then (xbowAva >= xbowCnt)
104+ else false)
105+ then (teslaAva >= teslaCnt)
106+ else false)
107+ then $Tuple2([StringEntry((address + "_data"), data), IntegerEntry((address + "_townhall"), (thAva - thCnt)), IntegerEntry((address + "_townhall_placed"), thCnt), IntegerEntry((address + "_miner"), (minerAva - minerCnt)), IntegerEntry((address + "_miner_placed"), minerCnt), IntegerEntry((address + "_canon"), (canonAva - canonCnt)), IntegerEntry((address + "_canon_placed"), canonCnt), IntegerEntry((address + "_xbow"), (xbowAva - xbowCnt)), IntegerEntry((address + "_xbow_placed"), xbowCnt), IntegerEntry((address + "_tesla"), (teslaAva - teslaCnt)), IntegerEntry((address + "_tesla_placed"), teslaCnt)], unit)
108+ else throw("Placed more building then you owned!")
109+ }
110+
111+
112+
113+@Callable(i)
114+func rewardWar (building,troops,opponent) = $Tuple2([Reissue(Aurues, ((building * 5000) + (troops * 2000)), true), ScriptTransfer(i.caller, (building * 5000), Aurues), ScriptTransfer(Address(toBytes(opponent)), (troops * 2000), Aurues)], unit)
115+
116+
117+
118+@Callable(i)
71119 func buy (assetId) = {
72120 let address = toBase58String(i.caller.bytes)
73- let Aurues = toBytes(getStringValue(this, "Aurues"))
74121 let auruesAmount = getAuruesPayment(i)
75- let $t038743933 = getAssetData(assetId)
76- let name = $t038743933._1
77- let description = $t038743933._2
78- let price = $t038743933._3
79- let key = $t038743933._4
122+ let $t071327191 = getAssetData(assetId)
123+ let name = $t071327191._1
124+ let description = $t071327191._2
125+ let price = $t071327191._3
126+ let key = $t071327191._4
80127 if ((auruesAmount >= price))
81128 then {
82129 let currentCnt = getIntegerValue(this, (address + key))
83130 let issue = Issue(name, description, 1, 0, false)
84131 let issuedAssetId = toBase58String(calculateAssetId(issue))
85- $Tuple2([issue, Burn(Aurues, auruesAmount), IntegerEntry((address + key), (currentCnt + 1)), StringEntry(issuedAssetId, address)], unit)
132+ $Tuple2([issue, ScriptTransfer(i.caller, 1, toBytes(issuedAssetId)), Burn(Aurues, auruesAmount), IntegerEntry((address + key), (currentCnt + 1)), StringEntry(issuedAssetId, address)], unit)
86133 }
87134 else throw(("Not enough payment to buy " + name))
88135 }
90137
91138
92139 @Callable(i)
93-func addAsset () = $Tuple2(nil, unit)
140+func addAsset () = if ((size(i.payments) == 0))
141+ then throw("No NFT attached to this call!")
142+ else {
143+ let nft = i.payments[0]
144+ match nft.assetId {
145+ case assetId: ByteVector =>
146+ match assetInfo(assetId) {
147+ case asset: Asset =>
148+ if ((asset.issuer == this))
149+ then if ((getString(this, toBase58String(assetId)) == unit))
150+ then {
151+ let address = toBase58String(i.caller.bytes)
152+ let key = getAssetKey(asset.name)
153+ let assetCnt = getIntegerValue(this, (address + key))
154+ $Tuple2([ScriptTransfer(Address(i.caller.bytes), 1, assetId), StringEntry(toBase58String(assetId), address), IntegerEntry((address + key), (assetCnt + 1))], unit)
155+ }
156+ else throw("Asset already added to game!")
157+ else throw("Wrong NFT sent!")
158+ case _ =>
159+ throw("Can't find asset")
160+ }
161+ case _ =>
162+ throw("Not able to find asset id!!")
163+ }
164+ }
94165
95166
96167
97168 @Callable(i)
98-func removeAsset () = $Tuple2(nil, unit)
169+func removeAsset (assetId) = {
170+ let owner = getStringValue(this, assetId)
171+ if ((toBytes(owner) == i.caller.bytes))
172+ then match assetInfo(fromBase58String(assetId)) {
173+ case asset: Asset =>
174+ let key = getAssetKey(asset.name)
175+ let address = toBase58String(i.caller.bytes)
176+ let assetCnt = getIntegerValue(this, (address + key))
177+ if ((assetCnt > 0))
178+ then $Tuple2([DeleteEntry(assetId), IntegerEntry((address + key), (assetCnt - 1))], unit)
179+ else throw((("All " + asset.name) + " are lock inside game"))
180+ case _ =>
181+ throw("Can't find asset")
182+ }
183+ else throw("You are not owner of this asset!")
184+ }
99185
100186
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let Aurues = base58'4sUGAwEDLVm6Z3sNbLapWXtEtMkhRU8fypam9dLT4UjM'
5+
46 func onlyOwner (i) = if ((this.bytes == i.caller.bytes))
57 then unit
68 else throw("Only dapp account can call this function!")
79
810
911 func getAuruesPayment (i) = if ((size(i.payments) == 0))
1012 then throw("Payment not attached")
1113 else {
12- let Aurues = toBytes(getStringValue(this, "Aurues"))
1314 let p = i.payments[0]
1415 match p.assetId {
1516 case assetId: ByteVector =>
1617 if ((assetId == Aurues))
1718 then p.amount
1819 else throw("Only aurues accepted as payment!")
1920 case _ =>
2021 throw("Only aurues accepted as payment!")
2122 }
2223 }
2324
2425
2526 func getAssetData (assetId) = if ((assetId == 0))
2627 then $Tuple4("Miner", "Utility building that helps you to mine aurues at certain blovk height.", 30000, "__miner")
2728 else if ((assetId == 1))
2829 then $Tuple4("Canon", "Utility building that helps you to mine aurues at certain blovk height.", 25000, "_canon")
2930 else if ((assetId == 2))
3031 then $Tuple4("Xbow", "Utility building that helps you to mine aurues at certain blovk height.", 15000, "_xbow")
3132 else if ((assetId == 3))
3233 then $Tuple4("Tesla", "Utility building that helps you to mine aurues at certain blovk height.", 20000, "_tesla")
3334 else if ((assetId == 4))
3435 then throw("You can't buy townhall!")
3536 else if ((assetId == 5))
3637 then $Tuple4("Archer", "Utility building that helps you to mine aurues at certain blovk height.", 4500, "_archer")
3738 else if ((assetId == 6))
3839 then $Tuple4("Robot", "Utility building that helps you to mine aurues at certain blovk height.", 5500, "_robo")
39- else $Tuple4("Valkyriee", "Utility building that helps you to mine aurues at certain blovk height.", 6000, "_valkyriee")
40+ else if ((assetId == 7))
41+ then $Tuple4("Valkyriee", "Utility building that helps you to mine aurues at certain blovk height.", 6000, "_valkyriee")
42+ else throw("Unkown assetId!")
4043
4144
42-@Callable(i)
43-func init (Aurues) = {
44- let ownerCheck = onlyOwner(i)
45- if ((ownerCheck == ownerCheck))
46- then if ((getString(this, "Aurues") == unit))
47- then $Tuple2([StringEntry("Aurues", Aurues)], unit)
48- else throw("Game already init!")
49- else throw("Strict value is not equal to itself.")
50- }
51-
45+func getAssetKey (name) = if ((name == "Miner"))
46+ then "__miner"
47+ else if ((name == "Canon"))
48+ then "_canon"
49+ else if ((name == "Xbow"))
50+ then "_xbow"
51+ else if ((name == "Tesla"))
52+ then "_tesla"
53+ else if ((name == "Townhall"))
54+ then throw("You can't add or remove townhall!")
55+ else if ((name == "Archer"))
56+ then "_archer"
57+ else if ((name == "Robot"))
58+ then "_robo"
59+ else if ((name == "Valkyriee"))
60+ then "_valkyriee"
61+ else throw("Unkown Asset!")
5262
5363
5464 @Callable(i)
5565 func startGame () = {
5666 let address = toBase58String(i.caller.bytes)
57- let Aurues = toBytes(getStringValue(this, "Aurues"))
5867 let gameStateKey = (address + "_isStrted")
5968 if ((getBoolean(this, gameStateKey) == unit))
6069 then {
70+ let userId = match getInteger(this, "userId") {
71+ case x: Int =>
72+ (x + 1)
73+ case _ =>
74+ 0
75+ }
6176 let thIssue = Issue("Townhall", "HQ of your empire", 1, 0, false)
6277 let thAssetId = toBase58String(calculateAssetId(thIssue))
63- $Tuple2([BooleanEntry(gameStateKey, true), Reissue(Aurues, 100000, true), thIssue, StringEntry(thAssetId, address), IntegerEntry((address + "_townhall"), 1), IntegerEntry((address + "_townhall_placed"), 0), IntegerEntry((address + "_miner"), 0), IntegerEntry((address + "_miner_placed"), 0), IntegerEntry((address + "_canon"), 0), IntegerEntry((address + "_canon_placed"), 0), IntegerEntry((address + "_xbow"), 0), IntegerEntry((address + "_xbow_placed"), 0), IntegerEntry((address + "_tesla"), 0), IntegerEntry((address + "_tesla_placed"), 0), IntegerEntry((address + "_archer"), 0), IntegerEntry((address + "_robo"), 0), IntegerEntry((address + "_valkyriee"), 0)], unit)
78+ $Tuple2([BooleanEntry(gameStateKey, true), Reissue(Aurues, 100000, true), ScriptTransfer(i.caller, 100000, Aurues), thIssue, StringEntry(thAssetId, address), IntegerEntry("userId", userId), StringEntry(toString(userId), address), IntegerEntry((address + "_townhall"), 1), IntegerEntry((address + "_townhall_placed"), 0), IntegerEntry((address + "_miner"), 0), IntegerEntry((address + "_miner_placed"), 0), IntegerEntry((address + "_canon"), 0), IntegerEntry((address + "_canon_placed"), 0), IntegerEntry((address + "_xbow"), 0), IntegerEntry((address + "_xbow_placed"), 0), IntegerEntry((address + "_tesla"), 0), IntegerEntry((address + "_tesla_placed"), 0), IntegerEntry((address + "_archer"), 0), IntegerEntry((address + "_robo"), 0), IntegerEntry((address + "_valkyriee"), 0)], unit)
6479 }
6580 else throw("Game already started!")
6681 }
6782
6883
6984
7085 @Callable(i)
86+func saveGame (data) = {
87+ let thCnt = (size(split_51C(data, "buildingIndex':4")) - 1)
88+ let minerCnt = (size(split_51C(data, "buildingIndex':0")) - 1)
89+ let canonCnt = (size(split_51C(data, "buildingIndex':1")) - 1)
90+ let xbowCnt = (size(split_51C(data, "buildingIndex':2")) - 1)
91+ let teslaCnt = (size(split_51C(data, "buildingIndex':3")) - 1)
92+ let address = toBase58String(i.caller.bytes)
93+ let thAva = (getIntegerValue(this, (address + "_townhall")) + getIntegerValue(this, (address + "_townhall_placed")))
94+ let minerAva = (getIntegerValue(this, (address + "_miner")) + getIntegerValue(this, (address + "_miner_placed")))
95+ let canonAva = (getIntegerValue(this, (address + "_canon")) + getIntegerValue(this, (address + "_canon_placed")))
96+ let xbowAva = (getIntegerValue(this, (address + "_xbow")) + getIntegerValue(this, (address + "_xbow_placed")))
97+ let teslaAva = (getIntegerValue(this, (address + "_tesla")) + getIntegerValue(this, (address + "_tesla_placed")))
98+ if (if (if (if (if ((thAva >= thCnt))
99+ then (minerAva >= minerCnt)
100+ else false)
101+ then (canonAva >= canonCnt)
102+ else false)
103+ then (xbowAva >= xbowCnt)
104+ else false)
105+ then (teslaAva >= teslaCnt)
106+ else false)
107+ then $Tuple2([StringEntry((address + "_data"), data), IntegerEntry((address + "_townhall"), (thAva - thCnt)), IntegerEntry((address + "_townhall_placed"), thCnt), IntegerEntry((address + "_miner"), (minerAva - minerCnt)), IntegerEntry((address + "_miner_placed"), minerCnt), IntegerEntry((address + "_canon"), (canonAva - canonCnt)), IntegerEntry((address + "_canon_placed"), canonCnt), IntegerEntry((address + "_xbow"), (xbowAva - xbowCnt)), IntegerEntry((address + "_xbow_placed"), xbowCnt), IntegerEntry((address + "_tesla"), (teslaAva - teslaCnt)), IntegerEntry((address + "_tesla_placed"), teslaCnt)], unit)
108+ else throw("Placed more building then you owned!")
109+ }
110+
111+
112+
113+@Callable(i)
114+func rewardWar (building,troops,opponent) = $Tuple2([Reissue(Aurues, ((building * 5000) + (troops * 2000)), true), ScriptTransfer(i.caller, (building * 5000), Aurues), ScriptTransfer(Address(toBytes(opponent)), (troops * 2000), Aurues)], unit)
115+
116+
117+
118+@Callable(i)
71119 func buy (assetId) = {
72120 let address = toBase58String(i.caller.bytes)
73- let Aurues = toBytes(getStringValue(this, "Aurues"))
74121 let auruesAmount = getAuruesPayment(i)
75- let $t038743933 = getAssetData(assetId)
76- let name = $t038743933._1
77- let description = $t038743933._2
78- let price = $t038743933._3
79- let key = $t038743933._4
122+ let $t071327191 = getAssetData(assetId)
123+ let name = $t071327191._1
124+ let description = $t071327191._2
125+ let price = $t071327191._3
126+ let key = $t071327191._4
80127 if ((auruesAmount >= price))
81128 then {
82129 let currentCnt = getIntegerValue(this, (address + key))
83130 let issue = Issue(name, description, 1, 0, false)
84131 let issuedAssetId = toBase58String(calculateAssetId(issue))
85- $Tuple2([issue, Burn(Aurues, auruesAmount), IntegerEntry((address + key), (currentCnt + 1)), StringEntry(issuedAssetId, address)], unit)
132+ $Tuple2([issue, ScriptTransfer(i.caller, 1, toBytes(issuedAssetId)), Burn(Aurues, auruesAmount), IntegerEntry((address + key), (currentCnt + 1)), StringEntry(issuedAssetId, address)], unit)
86133 }
87134 else throw(("Not enough payment to buy " + name))
88135 }
89136
90137
91138
92139 @Callable(i)
93-func addAsset () = $Tuple2(nil, unit)
140+func addAsset () = if ((size(i.payments) == 0))
141+ then throw("No NFT attached to this call!")
142+ else {
143+ let nft = i.payments[0]
144+ match nft.assetId {
145+ case assetId: ByteVector =>
146+ match assetInfo(assetId) {
147+ case asset: Asset =>
148+ if ((asset.issuer == this))
149+ then if ((getString(this, toBase58String(assetId)) == unit))
150+ then {
151+ let address = toBase58String(i.caller.bytes)
152+ let key = getAssetKey(asset.name)
153+ let assetCnt = getIntegerValue(this, (address + key))
154+ $Tuple2([ScriptTransfer(Address(i.caller.bytes), 1, assetId), StringEntry(toBase58String(assetId), address), IntegerEntry((address + key), (assetCnt + 1))], unit)
155+ }
156+ else throw("Asset already added to game!")
157+ else throw("Wrong NFT sent!")
158+ case _ =>
159+ throw("Can't find asset")
160+ }
161+ case _ =>
162+ throw("Not able to find asset id!!")
163+ }
164+ }
94165
95166
96167
97168 @Callable(i)
98-func removeAsset () = $Tuple2(nil, unit)
169+func removeAsset (assetId) = {
170+ let owner = getStringValue(this, assetId)
171+ if ((toBytes(owner) == i.caller.bytes))
172+ then match assetInfo(fromBase58String(assetId)) {
173+ case asset: Asset =>
174+ let key = getAssetKey(asset.name)
175+ let address = toBase58String(i.caller.bytes)
176+ let assetCnt = getIntegerValue(this, (address + key))
177+ if ((assetCnt > 0))
178+ then $Tuple2([DeleteEntry(assetId), IntegerEntry((address + key), (assetCnt - 1))], unit)
179+ else throw((("All " + asset.name) + " are lock inside game"))
180+ case _ =>
181+ throw("Can't find asset")
182+ }
183+ else throw("You are not owner of this asset!")
184+ }
99185
100186

github/deemru/w8io/169f3d6 
37.53 ms