Medieval 2 Total War
Discussione generale sul videogioco Medieval 2 : Total War
Cattedra
Guide & Tutorial a cura dei maggiori esperti di modding
Medieval 2 Total War Cantiere
Progettazione di Mod relativi al videogame Medieval 2 Total War

 

 

Nuova Discussione
Rispondi
 
Stampa | Notifica email    
Autore

GUIDA ALLO SCRIPTING

Ultimo Aggiornamento: 28/01/2016 14:51
12/05/2012 09:53
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 2.047
Registrato il: 07/11/2008
Città: PATTI
Età: 33
Principe
Re: Re: Re: Re: Re:
The Housekeeper, 12/05/2012 09.31:




in pratica fai apparire un'armatona ribelle, fai assediare la città (magari costringendo il giocatore a fare risoluzione automatica, mi pare si possa fare), e poi col comando "capture_settlement" la riconquisti automaticamente (anche se l'armata ribelle mi sa che rimanga lì vicino, e poi bisogna considerare gli edifici danneggiati), script da ripetere per ogni insediamento "speciale". Si può fare, un pò macchinoso...

Purtroppo la IA non sa usare gli agenti "comuni". Se noti, i rabbini (preti ribelli) non si muovono da dove appaiono, lo stesso succede con mercanti, assassini ecc.




Esatto l'idea è questa... per l'armata ribelle si potrebbe usare solo una unità e mettere console_comand auto_win attacker? e impostare che si faccia solo risoluzione automatica (non sapevo si potesse, è una gran cosa questa), dopo di che malus di bisanti (diciamo 500 bisanti?) e dopo che la "missione" è andata si fa tornare l'insediamento in mano nostra. Per gli edifici danneggiati si può fare qualcosa per evitarli?

Peccato per gli agenti [SM=g27969] eppure ricordo che nel vanilla una volta i francesi mi avevano assassinato l'erede vicino nei pressi di Parigi... avevo pensato ad una cosa simile, tipo assassini ribelli in punti strategici che facessero il lavoro sporco... ma effettiamente ho visto ad esempio i rabbini o meglio ancora il patriarca ecumenico che sta sempre fermo in costantinopoli... è davvero un peccato che non vengano sfruttati a dovere [SM=g27971]
15/05/2012 09:48
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 2.047
Registrato il: 07/11/2008
Città: PATTI
Età: 33
Principe
Qual'è la condizione o comando per far tornare l'insediamento in mano nostra?

Lo script dovrebbe essere questo come suggerito da Glauco:

monitor_event SettlementSelected FactionType england
and FactionIsLocal
and I_SettlementSelected Rome
add_events
event counter General_kill_accepted
event counter General_kill_declined
date 0
end_add_events
historic_event General_kill true
end_monitor

monitor_event FactionTurnEnd FactionType england
and I_EventCounter General_kill_accepted = 1
spawn_army
faction slave
character Andrea, named character, age 39, x 128, y 160
traits GoodRiskyAttacker 1
unit SE Bodyguard exp 9 armour 0 weapon_lvl 0
unit Mailed Knights exp 3 armour 0 weapon_lvl 0
unit Mailed Knights exp 3 armour 0 weapon_lvl 0
unit Norman Knights exp 6 armour 0 weapon_lvl 0
sieging
siege_settlement Andrea, Rome, maintain
siege_settlement Andrea, Rome, attack
console_comand add_money -500 (per simulare il pagamento del manipolo)
terminate_monitor
end_monitor

Ho ridotto le unità dello script originale, perchè in sostanza dovrebbe rappresentare un piccolo manipolo di uomini (e non un esercito) assoldati da noi per il "lavoro sporco" e eliminato auto_attacker per dare la possibilità al geenrale di sopravviere (non tutti i tentativi andavano a buon fine XD)

Adesso manca appunto la condizione per far tornare l'insediamento in mano nostra una volta terminato tutto e mettere la risoluzione automatica.

[Modificato da Tancredi d'Altavilla 15/05/2012 09:51]
15/05/2012 10:05
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 3.228
Registrato il: 19/01/2009
Principe
ci sono due modi:

console_command capture_settlement (codice insediamento)

oppure fai apparire un armata spawn.

Io consiglio il primo.




"Quando ti senti eccezionalmente lucido, entusiasta, forte, quando ti senti in cima al mondo, capace di spostare le montagne, connesso al tuo sogno, all ' ideale, allora sai che hai il sole in tasca" S.B.
15/05/2012 10:13
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 3.228
Registrato il: 19/01/2009
Principe
lo script potrebbe essere questo ad esempio


monitor_event FactionTurnStart FactionIsLocal
and I_SettlementOwner Rome = slave
and I_CharacterExists Andrea
console_command capture_settlement Rome
end_monitor




"Quando ti senti eccezionalmente lucido, entusiasta, forte, quando ti senti in cima al mondo, capace di spostare le montagne, connesso al tuo sogno, all ' ideale, allora sai che hai il sole in tasca" S.B.
15/05/2012 14:02
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 2.047
Registrato il: 07/11/2008
Città: PATTI
Età: 33
Principe
Ottimo! [SM=x1140440]

FactionTurnStart fa riferimento a quando inizia il turno oppure l'insediamento torna alla fazione nel turno stesso in cui abbiamo ammazzato il generale?

Per inserire la risoluzione automatica, cioè levare in questo caso la possibilità di combattere come si imposta?
15/05/2012 14:47
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 3.228
Registrato il: 19/01/2009
Principe
Torna alla fazione al inizio del turno seguente, ma possiamo anche far partire lo script quando il giocatore fa il fine turno (FactionTurnEnd) oppure possiamo fare che lo script si attivi dopo che i ribelli conquistano la città, ma io preferisco i FactionTurn per non creare possibili conflitti (rischi che magari lo script si attivi il turno seguente, quindi secondo me conviene il FactionTurn, poi chiedi un attimo ad house).

Per la risoluzione automatica, se untilizzi il capture_settlement non ne hai bisogno, se ti riferisci al primo assedio, credo che non ci sia bisogno di mettere una condizione del genere visto che è il giocatore a decidere l' esecuzione, e non avrebbe motivo di giocare la battaglia.




"Quando ti senti eccezionalmente lucido, entusiasta, forte, quando ti senti in cima al mondo, capace di spostare le montagne, connesso al tuo sogno, all ' ideale, allora sai che hai il sole in tasca" S.B.
15/05/2012 14:58
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 2.047
Registrato il: 07/11/2008
Città: PATTI
Età: 33
Principe
Re:
GlaucopideSophia1, 15/05/2012 14.47:

Torna alla fazione al inizio del turno seguente, ma possiamo anche far partire lo script quando il giocatore fa il fine turno (FactionTurnEnd) oppure possiamo fare che lo script si attivi dopo che i ribelli conquistano la città, ma io preferisco i FactionTurn per non creare possibili conflitti (rischi che magari lo script si attivi il turno seguente, quindi secondo me conviene il FactionTurn, poi chiedi un attimo ad house).

Per la risoluzione automatica, se untilizzi il capture_settlement non ne hai bisogno, se ti riferisci al primo assedio, credo che non ci sia bisogno di mettere una condizione del genere visto che è il giocatore a decidere l' esecuzione, e non avrebbe motivo di giocare la battaglia.




Ok allora usiamo il FactionTurn [SM=g27960]

Si mi riferivo al primo assedio, House mi aveva detto che era possibile. Sarebbe più comodo fare così, non per una questione funzionale ma più che altro per fare un lavoro più "pulito" e realistico.
[Modificato da Tancredi d'Altavilla 15/05/2012 15:01]
15/05/2012 23:03
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 2.047
Registrato il: 07/11/2008
Città: PATTI
Età: 33
Principe
Spulciando il docudemons nel "ui elements" ho trovato queste stringhe:

prebattle_scroll
prebattle_fight_button
prebattle_auto_resolve_button
prebattle_withdraw_button

Si dovrebbero riferire ai bottini del "prebattaglia".

Ma ui elements cosa sarebbero? possono abilitare/disabilitare i bottoni ad esempio quelli che mi interessano della risoluzione automatica, manuale ecc.?
16/05/2012 10:01
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 21.194
Registrato il: 10/02/2007
Principe

sì sono i bottoncini della schermata pre-battaglia

In teoria sì, è possibile attivare\disattivare i bottoni col comando enable_ui\disable_ui, ad es. "disable_ui finances_button" disabilita il bottone del pannello finanziario e non ti permette di aprirlo.
Purtroppo però molti simboli elencati non funzionano (cioè la loro ui_element non viene riconosciuta dal gioco), bisogna fare delle prove per ciascuno di essi...
16/05/2012 15:00
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 2.047
Registrato il: 07/11/2008
Città: PATTI
Età: 33
Principe
Re:
The Housekeeper, 16/05/2012 10.01:

sì sono i bottoncini della schermata pre-battaglia

In teoria sì, è possibile attivare\disattivare i bottoni col comando enable_ui\disable_ui, ad es. "disable_ui finances_button" disabilita il bottone del pannello finanziario e non ti permette di aprirlo.
Purtroppo però molti simboli elencati non funzionano (cioè la loro ui_element non viene riconosciuta dal gioco), bisogna fare delle prove per ciascuno di essi...




Mhm, quindi nello script dovrei scrivere ad esempio disable_ui prebattle_fight_button... ok proviamo! [SM=g27963]

ps: scordavo che per far attaccare l'armata serve serve almeno un pezzo di artiglieria per aprire le porte, non ricordo ad esempio come si mettono le catapulte nello script, ora do un occhiata e vedo [SM=g27960]
[Modificato da Tancredi d'Altavilla 16/05/2012 15:02]
16/05/2012 15:17
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 21.194
Registrato il: 10/02/2007
Principe

come mi sembrava di ricordare, il comando non funziona
avevamo già provato qui
freeforumzone.leonardo.it/discussione.aspx?idd=10048641

se si vuole forzare il giocatore alla risoluzione automatica, bisogna sfruttare il sistema dei "clic simulati"
www.twcenter.net/forums/showthread.php?t=455375
16/05/2012 15:28
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 2.047
Registrato il: 07/11/2008
Città: PATTI
Età: 33
Principe
Ottimo! allora è possibile! così dovrebbe andare [SM=g27964]
Quindi lo script dovrebbe venire così

monitor_event SettlementSelected FactionType england
and FactionIsLocal
and I_SettlementSelected Rome
add_events
event counter General_kill_accepted
event counter General_kill_declined
date 0
end_add_events
historic_event General_kill true
select_ui_element prebattle_auto_resolve_button (?)
simulate_mouse_click lclick_down (?)
simulate_mouse_click lclick_up (?)

end_monitor

monitor_event FactionTurnEnd FactionType england
and I_EventCounter General_kill_accepted = 1
spawn_army
faction slave
character Andrea, named character, age 39, x 128, y 160
traits GoodRiskyAttacker 1
unit Catapult exp 3 armour 2 weapon_lvl 1 (ho aggiunto adesos per aprire le porte)
unit SE Bodyguard exp 9 armour 0 weapon_lvl 0
unit Mailed Knights exp 3 armour 0 weapon_lvl 0
unit Mailed Knights exp 3 armour 0 weapon_lvl 0
unit Norman Knights exp 6 armour 0 weapon_lvl 0
sieging
siege_settlement Andrea, Rome, maintain
siege_settlement Andrea, Rome, attack
console_comand add_money -500 (per simulare il pagamento del manipolo)
terminate_monitor
end_monitor



Se è corretto lo metto in pratica e provo [SM=g27960]
16/05/2012 18:05
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 2.047
Registrato il: 07/11/2008
Città: PATTI
Età: 33
Principe
Non riesco a farlo funzionare.
Anzi, inserendo gli script spariscono tutti (video di incoronazione inglese, lo script di "benvenuto" e il feudal ad esempio, quelli che si notano subito).

Nel campaign_script ho scritto così:



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;General_kill

monitor_event SettlementSelected FactionType england
and FactionIsLocal
and I_SettlementSelected Exeter
add_events
event counter General_kill_accepted
event counter General_kill_declined
date 0
end_add_events
historic_event General_kill true
select_ui_element prebattle_auto_resolve_button
simulate_mouse_click lclick_down
simulate_mouse_click lclick_up

end_monitor

monitor_event FactionTurnEnd FactionType england
and I_EventCounter General_kill_accepted = 1
spawn_army
faction slave
character Andrea, named character, age 39, x 128, y 160
traits GoodRiskyAttacker 1
unit Catapult exp 3 armour 2 weapon_lvl 1
unit SE Bodyguard exp 9 armour 0 weapon_lvl 0
unit Mailed Knights exp 3 armour 0 weapon_lvl 0
unit Mailed Knights exp 3 armour 0 weapon_lvl 0
unit Norman Knights exp 6 armour 0 weapon_lvl 0
sieging
siege_settlement Andrea, Exeter, maintain
siege_settlement Andrea, Exeter, attack
console_comand add_money -500
terminate_monitor
end_monitor

monitor_event FactionTurnStart FactionIsLocal
and I_SettlementOwner Exeter = slave
and I_CharacterExists Andrea
console_command capture_settlement york
end_monitor

Nel historic_event ho messo questo:


{GENERAL_KILL_BODY}Mio signore, in questo insediamento si è ritirato uno dei vostri generali che ha osato sfidare la vostra autorità, ogni sua azione è un insulto alla vostra corona! Volete assoldare un manipolo di uomini e dare loro loro l'ordine di attaccare?
{GENERAL_KILL_TITLE}Assassina Generale

dov'è l'erroe? [SM=g27982]
16/05/2012 19:21
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 3.228
Registrato il: 19/01/2009
Principe
Per farlo funzionare l' ho fatto così:

monitor_event SettlementSelected FactionType england
and FactionIsLocal
and I_SettlementSelected Exeter
add_events
event counter General_kill_accepted
event counter General_kill_declined
date 0
end_add_events
historic_event General_kill true
select_ui_element prebattle_auto_resolve_button
simulate_mouse_click lclick_down
simulate_mouse_click lclick_up
end_monitor



monitor_conditions I_EventCounter General_kill_accepted = 1
and I_SettlementOwner Exeter = england
spawn_army
faction slave
character Andrea, named character, age 39, x 128, y 160
traits GoodRiskyAttacker 1
unit SE Bodyguard exp 9 armour 0 weapon_lvl 0
unit Mailed Knights exp 3 armour 0 weapon_lvl 0
unit Mailed Knights exp 3 armour 0 weapon_lvl 0
unit Norman Knights exp 6 armour 0 weapon_lvl 0
sieging
siege_settlement Andrea, Exeter, maintain
siege_settlement Andrea, Exeter, attack
terminate_monitor
end_monitor


monitor_conditions FactionTurnStart FactionIsLocal
and I_EventCounter General_kill_accepted = 1
and I_LocalFaction england
add_money england -500
terminate_monitor
end_monitor



monitor_event FactionTurnStart FactionIsLocal
and I_SettlementOwner Exeter = slave
and I_CharacterExists Andrea
console_command capture_settlement Exeter
end_monitor


Purtroppo su mtwi non trovo editor, ci sarebbero degli spazi, ma il forum gli toglie automaticamente.




"Quando ti senti eccezionalmente lucido, entusiasta, forte, quando ti senti in cima al mondo, capace di spostare le montagne, connesso al tuo sogno, all ' ideale, allora sai che hai il sole in tasca" S.B.
16/05/2012 19:26
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 2.047
Registrato il: 07/11/2008
Città: PATTI
Età: 33
Principe
Grandissimo Glauco, grazie!!
Adesso provo [SM=g27960]

Che intendi per spazi?

Inserisco nel campaign_script e vedo che succede [SM=g27963]

[Modificato da Tancredi d'Altavilla 16/05/2012 19:28]
16/05/2012 19:29
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 3.228
Registrato il: 19/01/2009
Principe
ecco:









Comunque guardavo, è fastidioso che ogni volta che clicchi sulla città ti compare il messaggio, potresti legarlo ad un tasto più che alla città, ad esempio ai consigli per gli edifici (si potrebbe cambiare appositamente ui).




"Quando ti senti eccezionalmente lucido, entusiasta, forte, quando ti senti in cima al mondo, capace di spostare le montagne, connesso al tuo sogno, all ' ideale, allora sai che hai il sole in tasca" S.B.
16/05/2012 19:52
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 2.047
Registrato il: 07/11/2008
Città: PATTI
Età: 33
Principe
FUNZIONA!!!!!!!!!
Grandissimo, ha funzionato!!!!

Pensavo la stessa cosa, infatti pensavo di legarlo alla lente di ingrandimento, pensavo che funzionasse così invece si attiva ogni volta che clicchi sull'insediamento.

Un buon inizio comunque, ora va perfezionato [SM=g27964]

Si potrebbe usare come dicevo la lente di ingrandimento dell'insediamento (come per gli eventi interattivi che riguardano gli agenti e i generali come i tornei)... oppure per lasciarlo libero non sarebbe male usare la lente di ingrandimento della taverna (come se il manipolo si reclutasse da lì)
Aggiungerei anche un altro historic_event che annuncia che la missione è stata compiuta, e magari un altro malus di 500 fiorini (come se i primi fossero come anticipo o come costo per averli assoldati e gli altri 500 per aver compiuti la missione. Che ne dici?

Non funziona (almeno da me) la risoluzione automatica, forse ho sbagliato qualcosa. E se clicco su bandiera bianca il generale si ritira dalla battaglia e finisce lì, è libero anche di uscire dall'insediamento. E il bello è che l'armata ribelle non si vede e che nell'albero genealogico del generale che ho fatto fuori risulta "morto nel suo letto" [SM=g27964]

Siamo sulla buona strada, qualche modifica e sarà perfetto XD

ps: ok adesos ho capito che intgendevi per spazi [SM=g27960]
[Modificato da Tancredi d'Altavilla 16/05/2012 19:59]
16/05/2012 20:28
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 3.228
Registrato il: 19/01/2009
Principe
buona idea i costi in più tempi, e anche il messaggio di riuscita missione [SM=x1140522]




"Quando ti senti eccezionalmente lucido, entusiasta, forte, quando ti senti in cima al mondo, capace di spostare le montagne, connesso al tuo sogno, all ' ideale, allora sai che hai il sole in tasca" S.B.
16/05/2012 21:02
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 2.047
Registrato il: 07/11/2008
Città: PATTI
Età: 33
Principe
Dimenticavo, vorrei levare il FactionType così possono utilizzare tutte le fazioni... ad esempio se la francia conquista Exter (città che abbiamo usato per l'esperimento) possono usarla per uccidere i prorpi generali [SM=g27960]

per inserire il secondo evento e il secondo malus devo aggiungere un altro script o aggiungo le stringhe a quelli già esistenti?
16/05/2012 21:14
 
Email
 
Scheda Utente
 
Modifica
 
Cancella
 
Quota
OFFLINE
Post: 3.228
Registrato il: 19/01/2009
Principe
meglio aggiungere un altro script.




"Quando ti senti eccezionalmente lucido, entusiasta, forte, quando ti senti in cima al mondo, capace di spostare le montagne, connesso al tuo sogno, all ' ideale, allora sai che hai il sole in tasca" S.B.
Nuova Discussione
Rispondi

Feed | Forum | Album | Utenti | Cerca | Login | Registrati | Amministra
Crea forum gratis, gestisci la tua comunità! Iscriviti a FreeForumZone
FreeForumZone [v.6.1] - Leggendo la pagina si accettano regolamento e privacy
Tutti gli orari sono GMT+01:00. Adesso sono le 18:47. Versione: Stampabile | Mobile
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com