• 05 Juin 2026, 20:16:12


Auteur Sujet: Problème de Callback ?  (Lu 1392 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne vardanega

  • *
  • Tueur en série
  • http://vvardanega.wordpress.com (mon blogue)
  • Messages: 155
    • Voir le profil
Problème de Callback ?
« 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.
« Modifié: 06 Avril 2010, 20:32:26 par vardanega »

Hors ligne FuSion

  • Pawn coder
  • *
  • Grand Banditisme
  • for(new i = 0; i < INFINI; i++)
  • Messages: 888
    • Voir le profil
Re : Problème de Callback ?
« Réponse #1 le: 06 Avril 2010, 20:38:47 »
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  ;)

Hors ligne vardanega

  • *
  • Tueur en série
  • http://vvardanega.wordpress.com (mon blogue)
  • Messages: 155
    • Voir le profil
Re : Problème de Callback ?
« Réponse #2 le: 06 Avril 2010, 20:45:24 »
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
« Modifié: 06 Avril 2010, 21:01:14 par vardanega »

Hors ligne FuSion

  • Pawn coder
  • *
  • Grand Banditisme
  • for(new i = 0; i < INFINI; i++)
  • Messages: 888
    • Voir le profil
Re : Problème de Callback ?
« Réponse #3 le: 06 Avril 2010, 22:28:37 »
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.

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Problème de Callback ?
« Réponse #4 le: 06 Avril 2010, 22:55:55 »
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
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Problème de Callback ?
« Réponse #5 le: 06 Avril 2010, 23:09:01 »
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
Courtesy of GtaManiac

Hors ligne vardanega

  • *
  • Tueur en série
  • http://vvardanega.wordpress.com (mon blogue)
  • Messages: 155
    • Voir le profil
Re : Problème de Callback ?
« Réponse #6 le: 07 Avril 2010, 21:01:36 »
Merci je vais essayé comme cela.