pragma solidity ^0.4.18; contract Subscription { uint public wins; struct User { uint calls; uint callsBought; } mapping(address => User) public users; function buyCalls() payable { uint calls = 5 * (msg.value / 1 ether); // 1 ether = 5 calls users[msg.sender].callsBought += calls; } modifier onlyIfEnoughCalls() { require(users[msg.sender].calls < users[msg.sender].callsBought); users[msg.sender].calls++; _; } function winGame() onlyIfEnoughCalls { wins++; // do whatever you want } }
0.4.19