• 05 Juillet 2025, 19:49:20


Auteur Sujet: [Résolu] Erreur: function heading differs from prototype  (Lu 1939 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Andrew_Shakur

  • *
  • Nouveau
  • Messages: 9
    • Voir le profil
[Résolu] Erreur: function heading differs from prototype
« le: 26 Janvier 2014, 00:07:49 »
y0 tous le monde!

Ce soir en modifiant un peut mon script ( n'étant pas scripteur mais mappeur ) j'ai essayé de faire en sortes que chaque maisons disponible sur le serveur ( liée à une base de donnée, base de sarp ) sois visible sur la map comme ceci ( les petites maisons vertes):



J'ai alors entrer, le code avec SetPlayerMapIcon();
Ce qui ma donner cela:

public CreateHousePickup(playerid)
{
    print("Lancement Boucle 331");
    for(new h = 0; h < totalbizz; h++)
{
if(BizzInfo[h][bOwned] == 0)
{BizPickup[h]=CreateDynamicPickup(1272, 1, BizzInfo[h][bEntranceX], BizzInfo[h][bEntranceY], BizzInfo[h][bEntranceZ], 0, 0, -1, PICKUP_STREAM_DISTANCE);}
if(BizzInfo[h][bOwned] == 1)
{
BizPickup[h]=SetPlayerMapIcon(playerid, 313, BizzInfo[h][bEntranceX], BizzInfo[h][bEntranceY], BizzInfo[h][bEntranceZ], 31, 0, MAPICON_LOCAL );
    BizPickup[h]=CreateDynamicPickup(1239, 1, BizzInfo[h][bEntranceX], BizzInfo[h][bEntranceY], BizzInfo[h][bEntranceZ], 0, 0, -1, PICKUP_STREAM_DISTANCE);}
}
print("Fin Boucle 331");
}

J'ai ajouter (playerid) dans public CreateHousePickup(ici), car quand je ne mettez pas playerid j'avait une erreur qui disait:

Citer
undefined symbol "playerid"

Donc voilà, j'espère avoir été clair dans mes propos, +1 à celui qui m'aidera résoudre ce problème.
Bonne soirée!
« Modifié: 26 Janvier 2014, 11:47:38 par Gzsume »

Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : Erreur: function heading differs from prototype
« Réponse #1 le: 26 Janvier 2014, 00:57:51 »
La fonction utilise une variable (en l'occurence, playerid) sauf qu'elle ne connaît pas sa valeur. Il est donc affiché que le symbole playerid (la variable) n'est pas défini. Si tu ajoutes playerid dans l'appel de la fonction, il faut modifier ses instructions pour prendre en compte la variable, et aussi le prototype (une sorte de définition qui explique au serveur comment la fonction se présente et quels arguments elle prend en compte). J'espère que c'est assez clair, c'est assez difficile à expliquer. ^^

Hors ligne Andrew_Shakur

  • *
  • Nouveau
  • Messages: 9
    • Voir le profil
Re : Re : Erreur: function heading differs from prototype
« Réponse #2 le: 26 Janvier 2014, 05:11:11 »
La fonction utilise une variable (en l'occurence, playerid) sauf qu'elle ne connaît pas sa valeur. Il est donc affiché que le symbole playerid (la variable) n'est pas défini. Si tu ajoutes playerid dans l'appel de la fonction, il faut modifier ses instructions pour prendre en compte la variable, et aussi le prototype (une sorte de définition qui explique au serveur comment la fonction se présente et quels arguments elle prend en compte). J'espère que c'est assez clair, c'est assez difficile à expliquer. ^^

J'ai pas trop compris, comme je l'ai dit dans le topic je suis pas scripteur et je l'avoue car je ne veut pas me faire passer pour quelqu'un de fort, ce que je ne suis pas! C'est possible que tu te base sur mon bout de code et m'en donne un qui fonctionne ou même des explication moins difficile à comprendre ^^

Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : Erreur: function heading differs from prototype
« Réponse #3 le: 26 Janvier 2014, 07:01:31 »
Pas de soucis, c'est vrai que mon explication n'était pas très compréhensible si tu ne développes pas au quotidien. Je vais essayer de faire plus simple (je ne promets rien) :

CreateHousePickup() est la fonction que tu utilises pour afficher un pickup (objet à ramasser en jeu) à chaque maison disponible (à vendre ou achetée). Si tu souhaites afficher une icône sur la carte (une mapicon), tu dois comme tu l'as dit utiliser la fonction SetPlayerMapIcon(). Elle demande pour fonctionner une variable playerid qui correspond à l'identifiant d'un joueur. Dans ton cas, tu souhaites afficher cette icône pour tous les joueurs. Tu vas donc devoir faire une boucle pour parcourir tous les identifiants et appeler la fonction pour chacun des joueurs, un à un.

Ce qui donne donc (code corrigé mais pas compilé, il se peut qu'il affiche des erreurs) :


Code: (pawn) [Sélectionner]
// CreateHouse serait plus adapté puisqu'on ne se charge plus uniquement du pickup
public CreateHousePickup()
{
print("Lancement Boucle 331");

for(new h = 0; h < totalbizz; h++)
{
if(BizzInfo[h][bOwned] == 0)
          {
            BizPickup[h] = CreateDynamicPickup(1272,
1,
BizzInfo[h][bEntranceX],
BizzInfo[h][bEntranceY],
BizzInfo[h][bEntranceZ],
0,
0,
-1,
PICKUP_STREAM_DISTANCE);
          }

        if(BizzInfo[h][bOwned] == 1)
          {
// Ici, je fais une boucle sur le nombre maximum de joueurs
for(new p=0; p<GetMaxPlayers(); p++)
{
// Sur la ligne suivante, j'utilise la variable utilisée dans la boucle pour afficher l'icône à chaque joueur
            BizPickup[h] = SetPlayerMapIcon(p,
313,
BizzInfo[h][bEntranceX],
BizzInfo[h][bEntranceY],
BizzInfo[h][bEntranceZ],
31,
0,
MAPICON_LOCAL );
              }

BizPickup[h] = CreateDynamicPickup(1239,
1,
BizzInfo[h][bEntranceX],
BizzInfo[h][bEntranceY],
BizzInfo[h][bEntranceZ],
0,
0,
-1,
PICKUP_STREAM_DISTANCE);}
          }
      }

    print("Fin Boucle 331");
}

Note : désolé, comme j'ai rédigé ça directement sur le forum, mes tabulations sont un peu larges...

Tu dois appliquer la même technique pour la première condition (si la maison est disponible à la vente).

En espérant avoir été plus clair,
Bonne journée. ;-)

Hors ligne Andrew_Shakur

  • *
  • Nouveau
  • Messages: 9
    • Voir le profil
Re : Re : Erreur: function heading differs from prototype
« Réponse #4 le: 26 Janvier 2014, 11:24:53 »
Pas de soucis, c'est vrai que mon explication n'était pas très compréhensible si tu ne développes pas au quotidien. Je vais essayer de faire plus simple (je ne promets rien) :

CreateHousePickup() est la fonction que tu utilises pour afficher un pickup (objet à ramasser en jeu) à chaque maison disponible (à vendre ou achetée). Si tu souhaites afficher une icône sur la carte (une mapicon), tu dois comme tu l'as dit utiliser la fonction SetPlayerMapIcon(). Elle demande pour fonctionner une variable playerid qui correspond à l'identifiant d'un joueur. Dans ton cas, tu souhaites afficher cette icône pour tous les joueurs. Tu vas donc devoir faire une boucle pour parcourir tous les identifiants et appeler la fonction pour chacun des joueurs, un à un.

Ce qui donne donc (code corrigé mais pas compilé, il se peut qu'il affiche des erreurs) :


Code: (pawn) [Sélectionner]
// CreateHouse serait plus adapté puisqu'on ne se charge plus uniquement du pickup
public CreateHousePickup()
{
print("Lancement Boucle 331");

for(new h = 0; h < totalbizz; h++)
{
if(BizzInfo[h][bOwned] == 0)
          {
            BizPickup[h] = CreateDynamicPickup(1272,
1,
BizzInfo[h][bEntranceX],
BizzInfo[h][bEntranceY],
BizzInfo[h][bEntranceZ],
0,
0,
-1,
PICKUP_STREAM_DISTANCE);
          }

        if(BizzInfo[h][bOwned] == 1)
          {
// Ici, je fais une boucle sur le nombre maximum de joueurs
for(new p=0; p<GetMaxPlayers(); p++)
{
// Sur la ligne suivante, j'utilise la variable utilisée dans la boucle pour afficher l'icône à chaque joueur
            BizPickup[h] = SetPlayerMapIcon(p,
313,
BizzInfo[h][bEntranceX],
BizzInfo[h][bEntranceY],
BizzInfo[h][bEntranceZ],
31,
0,
MAPICON_LOCAL );
              }

BizPickup[h] = CreateDynamicPickup(1239,
1,
BizzInfo[h][bEntranceX],
BizzInfo[h][bEntranceY],
BizzInfo[h][bEntranceZ],
0,
0,
-1,
PICKUP_STREAM_DISTANCE);}
          }
      }

    print("Fin Boucle 331");
}

Note : désolé, comme j'ai rédigé ça directement sur le forum, mes tabulations sont un peu larges...

Tu dois appliquer la même technique pour la première condition (si la maison est disponible à la vente).

En espérant avoir été plus clair,
Bonne journée. ;-)


Merci déjà pour cette rédaction, j'ai mieux compris, sauf que maintenant tous ce passe bien lors de la compilation ect.. Mais rien ne s'affiche dans mon jeux sauf les CreateDynamicPickup, en gros, je n'ai toujours pas l'icone sur la mini carte.

EDIT: j'ai rien dit tu es un génie ! J'avait oublier que la maison devait être acheter pour apparaître sur la minimap, merci beaucoup, sujet résolus à lock.

Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : Erreur: function heading differs from prototype
« Réponse #5 le: 26 Janvier 2014, 11:47:01 »
Au plaisir de t'avoir aidé. ;-)