Signal Tutorial

703pages on
this wiki
Add New Page
Add New Page Talk1

For C coders Edit

Let's say you wish to add a turn-started signal with two arguments: turn number and year number.

You need to do this to add a new signal type; in server/scripting/script_signal.c append to signals_create:

 script_signal_create('turn-started', 2, API_TYPE_INT, API_TYPE_INT);

Now you need to emit the signal in the proper place in the server/ code:

 script_signal_emit('turn-started', 2, API_TYPE_INT, turn, API_TYPE_INT, year);

That's it!

Hint: See server/scripting/script_signal.h for a complete list of possible argument types.

For Lua scripters Edit

Let's say you want to trigger a message action when a turn starts...

Open data/default/script.lua.

Add this to the main body of the script:

 signal.connect('turn-started', 'my_callback')

Then add the my_callback function:

 function my_callback(turn, year)
   notify.all('New Turn!')

Now, let's say you wanted a more complex notify with internationalization markup and everything:

 function my_callback(turn, year)
   notify.event(nil, nil, E.DIPLOMACY, _('New Turn %d, year %d!'), turn, year)

Hint: You may want to see the Events Reference Manual for more info.

Also on Fandom

Random Wiki