Jump to content

ATME (1.46) : Stack getCount()


CougarFFW04

Recommended Posts

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

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
Link to comment
Share on other sites

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

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

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

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

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

  • Recently Browsing   0 members

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