Edit Trigger by Lua

Take command of air and naval assets from post-WW2 to the near future in tactical and operational scale, complete with historical and hypothetical scenarios and an integrated scenario editor.

Moderator: MOD_Command

Post Reply
M1A2G
Posts: 29
Joined: Wed Sep 13, 2017 10:12 am

Edit Trigger by Lua

Post by M1A2G »

ScenEdit_SetTrigger({mode='update',type='UnitRemainsInArea',name='Truck Remains Area',targetfilter={SPECIFICUNIT='Vehicles (Truck x 4)'},area={'rp-261','rp-262','rp-263','rp-264'},td='9 hours'})

I write this to change Trigger's time,but it showes "ScenEdit_SetTrigger 1 : ,Error in Trigger.RemainsIn TDA".
What's wrong with this ?
Attachments
QQ25130..04224148.jpg
QQ25130..04224148.jpg (58.86 KiB) Viewed 6 times
User avatar
michaelm75au
Posts: 11889
Joined: Sat May 05, 2001 8:00 am
Location: Melbourne, Australia

RE: Edit Trigger by Lua

Post by michaelm75au »

Format for TDA is days:hours:minutes:seconds from WIKI

So should read as "td=0:9:0:0"
Michael
M1A2G
Posts: 29
Joined: Wed Sep 13, 2017 10:12 am

RE: Edit Trigger by Lua

Post by M1A2G »

Thanks,and wiki page is "Command Lua Documentation" ?
User avatar
michaelm75au
Posts: 11889
Joined: Sat May 05, 2001 8:00 am
Location: Melbourne, Australia

RE: Edit Trigger by Lua

Post by michaelm75au »

yes
Michael
M1A2G
Posts: 29
Joined: Wed Sep 13, 2017 10:12 am

RE: Edit Trigger by Lua

Post by M1A2G »

if ScenEdit_GetUnit({side="T", name="Vehicles (Truck x 5)"}) ~= nil then
ScenEdit_SetTrigger({mode='update',type='UnitRemainsInArea',name='Truck Remains Area',td='0:0:10:0'})
else ScenEdit_GetUnit({side="T", name="Vehicles (Truck x 5)"}) == nil then
ScenEdit_SetTrigger({mode='update',type='UnitRemainsInArea',name='Truck Remains Area',td='0:0:15:0'})
End

This showed "ERROR: [string "Console"]:3: unexpected symbol near '=='"

How to edit it ?

I want to let action judge that unit has been destoryed then change the Trigger
User avatar
michaelm75au
Posts: 11889
Joined: Sat May 05, 2001 8:00 am
Location: Melbourne, Australia

RE: Edit Trigger by Lua

Post by michaelm75au »

My guess is the missing 'IF' after the ELSE on the 3rd line???
Michael
M1A2G
Posts: 29
Joined: Wed Sep 13, 2017 10:12 am

RE: Edit Trigger by Lua

Post by M1A2G »

if ScenEdit_GetUnit({side="T", name="Vehicles (Truck x 5)"}) ~= nil then
ScenEdit_SetTrigger({mode='update',type='UnitRemainsInArea',name='Truck Remains Area',td='0:0:10:0'})
else if ScenEdit_GetUnit({side="T", name="Vehicles (Truck x 5)"}) == nil then
ScenEdit_SetTrigger({mode='update',type='UnitRemainsInArea',name='Truck Remains Area',td='0:0:15:0'})
end

This showed "ERROR: [string "Console"]:5: 'end' expected (to close 'if' at line 1) near <eof>" ......
User avatar
michaelm75au
Posts: 11889
Joined: Sat May 05, 2001 8:00 am
Location: Melbourne, Australia

RE: Edit Trigger by Lua

Post by michaelm75au »

Shouldn't it be ELSEIF[&:]
Michael
M1A2G
Posts: 29
Joined: Wed Sep 13, 2017 10:12 am

RE: Edit Trigger by Lua

Post by M1A2G »

if ScenEdit_GetUnit({side="T", name="Vehicles (Truck x 5)"}) ~= nil then
ScenEdit_SetTrigger({mode='update',type='UnitRemainsInArea',name='Truck Remains Area',td='0:0:10:0'})
elseif ScenEdit_GetUnit({side="T", name="Vehicles (Truck x 5)"}) == nil then
ScenEdit_SetTrigger({mode='update',type='UnitRemainsInArea',name='Truck Remains Area',td='0:0:15:0'})
end

This showed"ScenEdit_GetUnit 1 : ,Can't find Unit 'Vehicles (Truck x 5)' on Side 'T'"

But I want to let it judge that the unit is existing or not and then change the trigger...
User avatar
michaelm75au
Posts: 11889
Joined: Sat May 05, 2001 8:00 am
Location: Melbourne, Australia

RE: Edit Trigger by Lua

Post by michaelm75au »

This is from the Lua Documentation:
Note: Due to how errors are now handle from SR7, if a command fails in the console window, it will show an error. If the command runs outside the console (as in an event script), it will not fail with a visible error but return a nil or or some other value. One issue with commands running in an event is that sometimes they fail with an in-game message that actually stops the rest of the script from running. Now, these event scripts will run without any in-game message showing, and the designer should check the result of the command and handle any error condition, and let the remaining script run as needed.

My intent is have all command errors behave in the same fashion in the console window; and the command errors outside a console behave without stopping the script. Which requires the designer to cater for the specific error conditions.

To emulate the expected outcome from an event, put 'Tool_EmulateNoConsole(true)' at the start of the script to be tested; it is not required in the event code as the script is already not running in a console.

Note also, that the Lua history log should also record the event script errors.


Run the command 'Tool_EmulateNoConsole(true)' at the start of the script in the console so that the GetUnit() will return nil, and the script should work.
If the script is part of an event action, then the 'Tool' command is not needed. It just emulates what would happen in a non-console script.
Michael
M1A2G
Posts: 29
Joined: Wed Sep 13, 2017 10:12 am

RE: Edit Trigger by Lua

Post by M1A2G »

Yeah this worked,thanks.

I try to create an event and as you say the 'tool'command is not needed.[:)]
Post Reply

Return to “Command: Modern Operations series”