
07-06-2004, 05:59 PM
|
|
call me Chad, it's cooler
|
 |
Join Date: Aug 2002
Posts: 1,899
|
|
taken from newfeatures2001.txt
Quote:
- New script command: triggeraction targetx,targety,action,params;
This is one of the commands that give you like 50% more scripting
power than before. It is like a combination of hitobjects and
callnpc, but better. With 'triggeraction' you invoke an event
to the object on positon (targetx,targety). If the object is
an npc, then the npc script is called with the flag
'action<action>' set, when the object is a player then the
weapon scripts of the that player are called with the
'action<action>' flag set.
'params' can be one or more parameters, divided by commas;
the called script can read the paramters by accessing the
message code #p(paramindex).
Because this is hard to explain with words, here some
little examples:
- trigger player weapons
You can easily do a weapon which freezes the other
player:
if (playertouchsme) toweapons Freezing-Weapon;
if (weaponfired) {
triggeraction playerx+1.5+vecx(playerdir)*2,
playery+2+vecy(playerdir)*2,freeze,;
}
if (actionfreeze) {
freezeplayer 3;
setplayerprop #c,FREEZED;
}
Both players must have this weapon for making it
working. Then use it on the other player, and he will
be freezed, because a 'freeze' action is sent to him
and his weapon script, called with flag 'actionfreeze',
will freeze him. You can also move the if (actionfreeze) ...
into an system npc so the weapon can be used on all
players.
Other nice things you could do with triggering actions
on players: a stealing weapon which lets the other player
loose gralats (if (actionsteal) lay2 greenrupee,... );
complex attacking weapons that use your own hitpoint
system instead of the default hearts thing
- trigger npcs
Until now npcs can only react to 'playertouchsme' and
'wa****', other things are very hard to do (e.g. the
mining on Graal2001 was made by checking periodically
what animation the player has and before which stone the
player stands). You could do callnpc, but this works only
client-side and you needed to pass parameters with
flags.
Using 'triggeraction' you can make those things much easier.
The mining axe could have the script
if (weaponfired) {
setani jaxe,hammergold0.png;
triggeraction playerx+1.5+vecx(playerdir)*2,
playery+2+vecy(playerdir)*2,mining,#v(axepower);
}
If you now use the weapon on a stone, the stone npc could
check this so:
if (actionmining) {
axepower = strtofloat(#p(0));
this.power -= axepower;
if (this.power<=0) {
setstring uncraftedgold,#v(strtofloat(#s(uncraftedgold))+1);
hide;
}
}
With this thing you can also easily do switches which are
activated with the hammer, or torch lamps which are turned on
by using a torch on it.
|
the hp document Stefan posted also has some useful information if for whatever reason this doesn't satisfy you... |
|
|
|