Medieval Total War Italia

Aiuto per script

  • Messaggi
  • OFFLINE
    auc162
    Post: 2.101
    Registrato il: 14/12/2009
    Città: MILANO
    Età: 52
    Principe

    00 24/08/2012 00:20
    Ciao, devo far scomparire un personaggio e farlo ricomparire dal turno 32 in poi, quando si verificano certe condizioni. L'ho scritto così, ma il personaggio ricompare immediatamente. Cosa sbaglio?


    monitor_event FactionTurnStart FactionType portugal
    send_character_off_map Harrold Hardyng
    terminate_monitor
    end_monitor

    monitor_event FactionTurnStart FactionType portugal
    and I_SettlementOwner The_Eyrie = portugal
    and I_TurnNumber > 32
    and not I_CharacterExists Robert Arryn
    spawn_army
    faction portugal
    character Harrold Hardyng, named character, x 123, y 244, battle_model northern_general_X
    traits Biografia_Harrold_Hardyng 1, GoodCommander 1, Combattente 1
    ancillaries eyrie
    army
    unit NE Late Bodyguard_X exp 2 armour 0 weapon_lvl 0
    terminate_monitor
    end_monitor
  • OFFLINE
    The Housekeeper
    Post: 21.194
    Registrato il: 10/02/2007
    Principe

    00 25/08/2012 20:40
    devi usare i label

    esempio:

    ;;;;;12) RANSOM SCRIPT

    ;;;;; Marganus_II

    declare_counter Marganus_II
    set_counter Marganus_II 0

    monitor_event PostBattle IsGeneral
    and not WonBattle
    and FactionIsLocal
    ;and BattleSuccess >= clear
    ;and RandomPercent > 50
    and I_CharacterExists 1Marganus_II
    and Trait Biografia_Marganus = 1
    send_character_off_map 1Marganus_II
    add_events
    event counter Marganus_II_accepted
    event counter Marganus_II_declined
    date 0
    end_add_events
    historic_event Marganus_II true
    set_counter Marganus_II 1
    terminate_monitor
    end_monitor

    monitor_conditions I_EventCounter Marganus_II_accepted = 1
    console_command add_money -10000
    spawn_army
    faction england
    character Marganus_II, named character, x 57, y 234, label 1Marganus_II
    unit Britons_Bodyguard exp 0 armour 0 weapon_lvl 0
    end
    set_counter Marganus_II 0
    historic_event Marganus_II_freedom
    terminate_monitor
    end_monitor

    monitor_event FactionTurnEnd FactionIsLocal
    and I_CompareCounter Marganus_II = 1
    generate_random_counter ransom_accept 0 9
    if I_EventCounter ransom_accept = 9
    spawn_army
    faction england
    character Marganus_II, named character, x 57, y 234, label 1Marganus_II
    unit Britons_Bodyguard exp 0 armour 0 weapon_lvl 0
    end
    historic_event Marganus_II_freedom
    set_counter Marganus_II 0
    end_if
    if I_EventCounter ransom_accept = 8
    historic_event Marganus_II true
    end_if
    if I_EventCounter ransom_accept = 0
    spawn_army
    faction england
    character Marganus_II, named character, x 57, y 234, label 1Marganus_II
    unit Britons_Bodyguard exp 0 armour 0 weapon_lvl 0
    end
    kill_character 1Marganus_II
    historic_event Marganus_II_execution
    set_counter Marganus_II 0
    end_if
    end_monitor





    ricorda di mettere il label anche nel descr_strat!
    metti un numero qualsiasi all'interno del label (nell'esempio 1Marganus_II) per evitare crash





    [Modificato da The Housekeeper 25/08/2012 20:43]








  • OFFLINE
    auc162
    Post: 2.101
    Registrato il: 14/12/2009
    Città: MILANO
    Età: 52
    Principe

    00 27/08/2012 00:18
    E' la prima volta che mi "imbatto" in una label. Mi spiegheresti perché in questo script è necessario inserire una label e più in generale quando si utilizzano? Grazie.
  • OFFLINE
    The Housekeeper
    Post: 21.194
    Registrato il: 10/02/2007
    Principe

    00 27/08/2012 10:26
    In generale i label permettono di evitare che lo script venga applicato ad altri personaggi omonimi,
    inoltre aggirano il problema di alcune condizioni che non supportano il cognome, ad es. send_character_offmap funziona solo se metti solo il nome senza cognome,
    infine permettono di far ricomparire il personaggio esattamente com'era al momento della sparizione (tratti, ancillari ecc.)
    [Modificato da The Housekeeper 27/08/2012 10:27]








  • OFFLINE
    auc162
    Post: 2.101
    Registrato il: 14/12/2009
    Città: MILANO
    Età: 52
    Principe

    00 27/08/2012 11:28
    Ok, proverò, grazie.
  • OFFLINE
    auc162
    Post: 2.101
    Registrato il: 14/12/2009
    Città: MILANO
    Età: 52
    Principe

    00 03/09/2012 23:38
    Sembra così facile, eppure non mi funziona lo script:

    monitor_event FactionTurnStart FactionType milan
    I_TurnNumber = 1
    send_character_off_map 1Willas_Tyrell
    terminate_monitor
    end_monitor

    Ho messo anche il label nel descr_strat, ma perché non va !?
  • OFFLINE
    The Housekeeper
    Post: 21.194
    Registrato il: 10/02/2007
    Principe

    00 04/09/2012 12:06
    Re:
    auc162, 03/09/2012 23.38:

    Sembra così facile, eppure non mi funziona lo script:

    monitor_event FactionTurnStart FactionType milan
    I_TurnNumber = 1
    send_character_off_map 1Willas_Tyrell
    terminate_monitor
    end_monitor

    Ho messo anche il label nel descr_strat, ma perché non va !?




    metti "and" davanti a I_TurnNumber








  • OFFLINE
    auc162
    Post: 2.101
    Registrato il: 14/12/2009
    Città: MILANO
    Età: 52
    Principe

    00 09/09/2012 02:18
    Allora, sono riuscito a fare funzionare il primo script usando una label:

    monitor_event FactionTurnStart FactionType portugal
    send_character_off_map 1Harrold_Hardyng
    terminate_monitor
    end_monitor

    Mentre non funziona il secondo:

    monitor_event FactionTurnStart FactionType portugal
    and I_SettlementOwner The_Eyrie = portugal
    and I_TurnNumber > 2
    and not I_CharacterExists Robert Arryn
    spawn_army
    faction portugal
    character Harrold Hardyng, named character, x 123, y 244, label 1Harrold_Hardyng, battle_model northern_general_X
    traits Biografia_Harrold_Hardyng 1, GoodCommander 1, Combattente 1
    ancillaries eyrie
    unit NE Late Bodyguard_X exp 2 armour 0 weapon_lvl 0
    terminate_monitor
    end_monitor

    In questo caso, anzicché arrivare a partire dal secondo turno, il personaggio Harrold Hardyng ricompare immediatamente, alla partenza del gioco. Idee? Grazie.
  • OFFLINE
    The Housekeeper
    Post: 21.194
    Registrato il: 10/02/2007
    Principe

    00 09/09/2012 11:14

    Probabilmente c'è un errore nel secondo script che costringe il gioco a ignorare l'intero file, quindi anche il primo script non viene letto (quindi non è che il personaggio scompare e riappare subito, semplicemente non scompare proprio!).

    Il file log segnala qualcosa? In questi casi dovrebbe indicarti esattamente dov'è l'errore.

    Ipotesi:
    se non ricordo male non puoi dare l'ancillare come hai fatto tu, infatti nel campaign_script non è consentito (a differenza del descr_strat). Dovresti usare il comando:

    console_command give_ancillary 1Harrold_Hardyng eyrie










  • OFFLINE
    auc162
    Post: 2.101
    Registrato il: 14/12/2009
    Città: MILANO
    Età: 52
    Principe

    00 09/09/2012 23:30
    Che dire, come al solito avevi ragione! Il bello è che in tutti gli altri script avevo assegnato tratti ed ancillari tramite il consolle_command e qui me ne sono dimenticato [SM=g27978]