X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fmutators%2Fevents.qh;h=2bea200d55348205aebef1512781eb100410929f;hp=c8c3415561248834da720ca1858b64c26c8469b0;hb=53ae0010b81fef4c01ccea1ab46be6dcd1bfb81f;hpb=27b2c8902c6a8c8fe481c7bea54926d88f1de434 diff --git a/qcsrc/server/mutators/events.qh b/qcsrc/server/mutators/events.qh index c8c3415561..2bea200d55 100644 --- a/qcsrc/server/mutators/events.qh +++ b/qcsrc/server/mutators/events.qh @@ -31,6 +31,12 @@ MUTATOR_HOOKABLE(ForbidSpawn, EV_ForbidSpawn); /**/ MUTATOR_HOOKABLE(PlayerSpawn, EV_PlayerSpawn); +/** called after a player's weapon is chosen so it can be overriden here */ +#define EV_PlayerWeaponSelect(i, o) \ + /** player spawning */ i(entity, MUTATOR_ARGV_0_entity) \ + /**/ +MUTATOR_HOOKABLE(PlayerWeaponSelect, EV_PlayerWeaponSelect); + /** called in reset_map */ #define EV_reset_map_global(i, o) \ /**/ @@ -63,6 +69,16 @@ MUTATOR_HOOKABLE(ClientDisconnect, EV_ClientDisconnect); /**/ MUTATOR_HOOKABLE(PlayerDies, EV_PlayerDies); +/** allows overriding the frag centerprint messages */ +#define EV_FragCenterMessage(i, o) \ + /** attacker */ i(entity, MUTATOR_ARGV_0_entity) \ + /** target */ i(entity, MUTATOR_ARGV_1_entity) \ + /** deathtype */ i(float, MUTATOR_ARGV_2_float) \ + /** attacker kcount*/ i(int, MUTATOR_ARGV_3_int) \ + /** targ killcount */ i(int, MUTATOR_ARGV_4_int) \ + /**/ +MUTATOR_HOOKABLE(FragCenterMessage, EV_FragCenterMessage); + /** called when a player dies to e.g. remove stuff he was carrying */ #define EV_PlayHitsound(i, o) \ /** victim */ i(entity, MUTATOR_ARGV_0_entity) \ @@ -86,6 +102,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) \ @@ -98,14 +122,14 @@ MUTATOR_HOOKABLE(GiveFragsForKill, EV_GiveFragsForKill); /** called when the match ends */ MUTATOR_HOOKABLE(MatchEnd, EV_NO_ARGS); -/** should adjust number to contain the team count */ -#define EV_GetTeamCount(i, o) \ - /** number of teams */ i(float, MUTATOR_ARGV_0_float) \ +/** allows adjusting allowed teams */ +#define EV_CheckAllowedTeams(i, o) \ + /** mask of teams */ i(float, MUTATOR_ARGV_0_float) \ /**/ o(float, MUTATOR_ARGV_0_float) \ /** team entity name */ i(string, MUTATOR_ARGV_1_string) \ /**/ o(string, MUTATOR_ARGV_1_string) \ /**/ -MUTATOR_HOOKABLE(GetTeamCount, EV_GetTeamCount); +MUTATOR_HOOKABLE(CheckAllowedTeams, EV_CheckAllowedTeams); /** copies variables for spectating "spectatee" to "this" */ #define EV_SpectateCopy(i, o) \ @@ -124,6 +148,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) \ @@ -325,7 +357,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) \ @@ -337,7 +369,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 @@ -345,10 +377,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); @@ -470,6 +503,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); @@ -531,10 +565,10 @@ MUTATOR_HOOKABLE(HelpMePing, EV_HelpMePing); * called when a vehicle initializes * return true to remove the vehicle */ -#define EV_VehicleSpawn(i, o) \ +#define EV_VehicleInit(i, o) \ /** vehicle */ i(entity, MUTATOR_ARGV_0_entity) \ /**/ -MUTATOR_HOOKABLE(VehicleSpawn, EV_VehicleSpawn); +MUTATOR_HOOKABLE(VehicleInit, EV_VehicleInit); /** * called when a player enters a vehicle @@ -871,3 +905,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);