Erebus Posted June 9, 2020 Share Posted June 9, 2020 so in my game you can purchase points to spend in the game.the problem im having is points being automatically awarded to the person who bought them.currently we have to manually award them.does anyone have any knowledge of how to make this work as intended.. I have attached the points scriptfunction PlayerInfo::loadPoints(%playerInfo){%query = "accountId=" @ %playerInfo.accountId TAB "server=" @ $realmName;%auth = $AuthServer;$AuthServer = "127.0.0.1:80";dbresult("checkPoints.php", %query, "loadPoints", %playerInfo);$AuthServer = %auth;%playerInfo.lastPointsCheck = UnixTime();}function loadPoints::onLineReceived(%this, %command, %vars){%playerInfo = %this.player;if(%command $= "success"){%playerInfo.points = %vars;%playerInfo.updatePoints();}}function PlayerInfo::updatePoints(%playerInfo){commandToClient(%playerInfo.zoneConnection, 'updatePlayerPoints', %playerInfo.playerId, %playerInfo.points);}function serverCmdrequestAddPoints(%zone, %playerId, %amount){%playerInfo = getPlayerInfo(%playerId);if(!%playerInfo)return;%amount = getIntArg(%amount);if(%amount < 0){// removingif(%playerInfo.points + %amount < 0){commandToClient(%playerInfo.zoneConnection, 'PointAdditionResult', %playerInfo.playerId, 0);return;}}if($pointsLock[%playerInfo.accountId] && %amount > 0){commandToClient(%playerInfo.zoneConnection, 'PointAdditionResult', %playerInfo.playerId, 0);return;}$pointsLock[%playerInfo.accountId] = 1;%query = "accountId=" @ %playerInfo.accountId @ "\t" @ "amount=" @ %amount TAB "server=" @ $realmName;%auth = $AuthServer;$AuthServer = $accountAuthServer;dbresult("addPoints.php", %query, "addPoints", %playerInfo);$AuthServer = %auth; }function serverCmdCheckPointsLock(%zone, %accountId, %tradeOffer){if($pointsLock[%accountId])commandToClient(%zone, 'checkPointsResult', %tradeOffer, 0);elsecommandToClient(%zone, 'checkPointsResult', %tradeOffer, 1);}function addPoints::onLineReceived(%this, %command, %vars){%playerInfo = %this.player;if(%command $= "success"){if(%playerInfo){%playerInfo.points = %vars;%playerInfo.updatePoints();commandToClient(%playerInfo.zoneConnection, 'PointAdditionResult', %playerInfo.playerId, 1);$pointsLock[%playerInfo.accountId] = 0;}}else{commandToClient(%playerInfo.zoneConnection, 'PointAdditionResult', %playerInfo.playerId, 0);}} Quote Link to comment Share on other sites More sharing options...
Duion Posted June 9, 2020 Share Posted June 9, 2020 It is probably difficult to do on the fly, without knowing the rest. You have to describe the problem and then how you want it to be. Can't players just give the points to other players ingame? This would solve the issue, but may create other issues. Another method would be to create a bank that the points get awarded to first and then in another GUI or so the player can chose who to transfer it to, but it would require to create a new feature. Another method would be to not award points directly, but hand out codes that can be redeemed ingame to get the points, that is how many others do it, like if you purchase credits in the supermarkets for your mobile phone or whatever, they do not transfer anything, but give you a key and whoever enters it gets the money, but I have no idea how that system works either.I would just tell people to deal with it, since I think most players who buy something will want it on their own character, even many moderne games do not offer that feature to buy something for others.Easiest solution would probably having a GUI after purchase where the player has to manually enter the character who to transfer it to, but you have to consider the average person is stupid so any additoinal action required to do by the player is probably a cause of further problems. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.