• 24 Avril 2025, 00:32:52


Auteur Sujet: CallRemoteFunction  (Lu 1359 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Jens84

  • *
  • Tueur
  • Pawn un jour, Pawn toujours
  • Messages: 71
    • Voir le profil
    • Mon Site Web
CallRemoteFunction
« le: 23 Novembre 2008, 00:26:31 »
Amis du soir, bonsoir !
Je me suis laissé tenter par la fonction CallRemoteFunction.
Dans mon gamemode, où j'utilise des gTeam[playerid], j'ai placé une callback :

public IsNotStunter(playerid)
{
    if (!(gTeam[playerid] == TEAM_STUNT))
{
    SendClientMessage(playerid, COLOR_LIGHTRED, "Tu n'est pas un Stunter !");
    SendClientMessage(playerid, COLOR_LIGHTRED, "Si tu veux participer aux courses, Fais F4 puis /kill et choisis le Stunt !");
}
    return 1;
}

Puis dans mon yrace, quand un joueur tape /join, j'ai placé la superbe CallRemoteFunction("IsNotStunter", "i", playerid);
Cependant, comme je ne sais pas comment proceder, si un joueur (avec un gTeam différent de TEAM_STUNT) tape /join, le message s'affiche mais l'action se produit quand même.
Pourriez-vous m'aider pour faire en sorte que l'action s'annule, dois-je mettre un return 0 ? Un truc du genre ?

Merci d'avance !
Jens84
Serveur non-terminé  (MAJ Quotidiennes)


Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : CallRemoteFunction
« Réponse #1 le: 23 Novembre 2008, 00:34:24 »
Salut,

le problème c,est que tu devrais plutôt t'en servir pour détecter la team du joueur, non pas pour exécuter le code de la commande, car dans ces cas, savoir quelle valeur retourné etc... est légèrement moins évident

tu dois faire une truc du genre:

 if(CallremoteFunction(....))return 1;

bref, essaie de créer une fonction getPlayerTeam et ce sera plus aisé

++Sim++





Hors ligne Jens84

  • *
  • Tueur
  • Pawn un jour, Pawn toujours
  • Messages: 71
    • Voir le profil
    • Mon Site Web
Re : CallRemoteFunction
« Réponse #2 le: 23 Novembre 2008, 00:39:27 »
Ok je vais essayer ça, merci de ton aide !
Serveur non-terminé  (MAJ Quotidiennes)


Hors ligne MrFredo

  • *
  • Grand Banditisme
  • Scripteur PHP/PAWN
  • Messages: 953
    • Voir le profil
    • GTA-Hosting
Re : CallRemoteFunction
« Réponse #3 le: 23 Novembre 2008, 02:59:45 »
J'pense que tu devrait faire un truc du genre

Code: (pawn) [Sélectionner]
public GetPlayerTeam(playerid)
{
      return gTeam[playerid];
}
ensuite
new team = CallRemoteFunction("GetPlayerTeam",'i',playerid);

C'est un ebauche donc j'sais pas si sa peux fonctioner comme sa ...

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : CallRemoteFunction
« Réponse #4 le: 26 Novembre 2008, 12:21:06 »
Non, sa fonction est très bien, simplement, il faut qu'elle retourne 0 quand le joueur n'est pas un stunter
Le nom est ambigu aussi, j'aurais plutôt appeler cette fonction [tt]IsStunter[/tt] :
[code]public IsStunter(playerid)
{
if (!(gTeam[playerid] == TEAM_STUNT))
{
SendClientMessage(playerid, COLOR_LIGHTRED, "Tu n'est pas un Stunter !");
SendClientMessage(playerid, COLOR_LIGHTRED, "Si tu veux participer aux courses, Fais F4 puis /kill et choisis le Stunt !");
return 0;
}
return 1;
}

Exemple d'utilisation  :

if (CallRemoteFunction("IsStunter",'i',playerid) == 1)
{
/* Le joueur est stunter, il peut rejoindre la course */
}

Par contre, effectivement, il ne faudrait pas qu'elle exécute de code autre que le test sur l'appartenance du joueur à telle ou telle team :
public IsStunter(playerid)
{
if (!(gTeam[playerid] == TEAM_STUNT))
{
return 0;
}
return 1;
}

if (CallRemoteFunction("IsStunter",'i',playerid) == 1)
{
/* Le joueur est stunter, il peut rejoindre la course */
}
else
{
SendClientMessage(playerid, COLOR_LIGHTRED, "Tu n'est pas un Stunter !");
SendClientMessage(playerid, COLOR_LIGHTRED, "Si tu veux participer aux courses, Fais F4 puis /kill et choisis le Stunt !");
}

++
Syg[/code]
Courtesy of GtaManiac

Hors ligne Jens84

  • *
  • Tueur
  • Pawn un jour, Pawn toujours
  • Messages: 71
    • Voir le profil
    • Mon Site Web
Re : CallRemoteFunction
« Réponse #5 le: 27 Novembre 2008, 07:19:00 »
Ok merci beaucoup Syg, j'aurais du penser au == 1 après la condition... (je désespère de moi-même XD) ^^
Je vais tester ça ce soir normalement.

A bientôt !
Serveur non-terminé  (MAJ Quotidiennes)