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:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | func a (b) = if ((this.bytes == b.caller.bytes)) | |
4 | + | let a = base58'4sUGAwEDLVm6Z3sNbLapWXtEtMkhRU8fypam9dLT4UjM' | |
5 | + | ||
6 | + | func b (c) = if ((this.bytes == c.caller.bytes)) | |
5 | 7 | then unit | |
6 | 8 | else throw("Only dapp account can call this function!") | |
7 | 9 | ||
8 | 10 | ||
9 | - | func | |
11 | + | func d (c) = if ((size(c.payments) == 0)) | |
10 | 12 | then throw("Payment not attached") | |
11 | 13 | else { | |
12 | - | let d = toBytes(getStringValue(this, "Aurues")) | |
13 | - | let e = b.payments[0] | |
14 | + | let e = c.payments[0] | |
14 | 15 | let f = e.assetId | |
15 | 16 | if ($isInstanceOf(f, "ByteVector")) | |
16 | 17 | then { | |
17 | 18 | let g = f | |
18 | - | if ((g == | |
19 | + | if ((g == a)) | |
19 | 20 | then e.amount | |
20 | 21 | else throw("Only aurues accepted as payment!") | |
21 | 22 | } | |
37 | 38 | then $Tuple4("Archer", "Utility building that helps you to mine aurues at certain blovk height.", 4500, "_archer") | |
38 | 39 | else if ((g == 6)) | |
39 | 40 | then $Tuple4("Robot", "Utility building that helps you to mine aurues at certain blovk height.", 5500, "_robo") | |
40 | - | else $Tuple4("Valkyriee", "Utility building that helps you to mine aurues at certain blovk height.", 6000, "_valkyriee") | |
41 | + | else if ((g == 7)) | |
42 | + | then $Tuple4("Valkyriee", "Utility building that helps you to mine aurues at certain blovk height.", 6000, "_valkyriee") | |
43 | + | else throw("Unkown assetId!") | |
41 | 44 | ||
42 | 45 | ||
43 | - | @Callable(b) | |
44 | - | func init (d) = { | |
45 | - | let i = a(b) | |
46 | - | if ((i == i)) | |
47 | - | then if ((getString(this, "Aurues") == unit)) | |
48 | - | then $Tuple2([StringEntry("Aurues", d)], unit) | |
49 | - | else throw("Game already init!") | |
50 | - | else throw("Strict value is not equal to itself.") | |
51 | - | } | |
46 | + | func i (j) = if ((j == "Miner")) | |
47 | + | then "__miner" | |
48 | + | else if ((j == "Canon")) | |
49 | + | then "_canon" | |
50 | + | else if ((j == "Xbow")) | |
51 | + | then "_xbow" | |
52 | + | else if ((j == "Tesla")) | |
53 | + | then "_tesla" | |
54 | + | else if ((j == "Townhall")) | |
55 | + | then throw("You can't add or remove townhall!") | |
56 | + | else if ((j == "Archer")) | |
57 | + | then "_archer" | |
58 | + | else if ((j == "Robot")) | |
59 | + | then "_robo" | |
60 | + | else if ((j == "Valkyriee")) | |
61 | + | then "_valkyriee" | |
62 | + | else throw("Unkown Asset!") | |
52 | 63 | ||
53 | 64 | ||
54 | - | ||
55 | - | @Callable(b) | |
65 | + | @Callable(c) | |
56 | 66 | func startGame () = { | |
57 | - | let j = toBase58String(b.caller.bytes) | |
58 | - | let d = toBytes(getStringValue(this, "Aurues")) | |
59 | - | let k = (j + "_isStrted") | |
60 | - | if ((getBoolean(this, k) == unit)) | |
67 | + | let k = toBase58String(c.caller.bytes) | |
68 | + | let l = (k + "_isStrted") | |
69 | + | if ((getBoolean(this, l) == unit)) | |
61 | 70 | then { | |
62 | - | let l = Issue("Townhall", "HQ of your empire", 1, 0, false) | |
63 | - | let m = toBase58String(calculateAssetId(l)) | |
64 | - | $Tuple2([BooleanEntry(k, true), Reissue(d, 100000, true), l, StringEntry(m, j), IntegerEntry((j + "_townhall"), 1), IntegerEntry((j + "_townhall_placed"), 0), IntegerEntry((j + "_miner"), 0), IntegerEntry((j + "_miner_placed"), 0), IntegerEntry((j + "_canon"), 0), IntegerEntry((j + "_canon_placed"), 0), IntegerEntry((j + "_xbow"), 0), IntegerEntry((j + "_xbow_placed"), 0), IntegerEntry((j + "_tesla"), 0), IntegerEntry((j + "_tesla_placed"), 0), IntegerEntry((j + "_archer"), 0), IntegerEntry((j + "_robo"), 0), IntegerEntry((j + "_valkyriee"), 0)], unit) | |
71 | + | let m = { | |
72 | + | let f = getInteger(this, "userId") | |
73 | + | if ($isInstanceOf(f, "Int")) | |
74 | + | then { | |
75 | + | let n = f | |
76 | + | (n + 1) | |
77 | + | } | |
78 | + | else 0 | |
79 | + | } | |
80 | + | let o = Issue("Townhall", "HQ of your empire", 1, 0, false) | |
81 | + | let p = toBase58String(calculateAssetId(o)) | |
82 | + | $Tuple2([BooleanEntry(l, true), Reissue(a, 100000, true), ScriptTransfer(c.caller, 100000, a), o, StringEntry(p, k), IntegerEntry("userId", m), StringEntry(toString(m), k), IntegerEntry((k + "_townhall"), 1), IntegerEntry((k + "_townhall_placed"), 0), IntegerEntry((k + "_miner"), 0), IntegerEntry((k + "_miner_placed"), 0), IntegerEntry((k + "_canon"), 0), IntegerEntry((k + "_canon_placed"), 0), IntegerEntry((k + "_xbow"), 0), IntegerEntry((k + "_xbow_placed"), 0), IntegerEntry((k + "_tesla"), 0), IntegerEntry((k + "_tesla_placed"), 0), IntegerEntry((k + "_archer"), 0), IntegerEntry((k + "_robo"), 0), IntegerEntry((k + "_valkyriee"), 0)], unit) | |
65 | 83 | } | |
66 | 84 | else throw("Game already started!") | |
67 | 85 | } | |
68 | 86 | ||
69 | 87 | ||
70 | 88 | ||
71 | - | @Callable(b) | |
72 | - | func buy (g) = { | |
73 | - | let j = toBase58String(b.caller.bytes) | |
74 | - | let d = toBytes(getStringValue(this, "Aurues")) | |
75 | - | let n = c(b) | |
76 | - | let o = h(g) | |
77 | - | let p = o._1 | |
78 | - | let q = o._2 | |
79 | - | let r = o._3 | |
80 | - | let s = o._4 | |
81 | - | if ((n >= r)) | |
82 | - | then { | |
83 | - | let t = getIntegerValue(this, (j + s)) | |
84 | - | let u = Issue(p, q, 1, 0, false) | |
85 | - | let v = toBase58String(calculateAssetId(u)) | |
86 | - | $Tuple2([u, Burn(d, n), IntegerEntry((j + s), (t + 1)), StringEntry(v, j)], unit) | |
87 | - | } | |
88 | - | else throw(("Not enough payment to buy " + p)) | |
89 | + | @Callable(c) | |
90 | + | func saveGame (q) = { | |
91 | + | let r = (size(split_51C(q, "buildingIndex':4")) - 1) | |
92 | + | let s = (size(split_51C(q, "buildingIndex':0")) - 1) | |
93 | + | let t = (size(split_51C(q, "buildingIndex':1")) - 1) | |
94 | + | let u = (size(split_51C(q, "buildingIndex':2")) - 1) | |
95 | + | let v = (size(split_51C(q, "buildingIndex':3")) - 1) | |
96 | + | let k = toBase58String(c.caller.bytes) | |
97 | + | let w = (getIntegerValue(this, (k + "_townhall")) + getIntegerValue(this, (k + "_townhall_placed"))) | |
98 | + | let x = (getIntegerValue(this, (k + "_miner")) + getIntegerValue(this, (k + "_miner_placed"))) | |
99 | + | let y = (getIntegerValue(this, (k + "_canon")) + getIntegerValue(this, (k + "_canon_placed"))) | |
100 | + | let z = (getIntegerValue(this, (k + "_xbow")) + getIntegerValue(this, (k + "_xbow_placed"))) | |
101 | + | let A = (getIntegerValue(this, (k + "_tesla")) + getIntegerValue(this, (k + "_tesla_placed"))) | |
102 | + | if (if (if (if (if ((w >= r)) | |
103 | + | then (x >= s) | |
104 | + | else false) | |
105 | + | then (y >= t) | |
106 | + | else false) | |
107 | + | then (z >= u) | |
108 | + | else false) | |
109 | + | then (A >= v) | |
110 | + | else false) | |
111 | + | then $Tuple2([StringEntry((k + "_data"), q), IntegerEntry((k + "_townhall"), (w - r)), IntegerEntry((k + "_townhall_placed"), r), IntegerEntry((k + "_miner"), (x - s)), IntegerEntry((k + "_miner_placed"), s), IntegerEntry((k + "_canon"), (y - t)), IntegerEntry((k + "_canon_placed"), t), IntegerEntry((k + "_xbow"), (z - u)), IntegerEntry((k + "_xbow_placed"), u), IntegerEntry((k + "_tesla"), (A - v)), IntegerEntry((k + "_tesla_placed"), v)], unit) | |
112 | + | else throw("Placed more building then you owned!") | |
89 | 113 | } | |
90 | 114 | ||
91 | 115 | ||
92 | 116 | ||
93 | - | @Callable( | |
94 | - | func | |
117 | + | @Callable(c) | |
118 | + | func rewardWar (B,C,D) = $Tuple2([Reissue(a, ((B * 5000) + (C * 2000)), true), ScriptTransfer(c.caller, (B * 5000), a), ScriptTransfer(Address(toBytes(D)), (C * 2000), a)], unit) | |
95 | 119 | ||
96 | 120 | ||
97 | 121 | ||
98 | - | @Callable(b) | |
99 | - | func removeAsset () = $Tuple2(nil, unit) | |
122 | + | @Callable(c) | |
123 | + | func buy (g) = { | |
124 | + | let k = toBase58String(c.caller.bytes) | |
125 | + | let E = d(c) | |
126 | + | let F = h(g) | |
127 | + | let j = F._1 | |
128 | + | let G = F._2 | |
129 | + | let H = F._3 | |
130 | + | let I = F._4 | |
131 | + | if ((E >= H)) | |
132 | + | then { | |
133 | + | let J = getIntegerValue(this, (k + I)) | |
134 | + | let K = Issue(j, G, 1, 0, false) | |
135 | + | let L = toBase58String(calculateAssetId(K)) | |
136 | + | $Tuple2([K, ScriptTransfer(c.caller, 1, toBytes(L)), Burn(a, E), IntegerEntry((k + I), (J + 1)), StringEntry(L, k)], unit) | |
137 | + | } | |
138 | + | else throw(("Not enough payment to buy " + j)) | |
139 | + | } | |
140 | + | ||
141 | + | ||
142 | + | ||
143 | + | @Callable(c) | |
144 | + | func addAsset () = if ((size(c.payments) == 0)) | |
145 | + | then throw("No NFT attached to this call!") | |
146 | + | else { | |
147 | + | let M = c.payments[0] | |
148 | + | let f = M.assetId | |
149 | + | if ($isInstanceOf(f, "ByteVector")) | |
150 | + | then { | |
151 | + | let g = f | |
152 | + | let N = assetInfo(g) | |
153 | + | if ($isInstanceOf(N, "Asset")) | |
154 | + | then { | |
155 | + | let O = N | |
156 | + | if ((O.issuer == this)) | |
157 | + | then if ((getString(this, toBase58String(g)) == unit)) | |
158 | + | then { | |
159 | + | let k = toBase58String(c.caller.bytes) | |
160 | + | let I = i(O.name) | |
161 | + | let P = getIntegerValue(this, (k + I)) | |
162 | + | $Tuple2([ScriptTransfer(Address(c.caller.bytes), 1, g), StringEntry(toBase58String(g), k), IntegerEntry((k + I), (P + 1))], unit) | |
163 | + | } | |
164 | + | else throw("Asset already added to game!") | |
165 | + | else throw("Wrong NFT sent!") | |
166 | + | } | |
167 | + | else throw("Can't find asset") | |
168 | + | } | |
169 | + | else throw("Not able to find asset id!!") | |
170 | + | } | |
171 | + | ||
172 | + | ||
173 | + | ||
174 | + | @Callable(c) | |
175 | + | func removeAsset (g) = { | |
176 | + | let Q = getStringValue(this, g) | |
177 | + | if ((toBytes(Q) == c.caller.bytes)) | |
178 | + | then { | |
179 | + | let f = assetInfo(fromBase58String(g)) | |
180 | + | if ($isInstanceOf(f, "Asset")) | |
181 | + | then { | |
182 | + | let O = f | |
183 | + | let I = i(O.name) | |
184 | + | let k = toBase58String(c.caller.bytes) | |
185 | + | let P = getIntegerValue(this, (k + I)) | |
186 | + | if ((P > 0)) | |
187 | + | then $Tuple2([DeleteEntry(g), IntegerEntry((k + I), (P - 1))], unit) | |
188 | + | else throw((("All " + O.name) + " are lock inside game")) | |
189 | + | } | |
190 | + | else throw("Can't find asset") | |
191 | + | } | |
192 | + | else throw("You are not owner of this asset!") | |
193 | + | } | |
100 | 194 | ||
101 | 195 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | func a (b) = if ((this.bytes == b.caller.bytes)) | |
4 | + | let a = base58'4sUGAwEDLVm6Z3sNbLapWXtEtMkhRU8fypam9dLT4UjM' | |
5 | + | ||
6 | + | func b (c) = if ((this.bytes == c.caller.bytes)) | |
5 | 7 | then unit | |
6 | 8 | else throw("Only dapp account can call this function!") | |
7 | 9 | ||
8 | 10 | ||
9 | - | func | |
11 | + | func d (c) = if ((size(c.payments) == 0)) | |
10 | 12 | then throw("Payment not attached") | |
11 | 13 | else { | |
12 | - | let d = toBytes(getStringValue(this, "Aurues")) | |
13 | - | let e = b.payments[0] | |
14 | + | let e = c.payments[0] | |
14 | 15 | let f = e.assetId | |
15 | 16 | if ($isInstanceOf(f, "ByteVector")) | |
16 | 17 | then { | |
17 | 18 | let g = f | |
18 | - | if ((g == | |
19 | + | if ((g == a)) | |
19 | 20 | then e.amount | |
20 | 21 | else throw("Only aurues accepted as payment!") | |
21 | 22 | } | |
22 | 23 | else throw("Only aurues accepted as payment!") | |
23 | 24 | } | |
24 | 25 | ||
25 | 26 | ||
26 | 27 | func h (g) = if ((g == 0)) | |
27 | 28 | then $Tuple4("Miner", "Utility building that helps you to mine aurues at certain blovk height.", 30000, "__miner") | |
28 | 29 | else if ((g == 1)) | |
29 | 30 | then $Tuple4("Canon", "Utility building that helps you to mine aurues at certain blovk height.", 25000, "_canon") | |
30 | 31 | else if ((g == 2)) | |
31 | 32 | then $Tuple4("Xbow", "Utility building that helps you to mine aurues at certain blovk height.", 15000, "_xbow") | |
32 | 33 | else if ((g == 3)) | |
33 | 34 | then $Tuple4("Tesla", "Utility building that helps you to mine aurues at certain blovk height.", 20000, "_tesla") | |
34 | 35 | else if ((g == 4)) | |
35 | 36 | then throw("You can't buy townhall!") | |
36 | 37 | else if ((g == 5)) | |
37 | 38 | then $Tuple4("Archer", "Utility building that helps you to mine aurues at certain blovk height.", 4500, "_archer") | |
38 | 39 | else if ((g == 6)) | |
39 | 40 | then $Tuple4("Robot", "Utility building that helps you to mine aurues at certain blovk height.", 5500, "_robo") | |
40 | - | else $Tuple4("Valkyriee", "Utility building that helps you to mine aurues at certain blovk height.", 6000, "_valkyriee") | |
41 | + | else if ((g == 7)) | |
42 | + | then $Tuple4("Valkyriee", "Utility building that helps you to mine aurues at certain blovk height.", 6000, "_valkyriee") | |
43 | + | else throw("Unkown assetId!") | |
41 | 44 | ||
42 | 45 | ||
43 | - | @Callable(b) | |
44 | - | func init (d) = { | |
45 | - | let i = a(b) | |
46 | - | if ((i == i)) | |
47 | - | then if ((getString(this, "Aurues") == unit)) | |
48 | - | then $Tuple2([StringEntry("Aurues", d)], unit) | |
49 | - | else throw("Game already init!") | |
50 | - | else throw("Strict value is not equal to itself.") | |
51 | - | } | |
46 | + | func i (j) = if ((j == "Miner")) | |
47 | + | then "__miner" | |
48 | + | else if ((j == "Canon")) | |
49 | + | then "_canon" | |
50 | + | else if ((j == "Xbow")) | |
51 | + | then "_xbow" | |
52 | + | else if ((j == "Tesla")) | |
53 | + | then "_tesla" | |
54 | + | else if ((j == "Townhall")) | |
55 | + | then throw("You can't add or remove townhall!") | |
56 | + | else if ((j == "Archer")) | |
57 | + | then "_archer" | |
58 | + | else if ((j == "Robot")) | |
59 | + | then "_robo" | |
60 | + | else if ((j == "Valkyriee")) | |
61 | + | then "_valkyriee" | |
62 | + | else throw("Unkown Asset!") | |
52 | 63 | ||
53 | 64 | ||
54 | - | ||
55 | - | @Callable(b) | |
65 | + | @Callable(c) | |
56 | 66 | func startGame () = { | |
57 | - | let j = toBase58String(b.caller.bytes) | |
58 | - | let d = toBytes(getStringValue(this, "Aurues")) | |
59 | - | let k = (j + "_isStrted") | |
60 | - | if ((getBoolean(this, k) == unit)) | |
67 | + | let k = toBase58String(c.caller.bytes) | |
68 | + | let l = (k + "_isStrted") | |
69 | + | if ((getBoolean(this, l) == unit)) | |
61 | 70 | then { | |
62 | - | let l = Issue("Townhall", "HQ of your empire", 1, 0, false) | |
63 | - | let m = toBase58String(calculateAssetId(l)) | |
64 | - | $Tuple2([BooleanEntry(k, true), Reissue(d, 100000, true), l, StringEntry(m, j), IntegerEntry((j + "_townhall"), 1), IntegerEntry((j + "_townhall_placed"), 0), IntegerEntry((j + "_miner"), 0), IntegerEntry((j + "_miner_placed"), 0), IntegerEntry((j + "_canon"), 0), IntegerEntry((j + "_canon_placed"), 0), IntegerEntry((j + "_xbow"), 0), IntegerEntry((j + "_xbow_placed"), 0), IntegerEntry((j + "_tesla"), 0), IntegerEntry((j + "_tesla_placed"), 0), IntegerEntry((j + "_archer"), 0), IntegerEntry((j + "_robo"), 0), IntegerEntry((j + "_valkyriee"), 0)], unit) | |
71 | + | let m = { | |
72 | + | let f = getInteger(this, "userId") | |
73 | + | if ($isInstanceOf(f, "Int")) | |
74 | + | then { | |
75 | + | let n = f | |
76 | + | (n + 1) | |
77 | + | } | |
78 | + | else 0 | |
79 | + | } | |
80 | + | let o = Issue("Townhall", "HQ of your empire", 1, 0, false) | |
81 | + | let p = toBase58String(calculateAssetId(o)) | |
82 | + | $Tuple2([BooleanEntry(l, true), Reissue(a, 100000, true), ScriptTransfer(c.caller, 100000, a), o, StringEntry(p, k), IntegerEntry("userId", m), StringEntry(toString(m), k), IntegerEntry((k + "_townhall"), 1), IntegerEntry((k + "_townhall_placed"), 0), IntegerEntry((k + "_miner"), 0), IntegerEntry((k + "_miner_placed"), 0), IntegerEntry((k + "_canon"), 0), IntegerEntry((k + "_canon_placed"), 0), IntegerEntry((k + "_xbow"), 0), IntegerEntry((k + "_xbow_placed"), 0), IntegerEntry((k + "_tesla"), 0), IntegerEntry((k + "_tesla_placed"), 0), IntegerEntry((k + "_archer"), 0), IntegerEntry((k + "_robo"), 0), IntegerEntry((k + "_valkyriee"), 0)], unit) | |
65 | 83 | } | |
66 | 84 | else throw("Game already started!") | |
67 | 85 | } | |
68 | 86 | ||
69 | 87 | ||
70 | 88 | ||
71 | - | @Callable(b) | |
72 | - | func buy (g) = { | |
73 | - | let j = toBase58String(b.caller.bytes) | |
74 | - | let d = toBytes(getStringValue(this, "Aurues")) | |
75 | - | let n = c(b) | |
76 | - | let o = h(g) | |
77 | - | let p = o._1 | |
78 | - | let q = o._2 | |
79 | - | let r = o._3 | |
80 | - | let s = o._4 | |
81 | - | if ((n >= r)) | |
82 | - | then { | |
83 | - | let t = getIntegerValue(this, (j + s)) | |
84 | - | let u = Issue(p, q, 1, 0, false) | |
85 | - | let v = toBase58String(calculateAssetId(u)) | |
86 | - | $Tuple2([u, Burn(d, n), IntegerEntry((j + s), (t + 1)), StringEntry(v, j)], unit) | |
87 | - | } | |
88 | - | else throw(("Not enough payment to buy " + p)) | |
89 | + | @Callable(c) | |
90 | + | func saveGame (q) = { | |
91 | + | let r = (size(split_51C(q, "buildingIndex':4")) - 1) | |
92 | + | let s = (size(split_51C(q, "buildingIndex':0")) - 1) | |
93 | + | let t = (size(split_51C(q, "buildingIndex':1")) - 1) | |
94 | + | let u = (size(split_51C(q, "buildingIndex':2")) - 1) | |
95 | + | let v = (size(split_51C(q, "buildingIndex':3")) - 1) | |
96 | + | let k = toBase58String(c.caller.bytes) | |
97 | + | let w = (getIntegerValue(this, (k + "_townhall")) + getIntegerValue(this, (k + "_townhall_placed"))) | |
98 | + | let x = (getIntegerValue(this, (k + "_miner")) + getIntegerValue(this, (k + "_miner_placed"))) | |
99 | + | let y = (getIntegerValue(this, (k + "_canon")) + getIntegerValue(this, (k + "_canon_placed"))) | |
100 | + | let z = (getIntegerValue(this, (k + "_xbow")) + getIntegerValue(this, (k + "_xbow_placed"))) | |
101 | + | let A = (getIntegerValue(this, (k + "_tesla")) + getIntegerValue(this, (k + "_tesla_placed"))) | |
102 | + | if (if (if (if (if ((w >= r)) | |
103 | + | then (x >= s) | |
104 | + | else false) | |
105 | + | then (y >= t) | |
106 | + | else false) | |
107 | + | then (z >= u) | |
108 | + | else false) | |
109 | + | then (A >= v) | |
110 | + | else false) | |
111 | + | then $Tuple2([StringEntry((k + "_data"), q), IntegerEntry((k + "_townhall"), (w - r)), IntegerEntry((k + "_townhall_placed"), r), IntegerEntry((k + "_miner"), (x - s)), IntegerEntry((k + "_miner_placed"), s), IntegerEntry((k + "_canon"), (y - t)), IntegerEntry((k + "_canon_placed"), t), IntegerEntry((k + "_xbow"), (z - u)), IntegerEntry((k + "_xbow_placed"), u), IntegerEntry((k + "_tesla"), (A - v)), IntegerEntry((k + "_tesla_placed"), v)], unit) | |
112 | + | else throw("Placed more building then you owned!") | |
89 | 113 | } | |
90 | 114 | ||
91 | 115 | ||
92 | 116 | ||
93 | - | @Callable( | |
94 | - | func | |
117 | + | @Callable(c) | |
118 | + | func rewardWar (B,C,D) = $Tuple2([Reissue(a, ((B * 5000) + (C * 2000)), true), ScriptTransfer(c.caller, (B * 5000), a), ScriptTransfer(Address(toBytes(D)), (C * 2000), a)], unit) | |
95 | 119 | ||
96 | 120 | ||
97 | 121 | ||
98 | - | @Callable(b) | |
99 | - | func removeAsset () = $Tuple2(nil, unit) | |
122 | + | @Callable(c) | |
123 | + | func buy (g) = { | |
124 | + | let k = toBase58String(c.caller.bytes) | |
125 | + | let E = d(c) | |
126 | + | let F = h(g) | |
127 | + | let j = F._1 | |
128 | + | let G = F._2 | |
129 | + | let H = F._3 | |
130 | + | let I = F._4 | |
131 | + | if ((E >= H)) | |
132 | + | then { | |
133 | + | let J = getIntegerValue(this, (k + I)) | |
134 | + | let K = Issue(j, G, 1, 0, false) | |
135 | + | let L = toBase58String(calculateAssetId(K)) | |
136 | + | $Tuple2([K, ScriptTransfer(c.caller, 1, toBytes(L)), Burn(a, E), IntegerEntry((k + I), (J + 1)), StringEntry(L, k)], unit) | |
137 | + | } | |
138 | + | else throw(("Not enough payment to buy " + j)) | |
139 | + | } | |
140 | + | ||
141 | + | ||
142 | + | ||
143 | + | @Callable(c) | |
144 | + | func addAsset () = if ((size(c.payments) == 0)) | |
145 | + | then throw("No NFT attached to this call!") | |
146 | + | else { | |
147 | + | let M = c.payments[0] | |
148 | + | let f = M.assetId | |
149 | + | if ($isInstanceOf(f, "ByteVector")) | |
150 | + | then { | |
151 | + | let g = f | |
152 | + | let N = assetInfo(g) | |
153 | + | if ($isInstanceOf(N, "Asset")) | |
154 | + | then { | |
155 | + | let O = N | |
156 | + | if ((O.issuer == this)) | |
157 | + | then if ((getString(this, toBase58String(g)) == unit)) | |
158 | + | then { | |
159 | + | let k = toBase58String(c.caller.bytes) | |
160 | + | let I = i(O.name) | |
161 | + | let P = getIntegerValue(this, (k + I)) | |
162 | + | $Tuple2([ScriptTransfer(Address(c.caller.bytes), 1, g), StringEntry(toBase58String(g), k), IntegerEntry((k + I), (P + 1))], unit) | |
163 | + | } | |
164 | + | else throw("Asset already added to game!") | |
165 | + | else throw("Wrong NFT sent!") | |
166 | + | } | |
167 | + | else throw("Can't find asset") | |
168 | + | } | |
169 | + | else throw("Not able to find asset id!!") | |
170 | + | } | |
171 | + | ||
172 | + | ||
173 | + | ||
174 | + | @Callable(c) | |
175 | + | func removeAsset (g) = { | |
176 | + | let Q = getStringValue(this, g) | |
177 | + | if ((toBytes(Q) == c.caller.bytes)) | |
178 | + | then { | |
179 | + | let f = assetInfo(fromBase58String(g)) | |
180 | + | if ($isInstanceOf(f, "Asset")) | |
181 | + | then { | |
182 | + | let O = f | |
183 | + | let I = i(O.name) | |
184 | + | let k = toBase58String(c.caller.bytes) | |
185 | + | let P = getIntegerValue(this, (k + I)) | |
186 | + | if ((P > 0)) | |
187 | + | then $Tuple2([DeleteEntry(g), IntegerEntry((k + I), (P - 1))], unit) | |
188 | + | else throw((("All " + O.name) + " are lock inside game")) | |
189 | + | } | |
190 | + | else throw("Can't find asset") | |
191 | + | } | |
192 | + | else throw("You are not owner of this asset!") | |
193 | + | } | |
100 | 194 | ||
101 | 195 |
github/deemru/w8io/169f3d6 36.01 ms ◑![]()