User Tools

Site Tools


lua:loadfunction

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
lua:loadfunction [2014/07/18 15:42] – vodurlua:loadfunction [2026/10/14 01:10] (current) – removed - external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
-To be completed, here are some notes: 
- 
-There is a way to do this using loadfunction: 
-  
-<code lua> 
--- mprog 31404 
-function a_function( arg1, arg2 ) 
-    say("Arg 1: "..arg1) 
-    say("Arg 2: "..arg2) 
-    return 3 + 5 
-end 
-  
-  
--- mprog 31405 
-target_mob = getmobworld(31424)[1] 
-target_mob:loadprog(31404) 
-target_mob:loadfunction( function() 
-    a_function( "test1", "test2" ) 
-end) 
-  
-  
--- alternate mprog 31405 
-target_mob = getmobworld(31424)[1] 
-target_mob:loadfunction( function () 
-    loadprog(31404)  
-    -- alternately: target_mob:loadprog(31404)  
-    -- alternately : mob:loadprog(31404)  -- 'mob' in this case would be target_mob because this function runs in target_mob's env 
-    a_function( "test1", "test2" ) 
-end) 
-  
--- mprog 31405 with return value 
--- note, 'mob' is not a function variable, but a global variable to the 
-environment 
--- uses closure magic to move values between script envs 
-local result 
-target_mob = getmobworld(31424)[1] 
-target_mob:loadfunction( function () 
-    loadprog(31404)  
-    result=a_function( "test1", "test2" ) 
-end) 
-</code> 
-  
-Not as pretty as something like target_mob:loadprog( 31404, "test1", "test2" ), 
-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 
-refer to those parameters in the 31404 script? 
-  
-  
-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. 
-loadfunction can't directly return a value, but you can use other tricks to 
-get the job done: 
-  
-<code lua> 
--- mprog 31405 with return value 
--- uses closure magic to move values between script envs 
-local result 
-target_mob = getmobworld(31424)[1] 
-target_mob:loadfunction( function () 
-    loadprog(31404)  
-    result=a_function( "test1", "test2" ) 
-end) 
-</code> 
  
lua/loadfunction.1405698124.txt.gz · Last modified: (external edit)