tx · 1j3JjfzFmJEGkgUzCgT7DrsaP5D8f5EjtZ4AjvvZiiP 3N9fzexZxi7HrPcfizpvpFcaAnvpyuuMKPg: -0.01400000 Waves 2019.08.27 23:30 [650080] smart account 3N9fzexZxi7HrPcfizpvpFcaAnvpyuuMKPg > SELF 0.00000000 Waves
{ "type": 13, "id": "1j3JjfzFmJEGkgUzCgT7DrsaP5D8f5EjtZ4AjvvZiiP", "fee": 1400000, "feeAssetId": null, "timestamp": 1566937848944, "version": 1, "sender": "3N9fzexZxi7HrPcfizpvpFcaAnvpyuuMKPg", "senderPublicKey": "BJB5QS4iQna1z8idKb5QQ5cACUmNgxzHc81Y7AW6ZZY7", "proofs": [ "5ZJHqApfaqXGRFTUusZoM8tMZiPamPvRwJGX6CDPxfXU4C2jYrUCDAm6pGAkZ8sRVSpL3W8d1TaVWhSMrmiaFxBh" ], "script": "base64:AAIDAAAAAAAAAAAAAAAGAAAAABBzdGFydFJvdW5kSGVpZ2h0AAAAAAAAAAAFAQAAAApyYW5kb21pemVyAAAAAQAAAANpbnYEAAAACGxhc3RQbGF5BAAAAAckbWF0Y2gwCQAEHAAAAAIFAAAABHRoaXMCAAAACGxhc3RQbGF5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAFhBQAAAAckbWF0Y2gwAQAAAAxXYXZlc0xvdHRvVjIJAQAAAAV0aHJvdwAAAAAEAAAABHJhbmQJAADLAAAAAgkAAMsAAAACCQAAywAAAAIJAADLAAAAAgkAAMsAAAACBQAAAAhsYXN0UGxheQgFAAAAA2ludgAAAA10cmFuc2FjdGlvbklkCAUAAAADaW52AAAAD2NhbGxlclB1YmxpY0tleQgFAAAACWxhc3RCbG9jawAAABNnZW5lcmF0aW9uU2lnbmF0dXJlCQABmgAAAAEIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQABmgAAAAEIBQAAAAlsYXN0QmxvY2sAAAAGaGVpZ2h0CQAB9wAAAAEFAAAABHJhbmQBAAAAE3NldFdpbm5lcnNQcmV2Um91bmQAAAACAAAACWN1cnJSb3VuZAAAAAhyYW5kaGFzaAQAAAAPcHJldk51bWJlclJvdW5kCQAAZQAAAAIFAAAACWN1cnJSb3VuZAAAAAAAAAAAAQMJAABmAAAAAgUAAAAIcmFuZGhhc2gAAAAAAAAAAfQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAD2xhc3RSb3VuZFdpbm5lcgkAASwAAAACCQABpAAAAAEFAAAAD3ByZXZOdW1iZXJSb3VuZAIAAAAGX21vcmVfCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAAtudW1iZXJSb3VuZAUAAAAJY3VyclJvdW5kCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAAlzdGFydEdhbWUGCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAAhyYW5kaGFzaAUAAAAIcmFuZGhhc2gFAAAAA25pbAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAPbGFzdFJvdW5kV2lubmVyCQABLAAAAAIJAAGkAAAAAQUAAAAPcHJldk51bWJlclJvdW5kAgAAAAZfbGVzc18JAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAC251bWJlclJvdW5kBQAAAAljdXJyUm91bmQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAACXN0YXJ0R2FtZQYJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAACHJhbmRoYXNoBQAAAAhyYW5kaGFzaAUAAAADbmlsAQAAABVnZXRDdXJyZW50TnVtYmVyUm91bmQAAAAABAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMCAAAAC251bWJlclJvdW5kAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAEBAAAABmdldEJldAAAAAMAAAADYmV0AAAABXJvdW5kAAAADGFkZHJlc3NHYW1lcgMJAABnAAAAAgUAAAAFcm91bmQAAAAAAAAAAAEEAAAAEXdpbm5lck9mUHJldlJvdW5kBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMCAAAAD2xhc3RSb3VuZFdpbm5lcgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAF3BQAAAAckbWF0Y2gwBQAAAAF3AgAAAAAEAAAAE3dpbm5lckZyb21QcmV2Um91bmQEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAABF3aW5uZXJPZlByZXZSb3VuZAUAAAAMYWRkcmVzc0dhbWVyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXcFAAAAByRtYXRjaDAFAAAAAXcCAAAAAAMDCQAAZgAAAAIFAAAABXJvdW5kAAAAAAAAAAABCQAAAAAAAAIFAAAAE3dpbm5lckZyb21QcmV2Um91bmQCAAAAAAcJAABoAAAAAgUAAAAFcm91bmQAAAAAAAAAAAIAAAAAAAAAAAEAAAAAAAAAAAEBAAAADWdldE51bWJlckdhbWUAAAAABAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMCAAAACm51bWJlckdhbWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAkAAGQAAAACBQAAAAFhAAAAAAAAAAABAAAAAAAAAAABAAAABAAAAAFpAQAAAApzdGFydFJvdW5kAAAAAAQAAAAQbmV3TnVtYmVyT2ZSb3VuZAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzAgAAAAtudW1iZXJSb3VuZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwCQAAZAAAAAIFAAAAAWEAAAAAAAAAAAEAAAAAAAAAAAEEAAAACHJhbmRoYXNoCQEAAAAKcmFuZG9taXplcgAAAAEFAAAAAWkEAAAADWlzR2FtZVN0YXJ0ZWQEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwIAAAAJc3RhcnRHYW1lAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFnBQAAAAckbWF0Y2gwBQAAAAFnBwMDAwkAAAAAAAACBQAAABBuZXdOdW1iZXJPZlJvdW5kAAAAAAAAAAABCQAAAAAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwcJAQAAAAEhAAAAAQUAAAANaXNHYW1lU3RhcnRlZAcEAAAADW5ld051bWJlckdhbWUJAQAAAA1nZXROdW1iZXJHYW1lAAAAAAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAKbnVtYmVyR2FtZQUAAAANbmV3TnVtYmVyR2FtZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAJc3RhcnRHYW1lCQEAAAABIQAAAAEFAAAADWlzR2FtZVN0YXJ0ZWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAC251bWJlclJvdW5kBQAAABBuZXdOdW1iZXJPZlJvdW5kBQAAAANuaWwDAwkAAGYAAAACBQAAABBuZXdOdW1iZXJPZlJvdW5kAAAAAAAAAAABCQAAAAAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwcJAQAAABNzZXRXaW5uZXJzUHJldlJvdW5kAAAAAgUAAAAQbmV3TnVtYmVyT2ZSb3VuZAkAAGoAAAACCQAEsQAAAAEFAAAACHJhbmRoYXNoAAAAAAAAAAPoCQAAAgAAAAECAAAAHk9ubHkgb3duZXIgY2FuIHN0YXJ0IHRoZSBnYW1lLgAAAAFpAQAAAAxmb3J3YXJkUm91bmQAAAAABAAAAA1pc0dhbWVTdGFydGVkBAAAAAckbWF0Y2gwCQAEGwAAAAIFAAAABHRoaXMCAAAACXN0YXJ0R2FtZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABZwUAAAAHJG1hdGNoMAUAAAABZwcEAAAAEG5ld051bWJlck9mUm91bmQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwIAAAALbnVtYmVyUm91bmQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAQQAAAAQbnVtYmVyT2ZHYW1lcnNVcAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAAQbmV3TnVtYmVyT2ZSb3VuZAIAAAAOX2NvdW50R2FtZXJzVXADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABZwUAAAAHJG1hdGNoMAUAAAABZwAAAAAAAAAAAAQAAAASbnVtYmVyT2ZHYW1lcnNEb3duBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAABBuZXdOdW1iZXJPZlJvdW5kAgAAABBfY291bnRHYW1lcnNEb3duAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWcFAAAAByRtYXRjaDAFAAAAAWcAAAAAAAAAAAADAwMDCQAAZgAAAAIFAAAAEG51bWJlck9mR2FtZXJzVXAAAAAAAAAAAAAJAAAAAAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzBwUAAAANaXNHYW1lU3RhcnRlZAcJAABmAAAAAgUAAAASbnVtYmVyT2ZHYW1lcnNEb3duAAAAAAAAAAAABwkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAJc3RhcnRHYW1lCQEAAAABIQAAAAEFAAAADWlzR2FtZVN0YXJ0ZWQFAAAAA25pbAkAAAIAAAABAgAAAB5Pbmx5IG93bmVyIGNhbiBzdGFydCB0aGUgZ2FtZS4AAAABaQEAAAALbWFrZUJldExlc3MAAAAABAAAAANwbXQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAQAAAAMYWRkcmVzc0dhbWVyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAADGN1cnJlbnRSb3VuZAkBAAAAFWdldEN1cnJlbnROdW1iZXJSb3VuZAAAAAAEAAAACGNvdW50QmV0CQEAAAAGZ2V0QmV0AAAAAwgFAAAAA3BtdAAAAAZhbW91bnQFAAAADGN1cnJlbnRSb3VuZAUAAAAMYWRkcmVzc0dhbWVyAwMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAkAAGcAAAACCAUAAAADcG10AAAABmFtb3VudAUAAAAIY291bnRCZXQHBAAAABBuZXdOdW1iZXJPZlJvdW5kBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMCAAAAC251bWJlclJvdW5kAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAEEAAAAEm51bWJlck9mR2FtZXJzRG93bgQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAAQbmV3TnVtYmVyT2ZSb3VuZAIAAAAQX2NvdW50R2FtZXJzRG93bgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFnBQAAAAckbWF0Y2gwBQAAAAFnAAAAAAAAAAAACQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAAxjdXJyZW50Um91bmQCAAAABl9sZXNzXwUAAAAMYWRkcmVzc0dhbWVyCAUAAAADcG10AAAABmFtb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABpAAAAAEFAAAADGN1cnJlbnRSb3VuZAIAAAAQX2NvdW50R2FtZXJzRG93bgkAAGQAAAACBQAAABJudW1iZXJPZkdhbWVyc0Rvd24AAAAAAAAAAAEFAAAAA25pbAMJAABmAAAAAgUAAAAIY291bnRCZXQIBQAAAANwbXQAAAAGYW1vdW50CQAAAgAAAAECAAAAI1BheW1lbnQgbXVzdCBiZSBtb3JlIGZvciB0aGUgcm91bmQhCQAAAgAAAAECAAAAFXdvcmtzIHdpdGggd2F2ZXMgb25seQAAAAFpAQAAAAttYWtlQmV0TW9yZQAAAAAEAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAAAxhZGRyZXNzR2FtZXIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAMY3VycmVudFJvdW5kCQEAAAAVZ2V0Q3VycmVudE51bWJlclJvdW5kAAAAAAQAAAAIY291bnRCZXQJAQAAAAZnZXRCZXQAAAADCAUAAAADcG10AAAABmFtb3VudAUAAAAMY3VycmVudFJvdW5kBQAAAAxhZGRyZXNzR2FtZXIDAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkCQAAZwAAAAIIBQAAAANwbXQAAAAGYW1vdW50BQAAAAhjb3VudEJldAcEAAAAEG5ld051bWJlck9mUm91bmQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwIAAAALbnVtYmVyUm91bmQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAQQAAAAQbnVtYmVyT2ZHYW1lcnNVcAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAAQbmV3TnVtYmVyT2ZSb3VuZAIAAAAOX2NvdW50R2FtZXJzVXADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABZwUAAAAHJG1hdGNoMAUAAAABZwAAAAAAAAAAAAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAGkAAAAAQUAAAAMY3VycmVudFJvdW5kAgAAAAZfbW9yZV8FAAAADGFkZHJlc3NHYW1lcggFAAAAA3BtdAAAAAZhbW91bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAAaQAAAABBQAAAAxjdXJyZW50Um91bmQCAAAADl9jb3VudEdhbWVyc1VwCQAAZAAAAAIFAAAAEG51bWJlck9mR2FtZXJzVXAAAAAAAAAAAAEFAAAAA25pbAMJAABmAAAAAgUAAAAIY291bnRCZXQIBQAAAANwbXQAAAAGYW1vdW50CQAAAgAAAAECAAAAI1BheW1lbnQgbXVzdCBiZSBtb3JlIGZvciB0aGUgcm91bmQhCQAAAgAAAAECAAAAFXdvcmtzIHdpdGggd2F2ZXMgb25seQAAAABcsyWP", "chainId": 84, "height": 650080, "spentComplexity": 0 } View: original | compacted Prev: EUJUFdb6VV61MQc8xhDvx9GGgr6vRB5F1138JcMTcKiA Next: 4vBWRhoh2qb5iSri55czCtQBfNSx8RLca2T18g7CV3s9 Full:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let startRoundHeight = 5 | |
5 | + | ||
6 | + | func randomizer (inv) = { | |
7 | + | let lastPlay = match getBinary(this, "lastPlay") { | |
8 | + | case s: ByteVector => | |
9 | + | s | |
10 | + | case a: Unit => | |
11 | + | base58'2ee4oFDYriWJ9EMeR' | |
12 | + | case _ => | |
13 | + | throw() | |
14 | + | } | |
15 | + | let rand = (((((lastPlay + inv.transactionId) + inv.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height)) | |
16 | + | sha256(rand) | |
17 | + | } | |
18 | + | ||
19 | + | ||
20 | + | func setWinnersPrevRound (currRound,randhash) = { | |
21 | + | let prevNumberRound = (currRound - 1) | |
22 | + | if ((randhash > 500)) | |
23 | + | then WriteSet([DataEntry("lastRoundWinner", (toString(prevNumberRound) + "_more_")), DataEntry("numberRound", currRound), DataEntry("startGame", true), DataEntry("randhash", randhash)]) | |
24 | + | else WriteSet([DataEntry("lastRoundWinner", (toString(prevNumberRound) + "_less_")), DataEntry("numberRound", currRound), DataEntry("startGame", true), DataEntry("randhash", randhash)]) | |
25 | + | } | |
26 | + | ||
27 | + | ||
28 | + | func getCurrentNumberRound () = match getInteger(this, "numberRound") { | |
29 | + | case a: Int => | |
30 | + | a | |
31 | + | case _ => | |
32 | + | 1 | |
33 | + | } | |
34 | + | ||
35 | + | ||
36 | + | func getBet (bet,round,addressGamer) = if ((round >= 1)) | |
37 | + | then { | |
38 | + | let winnerOfPrevRound = match getString(this, "lastRoundWinner") { | |
39 | + | case w: String => | |
40 | + | w | |
41 | + | case _ => | |
42 | + | "" | |
43 | + | } | |
44 | + | let winnerFromPrevRound = match getString(this, (winnerOfPrevRound + addressGamer)) { | |
45 | + | case w: String => | |
46 | + | w | |
47 | + | case _ => | |
48 | + | "" | |
49 | + | } | |
50 | + | if (if ((round > 1)) | |
51 | + | then (winnerFromPrevRound == "") | |
52 | + | else false) | |
53 | + | then (round * 2) | |
54 | + | else 1 | |
55 | + | } | |
56 | + | else 1 | |
57 | + | ||
58 | + | ||
59 | + | func getNumberGame () = match getInteger(this, "numberGame") { | |
60 | + | case a: Int => | |
61 | + | (a + 1) | |
62 | + | case _ => | |
63 | + | 1 | |
64 | + | } | |
4 | 65 | ||
5 | 66 | ||
6 | 67 | @Callable(i) | |
7 | - | func setEndPresellTime (time) = if ((i.caller == this)) | |
8 | - | then WriteSet([DataEntry("endPresellTime", time)]) | |
9 | - | else throw("Only owner can set presell time.") | |
68 | + | func startRound () = { | |
69 | + | let newNumberOfRound = match getInteger(this, "numberRound") { | |
70 | + | case a: Int => | |
71 | + | (a + 1) | |
72 | + | case _ => | |
73 | + | 1 | |
74 | + | } | |
75 | + | let randhash = randomizer(i) | |
76 | + | let isGameStarted = match getBoolean(this, "startGame") { | |
77 | + | case g: Boolean => | |
78 | + | g | |
79 | + | case _ => | |
80 | + | false | |
81 | + | } | |
82 | + | if (if (if ((newNumberOfRound == 1)) | |
83 | + | then (i.caller == this) | |
84 | + | else false) | |
85 | + | then !(isGameStarted) | |
86 | + | else false) | |
87 | + | then { | |
88 | + | let newNumberGame = getNumberGame() | |
89 | + | WriteSet([DataEntry("numberGame", newNumberGame), DataEntry("startGame", !(isGameStarted)), DataEntry("numberRound", newNumberOfRound)]) | |
90 | + | } | |
91 | + | else if (if ((newNumberOfRound > 1)) | |
92 | + | then (i.caller == this) | |
93 | + | else false) | |
94 | + | then setWinnersPrevRound(newNumberOfRound, (toInt(randhash) % 1000)) | |
95 | + | else throw("Only owner can start the game.") | |
96 | + | } | |
10 | 97 | ||
11 | 98 | ||
12 | 99 | ||
13 | 100 | @Callable(i) | |
14 | - | func setTokenId (id) = if ((i.caller == this)) | |
15 | - | then WriteSet([DataEntry("tokenId", id)]) | |
16 | - | else throw("Only owner can set token id.") | |
101 | + | func forwardRound () = { | |
102 | + | let isGameStarted = match getBoolean(this, "startGame") { | |
103 | + | case g: Boolean => | |
104 | + | g | |
105 | + | case _ => | |
106 | + | false | |
107 | + | } | |
108 | + | let newNumberOfRound = match getInteger(this, "numberRound") { | |
109 | + | case a: Int => | |
110 | + | a | |
111 | + | case _ => | |
112 | + | 1 | |
113 | + | } | |
114 | + | let numberOfGamersUp = match getInteger(this, (toString(newNumberOfRound) + "_countGamersUp")) { | |
115 | + | case g: Int => | |
116 | + | g | |
117 | + | case _ => | |
118 | + | 0 | |
119 | + | } | |
120 | + | let numberOfGamersDown = match getInteger(this, (toString(newNumberOfRound) + "_countGamersDown")) { | |
121 | + | case g: Int => | |
122 | + | g | |
123 | + | case _ => | |
124 | + | 0 | |
125 | + | } | |
126 | + | if (if (if (if ((numberOfGamersUp > 0)) | |
127 | + | then (i.caller == this) | |
128 | + | else false) | |
129 | + | then isGameStarted | |
130 | + | else false) | |
131 | + | then (numberOfGamersDown > 0) | |
132 | + | else false) | |
133 | + | then WriteSet([DataEntry("startGame", !(isGameStarted))]) | |
134 | + | else throw("Only owner can start the game.") | |
135 | + | } | |
136 | + | ||
137 | + | ||
138 | + | ||
139 | + | @Callable(i) | |
140 | + | func makeBetLess () = { | |
141 | + | let pmt = extract(i.payment) | |
142 | + | let addressGamer = toBase58String(i.caller.bytes) | |
143 | + | let currentRound = getCurrentNumberRound() | |
144 | + | let countBet = getBet(pmt.amount, currentRound, addressGamer) | |
145 | + | if (if (!(isDefined(pmt.assetId))) | |
146 | + | then (pmt.amount >= countBet) | |
147 | + | else false) | |
148 | + | then { | |
149 | + | let newNumberOfRound = match getInteger(this, "numberRound") { | |
150 | + | case a: Int => | |
151 | + | a | |
152 | + | case _ => | |
153 | + | 1 | |
154 | + | } | |
155 | + | let numberOfGamersDown = match getInteger(this, (toString(newNumberOfRound) + "_countGamersDown")) { | |
156 | + | case g: Int => | |
157 | + | g | |
158 | + | case _ => | |
159 | + | 0 | |
160 | + | } | |
161 | + | WriteSet([DataEntry(((toString(currentRound) + "_less_") + addressGamer), pmt.amount), DataEntry((toString(currentRound) + "_countGamersDown"), (numberOfGamersDown + 1))]) | |
162 | + | } | |
163 | + | else if ((countBet > pmt.amount)) | |
164 | + | then throw("Payment must be more for the round!") | |
165 | + | else throw("works with waves only") | |
166 | + | } | |
167 | + | ||
168 | + | ||
169 | + | ||
170 | + | @Callable(i) | |
171 | + | func makeBetMore () = { | |
172 | + | let pmt = extract(i.payment) | |
173 | + | let addressGamer = toBase58String(i.caller.bytes) | |
174 | + | let currentRound = getCurrentNumberRound() | |
175 | + | let countBet = getBet(pmt.amount, currentRound, addressGamer) | |
176 | + | if (if (!(isDefined(pmt.assetId))) | |
177 | + | then (pmt.amount >= countBet) | |
178 | + | else false) | |
179 | + | then { | |
180 | + | let newNumberOfRound = match getInteger(this, "numberRound") { | |
181 | + | case a: Int => | |
182 | + | a | |
183 | + | case _ => | |
184 | + | 1 | |
185 | + | } | |
186 | + | let numberOfGamersUp = match getInteger(this, (toString(newNumberOfRound) + "_countGamersUp")) { | |
187 | + | case g: Int => | |
188 | + | g | |
189 | + | case _ => | |
190 | + | 0 | |
191 | + | } | |
192 | + | WriteSet([DataEntry(((toString(currentRound) + "_more_") + addressGamer), pmt.amount), DataEntry((toString(currentRound) + "_countGamersUp"), (numberOfGamersUp + 1))]) | |
193 | + | } | |
194 | + | else if ((countBet > pmt.amount)) | |
195 | + | then throw("Payment must be more for the round!") | |
196 | + | else throw("works with waves only") | |
197 | + | } | |
17 | 198 | ||
18 | 199 |
github/deemru/w8io/026f985 24.46 ms ◑