[LUA][SOLVED] Changes in 1.12 (?)

Post bug reports and ask for game support here.

Moderator: MOD_Command

Post Reply
User avatar
snowburn
Posts: 188
Joined: Mon Sep 23, 2013 9:10 pm
Location: Bovril, Argentina

[LUA][SOLVED] Changes in 1.12 (?)

Post by snowburn »

Hello!!

I've the following code in one of my scenarios, it was working fine until update 1.12, but now it gives this error:

Lua script execution error: [string "Scud is Destroyed"]:3 invalid arguments to method call



this is the code im using:

local number=ScenEdit_GetKeyValue('destroyedScud')
number=number+1
ScenEdit_SetKeyValue('destroyedScud', number)

print(ScenEdit_GetKeyValue('destroyedScud'))

ScenEdit_SpecialMessage('United States', number..' Scud groups destroyed, '..9-number..' remains' )

if number==3 then
ScenEdit_SpecialMessage('United States', 'INIT MISSION 1' )
ScenEdit_AssignUnitToMission("Flogger E #1", "Patrol North Long")
ScenEdit_AssignUnitToMission("Flogger E #2", "Patrol North Long")
ScenEdit_AssignUnitToMission("Flogger E #3", "Patrol North Long")
ScenEdit_AssignUnitToMission("Flogger E #4", "Patrol North Long")
ScenEdit_AssignUnitToMission("Flogger E #5", "Patrol North Long")
ScenEdit_AssignUnitToMission("Flogger E #6", "Patrol North Long")
ScenEdit_AssignUnitToMission("Flogger G #1", "Patrol North Long")
ScenEdit_AssignUnitToMission("Flogger G #2", "Patrol North Long")
ScenEdit_AssignUnitToMission("Flogger G #3", "Patrol North Long")
ScenEdit_AssignUnitToMission("Flogger G #4", "Patrol North Long")

elseif number==4 then
ScenEdit_SpecialMessage('United States', 'INIT INTERCEPT 1' )
ScenEdit_AssignUnitToMission("Foxbat #5", "Intercept 1")
ScenEdit_AssignUnitToMission("Foxbat #6", "Intercept 1")

elseif number==5 then
ScenEdit_SpecialMessage('United States', 'INIT MISSION 2' )
ScenEdit_AssignUnitToMission("Fulcrum A #1", "Patrol East Long")
ScenEdit_AssignUnitToMission("Fulcrum A #2", "Patrol East Long")
ScenEdit_AssignUnitToMission("Fulcrum A #3", "Patrol East Long")
ScenEdit_AssignUnitToMission("Fulcrum A #4", "Patrol East Long")
ScenEdit_AssignUnitToMission("Fulcrum A #5", "Patrol East Long")
ScenEdit_AssignUnitToMission("Fulcrum A #6", "Patrol East Long")
ScenEdit_AssignUnitToMission("Fulcrum A #7", "Patrol East Long")
ScenEdit_AssignUnitToMission("Fulcrum A #8", "Patrol East Long")
ScenEdit_AssignUnitToMission("Fulcrum A #9", "Patrol East Long")
ScenEdit_AssignUnitToMission("Fulcrum A #10", "Patrol East Long")
ScenEdit_AssignUnitToMission("Fulcrum A #11", "Patrol East Long")
ScenEdit_AssignUnitToMission("Fulcrum A #12", "Patrol East Long")

elseif number==7 then
ScenEdit_SpecialMessage('United States', 'INIT MISSION 3' )
ScenEdit_AssignUnitToMission("Mirage EQ-6 #1", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #2", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #3", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #4", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #5", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #6", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #7", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #8", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #9", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #10", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #11", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #12", "Patrol West Long")

elseif number==8 then
ScenEdit_SpecialMessage('United States', 'INIT INTERCEPT 2' )
ScenEdit_AssignUnitToMission("Foxbat #1", "Intercept 2")
ScenEdit_AssignUnitToMission("Foxbat #2", "Intercept 2")
ScenEdit_AssignUnitToMission("Foxbat #3", "Intercept 2")
ScenEdit_AssignUnitToMission("Foxbat #4", "Intercept 2")

end
User avatar
michaelm75au
Posts: 12455
Joined: Sat May 05, 2001 8:00 am
Location: Melbourne, Australia

RE: [LUA] Changes in 1.12 (?)

Post by michaelm75au »

Can you attach a save where this happens?
From memory nothing changed in ScenEdit_SetKeyValue/Get() for 1.12.
Michael
User avatar
snowburn
Posts: 188
Joined: Mon Sep 23, 2013 9:10 pm
Location: Bovril, Argentina

RE: [LUA] Changes in 1.12 (?)

Post by snowburn »

Thanks michaelm

i've found the error:

change
ScenEdit_SetKeyValue('destroyedScud', number)

to
ScenEdit_SetKeyValue('destroyedScud', tostring(number))

i've been working on this scenario for quite a time, i hope to finish it soon :)

Rory Noonan
Posts: 2418
Joined: Thu Dec 18, 2014 1:53 am
Location: Brooklyn, NY

RE: [LUA] Changes in 1.12 (?)

Post by Rory Noonan »

Glad you got your problem sorted, if I may I'd like to suggest something that will help you execute code like this with less typing.

Rather than:
elseif number==7 then
ScenEdit_SpecialMessage('United States', 'INIT MISSION 3' )
ScenEdit_AssignUnitToMission("Mirage EQ-6 #1", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #2", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #3", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #4", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #5", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #6", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #7", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #8", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #9", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #10", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #11", "Patrol West Long")
ScenEdit_AssignUnitToMission("Mirage EQ-6 #12", "Patrol West Long")

I would recommend you use a for loop:
elseif number==7 then
ScenEdit_SpecialMessage('United States', 'INIT MISSION 3' )
for i = 1,12 do
ScenEdit_AssignUnitToMission("Mirage EQ-6 #"..i, "Patrol West Long")
end

You could refine this even further by adding an if condition to check that the unit exists first (to guard against a script failing when a destroyed unit is called)
elseif number==7 then
ScenEdit_SpecialMessage('United States', 'INIT MISSION 3' )
for i = 1,12 do
x = ScenEdit_GetUnit({side='whatever side',name="Mirage EQ-6 #"..i})
if x ~= nil then
ScenEdit_AssignUnitToMission(x.name, "Patrol West Long")
end
end
Image
User avatar
michaelm75au
Posts: 12455
Joined: Sat May 05, 2001 8:00 am
Location: Melbourne, Australia

RE: [LUA] Changes in 1.12 (?)

Post by michaelm75au »

Lua script execution error: [string "Scud is Destroyed"]:3 invalid arguments to method call
The Lua error message has a bit more useful info now.
1) in what process the error occurred "[string "Scud is Destroyed"]" - this looks like an event or script name. If done in the console, 'console' would show here.
2) line number where the error occurred ":3" - line 3 of the script, which would be 'ScenEdit_SetKeyValue('destroyedScud', number)' based on the dump you gave.

Hope this is of more use to everyone than the old '["chunk"] invalid arguments to method call'[:D]. I know I have found it useful.[;)]
Michael
User avatar
snowburn
Posts: 188
Joined: Mon Sep 23, 2013 9:10 pm
Location: Bovril, Argentina

RE: [LUA] Changes in 1.12 (?)

Post by snowburn »

@Apache85
Wow!!! i didnt knew i can use x.name, your script and your explanation are flawless, thanks!

@michaelm
you are right, "Scud is Destroyed" is the name of the event, and i haven't noticed that :3 means the line number of the error. Thanks a lot for the help


i owe a beer to both of you

please tell me if you want a preview version of the scenario
Post Reply

Return to “Tech Support”