Jump to content

Recommended Posts

Posted

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

Posted (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 by sunski34
Posted (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 by CougarFFW04
Posted (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 by sunski34
Posted

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...

Posted
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 ?

Posted

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.

Posted (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érieur

ATME_Stack.lua

ATME_Stack.miz

Edited by sunski34
Posted

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.

 

 

++

Posted

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.

Posted (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 by CougarFFW04
Posted (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 by CougarFFW04
Posted (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 by CougarFFW04
Posted

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

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...