Aspettare che un gruppo arrivi in un'area

« Older   Newer »
 
  Share  
.
  1.     +1   -1
     
    .
    Avatar

    Apprendista
    "

    Group
    Member
    Posts
    111
    Reputation
    +5

    Status
    Offline
    Salve,
    c'è uno script per aspettare che un gruppo arrivi in un'area? A me
    CODICE
    WaitUnitsInArea(unità.obj,"area",-1);
    non funziona con i gruppi.
     
    .
  2.     +1   -1
     
    .
    Avatar

    Ricky

    Group
    Eroi
    Posts
    4,930
    Reputation
    +197
    Location
    Tourin (Italy)

    Status
    Anonymous
    WaitUnitsInArea(Gruppo, "area", -1); funziona con i gruppi. Che problema ti da?
     
    .
  3.     +1   -1
     
    .
    Avatar

    Apprendista
    "

    Group
    Member
    Posts
    111
    Reputation
    +5

    Status
    Offline
    Ok, ora funziona, io anche con il gruppo mettevo .obj, ma mi dava errore. Ho provato a non metterlo e ora dovrebbe funzionare.
     
    .
  4.     +1   -1
     
    .
    Avatar

    Apprendista
    "

    Group
    Member
    Posts
    111
    Reputation
    +5

    Status
    Offline
    Ma in questo modo, per far andare avanti la sequenza, devono stare tutti in una certa area oppure basta che uno del gruppo arrivi nell'area?
     
    .
  5.     +1   -1
     
    .
    Avatar

    Ricky

    Group
    Eroi
    Posts
    4,930
    Reputation
    +197
    Location
    Tourin (Italy)

    Status
    Anonymous
    Mi pare di sì.

    Se te ne basta solo una prova così
    CODE
    bool bWaitUnitInArea;

    /* Attende che ALMENO UNA unita' appartenente "Gruppo" sia nell'area "Area" */
    bWaitUnitInArea = true;
    while(bWaitUnitInArea)
    {
           int counter = 0;
           ObjList olUnits;

           olUnits = ClassPlayerAreaObjs(cUnit, 1, "Area").GetObjList();
           for(counter = 0; counter < olUnits.count(); counter += 1)
           {
                   Unit u;
                   u = olUnits[counter].AsUnit();
                   if(u.IsValid() == true && u.IsAlive() == true && u.IsInGroup("Gruppo") == true)
                   {
                           bWaitUnitInArea = false;
                           break;
                   }
           }        
           Sleep(1000);
    }

    //Altre istruzioni post attesa.

    Penso funzioni, prova.
    Se deve esserci unvece più di un'unità, bisogna fare qualche altra modifica :)
    Fammi sapere :troll:
    N.B.: Come ti dissi in un'altro topic, bool bWaitUnitInArea; fa scritto all'inizio della sequenza.

    In
    CODE
    olUnits = ClassPlayerAreaObjs(cUnit, 1, "Area").GetObjList();

    Al solito, al posto di Area devi mettere il nome che hai dato alla tua area e analogamente per Gruppo
    1 è il numero del giocatore a cui devono appartenenre le unità. Se devono essre di un altro giocatore cambia il numero, se possono appartenenre a più giocatori diversi, fammelo sapere.
    Anche in
    CODE
    u.IsInGroup("Gruppo")

    Al posto di Gruppo devi mettere il nome che hai dato al gruppo.
     
    .
  6.     +1   -1
     
    .
    Avatar

    Apprendista
    "

    Group
    Member
    Posts
    111
    Reputation
    +5

    Status
    Offline
    Funziona, non so che arte oscura è questa, ma funziona😅. Per quel che serve a me va bene come è scritto qua. In pratica mi basta la prima unità, non me ne serve che ce ne sia per forza più di una. Appena arriva la prima può andare avanti.
    Grazie mille.
     
    .
  7.     +1   -1
     
    .
    Avatar

    Ricky

    Group
    Eroi
    Posts
    4,930
    Reputation
    +197
    Location
    Tourin (Italy)

    Status
    Anonymous
    Prego! :D
    Chiudo! :closed:
     
    .
6 replies since 11/6/2020, 19:01   83 views
  Share  
.