X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fmutators%2Fevents.qh;h=499110efa3f3641bf28c5589b1525fc59b15a0fd;hp=179faf1f6b6e93d35ad66df811843326594e4504;hb=f7b69c7bd1d05162b3c532422e3ce3013dc0f5f2;hpb=cfaaf960d6781c345dbbdc398444b065e6b13b7c diff --git a/qcsrc/server/mutators/events.qh b/qcsrc/server/mutators/events.qh index 179faf1f6b..499110efa3 100644 --- a/qcsrc/server/mutators/events.qh +++ b/qcsrc/server/mutators/events.qh @@ -96,6 +96,14 @@ MUTATOR_HOOKABLE(WeaponSound, EV_WeaponSound); /**/ MUTATOR_HOOKABLE(ItemModel, EV_ItemModel); +/** called when an item sound is about to be played, allows custom paths etc. */ +#define EV_ItemSound(i, o) \ + /** sound */ i(string, MUTATOR_ARGV_0_string) \ + /** output */ i(string, MUTATOR_ARGV_1_string) \ + /**/ o(string, MUTATOR_ARGV_1_string) \ + /**/ +MUTATOR_HOOKABLE(ItemSound, EV_ItemSound); + /** called when someone was fragged by "self", and is expected to change frag_score to adjust scoring for the kill */ #define EV_GiveFragsForKill(i, o) \ /** attacker */ i(entity, MUTATOR_ARGV_0_entity) \ @@ -134,6 +142,14 @@ MUTATOR_HOOKABLE(SpectateCopy, EV_SpectateCopy); /**/ MUTATOR_HOOKABLE(FormatMessage, EV_FormatMessage); +/** called before any formatting is applied, handy for tweaking the message before scripts get ahold of it */ +#define EV_PreFormatMessage(i, o) \ + /** player */ i(entity, MUTATOR_ARGV_0_entity) \ + /** message */ i(string, MUTATOR_ARGV_1_string) \ + /**/ o(string, MUTATOR_ARGV_1_string) \ + /**/ +MUTATOR_HOOKABLE(PreFormatMessage, EV_PreFormatMessage); + /** returns true if throwing the current weapon shall not be allowed */ #define EV_ForbidThrowCurrentWeapon(i, o) \ /** player */ i(entity, MUTATOR_ARGV_0_entity) \ @@ -335,7 +351,7 @@ MUTATOR_HOOKABLE(PlayerDamage_SplitHealthArmor, EV_PlayerDamage_SplitHealthArmor * called to adjust damage and force values which are applied to the player, used for e.g. strength damage/force multiplier * i'm not sure if I should change this around slightly (Naming of the entities, and also how they're done in g_damage). */ -#define EV_PlayerDamage_Calculate(i, o) \ +#define EV_Damage_Calculate(i, o) \ /** inflictor */ i(entity, MUTATOR_ARGV_0_entity) \ /** attacker */ i(entity, MUTATOR_ARGV_1_entity) \ /** target */ i(entity, MUTATOR_ARGV_2_entity) \ @@ -347,7 +363,7 @@ MUTATOR_HOOKABLE(PlayerDamage_SplitHealthArmor, EV_PlayerDamage_SplitHealthArmor /** force */ i(vector, MUTATOR_ARGV_6_vector) \ /** force */ o(vector, MUTATOR_ARGV_6_vector) \ /**/ -MUTATOR_HOOKABLE(PlayerDamage_Calculate, EV_PlayerDamage_Calculate); +MUTATOR_HOOKABLE(Damage_Calculate, EV_Damage_Calculate); /** * Called when a player is damaged @@ -355,10 +371,11 @@ MUTATOR_HOOKABLE(PlayerDamage_Calculate, EV_PlayerDamage_Calculate); #define EV_PlayerDamaged(i, o) \ /** attacker */ i(entity, MUTATOR_ARGV_0_entity) \ /** target */ i(entity, MUTATOR_ARGV_1_entity) \ - /** health */ i(int, MUTATOR_ARGV_2_int) \ - /** armor */ i(int, MUTATOR_ARGV_3_int) \ + /** health */ i(float, MUTATOR_ARGV_2_float) \ + /** armor */ i(float, MUTATOR_ARGV_3_float) \ /** location */ i(vector, MUTATOR_ARGV_4_vector) \ /** deathtype */ i(int, MUTATOR_ARGV_5_int) \ + /** potential_damage */ i(float, MUTATOR_ARGV_6_float) \ /**/ MUTATOR_HOOKABLE(PlayerDamaged, EV_PlayerDamaged); @@ -480,6 +497,7 @@ MUTATOR_HOOKABLE(SV_StartFrame, EV_NO_ARGS); #define EV_SetModname(i, o) \ /** name of the mutator/mod if it warrants showing as such in the server browser */ \ + /**/ i(string, MUTATOR_ARGV_0_string) \ /**/ o(string, MUTATOR_ARGV_0_string) \ /**/ MUTATOR_HOOKABLE(SetModname, EV_SetModname); @@ -539,7 +557,7 @@ MUTATOR_HOOKABLE(HelpMePing, EV_HelpMePing); /** * called when a vehicle initializes - * return false to remove the vehicle + * return true to remove the vehicle */ #define EV_VehicleInit(i, o) \ /** vehicle */ i(entity, MUTATOR_ARGV_0_entity) \ @@ -881,3 +899,21 @@ MUTATOR_HOOKABLE(ForbidWeaponUse, EV_ForbidWeaponUse); /** keepvelocity? */ i(bool, MUTATOR_ARGV_2_bool) \ /**/ MUTATOR_HOOKABLE(CopyBody, EV_CopyBody); + +/** called when sending a chat message, ret argument can be changed to prevent the message */ +#define EV_ChatMessage(i, o) \ + /** sender */ i(entity, MUTATOR_ARGV_0_entity) \ + /** ret */ i(int, MUTATOR_ARGV_1_int) \ + /**/ o(int, MUTATOR_ARGV_1_int) \ + /**/ +MUTATOR_HOOKABLE(ChatMessage, EV_ChatMessage); + +/** return true to prevent sending a chat (private, team or regular) message from reaching a certain player */ +#define EV_ChatMessageTo(i, o) \ + /** destination player */ i(entity, MUTATOR_ARGV_0_entity) \ + /** sender */ i(entity, MUTATOR_ARGV_1_entity) \ + /**/ +MUTATOR_HOOKABLE(ChatMessageTo, EV_ChatMessageTo); + +/** return true to just restart the match, for modes that don't support readyrestart */ +MUTATOR_HOOKABLE(ReadyRestart_Deny, EV_NO_ARGS);