05.03.2011, 05:34
I am creating a money bag system where when the server starts, money bag (pickup) is created at a random position.
When someone picks up the pickup the money bag gets attached to his body and when other player shoots him he looses the money bag and at the place where he dies a new pickup is created again with the same modelid.
But the problem is this script worked well for the first time but at the second time it all messed up. Whenever the player is killed it says 'You lost the Money Bag' and creates a new pickup at his death place even if he didn't picked up the pickup earlier.
Here is my code :
Outside
In OnGameModeInit
OnPlayerPickUpPickup(playerid, pickupid)
Outside
OnPlayerDeath
Where am I wrong?
Sometimes it even creates the pickup at the place of killerid instead of the player who got killed.
When someone picks up the pickup the money bag gets attached to his body and when other player shoots him he looses the money bag and at the place where he dies a new pickup is created again with the same modelid.
But the problem is this script worked well for the first time but at the second time it all messed up. Whenever the player is killed it says 'You lost the Money Bag' and creates a new pickup at his death place even if he didn't picked up the pickup earlier.
Here is my code :
Outside
Код:
new Float:RandomPickup[][3] = { // Positions for X, Y and Z } new cash; new bagholder;
Код:
new rand = random(sizeof(RandomPickup)); cash = CreatePickup(1550, 2, RandomPickup[rand][0], RandomPickup[rand][1], RandomPickup[rand][2], 0);
Код:
if(pickupid == cash) { new string[120], name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name,sizeof(name)); GivePlayerMoney(playerid,10000); format(string, sizeof(string), "%s found the Money Bag!", name); TextDrawSetString(notification, string); SetTimer("CloseTextdraw_notification", 2*1000, false); bagholder = GetPlayerID(name); SetPlayerAttachedObject(playerid, 1, 1550, 1, 0.1, -0.2, 0, 0, 90, 0.5, 0.8, 0.8, 0.8); DestroyPickup(cash); } return 1;
Код:
stock GetPlayerID(const Name[]) { for(new i; i<MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { new pName[MAX_PLAYER_NAME]; GetPlayerName(i, pName, sizeof(pName)); if(strcmp(Name, pName, true)==0) { return i; } } } return -1; }
Код:
if(playerid == bagholder) { DestroyPickup(cash); new Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z); cash = CreatePickup(1550, 2, X, Y, Z, 0); RemovePlayerAttachedObject(playerid, 1); SendClientMessage(playerid, LIGHTGREEN, "You lost the {FF0000}Money Bag!"); }
Sometimes it even creates the pickup at the place of killerid instead of the player who got killed.