GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: vardanega le 06 Avril 2010, 20:30:43
-
Bonsoir, actuellement j'ai un petit problème avec ma callback qui avant fonctionnais mais maintenant on dirais que le code ne s'exécute plus, pourtant aucune erreur n'est a prendre en compte sur ce code.
public OnPlayerDeath(playerid, killerid, reason)
{
if(gTeam[killerid] == 1)
{
new Float:X, Float:Y, Float:Z;
new pName[MAX_PLAYER_NAME], string[48];
SetPlayerInterior(playerid,0);
SetPlayerColor(playerid,COLOR_ZOMBIE);
SetPlayerTeam(playerid,1);
gTeam[playerid] = 1;
SetPlayerHealth(playerid, 200);
GivePlayerWeapon(playerid, 9, 9999);
GetPlayerName(playerid, pName, sizeof(pName));
SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
SendDeathMessage(killerid,playerid,reason);
/*GetPlayerPos(killerid,X,Y,Z);
SetPlayerPos(playerid,X+2,Y,Z);*/
}
if(gTeam[killerid] == 0)
{
gTeam[playerid] = 1;
GivePlayerMoney(playerid,2500);
SetPlayerScore(killerid,GetPlayerScore(playerid)+1);
}
if(gTeam[playerid] == 1)
{
new pName[MAX_PLAYER_NAME], string[48];
SetPlayerInterior(playerid,0);
SetPlayerColor(playerid,COLOR_ZOMBIE);
SetPlayerTeam(playerid,1);
gTeam[playerid] = 1;
SetPlayerHealth(playerid, 200);
GivePlayerWeapon(playerid, 9, 9999);
GetPlayerName(playerid, pName, sizeof(pName));
SendDeathMessage(killerid,playerid,reason);
}
if(Infected[playerid] == 1)
{
new Float:X, Float:Y, Float:Z;
new pName[MAX_PLAYER_NAME], string[48];
SetPlayerInterior(playerid,0);
SetPlayerColor(playerid,COLOR_ZOMBIE);
SetPlayerTeam(playerid,1);
gTeam[playerid] = 1;
SetPlayerHealth(playerid, 200);
GivePlayerWeapon(playerid, 9, 9999);
GetPlayerName(playerid, pName, sizeof(pName));
SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
SendDeathMessage(killerid,playerid,reason);
/*GetPlayerPos(killerid,X,Y,Z);
SetPlayerPos(playerid,X+2,Y,Z);*/
}
return 1;
}
Merci pour votre aide a venir, je ne suis pas tres doué en code.
-
Tes codes, il ne faut la mettre au moment ou le joueur meurt mais au moment ou le joueur spawn et donc dans la callback: OnPlayerSpawn ;)
-
Merci, oui vous avez entièrement raison ma logique est mauvaise !, en tout cas merci beaucoup !
Une petite question, Est il possible utilisé les killerid dans une autre callback que OnPlayerDeath ?
Merci
-
Si la callback(OnVehicleDeath, OnPlayerDeath, ...) accepte cette valeur, oui cependant dans d'autres callbacks(OnPlayerSpawn, OnPlayerConnect) ne l'acceptent pas a part si tu renvoie le killerid sur une variable, en C++ c'est faisable mais j'ignore si c'est possible en pawn.
-
c'est possible en PWN
new Killer=INVALID_PLAYER_ID;
dans la callback OnPLayerDeath
Killer=Killerid;
voila il te resteras plus qu'a utiliser la var Killer par contre une fois utiliser pense a remettre Killer=INVALID_PLAYER_ID;
Pas tester mais de memoire sa doit etre cela
-
Il est plus prudent de faire un tableau :
KillerId[MAX_PLAYERS];
Et dans OnPlayerDeath de faire :
KillerId[playerid] = killerid;
Sinon, il n'y aura qu'un seul killerid pour tout les kill et si deux kill se produisent en même temps, le killerid du deuxième écrasera celui du premier.
++
Syg
-
Merci je vais essayé comme cela.