Freedom Reborn

Freedom Force Forums => Scripting Forum => Topic started by: JKCarrier on February 12, 2009, 05:01:00 PM

Title: JKC wrestles w/EZ Script
Post by: JKCarrier on February 12, 2009, 05:01:00 PM
Having trouble with a Mini-Mod (which will eventually be a campaign). Here's the script:

Story: Homecoming

#----------
Encounter: Crime Alley Reunion
Type: Alliance
Minions: thug_with_gun, thug_with_bat
Allies: liberty_lad
Next: If Allies Lost: Not Another Dead Robin
Next: If Allies Saved: Every Cop A Criminal

Alert Cutscene:
Set lighting to night
Red arrow on Ally
Hero says, "sounds like a fight going on over there. i'd better investigate!"

Start Cutscene:
Remove arrow on Ally
Cinematic camera on Ally to Minion
Minion turns to Ally
Minion says, "gotham belongs to us now, boy wonder! without the bat, you're nothing!"
Ally turns to Minion
Ally says, "we'll see about that, punk!"
Hero says, "robin! i'd better go help him!"

Allies Saved Cutscene:
Cinematic camera on Hero to Ally
Ally turns to Hero
Ally says, "batgirl! am i glad to see a friendly face around here!"
Hero turns to Ally
Hero says, "what's going on? the national guard has the whole city cordoned off."
Ally says, "i just got here myself. i came as soon as i heard about batman's disappearance."
Ally says, "the streets are crawling with criminals, and no sign of the cops."
#----------

#----------
Encounter: Not Another Dead Robin
Type: Cutscene
Next: Lose
Set Lighting to red alert
Camera on Hero
Hero plays animation stunned
Hero says, "oh no! they got robin!"
#----------

#----------
Encounter: Every Cop A Criminal
Type: Interrogation
Minions: cop_crooked
Next: Divide and Conquer

Alert Cutscene:
Set lighting to night
Red arrow on Minion
Hero says, "police headquarters is nearby. maybe my dad the commissioner can fill us in."

Start Cutscene:
Remove arrow on Minion
Cinematic camera on Minion to Ally
Minion turns to Ally
Minion plays animation melee_idle
Minion says, "stop right there! you're under arrest!"
Ally turns to Minion
Ally says, "are you crazy? don't you know who we are?"
Hero turns to Minion
Hero says, "step aside. we have to see commissioner gordon."
Minion turns to Hero
Minion says, "gordon don't work here no more. and our orders are to arrest anyone who's out after curfew."
Minion says, "get 'em, boys!"

Interrogation Cutscene:
Hero walks to Minion
Ally walks to Minion
Cinematic camera on Hero to minion
Hero says, "all right, talk! what happened to commissioner gordon?"
Minion turns to Hero
Minion says, "they shipped him off to the funny farm. arkham asylum."
Hero says, "arkham? what?"
Minion says, "guess the stress finally got to the old geezer, heh heh."
Camera on Ally
Ally says, "wait a minute, i know you!"
Ally says, "stinky framingham! you're no cop! i put you away for armed robbery last year!"
Camera on Minion
Minion says, "there's been a regime change in gotham, punk."
Minion says, "thanks to mayor chesterfield, i'm legit now, and you two are just illegal vigilantes!"
#----------

#----------
Encounter: Divide and Conquer
Type: Cutscene
Play Transition
Set Lighting to sunrise
Cinematic camera on Ally to Hero
Hero turns to Ally
Ally turns to Hero
Hero says, "batman missing? dad locked away in arkham? criminals as cops?"
Ally says, "has this whole town gone crazy?"
Camera on Hero
Hero says, "i'm heading up to arkham. i've got to find out what happened to dad."
Camera on Ally
Ally says, "ok. i'll head over to the batcave, try and get a lead on batman's whereabouts."
Cinematic camera on Hero to Ally
Hero says, "we'll meet back here tonight and compare notes. good luck!"
#----------


(I'm using Blackbird and Liberty Lad as placeholders for you-know-who and you-know-who.  ;) )
The first encounter goes off without a hitch, but neither of the next two encounters will trigger:
If the Ally dies, the mission immediately ends, instead of going to the "Not Another Dead Robin" encounter.
If the Ally is saved, the "Allies Saved" cutscene plays, but then the "Every Cop A Criminal" encounter never starts.
Help?
Title: Re: JKC wrestles w/EZ Script
Post by: BentonGrey on February 12, 2009, 05:39:04 PM
Hey JKC, welcome to the joys of EZScript! ;)  Here are a few pointers.  First off, you'll probably want to post in the Scripting area, you'll likely get more replies by EZScripter veterans.  Now, I haven't gone through this script really closely yet (I'll try to give it a better look this afternoon), but I have noticed a few things that might help you out.  First off, you're using Hero instead of names or numbers.  I'd suggest calling the actual names, as it helps EZScript not get confused.  If not, then do use numbers, so that you won't have things get too jumbled (Hero1, Hero2, etc.).  Also, make sure to leave a blank line after each encounter, before the #-----.  Also, I see you're missing a Start Cutscene: (or Alert Cutscene, or whatever) entry in your Not another dead robin encounter.  That is probably why it isn't playing.  In the Cop one, you'll want a Villain instead of a minion.  EZScript doesn't like interrogating minions.  I'd also encourage you to call it specifically, Villain1, so that EZScript won't get confused.
Title: Re: JKC wrestles w/EZ Script
Post by: AfghanAnt on February 12, 2009, 05:46:21 PM
Ah I love your ezscripts. Thanks for this one. Are you old ones available anywhere? I lost them when I got a new puter.
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on February 12, 2009, 06:16:00 PM
Oops, sorry about posting in the wrong section. If a mod could move this over to "scripting", that'd be swell.

Benton: Thanks, I will try making those changes.

AA: You can get the "Party Peril" mini-mod here:
http://games.groups.yahoo.com/group/jkcfreedomforcestuff5
This one I'm working on now is somewhat more serious, but should be pretty strange...
Title: Re: JKC wrestles w/EZ Script
Post by: BentonGrey on February 12, 2009, 06:19:08 PM
Not the wrong section per se, JKC, just that you might get more responses in Scripting. :) 

I've gone over it again, and I see that you also need a cutscene start in Divide and Conquer as well.  "Start Custscene:" or whatever.
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on February 12, 2009, 07:21:07 PM
Those fixes did the trick, Benton! Everything's triggering correctly now. Thanks!  :thumbup:

Now on to the next mission... stay tuned for more dumb questions...  :unsure:
Title: Re: JKC wrestles w/EZ Script
Post by: BentonGrey on February 12, 2009, 07:31:09 PM
No problem man!  I've had more than my share of maddening little errors like that, so I'm happy to help.  Heaven knows M25 and Empithee both had to work hard enough to straighten me out! :D
Title: Re: JKC wrestles w/EZ Script
Post by: M25 on February 12, 2009, 08:28:12 PM
I have an EZ script editor very close to completion that will help to point out problems.  I'll add 'missing cutscene name' to the list.

Title: Re: JKC wrestles w/EZ Script
Post by: BentonGrey on February 12, 2009, 08:58:19 PM
Wow...that's the coolest thing ever M!  That would save SOOO much time!
Title: Re: JKC wrestles w/EZ Script
Post by: Podmark on February 13, 2009, 04:25:49 AM
That does sound useful M25. Another reason I should try out easy script.
Title: Re: JKC wrestles w/EZ Script
Post by: stumpy on February 13, 2009, 05:35:12 AM
Quote from: JKCarrier on February 12, 2009, 06:16:00 PMOops, sorry about posting in the wrong section. If a mod could move this over to "scripting", that'd be swell.

Done.  ^_^
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on February 24, 2009, 01:33:10 AM
Still working on the mod... M25's awesome script editor has been keeping me out of trouble so far  ;) but I've run into a snag I can't figure out.

Here's the script (still using generic templates as placeholders for characters to be filled in later, and I've removed most of the dialogue to make it easier to read):

Story: Strictly Business

#----------

Encounter: Run The Gauntlet
Type: Fight
Minions: legionnaire
Next: Ruby's Revenge

Alert Cutscene:
Cinematic Camera on liberty_lad to sky_king
liberty_lad says, "doesn't look like anything in the mansion has been disturbed."
Red Arrow on Minion1

Start Cutscene:
Cinematic Camera on sky_king to Minion1
sky_king says, "hold on... did that armor just move?"
liberty_lad says, "must be your imagination."
Minion1 plays animation power
sky_king says, "my imagination, my foot! look out!"

End Cutscene:
Cinematic Camera on sky_king to liberty_lad
sky_king says, "wayne sure has some interesting security!"
liberty_lad says, "this wasn't bruce's doing. alfred would never stand for turning priceless antiques into killer robots!"
liberty_lad says, "let's keep looking."

#----------

Encounter: Ruby's Revenge
Type: Chat
Allies: bacchite_red
Villains: thug_with_bat, thug_with_gun, thug_with_grenade
Next: Ruby's Retreat

Alert Cutscene:
Cinematic Camera on liberty_lad to sky_king
liberty_lad says, "i hear someone in the study."
Red arrow on thug_with_bat

Start Cutscene:
Cinematic Camera on liberty_lad to bacchite_red
bacchite_red says, "how unbelievably rude. doesn't anyone knock anymore?"
liberty_lad says, "ruby ryder! you're bruce wayne's biggest business rival. what are you doing here?"
bacchite_red says, "you're starting to bore me, teen wonder. and since you and your hairy friend are trespassing, i'm perfectly within my rights to have you ejected...forcefully."
bacchite_red says, "enough, already! get 'em, boys!"

Chat Cutscene:
Cinematic Camera on liberty_lad to bacchite_red
bacchite_red says, "<sigh> that's what i get for hiring the handicapped. you realize you still have nothing to arrest me for? this is all strictly business."
sky_king says, "i'm afraid she has a point."
liberty_lad says, "maybe, but i still..."

#----------

Encounter: Ruby's Retreat
Type: Remove Ally
Allies: bacchite_red
Next: Gentleman's Gentleman

Start Cutscene:
bank_manager says telepathically, "i say! is someone out there? i could use a spot of assistance here!"
sky_king says, "that voice sounds familiar."
liberty_lad says, "alfred!"

#----------

Encounter: Gentleman's Gentleman
Type: Rescue Caged
Allies: bank_manager
Next: End

Alert Cutscene:
Red arrow on bank_manager
Camera on liberty_lad
liberty_lad says, "it's coming from the next room. hang on, alfred!"

Start Cutscene:
Camera on bank_manager
liberty_lad says, "there he is!"
sky_king says, "we'll have you free in a jiffy, mr. alfred."

End Cutscene:
liberty_lad walks to bank_manager
Cinematic camera on liberty_lad to bank_manager
bank_manager turns to liberty_lad
bank_manager says, "thank goodness you've returned, master robin! things are in a dreadful state!"


In the "Ruby's Revenge" encounter, I wanted the head badguy (bacchite_red) to be in the scene, and be interrogate-able, but not actually take part in the fight. So I set her up as an Ally and made it a Chat Encounter. Then I have "Ruby's Retreat", a Remove Ally Encounter, to get rid of her. All that plays out fine, but then the next encounter, "Gentleman's Gentleman", never starts. Where am I messing up? Is there a better way to accomplish what I'm trying to do?
Title: Re: JKC wrestles w/EZ Script
Post by: BentonGrey on February 24, 2009, 02:01:46 AM
Hmm, on a quick read through I'm not seeing anything out of the ordinary.  I'll try and give it a closer reading tomorrow.
Title: Re: JKC wrestles w/EZ Script
Post by: M25 on February 24, 2009, 02:19:11 AM
bank_manager is not a part of FFvTTR, so that may be the problem.

It does play for me, but I had to add the bank_manager.

At any rate, you don't need the Remove Ally encounter.  It is used to remove named allies that follow you around, not regular allies that are only a part of a single encounter.  EZ script will remove the chat character automatically.


Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on February 24, 2009, 03:11:36 AM
Quote from: M25 on February 24, 2009, 02:19:11 AM
bank_manager is not a part of FFvTTR

Aha, that's probably it. Looking at FFEdit, there is a template for him in my main FFX3 folder (which has all kinds of add-on clutter in it), but not in the "clean" install I did for my mod folder. I'll swap it out for something else.

QuoteAt any rate, you don't need the Remove Ally encounter.

Even better. Thanks!
Title: Re: JKC wrestles w/EZ Script
Post by: M25 on February 24, 2009, 03:18:27 AM
You can change the dat files directory in the configuration window (under the Panels menu) to the actual mod folder you are using and it will point out when a character is missing.


Title: Re: JKC wrestles w/EZ Script
Post by: BentonGrey on February 24, 2009, 03:38:55 AM
D'oh!  You know, I noticed that, but I thought that he was probably someone JKC had added in.  You know what they say about assumptions. :P
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on February 25, 2009, 12:14:40 AM
A question about "Examine" encounters: I notice that after you've clicked on the object, it disappears a few seconds later. Is there a way to make the object stay around?
Title: Re: JKC wrestles w/EZ Script
Post by: M25 on February 25, 2009, 12:51:09 AM
If you give an object or character a name, then they won't be culled when the encounter is over.

Objects: crate named bob

Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on February 25, 2009, 01:08:46 AM
Great, thanks! Can't have that giant penny disappearing from the Batcave.  ;)
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on October 17, 2009, 10:43:41 PM
So, playing the demo for "Arkham Asylum" put me in the mood to work on this again.  ^_^ A couple questions:

1) How do you get your mission objectives to show up on the "Objectives" tab? I've got them called out in my script, e.g.:

Encounter: Every Cop A Criminal
Type: Interrogation
Marker: policestation
Villains: cop_crooked
Minions: cop_crooked
Primary Objective: "defeat the crooked cops!"
Next: Divide and Conquer


and I used the EZ Script Editor to generate the captions (and FFEdit to generate the language DATs). All the dialogue and talking heads stuff works, but the Objectives are blank. Is there something else I need to do?

2) Is there a way to get rid of that initial cut scene when you start a new campaign (the animated one that recaps the first game)?

Thanks!
Title: Re: JKC wrestles w/EZ Script
Post by: Previsionary on October 17, 2009, 10:46:03 PM
2. You can't completely remove the opening cutscene like you could in FF1, but Lunarman made a simple fix for that sometime ago. Find it here: http://thedod.freedomforceforever.com/
Title: Re: JKC wrestles w/EZ Script
Post by: John Jr. on October 17, 2009, 11:52:26 PM
Another Mod? Great!
The only thing I saw missing was the prestige and xp values to your objective.
Maybe something like this works:
Primary Objective: "Defeat the crooked cops" for 200 prestige and 10 xp
Hope it helps!
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on October 18, 2009, 08:55:52 PM
Previsionary - I'm getting a "Error 403 - Forbidden" when I try to follow that link.

John Jr. - Aha! That did the trick. Thanks! I wondered why there were prestige awards in the Legion mod, when they weren't actually levelling up (great mod, by the way).  :lol:
Title: Re: JKC wrestles w/EZ Script
Post by: John Jr. on October 18, 2009, 09:14:04 PM
Quote from: JKCarrier on October 18, 2009, 08:55:52 PM
Previsionary - I'm getting a "Error 403 - Forbidden" when I try to follow that link.

John Jr. - Aha! That did the trick. Thanks! I wondered why there were prestige awards in the Legion mod, when they weren't actually levelling up (great mod, by the way).  :lol:

I'm glad you liked the Mod, JK. I will use more of your creations in part 2 (i love your  70's Supergirl!).
I'm receiving the "Error 403 - Forbidden" message too, but I have the files you need. I'll send it to you.
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on October 18, 2009, 11:19:41 PM
Got the start files, thanks John!
Title: Re: JKC wrestles w/EZ Script
Post by: John Jr. on October 18, 2009, 11:54:00 PM
You're welcome, JK.
Good luck with the Mod!
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on October 19, 2009, 08:18:17 PM
I'm having trouble setting up a "Heist" encounter. The encounter itself seems to work, but neither the "Item Lost" nor the "Item Recovered" cutscenes play. As soon as I beat the enemies (or they escape), it just jumps immediately to the next encounter. Here's the script:

#----------

Encounter: Z Marks the Spot
Type: Heist
Villains: mafioso
Minions: thug_with_bat, thug_with_gun
Item: zorro
Marker: museum1
Primary Objective: "recover the stolen painting!" for 1 prestige and 1 xp
Next: Crime Alley Reunion

Alert Cutscene:
Set lighting to night
Camera on jeweler1 zoom 1000 heading 180
narrator says, "night in gotham city."
narrator says, "normally, the masked crimefighter known as batman patrols these streets..."
Camera on batgirl zoom 0 heading 45
narrator says, "...but tonight a different figure lurks on the rooftops."
batgirl says, "it's been over a week now since anyone's seen batman. OR bruce wayne."
batgirl says, "if anyone can take care of himself, it's the caped crusader."
batgirl says, "but i can't help feeling that something is seriously wrong."
Play sound alarm_readyroom at batgirl
batgirl turns to Villain1
batgirl says, "an alarm! sounds like it's coming from the gotham museum."
Red Arrow on Villain1

Start Cutscene:
Remove Arrow on mafioso
Cinematic Camera on Minion1 to Villain1
Minion1 says, "no cops, no batman...this is the life!"
Villain1 turns to Minion1
Villain1 says, "shaddup and grab dat pitchur for the boss!"
Cinematic Camera on batgirl to Villain1
batgirl turns to Villain1
batgirl says, "i'm happy you boys have an appreciation for fine art..."
batgirl says, "...but that doesn't mean you can take it home with you!"
Villain1 turns to batgirl
Villain1 says, "crud! it's the bat-dame! grab the merch and run!"

Item Recovered Cutscene:
Cinematic Camera on batgirl
batgirl says, "wait...this isn't a painting, it's an old movie poster!"
batgirl says, "'the mark of zorro'."
batgirl says, "out of all the pieces in the museum, why steal this?"

Item Lost Cutscene:
Cinematic Camera on batgirl
batgirl says, "they got away!"
batgirl says, "(sigh) all that time in washington playing congresswoman has made me rusty."
batgirl says, "i'm glad robin wasn't here to see that. he'd never let me hear the end of it!"

#----------
Title: Re: JKC wrestles w/EZ Script
Post by: M25 on October 20, 2009, 02:40:19 PM
It may be a bug in EZ script.  As a work around, you can put a Cutscene encounter in between Z Marks the Spot and Crime Alley Reunion

Z Marks the Spot
Next: if Item Lost: Painting Lost
Next: if Item Recovered: Painting Recovered

...

Painting Lost
Type: Cutscene
Next: Crime Alley Reunion
Start Cutscene
<the item lost cutscene>

Painting Recovered
Type: Cutscene
Next: Crime Alley Reunion
Start Cutscene
<item recovered cutscene>

Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on October 20, 2009, 04:17:56 PM
Quote from: M25 on October 20, 2009, 02:40:19 PM
As a work around, you can put a Cutscene encounter in between Z Marks the Spot and Crime Alley Reunion

That worked! Thanks!
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on October 22, 2009, 12:57:08 AM
This isn't specifically an EZScript question, but I'll throw it out here anyway, since it relates to my mod:

I'm having trouble getting FFX swaps to work with my built-in characters. Here's the ffxcustom.py entry:

["batgirl","speedincrease","throw","batgirl judo toss"],
["batgirl","energise","grapple","batgirl wrestling hold"],
["robin","energise","tangle","robin bat bola"],
]


Instead of the swaps, they're just doing energize and speed increase.

Here's the script.log:

>>> system/init.py executed
>>> system/localinit.py executed
>>> system\tredir.py executed
Starting ffx.py v. 3.3.1 build 0; branch = main release update
Loading m25ai.py v. 3.3.0 build 3; branch = Gold v.3.3 with Patch
importing missionobjvar.py v1.20
importing MLOG Reader 1.0.23
loading datfiles version 0.256000
Starting General Utilities 1.0.1
missionobjvar(FixLongs): Fixing overflow issue with <SCSTATE_BUOYANT>
missionobjvar defining functions for Campaign play.
Loading m25cutscene.py v.3.2.0 final; May 27, 2007
CustomHeadCurrentTime 1256171941.707000
Starting Height Check module 1.4
Starting System Utilities 1.5
OBJECTS_HEIGHT: 604 entries
NIF_OBJECTS: 482 entries
BUILDINGS_IN_OBJECTS_DAT: 30 entries
BUILDING_DIMENSIONS: 30 entries
Starting skXMapInfo.py  v 0.79 beta
skXMapInfo: m25ai available
Loading m25aiopt.py v.3.2.0 final; branch = swingman 4
FFX Mission Plugin 'firehydrant' imported
FFX Mission Plugin 'zombie' imported
Loading freeroam_keepbuildingdamage.py v.1.0.0 build 0; branch = main
FFX Mission Plugin 'freeroam_keepbuildingdamage' imported
FFX Mission Plugin 'm25ai_lowjumper' imported
FFX Mission Plugin 'm25ai_realitymanipulation' imported
FFX Mission Plugin 'cutscene_power' imported
Loading     m25enc_OPENDOOR.py v.1.0.0 build 0; branch = main
Loading m25enc.py v.3.2.0 July 27, 2008
FFX Mission Plugin 'm25enc_opendoor' imported
Loading     m25enc_simplechoice.py v.1.0.0 build 0; branch = main
FFX Mission Plugin 'm25enc_simplechoice' imported
Starting Built-In Function Wrapper 1.5
('Object_CalcPrestige', 'js')
Loading m25pstory.py v.3.2.0 final; May 27, 2008
>>> C:\Users\J. Kevin Carrier\AppData\Local\Irrational Games\Freedom Force vs the 3rd Reich\temp\mission.py executed
! GetMapInfo
MLOG_Init(keepRunningModules=0): starting up
mlogreader.MLOG_Init: current mission = 'BF002_HOMECOMING'
initialising FFX: skirmish=0
mapinfocaliper0 is not a valid explosion object
mapinfocaliper1 is not a valid explosion object
mapinfocaliper2 is not a valid explosion object
mapinfocaliper3 is not a valid explosion object
storing batgirl1: id_1,62
Campaign_MakeHeroIndex: Making index <c:\program files (x86)\steam\steamapps\common\freedom force vs. the 3rd reich\batfam\HeroIndexData.txt>
m25obj_2 thug_with_bat museum1_minion1
m25obj_4 thug_with_bat museum1_minion2
m25obj_6 mafioso museum1_villain1
CS_SetLights cannot set orientation of osc_pat_park_lamp1
CS_SetLights cannot set orientation of osc_pat_park_lamp100
CS_SetLights cannot set orientation of osc_pat_park_lamp101
CS_SetLights cannot set orientation of osc_pat_park_lamp102
CS_SetLights cannot set orientation of osc_pat_park_lamp103
CS_SetLights cannot set orientation of osc_pat_park_lamp104
CS_SetLights cannot set orientation of osc_pat_park_lamp105
CS_SetLights cannot set orientation of osc_pat_park_lamp106
CS_SetLights cannot set orientation of osc_pat_park_lamp107
CS_SetLights cannot set orientation of osc_pat_park_lamp108
CS_SetLights cannot set orientation of osc_pat_park_lamp109
CS_SetLights cannot set orientation of osc_pat_park_lamp110
CS_SetLights cannot set orientation of osc_pat_park_lamp111
CS_SetLights cannot set orientation of osc_pat_park_lamp112
CS_SetLights cannot set orientation of osc_pat_park_lamp113
CS_SetLights cannot set orientation of osc_pat_park_lamp117
CS_SetLights cannot set orientation of osc_pat_park_lamp118
CS_SetLights cannot set orientation of osc_pat_park_lamp119
CS_SetLights cannot set orientation of osc_pat_park_lamp120
CS_SetLights cannot set orientation of osc_pat_park_lamp121
CS_SetLights cannot set orientation of osc_pat_park_lamp122
CS_SetLights cannot set orientation of osc_pat_park_lamp123
CS_SetLights cannot set orientation of osc_pat_park_lamp124
CS_SetLights cannot set orientation of osc_pat_park_lamp125
CS_SetLights cannot set orientation of osc_pat_park_lamp126
CS_SetLights cannot set orientation of osc_pat_park_lamp127
CS_SetLights cannot set orientation of osc_pat_park_lamp128
CS_SetLights cannot set orientation of osc_pat_park_lamp129
CS_SetLights cannot set orientation of osc_pat_park_lamp13
CS_SetLights cannot set orientation of osc_pat_park_lamp130
CS_SetLights cannot set orientation of osc_pat_park_lamp131
CS_SetLights cannot set orientation of osc_pat_park_lamp132
CS_SetLights cannot set orientation of osc_pat_park_lamp133
CS_SetLights cannot set orientation of osc_pat_park_lamp134
CS_SetLights cannot set orientation of osc_pat_park_lamp135
CS_SetLights cannot set orientation of osc_pat_park_lamp136
CS_SetLights cannot set orientation of osc_pat_park_lamp137
CS_SetLights cannot set orientation of osc_pat_park_lamp138
CS_SetLights cannot set orientation of osc_pat_park_lamp139
CS_SetLights cannot set orientation of osc_pat_park_lamp14
CS_SetLights cannot set orientation of osc_pat_park_lamp140
CS_SetLights cannot set orientation of osc_pat_park_lamp141
CS_SetLights cannot set orientation of osc_pat_park_lamp142
CS_SetLights cannot set orientation of osc_pat_park_lamp143
CS_SetLights cannot set orientation of osc_pat_park_lamp144
CS_SetLights cannot set orientation of osc_pat_park_lamp145
CS_SetLights cannot set orientation of osc_pat_park_lamp146
CS_SetLights cannot set orientation of osc_pat_park_lamp147
CS_SetLights cannot set orientation of osc_pat_park_lamp148
CS_SetLights cannot set orientation of osc_pat_park_lamp149
CS_SetLights cannot set orientation of osc_pat_park_lamp150
CS_SetLights cannot set orientation of osc_pat_park_lamp151
CS_SetLights cannot set orientation of osc_pat_park_lamp152
CS_SetLights cannot set orientation of osc_pat_park_lamp153
CS_SetLights cannot set orientation of osc_pat_park_lamp154
CS_SetLights cannot set orientation of osc_pat_park_lamp155
CS_SetLights cannot set orientation of osc_pat_park_lamp156
CS_SetLights cannot set orientation of osc_pat_park_lamp157
CS_SetLights cannot set orientation of osc_pat_park_lamp158
CS_SetLights cannot set orientation of osc_pat_park_lamp159
CS_SetLights cannot set orientation of osc_pat_park_lamp160
CS_SetLights cannot set orientation of osc_pat_park_lamp161
CS_SetLights cannot set orientation of osc_pat_park_lamp162
CS_SetLights cannot set orientation of osc_pat_park_lamp163
CS_SetLights cannot set orientation of osc_pat_park_lamp164
CS_SetLights cannot set orientation of osc_pat_park_lamp2
CS_SetLights cannot set orientation of osc_pat_park_lamp22
CS_SetLights cannot set orientation of osc_pat_park_lamp23
CS_SetLights cannot set orientation of osc_pat_park_lamp3
CS_SetLights cannot set orientation of osc_pat_park_lamp4
CS_SetLights cannot set orientation of osc_pat_park_lamp83
CS_SetLights cannot set orientation of osc_pat_park_lamp84
CS_SetLights cannot set orientation of osc_pat_park_lamp85
CS_SetLights cannot set orientation of osc_pat_park_lamp86
CS_SetLights cannot set orientation of osc_pat_park_lamp87
CS_SetLights cannot set orientation of osc_pat_park_lamp88
CS_SetLights cannot set orientation of osc_pat_park_lamp89
CS_SetLights cannot set orientation of osc_pat_park_lamp90
CS_SetLights cannot set orientation of osc_pat_park_lamp91
CS_SetLights cannot set orientation of osc_pat_park_lamp92
CS_SetLights cannot set orientation of osc_pat_park_lamp93
CS_SetLights cannot set orientation of osc_pat_park_lamp94
CS_SetLights cannot set orientation of osc_pat_park_lamp95
CS_SetLights cannot set orientation of osc_pat_park_lamp96
CS_SetLights cannot set orientation of osc_pat_park_lamp97
CS_SetLights cannot set orientation of osc_pat_park_lamp98
CS_SetLights cannot set orientation of osc_pat_park_lamp99
initialising FFQ_initialiseExtras()
clearCarrierRegistration: clearing attribute 'speedincreasetothrowbatgirl1' for destroyed object 'mapinfocaliper0'
clearCarrierRegistration: clearing attribute 'energisetograpplebatgirl1' for destroyed object 'mapinfocaliper0'
clearCarrierRegistration: clearing attribute 'speedincreasetothrowbatgirl1' for destroyed object 'mapinfocaliper1'
clearCarrierRegistration: clearing attribute 'energisetograpplebatgirl1' for destroyed object 'mapinfocaliper1'
clearCarrierRegistration: clearing attribute 'speedincreasetothrowbatgirl1' for destroyed object 'mapinfocaliper2'
clearCarrierRegistration: clearing attribute 'energisetograpplebatgirl1' for destroyed object 'mapinfocaliper2'
clearCarrierRegistration: clearing attribute 'speedincreasetothrowbatgirl1' for destroyed object 'mapinfocaliper3'
clearCarrierRegistration: clearing attribute 'energisetograpplebatgirl1' for destroyed object 'mapinfocaliper3'
initAttribsForChar: working on civilian_male1 (civilian_male)
initAttribsForChar: working on civilian_male14 (civilian_male)
initAttribsForChar: working on civilian_male2 (civilian_male)
initAttribsForChar: working on civilian_male24 (civilian_male)
initAttribsForChar: working on batgirl1 (batgirl)
initAttribsForChar (batgirl): looking at attribute wall climbing
initAttribsForChar (batgirl): looking at attribute cybernetic brain
initAttribsForChar (batgirl): looking at attribute heroic
initAttribsForChar (batgirl): looking at attribute ffqtracking
execInitAttrib: init ffqtracking attribute
    on batgirl1 of template batgirl (batgirl)
initAttribsForChar: working on civilian_male11 (civilian_male)
initAttribsForChar: working on civilian_male16 (civilian_male)
initAttribsForChar: working on civilian_male12 (civilian_male)
initAttribsForChar: working on civilian_male17 (civilian_male)
initAttribsForChar: working on civilian_male22 (civilian_male)
initAttribsForChar: working on m25obj_4 (thug_with_bat)
initAttribsForChar (thug_with_bat): looking at attribute timid
initAttribsForChar (thug_with_bat): looking at attribute weak minded
initAttribsForChar: working on m25obj_2 (thug_with_bat)
initAttribsForChar (thug_with_bat): looking at attribute timid
initAttribsForChar (thug_with_bat): looking at attribute weak minded
initAttribsForChar: working on m25obj_6 (mafioso)
initAttribsForChar (mafioso): looking at attribute disciplined
initAttribsForChar (mafioso): looking at attribute unbeliever
Plugin 'firehydrant' OnPostInit() called
Plugin 'zombie' has no OnPostInit()
Plugin 'freeroam_keepbuildingdamage' OnPostInit() called
Plugin 'm25ai_lowjumper' has no OnPostInit()
Plugin 'm25ai_realitymanipulation' has no OnPostInit()
Plugin 'cutscene_power' has no OnPostInit()
Plugin 'm25enc_opendoor' has no OnPostInit()
Plugin 'm25enc_simplechoice' has no OnPostInit()
Traceback (innermost last):
  File "c:\program files (x86)\steam\steamapps\common\freedom force vs. the 3rd reich\.\batfam\missions\scripts\skXMapInfo.py", line 685, in MapInfo_CheckObjects2
    Object_UpdateGridPos (ms)
  File "c:\program files (x86)\steam\steamapps\common\freedom force vs. the 3rd reich\.\batfam\missions\scripts\skXMapInfo.py", line 565, in Object_UpdateGridPos
    if ts not in ff.MapInfo [maGrid [0]] [maGrid [1]]:
KeyError: 7
addArrow m25obj_6arrow m25obj_6 0 1


Any idea what I'm doing wrong?
Title: Re: JKC wrestles w/EZ Script
Post by: Previsionary on October 22, 2009, 01:30:57 AM
Nothing looks wrong with your state swaps and nothing in the script.log points out any errors on that end (of course, I did just glance it). Have you tried running the powerID generator? Do your stateswaps work in rumble room at all?
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on October 22, 2009, 04:12:10 AM
Ah, I knew I was forgetting something. Running the Power ID fixed it. Thanks!
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on October 24, 2009, 02:28:25 AM
My first mission is working well, so I moved on to mission 2...and of course, ran into problems right away.   :angry:

My hero isn't spawning. When you go to select your squad, he's right there on the list (there's only one hero available for this particular mission), but once the mission starts, it skips the initial cut scene and goes right to the first encounter, with no hero present.

It might be a map problem. The one I'm using (the "Witness" mission from the FFv3R campaign) wasn't EZScript-ready, so I had to add the "skirmishspawn" and "encounter1", "encounter2", etc. markers myself. I also deleted all the Centurions, Nazis, and other enemies, as well as some objects that I didn't want on there. Maybe I messed something up in the process?

I'm using the same map for the base screen as the mission. Is that a no-no?

Here's my EZScript:
Story: Stately Manor

#----------

Encounter: On The Lawn
Type: Cutscene
Next: For Whom The Bell Tolls, Bugs In The System, A Sprinkle A Day, Hunt A, Hunt B, Hunt C

Start Cutscene:
Unfade for 2 seconds
Camera on mansion1
narrator says, "stately wayne manor."
narrator says, "the teen wonder grew up on these palatial grounds."
narrator says, "but it seems he is no longer welcome..."
Camera on robin
robin says, "uh-oh. it looks like the security codes have been changed."
robin says, "i've got about 30 seconds to disable the alarm control box before all heck breaks loose."
robin says, "if i can just remember where it is..."

#----------

Encounter: For Whom The Bell Tolls
Type: Custom
Actions: Immediate Countdown, Object Can Be Examined
Objects: nazihq_computer_short
Time: 30
Primary Objective: "disable the alarm!" for 0 prestige and 0 xp
Next: If Timer expired: It Tolls For Thee
Next: If Timer still going: Toll Deferred

Alert Cutscene:
Yellow arrow on Object1

#----------

Encounter: It Tolls For Thee
Type: Cutscene
Next: Lose

Start Cutscene:
Set Lighting to red alert
Camera on robin
Play Sound alarm_readyroom at robin
robin plays animation stunned
robin says, "the alarm! i've blown it!"

#----------

Encounter: Toll Deferred
Type: Cutscene
Next: None

Start Cutscene:
Camera on robin
robin says, "<whew!> that takes care of the alarm."
robin says, "now, once the coast is clear, i can head down to the batcave."

#----------

Encounter: A Sprinkle A Day
Type: Examine
Objects: nazihq_computer_short
Next: None

Alert Cutscene:
Yellow arrow on Object1

Examine Cutscene:
Camera on robin
Remove Arrow on Object1
Play effect effect_ffx_rain at Object1
robin says, "oops. heh. that's just the controls to the sprinkler system."

#----------

Encounter: Bugs In The System
Type: Examine
Objects: nazihq_computer_short
Next: None

Alert Cutscene:
Yellow arrow on Object1

Examine Cutscene:
Camera on robin
Play effect effect_ffx_electricsparks at Object1
robin says, "rats. that's not the alarm box...it's just a bug zapper."

#----------

Encounter: Hunt A
Type: Hunt
Minions: lion
Primary Objective: "defeat the first patrol!" for 0 prestige and 0 xp
Next: None

#----------

Encounter: Hunt B
Type: Hunt
Minions: lion
Primary Objective: "defeat the second patrol!" for 0 prestige and 0 xp
Next: None

#----------

Encounter: Hunt C
Type: Hunt
Minions: lion
Primary Objective: "defeat the third patrol!" for 0 prestige and 0 xp
Next: None

#----------

Encounter: Cat Got Your Tongue
Type: Fight
Villains: catman
Primary Objective: "take out the final guard!" for 0 prestige and 0 xp
Starts when: Toll Deferred at End, Hunt A at End, Hunt B at End, Hunt C at End
Next: End

Alert Cutscene:
Camera on robin
Shake camera
robin says, "Uh-oh. That doesn't sound good."
Red arrow on catman

Start Cutscene:
Remove arrow on catman
Cinematic camera on robin to catman
catman says, "not so fast, teen wonder!"
robin says, "oh, you have got to be kidding me. cat-man??"
catman says, "of course! who else could tame those fierce felines to do his bidding?"
robin says, "er... catwoman?"
catman says, "that was a rhetorical question, you ninny! the claws of my robo-cat will make short work of you!"

End Cutscene:
Camera on robin
robin says, "there's no way a doofus like cat-man is the mastermind behind this."
robin says, "he's just a pawn in a bigger game."
robin says, "hopefully i can find some answers in the batcave."

#----------


And here's the script.log:
>>> system/init.py executed
>>> system/localinit.py executed
>>> system\tredir.py executed
Starting ffx.py v. 3.3.1 build 0; branch = main release update
Loading m25ai.py v. 3.3.0 build 3; branch = Gold v.3.3 with Patch
importing missionobjvar.py v1.20
importing MLOG Reader 1.0.23
loading datfiles version 0.256000
Starting General Utilities 1.0.1
missionobjvar(FixLongs): Fixing overflow issue with <SCSTATE_BUOYANT>
missionobjvar defining functions for Campaign play.
Loading m25cutscene.py v.3.2.0 final; May 27, 2007
CustomHeadCurrentTime 1256349657.327000
Starting Height Check module 1.4
Starting System Utilities 1.5
OBJECTS_HEIGHT: 604 entries
NIF_OBJECTS: 482 entries
BUILDINGS_IN_OBJECTS_DAT: 30 entries
BUILDING_DIMENSIONS: 30 entries
Starting skXMapInfo.py  v 0.79 beta
skXMapInfo: m25ai available
Loading m25aiopt.py v.3.2.0 final; branch = swingman 4
FFX Mission Plugin 'firehydrant' imported
FFX Mission Plugin 'zombie' imported
Loading freeroam_keepbuildingdamage.py v.1.0.0 build 0; branch = main
FFX Mission Plugin 'freeroam_keepbuildingdamage' imported
FFX Mission Plugin 'm25ai_lowjumper' imported
FFX Mission Plugin 'm25ai_realitymanipulation' imported
FFX Mission Plugin 'cutscene_power' imported
Loading     m25enc_OPENDOOR.py v.1.0.0 build 0; branch = main
Loading m25enc.py v.3.2.0 July 27, 2008
FFX Mission Plugin 'm25enc_opendoor' imported
Loading     m25enc_simplechoice.py v.1.0.0 build 0; branch = main
FFX Mission Plugin 'm25enc_simplechoice' imported
Starting Built-In Function Wrapper 1.5
('Object_CalcPrestige', 'js')
Loading m25pstory.py v.3.2.0 final; May 27, 2008
>>> C:\Users\J. Kevin Carrier\AppData\Local\Irrational Games\Freedom Force vs the 3rd Reich\temp\mission.py executed
! GetMapInfo
MLOG_Init(keepRunningModules=0): starting up
mlogreader.MLOG_Init: current mission = 'BF003_STATELYMANOR'
initialising FFX: skirmish=0
mapinfocaliper3 is not a valid explosion object
mapinfocaliper2 is not a valid explosion object
mapinfocaliper0 is not a valid explosion object
mapinfocaliper1 is not a valid explosion object
m25obj_2 nazihq_computer_short encounter1_object1
addArrow m25obj_2arrow m25obj_2 1 1
m25obj_4 nazihq_computer_short encounter8_object1
m25obj_6 nazihq_computer_short encounter11_object1
addArrow m25obj_4arrow m25obj_4 1 1
addArrow m25obj_6arrow m25obj_6 1 1
initialising FFQ_initialiseExtras()
FFX_UpdateSun: getting default sun
FFX_UpdateSun: setting = (-45.0, 45.0, 1.0, 0.800000011921, (1.0, 1.0, 1.0))
Plugin 'firehydrant' OnPostInit() called
Plugin 'zombie' has no OnPostInit()
Plugin 'freeroam_keepbuildingdamage' OnPostInit() called
Plugin 'm25ai_lowjumper' has no OnPostInit()
Plugin 'm25ai_realitymanipulation' has no OnPostInit()
Plugin 'cutscene_power' has no OnPostInit()
Plugin 'm25enc_opendoor' has no OnPostInit()
Plugin 'm25enc_simplechoice' has no OnPostInit()

Title: Re: JKC wrestles w/EZ Script
Post by: Previsionary on October 24, 2009, 02:46:51 AM
Do you have a "hero_1" marker laid out anywhere? That has to be placed for heroes not directly placed on the map so that they have somewhere to spawn. Also, yes. You can use the same map for both the base and actual mission with no problems.
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on October 24, 2009, 05:22:38 AM
The map had the "hero" markers on it, and I took them off, because I thought that's what the "skirmishspawn" was for.  :doh:  It's working now, thanks again!

Stay tuned for more dumb questions...  :unsure:
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on October 28, 2009, 10:20:36 PM
In a "Disarm Bomb" encounter, what's the proper syntax for marking the bomb with an arrow? I tried "Yellow Arrow on Bomb", "Yellow Arrow on Bomb1", "Yellow Arrow on Object1", and even "Yellow Arrow on alarmbox" (the object template name), and none of 'em worked. I guess if all else fails, I could just put the arrow on the villain guarding it, but I was wondering if there was a correct way to do it.
Title: Re: JKC wrestles w/EZ Script
Post by: M25 on October 29, 2009, 03:29:34 PM
You can't attach an arrow directly to the bomb.  Yeah, put it on one of the villains or on a nearby object.

Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on October 29, 2009, 11:23:01 PM
That'll work. Thanks, M25!

A question about EZ Script Editor: When I tried to generate captions for my latest mission, I got a pop-up box with the message:

Manager.Notify: Unable to invoked notify for generate captions --- '"speech"'
Traceback (most recent call last):
  File "<string>", line 171, in captions
  File "<string>", line 183, in Notify
  File "tested\buildtested\out1.pyz/Edit.manager3", line 88, in Notify
Edit.errors.Error: see previous


Any idea what that means?
Title: Re: JKC wrestles w/EZ Script
Post by: M25 on October 30, 2009, 01:05:57 AM
Urk.  The caption generator didn't work for some reason.

There should be more to that error message if you look back a number of lines in the script.log.  Can I see the rest?

Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on October 30, 2009, 04:08:20 AM
Here's the script.log:

>>> system/init.py executed
>>> system/localinit.py executed
>>> system\tredir.py executed
Starting ffx.py v. 3.3.1 build 0; branch = main release update
Loading m25ai.py v. 3.3.0 build 3; branch = Gold v.3.3 with Patch
importing missionobjvar.py v1.20
importing MLOG Reader 1.0.23
loading datfiles version 0.256000
Starting General Utilities 1.0.1
missionobjvar(FixLongs): Fixing overflow issue with <SCSTATE_BUOYANT>
missionobjvar defining functions for Campaign play.
Loading m25cutscene.py v.3.2.0 final; May 27, 2007
CustomHeadCurrentTime 1256858242.002000
Starting Height Check module 1.4
Starting System Utilities 1.5
OBJECTS_HEIGHT: 604 entries
NIF_OBJECTS: 482 entries
BUILDINGS_IN_OBJECTS_DAT: 30 entries
BUILDING_DIMENSIONS: 30 entries
Starting skXMapInfo.py  v 0.79 beta
skXMapInfo: m25ai available
Loading m25aiopt.py v.3.2.0 final; branch = swingman 4
FFX Mission Plugin 'firehydrant' imported
FFX Mission Plugin 'zombie' imported
Loading freeroam_keepbuildingdamage.py v.1.0.0 build 0; branch = main
FFX Mission Plugin 'freeroam_keepbuildingdamage' imported
FFX Mission Plugin 'm25ai_lowjumper' imported
FFX Mission Plugin 'm25ai_realitymanipulation' imported
FFX Mission Plugin 'cutscene_power' imported
Loading     m25enc_OPENDOOR.py v.1.0.0 build 0; branch = main
Loading m25enc.py v.3.2.0 July 27, 2008
FFX Mission Plugin 'm25enc_opendoor' imported
Loading     m25enc_simplechoice.py v.1.0.0 build 0; branch = main
FFX Mission Plugin 'm25enc_simplechoice' imported
Starting Built-In Function Wrapper 1.5
('Object_CalcPrestige', 'js')
Loading m25pstory.py v.3.2.0 final; May 27, 2008
>>> C:\Users\J. Kevin Carrier\AppData\Local\Irrational Games\Freedom Force vs the 3rd Reich\temp\mission.py executed
! GetMapInfo
MLOG_Init(keepRunningModules=0): starting up
mlogreader.MLOG_Init: current mission = 'BF004_BACKBATCAVE'
initialising FFX: skirmish=0
mapinfocaliper1 is not a valid explosion object
mapinfocaliper0 is not a valid explosion object
mapinfocaliper3 is not a valid explosion object
mapinfocaliper2 is not a valid explosion object
storing hero_1: id_1,31
initialising FFQ_initialiseExtras()
FFX_UpdateSun: getting default sun
FFX_UpdateSun: setting = (-45.0, 45.0, 1.0, 0.800000011921, (1.0, 1.0, 1.0))
clearCarrierRegistration: clearing attribute 'energisetotanglehero_1' for destroyed object 'mapinfocaliper0'
clearCarrierRegistration: clearing attribute 'energisetotanglehero_1' for destroyed object 'mapinfocaliper1'
clearCarrierRegistration: clearing attribute 'energisetotanglehero_1' for destroyed object 'mapinfocaliper2'
clearCarrierRegistration: clearing attribute 'energisetotanglehero_1' for destroyed object 'mapinfocaliper3'
initAttribsForChar: working on hero_1 (robin)
initAttribsForChar (robin): looking at attribute wall climbing
initAttribsForChar (robin): looking at attribute acrobaticamateur
execInitAttrib: init acrobaticamateur attribute
    on hero_1 of template robin (robin)
initAttribsForChar (robin): looking at attribute crack shot
initAttribsForChar (robin): looking at attribute danger sense
Plugin 'firehydrant' OnPostInit() called
Plugin 'zombie' has no OnPostInit()
Plugin 'freeroam_keepbuildingdamage' OnPostInit() called
Plugin 'm25ai_lowjumper' has no OnPostInit()
Plugin 'm25ai_realitymanipulation' has no OnPostInit()
Plugin 'cutscene_power' has no OnPostInit()
Plugin 'm25enc_opendoor' has no OnPostInit()
Plugin 'm25enc_simplechoice' has no OnPostInit()
rex trex_robot trex1_object1
GetCharacterData: called on non-character rex, template=trex_robot
chemset nazihq_lab_machine_1 chemlab1_object1
lincoln penny penny1_object1
joke jokercard jokercard1_object1
batcar batmobile batmobile1_object1
batcomp batcomputer batcomputer1_object1
Traceback (innermost last):
  File "c:\program files (x86)\steam\steamapps\common\freedom force vs. the 3rd reich\.\batfam\missions\scripts\skXMapInfo.py", line 685, in MapInfo_CheckObjects2
    Object_UpdateGridPos (ms)
  File "c:\program files (x86)\steam\steamapps\common\freedom force vs. the 3rd reich\.\batfam\missions\scripts\skXMapInfo.py", line 565, in Object_UpdateGridPos
    if ts not in ff.MapInfo [maGrid [0]] [maGrid [1]]:
KeyError: 1
Title: Re: JKC wrestles w/EZ Script
Post by: M25 on October 30, 2009, 05:13:56 PM
I shouldn't post when I'm tired.  The editor doesn't post anything to script.log.

Make sure you have the editor pointing to the right directory where the language files are stored.  Make sure you don't have any : (colon characters) in the speech.

If that doesn't work, please post your story file.

Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on October 30, 2009, 05:26:13 PM
The editor's pointing to the right directory (I've generated captions for two other missions with no problems), and I don't see any stray colons. Here's the file:

Story: Back To The Batcave

#----------

Encounter: Cleanup On Aisle Five
Type: Cutscene
Next: A Penny Saved, Big Lizard, Card Tricks, Chicks Dig The Car, Chemistry Set, His Masters Voice

Start Cutscene:
Camera on batcomputer1
narrator says, "beneath wayne manor lies...the batcave."
narrator says, "once it was the nerve center of batman's war on crime."
narrator says, "now it lies abandoned."
narrator says, "or so it seems..."
Camera on robin
robin says, "holy homewrecker! somebody trashed the place!"
robin says, "i'd better look around for clues."

#----------

Encounter: A Penny Saved
Type: Examine
Objects: penny named lincoln
Marker: penny1
Next: None

Examine Cutscene:
Camera on robin
robin says, "joe coyne, the penny plunderer. they don't make villains like him anymore."
robin says, "no sign of tampering. and no fingerprints besides batman's, mine, and alfred's."
robin says, "alfred! i haven't been able to contact him."
robin says, "i hope he wasn't here when... <ulp!>"

#----------

Encounter: Big Lizard
Type: Examine
Objects: trex_robot named rex
Marker: trex1
Next: None

Examine Cutscene:
Camera on robin
robin says, "one of the robots from dinosaur island."
robin says, "someone's been poking around, maybe tried to get it up and running."
robin says, "but the thing hasn't worked in years."

#----------

Encounter: Card Tricks
Type: Examine
Objects: jokercard named joke
Marker: jokercard1
Next: None

Examine Cutscene:
Camera on robin
robin says, "the joker! that grinning ghoul!"
robin says, "i'll bet he has something to do with this."
robin says, "hmm. i wonder how batgirl is doing up at arkham?"
robin says, "maybe i should have gone with her?"

#----------

Encounter: Chicks Dig The Car
Type: Examine
Objects: batmobile named batcar
Marker: batmobile1
Next: None

Examine Cutscene:
Camera on robin
robin says, "the batmobile...wrecked."
robin says, "they deliberately rammed it into the wall."
robin says, "but no unauthorized person should be able to even start it up."

#----------

Encounter: Chemistry Set
Type: Examine
Objects: nazihq_lab_machine_1 named chemset
Marker: chemlab1
Next: None

Examine Cutscene:
Camera on robin
robin says, "the chemistry lab."
robin says, "that bunsen burner is still lit...someone's been here recently!"
robin says, "looks like they were halfway through an experiment."
robin says, "this chemical compound looks familiar..."

#----------

Encounter: His Masters Voice
Type: Examine
Objects: batcomputer named batcomp
Marker: batcomputer1
Next: None

Examine Cutscene:
Camera on robin
robin says, "the batcomputer looks mostly intact."
robin says, "but the surveillance tapes have been wiped clean."
robin says, "except for this one..."
batman says telepathically, "...batman recording mission log 2473-78."
batman says telepathically, "a quiet night, by gotham standards. some petty crime, but no sign of organized mob or supervillain activity."
batman says telepathically, "still investigating leads into..."
batman says telepathically, ".........."
batman says telepathically, "...what?"
batman says telepathically, "i see. this changes everything."
batman says telepathically, "that's it, then. i can no longer continue my crimefighting career."
batman says telepathically, "mission log 2473-78 concluded. batman out."
robin says, "holy hallucination! i must be hearing things!"
robin says, "batman would never just quit like that. it makes no sense!"
robin says, "this case is getting crazier by the minute!"

#----------

Encounter: Bat In The Belfry
Type: Interrogation
Villains: manbat_bad
Starts When: A Penny Saved at End, Big Lizard at End, Card Tricks at End, Chicks Dig The Car at End, Chemistry Set at End, His Masters Voice at End
Next: Doctor Langstrom I Presume

Alert Cutscene:
Red arrow on manbat_bad
Camera on robin
Play sound flap at robin
robin says, "what's that sound? there's someone else in the cave!"
robin says, "batman, is that you?"

Start Cutscene:
Cinematic camera on robin to manbat_bad
robin turns to manbat_bad
robin says, "man-bat! how's it going, old buddy? good to see..."
manbat_bad turns to robin
manbat_bad says, "die! diiiiie!"
robin says, "man, this is just not turning out to be my day."

Interrogation Cutscene:
robin walks to manbat_bad
Camera on robin
robin says, "man-bat's supposed to be one of the good guys. the formula batman invented helps keep his bat-form under control."
robin says, "formula! of course!"
robin says, "that's the half-finished chemical mixture i saw... the man-bat antidote!"
robin says, "i'll finish it up, and it should turn him back to normal."

#----------

Encounter: Doctor Langstrom I Presume
Type: Cutscene
Allies: langstrom
Marker: chemlab1
Next: End

Start Cutscene:
play transition
robin teleports to langstrom
Cinematic camera on robin to langstrom
robin turns to langstrom
robin says, "how are you feeling, man-bat...i mean, dr. langstrom?"
langstrom turns to robin
langstrom says, "much better, thanks. look, robin, i'm sorry i attacked you. i wasn't thinking clearly."
robin says, "so i noticed! what happened? i thought your transformations were under control?"
langstrom says, "they were! something must have gone wrong with my last batch of serum."
langstrom says, "as soon as i took it, i could feel my mind slipping."
langstrom says, "i came straight here, hoping batman could help me. but he was gone, and the place was wrecked."
robin says, "you mean you didn't do this?"
langstrom says, "no! i swear! i tried to make the antidote myself, but my bestial side took over completely. thank goodness you arrived when you did."
robin says, "de nada, doc. but now i've got to head upstairs and search the mansion for clues."
langstrom says, "hmm, maybe i'd better mix up a fresh batch of man-bat serum. in case there's trouble."
robin says, "are you sure that's a good idea?"
langstrom says, "listen. this can't be a coincidence. whoever's behind this...this conspiracy attacked me too. i want a piece of them!"
robin says, "suit yourself, doc. i'll take all the help i can get at this point."

#----------
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on October 31, 2009, 08:54:32 PM
I did some more testing on this. Apparently, it's the "batman says telepathically" lines that are causing it to choke. If I take those out, the captions generate fine.
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on November 02, 2009, 09:43:04 PM
One more update on the captions thing: I copied my mission file over to the ffx3/stories directory, ran the "Generate Captions" Rumble Room mod, and that worked fine. So I have a workaround, even if the EZScript Editor problem can't be figured out.  ^_^
Title: Re: JKC wrestles w/EZ Script
Post by: yell0w_lantern on November 02, 2009, 10:12:47 PM
The one time I've used that command (says telepathically) it just played as a normal X says.
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on November 02, 2009, 10:31:30 PM
Quote from: yell0w_lantern on November 02, 2009, 10:12:47 PM
The one time I've used that command (says telepathically) it just played as a normal X says.

Will a normal "X says" still work if the character isn't otherwise in the mission? I'm using it here to represent a tape recording being played.
Title: Re: JKC wrestles w/EZ Script
Post by: yell0w_lantern on November 03, 2009, 01:29:20 PM
No. You would either have the put character X somewhere out of sight on the map, use the narrator or you could play an actual sound file.
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on November 03, 2009, 01:57:04 PM
Quote from: yell0w_lantern on November 03, 2009, 01:29:20 PM
No. You would either have the put character X somewhere out of sight on the map

Hmm, there's an idea. "No wonder we couldn't find Batman, he was stuck in the wall!"  :lol:
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on August 25, 2010, 11:27:57 PM
Ok, with some nagging encouragement from Benton, I pulled out my dusty mod files and started working on this again. And of course, ran into brand-new errors!  :wacko:

On a particular encounter, as soon as the Alert Cutscene starts playing, I get the following message printing out on the screen:

NEW CIVILIAN/TANK:RUBY_RYDER.RUN DATFILES.CAMP
NEW CIVILIAN/TANK:ALFRED.RUN DATFILES.CAMP
(this repeats a few times, followed by)
CAMPAIGN.SETMISSING COMPLEX ATTRIBUTES()

and the game starts stuttering, hesitating every couple of seconds.

Here's the EZ script for that encounter (with cheesy dialogue removed):

Spoiler
Encounter: Ruby's Revenge
Type: Chat
Marker: ryder1
Allies: ruby_ryder
Villains: polka_dot_man
Next: Gentleman's Gentleman

Alert Cutscene:
Camera on Hero1
Hero1 says, "blah blah"
Red arrow on ryder1

Start Cutscene:
Cinematic Camera on Hero1 to ruby_ryder
Hero1 Turns to ruby_ryder
ruby_ryder Turns to Hero1
ruby_ryder says, "blah blah"
Hero1 says, "blah blah"
ruby_ryder says, "blah blah"
Cinematic Camera on polka_dot_man
ruby_ryder says, "blah blah"
polka_dot_man plays animation melee_idle
polka_dot_man says, "blah blah"

Chat Cutscene:
Revive all heroes
Cinematic Camera on robin to ruby_ryder
ruby_ryder says, "blah blah"
robin says, "blah blah"

The script.log is huge, full of stuff like this:
m25obj_20 polka_dot_man ryder1_villain1
m25obj_22 ruby_ryder ryder1_ally1
Campaign_MakeHeroIndex: Making index <c:\program files (x86)\steam\steamapps\common\freedom force vs. the 3rd reich\batfam\HeroIndexData.txt>
Campaign_MakeHeroIndex: Complex not set for ruby_ryder. Run datfiles.Campaign_SetMissingComplexAttribs()
Campaign_MakeHeroIndex: Complex not set for alfred. Run datfiles.Campaign_SetMissingComplexAttribs()
GetCharacterData: unable to determine which character has 'complex'=0.  Re-run FFX Control Centre
Campaign_MakeHeroIndex: Making index <c:\program files (x86)\steam\steamapps\common\freedom force vs. the 3rd reich\batfam\HeroIndexData.txt>
Campaign_MakeHeroIndex: Complex not set for ruby_ryder. Run datfiles.Campaign_SetMissingComplexAttribs()
Campaign_MakeHeroIndex: Complex not set for alfred. Run datfiles.Campaign_SetMissingComplexAttribs()
GetCharacterData: unable to determine which character has 'complex'=0.  Re-run FFX Control Centre


I've re-run the Control Centre several times to no avail. (and yes, the Data Folder is set to my mod's directory) Any ideas what's going on here?
Title: Re: JKC wrestles w/EZ Script
Post by: John Jr. on August 26, 2010, 01:28:08 AM
Check out the "HeroIndexData" and see if these characters are listed with individual numbers. If you classified them as civilians before you run Control Center they won't have "complex numbers" and the game won't be able to load them correctly.
You can check it out in FFEdit too, just open the "Templates" tab and look for "complex" in the "Attributes Overrides" list.
Hope it helps.
Title: Re: JKC wrestles w/EZ Script
Post by: BentonGrey on August 26, 2010, 06:57:11 AM
Wow.........that is SUPER helpful.  Why didn't my game give me that info when I had those types of errors?  That hardly seems fair.  Anyway, ASSUMING that your issue is indeed what the game seems to be telling you, JJ is right.  You've run into the nefarious civilian error.  Templates set as civilians are ignored by the CC, so you'll need to make sure you have them set as minion, cop, hero, or what have you, in order to ensure they get branded.  You can always change them back to civilians later.

Ack!  I almost forgot!  I'm thrilled to hear you're coming back to it, JKC.  I can't wait to play your mod!  Definitely post if/when you run into any errors, and we'll see you through.
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on August 26, 2010, 02:21:39 PM
Thanks, John...the "Civilian Bug" was the problem, and switching the object type fixed the encounter.

Now, of course, the next encounter is bugged. :doh: As soon as the Alert Cutscene starts, the screen goes into "cutscene mode", but then the game locks up before the dialogue is delivered. Here's the script:

Spoiler
Encounter: Gentleman's Gentleman
Type: Rescue Caged
Marker: gentleman1
Allies: alfred
Villains: thug_with_bat
Minions: thug_with_bat
Next: End

Alert Cutscene:
Cinematic Camera on robin to manbat
alfred says, "blah blah"
manbat says, "blah blah"
robin says, "blah blah"
Red arrow on alfred
robin says, "blah blah"

Start Cutscene:
Camera on alfred
robin says, "blah blah"
manbat says, "blah blah"

End Cutscene:
robin walks to alfred
Cinematic camera on robin to alfred
alfred turns to robin
alfred says, "blah blah"
robin turns to alfred
robin says, "blah blah"
alfred says, "blah blah"

and the script.log:

Spoiler
>>> system/init.py executed
>>> system/localinit.py executed
>>> system\tredir.py executed
Starting ffx.py v. 3.3.1 build 0; branch = main release update
Loading m25ai.py v. 3.3.0 build 3; branch = Gold v.3.3 with Patch
importing missionobjvar.py v1.20
importing MLOG Reader 1.0.23
loading datfiles version 0.256000
Starting General Utilities 1.0.1
missionobjvar(FixLongs): Fixing overflow issue with <SCSTATE_BUOYANT>
missionobjvar defining functions for Campaign play.
Loading m25cutscene.py v.3.2.0 final; May 27, 2007
CustomHeadCurrentTime 1282831183.070000
Starting Height Check module 1.4
Starting System Utilities 1.5
OBJECTS_HEIGHT: 604 entries
NIF_OBJECTS: 482 entries
BUILDINGS_IN_OBJECTS_DAT: 30 entries
BUILDING_DIMENSIONS: 30 entries
Starting skXMapInfo.py  v 0.79 beta
skXMapInfo: m25ai available
Loading m25aiopt.py v.3.2.0 final; branch = swingman 4
FFX Mission Plugin 'firehydrant' imported
FFX Mission Plugin 'zombie' imported
Loading freeroam_keepbuildingdamage.py v.1.0.0 build 0; branch = main
FFX Mission Plugin 'freeroam_keepbuildingdamage' imported
FFX Mission Plugin 'm25ai_lowjumper' imported
FFX Mission Plugin 'm25ai_realitymanipulation' imported
FFX Mission Plugin 'cutscene_power' imported
Loading     m25enc_OPENDOOR.py v.1.0.0 build 0; branch = main
Loading m25enc.py v.3.2.0 July 27, 2008
FFX Mission Plugin 'm25enc_opendoor' imported
Loading     m25enc_simplechoice.py v.1.0.0 build 0; branch = main
FFX Mission Plugin 'm25enc_simplechoice' imported
Starting Built-In Function Wrapper 1.5
('Object_CalcPrestige', 'js')
Loading m25pstory.py v.3.2.0 final; May 27, 2008
>>> C:\Users\J. Kevin Carrier\AppData\Local\Irrational Games\Freedom Force vs the 3rd Reich\temp\mission.py executed
! GetMapInfo
MLOG_Init(keepRunningModules=0): starting up
mlogreader.MLOG_Init: current mission = 'BF004_BUSINESS'
initialising FFX: skirmish=0
mapinfocaliper0 is not a valid explosion object
mapinfocaliper1 is not a valid explosion object
mapinfocaliper2 is not a valid explosion object
mapinfocaliper3 is not a valid explosion object
storing hero_1: id_1,16
storing hero_2: id_2,31
m25obj_2 roboknight knight1_minion1
m25obj_4 roboknight knight1_minion2
m25obj_6 roboknight knight1_villain1
Template_GetHeight() non-fatal error:
    template 'manbat' not found in list of template heights.
    To detect approximate height, use
    checkHeight(templateList, precise = 'no', repeat = 0, replace = 0, giants = 1, campaign = 0)
Template_GetHeight() non-fatal error:
    template 'robin' not found in list of template heights.
    To detect approximate height, use
    checkHeight(templateList, precise = 'no', repeat = 0, replace = 0, giants = 1, campaign = 0)
initialising FFQ_initialiseExtras()
FFX_UpdateSun: getting default sun
FFX_UpdateSun: setting = (-45.0, 45.0, 1.0, 0.800000011921, (1.0, 1.0, 1.0))
clearCarrierRegistration: clearing attribute 'energisetotanglehero_2' for destroyed object 'mapinfocaliper0'
clearCarrierRegistration: clearing attribute 'energisetotanglehero_2' for destroyed object 'mapinfocaliper1'
clearCarrierRegistration: clearing attribute 'energisetotanglehero_2' for destroyed object 'mapinfocaliper2'
clearCarrierRegistration: clearing attribute 'energisetotanglehero_2' for destroyed object 'mapinfocaliper3'
initAttribsForChar: working on hero_1 (manbat)
initAttribsForChar (manbat): looking at attribute flier
initAttribsForChar (manbat): looking at attribute danger sense
initAttribsForChar (manbat): looking at attribute ffqnimbleflier
execInitAttrib: init ffqnimbleflier attribute
    on hero_1 of template manbat (manbat)
initAttribsForChar (manbat): looking at attribute bezerker
initAttribsForChar: working on hero_2 (robin)
initAttribsForChar (robin): looking at attribute wall climbing
initAttribsForChar (robin): looking at attribute acrobaticamateur
execInitAttrib: init acrobaticamateur attribute
    on hero_2 of template robin (robin)
initAttribsForChar (robin): looking at attribute crack shot
initAttribsForChar (robin): looking at attribute danger sense
initAttribsForChar: working on m25obj_2 (roboknight)
initAttribsForChar (roboknight): looking at attribute armoured
initAttribsForChar (roboknight): looking at attribute grounded
initAttribsForChar (roboknight): looking at attribute cybernetic brain
initAttribsForChar (roboknight): looking at attribute unheroic
initAttribsForChar: working on m25obj_4 (roboknight)
initAttribsForChar (roboknight): looking at attribute armoured
initAttribsForChar (roboknight): looking at attribute grounded
initAttribsForChar (roboknight): looking at attribute cybernetic brain
initAttribsForChar (roboknight): looking at attribute unheroic
initAttribsForChar: working on m25obj_6 (roboknight)
initAttribsForChar (roboknight): looking at attribute armoured
initAttribsForChar (roboknight): looking at attribute grounded
initAttribsForChar (roboknight): looking at attribute cybernetic brain
initAttribsForChar (roboknight): looking at attribute unheroic
Plugin 'firehydrant' OnPostInit() called
Plugin 'zombie' has no OnPostInit()
Plugin 'freeroam_keepbuildingdamage' OnPostInit() called
Plugin 'm25ai_lowjumper' has no OnPostInit()
Plugin 'm25ai_realitymanipulation' has no OnPostInit()
Plugin 'cutscene_power' has no OnPostInit()
Plugin 'm25enc_opendoor' has no OnPostInit()
Plugin 'm25enc_simplechoice' has no OnPostInit()
addArrow m25obj_2arrow m25obj_2 0 1
m25obj_8 thug_with_grenade moth1_minion1
m25obj_10 thug_with_grenade moth1_minion2
m25obj_12 killer_moth moth1_villain1
addArrow m25obj_12arrow m25obj_12 1 1
initAttribsForChar: working on m25obj_8 (thug_with_grenade)
initAttribsForChar (thug_with_grenade): looking at attribute weak minded
initAttribsForChar: working on m25obj_10 (thug_with_grenade)
initAttribsForChar (thug_with_grenade): looking at attribute weak minded
initAttribsForChar: working on m25obj_12 (killer_moth)
initAttribsForChar (killer_moth): looking at attribute ffqglider
execInitAttrib: init ffqglider attribute
    on m25obj_12 of template killer_moth (killer_moth)
2
1
clearCarrierRegistration: clearing attribute 'energisetotanglehero_2' for destroyed object 'm25obj_2'
clearCarrierRegistration: clearing attribute 'stasistocrystallisem25obj_12' for destroyed object 'm25obj_2'
clearCarrierRegistration: clearing attribute 'energisetotanglehero_2' for destroyed object 'm25obj_4'
clearCarrierRegistration: clearing attribute 'stasistocrystallisem25obj_12' for destroyed object 'm25obj_4'
clearCarrierRegistration: clearing attribute 'energisetotanglehero_2' for destroyed object 'm25obj_6'
clearCarrierRegistration: clearing attribute 'stasistocrystallisem25obj_12' for destroyed object 'm25obj_6'
Template_GetHeight() non-fatal error:
    template 'killer_moth' not found in list of template heights.
    To detect approximate height, use
    checkHeight(templateList, precise = 'no', repeat = 0, replace = 0, giants = 1, campaign = 0)
speak('m25obj_12','SPEECH_AN_INTEROGATEME_01')
cshelper: Cutscene [cutscene] submitted for playing
cshelper: Now playing cutscene [cutscene]
Step 1 of 2
0
speakInternal
0
Step 2 of 2
cshelper: Cutscene [cutscene] has ended
clearCarrierRegistration: clearing attribute 'energisetotanglehero_2' for destroyed object 'm25obj_8'
clearCarrierRegistration: clearing attribute 'stasistocrystallisem25obj_12' for destroyed object 'm25obj_8'
clearCarrierRegistration: clearing attribute 'energisetotanglehero_2' for destroyed object 'm25obj_10'
clearCarrierRegistration: clearing attribute 'stasistocrystallisem25obj_12' for destroyed object 'm25obj_10'
m25obj_14 thug_with_gun erase1_minion1
m25obj_16 thug_with_gun erase1_minion2
m25obj_18 eraser erase1_villain1
finances nazihq_secret_plans erase1_object1
addArrow financesarrow finances 1 1
restoring flight state
8
7
initAttribsForChar: working on m25obj_14 (thug_with_gun)
initAttribsForChar (thug_with_gun): looking at attribute timid
initAttribsForChar (thug_with_gun): looking at attribute weak minded
initAttribsForChar: working on m25obj_16 (thug_with_gun)
initAttribsForChar (thug_with_gun): looking at attribute timid
initAttribsForChar (thug_with_gun): looking at attribute weak minded
initAttribsForChar: working on m25obj_18 (eraser)
restoring flight state
9
8
restoring flight state
10
9
clearCarrierRegistration: clearing attribute 'energisetotanglehero_2' for destroyed object 'm25obj_12'
clearCarrierRegistration: clearing attribute 'stasistocrystallisem25obj_12' for destroyed object 'm25obj_12'
clearCarrierRegistration: clearing attribute 'hextoknockoutgasm25obj_18' for destroyed object 'm25obj_12'
clearCarrierRegistration: clearing attribute 'hextoknockoutgasm25obj_18' for destroyed object 'm25obj_14'
clearCarrierRegistration: clearing attribute 'energisetotanglehero_2' for destroyed object 'm25obj_14'
clearCarrierRegistration: clearing attribute 'stasistocrystallisem25obj_12' for destroyed object 'm25obj_14'
clearCarrierRegistration: clearing attribute 'hextoknockoutgasm25obj_18' for destroyed object 'm25obj_16'
clearCarrierRegistration: clearing attribute 'energisetotanglehero_2' for destroyed object 'm25obj_16'
clearCarrierRegistration: clearing attribute 'stasistocrystallisem25obj_12' for destroyed object 'm25obj_16'
m25obj_20 polka_dot_man ryder1_villain1
m25obj_22 ruby_ryder ryder1_ally1
initAttribsForChar: working on m25obj_22 (ruby_ryder)
initAttribsForChar: working on m25obj_20 (polka_dot_man)
initAttribsForChar (polka_dot_man): looking at attribute flier
addArrow ryder1arrow ryder1 0 1
clearCarrierRegistration: clearing attribute 'hextoknockoutgasm25obj_18' for destroyed object 'm25obj_18'
clearCarrierRegistration: clearing attribute 'energisetotanglehero_2' for destroyed object 'm25obj_18'
clearCarrierRegistration: clearing attribute 'stasistocrystallisem25obj_12' for destroyed object 'm25obj_18'
m25obj_24 thug_with_bat gentleman1_minion1
m25obj_26 thug_with_bat gentleman1_minion2
m25obj_28 thug_with_bat gentleman1_villain1
m25obj_30 alfred gentleman1_ally1
m25obj_32 nazihq_killarilla_cage (660.416992188, 149.703994751, 1.9482400603e-005)

So what'd I screw up this time?  :lol:
Title: Re: JKC wrestles w/EZ Script
Post by: BentonGrey on August 26, 2010, 04:23:59 PM
Alright, there isn't anything in the script.log that jumps out at me, but when I get an error like that, it is usually because I've forgotten something.  My first piece of advice would be to check on the animportraits of all characters involved.  Are they all there?  Do the all point to the right place?  I know I've changed meshes some times and forgotten to update the path, thereby causing just such a problem.  Let me know if that leads to anything.  If not, we'll go from there.
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on August 26, 2010, 06:19:27 PM
Geez...wasn't even the animportrait, just a missing head.nif.  :doh: Working fine now, stay tuned for more goofball mistakes...
Title: Re: JKC wrestles w/EZ Script
Post by: BentonGrey on August 26, 2010, 06:47:19 PM
Ha, don't feel to bad about it, JKC.  I've had tons of experience with this stuff by now, but I still make those mistakes EVERY SINGLE TIME I start a project! :P
Title: Re: JKC wrestles w/EZ Script
Post by: John Jr. on August 26, 2010, 10:08:23 PM
There's so many things we have to do to create a mod that's almost sure we'll forget something, JKC. Please feel free to post here any other problem, after all two or three heads are better than one.
I'm glad to hear you're making a mod, it's great to have other EZScript modder around.
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on September 01, 2010, 04:59:02 AM
Question about "Switchable Power Trap" encounters: Is it possible to specify where on the map the switch will appear (the way you can control the placement of Villains, Minions, etc.)?
Title: Re: JKC wrestles w/EZ Script
Post by: BentonGrey on September 01, 2010, 05:14:25 AM
Yes, absolutely you can!  All you have to do is specify a marker for the encounter: place1, and then just like you do with place1_villain1, etc, you can do with switches: place1_switch1.  I hope that's clear!
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on September 01, 2010, 01:32:49 PM
Awesome. Thanks!
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on December 01, 2010, 08:42:32 PM
Hello friends, Captain Clueless is back for more help!  :lol:

This mission starts off with an initial encounter, and then three more encounters are supposed to start simultaneously. Two of the three are working, but the third, a Sabotage encounter, isn't starting. Here's the script (dialogue redacted to minimize spoilers):

Spoiler
Story: Asylum

#----------

Encounter: Inmates Running the Asylum
Type: Fight
Villains: arkhamthug
Minions: arkhamthug
Marker: encounter1
Next: Paging Doctor Howard, Paging Doctor Fine, Why I Oughtta

Alert Cutscene:
Yellow Arrow on Villain1
Camera on batgirl zoom 50 heading 135
batgirl says, "blah"
batgirl says, "blah"
batgirl says, "blah"

Start Cutscene:
Camera on Villain1
Villain1 turns to Minion1
Villain1 says, "blah"
Minion1 turns to Villain1
Minion1 says, "blah"
Villain1 says, "blah"
Cinematic camera on Villain1 to batgirl
batgirl turns to Villain1
batgirl says, "blah"
Minion1 turns to batgirl
Minion1 says, "blah"
Villain1 turns to batgirl
Villain1 says, "blah"
batgirl says, "blah"

End Cutscene:
Camera on batgirl
batgirl says, "blah"
batgirl says, "blah"

#----------

Encounter: Paging Doctor Howard
Type: Chat
Villains: arkhamthug
Minions: arkhamthug
Allies: arkhamdoc
Marker: howard1
Next: None

Alert Cutscene:
Yellow Arrow on Ally1

Start Cutscene:
Cinematic Camera on Villain1 to Ally1
Villain1 turns to Ally1
Villain1 says, "blah"
Ally1 turns to Villain1
Ally1 says, "blah"
Minion1 turns to Ally1
Minion1 says, "blah"
Cinematic camera on batgirl to Villain1
batgirl turns to Villain1
batgirl says, "blah"

Chat Cutscene:
Remove arrow on arkhamdoc
Cinematic camera on Ally1 to batgirl
batgirl turns to Ally1
batgirl says, "blah"
Ally1 turns to batgirl
Ally1 says, "blah"
Ally1 says, "blah"
Ally1 says, "blah"
batgirl says, "blah"
Ally1 says, "blah"
batgirl says, "blah"

#----------

Encounter: Paging Doctor Fine
Type: Rescue Caged
Allies: arkhamdoc
Villains: arkhamthug
Minions: arkhamthug
Marker: fine1
Next: None

Alert Cutscene:
Yellow Arrow on Ally1

Start Cutscene:
Cinematic camera on Villain1 to Ally1
Ally1 turns to Villain1
Ally1 says, "blah"
Villain1 turns to Ally1
Villain1 says, "blah"
Cinematic camera on Minion1 to batgirl
Minion1 turns to batgirl
Minion1 says, "blah"

End Cutscene:
Remove arrow on arkhamdoc
Cinematic camera on batgirl to Ally1
batgirl turns to Ally1
batgirl says, "blah"
Ally1 turns to batgirl
Ally1 says, "blah"
Ally1 says, "blah"
Ally1 says, "blah"
batgirl says, "blah"
Ally1 says, "blah"
batgirl says, "blah"
Ally1 says, "blah"

#----------

Encounter: Why I Oughtta
Type: Sabotage
Villains: arkhampyro
Minions: arkhamthug
Objects: ger_barrel
Marker: pyro1
Next: None

Alert Cutscene:
Yellow arrow on Object1

Start Cutscene:
Camera on Villain1
Villain1 turns to Object1
Villain1 says, "blah"
Minion1 turns to Object1
Minion1 says, "blah"
Villain1 says, "blah"
Cinematic camera on batgirl to Villain1
batgirl turns to Villain1
batgirl says, "blah"
Villain1 turns to batgirl
Villain1 says, "blah"

Sabotage Cutscene:
Camera on batgirl
batgirl says, "blah"

End Cutscene:
Camera on batgirl
batgirl says, "blah"
batgirl says, "blah"

#----------

Encounter: The Joke's On You
Type: Chat
Allies: joker
Villains: teneyedman
Minions: arkhamthug
Starts When: Paging Doctor Howard at End, Paging Doctor Fine at End, Why I Oughtta at End
Marker: joker1
Next: The Gang's All Here

Alert Cutscene:
Camera on batgirl
Play sound fx_thug_gun_2 at batgirl
Play sound fx_thug_gun_2 at batgirl
Play sound fx_thug_gun_2 at batgirl
batgirl turns to teneyedman
batgirl says, "gunshots!"
Yellow Arrow on joker

Start Cutscene:
Camera on teneyedman
teneyedman turns to joker
teneyedman plays animation ranged_4
teneyedman says, "blah"
joker turns to teneyedman
joker plays animation stunned
joker says, "blah"
batgirl says, "blah"
teneyedman turns to batgirl
teneyedman says, "blah"
joker turns to batgirl
joker says, "blah"
joker says, "blah"

End Cutscene:
Remove arrow on joker
batgirl turns to joker
batgirl says, "blah"
joker turns to batgirl
joker says, "blah"
joker says, "blah"
batgirl says, "blah"
joker says, "blah"
joker says, "blah"
batgirl says, "blah"
joker says, "blah"
joker says, "blah"
batgirl says, "blah"
batgirl says, "blah"
joker says, "blah"
joker plays animation ranged_2
joker says, "blah"

#----------

Encounter: The Gang's All Here
Type: Campaign Recruit
Allies: joker
Villains: teneyedman, arkhamthug, arkhampyro
Next: End

#----------

"Why I Oughtta" is the encounter that isn't starting. Here's the script.log:

Spoiler
>>> system/init.py executed
>>> system/localinit.py executed
>>> system\tredir.py executed
Starting ffx.py v. 3.3.1 build 0; branch = main release update
Loading m25ai.py v. 3.3.0 build 3; branch = Gold v.3.3 with Patch
importing missionobjvar.py v1.20
importing MLOG Reader 1.0.23
loading datfiles version 0.256000
Starting General Utilities 1.0.1
missionobjvar(FixLongs): Fixing overflow issue with <SCSTATE_BUOYANT>
missionobjvar defining functions for Campaign play.
Loading m25cutscene.py v.3.2.0 final; May 27, 2007
CustomHeadCurrentTime 1291234931.482000
Starting Height Check module 1.4
Starting System Utilities 1.5
OBJECTS_HEIGHT: 604 entries
NIF_OBJECTS: 482 entries
BUILDINGS_IN_OBJECTS_DAT: 30 entries
BUILDING_DIMENSIONS: 30 entries
Starting skXMapInfo.py  v 0.79 beta
skXMapInfo: m25ai available
Loading m25aiopt.py v.3.2.0 final; branch = swingman 4
FFX Mission Plugin 'firehydrant' imported
FFX Mission Plugin 'zombie' imported
Loading freeroam_keepbuildingdamage.py v.1.0.0 build 0; branch = main
FFX Mission Plugin 'freeroam_keepbuildingdamage' imported
FFX Mission Plugin 'm25ai_lowjumper' imported
FFX Mission Plugin 'm25ai_realitymanipulation' imported
FFX Mission Plugin 'cutscene_power' imported
Loading     m25enc_OPENDOOR.py v.1.0.0 build 0; branch = main
Loading m25enc.py v.3.2.0 July 27, 2008
FFX Mission Plugin 'm25enc_opendoor' imported
Loading     m25enc_simplechoice.py v.1.0.0 build 0; branch = main
FFX Mission Plugin 'm25enc_simplechoice' imported
Starting Built-In Function Wrapper 1.5
('Object_CalcPrestige', 'js')
Loading m25pstory.py v.3.2.0 final; May 27, 2008
>>> C:\Users\J. Kevin Carrier\AppData\Local\Irrational Games\Freedom Force vs the 3rd Reich\temp\mission.py executed
! GetMapInfo
MLOG_Init(keepRunningModules=0): starting up
mlogreader.MLOG_Init: current mission = 'BF005_ASYLUM'
initialising FFX: skirmish=0
mapinfocaliper0 is not a valid explosion object
mapinfocaliper1 is not a valid explosion object
mapinfocaliper2 is not a valid explosion object
mapinfocaliper3 is not a valid explosion object
storing batgirl1: id_1,67
m25obj_2 arkhamthug encounter1_minion1
m25obj_4 arkhamthug encounter1_villain1
addArrow m25obj_4arrow m25obj_4 1 1
initialising FFQ_initialiseExtras()
FFX_UpdateSun: getting default sun
FFX_UpdateSun: setting = (-45.0, 45.0, 1.0, 0.800000011921, (1.0, 1.0, 1.0))
clearCarrierRegistration: clearing attribute 'speedincreasetothrowbatgirl1' for destroyed object 'mapinfocaliper0'
clearCarrierRegistration: clearing attribute 'energisetograpplebatgirl1' for destroyed object 'mapinfocaliper0'
clearCarrierRegistration: clearing attribute 'speedincreasetothrowbatgirl1' for destroyed object 'mapinfocaliper1'
clearCarrierRegistration: clearing attribute 'energisetograpplebatgirl1' for destroyed object 'mapinfocaliper1'
clearCarrierRegistration: clearing attribute 'speedincreasetothrowbatgirl1' for destroyed object 'mapinfocaliper2'
clearCarrierRegistration: clearing attribute 'energisetograpplebatgirl1' for destroyed object 'mapinfocaliper2'
clearCarrierRegistration: clearing attribute 'speedincreasetothrowbatgirl1' for destroyed object 'mapinfocaliper3'
clearCarrierRegistration: clearing attribute 'energisetograpplebatgirl1' for destroyed object 'mapinfocaliper3'
initAttribsForChar: working on batgirl1 (batgirl)
initAttribsForChar (batgirl): looking at attribute wall climbing
initAttribsForChar (batgirl): looking at attribute cybernetic brain
initAttribsForChar (batgirl): looking at attribute heroic
initAttribsForChar (batgirl): looking at attribute ffqtracking
execInitAttrib: init ffqtracking attribute
    on batgirl1 of template batgirl (batgirl)
initAttribsForChar: working on m25obj_2 (arkhamthug)
initAttribsForChar (arkhamthug): looking at attribute timid
initAttribsForChar (arkhamthug): looking at attribute weak minded
initAttribsForChar: working on m25obj_4 (arkhamthug)
initAttribsForChar (arkhamthug): looking at attribute timid
initAttribsForChar (arkhamthug): looking at attribute weak minded
Plugin 'firehydrant' OnPostInit() called
Plugin 'zombie' has no OnPostInit()
Plugin 'freeroam_keepbuildingdamage' OnPostInit() called
Plugin 'm25ai_lowjumper' has no OnPostInit()
Plugin 'm25ai_realitymanipulation' has no OnPostInit()
Plugin 'cutscene_power' has no OnPostInit()
Plugin 'm25enc_opendoor' has no OnPostInit()
Plugin 'm25enc_simplechoice' has no OnPostInit()
Template_GetHeight() non-fatal error:
    template 'arkhamthug' not found in list of template heights.
    To detect approximate height, use
    checkHeight(templateList, precise = 'no', repeat = 0, replace = 0, giants = 1, campaign = 0)
m25obj_6 arkhamthug fine1_minion1
m25obj_8 arkhamthug fine1_villain1
m25obj_10 arkhamdoc fine1_ally1
m25obj_12 nazihq_killarilla_cage (-733.896972656, 593.961975098, 2.05170989037)
addArrow m25obj_10arrow m25obj_10 1 1
ff.DoEncCustom(3,villains = ['arkhampyro'], minions = ['arkhamthug'], cutscenes = [['alertcs', [['priority', 1], ['replace', ['object1', 'object']], ['cutscene', "CS_AddArrow('object1arrow', 'object1', arrow_type=js.ARROW_YELLOW)"]]], ['startcs', [['priority', 1], ['replace', ['villain1', 'villain'], ['object1', 'object'], ['minion1', 'minion']], ['required', 'batgirl'], ['cutscene', 'CS_Start()', "CS_Camera('villain1', dist=-160, yaw=0)", "CS_TurnTo('villain1', 'object1')", "CS_Speak('villain1', 'some gasoline, a little fertilizer, a few odds and ends from the machine shop...', force=0)", "CS_TurnTo('minion1', 'object1')", "CS_Speak('minion1', 'fire! fire!', force=0)", 'CS_Speak(\'villain1\', "that\'s right, she\'s gonna blow up real good!", force=0)', "CS_CinematicCamera('batgirl','villain1')", "CS_TurnTo('batgirl', 'villain1')", 'CS_Speak(\'batgirl\', "i\'m no doctor, but let me guess: general sociopath with an extra helping of pyromania?", force=0)', "CS_TurnTo('villain1', 'batgirl')", "CS_Speak('villain1', 'you forgot violent tendencies and an irrational hatred of spandex. get her!', force=0)", 'CS_End()']]], ['sabotagecs', [['priority', 1], ['required', 'batgirl'], ['cutscene', 'CS_Start()', "CS_Camera('batgirl', dist=-160, yaw=0)", 'CS_Speak(\'batgirl\', "whew, this nut knows his munitions. i\'ve got to carefully remove the trigger mechanism...", force=0)', 'CS_End()']]], ['endcs', [['priority', 1], ['required', 'batgirl'], ['cutscene', 'CS_Start()', "CS_Camera('batgirl', dist=-160, yaw=0)", 'CS_Speak(\'batgirl\', "got it! it\'s harmless now.", force=0)', "CS_Speak('batgirl', 'i wonder what other surprises these nutjobs have in store...?', force=0)", 'CS_End()']]]], marker = 'pyro1', actions="villains fight heroes, allies fight villains, heroes sabotage object", objects = ['ger_barrel'], batgirlsays,"i'mnodoctor,butletmeguess = 'general sociopath with an extra helping of pyromania?"',return_function="StorylineEncounterReturn")
Traceback (innermost last):
  File "c:\program files (x86)\steam\steamapps\common\freedom force vs. the 3rd reich\.\batfam\missions\scripts\m25story.py", line 252, in DoStorylineStateEvent
    DoStorylineState(story, state, event.user)
  File "c:\program files (x86)\steam\steamapps\common\freedom force vs. the 3rd reich\.\batfam\missions\scripts\m25story.py", line 295, in DoStorylineState
    if not StorySetupEncounter(enc_id,story,state,a):
  File "c:\program files (x86)\steam\steamapps\common\freedom force vs. the 3rd reich\.\batfam\missions\scripts\m25story.py", line 385, in StorySetupEncounter
    val = eval('ff.%s(%i,%s,return_function="StorylineEncounterReturn")'%(encname,enc_id,encparams))
  File "<string>", line 1
    ff.DoEncCustom(3,villains = ['arkhampyro'], minions = ['arkhamthug'], cutscenes = [['alertcs', [['priority', 1], ['replace', ['object1', 'object']], ['cutscene', "CS_AddArrow('object1arrow', 'object1', arrow_type=js.ARROW_YELLOW)"]]], ['startcs', [['priority', 1], ['replace', ['villain1', 'villain'], ['object1', 'object'], ['minion1', 'minion']], ['required', 'batgirl'], ['cutscene', 'CS_Start()', "CS_Camera('villain1', dist=-160, yaw=0)", "CS_TurnTo('villain1', 'object1')", "CS_Speak('villain1', 'some gasoline, a little fertilizer, a few odds and ends from the machine shop...', force=0)", "CS_TurnTo('minion1', 'object1')", "CS_Speak('minion1', 'fire! fire!', force=0)", 'CS_Speak(\'villain1\', "that\'s right, she\'s gonna blow up real good!", force=0)', "CS_CinematicCamera('batgirl','villain1')", "CS_TurnTo('batgirl', 'villain1')", 'CS_Speak(\'batgirl\', "i\'m no doctor, but let me guess: general sociopath with an extra helping of pyromania?", force=0)', "CS_TurnTo('villain1', 'batgirl')", "CS_Speak('villain1', 'you forgot violent tendencies and an irrational hatred of spandex. get her!', force=0)", 'CS_End()']]], ['sabotagecs', [['priority', 1], ['required', 'batgirl'], ['cutscene', 'CS_Start()', "CS_Camera('batgirl', dist=-160, yaw=0)", 'CS_Speak(\'batgirl\', "whew, this nut knows his munitions. i\'ve got to carefully remove the trigger mechanism...", force=0)', 'CS_End()']]], ['endcs', [['priority', 1], ['required', 'batgirl'], ['cutscene', 'CS_Start()', "CS_Camera('batgirl', dist=-160, yaw=0)", 'CS_Speak(\'batgirl\', "got it! it\'s harmless now.", force=0)', "CS_Speak('batgirl', 'i wonder what other surprises these nutjobs have in store...?', force=0)", 'CS_End()']]]], marker = 'pyro1', actions="villains fight heroes, allies fight villains, heroes sabotage object", objects = ['ger_barrel'], batgirlsays,"i'mnodoctor,butletmeguess = 'general sociopath with an extra helping of pyromania?"',return_function="StorylineEncounterReturn")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ^
SyntaxError: invalid token
m25obj_14 arkhamthug howard1_minion1
m25obj_16 arkhamthug howard1_villain1
m25obj_18 arkhamdoc howard1_ally1
addArrow m25obj_18arrow m25obj_18 1 1
initAttribsForChar: working on m25obj_14 (arkhamthug)
initAttribsForChar (arkhamthug): looking at attribute timid
initAttribsForChar (arkhamthug): looking at attribute weak minded
initAttribsForChar: working on m25obj_10 (arkhamdoc)
initAttribsForChar: working on m25obj_6 (arkhamthug)
initAttribsForChar (arkhamthug): looking at attribute timid
initAttribsForChar (arkhamthug): looking at attribute weak minded
initAttribsForChar: working on m25obj_8 (arkhamthug)
initAttribsForChar (arkhamthug): looking at attribute timid
initAttribsForChar (arkhamthug): looking at attribute weak minded
initAttribsForChar: working on m25obj_16 (arkhamthug)
initAttribsForChar (arkhamthug): looking at attribute timid
initAttribsForChar (arkhamthug): looking at attribute weak minded
initAttribsForChar: working on m25obj_18 (arkhamdoc)
clearCarrierRegistration: clearing attribute 'speedincreasetothrowbatgirl1' for destroyed object 'm25obj_4'
clearCarrierRegistration: clearing attribute 'energisetograpplebatgirl1' for destroyed object 'm25obj_4'
clearCarrierRegistration: clearing attribute 'speedincreasetothrowbatgirl1' for destroyed object 'm25obj_2'
clearCarrierRegistration: clearing attribute 'energisetograpplebatgirl1' for destroyed object 'm25obj_2'

Any ideas?
Title: Re: JKC wrestles w/EZ Script
Post by: BentonGrey on December 01, 2010, 11:07:44 PM
I've only got time for a very quick look at the moment JKC, but this caught my eye:

SyntaxError: invalid token
m25obj_14 arkhamthug howard1_minion1
m25obj_16 arkhamthug howard1_villain1

I'm guessing that the game is choking on something related to your thugs or those markers.  I'm not entirely sure.
Title: Re: JKC wrestles w/EZ Script
Post by: BentonGrey on December 03, 2010, 07:08:21 AM
Arlight, after a bit more reflection, I think that Batgirl's dialog MIGHT be breaking the encounter.  Send me the unedited mission.txt, JKC.  In the meantime, though, it might be a good idea to double check the markers for that encounter.
Title: Re: JKC wrestles w/EZ Script
Post by: oldmanwinters on December 03, 2010, 07:51:18 AM
Quote from: BentonGrey on December 03, 2010, 07:08:21 AM
Arlight, after a bit more reflection, I think that Batgirl's dialog MIGHT be breaking the encounter.  Send me the unedited mission.txt, JKC.  In the meantime, though, it might be a good idea to double check the markers for that encounter.

I've tried messing around with EZscript, but it seems like my own attempts at original dialogue also tend to break encounters or prematurely end cutscenes.  Any tips?
Title: Re: JKC wrestles w/EZ Script
Post by: BentonGrey on December 03, 2010, 05:19:47 PM
Haha, yeah, EZScript can be rather picky at times.  Check out the sample missions I posted on The Greylands: http://bentongrey.wordpress.com/2010/01/21/the-anatomy-of-an-ezscript-adventure/

That gives you some general advice, and there are a few more related stories there as well.  As for things specifically relating to dialog, there are a few rules that it is wise to follow.  First, always make sure to do your composing in the EZScript Editor.  It will make your life a thousand times easier.  Second, make sure that all the names and markers in your encounters are correct.  If you've got a line of dialog being spoken by Shredder, but Shredder isn't in that encounter, the game will choke.  Third, never use esoteric punctuation.  Stick with periods, commas, question marks, and exclamation points.  Don't use colons, semi-colons, or anything else in your dialog.  The same goes for underscores and other symbols.  Fourth, names are important, so make sure to simplify everything as much as possible.  If you're working with a built-in character called Awesome Guy the Unstoppable!!, then you'll want to simplify that, both for EZScript's sake, and your own.  The simpler something is, the easier it is to remember and check.  So, you'd want to change Awesome Guy's name to awesomeg, or something equally easy.  For built-ins you can always create a string entry that will give them a different display name anyway.

Feel free to post your EZScript drafts, Winters.  We'll be happy to look them over and give you some pointers. :)
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on December 04, 2010, 06:25:56 AM
Quote from: BentonGrey on December 03, 2010, 07:08:21 AM
Arlight, after a bit more reflection, I think that Batgirl's dialog MIGHT be breaking the encounter.  Send me the unedited mission.txt, JKC.  In the meantime, though, it might be a good idea to double check the markers for that encounter.

Thanks, I'll double-check the markers. What's your email?
Title: Re: JKC wrestles w/EZ Script
Post by: JKCarrier on December 04, 2010, 09:42:39 PM
Quote from: BentonGrey on December 03, 2010, 05:19:47 PM
Don't use colons, semi-colons, or anything else in your dialog.

Which turned out to be my problem as well. Thanks for helping me sort it out, Benton!
Title: Re: JKC wrestles w/EZ Script
Post by: BentonGrey on December 05, 2010, 03:20:19 AM
Awesome, so glad I could help JKC!  Feel free to bring me simple problems like that any old time, my friend.  Ha, mine are usually layered with about five problems like that, and maybe something inexplicable too! ;)  I just knew it had to be more complex.  I'm glad to hear it wasn't.

Hmm...I should do a new blog post about things NOT to do with EZScript, because things like adding in a colon or other symbol can cause tons of trouble, and no-one knows about it.
Title: Re: JKC wrestles w/EZ Script
Post by: John Jr. on December 05, 2010, 03:43:44 AM
Good idea, Benton. I had an entire cutscene go crazy because of a ":" in a sentence. EZScript is very sensitive about the way we write our speech lines.