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

All Forums >> [New Releases from Matrix Games] >> Command: Modern Operations series >> Tech Support



Message


snowburn -> [LUA][SOLVED] Changes in 1.12 (?) (5/19/2017 6:04:05 AM)

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




michaelm75au -> RE: [LUA] Changes in 1.12 (?) (5/19/2017 11:37:16 AM)

Can you attach a save where this happens?
From memory nothing changed in ScenEdit_SetKeyValue/Get() for 1.12.




snowburn -> RE: [LUA] Changes in 1.12 (?) (5/23/2017 4:02:41 AM)

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 -> RE: [LUA] Changes in 1.12 (?) (5/23/2017 10:10:06 AM)

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:
quote:


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:

quote:


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)

quote:

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




michaelm75au -> RE: [LUA] Changes in 1.12 (?) (5/24/2017 1:22:30 AM)

quote:

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.[;)]




snowburn -> RE: [LUA] Changes in 1.12 (?) (5/24/2017 5:27:46 AM)

@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


[sm=00000436.gif] i owe a beer to both of you

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




Page: [1]

Valid CSS!




Forum Software © ASPPlayground.NET Advanced Edition 2.4.5 ANSI
0.921875