Results 1 to 30 of 33

Thread: Scripting problems

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Notepad user Member Red Spot's Avatar
    Join Date
    Apr 2007
    Location
    The Netherlands
    Posts
    491

    Default Re: Scripting problems

    theoraticly I'd say that you're better of putting stuff in a single monitor with lots of if's, as long as whatever is in that monitor is similair stuff and you're not just calling that monitor for an entire script just cause someone said monitors are more demanding ... :D

    the game needs to continually(sp?) check up on monitors, where the if-statements are only being processed once the monitor is actually triggered

    (I dont think there is a single "black and white" answer here, just try not to spam monitors and keep things properly grouped)

    those "if character near .... " commands I have 2*198 in a single monitor, but all that monitor does is check up on generals near a tile and spawm some men if wanted/needed, anything else is again in its own monitors


    not too experianced scripting TW, but in other engines I always made sure that the if-statement least likelly to pass are checked first so there are as little follow-up checks as possible, though there will be little to even no diff. at all in how demanding a script is, at least not noticable, but every little bit helps specially if eventually your mod might be run by someone on a rather old system, or if you're using a zillion statements ... ;)


    btw;
    siege_assault_button, is that the "start siege on battlemap" button??
    also GarrisonSettlementRatio < 0.8, does that work??
    I've tried that one in M2 (or similair one) and it didnt "seem" to work there, does the current command basicly mean "if garrison is smaller than 80% of 20units" ??


    this is the start of my garrison bit of my script, just Rome in the example;
    Code:
    monitor_event ScrollOpened seige_scroll
    and ScrollOpened seige_scroll
    	if not I_SettlementOwner Rome = romans_julii
    		if I_CharacterTypeNearTile romans_julii family, 3 255, 155
    			set_counter Settlement_Besieged 1
    		end_if
    		if I_CharacterTypeNearTile romans_julii general, 2 255, 155
    			set_counter Settlement_Besieged 1
    		end_if
    		if I_CompareCounter Settlement_Besieged = 1
    			if I_SettlementOwner Rome = romans_senate
    				console_command create_unit Rome "roman praetorian cohort" 6 7 3 3
    				console_command create_unit Rome "roman praetorian cavalry" 2 7 3 3
    				console_command create_unit Rome "roman urban cohort" 4 6 3 3
    				console_command create_unit Rome "roman legion archer ii" 4 5 3 3
    			end_if
    			if not I_SettlementOwner Rome = romans_senate
    			and I_CompareCounter Settlement_Level = 3
    				console_command create_unit Rome "roman urban cohort" 6 6 3 3
    				console_command create_unit Rome "roman legion archer ii" 3 3 3 3
    				console_command create_unit Rome "roman urban cohort" 4 5 3 3
    				console_command create_unit Rome "roman legion archer ii" 3 4 3 3
    			end_if
    			if not I_SettlementOwner Rome = romans_senate
    			and I_CompareCounter Settlement_Level < 3
    				console_command create_unit Rome "roman legion cohort ii" 5 3 2 2
    				console_command create_unit Rome "roman legion archer ii" 3 2 2 2
    				console_command create_unit Rome "roman legion cohort ii" 5 4 2 2
    				console_command create_unit Rome "roman legion archer ii" 3 3 2 2
    			end_if
    			set_counter Settlement_Besieged 0
    		end_if
    	end_if
    end_monitor


    G
    Last edited by Red Spot; 11-18-2007 at 12:48.

  2. #2
    Finder of Little Oddities Senior Member Makanyane's Avatar
    Join Date
    Jan 2006
    Posts
    2,220

    Default Re: Scripting problems

    thanks for answer, I'll have bit more of a look at permutations of how things could be grouped later...

    siege_assault_button, is that the "start siege on battlemap" button??
    also GarrisonSettlementRatio < 0.8, does that work??
    What I was trying to get (and works except laggy problem) was a couple of different results. If you siege city so it goes over its turn under siege as they have more time to prepare you get a stronger army appearing in there (and possibly some spawned relief forces appearing nearby), so thats set on SettlementEndTurn and combination of counters. But I also wanted something to trigger if you attacked city with cannons or 'elephants' and went straight for the assault, so that's linked to pressing the 'assault' rather than 'maintain' siege button.


    With your set up at moment does that keep triggering, if you re-open the scroll to see if ladders etc are built? I ended up putting terminate_monitors in to try and stop mine keep building troops.

    I think the settlement ratio thing works, at least when I had it lower <0.1 it didn't trigger, I was assuming it was working off the garrison level you see in the happiness rating in settlement view, and so related to population/army ratio - but haven't tested much....

    EDIT: just curious as well - won't your monitor trigger if say julii and senate are still allied but julii general is standing next to Rome when you open siege scroll somewhere else for different factions..? (I know mine overflows a bit as well but that was why I was trying to have FactionBesieging in and restrict it to firing if besieger was local player.
    Last edited by Makanyane; 11-18-2007 at 15:32.
    Not used mods before? Looking for something small and fun?!
    Download the:

  3. #3
    Notepad user Member Red Spot's Avatar
    Join Date
    Apr 2007
    Location
    The Netherlands
    Posts
    491

    Default Re: Scripting problems

    Quote Originally Posted by Makanyane
    just curious as well - won't your monitor trigger if say julii and senate are still allied but julii general is standing next to Rome when you open siege scroll somewhere else for different factions..? (I know mine overflows a bit as well but that was why I was trying to have FactionBesieging in and restrict it to firing if besieger was local player.

    yeah it does, brings a bit of "player-caution" into play, but it saves on some extra checks that only give a minor additional degree of certainty, like testing if the Julii are at war with the Senate and the Senate is actually besieged and the Julii besieging ... but that still doesnt garantee that the Julii are actually sieging settlement_x

    why I also asked about the siege button you are using, thought when I think about it I'd rather have some additional overflow in favour of knowing whats there to be killed ... :D


    G

  4. #4
    Finder of Little Oddities Senior Member Makanyane's Avatar
    Join Date
    Jan 2006
    Posts
    2,220

    Default Re: Scripting problems

    why I also asked about the siege button you are using, thought when I think about it I'd rather have some additional overflow in favour of knowing whats there to be killed ...
    do you mean in terms of using assault button to view contents of enemy army without actually attacking? (it does add them if you do that but you also get to view them as soon as it displays enemy army) Surely creating units when you open siege scroll has same effect but earlier
    and also occurs if you just re-open it to check if siege engines are built?

    meh, I might switch over to adding default army on start of siege and then top up / spawn if you maintain siege over turn, but I think it needs the terminate monitors in either way (?)
    Not used mods before? Looking for something small and fun?!
    Download the:

  5. #5
    Notepad user Member Red Spot's Avatar
    Join Date
    Apr 2007
    Location
    The Netherlands
    Posts
    491

    Default Re: Scripting problems

    Quote Originally Posted by Makanyane
    do you mean in terms of using assault button to view contents of enemy army without actually attacking? (it does add them if you do that but you also get to view them as soon as it displays enemy army) Surely creating units when you open siege scroll has same effect but earlier
    and also occurs if you just re-open it to check if siege engines are built?

    meh, I might switch over to adding default army on start of siege and then top up / spawn if you maintain siege over turn, but I think it needs the terminate monitors in either way (?)
    actually I was, incorrectly, assuming that the siege_button would trigger the battle, but it ofcourse only triggers the deploment scroll(or what it is called)

    I'm not that bothered with extra spawn in such way that a settlement gets filled up, I already spawn 16units based on "global settlement level" wich pretty much fills up the settlement so an additional "viewing" might spawn 3 additional units but just as well none, anyway thats not really bothering me ...
    (I've taking lots of effort to try and get the AI up to a level where they can actually beat me on the campaign-map as well as battle-map without cheating all over the place, currently I get my behind kicked by the AI without cheating(well, AI eventually gets 2XP when training units, but only late in game) the only think I cant "balance out" is the fact that the AI doesnt respond to me paying a visit with ~3 to 5 stacks, 3 more units wont make much of a diff. in the big picture ... note that I play on VH/H in BI 1.6)


    G

  6. #6

    Default Re: Scripting problems

    looked at LotR's script (I'm going to have to apologise to their script writer for cribbing)
    I'm the lotr-tw scripter, and no apologise needed. Please, crib my scripts as much as you want, use freely all what you find useful, and share it here all what you think could be useful to others.
    Also, feel free to pm me if you want that I explain something about some script, or if you have any suggestion.

    As Athilus said: the Underscores in internal names aren't the problem, it's spaces in external names. We chose the middle dot to replace all the spaces from external names.
    Note: that I know, only the condition "SettlementName" uses the external name instead of the internal.

    Red Spot:also GarrisonSettlementRatio < 0.8, does that work??
    Makanyane: I was assuming it was working off the garrison level you see in the happiness rating in settlement view, and so related to population/army ratio
    I can confirm it works and I'm almost sure that Makanyane is right about the meaning.

    But, Makanyane, there where you have placed it in your lastest example it can't work because the event buttonpressed can't export the settlement record.

    monitor_event ButtonPressed ButtonPressed siege_assault_button
    and GarrisonSettlementRatio < 0.8
    monitor_event ScrollOpened seige_scroll
    and ScrollOpened seige_scroll
    I worked a lot in the development of my garrison script and I never though of using these kind of triggers .Thank you for point it out.
    I'll see if I can improve my garrison script with this info.
    Last edited by Bardo; 12-03-2007 at 13:06.

  7. #7
    Axebitten Modder Senior Member Dol Guldur's Avatar
    Join Date
    Apr 2005
    Location
    England
    Posts
    1,550

    Default Re: Scripting problems

    FATW uses indestructible buildings (marvels and regional buildings) to associate the script to (in addtion to one-word settlement names); not event scripting of course (we have none) but the traits and ancs coding...this was we do not need to worry about having settlements with more than one word in the name. Just a tip, though if you have a specific script on virtually every city then that system may not be robust enough.
    "One of the most sophisticated Total War mods ever developed..."

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Single Sign On provided by vBSSO