CougarFFW04 Posted January 26, 2019 Share Posted January 26, 2019 Hello, J'ai une erreur suite à l'utilisation des Stack. Que retourne getCount() si on a encore rien mis dans le stack ? Voici une extarction du code impliqué. Je pense que le probléme vient de ce qui est retourné quand un stack est vide car je fait la même manip sur un stack non vide et je n'ai pas de probléme dans ce cas la. local blueSEADStack = ATME.C_Stack() ... seadStack = blueSEADStack ... if seadStack:getCount() >= 1 and math.random(0,100) < probSead then seadFlight = seadStack:extract("HEAD") end Merci Link to comment Share on other sites More sharing options...
sunski34 Posted January 26, 2019 Share Posted January 26, 2019 (edited) Je viens de vérifier le code, getCount retourne 0 quand le stack est vide. Le nombre d'items est initialisé à 0 lors de la création. Je l'utilise beaucoup en interne ATME sans soucis. Edited January 26, 2019 by sunski34 Link to comment Share on other sites More sharing options...
CougarFFW04 Posted January 26, 2019 Author Share Posted January 26, 2019 Donc je ne comprends pas mon plantage... Link to comment Share on other sites More sharing options...
sunski34 Posted January 26, 2019 Share Posted January 26, 2019 envoie moi le code Link to comment Share on other sites More sharing options...
CougarFFW04 Posted January 26, 2019 Author Share Posted January 26, 2019 (edited) Voici une partie du code : local blueSEADStack = ATME.C_Stack() local blueESCStack = ATME.C_Stack() ... local escStack, escGroup, nEscPlanes = 0 local seadStack, seadGroup, nSeadPlanes = 0 local escFlight, seadFlight = nil, nil -- BLUE coalition if _Group:getCoalitionName() == "BLUE" then planesAirborne,fracAirborne,allPlanes = bluePlanesAirborne,bluefracAirborne,blueAllPlanes seadStack, escStack = blueSEADStack, blueESCStack -- compute sead probability if seadStack:getCount() >= 1 and math.random(0,100) < probSead then seadFlight = seadStack:extract("HEAD") end -- compute esco probability if escStack:getCount() >= 1 and math.random(0,100) < probEsco then escFlight = escStack:extract("HEAD") end -- RED coalition elseif _Group:getCoalitionName() == "RED" then -- !!!!!!!!!!!!!!!!!COPY FROM BLUE WHEN OK end if seadFlight ~= nil then nSeadPlanes = ATME.C_Group.getByName(seadFlight):getNbUnits() end if escFlight ~= nil then nEscPlanes = ATME.C_Group.getByName(escFlight):getNbUnits() end local nLead = planesAirborne + groupDatas.nbunits ==>> local nLeadSead = nLead + nSeadPlanes local nLeadEsc = nLead + nEscPlanes Ca marche nickel pour les vols escorte car le Stack n'est pas vide Et l'alogo pour Sead est vraiment calqué sur escorte. Seul différence le stack escorte n'est pas vide mais le stack sead l'est Mais pour les vols Sead, comme je n'en ai aps mis le stack est vide et j'ai un plantage L'erreur est sur nSeadPlanes qui devrait etre a 0 selon toute logique (sauf erreur de ma part) mais ca ne semble pas etre le cas. nLead est OK j'ai vérifié Si quand stack est vide getCount renvoie 0 alors nSeadPlanes vaut 0 (initialisation) or j'ai un plantage a la ligne ==> pourtant comme j'ai dit nLead est OK (vérifié) Perplexec.... Edited January 26, 2019 by CougarFFW04 Link to comment Share on other sites More sharing options...
sunski34 Posted January 26, 2019 Share Posted January 26, 2019 (edited) tu es sur que le seadStack (ou le blueSEADStack) est initialisé correctement dans le cas SEAD ? Tu peux verifier le contenu en log avec thisModule:outputVar Edited January 26, 2019 by sunski34 Link to comment Share on other sites More sharing options...
sunski34 Posted January 26, 2019 Share Posted January 26, 2019 Le code de la classe C_Stack est simple et classique. Je l'ai testé avec un interpréteur lua indépendant avec pas mal de cas. Si tu récupères le getCount et que tu l'affiches par un thisModule:output, tu auras la valeur affichée. Je ne vois pas ce qui pourrait engendrer un soucis là. Mais bon... Link to comment Share on other sites More sharing options...
CougarFFW04 Posted January 26, 2019 Author Share Posted January 26, 2019 Pour info : si je rajoute un vol dans le stack SEAD plus de probléme... Link to comment Share on other sites More sharing options...
CougarFFW04 Posted January 26, 2019 Author Share Posted January 26, 2019 tu es sur que le seadStack (ou le blueSEADStack) est initialisé correctement dans le cas SEAD ?C'est peut-etre la le probléme... j'ai juste local blueSEADStack = ATME.C_Stack() mais je n'ai aucun push car pas d'avion en Sead... Dois-je rajouter autre chose ? Link to comment Share on other sites More sharing options...
sunski34 Posted January 26, 2019 Share Posted January 26, 2019 Non... Le constructeur retourne le stack et une variable interne locale nbItems est initialisée à 0 dans ce constructeur. Essaie dejà d'afficher à l'écran le getCount.... pour voir... Par acquis de conscience je vais créer une mini mission pour voir mais là je ne vois pas ce qui pourrait poser pb. Link to comment Share on other sites More sharing options...
sunski34 Posted January 26, 2019 Share Posted January 26, 2019 (edited) RAS avec mon petit test, deux stacks, copie comme toi en variable locale, et une qui s'incrémente avec des strings. Exemple joint (je viens de remettre la 147 à l'intérieur car c'était une version 148WIP) dans l'exemple antérieurATME_Stack.luaATME_Stack.miz Edited January 26, 2019 by sunski34 Link to comment Share on other sites More sharing options...
CougarFFW04 Posted January 26, 2019 Author Share Posted January 26, 2019 OK. Bon pour l'instant c'est assez mystérieux... Sans changement de code : - rien dans le stack => plantage - un push dans le stack => ok Donc pour l'instant je vais continuer sans stack vide et je verrais plus tard. Merci en tout cas. ++ Link to comment Share on other sites More sharing options...
sunski34 Posted January 26, 2019 Share Posted January 26, 2019 Il doit y avoir un soucis collatéral je pense.... Mais je ne pense pas que celà vienne du getCount() Link to comment Share on other sites More sharing options...
CougarFFW04 Posted January 26, 2019 Author Share Posted January 26, 2019 Je n suis pas passé en 1.47 Je me demande si ca ne pourrait pas venir du bug du respawn avec le onCreateGroupHandler Car j'ai quand meme des plantage avec un vol Sead mais c'est non reproductible. Or les stack sont remplis lors de la création des vols et tous sont crées en même temps... Bref je pense que la première chose a faire est de passer en 1.47... Je te dirais. Link to comment Share on other sites More sharing options...
sunski34 Posted January 26, 2019 Share Posted January 26, 2019 Ok... Je ne suis pas sur que celà change grand chose, mais bon. Peut etre si tu respawn. Link to comment Share on other sites More sharing options...
CougarFFW04 Posted January 26, 2019 Author Share Posted January 26, 2019 (edited) Non mais la je suis trés perplexe... visisblement il y a une... dans le potage... De mon coté surement... Mais comme c'est une erreur ATME puis-je t'envoyer code total + mission a un email privé ? Car maintenant j'ai une erreur ATME sur une ligne de code lua DCS.... C'est pas trop touffu quand même et j'ai commenté pas mal de choses pour isoler le probléme mais la je ne comprend vraiment pas ce qui plante. Et les erreurs ATME ca ne m'aide pas beaucoup. Ca donne vraiment l'impression que l'erreur n'est pas ou je la cherche... Si tu peux regarder c'est cool. Je suis très perplexe... Edited January 26, 2019 by CougarFFW04 Link to comment Share on other sites More sharing options...
sunski34 Posted January 27, 2019 Share Posted January 27, 2019 c'est fait, je t'ai envoyé un MP. Link to comment Share on other sites More sharing options...
CougarFFW04 Posted January 27, 2019 Author Share Posted January 27, 2019 Merci j'ai vu. Je suis en train de te faire un petit bilan du code pour que tu comprennes le traitement et je t'envois ca d'ici quelques minutes. ++ Link to comment Share on other sites More sharing options...
CougarFFW04 Posted January 27, 2019 Author Share Posted January 27, 2019 (edited) C'est dans la boite, Merci d'avance a vous deux J'attends votre retour. ++ Edit : Bon je crois que j'ai identifié le probléme. Un truc a la con sur une déclaration Lua. Pas du tout ou je cherchais et pas lié a ATME à la base Edited January 27, 2019 by CougarFFW04 Link to comment Share on other sites More sharing options...
CougarFFW04 Posted January 27, 2019 Author Share Posted January 27, 2019 (edited) Hello, Donc c'était bien un problème a la $^% Je peux donc continuer... Désolé pour le dérangement... Mais partez pas je vais surement avoir d'autres problèmes :) Edit : et ben voila c'est débogué :) La dynaMo est repartie pour la suite des fonctionnalités :pilotfly: Edited January 27, 2019 by CougarFFW04 Link to comment Share on other sites More sharing options...
sunski34 Posted January 27, 2019 Share Posted January 27, 2019 Salut, je vois que tu as vu mon mail. Oui je viens de tester, tu avais bien un soucis d'init dans ton code, je viens de tester dans DCS et j'ai bien nSeadPlanes à nil. Donc oui un pb à la .... en ligne 143 Link to comment Share on other sites More sharing options...
Recommended Posts