Thanks Atilius, i'll try redo it as you adviced.
Thanks Atilius, i'll try redo it as you adviced.
You can use my Garrison script if you want. Mine is based in the Garrison script made by LorDBulA (included into SPQR mod).
Here it is the code:
You need to change all words in brackets, I tried to use your same nomenclature. And copy-paste the code where it says ";...per faction or settlement"Code:script ;console_command toggle_perfect_spy ;very useful to debug declare_counter City1Besiged set_counter City1Besiged 0 declare_counter City2Besiged set_counter City2Besiged 0 ;...per settlement monitor_event FactionTurnEnd FactionType [faction1] and I_LocalFaction [faction1] if I_CompareCounter City1Besiged = 0 and not I_SettlementOwner [city1] = [faction1] if I_CharacterTypeNearTile [faction1] general, 2 x1,y1 set_counter City1Besiged 1 end_if if I_CharacterTypeNearTile [faction1] family, 2 x1,y1 set_counter City1Besiged 1 end_if end_if if I_CompareCounter City1Besiged = 2 and not I_CharacterTypeNearTile [faction1] family, 2 x1,y1 and not I_CharacterTypeNearTile [faction1] general, 2 x1,y1 set_counter City1Besiged 0 end_if if I_CompareCounter City2Besiged = 0 and not I_SettlementOwner [city2] = [faction1] if I_CharacterTypeNearTile [faction1] general, 2 x2,y2 set_counter City2Besiged 1 end_if if I_CharacterTypeNearTile [faction1] family, 2 x2,y2 set_counter City2Besiged 1 end_if end_if if I_CompareCounter City2Besiged = 2 and not I_CharacterTypeNearTile [faction1] family, 2 x2,y2 and not I_CharacterTypeNearTile [faction1] general, 2 x2,y2 set_counter City2Besiged 0 end_if ;...per settlement end_monitor ;...a monitor per possible local faction monitor_event SettlementTurnEnd SettlementName [city1-mapname] and I_CompareCounter City1Besiged = 1 and GarrisonSettlementRatio < 0.5 if I_SettlementOwner [city1] = [faction1] console_command create_unit [city1] "unit name" 4 console_command add_money -2000 console_command add_population City -1500 end_if if I_SettlementOwner [city1] = [faction2] console_command create_unit [city1] "unit name" 4 console_command add_money -2000 console_command add_population City -1500 end_if set_counter City1Besiged 2 ;...an if per faction end_monitor monitor_event SettlementTurnEnd SettlementName [city2-mapname] and I_CompareCounter City2Besiged = 1 and GarrisonSettlementRatio < 0.5 if I_SettlementOwner [city2] = [faction1] console_command create_unit [city1] "unit name" 4 console_command add_money -2000 console_command add_population City -1500 end_if if I_SettlementOwner [city2] = [faction2] console_command create_unit [city1] "unit name" 4 console_command add_money -2000 console_command add_population City -1500 end_if ;...an if per faction set_counter City2Besiged 2 end_monitor ;...a monitor per settlement while TrueCondition end_while end_script
Note: The condition "SettlementName" needs the name of the city that it is shown in the map, not the internal name.
You can see it in the file: data\text\imperial_campaign_regions_and_settlement_names.txt
ie:{Lepcis_Magna} Lepcis Magna
[city1]=internal name, ie:Lepcis_Magna
[city1-mapname]=name show in map, ie:Lepcis Magna
I also recommend you to read the Intermediate Guide to Scripting, By Epistolary Richard & Myrddraal. (if you didn't already read it)
Note2 - Important thing not said in this guide: When you use an "if" or "while" statment, you can only use conditions starting by "I_" . All other conditions need some Trigger requirements, and they can only be used with monitor_events. (the "Trigger requirements" of the condition must be in the "Exports" of the event)
Wise words. It is almost impossible to write the full script and get it working at the first attempt. I suggest you to test it with one city and 2 factions until the script is working. Then, you can add lines and adjust the script.start very simple, make sure what you have works, then add on. Writing more than a half-dozen lines of script without errors is difficult, particularly if you haven't done a lot of scripting.
I hope this helps![]()
Bardo thanks a lot, i really appreciate your help! I'll start exprimenting right away!![]()
Bardo, i got confused a bit with your instructions :(.
Could you please just clarify this for me.
Am i right here:
[city name = map name = Acre, faction1 = sassanids, faction 2 = franks, unit name = crusader latin knigts (just for testing)]
This For each SettlementCode:script
Repeat For Each FactionCode:declare_counter AcreBesiged set_counter AcreBesiged 0
This Monitor For Every SettlementCode:monitor_event FactionTurnEnd FactionType sassanids and I_LocalFaction sassanids ;;;;;;;Repeat For Each Settlement;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; if I_CompareCounter AcreBesiged = 0 and not I_SettlementOwner Acre = sassanids if I_CharacterTypeNearTile sassanids general, 2 151,162 set_counter AcreBesiged 1 end_if if I_CharacterTypeNearTile sassanids family, 2 151,162 set_counter AcreBesiged 1 end_if end_if if I_CompareCounter AcreBesiged = 2 and not I_CharacterTypeNearTile sassanids family, 2 151,162 and not I_CharacterTypeNearTile sassanids general, 2 151,162 set_counter AcreBesiged 0 end_if ;;;;;;;^^^Repeat for Each Settlement^^^;;;;;;;;;;;;;;;;;;;; end_monitor
Code:monitor_event SettlementTurnEnd SettlementName Acre and I_CompareCounter AcreBesiged = 1 and GarrisonSettlementRatio < 0.5 if I_SettlementOwner Acre = sassanids console_command create_unit Acre "crusader latin knights" 4 console_command add_money -2000 console_command add_population Acre -1500 end_if if I_SettlementOwner Acre = franks console_command create_unit Acre "crusader latin knights" 4 console_command add_money -2000 console_command add_population Acre -1500 end_if if I_SettlementOwner Acre = slave console_command create_unit Acre "crusader latin knights" 4 console_command add_money -2000 console_command add_population Acre -1500 end_if set_counter AcreBesiged 2 end_monitorDid i understand your instructions correctly?Code:while TrueCondition end_while end_script
Thanks Bardo.
Bardo
Thanks bro, i made it work!
The problem was i forgot to add
"declare_counter loop
set_counter loop 0" in the begginning
and
"while I_CompareCounter loop = 0
end_while
end_script
in the end".
Also thanks a lot for letting me use your kind. It was very kind of you. Hopefully it is going to be included in a new patch for the Crusades!
Now i'm gonna have to copy it for all the factions))) A lot of boring work to do))
Yes, you understood right.Did i understand your instructions correctly?![]()
No problem, man. In fact, mine is just an evolution from LorDBula's.Also thanks a lot for letting me use your kind.
And I'm happy if my work is useful to other people.![]()
Weird, because this code has the same effect:The problem was i forgot to add...
than that:Code:while TrueCondition end_while
Code:declare_counter loop set_counter loop 0 while I_CompareCounter loop = 0 end_whileI agree... really boring.Now i'm gonna have to copy it for all the factions))) A lot of boring work to do))
You can pm me if you have some other doubt, or if you find some bug in the script.
I followed Bardo's guide and it works. Thanks!
Last edited by Hoginator01; 09-03-2010 at 20:39.
Respectfully,
Hoginator01
Bookmarks