lua:loadfunction
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
lua:loadfunction [2014/07/18 15:40] – created vodur | lua:loadfunction [2014/07/18 15:42] (current) – vodur | ||
---|---|---|---|
Line 1: | Line 1: | ||
To be completed, here are some notes: | To be completed, here are some notes: | ||
- | [code] | + | There is a way to do this using loadfunction: |
+ | |||
+ | <code lua> | ||
-- mprog 31404 | -- mprog 31404 | ||
- | |||
function a_function( arg1, arg2 ) | function a_function( arg1, arg2 ) | ||
- | + | | |
- | | + | say(" |
- | + | return 3 + 5 | |
- | | + | |
- | + | ||
- | | + | |
end | end | ||
+ | |||
+ | |||
-- mprog 31405 | -- mprog 31405 | ||
- | |||
target_mob = getmobworld(31424)[1] | target_mob = getmobworld(31424)[1] | ||
- | |||
target_mob: | target_mob: | ||
- | |||
target_mob: | target_mob: | ||
- | + | | |
- | | + | |
end) | end) | ||
+ | |||
+ | |||
-- alternate mprog 31405 | -- alternate mprog 31405 | ||
- | |||
target_mob = getmobworld(31424)[1] | target_mob = getmobworld(31424)[1] | ||
- | |||
target_mob: | target_mob: | ||
- | + | | |
- | | + | -- alternately: |
- | + | -- alternately : mob: | |
- | | + | a_function( " |
- | + | ||
- | | + | |
- | + | ||
- | target_mob because this function runs in target_mob' | + | |
- | + | ||
- | | + | |
end) | end) | ||
+ | |||
-- mprog 31405 with return value | -- mprog 31405 with return value | ||
- | |||
-- note, ' | -- note, ' | ||
- | |||
environment | environment | ||
- | |||
-- uses closure magic to move values between script envs | -- uses closure magic to move values between script envs | ||
- | |||
local result | local result | ||
- | |||
target_mob = getmobworld(31424)[1] | target_mob = getmobworld(31424)[1] | ||
- | |||
target_mob: | target_mob: | ||
- | + | | |
- | | + | result=a_function( " |
- | + | ||
- | | + | |
end) | end) | ||
- | + | </code> | |
- | [/code] | + | |
Not as pretty as something like target_mob: | Not as pretty as something like target_mob: | ||
- | |||
but there is no straightforward way to implement args to loadprog directly. | but there is no straightforward way to implement args to loadprog directly. | ||
- | |||
For instance, if I used the syntax above, by what name would you | For instance, if I used the syntax above, by what name would you | ||
- | |||
refer to those parameters in the 31404 script? | refer to those parameters in the 31404 script? | ||
+ | |||
+ | |||
So loadfunction is the way to do tricky stuff like this, for better or worse. | So loadfunction is the way to do tricky stuff like this, for better or worse. | ||
- | |||
I agree, it's often nice to have all the code in one place. | I agree, it's often nice to have all the code in one place. | ||
- | |||
loadfunction can't directly return a value, but you can use other tricks to | loadfunction can't directly return a value, but you can use other tricks to | ||
- | |||
get the job done: | get the job done: | ||
- | + | ||
- | [code lua] | + | <code lua> |
-- mprog 31405 with return value | -- mprog 31405 with return value | ||
- | |||
-- uses closure magic to move values between script envs | -- uses closure magic to move values between script envs | ||
- | |||
local result | local result | ||
- | |||
target_mob = getmobworld(31424)[1] | target_mob = getmobworld(31424)[1] | ||
- | |||
target_mob: | target_mob: | ||
- | + | | |
- | | + | result=a_function( " |
- | + | ||
- | | + | |
end) | end) | ||
- | + | </code> | |
- | [/code] | + | |
lua/loadfunction.1405698024.txt.gz · Last modified: 2014/07/18 15:40 by vodur