• 05 Juin 2026, 22:44:11


Auteur Sujet: Pickups qui se confondent !  (Lu 4120 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne CarCrasher

  • *
  • Tueur en série
  • Messages: 144
    • Voir le profil
Pickups qui se confondent !
« le: 26 Septembre 2013, 15:55:31 »
Bonjour bonjour messieurs !

J'ai le fameux bug des pickups qui font autre chose que leur code qui leur est assigné ^^
J'ai bien été voir d'autres topics où il était indiqué de pas mettre de return 1; à la fin d'une condition mais des else if, chose que j'ai faite, mais rien n'y fait, tous mes pickups sont des var = CreatePickup(blablabla, etc.);
Alors j'ai cru comprendre que les pickups retournent donc le nombre 1 quand ils n'ont pas de variable les désignant, or, tous mes pickups le sont.

http://pastebin.com/aXXef750

Voici donc mon code ^^

Alors une de mes hypothèse est que vu que certains pickups ne sont créés qu'à un moment précis, la variable existant déjà, mais ne désignant rien, vaut donc 0, mais je n'ai pas vraiment d'idée sur le comment de règler le problème, à part créer tous les pickups au préalable, mais voilà voilà, comme vous l'aurez deviné, on ne doit pas pouvoir les récupérer n'importe quand ^^

Donc je viens quérir votre savoir, qui éclairera la nuit de mon incapacité à corriger ce bug  :laugh:

Merci  :tongue:

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : Pickups qui se confondent !
« Réponse #1 le: 26 Septembre 2013, 17:32:07 »
Bonjour,

Dans tout ce que tu nous as envoyé, je ne vois pas où tu créés les "noms" des pickup. J'veux parler des "new monpickup;"

C'est possible de les voir ?


Adju ♥
(-_-)



Hors ligne CarCrasher

  • *
  • Tueur en série
  • Messages: 144
    • Voir le profil
Re : Pickups qui se confondent !
« Réponse #2 le: 26 Septembre 2013, 17:47:41 »
D'accord ^^
Mais je vois pas l'utilité, enfin si tu pouvais m'expliquer, c'est toujours bon d'apprendre *-*

Code: (pawno) [Sélectionner]
new pickupcables[MAX_PLAYERS];
new pickupgaz;
new pickuptuyau;
new pickupplan[MAX_PLAYERS];
new paquetspas12;
new paquetpistolets;
new pickupcle1quete[MAX_PLAYERS];
new pickupcle2quete[MAX_PLAYERS];
new pickupviande[MAX_PLAYERS];
new paquetfric1;
new paquetfric2;
new jetpack;
new gilet1;
new gilet2;
new gilet3;
new gilet4;
new gilet5;
new gilet6;
new gilet7;
new gilet8;
new gilet9;
new gilet10;
new gilet11;
new gilet12;
new gilet13;
new gilet14;
new gilet15;
new gilet16;
new gilet17;
new gilet18;
new gilet19;
new gilet20;
new incipickups;

Rien de bien spécial en gros :/

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : Pickups qui se confondent !
« Réponse #3 le: 26 Septembre 2013, 17:50:41 »
Ah, et l'endroit où tu créés tes pickups stp, tu me montrer comment tu les as créé ?


Adju ♥
(-_-)



Hors ligne CarCrasher

  • *
  • Tueur en série
  • Messages: 144
    • Voir le profil
Re : Pickups qui se confondent !
« Réponse #4 le: 26 Septembre 2013, 18:07:17 »
D'accord  :biggrin:

[spoiler]
Code: (pawno) [Sélectionner]
OnGameModeInit()
{
gilet1 = CreatePickup(1242, 3,-552.2299,-181.3831,78.4063); // Kevlar1
gilet2 = CreatePickup(1242, 3,-99.2357,-37.3909,3.1094); // Kevlar2
gilet3 = CreatePickup(1242, 3,245.5813,-53.9622,1.5776); // Kevlar3
gilet4 = CreatePickup(1242, 3,1092.5510,-73.5867,53.2554); // Kevlar4
gilet5 = CreatePickup(1242, 3,681.6131,-469.5823,22.5705); // Kevlar5
gilet6 = CreatePickup(1242, 3,785.9963,-487.4437,17.3439); // Kevlar6
gilet7 = CreatePickup(1242, 3,1045.6665,-300.0080,77.3594); // Kevlar7
gilet8 = CreatePickup(1242, 3,1651.3701,-316.3216,36.7115); // Kevlar8
gilet9 = CreatePickup(1242, 3,1896.7166,-112.0837,16.9034); // Kevlar9
gilet10 = CreatePickup(1242, 3,2113.1570,101.6895,34.5332); // Kevlar10
gilet11 = CreatePickup(1242, 3,2162.0518,-102.5171,2.7500); // Kevlar11
gilet12 = CreatePickup(1242, 3,2266.5317,-76.7234,24.5859); // Kevlar12
gilet13 = CreatePickup(1242, 3,1624.1851,15.0045,21.8471); // Kevlar13
gilet14 = CreatePickup(1242, 3,2565.2256,86.5469,31.2111); // Kevlar14
gilet15 = CreatePickup(1242, 3,2324.3569,-3.8492,26.5597); // Kevlar15
gilet16 = CreatePickup(1242, 3,2355.8152,-648.2770,128.0547); // Kevlar16
gilet17 = CreatePickup(1242, 3,2188.5400,-694.9771,56.3157); // Kevlar17
gilet18 = CreatePickup(1242, 3,1705.4987,426.6324,18.9117); // Kevlar18
gilet19 = CreatePickup(1242, 3,1254.0929,354.3783,24.5555); // Kevlar19
gilet20 = CreatePickup(1242, 3,1417.9495,219.8144,19.5618); // Kevlar20
paquetspas12 = CreatePickup(1254, 2, -3998.8572, -2786.0715, -1.4080, 0); // PAQUET SPAS12
paquetfric1 = CreatePickup(1550, 3, 194.5924,-31.3224,-13.1166, 0); // FRIC 1
paquetfric2 = CreatePickup(1550, 2, 131.6553,2446.8269,18.5870, 100); // FRIC 2
paquetpistolets = CreatePickup(1254, 3, 2053.4607,-168.1729,1452.4199, 0); // PAQUET PISTOLETS
pickupgaz = CreatePickup(918, 2, -607.6959, -496.6972, 25.5308, -1); // GAZ NITRO
pickuptuyau = CreatePickup(18633, 3, 554.6950,490.2650,-39.9431, 0); // TUYAU NITRO
return 1;
}
[/spoiler]

Pour le pickup jetpack, le code c'est pour OnPlayerDisconnect & OnPlayerDeath

[spoiler]
Code: (pawno) [Sélectionner]
if(area1[playerid] == 1||area2[playerid] == 1)
{
area1[playerid] = 0;
area2[playerid] = 0;
if(jetpackeur[playerid] == 1)
{
jetpackeur[playerid] = 0;
jetpack = CreatePickup(370, 2, 268.7742,1883.9447,-30.0938, 5);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(area1[i] == 1||area2[i] == 1)
{
SendClientMessage(i, ORANGE, "Voleur déconnecté ! Jetpack remis à sa place !");
}
}
}
}
[/spoiler]

[spoiler]
Code: (pawno) [Sélectionner]
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmd, "/quetebateau") == 0)
{
if(cle1quete[playerid] == 0 && cle2quete[playerid] == 0 && cle3quete[playerid] == 0 && cle4quete[playerid] == 0 && cle5quete[playerid] == 0)
{
pickupcle1quete[playerid] = CreatePickup(1581, 3, -2866.1704,1774.4386,4.5981);
pickupcle2quete[playerid] = CreatePickup(1581, 3, -2830.3623,1835.1381,1203.9778);
pickupviande[playerid] = CreatePickup(2804, 3, -2822.4771,1806.4404,1203.9778);
}
else
{
if(cle1quete[playerid] == 0)
{
pickupcle1quete[playerid] = CreatePickup(1581, 3, -2866.1704,1774.4386,4.5981);
}
if(cle4quete[playerid] == 0)
{
pickupcle2quete[playerid] = CreatePickup(1581, 3, -2830.3623,1835.1381,1203.9778);
}
pickupviande[playerid] = CreatePickup(2804, 3, -2822.4771,1806.4404,1203.9778);
}
return 1;
}
}
[/spoiler]

[spoiler]
Code: (pawno) [Sélectionner]
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_FIRE)
{
if(IsPlayerInRangeOfPoint(playerid, 5.0, 80.7929993,854.8319702,37.3909988))
{
if(cables[playerid] == 0)
{
if(comptetapes[playerid] < 5)
{
comptetapes[playerid] ++;
}
else
{
echelle1[playerid] = CreateDynamicObject(1437,80.7109985,852.3090210,42.9010010,339.9974365,0.0000000,0.0000000); //object(dyn_ladder_2) (3)
echelle2[playerid] = CreateDynamicObject(1437,80.7300034,849.6719971,38.3510017,339.9938965,0.0000000,0.0000000); //object(dyn_ladder_2) (4)
pickupcables[playerid] = CreatePickup(1279, 2, 80.750045776367, 854.34735107422, 47.48482131958, -1);
comptetapes[playerid] = 0;
}
}
}
}
return 1;
}
[/spoiler]

[spoiler]
Code: (pawno) [Sélectionner]
public UpdateTime()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
new Hour, Min;
new string[16];
gettime(Hour, Min);
format(string, sizeof(string), "%02d:%02d", Hour, Min);
SetPlayerTime(i, Hour, Min);
TextDrawSetString(Clock[i], string);
if(Min == 47)
{
if(IsPlayerInRangeOfPoint(i, 20.0, -219.6454, 1403.8811, 27.7734))
{
pickupplan[i] = CreatePickup(3017, 2, -219.6454, 1403.8811, 27.7734, -1); // PLANS NITRO
}
}
if(Min == 48)
{
DestroyPickup(pickupplan[i]);
}
}
return 1;
}
[/spoiler]

Désolé j'ai du faire du découpage dans mon code, alors c'est pas ident :(
Mais chaque bout de code fait pas plus de 20 lignes ou pas beaucoup plus, alors c'est dans le respect des règles et ça devrait aller pour tes pauvres yeux :/
« Modifié: 26 Septembre 2013, 20:03:21 par CarCrasher »

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : Pickups qui se confondent !
« Réponse #5 le: 26 Septembre 2013, 19:47:52 »
Si tu pouvais mettre sous Spoiler tes balises de code ce serait sympa  :smile:, penses à ceux qui ont une connexion en mousse  :biggrin:

Si j'ai bien compris, tu as un / plusieurs pickup qui font l'effet d'un autre pickup ?

  • Tu es sur que tu n'as pas inversé les noms des pickups dans OnPlayerPickUpPickup() ?
  • Tu as déjà eu des erreurs de compilation quand tu as créé ce système ? Si oui, lesquelles ?

Si tu veux vérifier d'où vient le/les problèmes, je te recommande de faire comme ceci:

Code: (pawn) [Sélectionner]
new monpickup1 = CreatePickup();
new monpickup2 = CreatePickup();
new monpickup3 = CreatePickup();
new monpickup4 = CreatePickup();
new monpickup5 = CreatePickup();
new monpickup6 = CreatePickup();

if(pickupid == monpickup1)
{
     SendClientMessage(playerid, color_red, "Pickup 1 franchit !");
}
else if(pickupid == monpickup2)
{
     SendClientMessage(playerid, color_red, "Pickup 2 franchit !");
}
else if(pickupid == monpickup3)
{
     SendClientMessage(playerid, color_red, "Pickup 3 franchit !");
}
else if(pickupid == monpickup4)
{
     SendClientMessage(playerid, color_red, "Pickup 4 franchit !");
}
else if(pickupid == monpickup5)
{
     SendClientMessage(playerid, color_red, "Pickup 5 franchit !");
}
else if(pickupid == monpickup6)
{
     SendClientMessage(playerid, color_red, "Pickup 6 franchit !");
}

Et donc, en jeu tu verras si tu as bien franchit le pickup que tu devais franchir.


Adju ♥
(-_-)



Hors ligne CarCrasher

  • *
  • Tueur en série
  • Messages: 144
    • Voir le profil
Re : Pickups qui se confondent !
« Réponse #6 le: 26 Septembre 2013, 20:01:27 »
En fait, le pickup dont l'action est effectuée par erreur, c'est toujours le même, "cle1quete[playerid]", soit, le premier vérifié dans la callback OnPlayerPickUpPickup, et oui, pour les IDs inversés je suis sûr.

J'ai jamais eu d'erreurs de compilation sur ça hormis des erreurs d'inattention (Oublier ; Ou d'autres trucs dans le genre).

Par contre, si ça peut aider, avant, je n'avais que 21 pickups, les 20 gilets pare-balles, étant là en permanence, et le pickup du JetPack d'un de mes minijeux, et lorsque je prenais le premier gilet pare-balles (Le premier dans la liste de ceux qui spawnent), ça effectuait l'action du pickup jetpack, et pas du tout celle du pickup ramassé, ce qui a renforcé ma théorie que les pickups qui n'ont pas encore été créé sont en cause :/
« Modifié: 26 Septembre 2013, 20:17:35 par CarCrasher »

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : Re : Pickups qui se confondent !
« Réponse #7 le: 26 Septembre 2013, 21:22:56 »
En fait, le pickup dont l'action est effectuée par erreur, c'est toujours le même, "cle1quete[playerid]", soit, le premier vérifié dans la callback OnPlayerPickUpPickup, et oui, pour les IDs inversés je suis sûr.

Dans ce cas vérifie if(pickupid == cle1quete[playerid]) et celui du Jetpack. Ajoute un simple "print" dans la condition que j'ai cité juste avant.

Code: (pawn) [Sélectionner]
if(pickupid == cle1quete[playerid])
{
     print("tu as prit le pickup bidule !");
}
else if(pickupid == jetpack[playerid])
{
     print("pickup jetpack");
}

Et donc, si tu reçois (dans ta console) le message du jetpack alors que tu as franchit cle1quete c'est que tu as inversé.  :grin:


Adju ♥
(-_-)



Hors ligne CarCrasher

  • *
  • Tueur en série
  • Messages: 144
    • Voir le profil
Re : Pickups qui se confondent !
« Réponse #8 le: 26 Septembre 2013, 22:53:22 »
Eh bien, j'ai récupéré le pickup cle1quete, et il exécute bien sa besogne  :biggrin:
Cependant, lorsqu'après je récupère le pickup jetpack, ça ne fait rien du tout.  :sad:                                                                         

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : Pickups qui se confondent !
« Réponse #9 le: 27 Septembre 2013, 15:06:32 »
Tu peux me donner le code qui concerne le JetPack s'il te plaît, petit fainéantise de chercher  :happy:


Adju ♥
(-_-)



Hors ligne CarCrasher

  • *
  • Tueur en série
  • Messages: 144
    • Voir le profil
Re : Pickups qui se confondent !
« Réponse #10 le: 27 Septembre 2013, 17:13:25 »
Quelle partie ? :/

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : Pickups qui se confondent !
« Réponse #11 le: 27 Septembre 2013, 18:16:41 »
Quand il entre dans le pickup


Adju ♥
(-_-)



Hors ligne CarCrasher

  • *
  • Tueur en série
  • Messages: 144
    • Voir le profil
Re : Pickups qui se confondent !
« Réponse #12 le: 27 Septembre 2013, 18:46:51 »
Code: (pawno) [Sélectionner]
else if(pickupid == jetpack)
                    {
                                DestroyPickup(jetpack);
                                MoveDynamicObject(jetdoor, 268.6600037, 1874.8800049, 16.0660000, 2);
                                jetpackeur[playerid] = 1;
                                SetPlayerSpecialAction(playerid,2);
                                SetPlayerCheckpoint(playerid, -164.9927,2257.5029,29.1074, 2);
                                patriot1 = CreateVehicle(470,193.6896,1915.8914,17.6337,179.5064,43,0,60);
                                patriot2 = CreateVehicle(470,230.3378,1877.4802,17.6368,0.0000,43,0,60);
                                patriot3 = CreateVehicle(470,197.5331,1877.5741,17.6381,357.8704,43,0,60);
                                patriot4 = CreateVehicle(470,204.9827,1877.4537,17.6381,0.1854,43,0,60);
                                patriot5 = CreateVehicle(470,202.4198,1915.8859,17.6337,180.8017,43,0,60);
                                patriot6 = CreateVehicle(470,211.6357,1916.0370,17.6359,179.0975,43,0,60);
                                patriot7 = CreateVehicle(470,220.7590,1915.8881,17.6386,182.0833,43,0,60);
                                SetVehicleVirtualWorld(patriot1, 5);
                                SetVehicleVirtualWorld(patriot2, 5);
                                SetVehicleVirtualWorld(patriot3, 5);
                                SetVehicleVirtualWorld(patriot4, 5);
                                SetVehicleVirtualWorld(patriot5, 5);
                                SetVehicleVirtualWorld(patriot6, 5);
                                SetVehicleVirtualWorld(patriot7, 5);
                                for(new i = 0; i < MAX_PLAYERS; i++)
                                        {
                                                if(area2[i] == 1)
                                                        {
                                                                SetPlayerWorldBounds(i, 9999.9999, -9999.9999, 9999.9999, -9999.9999);
                                                                SendClientMessage(i, ORANGE, "Protégez le voleur du jet-pack");
                                                        }
                                                if(area1[i] == 1)
                                                        {
                                                                 SetPlayerWorldBounds(i, 9999.9999, -9999.9999, 9999.9999, -9999.9999);
                                                                 SendClientMessage(i, ORANGE, "Tir à volonté !! Abattez le voleur par tous les moyens !");
                                                        }
                                        }
                }

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : Pickups qui se confondent !
« Réponse #13 le: 27 Septembre 2013, 18:53:21 »
Le principe c'est de lui donner un jetpack, non?
T'es sur que tu as affiché le pickup aussi?


Adju ♥
(-_-)



Hors ligne CarCrasher

  • *
  • Tueur en série
  • Messages: 144
    • Voir le profil
Re : Pickups qui se confondent !
« Réponse #14 le: 27 Septembre 2013, 19:32:39 »
Oui, il s'affiche, mais donc en fait, le pickup donne un jetpack, et fait apparaitre le checkpoint pour la fin du minijeu, enfin oui, il s'affiche, je vois vraiment pas d'où vient le bug, j'ai vraiment cherché, c'est pour ça que je sais pas du tout quoi faire :/