IMPERIUM TOTAL WAR

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

    Apprendista

    Group
    Princeps
    Posts
    147
    Reputation
    +12

    Status
    Offline
    Salve ragazzi sono resuscitato dal mondo dei morti... Oltre a BRITANNIA la nuona avventura che ho messo a disposizione, ce n'è un'altra che ho in cantiere da parecchio tempo. Veniamo al dunque, mi servirebbero 2 principali script per chi riesce a realizzarmeli, per poter finalmente mettere la mappa disponibile :(

    SCRIPT NUMERO 1:
    La mappa è composta da 8 giocatori, all'inizio vorrei che il giocatore potesse scegliere quali popoli utilizzare, ovvero, potesse scegliere la sua fazione per poi cominciare la partita.

    SCRIPT NUMERO 2: (IL PIU' A MIO AVVISO COMPLESSO)
    Ogni circa 30/35 minuti dovrebbero spawnare delle "invasioni" in 2 principali punti della mappa.
    Il problema è che tali invasioni dovranno avere dei comportamenti ben precisi, Mi spiego:

    - Devono attaccare qualunque giocatore indifferentemente dalla fazione, puntando a conquistare tutti gli insediamenti e fortezze delle mappa ( Se ci riescono :P ). A questo punto di aprono 2 scenari:
    1) Se le invasioni conquistano una fortezza, poi non devono diventare "passive", anzi devono cominciare a giocare come la IA precedente ( ed in quel caso il countdown del nuovo respawn delle invasioni cessa, ovvero se qualche fortezza è sotto il controllo dell'invasione non vi saranno nuove invasioni fin quando quella fortezza non è di diverso giocatore)
    2) Se tutte le forze delle invasioni vengono neutralizzate parte un nuovo countdown e dopo i 30/35 minuti successivi, appariranno le nuove invasioni.

    Per fare un esempio in "imperium la guerra gallica" c'è una missione dove larax conquista degli insediamenti poi si pente di aver aiutato cesare ed allora arrivano tutte legioni romane che cominciano ad arare tutta la mappa, e se le uccidi ne compaiono delle altre etc etc.. Una cosa di questo genere ma ad intervalli e con comportamenti ben precisi come scritto sopra...

    non so se tale script è possibile, ma se riuscite a realizzarlo metterò subito disponibile questa nuova mappa :)

    Un'altra cosa molto importante da sapere!!

    Una cosa che non mi spiego è come rendere la IA difficile, cioè per far si che ogni giocatore possa scegliere la sua fazione devo mettere tutte le fazioni come giocabili da "Entrambi", creando poi una sequenza con IAStart(x,CHAOTIC,2); in maniera che i "non-giocatori" siano sotto il controllo del computer. Basta una sequenza con una stringa per ogni popolo, o devo usare qualche ciclo?

    Edited by x[CLOUD]x - 4/8/2018, 14:06
     
    .
  2.     +1   -1
     
    .
    Avatar

    Guerriero

    Group
    Eroi
    Posts
    2,161
    Reputation
    +155
    Location
    Sardegna

    Status
    Anonymous
    Per quanto riguarda lo script numero 1, potresti procedere in questo modo: tutte le fortezze sono del giocatore 16 e, a seconda del popolo scelto, tramite una conversazione o qualsiasi altra cosa tu voglia mettere, la fortezza della nazione selezionata diventa del giocatore 1, mentre le altre diventano del giocatore 2, 3, 4 e così via. Dimmi cosa ne pensi.
     
    .
  3.     +1   -1
     
    .
    Avatar

    Guerriero

    Group
    Nobili
    Posts
    1,883
    Reputation
    +70
    Location
    Casapulla

    Status
    Offline
    Infame! Mi hai rubato l'idea! Io ti denuncio! :angry:
     
    .
  4.     +1   -1
     
    .
    Avatar

    Apprendista

    Group
    Princeps
    Posts
    147
    Reputation
    +12

    Status
    Offline
    CITAZIONE
    Per quanto riguarda lo script numero 1, potresti procedere in questo modo: tutte le fortezze sono del giocatore 16 e, a seconda del popolo scelto, tramite una conversazione o qualsiasi altra cosa tu voglia mettere, la fortezza della nazione selezionata diventa del giocatore 1, mentre le altre diventano del giocatore 2, 3, 4 e così via. Dimmi cosa ne pensi.

    PERFETTO!! Naturalmente se io decido di mettere dei soldati a difesa dei fori, anche loro debbono diventare del suddetto giocatore ... ah e dovrebbe cambiare anche la diplomazia -.-

    Edited by x[CLOUD]x - 6/8/2018, 00:01
     
    .
  5.     +1   -1
     
    .
    Avatar

    Apprendista
    "

    Group
    Member
    Posts
    102
    Reputation
    +2
    Location
    Calabria

    Status
    Offline
    CITAZIONE (x[CLOUD]x @ 5/8/2018, 18:40) 
    CITAZIONE
    Per quanto riguarda lo script numero 1, potresti procedere in questo modo: tutte le fortezze sono del giocatore 16 e, a seconda del popolo scelto, tramite una conversazione o qualsiasi altra cosa tu voglia mettere, la fortezza della nazione selezionata diventa del giocatore 1, mentre le altre diventano del giocatore 2, 3, 4 e così via. Dimmi cosa ne pensi.

    PERFETTO!! Naturalmente se io decido di mettere dei soldati a difesa dei fori, anche loro debbono diventare del suddetto giocatore ... ah e dovrebbe cambiare anche la diplomazia -.-

    Chiaramente lo script della scelta va implementato in una Conversazione e, a meno che tu non voglia usufruire della funzionalità di script di queste ultime, dovrai fare tante sequenze quanti i giocatori presenti e dovrai avviarle a seconda delle scelte che fa chi gioca.
    Per il secondo script, quello delle IA dinamiche, ti dico che forse è un po'impossibile perché dovresti usare degli AIHelper ma quelli vanno solo in determinate direzioni per fare le solite cose (conquistare, difendere, difendere l'area...); un modo per implementare quello che vorresti fare forse c'è...

    Potresti lavorare con tutti gli edifici della mappa e poi fare un sorteggio per vedere quale di essi potrebbe essere attaccato dalle invasioni. Dopodiché le truppe spawnano ed iniziano l'attacco verso quella destinazione/giocatore/fortezza.
    Poi se riescono a conquistare una fortezza dovresti disattivare la sequenza di countdown e respawn ed avviare l'IA del giocatore virtuale che "rappresenta" le invasioni.


    Spero di esserti stato utile.. 😊
     
    .
  6.     +1   -1
     
    .
    Avatar

    Guerriero

    Group
    Eroi
    Posts
    2,161
    Reputation
    +155
    Location
    Sardegna

    Status
    Anonymous
    CITAZIONE (x[CLOUD]x @ 5/8/2018, 18:40) 
    CITAZIONE
    Per quanto riguarda lo script numero 1, potresti procedere in questo modo: tutte le fortezze sono del giocatore 16 e, a seconda del popolo scelto, tramite una conversazione o qualsiasi altra cosa tu voglia mettere, la fortezza della nazione selezionata diventa del giocatore 1, mentre le altre diventano del giocatore 2, 3, 4 e così via. Dimmi cosa ne pensi.

    PERFETTO!! Naturalmente se io decido di mettere dei soldati a difesa dei fori, anche loro debbono diventare del suddetto giocatore ... ah e dovrebbe cambiare anche la diplomazia -.-

    Dunque ora ti rispondo a questo punto, poi, appena ho un po' di tempo libero penso alla seconda sequenza.

    Per evitare di dover scrivere enormi blocchi di codice in ciascuna frase della conversazione, ti conviene utilizzare una variabile d'ambiente. Quindi, per farti un esempio pratico, dovresti formare una conversazione di questo tipo:
    [1]
    Frase: "Con quale civiltà desideri giocare?"
    Tipo di seguito: Scegli;
    Seguiti: 2;3;4;5;6;7;8;9
    [2]
    Frase: Roma Repubblicana;
    Tipo di seguito: Fine;
    Azione dello script: EnvWriteInt("Civiltas",0);
    [3]
    Frase: Roma Imperiale;
    Tipo di seguito: Fine;
    Azione dello script: EnvWriteInt("Civiltas",1);
    [4]
    Frase: Gallia;
    Tipo di seguito: Fine;
    Azione dello script: EnvWriteInt("Civiltas",2);
    [5]
    Frase: Cartagine;
    Tipo di seguito: Fine;
    Azione dello script: EnvWriteInt("Civiltas",3);
    [6]
    Frase: Iberia;
    Tipo di seguito: Fine;
    Azione dello script: EnvWriteInt("Civiltas",4);
    [7]
    Frase: Germania;
    Tipo di seguito: Fine;
    Azione dello script: EnvWriteInt("Civiltas",5);
    [8]
    Frase: Britannia;
    Tipo di seguito: Fine;
    Azione dello script: EnvWriteInt("Civiltas",6);
    [9]
    Frase: Egitto;
    Tipo di seguito: Fine;
    Azione dello script: EnvWriteInt("Civiltas",7);


    Dopodiché, ti occupi di scrivere la relativa sequenza (di cui non ho scritto tutti i vari cambi di giocatore delle fortezze/gruppi sia per mancanza di informazioni, sia perché tanto il procedimento è un copia-incolla continuo), che dovrà avere l'autoesecuzione attiva:
    CODICE
    RunConv("SceltaNazione");
    //ROMA REPUBBLICANA
    if(EnvReadInt("Civiltas")==0){
     NOMESTRUTTURA.SetPlayer(1);
     NOMESTRUTTURA.SetPlayer(2);
     NOMEGRUPPO.SetPlayer(1);
     NOMEGRUPPO.SetPlayer(2);
     DiplCeaseFire(1,2,true);
     DiplCeaseFire(2,1,true);
    }
    //ROMA IMPERIALE
    if(EnvReadInt("Civiltas")==1){
     NOMESTRUTTURA.SetPlayer(1);
     NOMESTRUTTURA.SetPlayer(2);
     NOMEGRUPPO.SetPlayer(1);
     NOMEGRUPPO.SetPlayer(2);
     DiplCeaseFire(1,2,true);
     DiplCeaseFire(2,1,true);
    }
    //Continua tu con il resto del codice, modificando di volta in volta i parametri quando necessario.
     
    .
  7.     +1   -1
     
    .
    Avatar

    Guerriero

    Group
    Nobili
    Posts
    1,883
    Reputation
    +70
    Location
    Casapulla

    Status
    Offline
    CITAZIONE (TheMaster0017 @ 7/8/2018, 12:25) 
    CITAZIONE (x[CLOUD]x @ 5/8/2018, 18:40) 
    PERFETTO!! Naturalmente se io decido di mettere dei soldati a difesa dei fori, anche loro debbono diventare del suddetto giocatore ... ah e dovrebbe cambiare anche la diplomazia -.-

    Dunque ora ti rispondo a questo punto, poi, appena ho un po' di tempo libero penso alla seconda sequenza.

    Per evitare di dover scrivere enormi blocchi di codice in ciascuna frase della conversazione, ti conviene utilizzare una variabile d'ambiente. Quindi, per farti un esempio pratico, dovresti formare una conversazione di questo tipo:
    [1]
    Frase: "Con quale civiltà desideri giocare?"
    Tipo di seguito: Scegli;
    Seguiti: 2;3;4;5;6;7;8;9
    [2]
    Frase: Roma Repubblicana;
    Tipo di seguito: Fine;
    Azione dello script: EnvWriteInt("Civiltas",0);
    [3]
    Frase: Roma Imperiale;
    Tipo di seguito: Fine;
    Azione dello script: EnvWriteInt("Civiltas",1);
    [4]
    Frase: Gallia;
    Tipo di seguito: Fine;
    Azione dello script: EnvWriteInt("Civiltas",2);
    [5]
    Frase: Cartagine;
    Tipo di seguito: Fine;
    Azione dello script: EnvWriteInt("Civiltas",3);
    [6]
    Frase: Iberia;
    Tipo di seguito: Fine;
    Azione dello script: EnvWriteInt("Civiltas",4);
    [7]
    Frase: Germania;
    Tipo di seguito: Fine;
    Azione dello script: EnvWriteInt("Civiltas",5);
    [8]
    Frase: Britannia;
    Tipo di seguito: Fine;
    Azione dello script: EnvWriteInt("Civiltas",6);
    [9]
    Frase: Egitto;
    Tipo di seguito: Fine;
    Azione dello script: EnvWriteInt("Civiltas",7);


    Dopodiché, ti occupi di scrivere la relativa sequenza (di cui non ho scritto tutti i vari cambi di giocatore delle fortezze/gruppi sia per mancanza di informazioni, sia perché tanto il procedimento è un copia-incolla continuo), che dovrà avere l'autoesecuzione attiva:
    CODICE
    RunConv("SceltaNazione");
    //ROMA REPUBBLICANA
    if(EnvReadInt("Civiltas")==0){
     NOMESTRUTTURA.SetPlayer(1);
     NOMESTRUTTURA.SetPlayer(2);
     NOMEGRUPPO.SetPlayer(1);
     NOMEGRUPPO.SetPlayer(2);
     DiplCeaseFire(1,2,true);
     DiplCeaseFire(2,1,true);
    }
    //ROMA IMPERIALE
    if(EnvReadInt("Civiltas")==1){
     NOMESTRUTTURA.SetPlayer(1);
     NOMESTRUTTURA.SetPlayer(2);
     NOMEGRUPPO.SetPlayer(1);
     NOMEGRUPPO.SetPlayer(2);
     DiplCeaseFire(1,2,true);
     DiplCeaseFire(2,1,true);
    }
    //Continua tu con il resto del codice, modificando di volta in volta i parametri quando necessario.

    In effetti avevo proprio io queste idee. Non a caso ho fatto tutte quelle unificazioni l'anno scorso.
    Mancano però i bonus per fazione. Cosa decidiamo di mettere? O vogliamo fare senza bonus?
     
    .
  8.     +1   -1
     
    .
    Avatar

    Apprendista

    Group
    Princeps
    Posts
    147
    Reputation
    +12

    Status
    Offline
    Grazie ragazzi ora manca solo lo script invasion ed è pronta :) il bello è che se lo script funziona ( se lo fa master molto probabile di si ;) ) lo posso integrare anche in un'altra avventura cosi al posto di una ne posto 2 :D
     
    .
  9.     +1   -1
     
    .
    Avatar

    Guerriero

    Group
    Eroi
    Posts
    2,161
    Reputation
    +155
    Location
    Sardegna

    Status
    Anonymous
    Dopo un po' di tempo libero, ho scritto il codice relativo al punto 2. Poiché l'ho fatto in poco tempo, potrebbe darsi che ci siano alcuni errori di forma o di effettività.
    CODICE
    int thisPlayer, attackDelay;

    thisPlayer=5; //Modifica tale valore a seconda del player a cui stai impostando la sequenza
    attackDelay=1800000; //Modifica tale valore a tuo piacimento in base al ritardo tra un'ondata e l'altra

    while(true){
           int i,target;

           target=rand(8)+1;
           //Se il gruppo non esiste viene rigenerato
           if(GRUPPOASSALTO.count==0){
                   SpawnGroup(GRUPPOASSALTO);
                   Sleep(1000);
           }

           //Se il gruppo conta più di un elemento vengono avviati gli assalti
           else{
                   int randTarget;
                   ObjList EnemyBuildings;
                   
                   EnemyBuildings=ClassPlayerObjs("Building",target).GetObjList();

                   while(EnemyBuildings.count>0 && GRUPPOASSALTO.count>0){
                           EnemyBuildings=ClassPlayerObjs("Building",target).GetObjList();
                           randTarget=rand(EnemyBuildings.count);
                           while(EnemyBuildings[randTarget].player!=thisPlayer && GRUPPOASSALTO.count>0){
                                   if(!IsAIHelperRunning("Attacking")){
                                           RunAIHelper("Attacking","siege","NOMEGRUPPO",EnemyBuildings[randTarget].name);
                                   }
                                   Sleep(1000);
                           }
                           StopAIHelper("Attacking");
                           Sleep(1000);
                   }
                   Sleep(1000);        
           }
           Sleep(attackDelay);
    }


    Edited by TheMaster0017 - 11/8/2018, 22:00
     
    .
  10.     +1   -1
     
    .
    Avatar

    Apprendista

    Group
    Princeps
    Posts
    147
    Reputation
    +12

    Status
    Offline
    CITAZIONE
    int thisPlayer, attackDelay;

    thisPlayer=5; //Modifica tale valore a seconda del player a cui stai impostando la sequenza
    attackDelay=1800000; //Modifica tale valore a tuo piacimento in base al ritardo tra un'ondata e l'altra

    while(true){
    int i,target;

    //Rimozione degli alleati e del giocatore attaccante dai possibili bersagli
    for(i=0;i<8;i=i+1){
    if(enemies[i+1]!=thisPlayer && DiplGetCeaseFire(thisPlayer,i+1)==false){
    target=i+1;
    }
    Sleep(1);
    }

    //Se il gruppo non esiste viene rigenerato
    if(GRUPPOASSALTO.count==0){
    SpawnGroup(GRUPPOASSALTO);
    }

    //Se il gruppo conta più di un elemento vengono avviati gli assalti
    else{
    int randTarget;
    ObjList EnemyBuildings;

    EnemyBuildings=ClassPlayerObjs("Building",target).GetObjList();

    while(EnemyBuildings.count>0 && GRUPPOASSALTO.count>0){
    EnemyBuildings=ClassPlayerObjs("Building",target).GetObjList();
    randTarget=rand(EnemyBuildings.count);
    while(EnemyBuildings[randTarget].player!=thisPlayer && GRUPPOASSALTO.count>0){
    if(!IsAIHelperRunning("Attacking")){
    RunAIHelper("Attacking","siege","NOMEGRUPPO",EnemyBuildings[randTarget].name);
    }
    Sleep(1000);
    }
    StopAIHelper("Attacking");
    Sleep(1000);
    }
    Sleep(1000);
    }
    Sleep(attackDelay);
    }

    Mi dice che non esiste alcuna funzione per "enemies" inoltre io a thisplayer ho messo 14 che è il giocatore che dovrà fare da ondata.. ma non succede nulla :(
     
    .
  11.     +1   -1
     
    .
    Avatar

    Guerriero

    Group
    Eroi
    Posts
    2,161
    Reputation
    +155
    Location
    Sardegna

    Status
    Anonymous
    CITAZIONE (x[CLOUD]x @ 11/8/2018, 19:59) 
    Mi dice che non esiste alcuna funzione per "enemies" inoltre io a thisplayer ho messo 14 che è il giocatore che dovrà fare da ondata.. ma non succede nulla :(

    Non sapevo fosse il 14.
    Perciò ho modificato il post precedente. Dimmi se c'è qualcosa che non funziona.
     
    .
  12.     +1   -1
     
    .
    Avatar

    Apprendista

    Group
    Princeps
    Posts
    147
    Reputation
    +12

    Status
    Offline
    ok ora provo :)
    ps sono in discord
     
    .
  13.     +1   -1
     
    .
    Avatar

    Guerriero

    Group
    Eroi
    Posts
    2,161
    Reputation
    +155
    Location
    Sardegna

    Status
    Anonymous
    Beh, alla fine come è andata?
     
    .
  14.     +1   -1
     
    .
    Avatar

    Apprendista

    Group
    Princeps
    Posts
    147
    Reputation
    +12

    Status
    Offline
    niente non funziona, spawn il gruppo ma non attacca ne fa nulla... sto provando su di un'altra mappa per vedere come va :(
     
    .
  15.     +1   -1
     
    .
    Avatar

    Guerriero

    Group
    Eroi
    Posts
    2,161
    Reputation
    +155
    Location
    Sardegna

    Status
    Anonymous
    CITAZIONE (x[CLOUD]x @ 16/8/2018, 21:27) 
    niente non funziona, spawn il gruppo ma non attacca ne fa nulla... sto provando su di un'altra mappa per vedere come va :(

    Domani ri-scompatto imperivm e provo la sequenza.
     
    .
14 replies since 4/8/2018, 12:29   227 views
  Share  
.