diff --git a/config/funmaps/config-lgsm/csserver/csserver.cfg b/config/funmaps/config-lgsm/csserver/csserver.cfg new file mode 100644 index 0000000..b4a6ac6 --- /dev/null +++ b/config/funmaps/config-lgsm/csserver/csserver.cfg @@ -0,0 +1,10 @@ +## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters +ip="0.0.0.0" +port="27015" +clientport="27005" +defaultmap="aim_map" +maxplayers="32" +pingboost="2" + +## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters +startparameters="-game cstrike -strictportbind +ip ${ip} -port ${port} +clientport ${clientport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers} -pingboost ${pingboost}" diff --git a/config/funmaps/serverfiles/cstrike/Thumbs.db b/config/funmaps/serverfiles/cstrike/Thumbs.db new file mode 100755 index 0000000..b239126 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/Thumbs.db differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/amxx.cfg b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/amxx.cfg new file mode 100644 index 0000000..5f18828 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/amxx.cfg @@ -0,0 +1,183 @@ +// AMX Mod X Configuration File +echo Executing AMX Mod X Configuration File + +// Default access for all non admin players (see users.ini for access details) +// +// Default value: "z" +amx_default_access "z" + +// Name of setinfo which should store a password on a client (you should change this) +// Note: Always prefix the field with an underscore (aka: "_") +// (Example: setinfo _pw "password") +// +// Default value: "_pw" +amx_password_field "_pw" + +// Mode of logging to a server +// 0 - disable logging, players won't be checked (and access won't be set) +// 1 - normal mode which obey flags set in accounts +// 2 - kick all players not on list +// +// Default value: 1 +amx_mode 1 + +// Show admins activity +// 0 - disabled +// 1 - show without admin name +// 2 - show with name +// +// Default value: 2 +amx_show_activity 2 + +// Frequency in seconds and text of scrolling message +// +// Default value: "Welcome to %hostname% -- This server is using AMX Mod X" 600 +amx_scrollmsg "Welcome to %hostname% -- This server is using AMX Mod X" 600 + +// Center typed colored messages (last parameter is a color in RRRGGGBBB format) +// +// Default values: "Welcome to %hostname%" "000255100" +// "This server is using AMX ModX\nVisit http://www.amxmodx.org" "000100255" +amx_imessage "Welcome to %hostname%" "000255100" +amx_imessage "This server is using AMX Mod X\nVisit http://www.amxmodx.org" "000100255" + +// Frequency in seconds of colored messages +// +// Default value: 180 +amx_freq_imessage 180 + +// Ban times for the main ban menu (amx_banmenu) +// Use 0 for permanent ban +// Default values: 0 5 10 15 30 45 60 +amx_plmenu_bantimes 0 5 10 15 30 45 60 + +// Slap damage amounts for the main slap menu (amx_slapmenu) +// Slay is automaticall inserted as the first option +// Default values: 0 1 5 +amx_plmenu_slapdmg 0 1 5 + +// Set in seconds how fast players can chat (chat-flood protection) +// +// Default value: 0.75 +amx_flood_time 0.75 + +// Amount of slots to reserve. +// +// Default value: 0 +amx_reservation 0 + +// If you set this to 1, you can hide slots on your server. +// If server "full" of public slots and slots hidden, you must manually connect with connect console command +// +// Default value: 0 +amx_hideslots 0 + +// Displaying of time remaining +// a - display white text on bottom +// b - use voice +// c - don't add "remaining" (only in voice) +// d - don't add "hours/minutes/seconds" (only in voice) +// e - show/speak if current time is less than this set in parameter +// +// Default value: "ab 1200" "ab 600" "ab 300" "ab 180" "ab 60" "bcde 11" +amx_time_display "ab 1200" "ab 600" "ab 300" "ab 180" "ab 60" "bcde 11" + +// Announce "say thetime" and "say timeleft" with voice, set to 0 to disable. +// +// Default value: 1 +amx_time_voice 1 + +// Minimum delay in seconds between two voting sessions +// +// Default value: 10 +amx_vote_delay 10 + +// How long voting session goes on +// +// Default value: 10 +amx_vote_time 10 + +// Display who votes for what option, set to 0 to disable, 1 to enable. +// +// Default value: 1 +amx_vote_answers 1 + +// Some ratios for voting success + +// Default value: 0.40 +amx_votekick_ratio 0.40 + +// Default value: 0.40 +amx_voteban_ratio 0.40 + +// Default value: 0.40 +amx_votemap_ratio 0.40 + +// Default value: 0.02 +amx_vote_ratio 0.02 + +// Max. time to which map can be extended +// +// Default value: 90 +amx_extendmap_max 90 + +// Step for each extending +// +// Default value: 15 +amx_extendmap_step 15 + +// If you set this to 0, clients cannot chose their language, instead they use +// whatever language the server is configured to use. +// +// Default value: 1 +amx_client_languages 1 + +// Plugin Debug mode +// 0 - No debugging (garbage line numbers) +// 1 - Plugins with "debug" option in plugins.ini are put into debug mode +// 2 - All plugins are put in debug mode +// Note - debug mode will affect JIT performance +// +// Default value: 1 +amx_debug 1 + +// Plugin MultiLingual Debug +// To debug a language put its 2 letter code between quotes ("en", "de", etc) +// "" means disabled +// +// Default value: "" +amx_mldebug "" + +// +// Beginning of Counter-Strike package specific configurations. +// + +// Rank mode +// 0 - by nick +// 1 - by authid +// 2 - by ip +// +// Default value: 1 +csstats_rank 1 + +// Max size of the stats file +// +// Default value: 3500 +csstats_maxsize 3500 + +// Whether or not to rank bots with csstats - set to 1 to rank bots, 0 otherwise. +// +// Default value: 0 +csstats_rankbots 0 + +// Duration of HUD-statistics +// +// Default value: 12.0 +amx_statsx_duration 12.0 + +// HUD-statistics display limit relative round freeze end +// Negative time will clear the HUD-statstics before the round freeze time has ended +// +// Default value: -2.0 +amx_statsx_freeze -2.0 + diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/clcmds.ini b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/clcmds.ini new file mode 100644 index 0000000..e0c2f9e --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/clcmds.ini @@ -0,0 +1,17 @@ +; Menu configuration file +; Default File location: $moddir/addons/amxmodx/configs/clcmds.ini +; To use with Players Menu plugin + +; NOTE: By default in all settings the access level is set to "u". +; However you can change that, to limit the access to some settings. + +; Client Commands Menu: ; < description > < command > < flags > < access level > +; "a" - execute from server console +; "b" - execute from admin console +; "c" - execute on selected player +; "d" - back to menu when executed + +"Kick player" "amx_kick #%userid%" "b" "u" +"Slay player" "amx_slay #%userid%" "bd" "u" +"Slap with 1 dmg." "amx_slap #%userid% 1" "bd" "u" +"Ban for 5 minutes" "amx_ban #%userid% 5" "b" "u" diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/cmds.ini b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/cmds.ini new file mode 100644 index 0000000..554d4f9 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/cmds.ini @@ -0,0 +1,16 @@ +; Menu configuration file +; File location: $moddir/addons/amxmodx/configs/cmds.ini +; To use with Commands Menu plugin + +; NOTE: By default in all settings the access level is set to "u". +; However you can change that, to limit the access to some settings. + +; Commands Menu: ; < description > < command > < flags > < access level > +; "a" - execute from server console +; "b" - execute from admin console +; "c" - execute on all clients +; "d" - back to menu when executed + +"Pause" "amx_pause" "ad" "u" +" " "-" "" "u" +"Restart Round" "sv_restartround 1" "a" "u" diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/configs.ini b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/configs.ini new file mode 100644 index 0000000..27bbdd1 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/configs.ini @@ -0,0 +1,22 @@ +; Menu configuration file +; File location: $moddir/addons/amxmodx/configs/configs.ini +; To use with Commands Menu plugin + +; NOTE: By default in all settings the access level is set to "u". +; However you can change that, to limit the access to some settings. + +; Commands Menu: +; < description > < command > < flags > < access level > +; "a" - execute from server console +; "b" - execute from admin console +; "c" - execute on all clients +; "d" - back to menu when executed + +;"PUBLIC Settings" "servercfgfile server.cfg;exec server.cfg" "a" "u" +;"Clanbase" "exec clanbase.cfg;servercfgfile \'\'" "a" "u" +;"Clanbase Charges Only" "exec clanbase_co.cfg;servercfgfile \'\'" "a" "u" +;"Official CAL Match" "exec cal.cfg;servercfgfile \'\'" "a" "u" +;"ProvingGrounds Server Config" "exec leagues/pg.cfg;servercfgfile \'\'" "a" "u" +;"OGL CS Server Config" "exec ogl.cfg;servercfgfile \'\'" "a" "u" +;"OGL CS FF Server Config" "exec ogl_ff.cfg;servercfgfile \'\'" "a" "u" +;"OGL CS Advanced Server Config" "exec ogl_adv.cfg;servercfgfile \'\'" "a" "u" diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/core.ini b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/core.ini new file mode 100644 index 0000000..ab40bc9 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/core.ini @@ -0,0 +1,42 @@ +; Configuration file for AMX Mod X +amxx_logs addons/amxmodx/logs +amxx_configsdir addons/amxmodx/configs +amxx_datadir addons/amxmodx/data +amxx_modules addons/amxmodx/configs/modules.ini +amxx_plugins addons/amxmodx/configs/plugins.ini +amxx_pluginsdir addons/amxmodx/plugins +amxx_modulesdir addons/amxmodx/modules +amxx_vault addons/amxmodx/data/vault.ini +; It is important that "csstats" comes before "csstats_score" +csstats addons/amxmodx/data/csstats.dat +csstats_score addons/amxmodx/data/csstats.amxx + +; Logging mode +; 0 - no logging +; 1 - one logfile / day +; 2 - one logfile / map +; 3 - HL Logs +amxx_logging 1 + +; Binary logging level +; add these up to get what you want +; these only work with bin logging binaries +; 1 - default +; 2 - log internal string sets/gets +; 4 - log internal formats +; 8 - log all native params +; 16 - log internal function calls (only in debug mode) +; 32 - log line number accesses (only in debug mode) +bin_logging 49 + +; Maximum binary log size, in megs +max_binlog_size 20 + +; Plugin optimization flags - add these up to get what you want +; lowering these may stop crashes on very old CPUs +; set 65536 to disable optimizer, NOT 0! +;------------- +; 1 - float arithmetic +; 2 - float comparisons +; 4 - float rounding +optimizer 7 diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/custommenuitems.cfg b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/custommenuitems.cfg new file mode 100644 index 0000000..cb6f2aa --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/custommenuitems.cfg @@ -0,0 +1,19 @@ +// Here you can add menu items from any plugin to Menus Front-End plugin, aka "amxmodmenu". +// You can also add menu items to the normal non-admin client menu "amx_menu". +// +// Adding to "amxmodmenu": +// Usage: "amx_addmenuitem " +// +// Adding to "amx_menu": +// Usage: "amx_addclientmenuitem " +// +// : This is the text displayed in the menu itself for this item. +// : This is the client command used to access the menu. +// : Specify what access flags admins must have to use this menu item. (Check users.ini for access flags.) +// : This must be the _exact_ (though case insensitive) name of the plugin which holds the menu command. (Use "amxx plugins" in server console, plugin names are listed in Name column.) +// +// Example: (be sure to use quotes around parameters with spaces!) +// +// amx_addmenuitem "Weapon Arena" "weaponarena_menu" "hu" "Weapon Arena" +// amx_addclientmenuitem "Warcraft 3" "war3menu" "" "Warcraft 3 XP" + diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/cvars.ini b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/cvars.ini new file mode 100644 index 0000000..fb61b38 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/cvars.ini @@ -0,0 +1,22 @@ +; Menu configuration file +; File location: $moddir/addons/amxmodx/configs/cvars.ini +; To use with Commands Menu plugin + +; Cvars Menu: +; < cvar > < values > ... < access level > + +"mp_timelimit" "0" "30" "45" "u" +"sv_password" "" "mypw" "clanwar" "u" +"pausable" "0" "1" "u" +"sv_voiceenable" "0" "1" "u" +"mp_chattime" "0" "1" "3" "u" +"mp_logmessages" "0" "1" "u" +"mp_friendlyfire" "0" "1" "u" +"mp_limitteams" "0" "1" "2" "u" +"mp_autoteambalance" "0" "1" "2" "u" +"allow_spectators" "0" "1" "u" +"mp_freezetime" "0" "6" "u" +"mp_buytime" "1" "0.5" "u" +"mp_startmoney" "800" "1800" "3600" "u" +"mp_c4timer" "35" "45" "15" "u" +"mp_forcechasecam" "0" "1" "2" "u" diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/hamdata.ini b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/hamdata.ini new file mode 100644 index 0000000..aff01dc --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/hamdata.ini @@ -0,0 +1,2004 @@ +; Ham Sandwich module config file. +; +; IMPORTANT: It is highly suggested that you do not modify this file unless +; you know _exactly_ what you are doing! +; +; NOTE: Just because a mod contains a function does not means it will work +; as expected. If, for example, HamKilled() does not work as you think +; it should in Counter-Strike DO NOT FILE A BUG REPORT. This just +; exposes the function for you, whether or not it works, or how it +; works is up to plugin authors to figure out. +; +; NOTE: If a mod is missing keys for a certain native, that particular native +; will not be loaded! Example: Say CS is missing the "takedamage" index +; but has the use and pev indexes. The HamUse and HamePdataCbase natives +; will be registered, but the HamTakeDamage native will not register. +; In addition, any attempts to hook a function who's key is missing will +; result in the plugin failing. +; +; NOTE: The base key is only needed for the linux configs. +; +; NOTE: Any keys that begin with a modname (eg: cstrike_restart) will, +; obviously, only work on that mod and all mirrors of it (eg: czero). +; +; NOTE: If you change this file while the module is already loaded, you will +; need to restart the server for the changes to take effect. Changes to +; this file before the module is loaded will take effect when the module +; loads. +; +; NOTE: All of these offsets and settings are for the latest (at the time of +; release) legitimate version of the mod. However, there is a _chance_ +; that they will work on older (and even newer) versions. +; eg: If they work on non-Steam CS 1.6 this is coincidental, if they do +; not work on non-Steam CS 1.6 this will not be officially fixed. +; +; Mirrors: These take the name of one mod, and copy all of its data to another +; name. An example of a use for this would be cstrike and czero: they +; use the same binary so all of its vtable offsets are guaranteed to +; be identical. Mirrors should always come first in the file! +; +; Version: $Id: hamdata.ini 3687 2008-03-04 18:51:35Z sawce $ + + +@mirror cstrike czero +@mirror ns nsp + +; TODO: check these - all are estimates +@section cstrike linux + pev 4 + base 0x0 + + spawn 0 + precache 1 + keyvalue 3 + objectcaps 6 + activate 7 + setobjectcollisionbox 8 + classify 9 + deathnotice 10 + traceattack 11 + takedamage 12 + takehealth 13 + killed 14 + bloodcolor 15 + tracebleed 16 + istriggered 17 + mymonsterpointer 18 + mysquadmonsterpointer 19 + gettogglestate 20 + addpoints 21 + addpointstoteam 22 + addplayeritem 23 + removeplayeritem 24 + giveammo 25 + getdelay 26 + ismoving 27 + overridereset 28 + damagedecal 29 + settogglestate 30 + startsneaking 31 + stopsneaking 32 + oncontrols 33 + issneaking 34 + isalive 35 + isbspmodel 36 + reflectgauss 37 + hastarget 38 + isinworld 39 + isplayer 40 + isnetclient 41 + teamid 42 + getnexttarget 43 + think 44 + touch 45 + use 46 + blocked 47 + respawn 48 + updateowner 49 + fbecomeprone 50 + center 51 + eyeposition 52 + earposition 53 + bodytarget 54 + illumination 55 + fvisible 56 + fvecvisible 57 + + player_jump 76 + player_duck 77 + player_prethink 78 + player_postthink 79 + player_getgunposition 80 + player_shouldfadeondeath 66 + player_impulsecommands 83 + player_updateclientdata 82 + + item_addtoplayer 59 + item_addduplicate 60 + item_getiteminfo 61 + item_candeploy 62 + item_deploy 64 + item_canholster 66 + item_holster 67 + item_updateiteminfo 68 + item_preframe 69 + item_postframe 70 + item_drop 71 + item_kill 72 + item_attachtoplayer 73 + item_primaryammoindex 74 + item_secondaryammoindex 75 + item_updateclientdata 76 + item_getweaponptr 77 + item_itemslot 79 + + weapon_extractammo 80 + weapon_extractclipammo 81 + weapon_addweapon 82 + weapon_playemptysound 83 + weapon_resetemptysound 84 + weapon_sendweaponanim 85 + weapon_isusable 86 + weapon_primaryattack 87 + weapon_secondaryattack 88 + weapon_reload 89 + weapon_weaponidle 90 + weapon_retireweapon 91 + weapon_shouldweaponidle 92 + weapon_usedecrement 93 + + cstrike_restart 2 + cstrike_roundrespawn 84 + cstrike_item_candrop 63 + cstrike_item_getmaxspeed 78 + +@end +@section cstrike windows + pev 4 + base 0x0 + + spawn 0 + precache 1 + keyvalue 3 + objectcaps 6 + activate 7 + setobjectcollisionbox 8 + classify 9 + deathnotice 10 + traceattack 11 + takedamage 12 + takehealth 13 + killed 14 + bloodcolor 15 + tracebleed 16 + istriggered 17 + mymonsterpointer 18 + mysquadmonsterpointer 19 + gettogglestate 20 + addpoints 21 + addpointstoteam 22 + addplayeritem 23 + removeplayeritem 24 + giveammo 25 + getdelay 26 + ismoving 27 + overridereset 28 + damagedecal 29 + settogglestate 30 + startsneaking 31 + stopsneaking 32 + oncontrols 33 + issneaking 34 + isalive 35 + isbspmodel 36 + reflectgauss 37 + hastarget 38 + isinworld 39 + isplayer 40 + isnetclient 41 + teamid 42 + getnexttarget 43 + think 44 + touch 45 + use 46 + blocked 47 + respawn 48 + updateowner 49 + fbecomeprone 50 + center 51 + eyeposition 52 + earposition 53 + bodytarget 54 + illumination 55 + fvisible 56 + fvecvisible 57 + + player_jump 76 + player_duck 77 + player_prethink 78 + player_postthink 79 + player_getgunposition 80 + player_shouldfadeondeath 66 + player_impulsecommands 83 + player_updateclientdata 82 + + item_addtoplayer 59 + item_addduplicate 60 + item_getiteminfo 61 + item_candeploy 62 + item_deploy 64 + item_canholster 66 + item_holster 67 + item_updateiteminfo 68 + item_preframe 69 + item_postframe 70 + item_drop 71 + item_kill 72 + item_attachtoplayer 73 + item_primaryammoindex 74 + item_secondaryammoindex 75 + item_updateclientdata 76 + item_getweaponptr 77 + item_itemslot 79 + + weapon_extractammo 80 + weapon_extractclipammo 81 + weapon_addweapon 82 + weapon_playemptysound 83 + weapon_resetemptysound 84 + weapon_sendweaponanim 85 + weapon_isusable 86 + weapon_primaryattack 87 + weapon_secondaryattack 88 + weapon_reload 89 + weapon_weaponidle 90 + weapon_retireweapon 91 + weapon_shouldweaponidle 92 + weapon_usedecrement 93 + + cstrike_restart 2 + cstrike_roundrespawn 84 + cstrike_item_candrop 63 + cstrike_item_getmaxspeed 78 +@end + +@section cstrike mac + pev 4 + base 0x0 + + spawn 0 + precache 1 + keyvalue 3 + objectcaps 6 + activate 7 + setobjectcollisionbox 8 + classify 9 + deathnotice 10 + traceattack 11 + takedamage 12 + takehealth 13 + killed 14 + bloodcolor 15 + tracebleed 16 + istriggered 17 + mymonsterpointer 18 + mysquadmonsterpointer 19 + gettogglestate 20 + addpoints 21 + addpointstoteam 22 + addplayeritem 23 + removeplayeritem 24 + giveammo 25 + getdelay 26 + ismoving 27 + overridereset 28 + damagedecal 29 + settogglestate 30 + startsneaking 31 + stopsneaking 32 + oncontrols 33 + issneaking 34 + isalive 35 + isbspmodel 36 + reflectgauss 37 + hastarget 38 + isinworld 39 + isplayer 40 + isnetclient 41 + teamid 42 + getnexttarget 43 + think 44 + touch 45 + use 46 + blocked 47 + respawn 48 + updateowner 49 + fbecomeprone 50 + center 51 + eyeposition 52 + earposition 53 + bodytarget 54 + illumination 55 + fvisible 56 + fvecvisible 57 + + player_jump 76 + player_duck 77 + player_prethink 78 + player_postthink 79 + player_getgunposition 80 + player_shouldfadeondeath 66 + player_impulsecommands 83 + player_updateclientdata 82 + + item_addtoplayer 59 + item_addduplicate 60 + item_getiteminfo 61 + item_candeploy 62 + item_deploy 64 + item_canholster 66 + item_holster 67 + item_updateiteminfo 68 + item_preframe 69 + item_postframe 70 + item_drop 71 + item_kill 72 + item_attachtoplayer 73 + item_primaryammoindex 74 + item_secondaryammoindex 75 + item_updateclientdata 76 + item_getweaponptr 77 + item_itemslot 79 + + weapon_extractammo 80 + weapon_extractclipammo 81 + weapon_addweapon 82 + weapon_playemptysound 83 + weapon_resetemptysound 84 + weapon_sendweaponanim 85 + weapon_isusable 86 + weapon_primaryattack 87 + weapon_secondaryattack 88 + weapon_reload 89 + weapon_weaponidle 90 + weapon_retireweapon 91 + weapon_shouldweaponidle 92 + weapon_usedecrement 93 + + cstrike_restart 2 + cstrike_roundrespawn 84 + cstrike_item_candrop 63 + cstrike_item_getmaxspeed 78 +@end + +@section dod linux + pev 0 + base 0x154 + + spawn 5 + precache 6 + keyvalue 7 + objectcaps 10 + activate 11 + objectcollisionbox 14 + classify 15 + deathnotice 16 + traceattack 19 + takedamage 20 + takehealth 21 + killed 22 + bloodcolor 23 + tracebleed 24 + mymonsterpointer 25 + mysquadmonsterpointer 26 + gettogglestate 27 + addpoints 28 + addpointstoteam 29 + addplayeritem 30 + removeplayeritem 31 + giveammo 32 + getdelay 33 + ismoving 34 + overridereset 35 + damagedecal 36 + settogglestate 37 + startsneaking 38 + stopsneaking 39 + oncontrols 40 + issneaking 41 + isalive 42 + isbspmodel 43 + reflectgauss 44 + hastarget 45 + isinworld 46 + isplayer 47 + isnetclient 48 + teamid 49 + getnexttarget 50 + think 51 + touch 52 + use 53 + blocked 54 + respawn 55 + updateowner 56 + fbecomeprone 57 + center 58 + eyeposition 59 + earposition 60 + bodytarget 61 + illumination 62 + fvisible 63 + fvecvisible 64 + + player_jump 136 + player_duck 137 + player_prethink 134 + player_postthink 135 + player_getgunposition 128 + player_shouldfadeondeath 68 + player_impulsecommands 139 + player_updateclientdata 138 + + item_addtoplayer 66 + item_addduplicate 67 + item_getiteminfo 68 + item_candeploy 69 + item_deploy 70 + item_canholster 75 + item_holster 76 + item_updateiteminfo 77 + item_preframe 78 + item_postframe 79 + item_drop 80 + item_kill 81 + item_attachtoplayer 82 + item_primaryammoindex 83 + item_secondaryammoindex 84 + item_updateclientdata 85 + item_getweaponptr 86 + item_itemslot 87 + + weapon_extractammo 88 + weapon_extractclipammo 89 + weapon_addweapon 90 + weapon_playemptysound 91 + weapon_resetemptysound 92 + weapon_sendweaponanim 93 + weapon_isusable 94 + weapon_primaryattack 104 + weapon_secondaryattack 105 + weapon_reload 106 + weapon_weaponidle 107 + weapon_retireweapon 108 + weapon_shouldweaponidle 109 + weapon_usedecrement 110 + + dod_roundrespawn 2 + dod_roundrespawnent 3 + dod_roundstore 4 + dod_areasetindex 12 + dod_areasendstatus 13 + dod_getstate 17 + dod_getstateent 18 + dod_item_candrop 72 + +@end +@section dod windows + pev 4 + base 0x0 + + spawn 3 + precache 4 + keyvalue 5 + objectcaps 8 + activate 9 + objectcollisionbox 12 + classify 13 + deathnotice 14 + traceattack 17 + takedamage 18 + takehealth 19 + killed 20 + bloodcolor 21 + tracebleed 22 + mymonsterpointer 23 + mysquadmonsterpointer 24 + gettogglestate 25 + addpoints 26 + addpointstoteam 27 + addplayeritem 28 + removeplayeritem 29 + giveammo 30 + getdelay 31 + ismoving 32 + overridereset 33 + damagedecal 34 + settogglestate 35 + startsneaking 36 + stopsneaking 37 + oncontrols 48 + issneaking 39 + isalive 40 + isbspmodel 41 + reflectgauss 42 + hastarget 43 + isinworld 44 + isplayer 45 + isnetclient 46 + teamid 47 + getnexttarget 48 + think 49 + touch 50 + use 51 + blocked 52 + respawn 53 + updateowner 54 + fbecomeprone 55 + center 56 + eyeposition 57 + earposition 58 + bodytarget 59 + illumination 60 + fvisible 61 + fvecvisible 62 + + player_jump 134 + player_duck 135 + player_prethink 132 + player_postthink 133 + player_getgunposition 126 + player_shouldfadeondeath 66 + player_impulsecommands 137 + player_updateclientdata 136 + + item_addtoplayer 64 + item_addduplicate 65 + item_getiteminfo 66 + item_candeploy 67 + item_deploy 68 + item_canholster 73 + item_holster 74 + item_updateiteminfo 75 + item_preframe 76 + item_postframe 77 + item_drop 78 + item_kill 79 + item_attachtoplayer 80 + item_primaryammoindex 81 + item_secondaryammoindex 82 + item_updateclientdata 83 + item_getweaponptr 84 + item_itemslot 85 + + weapon_extractammo 86 + weapon_extractclipammo 87 + weapon_addweapon 88 + weapon_playemptysound 89 + weapon_resetemptysound 90 + weapon_sendweaponanim 91 + weapon_isusable 92 + weapon_primaryattack 102 + weapon_secondaryattack 103 + weapon_reload 104 + weapon_weaponidle 105 + weapon_retireweapon 106 + weapon_shouldweaponidle 107 + weapon_usedecrement 108 + + dod_roundrespawn 0 + dod_roundrespawnent 1 + dod_roundstore 2 + dod_areasetindex 10 + dod_areasendstatus 11 + dod_getstate 15 + dod_getstateent 16 + dod_item_candrop 70 +@end + +; TFC Does not have the following "standard" entries in its vtable: +; addpoints, addpointstoteam +@section tfc linux + pev 0 + base 0x470 + + spawn 3 + precache 4 + keyvalue 5 + objectcaps 8 + activate 9 + setobjectcollisionbox 10 + classify 11 + deathnotice 12 + traceattack 13 + takedamage 14 + takehealth 15 + killed 16 + bloodcolor 17 + tracebleed 18 + istriggered 19 + mymonsterpointer 20 + mysquadmonsterpointer 21 + gettogglestate 22 + addplayeritem 23 + removeplayeritem 24 + giveammo 25 + getdelay 26 + ismoving 27 + overridereset 28 + damagedecal 29 + settogglestate 30 + startsneaking 31 + stopsneaking 32 + oncontrols 33 + issneaking 34 + isalive 35 + isbspmodel 36 + reflectgauss 37 + hastarget 38 + isinworld 39 + isplayer 40 + isnetclient 41 + getnexttarget 43 + think 44 + touch 45 + use 46 + blocked 47 + respawn 48 + updateowner 49 + fbecomeprone 50 + center 51 + eyeposition 52 + earposition 53 + bodytarget 54 + illumination 55 + fvisible 56 + fvecvisible 57 + + player_jump 135 + player_duck 136 + player_prethink 137 + player_postthink 138 + player_shouldfadeondeath 69 + player_impulsecommands 139 + + item_addtoplayer 67 + item_addduplicate 68 + item_getiteminfo 70 + item_candeploy 71 + item_deploy 72 + item_canholster 73 + item_holster 74 + item_updateiteminfo 75 + item_preframe 76 + item_postframe 77 + item_drop 78 + item_kill 79 + item_attachtoplayer 80 + item_primaryammoindex 81 + item_secondaryammoindex 82 + item_updateclientdata 83 + item_getweaponptr 84 + item_itemslot 69 + + weapon_extractammo 85 + weapon_extractclipammo 86 + weapon_addweapon 87 + weapon_playemptysound 88 + weapon_resetemptysound 89 + weapon_sendweaponanim 90 + weapon_isusable 91 + weapon_primaryattack 92 + weapon_secondaryattack 93 + weapon_reload 94 + weapon_weaponidle 95 + weapon_retireweapon 96 + weapon_shouldweaponidle 97 + + tfc_engineeruse 58 + tfc_finished 59 + tfc_empexplode 60 + tfc_calcempdmgrad 61 + tfc_takeempblast 62 + tfc_empremove 63 + tfc_takeconcussionblast 64 + tfc_concuss 65 +@end +@section tfc windows + pev 4 + base 0x0 + + spawn 1 + precache 2 + keyvalue 3 + objectcaps 6 + activate 7 + setobjectcollisionbox 8 + classify 9 + deathnotice 10 + traceattack 11 + takedamage 12 + takehealth 13 + killed 14 + bloodcolor 15 + tracebleed 16 + istriggered 17 + mymonsterpointer 18 + mysquadmonsterpointer 19 + gettogglestate 20 + addplayeritem 21 + removeplayeritem 22 + giveammo 23 + getdelay 24 + ismoving 25 + overridereset 26 + damagedecal 27 + settogglestate 28 + startsneaking 29 + stopsneaking 30 + oncontrols 31 + issneaking 32 + isalive 33 + isbspmodel 34 + reflectgauss 35 + hastarget 36 + isinworld 37 + isplayer 38 + isnetclient 39 + getnexttarget 41 + think 42 + touch 43 + use 44 + blocked 45 + respawn 46 + updateowner 47 + fbecomeprone 48 + center 49 + eyeposition 50 + earposition 51 + bodytarget 52 + illumination 53 + fvisible 54 + fvecvisible 55 + + + player_jump 133 + player_duck 134 + player_prethink 135 + player_postthink 136 + player_shouldfadeondeath 67 + player_impulsecommands 137 + + item_addtoplayer 65 + item_addduplicate 66 + item_getiteminfo 68 + item_candeploy 69 + item_deploy 70 + item_canholster 71 + item_holster 72 + item_updateiteminfo 73 + item_preframe 74 + item_postframe 75 + item_drop 76 + item_kill 77 + item_attachtoplayer 78 + item_primaryammoindex 79 + item_secondaryammoindex 80 + item_updateclientdata 81 + item_getweaponptr 82 + item_itemslot 67 + + weapon_extractammo 83 + weapon_extractclipammo 84 + weapon_addweapon 85 + weapon_playemptysound 86 + weapon_resetemptysound 87 + weapon_sendweaponanim 88 + weapon_isusable 89 + weapon_primaryattack 90 + weapon_secondaryattack 91 + weapon_reload 92 + weapon_weaponidle 93 + weapon_retireweapon 94 + weapon_shouldweaponidle 95 + + tfc_engineeruse 56 + tfc_finished 57 + tfc_empexplode 58 + tfc_calcempdmgrad 59 + tfc_takeempblast 60 + tfc_empremove 61 + tfc_takeconcussionblast 62 + tfc_concuss 63 +@end +; ns's linux binary is compiled with gcc 3.3, so the "base" is 0, and pev is 4 +@section ns linux + pev 4 + base 0x0 + + spawn 0 + precache 1 + keyvalue 2 + objectcaps 5 + activate 6 + setobjectcollisionbox 7 + classify 8 + deathnotice 9 + traceattack 10 + takedamage 11 + takehealth 12 + killed 14 + bloodcolor 16 + tracebleed 17 + istriggered 18 + mymonsterpointer 19 + mysquadmonsterpointer 20 + gettogglestate 21 + addpoints 22 + addpointstoteam 23 + addplayeritem 24 + removeplayeritem 25 + giveammo 26 + getdelay 27 + ismoving 28 + overridereset 29 + damagedecal 30 + settogglestate 31 + startsneaking 32 + stopsneaking 33 + oncontrols 34 + issneaking 35 + isalive 36 + isbspmodel 37 + reflectgauss 38 + hastarget 39 + isinworld 40 + isplayer 41 + isnetclient 42 + teamid 43 + getnexttarget 46 + think 47 + touch 48 + use 49 + blocked 50 + respawn 52 + updateowner 53 + fbecomeprone 54 + center 55 + eyeposition 56 + earposition 57 + bodytarget 58 + illumination 59 + fvisible 60 + fvecvisible 61 + + player_jump 83 + player_duck 84 + player_prethink 85 + player_postthink 86 + player_getgunposition 87 + player_shouldfadeondeath 72 + player_impulsecommands 101 + player_updateclientdata 99 + + item_addtoplayer 64 + item_addduplicate 65 + item_getiteminfo 68 + item_candeploy 69 + item_deploy 70 + item_canholster 71 + item_holster 72 + item_updateiteminfo 74 + item_preframe 75 + item_postframe 76 + item_drop 77 + item_kill 78 + item_attachtoplayer 79 + item_primaryammoindex 80 + item_secondaryammoindex 81 + item_updateclientdata 82 + item_getweaponptr 83 + item_itemslot 84 + + weapon_extractammo 85 + weapon_extractclipammo 86 + weapon_addweapon 87 + weapon_playemptysound 88 + weapon_resetemptysound 89 + weapon_sendweaponanim 94 + weapon_isusable 73 + weapon_primaryattack 98 + weapon_secondaryattack 99 + weapon_reload 100 + weapon_weaponidle 101 + weapon_retireweapon 102 + weapon_shouldweaponidle 103 + weapon_usedecrement 104 + + ns_getpointvalue 13 + ns_awardkill 15 + ns_resetentity 45 + ns_updateonremove 51 +@end +@section ns windows + pev 4 + base 0x0 + + spawn 0 + precache 1 + keyvalue 2 + objectcaps 5 + activate 6 + setobjectcollisionbox 7 + classify 8 + deathnotice 9 + traceattack 10 + takedamage 11 + takehealth 12 + killed 14 + bloodcolor 16 + tracebleed 17 + istriggered 18 + mymonsterpointer 19 + mysquadmonsterpointer 20 + gettogglestate 21 + addpoints 22 + addpointstoteam 23 + addplayeritem 24 + removeplayeritem 25 + giveammo 26 + getdelay 27 + ismoving 28 + overridereset 29 + damagedecal 30 + settogglestate 31 + startsneaking 32 + stopsneaking 33 + oncontrols 34 + issneaking 35 + isalive 36 + isbspmodel 37 + reflectgauss 38 + hastarget 39 + isinworld 40 + isplayer 41 + isnetclient 42 + teamid 43 + getnexttarget 46 + think 47 + touch 48 + use 49 + blocked 50 + respawn 52 + updateowner 53 + fbecomeprone 54 + center 55 + eyeposition 56 + earposition 57 + bodytarget 58 + illumination 59 + fvisible 60 + fvecvisible 61 + + player_jump 83 + player_duck 84 + player_prethink 85 + player_postthink 86 + player_getgunposition 87 + player_shouldfadeondeath 72 + player_impulsecommands 101 + player_updateclientdata 99 + + item_addtoplayer 64 + item_addduplicate 65 + item_getiteminfo 68 + item_candeploy 69 + item_deploy 70 + item_canholster 71 + item_holster 72 + item_updateiteminfo 74 + item_preframe 75 + item_postframe 76 + item_drop 77 + item_kill 78 + item_attachtoplayer 79 + item_primaryammoindex 80 + item_secondaryammoindex 81 + item_updateclientdata 82 + item_getweaponptr 83 + item_itemslot 84 + + weapon_extractammo 85 + weapon_extractclipammo 86 + weapon_addweapon 87 + weapon_playemptysound 88 + weapon_resetemptysound 89 + weapon_sendweaponanim 94 + weapon_isusable 73 + weapon_primaryattack 98 + weapon_secondaryattack 99 + weapon_reload 100 + weapon_weaponidle 101 + weapon_retireweapon 102 + weapon_shouldweaponidle 103 + weapon_usedecrement 104 + + ns_getpointvalue 13 + ns_awardkill 15 + ns_resetentity 45 + ns_updateonremove 51 +@end + +@section ts linux + pev 0 + base 0x60 + + spawn 9 + precache 10 + keyvalue 11 + objectcaps 14 + activate 15 + setobjectcollisionbox 18 + classify 19 + deathnotice 20 + traceattack 21 + takedamage 22 + takehealth 23 + killed 24 + bloodcolor 25 + tracebleed 26 + istriggered 27 + mymonsterpointer 28 + mysquadmonsterpointer 29 + gettogglestate 30 + addpoints 31 + addpointstoteam 32 + addplayeritem 33 + removeplayeritem 34 + giveammo 35 + getdelay 36 + ismoving 37 + overridereset 38 + damagedecal 39 + settogglestate 40 + startsneaking 41 + stopsneaking 42 + oncontrols 43 + issneaking 44 + isalive 45 + isbspmodel 46 + reflectgauss 47 + hastarget 48 + isinworld 49 + isplayer 50 + isnetclient 51 + teamid 52 + getnexttarget 53 + think 54 + touch 55 + use 56 + blocked 57 + respawn 59 + updateowner 60 + fbecomeprone 61 + center 62 + eyeposition 63 + earposition 64 + bodytarget 65 + illumination 66 + fvisible 67 + fvecvisible 68 + + player_jump 86 + player_duck 87 + player_prethink 88 + player_postthink 89 + player_getgunposition 90 + player_shouldfadeondeath 77 + player_impulsecommands 92 + player_updateclientdata 91 + + item_addtoplayer 70 + item_addduplicate 71 + item_candeploy 73 + item_deploy 74 + item_canholster 75 + item_holster 76 + item_updateiteminfo 77 + item_preframe 78 + item_postframe 79 + item_drop 80 + item_kill 81 + item_attachtoplayer 82 + item_primaryammoindex 83 + item_secondaryammoindex 84 + item_updateclientdata 85 + item_getweaponptr 86 + item_itemslot 87 + + weapon_extractammo 88 + weapon_extractclipammo 89 + weapon_addweapon 90 + weapon_playemptysound 91 + weapon_resetemptysound 92 + weapon_sendweaponanim 93 + weapon_isusable 94 + weapon_primaryattack 95 + weapon_secondaryattack 96 + weapon_reload 98 + weapon_weaponidle 99 + weapon_retireweapon 100 + weapon_shouldweaponidle 101 + weapon_usedecrement 102 + + ts_breakablerespawn 2 + ts_canusedthroughwalls 3 + ts_giveslowmul 4 + ts_goslow 5 + ts_inslow 6 + ts_isobjective 7 + ts_enableobjective 8 + ts_onfreeentprivatedata 12 + ts_shouldcollide 13 + + ts_weapon_alternateattack 97 +@end +@section ts windows + pev 4 + base 0x0 + + spawn 7 + precache 8 + keyvalue 9 + objectcaps 12 + activate 13 + setobjectcollisionbox 16 + classify 17 + deathnotice 18 + traceattack 19 + takedamage 20 + takehealth 21 + killed 22 + bloodcolor 23 + tracebleed 24 + istriggered 25 + mymonsterpointer 26 + mysquadmonsterpointer 27 + gettogglestate 28 + addpoints 29 + addpointstoteam 30 + addplayeritem 31 + removeplayeritem 32 + giveammo 33 + getdelay 34 + ismoving 35 + overridereset 36 + damagedecal 37 + settogglestate 38 + startsneaking 39 + stopsneaking 40 + oncontrols 41 + issneaking 42 + isalive 43 + isbspmodel 44 + reflectgauss 45 + hastarget 46 + isinworld 47 + isplayer 48 + isnetclient 49 + teamid 50 + getnexttarget 51 + think 52 + touch 53 + use 54 + blocked 55 + respawn 57 + updateowner 58 + fbecomeprone 59 + center 60 + eyeposition 61 + earposition 62 + bodytarget 63 + illumination 64 + fvisible 65 + fvecvisible 66 + + player_jump 84 + player_duck 85 + player_prethink 86 + player_postthink 87 + player_getgunposition 88 + player_shouldfadeondeath 75 + player_impulsecommands 90 + player_updateclientdata 89 + + item_addtoplayer 68 + item_addduplicate 69 + item_candeploy 71 + item_deploy 72 + item_canholster 73 + item_holster 74 + item_updateiteminfo 75 + item_preframe 76 + item_postframe 77 + item_drop 78 + item_kill 79 + item_attachtoplayer 80 + item_primaryammoindex 81 + item_secondaryammoindex 82 + item_updateclientdata 83 + item_getweaponptr 84 + item_itemslot 85 + + weapon_extractammo 86 + weapon_extractclipammo 87 + weapon_addweapon 88 + weapon_playemptysound 89 + weapon_resetemptysound 90 + weapon_sendweaponanim 91 + weapon_isusable 92 + weapon_primaryattack 93 + weapon_secondaryattack 94 + weapon_reload 96 + weapon_weaponidle 97 + weapon_retireweapon 98 + weapon_shouldweaponidle 99 + weapon_usedecrement 100 + + ts_breakablerespawn 0 + ts_canusedthroughwalls 1 + ts_giveslowmul 2 + ts_goslow 3 + ts_inslow 4 + ts_isobjective 5 + ts_enableobjective 6 + ts_onfreeentprivatedata 10 + ts_shouldcollide 11 + + ts_weapon_alternateattack 95 +@end + + +@section esf windows + pev 4 + base 0x0 + + spawn 0 + precache 1 + keyvalue 2 + objectcaps 5 + activate 6 + setobjectcollisionbox 7 + classify 8 + deathnotice 9 + traceattack 10 + takedamage 11 + takehealth 12 + killed 13 + bloodcolor 14 + tracebleed 15 + istriggered 16 + mymonsterpointer 17 + mysquadmonsterpointer 18 + gettogglestate 19 + addpoints 20 + addpointstoteam 21 + addplayeritem 22 + removeplayeritem 23 + getdelay 24 + ismoving 25 + overridereset 26 + damagedecal 27 + settogglestate 28 + startsneaking 29 + stopsneaking 30 + oncontrols 31 + issneaking 32 + isalive 33 + isbspmodel 34 + reflectgauss 35 + hastarget 36 + isinworld 37 + isplayer 38 + isnetclient 39 + teamid 40 + getnexttarget 41 + think 42 + touch 43 + use 44 + blocked 45 + respawn 46 + updateowner 47 + fbecomeprone 48 + center 49 + eyeposition 50 + earposition 51 + bodytarget 52 + illumination 53 + fvisible 54 + fvecvisible 55 + + player_jump 124 + player_prethink 125 + player_postthink 126 + player_getgunposition 118 + player_shouldfadeondeath 59 + player_impulsecommands 128 + player_updateclientdata 127 + + item_addtoplayer 57 + item_addduplicate 58 + item_getiteminfo 59 + item_candeploy 60 + item_deploy 61 + item_canholster 62 + item_holster 63 + item_updateiteminfo 64 + item_preframe 65 + item_postframe 66 + item_drop 67 + item_kill 68 + item_attachtoplayer 69 + item_primaryammoindex 70 + item_secondaryammoindex 71 + item_updateclientdata 72 + item_getweaponptr 73 + item_itemslot 74 + + weapon_playemptysound 75 + weapon_resetemptysound 76 + weapon_sendweaponanim 77 + weapon_primaryattack 78 + weapon_secondaryattack 79 + weapon_weaponidle 80 + weapon_retireweapon 81 + weapon_shouldweaponidle 82 + weapon_usedecrement 83 +@end +@section esf linux + pev 0 + base 0x60 + + spawn 2 + precache 3 + keyvalue 4 + objectcaps 7 + activate 8 + setobjectcollisionbox 9 + classify 10 + deathnotice 11 + traceattack 12 + takedamage 13 + takehealth 14 + killed 15 + bloodcolor 16 + tracebleed 17 + istriggered 18 + mymonsterpointer 19 + mysquadmonsterpointer 20 + gettogglestate 21 + addpoints 22 + addpointstoteam 23 + addplayeritem 24 + removeplayeritem 25 + getdelay 26 + ismoving 27 + overridereset 28 + damagedecal 29 + settogglestate 30 + startsneaking 31 + stopsneaking 32 + oncontrols 33 + issneaking 34 + isalive 35 + isbspmodel 36 + reflectgauss 37 + hastarget 38 + isinworld 39 + isplayer 40 + isnetclient 41 + teamid 42 + getnexttarget 43 + think 44 + touch 45 + use 46 + blocked 47 + respawn 48 + updateowner 49 + fbecomeprone 50 + center 51 + eyeposition 52 + earposition 53 + bodytarget 54 + illumination 55 + fvisible 56 + fvecvisible 57 + + player_jump 126 + player_prethink 127 + player_postthink 128 + player_getgunposition 120 + player_shouldfadeondeath 61 + player_impulsecommands 130 + player_updateclientdata 129 + + item_addtoplayer 59 + item_addduplicate 60 + item_getiteminfo 61 + item_candeploy 62 + item_deploy 63 + item_canholster 64 + item_holster 65 + item_updateiteminfo 66 + item_preframe 67 + item_postframe 68 + item_drop 69 + item_kill 70 + item_attachtoplayer 71 + item_primaryammoindex 72 + item_secondaryammoindex 73 + item_updateclientdata 74 + item_getweaponptr 75 + item_itemslot 76 + + weapon_playemptysound 77 + weapon_resetemptysound 78 + weapon_sendweaponanim 79 + weapon_primaryattack 80 + weapon_secondaryattack 81 + weapon_weaponidle 82 + weapon_retireweapon 83 + weapon_shouldweaponidle 84 + weapon_usedecrement 85 +@end + +; ESF Open Beta is built with GCC 3.x, and the VTable was slightly changed +@section esf_openbeta linux + pev 4 + base 0x0 + + spawn 0 + precache 1 + keyvalue 2 + objectcaps 5 + activate 6 + setobjectcollisionbox 7 + classify 8 + deathnotice 9 + traceattack 10 + takedamage 11 + takehealth 13 + killed 14 + bloodcolor 15 + tracebleed 16 + istriggered 17 + mymonsterpointer 18 + mysquadmonsterpointer 19 + gettogglestate 20 + addpoints 21 + addpointstoteam 22 + addplayeritem 23 + removeplayeritem 24 + getdelay 25 + ismoving 26 + overridereset 27 + damagedecal 28 + settogglestate 29 + startsneaking 30 + stopsneaking 31 + oncontrols 32 + issneaking 33 + isalive 34 + isbspmodel 35 + reflectgauss 36 + hastarget 37 + isinworld 38 + isplayer 39 + isnetclient 41 + teamid 42 + getnexttarget 43 + think 44 + touch 45 + use 46 + blocked 47 + respawn 48 + updateowner 49 + fbecomeprone 50 + center 51 + eyeposition 52 + earposition 53 + bodytarget 54 + illumination 55 + fvisible 56 + fvecvisible 57 + + player_jump 131 + player_prethink 132 + player_postthink 133 + player_getgunposition 120 + player_shouldfadeondeath 61 + player_impulsecommands 135 + player_updateclientdata 134 + + item_addtoplayer 59 + item_addduplicate 60 + item_getiteminfo 61 + item_candeploy 62 + item_deploy 63 + item_canholster 64 + item_holster 65 + item_updateiteminfo 66 + item_preframe 67 + item_postframe 68 + item_drop 69 + item_kill 70 + item_attachtoplayer 71 + item_primaryammoindex 72 + item_secondaryammoindex 73 + item_updateclientdata 74 + item_getweaponptr 75 + item_itemslot 76 + + weapon_playemptysound 77 + weapon_resetemptysound 78 + weapon_sendweaponanim 79 + weapon_primaryattack 80 + weapon_secondaryattack 81 + weapon_weaponidle 82 + weapon_retireweapon 83 + weapon_shouldweaponidle 84 + weapon_usedecrement 85 + + esf_isenvmodel 40 + esf_takedamage2 12 + +@end +@section esf_openbeta windows + pev 4 + base 0x0 + + spawn 0 + precache 1 + keyvalue 2 + objectcaps 5 + activate 6 + setobjectcollisionbox 7 + classify 8 + deathnotice 9 + traceattack 10 + takedamage 11 + takehealth 13 + killed 14 + bloodcolor 15 + tracebleed 16 + istriggered 17 + mymonsterpointer 18 + mysquadmonsterpointer 19 + gettogglestate 20 + addpoints 21 + addpointstoteam 22 + addplayeritem 23 + removeplayeritem 24 + getdelay 25 + ismoving 26 + overridereset 27 + damagedecal 28 + settogglestate 29 + startsneaking 30 + stopsneaking 31 + oncontrols 32 + issneaking 33 + isalive 34 + isbspmodel 35 + reflectgauss 36 + hastarget 37 + isinworld 38 + isplayer 39 + isnetclient 41 + teamid 42 + getnexttarget 43 + think 44 + touch 45 + use 46 + blocked 47 + respawn 48 + updateowner 49 + fbecomeprone 50 + center 51 + eyeposition 52 + earposition 53 + bodytarget 54 + illumination 55 + fvisible 56 + fvecvisible 57 + + player_jump 131 + player_prethink 132 + player_postthink 133 + player_getgunposition 120 + player_shouldfadeondeath 61 + player_impulsecommands 135 + player_updateclientdata 134 + + item_addtoplayer 59 + item_addduplicate 60 + item_getiteminfo 61 + item_candeploy 62 + item_deploy 63 + item_canholster 64 + item_holster 65 + item_updateiteminfo 66 + item_preframe 67 + item_postframe 68 + item_drop 69 + item_kill 70 + item_attachtoplayer 71 + item_primaryammoindex 72 + item_secondaryammoindex 73 + item_updateclientdata 74 + item_getweaponptr 75 + item_itemslot 76 + + weapon_playemptysound 77 + weapon_resetemptysound 78 + weapon_sendweaponanim 79 + weapon_primaryattack 80 + weapon_secondaryattack 81 + weapon_weaponidle 82 + weapon_retireweapon 83 + weapon_shouldweaponidle 84 + weapon_usedecrement 85 + + esf_isenvmodel 40 + esf_takedamage2 12 + +@end +@section valve linux + pev 4 + base 0x0 + + spawn 0 + precache 1 + keyvalue 2 + objectcaps 5 + activate 6 + setobjectcollisionbox 7 + classify 8 + deathnotice 9 + traceattack 10 + takedamage 11 + takehealth 12 + killed 13 + bloodcolor 14 + tracebleed 15 + istriggered 16 + mymonsterpointer 17 + mysquadmonsterpointer 18 + gettogglestate 19 + addpoints 20 + addpointstoteam 21 + addplayeritem 22 + removeplayeritem 23 + giveammo 24 + getdelay 25 + ismoving 26 + overridereset 27 + damagedecal 28 + settogglestate 29 + startsneaking 30 + stopsneaking 31 + oncontrols 32 + issneaking 33 + isalive 34 + isbspmodel 35 + reflectgauss 36 + hastarget 37 + isinworld 38 + isplayer 39 + isnetclient 40 + teamid 41 + getnexttarget 42 + think 43 + touch 44 + use 45 + blocked 46 + respawn 47 + updateowner 48 + fbecomeprone 49 + center 50 + eyeposition 51 + earposition 52 + bodytarget 53 + illumination 54 + fvisible 55 + fvecvisible 56 + + player_jump 125 + player_duck 126 + player_prethink 127 + player_postthink 128 + player_getgunposition 119 + player_shouldfadeondeath 60 + player_impulsecommands 130 + player_updateclientdata 129 + + item_addtoplayer 58 + item_addduplicate 59 + item_getiteminfo 60 + item_candeploy 61 + item_deploy 62 + item_canholster 63 + item_holster 64 + item_updateiteminfo 65 + item_preframe 66 + item_postframe 67 + item_drop 68 + item_kill 69 + item_attachtoplayer 70 + item_primaryammoindex 71 + item_secondaryammoindex 72 + item_updateclientdata 73 + item_getweaponptr 74 + item_itemslot 75 + + weapon_extractammo 76 + weapon_extractclipammo 77 + weapon_addweapon 78 + weapon_playemptysound 79 + weapon_resetemptysound 80 + weapon_sendweaponanim 81 + weapon_isusable 82 + weapon_primaryattack 83 + weapon_secondaryattack 84 + weapon_reload 85 + weapon_weaponidle 86 + weapon_retireweapon 87 + weapon_shouldweaponidle 88 + weapon_usedecrement 89 +@end +@section valve windows + pev 4 + base 0x0 + + spawn 0 + precache 1 + keyvalue 2 + objectcaps 5 + activate 6 + setobjectcollisionbox 7 + classify 8 + deathnotice 9 + traceattack 10 + takedamage 11 + takehealth 12 + killed 13 + bloodcolor 14 + tracebleed 15 + istriggered 16 + mymonsterpointer 17 + mysquadmonsterpointer 18 + gettogglestate 19 + addpoints 20 + addpointstoteam 21 + addplayeritem 22 + removeplayeritem 23 + giveammo 24 + getdelay 25 + ismoving 26 + overridereset 27 + damagedecal 28 + settogglestate 29 + startsneaking 30 + stopsneaking 31 + oncontrols 32 + issneaking 33 + isalive 34 + isbspmodel 35 + reflectgauss 36 + hastarget 37 + isinworld 38 + isplayer 39 + isnetclient 40 + teamid 41 + getnexttarget 42 + think 43 + touch 44 + use 45 + blocked 46 + respawn 47 + updateowner 48 + fbecomeprone 49 + center 50 + eyeposition 51 + earposition 52 + bodytarget 53 + illumination 54 + fvisible 55 + fvecvisible 56 + + player_jump 125 + player_duck 126 + player_prethink 127 + player_postthink 128 + player_getgunposition 119 + player_shouldfadeondeath 60 + player_impulsecommands 130 + player_updateclientdata 129 + + item_addtoplayer 58 + item_addduplicate 59 + item_getiteminfo 60 + item_candeploy 61 + item_deploy 62 + item_canholster 63 + item_holster 64 + item_updateiteminfo 65 + item_preframe 66 + item_postframe 67 + item_drop 68 + item_kill 69 + item_attachtoplayer 70 + item_primaryammoindex 71 + item_secondaryammoindex 72 + item_updateclientdata 73 + item_getweaponptr 74 + item_itemslot 75 + + weapon_extractammo 76 + weapon_extractclipammo 77 + weapon_addweapon 78 + weapon_playemptysound 79 + weapon_resetemptysound 80 + weapon_sendweaponanim 81 + weapon_isusable 82 + weapon_primaryattack 83 + weapon_secondaryattack 84 + weapon_reload 85 + weapon_weaponidle 86 + weapon_retireweapon 87 + weapon_shouldweaponidle 88 + weapon_usedecrement 89 +@end + +@section valve mac + pev 4 + base 0x0 + + spawn 0 + precache 1 + keyvalue 2 + objectcaps 5 + activate 6 + setobjectcollisionbox 7 + classify 8 + deathnotice 9 + traceattack 10 + takedamage 11 + takehealth 12 + killed 13 + bloodcolor 14 + tracebleed 15 + istriggered 16 + mymonsterpointer 17 + mysquadmonsterpointer 18 + gettogglestate 19 + addpoints 20 + addpointstoteam 21 + addplayeritem 22 + removeplayeritem 23 + giveammo 24 + getdelay 25 + ismoving 26 + overridereset 27 + damagedecal 28 + settogglestate 29 + startsneaking 30 + stopsneaking 31 + oncontrols 32 + issneaking 33 + isalive 34 + isbspmodel 35 + reflectgauss 36 + hastarget 37 + isinworld 38 + isplayer 39 + isnetclient 40 + teamid 41 + getnexttarget 42 + think 43 + touch 44 + use 45 + blocked 46 + respawn 47 + updateowner 48 + fbecomeprone 49 + center 50 + eyeposition 51 + earposition 52 + bodytarget 53 + illumination 54 + fvisible 55 + fvecvisible 56 + + player_jump 125 + player_duck 126 + player_prethink 127 + player_postthink 128 + player_getgunposition 119 + player_shouldfadeondeath 60 + player_impulsecommands 130 + player_updateclientdata 129 + + item_addtoplayer 58 + item_addduplicate 59 + item_getiteminfo 60 + item_candeploy 61 + item_deploy 62 + item_canholster 63 + item_holster 64 + item_updateiteminfo 65 + item_preframe 66 + item_postframe 67 + item_drop 68 + item_kill 69 + item_attachtoplayer 70 + item_primaryammoindex 71 + item_secondaryammoindex 72 + item_updateclientdata 73 + item_getweaponptr 74 + item_itemslot 75 + + weapon_extractammo 76 + weapon_extractclipammo 77 + weapon_addweapon 78 + weapon_playemptysound 79 + weapon_resetemptysound 80 + weapon_sendweaponanim 81 + weapon_isusable 82 + weapon_primaryattack 83 + weapon_secondaryattack 84 + weapon_reload 85 + weapon_weaponidle 86 + weapon_retireweapon 87 + weapon_shouldweaponidle 88 + weapon_usedecrement 89 +@end + +; Sven-Coop has no linux binaries. This makes disassembly much harder. +; These offsets were contributed by ts2do +@section SvenCoop windows + pev 4 + base 0x0 + + spawn 0 + precache 1 + keyvalue 2 + objectcaps 5 + takedamage 11 + addpoints 20 + addpointstoteam 21 + addplayeritem 22 + removeplayeritem 23 + giveammo 24 + oncontrols 32 + isalive 34 + isbspmodel 35 + reflectgauss 36 + hastarget 37 + isinworld 38 + isplayer 39 + isnetclient 40 + teamid 42 + getnexttarget 43 + think 44 + touch 45 + use 46 + blocked 47 + respawn 48 + center 51 + eyeposition 52 + earposition 53 + bodytarget 54 + illumination 55 + fvisible 56 + +@end diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/modules.ini b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/modules.ini new file mode 100644 index 0000000..50f4c2d --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/modules.ini @@ -0,0 +1,40 @@ + +;;; +; To enable a module, remove the semi-colon (;) in front of its name. +; If it's not here, simply add it its name, one per line. +; You don't need to write the _amxx part or the file extension. +;;; + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; SQL Modules usually need to be enabled manually ;; +;; You can have any number on at a time. Use ;; +;; amx_sql_type in sql.cfg to specify the default ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;mysql +;sqlite + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Put third party modules below here. ;; +;; You can just list their names, without the _amxx ;; +;; or file extension. ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; These modules will be auto-detected and loaded ;; +;; as needed. You do not need to enable them here ;; +;; unless you have problems. ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +fun +;engine +;fakemeta +;geoip +;sockets +;regex +;nvault +cstrike +csx +;hamsandwich diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/plugins.ini b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/plugins.ini new file mode 100644 index 0000000..f7f8d06 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/plugins.ini @@ -0,0 +1,49 @@ +; AMX Mod X plugins + +; Admin Base - Always one has to be activated +admin.amxx ; admin base (required for any admin-related) +;admin_sql.amxx ; admin base - SQL version (comment admin.amxx) + +; Basic +admincmd.amxx ; basic admin console commands +adminhelp.amxx ; help command for admin console commands +adminslots.amxx ; slot reservation +multilingual.amxx ; Multi-Lingual management + +; Menus +menufront.amxx ; front-end for admin menus +cmdmenu.amxx ; command menu (speech, settings) +plmenu.amxx ; players menu (kick, ban, client cmds.) +;telemenu.amxx ; teleport menu (Fun Module required!) +mapsmenu.amxx ; maps menu (vote, changelevel) +pluginmenu.amxx ; Menus for commands/cvars organized by plugin + +; Chat / Messages +adminchat.amxx ; console chat commands +antiflood.amxx ; prevent clients from chat-flooding the server +scrollmsg.amxx ; displays a scrolling message +imessage.amxx ; displays information messages +adminvote.amxx ; vote commands + +; Map related +nextmap.amxx ; displays next map in mapcycle +mapchooser.amxx ; allows to vote for next map +timeleft.amxx ; displays time left on map + +; Configuration +pausecfg.amxx ; allows to pause and unpause some plugins +statscfg.amxx ; allows to manage stats plugins via menu and commands + +; Counter-Strike +;restmenu.amxx ; restrict weapons menu +statsx.amxx ; stats on death or round end (CSX Module required!) +miscstats.amxx ; bunch of events announcement for Counter-Strike +;stats_logging.amxx ; weapons stats logging (CSX Module required!) + +; Enable to use AMX Mod plugins +;amxmod_compat.amxx ; AMX Mod backwards compatibility layer + +; Custom - Add 3rd party plugins here +;QuakeSounds.amxx +;bullet_damage.amxx +abd.amxx diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/quakesounds.ini b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/quakesounds.ini new file mode 100644 index 0000000..87f3ec5 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/quakesounds.ini @@ -0,0 +1,156 @@ +// NOTE: IF YOU DISABLE AN EVENT, FOR EXAMPLE "HEADSHOT EVENT", THE HEAD SHOT SOUNDS WILL NOT BE PRECACHED. +// NOTE: REGARDING HUD MESSAGES [TE_TEXTMESSAGE], USE THE EMPTY VALUE TO SET NO HUD MESSAGES. +// NOTE: IF YOU DISABLE THE PLUGIN, NO SOUNDS WILL BE PRECACHED. + +# ENABLES OR DISABLES THE PLUGIN. +ENABLE/DISABLE PLUGIN = 1 + +# HUD MESSAGES IN RGB [RED, GREEN, BLUE]. +# NOTE: USE UNDERLINE FOR RANDOM VALUE. THE UNDERLINE IS '_'. +# NOTE: THE MAXIMUM VALUE IS 255 AND THE MINIMUM VALUE IS 0. +HUDMSG RED = _ +HUDMSG GREEN = _ +HUDMSG BLUE = _ + +# KILLS STREAK. +# NOTE: SOUNDS LIKE MONSTER KILL, GOD LIKE, MULTI KILL, MEGA KILL, TRIPLE KILL, ... +# NOTE: YOU CAN MODIFY THE "REQUIREDKILLS" VALUES. +# NOTE: YOU CAN ALSO MODIFY THE MESSAGES THAT WILL BE SENT TO THE PLAYERS. +# NOTE: YOU CAN ALSO ADD OR REMOVE SOUNDS FROM THIS LIST. +# NOTE: THERE'S NO SOUNDS LIMIT. +KILLSTREAK EVENT = 1 + +; Sounds structure: +; SOUND = {soundnumber} REQUIREDKILLS {kills} = {sound} +; SOUND = {soundnumber} MESSAGE @ %s {message} + +SOUND = 1 REQUIREDKILLS 3 = QuakeSounds/triplekill.wav +SOUND = 1 MESSAGE @ %s is on TRIPLE KILL! + +SOUND = 2 REQUIREDKILLS 5 = QuakeSounds/multikill.wav +SOUND = 2 MESSAGE @ %s is on MULTI KILL! + +SOUND = 3 REQUIREDKILLS 6 = QuakeSounds/rampage.wav +SOUND = 3 MESSAGE @ %s is on RAMPAGE! + +SOUND = 4 REQUIREDKILLS 7 = QuakeSounds/killingspree.wav +SOUND = 4 MESSAGE @ %s is on a KILLING SPREE! + +SOUND = 5 REQUIREDKILLS 9 = QuakeSounds/dominating.wav +SOUND = 5 MESSAGE @ %s is DOMINATING! + +SOUND = 6 REQUIREDKILLS 11 = QuakeSounds/unstoppable.wav +SOUND = 6 MESSAGE @ %s is UNSTOPPABLE! + +SOUND = 7 REQUIREDKILLS 13 = QuakeSounds/megakill.wav +SOUND = 7 MESSAGE @ %s made a MEGA KILL! + +SOUND = 8 REQUIREDKILLS 15 = QuakeSounds/ultrakill.wav +SOUND = 8 MESSAGE @ %s made an ULTRA KILL! + +SOUND = 9 REQUIREDKILLS 16 = QuakeSounds/eagleeye.wav +SOUND = 9 MESSAGE @ %s has an EAGLE EYE! + +SOUND = 10 REQUIREDKILLS 17 = QuakeSounds/ownage.wav +SOUND = 10 MESSAGE @ %s OWNS! + +SOUND = 11 REQUIREDKILLS 18 = QuakeSounds/ludicrouskill.wav +SOUND = 11 MESSAGE @ %s made a LUDICROUS KILL! + +SOUND = 12 REQUIREDKILLS 19 = QuakeSounds/headhunter.wav +SOUND = 12 MESSAGE @ %s is a HEAD HUNTER! + +SOUND = 13 REQUIREDKILLS 20 = QuakeSounds/whickedsick.wav +SOUND = 13 MESSAGE @ %s is WICKED SICK! + +SOUND = 14 REQUIREDKILLS 21 = QuakeSounds/monsterkill.wav +SOUND = 14 MESSAGE @ %s made a MONSTER KILL! + +SOUND = 15 REQUIREDKILLS 23 = QuakeSounds/holyshit.wav +SOUND = 15 MESSAGE @ HOLY SHIT! %s GOT ANOTHER ONE! + +SOUND = 16 REQUIREDKILLS 24 = QuakeSounds/godlike.wav +SOUND = 16 MESSAGE @ %s IS G O D L I K E !!! + +# IF YOU WANNA ADD ANOTHER KILLS STREAK SOUND, IT WILL BE THE SOUND WITH NUMBER '17'. + +# HEADSHOT +# NOTE: THE HUD MESSAGE STRUCTURE IS "%s {MESSAGE} %s {MESSAGE}", WHERE THE FIRST '%s' IS THE KILLER NAME AND THE NEXT '%s' IS THE VICTIM NAME. +# NOTE: EXAMPLE OF HUD MESSAGE FOR HEADSHOT: "%s REMOVED %s's HEAD!" (WITHOUT QUOTES). +# NOTE: THIS HUD MESSAGE WILL BE SENT TO ALL PLAYERS (NOT ONLY TO THE KILLER OR ONLY TO THE VICTIM). +# NOTE: I SUGGEST TO LEAVE THE MESSAGE EMPTY ON POPULATED GAME SERVERS. +# NOTE: BUT IT LOOKS FINE ON DAY OF DEFEAT. +HEADSHOT EVENT = 1 +HEADSHOT ONLY KILLER = 1 +HEADSHOT SOUNDS = QuakeSounds/headshot.wav , QuakeSounds/headshot2.wav , QuakeSounds/headshot3.wav +HEADSHOT HUDMSG = + +# SUICIDE +# NOTE: THE HUD MESSAGE STRUCTURE IS "%s {MESSAGE}" OR "{MESSAGE} %s", WHERE '%s' IS THE VICTIM. +SUICIDE EVENT = 1 +SUICIDE SOUNDS = QuakeSounds/suicide.wav , QuakeSounds/suicide2.wav , QuakeSounds/suicide3.wav , QuakeSounds/suicide4.wav +SUICIDE HUDMSG = %s KNOWS HOW THE KILL COMMAND WORKS! + +# GRENADE KILL +# NOTE: THE HUD MESSAGE STRUCTURE IS "%s {MESSAGE} %s {MESSAGE}", WHERE THE FIRST '%s' IS THE KILLER NAME AND THE NEXT '%s' IS THE VICTIM NAME. +NADE EVENT = 1 +NADE SOUNDS = QuakeSounds/nade.wav +NADE HUDMSG = %s MADE A PRECISION THROW TO %s + +# TEAM KILL +# NOTE: THE HUD MESSAGE STRUCTURE IS "%s {MESSAGE}" OR "{MESSAGE} %s", WHERE '%s' IS THE KILLER NAME. +TEAMKILL EVENT = 1 +TEAMKILL SOUNDS = QuakeSounds/teamkiller.wav +TEAMKILL HUDMSG = %s IS SICK! + +# KNIFE KILL +# NOTE: THE HUDM ESSAGE STRUCTURE IS "%s {MESSAGE} %s {MESSAGE}", WHERE THE FIRST '%s' IS THE KILLER NAME AND THE NEXT '%s' IS THE VICTIM NAME. +KNIFE EVENT = 1 +KNIFE SOUNDS = QuakeSounds/knife.wav , QuakeSounds/knife2.wav , QuakeSounds/knife3.wav +KNIFE HUDMSG = %s SLICED AND DICED %s! + +# FIRST BLOOD +# NOTE: THE HUD MESSAGE STRUCTURE IS "%s {MESSAGE}" OR "{MESSAGE} %s", WHERE '%s' IS THE KILLER NAME. +FIRSTBLOOD EVENT = 1 +FIRSTBLOOD SOUNDS = QuakeSounds/firstblood.wav , QuakeSounds/firstblood2.wav , QuakeSounds/firstblood3.wav +FIRSTBLOOD HUDMSG = %s made the FIRST BLOOD! + +# ROUND START +# NOTE: THE HUD MESSAGE STRUCTURE IS "{MESSAGE}", THE MESSAGE YOU WANT, DON'T USE '%s' HERE! +ROUNDSTART EVENT = 1 +ROUNDSTART SOUNDS = QuakeSounds/prepare.wav , QuakeSounds/prepare2.wav , QuakeSounds/prepare3.wav , QuakeSounds/prepare4.wav +ROUNDSTART HUDMSG = PREPARE TO FIGHT! + +# DOUBLE KILL +# NOTE: THE HUD MESSAGE STRUCTURE IS "%s {MESSAGE}" OR "{MESSAGE} %s", WHERE '%s' IS THE KILLER NAME. +DOUBLEKILL EVENT = 1 +DOUBLEKILL SOUNDS = QuakeSounds/doublekill.wav , QuakeSounds/doublekill2.wav +DOUBLEKILL HUDMSG = WOW, %s made a DOUBLE KILL! + +# HATTRICK +# NOTE: THE HUD MESSAGE STRUCTURE IS "%s {MESSAGE}" OR "{MESSAGE} %s", WHERE '%s' IS THE LEADER NAME, THE PLAYER WITH MOST KILLS FOR THIS ROUND. +# NOTE: THE 'MIN FRAGS FOR HATTRICK' MEANS HOW MANY FRAGS YOU SHOULD DO THIS ROUND TO APPEAR AT THE ROUND END AS "<%> WAS UNREAL THIS ROUND!". +HATTRICK EVENT = 1 +HATTRICK SOUNDS = QuakeSounds/hattrick.wav +HATTRICK HUDMSG = %s WAS UNREAL THIS ROUND! +MIN FRAGS FOR HATTRICK = 7 + +# FLAWLESS VICTORY +# NOTE: THE HUD MESSAGE STRUCTURE IS "{MESSAGE} %s {MESSAGE}", WHERE '%s' IS THE TEAM NAME. +# NOTE: YOU CAN SET THE TEAM NAMES TO BE SHOWN. YOU CAN USE FOR EXAMPLE 'TERRO' INSTEAD OF THE DEFAULT VALUE 'TERRORIST'. +FLAWLESS VICTORY = 1 +FLAWLESS SOUNDS = QuakeSounds/flawless.wav +FLAWLESS VICTORY HUDMSG = FLAWLESS %s VICTORY! +TERRO TEAM NAME = TERRORIST +CT TEAM NAME = COUNTER-TERRORIST + +# REVENGE +# NOTE: THE HUD MESSAGE STRUCTURE IS "%s {MESSAGE}" OR "{MESSAGE} %s", WHERE '%s' IS THE KILLER OR THE VICTIM NAME. +# NOTE: IF 'REVENGE ONLY FOR KILLER' IS SET TO 1, THE VICTIM WILL NOT HEAR THE SOUND. +REVENGE EVENT = 1 +REVENGE ONLY FOR KILLER = 0 +REVENGE SOUNDS = QuakeSounds/payback.wav +REVENGE KILLER MESSAGE = YOU'VE PAID %s BACK! +REVENGE VICTIM MESSAGE = %s HAS JUST PAID YOU BACK! + + diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/speech.ini b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/speech.ini new file mode 100644 index 0000000..725acf6 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/speech.ini @@ -0,0 +1,34 @@ +; Menu configuration file +; File location: $moddir/addons/amxmodx/configs/speech.ini +; To use with Commands Menu plugin + +; NOTE: By default in all settings the access level is set to "u". +; However you can change that, to limit the access to some settings. + +; Commands Menu: ; < description > < command > < flags > < access level > +; "a" - execute from server console +; "b" - execute from admin console +; "c" - execute on all clients +; "d" - back to menu when executed + +"Hello!" "spk \'vox/hello\'" "cd" "u" +"Don't think so" "spk \'barney/dontguess\'" "cd" "u" +"Don't ask me" "spk \'barney/dontaskme\'" "cd" "u" +"Hey! Stop that!" "spk \'barney/donthurtem\'" "cd" "u" +"Yup" "spk \'barney/yup\'" "cd" "u" +"Nope" "spk \'barney/nope\'" "cd" "u" +"Maybe" "spk \'barney/maybe\'" "cd" "u" +"Seeya" "spk \'barney/seeya\'" "cd" "u" +"Man that sounded bad" "spk \'barney/soundsbad\'" "cd" "u" +"Hello and die" "spk \'vox/hello and die\'" "cd" "u" +"Move!" "spk \'hgrunt/move! _comma yessir!\'" "cd" "u" +"You will definitely pay!" "spk \'hgrunt/c2a2_hg_chat5a\'" "cd" "u" +"Laughter" "spk \'hgrunt/c2a3_hg_laugh\'" "cd" "u" +"Silence!" "spk \'hgrunt/silence!\'" "cd" "u" +"You talk too much" "spk \'barney/youtalkmuch\'" "cd" "u" +"You thinkin?" "spk \'barney/thinking\'" "cd" "u" +"Open fire Gordon!" "spk \'barney/openfire\'" "cd" "u" +"Couldnt make a bigger mess" "spk \'barney/bigmess\'" "cd" "u" +"I have a Bad feeling" "spk \'barney/badfeeling\'" "cd" "u" +"Yes sir!" "spk \'hgrunt/yessir!\'" "cd" "u" +"No sir" "spk \'barney/nosir\'" "cd" "u" diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/sql.cfg b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/sql.cfg new file mode 100644 index 0000000..b8cd765 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/sql.cfg @@ -0,0 +1,14 @@ +// SQL configuration file +// File location: $moddir/addons/amxmodx/configs/sql.cfg + +// *NOTE* Linux users may encounter problems if they specify "localhost" instead of "127.0.0.1" +// We recommend using your server IP address instead of its name + +// *NOTE* amx_sql_type specifies the DEFAULT database type which admin.sma will use. + +amx_sql_host "127.0.0.1" +amx_sql_user "root" +amx_sql_pass "" +amx_sql_db "amx" +amx_sql_table "admins" +amx_sql_type "mysql" diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/stats.ini b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/stats.ini new file mode 100644 index 0000000..13a1218 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/stats.ini @@ -0,0 +1,8 @@ +;Generated by Stats Configuration Plugin. Do not modify! +;Variable Description +ShowAttackers ;Show Attackers +ShowVictims ;Show Victims +ShowStats ;HUD-stats default +SayRankStats ;Say /rankstats +SayRank ;Say /rank +SayTop15 ;Say /top15 diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/users.ini b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/users.ini new file mode 100644 index 0000000..6e3f97e --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/configs/users.ini @@ -0,0 +1,54 @@ +; Users configuration file +; File location: $moddir/addons/amxmodx/configs/users.ini + +; Line starting with ; is a comment + +; Access flags: +; a - immunity (can't be kicked/baned/slayed/slaped and affected by other commmands) +; b - reservation (can join on reserved slots) +; c - amx_kick command +; d - amx_ban and amx_unban commands +; e - amx_slay and amx_slap commands +; f - amx_map command +; g - amx_cvar command (not all cvars will be available) +; h - amx_cfg command +; i - amx_chat and other chat commands +; j - amx_vote and other vote commands +; k - access to sv_password cvar (by amx_cvar command) +; l - access to amx_rcon command and rcon_password cvar (by amx_cvar command) +; m - custom level A (for additional plugins) +; n - custom level B +; o - custom level C +; p - custom level D +; q - custom level E +; r - custom level F +; s - custom level G +; t - custom level H +; u - menu access +; z - user (no admin) + +; Account flags: +; a - disconnect player on invalid password +; b - clan tag +; c - this is steamid/wonid +; d - this is ip +; e - password is not checked (only name/ip/steamid needed) +; k - name or tag is case sensitive. eg: if you set it so the name "Ham" +; is protected and case sensitive (flags "k" only), then anybody +; can use the names "haM", "HAM", "ham", etc, but not "Ham" + +; Password: +; Add to your autoexec.cfg: setinfo _pw "" +; Change _pw to the value of amx_password_field + +; Format of admin account: +; + +; Examples of admin accounts: +; "STEAM_0:0:123456" "" "abcdefghijklmnopqrstu" "ce" +; "123.45.67.89" "" "abcdefghijklmnopqrstu" "de" +; "My Name" "my_password" "abcdefghijklmnopqrstu" "a" +"STEAM_0:1:35537" "" "abcdefghijklmnopqrstu" "ce" +"STEAM_0:0:39361676" "" "abcdefghijklmnopqrstu" "ce" +"STEAM_0:0:5332910" "" "abcdefghijklmnopqrstu" "ce" +"loopback" "" "abcdefghijklmnopqrstu" "de" diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/GeoIP.dat b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/GeoIP.dat new file mode 100644 index 0000000..13a6518 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/GeoIP.dat differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/csstats.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/csstats.amxx new file mode 100644 index 0000000..b177af5 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/csstats.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/admin.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/admin.txt new file mode 100644 index 0000000..503a7e7 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/admin.txt @@ -0,0 +1,259 @@ +[en] +LOADED_ADMIN = Loaded 1 admin from file +LOADED_ADMINS = Loaded %d admins from file +SQL_CANT_CON = SQL error: can't connect: '%s' +SQL_CANT_LOAD_ADMINS = SQL error: can't load admins: '%s' +NO_ADMINS = No admins found. +SQL_LOADED_ADMIN = Loaded 1 admin from database +SQL_LOADED_ADMINS = Loaded %d admins from database +INV_PAS = Invalid Password! +PAS_ACC = Password accepted +PRIV_SET = Privileges set +NO_ENTRY = You have no entry to the server... + +[de] +LOADED_ADMIN = 1 Admin aus der Datei geladen +LOADED_ADMINS = %d Admins aus der Datei geladen +SQL_CANT_CON = SQL Error: Kann keine Verbindung herstellen: '%s' +SQL_CANT_LOAD_ADMINS = SQL Error: Kann keine Admins laden: '%s' +NO_ADMINS = Keine Admins gefunden. +SQL_LOADED_ADMIN = 1 Admin aus der Datenbank geladen +SQL_LOADED_ADMINS = %d Admins aus der Datenbank geladen +INV_PAS = Passwort falsch! +PAS_ACC = Passwort akzeptiert +PRIV_SET = Rechte gesetzt +NO_ENTRY = Du hast keinen Zugang zu diesem Server... + +[sr] +LOADED_ADMIN = Ucitan 1 administrator iz fajla +LOADED_ADMINS = Ucitano %d administratora iz fajla +SQL_CANT_CON = SQL greska: nije moguce uspostaviti vezu sa: '%s' +SQL_CANT_LOAD_ADMINS = SQL greska: nije moguce ucitati administratore: '%s' +NO_ADMINS = Nema nadjenih administratora. +SQL_LOADED_ADMIN = Ucitan 1 administrator iz baze podataka +SQL_LOADED_ADMINS = Ucitano %d administratora iz baze podataka +INV_PAS = Pogresna lozinka! +PAS_ACC = Lozinka prihvacena +PRIV_SET = Privilegije podesene +NO_ENTRY = Nemate pristup serveru... + +[tr] +LOADED_ADMIN = 1 Admin yuklendi +LOADED_ADMINS = %d Admin dosyadan yuklendi +SQL_CANT_CON = SQL hatasi: baglanamiyor: '%s' +SQL_CANT_LOAD_ADMINS = SQL hatasi: admin yuklenemiyor: '%s' +NO_ADMINS = Hic admin bulunamadi. +SQL_LOADED_ADMIN = 1 Admin dosyadan yuklendi +SQL_LOADED_ADMINS = %d Admin ana hafizadan yuklendi +INV_PAS = Hatali kod! +PAS_ACC = Kod onaylandi +PRIV_SET = Haklar onaylandi +NO_ENTRY = Servere giris hakkiniz yok... + +[fr] +LOADED_ADMIN = 1 admin a ete charge depuis le fichier +LOADED_ADMINS = %d admins ont ete charges depuis le fichier +SQL_CANT_CON = Erreur SQL: Impossible de se connecter: '%s' +SQL_CANT_LOAD_ADMINS = Erreur SQL: Impossible de charger les admins: '%s' +NO_ADMINS = Aucun admin trouve. +SQL_LOADED_ADMIN = 1 admin a ete charge depuis la base de donnees +SQL_LOADED_ADMINS = %d admins ont ete charges depuis la base de donnees +INV_PAS = Mot de Passe Invalide! +PAS_ACC = Mot de Passe Accepte +PRIV_SET = Mise en place des Privileges +NO_ENTRY = Tu n'as aucun droit acces sur ce serveur... + +[sv] +LOADED_ADMIN = Laddade en administrat'o'r fran fil +LOADED_ADMINS = Laddade %d administrat'o'rer fran fil +SQL_CANT_CON = SQL-fel: kan inte ansluta: '%s' +SQL_CANT_LOAD_ADMINS = SQL-fel: kan inte ladda administrat'o'rer: '%s' +NO_ADMINS = Inga administrat'o'rer hittade. +SQL_LOADED_ADMIN = Laddade en administrat'o'r ur databas +SQL_LOADED_ADMINS = Laddade %d administrat'o'rer ur databas +INV_PAS = Ogiltigt l'o'senord! +PAS_ACC = L'o'senord accepterat +PRIV_SET = Befogenheter satta +NO_ENTRY = Du har ingen tillgang till servern... + +[da] +LOADED_ADMIN = Indlaest 1 admin fra fil +LOADED_ADMINS = Indlaest %d adminer fra fil +SQL_CANT_CON = SQL fejl: kan ikke opnaa forbindelse: '%s' +SQL_CANT_LOAD_ADMINS = SQL fejl: kan ikke indlaese adminer: '%s' +NO_ADMINS = Ingen adminer fundet. +SQL_LOADED_ADMIN = Indlaest 1 admin fra database +SQL_LOADED_ADMINS = Indlaest %d adminer fra database +INV_PAS = Ugyldig adgangskode! +PAS_ACC = Adgangskode accepteret +PRIV_SET = Privilegier sat +NO_ENTRY = Du er ikke registreret paa serveren ... + +[pl] +LOADED_ADMIN = Zaladowano 1 admina z pliku +LOADED_ADMINS = Zaladowano %d adminow z pliku +SQL_CANT_CON = Blad SQL: nie mozna polaczyc: '%s' +SQL_CANT_LOAD_ADMINS = Blad SQL: nie mozna zalad. adminow: '%s' +NO_ADMINS = Nie znaleziono adminow. +SQL_LOADED_ADMIN = Zaladowano 1 admina z bazy danych +SQL_LOADED_ADMINS = Zaladowano %d admino z bazy danych +INV_PAS = Zle haslo! +PAS_ACC = Haslo zaakceptowane +PRIV_SET = Przywileje ustawione +NO_ENTRY = Nie mozesz wejsc na ten serwer... + +[nl] +LOADED_ADMIN = 1 admin ingeladen vanuit bestand +LOADED_ADMINS = %d admins ingeladen vanuit bestand +SQL_CANT_CON = SQL Fout: Kan geen verbinding maken: '%s' +SQL_CANT_LOAD_ADMINS = SQL Fout: Kan admins niet inladen: '%s' +NO_ADMINS = Geen admins gevonden. +SQL_LOADED_ADMIN = 1 admin ingeladen vanuit databank +SQL_LOADED_ADMINS = %d admins ingeladen vanuit databank +INV_PAS = Ongeldig wachtwoord! +PAS_ACC = Wachtwoord geaccepteerd +PRIV_SET = Privileges ingesteld +NO_ENTRY = Je hebt geen toegang tot deze server... + +[es] +LOADED_ADMIN = 1 administrador cargado del archivo +LOADED_ADMINS = %d administradores cargados del archivo +SQL_CANT_CON = Error de SQL: no se pudo conectar: '%s' +SQL_CANT_LOAD_ADMINS = Error de SQL: no se pudieron cargar los administradores: '%s' +NO_ADMINS = No se encontraron administradores. +SQL_LOADED_ADMIN = 1 administrador cargado de la base de datos +SQL_LOADED_ADMINS = %d administradores cargados de la base de datos +INV_PAS = Contrasenya Incorrecta! +PAS_ACC = Contrasenya Aceptada +PRIV_SET = Privilegios establecidos +NO_ENTRY = No tienes acceso a este servidor... + +[bp] +LOADED_ADMIN = Carregado 1 admin do arquivo +LOADED_ADMINS = Carregado %d Admins do arquivo +SQL_CANT_CON = Erro de SQL: nao pode conectar: '%s' +SQL_CANT_LOAD_ADMINS = Erro de SQL: nao pode carregar os admins: '%s' +NO_ADMINS = Nenhum administrador encontrado. +SQL_LOADED_ADMIN = Carregado 1 admin do banco de dados +SQL_LOADED_ADMINS = Carregados %d Admins do banco de dados +INV_PAS = Password invalido! +PAS_ACC = Password aceito +PRIV_SET = Privilegios estabelecidos +NO_ENTRY = Voce nao tem acesso ao servidor... + +[cz] +LOADED_ADMIN = 1 admin nacteny ze souboru +LOADED_ADMINS = %d adminu nactenych ze souboru +SQL_CANT_CON = SQL error: nemuzu se pripojit: '%s' +SQL_CANT_LOAD_ADMINS = SQL error: Nemuzu nacist adminy: '%s' +NO_ADMINS = Zadny admin nenalezen. +SQL_LOADED_ADMIN = 1 admin nacteny z databaze +SQL_LOADED_ADMINS = %d adminu nactenych z databaze +INV_PAS = Nespravne heslo! +PAS_ACC = Heslo overeno +PRIV_SET = Privilegia nastavena +NO_ENTRY = Nemas zadny zaznam na serveru... + +[fi] +LOADED_ADMIN = Ladattiin 1 admin tiedostosta +LOADED_ADMINS = Ladattiim %d adminia tiedostosta +SQL_CANT_CON = SQL virhe: Ei voi yhdistaa: '%s' +SQL_CANT_LOAD_ADMINS = SQL virhe: Ei voi ladata admineita: '%s' +NO_ADMINS = Ei loydetty admineita +SQL_LOADED_ADMIN = Ladattiin 1 admin tietokannasta +SQL_LOADED_ADMINS = Ladattiin %d adminia tietokannasta +INV_PAS = Vaara salasana! +PAS_ACC = Salasana oikein +PRIV_SET = Etuoikeudet laitettu +NO_ENTRY = Sinulla ei ole merkintaa palvelimella... + +[ls] +LOADED_ADMIN = | l33t s3rv3r 0P l04d'3d f|20|\/| |200t +LOADED_ADMINS = fu||y l04d'3d %d l33t 3nf0rc3rz f|20|\/| |200t +SQL_CANT_CON = $Q|_ 3rr0r: | N0T 3NUFF M4N4! | c0nn3ct!0n f4!|_u|2: '%s' +SQL_CANT_LOAD_ADMINS = $Q|_ 3rr0r: | N0T 3NUFF M4N4! | l04d f4!|_u|2: '%s' +NO_ADMINS = N0T 3NUFF M4N4: n0 s3rv3r 0P'z t0 f33d fr0m! +SQL_LOADED_ADMIN = l04d'3d 1 l33t s3rv3r f|20|\/| n0n-|200t |)|3! +SQL_LOADED_ADMINS = l04d'3d %d l33t s3rv3r f|20|\/| n0n-|200t |)|3! +INV_PAS = a((e$$ d3|\|i3d. FA(3! +PAS_ACC = \/\/3|_C0|\/|3 l33t 0|\|3! $3cu|2e |200t, |=0|2 G|234t Ju$t!c3! +PRIV_SET = l3v3l up! +NO_ENTRY = D3|\|i3d, n00b... + +[bg] +LOADED_ADMIN = Nameren e edin administrator ot fila. +LOADED_ADMINS = Namereni sa %d administratori ot fila +SQL_CANT_CON = SQL gre6ka: nemoje da se cannectnete: '%s' +SQL_CANT_LOAD_ADMINS = SQL gre6ka: nemoje da nameri administratori: '%s' +NO_ADMINS = Nemoje da nameri administratori. +SQL_LOADED_ADMIN = Nameren e edin administrator ot database +SQL_LOADED_ADMINS = Namereni %d administratori ot database +INV_PAS = Greshna Parola! +PAS_ACC = Parolata e prieta +PRIV_SET = Priviligiite sa nastroeni +NO_ENTRY = Nqmate vhod kam servara... + +[ro] +LOADED_ADMIN = 1 administrator a fost incarcat din fisier +LOADED_ADMINS = %d administratori au fost incarcati din fisier +SQL_CANT_CON = Eroare SQL: conectare esuata: '%s' +SQL_CANT_LOAD_ADMINS = Eroare SQL: esuare incarcare administratori: '%s' +NO_ADMINS = Nu a fost gasit nici un administrator. +SQL_LOADED_ADMIN = 1 administrator a fost incarcat din baza de date +SQL_LOADED_ADMINS = %d administratori au fost incarcati din baza de date +INV_PAS = Parola invalida! +PAS_ACC = Parola acceptata +PRIV_SET = Privilegii acordate +NO_ENTRY = Acest nume este rezervat pe server. + +[hu] +LOADED_ADMIN = 1 admin betoltve a file-bol. +LOADED_ADMINS = %d admin betoltve a filebol. +SQL_CANT_CON = SQL hiba: nem lehet csatlakozni: '%s' +SQL_CANT_LOAD_ADMINS = SQL hiba: nem lehet az adminokat betolteni: '%s' +NO_ADMINS = Nincsenek adminok. +SQL_LOADED_ADMIN = 1 admin betoltve a adatbazisbol +SQL_LOADED_ADMINS = %d admin betoltve a adatbazisbol +INV_PAS = Hibas jelszo! +PAS_ACC = Jelszo elfogadva +PRIV_SET = Beallitasok +NO_ENTRY = Neked nincs bejegyzesed a szerveren... + +[lt] +LOADED_ADMIN = Uzkrautas 1 adminas is failo +LOADED_ADMINS = Uzkrauti %d adminai is failo +SQL_CANT_CON = SQL klaida: negali pasijungti: '%s' +SQL_CANT_LOAD_ADMINS = SQL klaida: negali uzkrauti adminu: '%s' +NO_ADMINS = Adminu nerasta. +SQL_LOADED_ADMIN = Uzkrautas 1 adminas is duomenu bazes +SQL_LOADED_ADMINS = Uzkrauti %d adminai is duomenu bazes +INV_PAS = Blogas slaptazodis! +PAS_ACC = Slaptazodis priimtas +PRIV_SET = Privilegijos nustatytos +NO_ENTRY = Neturi leidimo ieiti i serva.. + +[sk] +LOADED_ADMIN = 1 admin nacitany zo soboru +LOADED_ADMINS = %d adminov nacitanych zo suboru +SQL_CANT_CON = SQL error: nemozem sa pripojit: '%s' +SQL_CANT_LOAD_ADMINS = SQL error: Nemozem nacitat adminov: '%s' +NO_ADMINS = Ziadny admin nenajdeny. +SQL_LOADED_ADMIN = 1 admin nacitany z databazy +SQL_LOADED_ADMINS = %d adminov nacitanych z databazy +INV_PAS = Nespravne heslo! +PAS_ACC = Heslo overene +PRIV_SET = Privilegium nastavene +NO_ENTRY = Nemas ziadny zaznam na servery... + +[mk] +LOADED_ADMIN = Vcitan e 1 administrator od fajlot +LOADED_ADMINS = Vcitani se %d administratori od fajlot +SQL_CANT_CON = SQL greska: ne e mozno da se vospostavi vrska so: '%s' +SQL_CANT_LOAD_ADMINS = SQL greska: ne e mozno da se vcitaat administratorite: '%s' +NO_ADMINS = Nema najdeni administratori. +SQL_LOADED_ADMIN = Vcitan e 1 administrator od bazata na podatoci +SQL_LOADED_ADMINS = Vcitani se %d administratori od bazata na podatoci +INV_PAS = Pogresna lozinka! +PAS_ACC = Lozinkata e prifatena +PRIV_SET = Privilegiite se podeseni +NO_ENTRY = Nemate pristap vo serverot... diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/adminchat.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/adminchat.txt new file mode 100644 index 0000000..188541d --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/adminchat.txt @@ -0,0 +1,259 @@ +[en] +COL_WHITE = white +COL_RED = red +COL_GREEN = green +COL_BLUE = blue +COL_YELLOW = yellow +COL_MAGENTA = magenta +COL_CYAN = cyan +COL_ORANGE = orange +COL_OCEAN = ocean +COL_MAROON = maroon +PRINT_ALL = (ALL) %s : %s + +[de] +COL_WHITE = weiss +COL_RED = rot +COL_GREEN = gruen +COL_BLUE = blau +COL_YELLOW = gelb +COL_MAGENTA = magenta-rot +COL_CYAN = cyan-blau +COL_ORANGE = orange +COL_OCEAN = ozean-blau +COL_MAROON = braun +PRINT_ALL = (ALLES) %s : %s + +[sr] +COL_WHITE = bela +COL_RED = crvena +COL_GREEN = zelena +COL_BLUE = plava +COL_YELLOW = zuta +COL_MAGENTA = ljubicasta +COL_CYAN = tirkizna +COL_ORANGE = narandzasta +COL_OCEAN = okean +COL_MAROON = modra +PRINT_ALL = (SVE) %s : %s + +[tr] +COL_WHITE = beyaz +COL_RED = kirmizi +COL_GREEN = yesil +COL_BLUE = mavi +COL_YELLOW = sari +COL_MAGENTA = magenta +COL_CYAN = cian +COL_ORANGE = turuncu +COL_OCEAN = deniz +COL_MAROON = kahverengi +PRINT_ALL = (HEPSI) %s : %s + +[fr] +COL_WHITE = blanc +COL_RED = rouge +COL_GREEN = vert +COL_BLUE = bleu +COL_YELLOW = jaune +COL_MAGENTA = magenta +COL_CYAN = cyan +COL_ORANGE = orange +COL_OCEAN = marine +COL_MAROON = marron +PRINT_ALL = (TOUS) %s : %s + +[sv] +COL_WHITE = vit +COL_RED = r'o'd +COL_GREEN = gr'o'n +COL_BLUE = bla +COL_YELLOW = gul +COL_MAGENTA = magenta +COL_CYAN = cyan +COL_ORANGE = orange +COL_OCEAN = oceanbla +COL_MAROON = brun +PRINT_ALL = (ALLA) %s : %s + +[da] +COL_WHITE = hvid +COL_RED = roed +COL_GREEN = groen +COL_BLUE = blaa +COL_YELLOW = gul +COL_MAGENTA = magenta +COL_CYAN = cyan +COL_ORANGE = orange +COL_OCEAN = ocean blaa +COL_MAROON = brun +PRINT_ALL = (ALLE) %s : %s + +[pl] +COL_WHITE = bialy +COL_RED = czerwony +COL_GREEN = zielony +COL_BLUE = niebieski +COL_YELLOW = zolty +COL_MAGENTA = ciemnorozowy +COL_CYAN = turkusowy +COL_ORANGE = pomaranczowy +COL_OCEAN = blekitny +COL_MAROON = bordowy +PRINT_ALL = (WSZYSTKO) %s : %s + +[bp] +COL_WHITE = branco +COL_RED = vermelho +COL_GREEN = verde +COL_BLUE = azul +COL_YELLOW = amarelo +COL_MAGENTA = magenta +COL_CYAN = ciano +COL_ORANGE = laranja +COL_OCEAN = oceano +COL_MAROON = marrom +PRINT_ALL = (TUDO) %s : %s + +[nl] +COL_WHITE = wit +COL_RED = rood +COL_GREEN = groen +COL_BLUE = blauw +COL_YELLOW = geel +COL_MAGENTA = magenta +COL_CYAN = appelblauwzeegroen +COL_ORANGE = oranje +COL_OCEAN = oceaan +COL_MAROON = bruin +PRINT_ALL = (Allemaal) %s : %s + +[es] +COL_WHITE = blanco +COL_RED = rojo +COL_GREEN = verde +COL_BLUE = azul +COL_YELLOW = amarillo +COL_MAGENTA = magenta +COL_CYAN = cian +COL_ORANGE = naranja +COL_OCEAN = azul marino +COL_MAROON = marron +PRINT_ALL = (TODOS) %s : %s + +[cz] +COL_WHITE = bila +COL_RED = cervena +COL_GREEN = zelena +COL_BLUE = modra +COL_YELLOW = zluta +COL_MAGENTA = fuchsiova +COL_CYAN = modrozelena +COL_ORANGE = oranzova +COL_OCEAN = mpdra +COL_MAROON = kastanova +PRINT_ALL = (ALL) %s : %s + +[fi] +COL_WHITE = valkoinen +COL_RED = punainen +COL_GREEN = vihrea +COL_BLUE = sininen +COL_YELLOW = keltainen +COL_MAGENTA = mangaani +COL_CYAN = kyaani +COL_ORANGE = oranssi +COL_OCEAN = merensininen +COL_MAROON = viininpunainen +PRINT_ALL = (KAIKKI) %s : %s + +[ls] +COL_WHITE = \/\/hi73 +COL_RED = r3d +COL_GREEN = gr33n +COL_BLUE = b|u3 +COL_YELLOW = y3||0w +COL_MAGENTA = m4g3nt4 +COL_CYAN = "%s" +CVAR_CHANGED = Cvar "%s" --> "%s" +LOADED_PLUGINS = Ladatut pluginit talla hetkella +NAME = nimi +VERSION = versio +AUTHOR = tekija +FILE = tiedosto +STATUS = tila +PLUGINS_RUN = %d pluginia, %d kaynnissa +LOADED_MODULES = Ladatut modulit talla hetkella +NUM_MODULES = %d modulia +FILE_NOT_FOUND = Tiedostoa "%s" ei loytynyt +ADMIN_CONF_1 = ADMIN: suoritti konffin %s +ADMIN_CONF_2 = ADMIN %s: suoritti konffin %s +PAUSED = pysaytetty +UNPAUSED = ei-pysaytetty +UNABLE_PAUSE = Palvelin ei voinut pysayttaa pelia. Tarvitaan oikeita pelaajia. +SERVER_PROC = Server proceed %s +PAUSING = pysaytetaan +UNPAUSING = jatketaan +PAUSE = pysaytys +UNPAUSE = jatkaminen +COM_SENT_SERVER = Komento "%s" lahetettiin palvelimen konsoliin +CLIENTS_ON_SERVER = Clientteja palvelimella +IMMU = imm +RESERV = res +ACCESS = paasy +TOTAL_NUM = Kaikkiaan %d +SKIP_MATCH = Jatetaan "%s" huomiotta (vertainen "%s" kanssa) +SKIP_IMM = Jatetaan "%s" huomiotta (koskemattomuus) +KICK_PL = Potkitaan "%s" +YOU_DROPPED = Sinut pudotettiin palvelimelta koska admin jatti vain tietyt clientit +KICKED_CLIENTS = Potkittiin %d clientia +ADMIN_LEAVE_1 = ADMIN: leave %s %s %s %s +ADMIN_LEAVE_2 = ADMIN %s: leave %s %s %s %s +ADMIN_NICK_1 = ADMIN: vaihtoi pelaajan %s nickin: "%s" +ADMIN_NICK_2 = ADMIN %s: vaihtoi pelaajan %s nickin: "%s" +CHANGED_NICK = Vaihdoit pelaajan %s nickin: "%s" + +[ls] +ADMIN_KICK_1 = l33t s3rv3r 0P: kickz0|2 %s +ADMIN_KICK_2 = l33t s3rv3r 0P %s: kickz0|2 %s +IP_REMOVED = Ip "%s" r3m0v3d fr0mz0|2 L33T |3L4C|< L!$T +AUTHID_REMOVED = Authid "%s" r3m0v3d fr0mz0|2 L33T |3L4C|< L!$T +ADMIN_UNBAN_1 = l33t s3rv3r 0P: unb4nnz0|2 %s +ADMIN_UNBAN_2 = l33t s3rv3r 0P %s: unb4nnz0|2 %s +ADMIN_ADDBAN_1 = l33t s3rv3r 0P: b4nnz0|2 %s +ADMIN_ADDBAN_2 = l33t s3rv3r 0P %s: b4nnz0|2 %s +BANNED = b4nnz0|2ned +REASON = |234s0n +FOR_MIN = f0r %s m!n +PERM = f0r3v4 +CLIENT_BANNED = Client "%s" b4nnz0|2'3d +ADMIN_SLAY_1 = l33t s3rv3r 0P: sl4yz0|2 %s +ADMIN_SLAY_2 = l33t s3rv3r 0P %s: sl4yz0|2 %s +CLIENT_SLAYED = Client "%s" sl4yz0|2ed +ADMIN_SLAP_1 = l33t s3rv3r 0P: sl4pz0|2 %s with %d damage +ADMIN_SLAP_2 = l33t s3rv3r 0P %s: sl4pz0|2 %s with %d damage +CLIENT_SLAPED = Client "%s" sl4pz0|2ed with %d damage +MAP_NOT_FOUND = | N0T 3NUFF M4N4 | d4t m4p sux, ch00s3 4g4!n +ADMIN_MAP_1 = l33t s3rv3r 0P: ch4ngl3v3l %s +ADMIN_MAP_2 = l33t s3rv3r 0P %s: ch4ngl3v3l %s +NO_MORE_CVARS = 3rr0r | N0T 3NUFF M4N4 | c4nn0t +++ m0r3 l33t (\/4|2s f0r |2(0|\| 4cc3ss! +UNKNOWN_CVAR = th!$ l33t (\/4|2: %s sux, ch00s3 4g4!n +CVAR_NO_ACC = a((e$$ d3|\|i3d. FA(3! N0 l33t (\/4|2 ch4ng'!n f0 j00! +CVAR_IS = C\/4|2 "%s" is "%s" +PROTECTED = | N0T 3NUFF M4N4! | a((e$$ d3|\|i3d. FA(3! +SET_CVAR_TO = %s s3t l33t (\/4|2 %s to "%s" +CVAR_CHANGED = C\/4|2 "%s" ch4ngd to "%s" +LOADED_PLUGINS = l04d'3d l33t plug!nz +NAME = n4m +VERSION = v3r$i0n +AUTHOR = h4x0r +FILE = |200t +STATUS = $t4tuz +PLUGINS_RUN = %d l33t plug!nz, %d j0ggin' +LOADED_MODULES = l04d'3d m0dzul3 +NUM_MODULES = %d m0dzul3 +FILE_NOT_FOUND = }200t "%s" m!zz!n' !n 4cti0nz +ADMIN_CONF_1 = l33t s3rv3r 0P: execute config %s +ADMIN_CONF_2 = l33t s3rv3r 0P %s: execute config %s +PAUSED = p4uz3d +UNPAUSED = unp4uz3d +UNABLE_PAUSE = s3rv3r p4uz3 f4!l. unl33t n33d3d 0N s3rv3r. +SERVER_PROC = s3rv3r proceed %s +PAUSING = p4uz3ing +UNPAUSING = unp4uz3ing +PAUSE = p4uz3 +UNPAUSE = unp4uz3 +COM_SENT_SERVER = |200t "%s" $3nt t0 s3rv3r c0|\| +CLIENTS_ON_SERVER = un-l33tz 0n s3rv3r +IMMU = !|\/||\/| +RESERV = |23z +ACCESS = access +TOTAL_NUM = Total %d +SKIP_MATCH = S|: |200t C0mm4ndz +HELP_ENTRIES = 3nt|2i3z %d - %d 0v %d +HELP_USE_MORE = uzi 'amx_help %d' f0r m0r3 b4$3 +HELP_USE_BEGIN = uzi 'amx_help 1' f0r b3g!n h4x0rin' +TYPE_HELP = uzi 'amx_help' t4 s33 r00tz +TIME_INFO_1 = N0t T!m3 3nu77: %d:%02d min. N3x\ M4|>: %s +TIME_INFO_2 = T!m3 i$ r3l4t!v3 t0 j00r |200t. N3x\ M4|>: %s + +[bg] +HELP_COMS = AMX Mod X Help: Comandi +HELP_ENTRIES = Vkarani %d - %d ot %d +HELP_USE_MORE = Izpolzvaite 'amx_help %d' za pove4e +HELP_USE_BEGIN = izpolzvaite 'amx_help 1' za na4alo +TYPE_HELP = napi6ete 'amx_help' v consolata za da vidite pove4e comandi +TIME_INFO_1 = Ostava6to vreme: %d:%02d min. Sledva6tata karta: %s +TIME_INFO_2 = Nqma limit na vremeto. Sledva6tata karta: %s + +[ro] +HELP_COMS = Ajutor AMX Mod X: Comenzi +HELP_ENTRIES = Intrari %d - %d din %d +HELP_USE_MORE = Scrie 'amx_help %d' pentru mai mult +HELP_USE_BEGIN = Scrie 'amx_help 1' pentru inceput +TYPE_HELP = Scrie 'amx_help' in consola pentru afisare lista comenzi +TIME_INFO_1 = Timp Ramas: %d:%02d. Urmatoarea Harta: %s +TIME_INFO_2 = Nici o Limita a Timpului. Urmatoarea Harta: %s + +[hu] +HELP_COMS = AMX Mod X segitseg: Parancsok +HELP_ENTRIES = Bejegyzes %d - %d of %d +HELP_USE_MORE = Irj 'amx_help %d' -t tobbhoz +HELP_USE_BEGIN = Irj 'amx_help 1' -t az elso oldalhoz +TYPE_HELP = Irj 'amx_help' -t a konzolba hogy lathasd a parancsokat +TIME_INFO_1 = Hatralevo ido: %d:%02d perc. kovetkezo palya: %s +TIME_INFO_2 = Nincs idohatar. A kovetkezo palya: %s + +[lt] +HELP_COMS = AMX Mod X Pagalba: Komandos +HELP_ENTRIES = Irasai %d - %d is %d +HELP_USE_MORE = Naudok 'amx_help %d' del daugiau info +HELP_USE_BEGIN = Naudok 'amx_help 1' kad pradetum +TYPE_HELP = Rasyk 'amx_help' konsoleje, kad pamatytum prieinamas komandas. +TIME_INFO_1 = Liko laiko: %d:%02d min. Kitas zemelapis: %s +TIME_INFO_2 = Nera laiko limito. Kitas zemelapis: %s + +[sk] +HELP_COMS = AMX Mod X Help: Prikazy +HELP_ENTRIES = Polozky %d - %d z %d +HELP_USE_MORE = Napis 'amx_help %d' pre viac +HELP_USE_BEGIN = Napis 'amx_help 1' pre zaciatok +TYPE_HELP = Napis 'amx_help' do konzoly pre vypis prikazov +TIME_INFO_1 = Ostava este: %d:%02d min. Dalsia mapa: %s +TIME_INFO_2 = Neni casovy limit. Dalsia mapa: %s + +[mk] +HELP_COMS = AMX Mod X Pomos - Dozvoleni komandi se: +HELP_ENTRIES = Komandi %d - %d od %d +HELP_USE_MORE = Napisi 'amx_help %d' za uste komandi +HELP_USE_BEGIN = Napisi 'amx_help 1' za od pocetok +TYPE_HELP = Napisi 'amx_help' vo konzolata za da gi vidis dozvolenite komandi +TIME_INFO_1 = Preostanato Vreme: %d:%02d min. Sledna Mapa: %s +TIME_INFO_2 = Nema vremensko ogranicuvanje. Sledna Mapa: %s diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/adminslots.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/adminslots.txt new file mode 100644 index 0000000..a7bc2e3 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/adminslots.txt @@ -0,0 +1,59 @@ +[en] +DROPPED_RES = Dropped due to slot reservation + +[de] +DROPPED_RES = Sorry, dieser Slot ist reserviert. + +[sr] +DROPPED_RES = Server je pun, nemate pristup rezervisanim mestima + +[tr] +DROPPED_RES = Reservasyon nedeniyle atildiniz + +[fr] +DROPPED_RES = Desole, un admin vient de prendre sa place reservee, tu as ete ejecte du serveur. + +[sv] +DROPPED_RES = Nerkopplad pga platsreservation + +[da] +DROPPED_RES = Frakoblet pga. plads reservation + +[pl] +DROPPED_RES = Wyrzucony z powodu rezerwacji slotow + +[bp] +DROPPED_RES = Desconectado pois o slot esta reservado + +[nl] +DROPPED_RES = Sorry, deze plaats is gereserveerd + +[es] +DROPPED_RES = Desconectado por reserva de plazas + +[cz] +DROPPED_RES = Vyhozen, slot je rezervovan + +[fi] +DROPPED_RES = Pudotettiin palvelimelta slotvarauksen takia (adminslot) + +[ls] +DROPPED_RES = j00 r n0t l33t 3uff, s0z + +[bg] +DROPPED_RES = Izklu4en poneje mqstoto e rezervirano + +[ro] +DROPPED_RES = Ai primit kick pentru rezervare slot. + +[hu] +DROPPED_RES = Nincs szabad hely. + +[lt] +DROPPED_RES = Atjungtas, nes nera laisvos vietos + +[sk] +DROPPED_RES = Prepac,ale slot je rezervovany + +[mk] +DROPPED_RES = Serverot e poln, nemate pristap vo rezerviranite mesta diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/adminvote.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/adminvote.txt new file mode 100644 index 0000000..ad99cf3 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/adminvote.txt @@ -0,0 +1,679 @@ +[en] +ADMIN_CANC_VOTE_1 = %s: cancel vote +ADMIN_CANC_VOTE_2 = %s %s: cancel vote +VOTING_CANC = Voting canceled +NO_VOTE_CANC = There is no voting to cancel or the vote session can't be canceled with that command +RES_REF = Result refused +RES_ACCEPTED = Result accepted +VOTING_FAILED = Voting failed +VOTING_RES_1 = %s (yes "%d") (no "%d") (needed "%d") +VOTING_RES_2 = %s (got "%d") (needed "%d") +VOTING_SUCCESS = Voting successful +VOTING_RES_3 = %s (got "%d") (needed "%d"). The result: %s +THE_RESULT = The result +WANT_CONTINUE = Do you want to continue? +VOTED_FOR = %s voted for +VOTED_AGAINST = %s voted against +VOTED_FOR_OPT = %s voted for option #%d +ALREADY_VOTING = There is already one voting... +VOTING_NOT_ALLOW = Voting not allowed at this time +GIVEN_NOT_VALID = Given %s not valid +MAP_IS = map is +MAPS_ARE = maps are +CHOOSE_MAP = Choose map +ADMIN_VOTE_MAP_1 = %s: vote map(s) +ADMIN_VOTE_MAP_2 = %s %s: vote map(s) +VOTING_STARTED = Voting has started... +VOTING_FORBIDDEN = Voting for that has been forbidden +ADMIN_VOTE_CUS_1 = %s: vote custom +ADMIN_VOTE_CUS_2 = %s %s: vote custom +VOTE = Vote +ACTION_PERFORMED = That action can't be performed on bot "%s" +ADMIN_VOTE_FOR_1 = %s: vote %s for %s +ADMIN_VOTE_FOR_2 = %s %s: vote %s for %s + +[de] +ADMIN_CANC_VOTE_1 = %s: Abstimmung abgebrochen +ADMIN_CANC_VOTE_2 = %s %s: Abstimmung abgebrochen +VOTING_CANC = Auswahl abgebrochen +NO_VOTE_CANC = Zur Zeit ist keine Abstimmung vorhanden oder das Abbrechen ist mit diesem Befehl nicht moeglich +RES_REF = Resultat abgelehnt +RES_ACCEPTED = Resultat angenommen +VOTING_FAILED = Abstimmung gescheitert +VOTING_RES_1 = %s (Ja "%d") (Nein "%d") (benoetigt "%d") +VOTING_RES_2 = %s (erhielt "%d") (benoetigt "%d") +VOTING_SUCCESS = Abstimmung erfolgreich +VOTING_RES_3 = %s (erhielt "%d") (benoetigt "%d"). Ergebnis: %s +THE_RESULT = Das Ergebnis +WANT_CONTINUE = Forfahren? +VOTED_FOR = %s stimmten dafuer +VOTED_AGAINST = %s stimmten dagegen +VOTED_FOR_OPT = %s stimmten fuer Option #%d +ALREADY_VOTING = Abstimmung laeuft bereits... +VOTING_NOT_ALLOW = Abstimmung ist momentan nicht moeglich! +GIVEN_NOT_VALID = %s ist unzulaessig +MAP_IS = Map ist +MAPS_ARE = Maps sind +CHOOSE_MAP = Waehle Map +ADMIN_VOTE_MAP_1 = %s: Abstimmung fuer Map(s) gestartet +ADMIN_VOTE_MAP_2 = %s %s: Abstimmung fuer Map(s) gestartet +VOTING_STARTED = Abstimmung gestartet ... +VOTING_FORBIDDEN = Abstimmung dafuer ist verboten. +ADMIN_VOTE_CUS_1 = %s: startet eigene Umfrage +ADMIN_VOTE_CUS_2 = %s %s: startet eigene Umfrage +VOTE = Abstimmung +ACTION_PERFORMED = Durchfuehrung an BOT "%s" ist nicht moeglich +ADMIN_VOTE_FOR_1 = %s: %s Stimmen fuer %s +ADMIN_VOTE_FOR_2 = %s %s: %s Stimmen fuer %s + +[sr] +ADMIN_CANC_VOTE_1 = %s: otkazi glasanje +ADMIN_CANC_VOTE_2 = %s %s: otkazi glasanje +VOTING_CANC = Glasanje Otkazano +NO_VOTE_CANC = Trenutno nema glasanja koje bi moglo da se prekine ili glasanje ne moze biti prekinuto tom komandom +RES_REF = Rezultat odbijen +RES_ACCEPTED = Rezultat prihvacen +VOTING_FAILED = Glasanje neuspesno +VOTING_RES_1 = %s (da "%d") (ne "%d") (potrebno "%d") +VOTING_RES_2 = %s (dobijeno "%d") (potrebno "%d") +VOTING_SUCCESS = Glasanje uspesno +VOTING_RES_3 = %s (dobijeno "%d") (potrebno "%d"). Rezultat je: %s +THE_RESULT = Rezultat +WANT_CONTINUE = Da li zelite da nastavite? +VOTED_FOR = %s je glasao za +VOTED_AGAINST = %s je glasao protiv +VOTED_FOR_OPT = %s je glasao za #%d +ALREADY_VOTING = Vec je jedno glasanje je u toku... +VOTING_NOT_ALLOW = Glasanje trenutno nije dozvoljeno +GIVEN_NOT_VALID = Dat %s nije validan +MAP_IS = mapa je +MAPS_ARE = mape su +CHOOSE_MAP = Izaberi mapu +ADMIN_VOTE_MAP_1 = %s: glasanje za mapu(e) +ADMIN_VOTE_MAP_2 = %s %s: glasanje za mapu(e) +VOTING_STARTED = Glasanje je pocelo... +VOTING_FORBIDDEN = Voting for that has been forbidden +ADMIN_VOTE_CUS_1 = %s: specificno glasanje +ADMIN_VOTE_CUS_2 = %s %s: specificno glasanje +VOTE = Glas +ACTION_PERFORMED = Akcija ne moze biti izvrsena na botu "%s" +ADMIN_VOTE_FOR_1 = %s: glasao %s za %s +ADMIN_VOTE_FOR_2 = %s %s: glasao %s za %s + +[tr] +ADMIN_CANC_VOTE_1 = %s: oylamayi durdur +ADMIN_CANC_VOTE_2 = %s %s: oylamayi durdur +VOTING_CANC = Oylama durduruldu +NO_VOTE_CANC = Durdurulacak oylama yokdur yada oylamayi o emir ile durduramazsiniz +RES_REF = Sonuc red edildi +RES_ACCEPTED = Sonuc kabul edildi +VOTING_FAILED = Oylama hatali +VOTING_RES_1 = %s (evet "%d") (hayir "%d") (gerekli "%d") +VOTING_RES_2 = %s (alinan "%d") (gerekli "%d") +VOTING_SUCCESS = Oylama sonucu kabul edilmistir +VOTING_RES_3 = %s (alinan "%d") (gerekli "%d"). Sonuc: %s +THE_RESULT = Sonuc +WANT_CONTINUE = Devam etmek istiyormusunuz? +VOTED_FOR = %s Oy verdi +VOTED_AGAINST = %s Red etdi +VOTED_FOR_OPT = %s Buna oy verdi #%d +ALREADY_VOTING = Zaten su an oylama suruyor... +VOTING_NOT_ALLOW = Su anda oylama yapamazsiniz +GIVEN_NOT_VALID = %s verildi, gecerli degil +MAP_IS = Map budur +MAPS_ARE = Maplar bunlardir +CHOOSE_MAP = Map secin +ADMIN_VOTE_MAP_1 = %s:map(lar) oylamasi +ADMIN_VOTE_MAP_2 = %s %s: map(lar) oylamasi +VOTING_STARTED = Oylama baslamisdir... +VOTING_FORBIDDEN = Onun hakkinda oylama yasaklanmisdir +ADMIN_VOTE_CUS_1 = %s: Ozel oylama +ADMIN_VOTE_CUS_2 = %s %s: Ozel oylama +VOTE = Oy +ACTION_PERFORMED = Bot uzerinde bunu yapamassiniz "%s" +ADMIN_VOTE_FOR_1 = %s: %s hakkinda oy %s +ADMIN_VOTE_FOR_2 = %s %s: %s hakkinda oy %s + +[fr] +ADMIN_CANC_VOTE_1 = %s: annule le vote +ADMIN_CANC_VOTE_2 = %s %s: annule le vote +VOTING_CANC = Le vote a ete annule +NO_VOTE_CANC = Il n'y a pas de vote a annuler, ou la session de vote ne peut pas etre annulee par cette commande +RES_REF = Resultat refuse +RES_ACCEPTED = Resultat accepte +VOTING_FAILED = Le vote a echoue +VOTING_RES_1 = %s (pour "%d") (contre "%d") (besoin de "%d") +VOTING_RES_2 = %s (obtenu "%d") (besoin de "%d") +VOTING_SUCCESS = Le vote a reussi +VOTING_RES_3 = %s (obtenu "%d") (besoin de "%d"). Resultat: %s +THE_RESULT = Resultat +WANT_CONTINUE = Veux-tu continuer? +VOTED_FOR = %s a vote pour +VOTED_AGAINST = %s a vote contre +VOTED_FOR_OPT = %s a vote pour l'option #%d +ALREADY_VOTING = Il y a deja un vote en cours... +VOTING_NOT_ALLOW = Voter n'est pas autorise maintenant... +GIVEN_NOT_VALID = %s donne(e) non valide +MAP_IS = la carte est +MAPS_ARE = les cartes sont +CHOOSE_MAP = Choisir la carte +ADMIN_VOTE_MAP_1 = %s: vote carte(s) +ADMIN_VOTE_MAP_2 = %s %s: vote carte(s) +VOTING_STARTED = Le vote commence... +VOTING_FORBIDDEN = Il est interdit de voter. +ADMIN_VOTE_CUS_1 = %s: lance un vote personnalise +ADMIN_VOTE_CUS_2 = %s %s: lance un vote personnalise +VOTE = Vote +ACTION_PERFORMED = Cette action ne peut etre effectuee sur les BOTs "%s" +ADMIN_VOTE_FOR_1 = %s: vote %s pour %s +ADMIN_VOTE_FOR_2 = %s %s: vote %s pour %s + +[sv] +ADMIN_CANC_VOTE_1 = %s: avbryt omr'o'stning +ADMIN_CANC_VOTE_2 = %s %s: avbryt omr'o'stning +VOTING_CANC = Omr'o'stning avbruten +NO_VOTE_CANC = Det finns ingen omr'o'stning att avbryta, alternativt kan omr'o'stningen inte avbrytas med det kommandot +RES_REF = Resultat nekas +RES_ACCEPTED = Resultat godtages +VOTING_FAILED = Omr'o'stning misslyckades +VOTING_RES_1 = %s (ja "%d") (nej "%d") (fordras "%d") +VOTING_RES_2 = %s (fick "%d") (fordrades "%d") +VOTING_SUCCESS = Omr'o'stningen lyckades +VOTING_RES_3 = %s (fick "%d") (fordrades "%d"). Resultat: %s +THE_RESULT = Resultat +WANT_CONTINUE = Vill du forts'a'tta? +VOTED_FOR = %s valde +VOTED_AGAINST = %s valde mot +VOTED_FOR_OPT = %s valde alternativ #%d +ALREADY_VOTING = En omr'o'stning pagar redan... +VOTING_NOT_ALLOW = Omr'o'stning inte tillatet tills vidare +GIVEN_NOT_VALID = Avlagd %s icke giltig +MAP_IS = karta +MAPS_ARE = kartor +CHOOSE_MAP = Utse karta +ADMIN_VOTE_MAP_1 = %s: val av karta(or) +ADMIN_VOTE_MAP_2 = %s %s: val av karta(or) +VOTING_STARTED = Omr'o'stningen har startat... +VOTING_FORBIDDEN = Icke beviljat val valsalternativ +ADMIN_VOTE_CUS_1 = %s: speciellt val +ADMIN_VOTE_CUS_2 = %s %s: speciellt val +VOTE = Val +ACTION_PERFORMED = Den handlingen kan inte utf'o'ras pa bot "%s" +ADMIN_VOTE_FOR_1 = %s: val %s av %s +ADMIN_VOTE_FOR_2 = %s %s: val %s av %s + +[da] +ADMIN_CANC_VOTE_1 = %s: annuller afstemning +ADMIN_CANC_VOTE_2 = %s %s: annuller afstemning +VOTING_CANC = Afstemning annulleret +NO_VOTE_CANC = Der er ikke nogen afstemning at annullere eller afstemning kan ikke annulleres med den kommando +RES_REF = Resultat afvist +RES_ACCEPTED = Resultat accepteret +VOTING_FAILED = Afstemning mislykkedes +VOTING_RES_1 = %s (ja "%d") (nej "%d") (behoevede "%d") +VOTING_RES_2 = %s (fik "%d") (behoevede "%d") +VOTING_SUCCESS = Afstemning lykkedes +VOTING_RES_3 = %s (fik "%d") (behoevede "%d"). Resultat: %s +THE_RESULT = Resultatet +WANT_CONTINUE = Vil du fortsaette? +VOTED_FOR = %s stemte for +VOTED_AGAINST = %s stemte imod +VOTED_FOR_OPT = %s stemte paa mulighed #%d +ALREADY_VOTING = Der er allerede en afstemning... +VOTING_NOT_ALLOW = Afstemning er ikke tilladt paa nuvaerende tidspunkt +GIVEN_NOT_VALID = Givet %s ikke gyldig +MAP_IS = banen er +MAPS_ARE = banerne er +CHOOSE_MAP = vaelg bane +ADMIN_VOTE_MAP_1 = %s: afstemning bane(r) +ADMIN_VOTE_MAP_2 = %s %s: afstemning bane(r) +VOTING_STARTED = Afstemning er startet... +VOTING_FORBIDDEN = Afstemning om det er blevet forbudt +ADMIN_VOTE_CUS_1 = %s: afstemning speciel +ADMIN_VOTE_CUS_2 = %s %s: afstemning speciel +VOTE = Afstemning +ACTION_PERFORMED = Denne handling kan ikke udfoeres paa bot "%s" +ADMIN_VOTE_FOR_1 = %s: stemmer %s for %s +ADMIN_VOTE_FOR_2 = %s %s: stemmer %s for %s + +[pl] +ADMIN_CANC_VOTE_1 = %s: anulowal glos +ADMIN_CANC_VOTE_2 = %s %s: anulowal glos +VOTING_CANC = Glosowanie anulowane +NO_VOTE_CANC = Nie ma zadnego glosowania ktore moze zostac anulowane +RES_REF = Rezultat odrzucony +RES_ACCEPTED = Rezultat zaakceptowany +VOTING_FAILED = Glosowanie nieudane +VOTING_RES_1 = %s (tak "%d") (nie "%d") (potrzeba "%d") +VOTING_RES_2 = %s (ma "%d") (potrzeba "%d") +VOTING_SUCCESS = Glosowanie udane +VOTING_RES_3 = %s (ma "%d") (potrzeba "%d"). Rezultat: %s +THE_RESULT = Rezultat +WANT_CONTINUE = Czy chcesz kontynuowac? +VOTED_FOR = %s zaglosowal na +VOTED_AGAINST = %s zaglosowal przeciwko +VOTED_FOR_OPT = %s zaglosowal na #%d +ALREADY_VOTING = Juz jest glosowanie w toku +VOTING_NOT_ALLOW = Glosowanie jest teraz niemozliwe +GIVEN_NOT_VALID = Dany %s nie jest prawidlowy +MAP_IS = mapa jest +MAPS_ARE = mapy sa +CHOOSE_MAP = Wybierz mape +ADMIN_VOTE_MAP_1 = %s: zaglosowal mape(s) +ADMIN_VOTE_MAP_2 = %s %s: zaglosowal mape(s) +VOTING_STARTED = Glosowanie rozpoczete +VOTING_FORBIDDEN = Glosowanie na to zostalo zabronione +ADMIN_VOTE_CUS_1 = %s: glos wlasny +ADMIN_VOTE_CUS_2 = %s %s: glos wlasny +VOTE = Glos +ACTION_PERFORMED = Nie mozesz tego wykonac na bocie "%s" +ADMIN_VOTE_FOR_1 = %s: zaglosuj %s na %s +ADMIN_VOTE_FOR_2 = %s %s: zaglosuj %s na %s + +[bp] +ADMIN_CANC_VOTE_1 = %s: votacao cancelada +ADMIN_CANC_VOTE_2 = %s %s: votacao cancelada +VOTING_CANC = Votacao cancelada +NO_VOTE_CANC = Nao ha nenhuma votacao para cancelar ou a votacao nao pode ser cancelada com aquele comando +RES_REF = Resultado recusado +RES_ACCEPTED = Resultado aceito +VOTING_FAILED = Votacao falhou +VOTING_RES_1 = %s (sim " %d ") (nao " %d ") (necessario "%d" votos) +VOTING_RES_2 = %s (obteve "%d") (necessario "%d" votos) +VOTING_SUCCESS = Votacao com sussesso +VOTING_RES_3 = %s (obteve "%d") (necessario "%d" votos). O resultado: %s +THE_RESULT = O resultado +WANT_CONTINUE = Voce quer continuar? +VOTED_FOR = %s votou a favor +VOTED_AGAINST = %s votou contra +VOTED_FOR_OPT = %s votou na opcao #%d +ALREADY_VOTING = Ja existe uma votacao em progresso... +VOTING_NOT_ALLOW = Votacao nao permitida neste momento +GIVEN_NOT_VALID = %s nao valido(s) +MAP_IS = O mapa e +MAPS_ARE = Os mapas sao +CHOOSE_MAP = Escolha o mapa +ADMIN_VOTE_MAP_1 = %s: votacao de mapa(s) +ADMIN_VOTE_MAP_2 = %s %s: votacao de mapa(s) +VOTING_STARTED = Votacao comecou... +VOTING_FORBIDDEN = Votacao proibida +ADMIN_VOTE_CUS_1 = %s: votacao personalizada +ADMIN_VOTE_CUS_2 = %s %s: votacao personalizada +VOTE = Voto +ACTION_PERFORMED = Aquela acao nao pode ser executada com bot "%s" +ADMIN_VOTE_FOR_1 = %s: vote %s para %s +ADMIN_VOTE_FOR_2 = %s %s: vote %s para %s + +[nl] +ADMIN_CANC_VOTE_1 = %s: stemronde annuleren +ADMIN_CANC_VOTE_2 = %s %s: stemronde annuleren +VOTING_CANC = Stemronde geannuleerd +NO_VOTE_CANC = Er is geen stemronde om te annuleren of de stemronde kan niet worden geannuleerd met dat commando +RES_REF = Resultaat geweigerd +RES_ACCEPTED = Resultaat geaccepteerd +VOTING_FAILED = Stemmen mislukt +VOTING_RES_1 = %s (ja "%d") (nee "%d") (nodig "%d") +VOTING_RES_2 = %s (ontvangen "%d") (nodig "%d") +VOTING_SUCCESS = Stemmen geslaagd +VOTING_RES_3 = %s (ontvangen "%d") (nodig "%d"). Resultaat: %s +THE_RESULT = Het resultaat +WANT_CONTINUE = Wil je verder gaan? +VOTED_FOR = %s stemde voor +VOTED_AGAINST = %s stemde tegen +VOTED_FOR_OPT = %s stemde voor optie #%d +ALREADY_VOTING = Er is al een stemronde bezig... +VOTING_NOT_ALLOW = Stemmen nu niet toegestaan +GIVEN_NOT_VALID = Gegeven %s niet geldig +MAP_IS = map is +MAPS_ARE = mappen zijn +CHOOSE_MAP = Kies een map +ADMIN_VOTE_MAP_1 = %s: stem op map(pen) +ADMIN_VOTE_MAP_2 = %s %s: stem op map(pen) +VOTING_STARTED = De stemronde is begonnen +VOTING_FORBIDDEN = Het is verboden om daarop te stemmen +ADMIN_VOTE_CUS_1 = %s: stem custom +ADMIN_VOTE_CUS_2 = %s %s: stem custom +VOTE = Stem +ACTION_PERFORMED = Die actie kan niet worden uitgevoerd op bot "%s" +ADMIN_VOTE_FOR_1 = %s: stem %s voor %s +ADMIN_VOTE_FOR_2 = %s %s: stem %s voor %s + +[es] +ADMIN_CANC_VOTE_1 = %s: votacion anulada +ADMIN_CANC_VOTE_2 = %s %s: votacion anulada +VOTING_CANC = Votacion anulada +NO_VOTE_CANC = No existe votacion por anular o la votacion no se puede anular con ese comando +RES_REF = Resultado rechazado +RES_ACCEPTED = Resultado aceptado +VOTING_FAILED = Votacion fallida +VOTING_RES_1 = %s (si "%d") (no "%d") (necesarios "%d") +VOTING_RES_2 = %s (obtenidos "%d") (necesarios "%d") +VOTING_SUCCESS = Votacion finalizada +VOTING_RES_3 = %s (obtenidos "%d") (necesarios "%d"). Resultado: %s +THE_RESULT = El Resultado +WANT_CONTINUE = Deseas continuar? +VOTED_FOR = %s ha votado a favor +VOTED_AGAINST = %s ha votado en contra +VOTED_FOR_OPT = %s ha votado por la opcion #%d +ALREADY_VOTING = Ya existe una votacion en este instante... +VOTING_NOT_ALLOW = Votacion no permitida en este momento +GIVEN_NOT_VALID = %s dado(s) no es(son) valido(s) +MAP_IS = El mapa +MAPS_ARE = Los mapas +CHOOSE_MAP = Elegir mapa +ADMIN_VOTE_MAP_1 = %s: votar mapa(s) +ADMIN_VOTE_MAP_2 = %s %s: votar mapa(s) +VOTING_STARTED = Votacion iniciada... +VOTING_FORBIDDEN = No se permite votar eso +ADMIN_VOTE_CUS_1 = %s: votacion personalizada +ADMIN_VOTE_CUS_2 = %s %s: votacion personalizada +VOTE = Voto +ACTION_PERFORMED = Esta accion no se puede aplicar a bots "%s" +ADMIN_VOTE_FOR_1 = %s: ha votado %s a %s +ADMIN_VOTE_FOR_2 = %s %s: ha votado %s a %s + +[cz] +ADMIN_CANC_VOTE_1 = %s: zrusil hlasovani +ADMIN_CANC_VOTE_2 = %s %s: zrusili hlasovani +VOTING_CANC = Hlasovani zruseno +NO_VOTE_CANC = Neni co zrusit nebo hlasovani nelze zrusit timhle prikazem +RES_REF = Hlasovani neplatne +RES_ACCEPTED = Hlasovani prijato +VOTING_FAILED = Hlasovani selhalo +VOTING_RES_1 = %s (ano "%d") (ne "%d") (bylo potreba "%d") +VOTING_RES_2 = %s (dostal "%d") (bylo potreba "%d") +VOTING_SUCCESS = Hlasovani uspesne +VOTING_RES_3 = %s (dostal "%d") (bylo potreba "%d"). Vysledek: %s +THE_RESULT = Vysledek +WANT_CONTINUE = Chces pokracovat? +VOTED_FOR = %s hlasovalo pro +VOTED_AGAINST = %s hlasovalo proti +VOTED_FOR_OPT = %s hlasovalo pro volbu #%d +ALREADY_VOTING = Uz se jednou hlasovalo... +VOTING_NOT_ALLOW = Hlasovani neni zrovna povoleno +GIVEN_NOT_VALID = Opakovani %s neplatne +MAP_IS = mapa je +MAPS_ARE = mapy jsou +CHOOSE_MAP = Zvol mapu +ADMIN_VOTE_MAP_1 = %s: hlasoval pro mapu(y) +ADMIN_VOTE_MAP_2 = %s %s: hlasovali pro map(y) +VOTING_STARTED = Hlasovani zapocato... +VOTING_FORBIDDEN = Voting for that has been forbidden +ADMIN_VOTE_CUS_1 = %s: volil jinak +ADMIN_VOTE_CUS_2 = %s %s: volili jinak +VOTE = Hlasovani +ACTION_PERFORMED = Tato operace nebuze byt provedena "%s" +ADMIN_VOTE_FOR_1 = %s: hlasoval %s pro %s +ADMIN_VOTE_FOR_2 = %s %s: hlasoval %s pro %s + +[fi] +ADMIN_CANC_VOTE_1 = %s: peruuta vote +ADMIN_CANC_VOTE_2 = %s %s: peruuta vote +VOTING_CANC = Vote peruutettu +NO_VOTE_CANC = Ei ole peruutettavaa votea tai voteamista ei voida peruuttaa tuolla komennolla +RES_REF = Tulos hylattiin +RES_ACCEPTED = Tulos hyvaksyttiin +VOTING_FAILED = Vote epaonnistui +VOTING_RES_1 = %s (kylla "%d") (ei "%d") (tarvittiin "%d") +VOTING_RES_2 = %s (saatiin "%d") (tarvittiin "%d") +VOTING_SUCCESS = Vote onnistui +VOTING_RES_3 = %s (saatiin "%d") (tarvittiin "%d"). Tulos: %s +THE_RESULT = Tulos +WANT_CONTINUE = Haluatko jatkaa? +VOTED_FOR = %s votesi puolesta +VOTED_AGAINST = %s votesi vastaan +VOTED_FOR_OPT = %s votesi vaihtoehtoa #%d +ALREADY_VOTING = Yksi vote on jo meneillaan +VOTING_NOT_ALLOW = Nyt ei saa votea +GIVEN_NOT_VALID = Annettu %s ei kelpaa +MAP_IS = mappi on +MAPS_ARE = mapit ovat +CHOOSE_MAP = Valitse map +ADMIN_VOTE_MAP_1 = %s: votea mappi/mappeja +ADMIN_VOTE_MAP_2 = %s %s: votea mappi/mappeja +VOTING_STARTED = Voteeminen alkoi... +VOTING_FORBIDDEN = Tuosta voteeminen on kielletty +ADMIN_VOTE_CUS_1 = %s: vapaavalintainen vote +ADMIN_VOTE_CUS_2 = %s %s: vapaavalintainen vote +VOTE = Vote +ACTION_PERFORMED = Botille "%s" ei voida suorittaa tuota toimintoa +ADMIN_VOTE_FOR_1 = %s: votea %s %s:n puolesta +ADMIN_VOTE_FOR_2 = %s %s: votea %s %s:n puolesta + +[ls] +ADMIN_CANC_VOTE_1 = %s: |\|03z \/0+3 +ADMIN_CANC_VOTE_2 = %s %s: |\|03z \/0+3 +VOTING_CANC = pwn@g3 |\|03zed +NO_VOTE_CANC = |\|03z \/073z0rin' |3!tc|-| +RES_REF = PWNT +RES_ACCEPTED = 0k 0k, nubz, ju$7 t|-|!$ 0nc3 +VOTING_FAILED = PWNT +VOTING_RES_1 = %s (yes "%d") (|\|03z "%d") (|\|33|)3|) "%d") +VOTING_RES_2 = %s (|200T "%d") (|\|33|)3|) "%d") +VOTING_SUCCESS = W!N +VOTING_RES_3 = %s (|200T "%d") (|\|33|)3|) "%d"). L3w$3|2z: %s +THE_RESULT = 3xp3|2!m3n7 r3su|_tz@ +WANT_CONTINUE = j00 $ur3? +VOTED_FOR = %s \/0+3d |=0|2 +VOTED_AGAINST = %s \/0+3d @$$ +VOTED_FOR_OPT = %s \/0+3d |=0|2 option #%d +ALREADY_VOTING = N03z, \/073 !|\| |>|20g|23$$ +VOTING_NOT_ALLOW = W00t! \/0t3 |3!tch3z +GIVEN_NOT_VALID = N03 w@y |3itch +MAP_IS = |\/|@|> !$ +MAPS_ARE = |\/|@|>s @|23 +CHOOSE_MAP = Ch00s3 |\/|@|> +ADMIN_VOTE_MAP_1 = %s: \/0+3 |\/|@|>(s) +ADMIN_VOTE_MAP_2 = %s %s: \/0+3 |\/|@|>(s) +VOTING_STARTED = pwn@g3 h@z c0mm3nc3d +VOTING_FORBIDDEN = pwn@g3 |=0|2bidden +ADMIN_VOTE_CUS_1 = %s: \/0+3 cust0m +ADMIN_VOTE_CUS_2 = %s %s: \/0+3 cust0m +VOTE = Vote +ACTION_PERFORMED = No3z! bot! "%s" +ADMIN_VOTE_FOR_1 = %s: \/0+3 %s |=0|2 %s +ADMIN_VOTE_FOR_2 = %s %s: \/0+3 %s |=0|2 %s + +[bg] +ADMIN_CANC_VOTE_1 = %s: kanselira glasuvaneto +ADMIN_CANC_VOTE_2 = %s %s: kanselira glasuvaneto +VOTING_CANC = Glasuvaneto e kanselirano +NO_VOTE_CANC = Nqma nikakvo glasuvane za kanselirane ili glasuvaneto nemoje da se kanselira s tazi camanda +RES_REF = Resultata ne e priet +RES_ACCEPTED = Resultata e priet +VOTING_FAILED = Glasivaneto se e provalilo +VOTING_RES_1 = %s (da "%d") (ne "%d") (nujni "%d") +VOTING_RES_2 = %s (polu4eni "%d") (nujni "%d") +VOTING_SUCCESS = Glasuvaneto e uspe6no +VOTING_RES_3 = %s (polu4eni "%d") (nujni "%d"). Resultata: %s +THE_RESULT = Resultata +WANT_CONTINUE = Iskateli da produljite? +VOTED_FOR = %s glasuva za +VOTED_AGAINST = %s glasuva protiv +VOTED_FOR_OPT = %s glasuva za #%d +ALREADY_VOTING = V momenta ima edno glasuvane... +VOTING_NOT_ALLOW = Ne e pozvoleno da se glasuva v momenta +GIVEN_NOT_VALID = Davaneto %s ne e validno +MAP_IS = kartata e +MAPS_ARE = kartite sa +CHOOSE_MAP = Izbirane na karta +ADMIN_VOTE_MAP_1 = %s: glasuvane za karta(i) +ADMIN_VOTE_MAP_2 = %s %s: glasuvane za karta(i) +VOTING_STARTED = Glasuvaneto zapo4na... +VOTING_FORBIDDEN = Glasuvaneto za tova e zabraneno +ADMIN_VOTE_CUS_1 = %s: vote custom +ADMIN_VOTE_CUS_2 = %s %s: vote custom +VOTE = Glasuvane +ACTION_PERFORMED = tazi commanda nemoje da se izpolzva varhu bota "%s" +ADMIN_VOTE_FOR_1 = %s: glasuva %s za %s +ADMIN_VOTE_FOR_2 = %s %s: glasuva %s za %s + +[ro] +ADMIN_CANC_VOTE_1 = %s: anuleaza vot +ADMIN_CANC_VOTE_2 = %s %s: anuleaza vot +VOTING_CANC = Votarea a fost anulata +NO_VOTE_CANC = Nu exista votari pentru anulare sau nu poate fi anulata cu aceea comanda +RES_REF = Rezultat refuzat +RES_ACCEPTED = Rezultat acceptat +VOTING_FAILED = Votare esuata +VOTING_RES_1 = %s (da "%d" voturi, nu "%dvoturi", necesare "%d") +VOTING_RES_2 = %s (a obtinut "%d voturi", necesare "%d") +VOTING_SUCCESS = Votarea a avut loc cu succes +VOTING_RES_3 = %s (a obtinut "%d" voturi, necesare "%d"). Rezultatul este: %s +THE_RESULT = Rezultatul +WANT_CONTINUE = Accepti schimbarea hartii? +VOTED_FOR = %s a votat pentru +VOTED_AGAINST = %s a votat impotriva +VOTED_FOR_OPT = %s a votat pentru #%d +ALREADY_VOTING = Deja se afla o votare in curs de desfasurare... +VOTING_NOT_ALLOW = Votarile nu sunt permise acum +GIVEN_NOT_VALID = %s nu este valida +MAP_IS = harta este +MAPS_ARE = hartile sunt +CHOOSE_MAP = Alege harta +ADMIN_VOTE_MAP_1 = %s: votare harta +ADMIN_VOTE_MAP_2 = %s %s: votare harta +VOTING_STARTED = Votarea a inceput... +VOTING_FORBIDDEN = Votarea pentru aceasta optiune nu este permisa +ADMIN_VOTE_CUS_1 = %s: votare customizata +ADMIN_VOTE_CUS_2 = %s %s: votare customizata +VOTE = Voteaza +ACTION_PERFORMED = Aceasta comanda nu poate fi executata pe bot-ul "%s" +ADMIN_VOTE_FOR_1 = %s: vot %s pentru %s +ADMIN_VOTE_FOR_2 = %s %s: vot %s pentru %s + +[hu] +ADMIN_CANC_VOTE_1 = %s: szavazas visszavonasa +ADMIN_CANC_VOTE_2 = %s %s: szavazas visszavonasa +VOTING_CANC = Szavazas visszavonva. +NO_VOTE_CANC = Ezzel a parancsal nem lehet visszavonni a szavazast. +RES_REF = Eredmeny elutasitva +RES_ACCEPTED = Eredmeny elfogadva. +VOTING_FAILED = Szavazas sikertelen +VOTING_RES_1 = %s (igen "%d") (nem "%d") (kell "%d") +VOTING_RES_2 = %s (van "%d") (kell "%d") +VOTING_SUCCESS = Szavazas sikeres +VOTING_RES_3 = %s (van "%d") (kell "%d"). Az eredmeny: %s +THE_RESULT = Az eredmeny +WANT_CONTINUE = Folytatod? +VOTED_FOR = %s igen-re szavazott +VOTED_AGAINST = %s nemre szavazott +VOTED_FOR_OPT = %s a #%d - re szavazott +ALREADY_VOTING = Mar folyik 1 szavazas... +VOTING_NOT_ALLOW = A szavazas most nincs engedelyezve +GIVEN_NOT_VALID = Az adott %s nem helyes +MAP_IS = a palya +MAPS_ARE = a palya +CHOOSE_MAP = Valasz palyat +ADMIN_VOTE_MAP_1 = %s: Palya szavazas +ADMIN_VOTE_MAP_2 = %s %s: Palya szavazas +VOTING_STARTED = Szavazas inditva... +VOTING_FORBIDDEN = Voting for that has been forbidden +ADMIN_VOTE_CUS_1 = %s: szavazas custom +ADMIN_VOTE_CUS_2 = %s %s: szavazas custom +VOTE = Szavazas +ACTION_PERFORMED = Az akciot nem lehet "%s"-boton vegrehalytani +ADMIN_VOTE_FOR_1 = %s: szavazas %s vagy %s +ADMIN_VOTE_FOR_2 = %s %s: szavazas %s vagy %s + +[lt] +ADMIN_CANC_VOTE_1 = %s: atsaukti balsavima +ADMIN_CANC_VOTE_2 = %s %s: atsaukti balsavima +VOTING_CANC = Balsavimas atsauktas +NO_VOTE_CANC = Nera balsavimo, kad jy galetum atsaukti. Arba naudoji netinkama komanda +RES_REF = Rezultatas nepriimtas +RES_ACCEPTED = Rezultatas priimtas +VOTING_FAILED = Balsavimas nepavyko +VOTING_RES_1 = %s (taip "%d") (ne "%d") (reikia "%d") +VOTING_RES_2 = %s (gavo "%d") (reikia "%d") +VOTING_SUCCESS = Balsavimas pavyko +VOTING_RES_3 = %s (gavo "%d") (reikia "%d"). Rezultatas: %s +THE_RESULT = Rezultatas +WANT_CONTINUE = Ar nori testi? +VOTED_FOR = %s prabalsavo uz +VOTED_AGAINST = %s prabalsavo pries +VOTED_FOR_OPT = %s balsavo uz #%d +ALREADY_VOTING = Jau balsuojama... +VOTING_NOT_ALLOW = Balsavimas negalimas siuo metu +GIVEN_NOT_VALID = Duota %s neteisinga +MAP_IS = Zemelapis yra +MAPS_ARE = Zemelapiai yra +CHOOSE_MAP = Issirink zemelapi +ADMIN_VOTE_MAP_1 = %s: zemelapiu balsavimas +ADMIN_VOTE_MAP_2 = %s %s: zemelapiu balsavimas +VOTING_STARTED = Balsavimas pradetas +VOTING_FORBIDDEN = Sis balsavimas draudziamas +ADMIN_VOTE_CUS_1 = %s: pakeista balsavima +ADMIN_VOTE_CUS_2 = %s %s: pakeista balsavima +VOTE = Balsavimas +ACTION_PERFORMED = Sis veiksmas negalimas botui "%s" +ADMIN_VOTE_FOR_1 = %s: balsavo %s uz %s +ADMIN_VOTE_FOR_2 = %s %s: balsavo %s uz %s + +[sk] +ADMIN_CANC_VOTE_1 = %s: zrusil hlasovanie +ADMIN_CANC_VOTE_2 = %s %s: zrusili hlasovanie +VOTING_CANC = Hlasovanie zrusene +NO_VOTE_CANC = Neni co zrusit lebo hlasovanie nejde zrusit tymto prikazom +RES_REF = Hlasovanie neplatne +RES_ACCEPTED = Hlasovanie prijate +VOTING_FAILED = Hlasovanie zlihalo +VOTING_RES_1 = %s (za ano "%d") (za nie "%d") (bolo potrebnych "%d") +VOTING_RES_2 = %s (dostal "%d") (bolo potrebnych "%d") +VOTING_SUCCESS = Hlasovanie uspesne +VOTING_RES_3 = %s (dostal "%d") (bolo potrebnych "%d"). Vysledok: %s +THE_RESULT = Vysledok +WANT_CONTINUE = Chces pokracovat? +VOTED_FOR = %s hlasovalo za +VOTED_AGAINST = %s hlasovalo proti +VOTED_FOR_OPT = %s hlasovalo pre volbu #%d +ALREADY_VOTING = Uz sa raz hlasovalo... +VOTING_NOT_ALLOW = Hlasovanie neni teraz povolene +GIVEN_NOT_VALID = Opakovanie %s neplatne +MAP_IS = mapa je +MAPS_ARE = mapy su +CHOOSE_MAP = Zvol mapu +ADMIN_VOTE_MAP_1 = %s: hlasoval pre mapu(y) +ADMIN_VOTE_MAP_2 = %s %s: hlasovali pre map(y) +VOTING_STARTED = Hlasovanie zacate... +VOTING_FORBIDDEN = Hlasovanie bolo zakazane +ADMIN_VOTE_CUS_1 = %s: volil inak +ADMIN_VOTE_CUS_2 = %s %s: volili inak +VOTE = Hlasovanie +ACTION_PERFORMED = Tato operacia nemoze byt prevedena "%s" +ADMIN_VOTE_FOR_1 = %s: hlasoval %s za %s +ADMIN_VOTE_FOR_2 = %s %s: hlasoval %s za %s + +[mk] +ADMIN_CANC_VOTE_1 = %s: otkazi go glasanjeto +ADMIN_CANC_VOTE_2 = %s %s: otkazi go glasanjeto +VOTING_CANC = Glasanjeto e otkazano +NO_VOTE_CANC = Momentalno nema glasanje koe bi mozelo da se prekine ili glasanjeto ne moze da bide prekinato so taa komanda +RES_REF = Rezultatot e odbien +RES_ACCEPTED = Rezultatot e prifaten +VOTING_FAILED = Glasanjeto e neuspesno +VOTING_RES_1 = %s (da "%d") (ne "%d") (potrebno e "%d") +VOTING_RES_2 = %s (dobieno e "%d") (potrebno e "%d") +VOTING_SUCCESS = Glasanjeto e uspesno +VOTING_RES_3 = %s (dobieno e "%d") (potrebno e "%d"). Rezultatot e: %s +THE_RESULT = Rezultat +WANT_CONTINUE = Dali sakate da prodolzite? +VOTED_FOR = %s glasase DA +VOTED_AGAINST = %s glasase NE +VOTED_FOR_OPT = %s glasase za #%d +ALREADY_VOTING = Edno glasanje e veke vo tek... +VOTING_NOT_ALLOW = Glasanje momentalno ne e dozvoleno +GIVEN_NOT_VALID = Dadenite %s glasovi ne se validni +MAP_IS = mapata e +MAPS_ARE = mapite se +CHOOSE_MAP = Izberi mapa +ADMIN_VOTE_MAP_1 = %s: glasanje za mapa +ADMIN_VOTE_MAP_2 = %s %s: glasanje za mapa +VOTING_STARTED = Glasanjeto zapocna... +VOTING_FORBIDDEN = Glasanjeto za toa e zabraneto +ADMIN_VOTE_CUS_1 = %s: Specificno glasanje +ADMIN_VOTE_CUS_2 = %s %s: Specificno glasanje +VOTE = Glasanje +ACTION_PERFORMED = Taa akcija ne moze da bide izvrsena na bot "%s" +ADMIN_VOTE_FOR_1 = %s: glasase %s za %s +ADMIN_VOTE_FOR_2 = %s %s: glasase %s za %s diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/antiflood.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/antiflood.txt new file mode 100644 index 0000000..b1a0aac --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/antiflood.txt @@ -0,0 +1,59 @@ +[en] +STOP_FLOOD = Stop flooding the server! + +[de] +STOP_FLOOD = Bitte nicht zu viele Eingaben auf einmal! + +[sr] +STOP_FLOOD = Prestani da opterecujes server porukama! + +[tr] +STOP_FLOOD = Serveri yazi ile doldurmayin! + +[fr] +STOP_FLOOD = Arrete de flooder le serveur! + +[sv] +STOP_FLOOD = Sluta flooda servern! + +[da] +STOP_FLOOD = Stop med at oversvoemme serveren! + +[pl] +STOP_FLOOD = Przestan zapychac serwer! + +[nl] +STOP_FLOOD = Stop met de server vol te spammen! + +[es] +STOP_FLOOD = Para de saturar el servidor! + +[bp] +STOP_FLOOD = Parem com o flood no servidor! + +[cz] +STOP_FLOOD = Prestan floodovat! + +[fi] +STOP_FLOOD = Lopeta floodiminen! + +[ls] +STOP_FLOOD = nu m0|2 fl00d, | Befehle +CONF_MENU = Menu > Konfiguration +SPE_MENU = Menu > Sprechen + +[sr] +CMD_MENU = Komandne +CONF_MENU = Podesavanja +SPE_MENU = Govorne Komande + +[tr] +CMD_MENU = Emir Menusu +CONF_MENU = Configler Menusu +SPE_MENU = Konusma Menusu + +[fr] +CMD_MENU = Menu Commandes +CONF_MENU = Menu Configurations +SPE_MENU = Menu Voix/Paroles + +[sv] +CMD_MENU = Kommandomeny +CONF_MENU = Konfigurationsmeny +SPE_MENU = Talmeny + +[da] +CMD_MENU = Kommando Menu +CONF_MENU = Konfigurations Menu +SPE_MENU = Tale Menu + +[pl] +CMD_MENU = Menu komend +CONF_MENU = Menu konfiguracji +SPE_MENU = Menu rozmowy + +[nl] +CMD_MENU = Commandomenu +CONF_MENU = Configuratiemenu +SPE_MENU = Spraakmenu + +[es] +CMD_MENU = Menu de Comandos +CONF_MENU = Menu de Configuracion +SPE_MENU = Menu de Voz + +[bp] +CMD_MENU = Menu de Comandos +CONF_MENU = Menu de Configs +SPE_MENU = Menu de Vozes + +[cz] +CMD_MENU = Menu prikazu +CONF_MENU = Menu nastaveni +SPE_MENU = Nastaveni reci + +[fi] +CMD_MENU = Komentovalikko +CONF_MENU = Saatovalikko +SPE_MENU = Puhevalikko + +[ls] +CMD_MENU = l33t cmdz M3nu +CONF_MENU = l33t c0nf!gz M3nu +SPE_MENU = l33t $p33ch M3nu + +[bg] +CMD_MENU = Comandnoto Menu +CONF_MENU = Configuracionno Menu +SPE_MENU = Menu za Govorene + +[ro] +CMD_MENU = Menu Comenzi +CONF_MENU = Menu Configuratie +SPE_MENU = Menu Speech + +[hu] +CMD_MENU = Parancs Menu +CONF_MENU = Beallitas Menu +SPE_MENU = Beszed Menu + +[lt] +CMD_MENU = Komandu meniu +CONF_MENU = Konfigu meniu +SPE_MENU = Kalbos meniu + +[sk] +CMD_MENU = Menu prikazov +CONF_MENU = Menu nastaveni +SPE_MENU = Nastavenie reci + +[mk] +CMD_MENU = Meni so komandi +CONF_MENU = Meni so konfiguracii +SPE_MENU = Meni so glasovni komandi diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/common.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/common.txt new file mode 100644 index 0000000..0fe903f --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/common.txt @@ -0,0 +1,439 @@ +[en] +BACK = Back +EXIT = Exit +MORE = More +NONE = None +ADMIN = ADMIN +PLAYER = PLAYER +ERROR = error +YES = Yes +NO = No +BAN = ban +KICK = kick +NO_ACC_COM = You have no access to that command +USAGE = Usage +MORE_CL_MATCHT = There is more than one client matching your argument +CL_NOT_FOUND = Client with that name or userid not found +CLIENT_IMM = Client "%s" has immunity +CANT_PERF_DEAD = That action can't be performed on dead client "%s" +CANT_PERF_BOT = That action can't be performed on bot "%s" +ON = On +OFF = Off + +[de] +BACK = Zurueck +EXIT = Beenden +MORE = Mehr +NONE = Keine +ADMIN = ADMIN +PLAYER = Spieler +ERROR = Fehler +YES = Ja +NO = Nein +BAN = ban +KICK = kick +NO_ACC_COM = Du hast nicht genuegend Rechte, um diesen Befehl auszufuehren! +USAGE = Anwendung +MORE_CL_MATCHT = Es gibt mehrere Spieler, auf die deine Angaben zutreffen +CL_NOT_FOUND = Spieler mit diesem Namen oder dieser UserID nicht gefunden +CLIENT_IMM = Spieler "%s" hat Immnuitaet +CANT_PERF_DEAD = Diese Aktion kann nicht am toten Spieler "%s" ausgefuehrt werden. +CANT_PERF_BOT = Diese Aktion kann nicht am Bot "%s" ausgefuehrt werden. +ON = An +OFF = Aus + +[sr] +BACK = Nazad +EXIT = Izlaz +MORE = Jos +NONE = Nema +ADMIN = ADMIN +PLAYER = IGRAC +ERROR = greska +YES = Da +NO = Ne +BAN = ban +KICK = kick +NO_ACC_COM = Nemate pristup zadatoj komandi +USAGE = Koriscenje +MORE_CL_MATCHT = vise korisnika zadovoljava vas argument +CL_NOT_FOUND = Klijent sa tim imenom ili korisnickim ID-om nije nadjen +CLIENT_IMM = Klijent "%s" ima imunitet +CANT_PERF_DEAD = Komanda ne moze biti izvrsena na mrtvom klijentu "%s" +CANT_PERF_BOT = Komanda ne moze biti izvrsena na botu "%s" +ON = Ukljucen +OFF = Iskljucen + +[tr] +BACK = Geri +EXIT = Cikis +MORE = Daha +NONE = Hic +ADMIN = ADMIN +PLAYER = Oyuncu +ERROR = hata +YES = evet +NO = hayir +BAN = ban +KICK = at +NO_ACC_COM = O emiri kullanma hakkiniz yok +USAGE = kullanim +MORE_CL_MATCHT = Aradiginiz konuya uygun oyuncular +CL_NOT_FOUND = O isimde oyuncu yada kullaniciID'si bulunamadi +CLIENT_IMM = "%s" oyuncunun dokunulmazligi var +CANT_PERF_DEAD = Bunu olu bir oyuncunun uzerinde yapamazsiniz "%s" +CANT_PERF_BOT = Bot uzerinde bunu yapamazsiniz "%s" +ON = Acik +OFF = Kapali + +[fr] +BACK = Retour +EXIT = Sortir +MORE = Plus +NONE = Aucun +ADMIN = ADMIN +PLAYER = JOUEUR +ERROR = erreur +YES = Oui +NO = Non +BAN = bannir +KICK = kicker +NO_ACC_COM = Tu n'as pas acces a cette commande +USAGE = Utilisation +MORE_CL_MATCHT = Plusieurs clients correspondent a tes criteres +CL_NOT_FOUND = Le client avec ce nom ou cette userid est introuvable +CLIENT_IMM = Client "%s" est immunise +CANT_PERF_DEAD = Cette action ne peut pas etre faite sur un joueur mort "%s" +CANT_PERF_BOT = Cette action ne peut pas etre faite sur un BOT "%s" +ON = Actif +OFF = Inactif + +[sv] +BACK = Tillbaka +EXIT = Avsluta +MORE = Mer +NONE = Ingen +ADMIN = ADMIN +PLAYER = SPELARE +ERROR = fel +YES = Ja +NO = Nej +BAN = bannlys +KICK = sparka +NO_ACC_COM = Du saknar befogenhet till det kommandot +USAGE = Utnyttjande +MORE_CL_MATCHT = fler klienter som passar argumentet +CL_NOT_FOUND = Klient med det namnet eller userid'et kan inte hittas +CLIENT_IMM = Klient "%s" har immunitet +CANT_PERF_DEAD = Handling kan inte utf'o'ras pa den likviderade klienten "%s" +CANT_PERF_BOT = Den handlingen kan inte utf'o'ras pa bot "%s" +ON = Aktiv +OFF = Av + +[da] +BACK = Tilbage +EXIT = Exit +MORE = Mere +NONE = Ingen +ADMIN = ADMIN +PLAYER = SPILLER +ERROR = fejl +YES = Ja +NO = Nej +BAN = ban +KICK = kick +NO_ACC_COM = Du har ikke adgang til den kommando +USAGE = brug +MORE_CL_MATCHT = her er flere klienter der passer paa dit argument +CL_NOT_FOUND = Klient med det navn eller brugerid ikke fundet +CLIENT_IMM = Klient "%s" har immunitet +CANT_PERF_DEAD = Den handling kan ikke udfoeres paa doed klient "%s" +CANT_PERF_BOT = Den handling kan ikke udfoeres paa bot "%s" +ON = Til +OFF = Fra + +[pl] +BACK = Wstecz +EXIT = Wyjscie +MORE = Wiecej +NONE = Nic +ADMIN = ADMIN +PLAYER = GRACZ +ERROR = blad +YES = Tak +NO = Nie +BAN = ban +KICK = kick +NO_ACC_COM = Nie mozesz uzyc tej komendy +USAGE = Uzycie +MORE_CL_MATCHT = Istnieje kilku graczy pasujacych do podanego wzorca +CL_NOT_FOUND = Nie znaleziono klienta z tym nickiem lub ID +CLIENT_IMM = Klient "%s" ma immunitet +CANT_PERF_DEAD = Nie mozesz tego wykonac na martwym kliencie "%s" +CANT_PERF_BOT = Nie mozesz tego wykonac na bocie "%s" +ON = Wl +OFF = Wyl + +[nl] +BACK = Terug +EXIT = Verlaat +MORE = Meer +NONE = Geen +ADMIN = ADMIN +PLAYER = SPELER +ERROR = fout +YES = Ja +NO = Nee +BAN = verban +KICK = verwijder +NO_ACC_COM = Je hebt geen toegang tot dat commando. +USAGE = Gebruik +MORE_CL_MATCHT = Er zijn meer spelers die overeen komen met het gegeven patroon +CL_NOT_FOUND = Speler met die naam of UserID niet gevonden. +CLIENT_IMM = Speler "%s" is immuun +CANT_PERF_DEAD = Die actie kan niet worden uitgevoerd op dode speler "%s" +CANT_PERF_BOT = Die actie kan niet worden uitgevoerd op bot "%s" +ON = Aan +OFF = Uit + +[es] +BACK = Atras +EXIT = Salir +MORE = Mas +NONE = Ninguno +ADMIN = ADMIN +PLAYER = JUGADOR +ERROR = error +YES = Si +NO = No +BAN = banear +KICK = expulsar +NO_ACC_COM = No tienes acceso a este comando +USAGE = Uso +MORE_CL_MATCHT = Hay mas de un cliente que coincide con tu argumento +CL_NOT_FOUND = No se encontro ningun cliente con ese nombre o ese identificador +CLIENT_IMM = El cliente "%s" tiene inmunidad +CANT_PERF_DEAD = Esta accion no se puede aplicar a un cliente muerto "%s" +CANT_PERF_BOT = Esta accion no se puede aplicar a un bot "%s" +ON = Activado +OFF = Desactivado + +[bp] +BACK = Voltar +EXIT = Sair +MORE = Mais +NONE = Nenhum +ADMIN = ADMIN +PLAYER = JOGADOR +ERROR = erro +YES = Sim +NO = Nao +BAN = banir +KICK = kickar +NO_ACC_COM = Voce nao tem acesso a este comando +USAGE = Uso +MORE_CL_MATCHT = Aqui sao mais clientes ... para seu argumento +CL_NOT_FOUND = Cliente com este nome ou userid nao encontrado +CLIENT_IMM = Cliente "%s" tem imunidade +CANT_PERF_DEAD = Aquela acao nao pode ser executada com o cliente morto "%s" +CANT_PERF_BOT = Aquela acao nao pode ser executada com bot "%s" +ON = Ligado +OFF = Desligado + +[cz] +BACK = Zpatky +EXIT = Exit +MORE = Vice +NONE = Nic +ADMIN = ADMIN +PLAYER = HRAC +ERROR = error +YES = Ano +NO = Ne +BAN = ban +KICK = kick +NO_ACC_COM = Nemas pristup k tomuto prikazu +USAGE = Pouziti +MORE_CL_MATCHT = je zde vic klientu odpovidajici tvym kriteriim +CL_NOT_FOUND = Klient s timto jmenem nebo userid nenalezen +CLIENT_IMM = Klient "%s" ma imunitu +CANT_PERF_DEAD = Tato operace nelze provest na mrtvem klientu "%s" +CANT_PERF_BOT = Tato operace nelze provest na botovi "%s" +ON = ON +OFF = OFF + +[fi] +BACK = Takaisin +EXIT = Poistu +MORE = Lisaa +NONE = Ei yhtaan +ADMIN = ADMIN +PLAYER = PELAAJA +ERROR = virhe +YES = Kylla +NO = Ei +BAN = banni +KICK = potku +NO_ACC_COM = Sinulla ei ole valtuuksia tuohon komentoon +USAGE = Kaytto +MORE_CL_MATCHT = taalla on enemman kuin yksi client, joka vastaa kuvaukseesi +CL_NOT_FOUND = Tuon nimista pelaajaa tai tuota ID:ta ei loytynyt +CLIENT_IMM = "%s":lla on immunitteetti +CANT_PERF_DEAD = Tuota toimintoa ei voida suorittaa kuolleeseen pelaajaan "%s" +CANT_PERF_BOT = Tuota toimintoa ei voida suorittaa bottiin "%s" +ON = Paalla +OFF = Poissa paalta + +[ls] +BACK = l3ws3 +EXIT = G!v3 u|> b4$3 +MORE = t0 v!ct0ry +NONE = c3r0 +ADMIN = l33t s3rv3r 0P +PLAYER = un-l33t n0 |200t'3d n00b +ERROR = 3rr0r: | N0T 3NUFF M4N4! | +YES = h4! +NO = n0 +BAN = b4nz0|2 +KICK = k!ckz0|2 +NO_ACC_COM = 3rr0r: | N0T 3NUFF M4N4! | n0t 3nu77 |200t +USAGE = uzig3 +MORE_CL_MATCHT = 3rr0r: | N0T 3NUFF M4N4! | t00 m4ny un-l33t n0 |200t'3d n00b fi7! +CL_NOT_FOUND = 3rr0r: | N0T 3NUFF M4N4! | t00 f3w un-l33t n0 |200t'3d n00b fi7! +CLIENT_IMM = l33t s3rv3r 0P "%s" h4z |200t +CANT_PERF_DEAD = un-l33t n0 |200t'3d n00b "%s" iz d34d! +CANT_PERF_BOT = "%s" iz 4 l33t b0t! +ON = 0|\| +OFF = 077 + +[bg] +BACK = Nazad +EXIT = Izhot +MORE = O6te +NONE = nikolko +ADMIN = ADMINISTRATOR +PLAYER = Igra4 +ERROR = gre6ka +YES = Da +NO = Ne +BAN = ban +KICK = kick +NO_ACC_COM = Nqmate dostap do tazi commanda +USAGE = Ispolzvane +MORE_CL_MATCHT = eto o6te igra4i koito otgovarqt na commandata +CL_NOT_FOUND = Igra4 s tova ime ili userid ne e nameren +CLIENT_IMM = Igra4a "%s" ima immunity +CANT_PERF_DEAD = Tazi comanda nemoje da se izpolzva na umrql igra4 "%s" +CANT_PERF_BOT = Tazi comanda nemoje da se izpolzva na bot "%s" +ON = Vklu4eno +OFF = Isklu4eno + +[ro] +BACK = Inapoi +EXIT = Iesire +MORE = Mai mult +NONE = Nici unul +ADMIN = ADMIN +PLAYER = JUCATOR +ERROR = eroare +YES = Da +NO = Nu +BAN = ban +KICK = kick +NO_ACC_COM = Nu ai acces la aceasta comanda +USAGE = Valoare +MORE_CL_MATCHT = Sunt mai multi jucatori ce va indeplinesc cautarea +CL_NOT_FOUND = Jucatorul cu acel nume sau id nu exista +CLIENT_IMM = Jucatorul "%s" are imunitate +CANT_PERF_DEAD = Aceasta comanda nu poate fi executata pe jucatorul decedat "%s" +CANT_PERF_BOT = Aceasta comanda nu poate fi executata pe bot-ul "%s" +ON = Activat +OFF = Dezactivat + +[hu] +BACK = Vissza +EXIT = Kilepes +MORE = Tobb +NONE = Egyiksem +ADMIN = ADMIN +PLAYER = Jatekos +ERROR = hiba +YES = Igen +NO = Nem +BAN = ban +KICK = kirugas +NO_ACC_COM = Nincs elerhetoseged ehhez a parancshoz. +USAGE = Hasznalat +MORE_CL_MATCHT = here are more clients matching to your argument +CL_NOT_FOUND = Nincs ilyen nevu jatekos +CLIENT_IMM = "%s" ellen all +CANT_PERF_DEAD = Ezt az akciot nem hajthatod vegre "%s"-on mert halott +CANT_PERF_BOT = Ezt az akciot nem hajthatod vegre "%s"-on mert bot +ON = Be +OFF = Ki + +[lt] +BACK = Atgal +EXIT = Iseiti +MORE = Daugiau +NONE = Nera +ADMIN = ADMINAS +PLAYER = ZAIDEJAS +ERROR = klaida +YES = Taip +NO = Ne +BAN = Banas +KICK = Ismesti +NO_ACC_COM = Nera teisiu siai komandai +USAGE = Naudoti +MORE_CL_MATCHT = Cia yra daugiau panasiu klientu. +CL_NOT_FOUND = Klientas siuo vardu ar su userid nerastas +CLIENT_IMM = Klientas "%s" turi imuniteta +CANT_PERF_DEAD = Sis veiksmas negalimas jau numirusiam zaidejui "%s" +CANT_PERF_BOT = Sio veiksmo negalima naudoti ant boto "%s" +ON = Ijungta +OFF = Isjungta + +[sk] +BACK = Spat +EXIT = Exit +MORE = Viac +NONE = Nic +ADMIN = ADMIN +PLAYER = HRAC +ERROR = chyba +YES = Ano +NO = Nie +BAN = ban +KICK = kick +NO_ACC_COM = Nemas pristup k tomuto prikazu +USAGE = Pouzity +MORE_CL_MATCHT = je tu viac klientov zodpovedajucim tymto kriteriam +CL_NOT_FOUND = Klient s tymto menom alebo userid nenajdeny +CLIENT_IMM = Klient "%s" ma imunitu +CANT_PERF_DEAD = Tato operacia nejde previest na mrtvom klientovi "%s" +CANT_PERF_BOT = Tato operacia nejde previest na botovi "%s" +ON = ON +OFF = OFF + +[mk] +BACK = Nazad +EXIT = Izlez +MORE = Uste +NONE = Nema +ADMIN = ADMIN +PLAYER = IGRAC +ERROR = greska +YES = Da +NO = Ne +BAN = ban +KICK = kick +NO_ACC_COM = Nemate pristap na dadenata komanda +USAGE = Koristenje +MORE_CL_MATCHT = Poveke igraci go zadovoluvaat vaseto baranje +CL_NOT_FOUND = Igrac so toa ime ili so toj korisnicki ID ne e najden +CLIENT_IMM = Igracot "%s" ima imunitet +CANT_PERF_DEAD = Komandata ne moze da bide izvrsena na igracot "%s" bidejki e mrtov +CANT_PERF_BOT = Komandata ne moze da bide izvrsena na botot "%s" +ON = Uklucen +OFF = Isklucen diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/imessage.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/imessage.txt new file mode 100644 index 0000000..5432b44 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/imessage.txt @@ -0,0 +1,59 @@ +[en] +INF_REACH = Information Messages limit reached! + +[de] +INF_REACH = Nachrichtenlimit erreicht! + +[sr] +INF_REACH = Dostignut limit Informacione Poruke! + +[tr] +INF_REACH = Informasyon mesajlari sinirina ulasildi! + +[fr] +INF_REACH = Limite de Messages d'Information atteinte! + +[sv] +INF_REACH = Maximalt antal informationsmeddelanden! + +[da] +INF_REACH = Informations beskeder graense naaet! + +[pl] +INF_REACH = Osiagniety limit wiadomosci informacyjnych! + +[nl] +INF_REACH = Informatieve Berichtenlimiet bereikt! + +[es] +INF_REACH = Se ha alcanzado el limite maximo de Mensajes de Informacion! + +[bp] +INF_REACH = Limite de mensagens de informacao obtido! + +[cz] +INF_REACH = Limit informacnich zprav presazen! + +[fi] +INF_REACH = Information Message -raja ylitetty! + +[ls] +INF_REACH = l!m!tz r34ch3d + +[bg] +INF_REACH = Informacionnoto saob6tenie dostigna limita! + +[ro] +INF_REACH = Limita mesajelor informative a fost atinsa! + +[hu] +INF_REACH = Informacio uzenetek limit elerve! + +[lt] +INF_REACH = Informacijos zinuciu limitas pasiektas + +[sk] +INF_REACH = Limit informacnych sprav prekroceny! + +[mk] +INF_REACH = Dostignat e limitot za Informacioni Poraki! diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/languages.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/languages.txt new file mode 100644 index 0000000..d81f432 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/languages.txt @@ -0,0 +1,79 @@ +[en] +LANG_NAME = English +LANG_NAME_NATIVE = English + +[de] +LANG_NAME = German +LANG_NAME_NATIVE = Deutsch + +[sr] +LANG_NAME = Serbian +LANG_NAME_NATIVE = Srpski + +[tr] +LANG_NAME = Turkish +LANG_NAME_NATIVE = Turkce + +[fr] +LANG_NAME = French +LANG_NAME_NATIVE = Francais + +[sv] +LANG_NAME = Swedish +LANG_NAME_NATIVE = Svenska + +[da] +LANG_NAME = Danish +LANG_NAME_NATIVE = Dansk + +[pl] +LANG_NAME = Polish +LANG_NAME_NATIVE = Polski + +[nl] +LANG_NAME = Dutch +LANG_NAME_NATIVE = Nederlands + +[es] +LANG_NAME = Spanish +LANG_NAME_NATIVE = Espanyol + +[bp] +LANG_NAME = Brazil Portuguese +LANG_NAME_NATIVE = Portugues Brasil + +[cz] +LANG_NAME = Czech +LANG_NAME_NATIVE = Cestina + +[fi] +LANG_NAME = Finnish +LANG_NAME_NATIVE = Suomi + +[ls] +LANG_NAME = l33t +LANG_NAME_NATIVE = l33t + +[bg] +LANG_NAME = Bulgarian +LANG_NAME_NATIVE = Bulgarski + +[ro] +LANG_NAME = Romanian +LANG_NAME_NATIVE = Romana + +[hu] +LANG_NAME = Hungarian +LANG_NAME_NATIVE = Magyar + +[lt] +LANG_NAME = Lithuania +LANG_NAME_NATIVE = Lithuania + +[sk] +LANG_NAME = Slovak +LANG_NAME_NATIVE = Slovencina + +[mk] +LANG_NAME = Macedonian +LANG_NAME_NATIVE = Makedonski diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/mapchooser.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/mapchooser.txt new file mode 100644 index 0000000..4ccd7e7 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/mapchooser.txt @@ -0,0 +1,179 @@ +[en] +CHO_FIN_EXT = Choosing finished. Current map will be extended to next %.0f minutes +CHO_FIN_NEXT = Choosing finished. The nextmap will be %s +CHOSE_EXT = %s chose map extending +X_CHOSE_X = %s chose %s +CHOOSE_NEXTM = AMX Choose nextmap +EXTED_MAP = Extend map %s +TIME_CHOOSE = It's time to choose the nextmap... + +[de] +CHO_FIN_EXT = Auswahl beendet. Laufende Map wird um %.0f Minuten verlaengert. +CHO_FIN_NEXT = Auswahl beendet. Naechste Map ist %s +CHOSE_EXT = %s waehlten Map-Verlaengerung +X_CHOSE_X = %s waehlten %s +CHOOSE_NEXTM = AMXX waehlt naechste Map +EXTED_MAP = Verlangere Map %s +TIME_CHOOSE = Es ist an der Zeit, die naechste Map zu waehlen... + +[sr] +CHO_FIN_EXT = Biranje zavrseno. Sadasnja mapa ce biti produzena za %.0f minuta +CHO_FIN_NEXT = Biranje zavrseno. Sledeca mapa ce biti %s +CHOSE_EXT = %s biraj mapu sa produzivanjem +X_CHOSE_X = %s izabrao %s +CHOOSE_NEXTM = AMX izaberi sledecu mapu +EXTED_MAP = Produzi mapu %s +TIME_CHOOSE = Vreme je da se izabere sledeca map... + +[tr] +CHO_FIN_EXT = Oylama bitmisdir. Su anki map %.0f dakika uzatilacakdir +CHO_FIN_NEXT = Oylama bitmisdir. Secilen map ise %s +CHOSE_EXT = %s Map uzatilmasini secin +X_CHOSE_X = %s Secin %s +CHOOSE_NEXTM = AMX diger map secimi +EXTED_MAP = %s Map surecini uzat +TIME_CHOOSE = Yeni map secimi baslamisdir... + +[fr] +CHO_FIN_EXT = Les choix sont termines. La carte est prolongee de %.0f minutes +CHO_FIN_NEXT = Les choix sont termines. La prochaine carte sera %s +CHOSE_EXT = %s a choisi de prolonger la carte. +X_CHOSE_X = %s a choisi la carte %s +CHOOSE_NEXTM = AMX Choisir la prochaine carte +EXTED_MAP = Prolonger la carte %s +TIME_CHOOSE = Il est temps de choisir la prochaine carte... + +[sv] +CHO_FIN_EXT = Val avslutat. Aktuell karta kommer att vara ytterligare %.0f minuter +CHO_FIN_NEXT = Val avslutat. Kommande karta kommer att vara %s +CHOSE_EXT = %s valde f'o'rlangning pa aktuell karta +X_CHOSE_X = %s valde %s +CHOOSE_NEXTM = AMX valde kommande karta +EXTED_MAP = Fortsatt karta %s +TIME_CHOOSE = Dags att utse kommande karta... + +[da] +CHO_FIN_EXT = Valg afsluttet. Nuvaerende bane bliver forlaenget til naeste %.0f minutter +CHO_FIN_NEXT = Valg afsluttet. Naeste bane bliver %s +CHOSE_EXT = %s valgte bane forlaengelse +X_CHOSE_X = %s valgte %s +CHOOSE_NEXTM = AMX vaelg naeste bane +EXTED_MAP = Forlaeng bane %s +TIME_CHOOSE = Det er tid til at vaelge naeste bane... + +[pl] +CHO_FIN_EXT = Wybor zakonczony. aktualna mapa zostanie rozszerzona o %.0f minut +CHO_FIN_NEXT = Wybor zakonczony. Nastepna mapa to %s +CHOSE_EXT = %s wybral rozszerzenie mapy +X_CHOSE_X = %s wybral %s +CHOOSE_NEXTM = AMX wybral nastepna mape +EXTED_MAP = Rozszerz mape %s +TIME_CHOOSE = Nadszedl czas wyboru mapy... + +[nl] +CHO_FIN_EXT = Kiezen voltooid. Huidige map wordt verlengd met %.0f minuten +CHO_FIN_NEXT = Kiezen voltooid. De volgende map is %s +CHOSE_EXT = %s koos voor verlenging +X_CHOSE_X = %s koos %s +CHOOSE_NEXTM = AMX Kies volgende map +EXTED_MAP = Verleng map %s +TIME_CHOOSE = Het is tijd om de volgende map te kiezen... + +[es] +CHO_FIN_EXT = Eleccion finalizada. El mapa actual se extendera durante %.0f minutos mas +CHO_FIN_NEXT = Eleccion finalizada. El proximo mapa sera %s +CHOSE_EXT = %s ha elegido extender el mapa +X_CHOSE_X = %s ha elegido %s +CHOOSE_NEXTM = AMX Elegir proximo mapa +EXTED_MAP = Extender el mapa %s +TIME_CHOOSE = Es hora de elegir el proximo mapa... + +[bp] +CHO_FIN_EXT = Escolha terminada. O mapa atual sera extendido pelos proximos %.0f minutos +CHO_FIN_NEXT = Escolha terminada. O proximo mapa sera %s +CHOSE_EXT = %s escolheu extender o mapa +X_CHOSE_X = %s escolheu %s +CHOOSE_NEXTM = AMX Escolher proximo mapa +EXTED_MAP = Extender o mapa %s +TIME_CHOOSE = E a hora de escolher o proximo mapa... + +[cz] +CHO_FIN_EXT = Volba ukoncena. Nynejsi mapa zde bude na dalsich %.0f minut +CHO_FIN_NEXT = Volba ukoncena. Dalsi mapa bude %s +CHOSE_EXT = %s volil prodlouzeni soucasne mapy +X_CHOSE_X = %s volil %s +CHOOSE_NEXTM = Zvol si dalsi mapu +EXTED_MAP = Prodluzuje mapu %s +TIME_CHOOSE = Je cas pro volbu dalsi mapy... + +[fi] +CHO_FIN_EXT = Valinta suoritettu. nykyista mappia jatketaan %.0f minuuttia +CHO_FIN_NEXT = Valinta suoritettu. Seuraava mappi on %s +CHOSE_EXT = %s valitsi nykyisen mapin +X_CHOSE_X = %s valitsi %s +CHOOSE_NEXTM = Valitse seuraava mappi +EXTED_MAP = Jatka mappia %s +TIME_CHOOSE = On aika valita seruaava mappi... + +[ls] +CHO_FIN_EXT = N0 M0|23 \/0TI|\| F0 j00! cu|2|2ent m4p f0 %.0f M0 m!nut3z +CHO_FIN_NEXT = N0 M0|23 \/0TI|\| F0 j00! The nextmap will be %s +CHOSE_EXT = %s w4ntz M0 cu|2|2ent m4p! +X_CHOSE_X = %s \/0TI3'd %s +CHOOSE_NEXTM = AMXTR3M3 \/0TI3 n3xtm4p +EXTED_MAP = M0 m4p %s +TIME_CHOOSE = \/0TI3 f0 n3xtm4p M0TH4FU|<4! + +[bg] +CHO_FIN_EXT = Izbiraneto priklu4i. Nastoq6tata karta 6te e odaljena za o6te %.0f minuti +CHO_FIN_NEXT = Izbiraneto priklu4i. Sledva6tata karta 6te e %s +CHOSE_EXT = %s izbra odaljenie na nastoq6tata karta +X_CHOSE_X = %s izbra %s +CHOOSE_NEXTM = AMX Izberete sledva6tata karta +EXTED_MAP = Odalji kartata %s +TIME_CHOOSE = Vreme e da se izbere sledva6tata karta... + +[ro] +CHO_FIN_EXT = Votarea s-a incheiat. Harta actuala va fi prelungita %.0f minute +CHO_FIN_NEXT = Votarea s-a incheiat. Urmatoarea harta va fi %s +CHOSE_EXT = %s a votat pentru prelungirea hartii actuale +X_CHOSE_X = %s a votat pentru %s +CHOOSE_NEXTM = AMX Alege harta urmatoare +EXTED_MAP = Prelungirea hartii actuale %s +TIME_CHOOSE = E timpul sa alegeti harta urmatoare... + +[hu] +CHO_FIN_EXT = A valasztas veget ert. A mostani palya meg %.0f percig lesz. +CHO_FIN_NEXT = A valasztas veget ert. A kovetkezo palya a %s lesz. +CHOSE_EXT = %s meg maradni szeretne +X_CHOSE_X = %s a %s-ra szavazott +CHOOSE_NEXTM = Valaszd ki a kovetkezo palyat. +EXTED_MAP = Maradjunk a %s-n! +TIME_CHOOSE = Itt az ido hogy kivalaszd a kovetkezo palyat. + +[lt] +CHO_FIN_EXT = Pasirinkimai baigti. Sis zemelapis dar bus %.0f minutes +CHO_FIN_NEXT = Pasirinkimtas baigtas. Kitas zemelapis %s +CHOSE_EXT = %s Pasirinko zemelapio pratesima +X_CHOSE_X = %s pasirinko %s +CHOOSE_NEXTM = AMX Issirink sekanti zemelapi +EXTED_MAP = Pratestas zemelapis %s +TIME_CHOOSE = Laikas issirinkti kita zemelapi.. + +[sk] +CHO_FIN_EXT = Volba ukoncena. Tato mapa bude este dalsych %.0f minut +CHO_FIN_NEXT = Volba ukoncena. Dalsia mapa bude %s +CHOSE_EXT = %s zvolil predlzenie sucasnej mapy +X_CHOSE_X = %s zvolil %s +CHOOSE_NEXTM = Zvol si dalsiu mapu +EXTED_MAP = Predlzuje mapu %s +TIME_CHOOSE = Je cas pre volbu dalsej mapy... + +[mk] +CHO_FIN_EXT = Izborot e zavrsen. Segasnata mapa ke bide prodolzena za %.0f minuti +CHO_FIN_NEXT = Izborot e zavrsen. Slednata mapa ke bide %s +CHOSE_EXT = %s izbra prodolzuvanje na mapata +X_CHOSE_X = %s ja izbra mapata %s +CHOOSE_NEXTM = AMX izberete sledna mapa +EXTED_MAP = Prodolzi ja mapata %s +TIME_CHOOSE = Vreme e da se izbere sledna mapa... diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/mapsmenu.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/mapsmenu.txt new file mode 100644 index 0000000..c5637ed --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/mapsmenu.txt @@ -0,0 +1,479 @@ +[en] +RESULT_REF = Result refused +RESULT_ACC = Result accepted +VOTE_SUCCESS = Voting successful. Map will be changed to +VOTE_FAILED = Voting failed +THE_WINNER = The winner +WANT_CONT = Do you want to continue? +VOT_CANC = Voting has been canceled +X_VOTED_FOR = %s voted for option #%d +VOTEMAP_MENU = Votemap Menu +START_VOT = Start Voting +SEL_MAPS = Selected Maps +ALREADY_VOT = There is already one voting... +NO_MAPS_MENU = There are no maps in menu +VOT_NOW_ALLOW = Voting not allowed at this time +WHICH_MAP = Which map do you want? +CHANGE_MAP_TO = Change map to +CANC_VOTE = Cancel Vote +ADMIN_V_MAP_1 = ADMIN: vote map(s) +ADMIN_V_MAP_2 = ADMIN %s: vote map(s) +ADMIN_CHANGEL_1 = ADMIN: changelevel %s +ADMIN_CHANGEL_2 = ADMIN %s: changelevel %s +CHANGLE_MENU = Changelevel Menu + +[de] +RESULT_REF = Ergebnis abgelehnt +RESULT_ACC = Ergebnis angenommen +VOTE_SUCCESS = Abstimmung beendet. Map wird gewechselt zu +VOTE_FAILED = Abstimmung gescheitert +THE_WINNER = Der Gewinner +WANT_CONT = Willst du fortfahren? +VOT_CANC = Abstimmung abgebrochen +X_VOTED_FOR = %s stimmten fuer Option #%d +VOTEMAP_MENU = Menu > Mapwahl +START_VOT = Start Abstimmung +SEL_MAPS = Ausgewaehlte Maps +ALREADY_VOT = Es laeuft bereits eine Abstimmung... +NO_MAPS_MENU = Es sind keine Maps im Menu vorhanden +VOT_NOW_ALLOW = Abstimmung zur Zeit nicht moeglich +WHICH_MAP = Welche Map moechtest du? +CHANGE_MAP_TO = Wechsle zu Map +CANC_VOTE = Abstimmung abgebrochen +ADMIN_V_MAP_1 = ADMIN: waehlt Map(s) +ADMIN_V_MAP_2 = ADMIN %s: waehlt Map(s) +ADMIN_CHANGEL_1 = ADMIN: wechselt zur Map %s +ADMIN_CHANGEL_2 = ADMIN %s: wechselt zur Map %s +CHANGLE_MENU = Menu > Mapwechsel + +[sr] +RESULT_REF = Rezultat odbijen +RESULT_ACC = Rezultat prihvacen +VOTE_SUCCESS = Glasanje uspesno. Sledeca mapa ce biti +VOTE_FAILED = Glasanje neuspesno +THE_WINNER = Pobednik +WANT_CONT = Da li zelite da nastavite? +VOT_CANC = Glasanje je otkazano +X_VOTED_FOR = %s je glasao za #%d +VOTEMAP_MENU = Meni za glasanje mapa +START_VOT = Pokreni Glasanje +SEL_MAPS = Izabrane Mape +ALREADY_VOT = Vec je jedno glasanje je u toku... +NO_MAPS_MENU = Nema mapa u meniju +VOT_NOW_ALLOW = Glasanje trenutno nije dozvoljeno +WHICH_MAP = Koju mapu zelite? +CHANGE_MAP_TO = Promeni mapu u +CANC_VOTE = Otkazi glasanje +ADMIN_V_MAP_1 = ADMIN: glasanje za mapu(e) +ADMIN_V_MAP_2 = ADMIN %s: glasanje za mapu(e) +ADMIN_CHANGEL_1 = ADMIN: changelevel %s +ADMIN_CHANGEL_2 = ADMIN %s: changelevel %s +CHANGLE_MENU = Meni za menjanje mape + +[tr] +RESULT_REF = Sonuc red edilmistir +RESULT_ACC = Sonuc kabul edilmistir +VOTE_SUCCESS = Oylama sonucu kabul. Bu map'e degisiyor +VOTE_FAILED = Oylama hatali +THE_WINNER = Kazanan +WANT_CONT = Devam etmek istiyormusunuz? +VOT_CANC = Oylama durdurulmusdur +X_VOTED_FOR = %s oyladigi #%d +VOTEMAP_MENU = Map oylama menusu +START_VOT = Oylamayi baslat +SEL_MAPS = Secilen maplar +ALREADY_VOT = Zaten su an oylama suruyor... +NO_MAPS_MENU = Menude map yokdur +VOT_NOW_ALLOW = Su an oylama yapamiyorsunuz +WHICH_MAP = Hangi map'i secmek istiyorsunuz? +CHANGE_MAP_TO = Map'i buna degisdir +CANC_VOTE = Oylamayi durdur +ADMIN_V_MAP_1 = ADMIN: Map(lar) oylamasi +ADMIN_V_MAP_2 = ADMIN %s: Map(lar) oylamasi +ADMIN_CHANGEL_1 = ADMIN: %s buna degisdirdi +ADMIN_CHANGEL_2 = ADMIN %s: %s buna degisdirdi +CHANGLE_MENU = Bolum degisdirme menusu + +[fr] +RESULT_REF = Resultat refuse +RESULT_ACC = Resultat accepte +VOTE_SUCCESS = Vote reussi. La carte va etre changee pour +VOTE_FAILED = Vote rate +THE_WINNER = Le gagnant +WANT_CONT = Veux-tu continuer? +VOT_CANC = Le vote a ete annule +X_VOTED_FOR = %s a vote pour l'option #%d +VOTEMAP_MENU = Menu Vote Carte +START_VOT = Commencer le vote +SEL_MAPS = Cartes selectionnees +ALREADY_VOT = Il y a deja un vote en cours... +NO_MAPS_MENU = Il n'y a pas de cartes dans le menu +VOT_NOW_ALLOW = Voter n'est pas autorise maintenant... +WHICH_MAP = Choisis la/les carte(s)? +CHANGE_MAP_TO = Changer la carte pour +CANC_VOTE = Annuler Vote +ADMIN_V_MAP_1 = ADMIN: vote carte(s) +ADMIN_V_MAP_2 = ADMIN %s: vote carte(s) +ADMIN_CHANGEL_1 = ADMIN: change la carte pour %s +ADMIN_CHANGEL_2 = ADMIN %s: change la carte pour %s +CHANGLE_MENU = Menu Changement de Carte + +[sv] +RESULT_REF = Resultat nekas +RESULT_ACC = Resultat godtages +VOTE_SUCCESS = Valet lyckades. Kartan kommer att bli +VOTE_FAILED = Valet misslyckades +THE_WINNER = Vinnaren +WANT_CONT = Vill du forts'a'tta? +VOT_CANC = Valet har blivit avslutat +X_VOTED_FOR = %s valde alternativ #%d +VOTEMAP_MENU = Kartmeny +START_VOT = Inled val +SEL_MAPS = Valda kartor +ALREADY_VOT = Det sker redan ett val... +NO_MAPS_MENU = Det saknas kartor i menyn +VOT_NOW_ALLOW = Val inte beviljat tillsvidare +WHICH_MAP = Vilken karta vill du ha? +CHANGE_MAP_TO = Byt karta till +CANC_VOTE = Avbryt val +ADMIN_V_MAP_1 = ADMIN: val av karta(or) +ADMIN_V_MAP_2 = ADMIN %s: val av karta(or) +ADMIN_CHANGEL_1 = ADMIN: bytkarta %s +ADMIN_CHANGEL_2 = ADMIN %s: bytkarta %s +CHANGLE_MENU = Bytkarta meny + +[da] +RESULT_REF = Resultat afvist +RESULT_ACC = Resultat accepteret +VOTE_SUCCESS = Afstemning lykkedes. Bane bliver skiftet til +VOTE_FAILED = Afstemning mislykkedes +THE_WINNER = Vinderen +WANT_CONT = Vil du fortsaette? +VOT_CANC = Afstemning er blevet annulleret +X_VOTED_FOR = %s stemte paa mulighed #%d +VOTEMAP_MENU = Vaelg bane Menu +START_VOT = Start afstemning +SEL_MAPS = Valgte baner +ALREADY_VOT = Der er allerede en afstemning... +NO_MAPS_MENU = Der er ikke nogen baner i menuen +VOT_NOW_ALLOW = Afsteming er ikke tilladt paa nuvaerende tidspunkt +WHICH_MAP = Hvilken bane vil du have? +CHANGE_MAP_TO = Skift bane til +CANC_VOTE = Annuller afstemning +ADMIN_V_MAP_1 = ADMIN: Vaelg bane(r) +ADMIN_V_MAP_2 = ADMIN %s: Vaelg bane(r) +ADMIN_CHANGEL_1 = ADMIN: Skift bane %s +ADMIN_CHANGEL_2 = ADMIN %s: Skift bane %s +CHANGLE_MENU = Skift bane Menu + +[pl] +RESULT_REF = Rezultat odrzucony +RESULT_ACC = Rezultat zaakceptowany +VOTE_SUCCESS = Glosowanie udane. Mapa zmieni sie na +VOTE_FAILED = Glosowanie nieudane +THE_WINNER = Zwyciesca +WANT_CONT = Czy chcesz kontynuowac? +VOT_CANC = Glosowanie zostalo przerwane +X_VOTED_FOR = %s zaglosowal na #%d +VOTEMAP_MENU = Menu Glosowan +START_VOT = Rozpocznij glosowanie +SEL_MAPS = Wybrane mapy +ALREADY_VOT = Juz jest jedno glosowanie w trakcie... +NO_MAPS_MENU = Nie ma zadnych map w menu +VOT_NOW_ALLOW = Teraz nie mozna glosowac +WHICH_MAP = Ktora chcesz mape? +CHANGE_MAP_TO = Zmien mape na +CANC_VOTE = Anuluj glos +ADMIN_V_MAP_1 = ADMIN: vote map(s) +ADMIN_V_MAP_2 = ADMIN %s: vote map(s) +ADMIN_CHANGEL_1 = ADMIN: zmiana mapy na %s +ADMIN_CHANGEL_2 = ADMIN %s: zmiana mapy na %s +CHANGLE_MENU = Menu zmiany mapy + +[nl] +RESULT_REF = Resultaat geweigerd +RESULT_ACC = Resultaat geaccepteerd +VOTE_SUCCESS = Stemmen geslaagd. De map wordt veranderd naar +VOTE_FAILED = Stemmen mislukt +THE_WINNER = De winnaar +WANT_CONT = Wil je verder gaan? +VOT_CANC = Stemronde is geannuleerd +X_VOTED_FOR = %s heeft voor optie #%d gestemd +VOTEMAP_MENU = Map stemronde Menu +START_VOT = Start stemronde +SEL_MAPS = Geselecteerde Maps +ALREADY_VOT = Er is al een stemronde bezig... +NO_MAPS_MENU = Geen maps in menu +VOT_NOW_ALLOW = Stemmen nu niet toegestaan +WHICH_MAP = Welke map wil je? +CHANGE_MAP_TO = Verander map naar +CANC_VOTE = Annuleer stemronde +ADMIN_V_MAP_1 = ADMIN: stem op map(pen) +ADMIN_V_MAP_2 = ADMIN %s: stem op map(pen) +ADMIN_CHANGEL_1 = ADMIN: verander map %s +ADMIN_CHANGEL_2 = ADMIN %s: verander map %s +CHANGLE_MENU = Verander Map Menu + +[es] +RESULT_REF = Resultado rechazado +RESULT_ACC = Resultado aceptado +VOTE_SUCCESS = Votacion finalizada. Se va a cambiar el mapa a +VOTE_FAILED = Votacion sin exito +THE_WINNER = El ganador +WANT_CONT = Deseas continuar? +VOT_CANC = La votacion ha sido anulada +X_VOTED_FOR = %s ha votado por la opcion #%d +VOTEMAP_MENU = Menu de Votacion de Mapas +START_VOT = Comenzar la votacion +SEL_MAPS = Mapas Seleccionados +ALREADY_VOT = Ya existe una votacion en este instante... +NO_MAPS_MENU = No hay mapas en el menu +VOT_NOW_ALLOW = Votacion no permitida en este momento +WHICH_MAP = Que mapa eliges? +CHANGE_MAP_TO = Cambiar el mapa a +CANC_VOTE = Cancelar Votacion +ADMIN_V_MAP_1 = ADMIN: votar mapa(s) +ADMIN_V_MAP_2 = ADMIN %s: votar mapa(s) +ADMIN_CHANGEL_1 = ADMIN: cambiando el mapa a %s +ADMIN_CHANGEL_2 = ADMIN %s: cambiando el mapa a %s +CHANGLE_MENU = Menu de Cambio de Mapa + +[bp] +RESULT_REF = Resultado negado +RESULT_ACC = Resultado aceito +VOTE_SUCCESS = Votacao com sucesso. O mapa sera mudado para +VOTE_FAILED = Votacao falhou +THE_WINNER = O vencedor +WANT_CONT = Voce quer continuar? +VOT_CANC = Votacao foi cancelada +X_VOTED_FOR = %s voto para opcao #%d +VOTEMAP_MENU = Menu de votacao de mapa +START_VOT = Votacao iniciada +SEL_MAPS = Selecione os Mapas +ALREADY_VOT = Ja tem uma votacao... +NO_MAPS_MENU = Nao tem nenhum mapa no menu +VOT_NOW_ALLOW = Votacao nao permitida neste momento... +WHICH_MAP = Qual mapa voce quer? +CHANGE_MAP_TO = Mudar mapa para +CANC_VOTE = Cancelar Votacao +ADMIN_V_MAP_1 = ADMIN: votar em mapa(s) +ADMIN_V_MAP_2 = ADMIN %s: votar em mapa(s) +ADMIN_CHANGEL_1 = ADMIN: mudou mapa para %s +ADMIN_CHANGEL_2 = ADMIN %s: mudou mapa para %s +CHANGLE_MENU = Menu Mudanca de Mapas + +[cz] +RESULT_REF = Vysledek odmitnut +RESULT_ACC = Vysledek prijmut +VOTE_SUCCESS = Hlasovani uspesne. Mapa se bude menit na +VOTE_FAILED = Hlasovani selhalo +THE_WINNER = Vitez +WANT_CONT = Chces pokracovat? +VOT_CANC = Hlasovani bylo zruseno +X_VOTED_FOR = %s hlasoval pro volbu #%d +VOTEMAP_MENU = Menu volby mapy +START_VOT = Zacatek hlasovani +SEL_MAPS = Zvolene mapy +ALREADY_VOT = Uz zde jedno hlasovani bylo... +NO_MAPS_MENU = V menu nejsou zadne mapy +VOT_NOW_ALLOW = Hlasovani zrovna neni povoleno +WHICH_MAP = Jakou mapu chces? +CHANGE_MAP_TO = Zmena mapy na +CANC_VOTE = Zrusit hlasovani +ADMIN_V_MAP_1 = ADMIN: volil mapu +ADMIN_V_MAP_2 = ADMIN %s: volili mapu +ADMIN_CHANGEL_1 = ADMIN: meni level na %s +ADMIN_CHANGEL_2 = ADMIN %s: meni level na %s +CHANGLE_MENU = Menu zmeny mapy + +[fi] +RESULT_REF = Tulos hylatty +RESULT_ACC = Tulos hyvaksytty +VOTE_SUCCESS = Vote onnistui. Mappi vaihdetaan +VOTE_FAILED = Vote epaonnistui +THE_WINNER = Voittaja +WANT_CONT = Haluatko jatkaa? +VOT_CANC = Vote peruutettu +X_VOTED_FOR = %s aanesti vaihtoehtoa #%d +VOTEMAP_MENU = Votemapvalikko +START_VOT = Aloita voteeminen +SEL_MAPS = Valitut mapit +ALREADY_VOT = Yksi voteeminen on jo kaynnissa +NO_MAPS_MENU = Valikossa ei ole mappeja +VOT_NOW_ALLOW = Nyt ei saa aanestaa +WHICH_MAP = Minka mapin haluat? +CHANGE_MAP_TO = Vaihda mappi +CANC_VOTE = Peruuta vote +ADMIN_V_MAP_1 = ADMIN: vote mapista/mapeista +ADMIN_V_MAP_2 = ADMIN %s: vote mapista/mapeista +ADMIN_CHANGEL_1 = ADMIN: vaihtoi mapin %s +ADMIN_CHANGEL_2 = ADMIN %s: vaihtoi mapin %s +CHANGLE_MENU = Mapinvaihtovalikko + +[ls] +RESULT_REF = N0 +RESULT_ACC = 0|< +VOTE_SUCCESS = Yush! n3w m@p! +VOTE_FAILED = N03Z! +THE_WINNER = W!n4r! +WANT_CONT = j00 sur3? +VOT_CANC = F4C3! +X_VOTED_FOR = %s = #%d +VOTEMAP_MENU = \/0t3 M3nu +START_VOT = g0! f0r gr34t h0n0r +SEL_MAPS = m@pz +ALREADY_VOT = t00 $|0w +NO_MAPS_MENU = n0 m@pz f0 j00 +VOT_NOW_ALLOW = n0 \/0t!n' |3!tch +WHICH_MAP = w@ j00 w@nt? +CHANGE_MAP_TO = m@p -> +CANC_VOTE = $t0p! +ADMIN_V_MAP_1 = l33t s3rv3r 0P: \/0t3 m@p(z) +ADMIN_V_MAP_2 = l33t s3rv3r 0P %s: \/0t3 m@p(z) +ADMIN_CHANGEL_1 = l33t s3rv3r 0P: Ch4ng3l3v3l %s +ADMIN_CHANGEL_2 = l33t s3rv3r 0P %s: Ch4ng3l3v3l %s +CHANGLE_MENU = Ch4ng3l3v3l M3nu + +[bg] +RESULT_REF = Resultata ne e priet +RESULT_ACC = Resultata e priet +VOTE_SUCCESS = Glasuvaneto e spolo4livo. Karta 6te e smenena na +VOTE_FAILED = Glasuvaneto ne e spolo4livo +THE_WINNER = Pobeditelq +WANT_CONT = Jelaete li da prodaljite? +VOT_CANC = Glasuvaneto be6e sprqno +X_VOTED_FOR = %s glasuva za opcia #%d +VOTEMAP_MENU = Karto Glasuva6to Menu +START_VOT = Sapo4ni glasuvaneto +SEL_MAPS = Izbrani karti +ALREADY_VOT = Ve4e ima edno glasuvane... +NO_MAPS_MENU = Nqma karti v menuto +VOT_NOW_ALLOW = Glasuvaneto ne e pozvoleno po tova vreme +WHICH_MAP = Koq karta jelaete? +CHANGE_MAP_TO = Smeni kartata na +CANC_VOTE = Glasuvaneto be6e sprqno +ADMIN_V_MAP_1 = ADMINISTRATOR: Glasuvane za Karta(i) +ADMIN_V_MAP_2 = ADMINISTRATOR %s: Glasuvane za Karta(i) +ADMIN_CHANGEL_1 = ADMINISTRATOR: smeni karta na %s +ADMIN_CHANGEL_2 = ADMINISTRATOR %s: smeni karta na %s +CHANGLE_MENU = Smenqne na karta Menu + +[ro] +RESULT_REF = Rezultat refuzat +RESULT_ACC = Rezultat acceptat +VOTE_SUCCESS = Votarea a avut loc cu succes. Harta va fi schimbata pe +VOTE_FAILED = Votare esuata +THE_WINNER = Castigatoare +WANT_CONT = Accepti schimbarea hartii? +VOT_CANC = Votarea a fost anulata +X_VOTED_FOR = %s a votat pentru #%d +VOTEMAP_MENU = Menu Votare Harta +START_VOT = Incepe Votarea +SEL_MAPS = Harti Alese +ALREADY_VOT = Se desfasoara o votare deja... +NO_MAPS_MENU = Nu exista harti in menu +VOT_NOW_ALLOW = Nu sunt permise votarile acum +WHICH_MAP = Ce harta doresti? +CHANGE_MAP_TO = Schimbare harta pe +CANC_VOTE = Anuleaza Vot +ADMIN_V_MAP_1 = ADMIN: votare harta +ADMIN_V_MAP_2 = ADMIN %s: votare harta +ADMIN_CHANGEL_1 = ADMIN: schimbare harta pe %s +ADMIN_CHANGEL_2 = ADMIN %s: schimbare harta pe %s +CHANGLE_MENU = Menu Schimbare Harta + +[hu] +RESULT_REF = Ergebnis abgelehnt +RESULT_ACC = Ergebnis angenommen +VOTE_SUCCESS = Abstimmung beendet. Map wird gewechselt zu +VOTE_FAILED = Abstimmung gescheitert +THE_WINNER = Der Gewinner +WANT_CONT = Willst du fortfahren? +VOT_CANC = Abstimmung abgebrochen +X_VOTED_FOR = %s stimmten fuer Option #%d +VOTEMAP_MENU = Mapwahl Menu +START_VOT = Start Abstimmung +SEL_MAPS = Ausgewaehlte Maps +ALREADY_VOT = Es laeuft bereits eine Abstimmung... +NO_MAPS_MENU = Es sind keine Maps im Menu vorhanden +VOT_NOW_ALLOW = Abstimmung zur Zeit nicht moeglich +WHICH_MAP = Welche Map moechtest du? +CHANGE_MAP_TO = Wechsle zu Map +CANC_VOTE = Abstimmung abgebrochen +ADMIN_V_MAP_1 = ADMIN: waehlt Map(s) +ADMIN_V_MAP_2 = ADMIN %s: waehlt Map(s) +ADMIN_CHANGEL_1 = ADMIN: wechselt zur Map %s +ADMIN_CHANGEL_2 = ADMIN %s: wechselt zur Map %s +CHANGLE_MENU = Mapwechsel Menu + +[lt] +RESULT_REF = Rezultatas atsauktas +RESULT_ACC = Rezultatas priimtas +VOTE_SUCCESS = Balsavimas pavyko. Kitas zemelapis bus +VOTE_FAILED = Balsavimas nepavyko +THE_WINNER = Laimetojas +WANT_CONT = Ar nori testi? +VOT_CANC = Balsavimas buvo atsauktas +X_VOTED_FOR = %s balsavo uz #%d +VOTEMAP_MENU = Zemelapiu balsavimo meniu +START_VOT = Pradeti balsavima +SEL_MAPS = Pazymeti zemelapiai +ALREADY_VOT = Jau vyksta balsavimas.. +NO_MAPS_MENU = Cia nera zemelapiu +VOT_NOW_ALLOW = Balsavimas negalimas siuo metu +WHICH_MAP = Kurio zemelapio tu nori? +CHANGE_MAP_TO = Pakeisti zemelapi i +CANC_VOTE = Atsaukti balsavima +ADMIN_V_MAP_1 = ADMINAS: pradejo zemelapiu balsavima +ADMIN_V_MAP_2 = ADMINAS %s: pradejo zemelapiu balsavima +ADMIN_CHANGEL_1 = ADMINAS: pakeite zemelapi i %s +ADMIN_CHANGEL_2 = ADMINAS %s: pakeite zemelapi i %s +CHANGLE_MENU = Zemelapiu sarasas + +[sk] +RESULT_REF = Vysledok odmietnuty +RESULT_ACC = Vysledok prijaty +VOTE_SUCCESS = Hlasovanie uspesne. Mapa se bude menit na +VOTE_FAILED = Hlasovanie zlyhalo +THE_WINNER = Vitaz +WANT_CONT = Chces pokracovat? +VOT_CANC = Hlasovanie bolo zrusene +X_VOTED_FOR = %s hlasoval pre volbu #%d +VOTEMAP_MENU = MENU: volba mapy +START_VOT = Zacat hlasovanie +SEL_MAPS = Zvolene mapy +ALREADY_VOT = Uz tu jedno hlasovanie bolo... +NO_MAPS_MENU = V menu niesu ziadne mapy +VOT_NOW_ALLOW = Hlasovanie teraz neni povolene +WHICH_MAP = Aku mapu chces? +CHANGE_MAP_TO = Zmena mapy na +CANC_VOTE = Zrusit hlasovanie +ADMIN_V_MAP_1 = ADMIN: zvolil mapu +ADMIN_V_MAP_2 = ADMIN %s: zvolili mapu +ADMIN_CHANGEL_1 = ADMIN: meni mapu na %s +ADMIN_CHANGEL_2 = ADMIN %s: meni mapu na %s +CHANGLE_MENU = Menu zmeny mapy + +[mk] +RESULT_REF = Rezultatot e odbien +RESULT_ACC = Rezultatot e prifaten +VOTE_SUCCESS = Glasanjeto e uspesno. Slednata mapa ke bide +VOTE_FAILED = Glasanjeto e neuspesno +THE_WINNER = Pobednikot e +WANT_CONT = Dali sakate da prodolzite? +VOT_CANC = Glasanjeto e otkazano +X_VOTED_FOR = %s glasase za #%d +VOTEMAP_MENU = Meni za glasanje mapa +START_VOT = Zapocni go glasanjeto +SEL_MAPS = Izbrani mapi za glasanje +ALREADY_VOT = Edno glasanje e veke vo tek... +NO_MAPS_MENU = Nema mapi vo menito +VOT_NOW_ALLOW = Glasanje momentalno ne e dozvoleno +WHICH_MAP = Koja mapa ja sakate? +CHANGE_MAP_TO = Dali da se smeni mapata vo +CANC_VOTE = Otkazi go glasanjeto +ADMIN_V_MAP_1 = ADMIN: Glasanje za mapa... +ADMIN_V_MAP_2 = ADMIN %s: Glasanje za mapa... +ADMIN_CHANGEL_1 = ADMIN: ja smeni mapata vo %s +ADMIN_CHANGEL_2 = ADMIN %s: ja smeni mapata vo %s +CHANGLE_MENU = Meni za promena na mapa diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/menufront.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/menufront.txt new file mode 100644 index 0000000..c31fb28 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/menufront.txt @@ -0,0 +1,359 @@ +[en] +KICK_PLAYER = Kick Player +BAN_PLAYER = Ban Player +SLAP_SLAY = Slap/Slay Player +TEAM_PLAYER = Team Player ^n +CHANGEL = Changelevel +VOTE_MAPS = Vote for maps ^n +SPECH_STUFF = Speech Stuff +CLIENT_COM = Client Commands +SERVER_COM = Server Commands +CVARS_SET = Cvars Settings +CONFIG = Configuration +LANG_SET = Language Settings +STATS_SET = Stats Settings ^n +PAUSE_PLUG = Pause Plugins +RES_WEAP = Restrict Weapons +TELE_PLAYER = Teleport Player + +[de] +KICK_PLAYER = Kick Spieler +BAN_PLAYER = Ban Spieler +SLAP_SLAY = Schlage/Toete Spieler +TEAM_PLAYER = Team Spieler ^n +CHANGEL = Mapwechsel +VOTE_MAPS = Map Abstimmung ^n +SPECH_STUFF = Soundausgabe +CLIENT_COM = Client-Befehle +SERVER_COM = Server-Befehle +CVARS_SET = Server-Einstellungen +CONFIG = Konfiguration +LANG_SET = Spracheinstellung +STATS_SET = Statistik-Einstellungen ^n +PAUSE_PLUG = Plugins pausieren +RES_WEAP = Waffen verbieten +TELE_PLAYER = Teleport Spieler + +[sr] +KICK_PLAYER = Kick Igraca +BAN_PLAYER = Ban Igraca +SLAP_SLAY = Slap/Slay Igraca +TEAM_PLAYER = Promeni Tim Igraca ^n +CHANGEL = Promeni Mapu +VOTE_MAPS = Glasaj za mape ^n +SPECH_STUFF = Govorne Komande +CLIENT_COM = Komande Klijenta +SERVER_COM = Komande Servera +CVARS_SET = Komande Podesavanja +CONFIG = Konfiguracija +LANG_SET = Jezik +STATS_SET = Podesavanje Statistike ^n +PAUSE_PLUG = Pauza Pluginova +RES_WEAP = Ogranici Oruzja +TELE_PLAYER = Teleport Igraca + +[tr] +KICK_PLAYER = Oyuncuyu at +BAN_PLAYER = Oyuncuyu banla +SLAP_SLAY = Oyuncuyu tokatla/oldur +TEAM_PLAYER = Takim oyuncusu ^n +CHANGEL = Bolum degisdir +VOTE_MAPS = Mapler icin oylama ^n +SPECH_STUFF = Konusma cihazlari +CLIENT_COM = Oyuncu emirleri +SERVER_COM = Server emirleri +CVARS_SET = Cvars ayarlari +CONFIG = Config ayarlari +LANG_SET = Dil ayarlari +STATS_SET = Statistik ayarlari ^n +PAUSE_PLUG = Pluginleri durdurun +RES_WEAP = Yasakli silahlar +TELE_PLAYER = Oyuncuyu teleport yapi + +[fr] +KICK_PLAYER = Kicker Joueur +BAN_PLAYER = Bannir Joueur +SLAP_SLAY = Frapper/Foudroyer Joueur +TEAM_PLAYER = Equipe du Joueur ^n +CHANGEL = Changer la Carte +VOTE_MAPS = Vote Carte ^n +SPECH_STUFF = Commandes Voix/Paroles +CLIENT_COM = Commandes Clients +SERVER_COM = Commandes Serveur +CVARS_SET = Configuration Cvars +CONFIG = Configuration +LANG_SET = Configuration Langue +STATS_SET = Configuration Stats ^n +PAUSE_PLUG = Pause Plugins +RES_WEAP = Restriction des Armes +TELE_PLAYER = Teleporter Joueur + +[sv] +KICK_PLAYER = Sparka spelare +BAN_PLAYER = Bannlys spelare +SLAP_SLAY = Smiska/Slakta spelare +TEAM_PLAYER = Lagspelare^n +CHANGEL = Kartbyte +VOTE_MAPS = Val av karta^n +SPECH_STUFF = Tal +CLIENT_COM = Klientkommandon +SERVER_COM = Serverkommandon +CVARS_SET = Cvarsinst'a'llningar +CONFIG = Inst'a'llningar +LANG_SET = Sprak inst'a'llningar +STATS_SET = Statistikinst'a'llningar^n +PAUSE_PLUG = Pausa Plugins +RES_WEAP = Definiera vapen +TELE_PLAYER = Teleportera spelare + +[da] +KICK_PLAYER = Kick Spiller +BAN_PLAYER = Ban Spiller +SLAP_SLAY = Klask/Draeb Spiller +TEAM_PLAYER = Hold Spiller ^n +CHANGEL = Skift Bane +VOTE_MAPS = Stem om bane ^n +SPECH_STUFF = Tale Menu +CLIENT_COM = Klient Kommandoer +SERVER_COM = Server Kommandoer +CVARS_SET = Cvars Instillinger +CONFIG = Konfiguration +LANG_SET = Sprog Indstillinger +STATS_SET = statistik indstillinger ^n +PAUSE_PLUG = Pause Plugins +RES_WEAP = Forbyd Vaaben +TELE_PLAYER = Teleport Spiller + +[pl] +KICK_PLAYER = Wywal gracza +BAN_PLAYER = Zbanuj gracza +SLAP_SLAY = Uderz/zgladz gracza +TEAM_PLAYER = Gracz druzyny ^n +CHANGEL = Zmien mape +VOTE_MAPS = Glosuj na mapy ^n +SPECH_STUFF = Rzeczy zw. z rozmowa +CLIENT_COM = Komendy Klienta +SERVER_COM = Komendy Serwera +CVARS_SET = Ustawienia Cvar'ow +CONFIG = Konfiguracja +LANG_SET = Ustawienia jezyka +STATS_SET = Ustawienia statystyk ^n +PAUSE_PLUG = Zatrzymaj pluginy +RES_WEAP = Ogranicz bronie +TELE_PLAYER = Teleportuj gracza + +[nl] +KICK_PLAYER = Speler Kicken +BAN_PLAYER = Speler Verbannen +SLAP_SLAY = Speler Slaan/Slachten +TEAM_PLAYER = Speler van ploeg veranderen ^n +CHANGEL = Map Veranderen +VOTE_MAPS = Stem op maps ^n +SPECH_STUFF = Geluiden +CLIENT_COM = Gebruikerscommando's +SERVER_COM = Servercommando's +CVARS_SET = Cvar-instellingen +CONFIG = Configuratie +LANG_SET = Taalinstellingen +STATS_SET = Statistiekinstellingen ^n +PAUSE_PLUG = Plugins pauzeren +RES_WEAP = Wapens Verbieden +TELE_PLAYER = Speler Teleporteren + +[es] +KICK_PLAYER = Expulsar Jugador +BAN_PLAYER = Banear Jugador +SLAP_SLAY = Pegar/Matar Jugador +TEAM_PLAYER = Equipo del Jugador ^n +CHANGEL = Cambiar de mapa +VOTE_MAPS = Votar mapas ^n +SPECH_STUFF = Comandos de Voz +CLIENT_COM = Comandos de Cliente +SERVER_COM = Comandos del Servidor +CVARS_SET = Configuracion de Cvars +CONFIG = Configuracion +LANG_SET = Configuracion de Idioma +STATS_SET = Configuracion de las Estadisticas ^n +PAUSE_PLUG = Pausar Plugins +RES_WEAP = Restringir Armas +TELE_PLAYER = Teletransportar Jugador + +[bp] +KICK_PLAYER = Kickar Jogadores +BAN_PLAYER = Banir Jogadores +SLAP_SLAY = Tapa/Assassinar Jogadores +TEAM_PLAYER = Time do Jogador ^n +CHANGEL = Mudar Mapa +VOTE_MAPS = Votacao de mapas ^n +SPECH_STUFF = Menu de Vozes +CLIENT_COM = Comandos de Cliente +SERVER_COM = Comandos de Servidor +CVARS_SET = Ajustes dos Cvars +CONFIG = Configuracao +LANG_SET = Ajustes da Linguagem +STATS_SET = Ajustes do Stats ^n +PAUSE_PLUG = Pausar Plugins +RES_WEAP = Limitar Armas +TELE_PLAYER = Teletransportar Jogador + +[cz] +KICK_PLAYER = Vykopnout hrace +BAN_PLAYER = Banovat hrace +SLAP_SLAY = Prastit/Zabit Hrace +TEAM_PLAYER = Tymovy hrac ^n +CHANGEL = Zmena levelu +VOTE_MAPS = Hlasovani pro zmenu mapy ^n +SPECH_STUFF = Veci okolo reci +CLIENT_COM = Prikazy klienta +SERVER_COM = Prikazy serveru +CVARS_SET = Nastaveni Cvar +CONFIG = Konfigurace +LANG_SET = Nastaveni jazyka +STATS_SET = Nastaveni statistik ^n +PAUSE_PLUG = Pauznout pluginy +RES_WEAP = Omezit zbrane +TELE_PLAYER = Teleportovat hrace + +[fi] +KICK_PLAYER = Potki pelaaja +BAN_PLAYER = Bannaa pelaaja +SLAP_SLAY = Slappaa/slayaa pelaaja +TEAM_PLAYER = Vaihda pejaajan tiimia ^n +CHANGEL = Vaihda mappi +VOTE_MAPS = Votea mappeja^n +SPECH_STUFF = Puhemoussea +CLIENT_COM = Clientkomentoja +SERVER_COM = Palvelinkomentoja +CVARS_SET = Cvarsasetuksia +CONFIG = Saatoa +LANG_SET = Kieliasetuksia +STATS_SET = Tilastoasetuksia ^n +PAUSE_PLUG = Pysayta plugineja +RES_WEAP = Kiella aseita +TELE_PLAYER = Teleporttaa pelaaja + +[ls] +KICK_PLAYER = | [name] +PAUSE_COMMANDS = Commands +COM_PAUSE_OFF = ^toff - pauses all plugins not in the list +COM_PAUSE_ON = ^ton - unpauses all plugins +COM_PAUSE_STOP = ^tstop - stops a plugin +COM_PAUSE_PAUSE = ^tpause - pauses a plugin +COM_PAUSE_ENABLE = ^tenable - enables a plugin +COM_PAUSE_SAVE = ^tsave - saves a list of stopped plugins +COM_PAUSE_CLEAR = ^tclear - clears a list of stopped plugins +COM_PAUSE_LIST = ^tlist [id] - lists plugins +COM_PAUSE_ADD = ^tadd - marks a plugin as unpauseable +SAVE_PAUSED = Save paused +COM_PAUSE_SAVE_PAUSED = ^tsave - saves a list of paused plugins +COM_PAUSE_CLEAR_PAUSED = ^tclear - clears a list of paused plugins +CANT_UNPAUSE_PLUGIN = Plugin "%s" is stopped and cannot be paused or unpaused. +CLEAR_PAUSED = Clear file with paused + +[de] +PAUSE_COULDNT_FIND = Konnte kein Plugin finden, dass mit "%s" uebereinstimmt +PAUSE_PLUGIN_MATCH = Plugin stimmt mit "%s" ueberein +PAUSE_CONF_CLEARED = Konfigurationsdatei geloescht. Bei Bedarf Map neu starten. +PAUSE_ALR_CLEARED = Konfiguration war bereits geloescht! +PAUSE_CONF_SAVED = Konfiguration erfolgreich gespeichert. +PAUSE_SAVE_FAILED = Fehler beim Speichern der Konfiguration!!! +LOCKED = GESPERRT +PAUSE_UNPAUSE = Pausiere/Aktiviere Plugins +CLEAR_STOPPED = Loeschen der Datei gestoppt +SAVE_STOPPED = Speichern abgebrochen +PAUSED_PLUGIN = Pausiere %d Plugin +PAUSED_PLUGINS = Pausiere %d Plugins +UNPAUSED_PLUGIN = %d Plugin aktiviert +UNPAUSED_PLUGINS = %d Plugins aktiviert +CANT_MARK_MORE = Kann keine weiteren Plugins aktivieren! +PAUSE_LOADED = Pausierte Plugins: Plugins geladen +STOPPED = gestoppt +VERSION = Version +FILE = Datei +PAUSE_ENTRIES = Eintraege %d - %d von %d (%d laufen) +PAUSE_USE_MORE = Benutze 'amx_pausecfg list %d' fuer mehr +PAUSE_USE_BEGIN = Benutze 'amx_pausecfg list 1' um zum Anfang zu gelangen +PAUSE_USAGE = Benutze: amx_pausecfg <Befehl> [Name] +PAUSE_COMMANDS = Befehle +COM_PAUSE_OFF = ^toff - pausiert alle Plugins, die nicht aufgelistet sind +COM_PAUSE_ON = ^ton - aktiviere alle Plugins +COM_PAUSE_STOP = ^tstop <file> - stoppt ein Plugin +COM_PAUSE_PAUSE = ^tpause <file> - pausiert ein Plugin +COM_PAUSE_ENABLE = ^tenable <file> - aktiviert ein Plugin +COM_PAUSE_SAVE = ^tsave - speichert die Liste der gestoppten Plugins +COM_PAUSE_CLEAR = ^tclear - loescht die Liste der gestoppten Plugins +COM_PAUSE_LIST = ^tlist [id] - Plugins anzeigen +COM_PAUSE_ADD = ^tadd <title> - markiert ein Plugin als nicht pausierbar +SAVE_PAUSED = Speichere pausierte Plugins +COM_PAUSE_SAVE_PAUSED = ^tsave - speichert die Liste der pausierten Plugins +COM_PAUSE_CLEAR_PAUSED = ^tclear - leert die Liste der pausierten Plugins +CANT_UNPAUSE_PLUGIN = Das Plugin "%s" ist gestoppt und kann nicht pausiert oder unpausiert werden. +CLEAR_PAUSED = Loeschen der Datei pausierten + +[sr] +PAUSE_COULDNT_FIND = Nije moguce naci plugin koji se poklapa sa "%s" +PAUSE_PLUGIN_MATCH = Poklapajuci Plugin "%s" +PAUSE_CONF_CLEARED = Konfiguracioni fajl ispraznjen. Ucitajte mapu ponovo ukoliko je potrebno +PAUSE_ALR_CLEARED = Konfiguracioni fajl je vec ispraznjen! +PAUSE_CONF_SAVED = Konfiguracija je sacuvana uspesno +PAUSE_SAVE_FAILED = Konfiguracija je sacuvana neuspesno!!! +LOCKED = ZAKLJUCAN +PAUSE_UNPAUSE = Pauziraj/Pokreni Plugin +CLEAR_STOPPED = Ocisti fajl sa stopiranim +SAVE_STOPPED = Sacuvaj stopirane +PAUSED_PLUGIN = Pauziran %d plugin +PAUSED_PLUGINS = Pauzirani %d pluginovi +UNPAUSED_PLUGIN = Pokrenut %d plugin +UNPAUSED_PLUGINS = Pokrenuti %d pluginovi +CANT_MARK_MORE = Nije moguce izabrati vise pluginova kao zakljucani! +PAUSE_LOADED = Pauzirani Pluginovi: Ucitani pluginovi +STOPPED = zaustavljen +VERSION = verzija +FILE = fajl +PAUSE_ENTRIES = Vrednosti %d - %d od %d (%d pokrenutih) +PAUSE_USE_MORE = Koristi 'amx_pausecfg list %d' za jos +PAUSE_USE_BEGIN = Koristi 'amx_pausecfg list 1' za pocetak +PAUSE_USAGE = Koriscenje: amx_pausecfg <komanda> [ime] +PAUSE_COMMANDS = Komande +COM_PAUSE_OFF = ^toff - pauzira sve pluginove koji nisu u listi +COM_PAUSE_ON = ^ton - pokrece sve pluginove +COM_PAUSE_STOP = ^tstop <fajl> - zaustavlja plugin +COM_PAUSE_PAUSE = ^tpause <fajl> - pauzira plugin +COM_PAUSE_ENABLE = ^tenable <fajl> - pokrece plugin +COM_PAUSE_SAVE = ^tsave - snima listu zaustavljenih pluginova +COM_PAUSE_CLEAR = ^tclear - prazni listu zaustavljenih pluginova +COM_PAUSE_LIST = ^tlist [id] - lista pluginove +COM_PAUSE_ADD = ^tadd <title> - zakljucava plugin + +[tr] +PAUSE_COULDNT_FIND = "%s" Buna benzer bir plugin bulunamadi +PAUSE_PLUGIN_MATCH = "%s" Benzer plugin +PAUSE_CONF_CLEARED = Config dosyasi temizlendi. Gerekliyse mapi tekrar yukleyin +PAUSE_ALR_CLEARED = Config dosyasi zaten temizlenmisdi! +PAUSE_CONF_SAVED = Config dosyasina basari ile saklandi +PAUSE_SAVE_FAILED = Config dosyasina eklenemedi!!! +LOCKED = KILITLI +PAUSE_UNPAUSE = Pluginleri Durdur/Baslat +CLEAR_STOPPED = Durdur emiri ile dosyayi temizleyin +SAVE_STOPPED = Durdur emirini saklayin +PAUSED_PLUGIN = Durdurulmus Plugin %d +PAUSED_PLUGINS = Durdurulmus Pluginler %d +UNPAUSED_PLUGIN = Durdurulmamis Plugin %d +UNPAUSED_PLUGINS = Durdurulmamis Pluginler %d +CANT_MARK_MORE = Sinir asildi gecici olarak Plugin durdurulamiyor! +PAUSE_LOADED = Pluginleri durdur: Calisan pluginler +STOPPED = Durduruldu +VERSION = versiyon +FILE = dosya +PAUSE_ENTRIES = Girisler %d - %d ve %d (%d calisiyor) +PAUSE_USE_MORE = 'amx_pausecfg list %d' i kullanin daha gormek icin +PAUSE_USE_BEGIN = 'amx_pausecfg list 1' i kullanin baslatmak icin +PAUSE_USAGE = kullanim: amx_pausecfg <emir> [isim] +PAUSE_COMMANDS = Emirler +COM_PAUSE_OFF = ^toff - listede olmayan butun pluginler gecici olarak durdurur +COM_PAUSE_ON = ^ton - Durdurulmus pluginleri tekrar baslatir +COM_PAUSE_STOP = ^tstop <dosya> -bir plugin durdurur +COM_PAUSE_PAUSE = ^tpause <dosya> - bir plugin durdurur gecici olarak +COM_PAUSE_ENABLE = ^tenable <dosya> - bir plugin baslatir +COM_PAUSE_SAVE = ^tsave - Durdulmus pluginler uzerine bir liste saklar +COM_PAUSE_CLEAR = ^tclear - Durdurulmus pluginlerin listesini siler +COM_PAUSE_LIST = ^tlist [id] - Pluginleri listele +COM_PAUSE_ADD = ^tadd <isim> - Durduralamiyan bir plugin isaretler + +[fr] +PAUSE_COULDNT_FIND = Impossible de trouver un plugin correspondant a "%s" +PAUSE_PLUGIN_MATCH = Plugin correspondant "%s" +PAUSE_CONF_CLEARED = Fichier de configuration vide. Relancez la map si besoin +PAUSE_ALR_CLEARED = Le fichier de configuration a deja ete vide! +PAUSE_CONF_SAVED = Configuration sauvegardee +PAUSE_SAVE_FAILED = Sauvegarde de la configuration echouee!!! +LOCKED = BLOQUE +PAUSE_UNPAUSE = Mettre/Enlever la pause des Plugins +CLEAR_STOPPED = Efface la liste des plugins arretes +SAVE_STOPPED = Sauvegarde des plugins arretes +PAUSED_PLUGIN = Mettre en pause %d plugin +PAUSED_PLUGINS = Mettre en pause %d plugins +UNPAUSED_PLUGIN = Enlever la pause de %d plugin +UNPAUSED_PLUGINS = Enlever la pause de %d plugins +CANT_MARK_MORE = Impossible d'ajouter plus de plugins qui ne peuvent etre mis en pause! +PAUSE_LOADED = Pause Plugins: Chargement des plugins +STOPPED = stoppe +VERSION = version +FILE = fichier +PAUSE_ENTRIES = Entrees %d - %d sur %d (%d en fonctionnement) +PAUSE_USE_MORE = Utilise 'amx_pausecfg list %d' pour la suite +PAUSE_USE_BEGIN = Utilise 'amx_pausecfg list 1' pour le debut +PAUSE_USAGE = Utilisation: amx_pausecfg <commande> [nom] +PAUSE_COMMANDS = Commandes +COM_PAUSE_OFF = ^toff - met en pause tous les plugins qui ne sont pas dans la liste +COM_PAUSE_ON = ^ton - enleve la pause de tous les plugins +COM_PAUSE_STOP = ^tstop <file> - arrete un plugin +COM_PAUSE_PAUSE = ^tpause <file> - met en pause un plugin +COM_PAUSE_ENABLE = ^tenable <file> - active un plugin +COM_PAUSE_SAVE = ^tsave - sauver la liste des plugins arretes +COM_PAUSE_CLEAR = ^tclear - effacer la liste des plugins arretes +COM_PAUSE_LIST = ^tlist [id] - listes des plugins +COM_PAUSE_ADD = ^tadd <title> - marquer un plugin comme impossible a mettre en paus +SAVE_PAUSED = Sauvegarder les plugins en pause +COM_PAUSE_SAVE_PAUSED = ^tsave - sauvegarde une liste de plugins en pause +COM_PAUSE_CLEAR_PAUSED = ^tclear - efface une liste de plugins en pause +CANT_UNPAUSE_PLUGIN = Le plugin "%s" est arrete et ne peut etre mis en pause ou re-active. +CLEAR_PAUSED = Efface la liste de plugins en pause + +[sv] +PAUSE_COULDNT_FIND = Kunde inte hitta plugin som matchar "%s" +PAUSE_PLUGIN_MATCH = Plugin som matchar "%s" +PAUSE_CONF_CLEARED = Konfigurationsfil rensad. Ladda kartan igen vid behov +PAUSE_ALR_CLEARED = Konfigurationsfil redan rensad! +PAUSE_CONF_SAVED = Konfiguration sparad +PAUSE_SAVE_FAILED = Konfigurationsfilen kunde inte sparas!! +LOCKED = BUNDEN +PAUSE_UNPAUSE = Pausa/Starta Plugins +CLEAR_STOPPED = Rensa fil med stoppade +SAVE_STOPPED = Spara stoppade +PAUSED_PLUGIN = Pausade %d plugin +PAUSED_PLUGINS = Pausade %d plugins +UNPAUSED_PLUGIN = Startade %d plugin +UNPAUSED_PLUGINS = Startade %d plugins +CANT_MARK_MORE = Kan inte markera mer plugins som icke pausbara! +PAUSE_LOADED = Pausa plugins: Ladda plugins +STOPPED = stoppad +VERSION = version +FILE = fil +PAUSE_ENTRIES = Poster %d - %d av %d (%d e aktiva) +PAUSE_USE_MORE = Skriv 'amx_pausecfg list %d' f'o'r mera +PAUSE_USE_BEGIN = Skriv 'amx_pausecfg list 1' f'o'r b'o'rjan +PAUSE_USAGE = Skriv: amx_pausecfg <kommando> [namn] +PAUSE_COMMANDS = Kommandon +COM_PAUSE_OFF = ^toff - pausar alla plugins i listan +COM_PAUSE_ON = ^ton - startar alla plugins i listan +COM_PAUSE_STOP = ^tstop <file> - stoppar en plugin +COM_PAUSE_PAUSE = ^tpause <file> - pausar en plugin +COM_PAUSE_ENABLE = ^tstart <file> - startar en plugin +COM_PAUSE_SAVE = ^tsave - sparar lista av stoppade plugins +COM_PAUSE_CLEAR = ^tclear - rensar lista av stoppade plugins +COM_PAUSE_LIST = ^tlist [id] - listar plugins +COM_PAUSE_ADD = ^tadd <titel> - markerar en plugin som icke pausbar +SAVE_PAUSED = Spara pausade +COM_PAUSE_SAVE_PAUSED = ^tsave - sparar en lista av pausade plugins +COM_PAUSE_CLEAR_PAUSED = ^tclear - rensar en lista av pausade plugins +CANT_UNPAUSE_PLUGIN = Plugin "%s" 'a'r stoppad och kan inte bli pausad eller forts'a'tta. +CLEAR_PAUSED = Rensa fil med pausade + +[da] +PAUSE_COULDNT_FIND = Kunne ikke finde et plugin der matcher til "%s" +PAUSE_PLUGIN_MATCH = Plugin matcher "%s" +PAUSE_CONF_CLEARED = Konfigurationsfil ryddet. Genindlaes banen, hvis noedvendigt +PAUSE_ALR_CLEARED = Konfiguration var allerede ryddet! +PAUSE_CONF_SAVED = Konfiguration gemt +PAUSE_SAVE_FAILED = Gem Konfiguration mislykkedes!!! +LOCKED = LAAST +PAUSE_UNPAUSE = Pause/Unpause Plugins +CLEAR_STOPPED = Ryd fil med stoppede +SAVE_STOPPED = Gem stoppede +PAUSED_PLUGIN = Paused %d plugin +PAUSED_PLUGINS = Paused %d plugins +UNPAUSED_PLUGIN = Upaused %d plugin +UNPAUSED_PLUGINS = Upaused %d plugins +CANT_MARK_MORE = Kan ikke markere flere plugins som upauserbare! +PAUSE_LOADED = Pause Plugins: Indlaeste plugins +STOPPED = stopped +VERSION = version +FILE = fil +PAUSE_ENTRIES = Indskrivninger %d - %d af %d (%d koerer) +PAUSE_USE_MORE = Brug 'amx_pausecfg list %d' for mere +PAUSE_USE_BEGIN = Brug 'amx_pausecfg list 1' for at begynde +PAUSE_USAGE = Brug: amx_pausecfg <kommando> [name] +PAUSE_COMMANDS = Kommando +COM_PAUSE_OFF = ^toff - pauser alle plugins ikke paa listen +COM_PAUSE_ON = ^ton - upause alle plugins +COM_PAUSE_STOP = ^tstop <file> - stopper et plugin +COM_PAUSE_PAUSE = ^tpause <file> - pauser et plugin +COM_PAUSE_ENABLE = ^tenable <file> - starter a plugin +COM_PAUSE_SAVE = ^tsave - Gemmer en liste af stoppede plugins +COM_PAUSE_CLEAR = ^tclear - Rydder en liste med stoppede plugins +COM_PAUSE_LIST = ^tlist [id] - lister plugins +COM_PAUSE_ADD = ^tadd <title> - Markerer et plugin som upauserbart + +[pl] +PAUSE_COULDNT_FIND = Nie mozna znalesc pluginu "%s" +PAUSE_PLUGIN_MATCH = Plugin pasujacy "%s" +PAUSE_CONF_CLEARED = Plik konfiguracji wyczyszczony. Przeladuj mape jezeli potrzeba +PAUSE_ALR_CLEARED = Konfiguracja juz zostala wyczyszczona ! +PAUSE_CONF_SAVED = Konfiguracja zapisana +PAUSE_SAVE_FAILED = Konfiguracji nie udalo sie zapisac !! +LOCKED = ZABLKOWANY +PAUSE_UNPAUSE = Zatrzymaj/Wznow Plugin +CLEAR_STOPPED = Wyczysc plik z zatrzymaniem +SAVE_STOPPED = Zapisywanie zatrzymane +PAUSED_PLUGIN = Zatrzymano %d plugin +PAUSED_PLUGINS = Zatrzymano %d pluginy +UNPAUSED_PLUGIN = Wznowiono %d plugin +UNPAUSED_PLUGINS = Wznowiono %d pluginy +CANT_MARK_MORE = Nie mozna zaznaczyc wiecej pluginow jako wznawialnych! +PAUSE_LOADED = Zatrzymaj pluginy: Zaladowane pluginy +STOPPED = wylaczono +VERSION = wersja +FILE = plik +PAUSE_ENTRIES = Wpisy %d - %d z %d (%d uruchomionych) +PAUSE_USE_MORE = Uzyj 'amx_pausecfg list %d' po wiecej +PAUSE_USE_BEGIN = Uzyj 'amx_pausecfg list 1' do poczatku +PAUSE_USAGE = Uzycie: amx_pausecfg <komenda> [nazwa] +PAUSE_COMMANDS = Komendy +COM_PAUSE_OFF = ^toff - zatrzymal wszystkie pluginy nie w liscie +COM_PAUSE_ON = ^ton - wznowil wszystkie pluginy +COM_PAUSE_STOP = ^tstop <file> - wylaczyl plugin +COM_PAUSE_PAUSE = ^tpause <file> - zatrzymuje plugin +COM_PAUSE_ENABLE = ^tenable <file> - wlacza plugin +COM_PAUSE_SAVE = ^tsave - zapisuje liste wylaczonych pluginow +COM_PAUSE_CLEAR = ^tclear - czysci liste wylaczonych pluginow +COM_PAUSE_LIST = ^tlist [id] - wyswietla liste pluginow +COM_PAUSE_ADD = ^tadd <title> - oznacza plugin jako niepauzowalny +SAVE_PAUSED = Zapisz zapauzowane pluginy +COM_PAUSE_SAVE_PAUSED = ^tsave - zapisuje liste zapauzowanych pluginow +COM_PAUSE_CLEAR_PAUSED = ^tsave - czysci liste zapauzowanych plugninow +CANT_UNPAUSE_PLUGIN = Plugin "%s" jest zastopowany i nie moze byc zapauzowany lub odpauzowany. +CLEAR_PAUSED = czysci liste zapauzowanych pluginow + +[nl] +PAUSE_COULDNT_FIND = Kon geen plugin vinden gelijk aan "%s" +PAUSE_PLUGIN_MATCH = Plugin gelijk aan "%s" +PAUSE_CONF_CLEARED = Configuratiebestand leeggehaald. Herlaad de map als dat nodig is +PAUSE_ALR_CLEARED = Configuratie was al leeggehaald! +PAUSE_CONF_SAVED = Configuratie succesvol bewaard +PAUSE_SAVE_FAILED = Configuratie bewaren mislukt!!! +LOCKED = OP-SLOT +PAUSE_UNPAUSE = Plugins Pauzeren/Hernemen +CLEAR_STOPPED = Haal bestand met gestopte plugins leeg +SAVE_STOPPED = Gestopte Plugins Bewaren +PAUSED_PLUGIN = %d plugin gepauzeerd +PAUSED_PLUGINS = %d plugins gepauzeerd +UNPAUSED_PLUGIN = %d plugin hernomen +UNPAUSED_PLUGINS = %d plugins hernomen +CANT_MARK_MORE = Kan niet nog meer plugins markeren als niet pauzeerbaar! +PAUSE_LOADED = Pauseer Plugins: Geladen plugins +STOPPED = gestopt +VERSION = versie +FILE = bestand +PAUSE_ENTRIES = Entries %d - %d van de %d (%d lopen nu) +PAUSE_USE_MORE = Typ 'amx_pausecfg list %d' voor meer +PAUSE_USE_BEGIN = Typ 'amx_pausecfg list 1' voor het begin +PAUSE_USAGE = Typ: amx_pausecfg <commando> [naam] +PAUSE_COMMANDS = Commando's +COM_PAUSE_OFF = ^toff - pauzeert alle plugins die niet in de lijst staan +COM_PAUSE_ON = ^ton - hervat alle plugins +COM_PAUSE_STOP = ^tstop <bestand> - stopt een plugin +COM_PAUSE_PAUSE = ^tpause <bestand> - pauzeert een plugin +COM_PAUSE_ENABLE = ^tenable <bestand> - schakelt een plugin in +COM_PAUSE_SAVE = ^tsave - bewaart een lijst van gestopte plugins +COM_PAUSE_CLEAR = ^tclear - haalt lijst met gestopte plugins leeg +COM_PAUSE_LIST = ^tlist [id] - maakt lijst met plugins +COM_PAUSE_ADD = ^tadd <titel> - markeert een plugin als niet pauzeerbaar +SAVE_PAUSED = Gepauseerde plugins opgeslagen +COM_PAUSE_SAVE_PAUSED = ^tsave - Slaat een lijst op van gepauseerde plugins +COM_PAUSE_CLEAR_PAUSED = ^tclear - Maakt de lijst met gepauseerde plugins leeg +CANT_UNPAUSE_PLUGIN = Plugin "%s" is gestopt en kan niet meer gepauseerd of gestart worden. +CLEAR_PAUSED = Haal bestand met gepauseerde plugins leeg + +[es] +PAUSE_COULDNT_FIND = No se encontro ningun plugin que coincida con "%s" +PAUSE_PLUGIN_MATCH = Plugin "%s" encontrado +PAUSE_CONF_CLEARED = Archivo de configuracion borrado. Reinicia el mapa si es necesario +PAUSE_ALR_CLEARED = La configuracion ya esta borrada! +PAUSE_CONF_SAVED = Configuracion guardada con exito +PAUSE_SAVE_FAILED = No se pudo guardar la configuracion!!! +LOCKED = BLOQUEADO +PAUSE_UNPAUSE = Pausar/Despausar Plugins +CLEAR_STOPPED = Borrar lista de archivos detenidos +SAVE_STOPPED = Guardar detenidos +PAUSED_PLUGIN = %d plugin pausado +PAUSED_PLUGINS = %d plugins pausados +UNPAUSED_PLUGIN = %d plugin despausado +UNPAUSED_PLUGINS = %d plugins despausados +CANT_MARK_MORE = No se pueden marcar mas plugins como despausables! +PAUSE_LOADED = Pausar Plugins: Plugins Cargados +STOPPED = detenido +VERSION = version +FILE = archivo +PAUSE_ENTRIES = Entradas %d - %d de %d (%d en ejecucion) +PAUSE_USE_MORE = Escribe 'amx_pausecfg list %d' para mostrar mas +PAUSE_USE_BEGIN = Escribe 'amx_pausecfg list 1' para volver al principio +PAUSE_USAGE = Uso: amx_pausecfg <comando> [nombre] +PAUSE_COMMANDS = Comandos +COM_PAUSE_OFF = ^toff - pausa todos los plugins que no esten en la lista +COM_PAUSE_ON = ^ton - despausa todos los plugins +COM_PAUSE_STOP = ^tstop <archivo> - detiene el plugin +COM_PAUSE_PAUSE = ^tpause <archivo> - pausa el plugin +COM_PAUSE_ENABLE = ^tenable <archivo> - activa el plugin +COM_PAUSE_SAVE = ^tsave - guarda la lista de plugins detenidos +COM_PAUSE_CLEAR = ^tclear - borra la lista de plugins detenidos +COM_PAUSE_LIST = ^tlist [id] - muestra la lista de plugins +COM_PAUSE_ADD = ^tadd <titulo> - marca el plugin como despausable +SAVE_PAUSED = Guardar Pausados +COM_PAUSE_SAVE_PAUSED = ^tsave - guarda una lista de los plugins pausados. +COM_PAUSE_CLEAR_PAUSED = ^tclear - limpia la lista de los plugins pausados. +CANT_UNPAUSE_PLUGIN = El plugin "%s" esta detenido, este no puede ser pausado ni reanudado. +CLEAR_PAUSED = Borrar lista de archivos pausados + +[bp] +PAUSE_COULDNT_FIND = Nao achou um plugin igual a "%s" +PAUSE_PLUGIN_MATCH = Plugin igual a "%s" +PAUSE_CONF_CLEARED = Arquivo de configuracao vazio. Recarregue o mapa se preciso +PAUSE_ALR_CLEARED = Configuracao foi removida! +PAUSE_CONF_SAVED = Configuracao salva com sucesso +PAUSE_SAVE_FAILED = Falhou ao salvar a Configuracao!!! +LOCKED = BLOQUEADO +PAUSE_UNPAUSE = Pausar/Despausar Plugins +CLEAR_STOPPED = Limpa arquivo de plugins parados +SAVE_STOPPED = Salvar parados +PAUSED_PLUGIN = Pausou %d plugin +PAUSED_PLUGINS = Pausou %d plugins +UNPAUSED_PLUGIN = Despausou %d plugin +UNPAUSED_PLUGINS = Despausou %d plugins +CANT_MARK_MORE = Nao pode selecionar mais plugins para nao pausar! +PAUSE_LOADED = Pause Plugins: Plugins carregados +STOPPED = parou +VERSION = versao +FILE = arquivo +PAUSE_ENTRIES = Entradas %d - %d de %d (%d rodando) +PAUSE_USE_MORE = Use 'amx_pausecfg list %d' para ver mais +PAUSE_USE_BEGIN = Use 'amx_pausecfg list 1' para voltar ao inicio +PAUSE_USAGE = Use: amx_pausecfg <comando> [nome] +PAUSE_COMMANDS = Comandos +COM_PAUSE_OFF = ^toff - pausa todos os plugins fora da lista +COM_PAUSE_ON = ^ton - despausa todos os plugins +COM_PAUSE_STOP = ^tstop <arquivo> - para um plugin +COM_PAUSE_PAUSE = ^tpause <arquivo> - pausa um plugin +COM_PAUSE_ENABLE = ^tenable <arquivo> - habilita um plugin +COM_PAUSE_SAVE = ^tsave - salva uma lista de plugins parados +COM_PAUSE_CLEAR = ^tclear - clareia uma lista de plugins parado +COM_PAUSE_LIST = ^tlist [id] - lista os plugins +COM_PAUSE_ADD = ^tadd <nome> - marca um plugin para nao pausar +SAVE_PAUSED = Salvar Pausados +COM_PAUSE_SAVE_PAUSED = ^tsave - salva uma lista de plugins pausados +COM_PAUSE_CLEAR_PAUSED = ^tclear - limpa uma lista de plugins pausados +CANT_UNPAUSE_PLUGIN = O plugin "%s" esta desligado e nao pode ser pausado ou re-ativado +CLEAR_PAUSED = Limpa arquivo de plugins pausados + +[cz] +PAUSE_COULDNT_FIND = Nemuzu najit plugin odpovidajici "%s" +PAUSE_PLUGIN_MATCH = Plugin odpovidajici "%s" +PAUSE_CONF_CLEARED = Konfiguracni soubor vycisten. Pokud je to potreba reloudni mapu. +PAUSE_ALR_CLEARED = Konfigurace jiz byla vycistena! +PAUSE_CONF_SAVED = Konfigurace uspesne ulozena +PAUSE_SAVE_FAILED = Konfiguraci se NEPOVEDLO ulozit!!! +LOCKED = ZAMCENO +PAUSE_UNPAUSE = Pauznout/Spustit Pluginy +CLEAR_STOPPED = Vycistit soubor se stopnutim +SAVE_STOPPED = Ulozit stopnute +PAUSED_PLUGIN = Pauznut %d plugin +PAUSED_PLUGINS = Pauznuto %d pluginu +UNPAUSED_PLUGIN = Znovu spusten %d plugin +UNPAUSED_PLUGINS = Znovu spusteno %d pluginu +CANT_MARK_MORE = Nemuzu oznacit vice pluginu jako nepauznutelne! +PAUSE_LOADED = Puznute pluginy: Nactene pluginy +STOPPED = stoply +VERSION = verze +FILE = soubor +PAUSE_ENTRIES = Polozky %d - %d z %d (%d bezi) +PAUSE_USE_MORE = Napis 'amx_pausecfg list %d' pro vice +PAUSE_USE_BEGIN = Napis 'amx_pausecfg list 1' pro zacatek +PAUSE_USAGE = Napis: amx_pausecfg <command> [name] +PAUSE_COMMANDS = Prikazy +COM_PAUSE_OFF = ^toff - pauzne vsechny pluginy ktere nejsou na seznamu +COM_PAUSE_ON = ^ton - znovu spusti vsechny pluginy +COM_PAUSE_STOP = ^tstop <file> - stopne plugin +COM_PAUSE_PAUSE = ^tpause <file> - pauzne plugin +COM_PAUSE_ENABLE = ^tenable <file> - povoli plugin +COM_PAUSE_SAVE = ^tsave - ulozi seznam stopnutych pluginu +COM_PAUSE_CLEAR = ^tclear - vycisti seznam stopnutych plugins +COM_PAUSE_LIST = ^tlist [id] - seznamy pluginu +COM_PAUSE_ADD = ^tadd <title> - oznaci plugin jako nepauznutelny + +[fi] +PAUSE_COULDNT_FIND = Ei loydetty pluginia, joka sopisi kuvaukseen "%s" +PAUSE_PLUGIN_MATCH = Plugin, joka sopii kuvaukseen "%s", loydetty +PAUSE_CONF_CLEARED = Konffit nollattu. Lataa mappi uudestaan, jos tarvitsee +PAUSE_ALR_CLEARED = Konffit on jo nollattu +PAUSE_CONF_SAVED = Konffit tallennettu onnistuneesti +PAUSE_SAVE_FAILED = Konffien tallentaminen epaonnistui +LOCKED = LUKITTU +PAUSE_UNPAUSE = Pysayta/vapauta plugineja +CLEAR_STOPPED = Nollaa filu stoppedilla...hmm +SAVE_STOPPED = Tallenna pysaytetyt +PAUSED_PLUGIN = Pysaytettiin plugin %d +PAUSED_PLUGINS = Pysaytettiin %d pluginia +UNPAUSED_PLUGIN = Vapautettiin plugin %d +UNPAUSED_PLUGINS = Vapautettiin %d pluginia +CANT_MARK_MORE = Ei voida merkata enempaa plugineja pysayttamattomiksi +PAUSE_LOADED = Pysayta plugineja: Pluginit ladattu +STOPPED = pysaytetty +VERSION = versio +FILE = tiedosto +PAUSE_ENTRIES = Kohdat %d - %d Kaikkiaan %d (%d kaynnissa) +PAUSE_USE_MORE = Kirjoita 'amx_pausecfg list %d' saadaksesi lisatietoja +PAUSE_USE_BEGIN = Kirjoita 'amx_pausecfg list 1' aloittaaksesi +PAUSE_USAGE = Kaytto: amx_pausecfg <komento> [nimi] +PAUSE_COMMANDS = Komennot +COM_PAUSE_OFF = ^toff - pysayttaa kaikki pluginit, jotka eivat ole listassa +COM_PAUSE_ON = ^ton - vapauttaa kaikki pluginit +COM_PAUSE_STOP = ^tstop <tiedosto> - pysayttaa pluginin +COM_PAUSE_PAUSE = ^tpause <tiedosto> - pysayttaa pluginin +COM_PAUSE_ENABLE = ^tenable <tiedosto> - ottaa pluginin kayttoon +COM_PAUSE_SAVE = ^tsave - tallentaa listan pysaytetyista plugineista +COM_PAUSE_CLEAR = ^tclear - nollaa pysaytettyjen pluginien listan +COM_PAUSE_LIST = ^tlist [id] - listaa pluginit +COM_PAUSE_ADD = ^tadd <title> - merkkaa kaikki pluginit pysayttamattomiksi + +[ls] +PAUSE_COULDNT_FIND = n0 l33t p|ug!n "%s" +PAUSE_PLUGIN_MATCH = l33t p|ug!n "%s" +PAUSE_CONF_CLEARED = |200t s3tt!nz g0n3 +PAUSE_ALR_CLEARED = |200t s3tt!nz g0n3! +PAUSE_CONF_SAVED = |200t s3tt!nz s4v3d! +PAUSE_SAVE_FAILED = |200t s3tt!nz n0t s4v3dz0r! +LOCKED = N0! +PAUSE_UNPAUSE = P4us3/Unp4us3 l33t p|ug!ns +CLEAR_STOPPED = Cl34r +SAVE_STOPPED = $t0p3dz0r +PAUSED_PLUGIN = %d l33t p|ug!nz |>4UZ3D +PAUSED_PLUGINS = %d l33t p|ug!nz |>4UZ3D +UNPAUSED_PLUGIN = %d l33t p|ug!nz d3-|>4UZ3D +UNPAUSED_PLUGINS = %d l33t p|ug!nz d3-|>4UZ3D +CANT_MARK_MORE = l33t p|ug!nz un-d3-|>4UZ3Dab|3 +PAUSE_LOADED = |>4UZ3D l33t p|ug!ns: L04d3d l33t p|ug!nz +STOPPED = c|_|7 +VERSION = v3r$!0n +FILE = f!l3 +PAUSE_ENTRIES = %d - %d of %d (%d j0ggin') +PAUSE_USE_MORE = uz3 'amx_pausecfg list %d' for more +PAUSE_USE_BEGIN = uz3 'amx_pausecfg list 1' for begin +PAUSE_USAGE = Us4g3: amx_pausecfg <command> [name] +PAUSE_COMMANDS = (mdz +COM_PAUSE_OFF = ^toff - |>4UZ3z all l33t p|ug!nz g0n3 +COM_PAUSE_ON = ^ton - un|>4UZ3z 4ll l33t p|ug!nz +COM_PAUSE_STOP = ^tstop <file> - l33t p|ug!nz l34v3z +COM_PAUSE_PAUSE = ^tpause <file> - |>4UZ3z a l33t p|ug!nz +COM_PAUSE_ENABLE = ^tenable <file> - l33t p|ug!nz c0m3z b4ck +COM_PAUSE_SAVE = ^tsave - s4v3z $t0|>|>3dz l33t p|ug!nz +COM_PAUSE_CLEAR = ^tclear - cl34rz $t0|>|>3dz l33t p|ug!nz +COM_PAUSE_LIST = ^tlist [id] - sh0wz l33t p|ug!nz +COM_PAUSE_ADD = ^tadd <title> - l33t p|ug!nz = un|>4UZ3able +SAVE_PAUSED = $4\/3 P4U$3D +COM_PAUSE_SAVE_PAUSED = ^tsave - $4\/3$ 4 1!$+ 0|= P4U$3D P1UG!|\|$ +COM_PAUSE_CLEAR_PAUSED = ^tclear - C134R$ 4 1!$+ 0|= P4U$3D P1UG!|\|$ +CANT_UNPAUSE_PLUGIN = P1UG!|\| "%s" !$ $+0PP3D 4|\|D C$|\||\|p+ |33 P4U$3D 0|2 U|\|P4U$3D. + +[bg] +PAUSE_COULDNT_FIND = Ne uspq da nameri plugin koito da savbada s "%s" +PAUSE_PLUGIN_MATCH = Plugin savpada "%s" +PAUSE_CONF_CLEARED = Iz4isti configuracionia file. Zaredi na novo kartata ako e nujno +PAUSE_ALR_CLEARED = Configuracionia file e ve4e iz4isten! +PAUSE_CONF_SAVED = configuraciata be6e zapametena +PAUSE_SAVE_FAILED = configuraciata ne be6e zapametena!!! +LOCKED = ZAKLU$ENO +PAUSE_UNPAUSE = Pause/Unpause Plugin +CLEAR_STOPPED = Iz4isti file sas spreni +SAVE_STOPPED = Zapameti spreni +PAUSED_PLUGIN = Paused %d plugin +PAUSED_PLUGINS = Paused %d plugins +UNPAUSED_PLUGIN = Unpaused %d plugin +UNPAUSED_PLUGINS = Unpaused %d plugins +CANT_MARK_MORE = Nemoje da markirate pove4e plugini kato unpauseable! +PAUSE_LOADED = Pause Plugins: Loaded plugins +STOPPED = Sprqn +VERSION = versia +FILE = file +PAUSE_ENTRIES = Vklu4ni %d - %d ot %d (%d sa pusnati) +PAUSE_USE_MORE = Izpolzvai 'amx_pausecfg list %d' za pve4e +PAUSE_USE_BEGIN = Izpolzvai 'amx_pausecfg list 1' za na4alo +PAUSE_USAGE = Izpolzvano: amx_pausecfg <comanda> [ime] +PAUSE_COMMANDS = Comandi +COM_PAUSE_OFF = ^toff - slaga na pausa vsi4kite plugini koito ne sa na lista +COM_PAUSE_ON = ^ton - puska vsi4kite plugini +COM_PAUSE_STOP = ^tstop <file> - spira edin plugin +COM_PAUSE_PAUSE = ^tpause <file> - pauses edin plugin +COM_PAUSE_ENABLE = ^tenable <file> - puska edin plugin +COM_PAUSE_SAVE = ^tsave - zapameti list ot sprqni plugini +COM_PAUSE_CLEAR = ^tclear - iz4isti list ot sprqni plugini +COM_PAUSE_LIST = ^tlist [id] - pokazva plugini +COM_PAUSE_ADD = ^tadd <title> - markira plugin kato nespira6t + +[ro] +PAUSE_COULDNT_FIND = Nu a fost gasit un plugin ce rezulta cautarea "%s" +PAUSE_PLUGIN_MATCH = Plugin-ul "%s" rezulta cautarea +PAUSE_CONF_CLEARED = Fisier-ul de configuratie a fost golit. Reincarca harta daca este nevoie +PAUSE_ALR_CLEARED = Configuratia a fost golita deja! +PAUSE_CONF_SAVED = Configuratia a fost salvata cu succes +PAUSE_SAVE_FAILED = Salvarea configuratiei a esuat!!! +LOCKED = BLOCAT +PAUSE_UNPAUSE = Intrerupe/Reincarca Plugin-uri +CLEAR_STOPPED = Goleste fisier-ul cu cele intrerupte +SAVE_STOPPED = Salveaza fisier-ul cu cele intrerupte +PAUSED_PLUGIN = Plugin-ul %d a fost intrerupt +PAUSED_PLUGINS = Au fost intrerupte %d plugin-uri +UNPAUSED_PLUGIN = Plugin-ul %d a fost reincarcat +UNPAUSED_PLUGINS = Au fost reincarcate %d plugin-uri +CANT_MARK_MORE = Nu se pot marca mai multe plugin-uri ca intrerupte! +PAUSE_LOADED = Intrerupe plugin-uri: Plugin-uri incarcate +STOPPED = intrerupte +VERSION = versiune +FILE = fisier +PAUSE_ENTRIES = Intrari %d - %d din %d (%d functioneaza) +PAUSE_USE_MORE = Scrie 'amx_pausecfg list %d' pentru mai mult +PAUSE_USE_BEGIN = Scrie 'amx_pausecfg list 1' pentru inceput +PAUSE_USAGE = Folosire: amx_pausecfg <comanda> [nume] +PAUSE_COMMANDS = Comenzi +COM_PAUSE_OFF = ^toff - intrerupe toate plugin-urile ce nu sunt in lista +COM_PAUSE_ON = ^ton - reincarca toate plugin-urile ce nu sunt in lista +COM_PAUSE_STOP = ^tstop <fisier> - opreste un plugin +COM_PAUSE_PAUSE = ^tpause <fisier> - intrerupe un plugin +COM_PAUSE_ENABLE = ^tenable <file> - incarca un plugin +COM_PAUSE_SAVE = ^tsave - salveaza o lista a plugin-urilor oprite +COM_PAUSE_CLEAR = ^tclear - goleste o lista a plugin-urilor oprite +COM_PAUSE_LIST = ^tlist [id] - listeaza plugin-urile +COM_PAUSE_ADD = ^tadd <title> - marcheaza un plugin ca si reincarcat +SAVE_PAUSED = Salvarea oprita +COM_PAUSE_SAVE_PAUSED = ^tsave - salveaza o lista cu pluginurile oprite +COM_PAUSE_CLEAR_PAUSED = ^tclear - sterge lista cu pluginurile oprite +CANT_UNPAUSE_PLUGIN = Pluginul "%s" este oprit si nu poate fi pus pe pauza sau scos din pauza. +CLEAR_PAUSED = Goleste fisier-ul cu cele oprite + +[hu] +PAUSE_COULDNT_FIND = Nem lehet a plugint talalni "%s" +PAUSE_PLUGIN_MATCH = Plugin matching "%s" +PAUSE_CONF_CLEARED = Beallitasok file betoltve. Valts palyat a hasznalatahoz +PAUSE_ALR_CLEARED = A beallitasok mar ki vannak uritve! +PAUSE_CONF_SAVED = Beallitasok sikeresen elmentve +PAUSE_SAVE_FAILED = Nem sikerult a mentes!!! +LOCKED = LEZARVA +PAUSE_UNPAUSE = Ki/Be kapcsolas Pluginok +CLEAR_STOPPED = A leallitot pluginok filejenak uritese +SAVE_STOPPED = Megallitottak mentese +PAUSED_PLUGIN = Leallitva %d plugin +PAUSED_PLUGINS = Leallitva %d plugin +UNPAUSED_PLUGIN = Engedelyezve %d plugin +UNPAUSED_PLUGINS = Engedelyezve %d plugin +CANT_MARK_MORE = Nem lehet mark tobb plugint megallitani! +PAUSE_LOADED = Pause Plugins: Loaded plugins +STOPPED = leallitva +VERSION = verzio +FILE = file +PAUSE_ENTRIES = Bejegyzes %d - %d a %d-bol (%d fut) +PAUSE_USE_MORE = Irj 'amx_pausecfg list %d' a tobbihez +PAUSE_USE_BEGIN = Irj 'amx_pausecfg list 1' az elejehez +PAUSE_USAGE = Hasznalat: amx_pausecfg <parancs> [nev] +PAUSE_COMMANDS = Parancsok +COM_PAUSE_OFF = ^tki - minden plugin leallitasa a listan +COM_PAUSE_ON = ^tbe - osszes plugin engedelyezese +COM_PAUSE_STOP = ^tstop <file> - plugin megallitasa +COM_PAUSE_PAUSE = ^tpause <file> - kikapcsolt pluginok +COM_PAUSE_ENABLE = ^tenable <file> - plugin engedelyezese +COM_PAUSE_SAVE = ^tsave - lista mentese a leallitott pluginokkal +COM_PAUSE_CLEAR = ^tclear - a megallitott pluginok listajanak kiuritese +COM_PAUSE_LIST = ^tlist [id] - pluginok listaja +COM_PAUSE_ADD = ^tadd <nev> - megjelolni a plugint megalithatokent +SAVE_PAUSED = Mentes Szunetelve +COM_PAUSE_SAVE_PAUSED = ^tsave - menti a szunetelt pluginok listajat +COM_PAUSE_CLEAR_PAUSED = ^tclear - torli a szunetelt pluginok listajat +CANT_UNPAUSE_PLUGIN = A "%s" plugint nemlehet szuneteltetni vagy engedelyezni. +CLEAR_PAUSED = Torli a szunetelt pluginok listajat + +[lt] +PAUSE_COULDNT_FIND = Negali surasti plugino "%s" +PAUSE_PLUGIN_MATCH = Pluginas sutampa "%s" +PAUSE_CONF_CLEARED = Konfigo failas istryntas. Perkrauk mapa jei reikia +PAUSE_ALR_CLEARED = Konfigas jau buvo isvalyta! +PAUSE_CONF_SAVED = Konfigas issaugotas sekmingai +PAUSE_SAVE_FAILED = Konfigo issaugojimas sekmingas!!! +LOCKED = Uzrakinta +PAUSE_UNPAUSE = Pauze/Nuimti pauze pluginus +CLEAR_STOPPED = Isvalyti sustabdytus failus +SAVE_STOPPED = Issaugoti sustabdytus +PAUSED_PLUGIN = Sustabdytas %d pluginas +PAUSED_PLUGINS = Sustabdyti %d pluginai +UNPAUSED_PLUGIN = Paleistas %d pluginas +UNPAUSED_PLUGINS = Paleisti %d pluginai +CANT_MARK_MORE = Daugiau pluginu pazymeti negalima! +PAUSE_LOADED = Sustabdyti pluginus: Uzkrauti pluginai +STOPPED = sustabdyti +VERSION = versija +FILE = failas +PAUSE_ENTRIES = Irasas %d - %d is %d (%d veikiantis) +PAUSE_USE_MORE = Naudok 'amx_pausecfg sarasa %d' del daugiau info +PAUSE_USE_BEGIN = Naudok 'amx_pausecfg saraso 1 nr del pradzios +PAUSE_USAGE = Naudok: amx_pausecfg <komanda> [skaicius] +PAUSE_COMMANDS = Komandos +COM_PAUSE_OFF = ^tisjungti - Sustabdo visus pluginus esancius ne sarase +COM_PAUSE_ON = ^tijungti - paleidzia visus pluginus +COM_PAUSE_STOP = ^tstop <failas> - sustabdo plugina +COM_PAUSE_PAUSE = ^tpauze <failas> - pauze pluginui +COM_PAUSE_ENABLE = ^tpaleisti <failas> - paleidzia/ijungia plugina +COM_PAUSE_SAVE = ^tissaugoti - issaugo sustabdytu pluginu sarasa +COM_PAUSE_CLEAR = ^tpravalyti - pravalo sustabdytus pluginus +COM_PAUSE_LIST = ^tlistas [id] - pluginu sarasas +COM_PAUSE_ADD = ^tprideti <pavadinimas> - pazymi plugina kaip nesustabdoma + +[sk] +PAUSE_COULDNT_FIND = Nemozem najst plugin zodpovedajuci "%s" +PAUSE_PLUGIN_MATCH = Plugin zodpovedajuci "%s" +PAUSE_CONF_CLEARED = Konfiguracny subor vycisteny. Ak je to potrebne reloadni mapu. +PAUSE_ALR_CLEARED = Konfiguracia uz bola vycistena! +PAUSE_CONF_SAVED = Konfiguracia uspesne ulozena +PAUSE_SAVE_FAILED = Konfiguraciu sa NEPODARILO ulozit!!! +LOCKED = ZAMKNUTE +PAUSE_UNPAUSE = Pauznut/Spustit Pluginy +CLEAR_STOPPED = Vycistit subor so stopnutim +SAVE_STOPPED = Ulozit stopnute +PAUSED_PLUGIN = Pauznut %d plugin +PAUSED_PLUGINS = Pauznuto %d pluginov +UNPAUSED_PLUGIN = Znovu spusteny %d plugin +UNPAUSED_PLUGINS = Znovu spustenych %d pluginov +CANT_MARK_MORE = Nemozem oznacit viac pluginov ako nepauznutelne! +PAUSE_LOADED = Pauznute pluginy: Nacitane pluginy +STOPPED = zastaveny +VERSION = verzia +FILE = subor +PAUSE_ENTRIES = Polozky %d - %d z %d (%d spustene) +PAUSE_USE_MORE = Napis 'amx_pausecfg list %d' pre viac +PAUSE_USE_BEGIN = Napis 'amx_pausecfg list 1' pre zaciatok +PAUSE_USAGE = Napis: amx_pausecfg <command> [name] +PAUSE_COMMANDS = Prikazy +COM_PAUSE_OFF = ^toff - pauzne vsetky pluginy ktore niesu na zozname +COM_PAUSE_ON = ^ton - znovu spusti vsetky pluginy +COM_PAUSE_STOP = ^tstop <file> - stopne plugin +COM_PAUSE_PAUSE = ^tpause <file> - pauzne plugin +COM_PAUSE_ENABLE = ^tenable <file> - povoli plugin +COM_PAUSE_SAVE = ^tsave - ulozi zoznam stopnutych pluginov +COM_PAUSE_CLEAR = ^tclear - vycisti zoznam stopnutych pluginov +COM_PAUSE_LIST = ^tlist [id] - zoznamy pluginov +COM_PAUSE_ADD = ^tadd <title> - oznaci plugin ako nepauznutelny +SAVE_PAUSED = Ulozenie pozastavene +COM_PAUSE_SAVE_PAUSED = ^tsave - uloz zoznam pozastavenych pluginov +COM_PAUSE_CLEAR_PAUSED = ^tclear - vymaz zoznam pozastavenych pluginov +CANT_UNPAUSE_PLUGIN = Plugin "%s" je zastaveny ,nie je mozne ho pozastavit. +CLEAR_PAUSED = vymaz subor s pozastavenymi + +[mk] +PAUSE_COULDNT_FIND = Ne e najden plugin koj se poklopuva so baranjeto za "%s" +PAUSE_PLUGIN_MATCH = Pronajdeniot plugin e "%s" +PAUSE_CONF_CLEARED = Listata so pauzirani plagini e izbrisana. Pustete ja mapata odnovo ako e potrebno. +PAUSE_ALR_CLEARED = Listata so pauzirani plagini e prazna! +PAUSE_CONF_SAVED = Listata so pauzirani plagini e uspesno zacuvana +PAUSE_SAVE_FAILED = Listata so pauzirani plagini ne e zacuvana!!! +LOCKED = ZAKLUCEN +PAUSE_UNPAUSE = Pauziraj/Pusti Plugin +CLEAR_STOPPED = Izbrisi go fajlot so stopirani plugini +SAVE_STOPPED = Zacuvaj gi stopiranite +PAUSED_PLUGIN = Pauziran e %d plagin +PAUSED_PLUGINS = Pauzirani se %d plagini +UNPAUSED_PLUGIN = Pusten e %d plugin +UNPAUSED_PLUGINS = Pusteni se %d plagini +CANT_MARK_MORE = Ne e mozno da se izberat poveke plugini kako zakluceni! +PAUSE_LOADED = Pauza na plaginite: Vcitanite plugini +STOPPED = stopiran +VERSION = verzija +FILE = fajl +PAUSE_ENTRIES = Plagini %d - %d od %d (%d se aktivni) +PAUSE_USE_MORE = Napisi 'amx_pausecfg list %d' za uste +PAUSE_USE_BEGIN = Napisi 'amx_pausecfg list 1' za od pocetok +PAUSE_USAGE = Koristenje: amx_pausecfg <komanda> [ime] +PAUSE_COMMANDS = Komandi +COM_PAUSE_OFF = ^toff - gi pauzira site aktivni plagini +COM_PAUSE_ON = ^ton - gi pusta site pauzirani plagini +COM_PAUSE_STOP = ^tstop <fajl> - go stopira plaginot +COM_PAUSE_PAUSE = ^tpause <fajl> - go pauzira plaginot +COM_PAUSE_ENABLE = ^tenable <fajl> - go pusta plaginot +COM_PAUSE_SAVE = ^tsave - ja zacuvuva listata so stopirani plagini +COM_PAUSE_CLEAR = ^tclear - ja brise listata so stopirani plagini +COM_PAUSE_LIST = ^tlist [id] - gi lista site plagini +COM_PAUSE_ADD = ^tadd <title> - go markira plaginot kako nekoj sto ne moze da se pauzira +SAVE_PAUSED = Zacuvaj gi pauziranite plagini +COM_PAUSE_SAVE_PAUSED = ^tsave - ja zacuvuva listata so pauzirani plagini +COM_PAUSE_CLEAR_PAUSED = ^tclear - ja brise listata so pauzirani plagini +CANT_UNPAUSE_PLUGIN = Plaginot "%s" e stopiran i ne moze da se pauzira ili da se iskluci pauzata. +CLEAR_PAUSED = Izbrisi ja listata so pauzirani plagini diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/plmenu.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/plmenu.txt new file mode 100644 index 0000000..72e3d45 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/plmenu.txt @@ -0,0 +1,339 @@ +[en] +ADMIN_BAN_1 = ADMIN: ban %s +ADMIN_BAN_2 = ADMIN %s: ban %s +BAN_MENU = Ban Menu +BAN_FOR_MIN = Ban for %d minutes +BAN_PERM = Ban permanently +SLAP_SLAY_MENU = Slap/Slay Menu +SLAP_WITH_DMG = Slap with %d damage +SLAY = Slay +KICK_MENU = Kick Menu +ADMIN_TRANSF_1 = ADMIN: transfer %s to %s +ADMIN_TRANSF_2 = ADMIN %s: transfer %s to %s +TEAM_MENU = Team Menu +TRANSF_TO = Transfer to %s +CL_CMD_MENU = Client Cmds Menu +NO_CMDS = No cmds available + +[de] +ADMIN_BAN_1 = ADMIN: bannt %s +ADMIN_BAN_2 = ADMIN %s: bannt %s +BAN_MENU = Menu > bannen +BAN_FOR_MIN = Bann fuer %d Minuten +BAN_PERM = fuer immer bannen +SLAP_SLAY_MENU = Schlagen/Toeten-Menu +SLAP_WITH_DMG = Schlaegt mit %d Schaden +SLAY = toeten +KICK_MENU = Menu >kicken +ADMIN_TRANSF_1 = ADMIN: verschiebt %s zu den %s +ADMIN_TRANSF_2 = ADMIN %s: verschiebt %s zu den %s +TEAM_MENU = Menu > Team +TRANSF_TO = zu den %s geschoben +CL_CMD_MENU = Menu > Spielerbefehle +NO_CMDS = keine Befehle verfuegbar + +[sr] +ADMIN_BAN_1 = ADMIN: ban %s +ADMIN_BAN_2 = ADMIN %s: ban %s +BAN_MENU = Ban Meni +BAN_FOR_MIN = Ban na %d minuta +BAN_PERM = Ban za stalno +SLAP_SLAY_MENU = Slap/Slay Meni +SLAP_WITH_DMG = Slap sa %d stete +SLAY = Slay +KICK_MENU = Kick Meni +ADMIN_TRANSF_1 = ADMIN: transfer %s u %s +ADMIN_TRANSF_2 = ADMIN %s: transfer %s u %s +TEAM_MENU = Tim Meni +TRANSF_TO = Transfer u %s +CL_CMD_MENU = Klijent Komande Meni +NO_CMDS = Nema dostupnih komandi + +[tr] +ADMIN_BAN_1 = ADMIN: ban %s +ADMIN_BAN_2 = ADMIN %s: ban %s +BAN_MENU = Ban Menusu +BAN_FOR_MIN = Ban %d dakika olarak +BAN_PERM = Ban suresiz +SLAP_SLAY_MENU = Tokatla/oldur menusu +SLAP_WITH_DMG = Tokatla %d zarar ile +SLAY = Oldur +KICK_MENU = Atma menusu +ADMIN_TRANSF_1 = ADMIN: takim %s goc %s +ADMIN_TRANSF_2 = ADMIN %s: takim %s goc %s +TEAM_MENU = Takim menu +TRANSF_TO = %s takima goc +CL_CMD_MENU = Oyuncu Emir Menusu +NO_CMDS = Emir mevcud degildir + +[fr] +ADMIN_BAN_1 = ADMIN: banni %s +ADMIN_BAN_2 = ADMIN %s: banni %s +BAN_MENU = Menu Bannir +BAN_FOR_MIN = Bannir pour %d minutes +BAN_PERM = Bannir a vie (permanent) +SLAP_SLAY_MENU = Menu Frapper/Foudroyer +SLAP_WITH_DMG = Frapper avec %d points de degat +SLAY = Foudroyer +KICK_MENU = Menu Kick +ADMIN_TRANSF_1 = ADMIN: transfere %s en %s +ADMIN_TRANSF_2 = ADMIN %s: transfere %s en %s +TEAM_MENU = Menu Equipe +TRANSF_TO = Transferer en %s +CL_CMD_MENU = Menu Cmds Client +NO_CMDS = Aucune commande disponible + +[sv] +ADMIN_BAN_1 = ADMIN: bannlys %s +ADMIN_BAN_2 = ADMIN %s: bannlys %s +BAN_MENU = Bannlysningsmeny +BAN_FOR_MIN = Bannlys i %d minuter +BAN_PERM = Permanent bannlysning +SLAP_SLAY_MENU = Smisk-/Slakt-meny +SLAP_WITH_DMG = Smiska med %d skada +SLAY = Slakta +KICK_MENU = Sparka Meny +ADMIN_TRANSF_1 = ADMIN: skicka %s till %s +ADMIN_TRANSF_2 = ADMIN %s: skicka %s till %s +TEAM_MENU = Lagmeny +TRANSF_TO = Skicka till %s +CL_CMD_MENU = Klientkommandomeny +NO_CMDS = Det finns inga kommandon + +[da] +ADMIN_BAN_1 = ADMIN: ban %s +ADMIN_BAN_2 = ADMIN %s: ban %s +BAN_MENU = Ban Menu +BAN_FOR_MIN = Ban i %d minutter +BAN_PERM = Ban permanent +SLAP_SLAY_MENU = Klask/Draeb Menu +SLAP_WITH_DMG = Klask med %d skade +SLAY = Draeb +KICK_MENU = Kick Menu +ADMIN_TRANSF_1 = ADMIN: Overflyt %s to %s +ADMIN_TRANSF_2 = ADMIN %s: Overflyt %s to %s +TEAM_MENU = Hold Menu +TRANSF_TO = Overflyt til %s +CL_CMD_MENU = Klient Kommando Menu +NO_CMDS = Ingen kommandoer til raadighed + +[pl] +ADMIN_BAN_1 = ADMIN: ban %s +ADMIN_BAN_2 = ADMIN %s: ban %s +BAN_MENU = Menu Bana +BAN_FOR_MIN = Ban na %d minut +BAN_PERM = Kompletny Ban +SLAP_SLAY_MENU = Menu udzerzen/zgladzen +SLAP_WITH_DMG = Uderz zadajac %d obrazen +SLAY = Zgladzenie +KICK_MENU = Menu kicka +ADMIN_TRANSF_1 = ADMIN: %s przeszedl do %s +ADMIN_TRANSF_2 = ADMIN %s: %s przeszedl do %s +TEAM_MENU = Menu druzyny +TRANSF_TO = Przejdz do %s +CL_CMD_MENU = menu komend klienta +NO_CMDS = Nie ma zadnych komend + +[nl] +ADMIN_BAN_1 = ADMIN: ban %s +ADMIN_BAN_2 = ADMIN %s: ban %s +BAN_MENU = Banmenu +BAN_FOR_MIN = Bannen voor %d minuten +BAN_PERM = Permanent Bannen +SLAP_SLAY_MENU = Sla/Slachtmenu +SLAP_WITH_DMG = Sla met %d schade +SLAY = Slacht +KICK_MENU = Kickmenu +ADMIN_TRANSF_1 = ADMIN: zet %s over naar %s +ADMIN_TRANSF_2 = ADMIN %s: zet %s over naar %s +TEAM_MENU = Teammenu +TRANSF_TO = Zet over naar %s +CL_CMD_MENU = Gebruikerscommandomenu +NO_CMDS = Geen cmds beschikbaar + +[es] +ADMIN_BAN_1 = ADMIN: %s baneado +ADMIN_BAN_2 = ADMIN %s: %s baneado +BAN_MENU = Menu de Bans +BAN_FOR_MIN = Banear durante %d minutos +BAN_PERM = Banear permanentemente +SLAP_SLAY_MENU = Menu de Slap/Slay +SLAP_WITH_DMG = Pegar con %d de danyo +SLAY = Matar +KICK_MENU = Menu de Expulsiones +ADMIN_TRANSF_1 = ADMIN: %s transferido al equipo de los %s +ADMIN_TRANSF_2 = ADMIN %s: %s transferido al equipo de los %s +TEAM_MENU = Menu de Equipos +TRANSF_TO = Transferir a los %s +CL_CMD_MENU = Menu de Comandos de Cliente +NO_CMDS = No hay comandos disponibles + +[bp] +ADMIN_BAN_1 = ADMIN: baniu %s +ADMIN_BAN_2 = ADMIN %s: baniu %s +BAN_MENU = Menu Banir +BAN_FOR_MIN = Banido por %d minutos +BAN_PERM = Banido permanentemente +SLAP_SLAY_MENU = Menu Tapa/Assassinar +SLAP_WITH_DMG = Tapa com %d de dano +SLAY = Tapa +KICK_MENU = Menu Kickar +ADMIN_TRANSF_1 = ADMIN: transferiu %s para %s +ADMIN_TRANSF_2 = ADMIN %s: transferiu %s para %s +TEAM_MENU = Menu Controle de Time +TRANSF_TO = Transferir para %s +CL_CMD_MENU = Menu de Comandos no Cliente +NO_CMDS = Sem cmds disponivel + +[cz] +ADMIN_BAN_1 = ADMIN: zabanoval %s +ADMIN_BAN_2 = ADMIN %s: zabanovali %s +BAN_MENU = Menu banu +BAN_FOR_MIN = Zabanovan na %d minut +BAN_PERM = Zaban permanentne +SLAP_SLAY_MENU = Menu Pohlavku/Zabiti +SLAP_WITH_DMG = Pleskl za %d damage +SLAY = Zabit +KICK_MENU = Menu vykopnuti +ADMIN_TRANSF_1 = ADMIN: premistil %s k %s +ADMIN_TRANSF_2 = ADMIN %s: premistili %s k %s +TEAM_MENU = Menu Tymu +TRANSF_TO = Premistit k %s +CL_CMD_MENU = Menu klientskych prikazu +NO_CMDS = Zadny cmds + +[fi] +ADMIN_BAN_1 = ADMIN: bannasi %s +ADMIN_BAN_2 = ADMIN %s: bannasi %s +BAN_MENU = Bannivalikko +BAN_FOR_MIN = Bannaa %d minuutiksi +BAN_PERM = Bannaa pysyvasti +SLAP_SLAY_MENU = Slap- ja slayvalikko +SLAP_WITH_DMG = Slappaa %d damagella +SLAY = Slayaa +KICK_MENU = Potkimisvalikko +ADMIN_TRANSF_1 = ADMIN: siirsi pelaajan%s %s:ksi +ADMIN_TRANSF_2 = ADMIN %s: siirsi pelaajan %s %s:ksi +TEAM_MENU = Joukkuevalikko +TRANSF_TO = Siirra %s.ksi +CL_CMD_MENU = Clientkomentovalikko +NO_CMDS = Ei komentoja kaytettavissa + +[ls] +ADMIN_BAN_1 = ADMIN: b4nz0|2 %s +ADMIN_BAN_2 = ADMIN %s: b4nz0|2 %s +BAN_MENU = |34nz0|2 M3nu +BAN_FOR_MIN = |34nz0|2 for %d minut3s +BAN_PERM = |34nz0|2 p3rm4n3ntly +SLAP_SLAY_MENU = Sl4p/Sl4y M3nu +SLAP_WITH_DMG = Sl4p \/\/I7|-| %d d4m4g3 +SLAY = Sl4y +KICK_MENU = |<ic|< M3nu +ADMIN_TRANSF_1 = ADMIN: tr4nsf3r %s to %s +ADMIN_TRANSF_2 = ADMIN %s: tr4nsf3r %s to %s +TEAM_MENU = T34m M3nu +TRANSF_TO = Tr4nsf3r t0 %s +CL_CMD_MENU = (li3nt (mds M3nu +NO_CMDS = |\|0 cmds 4v4il4bl3 + +[bg] +ADMIN_BAN_1 = ADMINISTRATOR: banna %s +ADMIN_BAN_2 = ADMINISTRATOR %s: banna %s +BAN_MENU = Ban Menu +BAN_FOR_MIN = Ban za %d minuti +BAN_PERM = Banni za vinagi +SLAP_SLAY_MENU = Slap/Slay Menu +SLAP_WITH_DMG = Slapni s %d damage +SLAY = Slay +KICK_MENU = Kick Menu +ADMIN_TRANSF_1 = ADMINISTRATOR: transferira %s kam %s +ADMIN_TRANSF_2 = ADMINISTRATOR %s: transferira %s kam %s +TEAM_MENU = Otborno Menu +TRANSF_TO = Transferirai kam %s +CL_CMD_MENU = Klient Comandno Menu +NO_CMDS = Nqma nikakvi pozvoleni comandi + +[ro] +ADMIN_BAN_1 = ADMIN: ban %s +ADMIN_BAN_2 = ADMIN %s: ban %s +BAN_MENU = Menu Ban +BAN_FOR_MIN = Ban %d minute +BAN_PERM = Ban permanent +SLAP_SLAY_MENU = Slap/Slay +SLAP_WITH_DMG = Slap cu %d dmg +SLAY = Slay +KICK_MENU = Menu Kick +ADMIN_TRANSF_1 = ADMIN: transfera %s la %s +ADMIN_TRANSF_2 = ADMIN %s: transfera %s la %s +TEAM_MENU = Menu Echipe +TRANSF_TO = Transfera la %s +CL_CMD_MENU = Menu Comenzi Jucator +NO_CMDS = Nici o comanda valabila + +[hu] +ADMIN_BAN_1 = ADMIN: %s banolva +ADMIN_BAN_2 = ADMIN %s: %s banolva +BAN_MENU = Ban Menu +BAN_FOR_MIN = Banolva %d percre +BAN_PERM = Orokos ban +SLAP_SLAY_MENU = Utes/Oles Menu +SLAP_WITH_DMG = Megutve %d sebzessel +SLAY = Megoles +KICK_MENU = kick Menu +ADMIN_TRANSF_1 = ADMIN: %s atallitva %s-nak +ADMIN_TRANSF_2 = ADMIN %s: %s atallitva %s-nak +TEAM_MENU = CSapat Menu +TRANSF_TO = Atallitva %s-nek +CL_CMD_MENU = Client Cmds Menu +NO_CMDS = Nincs elerheto parancs + +[lt] +ADMIN_BAN_1 = ADMINAS: isbanino %s +ADMIN_BAN_2 = ADMINAS %s: isbanino %s +BAN_MENU = Ban meniu +BAN_FOR_MIN = Banas %d minutem +BAN_PERM = Banas visam laikui +SLAP_SLAY_MENU = Musti/Nudeti Meniu +SLAP_WITH_DMG = Musa su %d zala +SLAY = Nudeti +KICK_MENU = Ismetimo meniu +ADMIN_TRANSF_1 = ADMINAS: siuncia %s i %s +ADMIN_TRANSF_2 = ADMINAS %s: siuncia %s i %s +TEAM_MENU = Komandos meniu +TRANSF_TO = Issiusti i %s +CL_CMD_MENU = Klientu CMD meniu +NO_CMDS = Nera galimu CMD + +[sk] +ADMIN_BAN_1 = ADMIN: zabanoval %s +ADMIN_BAN_2 = ADMIN %s: zabanovali %s +BAN_MENU = MENU: ban +BAN_FOR_MIN = Zabanovat na %d minut +BAN_PERM = Zabanovat permanentne +SLAP_SLAY_MENU = MENU: Placnut/Zabit +SLAP_WITH_DMG = Udret silou %d damage +SLAY = Zabit +KICK_MENU = MENU: vykopnutie +ADMIN_TRANSF_1 = ADMIN: premiestnil %s k %s +ADMIN_TRANSF_2 = ADMIN %s: premiestnili %s k %s +TEAM_MENU = MENU: Tym +TRANSF_TO = Premiestnit k %s +CL_CMD_MENU = MENU: klientske prikazy +NO_CMDS = Ziadny cmds + +[mk] +ADMIN_BAN_1 = ADMIN: ban %s +ADMIN_BAN_2 = ADMIN %s: ban %s +BAN_MENU = Ban Meni +BAN_FOR_MIN = Ban na %d minuti +BAN_PERM = Ban zasekogas +SLAP_SLAY_MENU = Slap/Slay Meni +SLAP_WITH_DMG = Udri mu samar so %d steta +SLAY = Nasilno ubij go +KICK_MENU = Kick Meni +ADMIN_TRANSF_1 = ADMIN: napravi transfer na %s vo %s +ADMIN_TRANSF_2 = ADMIN %s: napravi transfer na %s vo %s +TEAM_MENU = Meni za timot +TRANSF_TO = Transfer vo %s +CL_CMD_MENU = Meni so komandi za klientite +NO_CMDS = Nema dostapni komandi diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/restmenu.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/restmenu.txt new file mode 100644 index 0000000..f4fd36f --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/restmenu.txt @@ -0,0 +1,659 @@ +[en] +EQ_WE_RES = Equipment and weapons have been restricted +EQ_WE_UNRES = Equipment and weapons have been unrestricted +HAVE_BEEN = have been +HAS_BEEN = has been +RESTRICTED = restricted +UNRESTRICTED = unrestricted +NO_EQ_WE = Couldn't find such equipment or weapon +WEAP_RES = Weapons Restriction +VALUE = value +REST_ENTRIES_OF = Entries %i - %i of %i +REST_USE_MORE = Use 'amx_restrict list %i' for more +REST_USE_BEGIN = Use 'amx_restrict list 1' for begin +REST_CONF_SAVED = Configuration has been saved (file "%s") +REST_COULDNT_SAVE = Couldn't save configuration (file "%s") +REST_CONF_LOADED = Configuration has been loaded (file "%s") +REST_COULDNT_LOAD = Couldn't load configuration (file "%s") +COM_REST_USAGE = Usage: amx_restrict <command> [value] +COM_REST_COMMANDS = Commands: +COM_REST_ON = ^ton - set restriction on whole equipment +COM_REST_OFF = ^toff - remove restriction from whole equipment +COM_REST_ONV = ^ton <value> [...] - set specified restriction +COM_REST_OFFV = ^toff <value> [...] - remove specified restriction +COM_REST_LIST = ^tlist - display list of available equipment and weapons +COM_REST_SAVE = ^tsave - save restriction +COM_REST_LOAD = ^tload [file] - load restriction [from a file] +COM_REST_VALUES = Available values to restrict are:^nammo, equip, pistol, shotgun, sub, rifle, machine +COM_REST_TYPE = Type 'amx_restrict list' for more specified values +REST_WEAP = Restrict Weapons +SAVE_SET = Save settings +CONF_SAV_SUC = Configuration saved successfully +CONF_SAV_FAIL = Configuration saving failed!!! + +[de] +EQ_WE_RES = Ausruestung und Waffen wurden verboten +EQ_WE_UNRES = Ausruestung und Waffen wurden freigegeben +HAVE_BEEN = sind gewesen +HAS_BEEN = ist gewesen +RESTRICTED = verboten +UNRESTRICTED = wieder erlaubt +NO_EQ_WE = Konnte diese Ausruestung oder Waffe nicht finden +WEAP_RES = Waffenbverbot +VALUE = Wert +REST_ENTRIES_OF = Eintrag %i - %i von %i +REST_USE_MORE = Benutze 'amx_restrict list %i' fuer mehr Info´s +REST_USE_BEGIN = Benutze 'amx_restrict list 1' um zum Anfang zu gelangen +REST_CONF_SAVED = Konfiguration gesichert (Datei "%s") +REST_COULDNT_SAVE = Konfiguration konnte nicht gespeichert werden (Datei "%s") +REST_CONF_LOADED = Konfiguration wurde geladen (Datei "%s") +REST_COULDNT_LOAD = Konfiguration konnte nicht geladen werden (Datei "%s") +COM_REST_USAGE = Benutze: amx_restrict <Befehl> [Wert] +COM_REST_COMMANDS = Befehle: +COM_REST_ON = ^ton - setze Verbot auf die gesamte Ausruestung +COM_REST_OFF = ^toff - Verbot fuer Ausruestung aufheben +COM_REST_ONV = ^ton <value> [...] - setze spezielles Verbot +COM_REST_OFFV = ^toff <value> [...] - spezielles Verbot aufgehoben +COM_REST_LIST = ^tlist - zeigt die Liste der verfuegbaren Waffen und Ausruestungen +COM_REST_SAVE = ^tsave - Verbote speichern +COM_REST_LOAD = ^tload [file] - laedt Verbote [aus einer Datei] +COM_REST_VALUES = erlaubte Verbotswerte:^nammo, equip, pistol, shotgun, sub, rifle, machine +COM_REST_TYPE = Schreibe 'amx_restrict list' fuer mehr spezielle Werte +REST_WEAP = Waffen verbieten +SAVE_SET = Einstellungen speichern +CONF_SAV_SUC = Konfiguration erfolgreich gespeichert +CONF_SAV_FAIL = Speichern der Konfiguration fehlgeschlagen!!! + +[sr] +EQ_WE_RES = Oprema i oruzje su zabranjeni +EQ_WE_UNRES = Oprema i oruzje su oslobodjeni zabrane +HAVE_BEEN = je +HAS_BEEN = je +RESTRICTED = zabranjeno +UNRESTRICTED = slobodno +NO_EQ_WE = Nije moguce naci takvo opremu ili oruzje +WEAP_RES = Zabrane oruzja +VALUE = vrednost +REST_ENTRIES_OF = Vrednosti %i - %i od %i +REST_USE_MORE = Koristi 'amx_restrict list %i' za jos +REST_USE_BEGIN = Koristi 'amx_restrict list 1' za pocetak +REST_CONF_SAVED = Konfiguracija je uspesno sacuvana (fajl "%s") +REST_COULDNT_SAVE = Konfiguracija je neuspesno sacuvana (fajl "%s") +REST_CONF_LOADED = Konfiguracija je uspesno ucitana (fajl "%s") +REST_COULDNT_LOAD = Konfiguracija je neuspesno ucitana (fajl "%s") +COM_REST_USAGE = Koriscenje: amx_restrict <komanda> [vrednost] +COM_REST_COMMANDS = Komande: +COM_REST_ON = ^ton - postavi zabranu za celu opremu +COM_REST_OFF = ^toff - skini zabranu sa cele opreme +COM_REST_ONV = ^ton <vrednost> [...] - postavi zabranu na zadato oruzje +COM_REST_OFFV = ^toff <vrednost> [...] - skini zabranu sa zadatog oruzja +COM_REST_LIST = ^tlist - prikazi listu mogucih oruzja i opreme +COM_REST_SAVE = ^tsave - sacuvaj zabrene +COM_REST_LOAD = ^tload [fajl] - ucitaj zabrane [iz fajla] +COM_REST_VALUES = Moguce vrednosti za zabrane su:^nammo, equip, pistol, shotgun, sub, rifle, machine +COM_REST_TYPE = Kucaj 'amx_restrict list' za jos specificnih komandi +REST_WEAP = Zabrani oruzja +SAVE_SET = Sacuvaj Podesavanja +CONF_SAV_SUC = Konfiguracija je uspesno sacuvana +CONF_SAV_FAIL = Konfiguracija je neuspesno sacuvana!!! + +[tr] +EQ_WE_RES = Silahlar ve sayre yasakli listesinde +EQ_WE_UNRES = Silahlar ve sayre yasakli listesinden alinmisdir +HAVE_BEEN = olmus +HAS_BEEN = oldu +RESTRICTED = yasaklandi +UNRESTRICTED = yasakli degil +NO_EQ_WE = oylesi bir silah ve sayre bulunamadi +WEAP_RES = Silah Yasaklama +VALUE = deger +REST_ENTRIES_OF = Girisler %i - %i ve %i +REST_USE_MORE = 'amx_restrict list %i' i kullanin dahasini gormek icin +REST_USE_BEGIN = 'amx_restrict list 1' i kullanin baslatmak icin +REST_CONF_SAVED = Configler basari ile saklanmisdir (dosya "%s") +REST_COULDNT_SAVE = Configler saklanamadi (dosya "%s") +REST_CONF_LOADED = Config yuklenmis durumda (dosya "%s") +REST_COULDNT_LOAD = Config yuklenemedi (dosya "%s") +COM_REST_USAGE = Kullanim: amx_restrict <emir> [deger] +COM_REST_COMMANDS = Emirler: +COM_REST_ON = ^ton - tumunu yasakla +COM_REST_OFF = ^toff - tumunden yasakli listesini kaldir +COM_REST_ONV = ^ton <deger> [...] - ozellikle yasakla +COM_REST_OFFV = ^toff <deger> [...] - ozellikle yasakliyi kaldir +COM_REST_LIST = ^tlist - mevcud olan silahlar ve sayre listesini goster +COM_REST_SAVE = ^tsave - yasakli listesini sakla +COM_REST_LOAD = ^tload [dosya] - yasakli listesini yukle [dosyadan] +COM_REST_VALUES = Mevcud olan degerleri yasaklamak:^nammo, equip, pistol, shotgun, sub, rifle, machine +COM_REST_TYPE = 'amx_restrict list' i kullanin daha ozel degerleri gormek icin +REST_WEAP = Yasakli Silahlar +SAVE_SET = Ayarlari Saklayin +CONF_SAV_SUC = Ayarlar basari ile saklandi +CONF_SAV_FAIL = Ayarlar malesef saklanamadi!!! + +[fr] +EQ_WE_RES = Les armes et equipements ont ete restreints +EQ_WE_UNRES = Les armes et equipements ne sont plus restreints +HAVE_BEEN = ont ete +HAS_BEEN = a ete +RESTRICTED = restreint(e)(s) +UNRESTRICTED = retire(e)(s) des restrictions +NO_EQ_WE = l'Arme ou l'Equipement n'a pas ete trouve(e) +WEAP_RES = Restriction des Armes +VALUE = valeur +REST_ENTRIES_OF = Entrees %i - %i sur %i +REST_USE_MORE = Utilise 'amx_restrict list %i' pour la suite +REST_USE_BEGIN = Utilise 'amx_restrict list 1' pour le debut +REST_CONF_SAVED = La configuration a ete sauvee (fichier "%s") +REST_COULDNT_SAVE = La configuration n'a pas ete sauvee (fichier "%s") +REST_CONF_LOADED = La configuration a ete chargee (fichier "%s") +REST_COULDNT_LOAD = La configuration n'a pas ete chargee (fichier "%s") +COM_REST_USAGE = Utilisation: amx_restrict <commande> [valeur] +COM_REST_COMMANDS = Commandes: +COM_REST_ON = ^ton - restreint tous les equipements +COM_REST_OFF = ^toff - enleve la restriction de tous les equipements +COM_REST_ONV = ^ton <valeur> [...] - met une restriction specifique +COM_REST_OFFV = ^toff <valeur> [...] - enleve une restriction specifique +COM_REST_LIST = ^tlist - affiche la liste des equipements et armes disponibles +COM_REST_SAVE = ^tsave - sauver les restrictions +COM_REST_LOAD = ^tload [file] - charger les restriction [a partir d'un fichier] +COM_REST_VALUES = Les valeurs disponibles pour la restriction sont:^nammo, equip, pistol, shotgun, sub, rifle, machine +COM_REST_TYPE = Taper 'amx_restrict list' pour avoir une liste plus precise +REST_WEAP = Restreindre les Armes +SAVE_SET = Sauver +CONF_SAV_SUC = Configuration sauvegardee +CONF_SAV_FAIL = Sauvegarde de la configuration echouee!!! + +[sv] +EQ_WE_RES = Utrustning och vapen har begr'a'nsats +EQ_WE_UNRES = Utrustning och vapen har blivit obegr'a'nsade +HAVE_BEEN = har blivit +HAS_BEEN = har blivit +RESTRICTED = begr'a'nsad +UNRESTRICTED = obegr'a'nsad +NO_EQ_WE = Hittade ingen dylik utrustning eller vapen. +WEAP_RES = Vapenbegr'a'nsning +VALUE = pris +REST_ENTRIES_OF = Poster %i - %i av %i +REST_USE_MORE = Skriv 'amx_restrict list %i' f'o'r mera +REST_USE_BEGIN = Skriv 'amx_restrict list 1' f'o'r b'o'rjan +REST_CONF_SAVED = Konfigurationen har sparats (fil "%s") +REST_COULDNT_SAVE = Kunde inte spara konfigurationen (fil "%s") +REST_CONF_LOADED = Konfigurationen har laddats (fil "%s") +REST_COULDNT_LOAD = Kunde inte ladda konfigurationen (fil "%s") +COM_REST_USAGE = Skriv: amx_restrict <kommando> [v'a'rde] +COM_REST_COMMANDS = Kommandon: +COM_REST_ON = ^ton - s'a'tter begr'a'nsningar pa hela utrustningen +COM_REST_OFF = ^toff - tar bort begr'a'nsningar pa hela utrustningen +COM_REST_ONV = ^ton <v'a'rde> [...] - s'a'tter vald begr'a'nsning +COM_REST_OFFV = ^toff <v'a'rde> [...] - tar bort vald begr'a'nsning +COM_REST_LIST = ^tlist - visar lista med befintlig utrustning och vapen +COM_REST_SAVE = ^tsave - Spara begr'a'nsningar +COM_REST_LOAD = ^tload [fil] - ladda begr'a'nsningar +COM_REST_VALUES = Tillg'a'ngliga v'a'rden att begr'a'nsa e: :^nammo, equip, pistol, shotgun, sub, rifle, machine +COM_REST_TYPE = Skriv 'amx_restrict list' f'o'r mer v'a'rden +REST_WEAP = Begr'a'nsa vapen +SAVE_SET = Spara inst'a'llningar +CONF_SAV_SUC = Inst'a'llning sparad +CONF_SAV_FAIL = Spara inst'a'llningar misslyckades!!! + +[da] +EQ_WE_RES = Udstyr og vaaben er blevet forbudt +EQ_WE_UNRES = Udstyr og vaaben er blevet tilladt +HAVE_BEEN = er blevet +HAS_BEEN = er blevet +RESTRICTED = forbudt +UNRESTRICTED = tilladt +NO_EQ_WE = Kunne ikke finde et saadan udstyr eller vaaben +WEAP_RES = Vaaben forbud +VALUE = vaerdi +REST_ENTRIES_OF = indskrivninger %i - %i af %i +REST_USE_MORE = Brug 'amx_restrict list %i' for mere +REST_USE_BEGIN = Brug 'amx_restrict list 1' for at begynde +REST_CONF_SAVED = Konfiguration er blevet gemt (file "%s") +REST_COULDNT_SAVE = Kunne ikke gemme konfiguration (file "%s") +REST_CONF_LOADED = Konfiguration er blevet indlaest (file "%s") +REST_COULDNT_LOAD = Kunne ikke indlaese konfiguration (file "%s") +COM_REST_USAGE = Brug: amx_restrict <kommando> [value] +COM_REST_COMMANDS = Kommandoer: +COM_REST_ON = ^ton - Lav forbud paa alt udstyr +COM_REST_OFF = ^toff - Fjern forbud paa alt udstyr +COM_REST_ONV = ^ton <vaerdi> [...] - Lav specificeret forbud +COM_REST_OFFV = ^toff <vaerdi> [...] - Fjern specificeret forbud +COM_REST_LIST = ^tlist - viser liste med udstyr og vaaben til raadighed +COM_REST_SAVE = ^tsave - gem forbud +COM_REST_LOAD = ^tload [file] - indlaes restriction [fra en fil] +COM_REST_VALUES = Vaerdier til raadighed er, equip, pistol, shotgun, sub, rifle, machine +COM_REST_TYPE = Skriv 'amx_restrict list' for flere specificerede vaerdier +REST_WEAP = Forbyd vaaben +SAVE_SET = Gem indstillinger +CONF_SAV_SUC = Konfiguration gemt +CONF_SAV_FAIL = Gem konfiguration mislykkedes!!! + +[pl] +EQ_WE_RES = Wyposarzenie i bronie zostaly ograniczone +EQ_WE_UNRES = Wyposarzenie i bronie zostaly odblokowane +HAVE_BEEN = byl +HAS_BEEN = byl +RESTRICTED = ograniczony +UNRESTRICTED = odblokowany +NO_EQ_WE = Nie mozna znalesc takiego wyposarzenia lub broni +WEAP_RES = Ograniczenie broni +VALUE = wartosc +REST_ENTRIES_OF = Wpisy %i - %i z %i +REST_USE_MORE = Uzyj 'amx_restrict list %i' po wiecej +REST_USE_BEGIN = Uzyj 'amx_restrict list 1' do poczatku +REST_CONF_SAVED = Konfiguracja zostala zapisana (plik "%s") +REST_COULDNT_SAVE = Nie mozna zapisac konfiguracji (plik "%s") +REST_CONF_LOADED = Konfiguracja zostala zaladowana (plik "%s") +REST_COULDNT_LOAD = Nie mozna zaladowac konfiguracji (plik "%s") +COM_REST_USAGE = Uzycie: amx_restrict <komenda> [wartosc] +COM_REST_COMMANDS = Komendy: +COM_REST_ON = ^ton - ustawil ograniczenia na cale wyposarzenie +COM_REST_OFF = ^toff - wylaczyl ograniczenie na cale wyposarzenie +COM_REST_ONV = ^ton <value> [...] - ustawil specyficzne ograniczenie +COM_REST_OFFV = ^toff <value> [...] - usunal specyficzne ograniczenie +COM_REST_LIST = ^tlist - wyswietl liste broni i wyposarzenia +COM_REST_SAVE = ^tsave - zapisz ograniczenia +COM_REST_LOAD = ^tload [file] - zaladuj ograniczenia [z pliku] +COM_REST_VALUES = mozliwe wartosci na ktore mozna zalozyc ograniczenia:^nammo, equip, pistol, shotgun, sub, rifle, machine +COM_REST_TYPE = Wpisz 'amx_restrict list' po wiecej specyficznych wartosci +REST_WEAP = Ogranicz bronie +SAVE_SET = Zapisz ustawienia +CONF_SAV_SUC = Konfiguracja zapisana z powodzeniem +CONF_SAV_FAIL = Blad podczas zapisu konfiguracji + +[nl] +EQ_WE_RES = Uitrusting en wapens zijn verboden +EQ_WE_UNRES = Uitrusting en wapens zijn toegestaan +HAVE_BEEN = zijn +HAS_BEEN = is +RESTRICTED = verboden +UNRESTRICTED = toegestaan +NO_EQ_WE = Kon dat wapen of die uitrusting niet vinden +WEAP_RES = Wapenrestricties +VALUE = waarde +REST_ENTRIES_OF = Entries %i - %i van de %i +REST_USE_MORE = Typ 'amx_restrict list %i' voor meer +REST_USE_BEGIN = Typ 'amx_restrict list 1' voor het begin +REST_CONF_SAVED = Configuratie is bewaard (file "%s") +REST_COULDNT_SAVE = Kon configuratie niet bewaren (file "%s") +REST_CONF_LOADED = Configuratie is geladen (file "%s") +REST_COULDNT_LOAD = Kon configuratie niet laden (file "%s") +COM_REST_USAGE = Typ: amx_restrict <commando> [waarde] +COM_REST_COMMANDS = Commando's: +COM_REST_ON = ^ton - verboden zetten op hele uitrusting +COM_REST_OFF = ^toff - verbod op hele uitrusting verwijderen +COM_REST_ONV = ^ton <waarde> [...] - gespecificeerde restrictie instellen +COM_REST_OFFV = ^toff <waarde> [...] - gespecificeerde restrictie verwijderen +COM_REST_LIST = ^tlist - lijst van uitrustingen en wapens weergeven +COM_REST_SAVE = ^tsave - verbod bewaren +COM_REST_LOAD = ^tload [bestand] - verboden laden [vanuit een bestand] +COM_REST_VALUES = Beschikbare waarden om te verbieden zijn:^nammo, equip, pistol, shotgun, sub, rifle, machine +COM_REST_TYPE = Typ 'amx_restrict list' voor meer gespecificeerde waarden +REST_WEAP = Wapens Verbieden +SAVE_SET = Instellingen Bewaren +CONF_SAV_SUC = Configuratie bewaren gelukt +CONF_SAV_FAIL = Configuratie bewaren MISlukt!!! + +[es] +EQ_WE_RES = El equipamiento y las armas han sido restringidas +EQ_WE_UNRES = El equipamiento y las armas han sido permitidas +HAVE_BEEN = han sido +HAS_BEEN = ha sido +RESTRICTED = restringido +UNRESTRICTED = permitido +NO_EQ_WE = No se encontro dicho equipamiento o arma +WEAP_RES = Restriccion de Armas +VALUE = valor +REST_ENTRIES_OF = Entradas %i - %i de %i +REST_USE_MORE = Escribe 'amx_restrict list %i' para mostrar mas +REST_USE_BEGIN = Escribe 'amx_restrict list 1' para volver al principio +REST_CONF_SAVED = La configuracion ha sido guardada (archivo "%s") +REST_COULDNT_SAVE = No se pudo guardar la configuracion (archivo "%s") +REST_CONF_LOADED = La configuracion ha sido cargada (archivo "%s") +REST_COULDNT_LOAD = No se pudo cargar la configuracion (archivo "%s") +COM_REST_USAGE = Uso: amx_restrict <comando> [valor] +COM_REST_COMMANDS = Comandos: +COM_REST_ON = ^ton - establece restricciones en todo el equipamiento +COM_REST_OFF = ^toff - borra las restricciones de todo el equipamiento +COM_REST_ONV = ^ton <valor> [...] - establece la restriccion especificada +COM_REST_OFFV = ^toff <valor> [...] - borra la restriccion especificada +COM_REST_LIST = ^tlist - muestra la lista de equipamiento y armas permitidas +COM_REST_SAVE = ^tsave - guarda las restricciones +COM_REST_LOAD = ^tload [archivo] - carga las restricciones [de un archivo] +COM_REST_VALUES = Valores disponibles para restringir:^nammo, equip, pistol, shotgun, sub, rifle, machine +COM_REST_TYPE = Escribe 'amx_restrict list' para mas valores especificos +REST_WEAP = Restringir Armas +SAVE_SET = Guardar Configuracion +CONF_SAV_SUC = Configuracion guardada con exito +CONF_SAV_FAIL = No se pudo guardar la configuracion!!! + +[bp] +EQ_WE_RES = Equipamentos e armas foram limitados +EQ_WE_UNRES = Equipamentos e armas foram ilimitados +HAVE_BEEN = foram +HAS_BEEN = foi +RESTRICTED = limitado +UNRESTRICTED = ilimitado +NO_EQ_WE = Nao pode achar este equipamento ou arma +WEAP_RES = Limitacao de Armas +VALUE = valor +REST_ENTRIES_OF = Entradas %i - %i de %i +REST_USE_MORE = Use 'amx_restrict listando %i' para ver mais +REST_USE_BEGIN = Use 'amx_restrict listando 1' para voltar ao inicio +REST_CONF_SAVED = Configuracao foi salva (arquivo "%s") +REST_COULDNT_SAVE = Nao pode salvar a configuracao (arquivo "%s") +REST_CONF_LOADED = Configuracao foi carregada (arquivo "%s") +REST_COULDNT_LOAD = Nao pode carregar a configuracao (arquivo "%s") +COM_REST_USAGE = Use: amx_restrict <comando> [valor] +COM_REST_COMMANDS = Comandos: +COM_REST_ON = ^ton - limitar todos equipamentos +COM_REST_OFF = ^toff - remover limitacao para todos equipamentos +COM_REST_ONV = ^ton <valor> [...] - configurar limitacao especifica +COM_REST_OFFV = ^toff <valor> [...] - remover limitacao especificada +COM_REST_LIST = ^tlist - lista de exibicao de equipamento e armas disponiveis +COM_REST_SAVE = ^tsave - salvar limitacao +COM_REST_LOAD = ^tload [arquivo] - carregar limitacao [de um arquivo] +COM_REST_VALUES = Valores disponíveis para limitar sao:^nammo, equip, pistol, shotgun, sub, rifle, machine +COM_REST_TYPE = Escreva 'amx_restrict list' para mais valores especificos +REST_WEAP = Limitar Armas +SAVE_SET = Salvar configuracoes +CONF_SAV_SUC = Configuracao salva com sucesso +CONF_SAV_FAIL = Configuracao falhou ao salvar!!! + +[cz] +EQ_WE_RES = Vybaveni a zbrane byly omezeny +EQ_WE_UNRES = Vypaveni a zbrane byly opet povoleny +HAVE_BEEN = byly +HAS_BEEN = byl +RESTRICTED = omezen +UNRESTRICTED = omezeny +NO_EQ_WE = Nemuzu najit takove vybaveni nebo zbran +WEAP_RES = Omezeni zbrani +VALUE = hodnota +REST_ENTRIES_OF = Polozky %i - %i z %i +REST_USE_MORE = Napis 'amx_restrict list %i' pro vice +REST_USE_BEGIN = Napis 'amx_restrict list 1' pro zacatek +REST_CONF_SAVED = Konfigurace byla ulozena (soubor "%s") +REST_COULDNT_SAVE = Nemuzu ulozit konfiguraci (soubor "%s") +REST_CONF_LOADED = Konfigurace byla nactena (soubor "%s") +REST_COULDNT_LOAD = Nemuzu nacist konfiguraci (soubor "%s") +COM_REST_USAGE = Pouziti: amx_restrict <command> [value] +COM_REST_COMMANDS = Prikazy: +COM_REST_ON = ^ton - nastavit omezeni na cele vybaveni +COM_REST_OFF = ^toff - znovue povolit cele vybaveni +COM_REST_ONV = ^ton <value> [...] - nastavi speceficke omezeni +COM_REST_OFFV = ^toff <value> [...] - znovu povoli specificke vybaveni nebo zbran +COM_REST_LIST = ^tlist - zobrazi seznam dostupneho vybaveni a zbrani +COM_REST_SAVE = ^tsave - ulozi omezeni +COM_REST_LOAD = ^tload [file] - nacte omezeni [ze souboru] +COM_REST_VALUES = Pouzitelne hodnoty k omezeni jsou:^nammo, equip, pistol, shotgun, sub, rifle, machine +COM_REST_TYPE = Napis 'amx_restrict list' pro vice specifikaci +REST_WEAP = Omezeni zbrani +SAVE_SET = Ulozit nastaveni +CONF_SAV_SUC = Konfigurace ulozena +CONF_SAV_FAIL = Konfiguraci se nepovedlo ulozit!!! + +[fi] +EQ_WE_RES = Aseet ja varusteet on kielletty +EQ_WE_UNRES = Aseet ja varusteet on sallittu +HAVE_BEEN = on ollut +HAS_BEEN = on ollut +RESTRICTED = kielletty +UNRESTRICTED = sallittu +NO_EQ_WE = Ei loydetty sellaista asetta/varustetta +WEAP_RES = Aseiden kieltaminen +VALUE = arvo +REST_ENTRIES_OF = Kohdat %i - %i Kaikkiaan %i +REST_USE_MORE = Kirjoita 'amx_restrict list %i' saadaksesi lisatietoa +REST_USE_BEGIN = Kirjoita 'amx_restrict list 1' aloittaaksesi +REST_CONF_SAVED = Saadot tallennettu (tiedosto "%s") +REST_COULDNT_SAVE = Ei voitu tallnentaa saatoja (tiedosto "%s") +REST_CONF_LOADED = Saadot on ladattu (tiedosto "%s") +REST_COULDNT_LOAD = Ei voitu ladata saatotiedostoa (tiedosto "%s") +COM_REST_USAGE = Kaytto: amx_restrict <komento> [arvo] +COM_REST_COMMANDS = Komennot: +COM_REST_ON = ^ton - Aseta kielto koko varustukselle +COM_REST_OFF = ^toff - Poista kielto koko varustukselta +COM_REST_ON = ^ton <arvo> [...] - Aseta maaritetty kielto +COM_REST_OFF = ^toff <value> [...] - Poista maaritelty kielto +COM_REST_LIST = ^tlist - Nayta lista saatavilla olevista aseista ja varusteista +COM_REST_SAVE = ^tsave - Tallenna kiellot +COM_REST_LOAD = ^tload [file] - Lataa kiellot [tiedostosta] +COM_REST_VALUES = Arvot, jotka voi kieltaa, ovat:^nammo, equip, pistol, shotgun, sub, rifle, machine +COM_REST_TYPE = Kirjoita 'amx_restrict list' saadaksesi tarkemmat arvot +REST_WEAP = Kiella aseita +SAVE_SET = Tallenna asetukset +CONF_SAV_SUC = Saadot tallennettu onnistuneesti +CONF_SAV_FAIL = Saatojen tallentaminen epaonnistui + +[ls] +EQ_WE_RES = Eq|_|!pm3|\|7 4|\|d w34p0|\|s h4v3 b33|\| r3s7r!c73d +EQ_WE_UNRES = Eq|_|!pm3|\|7 4|\|d w34p0|\|s h4v3 b33|\| |_||\|r3s7r!c73d +HAVE_BEEN = h4v3 b33|\| +HAS_BEEN = h4s b33|\| +RESTRICTED = r3s7r!c73d +UNRESTRICTED = |_||\|r3s7r!c73d +NO_EQ_WE = C0|_|ld|\|'7 f!|\|d s|_|ch 3q|_|!pm3|\|7 0r w34p0|\| +WEAP_RES = W34p0|\|s R3s7r!c7!0|\| +VALUE = v4l|_|3 +REST_ENTRIES_OF = E|\|7r!3s %i - %i 0f %i +REST_USE_MORE = Us3 'amx_restrict list %i' f0r m0r3 +REST_USE_BEGIN = Us3 'amx_restrict list 1' f0r b3g!|\| +REST_CONF_SAVED = C0|\|f!g|_|r47!0|\| h4s b33|\| s4v3d (f!l3 "%s") +REST_COULDNT_SAVE = C0|_|ld|\|'7 s4v3 c0|\|f!g|_|r47!0|\| (f!l3 "%s") +REST_CONF_LOADED = C0|\|f!g|_|r47!0|\| h4s b33|\| l04d3d (f!l3 "%s") +REST_COULDNT_LOAD = C0|_|ld|\|'7 l04d c0|\|f!g|_|r47!0|\| (f!l3 "%s") +COM_REST_USAGE = Us4g3: amx_restrict <command> [value] +COM_REST_COMMANDS = C0mm4|\|ds: +COM_REST_ON = ^ton - s37 r3s7r!c7!0|\| 0|\| wh0l3 3q|_|!pm3|\|7 +COM_REST_OFF = ^toff - r3m0v3 r3s7r!c7!0|\| fr0m wh0l3 3q|_|!pm3|\|7 +COM_REST_ONV = ^ton <value> [...] - s37 sp3c!f!3d r3s7r!c7!0|\| +COM_REST_OFFV = ^toff <value> [...] - r3m0v3 sp3c!f!3d r3s7r!c7!0|\| +COM_REST_LIST = ^tlist - d!spl4y l!s7 0f 4v4!l4bl3 3q|_|!pm3|\|7 4|\|d w34p0|\|s +COM_REST_SAVE = ^tsave - s4v3 r3s7r!c7!0|\| +COM_REST_LOAD = ^tload [file] - l04d r3s7r!c7!0|\| [fr0m 4 f!l3] +COM_REST_VALUES = Av4!l4bl3 v4l|_|3s 70 r3s7r!c7 4r3:^nammo, equip, pistol, shotgun, sub, rifle, machine +COM_REST_TYPE = Typ3 'amx_restrict list' f0r m0r3 sp3c!f!3d v4l|_|3s +REST_WEAP = R3s7r!c7 W34p0|\|s +SAVE_SET = S4v3 s377!|\|gs +CONF_SAV_SUC = C0|\|f!g|_|r47!0|\| s4v3d s|_|cc3ssf|_|lly +CONF_SAV_FAIL = C0|\|f!g|_|r47!0|\| s4v!|\|g f4!l3d!!! + +[bg] +EQ_WE_RES = Orajiata ne sa pozvoleni +EQ_WE_UNRES = Orajiata sa pozvoleni +HAVE_BEEN = sa +HAS_BEEN = sa +RESTRICTED = ne sa pozvoleni +UNRESTRICTED = sa pozvoleni +NO_EQ_WE = Neuspq da nameri orajieto +WEAP_RES = Orajiata ne sa pozvoleni +VALUE = status +REST_ENTRIES_OF = Vkarani %i - %i ot %i +REST_USE_MORE = Ispolzvai 'amx_restrict list %i' za pove4e +REST_USE_BEGIN = Ispolzvai 'amx_restrict list 1' za na4alo +REST_CONF_SAVED = Configuraciqta be6e zapametena (file "%s") +REST_COULDNT_SAVE = Cofiguraciqta nebe6e zapametena (file "%s") +REST_CONF_LOADED = Configuraciqta be6e zaredena (file "%s") +REST_COULDNT_LOAD = Configuraciqta ne be6e zaredena (file "%s") +COM_REST_USAGE = Ispolzvai: amx_restrict <comanda> [value] +COM_REST_COMMANDS = Comandi: +COM_REST_ON = ^ton - pusni zabrana na vsi4kite orajia +COM_REST_OFF = ^toff - mahni zabranata na vsi4kite orajia +COM_REST_ONV = ^ton <value> [...] - nastroi specifi4na zabrana +COM_REST_OFFV = ^toff <value> [...] - mahni specifi4nata zabrana +COM_REST_LIST = ^tlist - Pokaji list na pozvoleni orajiq +COM_REST_SAVE = ^tsave - zapameti zabranata +COM_REST_LOAD = ^tload [file] - zaredi zabrana [ot file] +COM_REST_VALUES = Pozvoleni orajia za zabrana sa:^nammo, equip, pistol, shotgun, sub, rifle, machine +COM_REST_TYPE = Napi6i 'amx_restrict list' za po specifi4ni orajia +REST_WEAP = Zabrani Orajia +SAVE_SET = Zapameti nastroikite +CONF_SAV_SUC = Configuraciqta be6e zapametena +CONF_SAV_FAIL = Configuraciqta ne be6e zapametena!!! + +[ro] +EQ_WE_RES = Echipamentul si armele au fost restrictionate +EQ_WE_UNRES = Restrictia echipamentului si armelor a fost inlaturata +HAVE_BEEN = au fost +HAS_BEEN = a fost +RESTRICTED = adaugate restrictii +UNRESTRICTED = inlaturate restrictile +NO_EQ_WE = Nu a putut fi gasit acest echipament sau arma +WEAP_RES = Restrictii Arme +VALUE = valoare +REST_ENTRIES_OF = Intrari %i - %i din %i +REST_USE_MORE = Scrie 'amx_restrict list %i' pentru mai mult +REST_USE_BEGIN = Scrie 'amx_restrict list 1' pentru inceput +REST_CONF_SAVED = Configuratia a fost salvata (fisier "%s") +REST_COULDNT_SAVE = Nu s-a putut salva configuratia (fisier "%s") +REST_CONF_LOADED = Configuratia a fost incarcata (fisier "%s") +REST_COULDNT_LOAD = Nu s-a putut incarca configuratia (file "%s") +COM_REST_USAGE = Folosire: amx_restrict <comanda> [valoare] +COM_REST_COMMANDS = Comenzi: +COM_REST_ON = ^ton - adauga restrictii pe tot echipamentul +COM_REST_OFF = ^toff - inlatura restrictile de pe tot echipamentul +COM_REST_ONV = ^ton <valoare> [...] - adauga restrictile specificate +COM_REST_OFFV = ^toff <valoare> [...] - inlatura restrictile specificate +COM_REST_LIST = ^tlist - afisare lista cu echipamente si arme +COM_REST_SAVE = ^tsave - salveaza restrictii +COM_REST_LOAD = ^tload [fisier] - incarca restrictii [dintr-un fisier] +COM_REST_VALUES = Valorile valabile pentru restrictionare sunt:^nammo, equip, pistol, shotgun, sub, rifle, machine +COM_REST_TYPE = Scrie 'amx_restrict list' pentru mai multe valori specificate +REST_WEAP = Restrictioneaza arme +SAVE_SET = Salveaza setari +CONF_SAV_SUC = Configuratia a fost salvata cu succes +CONF_SAV_FAIL = Salvarea configuratiei a esuat!!! + +[hu] +EQ_WE_RES = Felszereles es a fegyverek felfugesztve +EQ_WE_UNRES = Felszereles es a fegyverek engedelyezve +HAVE_BEEN = lettek +HAS_BEEN = lettek +RESTRICTED = felfiggesztve +UNRESTRICTED = engedelyezve +NO_EQ_WE = Nem lehet talalni ezt a fegyvert +WEAP_RES = Fegyver felfuggesztes +VALUE = ertek +REST_ENTRIES_OF = Entries %i - %i of %i +REST_USE_MORE = Irj 'amx_restrict list %i' a tobbhoz +REST_USE_BEGIN = Irj 'amx_restrict list 1' az elsohoz +REST_CONF_SAVED = Beallitas elmentve (file "%s") +REST_COULDNT_SAVE = Nem lehet menteni (file "%s") +REST_CONF_LOADED = Beallitas betoltve (file "%s") +REST_COULDNT_LOAD = Nem lehet betolteni a beallitast(file "%s") +COM_REST_USAGE = Usage: amx_restrict <command> [value] +COM_REST_COMMANDS = Parancsok: +COM_REST_ON = ^ton - set restriction on whole equipment +COM_REST_OFF = ^toff - remove restriction from whole equipment +COM_REST_ONV = ^ton <value> [...] - set specified restriction +COM_REST_OFFV = ^toff <value> [...] - remove specified restriction +COM_REST_LIST = ^tlist - az elerheto fegyverek mutatasa +COM_REST_SAVE = ^tsave - felfuggesztes mentese +COM_REST_LOAD = ^tload [file] - felfuggesztes botoltese [filebol] +COM_REST_VALUES = Available values to restrict are:^nammo, equip, pistol, shotgun, sub, rifle, machine +COM_REST_TYPE = Irj 'amx_restrict list' a tobbi ertekhez +REST_WEAP = Felfiggesztett fegyverek +SAVE_SET = Beallitasok mentese +CONF_SAV_SUC = Beallitasok sikeresen elmentve +CONF_SAV_FAIL = Nem sikerult a mentes!!! + +[lt] +EQ_WE_RES = Amunicija ir ginklai buvo uzdrausti +EQ_WE_UNRES = Amunicija ir ginklai buvo neuzdrausti +HAVE_BEEN = buvo +HAS_BEEN = buvo +RESTRICTED = uzdrausti +UNRESTRICTED = neuzdrausti +NO_EQ_WE = Negali rasti tiek amunicijos ar ginklu +WEAP_RES = Ginklu uzdraudimas +VALUE = verte +REST_ENTRIES_OF = Irasai %i - %i is %i +REST_USE_MORE = Naudok 'amx_restrict sarasa %i' del daugiau info +REST_USE_BEGIN = Naudok 'amx_restrict 1' kad pradetum +REST_CONF_SAVED = Konfiguracija issaugota (failas "%s") +REST_COULDNT_SAVE = Negali issaugoti konfigo (failas "%s") +REST_CONF_LOADED = Konfiguracija buvo uzkrauta (failas "%s") +REST_COULDNT_LOAD = Negali uzkrauti konfigo (failas "%s") +COM_REST_USAGE = Naudojimas: amx_restrict <komanda> [skaicius] +COM_REST_COMMANDS = Komandos: +COM_REST_ON = ^tijungti - nustatyti draudimus ant visos amunicijos +COM_REST_OFF = ^tisjungti - pasalinti draudimus visai amunicijai +COM_REST_ONV = ^tijungti <skaicius> [...] - nustatyti specialu draudima +COM_REST_OFFV = ^tisjungti <skaicius> [...] - nuimti specialu draudima +COM_REST_LIST = ^tsarasas - parodyti sarasa prieinamos amunicijos ir ginkluotes +COM_REST_SAVE = ^tissaugoti - issaugoti draudima +COM_REST_LOAD = ^tuzkrauti [failas] - uzkrauti draudima [is failo] +COM_REST_VALUES = Galimi variantai draudimui yra:^nsaudmenys, apranga, pistoletai, vincesteriai, paprasti automatai, automatai, kulkosvaidis +COM_REST_TYPE = Rasyk 'amx_restrict list' del daugiau galimu variantu +REST_WEAP = Uzdrausti ginklus +SAVE_SET = Issaugoti nustatymus +CONF_SAV_SUC = Konfiguracijos issaugotos +CONF_SAV_FAIL = Konfiguracijos neissaugotos!!! + +[sk] +EQ_WE_RES = Vybavenie a zbrane boli obmedzene +EQ_WE_UNRES = Vybavenie a zbrane boli opat povolene +HAVE_BEEN = boli +HAS_BEEN = bol +RESTRICTED = obmedzeny +UNRESTRICTED = obmedzene +NO_EQ_WE = Nemozem najst take vybavenie alebo zbran +WEAP_RES = Obmedzenie zbrani +VALUE = hodnota +REST_ENTRIES_OF = Polozky %i - %i z %i +REST_USE_MORE = Napis 'amx_restrict list %i' pre viac +REST_USE_BEGIN = Napis 'amx_restrict list 1' pre zaciatok +REST_CONF_SAVED = Konfiguracia bola ulozena (subor "%s") +REST_COULDNT_SAVE = Nemozem ulozit konfiguraciu (subor "%s") +REST_CONF_LOADED = Konfiguracia bola nacitana (subor "%s") +REST_COULDNT_LOAD = Nemozem nacitat konfiguraciu (subor "%s") +COM_REST_USAGE = Pouzitie: amx_restrict <command> [value] +COM_REST_COMMANDS = Prikazy: +COM_REST_ON = ^ton - nastavit obmedzenie na cele vybavenie +COM_REST_OFF = ^toff - znovu povolit cele vybavenie +COM_REST_ONV = ^ton <value> [...] - nastavi specificke obmedzenie +COM_REST_OFFV = ^toff <value> [...] - znovu povoli specificke vybavenie alebo zbran +COM_REST_LIST = ^tlist - zobrazi zoznam dostupneho vybavenia a zbrani +COM_REST_SAVE = ^tsave - ulozi obmedzenia +COM_REST_LOAD = ^tload [file] - nacita obmedzenia [zo suboru] +COM_REST_VALUES = Pouzitelne hodnoty k obmedzeniu su:^nammo, equip, pistol, shotgun, sub, rifle, machine +COM_REST_TYPE = Napis 'amx_restrict list' pre viac specifikacii +REST_WEAP = Obmedzenie zbrani +SAVE_SET = Ulozit nastavenie +CONF_SAV_SUC = Konfiguracia ulozena +CONF_SAV_FAIL = Konfiguraciu sa nepodarilo ulozit!!! + +[mk] +EQ_WE_RES = Opremata i oruzjeto se celosno zabraneti +EQ_WE_UNRES = Opremata i oruzjeto se oslobodeni od zabranata +HAVE_BEEN = bese +HAS_BEEN = bese +RESTRICTED = zabraneto +UNRESTRICTED = orizjeto moze slobodno da se koristi +NO_EQ_WE = Ne moze da se najde takva oprema ili oruzje +WEAP_RES = Zabrana za oprema i oruzja +VALUE = vrednost +REST_ENTRIES_OF = Vrednosti %i - %i od %i +REST_USE_MORE = Napisi 'amx_restrict list %i' za uste mozni vrednosti +REST_USE_BEGIN = Napisi 'amx_restrict list 1' za od pocetok +REST_CONF_SAVED = Listata so zabraneti oruzja e uspesno zacuvana (fajl "%s") +REST_COULDNT_SAVE = Listata so zabraneti oruzja ne e zacuvana (fajl "%s") +REST_CONF_LOADED = Listata so zabraneti oruzja e uspesno vcitana (fajl "%s") +REST_COULDNT_LOAD = Listata so zabraneti oruzja ne e vcitana (fajl "%s") +COM_REST_USAGE = Koristenje: amx_restrict <komanda> [vrednost] +COM_REST_COMMANDS = Komandi: +COM_REST_ON = ^ton - postavi zabrana za cela oprema +COM_REST_OFF = ^toff - trgni ja zabranata za cela oprema +COM_REST_ONV = ^ton <vrednost> [...] - postavi zabrana za dadeno oruzje +COM_REST_OFFV = ^toff <vrednost> [...] - trgni ja zabranata za dadenoto oruzje +COM_REST_LIST = ^tlist - prikazi ja listata so mozni oruzja i oprema +COM_REST_SAVE = ^tsave - zacuvaj gi zabranite +COM_REST_LOAD = ^tload [fajl] - vcitaj zabrani [od fajl] +COM_REST_VALUES = Primer za mozni vrednosti za zabrana se:^nammo, equip, pistol, shotgun, sub, rifle, machine itn... +COM_REST_TYPE = Napisi 'amx_restrict list' za site mozni vrednosti +REST_WEAP = Zabrana za oprema i oruzja +SAVE_SET = Zacuvaj gi podesuvanjata +CONF_SAV_SUC = Listata so zabraneti oruzja e uspesno zacuvana +CONF_SAV_FAIL = Listata so zabraneti oruzja ne e zacuvana!!! diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/scrollmsg.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/scrollmsg.txt new file mode 100644 index 0000000..28aee73 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/scrollmsg.txt @@ -0,0 +1,99 @@ +[en] +MIN_FREQ = Minimal frequency for this message is %d seconds +MSG_FREQ = Scrolling message displaying frequency: %d:%02d minutes +MSG_DISABLED = Scrolling message disabled + +[de] +MIN_FREQ = Minimale Frequenz fuer diese Anzeige sind %d Sekunden +MSG_FREQ = Scrollnachricht Anzeigefrequenz: %d:%02d Minuten +MSG_DISABLED = Scrollnachrichten abgeschaltet + +[sr] +MIN_FREQ = Minimalno vreme prikazivanja za ovu poruku je %d sekundi +MSG_FREQ = Vreme prikazivanja prolazece poruke: %d:%02d minut(a) +MSG_DISABLED = Prolazeca poruka iskljucna + +[tr] +MIN_FREQ = Bu mesajin en az frekansi %d saniyedir +MSG_FREQ = Kaydirilan mesaj gosterme frekansi: %d:%02d dakika +MSG_DISABLED = Kaydirilan mesaj kullanimda degil + +[fr] +MIN_FREQ = La frequence minimale pour ce message est de %d secondes +MSG_FREQ = La frequence d'affichage des messages deroulants est de: %d:%02d minutes +MSG_DISABLED = Les messages deroulants sont desactives + +[sv] +MIN_FREQ = Minimefrekvens f'o'r detta meddelande e %d sekunder +MSG_FREQ = Frekvens f'o'r rullande meddelanden: %d:%02d minuter +MSG_DISABLED = Rullande meddelande avst'a'ngt + +[da] +MIN_FREQ = Minimum frekvens for denne besked er %d sekunder +MSG_FREQ = Rullende besked visnings frekvens: %d:%02d minutter +MSG_DISABLED = Rullende besked slaaet fra + +[pl] +MIN_FREQ = Minimalna czestotliwosc dla tej wiadomosci to %d sekund +MSG_FREQ = Czestotliwosc wyswietlania wiadomosci: %d:%02d minut +MSG_DISABLED = Wiadomosci przesuwane wylaczone + +[nl] +MIN_FREQ = Minimale frequentie voor dit bericht is %d seconden +MSG_FREQ = Scrollend bericht frequentie: %d:%02d minuten +MSG_DISABLED = Scrollend bericht uitgeschakeld + +[es] +MIN_FREQ = La frecuencia minima para este mensaje es de %d segundos +MSG_FREQ = Frecuencia de aparicion del mensaje rotatorio: %d:%02d minutos +MSG_DISABLED = Mensaje rotatorio desactivado + +[bp] +MIN_FREQ = Frequencia minima para esta mensagem e de %d segundos +MSG_FREQ = Mensagem Rolante sera exibida na frequencia de: %d:%02d minutos +MSG_DISABLED = Mensagem Rolante desabilitada + +[cz] +MIN_FREQ = Minimalalni frekvence teto zpravy je %d sekund +MSG_FREQ = Frekvence zobrazeni skrolujici zpravy: %d:%02d minut +MSG_DISABLED = Skrolovaci zpravy vyple + +[fi] +MIN_FREQ = Minimitaajuus talle viestille on %d sekuntia +MSG_FREQ = Vierivan tekstin taajuus on: %d:%02d minuuttia +MSG_DISABLED = Vieriva teksti poissa kaytosta + +[ls] +MIN_FREQ = M!n!m4| fr3qu3ncy f0r th!s m3ss4ge !s %d s3c0ndz +MSG_FREQ = $cr0||!ng m3ss4g3 d!spl4y!ng fr3qu3ncy: %d:%02d m!nut3z +MSG_DISABLED = |N0T 3NUFF M4N4!| - $cr0||!ng m3ss4g3 d!s4bl3d + +[bg] +MIN_FREQ = Minimalnoto povtarq6to vreme za tova saob6tenie e %d secundi +MSG_FREQ = Scrolling saob6tenieto se pokazva vseki: %d:%02d minuti +MSG_DISABLED = Scrolling saob6tenieto e isklu4eno + +[ro] +MIN_FREQ = Frecventa minima pentru acest mesaj este %d secunde +MSG_FREQ = Frecventa afisarii messajului Rulant: %d:%02d minute +MSG_DISABLED = Mesajul Rulant dezactivat + +[hu] +MIN_FREQ = A minimum ido erre az uzenetre %d perc +MSG_FREQ = Mozgo uzenet: %d:%02d percenkent +MSG_DISABLED = Scrolling uzenet letiltva + +[lt] +MIN_FREQ = Minimalus daznumas siai zinutei yra %d sekundes +MSG_FREQ = Slenkancios zinutes daznumas: %d:%02d minutes +MSG_DISABLED = Slenkancioji zinute isjungta + +[sk] +MIN_FREQ = Minimalna frekvencia tejto spravy je %d sekund +MSG_FREQ = Frekvencia zobrazenia skrolovacej spravy: %d:%02d minut +MSG_DISABLED = Skrolovacie zpravy vypnute + +[mk] +MIN_FREQ = Minimalnoto vreme na prikazuvanje na ovaa poraka e %d sekundi +MSG_FREQ = Vreme za prikazuvanje na leteckite poraki: %d:%02d minuti +MSG_DISABLED = Leteckata poraka e isklucena diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/stats_dod.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/stats_dod.txt new file mode 100644 index 0000000..b8a7f12 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/stats_dod.txt @@ -0,0 +1,1895 @@ +[en] +WHOLEBODY = whole body +HEAD = head +CHEST = chest +STOMACH = stomach +LEFTARM = leftarm +RIGHTARM = rightarm +LEFTLEG = leftleg +RIGHTLEG = rightleg +MULTI_MSG = Multi-Kill! %s^nwith %d kills (%d hs) +ULTRA_MSG = Ultra-Kill!!! %s^nwith %d kills (%d hs) +SPREE_MSG = %s IS ON A KILLING SPREE!!!^nwith %d kills (%d hs) +RAMPAGE_MSG = RAMPAGE!!! %s^nwith %d kills (%d hs) +UNSTOPPABLE_MSG = %s IS UNSTOPPABLE!!!^nwith %d kills (%d hs) +MONSTER_MSG = %s IS A MONSTER!^nwith %d kills (%d hs) +GODLIKE_MSG = %s IS GODLIKE!!!!^nwith %d kills (%d hs) +MULTI_SMALL = %s: Multi-Kill! +ULTRA_SMALL = %s: Ultra-Kill!!! +SPREE_SMALL = %s IS ON A KILLING SPREE!!! +RAMPAGE_SMALL = %s: RAMPAGE!!! +UNSTOPPABLE_SMALL = %s IS UNSTOPPABLE!!! +MONSTER_SMALL = %s IS A MONSTER! +GODLIKE_SMALL = %s IS GODLIKE!!! +KNIFE_MSG1 = %s sliced and diced %s +KNIFE_MSG2 = %s pulled out knife and gutted %s +KNIFE_MSG3 = %s sneaks carefully behind and knifed %s +KNIFE_MSG4 = %s knived %s +HE_MSG1 = %s sends a little gift to %s +HE_MSG2 = %s throws a small present to %s +HE_MSG3 = %s made a precision throw to %s +HE_MSG4 = %s got a big explosion for %s +SHE_MSG1 = %s detonated himself with a grenade +SHE_MSG2 = %s trys the effect of a grenade +SHE_MSG3 = %s kicked a grenade into his own ass +SHE_MSG4 = %s explodes! +HEAD_MSG1 = $kn killed $vn with a well^nplaced shot to the head! +HEAD_MSG2 = $kn removed $vn's^nhead with the $wn +HEAD_MSG3 = $kn turned $vn's head^ninto pudding with the $wn +HEAD_MSG4 = $vn got pwned by $kn +HEAD_MSG5 = $vn's head has been^nturned into red jello +HEAD_MSG6 = $kn has superb aim with the $wn,^nas $vn well knows. +HEAD_MSG7 = $vn's head stayed in $kn's^ncrosshairs a bit too long... +DOUBLE_MSG1 = Wow! %s made a double kill !!! +DOUBLE_MSG2 = Incredible! %s made a triple kill !!! +DOUBLE_MSG3 = Amazing! %s made %d kills at once !!! +MORTAR_MSG1 = %s set up mortar well and blow out %s +MORTAR_MSG2 = %s made a long range kill to %s +KILL_INFO1 = %s killed you with %s^nfrom distance of %.2f meters.^n +KILL_INFO2 = He did %d damage to you with %d hit(s)^nand still has %dhp.^n +KILL_INFO3 = You did %d damage to him with %d hit(s).^n +KILL_INFO4 = He hits you in:^n%s^n +STILL_HAS = %s still has %dhp +NO_KILLER = You have no killer... +TOPX = Top %d +FFIRE_IS = Friendly fire: +ATTACKERS = Attackers: +VICTIMS = Victims: +DMG = dmg +HIT_S = hit(s) +YOU_HIT = You hit %s in: +SERVER_STATS = Server Stats +SHOW_STATS = Show stats +SHOW_RANK = Show rank +TA_MSG = %s attacked a teammate +TK_MSG = %s killed a teammate ! +NADE_CAUGHT = Wow! %s caught enemy grenade! +NADE_FAILEDTK = Oops.. %s killed you trying to throw back enemy grenade.. +NADE_FAILED = %s failed to throw back enemy grenade.. +NADE_MASTER = OMG! %s is grenade master !!! +DISABLED_MSG = Server has disabled that option +MOST_KILLS = Most kills +KILL = kill +KILLS = kills +HEADSHOT = headshot +HEADSHOTS = headshots +BEST_SCORE = Best Score +POINTS = points +MOST_DAMAGE = Most damage +DAMAGE = damage +HIT = hit +HITS = hits +M_KILLS = Kills: +M_DEATHS = Deaths: +M_SCORE = Score: +M_TKS = TKs: +M_HITS = Hits: +M_SHOTS = Shots: +M_HS = HS: +M_WEAPON = Weapon: +M_DAMAGE = Damage: +M_NICK = Nick: +M_YOUR_RANK_IS = Your rank is +M_THEIR_RANK_IS = Their rank is +M_OF = of + +[de] +WHOLEBODY = Koerper +HEAD = Kopf +CHEST = Oberkoerper +STOMACH = Bauch +LEFTARM = linker Arm +RIGHTARM = rechter Arm +LEFTLEG = linkes Bein +RIGHTLEG = rechtes Bein +MULTI_MSG = Multi-Kill! %s^nmit %d Kills (%d hs) +ULTRA_MSG = Ultra-Kill!!! %s^nmit %d Kills (%d hs) +SPREE_MSG = %s IST IN EINER KILLER-ORGIE!!!^nmit %d Kills (%d hs) +RAMPAGE_MSG = RANDALIERER!!! %s^nmit %d Kills (%d hs) +UNSTOPPABLE_MSG = %s IST NICHT ZU STOPPEN!!!^nmit %d Kills (%d hs) +MONSTER_MSG = %s IST EIN MONSTER!^nmit %d Kills (%d hs) +GODLIKE_MSG = %s IST GODLIKE!!!!^nmit %d Kills (%d hs) +MULTI_SMALL = %s: Multi-Kill! +ULTRA_SMALL = %s: Ultra-Kill!!! +SPREE_SMALL = %s IST IN EINER KILLER-ORGIE!!! +RAMPAGE_SMALL = %s: RANDALIERER!!! +UNSTOPPABLE_SMALL = %s IST NICHT ZU STOPPEN!! +MONSTER_SMALL = %s IST EIN MONSTER! +GODLIKE_SMALL = %s IST GODLIKE!!! +KNIFE_MSG_1 = %s hat %s geschnitten und gewuerfelt +KNIFE_MSG_2 = %s hat sein Messer gezueckt und %s ausgeweidet +KNIFE_MSG_3 = %s hat sich angeschlichen und %s gemessert +KNIFE_MSG_4 = %s messerte und verstuemmelte %s +HE_MSG_1 = %s sendet ein kleines Geschenk an %s +HE_MSG_2 = %s wirft ein Knallbonbon zu %s +HE_MSG_3 = %s macht einen Praezisionswurf zu %s +HE_MSG_4 = %s schickte eine dicke Explosion an %s +SHE_MSG_1 = %s sprengte sich selbst mit einer Granate +SHE_MSG_2 = %s untersuchte die Auswirkungen ^neiner Granate an sich selbst... +SHE_MSG_3 = %s schluckte eine Granate! +SHE_MSG_4 = %s explodierte! +HEAD_MSG_1 = $kn killte $vn mit einem ^nplazierten Schuss in den Kopf! +HEAD_MSG_2 = $kn entfernte den Kopf von $vn^nmit einem Praezisionsschuss. +HEAD_MSG_3 = $kn verwandelte den Kopf ^nvon $vn in Pudding. +HEAD_MSG_4 = $vn siegte ueber $kn durch eine Kopfschuss. +HEAD_MSG_5 = $vn's Kopf wurde in der Gegend verteilt +HEAD_MSG_6 = $kn hat einen super ^nTreffer gelandet,das weiss ^n$vn nun auch. +HEAD_MSG_7 = $vn's Kopf war ein bisschen zu lange im Fadenkreuz von $kn... +DOUBLE_MSG1 = Wow! %s machte einen Doppelkill!!! +DOUBLE_MSG2 = Unglaublich! %s macht einen dreifachen Kill !!! +DOUBLE_MSG3 = Ueberrascung! %s macht %d Kills auf einmal !!! +MORTAR_MSG1 = %s stellte den Moerser auf und schickte %s in den Himmel. +MORTAR_MSG2 = %s killte %s ueber eine lange Distanz. +KILL_INFO1 = %s killte dich mit der %s^nueber eine Entfernung von %.2f Meter.^n +KILL_INFO2 = Er machte %d Schaden bei dir mit %d Treffern ^nund hat noch %dHP.^n +KILL_INFO3 = Du machtest %d Schaden bei ihm mit %d Treffern.^n +KILL_INFO4 = Du hast ihn getroffen in den/das:^n%s^n +STILL_HAS = %s hat noch %dHP +NO_KILLER = Du hast keinen Killer... +TOPX = Top %d +FFIRE_IS = Friendly fire: +ATTACKERS = Angreifer: +VICTIMS = Gewinner: +DMG = Schaden +HIT_S = Treffer +YOU_HIT = Du trafst %s in: +SERVER_STATS = Server Statistik +SHOW_STATS = Statistik anzeigen +SHOW_RANK = Rang anzeigen +TA_MSG = %s schiesst auf einen Kameraden +TK_MSG = %s toetete einen Kameraden! +NADE_CAUGHT = Wow! %s faengt eine gegnereische Granate! +NADE_FAILEDTK = Oops.. %s killte dich bei dem Versuch, die Granate zurueckzuwerfen.. +NADE_FAILED = %s konnte feindliche Granate nicht zurück werfen. +NADE_MASTER = OMG! %s ist der Meister der Granaten !!! +DISABLED_MSG = Server hat diese Option deaktiviert. +MOST_KILLS = Meisten Kills +KILL = Kill +KILLS = Kills +HEADSHOT = Headshot +HEADSHOTS = Headshots +BEST_SCORE = Die beste Note +POINTS = Punkte +MOST_DAMAGE = Den meisten Schaden +DAMAGE = Schaden +HIT = Treffer +HITS = Treffer +M_KILLS = Kills: +M_DEATHS = Deaths: +M_SCORE = Note: +M_TKS = TKs: +M_HITS = Treffer: +M_SHOTS = Schuesse: +M_HS = HS: +M_WEAPON = Waffe: +M_DAMAGE = Schaden: +M_NICK = Name: +M_YOUR_RANK_IS = Dein Rang ist +M_THEIR_RANK_IS = Sein Rang ist +M_OF = von + +[sr] +WHOLEBODY = celo telo +HEAD = glava +CHEST = grudi +STOMACH = stomak +LEFTARM = leva ruka +RIGHTARM = desna ruka +LEFTLEG = leva noga +RIGHTLEG = desna noga +MULTI_MSG = Multi-Kill! %s^nsa %d ubistava (%d hs) +ULTRA_MSG = Ultra-Kill!!! %s^nsa %d ubistava (%d hs) +SPREE_MSG = %s IS ON A KILLING SPREE!!!^nwith %d kills (%d hs) +RAMPAGE_MSG = RAMPAGE!!! %s^nwith %d kills (%d hs) +UNSTOPPABLE_MSG = %s IS UNSTOPPABLE!!!^nwith %d kills (%d hs) +MONSTER_MSG = %s IS A MONSTER!^nwith %d kills (%d hs) +GODLIKE_MSG = %s IS GODLIKE!!!!^nwith %d kills (%d hs) +MULTI_SMALL = %s: Multi-Kill! +ULTRA_SMALL = %s: Ultra-Kill!!! +SPREE_SMALL = %s IS ON A KILLING SPREE!!! +RAMPAGE_SMALL = %s: RAMPAGE!!! +UNSTOPPABLE_SMALL = %s IS UNSTOPPABLE!!! +MONSTER_SMALL = %s IS A MONSTER! +GODLIKE_SMALL = %s IS GODLIKE!!! +KNIFE_MSG1 = %s sliced and diced %s +KNIFE_MSG2 = %s pulled out knife and gutted %s +KNIFE_MSG3 = %s sneaks carefully behind and knifed %s +KNIFE_MSG4 = %s knived %s +HE_MSG1 = %s sends a little gift to %s +HE_MSG2 = %s throws a small present to %s +HE_MSG3 = %s made a precision throw to %s +HE_MSG4 = %s got a big explosion for %s +SHE_MSG1 = %s detonated himself with a grenade +SHE_MSG2 = %s trys the effect of a grenade +SHE_MSG3 = %s kicked a grenade into his own ass +SHE_MSG4 = %s explodes! +HEAD_MSG1 = $kn killed $vn with a well^nplaced shot to the head! +HEAD_MSG2 = $kn removed $vn's^nhead with the $wn +HEAD_MSG3 = $kn turned $vn's head^ninto pudding with the $wn +HEAD_MSG4 = $vn got pwned by $kn +HEAD_MSG5 = $vn's head has been^nturned into red jello +HEAD_MSG6 = $kn has superb aim with the $wn,^nas $vn well knows. +HEAD_MSG7 = $vn's head stayed in $kn's^ncrosshairs a bit too long... +DOUBLE_MSG1 = Wow! %s made a double kill !!! +DOUBLE_MSG2 = Incredible! %s made a triple kill !!! +DOUBLE_MSG3 = Amazing! %s made %d kills at once !!! +MORTAR_MSG1 = %s set up mortar well and blow out %s +MORTAR_MSG2 = %s made a long range kill to %s +KILL_INFO1 = %s killed you with %s^nfrom distance of %.2f meters.^n +KILL_INFO2 = He did %d damage to you with %d hit(s)^nand still has %dhp.^n +KILL_INFO3 = You did %d damage to him with %d hit(s).^n +KILL_INFO4 = He hits you in:^n%s^n +STILL_HAS = %s still has %dhp +NO_KILLER = You have no killer... +TOPX = Top %d +FFIRE_IS = Friendly fire: +ATTACKERS = Attackers: +VICTIMS = Victims: +DMG = dmg +HIT_S = hit(s) +YOU_HIT = You hit %s in: +SERVER_STATS = Server Stats +SHOW_STATS = Show stats +SHOW_RANK = Show rank +TA_MSG = %s attacked a teammate +TK_MSG = %s killed a teammate ! +NADE_CAUGHT = Wow! %s catched enemy grenade! +NADE_FAILEDTK = Oops.. %s killed you trying to throw back enemy grenade.. +NADE_FAILED = %s failed to throw back enemy grenade.. +NADE_MASTER = OMG! %s is grenade master !!! +DISABLED_MSG = Server has disabled that option +MOST_KILLS = Most kills +KILL = kill +KILLS = kills +HEADSHOT = headshot +HEADSHOTS = headshots +BEST_SCORE = Best Score +POINTS = points +MOST_DAMAGE = Most damage +DAMAGE = damage +HIT = hit +HITS = hits +M_KILLS = Kills: +M_DEATHS = Deaths: +M_SCORE = Score: +M_TKS = TKs: +M_HITS = Hits: +M_SHOTS = Shots: +M_HS = HS: +M_WEAPON = Weapon: +M_DAMAGE = Damage: +M_NICK = Nick: +M_YOUR_RANK_IS = Your rank is +M_THEIR_RANK_IS = Their rank is +M_OF = of + +[tr] +WHOLEBODY = tum vucut +HEAD = kafa +CHEST = dos +STOMACH = migde +LEFTARM = sol kol +RIGHTARM = sag kol +LEFTLEG = sol bacak +RIGHTLEG = sag bacak +MULTI_MSG = Muthis! %s^nkullandigi %d oldurdugu (%d hs) +ULTRA_MSG = Super!!! %s^nkullandigi %d oldurdugu (%d hs) +SPREE_MSG = %s OLUM SACIYOR!!!^nkullandigi %d oldurdugu (%d hs) +RAMPAGE_MSG = DAGITIYOR!!! %s^nkullandigi %d oldurdugu (%d hs) +UNSTOPPABLE_MSG = %s DURDURULMAZ!!!^nkullandigi %d oldurdugu (%d hs) +MONSTER_MSG = %s YARATIK!^nwith %d kills (%d hs) +GODLIKE_MSG = %s TANRI GUCUNDE!!!!^nwith %d kills (%d hs) +MULTI_SMALL = %s: Muthis! +ULTRA_SMALL = %s: Super!!! +SPREE_SMALL = %s OLUM SACIYOR!!! +RAMPAGE_SMALL = %s: DAGITIYOR!!! +UNSTOPPABLE_SMALL = %s DURDURULMAZ!!! +MONSTER_SMALL = %s YARATIK! +GODLIKE_SMALL = %s TANRI GUCUNDE!!! +KNIFE_MSG1 = %s kesdi parcaladi %s +KNIFE_MSG2 = %s bicagini cekdi ve yardi %s +KNIFE_MSG3 = %s sezdirmeden arkadan geldi ve kesdi %s +KNIFE_MSG4 = %s bicakladi %s +HE_MSG1 = %s bir hediye yolladi %s +HE_MSG2 = %s bir paket gonderdi %s +HE_MSG3 = %s dort dortluk atis yapdi %s +HE_MSG4 = %s buyuk bir patlama olusdurdu %s +SHE_MSG1 = %s kendini havaya ucurdu +SHE_MSG2 = %s bombanin gucunu kendinde denedi +SHE_MSG3 = %s kendini parim parca etdi +SHE_MSG4 = %s patladi! +HEAD_MSG1 = $kn oldurdu $vn kullandigi^ntam kafa isabeti ile! +HEAD_MSG2 = $kn yok etdi kafasini $vn'in^nkullandigi $wn +HEAD_MSG3 = $kn kafasini $vn'in^nrecele cevirdi bu silah ile $wn +HEAD_MSG4 = $vn arkadasi harcadi $kn +HEAD_MSG5 = $vn'in kafasini^nkirmizi muhallebiye cevirdi +HEAD_MSG6 = $kn cok super bir atisci $wn,^n arkadasin $vn bildigi gibi. +HEAD_MSG7 = $vn'in kafasini $kn's^nnamlida fazla bekletdi... +DOUBLE_MSG1 = Wow! %s bir tas ile iki kus !!! +DOUBLE_MSG2 = Inanilmaz! %s uc kisi birden oldurdu !!! +DOUBLE_MSG3 = Muthis! %s tam %d kisi birden oldurdu !!! +MORTAR_MSG1 = %s bombayi tam hazirladi ve patlatdi %s +MORTAR_MSG2 = %s uzun mesafeli oldurdu %s +KILL_INFO1 = %s sizi oldurdu %s^nmesafe %.2f metre.^n +KILL_INFO2 = onun verdigi zarar %d vurdugu %d ^nve halen %dhp.^n +KILL_INFO3 = sizin verdiginiz zarar %d vurdugunuz %d vurus(lar).^n +KILL_INFO4 = sizi isabetledigi yerler:^n%s^n +STILL_HAS = %s halen bu kadar gucu var %dhp +NO_KILLER = Sizi olduren yok... +TOPX = Top %d +FFIRE_IS = Dost atesi: +ATTACKERS = Saldiranlar: +VICTIMS = Magdurlar: +DMG = zarar +HIT_S = vurdugunuz(lar) +YOU_HIT = sizin vurdugunuz %s: +SERVER_STATS = Server statistigi +SHOW_STATS = Statistigi goster +SHOW_RANK = Siralamayi goster +TA_MSG = %s Takim arkadasina ates etdi +TK_MSG = %s Takim arkadasini oldurdu ! +NADE_CAUGHT = Wow! %s Dusmanin bombasini yakaladi! +NADE_FAILEDTK = Vay be.. %s sizi oldurdu bombayi geri atayim derken.. +NADE_FAILED = %s malesef bombayi geri atamadi.. +NADE_MASTER = HAYRET! %s el bombasi uzmani !!! +DISABLED_MSG = Server o cvar'i kullanmiyor +MOST_KILLS = En fazla olduren +KILL = oldurdugu +KILLS = olduren +HEADSHOT = kafa vurusu +HEADSHOTS = kafa vuruslari +BEST_SCORE = En iyi skor +POINTS = puan(lar) +MOST_DAMAGE = En fazla zarar +DAMAGE = zarar +HIT = vurus +HITS = vurus(lar) +M_KILLS = oldurdugu: +M_DEATHS = oldugunuz: +M_SCORE = Skor: +M_TKS = TK'ler: +M_HITS = vuruslar: +M_SHOTS = kursun: +M_HS = HS'lar: +M_WEAPON = Silah: +M_DAMAGE = Zarar: +M_NICK = Nik: +M_YOUR_RANK_IS = Sizin siralamaniz +M_THEIR_RANK_IS = Onlarin siralamasi +M_OF = Kapali + +[fr] +WHOLEBODY = le corps entier +HEAD = la tete +CHEST = le torse +STOMACH = le ventre +LEFTARM = le bras gauche +RIGHTARM = le bras droit +LEFTLEG = la jambe gauche +RIGHTLEG = la jambe droite +MULTI_MSG = Multi-Kill! %s^navec %d frags (%d hs) +ULTRA_MSG = Ultra-Kill!!! %s^navec %d frags (%d hs) +SPREE_MSG = %s EST EN FOLIE MEURTRIERE!!!^navec %d frags (%d hs) +RAMPAGE_MSG = TUEUR EN SERIE!!! %s^navec %d frags (%d hs) +UNSTOPPABLE_MSG = %s NE S'ARRETE PLUS!!!^navec %d kills (%d hs) +MONSTER_MSG = %s EST UN MONSTRE !^navec %d frags (%d hs) +GODLIKE_MSG = %s SE PREND POUR DIEU!!!!^navec %d frags (%d hs) +MULTI_SMALL = %s: Multi-Kill! +ULTRA_SMALL = %s: Ultra-Kill!!! +SPREE_SMALL = %s EST EN FOLIE MEURTRIERE!!! +RAMPAGE_SMALL = %s: TUEUR EN SERIE!!! +UNSTOPPABLE_SMALL = %s NE S'ARRETE PLUS!!! +MONSTER_SMALL = %s EST UN MONSTRE! +GODLIKE_SMALL = %s SE PREND POUR DIEU!!! +KNIFE_MSG_1 = %s a emince, et coupe en morceaux %s +KNIFE_MSG_2 = %s a sorti son couteau, et etrippe %s +KNIFE_MSG_3 = %s s'est glisse derriere %s et l'a egorge +KNIFE_MSG_4 = %s a egorge %s +HE_MSG_1 = %s envoie un petit cadeau a %s +HE_MSG_2 = %s lance a %s un cadeau empoisonne +HE_MSG_3 = %s a lancer avec precision sur %s +HE_MSG_4 = %s a fait exploser %s +SHE_MSG_1 = %s vient de s'exploser avec sa Grenade +SHE_MSG_2 = %s tente une experience avec sa Grenade sur lui-meme +SHE_MSG_3 = %s a gobe sa Grenade +SHE_MSG_4 = %s a explose! +HEAD_MSG1 = $kn a tue $vn avec une balle^nbien placee dans la tete! +HEAD_MSG2 = $kn a decapite $vn^navec une seule balle de $wn +HEAD_MSG3 = $kn transforme la tete de $vn^nen puree d'une balle de $wn +DOUBLE_MSG1 = Mortel! %s vient de faire un double kill!!! +DOUBLE_MSG2 = Incroyable! %s vient de faire un triple kill !!! +DOUBLE_MSG3 = Impossible! %s vient de tuer %d personnes en 1 coups !!! +MORTAR_MSG1 = %s ajuste parfaitement son mortier, et explose %s +MORTAR_MSG2 = %s vient de tuer %s a distance +KILL_INFO1 = %s t'a tue avec %s^na une distance de %.2f metres.^n +KILL_INFO2 = Il t'a fait %d points de degat en te touchant %d fois^net il lui reste %dpv.^n +KILL_INFO3 = Tu as fait %d de degats en le touchant %d fois.^n +KILL_INFO4 = Il t'a touche dans:^n%s^n +STILL_HAS = %s a encore %dpv +NO_KILLER = Personne ne t'a tue... +TOPX = Top %d +FFIRE_IS = Friendly fire: +ATTACKERS = Attaquants: +VICTIMS = Victimes: +DMG = dmg +HIT_S = touche(s) +YOU_HIT = tu touches %s dans: +SERVER_STATS = Stats Serveur +SHOW_STATS = Affiche stats +SHOW_RANK = Affiche classement +TA_MSG = %s attaque un coequipier +TK_MSG = %s a tue un coequipier ! +NADE_CAUGHT = Youpi! %s vient d'attraper une grenade ennemi! +NADE_FAILEDTK = Oups.. %s t'a tue quand tu as essaye de renvoyer une grenade .. +NADE_FAILED = %s viens de rater le lancer d'une grenade ennemi.. +NADE_MASTER = Monstrueux! %s est un maitre grenadier !!! +DISABLED_MSG = Le serveur a desactive cette option +MOST_KILLS = Plus de frags +KILL = kill +KILLS = kills +HEADSHOT = headshot +HEADSHOTS = headshots +BEST_SCORE = Meilleur Score +POINTS = points +MOST_DAMAGE = Plus de points de degat +DAMAGE = points de degat +HIT = touche +HITS = touches +M_KILLS = Frags: +M_DEATHS = Morts: +M_SCORE = Score: +M_TKS = TKs: +M_HITS = Touches: +M_SHOTS = Tirs: +M_HS = HS: +M_WEAPON = Arme: +M_DAMAGE = Point de degat: +M_NICK = Pseudo: +M_YOUR_RANK_IS = Tu es classe +M_THEIR_RANK_IS = Son classement est +M_OF = sur + +[sv] +WHOLEBODY = whole body +HEAD = head +CHEST = chest +STOMACH = stomach +LEFTARM = leftarm +RIGHTARM = rightarm +LEFTLEG = leftleg +RIGHTLEG = rightleg +MULTI_MSG = Multi-Kill! %s^nwith %d kills (%d hs) +ULTRA_MSG = Ultra-Kill!!! %s^nwith %d kills (%d hs) +SPREE_MSG = %s IS ON A KILLING SPREE!!!^nwith %d kills (%d hs) +RAMPAGE_MSG = RAMPAGE!!! %s^nwith %d kills (%d hs) +UNSTOPPABLE_MSG = %s IS UNSTOPPABLE!!!^nwith %d kills (%d hs) +MONSTER_MSG = %s IS A MONSTER!^nwith %d kills (%d hs) +GODLIKE_MSG = %s IS GODLIKE!!!!^nwith %d kills (%d hs) +MULTI_SMALL = %s: Multi-Kill! +ULTRA_SMALL = %s: Ultra-Kill!!! +SPREE_SMALL = %s IS ON A KILLING SPREE!!! +RAMPAGE_SMALL = %s: RAMPAGE!!! +UNSTOPPABLE_SMALL = %s IS UNSTOPPABLE!!! +MONSTER_SMALL = %s IS A MONSTER! +GODLIKE_SMALL = %s IS GODLIKE!!! +KNIFE_MSG1 = %s sliced and diced %s +KNIFE_MSG2 = %s pulled out knife and gutted %s +KNIFE_MSG3 = %s sneaks carefully behind and knifed %s +KNIFE_MSG4 = %s knived %s +HE_MSG1 = %s sends a little gift to %s +HE_MSG2 = %s throws a small present to %s +HE_MSG3 = %s made a precision throw to %s +HE_MSG4 = %s got a big explosion for %s +SHE_MSG1 = %s detonated himself with a grenade +SHE_MSG2 = %s trys the effect of a grenade +SHE_MSG3 = %s kicked a grenade into his own ass +SHE_MSG4 = %s explodes! +HEAD_MSG1 = $kn killed $vn with a well^nplaced shot to the head! +HEAD_MSG2 = $kn removed $vn's^nhead with the $wn +HEAD_MSG3 = $kn turned $vn's head^ninto pudding with the $wn +HEAD_MSG4 = $vn got pwned by $kn +HEAD_MSG5 = $vn's head has been^nturned into red jello +HEAD_MSG6 = $kn has superb aim with the $wn,^nas $vn well knows. +HEAD_MSG7 = $vn's head stayed in $kn's^ncrosshairs a bit too long... +DOUBLE_MSG1 = Wow! %s made a double kill !!! +DOUBLE_MSG2 = Incredible! %s made a triple kill !!! +DOUBLE_MSG3 = Amazing! %s made %d kills at once !!! +MORTAR_MSG1 = %s set up mortar well and blow out %s +MORTAR_MSG2 = %s made a long range kill to %s +KILL_INFO1 = %s killed you with %s^nfrom distance of %.2f meters.^n +KILL_INFO2 = He did %d damage to you with %d hit(s)^nand still has %dhp.^n +KILL_INFO3 = You did %d damage to him with %d hit(s).^n +KILL_INFO4 = He hits you in:^n%s^n +STILL_HAS = %s still has %dhp +NO_KILLER = You have no killer... +TOPX = Top %d +FFIRE_IS = Friendly fire: +ATTACKERS = Attackers: +VICTIMS = Victims: +DMG = dmg +HIT_S = hit(s) +YOU_HIT = You hit %s in: +SERVER_STATS = Server Stats +SHOW_STATS = Show stats +SHOW_RANK = Show rank +TA_MSG = %s attacked a teammate +TK_MSG = %s killed a teammate ! +NADE_CAUGHT = Wow! %s catched enemy grenade! +NADE_FAILEDTK = Oops.. %s killed you trying to throw back enemy grenade.. +NADE_FAILED = %s failed to throw back enemy grenade.. +NADE_MASTER = OMG! %s is grenade master !!! +DISABLED_MSG = Server has disabled that option +MOST_KILLS = Most kills +KILL = kill +KILLS = kills +HEADSHOT = headshot +HEADSHOTS = headshots +BEST_SCORE = Best Score +POINTS = points +MOST_DAMAGE = Most damage +DAMAGE = damage +HIT = hit +HITS = hits +M_KILLS = Kills: +M_DEATHS = Deaths: +M_SCORE = Score: +M_TKS = TKs: +M_HITS = Hits: +M_SHOTS = Shots: +M_HS = HS: +M_WEAPON = Weapon: +M_DAMAGE = Damage: +M_NICK = Nick: +M_YOUR_RANK_IS = Your rank is +M_THEIR_RANK_IS = Their rank is +M_OF = of + +[da] +WHOLEBODY = Helekrop +HEAD = hoved +CHEST = bryst +STOMACH = mave +LEFTARM = venstrearm +RIGHTARM = hoejrearm +LEFTLEG = venstreben +RIGHTLEG = hoejreben +MULTI_MSG = Multi-Drab! %s^nmed %d drab (%d hs) +ULTRA_MSG = Ultra-Drab!!! %s^nmed %d drab (%d hs) +SPREE_MSG = %s ER PAA DRABS-TUR!!!^nmed %d drab (%d hs) +RAMPAGE_MSG = DRABS-ORGIE!!! %s^nmed %d drab (%d hs) +UNSTOPPABLE_MSG = %s ER USTOPPELIG!!!^nmed %d drab (%d hs) +MONSTER_MSG = %s ER ET MONSTER!^nmed %d drab (%d hs) +GODLIKE_MSG = %s ER GUDDOMMELIG!!!!^nmed %d drab (%d hs) +MULTI_SMALL = %s: Multi-DRAB! +ULTRA_SMALL = %s: Ultra-DRAB!!! +SPREE_SMALL = %s ER PAA DRABS-TUR!!! +RAMPAGE_SMALL = %s: RAMPAGE!!! +UNSTOPPABLE_SMALL = %s ER USTOPPELIG!!! +MONSTER_SMALL = %s ER ET MONSTER! +GODLIKE_SMALL = %s ER GUDDOMMELIG!!! +KNIFE_MSG1 = %s skar %s i stumper og stykker +KNIFE_MSG2 = %s trak kniven frem og parterede %s +KNIFE_MSG3 = %s sniger sig forsigtigt og gennemborede %s +KNIFE_MSG4 = %s tog %s med kniv +HE_MSG1 = %s sender en lille gave til %s +HE_MSG2 = %s kaster en lille pakke til %s +HE_MSG3 = %s laver et praecisions kast til %s +HE_MSG4 = %s har en stor eksplosion til %s +SHE_MSG1 = %s detonerede sig selv med en granat +SHE_MSG2 = %s proever effekten af en Granat +SHE_MSG3 = %s sparkede en granat op i sit eget hoved +SHE_MSG4 = %s eksploderer! +HEAD_MSG1 = $kn draebte $vn med et vel^nplaceret skud i hovedet! +HEAD_MSG2 = $kn fjernede $vn's^nhoved med $wn +HEAD_MSG3 = $kn lavede $vn's hoved^ntil budding med $wn +HEAD_MSG4 = $vn blev ejet af $kn +HEAD_MSG5 = $vn's hoved blev^nlavet til roed gele +HEAD_MSG6 = $kn har super sigte med $wn,^nsom $vn har opdaget. +HEAD_MSG7 = $vns hoved blev foran $kn's^nsigtekorn lidt for laenge... +DOUBLE_MSG1 = Wow! %s lavede et dobbelt drab!!! +DOUBLE_MSG2 = Utroligt! %s lavede et trippel drab !!! +DOUBLE_MSG3 = Fantastisk! %s lavede %d drab paa en gang !!! +MORTAR_MSG1 = %s stiller morter op og draeber %s +MORTAR_MSG2 = %s laver et langdistance drab paa %s +KILL_INFO1 = %s draebte dig med %s^npaa en afstand af %.2f meter.^n +KILL_INFO2 = Han gjorde %d skade paa dig med %d traeffer(e)^nog har stadig %dhp.^n +KILL_INFO3 = Du gjorde %d skade paa ham med %d traeffer(e).^n +KILL_INFO4 = Han rammer dig i:^n%s^n +STILL_HAS = %s har stadig %dhp +NO_KILLER = Du har ingen morder... +TOPX = Top %d +FFIRE_IS = Venskablig ild: +ATTACKERS = Angribere: +VICTIMS = Ofre: +DMG = skade +HIT_S = traeffer(e) +YOU_HIT = Du traeffer %s i: +SERVER_STATS = Server Statestik +SHOW_STATS = Vis Statestik +SHOW_RANK = Vis rang +TA_MSG = %s angreb en hold kammerat +TK_MSG = %s draebte en hold kammerat ! +NADE_CAUGHT = Wow! %s greb en af fjendens granater +NADE_FAILEDTK = Ups.. %s drabte dig mens du proevede at kaste en af fjendens granater tilbage.. +NADE_FAILED = %s fejlede i at kaste en af fjendens granater tilbage.. +NADE_MASTER = OMG! %s er granat mester !!! +DISABLED_MSG = Serveren har slaaet den mulighed fra +MOST_KILLS = Flest drab +KILL = drab +KILLS = drab +HEADSHOT = Hovedskud +HEADSHOTS = Hovedskud +BEST_SCORE = Bedste Score +POINTS = point +MOST_DAMAGE = Mest skade +DAMAGE = skade +HIT = traeffer +HITS = traeffere +M_KILLS = Drab: +M_DEATHS = Doedsfald: +M_SCORE = Score: +M_TKS = Hold drab: +M_HITS = Traeffere: +M_SHOTS = Skud: +M_HS = HS: +M_WEAPON = Vaaben: +M_DAMAGE = Skade: +M_NICK = Navn: +M_YOUR_RANK_IS = Din rang er +M_THEIR_RANK_IS = Deres rang er +M_OF = af + +[pl] +WHOLEBODY = wszedzie +HEAD = glowe +CHEST = klatke +STOMACH = brzuch +LEFTARM = lewe ramie +RIGHTARM = prawe ramie +LEFTLEG = lewa noge +RIGHTLEG = prawa noge +MULTI_MSG = Multi-Kill! %s^nz %d zabojstwami (%d w glowe) +ULTRA_MSG = Ultra-Kill!!! %s^nz %d zabojstwami (%d w glowe) +SPREE_MSG = %s IS ON A KILLING SPREE!!!^nz %d zabojstwami (%d w glowe) +RAMPAGE_MSG = RAMPAGE!!! %s^nz %d zabojstwami (%d w glowe) +UNSTOPPABLE_MSG = %s IS UNSTOPPABLE!!!^nz %d zabojstwami (%d w glowe) +MONSTER_MSG = %s IS A MONSTER!^nz %d zabojstwami (%d w glowe) +GODLIKE_MSG = %s IS GODLIKE!!!!^nz %d zabojstwami (%d w glowe) +MULTI_SMALL = %s: Multi-Kill! +ULTRA_SMALL = %s: Ultra-Kill!!! +SPREE_SMALL = %s IS ON A KILLING SPREE!!! +RAMPAGE_SMALL = %s: RAMPAGE!!! +UNSTOPPABLE_SMALL = %s IS UNSTOPPABLE!!! +MONSTER_SMALL = %s JEST POTWOREM! +GODLIKE_SMALL = %s JEST BOGIEM!!! +KNIFE_MSG1 = %s sliced and diced %s +KNIFE_MSG2 = %s pulled out knife and gutted %s +KNIFE_MSG3 = %s sneaks carefully behind and knifed %s +KNIFE_MSG4 = %s knived %s +HE_MSG1 = %s sends a little gift to %s +HE_MSG2 = %s throws a small present to %s +HE_MSG3 = %s made a precision throw to %s +HE_MSG4 = %s got a big explosion for %s +SHE_MSG1 = %s detonated himself with a grenade +SHE_MSG2 = %s trys the effect of a grenade +SHE_MSG3 = %s kicked a grenade into his own ass +SHE_MSG4 = %s explodes! +HEAD_MSG1 = $kn killed $vn with a well^nplaced shot to the head! +HEAD_MSG2 = $kn removed $vn's^nhead with the $wn +HEAD_MSG3 = $kn turned $vn's head^ninto pudding with the $wn +HEAD_MSG4 = $vn got pwned by $kn +HEAD_MSG5 = $vn's head has been^nturned into red jello +HEAD_MSG6 = $kn has superb aim with the $wn,^nas $vn well knows. +HEAD_MSG7 = $vn's head stayed in $kn's^ncrosshairs a bit too long... +DOUBLE_MSG1 = Wow! %s made a double kill !!! +DOUBLE_MSG2 = Incredible! %s made a triple kill !!! +DOUBLE_MSG3 = Amazing! %s made %d kills at once !!! +MORTAR_MSG1 = %s set up mortar well and blow out %s +MORTAR_MSG2 = %s made a long range kill to %s +KILL_INFO1 = %s killed you with %s^nfrom distance of %.2f meters.^n +KILL_INFO2 = He did %d damage to you with %d hit(s)^nand still has %dhp.^n +KILL_INFO3 = You did %d damage to him with %d hit(s).^n +KILL_INFO4 = He hits you in:^n%s^n +STILL_HAS = %s still has %dhp +NO_KILLER = You have no killer... +TOPX = Top %d +FFIRE_IS = Friendly fire: +ATTACKERS = Attackers: +VICTIMS = Victims: +DMG = dmg +HIT_S = hit(s) +YOU_HIT = You hit %s in: +SERVER_STATS = Server Stats +SHOW_STATS = Show stats +SHOW_RANK = Show rank +TA_MSG = %s attacked a teammate +TK_MSG = %s killed a teammate ! +NADE_CAUGHT = Wow! %s catched enemy grenade! +NADE_FAILEDTK = Oops.. %s killed you trying to throw back enemy grenade.. +NADE_FAILED = %s failed to throw back enemy grenade.. +NADE_MASTER = OMG! %s is grenade master !!! +DISABLED_MSG = Server has disabled that option +MOST_KILLS = Most kills +KILL = kill +KILLS = kills +HEADSHOT = headshot +HEADSHOTS = headshots +BEST_SCORE = Best Score +POINTS = points +MOST_DAMAGE = Most damage +DAMAGE = damage +HIT = hit +HITS = hits +M_KILLS = Kills: +M_DEATHS = Deaths: +M_SCORE = Score: +M_TKS = TKs: +M_HITS = Hits: +M_SHOTS = Shots: +M_HS = HS: +M_WEAPON = Weapon: +M_DAMAGE = Damage: +M_NICK = Nick: +M_YOUR_RANK_IS = Your rank is +M_THEIR_RANK_IS = Their rank is +M_OF = of + +[nl] +WHOLEBODY = volledig lichaam +HEAD = hoofd +CHEST = romp +STOMACH = maag +LEFTARM = linkerarm +RIGHTARM = rechterarm +LEFTLEG = linkerbeen +RIGHTLEG = rechterbeen +MULTI_MSG = Multi-Kill! %s^nmet %d kills (%d hs) +ULTRA_MSG = Ultra-Kill!!! %s^nmet %d kills (%d hs) +SPREE_MSG = %s HEEFT EEN 'KILLING SPREE'!!!^nmet %d kills (%d hs) +RAMPAGE_MSG = RAMPAGE!!! %s^nmet %d kills (%d hs) +UNSTOPPABLE_MSG = %s IS NIET TE STOPPEN!!!^nmet %d kills (%d hs) +MONSTER_MSG = %s IS EEN MONSTER!^nmet %d kills (%d hs) +GODLIKE_MSG = %s IS GODDELIJK!!!!^nmet %d kills (%d hs) +MULTI_SMALL = %s: Multi-Kill! +ULTRA_SMALL = %s: Ultra-Kill!!! +SPREE_SMALL = %s HEEFT EEN 'KILLING SPREE'!!! +RAMPAGE_SMALL = %s: RAMPAGE!!! +UNSTOPPABLE_SMALL = %s IS NIET TE STOPPEN!!! +MONSTER_SMALL = %s IS EEN MONSTER! +GODLIKE_SMALL = %s IS GODDELIJK!!! +KNIFE_MSG1 = %s sneed %s in hapklare plakjes +KNIFE_MSG2 = %s nam zijn mes en hakte vrolijk in op %s +KNIFE_MSG3 = %s sloop achter %s en begon zijn lichaamsdelen te amputeren +KNIFE_MSG4 = %s doodde %s met mes +HE_MSG1 = %s stuurde een mooi cadeautje naar %s +HE_MSG2 = %s gooide een klein presentje naar %s +HE_MSG3 = %s maakte een mooie worp naar %s +HE_MSG4 = %s had een grote explosie voor %s +SHE_MSG1 = %s blies zichzelf op met een granaat +SHE_MSG2 = %s probeert het effect van een granaat even uit +SHE_MSG3 = %s moet oppassen met dat vuurwerk +SHE_MSG4 = %s explodeert! +HEAD_MSG1 = $kn doodde $vn met een goed^ngeplaatst schot op het hoofd! +HEAD_MSG2 = $kn verwijderde $vn's^nhoofd met de $wn +HEAD_MSG3 = $kn veranderde $vn's hoofd^nin pudding met de $wn +HEAD_MSG4 = $vn werd gepwned door $kn +HEAD_MSG5 = $vn's hoofd is^nveranderd in rode gelei +HEAD_MSG6 = $kn kan zeer goed mikken met de $wn,^nmaar dat is $vn nu ook wel duidelijk. +HEAD_MSG7 = $vn's hoofd bleef iets te lang in $kn's^nvizier... +DOUBLE_MSG1 = Wow! %s pleegde een dubbele moord !!! +DOUBLE_MSG2 = Waa! %s pleegde een driedubbele moord !!! +DOUBLE_MSG3 = Huuuh! %s vermoordde %d spelers in 1 keer !!! +MORTAR_MSG1 = %s blies %s op met mortier +MORTAR_MSG2 = %s maakte %s van een mooie afstand af +KILL_INFO1 = %s doodde jou met %s^nvan een afstand van %.2f meter.^n +KILL_INFO2 = Hij deed %d schade aan jou met %d hit(s)^nen heeft nog %dhp.^n +KILL_INFO3 = Jij deed %d schade aan hem met %d hit(s).^n +KILL_INFO4 = Hij raakte je in:^n%s^n +STILL_HAS = %s heeft nog %dhp +NO_KILLER = Geen killer gevonden... +TOPX = Top %d +FFIRE_IS = Friendly fire: +ATTACKERS = Aanvallers: +VICTIMS = Slachtoffer: +DMG = dmg +HIT_S = hit(s) +YOU_HIT = Jij raakte %s in: +SERVER_STATS = Server Status +SHOW_STATS = Laat stats zien +SHOW_RANK = Laat rank zien +TA_MSG = %s heeft een teammaat aangevallen +TK_MSG = %s heeft een teammaat gedood +NADE_CAUGHT = Wow! %s heeft een vijandelijke granaat gevangen! +NADE_FAILEDTK = Oeps.. %s volgende keer beter opletten met een vijandelijke granaat.. +NADE_FAILED = %s slaagde er niet in de vijandelijke granaat terug te gooien.. +NADE_MASTER = OMG! %s is de granaten meester !!! +DISABLED_MSG = De server heeft die optie uitgeschakeld +MOST_KILLS = Meeste kills +KILL = kill +KILLS = kills +HEADSHOT = headshot +HEADSHOTS = headshots +BEST_SCORE = Beste Score +POINTS = punten +MOST_DAMAGE = Meeste schade +DAMAGE = schade +HIT = hit +HITS = hits +M_KILLS = Kills: +M_DEATHS = Deaths: +M_SCORE = Score: +M_TKS = TKs: +M_HITS = Hits: +M_SHOTS = Schoten: +M_HS = HS: +M_WEAPON = Wapen: +M_DAMAGE = Schade: +M_NICK = Nick: +M_YOUR_RANK_IS = Jouw rank is +M_THEIR_RANK_IS = Hun rank is +M_OF = van de + +[es] +WHOLEBODY = cuerpo entero +HEAD = cabeza +CHEST = pecho +STOMACH = estomago +LEFTARM = brazo izquierdo +RIGHTARM = brazo derecho +LEFTLEG = pierna izquierda +RIGHTLEG = pierna derecha +MULTI_MSG = Multi-Kill! %s^ncon %d frags (%d hs) +ULTRA_MSG = Ultra-Kill!!! %s^ncon %d frags (%d hs) +SPREE_MSG = %s IS ON A KILLING SPREE!!!^ncon %d frags (%d hs) +RAMPAGE_MSG = RAMPAGE!!! %s^ncon %d frags (%d hs) +UNSTOPPABLE_MSG = %s IS UNSTOPPABLE!!!^ncon %d frags (%d hs) +MONSTER_MSG = %s IS A MONSTER!^ncon %d frags (%d hs) +GODLIKE_MSG = %s IS GODLIKE!!!!^ncon %d frags (%d hs) +MULTI_SMALL = %s: Multi-Kill! +ULTRA_SMALL = %s: Ultra-Kill!!! +SPREE_SMALL = %s IS ON A KILLING SPREE!!! +RAMPAGE_SMALL = %s: RAMPAGE!!! +UNSTOPPABLE_SMALL = %s IS UNSTOPPABLE!!! +MONSTER_SMALL = %s IS A MONSTER! +GODLIKE_SMALL = %s IS GODLIKE!!! +KNIFE_MSG_1 = %s ha cortado y rebanado a %s +KNIFE_MSG_2 = %s ha destripado a %s +KNIFE_MSG_3 = %s se acerco con cuidado por detras y rajo a %s +KNIFE_MSG_4 = %s a acuchillado a %s +HE_MSG_1 = %s le ha mandado un pequenyo regalito a %s +HE_MSG_2 = %s le ha tirado un pequenyo regalo a %s +HE_MSG_3 = %s hizo un tiro de precision hacia %s +HE_MSG_4 = %s tenia guardada una gran explosion para %s +SHE_MSG_1 = %s se ha detonado el mismo con una granada +SHE_MSG_2 = %s acaba de comprobar los efectos de una granada explosiva +SHE_MSG_3 = %s se acaba de tragar su propia granada! +SHE_MSG_4 = %s ha explotado! +HS_MSG_1 = $kn ha matado a $vn con un buen^ntiro encarado en toda la cabeza! +HS_MSG_2 = $kn le ha volado la cabeza^na $vn con la $wn +HS_MSG_3 = $kn le ha hecho polvo la cabeza^na $vn con la $wn +HS_MSG_4 = $vn ha sido asesinado por $kn +HS_MSG_5 = La cabeza de $vn se ha convertido^nen pudding +HS_MSG_6 = $kn tiene muy buena punteria con la $wn,^ncomo $vn acaba de comprobar. +HS_MSG_7 = La cabeza de $vn se ha quedado demasiado^ntiempo en el punto de mira de $kn... +DOUBLE_KILL = Wow! %s ha matado a dos a la vez!!! +DOUBLE_MSG2 = Increible! %s ha hecho una muerte triple!!! +DOUBLE_MSG3 = Impresionante! %s ha matado a %d de una!!! +MORTAR_MSG1 = %s preparo bien su mortero y volo a %s por los aires +MORTAR_MSG2 = %s ha matado a %s a gran distancia +KILL_INFO1 = %s te ha matado con %s^ndesde una distancia de %.2f metros.^n +KILL_INFO2 = Te ha hecho %d puntos de danyo con %d acierto(s)^ny todavia tiene %dhp.^n +KILL_INFO3 = Le has hecho %d puntos de danyo con %d acierto(s).^n +KILL_INFO4 = Te ha dado en:^n%s^n +STILL_HAS = %s todavia tiene %dhp +NO_KILLER = Nadie te ha matado... +TOPX = Top %d +FFIRE_IS = Fuego amigo: +ATTACKERS = Atacantes: +VICTIMS = Victimas: +DMG = dno +HIT_S = acierto(s) +YOU_HIT = Das a %s en: +SERVER_STATS = Estadisticas del Servidor +SHOW_STATS = Mostrar estadisticas +SHOW_RANK = Mostrar ranking +TA_MSG = %s ha atacado a un companyero +TK_MSG = %s ha matado a un companyero! +NADE_CAUGHT = Wow! %s ha cogido una granada enemiga! +NADE_FAILEDTK = Uups.. %s te ha matado intentando devolver una granada enemiga.. +NADE_FAILED = %s fallo al devolver la granada enemiga... +NADE_MASTER = OMG! %s es un maestro con las granadas!!! +DISABLED_MSG = El Servidor ha desactivado esta opcion +MOST_KILLS = Mayor numero de frags +KILL = frag +KILLS = frags +HEADSHOT = headshot +HEADSHOTS = headshots +BEST_SCORE = Mejor Puntuacion +POINTS = puntos +MOST_DAMAGE = Mayor danyo +DAMAGE = danyo +HIT = acierto +HITS = aciertos +M_KILLS = Frags: +M_DEATHS = Muertes: +M_SCORE = Puntacion: +M_TKS = TKs: +M_HITS = Aciertos: +M_SHOTS = Disparos: +M_HS = HS: +M_WEAPON = Arma: +M_DAMAGE = Danyo: +M_NICK = Nombre: +M_YOUR_RANK_IS = Tu ranking es +M_THEIR_RANK_IS = Sus rankings son +M_OF = de + +[bp] +WHOLEBODY = corpo +HEAD = cabeca +CHEST = peito +STOMACH = estomago +LEFTARM = braco esquerdo +RIGHTARM = braco direito +LEFTLEG = perna esquerda +RIGHTLEG = perna direita +MULTI_MSG = Multi-Kill! %s^ncom %d frags (%d hs) +ULTRA_MSG = Ultra-Kill!!! %s^ncom %d frags (%d hs) +SPREE_MSG = %s IS ON A KILLING SPREE!!!^ncom %d frags (%d hs) +RAMPAGE_MSG = RAMPAGE!!! %s^ncom %d frags (%d hs) +UNSTOPPABLE_MSG = %s IS UNSTOPPABLE!!!^ncom %d frags (%d hs) +MONSTER_MSG = %s IS A MONSTER!^ncom %d frags (%d hs) +GODLIKE_MSG = %s IS GODLIKE!!!!^ncom %d frags (%d hs) +MULTI_SMALL = %s: Multi-Kill! +ULTRA_SMALL = %s: Ultra-Kill!!! +SPREE_SMALL = %s IS ON A KILLING SPREE!!! +RAMPAGE_SMALL = %s: RAMPAGE!!! +UNSTOPPABLE_SMALL = %s IS UNSTOPPABLE!!! +MONSTER_SMALL = %s IS A MONSTER! +GODLIKE_SMALL = %s IS GODLIKE!!! +KNIFE_MSG_1 = %s fatiou e serviu %s +KNIFE_MSG_2 = %s puxou a faca e estripou %s +KNIFE_MSG_3 = %s foi cuidadosamente por atras^ne passou a faca em %s +KNIFE_MSG_4 = %s meteu a faca no bucho de %s +HE_MSG_1 = %s mandou a granada para %s que^nagarrou com as duas maos! +HE_MSG_2 = %s lancou um presentinho para %s +HE_MSG_3 = %s fez um lancamento preciso para %s +HE_MSG_4 = %s causou uma grande explosao para %s +SHE_MSG_1 = %s se detonou com uma granada +SHE_MSG_2 = %s sentiu o efeito de uma Granada!!! +SHE_MSG_3 = %s Enfiou a granada na bunda e subiu! +SHE_MSG_4 = %s ficou soh o poh! +HEAD_MSG_1 = $kn matou $vn com um tiro de bem^ndado na cabeca! +HEAD_MSG_2 = $kn removeu a cabeca^nde $vn com a $wn +HEAD_MSG_3 = $kn transformou a cabeca de^n$vn em um pudim com a $wn +HEAD_MSG_4 = $vn sentiu o poder do $kn +HEAD_MSG_5 = $vn viu sua cabeca virar gelatina vermelha +HEAD_MSG_6 = $kn tem uma pontaria magnifica com a $wn,^ne $vn sabe muito bem disso... +HEAD_MSG_7 = A cabeca de $vn ficou na mira de^n$kn por muito tempo e olha como ficou... +DOUBLE_MSG1 = Nossa! %s conseguiu matar 2 de uma soh vez!!! +DOUBLE_MSG2 = Incrivel! %s matou 3 de uma soh vez!!! +DOUBLE_MSG3 = Maravilhoso! %s conseguiu %d de uma vez!!! +MORTAR_MSG1 = %s armou um morteiro e apagou %s +MORTAR_MSG2 = %s matou a longa distancia %s +KILL_INFO1 = %s o matou com %s^nna distancia %.2f metros.^n +KILL_INFO2 = Ele causou %d de dano em voce com %d acerto(s)^ne ainda tem %dhp e %dap.^n +KILL_INFO3 = Voce causou %d de dano nele com %d acerto(s).^n +KILL_INFO4 = Ele acertou voce em:^n%s^n +STILL_HAS = %s ainda tem %dhp +NO_KILLER = Voce nao matou ninguem... +TOPX = %d Melhores +FFIRE_IS = Fogo Amigo: +ATTACKERS = Atacantes: +VICTIMS = Vitimas: +DMG = dano +HIT_S = acerto(s) +YOU_HIT = Voce acertou %s em: +SERVER_STATS = Estatisticas do Server +SHOW_STATS = Mostrar estatisticas +SHOW_RANK = Mostrar rank +TA_MSG = %s atacou um amigo! +TK_MSG = %s matou um amigo! +NADE_CAUGHT = Nossa! %s devolveu a granada ao inimigo! +NADE_FAILEDTK = Oops.. %s morreu tentando devolver uma granada do inimigo... +NADE_FAILED = %s falhou ao arremessar de volta a granada do inimigo... +NADE_MASTER = OMG! %s e o mestre das granadas!!! +DISABLED_MSG = O servidor desabilitou esta opcao +MOST_KILLS = Maior Frag +KILL = frag +KILLS = frags +HEADSHOT = headshot +HEADSHOTS = headshots +BEST_SCORE = Melhor Placar +POINTS = pontos +MOST_DAMAGE = Maior Dano +DAMAGE = dano +HIT = acerto +HITS = acertos +M_KILLS = Frags: +M_DEATHS = Mortes: +M_SCORE = Placar: +M_TKS = TKs: +M_HITS = Acertos: +M_SHOTS = Tiros: +M_HS = HS: +M_WEAPON = Arma: +M_DAMAGE = Dano: +M_NICK = Nick: +M_YOUR_RANK_IS = Sua posicao e +M_THEIR_RANK_IS = A posicao deles e +M_OF = de + +[cz] +WHOLEBODY = cele telo +HEAD = hlava +CHEST = trup +STOMACH = zaludek +LEFTARM = leva paze +RIGHTARM = prava paze +LEFTLEG = leva noha +RIGHTLEG = prava noha +MULTI_MSG = Multi-Kill! %s^nzabil %d lidi (%d hedkou) +ULTRA_MSG = Ultra-Kill!!! %s^zabil %d lidi (%d hedkou) +SPREE_MSG = %s MA ZABIJACKY ZACHVAT!!!^nZABIL %d lidi (%d hedkou) +RAMPAGE_MSG = AMOK!!! %s^nzabil %d ldi (%d hedkou) +UNSTOPPABLE_MSG = %s JE NEZASTAVITELNY!!!^nzabil %d lidi (%d hedkou) +MONSTER_MSG = %s JE MONSTRUM!^nzabil %d lidi (%d hedkou) +GODLIKE_MSG = %s JE BUH!!!!^nzabil %d lidi (%d hedkou) +MULTI_SMALL = %s: Multi-Kill! +ULTRA_SMALL = %s: Ultra-Kill!!! +SPREE_SMALL = %s MA ZABIJACKY ZACHVAT!!! +RAMPAGE_SMALL = %s: AMOK!!! +UNSTOPPABLE_SMALL = %s JE NEZASTAVITELNY!!! +MONSTER_SMALL = %s JE MONSTRUM! +GODLIKE_SMALL = %s JE BUH!!! +KNIFE_MSG_1 = %s nasekal a serviruje %s +KNIFE_MSG_2 = %s podrizl jak kure %s +KNIFE_MSG_3 = %s se priplizil zezadu a odkrouhl %s +KNIFE_MSG_4 = %s podrizl %s +HE_MSG_1 = %s poslal maly darek %s +HE_MSG_2 = %s hodil maly darek %s +HE_MSG_3 = %s skvele zabil granatem %s +HE_MSG_4 = %s vyhodil do vzduchu %s +SHE_MSG_1 = %s detonoval sam od sebe :) +SHE_MSG_2 = %s zkousel specialni efekty s grantem :) +SHE_MSG_3 = %s spolkl cely granat! :) +SHE_MSG_4 = %s explodoval! +HEAD_MSG_1 = $kn zabil $vn preciznim^nvystrelem do hlavy! +HEAD_MSG_2 = $kn ustrelil $vnovu^nhlavu +HEAD_MSG_3 = $kn rozslehal $vnovu hlavu^njako puding +HEAD_MSG_4 = $kn skalpoval $vn +HEAD_MSG_5 = $vnova hlava je nyni^nvsude okolo +HEAD_MSG_6 = $kn to umi vytecne s $wn,^njak uz $vn zjistil :) +HEAD_MSG_7 = $vn's nechal hlavu prilis ^ndlouho v $knove zamerovaci... +DOUBLE_MSG1 = Wow! %s trefil 2 mouchy jednou ranou !!! +DOUBLE_MSG2 = Neskutecne! %s zabil tri naraz !!! +DOUBLE_MSG3 = Ohromujici! %s jich sejmul %d naraz !!! +MORTAR_MSG1 = %s nastavil kanon dobre a odstrelil %s +MORTAR_MSG2 = %s zabil na dlouhou vzdalenost %s +KILL_INFO1 = %s te zabil %s^nze vzdalenosti %.2f metru.^n +KILL_INFO2 = %d te trefil %dx ^na sebral %dhp.^n +KILL_INFO3 = Sebral jsi mu %d hp %d zasahy.^n +KILL_INFO4 = Trefil te do:^n%s^n +STILL_HAS = %s stale ma %dhp +NO_KILLER = Nejsi zabijak... +TOPX = Zebricek %d +FFIRE_IS = Friendly fire: +ATTACKERS = Utocnici: +VICTIMS = Obeti: +DMG = dmg +HIT_S = zasahu +YOU_HIT = Trefil jsi %s v: +SERVER_STATS = Statistika serveru +SHOW_STATS = Zobrazit statistiku +SHOW_RANK = Zobrazit zebricek +TA_MSG = %s trefil spoluhrace +TK_MSG = %s zabil spoluhrace ! +NADE_CAUGHT = Wow! %s chytil nepratelsy granate! +NADE_FAILEDTK = Oops.. %s te zabil kdyz zkousel hodit zpet nepratelsky granat.. +NADE_FAILED = %s neuspel pri pokudu odhodit nepratelsky granat.. +NADE_MASTER = OMG! %s je granatovy mistr !!! +DISABLED_MSG = Server nema tuto volbu povolenou +MOST_KILLS = Nejvice zabitych +KILL = zabiti +KILLS = zabiti +HEADSHOT = headshot +HEADSHOTS = headshotu +BEST_SCORE = Nejlepsi Score +POINTS = bodu +MOST_DAMAGE = Nejdrsnejsi +DAMAGE = poskozeni +HIT = zasah +HITS = zasahu +M_KILLS = Zabiti: +M_DEATHS = Smrti: +M_SCORE = Score: +M_TKS = TKs: +M_HITS = Zasahu: +M_SHOTS = Strel: +M_HS = HS: +M_WEAPON = Zbran: +M_DAMAGE = Poskozeni: +M_NICK = Nick: +M_YOUR_RANK_IS = Jsi na +M_THEIR_RANK_IS = Je na +M_OF = z + +[fi] +WHOLEBODY = koko keho +HEAD = paa +CHEST = rinta +STOMACH = vatsa +LEFTARM = vasen kasi +RIGHTARM = oikea kasi +LEFTLEG = vasen jalka +RIGHTLEG = oikea jalka +MULTI_MSG = Multikill! %s^n %d tapolla (%d hs) +ULTRA_MSG = Ultrakill! %s^n %d tapolla (%d hs) +SPREE_MSG = %s IS ON A KILLING SPREE!!!^nwith %d kills (%d hs) +RAMPAGE_MSG = RAMPAGE!!! %s^nwith %d kills (%d hs) +UNSTOPPABLE_MSG = %s IS UNSTOPPABLE!!!^nwith %d kills (%d hs) +MONSTER_MSG = %s IS A MONSTER!^nwith %d kills (%d hs) +GODLIKE_MSG = %s IS GODLIKE!!!!^nwith %d kills (%d hs) +MULTI_SMALL = %s: Multiill! +ULTRA_SMALL = %s: Ultrakill!!! +SPREE_SMALL = %s IS ON A KILLING SPREE!!! +RAMPAGE_SMALL = %s: RAMPAGE!!! +UNSTOPPABLE_SMALL = %s IS UNSTOPPABLE!!! +MONSTER_SMALL = %s IS A MONSTER! +GODLIKE_SMALL = %s IS GODLIKE!!! +KNIFE_MSG1 = %s puukotti pelaajan %s +KNIFE_MSG2 = %s puukotti pelaajan %s +KNIFE_MSG3 = %s puukotti pelaajan %s +KNIFE_MSG4 = %s puukotti pelaajan %s +HE_MSG1 = %s tappoi pelaajan %s granaatilla +HE_MSG2 = %s tappoi pelaajan %s granaatilla +HE_MSG3 = %s tappoi pelaajan %s granaatilla +HE_MSG4 = %s tappoi pelaajan %s granaatilla +SHE_MSG1 = %s rajaytti itsensa onnistuneesti +SHE_MSG2 = %s rajaytti itsensa onnistuneesti +SHE_MSG3 = %s rajaytti itsensa onnistuneesti +SHE_MSG4 = %s rajaytti itsensa onnistuneesti +HEAD_MSG1 = $kn tappoi pelaajan $vn headshotilla +HEAD_MSG2 = $kn tappoi pelaajan $vn headshotilla $wn:sta +HEAD_MSG3 = $kn tappoi pelaajan $vn headshotilla $wn:sta +HEAD_MSG4 = $kn tappoi pelaajan $vn +HEAD_MSG5 = $vn tapettiin headshotilla +HEAD_MSG6 = $kn tappoi pelaajan $vn headshotilla $wn:sta +HEAD_MSG7 = $kn tappoi pelaajan $vn headshotilla +DOUBLE_MSG1 = %s suoritti tuplatapon +DOUBLE_MSG2 = %s suoritti triplatapon +DOUBLE_MSG3 = %s tappoi %d pelaajaa kerralla +MORTAR_MSG1 = %s set up mortar well and blow out %s +MORTAR_MSG2 = %s tappoi pelaajan %s pitkalta matkalta +KILL_INFO1 = %s tappoi sinut %.2f metrin etaisyydelta.^n +KILL_INFO2 = Han teki %d damagea sinulle %d osumalla^nhanella on viela %dhp.^n +KILL_INFO3 = Teit %d damagea hanelle %d osumalla^n +KILL_INFO4 = Han osui sinua:^n%s^n +STILL_HAS = pelaajalla %s on viela %dhp +NO_KILLER = Kukaan ei tappanut sinua... +TOPX = Top %d +FFIRE_IS = Friendly fire: +ATTACKERS = Hyokkaajat: +VICTIMS = Uhrit: +DMG = damage +HIT_S = osumat +YOU_HIT = osuit pelaajaa %s: +SERVER_STATS = Palvelimen tilastot +SHOW_STATS = Nayta tilastot +SHOW_RANK = Nayta ranking +TA_MSG = %s hyokkasi tiimilaisensa kimppuun +TK_MSG = %s tappoi tiimilaisensa +NADE_CATCHED = %s kuoli vihollisen granaattiin +NADE_FAILEDTK = %s tappoi sinut granaatilla +NADE_FAILED = %s kuoli granaattiin +NADE_MASTER = %s on loistava granaattien kanssa... +DISABLED_MSG = Palvelin on poistanut tuon vaihtoehdon kaytosta +MOST_KILLS = Eniten tappoja +KILL = tappo +KILLS = tapot +HEADSHOT = headshot +HEADSHOTS = headshotit +BEST_SCORE = Paras pistemaara +POINTS = pisteita +MOST_DAMAGE = Eniten damagea +DAMAGE = damage +HIT = osuma +HITS = osumat +M_KILLS = Tapot: +M_DEATHS = Kuolemat: +M_SCORE = Pisteet: +M_TKS = TKt: +M_HITS = Osumat: +M_SHOTS = Laukaukset: +M_HS = HS: +M_WEAPON = Ase: +M_DAMAGE = Damage: +M_NICK = Nick: +M_YOUR_RANK_IS = Sijoituksesi on +M_THEIR_RANK_IS = Heidan sijoituksensa on +M_OF = + +[ls] +WHOLEBODY = wh0l3 |30dy +HEAD = h34d +CHEST = ch3z7 +STOMACH = z70m4ch +LEFTARM = l3f74rm +RIGHTARM = r!gh74rm +LEFTLEG = l3f7l3g +RIGHTLEG = r!gh7l3g +MULTI_MSG = M|_|l7!-K!ll! %s^nw!7h %d k!llz (%d hz) +ULTRA_MSG = Ul7r4-K!ll!!! %s^nw!7h %d k!llz (%d hz) +SPREE_MSG = %s iz pwnz0r!!!^nw!7h %d k!llz (%d hz) +RAMPAGE_MSG = KILLZ0|2!!! %s^nw!7h %d k!llz (%d hz) +UNSTOPPABLE_MSG = %s iz h4x0|2in'! nw!7h %d k!llz (%d hz) +MONSTER_MSG = %s iz zux!^nw!7h %d k!llz (%d hz) +GODLIKE_MSG = %s Iz |200t!!!!^nw!7h %d k!llz (%d hz) +MULTI_SMALL = %s: M|_|l7!-K!ll! +ULTRA_SMALL = %s: Ul7r4-K!ll!!! +SPREE_SMALL = %s iz pwnz0r!!! +RAMPAGE_SMALL = %s: KILLZ0|2!!! +UNSTOPPABLE_SMALL = %s iz h4x0|2in'!! +MONSTER_SMALL = %s iz zux! +GODLIKE_SMALL = %s |z |200t!!! +KNIFE_MSG1 = %s zl!c3d 4nd d!c3d %s +KNIFE_MSG2 = %s p|_|ll3d 0|_|7 kn!f3 4nd g|_|773d %s +KNIFE_MSG3 = %s zn34kz c4r3f|_|lly |33h!nd 4nd kn!f3d %s +KNIFE_MSG4 = %s kn!v3d %s +HE_MSG1 = %s z3ndz 4 l!77l3 g!f7 70 %s +HE_MSG2 = %s 7hr0wz 4 zm4ll pr3z3n7 70 %s +HE_MSG3 = %s m4d3 4 pr3c!z!0n 7hr0w 70 %s +HE_MSG4 = %s g07 4 |3!g 3xpl0z!0n f0r %s +SHE_MSG1 = %s d370n473d h!mz3lf w!7h 4 gr3n4d3 +SHE_MSG2 = %s 7ryz 7h3 3ff3c7 0f 4 gr3n4d3 +SHE_MSG3 = %s k!ck3d 4 gr3n4d3 !n70 h!z 0wn 4zz +SHE_MSG4 = %s 3xpl0d3z! +HEAD_MSG1 = $kn k!ll3d $vn w!7h 4 w3ll^npl4c3d zh07 70 7h3 h34d! +HEAD_MSG2 = $kn r3m0v3d $vn'z^nh34d w!7h 7h3 $wn +HEAD_MSG3 = $kn 7|_|rn3d $vn'z h34d^n!n70 p|_|dd!ng w!7h 7h3 $wn +HEAD_MSG4 = $vn g07 pwn3d |3y $kn +HEAD_MSG5 = $vn'z h34d h4z |333n^n7|_|rn3d !n70 r3d j3ll0 +HEAD_MSG6 = $kn h4z z|_|p3r|3 4!m w!7h 7h3 $wn,^n4z $vn w3ll kn0wz. +HEAD_MSG7 = $vn'z h34d z74y3d !n $kn'z^ncr0zzh4!rz 4 |3!7 700 l0ng... +DOUBLE_MSG1 = W0w! %s m4d3 4 d0|_||3l3 k!ll !!! +DOUBLE_MSG2 = Incr3d!|3l3! %s m4d3 4 7r!pl3 k!ll !!! +DOUBLE_MSG3 = Am4z!ng! %s m4d3 %d k!llz 47 0nc3 !!! +MORTAR_MSG1 = %s z37 |_|p m0r74r w3ll 4nd |3l0w 0|_|7 %s +MORTAR_MSG2 = %s m4d3 4 l0ng r4ng3 k!ll 70 %s +KILL_INFO1 = %s k!ll3d y0|_| w!7h %s^nfr0m d!z74nc3 0f %.2f m373rz.^n +KILL_INFO2 = H3 d!d %d d4m4g3 70 y0|_| w!7h %d h!7(z)^n4nd z7!ll h4z %dhp.^n +KILL_INFO3 = Y0|_| d!d %d d4m4g3 70 h!m w!7h %d h!7(z).^n +KILL_INFO4 = H3 h!7z y0|_| !n:^n%s^n +STILL_HAS = %s z7!ll h4z %dhp +NO_KILLER = Y0|_| h4v3 n0 k!ll3r... +TOPX = T0p %d +FFIRE_IS = Fr!3ndly f!r3: +ATTACKERS = A774ck3rz: +VICTIMS = V!c7!mz: +DMG = dmz +HIT_S = h!7(z) +YOU_HIT = Y0|_| h!7 %s !n: +SERVER_STATS = S3rv3r S747z +SHOW_STATS = Sh0w z747z +SHOW_RANK = Sh0w r4nk +TA_MSG = %s 4774ck3d 4 734mm473 +TK_MSG = %s k!ll3d 4 734mm473 ! +NADE_CAUGHT = W0w! %s c4|_|gh7 3n3my gr3n4d3! +NADE_FAILEDTK = O0pz.. %s k!ll3d y0|_| 7ry!ng 70 7hr0w |34ck 3n3my gr3n4d3.. +NADE_FAILED = %s f4!l3d 70 7hr0w |34ck 3n3my gr3n4d3.. +NADE_MASTER = OMG! %s !z gr3n4d3 m4z73r !!! +DISABLED_MSG = S3rv3r h4z d!z4|3l3d 7h47 0p7!0n +MOST_KILLS = M0z7 k!llz +KILL = k!ll +KILLS = k!llz +HEADSHOT = h34dzh07 +HEADSHOTS = h34dzh07z +BEST_SCORE = B3z7 Sc0r3 +POINTS = p0!n7z +MOST_DAMAGE = M0z7 d4m4g3 +DAMAGE = d4m4g3 +HIT = h!7 +HITS = h!7z +M_KILLS = K!llz: +M_DEATHS = D347hz: +M_SCORE = Sc0r3: +M_TKS = TKz: +M_HITS = H!7z: +M_SHOTS = Sh07z: +M_HS = HS: +M_WEAPON = W34p0n: +M_DAMAGE = D4m4g3: +M_NICK = N!ck: +M_YOUR_RANK_IS = Y0|_|r r4nk !z +M_THEIR_RANK_IS = Th3!r r4nk !z +M_OF = 0f + +[bg] +WHOLEBODY = cqloto tqlo +HEAD = glava +CHEST = graden ko6 +STOMACH = stomak +LEFTARM = lqva raka +RIGHTARM = dqsna raka +LEFTLEG = lqv krak +RIGHTLEG = desen krak +MULTI_MSG = Multi-Kill! %s^ns %d ubiistva (%d glavi) +ULTRA_MSG = Ultra-Kill!!! %s^ns %d ubiistva (%d glavi) +SPREE_MSG = %s IS ON A KILLING SPREE!!!^ns %d ubiistva (%d glavi) +RAMPAGE_MSG = RAMPAGE!!! %s^ns %d ubiistva (%d glavi) +UNSTOPPABLE_MSG = %s IS UNSTOPPABLE!!!^ns %d ubiistva (%d glavi) +MONSTER_MSG = %s IS A MONSTER!^s %d ubiistva (%d glavi) +GODLIKE_MSG = %s IS GODLIKE!!!!^ns %d ubiistva (%d glavi) +MULTI_SMALL = %s: Multi-Kill! +ULTRA_SMALL = %s: Ultra-Kill!!! +SPREE_SMALL = %s IS ON A KILLING SPREE!!! +RAMPAGE_SMALL = %s: RAMPAGE!!! +UNSTOPPABLE_SMALL = %s IS UNSTOPPABLE!!! +MONSTER_SMALL = %s IS A MONSTER! +GODLIKE_SMALL = %s IS GODLIKE!!! +KNIFE_MSG_1 = %s nakalcan i ubit %s +KNIFE_MSG_2 = %s izvadi no6 i zasrami %s +KNIFE_MSG_3 = %s zaobikoli skri6no i nakalca %s +KNIFE_MSG_4 = %s ubi s no6 %s +HE_MSG_1 = %s isprati malak podarak do %s +HE_MSG_2 = %s hvarli malak podarak do %s +HE_MSG_3 = %s napravi to4no hvarlqne do %s +HE_MSG_4 = %s ima golqm explosiv za %s +SHE_MSG_1 = %s samoubi se s granata +SHE_MSG_2 = %s opitava effecta ot an HE Grenata +SHE_MSG_3 = %s Gla6ta celi granati! +SHE_MSG_4 = %s explodira! +HEAD_MSG1 = $kn ubi $vn sas mnogo precenen istrel v glavata! +HEAD_MSG2 = $kn premahna glavata na $vn s $wn +HEAD_MSG3 = $kn napravi glavata na $vn ^nna puding sas $wn +HEAD_MSG4 = $vn be6e razmazan ot $kn +HEAD_MSG5 = $vn's head has been^nturned into red jello +HEAD_MSG6 = $kn ima mnogo dobar istrel s $wn,^nas $vn mnogo dobre znae. +HEAD_MSG7 = glavata na $vn ostana mnogo vreme na mernika na $kn +DOUBLE_MSG1 = Wow! %s napravi double kill !!! +DOUBLE_MSG2 = Neveroqtno! %s napravi triple kill !!! +DOUBLE_MSG3 = Udivitelno! %s napravi %d ubiistva na vedna6 !!! +MORTAR_MSG1 = %s set up mortar well and blow out %s +MORTAR_MSG2 = %s napravi dalak istrel do %s +KILL_INFO1 = %s ubi vi s %s^not distancia ot %.2f metra.^n +KILL_INFO2 = Toi vi napravi %d damage s %d udar(i)^ni vse o6te ima %dhp krav.^n +KILL_INFO3 = Vie napravihte %d damage kam nego s %d udar(i).^n +KILL_INFO4 = toi vi odari v:^n%s^n +STILL_HAS = %s vse o6te ima %dhp +NO_KILLER = Nqmate ubiec... +TOPX = Nai %d +FFIRE_IS = Friendly fire: +ATTACKERS = Attackers: +VICTIMS = Victims: +DMG = dmg +HIT_S = udar(i) +YOU_HIT = vie udarihte %s v: +SERVER_STATS = Server Statistiki +SHOW_STATS = Pokaji statistiki +SHOW_RANK = Pokaji rank +TA_MSG = %s atakuva saotbornik +TK_MSG = %s ubi saotbornik ! +NADE_CAUGHT = Wow! %s hvana na protivnika granatata! +NADE_FAILEDTK = Oops.. %s vi ubi kato se ma4e6e da hvarli granata na protivnia otbor... +NADE_FAILED = %s neuspq da hvarli granatata na protivnia otbor... +NADE_MASTER = OMG! %s e mastara na granatite !!! +DISABLED_MSG = Servare e isklu4il tazi opcq +MOST_KILLS = Nai mnogo ubiistva +KILL = ubiistvo +KILLS = ubiistva +HEADSHOT = udar v glavata +HEADSHOTS = udari v glavata +BEST_SCORE = Nai dobar resultat +POINTS = to4ki +MOST_DAMAGE = Nai mnogo damage +DAMAGE = damage +HIT = udar +HITS = udari +M_KILLS = ubiistva: +M_DEATHS = umirania: +M_SCORE = Resultat: +M_TKS = TKS: +M_HITS = udari: +M_SHOTS = istreli: +M_HS = udari v glavata: +M_WEAPON = urajie: +M_DAMAGE = Damage: +M_NICK = Ime: +M_YOUR_RANK_IS = Va6ia rank e +M_THEIR_RANK_IS = Tqhnia rank e +M_OF = ot + +[ro] +WHOLEBODY = tot corpul +HEAD = cap +CHEST = piept +STOMACH = stomac +LEFTARM = brat stang +RIGHTARM = brat drept +LEFTLEG = picior stang +RIGHTLEG = picior drept +MULTI_MSG = Multi-Ucidere! %s^ncu %d ucideri (%d hs) +ULTRA_MSG = Ultra-Ucidere!!! %s^ncu %d ucideri (%d hs) +SPREE_MSG = %s ARE CHEF DE MACEL!!!^nwith %d kills (%d hs) +RAMPAGE_MSG = %s ESTE FURIOS!!!^ncu %d ucideri (%d hs) +UNSTOPPABLE_MSG = %s ESTE DE NEOPRIT!!!^ncu %d ucideri (%d hs) +MONSTER_MSG = %s ESTE UN MONSTRU!^ncu %d ucideri (%d hs) +GODLIKE_MSG = %s ESTE DIVIN!!!!^ncu %d ucideri (%d hs) +MULTI_SMALL = %s: Multi-Ucidere! +ULTRA_SMALL = %s: Ultra-Ucidere!!! +SPREE_SMALL = %s ARE CHEF DE MACEL!!! +RAMPAGE_SMALL = %s ESTE FURIOS!!! +UNSTOPPABLE_SMALL = %s ESTE DE NEOPRIT!!! +MONSTER_SMALL = %s ESTE UN MONSTRU! +GODLIKE_SMALL = %s ESTE DIVIN!!! +KNIFE_MSG_1 = %s l-a taiat si feliat pe %s +KNIFE_MSG_2 = %s a scos cutitul afara si l-a macelarit pe %s +KNIFE_MSG_3 = %s se furiseaza atent pe la spate si il taie %s +KNIFE_MSG_4 = %s l-a injunghiat pe %s +HE_MSG_1 = %s ii trimite un mic cadou lui %s +HE_MSG_2 = %s ii arunca un dar micut lui %s +HE_MSG_3 = %s a facut o aruncare precisa catre %s +HE_MSG_4 = %s a avut o explozie mare pentru %s +SHE_MSG_1 = %s s-a detonat cu o grenada +SHE_MSG_2 = %s incearca efectul unei grenade +SHE_MSG_3 = %s inghite grenazi cu totul! +SHE_MSG_4 = %s explodeaza! +HEAD_MSG_1 = $kn l-a ucis pe $vn cu o impuscatura bine^nplasata pe cap! +HEAD_MSG_2 = $kn a inlaturat capul lui $vn^ncu $wn +HEAD_MSG_3 = $kn a transformat capul lui $vn ^nin budinca cu $wn +HEAD_MSG_4 = $vn a fost invins de $kn +HEAD_MSG_5 = Capul lui $vn a fost^ntransformat in gelatina rosie +HEAD_MSG_6 = $kn are o tinta superba cu $wn,^niar $vn stie bine. +HEAD_MSG_7 = Capul lui $vn a stat prea mult in tinta lui $kn... +DOUBLE_MSG1 = Wow! %s a facut o dubla ucidere!!! +DOUBLE_MSG2 = Incredibil! %s a facut o tripla ucidere !!! +DOUBLE_MSG3 = Uimitor! %s a ucis %d oameni deodata !!! +MORTAR_MSG1 = %s a plasat bine mortarul si l-a aruncat in aer pe %s +MORTAR_MSG2 = %s l-a ucis pe %s dintr-o raza mare de actiune +KILL_INFO1 = %s te-a ucis cu %s^nde la distanta de %.2f metri.^n +KILL_INFO2 = El ti-a facut %d dmg din %d lovituri^si inca mai are %dhp.^n +KILL_INFO3 = Tu i-ai facut %d dmg din %d lovituri.^n +KILL_INFO4 = El te-a lovit in:^n%s^n +STILL_HAS = %s inca mai are %dhp +NO_KILLER = Nu ai nici o ucidere... +TOPX = Top %d +FFIRE_IS = Friendly-fire: +ATTACKERS = Atacatori: +VICTIMS = Victime: +DMG = dmg +HIT_S = lovituri +YOU_HIT = Tu l-ai lovit pe %s in: +SERVER_STATS = Statisticile Server-ului +SHOW_STATS = Arata statistici +SHOW_RANK = Arata pozitia +TA_MSG = %s a atacat un coleg de echipa +TK_MSG = %s a ucis un coleg de echipa ! +NADE_CAUGHT = Wow! %s a prins grenada inamicului! +NADE_FAILEDTK = Oops.. %s te-a ucis incercand sa arunce inapoi grenada inamicului.. +NADE_FAILED = %s nu a putut arunca inapoi grenada inamicului.. +NADE_MASTER = OMG! %s este maestru al grenadelor !!! +DISABLED_MSG = Server-ul a dezactivat aceasta optiune +MOST_KILLS = Cele mai multe ucideri +KILL = ucidere +KILLS = ucideri +HEADSHOT = hs +HEADSHOTS = hs +BEST_SCORE = Cel mai bun scor +POINTS = puncte +MOST_DAMAGE = Cel mai mult dmg +DAMAGE = dmg +HIT = lovitura +HITS = lovituri +M_KILLS = Ucideri: +M_DEATHS = Decesuri: +M_SCORE = Scor: +M_TKS = TK: +M_HITS = Lovituri: +M_SHOTS = Focuri: +M_HS = HS: +M_WEAPON = Arma: +M_DAMAGE = Dmg: +M_NICK = Nume: +M_YOUR_RANK_IS = Pozitia ta este +M_THEIR_RANK_IS = Pozitia lor este +M_OF = din + +[hu] +WHOLEBODY = egesz test +HEAD = fej +CHEST = csipo +STOMACH = has +LEFTARM = balkar +RIGHTARM = jobbkar +LEFTLEG = ballab +RIGHTLEG = jobblab +MULTI_MSG = Multi-Gyilok! %s^nwith %d oles (%d fej) +ULTRA_MSG = Ultra-Gyilok!!! %s^nwith %d oles (%d fej) +SPREE_MSG = %s OLDOKLESI SOROZAT!!!^nwith %d oles(%d fej) +RAMPAGE_MSG = RAMPAGE!!! %s^nwith %d oles (%d fej) +UNSTOPPABLE_MSG = %s a MEGALLITHATATLAN!!!^nwith %d oles (%d fej) +MONSTER_MSG = %s EGY GYILOKGEP!^nwith %d oles (%d fej) +GODLIKE_MSG = %s AZ ISTEN!!!!^nwith %d oles (%d fej) +MULTI_SMALL = %s: Multi-Gyilok! +ULTRA_SMALL = %s: Ultra-Gyilok!!! +SPREE_SMALL = %s IS ON A KILLING SPREE!!! +RAMPAGE_SMALL = %s: RAMPAGE!!! +UNSTOPPABLE_SMALL = %s A MEGALLITHATATLAN!!! +MONSTER_SMALL = %s EGY GYILOKGEPP! +GODLIKE_SMALL = %s AZ ISTEN!!! +KNIFE_MSG1 = %s Felvagta %s-t +KNIFE_MSG2 = %s Szetszabta%s-t +KNIFE_MSG3 = %s szetvagta %s-t +KNIFE_MSG4 = %s megkeselte %s-t +HE_MSG1 = %s megajandekozta %s egy granattal +HE_MSG2 = %s felrobbantotta %s +HE_MSG3 = %s kirobbantotta %s +HE_MSG4 = %s szetrobbantotta %s +SHE_MSG1 = %s felrobbantotta magat... +SHE_MSG2 = %s megnezte kozelebrol a granatjat... +SHE_MSG3 = %s azt hitte krumpli van a kezeben... +SHE_MSG4 = %s Felrobbant! +HEAD_MSG1 = $kn megolte $vn t egy fejlovessel! +HEAD_MSG2 = $kn eltavolittotta $vn fejet^naz $wn-vel. +HEAD_MSG3 = $kn hullocsillagot csinalt $vn fejobel egy $wn-vel +HEAD_MSG4 = $vn fejen lett love $kn fegyvere altal... +HEAD_MSG5 = $vn feje foldkoruli palyara alt. +HEAD_MSG6 = $kn segitsegevel $wn feje mar a csillagok kozott tundokolhet... +HEAD_MSG7 = Miaz? Talan egy repulo? Dehogy... Csak $vn-feje +DOUBLE_MSG1 = Wow! %s duplan olt!!! +DOUBLE_MSG2 = Hihetetlen! %s triplan olt !!! +DOUBLE_MSG3 = Szuper! %s egyhuzamban %d embert gyilkolt meg !!! +MORTAR_MSG1 = %s fel allitott egy kilovoallast, es egyszerre %s lazadod irtott ki vele +MORTAR_MSG2 = %s egyhuzamban %s embert olt +KILL_INFO1 = %s megolt teged egy %sel^n%.2f meterrol.^n +KILL_INFO2 = O %d -et sebzett rajtad, %d talalattal^nNeki maradt %dhpja.^n +KILL_INFO3 = Te %d -et sebeztel rajta %d talalattal.^n +KILL_INFO4 = O eltalalt teged itt:^n%s^n +STILL_HAS = %s-nek meg van %dhpja +NO_KILLER = Nincs gyilkosod... +TOPX = Legjobb %d +FFIRE_IS = Csapattars sebzes: +ATTACKERS = Tamadok: +VICTIMS = Aldozatok: +DMG = sebzes +HIT_S = talalat +YOU_HIT = Te eltalaltad %st itt: +SERVER_STATS = Szerver Sztatusz +SHOW_STATS = Allas mutatasa +SHOW_RANK = Helyezes mutatasa +TA_MSG = %s megtamadta a csapattarsat +TK_MSG = %s megolte a csapattarsat! +NADE_CAUGHT = Wow! %s elkapott egy ellenseges granatot! +NADE_FAILEDTK = Oops.. %s megolt teged, visszaprobalta dobni az ellenseges granatot.. +NADE_FAILED = %s -nek nem sikerult visszadobni az ellenseges granatot.. +NADE_MASTER = OMG! %s egy granatmester!!! +DISABLED_MSG = A szerver letiltotta ezt az opciot +MOST_KILLS = Legtobb gyilok +KILL = oles +KILLS = oles +HEADSHOT = fejloves +HEADSHOTS = vejloves +BEST_SCORE = Legjobb pont +POINTS = pont +MOST_DAMAGE = Legtobb sebzes +DAMAGE = sebzes +HIT = talalat +HITS = talalat +M_KILLS = Oles: +M_DEATHS = Halal: +M_SCORE = Eredmeny: +M_TKS = TK: +M_HITS = Talalat: +M_SHOTS = Loves: +M_HS = Fejloves: +M_WEAPON = Fegyver: +M_DAMAGE = Sebzes: +M_NICK = Nick: +M_YOUR_RANK_IS = A te helyezesed +M_THEIR_RANK_IS = Az o helyezese +M_OF = a + +[lt] +WHOLEBODY = kunas +HEAD = galva +CHEST = krutine +STOMACH = pilvas +LEFTARM = kaire ranka +RIGHTARM = desine ranka +LEFTLEG = kaire koja +RIGHTLEG = desine koja +MULTI_MSG = Multi-Kill! %s^nsu %d nuzudymais (%d hs) +ULTRA_MSG = Ultra-Kill!!! %s^nsu %d nuzudymais (%d hs) +SPREE_MSG = %s IS ON A KILLING SPREE!!!^nsu %d nuzudymais (%d hs) +RAMPAGE_MSG = RAMPAGE!!! %s^nsu %d nuzudymais (%d hs) +UNSTOPPABLE_MSG = %s IS UNSTOPPABLE!!!^nsu %d nuzudymais (%d hs) +MONSTER_MSG = %s IS A MONSTER!^nsu %d nuzudymais (%d hs) +GODLIKE_MSG = %s IS GODLIKE!!!!^nsu %d nuzudymais (%d hs) +MULTI_SMALL = %s: Multi-Kill! +ULTRA_SMALL = %s: Ultra-Kill!!! +SPREE_SMALL = %s IS ON A KILLING SPREE!!! +RAMPAGE_SMALL = %s: RAMPAGE!!! +UNSTOPPABLE_SMALL = %s IS UNSTOPPABLE!!! +MONSTER_SMALL = %s IS A MONSTER! +GODLIKE_SMALL = %s IS GODLIKE!!! +KNIFE_MSG1 = %s papjautas zaidziant %s +KNIFE_MSG2 = %s istrauke peili is %s +KNIFE_MSG3 = %s priselino ir papjove %s +KNIFE_MSG4 = %s uzpjove %s +HE_MSG1 = %s issiunte maza dovanele %s +HE_MSG2 = %s numete maza dovanele %s +HE_MSG3 = %s keistai mete i %s +HE_MSG4 = %s dave dideli sprogima %s +SHE_MSG1 = %s susisprogdino +SHE_MSG2 = %s isbande HE efektyvuma +SHE_MSG3 = %s prarijo visa granata! +SHE_MSG4 = %s sprogo! +HEAD_MSG1 = $kn nudejo $vn su ^n gerai nusitaikes i galva! +HEAD_MSG2 = $kn nunese $vn ^n galva su $wn +HEAD_MSG3 = $kn pasuko $vn galva ^n i purva su $wn +HEAD_MSG4 = $vn suterse $kn +HEAD_MSG5 = $vn galva buvo ^n pasukta i raudona bala +HEAD_MSG6 = $kn taikliai saudo su $wn,^n tai $vn gerai zino. +HEAD_MSG7 = $vn galva nuskrido nuo $kn ^n taikinys per geras.. +DOUBLE_MSG1 = Wow! %s padare dviguba nuzudyma!!! +DOUBLE_MSG2 = Nepakartojama! %s padare triguba nuzudyma !!! +DOUBLE_MSG3 = Nuostabu! %s nudejo %d iskarto!!! +MORTAR_MSG1 = %s uztaise mortara ir susprogdino %s +MORTAR_MSG2 = %s padare tolima nuzudyma %s +KILL_INFO1 = %s nudejo tave su %s^nis %.2f metru.^n +KILL_INFO2 = Jis padare %d zalos tau su %d pataikymu(-ais)^nir vis dar turi %dgivybiu.^n +KILL_INFO3 = Tu padarei %d zalos jam su %d pataikymu(-ais).^n +KILL_INFO4 = Jis pataike tau i:^n%s^n +STILL_HAS = %s dar turi %dgivybiu +NO_KILLER = Neturi zudiko... +TOPX = Top %d +FFIRE_IS = Savu saudymas: +ATTACKERS = Uzpuolikai: +VICTIMS = Aukos: +DMG = zala +HIT_S = pataikymas(-ai) +YOU_HIT = Tu suzeidei %s i: +SERVER_STATS = Serverio statusai +SHOW_STATS = Parodyti statusus +SHOW_RANK = Parodyti rank +TA_MSG = %s saudo i komandos draugus +TK_MSG = %s nusove komandos drauga! +NADE_CAUGHT = Wow! %s pagavo priesu granata! +NADE_FAILEDTK = Ups.. %s zuvo bandant atgal mesti priesu granata.. +NADE_FAILED = %s Nepavyko numesti atgal priesu granatos.. +NADE_MASTER = O Dieve! %s yra granatu profas!!! +DISABLED_MSG = Serveris uzdraude sia komanda +MOST_KILLS = Daugiausia nuzudymu +KILL = nuzudymas +KILLS = nuzudymai +HEADSHOT = headshotas +HEADSHOTS = headshotai +BEST_SCORE = Geriausias rezultatas +POINTS = taskai +MOST_DAMAGE = Daugiausia zalos +DAMAGE = zala +HIT = pataikymas +HITS = pataikymai +M_KILLS = Nuzudymai: +M_DEATHS = Mirtys: +M_SCORE = Rezultatai: +M_TKS = TKs: +M_HITS = Pataikymai: +M_SHOTS = Sovimai: +M_HS = HS: +M_WEAPON = Ginklas: +M_DAMAGE = Zala: +M_NICK = Nikas: +M_YOUR_RANK_IS = Tavo rank yra +M_THEIR_RANK_IS = Jo rank yra +M_OF = is + +[sk] +WHOLEBODY = cele telo +HEAD = hlava +CHEST = trup +STOMACH = zaludok +LEFTARM = lava ruka +RIGHTARM = prava ruka +LEFTLEG = lava noha +RIGHTLEG = prava noha +MULTI_MSG = Multi-Kill! %s^nzabil %d ludi (%d hedkou) +ULTRA_MSG = Ultra-Kill!!! %s^zabil %d ludi (%d hedkou) +SPREE_MSG = %s MA ZABIJACKY ZACHVAT!!!^nZABIL %d ludi (%d hedkou) +RAMPAGE_MSG = AMOK!!! %s^nzabil %d ludi (%d hedkou) +UNSTOPPABLE_MSG = %s JE NEZASTAVYTELNY!!!^nzabil %d ludi (%d hedkou) +MONSTER_MSG = %s JE MONSTRUM!^nzabil %d ludi (%d hedkou) +GODLIKE_MSG = %s JE BOH!!!!^nzabil %d ludi (%d hedkou) +MULTI_SMALL = %s: Multi-Kill! +ULTRA_SMALL = %s: Ultra-Kill!!! +SPREE_SMALL = %s MA ZABIJACKY ZACHVAT!!! +RAMPAGE_SMALL = %s: AMOK!!! +UNSTOPPABLE_SMALL = %s JE NEZASTAVYTELNY!!! +MONSTER_SMALL = %s JE MONSTRUM! +GODLIKE_SMALL = %s JE BOH!!! +KNIFE_MSG_1 = %s nakrajal a serviruje %s +KNIFE_MSG_2 = %s podrezal ako svinu %s +KNIFE_MSG_3 = %s sa priplazil zozadu a odrovnal %s +KNIFE_MSG_4 = %s podrezal %s +HE_MSG_1 = %s poslal maly darcek %s +HE_MSG_2 = %s hodil maly darcek %s +HE_MSG_3 = %s skvele zabil granatom %s +HE_MSG_4 = %s vyhodil do vzduchu %s +SHE_MSG_1 = %s detonoval sam od seba :) +SHE_MSG_2 = %s zkusal specialne efekty s grantom :) +SHE_MSG_3 = %s prehltol cely granat! :) +SHE_MSG_4 = %s explodoval! +HEAD_MSG_1 = $kn zabil $vn preciznym^nvystrelom do hlavy! +HEAD_MSG_2 = $kn odstrelil $vnovu^nhlavu +HEAD_MSG_3 = $kn rozslahal $vnovu hlavu^nako puding +HEAD_MSG_4 = $kn oskalpoval $vn +HEAD_MSG_5 = $vnova hlava je teraz^nvsade naokolo +HEAD_MSG_6 = $kn to vie vynimocne s $wn,^nako uz $vn zistil :) +HEAD_MSG_7 = $vn's nechal hlavu priliz ^ndlho v $knov zameriavaci... +DOUBLE_MSG1 = Wow! %s trafil 2 muchy jednou ranou !!! +DOUBLE_MSG2 = Neskutocne! %s zabil tri naraz !!! +DOUBLE_MSG3 = Ohromujuce! %s ich sejmol %d naraz !!! +MORTAR_MSG1 = %s nastavil kanon dobre a odstrelil %s +MORTAR_MSG2 = %s zabil na dlhu vzdialenost %s +KILL_INFO1 = %s ta zabil %s^nzo vzdialenosti %.2f metrov.^n +KILL_INFO2 = %d ta trafil %dx ^na zobral %dhp.^n +KILL_INFO3 = Zobral si mu %d hp %d zasahmy.^n +KILL_INFO4 = Trafil ta do:^n%s^n +STILL_HAS = %s stale ma %dhp +NO_KILLER = Niesi zabijak... +TOPX = Rebricek %d +FFIRE_IS = Friendly fire: +ATTACKERS = Utocnici: +VICTIMS = Obete: +DMG = dmg +HIT_S = zasahov +YOU_HIT = Trafil si %s v: +SERVER_STATS = Statistika servera +SHOW_STATS = Zobrazit statistiku +SHOW_RANK = Zobrazit rebricek +TA_MSG = %s trafil spoluhraca +TK_MSG = %s zabil spoluhraca ! +NADE_CAUGHT = Wow! %s chytil nepriatelsky granat! +NADE_FAILEDTK = Oops.. %s ta zabil ked skusal hodit zpat nepriatelsky granat.. +NADE_FAILED = %s neuspel pri pokuse odhodit nepriatelsky granat.. +NADE_MASTER = OMG! %s je granatovy mistr !!! +DISABLED_MSG = Server nema tuto volbu povolenu +MOST_KILLS = Najviac zabitych +KILL = zabitie +KILLS = zabiti +HEADSHOT = headshot +HEADSHOTS = headshotov +BEST_SCORE = Nejlepsie Score +POINTS = bodov +MOST_DAMAGE = Najdrsnejsi +DAMAGE = poskodenie +HIT = zasah +HITS = zasahov +M_KILLS = Zabita: +M_DEATHS = Smrti: +M_SCORE = Score: +M_TKS = TKs: +M_HITS = Zasahov: +M_SHOTS = Striel: +M_HS = HS: +M_WEAPON = Zbran: +M_DAMAGE = Poskozenie: +M_NICK = Nick: +M_YOUR_RANK_IS = Si na +M_THEIR_RANK_IS = Je na +M_OF = z + +[mk] +WHOLEBODY = celo telo +HEAD = glava +CHEST = gradi +STOMACH = stomak +LEFTARM = leva raka +RIGHTARM = desna raka +LEFTLEG = leva noga +RIGHTLEG = desna noga +MULTI_MSG = Multi-Kill! %s^nso %d ubistva (%d vo glava) +ULTRA_MSG = Ultra-Kill!!! %s^nso %d ubistva (%d vo glava) +SPREE_MSG = %s IS ON A KILLING SPREE!!!^nso %d ubistva (%d vo glava) +RAMPAGE_MSG = RAMPAGE!!! %s^nso %d ubistva (%d vo glava) +UNSTOPPABLE_MSG = %s IS UNSTOPPABLE!!!^nso %d ubistva (%d vo glava) +MONSTER_MSG = %s IS A MONSTER!^nso %d ubistva (%d vo glava) +GODLIKE_MSG = %s IS GODLIKE!!!!^nso %d ubistva (%d vo glava) +MULTI_SMALL = %s: Multi-Kill! +ULTRA_SMALL = %s: Ultra-Kill!!! +SPREE_SMALL = %s IS ON A KILLING SPREE!!! +RAMPAGE_SMALL = %s: RAMPAGE!!! +UNSTOPPABLE_SMALL = %s IS UNSTOPPABLE!!! +MONSTER_SMALL = %s IS A MONSTER! +GODLIKE_SMALL = %s IS GODLIKE!!! +KNIFE_MSG1 = %s go isece na parcinja %s +KNIFE_MSG2 = %s go izvadi nozot i go zakla %s +KNIFE_MSG3 = %s se prikrade i go zakla %s +KNIFE_MSG4 = %s go zakla %s +HE_MSG1 = %s mu isprati mal poklon na %s +HE_MSG2 = %s mu frli bomba vo dzeb na %s +HE_MSG3 = %s precizno nafrli kon %s +HE_MSG4 = %s go digna %s vo vozduh +SHE_MSG1 = %s se digna sebe si vo vozduh! +SHE_MSG2 = %s ja proveri ispravnosta na granata! +SHE_MSG3 = %s ja izede granatata! +SHE_MSG4 = %s se raznese sebesi! +HEAD_MSG1 = $kn go pogodi $vn so kursum vo glava! +HEAD_MSG2 = $kn go izbrici $vn^nna glava so $wn +HEAD_MSG3 = $kn go napravi $vn^npuding vo glavata so $wn +HEAD_MSG4 = $vn ostana bez glava od $kn +HEAD_MSG5 = $vn e napraven kechap! +HEAD_MSG6 = $kn odlicno nisani vo glava so $wn^nkako sto primeti i $vn +HEAD_MSG7 = $vn ostana na nisanot od $kn^npodolgo otkolku sto trebase... +DOUBLE_MSG1 = Lele! %s napravi duplo ubistvo!!! +DOUBLE_MSG2 = Kakvo cudo! %s napravi trojno ubistvo !!! +DOUBLE_MSG3 = %s napravi %d ubistva odednas !!! +MORTAR_MSG1 = %s go raznese %s +MORTAR_MSG2 = %s go ubi %s na golema dalecina +KILL_INFO1 = %s te ubi so %s^nna dalecina od %.2f metri.^n +KILL_INFO2 = Toj ti napravi %d steta so %d pogodok(a)^ni seuste ima %d energija.^n +KILL_INFO3 = Ti mu napravi %d steta so %d pogodok(a).^n +KILL_INFO4 = Toj te pogodi vo:^n%s^n +STILL_HAS = %s seuste ima %d energija +NO_KILLER = Nemas ubiec... +TOPX = Top %d +FFIRE_IS = Friendly fire: +ATTACKERS = Te napadnaa: +VICTIMS = Zrtvi: +DMG = steta +HIT_S = pogodok(a) +YOU_HIT = Ti go pogodi %s vo: +SERVER_STATS = Statistika na serverot +SHOW_STATS = Pokazi ja statistikata +SHOW_RANK = Pokazi go rankot +TA_MSG = %s napadna soigrac +TK_MSG = %s ubi svoj soigrac ! +NADE_CAUGHT = Lele! %s ja fati bombata na protivnikot! +NADE_FAILEDTK = Uups.. %s te ubi dodeka sakase da mu ja vratis bombata na neprijatelot +NADE_FAILED = %s ne uspea da mu ja vrati bombata na neprijatelot +NADE_MASTER = LELE! %s e majstor za granati !!! +DISABLED_MSG = Serverot ja iskluci taa opcija +MOST_KILLS = Najmnogu ubistva +KILL = ubistvo +KILLS = ubistva +HEADSHOT = pogodok vo glava +HEADSHOTS = pogodoci vo glava +BEST_SCORE = Najdobar rezultat +POINTS = poeni +MOST_DAMAGE = Najmnogu steta +DAMAGE = steta +HIT = pogodok +HITS = pogodoci +M_KILLS = Ubistva: +M_DEATHS = Bil ubien: +M_SCORE = Rezultat: +M_TKS = TKs: +M_HITS = Pocodoci: +M_SHOTS = Pukanja: +M_HS = Vo glava: +M_WEAPON = Oruzje: +M_DAMAGE = Steta: +M_NICK = Ime: +M_YOUR_RANK_IS = Tvojot rank e +M_THEIR_RANK_IS = Nivniot rank e +M_OF = od diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/statscfg.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/statscfg.txt new file mode 100644 index 0000000..0b9b9e5 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/statscfg.txt @@ -0,0 +1,1499 @@ +[en] +NO_OPTION = Couldn't find option(s) with such variable (name "%s") +STATS_CONF_SAVED = Stats configuration saved successfully +STATS_CONF_FAILED = Failed to save stats configuration!!! +STATS_CONF_LOADED = Stats configuration loaded successfully +STATS_CONF_FAIL_LOAD = Failed to load stats configuration!!! +STATS_CONF = Stats Configuration +STATS_ENTRIES_OF = Entries %i - %i of %i +STATS_USE_MORE = Use 'amx_statscfg list %i' for more +STATS_USE_BEGIN = Use 'amx_statscfg list 1' for begin +STATS_ENABLED = Stats enabled +STATS_DISABLED = Stats disabled +CANT_ADD_STATS = Can't add stats to the list, limit reached! +COM_STATS_USAGE = Usage: amx_statscfg <command> [parameters] ... +COM_STATS_COM = Commands: +COM_STATS_ON = ^ton <variable> - enable specified option +COM_STATS_OFF = ^toff <variable> - disable specified option +COM_STATS_SAVE = ^tsave - save stats configuration +COM_STATS_LOAD = ^tload - load stats configuration +COM_STATS_LIST = ^tlist [id] - list stats status +COM_STATS_ADD = ^tadd <name> <variable> - add stats to the list +NO_STATS = Stats plugins are not^ninstalled on this server^n +SAVE_CONF = Save configuration +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = MultiKillSound +ST_BOMB_PLANTING = Bomb Planting +ST_BOMB_DEFUSING = Bomb Defusing +ST_BOMB_PLANTED = Bomb Planted +ST_BOMB_DEF_SUCC = Bomb Defuse Succ. +ST_BOMB_DEF_FAIL = Bomb Def. Failure +ST_BOMB_PICKUP = Bomb PickUp +ST_BOMB_DROP = Bomb Drop +ST_BOMB_CD_VOICE = Bomb Countdown Voice +ST_BOMB_CD_DEF = Bomb Countdown (defuser) +ST_BOMB_SITE = Bomb Site Reached +ST_ITALY_BONUS = Italy Bonus Kill +ST_LAST_MAN = Last Man +ST_KNIFE_KILL = Knife Kill +ST_KNIFE_KILL_SOUND = Knife Kill Sound +ST_HE_KILL = Grenade Kill +ST_HE_SUICIDE = Grenade Suicide +ST_HS_KILL = HeadShot Kill +ST_HS_KILL_SOUND = HeadShot Kill Sound +ST_ROUND_CNT = Round Counter +ST_ROUND_CNT_SOUND = Round Counter Sound +ST_KILL_STR = Killing Streak +ST_KILL_STR_SOUND = Killing Streak Sound +ST_ENEMY_REM = Enemy Remaining +ST_DOUBLE_KILL = Double Kill +ST_DOUBLE_KILL_SOUND = Double Kill Sound +ST_PLAYER_NAME = Player Name +ST_FIRST_BLOOD_SOUND = First Blood Sound +ST_SHOW_KILLER_CHAT = Show Killer HP&AP +ST_SHOW_ATTACKERS = Show Attackers +ST_SHOW_VICTIMS = Show Victims +ST_SHOW_KILLER = Show Killer +ST_SHOW_TEAM_SCORE = Show Team Score +ST_SHOW_TOTAL_STATS = Show Total Stats +ST_SHOW_BEST_SCORE = Show Best Score +ST_SHOW_MOST_DISRUPTIVE = Show Most Disruptive +ST_SHOW_HUD_STATS_DEF = Show HUD-stats default +ST_SHOW_DIST_HS_HUD = Dist&HS in HUD lists +ST_STATS_PLAYER_MAP_END = Stats at the end of map +ST_STATS_TOP15_MAP_END = Top15 at the end of map +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Spec. Rank Info + +[de] +NO_OPTION = Finde keine Optionen mit dieser Variable (Name "%s") +STATS_CONF_SAVED = Statistik-Konfiguration erfolgreich gespeichert. +STATS_CONF_FAILED = Fehler beim Speichern der Statistik-Konfiguration!!! +STATS_CONF_LOADED = Statistik-Konfiguration erfolgreich geladen +STATS_CONF_FAIL_LOAD = Fehler beim Laden der Statistik-Konfiguration!!! +STATS_CONF = Statistik-Konfiguration +STATS_ENTRIES_OF = Eintraege %i - %i von %i +STATS_USE_MORE = Benutze 'amx_statscfg list %i' fuer mehr Info´s +STATS_USE_BEGIN = Benutze 'amx_statscfg list 1' um zum Anfang zu gelangen +CANT_ADD_STATS = Kann keine Statistik mehr hinzufuegen, das Limit ist erreicht! +COM_STATS_USAGE = Benutze: amx_statscfg <Befehl> [Parameter] ... +COM_STATS_COM = Befehl: +COM_STATS_ON = ^ton <variable> - gibt spezielle Option frei +COM_STATS_OFF = ^toff <variable> - sperrt spezielle Option +COM_STATS_SAVE = ^tsave - speichert Statistik-Konfiguration +COM_STATS_LOAD = ^tload - laedt Statistik-Konfiguration +COM_STATS_LIST = ^tlist [id] - Statistik-Status anzeigen +COM_STATS_ADD = ^tadd <name> <variable> - fuegt eine Statistik zur Liste hinzu +NO_STATS = Statistik-Plugin ist nicht^nauf diesem Server installiert^n +SAVE_CONF = Konfiguration speichern +STATS_ENABLED = Stats enabled +STATS_DISABLED = Stats disabled +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = MultiKill Sound +ST_BOMB_PLANTING = Bombe platzieren +ST_BOMB_DEFUSING = Bombe entschaerfen +ST_BOMB_PLANTED = Bombe platziert +ST_BOMB_DEF_SUCC = Bombe entschaerfen erf. +ST_BOMB_DEF_FAIL = Bombe entschaerfen fehl. +ST_BOMB_PICKUP = Bombe aufgenommen +ST_BOMB_DROP = Bombe verloren +ST_BOMB_CD_VOICE = Bomben Countdown Stimme +ST_BOMB_CD_DEF = Bomben Countdown (entschaerfer) +ST_BOMB_SITE = Bomben Platz erreicht +ST_ITALY_BONUS = Italy extra Kill +ST_LAST_MAN = Letzter Mann +ST_KNIFE_KILL = Messer Kill +ST_KNIFE_KILL_SOUND = Messer Kill Sound +ST_HE_KILL = Granaten Kill +ST_HE_SUICIDE = Granaten Selbstmord +ST_HS_KILL = Headshot Kill +ST_HS_KILL_SOUND = Headshot Kill Sound +ST_ROUND_CNT = Runden Zaehler +ST_ROUND_CNT_SOUND = Runden Zaehler Sound +ST_KILL_STR = Kill Serie +ST_KILL_STR_SOUND = Kill Serie Sound +ST_ENEMY_REM = Gegner verbleibend +ST_DOUBLE_KILL = Doppel Kill +ST_DOUBLE_KILL_SOUND = Doppel Kill Sound +ST_PLAYER_NAME = Spieler Name +ST_FIRST_BLOOD_SOUND = Erstes Blut Sound +ST_SHOW_KILLER_CHAT = Zeige Killer HP&AP +ST_SHOW_ATTACKERS = Zeige Angreifer +ST_SHOW_VICTIMS = Zeige Gegner +ST_SHOW_KILLER = Zeige Killer +ST_SHOW_TEAM_SCORE = Zeige Team Score +ST_SHOW_TOTAL_STATS = Zeige totale Stats +ST_SHOW_BEST_SCORE = Zeige besten Score +ST_SHOW_MOST_DISRUPTIVE = Zeige meisten Durchschlaege +ST_SHOW_HUD_STATS_DEF = Standard HUD-Stats +ST_SHOW_DIST_HS_HUD = Distanz&HS in HUD Liste +ST_STATS_PLAYER_MAP_END = Stats am Ende der Map +ST_STATS_TOP15_MAP_END = Top15 am ende der Map +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Spec. Rang Info + +[sr] +NO_OPTION = Nepostoji optcija(e) sa tom promenljivom (ime "%s") +STATS_CONF_SAVED = Podesavanja Statistike su uspesno snimljena +STATS_CONF_FAILED = Podesavanja Statistike su neuspesno snimljena!!! +STATS_CONF_LOADED = Podesavanja Statistike su uspesno ucitana +STATS_CONF_FAIL_LOAD = Podesavanja Statistike su neuspesno ucitana!!! +STATS_CONF = Podesavanja Statistike +STATS_ENTRIES_OF = Vrednosti %i - %i od %i +STATS_USE_MORE = Koristi 'amx_statscfg list %i' za jos +STATS_USE_BEGIN = Koristi 'amx_statscfg list 1' za pocetak +STATS_ENABLED = Statistika ukljucena +STATS_DISABLED = Statistika iskljucena +CANT_ADD_STATS = Nije moguce dodati statistiku na listu, limit popunjen! +COM_STATS_USAGE = Koriscenje: amx_statscfg <komanda> [parametar] ... +COM_STATS_COM = Komande: +COM_STATS_ON = ^ton <variable> - ukljuci opciju +COM_STATS_OFF = ^toff <variable> - iskljuci opciju +COM_STATS_SAVE = ^tsave - sacuvaj podesavanja statistike +COM_STATS_LOAD = ^tload - ucitaj podesavanja statistike +COM_STATS_LIST = ^tlist [id] - prikazi status statistike +COM_STATS_ADD = ^tadd <name> <variable> - dodaj statistiku na kraj liste +NO_STATS = Plugin za statistiku^nnije instaliran na ovom serveru^n +SAVE_CONF = Sacuvaj konfiguraciju +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = MultiKillSound +ST_BOMB_PLANTING = Bomb Planting +ST_BOMB_DEFUSING = Bomb Defusing +ST_BOMB_PLANTED = Bomb Planted +ST_BOMB_DEF_SUCC = Bomb Defuse Succ. +ST_BOMB_DEF_FAIL = Bomb Def. Failure +ST_BOMB_PICKUP = Bomb PickUp +ST_BOMB_DROP = Bomb Drop +ST_BOMB_CD_VOICE = Bomb Countdown Voice +ST_BOMB_CD_DEF = Bomb Countdown (defuser) +ST_BOMB_SITE = Bomb Site Reached +ST_ITALY_BONUS = Italy Bonus Kill +ST_LAST_MAN = Last Man +ST_KNIFE_KILL = Knife Kill +ST_KNIFE_KILL_SOUND = Knife Kill Sound +ST_HE_KILL = Grenade Kill +ST_HE_SUICIDE = Grenade Suicide +ST_HS_KILL = HeadShot Kill +ST_HS_KILL_SOUND = HeadShot Kill Sound +ST_ROUND_CNT = Round Counter +ST_ROUND_CNT_SOUND = Round Counter Sound +ST_KILL_STR = Killing Streak +ST_KILL_STR_SOUND = Killing Streak Sound +ST_ENEMY_REM = Enemy Remaining +ST_DOUBLE_KILL = Double Kill +ST_DOUBLE_KILL_SOUND = Double Kill Sound +ST_PLAYER_NAME = Player Name +ST_FIRST_BLOOD_SOUND = First Blood Sound +ST_SHOW_KILLER_CHAT = Show Killer HP&AP +ST_SHOW_ATTACKERS = Show Attackers +ST_SHOW_VICTIMS = Show Victims +ST_SHOW_KILLER = Show Killer +ST_SHOW_TEAM_SCORE = Show Team Score +ST_SHOW_TOTAL_STATS = Show Total Stats +ST_SHOW_BEST_SCORE = Show Best Score +ST_SHOW_MOST_DISRUPTIVE = Show Most Disruptive +ST_SHOW_HUD_STATS_DEF = Show HUD-stats default +ST_SHOW_DIST_HS_HUD = Dist&HS in HUD lists +ST_STATS_PLAYER_MAP_END = Stats at the end of map +ST_STATS_TOP15_MAP_END = Top15 at the end of map +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Spec. Rank Info + +[tr] +NO_OPTION = O isimde aranan secenek(ler) bulunamadi (isim "%s") +STATS_CONF_SAVED = Statistik configi basari ile saklandi +STATS_CONF_FAILED = Statistik configi malesef saklanamadi!!! +STATS_CONF_LOADED = Statistik configi basari ile yuklendi +STATS_CONF_FAIL_LOAD = Statistik configi malesef yuklenemedi!!! +STATS_CONF = Statistik configi +STATS_ENTRIES_OF = Girisler %i - %i ve %i +STATS_USE_MORE = 'amx_statscfg list %i' i kullanin dahasini gormek icin +STATS_USE_BEGIN = 'amx_statscfg list 1' i kullanin baslatmak icin +CANT_ADD_STATS = Statistik saklanamiyor, sinir asildi! +COM_STATS_USAGE = Kullanim: amx_statscfg <emir> [parametre] ... +COM_STATS_COM = Emirler: +COM_STATS_ON = ^ton <variable> - Ozellikle secilen secenekleri baslat +COM_STATS_OFF = ^toff <variable> - Ozellikle secilen secenekleri durdur +COM_STATS_SAVE = ^tsave - Statistik configini sakla +COM_STATS_LOAD = ^tload - Statistik configini yukle +COM_STATS_LIST = ^tlist [id] - Statistik durumunu listele +COM_STATS_ADD = ^tadd <isim> <deger> - Listeye statistik ekleyin +NO_STATS = Statistik plugini^nserverde mevcud degildir^n +SAVE_CONF = Configleri sakla +STATS_ENABLED = Statistik kullanima acik +STATS_DISABLED = Statistik kullanima kapali +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = MultiKillSound +ST_BOMB_PLANTING = Bomb Planting +ST_BOMB_DEFUSING = Bomb Defusing +ST_BOMB_PLANTED = Bomb Planted +ST_BOMB_DEF_SUCC = Bomb Defuse Succ. +ST_BOMB_DEF_FAIL = Bomb Def. Failure +ST_BOMB_PICKUP = Bomb PickUp +ST_BOMB_DROP = Bomb Drop +ST_BOMB_CD_VOICE = Bomb Countdown Voice +ST_BOMB_CD_DEF = Bomb Countdown (defuser) +ST_BOMB_SITE = Bomb Site Reached +ST_ITALY_BONUS = Italy Bonus Kill +ST_LAST_MAN = Last Man +ST_KNIFE_KILL = Knife Kill +ST_KNIFE_KILL_SOUND = Knife Kill Sound +ST_HE_KILL = Grenade Kill +ST_HE_SUICIDE = Grenade Suicide +ST_HS_KILL = HeadShot Kill +ST_HS_KILL_SOUND = HeadShot Kill Sound +ST_ROUND_CNT = Round Counter +ST_ROUND_CNT_SOUND = Round Counter Sound +ST_KILL_STR = Killing Streak +ST_KILL_STR_SOUND = Killing Streak Sound +ST_ENEMY_REM = Enemy Remaining +ST_DOUBLE_KILL = Double Kill +ST_DOUBLE_KILL_SOUND = Double Kill Sound +ST_PLAYER_NAME = Player Name +ST_FIRST_BLOOD_SOUND = First Blood Sound +ST_SHOW_KILLER_CHAT = Show Killer HP&AP +ST_SHOW_ATTACKERS = Show Attackers +ST_SHOW_VICTIMS = Show Victims +ST_SHOW_KILLER = Show Killer +ST_SHOW_TEAM_SCORE = Show Team Score +ST_SHOW_TOTAL_STATS = Show Total Stats +ST_SHOW_BEST_SCORE = Show Best Score +ST_SHOW_MOST_DISRUPTIVE = Show Most Disruptive +ST_SHOW_HUD_STATS_DEF = Show HUD-stats default +ST_SHOW_DIST_HS_HUD = Dist&HS in HUD lists +ST_STATS_PLAYER_MAP_END = Stats at the end of map +ST_STATS_TOP15_MAP_END = Top15 at the end of map +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Spec. Rank Info + +[fr] +NO_OPTION = Option(s) introuvable(s) avec cette variable (nom ^"%s^") +STATS_CONF_SAVED = Sauvegarde de la configuration des stats effectuee +STATS_CONF_FAILED = Echec de sauvegarde de la configuration des stats!!! +STATS_CONF_LOADED = Chargement de la configuration des stats effectue +STATS_CONF_FAIL_LOAD = Echec du chargement de la configuration des stats!!! +STATS_CONF = Configuration des Stats +STATS_ENTRIES_OF = Entrees %i - %i sur %i +STATS_USE_MORE = Utilise 'amx_statscfg list %i' pour la suite +STATS_USE_BEGIN = Utilise 'amx_statscfg list 1' pour le debut +CANT_ADD_STATS = Limite atteinte, impossible d'ajouter plus de stats! +COM_STATS_USAGE = Utilisation: amx_statscfg <commande> [parametres] ... +COM_STATS_COM = Commandes: +COM_STATS_ON = ^ton <variable> - active l'option specifiee +COM_STATS_OFF = ^toff <variable> - desactive l'option specifiee +COM_STATS_SAVE = ^tsave - sauve la configuration des stats +COM_STATS_LOAD = ^tload - charge la configuration des stats +COM_STATS_LIST = ^tlist [id] - liste le status des stats +COM_STATS_ADD = ^tadd <nom> <variable> - ajoute des stats a la liste +NO_STATS = Les plugins de stats ne sont pas^ninstalles sur ce serveur^n +SAVE_CONF = Sauver la configuration +STATS_ENABLED = Stats activees +STATS_DISABLED = Stats desactivees +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = Son MultiKill +ST_BOMB_PLANTING = Amorcage Bombe +ST_BOMB_DEFUSING = Desamorcage Bombe +ST_BOMB_PLANTED = Bombe Amorcee +ST_BOMB_DEF_SUCC = Bombe Desamorcee +ST_BOMB_DEF_FAIL = Bombe Non Desamorcee +ST_BOMB_PICKUP = Bombe Ramassee +ST_BOMB_DROP = Bombe Lachee +ST_BOMB_CD_VOICE = Compte a Rebours Bombe Vocal +ST_BOMB_CD_DEF = Compte a Rebours (desamorceur) +ST_BOMB_SITE = Point de Bombe Atteint +ST_ITALY_BONUS = Bonus Kill sur Italy +ST_LAST_MAN = Dernier en Vie +ST_KNIFE_KILL = Frag au Couteau +ST_KNIFE_KILL_SOUND = Son Frag au Couteau +ST_HE_KILL = Frag a la Grenade +ST_HE_SUICIDE = Suicide a la Grenade +ST_HS_KILL = HeadShot +ST_HS_KILL_SOUND = Son HeadShot +ST_ROUND_CNT = Compteur de Rounds +ST_ROUND_CNT_SOUND = Son Compteur de Rounds +ST_KILL_STR = Series de Frags +ST_KILL_STR_SOUND = Sons Series de Frags +ST_ENEMY_REM = Ennemi Restant +ST_DOUBLE_KILL = Double Kill +ST_DOUBLE_KILL_SOUND = Son Double Kill +ST_PLAYER_NAME = Nom de Joueur +ST_FIRST_BLOOD_SOUND = Son First Blood +ST_SHOW_KILLER_CHAT = Montrer HP&AP Tueur +ST_SHOW_ATTACKERS = Montrer Attaquants +ST_SHOW_VICTIMS = Montrer Victimes +ST_SHOW_KILLER = Montrer Tueur +ST_SHOW_TEAM_SCORE = Montrer Scores Equipes +ST_SHOW_TOTAL_STATS = Montrer Stats Totales +ST_SHOW_BEST_SCORE = Montrer Meilleur Score +ST_SHOW_MOST_DISRUPTIVE = Montrer le Plus Actif +ST_SHOW_HUD_STATS_DEF = Stats HUD defaut +ST_SHOW_DIST_HS_HUD = Distance&HS dans listes HUD +ST_STATS_PLAYER_MAP_END = Stats en Fin de Map +ST_STATS_TOP15_MAP_END = Top15 en Fin de Map +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Info Rang Spectateur + +[sv] +NO_OPTION = Kunde inte hitta val(en) med en dylik variabel (namn "%s") +STATS_CONF_SAVED = Statistikinst'a'llningar sparade +STATS_CONF_FAILED = Misslyckades att spara inst'a'llningar. +STATS_CONF_LOADED = Statistikinst'a'llningar laddade +STATS_CONF_FAIL_LOAD = Misslyckades att ladda inst'a'llningar. +STATS_CONF = Statistikinst'a'llningar +STATS_ENTRIES_OF = Post %i - %i av %i +STATS_USE_MORE = Skriv 'amx_statscfg list %i' f'o'r mer +STATS_USE_BEGIN = Skriv 'amx_statscfg list 1' f'o'r b'o'rjan +CANT_ADD_STATS = Kan inte ladda till listan, begr'a'nsning nadd! +COM_STATS_USAGE = Skriv: amx_statscfg <kommando> [parametrar] ... +COM_STATS_COM = Kommandon: +COM_STATS_ON = ^ton <variabel> - aktivera markerat val +COM_STATS_OFF = ^toff <variabel> - stoppa markerat val +COM_STATS_SAVE = ^tsave - spara statistikinst'a'llningar +COM_STATS_LOAD = ^tload - ladda statistikinst'a'llningar +COM_STATS_LIST = ^tlist [id] - lista statistikstatus +COM_STATS_ADD = ^tadd <namn> <variabel> - addera statistik till listan +NO_STATS = Statistikplugins e inte installerade pa denna server^n +SAVE_CONF = Spara inst'a'llningar +STATS_ENABLED = Stats enabled +STATS_DISABLED = Stats disabled +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = MultiKillSound +ST_BOMB_PLANTING = Bomb Planting +ST_BOMB_DEFUSING = Bomb Defusing +ST_BOMB_PLANTED = Bomb Planted +ST_BOMB_DEF_SUCC = Bomb Defuse Succ. +ST_BOMB_DEF_FAIL = Bomb Def. Failure +ST_BOMB_PICKUP = Bomb PickUp +ST_BOMB_DROP = Bomb Drop +ST_BOMB_CD_VOICE = Bomb Countdown Voice +ST_BOMB_CD_DEF = Bomb Countdown (defuser) +ST_BOMB_SITE = Bomb Site Reached +ST_ITALY_BONUS = Italy Bonus Kill +ST_LAST_MAN = Last Man +ST_KNIFE_KILL = Knife Kill +ST_KNIFE_KILL_SOUND = Knife Kill Sound +ST_HE_KILL = Grenade Kill +ST_HE_SUICIDE = Grenade Suicide +ST_HS_KILL = HeadShot Kill +ST_HS_KILL_SOUND = HeadShot Kill Sound +ST_ROUND_CNT = Round Counter +ST_ROUND_CNT_SOUND = Round Counter Sound +ST_KILL_STR = Killing Streak +ST_KILL_STR_SOUND = Killing Streak Sound +ST_ENEMY_REM = Enemy Remaining +ST_DOUBLE_KILL = Double Kill +ST_DOUBLE_KILL_SOUND = Double Kill Sound +ST_PLAYER_NAME = Player Name +ST_FIRST_BLOOD_SOUND = First Blood Sound +ST_SHOW_KILLER_CHAT = Show Killer HP&AP +ST_SHOW_ATTACKERS = Show Attackers +ST_SHOW_VICTIMS = Show Victims +ST_SHOW_KILLER = Show Killer +ST_SHOW_TEAM_SCORE = Show Team Score +ST_SHOW_TOTAL_STATS = Show Total Stats +ST_SHOW_BEST_SCORE = Show Best Score +ST_SHOW_MOST_DISRUPTIVE = Show Most Disruptive +ST_SHOW_HUD_STATS_DEF = Show HUD-stats default +ST_SHOW_DIST_HS_HUD = Dist&HS in HUD lists +ST_STATS_PLAYER_MAP_END = Stats at the end of map +ST_STATS_TOP15_MAP_END = Top15 at the end of map +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_FLOP15 = Say /flop15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Spec. Rank Info + +[da] +NO_OPTION = Kunne ikke finde mulighed(er)med en saadan variabel (name "%s") +STATS_CONF_SAVED = Statestik Konfiguration gemt +STATS_CONF_FAILED = Gem Statestik konfiguration mislykkedes!!! +STATS_CONF_LOADED = Statestik Konfiguration indlaest +STATS_CONF_FAIL_LOAD = Indlaes statestik konfiguration mislykkedes!!! +STATS_CONF = Statestik Konfiguration +STATS_ENTRIES_OF = Indskrivninger %i - %i af %i +STATS_USE_MORE = Brug 'amx_statscfg list %i' for mere +STATS_USE_BEGIN = Brug 'amx_statscfg list 1' for at begynde +STATS_ENABLED = Statstik slaaet til +STATS_DISABLED = Statestik slaaet fra +CANT_ADD_STATS = Kan ikke tilfoeje statestik til listen, graense naaet! +COM_STATS_USAGE = Brug: amx_statscfg <kommando> [parameters]... +COM_STATS_COM = Kommandoer: +COM_STATS_ON = ^ton <variable> - Starter specificeret mulighed +COM_STATS_OFF = ^toff <variable> - Stopper specificeret mulighed +COM_STATS_SAVE = ^tsave - Gem statestik konfiguration +COM_STATS_LOAD = ^tload - Indlaes Statestik konfiguration +COM_STATS_LIST = ^tlist [id] - Lister statestik status +COM_STATS_ADD = ^tadd <navn> <variable> - Tilfoejer statestik til listen +NO_STATS = Statestik plugins er ikke ^ninstalleret paa denne server^n +SAVE_CONF = Gem Konfiguration +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = MultiKillSound +ST_BOMB_PLANTING = Bomb Planting +ST_BOMB_DEFUSING = Bomb Defusing +ST_BOMB_PLANTED = Bomb Planted +ST_BOMB_DEF_SUCC = Bomb Defuse Succ. +ST_BOMB_DEF_FAIL = Bomb Def. Failure +ST_BOMB_PICKUP = Bomb PickUp +ST_BOMB_DROP = Bomb Drop +ST_BOMB_CD_VOICE = Bomb Countdown Voice +ST_BOMB_CD_DEF = Bomb Countdown (defuser) +ST_BOMB_SITE = Bomb Site Reached +ST_ITALY_BONUS = Italy Bonus Kill +ST_LAST_MAN = Last Man +ST_KNIFE_KILL = Knife Kill +ST_KNIFE_KILL_SOUND = Knife Kill Sound +ST_HE_KILL = Grenade Kill +ST_HE_SUICIDE = Grenade Suicide +ST_HS_KILL = HeadShot Kill +ST_HS_KILL_SOUND = HeadShot Kill Sound +ST_ROUND_CNT = Round Counter +ST_ROUND_CNT_SOUND = Round Counter Sound +ST_KILL_STR = Killing Streak +ST_KILL_STR_SOUND = Killing Streak Sound +ST_ENEMY_REM = Enemy Remaining +ST_DOUBLE_KILL = Double Kill +ST_DOUBLE_KILL_SOUND = Double Kill Sound +ST_PLAYER_NAME = Player Name +ST_FIRST_BLOOD_SOUND = First Blood Sound +ST_SHOW_KILLER_CHAT = Show Killer HP&AP +ST_SHOW_ATTACKERS = Show Attackers +ST_SHOW_VICTIMS = Show Victims +ST_SHOW_KILLER = Show Killer +ST_SHOW_TEAM_SCORE = Show Team Score +ST_SHOW_TOTAL_STATS = Show Total Stats +ST_SHOW_BEST_SCORE = Show Best Score +ST_SHOW_MOST_DISRUPTIVE = Show Most Disruptive +ST_SHOW_HUD_STATS_DEF = Show HUD-stats default +ST_SHOW_DIST_HS_HUD = Dist&HS in HUD lists +ST_STATS_PLAYER_MAP_END = Stats at the end of map +ST_STATS_TOP15_MAP_END = Top15 at the end of map +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Spec. Rank Info + +[pl] +NO_OPTION = Nie mozna znalesc opcji z podana zmienna (nazwa "%s") +STATS_CONF_SAVED = Konfiguracja statystyk zapisana +STATS_CONF_FAILED = Nie udalo sie zapisac konfiguracji statystyk +STATS_CONF_LOADED = Konfiguracja statystyk zaladowana +STATS_CONF_FAIL_LOAD = Nie udalo sie zaladowac konfiguracji statystyk +STATS_CONF = Konfiguracja statystyk +STATS_ENTRIES_OF = Wpisy %i - %i z %i +STATS_USE_MORE = Uzyj 'amx_statscfg list %i' po wiecej +STATS_USE_BEGIN = Uzyj 'amx_statscfg list 1' do poczatku +CANT_ADD_STATS = Nie mozna dodac statystyk, limit przekroczony +COM_STATS_USAGE = Uzycie: amx_statscfg <komenda> [parametr] ... +COM_STATS_COM = Komendy: +COM_STATS_ON = ^ton <zmienna> - wlacz konkretne opcje +COM_STATS_OFF = ^toff <zmienna> - wylacz konkretne opcje +COM_STATS_SAVE = ^tsave - zapisz konfiguracje statystyk +COM_STATS_LOAD = ^tload - zaladuj konfiguracje statystyk +COM_STATS_LIST = ^tlist [id] - pokaz status statystyk +COM_STATS_ADD = ^tadd <name> <zmienna> - dodaj statystyki do listy +NO_STATS = Pluginy statystyk nie^nistnieja na serwerze^n +SAVE_CONF = Zapisz konfiguracje +STATS_ENABLED = Stats enabled +STATS_DISABLED = Stats disabled +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = MultiKill - dzwiek +ST_BOMB_PLANTING = Bomba - Podkladanie +ST_BOMB_DEFUSING = Bomba - Rozbrajanie +ST_BOMB_PLANTED = Bomba Podlozona +ST_BOMB_DEF_SUCC = Bomba Rozbrojona +ST_BOMB_DEF_FAIL = Bomba - Nieudane Rozbrajanie +ST_BOMB_PICKUP = Bomba - Podniesienie +ST_BOMB_DROP = Bomba - Porzucenie +ST_BOMB_CD_VOICE = Bomba - Odliczanie na glos +ST_BOMB_CD_DEF = Bomba - Odliczanie (saper) +ST_BOMB_SITE = Bomb Site osiagniety +ST_ITALY_BONUS = CS Italy - Bonus +ST_LAST_MAN = Ostatni gracz - anons +ST_KNIFE_KILL = Zabicie Nozem - anons +ST_KNIFE_KILL_SOUND = Zabicie Nozem - dzwiek +ST_HE_KILL = Zabicie Granatem - anons +ST_HE_SUICIDE = Samobojstwo Granatem - anons +ST_HS_KILL = Zabicie strzalem w glowe - anons +ST_HS_KILL_SOUND = Zabicie strzalem w glowe - dzwiek +ST_ROUND_CNT = Licznik Rund +ST_ROUND_CNT_SOUND = Licznik Rund - dzwiek +ST_KILL_STR = Serie Zabic +ST_KILL_STR_SOUND = Serie Zabic - dzwiek +ST_ENEMY_REM = Pozostali wrogowie +ST_DOUBLE_KILL = Podwojne Zabicie +ST_DOUBLE_KILL_SOUND = Podwojne Zabicie - dzwiek +ST_PLAYER_NAME = Nick Gracza +ST_FIRST_BLOOD_SOUND = Pierwsza Krew - dzwiek +ST_SHOW_KILLER_CHAT = HP & AP Zabojcy +ST_SHOW_ATTACKERS = Pokaz Atakujacych +ST_SHOW_VICTIMS = Pokaz Ofiary +ST_SHOW_KILLER = Pokaz Zabojce +ST_SHOW_TEAM_SCORE = Pokaz Wynik Gry +ST_SHOW_TOTAL_STATS = Pokaz Statystyki Sumaryczne +ST_SHOW_BEST_SCORE = Pokaz Najlepszego Rundy +ST_SHOW_MOST_DISRUPTIVE = Pokaz Najb. Raniacego Rundy +ST_SHOW_HUD_STATS_DEF = Statystyki HUD podstawowe +ST_SHOW_DIST_HS_HUD = Odleglosc i HS w HUD +ST_STATS_PLAYER_MAP_END = Statystyki na koniec mapy +ST_STATS_TOP15_MAP_END = Top15 na koniec mapy +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Rankingi w Obserwatorze + +[nl] +NO_OPTION = Kon opties met zo'n variabele niet vinden (naam "%s") +STATS_CONF_SAVED = Statistiekconfiguratie bewaren gelukt +STATS_CONF_FAILED = Bewaren van statistiekconfiguratie mislukt!!! +STATS_CONF_LOADED = Statistiekconfiguratie laden gelukt +STATS_CONF_FAIL_LOAD = Laden van statistiekconfiguratie mislukt!!! +STATS_CONF = Statistiekinstellingen +STATS_ENTRIES_OF = Ingangen %i - %i van de %i +STATS_USE_MORE = Typ 'amx_statscfg list %i' voor meer +STATS_USE_BEGIN = Typ 'amx_statscfg list 1' voor begin +STATS_ENABLED = Statistieken ingeschakeld +STATS_DISABLED = Statistieken uitgeschakeld +CANT_ADD_STATS = Kan statistieken niet bij de lijst voegen, limiet bereikt! +COM_STATS_USAGE = Typ: amx_statscfg <commando> [parameters] ... +COM_STATS_COM = Commando's: +COM_STATS_ON = ^ton <variabele> - schakel gespecificeerde optie in +COM_STATS_OFF = ^toff <variabele> - schakel gespecificeerde optie uit +COM_STATS_SAVE = ^tsave - bewaar stats configuration +COM_STATS_LOAD = ^tload - laad stats configuration +COM_STATS_LIST = ^tlist [id] - lijst stats status +COM_STATS_ADD = ^tvoeg toe <naam> <variabele> - voeg stats toe aan de lijst +NO_STATS = Stats plugins zijn niet^ngeinstalleerd op deze server^n +SAVE_CONF = Configuratie Bewaren +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = MultiKillSound +ST_BOMB_PLANTING = Bomb Planting +ST_BOMB_DEFUSING = Bomb Defusing +ST_BOMB_PLANTED = Bomb Planted +ST_BOMB_DEF_SUCC = Bomb Defuse Succ. +ST_BOMB_DEF_FAIL = Bomb Def. Failure +ST_BOMB_PICKUP = Bomb PickUp +ST_BOMB_DROP = Bomb Drop +ST_BOMB_CD_VOICE = Bomb Countdown Voice +ST_BOMB_CD_DEF = Bomb Countdown (defuser) +ST_BOMB_SITE = Bomb Site Reached +ST_ITALY_BONUS = Italy Bonus Kill +ST_LAST_MAN = Last Man +ST_KNIFE_KILL = Knife Kill +ST_KNIFE_KILL_SOUND = Knife Kill Sound +ST_HE_KILL = Grenade Kill +ST_HE_SUICIDE = Grenade Suicide +ST_HS_KILL = HeadShot Kill +ST_HS_KILL_SOUND = HeadShot Kill Sound +ST_ROUND_CNT = Round Counter +ST_ROUND_CNT_SOUND = Round Counter Sound +ST_KILL_STR = Killing Streak +ST_KILL_STR_SOUND = Killing Streak Sound +ST_ENEMY_REM = Enemy Remaining +ST_DOUBLE_KILL = Double Kill +ST_DOUBLE_KILL_SOUND = Double Kill Sound +ST_PLAYER_NAME = Player Name +ST_FIRST_BLOOD_SOUND = First Blood Sound +ST_SHOW_KILLER_CHAT = Show Killer HP&AP +ST_SHOW_ATTACKERS = Show Attackers +ST_SHOW_VICTIMS = Show Victims +ST_SHOW_KILLER = Show Killer +ST_SHOW_TEAM_SCORE = Show Team Score +ST_SHOW_TOTAL_STATS = Show Total Stats +ST_SHOW_BEST_SCORE = Show Best Score +ST_SHOW_MOST_DISRUPTIVE = Show Most Disruptive +ST_SHOW_HUD_STATS_DEF = Show HUD-stats default +ST_SHOW_DIST_HS_HUD = Dist&HS in HUD lists +ST_STATS_PLAYER_MAP_END = Stats at the end of map +ST_STATS_TOP15_MAP_END = Top15 at the end of map +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Spec. Rank Info + +[es] +NO_OPTION = No se encontraron opcion(es) con dicha variable (nombre "%s") +STATS_CONF_SAVED = Configuracion de estadisticas guardada con exito +STATS_CONF_FAILED = No se pudo guardar la configuracion de estadisticas!!! +STATS_CONF_LOADED = Configuracion de estadisticas cargada con exito +STATS_CONF_FAIL_LOAD = No se pudo cargar la configuracion de estadisticas!!! +STATS_CONF = Configuracion de Estadisticas +STATS_ENTRIES_OF = Entradas %i - %i de %i +STATS_USE_MORE = Escribe 'amx_statscfg list %i' para mostrar mas +STATS_USE_BEGIN = Escribe 'amx_statscfg list 1' para volver al principio +STATS_ENABLED = Estadisticas activadas +STATS_DISABLED = Estadisticas desactivadas +CANT_ADD_STATS = No se pudieron anyadir mas estadisticas a la lista, se ha alcanzado el limite! +COM_STATS_USAGE = Uso: amx_statscfg <comando> [parametros] ... +COM_STATS_COM = Comandos: +COM_STATS_ON = ^ton <variable> - activa la opcion especificada +COM_STATS_OFF = ^toff <variable> - desactiva la opcion especificada +COM_STATS_SAVE = ^tsave - guarda la configuracion de las estadisticas +COM_STATS_LOAD = ^tload - carga la configuracion de las estadisticas +COM_STATS_LIST = ^tlist [id] - muestra el estado de las estadisticas +COM_STATS_ADD = ^tadd <nombre> <variable> - anyade estadisticas a la lista +NO_STATS = No hay plugins estadisticos^ninstalados en este servidor^n +SAVE_CONF = Guardar configuracion +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = MultiKillSound +ST_BOMB_PLANTING = Bomb Planting +ST_BOMB_DEFUSING = Bomb Defusing +ST_BOMB_PLANTED = Bomb Planted +ST_BOMB_DEF_SUCC = Bomb Defuse Succ. +ST_BOMB_DEF_FAIL = Bomb Def. Failure +ST_BOMB_PICKUP = Bomb PickUp +ST_BOMB_DROP = Bomb Drop +ST_BOMB_CD_VOICE = Bomb Countdown Voice +ST_BOMB_CD_DEF = Bomb Countdown (defuser) +ST_BOMB_SITE = Bomb Site Reached +ST_ITALY_BONUS = Italy Bonus Kill +ST_LAST_MAN = Last Man +ST_KNIFE_KILL = Knife Kill +ST_KNIFE_KILL_SOUND = Knife Kill Sound +ST_HE_KILL = Grenade Kill +ST_HE_SUICIDE = Grenade Suicide +ST_HS_KILL = HeadShot Kill +ST_HS_KILL_SOUND = HeadShot Kill Sound +ST_ROUND_CNT = Round Counter +ST_ROUND_CNT_SOUND = Round Counter Sound +ST_KILL_STR = Killing Streak +ST_KILL_STR_SOUND = Killing Streak Sound +ST_ENEMY_REM = Enemy Remaining +ST_DOUBLE_KILL = Double Kill +ST_DOUBLE_KILL_SOUND = Double Kill Sound +ST_PLAYER_NAME = Player Name +ST_FIRST_BLOOD_SOUND = First Blood Sound +ST_SHOW_KILLER_CHAT = Show Killer HP&AP +ST_SHOW_ATTACKERS = Show Attackers +ST_SHOW_VICTIMS = Show Victims +ST_SHOW_KILLER = Show Killer +ST_SHOW_TEAM_SCORE = Show Team Score +ST_SHOW_TOTAL_STATS = Show Total Stats +ST_SHOW_BEST_SCORE = Show Best Score +ST_SHOW_MOST_DISRUPTIVE = Show Most Disruptive +ST_SHOW_HUD_STATS_DEF = Show HUD-stats default +ST_SHOW_DIST_HS_HUD = Dist&HS in HUD lists +ST_STATS_PLAYER_MAP_END = Stats at the end of map +ST_STATS_TOP15_MAP_END = Top15 at the end of map +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Spec. Rank Info + +[bp] +NO_OPTION = Nao pode achar opcao(oes) com tal(is) variavel(is) (nome "%s") +STATS_CONF_SAVED = Configuracao de Stats salva com sucesso +STATS_CONF_FAILED = Falhou ao salvar a configuracao de Stats!!! +STATS_CONF_LOADED = Configuracao de Stats carregada com sucesso +STATS_CONF_FAIL_LOAD = Falhou ao carregar configuracao de Stats!!! +STATS_CONF = Configuracao de Stats +STATS_ENTRIES_OF = Entradas %i - %i de %i +STATS_USE_MORE = Use 'amx_statscfg listando %i' para ver mais +STATS_USE_BEGIN = Use 'amx_statscfg listando 1' para voltar ao inicio +STATS_ENABLED = Stats ativado +STATS_DISABLED = Stats desativado +CANT_ADD_STATS = Nao pode acrescentar stats a lista, limite maximo alcancado! +COM_STATS_USAGE = Use: amx_statscfg <comando> [parametros]... +COM_STATS_COM = Comandos: +COM_STATS_ON = ^ton <variavel> - habilitar opcao desejada +COM_STATS_OFF = ^toff <variavel> - desabilitar opcao desejada +COM_STATS_SAVE = ^tsave - salvar configuracao de stats +COM_STATS_LOAD = ^tload - carregar configuracao de stats +COM_STATS_LIST = ^tlist [id] - listar estado de stats +COM_STATS_ADD = ^tadd <nome> <variavel> - acrescentar stats a lista +NO_STATS = plugins de Stats nao esta^ninstalado neste server^n +SAVE_CONF = Salvar configuracao +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = Som de MultiKill +ST_BOMB_PLANTING = Plantando Bomba +ST_BOMB_DEFUSING = Defusando Bomba +ST_BOMB_PLANTED = Bomba Plantada +ST_BOMB_DEF_SUCC = Bomba Defusada +ST_BOMB_DEF_FAIL = Falha ao Defusar a Bomba +ST_BOMB_PICKUP = Bomba Recolhida +ST_BOMB_DROP = Bomba Dropada +ST_BOMB_CD_VOICE = Voz da Contagem da Bomba +ST_BOMB_CD_DEF = Contagem da Bomba (defusando) +ST_BOMB_SITE = TRs no Bomb Sute +ST_ITALY_BONUS = Italy Bonus Kill +ST_LAST_MAN = Ultimo Homem +ST_KNIFE_KILL = Frag de Faca +ST_KNIFE_KILL_SOUND = Som de Frag de Faca +ST_HE_KILL = Frag de Granada +ST_HE_SUICIDE = Suicidio de Granada +ST_HS_KILL = HeadShot +ST_HS_KILL_SOUND = Som de HeadShot +ST_ROUND_CNT = Contador de Rounds +ST_ROUND_CNT_SOUND = Som de Contador de Rounds +ST_KILL_STR = Serie de Frags +ST_KILL_STR_SOUND = Som de Serie de Frags +ST_ENEMY_REM = Inimigo Restante +ST_DOUBLE_KILL = Double Kill +ST_DOUBLE_KILL_SOUND = Som de Double Kill +ST_PLAYER_NAME = Nome do Jogador +ST_FIRST_BLOOD_SOUND = Som de First Blood +ST_SHOW_KILLER_CHAT = Mostre o assassino HP&AP +ST_SHOW_ATTACKERS = Mostre os Atacantes +ST_SHOW_VICTIMS = Mostre as Vitimas +ST_SHOW_KILLER = Mostre o assassino +ST_SHOW_TEAM_SCORE = Mostre o Score do Time +ST_SHOW_TOTAL_STATS = Mostre o Stats Total +ST_SHOW_BEST_SCORE = Mostre o Melhor Score +ST_SHOW_MOST_DISRUPTIVE = Mostre o Mais Destrutivo +ST_SHOW_HUD_STATS_DEF = Stats HUD padrao +ST_SHOW_DIST_HS_HUD = Distancia&HS na lista HUD +ST_STATS_PLAYER_MAP_END = Stats no final do map +ST_STATS_TOP15_MAP_END = Top15 nofinal do mapa +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Info de Rank para Espectador + +[cz] +NO_OPTION = Nemuzu najit volbu s takovou promennou (jmeno "%s") +STATS_CONF_SAVED = Konfigurace statistik ulozena +STATS_CONF_FAILED = Konfigurace statistik se NEULOZILA!!! +STATS_CONF_LOADED = Konfigurace statistik nactena +STATS_CONF_FAIL_LOAD = Konfigurace statistik se NENACETLA!!! +STATS_CONF = Konfigurace statistik +STATS_ENTRIES_OF = Polozky %i - %i z %i +STATS_USE_MORE = Napis 'amx_statscfg list %i' pro vice +STATS_USE_BEGIN = Napis 'amx_statscfg list 1' pro zacatek +STATS_ENABLED = Statistiky povoleny +STATS_DISABLED = Statistiky zakazany +CANT_ADD_STATS = Nemuzu pridat statistiky do seznamu, limit prekrocen!!! +COM_STATS_USAGE = Napis: amx_statscfg <command> [parameters] ... +COM_STATS_COM = Prikazy: +COM_STATS_ON = ^ton <variable> - povoli specifickou volbu +COM_STATS_OFF = ^toff <variable> - zakaze specifickou volbu +COM_STATS_SAVE = ^tsave - ulozi konfiguraci statistik +COM_STATS_LOAD = ^tload - nacte konfiguraci statistik +COM_STATS_LIST = ^tlist [id] - Seznam statistik +COM_STATS_ADD = ^tadd <name> <variable> - prida statistiku do seznamu +NO_STATS = Statistika neni^ninstalovana na tomto serveru^n +SAVE_CONF = Ulozit konfiguraci +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = MultiKillSound +ST_BOMB_PLANTING = Bomb Planting +ST_BOMB_DEFUSING = Bomb Defusing +ST_BOMB_PLANTED = Bomb Planted +ST_BOMB_DEF_SUCC = Bomb Defuse Succ. +ST_BOMB_DEF_FAIL = Bomb Def. Failure +ST_BOMB_PICKUP = Bomb PickUp +ST_BOMB_DROP = Bomb Drop +ST_BOMB_CD_VOICE = Bomb Countdown Voice +ST_BOMB_CD_DEF = Bomb Countdown (defuser) +ST_BOMB_SITE = Bomb Site Reached +ST_ITALY_BONUS = Italy Bonus Kill +ST_LAST_MAN = Last Man +ST_KNIFE_KILL = Knife Kill +ST_KNIFE_KILL_SOUND = Knife Kill Sound +ST_HE_KILL = Grenade Kill +ST_HE_SUICIDE = Grenade Suicide +ST_HS_KILL = HeadShot Kill +ST_HS_KILL_SOUND = HeadShot Kill Sound +ST_ROUND_CNT = Round Counter +ST_ROUND_CNT_SOUND = Round Counter Sound +ST_KILL_STR = Killing Streak +ST_KILL_STR_SOUND = Killing Streak Sound +ST_ENEMY_REM = Enemy Remaining +ST_DOUBLE_KILL = Double Kill +ST_DOUBLE_KILL_SOUND = Double Kill Sound +ST_PLAYER_NAME = Player Name +ST_FIRST_BLOOD_SOUND = First Blood Sound +ST_SHOW_KILLER_CHAT = Show Killer HP&AP +ST_SHOW_ATTACKERS = Show Attackers +ST_SHOW_VICTIMS = Show Victims +ST_SHOW_KILLER = Show Killer +ST_SHOW_TEAM_SCORE = Show Team Score +ST_SHOW_TOTAL_STATS = Show Total Stats +ST_SHOW_BEST_SCORE = Show Best Score +ST_SHOW_MOST_DISRUPTIVE = Show Most Disruptive +ST_SHOW_HUD_STATS_DEF = Show HUD-stats default +ST_SHOW_DIST_HS_HUD = Dist&HS in HUD lists +ST_STATS_PLAYER_MAP_END = Stats at the end of map +ST_STATS_TOP15_MAP_END = Top15 at the end of map +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Spec. Rank Info + +[fi] +NO_OPTION = Ei loydetty asetuksia tuolla muuttujan nimella (nimi "%s") +STATS_CONF_SAVED = Tilastojen saadot tallenettiin onnistuneesti +STATS_CONF_FAILED = Tilastojen saatojen tallentaminen epaonnistui +STATS_CONF_LOADED = Tilastojen saadot ladattiin onnistuneesti +STATS_CONF_FAIL_LOAD = Tilastojen lataaminen epaonnistui +STATS_ENTRIES_OF = Kohdat %i - %i. Kaikkiaan %i +STATS_USE_MORE = Kirjoita 'amx_statscfg list %i' saadaksesi lisatietoa +STATS_USE_BEGIN = Kirjoita 'amx_statscfg list 1' aloittaaksesi +STATS_ENABLED = Tilastot kaytossa +STATS_DISABLED = Tilastot pois kaytosta +CANT_ADD_STATS = Ei voi lisata tilastoja listaan, raja ylitetty +COM_STATS_USAGE = Kaytto: amx_statscfg <komento> [parametrit] ... +COM_STATS_COM = Komennot: +COM_STATS_ON = ^ton <muuttuja> - Ota maaritelty toiminto kayttoon +COM_STATS_OFF = ^toff <variable> - Ota maaritelty toiminto pois kaytosta +COM_STATS_SAVE = ^tsave - Tallenna tilastojen saadot +COM_STATS_LOAD = ^tload - Lataa tilastojen saadot +COM_STATS_LIST = ^tlist [id] - Listaa tilastojen tila +COM_STATS_ADD = ^tadd <nimi> <muuttuja> - Lisaa tilastoja listaan +NO_STATS = Tilastopluginit eivat ole asennettuna talla palvelimellar^n +SAVE_CONF = Tallenna saadot +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = MultiKillSound +ST_BOMB_PLANTING = Bomb Planting +ST_BOMB_DEFUSING = Bomb Defusing +ST_BOMB_PLANTED = Bomb Planted +ST_BOMB_DEF_SUCC = Bomb Defuse Succ. +ST_BOMB_DEF_FAIL = Bomb Def. Failure +ST_BOMB_PICKUP = Bomb PickUp +ST_BOMB_DROP = Bomb Drop +ST_BOMB_CD_VOICE = Bomb Countdown Voice +ST_BOMB_CD_DEF = Bomb Countdown (defuser) +ST_BOMB_SITE = Bomb Site Reached +ST_ITALY_BONUS = Italy Bonus Kill +ST_LAST_MAN = Last Man +ST_KNIFE_KILL = Knife Kill +ST_KNIFE_KILL_SOUND = Knife Kill Sound +ST_HE_KILL = Grenade Kill +ST_HE_SUICIDE = Grenade Suicide +ST_HS_KILL = HeadShot Kill +ST_HS_KILL_SOUND = HeadShot Kill Sound +ST_ROUND_CNT = Round Counter +ST_ROUND_CNT_SOUND = Round Counter Sound +ST_KILL_STR = Killing Streak +ST_KILL_STR_SOUND = Killing Streak Sound +ST_ENEMY_REM = Enemy Remaining +ST_DOUBLE_KILL = Double Kill +ST_DOUBLE_KILL_SOUND = Double Kill Sound +ST_PLAYER_NAME = Player Name +ST_FIRST_BLOOD_SOUND = First Blood Sound +ST_SHOW_KILLER_CHAT = Show Killer HP&AP +ST_SHOW_ATTACKERS = Show Attackers +ST_SHOW_VICTIMS = Show Victims +ST_SHOW_KILLER = Show Killer +ST_SHOW_TEAM_SCORE = Show Team Score +ST_SHOW_TOTAL_STATS = Show Total Stats +ST_SHOW_BEST_SCORE = Show Best Score +ST_SHOW_MOST_DISRUPTIVE = Show Most Disruptive +ST_SHOW_HUD_STATS_DEF = Show HUD-stats default +ST_SHOW_DIST_HS_HUD = Dist&HS in HUD lists +ST_STATS_PLAYER_MAP_END = Stats at the end of map +ST_STATS_TOP15_MAP_END = Top15 at the end of map +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Spec. Rank Info + +[ls] +NO_OPTION = C0|_|ld|\|'t f!|\|d 0pt!0|\|(s) w!th s|_|(h v4r!4bl3 (|\|4m3 "%s") +STATS_CONF_SAVED = $t4tz0|2 (0|\|f!g|_|r4t!0|\| s4v3d s|_|((3ssf|_|lly +STATS_CONF_FAILED = F4!l3d t0 s4v3 $t4tz0|2 (0|\|f!g|_|r4t!0|\|!!! +STATS_CONF_LOADED = $t4tz0|2 (0|\|f!g|_|r4t!0|\| l04d3d s|_|((3ssf|_|lly +STATS_CONF_FAIL_LOAD = F4!l3d t0 l04d $t4tz0|2 (0|\|f!g|_|r4t!0|\|!!! +STATS_CONF = $t4tz0|2 C0|\|f!g|_|r4t!0|\| +STATS_ENTRIES_OF = E|\|tr!3s %i - %i 0f %i +STATS_USE_MORE = Us3 'amx_statscfg list %i' f0r m0r3 +STATS_USE_BEGIN = Us3 'amx_statscfg list 1' f0r b3g!|\| +STATS_ENABLED = $t4tz0|2 3|\|4bl3d +STATS_DISABLED = $t4tz0|2 d!s4bl3d +CANT_ADD_STATS = C4|\|'t 4dd $t4tz0|2 t0 th3 l!st, l!m!t r34(h3d! +COM_STATS_USAGE = Us4g3: amx_statscfg <command> [parameters] ... +COM_STATS_COM = C0mm4|\|ds: +COM_STATS_ON = ^ton <variable> - 3|\|4bl3 sp3(!f!3d 0pt!0|\| +COM_STATS_OFF = ^toff <variable> - d!s4bl3 sp3(!f!3d 0pt!0|\| +COM_STATS_SAVE = ^tsave - s4v3 $t4tz0|2 (0|\|f!g|_|r4t!0|\| +COM_STATS_LOAD = ^tload - l04d $t4tz0|2 (0|\|f!g|_|r4t!0|\| +COM_STATS_LIST = ^tlist [id] - l!st $t4tz0|2 st4t|_|s +COM_STATS_ADD = ^tadd <name> <variable> - 4dd $t4tz0|2 t0 th3 l!st +NO_STATS = $t4tz0|2 pl|_|g!|\|s 4r3 |\|0t^n!|\|st4ll3d 0|\| th!s s3rv3r^n +SAVE_CONF = S4v3 (0|\|f!g|_|r4t!0|\| +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = MultiKillSound +ST_BOMB_PLANTING = Bomb Planting +ST_BOMB_DEFUSING = Bomb Defusing +ST_BOMB_PLANTED = Bomb Planted +ST_BOMB_DEF_SUCC = Bomb Defuse Succ. +ST_BOMB_DEF_FAIL = Bomb Def. Failure +ST_BOMB_PICKUP = Bomb PickUp +ST_BOMB_DROP = Bomb Drop +ST_BOMB_CD_VOICE = Bomb Countdown Voice +ST_BOMB_CD_DEF = Bomb Countdown (defuser) +ST_BOMB_SITE = Bomb Site Reached +ST_ITALY_BONUS = Italy Bonus Kill +ST_LAST_MAN = Last Man +ST_KNIFE_KILL = Knife Kill +ST_KNIFE_KILL_SOUND = Knife Kill Sound +ST_HE_KILL = Grenade Kill +ST_HE_SUICIDE = Grenade Suicide +ST_HS_KILL = HeadShot Kill +ST_HS_KILL_SOUND = HeadShot Kill Sound +ST_ROUND_CNT = Round Counter +ST_ROUND_CNT_SOUND = Round Counter Sound +ST_KILL_STR = Killing Streak +ST_KILL_STR_SOUND = Killing Streak Sound +ST_ENEMY_REM = Enemy Remaining +ST_DOUBLE_KILL = Double Kill +ST_DOUBLE_KILL_SOUND = Double Kill Sound +ST_PLAYER_NAME = Player Name +ST_FIRST_BLOOD_SOUND = First Blood Sound +ST_SHOW_KILLER_CHAT = Show Killer HP&AP +ST_SHOW_ATTACKERS = Show Attackers +ST_SHOW_VICTIMS = Show Victims +ST_SHOW_KILLER = Show Killer +ST_SHOW_TEAM_SCORE = Show Team Score +ST_SHOW_TOTAL_STATS = Show Total Stats +ST_SHOW_BEST_SCORE = Show Best Score +ST_SHOW_MOST_DISRUPTIVE = Show Most Disruptive +ST_SHOW_HUD_STATS_DEF = Show HUD-stats default +ST_SHOW_DIST_HS_HUD = Dist&HS in HUD lists +ST_STATS_PLAYER_MAP_END = Stats at the end of map +ST_STATS_TOP15_MAP_END = Top15 at the end of map +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Spec. Rank Info + +[bg] +NO_OPTION = Neuspe6no namerena opcia(i) s takav variable (ime "%s") +STATS_CONF_SAVED = configuraciata na statisticata e zapametena uspe6no +STATS_CONF_FAILED = configuraciata na statisticata ne e zapametena uspe6no!!! +STATS_CONF_LOADED = configuraciata na statisticata e prika4ena uspe6no +STATS_CONF_FAIL_LOAD = configuraciata na statisticata ne e prika4ena uspe6no!!! +STATS_CONF = configuraciata na statisticata +STATS_ENTRIES_OF = Vkarani %i - %i ot %i +STATS_USE_MORE = Izpolzvai 'amx_statscfg list %i' za pove4e +STATS_USE_BEGIN = Izpolzvai 'amx_statscfg list 1' za na4alo +STATS_ENABLED = statisticata e vklu4ena +STATS_DISABLED = statisticata e izklu4ena +CANT_ADD_STATS = Nemoje da se dobavi statisticata kam tozi list, limita e dostignat! +COM_STATS_USAGE = Izpolzvano: amx_statscfg <comanda> [parametri] ... +COM_STATS_COM = Comandi: +COM_STATS_ON = ^ton <variable> - vklu4ena e specifi4nata opcia +COM_STATS_OFF = ^toff <variable> - izklu4ena e specifi4nata opcia +COM_STATS_SAVE = ^tsave - zapameti configuraciata na statistikata +COM_STATS_LOAD = ^tload - prika4i configuraciata na statistikata +COM_STATS_LIST = ^tlist [id] - list na statusa na statistikata +COM_STATS_ADD = ^tadd <name> <variable> - dobavi statistikata kam lista +NO_STATS = pluginite za statistikata ne sa^ninstalirani na tozi server^n +SAVE_CONF = Zapameti configuraciata +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = MultiKillSound +ST_BOMB_PLANTING = Bomb Planting +ST_BOMB_DEFUSING = Bomb Defusing +ST_BOMB_PLANTED = Bomb Planted +ST_BOMB_DEF_SUCC = Bomb Defuse Succ. +ST_BOMB_DEF_FAIL = Bomb Def. Failure +ST_BOMB_PICKUP = Bomb PickUp +ST_BOMB_DROP = Bomb Drop +ST_BOMB_CD_VOICE = Bomb Countdown Voice +ST_BOMB_CD_DEF = Bomb Countdown (defuser) +ST_BOMB_SITE = Bomb Site Reached +ST_ITALY_BONUS = Italy Bonus Kill +ST_LAST_MAN = Last Man +ST_KNIFE_KILL = Knife Kill +ST_KNIFE_KILL_SOUND = Knife Kill Sound +ST_HE_KILL = Grenade Kill +ST_HE_SUICIDE = Grenade Suicide +ST_HS_KILL = HeadShot Kill +ST_HS_KILL_SOUND = HeadShot Kill Sound +ST_ROUND_CNT = Round Counter +ST_ROUND_CNT_SOUND = Round Counter Sound +ST_KILL_STR = Killing Streak +ST_KILL_STR_SOUND = Killing Streak Sound +ST_ENEMY_REM = Enemy Remaining +ST_DOUBLE_KILL = Double Kill +ST_DOUBLE_KILL_SOUND = Double Kill Sound +ST_PLAYER_NAME = Player Name +ST_FIRST_BLOOD_SOUND = First Blood Sound +ST_SHOW_KILLER_CHAT = Show Killer HP&AP +ST_SHOW_ATTACKERS = Show Attackers +ST_SHOW_VICTIMS = Show Victims +ST_SHOW_KILLER = Show Killer +ST_SHOW_TEAM_SCORE = Show Team Score +ST_SHOW_TOTAL_STATS = Show Total Stats +ST_SHOW_BEST_SCORE = Show Best Score +ST_SHOW_MOST_DISRUPTIVE = Show Most Disruptive +ST_SHOW_HUD_STATS_DEF = Show HUD-stats default +ST_SHOW_DIST_HS_HUD = Dist&HS in HUD lists +ST_STATS_PLAYER_MAP_END = Stats at the end of map +ST_STATS_TOP15_MAP_END = Top15 at the end of map +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Spec. Rank Info + +[ro] +NO_OPTION = Couldn't find option(s) with such variable (name "%s") +STATS_CONF_SAVED = Configuratia stats a fost salvata cu succes +STATS_CONF_FAILED = Salvarea configuratiei stats a esuat!!! +STATS_CONF_LOADED = Configuratia stats a fost incarcata cu succes +STATS_CONF_FAIL_LOAD = Incarcarea configuratiei stats a esuat!!! +STATS_CONF = Configuratie Stats +STATS_ENTRIES_OF = Intrari %i - %i din %i +STATS_USE_MORE = Scrie 'amx_statscfg list %i' pentru mai mult +STATS_USE_BEGIN = Scrie 'amx_statscfg list 1' pentru inceput +STATS_ENABLED = Stats activat +STATS_DISABLED = Stats dezactivat +CANT_ADD_STATS = Nu se pot adauga stats la lista, limita depasita! +COM_STATS_USAGE = Folosire: amx_statscfg <comanda> [parametri] ... +COM_STATS_COM = Comenzi: +COM_STATS_ON = ^ton <variabila> - activeaza optiunea specificata +COM_STATS_OFF = ^toff <variabila> - dezactiveaza optiunea specificata +COM_STATS_SAVE = ^tsave - salveaza configuratia stats +COM_STATS_LOAD = ^tload - incarca configuratia stats +COM_STATS_LIST = ^tlist [id] - lista statut stats +COM_STATS_ADD = ^tadd <nume> <variabila> - adauga stats la lista +NO_STATS = Plugin-urile stats nu sunt^ninstalate pe acest server^n +SAVE_CONF = Salveaza configuratie +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = MultiKillSound +ST_BOMB_PLANTING = Bomb Planting +ST_BOMB_DEFUSING = Bomb Defusing +ST_BOMB_PLANTED = Bomb Planted +ST_BOMB_DEF_SUCC = Bomb Defuse Succ. +ST_BOMB_DEF_FAIL = Bomb Def. Failure +ST_BOMB_PICKUP = Bomb PickUp +ST_BOMB_DROP = Bomb Drop +ST_BOMB_CD_VOICE = Bomb Countdown Voice +ST_BOMB_CD_DEF = Bomb Countdown (defuser) +ST_BOMB_SITE = Bomb Site Reached +ST_ITALY_BONUS = Italy Bonus Kill +ST_LAST_MAN = Last Man +ST_KNIFE_KILL = Knife Kill +ST_KNIFE_KILL_SOUND = Knife Kill Sound +ST_HE_KILL = Grenade Kill +ST_HE_SUICIDE = Grenade Suicide +ST_HS_KILL = HeadShot Kill +ST_HS_KILL_SOUND = HeadShot Kill Sound +ST_ROUND_CNT = Round Counter +ST_ROUND_CNT_SOUND = Round Counter Sound +ST_KILL_STR = Killing Streak +ST_KILL_STR_SOUND = Killing Streak Sound +ST_ENEMY_REM = Enemy Remaining +ST_DOUBLE_KILL = Double Kill +ST_DOUBLE_KILL_SOUND = Double Kill Sound +ST_PLAYER_NAME = Player Name +ST_FIRST_BLOOD_SOUND = First Blood Sound +ST_SHOW_KILLER_CHAT = Show Killer HP&AP +ST_SHOW_ATTACKERS = Show Attackers +ST_SHOW_VICTIMS = Show Victims +ST_SHOW_KILLER = Show Killer +ST_SHOW_TEAM_SCORE = Show Team Score +ST_SHOW_TOTAL_STATS = Show Total Stats +ST_SHOW_BEST_SCORE = Show Best Score +ST_SHOW_MOST_DISRUPTIVE = Show Most Disruptive +ST_SHOW_HUD_STATS_DEF = Show HUD-stats default +ST_SHOW_DIST_HS_HUD = Dist&HS in HUD lists +ST_STATS_PLAYER_MAP_END = Stats at the end of map +ST_STATS_TOP15_MAP_END = Top15 at the end of map +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Spec. Rank Info + +[hu] +NO_OPTION = Nem talalhato Funkcio a megadott nevvel (nev "%s") +STATS_CONF_SAVED = Beallitasok sikeresen mentve +STATS_CONF_FAILED = Nem sikerult a mentes!!! +STATS_CONF_LOADED = Beallitasok sikeresen betoltbe +STATS_CONF_FAIL_LOAD = Nem sikerult betolteni a beallitasokat!!! +STATS_CONF = Statisztika beallitasok +STATS_ENTRIES_OF = Entries %i - %i of %i +STATS_USE_MORE = Irj 'amx_statscfg list %i' a tobbihez +STATS_USE_BEGIN = Irj 'amx_statscfg list 1' az elsohoz +STATS_ENABLED = Stats engedelyezve +STATS_DISABLED = Stats letiltva +CANT_ADD_STATS = Nem lehet tobb statot hozzaadni, limit elerve! +COM_STATS_USAGE = Hasznalat: amx_statscfg <command> [parameters] ... +COM_STATS_COM = Parancsok: +COM_STATS_ON = ^ton <variable> - enable specified option +COM_STATS_OFF = ^toff <variable> - disable specified option +COM_STATS_SAVE = ^tsave - beallitasok mentese +COM_STATS_LOAD = ^tload - beallitasok betoltese +COM_STATS_LIST = ^tlist [id] - list stats status +COM_STATS_ADD = ^tadd <name> <variable> - add stats to the list +NO_STATS = Statisztika pluginok^nnincsenek installalva ezen a szerveren^n +SAVE_CONF = Beallitasok mentese +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = MultiKillSound +ST_BOMB_PLANTING = Bomb Planting +ST_BOMB_DEFUSING = Bomb Defusing +ST_BOMB_PLANTED = Bomb Planted +ST_BOMB_DEF_SUCC = Bomb Defuse Succ. +ST_BOMB_DEF_FAIL = Bomb Def. Failure +ST_BOMB_PICKUP = Bomb PickUp +ST_BOMB_DROP = Bomb Drop +ST_BOMB_CD_VOICE = Bomb Countdown Voice +ST_BOMB_CD_DEF = Bomb Countdown (defuser) +ST_BOMB_SITE = Bomb Site Reached +ST_ITALY_BONUS = Italy Bonus Kill +ST_LAST_MAN = Last Man +ST_KNIFE_KILL = Knife Kill +ST_KNIFE_KILL_SOUND = Knife Kill Sound +ST_HE_KILL = Grenade Kill +ST_HE_SUICIDE = Grenade Suicide +ST_HS_KILL = HeadShot Kill +ST_HS_KILL_SOUND = HeadShot Kill Sound +ST_ROUND_CNT = Round Counter +ST_ROUND_CNT_SOUND = Round Counter Sound +ST_KILL_STR = Killing Streak +ST_KILL_STR_SOUND = Killing Streak Sound +ST_ENEMY_REM = Enemy Remaining +ST_DOUBLE_KILL = Double Kill +ST_DOUBLE_KILL_SOUND = Double Kill Sound +ST_PLAYER_NAME = Player Name +ST_FIRST_BLOOD_SOUND = First Blood Sound +ST_SHOW_KILLER_CHAT = Show Killer HP&AP +ST_SHOW_ATTACKERS = Show Attackers +ST_SHOW_VICTIMS = Show Victims +ST_SHOW_KILLER = Show Killer +ST_SHOW_TEAM_SCORE = Show Team Score +ST_SHOW_TOTAL_STATS = Show Total Stats +ST_SHOW_BEST_SCORE = Show Best Score +ST_SHOW_MOST_DISRUPTIVE = Show Most Disruptive +ST_SHOW_HUD_STATS_DEF = Show HUD-stats default +ST_SHOW_DIST_HS_HUD = Dist&HS in HUD lists +ST_STATS_PLAYER_MAP_END = Stats at the end of map +ST_STATS_TOP15_MAP_END = Top15 at the end of map +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Spec. Rank Info + +[lt] +NO_OPTION = Negali surasti tokios optijos su tokiu kintamuoju (vardas "%s") +STATS_CONF_SAVED = Statistikos konfiguracija issaugota +STATS_CONF_FAILED = Nepavyko issaugoti statistikos konfigo!!! +STATS_CONF_LOADED = Statistikos konfigas uzkrautas +STATS_CONF_FAIL_LOAD = Nepavyko uzkrauti statistikos konfigo!!! +STATS_CONF = Statistikos konfiguravimas +STATS_ENTRIES_OF = Irasai %i - %i is %i +STATS_USE_MORE = Naudok 'amx_statscfg list %i' del daugiau +STATS_USE_BEGIN = Naudok 'amx_statscfg list 1' kad pradetum +STATS_ENABLED = Statusai ijungti +STATS_DISABLED = Statusai isjungti +CANT_ADD_STATS = Negali ikelti statusu i sarasa, limitas pasiektas! +COM_STATS_USAGE = Naudojimas: amx_statscfg <komanda> [parametrai] ... +COM_STATS_COM = Komandos: +COM_STATS_ON = ^tijungti <kintamasis> - ijungti spec nustatyma +COM_STATS_OFF = ^tisjungti <kintamasis> - isjungti spec nustatyma +COM_STATS_SAVE = ^tissaugoti - issaugoti statusu konfiga +COM_STATS_LOAD = ^tuzkrauti - uzkrauti statusu konfiga +COM_STATS_LIST = ^tsarasas [id] - surusiuoti statusu sarasa +COM_STATS_ADD = ^tprideti <vardas> <kintamasis> - ikelti statusa i sarasa +NO_STATS = Statusu pluginas nera ^ninstaliuotas sitame serve^n +SAVE_CONF = Issaugoti konfiguracija +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = MultiKillSound +ST_BOMB_PLANTING = Bomb Planting +ST_BOMB_DEFUSING = Bomb Defusing +ST_BOMB_PLANTED = Bomb Planted +ST_BOMB_DEF_SUCC = Bomb Defuse Succ. +ST_BOMB_DEF_FAIL = Bomb Def. Failure +ST_BOMB_PICKUP = Bomb PickUp +ST_BOMB_DROP = Bomb Drop +ST_BOMB_CD_VOICE = Bomb Countdown Voice +ST_BOMB_CD_DEF = Bomb Countdown (defuser) +ST_BOMB_SITE = Bomb Site Reached +ST_ITALY_BONUS = Italy Bonus Kill +ST_LAST_MAN = Last Man +ST_KNIFE_KILL = Knife Kill +ST_KNIFE_KILL_SOUND = Knife Kill Sound +ST_HE_KILL = Grenade Kill +ST_HE_SUICIDE = Grenade Suicide +ST_HS_KILL = HeadShot Kill +ST_HS_KILL_SOUND = HeadShot Kill Sound +ST_ROUND_CNT = Round Counter +ST_ROUND_CNT_SOUND = Round Counter Sound +ST_KILL_STR = Killing Streak +ST_KILL_STR_SOUND = Killing Streak Sound +ST_ENEMY_REM = Enemy Remaining +ST_DOUBLE_KILL = Double Kill +ST_DOUBLE_KILL_SOUND = Double Kill Sound +ST_PLAYER_NAME = Player Name +ST_FIRST_BLOOD_SOUND = First Blood Sound +ST_SHOW_KILLER_CHAT = Show Killer HP&AP +ST_SHOW_ATTACKERS = Show Attackers +ST_SHOW_VICTIMS = Show Victims +ST_SHOW_KILLER = Show Killer +ST_SHOW_TEAM_SCORE = Show Team Score +ST_SHOW_TOTAL_STATS = Show Total Stats +ST_SHOW_BEST_SCORE = Show Best Score +ST_SHOW_MOST_DISRUPTIVE = Show Most Disruptive +ST_SHOW_HUD_STATS_DEF = Show HUD-stats default +ST_SHOW_DIST_HS_HUD = Dist&HS in HUD lists +ST_STATS_PLAYER_MAP_END = Stats at the end of map +ST_STATS_TOP15_MAP_END = Top15 at the end of map +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Spec. Rank Info + +[sk] +NO_OPTION = Nemozem najst volbu s takouto premennou (meno "%s") +STATS_CONF_SAVED = Konfiguracia statistik ulozena +STATS_CONF_FAILED = Konfiguracia statistik sa NEULOZILA!!! +STATS_CONF_LOADED = Konfiguracia statistik nacitana +STATS_CONF_FAIL_LOAD = Konfiguracia statistik sa NENACITALA!!! +STATS_CONF = Konfiguracia statistik +STATS_ENTRIES_OF = Polozky %i - %i z %i +STATS_USE_MORE = Napis 'amx_statscfg list %i' pre viac +STATS_USE_BEGIN = Napis 'amx_statscfg list 1' pre zaciatok +STATS_ENABLED = Statistiky povolene +STATS_DISABLED = Statistiky zakazane +CANT_ADD_STATS = Nemozem pridat statistiky do zoznamu, limit prekroceny!!! +COM_STATS_USAGE = Napis: amx_statscfg <command> [parameters] ... +COM_STATS_COM = Prikazy: +COM_STATS_ON = ^ton <variable> - povoli specificku volbu +COM_STATS_OFF = ^toff <variable> - zakaze specificku volbu +COM_STATS_SAVE = ^tsave - ulozi konfiguraciu statistik +COM_STATS_LOAD = ^tload - nacita konfiguraciu statistik +COM_STATS_LIST = ^tlist [id] - Zoznam statistik +COM_STATS_ADD = ^tadd <name> <variable> - prida statistiku do zoznamu +NO_STATS = Statistika neni^nnainstalovana na tomto servery^n +SAVE_CONF = Ulozit konfiguraciu +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = MultiKillSound +ST_BOMB_PLANTING = Bomb Planting +ST_BOMB_DEFUSING = Bomb Defusing +ST_BOMB_PLANTED = Bomb Planted +ST_BOMB_DEF_SUCC = Bomb Defuse Succ. +ST_BOMB_DEF_FAIL = Bomb Def. Failure +ST_BOMB_PICKUP = Bomb PickUp +ST_BOMB_DROP = Bomb Drop +ST_BOMB_CD_VOICE = Bomb Countdown Voice +ST_BOMB_CD_DEF = Bomb Countdown (defuser) +ST_BOMB_SITE = Bomb Site Reached +ST_ITALY_BONUS = Italy Bonus Kill +ST_LAST_MAN = Last Man +ST_KNIFE_KILL = Knife Kill +ST_KNIFE_KILL_SOUND = Knife Kill Sound +ST_HE_KILL = Grenade Kill +ST_HE_SUICIDE = Grenade Suicide +ST_HS_KILL = HeadShot Kill +ST_HS_KILL_SOUND = HeadShot Kill Sound +ST_ROUND_CNT = Round Counter +ST_ROUND_CNT_SOUND = Round Counter Sound +ST_KILL_STR = Killing Streak +ST_KILL_STR_SOUND = Killing Streak Sound +ST_ENEMY_REM = Enemy Remaining +ST_DOUBLE_KILL = Double Kill +ST_DOUBLE_KILL_SOUND = Double Kill Sound +ST_PLAYER_NAME = Player Name +ST_FIRST_BLOOD_SOUND = First Blood Sound +ST_SHOW_KILLER_CHAT = Show Killer HP&AP +ST_SHOW_ATTACKERS = Show Attackers +ST_SHOW_VICTIMS = Show Victims +ST_SHOW_KILLER = Show Killer +ST_SHOW_TEAM_SCORE = Show Team Score +ST_SHOW_TOTAL_STATS = Show Total Stats +ST_SHOW_BEST_SCORE = Show Best Score +ST_SHOW_MOST_DISRUPTIVE = Show Most Disruptive +ST_SHOW_HUD_STATS_DEF = Show HUD-stats default +ST_SHOW_DIST_HS_HUD = Dist&HS in HUD lists +ST_STATS_PLAYER_MAP_END = Stats at the end of map +ST_STATS_TOP15_MAP_END = Top15 at the end of map +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Spec. Rank Info + +[mk] +NO_OPTION = Ne postoi opcija so takva vrednost (ime "%s") +STATS_CONF_SAVED = Izmenite vo statistikata se uspesno zacuvani +STATS_CONF_FAILED = Izmenite vo statistikata ne se zacuvani!!! +STATS_CONF_LOADED = Izmenite vo statistikata se uspesno vcitani +STATS_CONF_FAIL_LOAD = Izmenite vo statistikata ne se vcitani!!! +STATS_CONF = Podesuvanja Za Statistikata +STATS_ENTRIES_OF = Vrednosti %i - %i od %i +STATS_USE_MORE = Napisi 'amx_statscfg list %i' za uste +STATS_USE_BEGIN = Napisi 'amx_statscfg list 1' za od pocetok +STATS_ENABLED = Statistikata e uklucena +STATS_DISABLED = Statistikata e isklucena +CANT_ADD_STATS = Ne moze da se dodade statistika na listata, limitot e dostignat! +COM_STATS_USAGE = Koristenje: amx_statscfg <komanda> [vrednost] ... +COM_STATS_COM = Komandi: +COM_STATS_ON = ^ton <vrednost> - ukluci ja izbranata opcijata +COM_STATS_OFF = ^toff <vrednost> - iskluci ja izbranata opcijata +COM_STATS_SAVE = ^tsave - zacuvaj gi podesuvanjata za statistikata +COM_STATS_LOAD = ^tload - vcitaj podesuvanja za statistikata +COM_STATS_LIST = ^tlist [id] - prikazi go statusot za statistikata +COM_STATS_ADD = ^tadd <name> <variable> - dodaj statistika na krajot od listata +NO_STATS = Plaginot za statistika^nne e instaliran na ovoj server^n +SAVE_CONF = Zacuvaj ja konfiguracijata +ST_MULTI_KILL = MultiKill +ST_MULTI_KILL_SOUND = MultiKillSound +ST_BOMB_PLANTING = Bomb Planting +ST_BOMB_DEFUSING = Bomb Defusing +ST_BOMB_PLANTED = Bomb Planted +ST_BOMB_DEF_SUCC = Bomb Defuse Succ. +ST_BOMB_DEF_FAIL = Bomb Def. Failure +ST_BOMB_PICKUP = Bomb PickUp +ST_BOMB_DROP = Bomb Drop +ST_BOMB_CD_VOICE = Bomb Countdown Voice +ST_BOMB_CD_DEF = Bomb Countdown (defuser) +ST_BOMB_SITE = Bomb Site Reached +ST_ITALY_BONUS = Italy Bonus Kill +ST_LAST_MAN = Last Man +ST_KNIFE_KILL = Knife Kill +ST_KNIFE_KILL_SOUND = Knife Kill Sound +ST_HE_KILL = Grenade Kill +ST_HE_SUICIDE = Grenade Suicide +ST_HS_KILL = HeadShot Kill +ST_HS_KILL_SOUND = HeadShot Kill Sound +ST_ROUND_CNT = Round Counter +ST_ROUND_CNT_SOUND = Round Counter Sound +ST_KILL_STR = Killing Streak +ST_KILL_STR_SOUND = Killing Streak Sound +ST_ENEMY_REM = Enemy Remaining +ST_DOUBLE_KILL = Double Kill +ST_DOUBLE_KILL_SOUND = Double Kill Sound +ST_PLAYER_NAME = Player Name +ST_FIRST_BLOOD_SOUND = First Blood Sound +ST_SHOW_KILLER_CHAT = Show Killer HP&AP +ST_SHOW_ATTACKERS = Show Attackers +ST_SHOW_VICTIMS = Show Victims +ST_SHOW_KILLER = Show Killer +ST_SHOW_TEAM_SCORE = Show Team Score +ST_SHOW_TOTAL_STATS = Show Total Stats +ST_SHOW_BEST_SCORE = Show Best Score +ST_SHOW_MOST_DISRUPTIVE = Show Most Disruptive +ST_SHOW_HUD_STATS_DEF = Show HUD-stats default +ST_SHOW_DIST_HS_HUD = Dist&HS in HUD lists +ST_STATS_PLAYER_MAP_END = Stats at the end of map +ST_STATS_TOP15_MAP_END = Top15 at the end of map +ST_SAY_HP = Say /hp +ST_SAY_STATSME = Say /statsme +ST_SAY_RANKSTATS = Say /rankstats +ST_SAY_ME = Say /me +ST_SAY_RANK = Say /rank +ST_SAY_REPORT = Say /report +ST_SAY_SCORE = Say /score +ST_SAY_TOP15 = Say /top15 +ST_SAY_STATS = Say /stats +ST_SPEC_RANK = Spec. Rank Info diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/statsx.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/statsx.txt new file mode 100644 index 0000000..f0d536c --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/statsx.txt @@ -0,0 +1,1024 @@ +[en] +WHOLEBODY = wholebody +HEAD = head +CHEST = chest +STOMACH = stomach +LEFTARM = leftarm +RIGHTARM = rightarm +LEFTLEG = leftleg +RIGHTLEG = rightleg +MODE_SET_TO = "amx_statsx_mode" set to "%s" +ATTACKERS = Attackers +ACC = acc. +HIT_S = hit(s) +DMG = dmg +VICTIMS = Victims +MOST_DMG = Most damage done by +KILLED_YOU_DIST = %s killed you with %s^nfrom distance of %0.2f meters. +DID_DMG_HITS = He did %d damage to you with %d hit(s)^nand still has %dhp and %dap. +YOU_DID_DMG = You did %d damage to him with %d hit(s). +EFF = eff. +BEST_SCORE = Best score +KILL_S = kill(s) +TOTAL = Total +SHOT_S = shot(s) +HITS_YOU_IN = %s hits you in +KILLED_BY_WITH = Killed by %s with %s @ %0.0fm +NO_HITS = no hits +YOU_NO_KILLER = You have no killer... +YOU_HIT = You hit %s %d time(s), %d damage +LAST_RES = Last result: %d hit(s), %d damage +KILLS = Kills +DEATHS = Deaths +HITS = Hits +SHOTS = Shots +YOUR = Your +PLAYERS = Players +RANK_IS = rank is %d of %d +DAMAGE = Damage +WEAPON = Weapon +YOUR_RANK_IS = Your rank is %d of %d with %d kill(s), %d hit(s), %0.2f%% eff. and %0.2f%% acc. +AMMO = ammo +HEALTH = health +ARMOR = armor +GAME_SCORE = Game score +STATS_ANNOUNCE = You have %s stats announcements +ENABLED = enabled +DISABLED = disabled +SERVER_STATS = Server Stats +X_RANK_IS = %s's rank is %d of %d +DISABLED_MSG = Server has disabled that option + +[de] +WHOLEBODY = Koerper +HEAD = Kopf +CHEST = Oberkoerper +STOMACH = Bauch +LEFTARM = linker Arm +RIGHTARM = rechter Arm +LEFTLEG = linkes Bein +RIGHTLEG = rechtes Bein +MODE_SET_TO = "amx_statsx_mode" gesetzt auf "%s" +ATTACKERS = Angreifer +ACC = Genauigkeit +HIT_S = Treffer +DMG = Schaden +VICTIMS = Sieger +MOST_DMG = Am meisten verursachter Schaden durch +KILLED_YOU_DIST = %s hat dich getoetet ^naus einer Entfernung von %0.2f Metern. +DID_DMG_HITS = Er verursachte %d Schaden bei dir mit %d Treffern^nund hat noch %dhp und %dap. +YOU_DID_DMG = Du hast %d Schaden bei ihm angerichtet mit %d Treffern. +EFF = Effizienz +BEST_SCORE = Die meisten Punkte +KILL_S = Kill(s) +TOTAL = Total +SHOT_S = Schuesse +HITS_YOU_IN = %s Treffer bei ihm +KILLED_BY_WITH = Getoetet von %s mit %s @ %0.0fm +NO_HITS = keine Treffer +YOU_NO_KILLER = Du hast niemanden getoetet... +YOU_HIT = Deine Treffer: %s %d mal, %d Schaden +LAST_RES = Letztes Ergebnis: %d Treffer, %d Schaden +KILLS = Kills +DEATHS = Deaths +HITS = Treffer +SHOTS = Schuesse +YOUR = Dein +PLAYERS = Spieler +RANK_IS = Platzierung: %d von %d +DAMAGE = Schaden +WEAPON = Waffe +YOUR_RANK_IS = Deine Platzierung: %d von %d mit %d Kill(s), %d Treffer, %0.2f%% eff. und %0.2f%% acc. +AMMO = Munition +HEALTH = Gesundheit +ARMOR = Ruestung +GAME_SCORE = Punkte +STATS_ANNOUNCE = Du hast %s Statistik-Meldungen +ENABLED = eingeschaltet +DISABLED = ausgeschaltet +SERVER_STATS = Serverstatistik +X_RANK_IS = %s's Platzierung: %d von %d +DISABLED_MSG = Der Server hat diese Option ausgeschaltet. + +[sr] +WHOLEBODY = celo telo +HEAD = glava +CHEST = grudi +STOMACH = stomak +LEFTARM = leva ruka +RIGHTARM = desna ruka +LEFTLEG = leva noga +RIGHTLEG = desna noga +MODE_SET_TO = "amx_statsx_mode" je namesten na "%s" +ATTACKERS = Napadaci +ACC = acc. +HIT_S = pogodak(a) +DMG = steta +VICTIMS = Zrtve +MOST_DMG = Najvise stete naneseno od +KILLED_YOU_DIST = %s te je ubio sa %s^nsa razdaljine od %0.2f metara. +DID_DMG_HITS = Napravio ti je %d sa %d pogodak(a)^ni ima %dhp i %dap. +YOU_DID_DMG = Napravio si mu %d stete sa %d pogodak(a). +EFF = eff. +BEST_SCORE = Najbolji score +KILL_S = ubistava +TOTAL = Ukupno +SHOT_S = pucanja +HITS_YOU_IN = %s te je pogodio +KILLED_BY_WITH = Killed by %s sa %s @ %0.0fm +NO_HITS = nema pogodaka +YOU_NO_KILLER = You have no killer... ??? +YOU_HIT = Pogodio si %s %d put(a), %d stete +LAST_RES = Poslednji rezultat: %d pogodak(a), %d stete +KILLS = Ubistva +DEATHS = Smrti +HITS = Pogodaka +SHOTS = Pucanja +YOUR = Tvoj(a)??? +PLAYERS = Igraca +RANK_IS = rank je %d od %d +DAMAGE = Steta +WEAPON = Oruzje +YOUR_RANK_IS = Tvoj rank je %d od %d sa %d ubistva, %d pogodaka, %0.2f%% efikasnost. i %0.2f%% preciznosti. +AMMO = municija +HEALTH = energija +ARMOR = stit +GAME_SCORE = Rezultat igre +STATS_ANNOUNCE = Imate %s najava +ENABLED = ukljucen +DISABLED = iskljucen +SERVER_STATS = Statistika Servera +X_RANK_IS = %s rank je %d od %d +DISABLED_MSG = Server je iskljucio tu opciju + +[tr] +WHOLEBODY = Vucut +HEAD = Kafa +CHEST = Dos +STOMACH = Migde +LEFTARM = Sol-kol +RIGHTARM = Sag-kol +LEFTLEG = Sol-bacak +RIGHTLEG = Sag-bacak +MODE_SET_TO = "amx_statsx_mode" bu ayari tasiyor "%s" +ATTACKERS = Saldiran(lar) +ACC = isabet. +HIT_S = vurus +DMG = zarar +VICTIMS = Magdur(lar) +MOST_DMG = En fazla zarar veren +KILLED_YOU_DIST = %s Sizi %s^n silah ile vurdu %0.2f metre mesafesinden. +DID_DMG_HITS = Size verdigi zarar %d silah ile %d ^nve halen %dhp kendi gucu ve %dap celigi var. +YOU_DID_DMG = Sizin verdiginiz zarar %d kullandiginiz silah %d. +EFF = efektif +BEST_SCORE = En iyi puan +KILL_S = oldurulen(ler) +TOTAL = Tam +SHOT_S = vurus(lar) +HITS_YOU_IN = %s isabet ile sizi vurdu +KILLED_BY_WITH = Sizi olduren %s kullandigi %s @ %0.0fm +NO_HITS = isabetsiz atis +YOU_NO_KILLER = Sizi olduren yok... +YOU_HIT = %s vurdunuz %d kez, %d zarar +LAST_RES = Son sonuc: %d vurus, %d zarar +KILLS = oldurdugunuz +DEATHS = kendi oldugunuz +HITS = vurdugunuz +SHOTS = kursun(lar) +YOUR = Sizin +PLAYERS = Oyuncular +RANK_IS = Statistik %d ve %d +DAMAGE = Zarar +WEAPON = Silah +YOUR_RANK_IS = Sizin statistik %d ve %d kullanim %d oldurulen, %d vuruslar, %0.2f%% eff. ve %0.2f%% isabet +AMMO = kursun +HEALTH = saglik +ARMOR = celik +GAME_SCORE = Oyun scoru +STATS_ANNOUNCE = sizin %s statistik konulariniz +ENABLED = kullanimda +DISABLED = kullanilmiyor +SERVER_STATS = Serverin statistigi +X_RANK_IS = %s'in statistik %d ve %d +DISABLED_MSG = Server o secenegi kullanmiyor + +[fr] +WHOLEBODY = le corps entier +HEAD = la tete +CHEST = le torse +STOMACH = le ventre +LEFTARM = le bras gauche +RIGHTARM = le bras droit +LEFTLEG = la jambe gauche +RIGHTLEG = la jambe droite +MODE_SET_TO = "amx_statsx_mode" est mis a "%s" +ATTACKERS = Attaquants +ACC = prec. +HIT_S = touche(s) +DMG = dmg +VICTIMS = Victimes +MOST_DMG = Joueur ayant cause le plus de degats +KILLED_YOU_DIST = %s t'a tue avec %s^na une distance de %0.2f metres. +DID_DMG_HITS = Il t'a fait %d points de degat en te touchant %d fois^net il lui reste %dpv et %dpa. +YOU_DID_DMG = Tu lui as fait %d points de degat en le touchant %d fois. +EFF = eff. +BEST_SCORE = Meilleur score +KILL_S = frag(s) +TOTAL = Total +SHOT_S = tir(s) +HITS_YOU_IN = %s t'a touche dans +KILLED_BY_WITH = A ete tue par %s avec %s @ %0.0fm +NO_HITS = pas touche. +YOU_NO_KILLER = Personne ne t'a tue... +YOU_HIT = Tu as ete touche dans %s %d fois, %d points de degat +LAST_RES = Dernier Resultat: touche %d fois , %d points de degat +KILLS = Frags +DEATHS = Morts +HITS = Touches +SHOTS = Tirs +YOUR = Ton +PLAYERS = Joueurs +RANK_IS = classement est de %d sur %d +DAMAGE = Point(s) de degat +WEAPON = Arme +YOUR_RANK_IS = Ton classement est de %d sur %d avec %d frag(s), %d touche(s), %0.2f%% eff. et %0.2f%% prec. +AMMO = munition +HEALTH = sante +ARMOR = armure +GAME_SCORE = Score du jeu +STATS_ANNOUNCE = Tu as %s les annonces des stats +ENABLED = active +DISABLED = desactive +SERVER_STATS = Stats Serveur +X_RANK_IS = le classement de %s est de %d sur %d +DISABLED_MSG = Cette option est desactivee sur le serveur + +[sv] +WHOLEBODY = helakroppen +HEAD = huvud +CHEST = br'o'st +STOMACH = mage +LEFTARM = v'a'nsterarm +RIGHTARM = h'o'gerarm +LEFTLEG = v'a'nsterben +RIGHTLEG = h'o'gerben +MODE_SET_TO = "amx_statsx_mode" satt till "%s" +ATTACKERS = Attackerare +ACC = prec. +HIT_S = tr'a'ff(ar) +DMG = skada +VICTIMS = Offer +MOST_DMG = Mest skada gjord av +KILLED_YOU_DIST = %s likviderade dig med %s^npa ett avstand av %0.2f meter. +DID_DMG_HITS = Han gjorde %d skada pa dig med %d tr'a'ff(ar)^noch har fortfarande %dhp och %dap. +YOU_DID_DMG = Du gjorde %d skada med %d tr'a'ff(ar). +EFF = eff. +BEST_SCORE = H'o'gsta po'a'ng +KILL_S = Likvidering(ar) +TOTAL = Summa +SHOT_S = skott +HITS_YOU_IN = %s tr'a'ffar dig i +KILLED_BY_WITH = Likviderad av %s med %s @ %0.0fm +NO_HITS = inga tr'a'ffar +YOU_NO_KILLER = Du har ingen m'o'rdare... +YOU_HIT = Du tr'a'ffade %s %d gang(er), %d skada +LAST_RES = Sista resultatet: %d tr'a'ff(ar), %d skada +KILLS = Likvideringar +DEATHS = D'o'dsfall +HITS = Tr'a'ffar +SHOTS = Skott +YOUR = Din +PLAYERS = Spelare +RANK_IS = rank 'a'r %d av %d +DAMAGE = Skada +WEAPON = Vapen +YOUR_RANK_IS = Din ranking 'a'r %d av %d med %d likvidering(ar), %d tr'a'ff(ar), %0.2f%% eff. och %0.2f%% prec. +AMMO = ammo +HEALTH = h'a'lsa +ARMOR = skydd +GAME_SCORE = Spelpo'a'ng +STATS_ANNOUNCE = Du har %s statistik poster +ENABLED = aktiv +DISABLED = av +SERVER_STATS = Serverstatistik +X_RANK_IS = %ss rank 'a'r %d av %d +DISABLED_MSG = Servern har den valm'o'jligheten avst'a'ngd + +[da] +WHOLEBODY = Helekrop +HEAD = hoved +CHEST = bryst +STOMACH = mave +LEFTARM = venstrearm +RIGHTARM = hoejrearm +LEFTLEG = venstreben +RIGHTLEG = hoejreben +MODE_SET_TO = "amx_statsx_mode" sat til "%s" +ATTACKERS = Angribere +ACC = acc. +HIT_S = traeffer(e) +DMG = Skade +VICTIMS = Ofre +MOST_DMG = Mest skade gjort af +KILLED_YOU_DIST = %s draebte dig med %s^nfra en afstand paa %0.2f meter. +DID_DMG_HITS = Han gjorde %d skade paa dig med %d traeffer(e)^nog har stadig %dhp og %dap. +YOU_DID_DMG = Du gjorde %d skade paa ham med %d traeffer(e). +EFF = eff. +BEST_SCORE = Bedste score +KILL_S = Drab +TOTAL = Total +SHOT_S = Skud +HITS_YOU_IN = %s rammer dig i +KILLED_BY_WITH = Draebt af %s med %s @ %0.0fm +NO_HITS = Ingen traeffere +YOU_NO_KILLER = Du har ikke en angriber... +YOU_HIT = Du rammer %s %d gang(e), %d skade +LAST_RES = Sidste resultat: %d traeffer(e), %d skade +KILLS = Draeb +DEATHS = Doed +HITS = Traeffere +SHOTS = Skud +YOUR = Din +PLAYERS = Spillere +RANK_IS = rank er %d af %d +DAMAGE = Skade +WEAPON = Vaaben +YOUR_RANK_IS = Din rank er %d af %d med %d drab %d traeffer(e), %0.2f%% eff. og %0.2f%% acc. +AMMO = Ammunition +HEALTH = Helbred +ARMOR = armor +GAME_SCORE = Spil score +STATS_ANNOUNCE = Du har %s statestik meddelelser +ENABLED = Slaaet til +DISABLED = Slaaet fra +SERVER_STATS = Server Statestik +X_RANK_IS = %s's rank er %d af %d +DISABLED_MSG = Serveren har slaaet den mulighed fra + +[pl] +WHOLEBODY = cialo +HEAD = glowa +CHEST = klatka piersiowa +STOMACH = brzuch +LEFTARM = lewe ramie +RIGHTARM = prawe ramie +LEFTLEG = lewa noga +RIGHTLEG = prawa noga +MODE_SET_TO = "amx_statsx_mode" ustawiono na "%s" +ATTACKERS = Atakujacy +ACC = acc. +HIT_S = trafien +DMG = obr +VICTIMS = Ofiary +MOST_DMG = Najwiecej obrazen: +KILLED_YOU_DIST = %s zabil cie z %s^nfrom z odleglosci %0.2f metrow. +DID_DMG_HITS = %d zadal ci %d obrazen ^ni nadal ma %d zycia i %d zbroi. +YOU_DID_DMG = Zadales %d obrazen %d trafieniami. +EFF = eff. +BEST_SCORE = Najlepszy wynik +KILL_S = zabil +TOTAL = Lacznie +SHOT_S = strzalow +HITS_YOU_IN = %s trafil cie w +KILLED_BY_WITH = Zabity przez %s z %s @ %0.0fm +NO_HITS = zadnych trafien +YOU_NO_KILLER = Nie masz zadnego zabojcy +YOU_HIT = Trafiles %s %d razy, %d obrazen +LAST_RES = Ostatni rezultat: %d trafien, %d obrazen +KILLS = Zabojstw +DEATHS = Zginiec +HITS = Trafien +SHOTS = Strzalow +YOUR = Twoj +PLAYERS = Gracze +RANK_IS = ranking wynosi %d na %d +DAMAGE = Obrazenia +WEAPON = Bron +YOUR_RANK_IS = Twoj ranking wynosi %d na %d Masz %d zabojstw, %d trafien, %0.2f%% eff. i %0.2f%% acc. +AMMO = amunicja +HEALTH = zdrowie +ARMOR = kamizelka +GAME_SCORE = Punktacja +STATS_ANNOUNCE = Masz %s odwolan statystyki +ENABLED = wlaczony +DISABLED = wylaczony +SERVER_STATS = Statystyki serwera +X_RANK_IS = Ranking %s wynosi %d na %d +DISABLED_MSG = Serwer wylaczyl ta opcje + +[nl] +WHOLEBODY = volledig lichaam +HEAD = hoofd +CHEST = romp +STOMACH = maag +LEFTARM = linkerarm +RIGHTARM = rechterarm +LEFTLEG = linkerbeen +RIGHTLEG = rechterbeen +MODE_SET_TO = "amx_statsx_mode" veranderd naar "%s" +ATTACKERS = Aanvallers +ACC = acc. +HIT_S = hit(s) +DMG = schade +VICTIMS = Slachtoffers +MOST_DMG = Meeste schade gedaan door +KILLED_YOU_DIST = %s doodde jou wmet %s^nvan een afstand van %0.2f meters. +DID_DMG_HITS = Hij deed %d schade aan jou met %d hit(s)^nen hij heeft nog steeds %dhp en %dap. +YOU_DID_DMG = Jij deed %d schade aan hem met %d hit(s). +EFF = eff. +BEST_SCORE = Beste score +KILL_S = kill(s) +TOTAL = Totaal +SHOT_S = schot(en) +HITS_YOU_IN = %s raakte je in +KILLED_BY_WITH = Gedood door %s met %s @ %0.0fm +NO_HITS = geen hits +YOU_NO_KILLER = Je hebt geen moordenaar... +YOU_HIT = Je raakte %s %d keer, %d schade +LAST_RES = Laatste resultaat: %d hit(s), %d schade +KILLS = Kills +DEATHS = Sterfgevallen +HITS = Hits +SHOTS = Schoten +YOUR = Je +PLAYERS = Spelers +RANK_IS = rank is %d of %d +DAMAGE = Schade +WEAPON = Wapen +YOUR_RANK_IS = Jouw rank is %d van de %d met %d kill(s), %d hit(s), %0.2f%% eff. and %0.2f%% acc. +AMMO = ammo +HEALTH = Gezondheid +ARMOR = armor +GAME_SCORE = Game score +STATS_ANNOUNCE = Je hebt %s statistiekaankondigingen +ENABLED = ingeschakeld +DISABLED = uitgeschakeld +SERVER_STATS = Server Status +X_RANK_IS = %s's rank is %d van de %d +DISABLED_MSG = De server heeft die optie uitgeschakeld + +[es] +WHOLEBODY = cuerpo entero +HEAD = cabeza +CHEST = pecho +STOMACH = estomago +LEFTARM = brazo izquierdo +RIGHTARM = brazo derecho +LEFTLEG = pierna izquierda +RIGHTLEG = pierna derecha +MODE_SET_TO = "amx_statsx_mode" puesto a "%s" +ATTACKERS = Atacantes +ACC = acc. +HIT_S = acierto(s) +DMG = dno +VICTIMS = Victimas +MOST_DMG = Mayor danyo hecho por +KILLED_YOU_DIST = %s te ha matado con %s^ndesde una distancia de %0.2f metros. +DID_DMG_HITS = Te ha hecho %d puntos de danyo con %d acierto(s)^ny todavia tiene %dhp y %dap. +YOU_DID_DMG = Le has hecho %d puntos de danyo con %d aciertos(s). +EFF = eff. +BEST_SCORE = Mejor puntuacion +KILL_S = frag(s) +TOTAL = Total +SHOT_S = disparo(s) +HITS_YOU_IN = %s te ha dado en +KILLED_BY_WITH = Te ha matado %s con %s @ %0.0fm +NO_HITS = sin aciertos +YOU_NO_KILLER = Nadie te ha matado... +YOU_HIT = Das a %s %d vece(s), %d danyo +LAST_RES = Ultimo resultado: %d acierto(s), %d danyo +KILLS = Frags +DEATHS = Muertes +HITS = Aciertos +SHOTS = Disparos +YOUR = Tu +PLAYERS = Jugadores +RANK_IS = ranking es %d de %d +DAMAGE = Danyo +WEAPON = Arma +YOUR_RANK_IS = Tu ranking es %d de %d con %d frag(s), %d acierto(s), %0.2f%% eff. y %0.2f%% acc. +AMMO = municion +HEALTH = vida +ARMOR = armadura +GAME_SCORE = Puntuacion de la partida +STATS_ANNOUNCE = Tienes %s avisos de estadisticas +ENABLED = activado +DISABLED = desactivado +SERVER_STATS = Estadisticas del Servidor +X_RANK_IS = El ranking de %s es %d de %d +DISABLED_MSG = El servidor ha desactivado esta opcion + +[bp] +WHOLEBODY = corpo +HEAD = cabeca +CHEST = peito +STOMACH = estomago +LEFTARM = braco esquerdo +RIGHTARM = braco direito +LEFTLEG = perna esquerda +RIGHTLEG = perna direita +MODE_SET_TO = "amx_statsx_mode" configurado para "%s" +ATTACKERS = Atacantes +ACC = acc. +HIT_S = acerto(s) +DMG = dmg +VICTIMS = Vitimas +MOST_DMG = Maior dano causado por +KILLED_YOU_DIST = %s o matou com %s^nna distancia %0.2f metros. +DID_DMG_HITS = Ele causou %d de dano em voce com %d acerto(s)^ne ainda tem %dhp e %dap. +YOU_DID_DMG = Voce causou %d de dano nele com %d acerto(s). +EFF = eff. +BEST_SCORE = Melhor Placar +KILL_S = frag(s) +TOTAL = Total +SHOT_S = Tiros(S) +HITS_YOU_IN = %s acerto(s) em voce +KILLED_BY_WITH = Morto por %s com %s @ %0.0fm +NO_HITS = nenhum acerto +YOU_NO_KILLER = Voce nao matou ninguem +YOU_HIT = Voce acertou %s %d vez(es), %d de dano +LAST_RES = Ultimo resultado: %d acerto(s), dano de %d +KILLS = Frags +DEATHS = Mortes +HITS = Acertos +SHOTS = Tiros +YOUR = Sua +PLAYERS = Jogadores +RANK_IS = Sua posicao e %d de %d +DAMAGE = Dano +WEAPON = Arma +YOUR_RANK_IS = Sua posicao e %d de %d com %d frag(s), %d acerto(s), %0.2f%% eff. e %0.2f%% prec. +AMMO = municao +HEALTH = Life +ARMOR = Colete +GAME_SCORE = Placar do jogo +STATS_ANNOUNCE = Voce tem %s anuncios de estatisticas +ENABLED = ativado +DISABLED = desativado +SERVER_STATS = Estatisticas do Servidor +X_RANK_IS = %s posicao e %d de %d +DISABLED_MSG = Esta opcao esta desativada no Server + +[cz] +WHOLEBODY = cele telo +HEAD = hlava +CHEST = trup +STOMACH = zaludek +LEFTARM = leva paze +RIGHTARM = prava paze +LEFTLEG = leva noha +RIGHTLEG = prava noha +MODE_SET_TO = "amx_statsx_mode" nastaven na "%s" +ATTACKERS = Utocnici +ACC = presnost. +HIT_S = zasahy +DMG = dmg +VICTIMS = Obeti +MOST_DMG = Nejdrsnejsi byl +KILLED_YOU_DIST = %s te zabil %s^nze vzdalenosti %.2f metru.^n +DID_DMG_HITS = Sebral ti %d hp a trefil te %dx.^n +YOU_DID_DMG = Sebral jsi mu %d hp %d zasahy. +EFF = eff. +BEST_SCORE = Nejlepsi score +KILL_S = zabiti +TOTAL = Celkem +SHOT_S = vystrelu +HITS_YOU_IN = %s zasahl +KILLED_BY_WITH = Zabil te %s s %s @ %0.0fm +NO_HITS = zadne zasahy +YOU_NO_KILLER = Nejsi zabijak... +YOU_HIT = Trefil jsi %s %dx, %d damage +LAST_RES = Naposledy: %d zasahu, %d damage +KILLS = Zabiti +DEATHS = Smrti +HITS = Zasahy +SHOTS = Strely +YOUR = Tvoje +PLAYERS = Hraci +RANK_IS = pricka je %d z %d +DAMAGE = Poskozeni +WEAPON = Zbran +YOUR_RANK_IS = Tvoje pricka je %d z %d s %d zabitimi, %d zasahy, %0.2f%% eff. a %0.2f%% acc. +AMMO = strelivo +HEALTH = zdravi +ARMOR = stity +GAME_SCORE = Herni score +STATS_ANNOUNCE = Mas %s statistickych upozorneni +ENABLED = povoleno +DISABLED = zakazano +SERVER_STATS = Statistiky serveru +X_RANK_IS = %sova pricka je %d z %d +DISABLED_MSG = Server tuto volbu nepovolil + +[fi] +WHOLEBODY = koko keho +HEAD = paa +CHEST = rinta +STOMACH = vatsa +LEFTARM = vasen kasi +RIGHTARM = oikea kasi +LEFTLEG = vasen jalka +RIGHTLEG = oikea jalka +MODE_SET_TO = "amx_statsx_mode" asetettiin "%s" +ATTACKERS = Hyokkaajat +ACC = tarkkuus +HIT_S = osumat +DMG = damage +VICTIMS = Uhrit +MOST_DMG = Eniten damagea teki: +KILLED_YOU_DIST = %s tappoi sinut %0.2f metrin etaisyydelta. +DID_DMG_HITS = Han teki %d damagea sinuun %d osumalla^hanella on viela %dhp ja %dap. +YOU_DID_DMG = Teit %d damagea haneen %d osumalla. +EFF = tehokkuus +BEST_SCORE = Parhaat pisteet +KILL_S = tapot +TOTAL = Kaikkiaan +SHOT_S = Laukaukset +HITS_YOU_IN = %s osui sinua +KILLED_BY_WITH = Sinut tappoi %s %s:lla @ %0.0fm +NO_HITS = ei osumia +YOU_NO_KILLER = Kukaan ei tappanut sinua... +YOU_HIT = Osuit pelaajaa %s %d kertaa, %d damagea +LAST_RES = Viimeinen tulos %d osumaa, %d damagea +KILLS = Tapot +DEATHS = Kuolemat +HITS = Osumat +SHOTS = Laukaukset +YOUR = Sinun +PLAYERS = Pelaajat +RANK_IS = sijoitus on %d / %d +DAMAGE = Damage +WEAPON = Ase +YOUR_RANK_IS = Sijoituksesi on %d / %d: %d tappoa, %d osumaa, %0.2f%% tehokkuus ja %0.2f%% tarkkuus. +AMMO = ammukset +HEALTH = hp +ARMOR = ap +GAME_SCORE = Pistemaara +STATS_ANNOUNCE = Sinulla on %s tilastoilmoitusta +ENABLED = kaytossa +DISABLED = poissa kaytosta +SERVER_STATS = Palvelimen tilastot +X_RANK_IS = Pelaajan %s sijoitus on %d / %d +DISABLED_MSG = Palvelin on poistanut tuon vaihtoehdon kaytosta + +[ls] +WHOLEBODY = wh0l3|30dy +HEAD = h34d +CHEST = ch3$t +STOMACH = $t0m4ch +LEFTARM = l3ft4|2m +RIGHTARM = |2ight4|2m +LEFTLEG = l3ftl3g +RIGHTLEG = |2ightl3g +MODE_SET_TO = "amx_statsx_mode" $3t t0 "%s" +ATTACKERS = Att4c|<3|2$ +ACC = 4cc. +HIT_S = hit($) +DMG = dmg +VICTIMS = Victim$ +MOST_DMG = M0$t d4m4g3 d0n3 |3y +KILLED_YOU_DIST = %s |<ill3d j00 with %s^nf|20m di$t4nc3 0f %0.2f m3t3|2$. +DID_DMG_HITS = H3 d!dz0|2 %d d4m4g3 t0 j00 with %d hit($)^n4nd $till h4$ %dhp 4nd %d4p. +YOU_DID_DMG = j00 d!dz0|2 %d d4m4g3 t0 him with %d hit($). +EFF = 3ff. +BEST_SCORE = B3$t $c0|23 +KILL_S = |<ill($) +TOTAL = T0t4l +SHOT_S = $h0t($) +HITS_YOU_IN = %s hit$ j00 in +KILLED_BY_WITH = Kill3d |3y %s with %s @ %0.0fm +NO_HITS = n0 hit$ +YOU_NO_KILLER = j00 h4\/3 n0 |<ill3|2... +YOU_HIT = j00 hit %s %d tim3($), %d d4m4g3 +LAST_RES = L4$t |23$ult: %d hit($), %d d4m4g3 +KILLS = Kill$ +DEATHS = D34th$ +HITS = Hit$ +SHOTS = Sh0t$ +YOUR = j00|2 +PLAYERS = Pl4y3|2$ +RANK_IS = |24n|< i$ %d 0f %d +DAMAGE = D4m4g3 +WEAPON = W34p0n +YOUR_RANK_IS = j00|2 |24n|< i$ %d 0f %d with %d |<ill($), %d hit($), %0.2f%% 3ff. 4nd %0.2f%% 4cc. +AMMO = 4mm0 +HEALTH = h34lth +ARMOR = 4|2m0|2 +GAME_SCORE = G4m3 $c0|23 +STATS_ANNOUNCE = j00 h4\/3 %s $t4t$ 4nn0unc3m3nt$ +ENABLED = 3n4|3l3d +DISABLED = di$4|3l3d +SERVER_STATS = S3|2\/3|2 St4t$ +X_RANK_IS = %s'$ |24n|< i$ %d 0f %d +DISABLED_MSG = S3|2\/3|2 h4$ di$4|3l3d th4t 0pti0n + +[bg] +WHOLEBODY = cqloto tqlo +HEAD = glava +CHEST = graden ko6 +STOMACH = stomah +LEFTARM = lqva raka +RIGHTARM = dqsna raka +LEFTLEG = lqv krak +RIGHTLEG = desen krak +MODE_SET_TO = "amx_statsx_mode" naglasen na "%s" +ATTACKERS = Attackers +ACC = to4. +HIT_S = udar(i) +DMG = dmg +VICTIMS = Ubiti +MOST_DMG = Nai mnogo damage napraven ot +KILLED_YOU_DIST = %s te ubi s %s^not %0.2f meters. +DID_DMG_HITS = toi napravi %d damage na teb s %d udar(i)^ni vse o6te ima %dhp i %dap. +YOU_DID_DMG = Ti napravi %d damage na nego s %d udar(i). +EFF = eff. +BEST_SCORE = Nai dobar resultat +KILL_S = ubiistrvo(a) +TOTAL = Ob6to +SHOT_S = Istrela(i) +HITS_YOU_IN = %s vi oceli v +KILLED_BY_WITH = Ubit ot %s s %s @ %0.0fm +NO_HITS = Nqma udari +YOU_NO_KILLER = nqnate ubiec... +YOU_HIT = Vie ucelihte %s %d put(i), %d damage +LAST_RES = Posleden resultat: %d put(i), %d damage +KILLS = Ubiistva +DEATHS = umirania +HITS = Udari +SHOTS = Istreli +YOUR = Va6ia +PLAYERS = Igra4i +RANK_IS = ranka e %d ot %d +DAMAGE = Damage +WEAPON = Orajie +YOUR_RANK_IS = Va6ia rank e %d ot %d s %d ubiistvo(a), %d udar(i), %0.2f%% eff. i %0.2f%% acc. +AMMO = patroni +HEALTH = krav +ARMOR = bronq +GAME_SCORE = Resultat na igrata +STATS_ANNOUNCE = Vie imate %s statistiki obqveni +ENABLED = vklu4en +DISABLED = izklu4en +SERVER_STATS = Statistiki na server +X_RANK_IS = ranka na %s e %d ot %d +DISABLED_MSG = Servera e isklu4il tazi optia + +[ro] +WHOLEBODY = tot corpul +HEAD = cap +CHEST = piept +STOMACH = stomac +LEFTARM = brat stang +RIGHTARM = brat drept +LEFTLEG = picior stang +RIGHTLEG = picior drept +MODE_SET_TO = "amx_statsx_mode" este setat la "%s" +ATTACKERS = Atacatori +ACC = ac. +HIT_S = lovituri +DMG = dmg +VICTIMS = Victime +MOST_DMG = Cel mai mult dmg produs de +KILLED_YOU_DIST = %s te-a ucis cu %s^nde la distanta de %0.2f metri. +DID_DMG_HITS = El ti-a facut %d dmg din %d lovituri^nsi inca mai are %dhp si %dap. +YOU_DID_DMG = Tu i-ai facut %d dmg din %d lovituri. +EFF = ef. +BEST_SCORE = Cel mai bun scor +KILL_S = ucideri +TOTAL = Total +SHOT_S = Focuri +HITS_YOU_IN = %s te-a lovit in +KILLED_BY_WITH = Ucis de %s cu %s de la %0.0fm +NO_HITS = nici o lovitura +YOU_NO_KILLER = Nu ai nici o ucidere... +YOU_HIT = Tu l-ai lovit pe %s de %d ori, %d dmg +LAST_RES = Ultimul rezultat: %d lovituri, %d dmg +KILLS = Ucideri +DEATHS = Decesuri +HITS = Lovituri +SHOTS = Focuri +YOUR = Pozitia ta +PLAYERS = Jucatori +RANK_IS = este %d din %d +DAMAGE = Dmg +WEAPON = Arma +YOUR_RANK_IS = Pozitia ta este %d din %d cu %d ucideri, %d lovituri, %0.2f% ef. si %0.2f% ac. +AMMO = munitie +HEALTH = viata +ARMOR = vesta +GAME_SCORE = Scorul Jocului +STATS_ANNOUNCE = Ai %s anunturile statisticilor +ENABLED = activat +DISABLED = dezactivat +SERVER_STATS = Statistici Jucatori +X_RANK_IS = Pozitia lui %s este %d din %d +DISABLED_MSG = Server-ul a dezactivat aceasta optiune + +[hu] +WHOLEBODY = egesz test +HEAD = fej +CHEST = csipo +STOMACH = has +LEFTARM = balkar +RIGHTARM = jobbkar +LEFTLEG = ballab +RIGHTLEG = jobblab +MODE_SET_TO = "amx_statsx_mode" set to "%s" +ATTACKERS = Tamadok +ACC = Pontossag +HIT_S = talalat +DMG = sebzes +VICTIMS = Aldozatok +MOST_DMG = Legtobb sebzes: +KILLED_YOU_DIST = %s megolt teged %s^n %0.2f meterrol. +DID_DMG_HITS = O %d -t sebzett rajtad ^n talalattal es maradt neki %dhp es %dap-ja. +YOU_DID_DMG = Te %d sebeztel rajta %d talalattal. +EFF = eff. +BEST_SCORE = Legjobb pont +KILL_S = Oles +TOTAL = Total +SHOT_S = loves +HITS_YOU_IN = %s eltalalt teged +KILLED_BY_WITH = Megolt %s, %s-el %0.0fmeterrol +NO_HITS = nincs talalat +YOU_NO_KILLER = Nincs gyilkosod... +YOU_HIT = You hit %s %d time(s), %d damage +LAST_RES = Last result: %d hit(s), %d damage +KILLS = Olesek +DEATHS = Halal +HITS = Talalat +SHOTS = Loves +YOUR = Te +PLAYERS = Jatekosok +RANK_IS = helyezese %d of %d +DAMAGE = Sebzes +WEAPON = Fegyver +YOUR_RANK_IS = A te helyezesed %d a %d -bol %d olessel, %d talalattal, %0.2f% effel es %0.2f% accal. +AMMO = tolteny +HEALTH = elet +ARMOR = pancel +GAME_SCORE = Jatek pont +TIME_REM = Hatralevo ido +NO_T_LIMIT = Nincs idohatar +THE_TIME = Az ido +PLAYED_MAP = Mostani palya +FRIEND_FIRE = Csapattars sebzes +STATS_ANNOUNCE = Neked van %s stats announcements +ENABLED = engedelyezve +DISABLED = letiltva +SERVER_STATS = Szerver Status +X_RANK_IS = %s helyezese %d a %d-bol +DISABLED_MSG = A szerver letiltotta ezt az opciot + +[lt] +WHOLEBODY = kunas +HEAD = galva +CHEST = krutine +STOMACH = pilvas +LEFTARM = kaire ranka +RIGHTARM = desine ranka +LEFTLEG = kaire koja +RIGHTLEG = desine koja +MODE_SET_TO = "amx_statsx_mode" nustatytas i "%s" +ATTACKERS = Uzpuolikai +ACC = taiklumas. +HIT_S = pataikymas(-ai) +DMG = zala +VICTIMS = Aukos +MOST_DMG = Daugiausiai zalos padare +KILLED_YOU_DIST = %s nudejo tave su %s^nis %0.2f metru. +DID_DMG_HITS = Jis padare %d zalos tau su %d pataikymu(-ais)^nir vis dar turi %dgivybiu ir %darmoro. +YOU_DID_DMG = Tu padarei %d zalos jam su %d pataikymu(-ais). +EFF = efektyvumas. +BEST_SCORE = Geriausias rezultatas +KILL_S = nuzudymas(-ais) +TOTAL = Isviso +SHOT_S = Suvis(-iai) +HITS_YOU_IN = %s pataike tau i +KILLED_BY_WITH = Nudejo %s su %s @ %0.0fm +NO_HITS = nera suzeidimu +YOU_NO_KILLER = Neturi zudiko... +YOU_HIT = Tu pataikei %s %d karta(-us), %d zala +LAST_RES = Paskutinis rezultatas: %d pataikymu(-ais), %d zala +KILLS = Nuzudymai +DEATHS = Mirtys +HITS = Pataikymai +SHOTS = Suviai +YOUR = Tavo +PLAYERS = Zaidejai +RANK_IS = rankas yra %d is %d +DAMAGE = Zala +WEAPON = Ginklas +YOUR_RANK_IS = Tavo rank yra %d is %d su %d nuzudymais, %d pataikymais, %0.2f%% efektyvumas. ir %0.2f%% taiklumas. +AMMO = saudmenys +HEALTH = givybes +ARMOR = armoras +GAME_SCORE = Zaidimo rezultatas +STATS_ANNOUNCE = Tu turi %s statusu pranesimus +ENABLED = ijungta +DISABLED = isjungta +SERVER_STATS = Serverio statusas +X_RANK_IS = %s rankas yra %d is %d +DISABLED_MSG = Serveris uzdraude sia komanda + +[sk] +WHOLEBODY = cele telo +HEAD = hlava +CHEST = trup +STOMACH = zaludok +LEFTARM = lava ruka +RIGHTARM = prava ruka +LEFTLEG = lava noha +RIGHTLEG = prava noha +MODE_SET_TO = "amx_statsx_mode" nastaveny na "%s" +ATTACKERS = Utocnici +ACC = presnost. +HIT_S = zasah(ov) +DMG = dmg +VICTIMS = Obete +MOST_DMG = Nejdrsnejsi bol +KILLED_YOU_DIST = %s ta zabil s %s^nzo vzdialenosti %.2f metra.^n +DID_DMG_HITS = Zobral ti %d hp a trafil ta %dx.^n +YOU_DID_DMG = Zobral si mu %d hp, %d zasahmi. +EFF = eff. +BEST_SCORE = Naj. score za kolo +KILL_S = zabit(ia/i) +TOTAL = Celkom +SHOT_S = vystrel(ov) +HITS_YOU_IN = %s zasiahol +KILLED_BY_WITH = Zabil ta %s s %s @ %0.0fm +NO_HITS = ziadne zasahy +YOU_NO_KILLER = Niesi zabijak... +YOU_HIT = Trafil si %s %dx, %d damage +LAST_RES = Naposledy: %d zasahov, %d damage +KILLS = Zabiti +DEATHS = Smrti +HITS = zasah(ov) +SHOTS = vystrel(ov) +YOUR = Tvoja +PLAYERS = Hraci +RANK_IS = priecka je %d z %d +DAMAGE = Poskozenie +WEAPON = Zbran +YOUR_RANK_IS = Tvoja priecka je %d z %d s %d zabitiami, %d zasahmy, %0.2f%% eff. a %0.2f%% acc. +AMMO = naboje +HEALTH = zdravie +ARMOR = stit +GAME_SCORE = Herne score +STATS_ANNOUNCE = Mas %s statistickych upozorneni +ENABLED = povolene +DISABLED = zakazane +SERVER_STATS = Statistiky servera +X_RANK_IS = %sova priecka je %d z %d +DISABLED_MSG = Server tuto volbu nepovolil + +[mk] +WHOLEBODY = celo telo +HEAD = glava +CHEST = gradi +STOMACH = stomak +LEFTARM = leva raka +RIGHTARM = desna raka +LEFTLEG = leva noga +RIGHTLEG = desna noga +MODE_SET_TO = "amx_statsx_mode" e namesten na "%s" +ATTACKERS = Te napadnaa +ACC = preciznost +HIT_S = pogodok(a) +DMG = steta +VICTIMS = Zrtvi +MOST_DMG = Najmnogu steta e nanesena od +KILLED_YOU_DIST = %s te ubi so %s^nna dalecina od %0.2f metri. +DID_DMG_HITS = Toj ti napravi %d steta so %d pogodok(a)^ni seuste ima %d energija i %d pancir. +YOU_DID_DMG = Ti mu napravi %d steta so %d pogodok(a). +EFF = efikasnost +BEST_SCORE = Najdobar rezultat +KILL_S = Ubistva +TOTAL = Vkupno +SHOT_S = pukanja +HITS_YOU_IN = %s te pogodi vo +KILLED_BY_WITH = Ubien si od %s so %s @ %0.0fm +NO_HITS = nema pogodoci +YOU_NO_KILLER = Nikoj te nema ubieno... +YOU_HIT = Ti go pogodi %s %d pati, %d steta +LAST_RES = Posleden rezultat: %d pogodoci, %d steta +KILLS = Ubistva +DEATHS = Bil ubien +HITS = Pogodoci +SHOTS = Pukanja +YOUR = Tvojot +PLAYERS = Za igracot +RANK_IS = rank e %d od %d +DAMAGE = Steta +WEAPON = Oruzje +YOUR_RANK_IS = Tvojot rank e %d od %d so %d ubistva, %d pogodok(a), %0.2f%% efikasnost i %0.2f%% preciznost. +AMMO = municija +HEALTH = energija +ARMOR = pancir +GAME_SCORE = Rezultat na igrata +STATS_ANNOUNCE = Imate %s najava +ENABLED = uklucen +DISABLED = isklucen +SERVER_STATS = Statistika na serverot +X_RANK_IS = %s rank e %d od %d +DISABLED_MSG = Taa opcija e isklucena vo serverot diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/telemenu.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/telemenu.txt new file mode 100644 index 0000000..f2566ea --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/telemenu.txt @@ -0,0 +1,139 @@ +[en] +ADMIN_TELEPORT_1 = ADMIN: teleport %s +ADMIN_TELEPORT_2 = ADMIN %s: teleport %s +TELE_MENU = Teleport Menu +CUR_LOC = Current Location +SAVE_LOC = Save Location + +[de] +ADMIN_TELEPORT_1 = ADMIN: teleportiert %s +ADMIN_TELEPORT_2 = ADMIN %s: teleportiert %s +TELE_MENU = Menu > Teleport +CUR_LOC = Momentane Position +SAVE_LOC = Position speichern + +[sr] +ADMIN_TELEPORT_1 = ADMIN: teleportuj %s +ADMIN_TELEPORT_2 = ADMIN %s: teleportuj %s +TELE_MENU = Teleport Meni +CUR_LOC = Sadasnja Lokacija +SAVE_LOC = Sacuvaj Lokaciju + +[tr] +ADMIN_TELEPORT_1 = ADMIN: teleportladi %s +ADMIN_TELEPORT_2 = ADMIN %s: teleportladi %s +TELE_MENU = Teleport Menusu +CUR_LOC = Oldugu su anki yer +SAVE_LOC = Oldugu yeri saklayin + +[fr] +ADMIN_TELEPORT_1 = ADMIN: teleporte %s +ADMIN_TELEPORT_2 = ADMIN %s: teleporte %s +TELE_MENU = Menu Teleportation +CUR_LOC = Emplacement Actuel +SAVE_LOC = Sauver l'emplacement + +[sv] +ADMIN_TELEPORT_1 = ADMIN: teleportera %s +ADMIN_TELEPORT_2 = ADMIN %s: teleportera %s +TELE_MENU = Teleportmeny +CUR_LOC = Nuvarande position +SAVE_LOC = Spara position + +[da] +ADMIN_TELEPORT_1 = ADMIN: teleport %s +ADMIN_TELEPORT_2 = ADMIN %s: teleport %s +TELE_MENU = Teleport Menu +CUR_LOC = Nuvaerende lokation +SAVE_LOC = Gem Lokation + +[pl] +ADMIN_TELEPORT_1 = ADMIN: teleportowal %s +ADMIN_TELEPORT_2 = ADMIN %s: teleportowal %s +TELE_MENU = Menu teleportu +CUR_LOC = Aktualna pozycja +SAVE_LOC = Zapisz pozycje + +[nl] +ADMIN_TELEPORT_1 = ADMIN: teleporteer %s +ADMIN_TELEPORT_2 = ADMIN %s: teleporteer %s +TELE_MENU = Teleportatiemenu +CUR_LOC = Huidige Locatie +SAVE_LOC = Locatie Bewaren + +[es] +ADMIN_TELEPORT_1 = ADMIN: %s teletransportado +ADMIN_TELEPORT_2 = ADMIN %s: %s teletransportado +TELE_MENU = Menu de Teletransporte +CUR_LOC = Posicion Actual +SAVE_LOC = Guardar Posicion + +[bp] +ADMIN_TELEPORT_1 = ADMIN: teletransportou %s +ADMIN_TELEPORT_2 = ADMIN %s: teletransportou %s +TELE_MENU = Menu de Teletransporte +CUR_LOC = Local Atual +SAVE_LOC = Salvar Local + +[cz] +ADMIN_TELEPORT_1 = ADMIN: teleportoval %s +ADMIN_TELEPORT_2 = ADMIN %s: teleportovali %s +TELE_MENU = Menu Teleportu +CUR_LOC = Soucasna misto +SAVE_LOC = Ulozit misto + +[fi] +ADMIN_TELEPORT_1 = ADMIN: teleporttasi pelaajan %s +ADMIN_TELEPORT_2 = ADMIN %s: teleporttasi pelaajan %s +TELE_MENU = Teleportvalikko +CUR_LOC = Nykyinen sijainti +SAVE_LOC = Tallenna sijainti + +[ls] +ADMIN_TELEPORT_1 = l33t s3rv3r 0P: h4x3d %s t0 n3w ISP +ADMIN_TELEPORT_2 = l33t s3rv3r 0P %s: h4x3d %s t0 n3w ISP +TELE_MENU = l33t T3l3p0rt M3nu +CUR_LOC = Cu|2|2en7 ISP +SAVE_LOC = S4v3 ISP + +[bg] +ADMIN_TELEPORT_1 = ADMININISTRATOR: teleportira %s +ADMIN_TELEPORT_2 = ADMINISTRATOR %s: teleportira %s +TELE_MENU = Teleport Menu +CUR_LOC = Mestopolojenie +SAVE_LOC = Zapazi mestopolojenieto + +[ro] +ADMIN_TELEPORT_1 = ADMIN: teleportare %s +ADMIN_TELEPORT_2 = ADMIN %s: teleportare %s +TELE_MENU = Menu Teleportare +CUR_LOC = Locatia Actuala +SAVE_LOC = Salveaza Locatie + +[hu] +ADMIN_TELEPORT_1 = ADMIN: %s teleport +ADMIN_TELEPORT_2 = ADMIN %s: %s teleport +TELE_MENU = Teleport Menu +CUR_LOC = Mostani hely +SAVE_LOC = Hely mentese + +[lt] +ADMIN_TELEPORT_1 = ADMINAS: teleportavo %s +ADMIN_TELEPORT_2 = ADMINAS %s: teleportavo %s +TELE_MENU = Teleporto Meniu +CUR_LOC = Dabartine vieta +SAVE_LOC = Issaugoti vietove + +[sk] +ADMIN_TELEPORT_1 = ADMIN: teleportoval %s +ADMIN_TELEPORT_2 = ADMIN %s: teleportovali %s +TELE_MENU = MENU: Teleport +CUR_LOC = Sucasne miesto +SAVE_LOC = Ulozit miesto + +[mk] +ADMIN_TELEPORT_1 = ADMIN: go teleportira %s +ADMIN_TELEPORT_2 = ADMIN %s: go teleportira %s +TELE_MENU = Meni za teleportiranje +CUR_LOC = Vidi ja zacuvanata lokacija +SAVE_LOC = Zacuvaj ja segasnata lokacija diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/time.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/time.txt new file mode 100644 index 0000000..65edb40 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/time.txt @@ -0,0 +1,237 @@ +[en] +TIME_ELEMENT_SECOND = second +TIME_ELEMENT_SECONDS = seconds +TIME_ELEMENT_MINUTE = minute +TIME_ELEMENT_MINUTES = minutes +TIME_ELEMENT_HOUR = hour +TIME_ELEMENT_HOURS = hours +TIME_ELEMENT_DAY = day +TIME_ELEMENT_DAYS = days +TIME_ELEMENT_WEEK = week +TIME_ELEMENT_WEEKS = weeks +TIME_ELEMENT_PERMANENTLY = permanently +TIME_ELEMENT_AND = and + +[de] +TIME_ELEMENT_SECOND = Sekunde +TIME_ELEMENT_SECONDS = Sekunden +TIME_ELEMENT_MINUTE = Minute +TIME_ELEMENT_MINUTES = Minuten +TIME_ELEMENT_HOUR = Stunde +TIME_ELEMENT_HOURS = Stunden +TIME_ELEMENT_DAY = Tag +TIME_ELEMENT_DAYS = Tage +TIME_ELEMENT_WEEK = Woche +TIME_ELEMENT_WEEKS = Wochen +TIME_ELEMENT_PERMANENTLY = permanent +TIME_ELEMENT_AND = und + +[sr] +TIME_ELEMENT_SECOND = sekunda +TIME_ELEMENT_SECONDS = sekundi +TIME_ELEMENT_MINUTE = minut +TIME_ELEMENT_MINUTES = minuta +TIME_ELEMENT_HOUR = sat +TIME_ELEMENT_HOURS = sati +TIME_ELEMENT_DAY = dan +TIME_ELEMENT_DAYS = dani +TIME_ELEMENT_WEEK = nedelja +TIME_ELEMENT_WEEKS = nedelje +TIME_ELEMENT_PERMANENTLY = za stalno +TIME_ELEMENT_AND = i + +[sv] +TIME_ELEMENT_SECOND = sekund +TIME_ELEMENT_SECONDS = sekunder +TIME_ELEMENT_MINUTE = minut +TIME_ELEMENT_MINUTES = minuter +TIME_ELEMENT_HOUR = timme +TIME_ELEMENT_HOURS = timmar +TIME_ELEMENT_DAY = dag +TIME_ELEMENT_DAYS = dagar +TIME_ELEMENT_WEEK = vecka +TIME_ELEMENT_WEEKS = veckor +TIME_ELEMENT_PERMANENTLY = permanent +TIME_ELEMENT_AND = och + +[fr] +TIME_ELEMENT_SECOND = seconde +TIME_ELEMENT_SECONDS = secondes +TIME_ELEMENT_MINUTE = minute +TIME_ELEMENT_MINUTES = minutes +TIME_ELEMENT_HOUR = heure +TIME_ELEMENT_HOURS = heures +TIME_ELEMENT_DAY = jour +TIME_ELEMENT_DAYS = jours +TIME_ELEMENT_WEEK = semaine +TIME_ELEMENT_WEEKS = semaines +TIME_ELEMENT_PERMANENTLY = a vie (permanent) +TIME_ELEMENT_AND = et + +[es] +TIME_ELEMENT_SECOND = segundo +TIME_ELEMENT_SECONDS = segundos +TIME_ELEMENT_MINUTE = minuto +TIME_ELEMENT_MINUTES = minutos +TIME_ELEMENT_HOUR = hora +TIME_ELEMENT_HOURS = horas +TIME_ELEMENT_DAY = dia +TIME_ELEMENT_DAYS = dias +TIME_ELEMENT_WEEK = semana +TIME_ELEMENT_WEEKS = semanas +TIME_ELEMENT_PERMANENTLY = permanentemente +TIME_ELEMENT_AND = y + +[bp] +TIME_ELEMENT_SECOND = segundo +TIME_ELEMENT_SECONDS = segundos +TIME_ELEMENT_MINUTE = minuto +TIME_ELEMENT_MINUTES = minutos +TIME_ELEMENT_HOUR = hora +TIME_ELEMENT_HOURS = horas +TIME_ELEMENT_DAY = dia +TIME_ELEMENT_DAYS = dias +TIME_ELEMENT_WEEK = semana +TIME_ELEMENT_WEEKS = semanas +TIME_ELEMENT_PERMANENTLY = permanentemente +TIME_ELEMENT_AND = e + +[nl] +TIME_ELEMENT_SECOND = seconde +TIME_ELEMENT_SECONDS = seconden +TIME_ELEMENT_MINUTE = minuut +TIME_ELEMENT_MINUTES = minuten +TIME_ELEMENT_HOUR = uur +TIME_ELEMENT_HOURS = uur +TIME_ELEMENT_DAY = dag +TIME_ELEMENT_DAYS = dagen +TIME_ELEMENT_WEEK = week +TIME_ELEMENT_WEEKS = weken +TIME_ELEMENT_PERMANENTLY = permanent +TIME_ELEMENT_AND = en + +[pl] +TIME_ELEMENT_SECOND = sekunda +TIME_ELEMENT_SECONDS = sekund +TIME_ELEMENT_MINUTE = minuta +TIME_ELEMENT_MINUTES = minut +TIME_ELEMENT_HOUR = godzina +TIME_ELEMENT_HOURS = godzin +TIME_ELEMENT_DAY = dzien +TIME_ELEMENT_DAYS = dni +TIME_ELEMENT_WEEK = tydzien +TIME_ELEMENT_WEEKS = tygodni +TIME_ELEMENT_PERMANENTLY = permanentnie +TIME_ELEMENT_AND = i + +[da] +TIME_ELEMENT_SECOND = sekund +TIME_ELEMENT_SECONDS = sekunder +TIME_ELEMENT_MINUTE = minut +TIME_ELEMENT_MINUTES = minutter +TIME_ELEMENT_HOUR = time +TIME_ELEMENT_HOURS = timer +TIME_ELEMENT_DAY = dag +TIME_ELEMENT_DAYS = dage +TIME_ELEMENT_WEEK = uge +TIME_ELEMENT_WEEKS = uger +TIME_ELEMENT_PERMANENTLY = permanent +TIME_ELEMENT_AND = og + +[ls] +TIME_ELEMENT_SECOND = s3c0nd +TIME_ELEMENT_SECONDS = s3c0ndz +TIME_ELEMENT_MINUTE = m!nut3 +TIME_ELEMENT_MINUTES = m!nut3z +TIME_ELEMENT_HOUR = h0u|2 +TIME_ELEMENT_HOURS = h0u|2z +TIME_ELEMENT_DAY = d4y +TIME_ELEMENT_DAYS = d4yz +TIME_ELEMENT_WEEK = w33|< +TIME_ELEMENT_WEEKS = w33|<z +TIME_ELEMENT_PERMANENTLY = p3|2m4n3ntly +TIME_ELEMENT_AND = 4nd + +[bg] +TIME_ELEMENT_SECOND = secunda +TIME_ELEMENT_SECONDS = secundi +TIME_ELEMENT_MINUTE = minuta +TIME_ELEMENT_MINUTES = minuti +TIME_ELEMENT_HOUR = 4as +TIME_ELEMENT_HOURS = 4asove +TIME_ELEMENT_DAY = den +TIME_ELEMENT_DAYS = dni +TIME_ELEMENT_WEEK = sedmica +TIME_ELEMENT_WEEKS = sedmici +TIME_ELEMENT_PERMANENTLY = do jivot +TIME_ELEMENT_AND = i + +[ro] +TIME_ELEMENT_SECOND = secunda +TIME_ELEMENT_SECONDS = secunde +TIME_ELEMENT_MINUTE = minut +TIME_ELEMENT_MINUTES = minute +TIME_ELEMENT_HOUR = ora +TIME_ELEMENT_HOURS = ore +TIME_ELEMENT_DAY = zi +TIME_ELEMENT_DAYS = zile +TIME_ELEMENT_WEEK = saptamana +TIME_ELEMENT_WEEKS = saptamani +TIME_ELEMENT_PERMANENTLY = permanent +TIME_ELEMENT_AND = si + +[hu] +TIME_ELEMENT_SECOND = masodperc +TIME_ELEMENT_SECONDS = masodperc +TIME_ELEMENT_MINUTE = perc +TIME_ELEMENT_MINUTES = perc +TIME_ELEMENT_HOUR = ora +TIME_ELEMENT_HOURS = ora +TIME_ELEMENT_DAY = nap +TIME_ELEMENT_DAYS = nap +TIME_ELEMENT_WEEK = het +TIME_ELEMENT_WEEKS = het +TIME_ELEMENT_PERMANENTLY = vegleges +TIME_ELEMENT_AND = es + +[lt] +TIME_ELEMENT_SECOND = sekunde +TIME_ELEMENT_SECONDS = sekundes +TIME_ELEMENT_MINUTE = minute +TIME_ELEMENT_MINUTES = minutes +TIME_ELEMENT_HOUR = valanda +TIME_ELEMENT_HOURS = valandos +TIME_ELEMENT_DAY = diena +TIME_ELEMENT_DAYS = dienos +TIME_ELEMENT_WEEK = savaite +TIME_ELEMENT_WEEKS = savaites +TIME_ELEMENT_PERMANENTLY = visam laikui +TIME_ELEMENT_AND = ir + +[sk] +TIME_ELEMENT_SECOND = sekunda +TIME_ELEMENT_SECONDS = sekund +TIME_ELEMENT_MINUTE = minuta +TIME_ELEMENT_MINUTES = minut +TIME_ELEMENT_HOUR = hodina +TIME_ELEMENT_HOURS = hodin +TIME_ELEMENT_DAY = den +TIME_ELEMENT_DAYS = dni +TIME_ELEMENT_WEEK = tyzden +TIME_ELEMENT_WEEKS = tyzdnov +TIME_ELEMENT_PERMANENTLY = permantne +TIME_ELEMENT_AND = a + +[mk] +TIME_ELEMENT_SECOND = sekunda +TIME_ELEMENT_SECONDS = sekundi +TIME_ELEMENT_MINUTE = minuta +TIME_ELEMENT_MINUTES = minuti +TIME_ELEMENT_HOUR = cas +TIME_ELEMENT_HOURS = casovi +TIME_ELEMENT_DAY = den +TIME_ELEMENT_DAYS = denovi +TIME_ELEMENT_WEEK = nedela +TIME_ELEMENT_WEEKS = nedeli +TIME_ELEMENT_PERMANENTLY = zasekogas +TIME_ELEMENT_AND = i diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/timeleft.txt b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/timeleft.txt new file mode 100644 index 0000000..a2beed9 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/data/lang/timeleft.txt @@ -0,0 +1,179 @@ +[en] +THE_TIME = The time +TIME_LEFT = Time Left +NO_T_LIMIT = No Time Limit +MINUTE = minute +MINUTES = minutes +SECOND = second +SECONDS = seconds + +[de] +THE_TIME = Es ist +TIME_LEFT = Zeit uebrig +NO_T_LIMIT = Kein Zeitlimit +MINUTE = Minute +MINUTES = Minuten +SECOND = Sekunde +SECONDS = Sekunden + +[sr] +THE_TIME = Vreme +TIME_LEFT = Preostalo Vreme +NO_T_LIMIT = Nema Ogranicenja Vremena +MINUTE = minut +MINUTES = minute +SECOND = sekund +SECONDS = sekundi + +[tr] +THE_TIME = Saat +TIME_LEFT = Kalan zaman +NO_T_LIMIT = Suresiz zaman +MINUTE = dakika +MINUTES = dakikalar +SECOND = saniye +SECONDS = saniyeler + +[fr] +THE_TIME = Il est +TIME_LEFT = Temps Restant +NO_T_LIMIT = Aucun Temps Limite +MINUTE = minute +MINUTES = minutes +SECOND = seconde +SECONDS = secondes + +[sv] +THE_TIME = Tid +TIME_LEFT = Tid kvar +NO_T_LIMIT = Ingen tidsbegr'a'nsning +MINUTE = minut +MINUTES = minuter +SECOND = sekund +SECONDS = sekunder + +[da] +THE_TIME = Tiden +TIME_LEFT = Tid tilbage +NO_T_LIMIT = Ingen tidsbegraensning +MINUTE = minut +MINUTES = minutter +SECOND = sekund +SECONDs = sekunder + +[pl] +THE_TIME = Czas +TIME_LEFT = Pozostalo czasu +NO_T_LIMIT = Bez limitu czasu +MINUTE = minuta +MINUTES = minut +SECOND = sekunda +SECONDS = sekund + +[nl] +THE_TIME = Het is nu +TIME_LEFT = Restende Tijd +NO_T_LIMIT = Geen Tijdlimiet +MINUTE = minuut +MINUTES = minuten +SECOND = seconde +SECONDS = seconden + +[es] +THE_TIME = Hora y fecha +TIME_LEFT = Tiempo Restante +NO_T_LIMIT = Tiempo Ilimitado +MINUTE = minuto +MINUTES = minutos +SECOND = segundo +SECONDS = segundos + +[bp] +THE_TIME = Hora certa +TIME_LEFT = Tempo Restante +NO_T_LIMIT = Sem Tempo Limite +MINUTE = minuto +MINUTES = minutos +SECOND = segundo +SECONDS = segundos + +[cz] +THE_TIME = Cas +TIME_LEFT = Zbyva jeste +NO_T_LIMIT = Neni casovy limit +MINUTE = minuta +MINUTES = minut +SECOND = sekunda +SECONDS = second + +[fi] +THE_TIME = Aika +TIME_LEFT = Aikaa jaljella +NO_T_LIMIT = Ei aikarajaa +MINUTE = minuutti +MINUTES = minuuttia +SECOND = sekunti +SECONDS = sekuntia + +[ls] +THE_TIME = T3h t!m3 +TIME_LEFT = T!m3 L3ft +NO_T_LIMIT = N0 T!m3 L!m!t +MINUTE = m!nut3 +MINUTES = m!nut3z +SECOND = s3c0nd +SECONDS = s3c0ndz + +[bg] +THE_TIME = 4asa +TIME_LEFT = Ostanalo Vreme +NO_T_LIMIT = Nqma limit na vremeto +MINUTE = minuta +MINUTES = minuti +SECOND = secunda +SECONDS = secundi + +[ro] +THE_TIME = Ora +TIME_LEFT = Timp Ramas +NO_T_LIMIT = Nici o Limita a Timpului +MINUTE = minut ramas +MINUTES = minute ramase +SECOND = secunda +SECONDS = secunde + +[hu] +THE_TIME = Az ido +TIME_LEFT = Hatralevo ido +NO_T_LIMIT = NIncs idohatar +MINUTE = perc +MINUTES = perc +SECOND = masodperc +SECONDS = masodperc + +[lt] +THE_TIME = Laikas +TIME_LEFT = Liko laiko +NO_T_LIMIT = Nera laiko limito +MINUTE = minute +MINUTES = minutes +SECOND = sekunde +SECONDS = sekundes + +[sk] +THE_TIME = Cas +TIME_LEFT = Ostava este +NO_T_LIMIT = Neni casovy limit +MINUTE = minuta +MINUTES = minut +SECOND = sekunda +SECONDS = sekund + +[mk] +THE_TIME = Vreme +TIME_LEFT = Preostanato Vreme +NO_T_LIMIT = Nema Ogranicuvanje Na Vremeto +MINUTE = minuta +MINUTES = minuti +SECOND = sekunda +SECONDS = sekundi diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/dlls/amxmodx_mm_i386.so b/config/funmaps/serverfiles/cstrike/addons/amxmodx/dlls/amxmodx_mm_i386.so new file mode 100644 index 0000000..b42c49c Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/dlls/amxmodx_mm_i386.so differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/cstrike_amxx_i386.so b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/cstrike_amxx_i386.so new file mode 100644 index 0000000..80f0d54 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/cstrike_amxx_i386.so differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/csx_amxx_i386.so b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/csx_amxx_i386.so new file mode 100644 index 0000000..0b88ef9 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/csx_amxx_i386.so differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/engine_amxx_i386.so b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/engine_amxx_i386.so new file mode 100644 index 0000000..a9246f2 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/engine_amxx_i386.so differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/fakemeta_amxx_i386.so b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/fakemeta_amxx_i386.so new file mode 100644 index 0000000..2639f35 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/fakemeta_amxx_i386.so differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/fun_amxx_i386.so b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/fun_amxx_i386.so new file mode 100644 index 0000000..75b713b Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/fun_amxx_i386.so differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/geoip_amxx_i386.so b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/geoip_amxx_i386.so new file mode 100644 index 0000000..c11c6ab Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/geoip_amxx_i386.so differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/hamsandwich_amxx_i386.so b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/hamsandwich_amxx_i386.so new file mode 100644 index 0000000..a849844 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/hamsandwich_amxx_i386.so differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/mysql_amxx_i386.so b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/mysql_amxx_i386.so new file mode 100644 index 0000000..f48d7fa Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/mysql_amxx_i386.so differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/nvault_amxx_i386.so b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/nvault_amxx_i386.so new file mode 100644 index 0000000..a51f477 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/nvault_amxx_i386.so differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/regex_amxx_i386.so b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/regex_amxx_i386.so new file mode 100644 index 0000000..3b26d95 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/regex_amxx_i386.so differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/sockets_amxx_i386.so b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/sockets_amxx_i386.so new file mode 100644 index 0000000..d973138 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/sockets_amxx_i386.so differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/sqlite_amxx_i386.so b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/sqlite_amxx_i386.so new file mode 100644 index 0000000..8218ba7 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/modules/sqlite_amxx_i386.so differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/QuakeSounds.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/QuakeSounds.amxx new file mode 100644 index 0000000..bcb06c8 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/QuakeSounds.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/abd.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/abd.amxx new file mode 100644 index 0000000..3172276 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/abd.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/admin.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/admin.amxx new file mode 100644 index 0000000..e4fd1b6 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/admin.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/admin_sql.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/admin_sql.amxx new file mode 100644 index 0000000..7808c31 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/admin_sql.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/adminchat.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/adminchat.amxx new file mode 100644 index 0000000..d330669 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/adminchat.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/admincmd.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/admincmd.amxx new file mode 100644 index 0000000..6bd2801 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/admincmd.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/adminhelp.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/adminhelp.amxx new file mode 100644 index 0000000..1bf65c4 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/adminhelp.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/adminslots.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/adminslots.amxx new file mode 100644 index 0000000..a9b4ea7 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/adminslots.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/adminvote.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/adminvote.amxx new file mode 100644 index 0000000..6a1af20 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/adminvote.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/amxmod_compat.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/amxmod_compat.amxx new file mode 100644 index 0000000..46cfd89 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/amxmod_compat.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/antiflood.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/antiflood.amxx new file mode 100644 index 0000000..adbc1ee Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/antiflood.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/bullet_damage.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/bullet_damage.amxx new file mode 100644 index 0000000..da4adb7 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/bullet_damage.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/cmdmenu.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/cmdmenu.amxx new file mode 100644 index 0000000..a267315 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/cmdmenu.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/imessage.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/imessage.amxx new file mode 100644 index 0000000..7e9efb1 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/imessage.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/mapchooser.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/mapchooser.amxx new file mode 100644 index 0000000..e4c3fdc Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/mapchooser.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/mapsmenu.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/mapsmenu.amxx new file mode 100644 index 0000000..5aafe62 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/mapsmenu.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/menufront.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/menufront.amxx new file mode 100644 index 0000000..90e3617 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/menufront.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/miscstats.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/miscstats.amxx new file mode 100644 index 0000000..40d67c2 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/miscstats.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/multilingual.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/multilingual.amxx new file mode 100644 index 0000000..b9cdb20 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/multilingual.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/nextmap.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/nextmap.amxx new file mode 100644 index 0000000..e33ab47 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/nextmap.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/pausecfg.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/pausecfg.amxx new file mode 100644 index 0000000..d0040a5 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/pausecfg.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/plmenu.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/plmenu.amxx new file mode 100644 index 0000000..0482f12 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/plmenu.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/pluginmenu.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/pluginmenu.amxx new file mode 100644 index 0000000..2bf7d60 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/pluginmenu.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/restmenu.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/restmenu.amxx new file mode 100644 index 0000000..98993a6 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/restmenu.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/scrollmsg.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/scrollmsg.amxx new file mode 100644 index 0000000..e6b9bda Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/scrollmsg.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/stats_logging.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/stats_logging.amxx new file mode 100644 index 0000000..fe62f0d Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/stats_logging.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/statscfg.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/statscfg.amxx new file mode 100644 index 0000000..e436a3a Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/statscfg.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/statsx.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/statsx.amxx new file mode 100644 index 0000000..e065cec Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/statsx.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/telemenu.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/telemenu.amxx new file mode 100644 index 0000000..dbe677a Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/telemenu.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/timeleft.amxx b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/timeleft.amxx new file mode 100644 index 0000000..56af5c4 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/plugins/timeleft.amxx differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/admin.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/admin.sma new file mode 100644 index 0000000..112dd44 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/admin.sma @@ -0,0 +1,866 @@ +/* AMX Mod X script. +* Admin Base Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +// Uncomment for SQL version +// #define USING_SQL + +#include <amxmodx> +#include <amxmisc> +#if defined USING_SQL +#include <sqlx> +#endif + +//new Vector:AdminList; + +new AdminCount; + +new PLUGINNAME[] = "AMX Mod X" + +#define ADMIN_LOOKUP (1<<0) +#define ADMIN_NORMAL (1<<1) +#define ADMIN_STEAM (1<<2) +#define ADMIN_IPADDR (1<<3) +#define ADMIN_NAME (1<<4) + +new g_cmdLoopback[16] +new bool:g_CaseSensitiveName[33]; + +// pcvars +new amx_mode; +new amx_password_field; +new amx_default_access; + +public plugin_init() +{ +#if defined USING_SQL + register_plugin("Admin Base (SQL)", AMXX_VERSION_STR, "AMXX Dev Team") +#else + register_plugin("Admin Base", AMXX_VERSION_STR, "AMXX Dev Team") +#endif + register_dictionary("admin.txt") + register_dictionary("common.txt") + amx_mode=register_cvar("amx_mode", "1") + amx_password_field=register_cvar("amx_password_field", "_pw") + amx_default_access=register_cvar("amx_default_access", "") + + register_cvar("amx_vote_ratio", "0.02") + register_cvar("amx_vote_time", "10") + register_cvar("amx_vote_answers", "1") + register_cvar("amx_vote_delay", "60") + register_cvar("amx_last_voting", "0") + register_cvar("amx_show_activity", "2") + register_cvar("amx_votekick_ratio", "0.40") + register_cvar("amx_voteban_ratio", "0.40") + register_cvar("amx_votemap_ratio", "0.40") + + set_cvar_float("amx_last_voting", 0.0) + +#if defined USING_SQL + register_srvcmd("amx_sqladmins", "adminSql") + register_cvar("amx_sql_table", "admins") +#endif + register_cvar("amx_sql_host", "127.0.0.1") + register_cvar("amx_sql_user", "root") + register_cvar("amx_sql_pass", "") + register_cvar("amx_sql_db", "amx") + register_cvar("amx_sql_type", "mysql") + + register_concmd("amx_reloadadmins", "cmdReload", ADMIN_CFG) + register_concmd("amx_addadmin", "addadminfn", ADMIN_RCON, "<playername|auth> <accessflags> [password] [authtype] - add specified player as an admin to users.ini") + + format(g_cmdLoopback, 15, "amxauth%c%c%c%c", random_num('A', 'Z'), random_num('A', 'Z'), random_num('A', 'Z'), random_num('A', 'Z')) + + register_clcmd(g_cmdLoopback, "ackSignal") + + remove_user_flags(0, read_flags("z")) // Remove 'user' flag from server rights + + new configsDir[64] + get_configsdir(configsDir, 63) + + server_cmd("exec %s/amxx.cfg", configsDir) // Execute main configuration file + server_cmd("exec %s/sql.cfg", configsDir) + + // Create a vector of 5 cells to store the info. + //AdminList=vector_create(5); + + +#if defined USING_SQL + server_cmd("amx_sqladmins") +#else + format(configsDir, 63, "%s/users.ini", configsDir) + loadSettings(configsDir) // Load admins accounts +#endif +} +public client_connect(id) +{ + g_CaseSensitiveName[id] = false; +} +public addadminfn(id, level, cid) +{ + if (!cmd_access(id, level, cid, 3)) + return PLUGIN_HANDLED + + new idtype = ADMIN_STEAM | ADMIN_LOOKUP + + if (read_argc() >= 5) + { + new t_arg[16] + read_argv(4, t_arg, 15) + + if (equali(t_arg, "steam") || equali(t_arg, "steamid") || equali(t_arg, "auth")) + { + idtype = ADMIN_STEAM + } + else if (equali(t_arg, "ip")) + { + idtype = ADMIN_IPADDR + } + else if (equali(t_arg, "name") || equali(t_arg, "nick")) + { + idtype = ADMIN_NAME + + if (equali(t_arg, "name")) + idtype |= ADMIN_LOOKUP + } else { + console_print(id, "[%s] Unknown id type ^"%s^", use one of: steamid, ip, name", PLUGINNAME, t_arg) + return PLUGIN_HANDLED + } + } + + new arg[33] + read_argv(1, arg, 32) + new player = -1 + + if (idtype & ADMIN_STEAM) + { + if (containi(arg, "STEAM_0:") == -1) + { + idtype |= ADMIN_LOOKUP + player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF | CMDTARGET_NO_BOTS) + } else { + new _steamid[44] + static _players[32], _num, _pv + get_players(_players, _num) + for (new _i=0; _i<_num; _i++) + { + _pv = _players[_i] + get_user_authid(_pv, _steamid, sizeof(_steamid)-1) + if (!_steamid[0]) + continue + if (equal(_steamid, arg)) + { + player = _pv + break + } + } + if (player < 1) + { + idtype &= ~ADMIN_LOOKUP + } + } + } + else if (idtype & ADMIN_NAME) + { + player = cmd_target(id, arg, CMDTARGET_ALLOW_SELF | CMDTARGET_NO_BOTS) + + if (player) + idtype |= ADMIN_LOOKUP + else + idtype &= ~ADMIN_LOOKUP + } + else if (idtype & ADMIN_IPADDR) + { + new len = strlen(arg) + new dots, chars + + for (new i = 0; i < len; i++) + { + if (arg[i] == '.') + { + if (!chars || chars > 3) + break + + if (++dots > 3) + break + + chars = 0 + } else { + chars++ + } + + if (dots != 3 || !chars || chars > 3) + { + idtype |= ADMIN_LOOKUP + player = find_player("dh", arg) + } + } + } + + if (idtype & ADMIN_LOOKUP && !player) + { + console_print(id, "%L", id, "CL_NOT_FOUND") + return PLUGIN_HANDLED + } + + new flags[64] + read_argv(2, flags, 63) + + new password[64] + if (read_argc() >= 4) + read_argv(3, password, 63) + + new auth[33] + new Comment[33]; // name of player to pass to comment field + if (idtype & ADMIN_LOOKUP) + { + get_user_name(player, Comment, sizeof(Comment)-1) + if (idtype & ADMIN_STEAM) + { + get_user_authid(player, auth, 32) + } + else if (idtype & ADMIN_IPADDR) + { + get_user_ip(player, auth, 32) + } + else if (idtype & ADMIN_NAME) + { + get_user_name(player, auth, 32) + } + } else { + copy(auth, 32, arg) + } + + new type[16], len + + if (idtype & ADMIN_STEAM) + len += format(type[len], 15-len, "c") + else if (idtype & ADMIN_IPADDR) + len += format(type[len], 15-len, "d") + + if (strlen(password) > 0) + len += format(type[len], 15-len, "a") + else + len += format(type[len], 15-len, "e") + + AddAdmin(id, auth, flags, password, type, Comment) + cmdReload(id, ADMIN_CFG, 0) + + if (player > 0) + { + new name[32] + get_user_info(player, "name", name, 31) + accessUser(player, name) + } + + return PLUGIN_HANDLED +} + +AddAdmin(id, auth[], accessflags[], password[], flags[], comment[]="") +{ +#if defined USING_SQL + new error[128], errno + + new Handle:info = SQL_MakeStdTuple() + new Handle:sql = SQL_Connect(info, errno, error, 127) + + if (sql == Empty_Handle) + { + server_print("[AMXX] %L", LANG_SERVER, "SQL_CANT_CON", error) + //backup to users.ini +#endif + // Make sure that the users.ini file exists. + new configsDir[64] + get_configsdir(configsDir, 63) + format(configsDir, 63, "%s/users.ini", configsDir) + + if (!file_exists(configsDir)) + { + console_print(id, "[%s] File ^"%s^" doesn't exist.", PLUGINNAME, configsDir) + return + } + + // Make sure steamid isn't already in file. + new line = 0, textline[256], len + const SIZE = 63 + new line_steamid[SIZE + 1], line_password[SIZE + 1], line_accessflags[SIZE + 1], line_flags[SIZE + 1], parsedParams + + // <name|ip|steamid> <password> <access flags> <account flags> + while ((line = read_file(configsDir, line, textline, 255, len))) + { + if (len == 0 || equal(textline, ";", 1)) + continue // comment line + + parsedParams = parse(textline, line_steamid, SIZE, line_password, SIZE, line_accessflags, SIZE, line_flags, SIZE) + + if (parsedParams != 4) + continue // Send warning/error? + + if (containi(line_flags, flags) != -1 && equal(line_steamid, auth)) + { + console_print(id, "[%s] %s already exists!", PLUGINNAME, auth) + return + } + } + + // If we came here, steamid doesn't exist in users.ini. Add it. + new linetoadd[512] + + if (comment[0]==0) + { + formatex(linetoadd, 511, "^r^n^"%s^" ^"%s^" ^"%s^" ^"%s^"", auth, password, accessflags, flags) + } + else + { + formatex(linetoadd, 511, "^r^n^"%s^" ^"%s^" ^"%s^" ^"%s^" ; %s", auth, password, accessflags, flags, comment) + } + console_print(id, "Adding:^n%s", linetoadd) + + if (!write_file(configsDir, linetoadd)) + console_print(id, "[%s] Failed writing to %s!", PLUGINNAME, configsDir) +#if defined USING_SQL + } + + new table[32] + + get_cvar_string("amx_sql_table", table, 31) + + new Handle:query = SQL_PrepareQuery(sql, "SELECT * FROM `%s` WHERE (`auth` = '%s')", table, auth) + + if (!SQL_Execute(query)) + { + SQL_QueryError(query, error, 127) + server_print("[AMXX] %L", LANG_SERVER, "SQL_CANT_LOAD_ADMINS", error) + console_print(id, "[AMXX] %L", LANG_SERVER, "SQL_CANT_LOAD_ADMINS", error) + } else if (SQL_NumResults(query)) { + console_print(id, "[%s] %s already exists!", PLUGINNAME, auth) + } else { + console_print(id, "Adding to database:^n^"%s^" ^"%s^" ^"%s^" ^"%s^"", auth, password, accessflags, flags) + + SQL_QueryAndIgnore(sql, "REPLACE INTO `%s` (`auth`, `password`, `access`, `flags`) VALUES ('%s', '%s', '%s', '%s')", table, auth, password, accessflags, flags) + } + + SQL_FreeHandle(query) + SQL_FreeHandle(sql) + SQL_FreeHandle(info) +#endif + +} +public plugin_cfg() +{ + set_task(6.1, "delayed_load") +} + +public delayed_load() +{ + new configFile[128], curMap[64], configDir[128] + + get_configsdir(configDir, sizeof(configDir)-1) + get_mapname(curMap, sizeof(curMap)-1) + + new i=0; + + while (curMap[i] != '_' && curMap[i++] != '^0') {/*do nothing*/} + + if (curMap[i]=='_') + { + // this map has a prefix + curMap[i]='^0'; + formatex(configFile, sizeof(configFile)-1, "%s/maps/prefix_%s.cfg", configDir, curMap); + + if (file_exists(configFile)) + { + server_cmd("exec %s", configFile); + } + } + + get_mapname(curMap, sizeof(curMap)-1) + + + formatex(configFile, sizeof(configFile)-1, "%s/maps/%s.cfg", configDir, curMap) + + if (file_exists(configFile)) + { + server_cmd("exec %s", configFile) + } + +} + +loadSettings(szFilename[]) +{ + new File=fopen(szFilename,"r"); + + if (File) + { + new Text[512]; + new Flags[32]; + new Access[32] + new AuthData[44]; + new Password[32]; + + while (!feof(File)) + { + fgets(File,Text,sizeof(Text)-1); + + trim(Text); + + // comment + if (Text[0]==';') + { + continue; + } + + Flags[0]=0; + Access[0]=0; + AuthData[0]=0; + Password[0]=0; + + // not enough parameters + if (parse(Text,AuthData,sizeof(AuthData)-1,Password,sizeof(Password)-1,Access,sizeof(Access)-1,Flags,sizeof(Flags)-1) < 2) + { + continue; + } + + admins_push(AuthData,Password,read_flags(Access),read_flags(Flags)); + + AdminCount++; + } + + fclose(File); + } + + if (AdminCount == 1) + { + server_print("[AMXX] %L", LANG_SERVER, "LOADED_ADMIN"); + } + else + { + server_print("[AMXX] %L", LANG_SERVER, "LOADED_ADMINS", AdminCount); + } + + return 1; +} + +#if defined USING_SQL +public adminSql() +{ + new table[32], error[128], type[12], errno + + new Handle:info = SQL_MakeStdTuple() + new Handle:sql = SQL_Connect(info, errno, error, 127) + + get_cvar_string("amx_sql_table", table, 31) + + SQL_GetAffinity(type, 11) + + if (sql == Empty_Handle) + { + server_print("[AMXX] %L", LANG_SERVER, "SQL_CANT_CON", error) + + //backup to users.ini + new configsDir[64] + + get_configsdir(configsDir, 63) + format(configsDir, 63, "%s/users.ini", configsDir) + loadSettings(configsDir) // Load admins accounts + + return PLUGIN_HANDLED + } + + new Handle:query + + if (equali(type, "sqlite")) + { + if (!sqlite_TableExists(sql, table)) + { + SQL_QueryAndIgnore(sql, "CREATE TABLE %s ( auth TEXT NOT NULL DEFAULT '', password TEXT NOT NULL DEFAULT '', access TEXT NOT NULL DEFAULT '', flags TEXT NOT NULL DEFAULT '' )", table) + } + + query = SQL_PrepareQuery(sql, "SELECT auth, password, access, flags FROM %s", table) + } else { + SQL_QueryAndIgnore(sql, "CREATE TABLE IF NOT EXISTS `%s` ( `auth` VARCHAR( 32 ) NOT NULL, `password` VARCHAR( 32 ) NOT NULL, `access` VARCHAR( 32 ) NOT NULL, `flags` VARCHAR( 32 ) NOT NULL ) COMMENT = 'AMX Mod X Admins'", table) + query = SQL_PrepareQuery(sql,"SELECT `auth`,`password`,`access`,`flags` FROM `%s`", table) + } + + if (!SQL_Execute(query)) + { + SQL_QueryError(query, error, 127) + server_print("[AMXX] %L", LANG_SERVER, "SQL_CANT_LOAD_ADMINS", error) + } else if (!SQL_NumResults(query)) { + server_print("[AMXX] %L", LANG_SERVER, "NO_ADMINS") + } else { + + AdminCount = 0 + + /** do this incase people change the query order and forget to modify below */ + new qcolAuth = SQL_FieldNameToNum(query, "auth") + new qcolPass = SQL_FieldNameToNum(query, "password") + new qcolAccess = SQL_FieldNameToNum(query, "access") + new qcolFlags = SQL_FieldNameToNum(query, "flags") + + new AuthData[44]; + new Password[44]; + new Access[32]; + new Flags[32]; + + while (SQL_MoreResults(query)) + { + SQL_ReadResult(query, qcolAuth, AuthData, sizeof(AuthData)-1); + SQL_ReadResult(query, qcolPass, Password, sizeof(Password)-1); + SQL_ReadResult(query, qcolAccess, Access, sizeof(Access)-1); + SQL_ReadResult(query, qcolFlags, Flags, sizeof(Flags)-1); + + admins_push(AuthData,Password,read_flags(Access),read_flags(Flags)); + + ++AdminCount; + SQL_NextRow(query) + } + + if (AdminCount == 1) + { + server_print("[AMXX] %L", LANG_SERVER, "SQL_LOADED_ADMIN") + } + else + { + server_print("[AMXX] %L", LANG_SERVER, "SQL_LOADED_ADMINS", AdminCount) + } + + SQL_FreeHandle(query) + SQL_FreeHandle(sql) + SQL_FreeHandle(info) + } + + return PLUGIN_HANDLED +} +#endif + +public cmdReload(id, level, cid) +{ + if (!cmd_access(id, level, cid, 1)) + return PLUGIN_HANDLED + + //strip original flags (patch submitted by mrhunt) + remove_user_flags(0, read_flags("z")) + + admins_flush(); + +#if !defined USING_SQL + new filename[128] + + get_configsdir(filename, 127) + format(filename, 63, "%s/users.ini", filename) + + AdminCount = 0; + loadSettings(filename); // Re-Load admins accounts + + if (id != 0) + { + if (AdminCount == 1) + { + console_print(id, "[AMXX] %L", LANG_SERVER, "LOADED_ADMIN"); + } + else + { + console_print(id, "[AMXX] %L", LANG_SERVER, "LOADED_ADMINS", AdminCount); + } + } +#else + AdminCount = 0 + adminSql() + + if (id != 0) + { + if (AdminCount == 1) + console_print(id, "[AMXX] %L", LANG_SERVER, "SQL_LOADED_ADMIN") + else + console_print(id, "[AMXX] %L", LANG_SERVER, "SQL_LOADED_ADMINS", AdminCount) + } +#endif + + new players[32], num, pv + new name[32] + get_players(players, num) + for (new i=0; i<num; i++) + { + pv = players[i] + get_user_name(pv, name, 31) + accessUser(pv, name) + } + + return PLUGIN_HANDLED +} + +getAccess(id, name[], authid[], ip[], password[]) +{ + new index = -1 + new result = 0 + + static Count; + static Flags; + static Access; + static AuthData[44]; + static Password[32]; + + g_CaseSensitiveName[id] = false; + + Count=admins_num(); + for (new i = 0; i < Count; ++i) + { + Flags=admins_lookup(i,AdminProp_Flags); + admins_lookup(i,AdminProp_Auth,AuthData,sizeof(AuthData)-1); + + if (Flags & FLAG_AUTHID) + { + if (equal(authid, AuthData)) + { + index = i + break + } + } + else if (Flags & FLAG_IP) + { + new c = strlen(AuthData) + + if (AuthData[c - 1] == '.') /* check if this is not a xxx.xxx. format */ + { + if (equal(AuthData, ip, c)) + { + index = i + break + } + } /* in other case an IP must just match */ + else if (equal(ip, AuthData)) + { + index = i + break + } + } + else + { + if (Flags & FLAG_CASE_SENSITIVE) + { + if (Flags & FLAG_TAG) + { + if (contain(name, AuthData) != -1) + { + index = i + g_CaseSensitiveName[id] = true + break + } + } + else if (equal(name, AuthData)) + { + index = i + g_CaseSensitiveName[id] = true + break + } + } + else + { + if (Flags & FLAG_TAG) + { + if (containi(name, AuthData) != -1) + { + index = i + break + } + } + else if (equali(name, AuthData)) + { + index = i + break + } + } + } + } + + if (index != -1) + { + Access=admins_lookup(index,AdminProp_Access); + + if (Flags & FLAG_NOPASS) + { + result |= 8 + new sflags[32] + + get_flags(Access, sflags, 31) + set_user_flags(id, Access) + + log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^")", name, get_user_userid(id), authid, AuthData, sflags, ip) + } + else + { + + admins_lookup(index,AdminProp_Password,Password,sizeof(Password)-1); + + if (equal(password, Password)) + { + result |= 12 + set_user_flags(id, Access) + + new sflags[32] + get_flags(Access, sflags, 31) + + log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^")", name, get_user_userid(id), authid, AuthData, sflags, ip) + } + else + { + result |= 1 + + if (Flags & FLAG_KICK) + { + result |= 2 + log_amx("Login: ^"%s<%d><%s><>^" kicked due to invalid password (account ^"%s^") (address ^"%s^")", name, get_user_userid(id), authid, AuthData, ip) + } + } + } + } + else if (get_pcvar_float(amx_mode) == 2.0) + { + result |= 2 + } + else + { + new defaccess[32] + + get_pcvar_string(amx_default_access, defaccess, 31) + + if (!strlen(defaccess)) + { + copy(defaccess, 32, "z") + } + + new idefaccess = read_flags(defaccess) + + if (idefaccess) + { + result |= 8 + set_user_flags(id, idefaccess) + } + } + + return result +} + +accessUser(id, name[] = "") +{ + remove_user_flags(id) + + new userip[32], userauthid[32], password[32], passfield[32], username[32] + + get_user_ip(id, userip, 31, 1) + get_user_authid(id, userauthid, 31) + + if (name[0]) + { + copy(username, 31, name) + } + else + { + get_user_name(id, username, 31) + } + + get_pcvar_string(amx_password_field, passfield, 31) + get_user_info(id, passfield, password, 31) + + new result = getAccess(id, username, userauthid, userip, password) + + if (result & 1) + { + client_cmd(id, "echo ^"* %L^"", id, "INV_PAS") + } + + if (result & 2) + { + client_cmd(id, "%s", g_cmdLoopback) + return PLUGIN_HANDLED + } + + if (result & 4) + { + client_cmd(id, "echo ^"* %L^"", id, "PAS_ACC") + } + + if (result & 8) + { + client_cmd(id, "echo ^"* %L^"", id, "PRIV_SET") + } + + return PLUGIN_CONTINUE +} + +public client_infochanged(id) +{ + if (!is_user_connected(id) || !get_pcvar_num(amx_mode)) + { + return PLUGIN_CONTINUE + } + + new newname[32], oldname[32] + + get_user_name(id, oldname, 31) + get_user_info(id, "name", newname, 31) + + if (g_CaseSensitiveName[id]) + { + if (!equal(newname, oldname)) + { + accessUser(id, newname) + } + } + else + { + if (!equali(newname, oldname)) + { + accessUser(id, newname) + } + } + return PLUGIN_CONTINUE +} + +public ackSignal(id) +{ + server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "NO_ENTRY") + return PLUGIN_HANDLED +} + +public client_authorized(id) + return get_pcvar_num(amx_mode) ? accessUser(id) : PLUGIN_CONTINUE + +public client_putinserver(id) +{ + if (!is_dedicated_server() && id == 1) + return get_pcvar_num(amx_mode) ? accessUser(id) : PLUGIN_CONTINUE + + return PLUGIN_CONTINUE +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/adminchat.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/adminchat.sma new file mode 100644 index 0000000..956173d --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/adminchat.sma @@ -0,0 +1,402 @@ +/* AMX Mod X +* Admin Chat Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> +#include <amxmisc> + +new g_msgChannel + +#define MAX_CLR 10 + +new g_Colors[MAX_CLR][] = {"COL_WHITE", "COL_RED", "COL_GREEN", "COL_BLUE", "COL_YELLOW", "COL_MAGENTA", "COL_CYAN", "COL_ORANGE", "COL_OCEAN", "COL_MAROON"} +new g_Values[MAX_CLR][] = {{255, 255, 255}, {255, 0, 0}, {0, 255, 0}, {0, 0, 255}, {255, 255, 0}, {255, 0, 255}, {0, 255, 255}, {227, 96, 8}, {45, 89, 116}, {103, 44, 38}} +new Float:g_Pos[4][] = {{0.0, 0.0}, {0.05, 0.55}, {-1.0, 0.2}, {-1.0, 0.7}} + +new amx_show_activity; +new g_AdminChatFlag = ADMIN_CHAT; + +public plugin_init() +{ + new admin_chat_id + + register_plugin("Admin Chat", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("adminchat.txt") + register_dictionary("common.txt") + register_clcmd("say", "cmdSayChat", ADMIN_CHAT, "@[@|@|@][w|r|g|b|y|m|c]<text> - displays hud message") + register_clcmd("say_team", "cmdSayAdmin", 0, "@<text> - displays message to admins") + register_concmd("amx_say", "cmdSay", ADMIN_CHAT, "<message> - sends message to all players") + admin_chat_id = register_concmd("amx_chat", "cmdChat", ADMIN_CHAT, "<message> - sends message to admins") + register_concmd("amx_psay", "cmdPsay", ADMIN_CHAT, "<name or #userid> <message> - sends private message") + register_concmd("amx_tsay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends left side hud message to all players") + register_concmd("amx_csay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends center hud message to all players") + + amx_show_activity = get_cvar_pointer("amx_show_activity"); + + if (amx_show_activity == 0) + { + amx_show_activity = register_cvar("amx_show_activity", "2"); + } + + new str[1] + get_concmd(admin_chat_id, str, 0, g_AdminChatFlag, str, 0, -1) +} + +public cmdSayChat(id) +{ + if (!access(id, g_AdminChatFlag)) + { + return PLUGIN_CONTINUE + } + + new said[6], i = 0 + read_argv(1, said, 5) + + while (said[i] == '@') + { + i++ + } + + if (!i || i > 3) + { + return PLUGIN_CONTINUE + } + + new message[192], a = 0 + read_args(message, 191) + remove_quotes(message) + + switch (said[i]) + { + case 'r': a = 1 + case 'g': a = 2 + case 'b': a = 3 + case 'y': a = 4 + case 'm': a = 5 + case 'c': a = 6 + case 'o': a = 7 + } + + new n, s = i + if (a) + { + n++ + s++ + } + while (said[s] && isspace(said[s])) + { + n++ + s++ + } + + + new name[32], authid[32], userid + + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + userid = get_user_userid(id) + + log_amx("Chat: ^"%s<%d><%s><>^" tsay ^"%s^"", name, userid, authid, message[i + n]) + log_message("^"%s<%d><%s><>^" triggered ^"amx_tsay^" (text ^"%s^") (color ^"%L^")", name, userid, authid, message[i + n], "en", g_Colors[a]) + + if (++g_msgChannel > 6 || g_msgChannel < 3) + { + g_msgChannel = 3 + } + + new Float:verpos = g_Pos[i][1] + float(g_msgChannel) / 35.0 + + set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], g_Pos[i][0], verpos, 0, 6.0, 6.0, 0.5, 0.15, -1) + + switch ( get_pcvar_num(amx_show_activity) ) + { + case 3, 4: + { + new maxpl = get_maxplayers(); + for (new pl = 1; pl <= maxpl; pl++) + { + if (is_user_connected(pl) && !is_user_bot(pl)) + { + if (is_user_admin(pl)) + { + show_hudmessage(pl, "%s : %s", name, message[i + n]) + client_print(pl, print_notify, "%s : %s", name, message[i + n]) + } + else + { + show_hudmessage(pl, "%s", message[i + n]) + client_print(pl, print_notify, "%s", message[i + n]) + } + } + } + } + case 2: + { + show_hudmessage(0, "%s : %s", name, message[i + n]) + client_print(0, print_notify, "%s : %s", name, message[i + n]) + } + default: + { + show_hudmessage(0, "%s", message[i + n]) + client_print(0, print_notify, "%s", message[i + n]) + } + } + + return PLUGIN_HANDLED +} + +public cmdSayAdmin(id) +{ + new said[2] + read_argv(1, said, 1) + + if (said[0] != '@') + return PLUGIN_CONTINUE + + new message[192], name[32], authid[32], userid + new players[32], inum + + read_args(message, 191) + remove_quotes(message) + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + userid = get_user_userid(id) + + log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message[1]) + log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message[1]) + + if (is_user_admin(id)) + format(message, 191, "(%L) %s : %s", id, "ADMIN", name, message[1]) + else + format(message, 191, "(%L) %s : %s", id, "PLAYER", name, message[1]) + + get_players(players, inum) + + for (new i = 0; i < inum; ++i) + { + // dont print the message to the client that used the cmd if he has ADMIN_CHAT to avoid double printing + if (players[i] != id && get_user_flags(players[i]) & g_AdminChatFlag) + client_print(players[i], print_chat, "%s", message) + } + + client_print(id, print_chat, "%s", message) + + return PLUGIN_HANDLED +} + +public cmdChat(id, level, cid) +{ + if (!cmd_access(id, level, cid, 2)) + return PLUGIN_HANDLED + + new message[192], name[32], players[32], inum, authid[32], userid + + read_args(message, 191) + remove_quotes(message) + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + userid = get_user_userid(id) + get_players(players, inum) + + log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message) + log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message) + + format(message, 191, "(ADMINS) %s : %s", name, message) + console_print(id, "%s", message) + + for (new i = 0; i < inum; ++i) + { + if (access(players[i], g_AdminChatFlag)) + client_print(players[i], print_chat, "%s", message) + } + + return PLUGIN_HANDLED +} + +public cmdSay(id, level, cid) +{ + if (!cmd_access(id, level, cid, 2)) + return PLUGIN_HANDLED + + new message[192], name[32], authid[32], userid + + read_args(message, 191) + remove_quotes(message) + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + userid = get_user_userid(id) + client_print(0, print_chat, "%L", LANG_PLAYER, "PRINT_ALL", name, message) + console_print(id, "%L", LANG_PLAYER, "PRINT_ALL", name, message) + + log_amx("Chat: ^"%s<%d><%s><>^" say ^"%s^"", name, userid, authid, message) + log_message("^"%s<%d><%s><>^" triggered ^"amx_say^" (text ^"%s^")", name, userid, authid, message) + + return PLUGIN_HANDLED +} + +public cmdPsay(id, level, cid) +{ + if (!cmd_access(id, level, cid, 3)) + return PLUGIN_HANDLED + + new name[32] + read_argv(1, name, 31) + new priv = cmd_target(id, name, 0) + + if (!priv) + return PLUGIN_HANDLED + + new length = strlen(name) + 1 + + get_user_name(priv, name, 31); + + new message[192], name2[32], authid[32], authid2[32], userid, userid2 + + get_user_authid(id, authid, 31) + get_user_name(id, name2, 31) + userid = get_user_userid(id) + read_args(message, 191) + + if (message[0] == '"' && message[length] == '"') // HLSW fix + { + message[0] = ' ' + message[length] = ' ' + length += 2 + } + + remove_quotes(message[length]) + get_user_name(priv, name, 31) + + if (id && id != priv) + client_print(id, print_chat, "(%s) %s : %s", name, name2, message[length]) + + client_print(priv, print_chat, "(%s) %s : %s", name, name2, message[length]) + console_print(id, "(%s) %s : %s", name, name2, message[length]) + get_user_authid(priv, authid2, 31) + userid2 = get_user_userid(priv) + + log_amx("Chat: ^"%s<%d><%s><>^" psay ^"%s<%d><%s><>^" ^"%s^"", name2, userid, authid, name, userid2, authid2, message[length]) + log_message("^"%s<%d><%s><>^" triggered ^"amx_psay^" against ^"%s<%d><%s><>^" (text ^"%s^")", name2, userid, authid, name, userid2, authid2, message[length]) + + return PLUGIN_HANDLED +} + +public cmdTsay(id, level, cid) +{ + if (!cmd_access(id, level, cid, 3)) + return PLUGIN_HANDLED + + new cmd[16], color[16], color2[16], message[192], name[32], authid[32], userid = 0 + + read_argv(0, cmd, 15) + new bool:tsay = (tolower(cmd[4]) == 't') + + read_args(message, 191) + remove_quotes(message) + parse(message, color, 15) + + new found = 0, a = 0 + new lang[3], langnum = get_langsnum() + + for (new i = 0; i < MAX_CLR; ++i) + { + for (new j = 0; j < langnum; j++) + { + get_lang(j, lang) + format(color2, 15, "%L", lang, g_Colors[i]) + + if (equali(color, color2)) + { + a = i + found = 1 + break + } + } + if (found == 1) + break + } + + new length = found ? (strlen(color) + 1) : 0 + + if (++g_msgChannel > 6 || g_msgChannel < 3) + g_msgChannel = 3 + + new Float:verpos = (tsay ? 0.55 : 0.1) + float(g_msgChannel) / 35.0 + + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + userid = get_user_userid(id) + set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], tsay ? 0.05 : -1.0, verpos, 0, 6.0, 6.0, 0.5, 0.15, -1) + + switch ( get_pcvar_num(amx_show_activity) ) + { + case 3, 4: + { + new maxpl = get_maxplayers(); + for (new pl = 1; pl <= maxpl; pl++) + { + if (is_user_connected(pl) && !is_user_bot(pl)) + { + if (is_user_admin(pl)) + { + show_hudmessage(pl, "%s : %s", name, message[length]) + client_print(pl, print_notify, "%s : %s", name, message[length]) + } + else + { + show_hudmessage(pl, "%s", message[length]) + client_print(pl, print_notify, "%s", message[length]) + } + } + } + console_print(id, "%s : %s", name, message[length]) + } + case 2: + { + show_hudmessage(0, "%s : %s", name, message[length]) + client_print(0, print_notify, "%s : %s", name, message[length]) + console_print(id, "%s : %s", name, message[length]) + } + default: + { + show_hudmessage(0, "%s", message[length]) + client_print(0, print_notify, "%s", message[length]) + console_print(id, "%s", message[length]) + } + } + + log_amx("Chat: ^"%s<%d><%s><>^" %s ^"%s^"", name, userid, authid, cmd[4], message[length]) + log_message("^"%s<%d><%s><>^" triggered ^"%s^" (text ^"%s^") (color ^"%s^")", name, userid, authid, cmd, message[length], color2) + + return PLUGIN_HANDLED +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/admincmd.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/admincmd.sma new file mode 100644 index 0000000..f8bda24 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/admincmd.sma @@ -0,0 +1,1177 @@ +/* AMX Mod X +* Admin Commands Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> +#include <amxmisc> + +// This is not a dynamic array because it would be bad for 24/7 map servers. +#define OLD_CONNECTION_QUEUE 10 + +new g_pauseCon +new Float:g_pausAble +new bool:g_Paused +new bool:g_PauseAllowed = false +new g_addCvar[] = "amx_cvar add %s" + +new pausable; +new rcon_password; + +// Old connection queue +new g_Names[OLD_CONNECTION_QUEUE][32]; +new g_SteamIDs[OLD_CONNECTION_QUEUE][32]; +new g_IPs[OLD_CONNECTION_QUEUE][32]; +new g_Access[OLD_CONNECTION_QUEUE]; +new g_Tracker; +new g_Size; + +stock InsertInfo(id) +{ + + // Scan to see if this entry is the last entry in the list + // If it is, then update the name and access + // If it is not, then insert it again. + + if (g_Size > 0) + { + new ip[32] + new auth[32]; + + get_user_authid(id, auth, charsmax(auth)); + get_user_ip(id, ip, charsmax(ip), 1/*no port*/); + + new last = 0; + + if (g_Size < sizeof(g_SteamIDs)) + { + last = g_Size - 1; + } + else + { + last = g_Tracker - 1; + + if (last < 0) + { + last = g_Size - 1; + } + } + + if (equal(auth, g_SteamIDs[last]) && + equal(ip, g_IPs[last])) // need to check ip too, or all the nosteams will while it doesn't work with their illegitimate server + { + get_user_name(id, g_Names[last], charsmax(g_Names[])); + g_Access[last] = get_user_flags(id); + + return; + } + } + + // Need to insert the entry + + new target = 0; // the slot to save the info at + + // Queue is not yet full + if (g_Size < sizeof(g_SteamIDs)) + { + target = g_Size; + + ++g_Size; + + } + else + { + target = g_Tracker; + + ++g_Tracker; + // If we reached the end of the array, then move to the front + if (g_Tracker == sizeof(g_SteamIDs)) + { + g_Tracker = 0; + } + } + + get_user_authid(id, g_SteamIDs[target], charsmax(g_SteamIDs[])); + get_user_name(id, g_Names[target], charsmax(g_Names[])); + get_user_ip(id, g_IPs[target], charsmax(g_IPs[]), 1/*no port*/); + + g_Access[target] = get_user_flags(id); + +} +stock GetInfo(i, name[], namesize, auth[], authsize, ip[], ipsize, &access) +{ + if (i >= g_Size) + { + abort(AMX_ERR_NATIVE, "GetInfo: Out of bounds (%d:%d)", i, g_Size); + } + + new target = (g_Tracker + i) % sizeof(g_SteamIDs); + + copy(name, namesize, g_Names[target]); + copy(auth, authsize, g_SteamIDs[target]); + copy(ip, ipsize, g_IPs[target]); + access = g_Access[target]; + +} +public client_disconnect(id) +{ + if (!is_user_bot(id)) + { + InsertInfo(id); + } +} + +public plugin_init() +{ + register_plugin("Admin Commands", AMXX_VERSION_STR, "AMXX Dev Team") + + register_dictionary("admincmd.txt") + register_dictionary("common.txt") + register_dictionary("adminhelp.txt") + + + register_concmd("amx_kick", "cmdKick", ADMIN_KICK, "<name or #userid> [reason]") + register_concmd("amx_ban", "cmdBan", ADMIN_BAN, "<name or #userid> <minutes> [reason]") + register_concmd("amx_banip", "cmdBanIP", ADMIN_BAN, "<name or #userid> <minutes> [reason]") + register_concmd("amx_addban", "cmdAddBan", ADMIN_BAN, "<^"authid^" or ip> <minutes> [reason]") + register_concmd("amx_unban", "cmdUnban", ADMIN_BAN, "<^"authid^" or ip>") + register_concmd("amx_slay", "cmdSlay", ADMIN_SLAY, "<name or #userid>") + register_concmd("amx_slap", "cmdSlap", ADMIN_SLAY, "<name or #userid> [power]") + register_concmd("amx_leave", "cmdLeave", ADMIN_KICK, "<tag> [tag] [tag] [tag]") + register_concmd("amx_pause", "cmdPause", ADMIN_CVAR, "- pause or unpause the game") + register_concmd("amx_who", "cmdWho", ADMIN_ADMIN, "- displays who is on server") + register_concmd("amx_cvar", "cmdCvar", ADMIN_CVAR, "<cvar> [value]") + register_concmd("amx_plugins", "cmdPlugins", ADMIN_ADMIN) + register_concmd("amx_modules", "cmdModules", ADMIN_ADMIN) + register_concmd("amx_map", "cmdMap", ADMIN_MAP, "<mapname>") + register_concmd("amx_cfg", "cmdCfg", ADMIN_CFG, "<filename>") + register_concmd("amx_nick", "cmdNick", ADMIN_SLAY, "<name or #userid> <new nick>") + register_concmd("amx_last", "cmdLast", ADMIN_BAN, "- list the last few disconnected clients info"); + register_clcmd("amx_rcon", "cmdRcon", ADMIN_RCON, "<command line>") + register_clcmd("amx_showrcon", "cmdShowRcon", ADMIN_RCON, "<command line>") + register_clcmd("pauseAck", "cmdLBack") + + + rcon_password=get_cvar_pointer("rcon_password"); + pausable=get_cvar_pointer("pausable"); + + +} + +public plugin_cfg() +{ + // Cvars which can be changed only with rcon access + server_cmd(g_addCvar, "rcon_password") + server_cmd(g_addCvar, "amx_show_activity") + server_cmd(g_addCvar, "amx_mode") + server_cmd(g_addCvar, "amx_password_field") + server_cmd(g_addCvar, "amx_default_access") + server_cmd(g_addCvar, "amx_reserved_slots") + server_cmd(g_addCvar, "amx_reservation") + server_cmd(g_addCvar, "amx_sql_table"); + server_cmd(g_addCvar, "amx_sql_host"); + server_cmd(g_addCvar, "amx_sql_user"); + server_cmd(g_addCvar, "amx_sql_pass"); + server_cmd(g_addCvar, "amx_sql_db"); + server_cmd(g_addCvar, "amx_sql_type"); + +} + +public cmdKick(id, level, cid) +{ + if (!cmd_access(id, level, cid, 2)) + return PLUGIN_HANDLED + + new arg[32] + read_argv(1, arg, 31) + new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF) + + if (!player) + return PLUGIN_HANDLED + + new authid[32], authid2[32], name2[32], name[32], userid2, reason[32] + + get_user_authid(id, authid, 31) + get_user_authid(player, authid2, 31) + get_user_name(player, name2, 31) + get_user_name(id, name, 31) + userid2 = get_user_userid(player) + read_argv(2, reason, 31) + remove_quotes(reason) + + log_amx("Kick: ^"%s<%d><%s><>^" kick ^"%s<%d><%s><>^" (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, reason) + + show_activity_key("ADMIN_KICK_1", "ADMIN_KICK_2", name, name2); + + if (is_user_bot(player)) + server_cmd("kick #%d", userid2) + else + { + if (reason[0]) + server_cmd("kick #%d ^"%s^"", userid2, reason) + else + server_cmd("kick #%d", userid2) + } + + console_print(id, "[AMXX] Client ^"%s^" kicked", name2) + + return PLUGIN_HANDLED +} + +public cmdUnban(id, level, cid) +{ + if (!cmd_access(id, level, cid, 2)) + return PLUGIN_HANDLED + + new arg[32], authid[32], name[32] + + read_argv(1, arg, 31) + + if (contain(arg, ".") != -1) + { + server_cmd("removeip ^"%s^";writeip", arg) + console_print(id, "[AMXX] %L", id, "IP_REMOVED", arg) + } else { + server_cmd("removeid %s;writeid", arg) + console_print(id, "[AMXX] %L", id, "AUTHID_REMOVED", arg) + } + + get_user_name(id, name, 31) + + show_activity_key("ADMIN_UNBAN_1", "ADMIN_UNBAN_2", name, arg); + + get_user_authid(id, authid, 31) + log_amx("Cmd: ^"%s<%d><%s><>^" unban ^"%s^"", name, get_user_userid(id), authid, arg) + + return PLUGIN_HANDLED +} + +/* amx_addban is a special command now. + * If a user with rcon uses it, it bans the user. No questions asked. + * If a user without rcon but with ADMIN_BAN uses it, it will scan the old + * connection queue, and if it finds the info for a player in it, it will + * check their old access. If they have immunity, it will not ban. + * If they do not have immunity, it will ban. If the user is not found, + * it will refuse to ban the target. + */ + +public cmdAddBan(id, level, cid) +{ + if (!cmd_access(id, level, cid, 3, true)) // check for ADMIN_BAN access + { + if (get_user_flags(id) & level) // Getting here means they didn't input enough args + { + return PLUGIN_HANDLED; + } + if (!cmd_access(id, ADMIN_RCON, cid, 3)) // If somehow they have ADMIN_RCON without ADMIN_BAN, continue + { + return PLUGIN_HANDLED; + } + } + + new arg[32], authid[32], name[32], minutes[32], reason[32] + + read_argv(1, arg, 31) + read_argv(2, minutes, 31) + read_argv(3, reason, 31) + + + if (!(get_user_flags(id) & ADMIN_RCON)) + { + new bool:canban = false; + new bool:isip = false; + // Limited access to this command + if (equali(arg, "STEAM_ID_PENDING") || + equali(arg, "STEAM_ID_LAN") || + equali(arg, "HLTV") || + equali(arg, "4294967295") || + equali(arg, "VALVE_ID_LAN") || + equali(arg, "VALVE_ID_PENDING")) + { + // Hopefully we never get here, so ML shouldn't be needed + console_print(id, "Cannot ban %s", arg); + return PLUGIN_HANDLED; + } + + if (contain(arg, ".") != -1) + { + isip = true; + } + + // Scan the disconnection queue + if (isip) + { + new IP[32]; + new Name[32]; + new dummy[1]; + new Access; + for (new i = 0; i < g_Size; i++) + { + GetInfo(i, Name, charsmax(Name), dummy, 0, IP, charsmax(IP), Access); + + if (equal(IP, arg)) + { + if (Access & ADMIN_IMMUNITY) + { + console_print(id, "[AMXX] %s : %L", IP, id, "CLIENT_IMM", Name); + + return PLUGIN_HANDLED; + } + // User did not have immunity + canban = true; + } + } + } + else + { + new Auth[32]; + new Name[32]; + new dummy[1]; + new Access; + for (new i = 0; i < g_Size; i++) + { + GetInfo(i, Name, charsmax(Name), Auth, charsmax(Auth), dummy, 0, Access); + + if (equal(Auth, arg)) + { + if (Access & ADMIN_IMMUNITY) + { + console_print(id, "[AMXX] %s : %L", Auth, id, "CLIENT_IMM", Name); + + return PLUGIN_HANDLED; + } + // User did not have immunity + canban = true; + } + } + } + + if (!canban) + { + console_print(id, "[AMXX] You may only ban recently disconnected clients. Use ^"amx_last^" to view."); + + return PLUGIN_HANDLED; + } + + } + + // User has access to ban their target + if (contain(arg, ".") != -1) + { + server_cmd("addip ^"%s^" ^"%s^";wait;writeip", minutes, arg) + console_print(id, "[AMXX] Ip ^"%s^" added to ban list", arg) + } else { + server_cmd("banid %s %s;wait;writeid", minutes, arg) + console_print(id, "[AMXX] Authid ^"%s^" added to ban list", arg) + } + + get_user_name(id, name, 31) + + show_activity_key("ADMIN_ADDBAN_1", "ADMIN_ADDBAN_2", name, arg); + + get_user_authid(id, authid, 31) + log_amx("Cmd: ^"%s<%d><%s><>^" ban ^"%s^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, arg, minutes, reason) + + return PLUGIN_HANDLED +} + +public cmdBan(id, level, cid) +{ + if (!cmd_access(id, level, cid, 3)) + return PLUGIN_HANDLED + + new target[32], minutes[8], reason[64] + + read_argv(1, target, 31) + read_argv(2, minutes, 7) + read_argv(3, reason, 63) + + new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS | CMDTARGET_ALLOW_SELF) + + if (!player) + return PLUGIN_HANDLED + + new authid[32], name2[32], authid2[32], name[32] + new userid2 = get_user_userid(player) + + get_user_authid(player, authid2, 31) + get_user_authid(id, authid, 31) + get_user_name(player, name2, 31) + get_user_name(id, name, 31) + + log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, minutes, reason) + + new temp[64], banned[16], nNum = str_to_num(minutes) + if (nNum) + format(temp, 63, "%L", player, "FOR_MIN", minutes) + else + format(temp, 63, "%L", player, "PERM") + + format(banned, 15, "%L", player, "BANNED") + + if (reason[0]) + server_cmd("kick #%d ^"%s (%s %s)^";wait;banid %s %s;wait;writeid", userid2, reason, banned, temp, minutes, authid2) + else + server_cmd("kick #%d ^"%s %s^";wait;banid %s %s;wait;writeid", userid2, banned, temp, minutes, authid2) + + + // Display the message to all clients + + new msg[256]; + new len; + new maxpl = get_maxplayers(); + for (new i = 1; i <= maxpl; i++) + { + if (is_user_connected(i) && !is_user_bot(i)) + { + len = formatex(msg, charsmax(msg), "%L", i, "BAN"); + len += formatex(msg[len], charsmax(msg) - len, " %s ", name2); + if (nNum) + { + len += formatex(msg[len], charsmax(msg) - len, "%L", i, "FOR_MIN", minutes); + } + else + { + len += formatex(msg[len], charsmax(msg) - len, "%L", i, "PERM"); + } + if (strlen(reason) > 0) + { + formatex(msg[len], charsmax(msg) - len, " (%L: %s)", i, "REASON", reason); + } + show_activity_id(i, id, name, msg); + } + } + + console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2) + + return PLUGIN_HANDLED +} + +public cmdBanIP(id, level, cid) +{ + if (!cmd_access(id, level, cid, 3)) + return PLUGIN_HANDLED + + new target[32], minutes[8], reason[64] + + read_argv(1, target, 31) + read_argv(2, minutes, 7) + read_argv(3, reason, 63) + + new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS | CMDTARGET_ALLOW_SELF) + + if (!player) + { + // why is this here? + // no idea + // player = cmd_target(id, target, 9); + return PLUGIN_HANDLED + } + + new authid[32], name2[32], authid2[32], name[32] + new userid2 = get_user_userid(player) + + get_user_authid(player, authid2, 31) + get_user_authid(id, authid, 31) + get_user_name(player, name2, 31) + get_user_name(id, name, 31) + + log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, minutes, reason) + + new temp[64], banned[16], nNum = str_to_num(minutes) + if (nNum) + format(temp, 63, "%L", player, "FOR_MIN", minutes) + else + format(temp, 63, "%L", player, "PERM") + format(banned, 15, "%L", player, "BANNED") + + new address[32] + get_user_ip(player, address, 31, 1) + + if (reason[0]) + server_cmd("kick #%d ^"%s (%s %s)^";wait;addip ^"%s^" ^"%s^";wait;writeip", userid2, reason, banned, temp, minutes, address) + else + server_cmd("kick #%d ^"%s %s^";wait;addip ^"%s^" ^"%s^";wait;writeip", userid2, banned, temp, minutes, address) + + // Display the message to all clients + + new msg[256]; + new len; + new maxpl = get_maxplayers(); + for (new i = 1; i <= maxpl; i++) + { + if (is_user_connected(i) && !is_user_bot(i)) + { + len = formatex(msg, charsmax(msg), "%L", i, "BAN"); + len += formatex(msg[len], charsmax(msg) - len, " %s ", name2); + if (nNum) + { + formatex(msg[len], charsmax(msg) - len, "%L", i, "FOR_MIN", minutes); + } + else + { + formatex(msg[len], charsmax(msg) - len, "%L", i, "PERM"); + } + if (strlen(reason) > 0) + { + formatex(msg[len], charsmax(msg) - len, " (%L: %s)", i, "REASON", reason); + } + show_activity_id(i, id, name, msg); + } + } + + console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2) + + return PLUGIN_HANDLED +} + +public cmdSlay(id, level, cid) +{ + if (!cmd_access(id, level, cid, 2)) + return PLUGIN_HANDLED + + new arg[32] + + read_argv(1, arg, 31) + + new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF | CMDTARGET_ONLY_ALIVE) + + if (!player) + return PLUGIN_HANDLED + + user_kill(player) + + new authid[32], name2[32], authid2[32], name[32] + + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + get_user_authid(player, authid2, 31) + get_user_name(player, name2, 31) + + log_amx("Cmd: ^"%s<%d><%s><>^" slay ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2) + + show_activity_key("ADMIN_SLAY_1", "ADMIN_SLAY_2", name, name2); + + console_print(id, "[AMXX] %L", id, "CLIENT_SLAYED", name2) + + return PLUGIN_HANDLED +} + +public cmdSlap(id, level, cid) +{ + if (!cmd_access(id, level, cid, 2)) + return PLUGIN_HANDLED + + new arg[32] + + read_argv(1, arg, 31) + new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF | CMDTARGET_ONLY_ALIVE) + + if (!player) + return PLUGIN_HANDLED + + new spower[32], authid[32], name2[32], authid2[32], name[32] + + read_argv(2, spower, 31) + + new damage = str_to_num(spower) + + user_slap(player, damage) + + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + get_user_authid(player, authid2, 31) + get_user_name(player, name2, 31) + + log_amx("Cmd: ^"%s<%d><%s><>^" slap with %d damage ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, damage, name2, get_user_userid(player), authid2) + + show_activity_key("ADMIN_SLAP_1", "ADMIN_SLAP_2", name, name2, damage); + + console_print(id, "[AMXX] %L", id, "CLIENT_SLAPED", name2, damage) + + return PLUGIN_HANDLED +} + +public chMap(map[]) +{ + server_cmd("changelevel %s", map) +} + +public cmdMap(id, level, cid) +{ + if (!cmd_access(id, level, cid, 2)) + return PLUGIN_HANDLED + + new arg[32] + new arglen = read_argv(1, arg, 31) + + if (!is_map_valid(arg)) + { + console_print(id, "[AMXX] %L", id, "MAP_NOT_FOUND") + return PLUGIN_HANDLED + } + + new authid[32], name[32] + + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + + show_activity_key("ADMIN_MAP_1", "ADMIN_MAP_2", name, arg); + + log_amx("Cmd: ^"%s<%d><%s><>^" changelevel ^"%s^"", name, get_user_userid(id), authid, arg) + + new _modName[10] + get_modname(_modName, 9) + + if (!equal(_modName, "zp")) + { + message_begin(MSG_ALL, SVC_INTERMISSION) + message_end() + } + + set_task(2.0, "chMap", 0, arg, arglen + 1) + + return PLUGIN_HANDLED +} + +stock bool:onlyRcon(const name[]) +{ + new ptr=get_cvar_pointer(name); + if (ptr && get_pcvar_flags(ptr) & FCVAR_PROTECTED) + { + return true; + } + return false; +} + +public cmdCvar(id, level, cid) +{ + if (!cmd_access(id, level, cid, 2)) + return PLUGIN_HANDLED + + new arg[32], arg2[64] + + read_argv(1, arg, 31) + read_argv(2, arg2, 63) + + new pointer; + + if (equal(arg, "add") && (get_user_flags(id) & ADMIN_RCON)) + { + if ((pointer=get_cvar_pointer(arg2))!=0) + { + new flags=get_pcvar_flags(pointer); + + if (!(flags & FCVAR_PROTECTED)) + { + set_pcvar_flags(pointer,flags | FCVAR_PROTECTED); + } + } + return PLUGIN_HANDLED + } + + if ((pointer=get_cvar_pointer(arg))==0) + { + console_print(id, "[AMXX] %L", id, "UNKNOWN_CVAR", arg) + return PLUGIN_HANDLED + } + + if (onlyRcon(arg) && !(get_user_flags(id) & ADMIN_RCON)) + { + // Exception for the new onlyRcon rules: + // sv_password is allowed to be modified by ADMIN_PASSWORD + if (!(equali(arg,"sv_password") && (get_user_flags(id) & ADMIN_PASSWORD))) + { + console_print(id, "[AMXX] %L", id, "CVAR_NO_ACC") + return PLUGIN_HANDLED + } + } + + if (read_argc() < 3) + { + get_pcvar_string(pointer, arg2, 63) + console_print(id, "[AMXX] %L", id, "CVAR_IS", arg, arg2) + return PLUGIN_HANDLED + } + + new authid[32], name[32] + + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + + log_amx("Cmd: ^"%s<%d><%s><>^" set cvar (name ^"%s^") (value ^"%s^")", name, get_user_userid(id), authid, arg, arg2) + set_cvar_string(arg, arg2) + + + // Display the message to all clients + + new cvar_val[64]; + new maxpl = get_maxplayers(); + for (new i = 1; i <= maxpl; i++) + { + if (is_user_connected(i) && !is_user_bot(i)) + { + if (get_pcvar_flags(pointer) & FCVAR_PROTECTED || equali(arg, "rcon_password")) + { + formatex(cvar_val, charsmax(cvar_val), "*** %L ***", i, "PROTECTED"); + } + else + { + copy(cvar_val, charsmax(cvar_val), arg2); + } + show_activity_id(i, id, name, "%L", i, "SET_CVAR_TO", "", arg, cvar_val); + } + } + + console_print(id, "[AMXX] %L", id, "CVAR_CHANGED", arg, arg2) + + return PLUGIN_HANDLED +} + +public cmdPlugins(id, level, cid) +{ + if (!cmd_access(id, level, cid, 1)) + return PLUGIN_HANDLED + + if (id==0) // If server executes redirect this to "amxx plugins" for more in depth output + { + server_cmd("amxx plugins"); + server_exec(); + return PLUGIN_HANDLED; + } + + new name[32], version[32], author[32], filename[32], status[32] + new lName[32], lVersion[32], lAuthor[32], lFile[32], lStatus[32] + + format(lName, 31, "%L", id, "NAME") + format(lVersion, 31, "%L", id, "VERSION") + format(lAuthor, 31, "%L", id, "AUTHOR") + format(lFile, 31, "%L", id, "FILE") + format(lStatus, 31, "%L", id, "STATUS") + + new StartPLID=0; + new EndPLID; + + new Temp[96] + + new num = get_pluginsnum() + + if (read_argc() > 1) + { + read_argv(1,Temp,sizeof(Temp)-1); + StartPLID=str_to_num(Temp)-1; // zero-based + } + + EndPLID=min(StartPLID + 10, num); + + new running = 0 + + console_print(id, "----- %L -----", id, "LOADED_PLUGINS") + console_print(id, "%-18.17s %-11.10s %-17.16s %-16.15s %-9.8s", lName, lVersion, lAuthor, lFile, lStatus) + + new i=StartPLID; + while (i <EndPLID) + { + get_plugin(i++, filename, 31, name, 31, version, 31, author, 31, status, 31) + console_print(id, "%-18.17s %-11.10s %-17.16s %-16.15s %-9.8s", name, version, author, filename, status) + + if (status[0]=='d' || status[0]=='r') // "debug" or "running" + running++ + } + console_print(id, "%L", id, "PLUGINS_RUN", EndPLID-StartPLID, running) + console_print(id, "----- %L -----",id,"HELP_ENTRIES",StartPLID + 1,EndPLID,num); + + if (EndPLID < num) + { + formatex(Temp,sizeof(Temp)-1,"----- %L -----",id,"HELP_USE_MORE", EndPLID + 1); + replace_all(Temp,sizeof(Temp)-1,"amx_help","amx_plugins"); + console_print(id,"%s",Temp); + } + else + { + formatex(Temp,sizeof(Temp)-1,"----- %L -----",id,"HELP_USE_BEGIN"); + replace_all(Temp,sizeof(Temp)-1,"amx_help","amx_plugins"); + console_print(id,"%s",Temp); + } + + return PLUGIN_HANDLED +} + +public cmdModules(id, level, cid) +{ + if (!cmd_access(id, level, cid, 1)) + return PLUGIN_HANDLED + + new name[32], version[32], author[32], status, sStatus[16] + new lName[32], lVersion[32], lAuthor[32], lStatus[32]; + + format(lName, 31, "%L", id, "NAME") + format(lVersion, 31, "%L", id, "VERSION") + format(lAuthor, 31, "%L", id, "AUTHOR") + format(lStatus, charsmax(lStatus), "%L", id, "STATUS") + + new num = get_modulesnum() + + console_print(id, "%L:", id, "LOADED_MODULES") + console_print(id, "%-23.22s %-11.10s %-20.19s %-11.10s", lName, lVersion, lAuthor, lStatus) + + for (new i = 0; i < num; i++) + { + get_module(i, name, 31, author, 31, version, 31, status) + + switch (status) + { + case module_loaded: copy(sStatus, 15, "running") + default: + { + copy(sStatus, 15, "bad load"); + copy(name, charsmax(name), "unknown"); + copy(author, charsmax(author), "unknown"); + copy(version, charsmax(version), "unknown"); + } + } + + console_print(id, "%-23.22s %-11.10s %-20.19s %-11.10s", name, version, author, sStatus) + } + console_print(id, "%L", id, "NUM_MODULES", num) + + return PLUGIN_HANDLED +} + +public cmdCfg(id, level, cid) +{ + if (!cmd_access(id, level, cid, 2)) + return PLUGIN_HANDLED + + new arg[128] + read_argv(1, arg, 127) + + if (!file_exists(arg)) + { + console_print(id, "[AMXX] %L", id, "FILE_NOT_FOUND", arg) + return PLUGIN_HANDLED + } + + new authid[32], name[32] + + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + + log_amx("Cmd: ^"%s<%d><%s><>^" execute cfg (file ^"%s^")", name, get_user_userid(id), authid, arg) + + console_print(id, "[AMXX] Executing file ^"%s^"", arg) + server_cmd("exec %s", arg) + + show_activity_key("ADMIN_CONF_1", "ADMIN_CONF_2", name, arg); + + return PLUGIN_HANDLED +} + +public cmdLBack() +{ + if (!g_PauseAllowed) + return PLUGIN_CONTINUE + + new paused[25] + + format(paused, 24, "%L", g_pauseCon, g_Paused ? "UNPAUSED" : "PAUSED") + set_cvar_float("pausable", g_pausAble) + console_print(g_pauseCon, "[AMXX] Server %s", paused) + g_PauseAllowed = false + + if (g_Paused) + g_Paused = false + else + g_Paused = true + + return PLUGIN_HANDLED +} + +public cmdPause(id, level, cid) +{ + if (!cmd_access(id, level, cid, 1)) + return PLUGIN_HANDLED + + new authid[32], name[32], slayer = id + + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + if (pausable!=0) + { + g_pausAble = get_pcvar_float(pausable) + } + + if (!slayer) + slayer = find_player("h") + + if (!slayer) + { + console_print(id, "[AMXX] %L", id, "UNABLE_PAUSE") + return PLUGIN_HANDLED + } + + set_cvar_float("pausable", 1.0) + g_PauseAllowed = true + client_cmd(slayer, "pause;pauseAck") + + log_amx("Cmd: ^"%s<%d><%s><>^" %s server", name, get_user_userid(id), authid, g_Paused ? "unpause" : "pause") + + console_print(id, "[AMXX] %L", id, g_Paused ? "UNPAUSING" : "PAUSING") + + // Display the message to all clients + + new maxpl = get_maxplayers(); + for (new i = 1; i <= maxpl; i++) + { + if (is_user_connected(i) && !is_user_bot(i)) + { + show_activity_id(i, id, name, "%L server", i, g_Paused ? "UNPAUSE" : "PAUSE"); + } + } + + g_pauseCon = id + + return PLUGIN_HANDLED +} + +public cmdShowRcon(id, level, cid) +{ + if (!cmd_access(id, level, cid, 2)) + return PLUGIN_HANDLED + + new password[64] + + get_pcvar_string(rcon_password, password, 63) + + if (!password[0]) + { + cmdRcon(id, level, cid) + } else { + new args[128] + + read_args(args, 127) + client_cmd(id, "rcon_password %s", password) + client_cmd(id, "rcon %s", args) + } + + return PLUGIN_HANDLED +} + +public cmdRcon(id, level, cid) +{ + if (!cmd_access(id, level, cid, 2)) + return PLUGIN_HANDLED + + new arg[128], authid[32], name[32] + + read_args(arg, 127) + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + + log_amx("Cmd: ^"%s<%d><%s><>^" server console (cmdline ^"%s^")", name, get_user_userid(id), authid, arg) + + console_print(id, "[AMXX] %L", id, "COM_SENT_SERVER", arg) + server_cmd("%s", arg) + + return PLUGIN_HANDLED +} + +public cmdWho(id, level, cid) +{ + if (!cmd_access(id, level, cid, 1)) + return PLUGIN_HANDLED + + new players[32], inum, cl_on_server[64], authid[32], name[32], flags, sflags[32] + new lImm[16], lRes[16], lAccess[16], lYes[16], lNo[16] + + format(lImm, 15, "%L", id, "IMMU") + format(lRes, 15, "%L", id, "RESERV") + format(lAccess, 15, "%L", id, "ACCESS") + format(lYes, 15, "%L", id, "YES") + format(lNo, 15, "%L", id, "NO") + + get_players(players, inum) + format(cl_on_server, 63, "%L", id, "CLIENTS_ON_SERVER") + console_print(id, "^n%s:^n # %-16.15s %-20s %-8s %-4.3s %-4.3s %s", cl_on_server, "nick", "authid", "userid", lImm, lRes, lAccess) + + for (new a = 0; a < inum; ++a) + { + get_user_authid(players[a], authid, 31) + get_user_name(players[a], name, 31) + flags = get_user_flags(players[a]) + get_flags(flags, sflags, 31) + console_print(id, "%2d %-16.15s %-20s %-8d %-6.5s %-6.5s %s", players[a], name, authid, + get_user_userid(players[a]), (flags&ADMIN_IMMUNITY) ? lYes : lNo, (flags&ADMIN_RESERVATION) ? lYes : lNo, sflags) + } + + console_print(id, "%L", id, "TOTAL_NUM", inum) + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + log_amx("Cmd: ^"%s<%d><%s><>^" ask for players list", name, get_user_userid(id), authid) + + return PLUGIN_HANDLED +} + +hasTag(name[], tags[4][32], tagsNum) +{ + for (new a = 0; a < tagsNum; ++a) + if (contain(name, tags[a]) != -1) + return a + return -1 +} + +public cmdLeave(id, level, cid) +{ + if (!cmd_access(id, level, cid, 2)) + return PLUGIN_HANDLED + + new argnum = read_argc() + new ltags[4][32] + new ltagsnum = 0 + + for (new a = 1; a < 5; ++a) + { + if (a < argnum) + read_argv(a, ltags[ltagsnum++], 31) + else + ltags[ltagsnum++][0] = 0 + } + + new nick[32], ires, pnum = get_maxplayers() + 1, count = 0, lReason[128] + + for (new b = 1; b < pnum; ++b) + { + if (!is_user_connected(b) && !is_user_connecting(b)) continue + + get_user_name(b, nick, 31) + ires = hasTag(nick, ltags, ltagsnum) + + if (ires != -1) + { + console_print(id, "[AMXX] %L", id, "SKIP_MATCH", nick, ltags[ires]) + continue + } + + if (get_user_flags(b) & ADMIN_IMMUNITY) + { + console_print(id, "[AMXX] %L", id, "SKIP_IMM", nick) + continue + } + + console_print(id, "[AMXX] %L", id, "KICK_PL", nick) + + if (is_user_bot(b)) + server_cmd("kick #%d", get_user_userid(b)) + else + { + format(lReason, 127, "%L", b, "YOU_DROPPED") + server_cmd("kick #%d ^"%s^"", get_user_userid(b), lReason) + } + count++ + } + + console_print(id, "[AMXX] %L", id, "KICKED_CLIENTS", count) + + new authid[32], name[32] + + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + log_amx("Kick: ^"%s<%d><%s><>^" leave some group (tag1 ^"%s^") (tag2 ^"%s^") (tag3 ^"%s^") (tag4 ^"%s^")", name, get_user_userid(id), authid, ltags[0], ltags[1], ltags[2], ltags[3]) + + show_activity_key("ADMIN_LEAVE_1", "ADMIN_LEAVE_2", name, ltags[0], ltags[1], ltags[2], ltags[3]); + + return PLUGIN_HANDLED +} + +public cmdNick(id, level, cid) +{ + if (!cmd_access(id, level, cid, 3)) + return PLUGIN_HANDLED + + new arg1[32], arg2[32], authid[32], name[32], authid2[32], name2[32] + + read_argv(1, arg1, 31) + read_argv(2, arg2, 31) + + new player = cmd_target(id, arg1, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF) + + if (!player) + return PLUGIN_HANDLED + + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + get_user_authid(player, authid2, 31) + get_user_name(player, name2, 31) + + client_cmd(player, "name ^"%s^"", arg2) + + log_amx("Cmd: ^"%s<%d><%s><>^" change nick to ^"%s^" ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, arg2, name2, get_user_userid(player), authid2) + + show_activity_key("ADMIN_NICK_1", "ADMIN_NICK_2", name, name2, arg2); + + console_print(id, "[AMXX] %L", id, "CHANGED_NICK", name2, arg2) + + return PLUGIN_HANDLED +} + +public cmdLast(id, level, cid) +{ + if (!cmd_access(id, level, cid, 1)) + { + return PLUGIN_HANDLED; + } + + new name[32]; + new authid[32]; + new ip[32]; + new flags[32]; + new access; + + + // This alignment is a bit weird (it should grow if the name is larger) + // but otherwise for the more common shorter name, it'll wrap in server console + // Steam client display is all skewed anyway because of the non fixed font. + console_print(id, "%19s %20s %15s %s", "name", "authid", "ip", "access"); + + for (new i = 0; i < g_Size; i++) + { + GetInfo(i, name, charsmax(name), authid, charsmax(authid), ip, charsmax(ip), access); + + get_flags(access, flags, charsmax(flags)); + + console_print(id, "%19s %20s %15s %s", name, authid, ip, flags); + } + + console_print(id, "%d old connections saved.", g_Size); + + return PLUGIN_HANDLED; +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/adminhelp.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/adminhelp.sma new file mode 100644 index 0000000..9acc262 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/adminhelp.sma @@ -0,0 +1,129 @@ +/* AMX Mod X +* Admin Help Plugin +* +* by the AMX Mod X Development Team +* originally developed by tcquest78 +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> + +#define DISPLAY_MSG // Comment to disable message on join +#define HELPAMOUNT 10 // Number of commands per page + +public plugin_init() +{ + register_plugin("Admin Help", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("adminhelp.txt") + register_concmd("amx_help", "cmdHelp", 0, "<page> [nr of cmds (only for server)] - displays this help") +} + +#if defined DISPLAY_MSG +public client_putinserver(id) +{ + if (is_user_bot(id)) + return + + set_task(15.0, "dispInfo", id) +} + +public client_disconnect(id) +{ + remove_task(id) +} +#endif + +public cmdHelp(id, level, cid) +{ + new arg1[8], flags = get_user_flags(id) + new start = read_argv(1, arg1, 7) ? str_to_num(arg1) : 1 + new lHelpAmount = HELPAMOUNT + + // HACK: ADMIN_ADMIN is never set as a user's actual flags, so those types of commands never show + if (flags > 0 && !(flags & ADMIN_USER)) + { + flags |= ADMIN_ADMIN; + } + + if (id == 0 && read_argc() == 3) + lHelpAmount = read_argv(2, arg1, 7) ? str_to_num(arg1) : HELPAMOUNT + + if (--start < 0) + start = 0 + + new clcmdsnum = get_concmdsnum(flags, id) + + if (start >= clcmdsnum) + start = clcmdsnum - 1 + + console_print(id, "^n----- %L -----", id, "HELP_COMS") + + new info[128], cmd[32], eflags + new end = start + lHelpAmount // HELPAMOUNT + + if (end > clcmdsnum) + end = clcmdsnum + + for (new i = start; i < end; i++) + { + get_concmd(i, cmd, 31, eflags, info, 127, flags, id) + console_print(id, "%3d: %s %s", i + 1, cmd, info) + } + + console_print(id, "----- %L -----", id, "HELP_ENTRIES", start + 1, end, clcmdsnum) + + if (end < clcmdsnum) + console_print(id, "----- %L -----", id, "HELP_USE_MORE", end + 1) + else + console_print(id, "----- %L -----", id, "HELP_USE_BEGIN") + + return PLUGIN_HANDLED +} + +#if defined DISPLAY_MSG +public dispInfo(id) +{ + client_print(id, print_chat, "%L", id, "TYPE_HELP") + + new nextmap[32] + get_cvar_string("amx_nextmap", nextmap, 31) + + if (get_cvar_float("mp_timelimit")) + { + new timeleft = get_timeleft() + + if (timeleft > 0) + { + client_print(id, print_chat, "%L", id, "TIME_INFO_1", timeleft / 60, timeleft % 60, nextmap) + } else { + client_print(id, print_chat, "%L", id, "TIME_INFO_2", nextmap) + } + } +} +#endif diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/adminslots.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/adminslots.sma new file mode 100644 index 0000000..ee08c00 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/adminslots.sma @@ -0,0 +1,107 @@ +/* AMX Mod X +* Slots Reservation Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> +#include <amxmisc> + +new g_ResPtr +new g_HidePtr + +public plugin_init() +{ + register_plugin("Slots Reservation", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("adminslots.txt") + register_dictionary("common.txt") + g_ResPtr = register_cvar("amx_reservation", "0") + g_HidePtr = register_cvar("amx_hideslots", "0") +} + +public plugin_cfg() +{ + set_task(3.0, "MapLoaded") +} + +public MapLoaded() +{ + if (!get_pcvar_num(g_HidePtr)) + return + + new maxplayers = get_maxplayers() + new players = get_playersnum(1) + new limit = maxplayers - get_pcvar_num(g_ResPtr) + setVisibleSlots(players, maxplayers, limit) +} + +public client_authorized(id) +{ + new maxplayers = get_maxplayers() + new players = get_playersnum(1) + new limit = maxplayers - get_pcvar_num(g_ResPtr) + + if (access(id, ADMIN_RESERVATION) || (players <= limit)) + { + if (get_pcvar_num(g_HidePtr) == 1) + setVisibleSlots(players, maxplayers, limit) + return PLUGIN_CONTINUE + } + + new lReason[64] + format(lReason, 63, "%L", id, "DROPPED_RES") + server_cmd("kick #%d ^"%s^"", get_user_userid(id), lReason) + + return PLUGIN_HANDLED +} + +public client_disconnect(id) +{ + if (!get_pcvar_num(g_HidePtr)) + return PLUGIN_CONTINUE + + new maxplayers = get_maxplayers() + + setVisibleSlots(get_playersnum(1) - 1, maxplayers, maxplayers - get_pcvar_num(g_ResPtr)) + return PLUGIN_CONTINUE +} + +setVisibleSlots(players, maxplayers, limit) +{ + new num = players + 1 + + if (players == maxplayers) + num = maxplayers + else if (players < limit) + num = limit + + set_cvar_num("sv_visiblemaxplayers", num) +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/adminvote.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/adminvote.sma new file mode 100644 index 0000000..834af11 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/adminvote.sma @@ -0,0 +1,570 @@ +/* AMX Mod X +* Admin Votes Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> +#include <amxmisc> + + +new g_Answer[128] +new g_optionName[4][64] +new g_voteCount[4] +new g_validMaps +new g_yesNoVote +new g_coloredMenus +new g_voteCaller +new g_Execute[256] +new g_execLen + +new bool:g_execResult +new Float:g_voteRatio + +public plugin_init() +{ + register_plugin("Admin Votes", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("adminvote.txt") + register_dictionary("common.txt") + register_dictionary("mapsmenu.txt") + register_menucmd(register_menuid("Change map to "), MENU_KEY_1|MENU_KEY_2, "voteCount") + register_menucmd(register_menuid("Choose map: "), MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4, "voteCount") + register_menucmd(register_menuid("Kick "), MENU_KEY_1|MENU_KEY_2, "voteCount") + register_menucmd(register_menuid("Ban "), MENU_KEY_1|MENU_KEY_2, "voteCount") + register_menucmd(register_menuid("Vote: "), MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4, "voteCount") + register_menucmd(register_menuid("The result: "), MENU_KEY_1|MENU_KEY_2, "actionResult") + register_concmd("amx_votemap", "cmdVoteMap", ADMIN_VOTE, "<map> [map] [map] [map]") + register_concmd("amx_votekick", "cmdVoteKickBan", ADMIN_VOTE, "<name or #userid>") + register_concmd("amx_voteban", "cmdVoteKickBan", ADMIN_VOTE, "<name or #userid>") + register_concmd("amx_vote", "cmdVote", ADMIN_VOTE, "<question> <answer#1> <answer#2>") + register_concmd("amx_cancelvote", "cmdCancelVote", ADMIN_VOTE, "- cancels last vote") + + g_coloredMenus = colored_menus() +} + +public cmdCancelVote(id, level, cid) +{ + if (!cmd_access(id, level, cid, 0)) + return PLUGIN_HANDLED + + if (task_exists(99889988, 1)) + { + new authid[32], name[32] + + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + log_amx("Vote: ^"%s<%d><%s><>^" cancel vote session", name, get_user_userid(id), authid) + + + new maxpl=get_maxplayers(); + new msg[256]; + for (new i = 1; i <= maxpl; i++) + { + if (is_user_connected(i) && !is_user_bot(i)) + { + // HACK: ADMIN_CANC_VOTE_{1,2} keys were designed very poorly. Remove all : and %s in it. + LookupLangKey(msg, charsmax(msg), "ADMIN_CANC_VOTE_1", i); + replace_all(msg, charsmax(msg), "%s", ""); + replace_all(msg, charsmax(msg), ":", ""); + trim(msg); + show_activity_id(i, id, name, msg); + } + } + + console_print(id, "%L", id, "VOTING_CANC") + client_print(0,print_chat,"%L",LANG_PLAYER,"VOTING_CANC") + remove_task(99889988, 1) + set_cvar_float("amx_last_voting", get_gametime()) + } + else + console_print(id, "%L", id, "NO_VOTE_CANC") + + return PLUGIN_HANDLED +} + +public delayedExec(cmd[]) + server_cmd("%s", cmd) + +public autoRefuse() +{ + log_amx("Vote: %L", "en", "RES_REF") + client_print(0, print_chat, "%L", LANG_PLAYER, "RES_REF") +} + +public actionResult(id, key) +{ + remove_task(4545454) + + switch (key) + { + case 0: + { + set_task(2.0, "delayedExec", 0, g_Execute, g_execLen) + log_amx("Vote: %L", "en", "RES_ACCEPTED") + client_print(0, print_chat, "%L", LANG_PLAYER, "RES_ACCEPTED") + } + case 1: autoRefuse() + } + + return PLUGIN_HANDLED +} + +public checkVotes() +{ + new best = 0 + + if (!g_yesNoVote) + { + for (new a = 0; a < 4; ++a) + if (g_voteCount[a] > g_voteCount[best]) + + best = a + } + + new votesNum = g_voteCount[0] + g_voteCount[1] + g_voteCount[2] + g_voteCount[3] + new iRatio = votesNum ? floatround(g_voteRatio * float(votesNum), floatround_ceil) : 1 + new iResult = g_voteCount[best] + new players[32], pnum, i + + get_players(players, pnum, "c") + + if (iResult < iRatio) + { + new lVotingFailed[64] + + for (i = 0; i < pnum; i++) + { + format(lVotingFailed, 63, "%L", players[i], "VOTING_FAILED") + if (g_yesNoVote) + client_print(players[i], print_chat, "%L", players[i], "VOTING_RES_1", lVotingFailed, g_voteCount[0], g_voteCount[1], iRatio) + else + client_print(players[i], print_chat, "%L", players[i], "VOTING_RES_2", lVotingFailed, iResult, iRatio) + } + + format(lVotingFailed, 63, "%L", "en", "VOTING_FAILED") + log_amx("Vote: %s (got ^"%d^") (needed ^"%d^")", lVotingFailed, iResult, iRatio) + + return PLUGIN_CONTINUE + } + + g_execLen = format(g_Execute, 255, g_Answer, g_optionName[best]) + 1 + + if (g_execResult) + { + g_execResult = false + + if (is_user_connected(g_voteCaller)) + { + new menuBody[512], lTheResult[32], lYes[16], lNo[16] + + format(lTheResult, 31, "%L", g_voteCaller, "THE_RESULT") + format(lYes, 15, "%L", g_voteCaller, "YES") + format(lNo, 15, "%L", g_voteCaller, "NO") + + new len = format(menuBody, 511, g_coloredMenus ? "\y%s: \w%s^n^n" : "%s: %s^n^n", lTheResult, g_Execute) + + len += format(menuBody[len], 511 - len, g_coloredMenus ? "\y%L^n\w" : "%L^n", g_voteCaller, "WANT_CONTINUE") + format(menuBody[len], 511 - len, "^n1. %s^n2. %s", lYes, lNo) + show_menu(g_voteCaller, 0x03, menuBody, 10, "The result: ") + set_task(10.0, "autoRefuse", 4545454) + } + else + set_task(2.0, "delayedExec", 0, g_Execute, g_execLen) + } + + new lVotingSuccess[32] + + for (i = 0; i < pnum; i++) + { + format(lVotingSuccess, 31, "%L", players[i], "VOTING_SUCCESS") + client_print(players[i], print_chat, "%L", players[i], "VOTING_RES_3", lVotingSuccess, iResult, iRatio, g_Execute) + } + + format(lVotingSuccess, 31, "%L", "en", "VOTING_SUCCESS") + log_amx("Vote: %s (got ^"%d^") (needed ^"%d^") (result ^"%s^")", lVotingSuccess, iResult, iRatio, g_Execute) + + return PLUGIN_CONTINUE +} + +public voteCount(id, key) +{ + if (get_cvar_num("amx_vote_answers")) + { + new name[32] + get_user_name(id, name, 31) + + if (g_yesNoVote) + client_print(0, print_chat, "%L", LANG_PLAYER, key ? "VOTED_AGAINST" : "VOTED_FOR", name) + else + client_print(0, print_chat, "%L", LANG_PLAYER, "VOTED_FOR_OPT", name, key + 1) + } + ++g_voteCount[key] + + return PLUGIN_HANDLED +} + +public cmdVoteMap(id, level, cid) +{ + if (!cmd_access(id, level, cid, 2)) + return PLUGIN_HANDLED + + new Float:voting = get_cvar_float("amx_last_voting") + if (voting > get_gametime()) + { + console_print(id, "%L", id, "ALREADY_VOTING") + return PLUGIN_HANDLED + } + + if (voting && voting + get_cvar_float("amx_vote_delay") > get_gametime()) + { + console_print(id, "%L", id, "VOTING_NOT_ALLOW") + return PLUGIN_HANDLED + } + + new argc = read_argc() + if (argc > 5) argc = 5 + + g_validMaps = 0 + g_optionName[0][0] = 0 + g_optionName[1][0] = 0 + g_optionName[2][0] = 0 + g_optionName[3][0] = 0 + + for (new i = 1; i < argc; ++i) + { + read_argv(i, g_optionName[g_validMaps], 31) + + if (is_map_valid(g_optionName[g_validMaps])) + g_validMaps++ + } + + if (g_validMaps == 0) + { + new lMaps[16] + + format(lMaps, 15, "%L", id, (argc == 2) ? "MAP_IS" : "MAPS_ARE") + console_print(id, "%L", id, "GIVEN_NOT_VALID", lMaps) + return PLUGIN_HANDLED + } + + new menu_msg[256], len = 0 + new keys = 0 + + if (g_validMaps > 1) + { + keys = MENU_KEY_0 + len = format(menu_msg, 255, g_coloredMenus ? "\y%L: \w^n^n" : "%L: ^n^n", LANG_SERVER, "CHOOSE_MAP") + new temp[128] + + for (new a = 0; a < g_validMaps; ++a) + { + format(temp, 127, "%d. %s^n", a+1, g_optionName[a]) + len += copy(menu_msg[len], 255-len, temp) + keys |= (1<<a) + } + + format(menu_msg[len], 255-len, "^n0. %L", LANG_SERVER, "NONE") + g_yesNoVote = 0 + } else { + new lChangeMap[32], lYes[16], lNo[16] + + format(lChangeMap, 31, "%L", LANG_SERVER, "CHANGE_MAP_TO") + format(lYes, 15, "%L", LANG_SERVER, "YES") + format(lNo, 15, "%L", LANG_SERVER, "NO") + format(menu_msg, 255, g_coloredMenus ? "\y%s %s?\w^n^n1. %s^n2. %s" : "%s %s?^n^n1. %s^n2. %s", lChangeMap, g_optionName[0], lYes, lNo) + keys = MENU_KEY_1|MENU_KEY_2 + g_yesNoVote = 1 + } + + new authid[32], name[32] + + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + + if (argc == 2) + log_amx("Vote: ^"%s<%d><%s><>^" vote map (map ^"%s^")", name, get_user_userid(id), authid, g_optionName[0]) + else + log_amx("Vote: ^"%s<%d><%s><>^" vote maps (map#1 ^"%s^") (map#2 ^"%s^") (map#3 ^"%s^") (map#4 ^"%s^")", name, get_user_userid(id), authid, g_optionName[0], g_optionName[1], g_optionName[2], g_optionName[3]) + + new maxpl=get_maxplayers(); + new msg[256]; + for (new i = 1; i <= maxpl; i++) + { + if (is_user_connected(i) && !is_user_bot(i)) + { + // HACK: ADMIN_VOTE_MAP_{1,2} keys were designed very poorly. Remove all : and %s in it. + LookupLangKey(msg, charsmax(msg), "ADMIN_VOTE_MAP_1", i); + replace_all(msg, charsmax(msg), "%s", ""); + replace_all(msg, charsmax(msg), ":", ""); + trim(msg); + show_activity_id(i, id, name, msg); + } + } + + g_execResult = true + new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0 + + set_cvar_float("amx_last_voting", get_gametime() + vote_time) + g_voteRatio = get_cvar_float("amx_votemap_ratio") + g_Answer = "changelevel %s" + show_menu(0, keys, menu_msg, floatround(vote_time), (g_validMaps > 1) ? "Choose map: " : "Change map to ") + set_task(vote_time, "checkVotes", 99889988) + g_voteCaller = id + console_print(id, "%L", id, "VOTING_STARTED") + g_voteCount = {0, 0, 0, 0} + + return PLUGIN_HANDLED +} + +public cmdVote(id, level, cid) +{ + if (!cmd_access(id, level, cid, 4)) + return PLUGIN_HANDLED + + new Float:voting = get_cvar_float("amx_last_voting") + if (voting > get_gametime()) + { + console_print(id, "%L", id, "ALREADY_VOTING") + return PLUGIN_HANDLED + } + + if (voting && voting + get_cvar_float("amx_vote_delay") > get_gametime()) + { + console_print(id, "%L", id, "VOTING_NOT_ALLOW") + return PLUGIN_HANDLED + } + + new quest[48] + read_argv(1, quest, 47) + + if (contain(quest, "sv_password") != -1 || contain(quest, "rcon_password") != -1) + { + console_print(id, "%L", id, "VOTING_FORBIDDEN") + return PLUGIN_HANDLED + } + + new count=read_argc(); + + for (new i=0;i<4 && (i+2)<count;i++) + { + read_argv(i+2, g_optionName[i], sizeof(g_optionName[])-1); + } + + new authid[32], name[32] + + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + log_amx("Vote: ^"%s<%d><%s><>^" vote custom (question ^"%s^") (option#1 ^"%s^") (option#2 ^"%s^")", name, get_user_userid(id), authid, quest, g_optionName[0], g_optionName[1]) + + new maxpl=get_maxplayers(); + new msg[256]; + for (new i = 1; i <= maxpl; i++) + { + if (is_user_connected(i) && !is_user_bot(i)) + { + // HACK: ADMIN_VOTE_CUS_{1,2} keys were designed very poorly. Remove all : and %s in it. + LookupLangKey(msg, charsmax(msg), "ADMIN_VOTE_CUS_1", i); + replace_all(msg, charsmax(msg), "%s", ""); + replace_all(msg, charsmax(msg), ":", ""); + trim(msg); + show_activity_id(i, id, name, msg); + } + } + + new menu_msg[512], lVote[16] + + format(lVote, 15, "%L", LANG_SERVER, "VOTE") + + count-=2; + if (count>4) + { + count=4; + } + // count now shows how many options were listed + new keys=0; + for (new i=0;i<count;i++) + { + keys |= (1<<i); + } + + new len=formatex(menu_msg, sizeof(menu_msg)-1, g_coloredMenus ? "\y%s: %s\w^n^n" : "%s: %s^n^n", lVote, quest); + + for (new i=0;i<count;i++) + { + len+=formatex(menu_msg[len], sizeof(menu_msg) - 1 - len ,"%d. %s^n",i+1,g_optionName[i]); + } + g_execResult = false + + new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0 + + set_cvar_float("amx_last_voting", get_gametime() + vote_time) + g_voteRatio = get_cvar_float("amx_vote_ratio") + replace_all(quest,sizeof(quest)-1,"%",""); + format(g_Answer, 127, "%s - %%s", quest) + show_menu(0, keys, menu_msg, floatround(vote_time), "Vote: ") + set_task(vote_time, "checkVotes", 99889988) + g_voteCaller = id + console_print(id, "%L", id, "VOTING_STARTED") + g_voteCount = {0, 0, 0, 0} + g_yesNoVote = 0 + + return PLUGIN_HANDLED +} + +public cmdVoteKickBan(id, level, cid) +{ + if (!cmd_access(id, level, cid, 2)) + return PLUGIN_HANDLED + + new Float:voting = get_cvar_float("amx_last_voting") + if (voting > get_gametime()) + { + console_print(id, "%L", id, "ALREADY_VOTING") + return PLUGIN_HANDLED + } + + if (voting && voting + get_cvar_float("amx_vote_delay") > get_gametime()) + { + console_print(id, "%L", id, "VOTING_NOT_ALLOW") + return PLUGIN_HANDLED + } + + new cmd[32] + + read_argv(0, cmd, 31) + + new voteban = equal(cmd, "amx_voteban") + new arg[32] + read_argv(1, arg, 31) + + new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF) + + if (!player) + return PLUGIN_HANDLED + + if (voteban && is_user_bot(player)) + { + new imname[32] + + get_user_name(player, imname, 31) + console_print(id, "%L", id, "ACTION_PERFORMED", imname) + return PLUGIN_HANDLED + } + + new keys = MENU_KEY_1|MENU_KEY_2 + new menu_msg[256], lYes[16], lNo[16], lKickBan[16] + + format(lYes, 15, "%L", LANG_SERVER, "YES") + format(lNo, 15, "%L", LANG_SERVER, "NO") + format(lKickBan, 15, "%L", LANG_SERVER, voteban ? "BAN" : "KICK") + ucfirst(lKickBan) + get_user_name(player, arg, 31) + format(menu_msg, 255, g_coloredMenus ? "\y%s %s?\w^n^n1. %s^n2. %s" : "%s %s?^n^n1. %s^n2. %s", lKickBan, arg, lYes, lNo) + g_yesNoVote = 1 + + new bool:ipban=false; + + if (voteban) + { + get_user_authid(player, g_optionName[0], sizeof(g_optionName[])-1); + + // Do the same check that's in plmenu to determine if this should be an IP ban instead + if (equal("4294967295", g_optionName[0]) + || equal("HLTV", g_optionName[0]) + || equal("STEAM_ID_LAN", g_optionName[0]) + || equali("VALVE_ID_LAN", g_optionName[0])) + { + get_user_ip(player, g_optionName[0], sizeof(g_optionName[])-1, 1); + + ipban=true; + } + + } + else + { + num_to_str(get_user_userid(player), g_optionName[0], 31) + } + + new authid[32], name[32] + + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + log_amx("Vote: ^"%s<%d><%s><>^" vote %s (target ^"%s^")", name, get_user_userid(id), authid, voteban ? "ban" : "kick", arg) + + new maxpl=get_maxplayers(); + new msg[256]; + new right[256]; + new dummy[1]; + for (new i = 1; i <= maxpl; i++) + { + if (is_user_connected(i) && !is_user_bot(i)) + { + formatex(lKickBan, charsmax(lKickBan), "%L", i, voteban ? "BAN" : "KICK"); + + // HACK: ADMIN_VOTE_FOR{1,2} keys are really weird. Tokenize and ignore the text before the : + LookupLangKey(msg, charsmax(msg), "ADMIN_VOTE_FOR_1", i); + strtok(msg, dummy, 0, right, charsmax(right), ':'); + trim(right); + show_activity_id(i, id, name, right, lKickBan, arg); + } + } + + g_execResult = true + + new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0 + + set_cvar_float("amx_last_voting", get_gametime() + vote_time) + g_voteRatio = get_cvar_float(voteban ? "amx_voteban_ratio" : "amx_votekick_ratio") + + if (voteban) + { + if (ipban==true) + { + g_Answer = "addip 30.0 %s"; + } + else + { + g_Answer = "banid 30.0 %s kick"; + + } + } + else + { + g_Answer = "kick #%s"; + } + show_menu(0, keys, menu_msg, floatround(vote_time), voteban ? "Ban " : "Kick ") + set_task(vote_time, "checkVotes", 99889988) + g_voteCaller = id + console_print(id, "%L", id, "VOTING_STARTED") + g_voteCount = {0, 0, 0, 0} + + return PLUGIN_HANDLED +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/amxmod_compat/amxmod_compat.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/amxmod_compat/amxmod_compat.sma new file mode 100644 index 0000000..5eee7ae --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/amxmod_compat/amxmod_compat.sma @@ -0,0 +1,75 @@ +/** + * AMX Mod Compatibility engine + * by the AMX Mod X Development Team + */ + +#include <amxmodx> +#include <fun> //we want fun running for extra compatibility +#include <engine> //we want engine running for extra compatibility +#include <fakemeta> +#include <translator> +#define AMXMODX_NOAUTOLOAD +#include <cstrike> +#include <sqlx> + +#define MOD_NORMAL 0 +#define MOD_CSTRIKE 1 + +new g_ModType = MOD_NORMAL +new g_MaxPlayers + +#include "core.sma" +#include "vexdum.sma" +#include "mysql.sma" + +public plugin_init() +{ + register_plugin("AMX Mod Compat Engine", "1.76.rc4", "AMXX Dev Team") + + g_MaxPlayers = get_maxplayers() + + VexdUM_Register() +} + +public plugin_natives() +{ + set_module_filter("Plugin_ModuleFilter") + set_native_filter("Plugin_NativeFilter") + + new modname[32] + get_modname(modname, 31) + if (equali(modname, "cstrike") || equali(modname, "czero")) + { + g_ModType = MOD_CSTRIKE + } + + Core_Natives() + VexdUM_Natives() + MySQL_Natives() +} + +public Plugin_ModuleFilter(const module[]) +{ + if (equali(module, "sqlx") || equali(module, "cstrike")) + { + return PLUGIN_HANDLED + } + + return PLUGIN_CONTINUE +} + +public Plugin_NativeFilter(const name[], index, trap) +{ + if (!trap) + { + return PLUGIN_HANDLED + } + + return PLUGIN_CONTINUE +} + +public client_connect(id) +{ + VexdUM_ClientConnect(id) +} + diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/amxmod_compat/core.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/amxmod_compat/core.sma new file mode 100644 index 0000000..decb090 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/amxmod_compat/core.sma @@ -0,0 +1,301 @@ +/** + * AMX Mod Compatibility engine + * by the AMX Mod X Development Team + */ + +Core_Natives() +{ + /* implicit compatibility */ + register_native("VelocityByAim", "__VelocityByAim") + register_native("load_translations", "__load_translations") + register_native("is_user_authorized", "__is_user_authorized") + register_native("get_user_money", "__get_user_money") + register_native("set_user_money", "__set_user_money") + register_native("angle_to_vector", "__angle_to_vector") + register_native("fabs", "__fabs") + register_native("asin", "__asin") + register_native("sin", "__sin") + register_native("sinh", "__sinh") + register_native("acos", "__acos") + register_native("cos", "__cos") + register_native("cosh", "__cosh") + register_native("atan", "__atan") + register_native("atan2", "__atan2") + register_native("tan", "__tan") + register_native("tanh", "__tanh") + register_native("fsqroot", "__fsqroot") + register_native("fpower", "__fpower") + register_native("flog", "__flog") + register_native("get_cmdaccess", "__get_cmdaccess") + register_native("is_translated", "__is_translated") + register_native("get_plugincmdsnum", "__get_plugincmdsnum") + register_native("get_plugincmd", "__get_plugincmd") + register_native("get_plugincvarsnum", "__get_plugincvarsnum") + register_native("get_plugincvar", "__get_plugincvar") + register_native("is_module_running", "__is_module_running") + register_native("is_plugin_running", "__is_plugin_running") +} + +public __VelocityByAim(plid, num) +{ + new iIndex + new iVelocity + new Float:vRetValue[3] + + iIndex = get_param(1) + iVelocity = get_param(2) + + new ret = velocity_by_aim(iIndex, iVelocity, vRetValue) + set_array_f(3, vRetValue, 3) + + return ret +} + +public __load_translations(plid, num) +{ + static file[255] + + get_string(1, file, 254) + + return load_translations(file) +} + +public __is_user_authorized(plid, num) +{ + return is_user_authorized(get_param(1)) +} + +public __get_user_money(plid, num) +{ + return get_user_money(get_param(1)) +} + +public __set_user_money(plid, num) +{ + return set_user_money(get_param(1), get_param(2), get_param(3)) +} + +public __angle_to_vector(plid, num) +{ + new Float:angle[3] + new Float:vRetValue[3] + + get_array_f(1, angle, 3) + + new ret = angle_vector(angle, get_param(2), vRetValue) + set_array_f(3, vRetValue, 3) + + return ret +} + +public Float:__fabs(plid, num) +{ + new Float:value = get_param_f(1) + + return floatabs(value) +} + +public Float:__asin(plid, num) +{ + new Float:value = get_param_f(1) + + return floatasin(value, radian) +} + +public Float:__sin(plid, num) +{ + new Float:value = get_param_f(1) + + return floatsin(value, radian) +} + +public Float:__sinh(plid, num) +{ + new Float:value = get_param_f(1) + + return floatsinh(value, radian) +} + +public Float:__acos(plid, num) +{ + new Float:value = get_param_f(1) + + return floatacos(value, radian) +} + +public Float:__cos(plid, num) +{ + new Float:value = get_param_f(1) + + return floatcos(value, radian) +} + +public Float:__cosh(plid, num) +{ + new Float:value = get_param_f(1) + + return floatcosh(value, radian) +} + +public Float:__atan(plid, num) +{ + new Float:value = get_param_f(1) + + return floatatan(value, radian) +} + +public Float:__atan2(plid, num) +{ + new Float:value1 = get_param_f(1) + new Float:value2 = get_param_f(2) + + return floatatan2(value1, value2, radian) +} + +public Float:__tan(plid, num) +{ + new Float:value = get_param_f(1) + + return floattan(value, radian) +} + +public Float:__tanh(plid, num) +{ + new Float:value = get_param_f(1) + + return floattanh(value, radian) +} + +public Float:__fsqroot(plid, num) +{ + new Float:value = get_param_f(1) + + return floatsqroot(value) +} + +public Float:__fpower(plid, num) +{ + new Float:value = get_param_f(1) + new Float:exponent = get_param_f(2) + + return floatpower(value, exponent) +} + +public Float:__flog(plid, num) +{ + new Float:value = get_param_f(1) + new Float:base = get_param_f(2) + + return floatlog(value, base) +} + +//get_cmdaccess(cmd[], accessflags[], len) +public __get_cmdaccess(plid, num) +{ + static command[32], accessflags[32] + new ret + + get_string(1, command, 31) + + if ((ret=get_cmdaccess(command, accessflags, 31))) + { + set_string(2, accessflags, get_param(3)) + } + + return ret +} + +public __is_translated(plid, num) +{ + static string[512] + + get_string(1, string, 511) + + return is_translated(string) +} + +public __get_plugincmdsnum(plid, num) +{ + static plugin[64] + + get_string(1, plugin, 63) + + return get_plugincmdsnum(plugin, get_param(2)) +} + +public __get_plugincmd(plid, num) +{ + static plugin[64] + static command[32] + static accessflags[32] + static info[512] + + get_string(1, plugin, 63) + + if (get_plugincmd(plugin, + get_param(2), + command, + 31, + accessflags, + 31, + info, + 511, + get_param(9), + get_param(10))) + { + set_string(3, command, get_param(4)) + set_string(5, accessflags, get_param(6)) + set_string(7, info, get_param(8)) + + return 1 + } + + return 0 +} + +public __get_plugincvarsnum(plid, num) +{ + static plugin[64] + + get_string(1, plugin, 63) + + return get_plugincvarsnum(plugin, get_param(2)) +} + +//stock get_plugincvar(plugin[], index, cvar[], len1, value[], len2, flags=0) +public __get_plugincvar(plid, num) +{ + static plugin[64] + static cvar[32] + static value[512] + + get_string(1, plugin, 63) + + if (get_plugincvar(plugin, get_param(2), cvar, 31, value, 511, get_param(7))) + { + set_string(3, cvar, get_param(4)) + set_string(5, value, get_param(6)) + + return 1 + } + + return 0 +} + +public __is_module_running(plid, num) +{ + static module[64] + + get_string(1, module, 63) + + return is_module_running(module) +} + +public __is_plugin_running(plid, num) +{ + static plugin[64] + + get_string(1, plugin, 63) + + return is_plugin_running(plugin) +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/amxmod_compat/mysql.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/amxmod_compat/mysql.sma new file mode 100644 index 0000000..00c037d --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/amxmod_compat/mysql.sma @@ -0,0 +1,415 @@ +/** + * AMX Mod Compatibility engine + * by the AMX Mod X Development Team + */ + +#define MAX_CONNECTIONS 64 + +new Connections[MAX_CONNECTIONS+1] = {0} +new ConnectionTracker[MAX_CONNECTIONS+1] = {0} +new ConnectionErrors[MAX_CONNECTIONS+1][255] +new ConnectionQueries[MAX_CONNECTIONS+1] = {0} +new QueryPositions[MAX_CONNECTIONS+1] + +MySQL_Natives() +{ + register_native("mysql_connect", "__mysql_connect") + register_native("mysql_query", "__mysql_query") + register_native("mysql_error", "__mysql_error") + register_native("mysql_close", "__mysql_close") + register_native("mysql_nextrow", "__mysql_nextrow") + register_native("mysql_getfield", "__mysql_getfield") + register_native("mysql_getresult", "__mysql_getresult") + register_native("mysql_affected_rows", "__mysql_affected_rows") + register_native("mysql_num_fields", "__mysql_num_fields") + register_native("mysql_num_rows", "__mysql_num_rows") + register_native("mysql_field_name", "__mysql_field_name") + register_native("mysql_insert_id", "__mysql_insert_id") +} + +MakeConnectionIndex(Handle:cn) +{ + if (ConnectionTracker[0]) + { + new idx = ConnectionTracker[ConnectionTracker[0]] + ConnectionTracker[0]-- + Connections[idx] = _:cn + return idx + } else { + Connections[0]++ + if (Connections[0] > MAX_CONNECTIONS) + { + return 0 + } + + Connections[Connections[0]] = _:cn + return Connections[0] + } + + return 0 +} + +Handle:GetConnectionIndex(idx) +{ + if (idx < 1 || idx > MAX_CONNECTIONS || !Connections[idx]) + { + return Empty_Handle + } + + return Handle:Connections[idx] +} + +FreeConnectionIndex(idx) +{ + Connections[idx] = 0 + ConnectionTracker[0]++ + ConnectionTracker[ConnectionTracker[0]] = idx + ConnectionErrors[idx][0] = 0 + ConnectionQueries[idx] = 0 + QueryPositions[idx] = 0 +} + +/* + * Unlike the previous this does not check for a matching connection. + * Unless a plugin breaks I'm not going to take that step. + */ + +public __mysql_connect(plid, num) +{ + static host[255], user[128], pass[128], dbname[128], error[512] + new errcode + + get_string(1, host, 254) + get_string(2, user, 127) + get_string(3, pass, 127) + get_string(4, dbname, 127) + + new Handle:info = SQL_MakeDbTuple(host, user, pass, dbname) + new Handle:cn = SQL_Connect(info, errcode, error, 511) + + if (cn == Empty_Handle) + { + set_string(5, error, get_param(6)) + return 0 + } + + SQL_FreeHandle(info) + + new idx = MakeConnectionIndex(cn) + if (idx == 0) + { + set_string(5, "Reached max unclosed connections", get_param(6)) + return 0 + } + + ConnectionQueries[idx] = 0 + + return idx +} + +public __mysql_query(plid, num) +{ + static queryString[4096] + new cn_idx = get_param(1) + new Handle:cn + + if ((cn=GetConnectionIndex(cn_idx)) == Empty_Handle) + { + return 0 + } + + vdformat(queryString, 4095, 2, 3) + + new Handle:query = SQL_PrepareQuery(cn, "%s", queryString) + + if (!SQL_Execute(query)) + { + SQL_QueryError(query, ConnectionErrors[cn_idx], 254) + SQL_FreeHandle(query) + return 0 + } + + if (ConnectionQueries[cn_idx]) + { + SQL_FreeHandle(Handle:ConnectionQueries[cn_idx]) + } + + ConnectionQueries[cn_idx] = _:query + QueryPositions[cn_idx] = 0 + + return 1 +} + +public __mysql_error(plid, num) +{ + new cn_idx = get_param(1) + + if (Connections[cn_idx] < 1) + { + static error[255] + format(error, 254, "Invalid connection index: %d", cn_idx) + set_string(2, error, get_param(3)) + return 1 + } + + set_string(2, ConnectionErrors[cn_idx], get_param(3)) + + return 1 +} + +public __mysql_close(plid, num) +{ + new cn_idx = get_param(1) + + new Handle:cn = GetConnectionIndex(cn_idx) + + if (cn == Empty_Handle) + { + return 0 + } + + new Handle:query = Handle:ConnectionQueries[cn_idx] + + if (query != Empty_Handle) + { + SQL_FreeHandle(query) + } + + SQL_FreeHandle(cn) + + FreeConnectionIndex(cn_idx) + + return 1 +} + +public __mysql_nextrow(plid, num) +{ + new cn_idx = get_param(1) + + new Handle:cn = GetConnectionIndex(cn_idx) + if (cn == Empty_Handle) + { + return 0 + } + + new Handle:query = Handle:ConnectionQueries[cn_idx] + if (query == Empty_Handle) + { + return 0 + } + + if (QueryPositions[cn_idx] != 0) + { + SQL_NextRow(query) + } + + if (SQL_MoreResults(query)) + { + return ++QueryPositions[cn_idx] + } + + return 0 +} + +public __mysql_getresult(plid, num) +{ + new cn_idx = get_param(1) + + new Handle:cn = GetConnectionIndex(cn_idx) + if (cn == Empty_Handle) + { + return 0 + } + + new Handle:query = Handle:ConnectionQueries[cn_idx] + if (query == Empty_Handle) + { + return 0 + } + + if (!SQL_MoreResults(query)) + { + return 0 + } + + static name[64] + get_string(2, name, 63) + new column = SQL_FieldNameToNum(query, name) + if (column == -1) + { + log_error(AMX_ERR_NATIVE, "Invalid column name: %s", name) + return 0 + } + + switch (num) + { + case 2: + { + return SQL_ReadResult(query, column) + } + case 3: + { + new Float:fma + SQL_ReadResult(query, column, fma) + set_param_byref(3, _:fma) + } + case 4: + { + static str[2048] + SQL_ReadResult(query, column, str, 2047) + set_string(3, str, get_param_byref(4)) + } + } + + return 1 +} + +public __mysql_getfield(plid, num) +{ + new cn_idx = get_param(1) + + new Handle:cn = GetConnectionIndex(cn_idx) + if (cn == Empty_Handle) + { + return 0 + } + + new Handle:query = Handle:ConnectionQueries[cn_idx] + if (query == Empty_Handle) + { + return 0 + } + + if (!SQL_MoreResults(query)) + { + return 0 + } + + switch (num) + { + case 2: + { + return SQL_ReadResult(query, get_param(2)-1) + } + case 3: + { + new Float:fma + SQL_ReadResult(query, get_param(2)-1, fma) + set_param_byref(3, _:fma) + } + case 4: + { + static str[2048] + SQL_ReadResult(query, get_param(2)-1, str, 2047) + set_string(3, str, get_param_byref(4)) + } + } + + return 1 +} + +public __mysql_affected_rows(plid, num) +{ + new cn_idx = get_param(1) + + new Handle:cn = GetConnectionIndex(cn_idx) + if (cn == Empty_Handle) + { + return 0 + } + + new Handle:query = Handle:ConnectionQueries[cn_idx] + if (query == Empty_Handle) + { + return 0 + } + + return SQL_AffectedRows(query) +} + +public __mysql_num_fields(plid, num) +{ + new cn_idx = get_param(1) + + new Handle:cn = GetConnectionIndex(cn_idx) + if (cn == Empty_Handle) + { + return 0 + } + + new Handle:query = Handle:ConnectionQueries[cn_idx] + if (query == Empty_Handle) + { + return 0 + } + + return SQL_NumColumns(query) +} + +public __mysql_insert_id(plid, num) +{ + new cn_idx = get_param(1) + + new Handle:cn = GetConnectionIndex(cn_idx) + if (cn == Empty_Handle) + { + return 0 + } + + new Handle:query = Handle:ConnectionQueries[cn_idx] + if (query == Empty_Handle) + { + return 0 + } + + return SQL_GetInsertId(query) +} + +public __mysql_num_rows(plid, num) +{ + new cn_idx = get_param(1) + + new Handle:cn = GetConnectionIndex(cn_idx) + if (cn == Empty_Handle) + { + return 0 + } + + new Handle:query = Handle:ConnectionQueries[cn_idx] + if (query == Empty_Handle) + { + return 0 + } + + return SQL_NumResults(query) +} + +public __mysql_field_name(plid, num) +{ + new cn_idx = get_param(1) + + new Handle:cn = GetConnectionIndex(cn_idx) + if (cn == Empty_Handle) + { + return 0 + } + + new Handle:query = Handle:ConnectionQueries[cn_idx] + if (query == Empty_Handle) + { + return 0 + } + + new column = get_param(2) - 1 + if (column < 0 || column >= SQL_NumColumns(query)) + { + return 0 + } + + new field[64] + SQL_FieldNumToName(query, column, field, 63) + + set_string(3, field, get_param(4)) + + return 1 +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/amxmod_compat/vexdum.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/amxmod_compat/vexdum.sma new file mode 100644 index 0000000..4647df3 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/amxmod_compat/vexdum.sma @@ -0,0 +1,730 @@ +/** + * AMX Mod Compatibility engine + * by the AMX Mod X Development Team + */ + +#include <VexdUM_const> +#include <VexdUM_stock> + +/* Forwards */ +new g_FwdTouch +new g_FwdThink +new g_FwdSpawn +new g_FwdClientPreThink +new g_FwdClientPostThink +new g_FwdEmitSound +new g_FwdEmitAmbientSound +new g_FwdSetModel +new g_FwdTraceLine +new g_FwdSetCliKeyValue +new g_FwdKeyValue +new g_PlayerModels[33][64] +new g_PlayerModeled[33] + +/* User Messages */ +new g_msgDamage +new g_msgDeathMsg +new g_msgScoreInfo + +new g_LastTrace = 0 + +VexdUM_Register() +{ + /* Fakemeta Hooks */ + register_forward(FM_EmitSound, "Hook_FM_EmitSound") + register_forward(FM_EmitAmbientSound, "Hook_FM_EmitAmbientSound") + register_forward(FM_SetModel, "Hook_FM_SetModel") + register_forward(FM_SetClientKeyValue, "Hook_FM_SetClientKeyValue") + register_forward(FM_KeyValue, "Hook_FM_KeyValue") + register_forward(FM_Touch, "Hook_FM_Touch") + register_forward(FM_Think, "Hook_FM_Think") + register_forward(FM_Spawn, "Hook_FM_Spawn") + register_forward(FM_PlayerPreThink, "Hook_FM_PlayerPreThink") + register_forward(FM_PlayerPostThink, "Hook_FM_PlayerPostThink") + register_forward(FM_ClientUserInfoChanged, "Hook_ClientUserInfoChanged") + + // Only register the traceline forward if there actually is a plugin + // that needs it. Otherwise this will mess with set_user_hitzones + + new pluginnum = get_pluginsnum(); + for (new i = 0; i < pluginnum; i++) + { + if (plugin_flags(0, i) & AMX_FLAG_OLDFILE && // plugin is an AMX plugin being emulated + get_func_id("traceline", i) != -1) // plugin needs traceline + { + register_forward(FM_TraceLine, "Hook_FM_TraceLine") + break; + } + + } + /* Global Forwards */ + g_FwdTouch = CreateMultiForwardEx("entity_touch", ET_STOP, FORWARD_ONLY_OLD, FP_CELL, FP_CELL) + g_FwdThink = CreateMultiForwardEx("entity_think", ET_STOP, FORWARD_ONLY_OLD, FP_CELL) + g_FwdSpawn = CreateMultiForwardEx("entity_spawn", ET_STOP, FORWARD_ONLY_OLD, FP_CELL) + g_FwdClientPreThink = CreateMultiForwardEx("client_prethink", ET_IGNORE, FORWARD_ONLY_OLD, FP_CELL) + g_FwdClientPostThink = CreateMultiForwardEx("client_postthink", ET_IGNORE, FORWARD_ONLY_OLD, FP_CELL) + g_FwdEmitSound = CreateMultiForwardEx("emitsound", ET_STOP, FORWARD_ONLY_OLD, FP_CELL, FP_STRING) + g_FwdEmitAmbientSound = CreateMultiForwardEx("emitambientsound", ET_STOP, FORWARD_ONLY_OLD, FP_CELL, FP_STRING) + g_FwdSetModel = CreateMultiForwardEx("set_model", ET_STOP, FORWARD_ONLY_OLD, FP_CELL, FP_STRING) + g_FwdTraceLine = CreateMultiForwardEx("traceline", ET_STOP, FORWARD_ONLY_OLD, FP_CELL) + g_FwdSetCliKeyValue = CreateMultiForwardEx("setclientkeyvalue", ET_STOP, FORWARD_ONLY_OLD, FP_CELL, FP_STRING, FP_STRING) + g_FwdKeyValue = CreateMultiForwardEx("keyvalue", ET_STOP, FORWARD_ONLY_OLD, FP_CELL) + + /* User Messages */ + g_msgDamage = get_user_msgid("Damage") + g_msgDeathMsg = get_user_msgid("DeathMsg") + g_msgScoreInfo = get_user_msgid("ScoreInfo") +} + +VexdUM_Natives() +{ + /* implicit compatibility */ + register_native("is_entity", "__is_entity") + register_native("find_entity", "__find_entity") + register_native("find_entity_sphere", "__find_entity_sphere") + register_native("in_view_cone", "__in_view_cone") + register_native("get_offset_int", "__get_offset_int") + register_native("set_offset_int", "__set_offset_int") + register_native("trace_line", "__trace_line") + register_native("traceline_get_int", "__traceline_get_int") + register_native("traceline_set_int", "__traceline_set_int") + register_native("traceline_get_edict", "__traceline_get_edict") + register_native("traceline_set_edict", "__traceline_set_edict") + register_native("traceline_set_float", "__traceline_set_float") + register_native("can_see", "__can_see") + register_native("user_spawn", "__user_spawn") + register_native("get_maxentities", "__get_maxentities") + register_native("PointContents", "__PointContents") + register_native("DispatchKeyValue", "__DispatchKeyValue") + register_native("entity_use","__entity_use") + register_native("get_num_ents","__get_num_ents") + register_native("take_damage","__take_damage") + + if (g_ModType == MOD_CSTRIKE) + { + register_native("set_user_model", "__cs_set_user_model") + } else { + register_native("set_user_model", "__set_user_model") + } +} + +VexdUM_ClientConnect(id) +{ + g_PlayerModels[id][0] = 0 + g_PlayerModeled[id] =0 +} + +SetClientKeyValue(id, const key[], const value[]) +{ + new buffer = engfunc(EngFunc_GetInfoKeyBuffer, id) + + return engfunc(EngFunc_SetClientKeyValue, id, buffer, key, value) +} + +GetClientKeyValue(id, const key[], value[], maxlen) +{ + new buffer = engfunc(EngFunc_GetInfoKeyBuffer, id) + + engfunc(EngFunc_InfoKeyValue, buffer, key, value, maxlen) +} + +Death(victim, killer, weapon[64], hs) +{ + if(pev(victim,pev_takedamage) > DAMAGE_NO) + { + new inflictor = pev(killer,pev_owner) + if(pev(killer,pev_flags) & (FL_CLIENT | FL_FAKECLIENT)) + { + if(equal(weapon,"")) + { + pev(killer,pev_viewmodel2,weapon,63) + + replace(weapon,63,"models/v_","") + weapon[strlen(weapon) - 4] = '^0' + } + } + else if(inflictor > 0 && inflictor < get_maxplayers()) + { + if(equal(weapon,"")) + { + pev(killer,pev_viewmodel2,weapon,63) + + replace(weapon,63,"weapon_","") + replace(weapon,63,"monster_","") + replace(weapon,63,"func_","") + } + + if(inflictor == victim) + { + killer = victim + } else { + killer = inflictor + } + } + + message_begin(MSG_ALL,g_msgDeathMsg) + write_byte(killer) + write_byte(victim) + write_byte(hs) + write_string(weapon) + message_end() + + new vname[32],vauthid[32],vteam[32] + get_user_name(victim,vname,31) + get_user_authid(victim,vauthid,31) + get_user_team(victim,vteam,31) + + if(victim == killer) + { + log_message("^"%s<%i><%s><%s>^" killed self with ^"%s^"^n",vname,get_user_userid(victim), + vauthid,vteam,weapon) + } + else if(pev(killer,pev_flags) & (FL_CLIENT | FL_FAKECLIENT)) + { + new kname[32],kauthid[32],kteam[32],team + get_user_name(killer,kname,31) + get_user_authid(killer,kauthid,31) + team = get_user_team(killer,kteam,31) + + log_message("^"%s<%i><%s><%s>^" killed ^"%s<%i><%s><%s>^" with ^"%s^"^n",kname,get_user_userid(killer), + kauthid,kteam,vname,get_user_userid(victim),vauthid,vteam,weapon) + + new Float:frags + pev(killer,pev_frags,frags) + set_pev(killer,pev_frags,frags+1.0) + + message_begin(MSG_ALL,g_msgScoreInfo) + write_byte(killer) + write_short(floatround(frags)) + write_short(get_user_deaths(killer)) + write_short(0) + write_short(team) + message_end() + + pev(victim,pev_frags,frags) + set_pev(victim,pev_frags,frags+1.0) + } else { + log_message("^"%s<%i><%s><%s>^" killed by ^"%s^"^n",vname,get_user_userid(victim),vauthid,vteam,weapon) + } + + set_msg_block(g_msgDeathMsg,BLOCK_ONCE) + dllfunc(DLLFunc_ClientKill,victim) + } +} + +public __is_entity(plid, num) +{ + new ent = get_param(1) + return is_entity(ent) +} + +public __find_entity(plid, num) +{ + static entstr[256] + new startEnt, type + + startEnt = get_param(1) + get_string(2, entstr, 255) + type = get_param(3) + + return find_entity(startEnt, entstr, type) +} + +public __find_entity_sphere(plid, num) +{ + new ent + new Float:orig[3] + new Float:radius + + ent = get_param(1) + get_array_f(2, orig, 3) + radius = get_param_f(3) + + return find_entity_sphere(ent, orig, radius) +} + +public __in_view_cone(plid, num) +{ + new ent + new Float:orig[3] + + ent = get_param(1) + get_array_f(2, orig, 3) + + return in_view_cone(ent, orig) +} + +public __get_offset_int(plid, num) +{ + new ent = get_param(1) + new offs = get_param(2) + new linux = get_param(3) + + return get_pdata_int(ent, offs, linux) +} + +public __set_offset_int(plid, num) +{ + return set_offset_int(get_param(1), get_param(2), get_param(3), get_param(4)) +} + +public __trace_line(plid, num) +{ + new ent = get_param(1) + + new Float:vStart[3], Float:vEnd[3], Float:vReturn[3] + + get_array_f(2, vStart, 3) + get_array_f(3, vEnd, 3) + + if (ent == FM_NULLENT) + engfunc(EngFunc_TraceLine, vStart, vEnd, IGNORE_MONSTERS, 0, 0) + else + engfunc(EngFunc_TraceLine, vStart, vEnd, DONT_IGNORE_MONSTERS, ent, 0) + + get_tr2(0, TraceResult:TR_vecEndPos, vReturn) + + set_array_f(4, vReturn, 3) + + new traceHit = get_tr2(0, TraceResult:TR_pHit) + + if (!pev_valid(traceHit)) + return FM_NULLENT + + return traceHit +} + +public __traceline_get_int(plid, num) +{ + new iSet = get_param(1) + new iValue = 0 + + switch (iSet) + { + case TR_INT_fAllSolid: + iValue = get_tr2(g_LastTrace, TraceResult:TR_AllSolid) + case TR_INT_fStartSolid: + iValue = get_tr2(g_LastTrace, TraceResult:TR_StartSolid) + case TR_INT_fInOpen: + iValue = get_tr2(g_LastTrace, TraceResult:TR_InOpen) + case TR_INT_fInWater: + iValue = get_tr2(g_LastTrace, TraceResult:TR_InWater) + case TR_INT_iHitgroup: + iValue = get_tr2(g_LastTrace, TraceResult:TR_iHitgroup) + default: + log_error(AMX_ERR_NATIVE, "Invalid TR_ parameter") + } + + return iValue +} + +public __traceline_set_int(plid, num) +{ + new iSet = get_param(1) + new iValue = get_param(2) + + switch (iSet) + { + case TR_INT_fAllSolid: + set_tr2(g_LastTrace, TraceResult:TR_AllSolid, iValue) + case TR_INT_fStartSolid: + set_tr2(g_LastTrace, TraceResult:TR_StartSolid, iValue) + case TR_INT_fInOpen: + set_tr2(g_LastTrace, TraceResult:TR_InOpen, iValue) + case TR_INT_fInWater: + set_tr2(g_LastTrace, TraceResult:TR_InWater, iValue) + case TR_INT_iHitgroup: + set_tr2(g_LastTrace, TraceResult:TR_iHitgroup, iValue) + default: + { + log_error(AMX_ERR_NATIVE, "Invalid TR_ parameter") + return 0 + } + } + + return 1 +} + +public __traceline_get_edict(plid, num) +{ + new iSet = get_param(1) + new iValue = 0 + + switch (iSet) + { + case TR_ENT_pHit: + iValue = get_tr2(g_LastTrace, TraceResult:TR_pHit) + default: + log_error(AMX_ERR_NATIVE, "Invalid TR_ parameter") + } + + return iValue +} + +public __traceline_set_edict(plid, num) +{ + new iSet = get_param(1) + new iValue = get_param(2) + + switch (iSet) + { + case TR_ENT_pHit: + set_tr2(g_LastTrace, TraceResult:TR_pHit, iValue) + default: + { + log_error(AMX_ERR_NATIVE, "Invalid TR_ parameter") + return 0 + } + } + + return 1 +} + +public Float:__traceline_get_float(plid, num) +{ + new iSet = get_param(1) + new Float:fValue = 0.0 + + switch (iSet) + { + case TR_FL_flFraction: + get_tr2(g_LastTrace, TraceResult:TR_flFraction, fValue) + case TR_FL_flPlaneDist: + get_tr2(g_LastTrace, TraceResult:TR_flPlaneDist, fValue) + default: + log_error(AMX_ERR_NATIVE, "Invalid TR_ parameter") + } + + return fValue +} + +public __traceline_set_float(plid, num) +{ + new iSet = get_param(1) + new Float:fValue = get_param_f(2) + + switch (iSet) + { + case TR_FL_flFraction: + set_tr2(g_LastTrace, TraceResult:TR_flFraction, fValue) + case TR_FL_flPlaneDist: + set_tr2(g_LastTrace, TraceResult:TR_flPlaneDist, fValue) + default: + { + log_error(AMX_ERR_NATIVE, "Invalid TR_ parameter") + return 0 + } + } + + return 1 +} + +public __traceline_get_vector(plid, num) +{ + new iSet = get_param(1) + new Float:vValue[3] + + switch (iSet) + { + case TR_VEC_vecEndPos: + get_tr2(g_LastTrace, TraceResult:TR_vecEndPos, vValue) + case TR_VEC_vecPlaneNormal: + get_tr2(g_LastTrace, TraceResult:TR_vecPlaneNormal, vValue) + default: + { + log_error(AMX_ERR_NATIVE, "Invalid TR_ parameter") + return 0 + } + } + + set_array_f(2, vValue, 3) + + return 1 +} + +public __traceline_set_vector(plid, num) +{ + new iSet = get_param(1) + new Float:vValue[3] + + get_array_f(2, vValue, 3) + + switch (iSet) + { + case TR_VEC_vecEndPos: + set_tr2(g_LastTrace, TraceResult:TR_vecEndPos, vValue) + case TR_VEC_vecPlaneNormal: + set_tr2(g_LastTrace, TraceResult:TR_vecPlaneNormal, vValue) + default: + { + log_error(AMX_ERR_NATIVE, "Invalid TR_ parameter") + return 0 + } + } + + return 1 +} + +public __can_see(plid, num) +{ + return can_see(get_param(1), get_param(2)) +} + +public __user_spawn(plid, num) +{ + return dllfunc(DLLFunc_Spawn, get_param(1)) +} + +public __set_user_model(plid, num) +{ + new id = get_param(1) + if (id < 1 || id > g_MaxPlayers) + { + return 0 + } + + new model[64] + get_string(2, model, 63) + if (model[0] == 0) + { + if (!g_PlayerModeled[id]) + { + return 0 + } + g_PlayerModeled[id] = 0 + g_PlayerModels[id][0] = 0 + dllfunc(DLLFunc_ClientUserInfoChanged, id) + } else { + copy(g_PlayerModels[id], 63, model) + g_PlayerModeled[id] = 1 + SetClientKeyValue(id, "model", model) + } + + return 1 +} + +public __cs_set_user_model(plid, num) +{ + new id = get_param(1) + new model[64] + + get_string(2, model, 63) + + return cs_set_user_model(id, model) +} + +public __get_maxentities(plid, num) +{ + return get_maxentities() +} + +public __PointContents(plid, num) +{ + new Float:vCheckAt[3] + + get_array_f(1, vCheckAt, 3) + + return point_contents(vCheckAt) +} + +public __DispatchKeyValue(plid, num) +{ + new ent = get_param(1) + + new szClassname[32], szKey[32], szValue[32] + + if (pev_valid(ent)) + { + get_string(2, szKey, 31) + get_string(3, szValue, 31) + pev(ent, pev_classname, szClassname, 31) + + set_kvd(0, KV_ClassName, szClassname) + set_kvd(0, KV_KeyName, szKey) + set_kvd(0, KV_Value, szValue) + set_kvd(0, KV_fHandled, 0) + + dllfunc(DLLFunc_KeyValue, ent, 0) + } + + return 1 +} + +public __entity_use(plid, num) +{ + new entUsed = get_param(1) + new entOther = get_param(2) + return dllfunc(DLLFunc_Use,entUsed,entOther) +} + +public __get_num_ents(plid, num) +{ + return engfunc(EngFunc_NumberOfEntities) +} + +public __take_damage(plid, num) +{ + new victim = get_param(1) + new attacker = get_param(2) + new Float:orig[3] + get_array_f(3,orig,3) + new Float:dmg = get_param_f(4) + new bit = get_param(5) + new wpnName[64] + get_string(6,wpnName,63) + new hs = get_param(7) + + if(pev(victim,pev_takedamage) > DAMAGE_NO) + { + set_pev(victim,pev_dmg_inflictor,attacker) + + new Float:olddmg + pev(victim,pev_dmg_take,olddmg) + set_pev(victim,pev_dmg_take,olddmg+dmg) + + message_begin(MSG_ONE, g_msgDamage, {0,0,0} , victim) + write_byte(0) + write_byte(floatround(olddmg+dmg)) + write_long(bit) + write_coord(floatround(orig[0])) + write_coord(floatround(orig[1])) + write_coord(floatround(orig[2])) + message_end() + + new Float:health + pev(victim,pev_health,health) + if((dmg >= health) && (health > 0.0)) + { + Death(victim,attacker,wpnName,hs) + } else { + set_pev(victim,pev_health,health-dmg) + } + } +} + +/********************************* + ***** HOOKS ********************* + *********************************/ + +public Hook_ClientUserInfoChanged(id, buffer) +{ + if (g_PlayerModeled[id] && (pev(id, pev_deadflag) == DEAD_NO)) + { + return FMRES_SUPERCEDE + } + + return FMRES_IGNORED +} + +public Hook_FM_EmitSound(entid, channel, const sample[]) //we don't care about the rest +{ + new ret + + ExecuteForward(g_FwdEmitSound, ret, entid, sample) + + return (ret == PLUGIN_HANDLED) ? FMRES_SUPERCEDE : FMRES_IGNORED +} + +public Hook_FM_EmitAmbientSound(entid, Float:pos[3], const sample[]) //we don't care about the rest +{ + new ret + + ExecuteForward(g_FwdEmitAmbientSound, ret, entid, sample) + + return (ret == PLUGIN_HANDLED) ? FMRES_SUPERCEDE : FMRES_IGNORED +} + +public Hook_FM_SetModel(entid, const model[]) +{ + new ret + + ExecuteForward(g_FwdSetModel, ret, entid, model) + + return (ret == PLUGIN_HANDLED) ? FMRES_SUPERCEDE : FMRES_IGNORED +} + +public Hook_FM_TraceLine(Float:v1[3], Float:v2[3], noMonsters, skip_ent, ptr) +{ + g_LastTrace = ptr + + engfunc(EngFunc_TraceLine, v1, v2, noMonsters, skip_ent, ptr) + + new ret + + ExecuteForward(g_FwdTraceLine, ret, skip_ent) + + return (ret == PLUGIN_HANDLED) ? FMRES_SUPERCEDE : FMRES_IGNORED +} + +public Hook_FM_SetClientKeyValue(id, const infobuffer[], const key[], const value[]) +{ + new ret + + ExecuteForward(g_FwdSetCliKeyValue, ret, id, key, value) + + return (ret == PLUGIN_HANDLED) ? FMRES_SUPERCEDE : FMRES_IGNORED +} + +public Hook_FM_KeyValue(ent, kvd) +{ + new ret + + ExecuteForward(g_FwdKeyValue, ret, ent) + + return (ret == PLUGIN_HANDLED) ? FMRES_SUPERCEDE : FMRES_IGNORED +} + +public Hook_FM_Touch(ent1, ent2) +{ + new ret + + ExecuteForward(g_FwdTouch, ret, ent1, ent2) + + return (ret == PLUGIN_HANDLED) ? FMRES_SUPERCEDE : FMRES_IGNORED +} + +public Hook_FM_Think(entid) +{ + new ret + + ExecuteForward(g_FwdThink, ret, entid) + + return (ret == PLUGIN_HANDLED) ? FMRES_SUPERCEDE : FMRES_IGNORED +} + +public Hook_FM_Spawn(entid) +{ + new ret + + ExecuteForward(g_FwdSpawn, ret, entid) + + return (ret == PLUGIN_HANDLED) ? FMRES_SUPERCEDE : FMRES_IGNORED +} + +public Hook_FM_PlayerPreThink(id) +{ + new ret + + ExecuteForward(g_FwdClientPreThink, ret, id) + + return (ret == PLUGIN_HANDLED) ? FMRES_SUPERCEDE : FMRES_IGNORED +} + +public Hook_FM_PlayerPostThink(id) +{ + new ret + + if (g_PlayerModeled[id]) + { + new model[64] + GetClientKeyValue(id, "model", model, 63) + if (!equal(g_PlayerModels[id], model)) + { + SetClientKeyValue(id, "model", g_PlayerModels[id]) + } + } + + ExecuteForward(g_FwdClientPostThink, ret, id) + + return (ret == PLUGIN_HANDLED) ? FMRES_SUPERCEDE : FMRES_IGNORED +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/amxxpc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/amxxpc new file mode 100644 index 0000000..5f060f0 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/amxxpc differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/amxxpc32.so b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/amxxpc32.so new file mode 100644 index 0000000..c6aa6b7 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/amxxpc32.so differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/antiflood.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/antiflood.sma new file mode 100644 index 0000000..a96e30d --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/antiflood.sma @@ -0,0 +1,78 @@ +/* AMX Mod X +* Anti Flood Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> + +new Float:g_Flooding[33] = {0.0, ...} +new g_Flood[33] = {0, ...} + +new amx_flood_time; + +public plugin_init() +{ + register_plugin("Anti Flood", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("antiflood.txt") + register_clcmd("say", "chkFlood") + register_clcmd("say_team", "chkFlood") + amx_flood_time=register_cvar("amx_flood_time", "0.75") +} + +public chkFlood(id) +{ + new Float:maxChat = get_pcvar_float(amx_flood_time) + + if (maxChat) + { + new Float:nexTime = get_gametime() + + if (g_Flooding[id] > nexTime) + { + if (g_Flood[id] >= 3) + { + client_print(id, print_notify, "** %L **", id, "STOP_FLOOD") + g_Flooding[id] = nexTime + maxChat + 3.0 + return PLUGIN_HANDLED + } + g_Flood[id]++ + } + else if (g_Flood[id]) + { + g_Flood[id]-- + } + + g_Flooding[id] = nexTime + maxChat + } + + return PLUGIN_CONTINUE +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/cmdmenu.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/cmdmenu.sma new file mode 100644 index 0000000..f9de98a --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/cmdmenu.sma @@ -0,0 +1,494 @@ +/* AMX Mod X +* Commands Menu Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> +#include <amxmisc> + +// Precache sounds from speech.ini - comment this line to disable +#define PRECACHE_SPEECHINI + +/* Commands Menus */ + +#define MAX_CMDS_LAYERS 3 + +new g_cmdMenuName[MAX_CMDS_LAYERS][] = +{ + "CMD_MENU", + "CONF_MENU", + "SPE_MENU" +} + +new g_cmdMenuCmd[MAX_CMDS_LAYERS][] = +{ + "amx_cmdmenu", + "amx_cfgmenu", + "amx_speechmenu" +} + +new g_cmdMenuCfg[MAX_CMDS_LAYERS][] = +{ + "cmds.ini", + "configs.ini", + "speech.ini" +} + +new g_cmdMenuHelp[MAX_CMDS_LAYERS][] = +{ + "- displays commands menu", + "- displays configs menu", + "- displays speech menu" +} + +/* End of Commands Menu */ + +#define MAX_CMDS 64 +#define MAX_CVARS 48 + +new g_cmdName[MAX_CMDS*MAX_CMDS_LAYERS][32] +new g_cmdCmd[MAX_CMDS*MAX_CMDS_LAYERS][64] +new g_cmdMisc[MAX_CMDS*MAX_CMDS_LAYERS][2] +new g_cmdNum[MAX_CMDS_LAYERS] + +new g_cvarNames[MAX_CVARS][32] +new g_cvarMisc[MAX_CVARS][3] +new g_cvarCmd[MAX_CVARS*5][32] +new g_cvarCmdNum +new g_cvarNum + +new g_menuPosition[33] +new g_menuSelect[33][MAX_CMDS] +new g_menuSelectNum[33] +new g_menuLayer[33] + +new g_coloredMenus + + +public plugin_init() +{ + register_plugin("Commands Menu", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("cmdmenu.txt") + register_dictionary("common.txt") + + new configsDir[64], config[64] + get_configsdir(configsDir, 63) + + for (new a = 0; a < MAX_CMDS_LAYERS; ++a) + { + new MenuName[64] + + format(MenuName, 63, "%L", "en", g_cmdMenuName[a]) + register_menucmd(register_menuid(MenuName), 1023, "actionCmdMenu") + register_clcmd(g_cmdMenuCmd[a], "cmdCmdMenu", ADMIN_MENU, g_cmdMenuHelp[a]) + format(config, 63, "%s/%s", configsDir, g_cmdMenuCfg[a]) + loadCmdSettings(config, a) + } + + register_menucmd(register_menuid("Cvars Menu"), 1023, "actionCvarMenu") + register_clcmd("amx_cvarmenu", "cmdCvarMenu", ADMIN_CVAR, "- displays cvars menu") + + new cvars_ini_file[64]; + format(cvars_ini_file, 63, "%s/%s", configsDir, "cvars.ini"); + loadCvarSettings(cvars_ini_file) + + g_coloredMenus = colored_menus() +} + +#if defined PRECACHE_SPEECHINI +public plugin_precache( ) +{ + new configsDir[64], config[64]; + get_configsdir( configsDir, 63 ); + formatex( config, 63, "%s/%s", configsDir, "speech.ini" ); + + new fp = fopen( config, "rt" ); // Read file as text + + if ( ! fp ) // File doesn't exists + return 0; + + new szText[256]; + new line = 0; + new szName[32], szSound[128], sndExt[5]; + new field1[32], field2[64], field3[64]; + new fieldNums = 0; + + while ( line < MAX_CMDS && ! feof( fp ) ) // Loop till MAX_CMDS or EOF + { + fgets( fp, szText, 255 ); // Store line content + + /* Strips newline */ + new len = strlen( szText ); + if ( len != 0 && szText[len-1] == '^n' ) // len != 0 because if the last line of the file is empty, there's no newline + szText[--len] = 0; + + if ( len == 0 || szText[0] == ';' || szText[0] == '/' ) // Line is empty or a comment + continue; + + parse( szText, szName, 31, szSound, 127 ); + fieldNums = parse( szSound, field1, 31, field2, 63, field3, 63 ); + if ( fieldNums == 2 && field1[0] == 's' ) // .wav (spk) + { + copy( szSound, 127, field2 ); + copy( sndExt, 4, ".wav" ); + } + else if ( fieldNums == 3 && field1[0] == 'm' && ( field2[0] == 'p' || field2[0] == 'l' ) ) // .mp3 (mp3 play | mp3 loop) + { + copy( szSound, 127, field3 ); + copy( sndExt, 4, ".mp3" ); + } + else // WTH is this sound, drop it. + continue; + + replace_all( szSound, 127, "\'", "" ); // Strips all ugly (and sometimes useless) \' + + if ( szSound[0] == '/' ) + replace( szSound, 127, "/", "" ); // Strip leading slash + + if ( sndExt[1] == 'm' || ( ! equali( szSound, "vox", 3 ) && ! equali( szSound, "fvox", 4 ) && ! equali( szSound, "barney", 6 ) && ! equali( szSound, "hgrunt", 6 ) ) ) + { + // SzSound is a mp3, or a custom wav (not a vox, fvox, or default sound from HL pak) + if ( !equali( szSound[strlen(szSound)-4], sndExt ) ) + add( szSound, 127, sndExt ); // Add filetype extension if it isn't already specified + if ( sndExt[1] == 'w' ) + format( szSound, 127, "sound/%s", szSound ); // spk basedir is $moddir/sound, but mp3 play is $moddir, fix this for the file_exists check + if ( file_exists( szSound ) ) + { + if ( sndExt[1] == 'm') + { + precache_generic( szSound ); // mp3 + } + else + { + replace( szSound, 127, "sound/", "" ); // wav, strip the leading sound/ we added for our file_exists check + precache_sound( szSound ); + } + } + } + line++ + } + fclose( fp ); // Close file + return line; +} +#endif + +/* Commands menu */ + +public actionCmdMenu(id, key) +{ + switch (key) + { + case 8: displayCmdMenu(id, ++g_menuPosition[id]) + case 9: displayCmdMenu(id, --g_menuPosition[id]) + default: + { + new option = g_menuSelect[id][g_menuPosition[id] * 8 + key] + new flags = g_cmdMisc[option][1] + + if (flags & 1) + server_cmd("%s", g_cmdCmd[option]) + else if (flags & 2) + client_cmd(id, "%s", g_cmdCmd[option]) + else if (flags & 4) + client_cmd(0, "%s", g_cmdCmd[option]) + + if (flags & 8) + displayCmdMenu(id, g_menuPosition[id]) + } + } + + return PLUGIN_HANDLED +} + +displayCmdMenu(id, pos) +{ + if (pos < 0) + return + + new menuBody[512] + new b = 0 + new start = pos * 8 + + if (start >= g_menuSelectNum[id]) + start = pos = g_menuPosition[id] = 0 + + new limit = (g_menuSelectNum[id] / 8 + ((g_menuSelectNum[id] % 8))) + new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, g_cmdMenuName[g_menuLayer[id]], pos + 1, (limit == 0) ? 1 : limit) + new end = start + 8 + new keys = MENU_KEY_0 + + if (end > g_menuSelectNum[id]) + end = g_menuSelectNum[id] + + for (new a = start; a < end; ++a) + { + if (g_cmdCmd[g_menuSelect[id][a]][0] == '-') + { + if (g_coloredMenus) + len += format(menuBody[len], 511-len, "\d%s^n\w", g_cmdName[g_menuSelect[id][a]]) + else + len += format(menuBody[len], 511-len, "%s^n", g_cmdName[g_menuSelect[id][a]]) + ++b + } else { + keys |= (1<<b) + len += format(menuBody[len], 511-len, "%d. %s^n", ++b, g_cmdName[g_menuSelect[id][a]]) + } + } + + if (end != g_menuSelectNum[id]) + { + format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") + keys |= MENU_KEY_9 + } + else + format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") + + new MenuName[64] + + format(MenuName, 63, "%L", "en", g_cmdMenuName[g_menuLayer[id]]) + show_menu(id, keys, menuBody, -1, MenuName) +} + +public cmdCmdMenu(id, level, cid) +{ + if (!cmd_access(id, level, cid, 1)) + return PLUGIN_HANDLED + + new szCmd[32] + read_argv(0, szCmd, 31) + new lvl = 0 + + while (lvl < MAX_CMDS_LAYERS) + { + if (equal(g_cmdMenuCmd[lvl], szCmd)) + break + ++lvl + } + + g_menuLayer[id] = lvl + g_menuSelectNum[id] = 0 + + new a = lvl * MAX_CMDS + new d, c = 0 + + while (c < g_cmdNum[lvl]) + { + d = a + c + + if (access(id, g_cmdMisc[d][0])) + { + g_menuSelect[id][g_menuSelectNum[id]++] = d + } + + ++c + } + + displayCmdMenu(id, g_menuPosition[id] = 0) + + return PLUGIN_HANDLED +} + +loadCmdSettings(szFilename[], level) +{ + if (!file_exists(szFilename)) + return 0 + + new text[256], szFlags[32], szAccess[32] + new a, pos = 0, c, d = level * MAX_CMDS + + while (g_cmdNum[level] < MAX_CMDS && read_file(szFilename, pos++, text, 255, a)) + { + if (text[0] == ';') continue + c = d + g_cmdNum[level] + + if (parse(text, g_cmdName[c], 31, g_cmdCmd[c], 63, szFlags, 31, szAccess, 31) > 3) + { + while (replace(g_cmdCmd[c], 63, "\'", "^"")) + { + // do nothing + } + + g_cmdMisc[c][1] = read_flags(szFlags) + g_cmdMisc[c][0] = read_flags(szAccess) + g_cmdNum[level]++ + } + } + + return 1 +} + +/* Cvars menu */ + +public actionCvarMenu(id, key) +{ + switch (key) + { + case 8: displayCvarMenu(id, ++g_menuPosition[id]) + case 9: displayCvarMenu(id, --g_menuPosition[id]) + default: + { + new option = g_menuSelect[id][g_menuPosition[id] * 8 + key] + new szValue[32] + + get_cvar_string(g_cvarNames[option], szValue, 31) + + new end = g_cvarMisc[option][2] + new start = g_cvarMisc[option][1] + + for (new i = start; ; ++i) + { + if (i < end) + { + if (equal(szValue, g_cvarCmd[i])) + { + if (++i >= end) + { + i = start + } + + set_cvar_string(g_cvarNames[option], g_cvarCmd[i]) + break + } + } else { + set_cvar_string(g_cvarNames[option], g_cvarCmd[start]) + break + } + } + displayCvarMenu(id, g_menuPosition[id]) + } + } + + return PLUGIN_HANDLED +} + +displayCvarMenu(id, pos) +{ + if (pos < 0) + return + + new menuBody[512] + new b = 0 + new start = pos * 8 + + if (start >= g_menuSelectNum[id]) + start = pos = g_menuPosition[id] = 0 + + new len = format(menuBody, 511, g_coloredMenus ? "\yCvars Menu\R%d/%d^n\w^n" : "Cvars Menu %d/%d^n^n", pos + 1, (g_menuSelectNum[id] / 8 + ((g_menuSelectNum[id] % 8) ? 1 : 0))) + + new end = start + 8 + new keys = MENU_KEY_0 + new szValue[64] + + if (end > g_menuSelectNum[id]) + end = g_menuSelectNum[id] + + for (new a = start; a < end; ++a) + { + get_cvar_string(g_cvarNames[g_menuSelect[id][a]], szValue, 31) + keys |= (1<<b) + ++b + + if (g_coloredMenus) + len += format(menuBody[len], 511-len, "%d. %s\R%s^n\w", b, g_cvarNames[g_menuSelect[id][a]], szValue) + else + len += format(menuBody[len], 511-len, "%d. %s %s^n", b, g_cvarNames[g_menuSelect[id][a]], szValue) + } + + if (end != g_menuSelectNum[id]) + { + format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") + keys |= MENU_KEY_9 + } + else + format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") + + show_menu(id, keys, menuBody) +} + +public cmdCvarMenu(id, level, cid) +{ + if (!cmd_access(id, level, cid, 1)) + return PLUGIN_HANDLED + + g_menuSelectNum[id] = 0 + + for (new a = 0; a < g_cvarNum; ++a) + if (access(id, g_cvarMisc[a][0])) + g_menuSelect[id][g_menuSelectNum[id]++] = a + + displayCvarMenu(id, g_menuPosition[id] = 0) + + return PLUGIN_HANDLED +} + +loadCvarSettings(szFilename[]) +{ + if (!file_exists(szFilename)) + return 0 + + new text[256], szValues[12][32] + new inum, a, pos = 0 + new cvar_values = MAX_CVARS * 5 + + // a b c d + while (g_cvarNum < MAX_CVARS && read_file(szFilename, pos++, text, 255, a)) + { + if (text[0] == ';') continue + + inum = parse(text, g_cvarNames[g_cvarNum], 31, + szValues[0], 31, szValues[1], 31, szValues[2], 31, + szValues[3], 31, szValues[4], 31, szValues[5], 31, + szValues[6], 31, szValues[7], 31, szValues[8], 31, + szValues[9], 31, szValues[10], 31, szValues[11], 31) + + inum -= 2 + if (inum < 2) continue + g_cvarMisc[g_cvarNum][1] = g_cvarCmdNum + + for (a = 0; a < inum && g_cvarCmdNum < cvar_values; ++a) + { + while (replace(szValues[a], 31, "\'", "^"")) + { + // do nothing + } + + copy(g_cvarCmd[g_cvarCmdNum], 31, szValues[a]) + g_cvarCmdNum++ + } + + g_cvarMisc[g_cvarNum][2] = g_cvarCmdNum + g_cvarMisc[g_cvarNum][0] = read_flags(szValues[inum]) + g_cvarNum++ + } + + return 1 +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/compile.sh b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/compile.sh new file mode 100644 index 0000000..02dc4c6 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/compile.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# AMX Mod X +# +# by the AMX Mod X Development Team +# originally developed by OLO +# +# This file is part of AMX Mod X. + +# new code contributed by \malex\ + +test -e compiled || mkdir compiled +rm -f temp.txt + +# Choose compiler binary +if test `uname` = "Darwin"; then + pc=./amxxpc_osx +else + pc=./amxxpc +fi + +for sourcefile in *.sma +do + amxxfile="`echo $sourcefile | sed -e 's/\.sma$/.amxx/'`" + echo -n "Compiling $sourcefile ..." + $pc $sourcefile -ocompiled/$amxxfile >> temp.txt + echo "done" +done + +less temp.txt +rm temp.txt diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/csstats.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/csstats.sma new file mode 100644 index 0000000..d497448 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/csstats.sma @@ -0,0 +1,58 @@ +/* AMX Mod X +* Rank Calculation +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +/* File location: $moddir/addons/amxmodx/data/csstats.amxx */ + +#include <amxmodx> + +/* Function calculates position in rank. +* +* Stats: +* 0 - kills +* 1 - deaths +* 2 - headshots +* 3 - teamkills +* 4 - shots +* 5 - hits +* 6 - damage +* 7 - defusions +* 8 - defused +* 9 - plants +* 10 - explosions +* +* Returning cellmin as value in get_score function +* makes that rank won't be saved. */ + +public get_score(stats[11], body[8]) + return stats[0] - stats[1] - stats[3] // kills - deaths - teamkills diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/imessage.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/imessage.sma new file mode 100644 index 0000000..afe495c --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/imessage.sma @@ -0,0 +1,143 @@ +/* AMX Mod X +* Info. Messages Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> +#include <amxmisc> + +#define X_POS -1.0 +#define Y_POS 0.20 +#define HOLD_TIME 12.0 + +new Array:g_Values +new Array:g_Messages +new g_MessagesNum +new g_Current + +#define charsof(%1) (sizeof(%1)-1) + +new amx_freq_imessage; + +public plugin_init() +{ + g_Messages=ArrayCreate(384); + g_Values=ArrayCreate(3); + register_plugin("Info. Messages", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("imessage.txt") + register_dictionary("common.txt") + register_srvcmd("amx_imessage", "setMessage") + amx_freq_imessage=register_cvar("amx_freq_imessage", "10") + + new lastinfo[8] + get_localinfo("lastinfomsg", lastinfo, 7) + g_Current = str_to_num(lastinfo) + set_localinfo("lastinfomsg", "") +} + +public infoMessage() +{ + if (g_Current >= g_MessagesNum) + g_Current = 0 + + // No messages, just get out of here + if (g_MessagesNum==0) + { + return; + } + + new values[3]; + new Message[384]; + + ArrayGetString(g_Messages, g_Current, Message, charsof(Message)); + ArrayGetArray(g_Values, g_Current, values); + + new hostname[64]; + + get_cvar_string("hostname", hostname, 63); + replace(Message, 380, "%hostname%", hostname); + + set_hudmessage(values[0], values[1], values[2], X_POS, Y_POS, 0, 0.5, HOLD_TIME, 2.0, 2.0, -1); + + show_hudmessage(0, "%s", Message); + + client_print(0, print_console, "%s", Message); + ++g_Current; + + new Float:freq_im = get_pcvar_float(amx_freq_imessage); + + if (freq_im > 0.0) + set_task(freq_im, "infoMessage", 12345); +} + +public setMessage() +{ + + new Message[384]; + + remove_task(12345) + read_argv(1, Message, 380) + + while (replace(Message, 380, "\n", "^n")) {} + + new mycol[12] + new vals[3]; + + read_argv(2, mycol, 11) // RRRGGGBBB + vals[2] = str_to_num(mycol[6]) + + mycol[6] = 0 + vals[1] = str_to_num(mycol[3]) + + mycol[3] = 0 + vals[0] = str_to_num(mycol[0]) + + g_MessagesNum++ + + new Float:freq_im = get_pcvar_float(amx_freq_imessage) + + ArrayPushString(g_Messages, Message); + ArrayPushArray(g_Values, vals); + + if (freq_im > 0.0) + set_task(freq_im, "infoMessage", 12345) + + return PLUGIN_HANDLED +} + +public plugin_end() +{ + new lastinfo[8] + + num_to_str(g_Current, lastinfo, 7) + set_localinfo("lastinfomsg", lastinfo) +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxconst.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxconst.inc new file mode 100644 index 0000000..ede4d88 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxconst.inc @@ -0,0 +1,302 @@ +/* AMX Mod X constants +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is provided as is (no warranties). +*/ + +#if defined _amxconst_included + #endinput +#endif +#define _amxconst_included + +#include <svn_version> + +#define M_PI 3.1415926535 + +#define ADMIN_ALL 0 /* everyone */ +#define ADMIN_IMMUNITY (1<<0) /* flag "a" */ +#define ADMIN_RESERVATION (1<<1) /* flag "b" */ +#define ADMIN_KICK (1<<2) /* flag "c" */ +#define ADMIN_BAN (1<<3) /* flag "d" */ +#define ADMIN_SLAY (1<<4) /* flag "e" */ +#define ADMIN_MAP (1<<5) /* flag "f" */ +#define ADMIN_CVAR (1<<6) /* flag "g" */ +#define ADMIN_CFG (1<<7) /* flag "h" */ +#define ADMIN_CHAT (1<<8) /* flag "i" */ +#define ADMIN_VOTE (1<<9) /* flag "j" */ +#define ADMIN_PASSWORD (1<<10) /* flag "k" */ +#define ADMIN_RCON (1<<11) /* flag "l" */ +#define ADMIN_LEVEL_A (1<<12) /* flag "m" */ +#define ADMIN_LEVEL_B (1<<13) /* flag "n" */ +#define ADMIN_LEVEL_C (1<<14) /* flag "o" */ +#define ADMIN_LEVEL_D (1<<15) /* flag "p" */ +#define ADMIN_LEVEL_E (1<<16) /* flag "q" */ +#define ADMIN_LEVEL_F (1<<17) /* flag "r" */ +#define ADMIN_LEVEL_G (1<<18) /* flag "s" */ +#define ADMIN_LEVEL_H (1<<19) /* flag "t" */ +#define ADMIN_MENU (1<<20) /* flag "u" */ +#define ADMIN_ADMIN (1<<24) /* flag "y" */ +#define ADMIN_USER (1<<25) /* flag "z" */ + +#define FLAG_KICK (1<<0) /* flag "a" */ +#define FLAG_TAG (1<<1) /* flag "b" */ +#define FLAG_AUTHID (1<<2) /* flag "c" */ +#define FLAG_IP (1<<3) /* flag "d" */ +#define FLAG_NOPASS (1<<4) /* flag "e" */ +#define FLAG_CASE_SENSITIVE (1<<10) /* flag "k" */ + +#define PLUGIN_CONTINUE 0 /* Results returned by public functions */ +#define PLUGIN_HANDLED 1 /* stop other plugins */ +#define PLUGIN_HANDLED_MAIN 2 /* to use in client_command(), continue all plugins but stop the command */ + +/* Flags for register_cvar() */ +#define FCVAR_ARCHIVE 1 /* set to cause it to be saved to vars.rc */ +#define FCVAR_USERINFO 2 /* changes the client's info string */ +#define FCVAR_SERVER 4 /* notifies players when changed */ +#define FCVAR_EXTDLL 8 /* defined by external DLL */ +#define FCVAR_CLIENTDLL 16 /* defined by the client dll */ +#define FCVAR_PROTECTED 32 /* It's a server cvar, but we don't send the data since it's a password, etc. Sends 1 if it's not bland/zero, 0 otherwise as value */ +#define FCVAR_SPONLY 64 /* This cvar cannot be changed by clients connected to a multiplayer server. */ +#define FCVAR_PRINTABLEONLY 128 /* This cvar's string cannot contain unprintable characters ( e.g., used for player name etc ). */ +#define FCVAR_UNLOGGED 256 /* If this is a FCVAR_SERVER, don't log changes to the log file / console if we are creating a log */ + + +/* Id of weapons in CS */ +#define CSW_P228 1 +#define CSW_SCOUT 3 +#define CSW_HEGRENADE 4 +#define CSW_XM1014 5 +#define CSW_C4 6 +#define CSW_MAC10 7 +#define CSW_AUG 8 +#define CSW_SMOKEGRENADE 9 +#define CSW_ELITE 10 +#define CSW_FIVESEVEN 11 +#define CSW_UMP45 12 +#define CSW_SG550 13 +#define CSW_GALI 14 +#define CSW_GALIL 14 +#define CSW_FAMAS 15 +#define CSW_USP 16 +#define CSW_GLOCK18 17 +#define CSW_AWP 18 +#define CSW_MP5NAVY 19 +#define CSW_M249 20 +#define CSW_M3 21 +#define CSW_M4A1 22 +#define CSW_TMP 23 +#define CSW_G3SG1 24 +#define CSW_FLASHBANG 25 +#define CSW_DEAGLE 26 +#define CSW_SG552 27 +#define CSW_AK47 28 +#define CSW_KNIFE 29 +#define CSW_P90 30 +#define CSW_VEST 31 +#define CSW_VESTHELM 32 + +#define HIW_BERETTA 1 +#define HIW_SPAS12 2 +#define HIW_M4A1 3 +#define HIW_MP5A4 4 +#define HIW_MP5SD5 5 +#define HIW_AK47 6 +#define HIW_AKS74U 7 +#define HIW_GLOCK 8 +#define HIW_M11 9 +#define HIW_M11SD 10 +#define HIW_PSG1 11 +#define HIW_ZASTAVA 12 +#define HIW_M16A2 13 +#define HIW_REMINGTON 14 +#define HIW_NATOGREN 15 +#define HIW_TANGOGREN 16 +#define HIW_FLASHBANG 17 + +/* Parts of body for hits */ +#define HIT_GENERIC 0 /* none */ +#define HIT_HEAD 1 +#define HIT_CHEST 2 +#define HIT_STOMACH 3 +#define HIT_LEFTARM 4 +#define HIT_RIGHTARM 5 +#define HIT_LEFTLEG 6 +#define HIT_RIGHTLEG 7 + +/* Constants for emit_sound() */ +/* Channels */ +#define CHAN_AUTO 0 +#define CHAN_WEAPON 1 +#define CHAN_VOICE 2 +#define CHAN_ITEM 3 +#define CHAN_BODY 4 +#define CHAN_STREAM 5 /* allocate stream channel from the static or dynamic area */ +#define CHAN_STATIC 6 /* allocate channel from the static area */ +#define CHAN_NETWORKVOICE_BASE 7 /* voice data coming across the network */ +#define CHAN_NETWORKVOICE_END 500 /* network voice data reserves slots (CHAN_NETWORKVOICE_BASE through CHAN_NETWORKVOICE_END). */ + +/* Attenuation values */ +#define ATTN_NONE 0.00 +#define ATTN_NORM 0.80 +#define ATTN_IDLE 2.00 +#define ATTN_STATIC 1.25 + +/* Pitch values */ +#define PITCH_NORM 100 /* non-pitch shifted */ +#define PITCH_LOW 95 /* other values are possible - 0-255, where 255 is very high */ +#define PITCH_HIGH 120 + +/* Volume values */ +#define VOL_NORM 1.0 + +/* Menu keys */ +#define MENU_KEY_1 (1<<0) +#define MENU_KEY_2 (1<<1) +#define MENU_KEY_3 (1<<2) +#define MENU_KEY_4 (1<<3) +#define MENU_KEY_5 (1<<4) +#define MENU_KEY_6 (1<<5) +#define MENU_KEY_7 (1<<6) +#define MENU_KEY_8 (1<<7) +#define MENU_KEY_9 (1<<8) +#define MENU_KEY_0 (1<<9) + +#define LANG_SERVER 0 +#define LANG_PLAYER -1 + +/* Destination types for client_print() */ +enum { + print_notify = 1, + print_console, + print_chat, + print_center, +}; + +/* Destination types for engclient_print() */ +enum { + engprint_console = 0, + engprint_center, + engprint_chat, +}; + +/* Render for set_user_rendering() */ +enum { + kRenderNormal = 0, /* src */ + kRenderTransColor, /* c*a+dest*(1-a) */ + kRenderTransTexture, /* src*a+dest*(1-a) */ + kRenderGlow, /* src*a+dest -- No Z buffer checks */ + kRenderTransAlpha, /* src*srca+dest*(1-srca) */ + kRenderTransAdd, /* src*a+dest */ +}; + +/* Fx for set_user_rendering() */ +enum { + kRenderFxNone = 0, + kRenderFxPulseSlow, + kRenderFxPulseFast, + kRenderFxPulseSlowWide, + kRenderFxPulseFastWide, + kRenderFxFadeSlow, + kRenderFxFadeFast, + kRenderFxSolidSlow, + kRenderFxSolidFast, + kRenderFxStrobeSlow, + kRenderFxStrobeFast, + kRenderFxStrobeFaster, + kRenderFxFlickerSlow, + kRenderFxFlickerFast, + kRenderFxNoDissipation, + kRenderFxDistort, /* Distort/scale/translate flicker */ + kRenderFxHologram, /* kRenderFxDistort + distance fade */ + kRenderFxDeadPlayer, /* kRenderAmt is the player index */ + kRenderFxExplode, /* Scale up really big! */ + kRenderFxGlowShell, /* Glowing Shell */ + kRenderFxClampMinScale, /* Keep this sprite from getting very small (SPRITES only!) */ +}; + +/* Type for force_unmodified() */ +enum { + force_exactfile = 0, /* File on client must exactly match server's file */ + force_model_samebounds, /* For model files only, the geometry must fit in the same bbox */ + force_model_specifybounds, /* For model files only, the geometry must fit in the specified bbox */ +}; + +/* Status for get_module() */ +enum { + module_none = 0, + module_query, + module_badload, + module_loaded, + module_noinfo, + module_noquery, + module_noattach, + module_old, +}; + +#define AMX_FLAG_DEBUG 0x02 /* symbolic info. available */ +#define AMX_FLAG_COMPACT 0x04 /* compact encoding */ +#define AMX_FLAG_BYTEOPC 0x08 /* opcode is a byte (not a cell) */ +#define AMX_FLAG_NOCHECKS 0x10 /* no array bounds checking; no STMT opcode */ +#define AMX_FLAG_OLDFILE 0x20 /* Old AMX Mod plugin */ +#define AMX_FLAG_NTVREG 0x1000 /* all native functions are registered */ +#define AMX_FLAG_JITC 0x2000 /* abstract machine is JIT compiled */ +#define AMX_FLAG_BROWSE 0x4000 /* busy browsing */ +#define AMX_FLAG_RELOC 0x8000 /* jump/call addresses relocated */ + +#define INVALID_PLUGIN_ID -1 + +#define MENU_EXIT -3 +#define MENU_BACK -2 +#define MENU_MORE -1 +#define ITEM_IGNORE 0 +#define ITEM_ENABLED 1 +#define ITEM_DISABLED 2 + +#define AMX_ERR_NATIVE 10 +#define AMX_ERR_MEMACCESS 5 +#define AMX_ERR_NONE 0 +#define AMX_ERR_BOUNDS 4 +#define AMX_ERR_STACKERR 3 +#define AMX_ERR_STACKLOW 7 +#define AMX_ERR_HEAPLOW 8 +#define AMX_ERR_DIVIDE 11 +#define AMX_ERR_NOTFOUND 19 +#define AMX_ERR_PARAMS 25 +#define AMX_ERR_GENERAL 27 + +#define INVALID_HANDLE -1 + +#define ET_IGNORE 0 //ignore return val +#define ET_STOP 1 //stop on PLUGIN_HANDLED +#define ET_STOP2 2 //same, except return biggest +#define ET_CONTINUE 3 //no stop, return biggest + +#define FP_CELL 0 +#define FP_FLOAT 1 +#define FP_STRING 2 +#define FP_ARRAY 4 + +#define FORWARD_ONLY_OLD 1 +#define FORWARD_ONLY_NEW 2 +#define FORWARD_ALL 3 + +#define SND_SPAWNING (1<<8) // we're spawing, used in some cases for ambients +#define SND_STOP (1<<5) // stop sound +#define SND_CHANGE_VOL (1<<6) // change sound vol +#define SND_CHANGE_PITCH (1<<7) // change sound pitch + +enum LibType +{ + LibType_Library, + LibType_Class +}; + +enum AdminProp +{ + AdminProp_Auth = 0, + AdminProp_Password, + AdminProp_Access, + AdminProp_Flags +}; diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmisc.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmisc.inc new file mode 100644 index 0000000..3f307a2 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmisc.inc @@ -0,0 +1,622 @@ +/* AMX Mod X misc. +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is provided as is (no warranties). +*/ + +#if defined _amxmisc_included + #endinput +#endif +#define _amxmisc_included + +#if !defined _amxmodx_included + #if defined AMXMOD_BCOMPAT + #include <amxmod> + #else + #include <amxmodx> + #endif +#endif + +#if defined AMXMOD_BCOMPAT +#if defined _translator_included +#define SIMPLE_T(%1) _T(%1) +#else +#define SIMPLE_T(%1) %1 +#endif +#endif + +stock is_user_admin(id) +{ + new __flags=get_user_flags(id); + return (__flags>0 && !(__flags&ADMIN_USER)); +} + +stock cmd_access(id, level, cid, num, bool:accesssilent = false) +{ + new has_access = 0; + if ( id==(is_dedicated_server()?0:1) ) + { + has_access = 1; + } + else if ( level==ADMIN_ADMIN ) + { + if ( is_user_admin(id) ) + { + has_access = 1; + } + } + else if ( get_user_flags(id) & level ) + { + has_access = 1; + } + else if (level == ADMIN_ALL) + { + has_access = 1; + } + + if ( has_access==0 ) + { + if (!accesssilent) + { +#if defined AMXMOD_BCOMPAT + console_print(id, SIMPLE_T("You have no access to that command.")); +#else + console_print(id,"%L",id,"NO_ACC_COM"); +#endif + } + return 0; + } + if (read_argc() < num) + { + new hcmd[32], hinfo[128], hflag; + get_concmd(cid,hcmd,31,hflag,hinfo,127,level); +#if defined AMXMOD_BCOMPAT + console_print(id, SIMPLE_T("Usage: %s %s"), hcmd, SIMPLE_T(hinfo)); +#else + console_print(id,"%L: %s %s",id,"USAGE",hcmd,hinfo); +#endif + return 0; + } + + return 1; +} + +stock access(id,level) +{ + if (level==ADMIN_ADMIN) + { + return is_user_admin(id); + } + else if (level==ADMIN_ALL) + { + return 1; + } + + return (get_user_flags(id) & level); +} + +/* Flags: +* 1 - obey immunity +* 2 - allow yourself +* 4 - must be alive +* 8 - can't be bot */ +#define CMDTARGET_OBEY_IMMUNITY (1<<0) +#define CMDTARGET_ALLOW_SELF (1<<1) +#define CMDTARGET_ONLY_ALIVE (1<<2) +#define CMDTARGET_NO_BOTS (1<<3) +stock cmd_target(id,const arg[],flags = CMDTARGET_OBEY_IMMUNITY) +{ + new player = find_player("bl",arg); + if (player) + { + if ( player != find_player("blj",arg) ) + { +#if defined AMXMOD_BCOMPAT + console_print(id, SIMPLE_T("There are more clients matching to your argument")); +#else + console_print(id,"%L",id,"MORE_CL_MATCHT"); +#endif + return 0; + } + } + else if ( ( player = find_player("c",arg) )==0 && arg[0]=='#' && arg[1] ) + { + player = find_player("k",str_to_num(arg[1])); + } + if (!player) + { +#if defined AMXMOD_BCOMPAT + console_print(id, SIMPLE_T("Client with that name or userid not found")); +#else + console_print(id,"%L",id,"CL_NOT_FOUND"); +#endif + return 0; + } + if (flags & CMDTARGET_OBEY_IMMUNITY) + { + if ((get_user_flags(player) & ADMIN_IMMUNITY) && + ((flags & CMDTARGET_ALLOW_SELF) ? (id != player) : true) ) + { + new imname[32]; + get_user_name(player,imname,31); +#if defined AMXMOD_BCOMPAT + console_print(id, SIMPLE_T("Client ^"%s^" has immunity"), imname); +#else + console_print(id,"%L",id,"CLIENT_IMM",imname); +#endif + return 0; + } + } + if (flags & CMDTARGET_ONLY_ALIVE) + { + if (!is_user_alive(player)) + { + new imname[32]; + get_user_name(player,imname,31); +#if defined AMXMOD_BCOMPAT + console_print(id, SIMPLE_T("That action can't be performed on dead client ^"%s^""), imname); +#else + console_print(id,"%L",id,"CANT_PERF_DEAD",imname); +#endif + return 0; + } + } + if (flags & CMDTARGET_NO_BOTS) + { + if (is_user_bot(player)) + { + new imname[32]; + get_user_name(player,imname,31); +#if defined AMXMOD_BCOMPAT + console_print(id, SIMPLE_T("That action can't be performed on bot ^"%s^""), imname); +#else + console_print(id,"%L",id,"CANT_PERF_BOT",imname); +#endif + return 0; + } + } + return player; +} + +/** + * Standard method to show activity to clients connected to the server. + * This depends on the amx_show_activity cvar. See documentation for more details. + * + * @param id The user id of the person doing the action. + * @param name The name of the person doing the action. + * @param fmt The format string to display. Do not put the "ADMIN:" prefix in this. + */ +stock show_activity( id, const name[], const fmt[], any:... ) +{ + static __amx_show_activity; + if (__amx_show_activity == 0) + { + __amx_show_activity = get_cvar_pointer("amx_show_activity"); + + // if still not found, then register the cvar as a dummy + if (__amx_show_activity == 0) + { + __amx_show_activity = register_cvar("amx_show_activity", "2"); + } + } +#if defined AMXMOD_BCOMPAT + new buffer[128]; + format_args( buffer , 127 , 2 ); +#else + new prefix[10]; + if (is_user_admin(id)) + { + copy(prefix, charsmax(prefix), "ADMIN"); + } + else + { + copy(prefix, charsmax(prefix), "PLAYER"); + } + new buffer[512]; + vformat(buffer, charsmax(buffer), fmt, 4); +#endif + switch(get_pcvar_num(__amx_show_activity)) + { +#if defined AMXMOD_BCOMPAT + case 2: // show name to all + { + client_print(0, print_chat, "%s %s: %s", is_user_admin(id) ? SIMPLE_T("ADMIN") : SIMPLE_T("PLAYER"), name, buffer); + } + case 1: // hide name to all + { + client_print(0, print_chat, "%s: %s", is_user_admin(id) ? SIMPLE_T("ADMIN") : SIMPLE_T("PLAYER"), buffer); + } +#else + case 5: // hide name only to admins, show nothing to normal users + { + new __maxclients=get_maxplayers(); + + + for (new i=1; i<=__maxclients; i++) + { + if (is_user_connected(i)) + { + if (is_user_admin(i)) + { + client_print(i, print_chat, "%L: %s", i, prefix, buffer); + } + } + } + } + case 4: // show name only to admins, show nothing to normal users + { + new __maxclients=get_maxplayers(); + + for (new i=1; i<=__maxclients; i++) + { + if (is_user_connected(i)) + { + if (is_user_admin(i)) + { + client_print(i, print_chat, "%L %s: %s", i, prefix, name, buffer); + } + } + } + } + case 3: // show name only to admins, hide name from normal users + { + new __maxclients=get_maxplayers(); + + for (new i=1; i<=__maxclients; i++) + { + if (is_user_connected(i)) + { + if (is_user_admin(i)) + { + client_print(i, print_chat, "%L %s: %s", i, prefix, name, buffer); + } + else + { + client_print(i, print_chat, "%L: %s", i, prefix, buffer); + } + } + } + } + case 2: // show name to all + { + client_print(0, print_chat, "%L %s: %s", LANG_PLAYER, prefix , name , buffer ); + } + case 1: // hide name to all + { + client_print(0, print_chat, "%L: %s", LANG_PLAYER, prefix, buffer ); + } +#endif + } +} + +/** + * Standard method to show activity to one single client. + * This is useful for messages that get pieced together by many language keys. + * This depends on the amx_show_activity cvar. See documentation for more details. + * + * @param idtarget The user id of the person to display to. 0 is invalid. + * @param idadmin The user id of the person doing the action. + * @param name The name of the person doing the action. + * @param fmt The format string to display. Do not put the "ADMIN:" prefix in this. + */ +stock show_activity_id(idtarget, idadmin, const name[], const fmt[], any:...) +{ + if (idtarget == 0 || + !is_user_connected(idtarget) ) + { + return; + } + + static __amx_show_activity; + if (__amx_show_activity == 0) + { + __amx_show_activity = get_cvar_pointer("amx_show_activity"); + + // if still not found, then register the cvar as a dummy + if (__amx_show_activity == 0) + { + __amx_show_activity = register_cvar("amx_show_activity", "2"); + } + } + + static prefix[10]; + if (is_user_admin(idadmin)) + { + copy(prefix, charsmax(prefix), "ADMIN"); + } + else + { + copy(prefix, charsmax(prefix), "PLAYER"); + } + + static buffer[512]; + vformat(buffer, charsmax(buffer), fmt, 5); + + + switch(get_pcvar_num(__amx_show_activity)) + { + case 5: // hide name only to admins, show nothing to normal users + { + if ( is_user_admin(idtarget) ) + { + client_print(idtarget, print_chat, "%L: %s", idtarget, prefix, buffer); + } + } + case 4: // show name only to admins, show nothing to normal users + { + if ( is_user_admin(idtarget) ) + { + client_print(idtarget, print_chat, "%L %s: %s", idtarget, prefix, name, buffer); + } + } + case 3: // show name only to admins, hide name from normal users + { + if ( is_user_admin(idtarget) ) + { + client_print(idtarget, print_chat, "%L %s: %s", idtarget, prefix, name, buffer); + } + else + { + client_print(idtarget, print_chat, "%L: %s", idtarget, prefix, buffer); + } + } + case 2: // show name to all + { + client_print(idtarget, print_chat, "%L %s: %s", idtarget, prefix, name, buffer); + } + case 1: // hide name to all + { + client_print(idtarget, print_chat, "%L: %s", idtarget, prefix, buffer); + } + } +} +/** + * Standard method to show activity to one single client with normal language keys. + * These keys need to be in the format of standard AMXX keys: + * eg: ADMIN_KICK_1 = ADMIN: kick %s + * ADMIN_KICK_2 = ADMIN %s: kick %s + * This depends on the amx_show_activity cvar. See documentation for more details. + * + * @param KeyWithoutName The language key that does not have the name field. + * @param KeyWithName The language key that does have the name field. + * @param __AdminName The name of the person doing the action. + * @extra Pass any extra format arguments for the language key in the variable arguments list. + */ +stock show_activity_key(const KeyWithoutName[], const KeyWithName[], const ___AdminName[], any:...) +{ +// The variable gets used via vformat, but the compiler doesn't know that, so it still cries. +#pragma unused ___AdminName + static __amx_show_activity; + if (__amx_show_activity == 0) + { + __amx_show_activity = get_cvar_pointer("amx_show_activity"); + + // if still not found, then register the cvar as a dummy + if (__amx_show_activity == 0) + { + __amx_show_activity = register_cvar("amx_show_activity", "2"); + } + } + + new buffer[512]; + new keyfmt[256]; + new i; + + new __maxclients=get_maxplayers(); + + switch( get_pcvar_num(__amx_show_activity) ) + { + case 5: // hide name to admins, display nothing to normal players + while (i++ < __maxclients) + { + if ( is_user_connected(i) ) + { + if ( is_user_admin(i) ) + { + LookupLangKey(keyfmt, charsmax(keyfmt), KeyWithoutName, i); + + // skip the "adminname" argument if not showing name + vformat(buffer, charsmax(buffer), keyfmt, 4); + client_print(i, print_chat, "%s", buffer); + } + } + } + case 4: // show name only to admins, display nothing to normal players + while (i++ < __maxclients) + { + if ( is_user_connected(i) ) + { + if ( is_user_admin(i) ) + { + LookupLangKey(keyfmt, charsmax(keyfmt), KeyWithName, i); + vformat(buffer, charsmax(buffer), keyfmt, 3); + client_print(i, print_chat, "%s", buffer); + } + } + } + case 3: // show name only to admins, hide name from normal users + while (i++ < __maxclients) + { + if ( is_user_connected(i) ) + { + if ( is_user_admin(i) ) + { + LookupLangKey(keyfmt, charsmax(keyfmt), KeyWithName, i); + vformat(buffer, charsmax(buffer), keyfmt, 3); + } + else + { + LookupLangKey(keyfmt, charsmax(keyfmt), KeyWithoutName, i); + + // skip the "adminname" argument if not showing name + vformat(buffer, charsmax(buffer), keyfmt, 4); + } + client_print(i, print_chat, "%s", buffer); + } + } + case 2: // show name to all users + while (i++ < __maxclients) + { + if ( is_user_connected(i) ) + { + LookupLangKey(keyfmt, charsmax(keyfmt), KeyWithName, i); + vformat(buffer, charsmax(buffer), keyfmt, 3); + client_print(i, print_chat, "%s", buffer); + } + } + case 1: // hide name from all users + while (i++ < __maxclients) + { + if ( is_user_connected(i) ) + { + LookupLangKey(keyfmt, charsmax(keyfmt), KeyWithoutName, i); + + // skip the "adminname" argument if not showing name + vformat(buffer, charsmax(buffer), keyfmt, 4); + client_print(i, print_chat, "%s", buffer); + } + } + + } +} + +stock colored_menus() +{ + new mod_name[32]; + get_modname(mod_name,31); + + return ( equal(mod_name,"cstrike") || equal(mod_name,"czero") || equal(mod_name,"dod") ); +} + +stock cstrike_running() +{ + new mod_name[32]; + get_modname(mod_name,31); + + return ( equal(mod_name,"cstrike") || equal(mod_name,"czero") || equal(mod_name,"csv15") || equal(mod_name,"cs13") ); +} + +stock is_running(const mod[]) +{ + new mod_name[32]; + get_modname(mod_name,31); + + return equal(mod_name,mod); +} + +stock get_basedir(name[],len) +{ + return get_localinfo("amxx_basedir",name,len); +} + +stock get_configsdir(name[],len) +{ + return get_localinfo("amxx_configsdir",name,len); +} + +stock get_datadir(name[],len) +{ + return get_localinfo("amxx_datadir",name,len); +} + +stock register_menu(const title[],keys,const function[],outside=0) +{ + register_menucmd(register_menuid(title,outside),keys,function); +} + +/* Backwards Compatibility +* don't use it! */ +stock get_customdir(name[],len) +{ + return get_localinfo("amxx_configsdir",name,len); +} + +/* Add a menu item to Menus Front-End plugin ("amxmodmenu"): +* MENU_TEXT: Text that will be shown for this item in menu +* MENU_CMD: Command that should be executed to start menu +* MENU_ACCESS: Access required for menu +* MENU_PLUGIN: The exact case-insensitive name of plugin holding the menu command +*/ +stock AddMenuItem(const MENU_TEXT[], const MENU_CMD[], const MENU_ACCESS, const MENU_PLUGIN[]) +{ + AddMenuItem_call(MENU_TEXT, MENU_CMD, MENU_ACCESS, MENU_PLUGIN, false); +} +/* Just like above, but add menu item to "amx_menu", that should also be accessible by non-admins. +*/ +stock AddClientMenuItem(const MENU_TEXT[], const MENU_CMD[], const MENU_ACCESS, const MENU_PLUGIN[]) +{ + AddMenuItem_call(MENU_TEXT, MENU_CMD, MENU_ACCESS, MENU_PLUGIN, true); +} + +// Internal function used by above stocks. +stock AddMenuItem_call(const MENU_TEXT[], const MENU_CMD[], const MENU_ACCESS, const MENU_PLUGIN[], const bool:ADD_TO_CLIENT_MENU) +{ + new pluginid = is_plugin_loaded("Menus Front-End"); + if (pluginid == -1) { + log_amx("Can't add menu item ^"%s^" from plugin ^"%s^" to menu set because the Menus Front-End plugin itself is not loaded!", MENU_TEXT, MENU_PLUGIN); + return; // Menus Front-End doesn't exist, return. + } + + new filename[64], b[1]; + get_plugin(pluginid, filename, 63, b, 0, b, 0, b, 0, b, 0); + + new status = callfunc_begin(ADD_TO_CLIENT_MENU ? "AddClientMenu" : "AddMenu", filename); + new bool:failed = true; + switch (status) + { + case 1: failed = false; + case 0: log_amx("Run time error! (AddMenuItem_call failed)"); + case -2: log_amx("Function not found! (AddMenuItem_call failed)"); + case -1: log_amx("Plugin not found! (AddMenuItem_call failed)"); + } + if (failed) + { + return; + } + // Item text + callfunc_push_str(MENU_TEXT); + // Cmd + callfunc_push_str(MENU_CMD); + // Access + callfunc_push_int(MENU_ACCESS); + // Menu exists in this plugin + callfunc_push_str(MENU_PLUGIN); + + callfunc_end(); +} + + +stock constraint_offset(low, high, seed, offset) +{ + new numElements = high - low + 1; + offset += seed - low; + + if (offset >= 0) + { + return low + (offset % numElements); + } + else + { + return high - (abs(offset) % numElements) + 1; + } + + return 0; // Makes the compiler happy -_- +} + +/* Returns true if the user has ANY of the provided flags + * false if they have none + */ +stock has_flag(id, const flags[]) +{ + return (get_user_flags(id) & read_flags(flags)); +} +/* Returns true if the user has ALL of the provided flags + * false otherwise + */ +stock has_all_flags(id, const flags[]) +{ + new FlagsNumber=read_flags(flags); + return ((get_user_flags(id) & FlagsNumber)==FlagsNumber); +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/VexdUM.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/VexdUM.inc new file mode 100644 index 0000000..404f0ec --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/VexdUM.inc @@ -0,0 +1,89 @@ +/* VexdUM backwards compatibility + * + * by the AMX Mod X Development Team + * + * This file is provided as is (no warranties). + */ + + +#if !defined _fakemeta_included + #include <fakemeta> +#endif + +#if !defined _engine_included + #include <engine> +#endif + +#if defined _vexd_bcompat_included + #endinput +#endif +#define _vexd_bcompat_included + +#include <VexdUM_const> + +native radius_damage(inflictor, Float:dmg, Float:orig[3], Float:rad, bit = DMG_BULLET, wpnName[]="", hs = 0); +native take_damage(victim, attacker, Float:orig[3], Float:dmg, bit = DMG_BULLET, wpnName[]="", hs = 0); +native set_user_model(id, const Model[]=""); +native entity_use(eUsed, eOther); +native get_num_ents(); + +native DispatchKeyValue(ent, szKey[], szValue[]); + +// Trace a line from Start(X, Y, Z) to End(X, Y, Z), will return the point hit in vReturn[3] +// Will return an entindex if an entity is hit. +native trace_line(ent, Float:vStart[3], Float:vEnd[3], Float:vReturn[3]); + +native traceline_get_int(iVar); +native traceline_set_int(iVar, iVal); +native Float:traceline_get_float(iVar); +native traceline_set_float(iVar, Float:fVal); +native traceline_get_vector(iVar, Float:vVal[3]); +native traceline_set_vector(iVar, Float:vVal[3]); +native traceline_get_edict(iVar); +native traceline_set_edict(iVar, iEnt); + +/* Wrapper around pfn_touch */ +forward entity_touch(entity1, entity2); + +/* Wrapper around pfn_think */ +forward entity_think(entity); + +/* Wrapper around pfn_spawn */ +forward entity_spawn(entity); + +/* Wrapper around client_PreThink */ +forward client_prethink(id); + +/* Wrapper around client_PostThink */ +forward client_postthink(id); + +//From AMX Mod: +// Called when an Emitting Sound is played Server-Side +forward emitsound(entity, const sample[]); + +//From AMX Mod: +// Called when an Emitting Ambient Sound is played Server-Side +forward emitambientsound(entity, const sample[]); + +//From AMX Mod: +// Called when a model spawns +forward set_model(entity, const model[]); + +//From AMX Mod: +// Called whatever an entity looks at +forward traceline(entity); + +//:TODO: ? +// Called when a monster is hurt by VexdUM damage natives +// forward monster_hurt(monster, attacker, damage); + +//From AMX Mod: +// Called when a keyvalue is set on a player +forward setclientkeyvalue(id, key[], value[]); + +//From AMX Mod: +// Called when an entity gets a keyvalue set on it from the engine. +// Use copy_keyvalue to get the keyvalue information +forward keyvalue(entity); + +#include <VexdUM_stock> diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/VexdUM_const.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/VexdUM_const.inc new file mode 100644 index 0000000..f44dca6 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/VexdUM_const.inc @@ -0,0 +1,30 @@ +#if defined _vexdum_const_included + #endinput +#endif +#define _vexdum_const_included + +// TraceLine Integer +enum { + TR_INT_fAllSolid, // if true, plane is not valid + TR_INT_fStartSolid, // if true, the initial point was in a solid area + TR_INT_fInOpen, + TR_INT_fInWater, + TR_INT_iHitgroup, // 0 == generic, non zero is specific body part +}; + +// TraceLine Float +enum { + TR_FL_flFraction, // time completed, 1.0 = didn't hit anything + TR_FL_flPlaneDist, +}; + +// TraceLine Vector +enum { + TR_VEC_vecEndPos, // final position + TR_VEC_vecPlaneNormal, // surface normal at impact +}; + +// TraceLine Edict +enum { + TR_ENT_pHit, // entity the surface is on +}; diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/VexdUM_stock.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/VexdUM_stock.inc new file mode 100644 index 0000000..051df95 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/VexdUM_stock.inc @@ -0,0 +1,135 @@ +/* VexdUM stocks backwards compatibility + * + * by the AMX Mod X Development Team + * + * This file is provided as is (no warranties). + */ + +#if defined _vexd_bcompat_stocks_included + #endinput +#endif +#define _vexd_bcompat_stocks_included + +#if !defined _engine_included + #include <engine> +#endif + +stock is_entity(ent) +{ + return pev_valid(ent); +} + +stock get_offset_int(ent, offset, linos = 5) +{ + return get_pdata_int(ent, offset, linos); +} + +stock set_offset_int(ent, offset, value, linos = 5) +{ + return set_pdata_int(ent, offset, value, linos); +} + +stock in_view_cone(ent, Float:Orig[3]) +{ + return is_in_viewcone(ent, Orig); +} + +stock get_maxentities() +{ + return global_get(glb_maxEntities); +} + +stock can_see(ent1, ent2) +{ + if (is_entity(ent1) && is_entity(ent2)) + { + new flags = pev(ent1, pev_flags); + if (flags & EF_NODRAW || flags & FL_NOTARGET) + { + return 0; + } + + new Float:lookerOrig[3]; + new Float:targetOrig[3]; + new Float:temp[3]; + + pev(ent1, pev_origin, lookerOrig); + pev(ent1, pev_view_ofs, temp); + lookerOrig[0] += temp[0]; + lookerOrig[1] += temp[1]; + lookerOrig[2] += temp[2]; + + pev(ent2, pev_origin, targetOrig); + pev(ent2, pev_view_ofs, temp); + targetOrig[0] += temp[0]; + targetOrig[1] += temp[1]; + targetOrig[2] += temp[2]; + + engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, ent1, 0); + if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater)) + { + return 0; + } else { + new Float:flFraction; + get_tr2(0, TraceResult:TR_flFraction, flFraction); + if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == ent2)) + { + return 1; + } + } + } + + return 0; +} + +//From AMX Mod: +// Find an entity in the world, will return -1 if nothing is found +// type = 0: "classname" +// type = 1: "globalname" +// type = 2: "model" +// type = 3: "target" +// type = 4: "targetname" +// type = 5: "netname" +// type = 6: "message" +// type = 7: "noise" +// type = 8: "noise1" +// type = 9: "noise2" +// type = 10: "noise3" +// type = 11: "viewmodel" +// type = 12: "weaponmodel" + +stock vexd_find_entity(ent, szValue[], type=0) +{ + static _g_FindEntTypes[13][] = + { + "classname", + "globalname", + "model", + "target", + "targetname", + "netname", + "messages", + "noise", + "noise1", + "noise2", + "noise3", + "viewmodel", + "weaponmodel" + }; + + if (type < 0 || type >= 13) + { + type = 0; + } + + return engfunc(EngFunc_FindEntityByString, ent, _g_FindEntTypes[type], szValue); +} + +#define find_entity vexd_find_entity + +//From AMX Mod: +// Find an entity within a given origin and radius +stock find_entity_sphere(ent, Float:Orig[3], Float:Rad) +{ + return engfunc(EngFunc_FindEntityInSphere, ent, Orig, Rad); +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/Vexd_Utilities.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/Vexd_Utilities.inc new file mode 100644 index 0000000..5c4d1a4 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/Vexd_Utilities.inc @@ -0,0 +1,109 @@ +/* Vexd Utility backwards compatibility +* +* by the AMX Mod X Development Team +* +* This file is provided as is (no warranties). +*/ + +#if defined _Vexd_Utilities_included + #endinput +#endif +#define _Vexd_Utilities_included + +#include <engine> +#if defined AMXMOD_BCOMPAT +#if !defined _vexd_bcompat_included +#include <VexdUM> +#endif +#endif + +stock Entvars_Get_Int(iIndex, iVariable) + return entity_get_int(iIndex, iVariable); + +stock Entvars_Set_Int(iIndex, iVariable, iNewValue) + return entity_set_int(iIndex, iVariable, iNewValue); + +stock Float:Entvars_Get_Float(iIndex, iVariable) + return entity_get_float(iIndex, iVariable); + +stock Entvars_Set_Float(iIndex, iVariable, Float:fNewValue) + return entity_set_float(iIndex, iVariable, fNewValue); + +stock Entvars_Get_Vector(iIndex, iVariable, Float:vRetVector[3]) + return entity_get_vector(iIndex, iVariable, vRetVector); + +stock Entvars_Set_Vector(iIndex, iVariable, Float:vNewVector[3]) + return entity_set_vector(iIndex, iVariable, vNewVector); + +stock Entvars_Get_Edict(iIndex, iVariable) + return entity_get_edict(iIndex, iVariable); + +stock Entvars_Set_Edict(iIndex, iVariable, iNewIndex) + return entity_set_edict(iIndex, iVariable, iNewIndex); + +stock Entvars_Get_String(iIndex, iVariable, szReturnValue[], iReturnLen) + return entity_get_string(iIndex, iVariable, szReturnValue, iReturnLen); + +stock Entvars_Set_String(iIndex, iVariable, szNewValue[]) + return entity_set_string(iIndex, iVariable, szNewValue); + +stock Entvars_Get_Byte(iIndex, iVariable) + return entity_get_byte(iIndex, iVariable); + +stock Entvars_Set_Byte(iIndex, iVariable, iNewValue) + return entity_set_byte(iIndex, iVariable, iNewValue); + +stock CreateEntity(szClassname[]) + return create_entity(szClassname); + +stock ENT_SetModel(iIndex, szModel[]) + return entity_set_model(iIndex, szModel); + +stock ENT_SetOrigin(iIndex, Float:fNewOrigin[3]) + return entity_set_origin(iIndex, fNewOrigin); + +stock FindEntity(iIndex, szValue[]) + return find_ent_by_class(iIndex, szValue); + +stock RemoveEntity(iIndex) + return remove_entity(iIndex); + +stock TraceLn(iIgnoreEnt, Float:fStart[3], Float:fEnd[3], Float:vReturn[3]) + return trace_line(iIgnoreEnt, fStart, fEnd, vReturn); + +stock TraceNormal(iIgnoreEnt, Float:fStart[3], Float:fEnd[3], Float:vReturn[3]) + return trace_normal(iIgnoreEnt, fStart, fEnd, vReturn); + +stock VecToAngles(Float:fVector[3], Float:vReturn[3]) + return vector_to_angle(fVector, vReturn); + +stock Float:VecLength(Float:vVector[3]) + return vector_length(vVector); + +stock Float:VecDist(Float:vVector[3], Float:vVector2[3]) + return vector_distance(vVector, vVector2); + +stock MessageBlock(iMessage, iMessageFlags) + return set_msg_block(iMessage, iMessageFlags); + +stock GetMessageBlock(iMessage) + return get_msg_block(iMessage); + +stock Float:HLTime() + return halflife_time(); + +stock FakeTouch(iToucher, iTouched) + return fake_touch(iToucher, iTouched); + +stock AttachView(iIndex, iTargetIndex) + return attach_view(iIndex, iTargetIndex); + +stock SetView(iIndex, ViewType) + return set_view(iIndex, ViewType); + +stock SetSpeak(iIndex, iSpeakFlags) + return set_speak(iIndex, iSpeakFlags); + +forward vexd_pfntouch(pToucher, pTouched); + +forward ServerFrame(); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/amxmod.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/amxmod.inc new file mode 100644 index 0000000..d84a7a1 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/amxmod.inc @@ -0,0 +1,318 @@ +/* AMX Mod X Backwards Compatibility + * + * by the AMX Mod X Development Team + * + * This file is provided as is (no warranties). + */ + +#if defined _amxmod_included + #endinput +#endif +#define _amxmod_included + +#if !defined AMXMOD_BCOMPAT + #define AMXMOD_BCOMPAT +#endif + +#include <amxmodx> +#include <cstrike> +#include <engine> +#include <fun> +#include <maths> + +stock AMX_VERSION[] = "1.76-BC"; + +#define ADMIN_PERMBAN ADMIN_BAN //AMX Mod admin flag for permanent ban +#define ADMIN_UNBAN ADMIN_BAN //AMX Mod admin flag for unbanning +#define ADMIN_SUPREME ADMIN_IMMUNITY //AMX Mod admin flag for "super admin" (can kick, slap, ban, slay admins with Immunity) + +/* Core will identify us as an "old plugin" this way. */ +public __b_old_plugin = 1; + +public __b_ident_vers() +{ + return __b_old_plugin; +} + +stock user_spawn(index) + return spawn(index); + +stock get_logfile( name[], len ) + return get_time("admin%m%d.log",name,len); + +stock get_user_money(index) + return cs_get_user_money(index); + +stock set_user_money(index,money,flash=1) + return cs_set_user_money(index,money,flash); + +stock numtostr(num,string[],len) + return num_to_str(num,string,len); + +stock strtonum(const string[]) + return str_to_num(string); + +stock build_path(path[], len, {Float,_}:... ) +{ + format_args(path, len, 2); + new pathlen = strlen(path); + new basedir[32]; + if (containi(path, "$basedir") != -1) + { + get_localinfo("amxx_basedir", basedir, 31); + if (!basedir[0]) + { + copy(basedir, 31, "addons/amxmodx"); + } + if ((pathlen+strlen(basedir)-strlen("$basedir")) < len) + { + replace(path, len, "$basedir", basedir); + } + } + new dir[64], subdir[63]; + if (containi(path, "$configdir") != -1) + { + get_localinfo("amxx_configsdir", dir, 63); + if (!dir[0]) + { + format(dir, 63, "%s/configs", basedir); + } + if ((pathlen+strlen(basedir)-strlen("$configdir")) < len) + { + replace(path, len, "$configdir", dir); + } + dir[0] = '^0'; + } + if (containi(path, "$langdir") != -1) + { + get_localinfo("amxx_datadir", subdir, 63); + if (!subdir[0]) + { + format(subdir, 63, "%s/data", basedir); + } + format(dir, 63, "%s/amxmod-lang", subdir); + if ((pathlen+strlen(basedir)-strlen("$langdir")) < len) + { + replace(path, len, "$langdir", dir); + } + dir[0] = '^0'; + } + if (containi(path, "$modulesdir") != -1) + { + get_localinfo("amxx_modules", dir, 63); + if (!dir[0]) + { + format(dir, 63, "%s/modules", basedir); + } + if ((pathlen+strlen(basedir)-strlen("$modulesdir")) < len) + { + replace(path, len, "$modulesdir", dir); + } + dir[0] = '^0'; + } + if (containi(path, "$pluginsdir") != -1) + { + get_localinfo("amx_pluginsdir", dir, 63); + if( !dir[0]) + { + format(dir, 63, "%s/plugins", basedir); + } + if ((pathlen+strlen(basedir)-strlen("$pluginsdir")) < len) + { + replace(path, len, "$pluginsdir", dir); + } + dir[0] = '^0'; + } + if (containi(path, "$logdir") != -1) + { + get_localinfo("amx_logs", dir, 63); + if (!dir[0]) + { + format(dir, 63, "%s/logs", basedir); + } + if ((pathlen+strlen(basedir)-strlen("$logdir")) < len) + { + replace(path, len, "$logdir", dir); + } + } + return 1; +} + +stock is_user_authorized(id) +{ + static auth[32]; + + get_user_authid(id, auth, 31); + if (auth[0] == 0 || equali(auth, "STEAM_ID_PENDING")) + { + return 0; + } + + return 1; +} + +/* Vector AMX Mod compatibility */ +#define ANGLEVECTORS_FORWARD 1 +#define ANGLEVECTORS_RIGHT 2 +#define ANGLEVECTORS_UP 3 + +stock angle_to_vector(Float:vector[3], FRU, Float:ret[3]) +{ + return angle_vector(vector, FRU, ret); +} + +stock get_cmdaccess(cmd[], accessflags[], len) +{ + new num = get_concmdsnum(-1); + new command[32], info[3]; + new flags; + + for (new i=0; i<num; i++) + { + get_concmd(i, command, 31, flags, info, 2, -1); + if (equal(command, cmd)) + { + get_flags(flags, accessflags, len); + return 1; + } + } + + return 0; +} + +stock is_translated(const sentence[]) +{ + return (GetLangTransKey(sentence) != TransKey_Bad); +} + +stock get_plugincmdsnum(plugin[], type=7) +{ + new plid = find_plugin_byfile(plugin); + new our_type; + + /** + * Whoever wrote this was a bit confused about the type stuff... + */ + if (type == 1) { + our_type = 1; + } else if (type == 4) { + our_type = 0; + } else { + our_type = -1; + } + + new found = 0; + new total = get_concmdsnum(-1, our_type); + for (new i=0; i<total; i++) + { + if (plid == get_concmd_plid(i, -1, our_type)) + { + found++; + } + } + + return found; +} + +stock get_plugincmd(plugin[], index, cmd[], len1, accessflags[], len2, info[], len3, destid=-1, type=7) +{ + new plid = find_plugin_byfile(plugin); + new our_type; + + /** + * Whoever wrote this was a bit confused about the type stuff... + */ + if (type == 1) { + our_type = 1; + } else if (type == 4) { + our_type = 0; + } else { + our_type = -1; + } + + new found_iter = 0; + new total = get_concmdsnum(-1, our_type); + for (new i=0; i<total; i++) + { + if (plid == get_concmd_plid(i, -1, our_type)) + { + if (found_iter == index) + { + new flags, result; + result = get_concmd(i, cmd, len1, flags, info, len3, -1, our_type); + get_flags(flags, accessflags, len2); + return result; + } + found_iter++; + } + } + + /* get rid of a compiler warning */ + destid = -1; + return (++destid); +} + +stock get_plugincvar(plugin[], index, cvar[], len1, value[], len2, flags=0) +{ + new plid = find_plugin_byfile(plugin); + + new total = get_plugins_cvarsnum(); + new cvar_flags, plugin_id, pcvar_handle; + new iter_id = 0; + for (new i=0; i<total; i++) + { + get_plugins_cvar(i, cvar, len1, cvar_flags, plugin_id, pcvar_handle); + if ((plugin_id == plid) + && (!flags || (cvar_flags & flags))) + { + if (iter_id == index) + { + get_pcvar_string(pcvar_handle, value, len2); + return 1; + } + iter_id++; + } + } + + return 0; +} + +stock get_plugincvarsnum(plugin[], flags=0) +{ + new plid = find_plugin_byfile(plugin); + + new total = get_plugins_cvarsnum(); + new cvar_flags, plugin_id; + new cvars_total = 0; + for (new i=0; i<total; i++) + { + get_plugins_cvar(i, "", 0, cvar_flags, plugin_id); + if ((plugin_id == plid) + && (!flags || (cvar_flags & flags))) + { + cvars_total++; + } + } + + return cvars_total; +} + +stock is_module_running(const module[]) +{ + if (strcmp(module, "MySQL Access") == 0) + return LibraryExists("sqlx", LibType_Class); + + return is_module_loaded(module) == -1 ? 0 : 1; +} + +stock is_plugin_running(const plugin[]) +{ + new status[8]; + new id, filename[1], name[1], version[1], author[1]; + + id = is_plugin_loaded(plugin); + + get_plugin(id, filename, 0, name, 0, version, 0, author, 0, status, 7); + + return strcmp(status, "running") == 0 ? id + 1 : 0; +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/maths.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/maths.inc new file mode 100644 index 0000000..08b681c --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/maths.inc @@ -0,0 +1,85 @@ +/* AMX Mod math functions backwards compatibility + * + * by the AMX Mod X Development Team + * + * This file is provided as is (no warranties). + */ + +#if defined _maths_bcompat_included + #endinput +#endif +#define _maths_bcompat_included + +#if !defined _float_included + #include <float> +#endif + +stock Float:fabs(Float:value) +{ + return floatabs(value); +} + +stock Float:asin(Float:value) +{ + return floatasin(value, radian); +} + +stock Float:sin(Float:value) +{ + return floatsin(value, radian); +} + +stock Float:sinh(Float:value) +{ + return floatsinh(value, radian); +} + +stock Float:acos(Float:value) +{ + return floatacos(value, radian); +} + +stock Float:cos(Float:value) +{ + return floatcos(value, radian); +} + +stock Float:cosh(Float:value) +{ + return floatcosh(value, radian); +} + +stock Float:atan(Float:value) +{ + return floatatan(value, radian); +} + +stock Float:atan2(Float:value1, Float:value2) +{ + return floatatan2(value1, value2, radian); +} + +stock Float:tan(Float:value) +{ + return floattan(value, radian); +} + +stock Float:tanh(Float:value) +{ + return floattanh(value, radian); +} + +stock Float:fsqroot(Float:value) +{ + return floatsqroot(value); +} + +stock Float:fpower(Float:value, Float:exponent) +{ + return floatpower(value, exponent); +} + +stock Float:flog(Float:value, Float:base=10.0) +{ + return floatlog(value, base); +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/mysql.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/mysql.inc new file mode 100644 index 0000000..09d22fe --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/mysql.inc @@ -0,0 +1,20 @@ + +#if defined _mysql_included + #endinput +#endif +#define _mysql_included + +#include <sqlx> + +native mysql_connect(host[], user[], pass[], dbname[], error[], maxlength); +native mysql_query(sql, query[], {Float,_}:... ); +native mysql_error(sql, dest[], maxlength); +native mysql_close(sql); +native mysql_nextrow(sql); +native mysql_getfield(sql, fieldnum, {Float,_}:... ); +native mysql_getresult(sql, field[], {Float,_}:... ); +native mysql_affected_rows(sql); +native mysql_num_fields(sql); +native mysql_num_rows(sql); +native mysql_field_name(sql, field, name[], length); +native mysql_insert_id(sql); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/translator.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/translator.inc new file mode 100644 index 0000000..87551b2 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/translator.inc @@ -0,0 +1,86 @@ +/* AMX Mod X Backwards Compatibility + * + * by the AMX Mod X Development Team + * + * This file is provided as is (no warranties). + */ + +#if defined _amxmod_translator_included + #endinput +#endif +#define _amxmod_translator_included + +#define _translator_included + +#include <amxmodx> +#include <amxmod> +#include <amxmisc> + +//From AMX Mod. This is implemented in Core due to the nature of the +// translation engine and what AMX Mod did. +/* Translation backend, used by _T (since natives can't return arrays). */ +native translate(const string[], destid=-1, forcelang=-1); + +stock _T(const string[], destid=-1, forcelang=-1) +{ + new TranslationResult[2] = {0, 0}; + TranslationResult[0] = translate(string, destid, forcelang); + return TranslationResult; +} + +stock load_translations(const file[]) +{ + static dir[255], path[255]; + get_datadir(dir, 254); + + format(path, 254, "%s/amxmod-lang/%s.txt", dir, file); + new fp + if (!(fp=fopen(path, "r"))) + { + abort(AMX_ERR_NATIVE, "Could not find file: %s", path); + return 0; + } + + static buffer[1024]; + new lang[3]; + new TransKey:bad_key = TransKey:-1; + new TransKey:cur_key = bad_key; + new len; + while (!feof(fp)) + { + buffer[0] = 0; + fgets(fp, buffer, 1023); + len = strlen(buffer); + if (len == 0) + { + continue; + } + if (isspace(buffer[len-1])) + { + buffer[--len] = 0; + } + if (buffer[0] == '"') + { + remove_quotes(buffer); + cur_key = CreateLangKey(buffer); + AddTranslation("en", cur_key, buffer); + continue; + } + if (isspace(buffer[0])) + { + continue; + } + if ((cur_key != bad_key) && (buffer[2] == ':' && buffer[3] == '"')) + { + lang[0] = buffer[0]; + lang[1] = buffer[1]; + lang[2] = 0; + remove_quotes(buffer[3]); + AddTranslation(lang, cur_key, buffer[3]); + } + } + + fclose(fp); + + return 1; +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/xtrafun.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/xtrafun.inc new file mode 100644 index 0000000..4503168 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmod_compat/xtrafun.inc @@ -0,0 +1,97 @@ +/* Xtrafun backwards compatibility +* +* by the AMX Mod X Development Team +* These natives were originally made by SpaceDude, EJ, and JustinHoMi. +* +* This file is provided as is (no warranties). +*/ + +#if !defined _xtrafun_included + #define _xtrafun_included + +#if !defined _engine_included + #include <engine.inc> +#endif + +/* Gets the velocity of an entity */ +stock get_entity_velocity(index, velocity[3]) { + new Float:vector[3]; + entity_get_vector(index, EV_VEC_velocity, vector); + FVecIVec(vector, velocity); +} + +/* Sets the velocity of an entity */ +stock set_entity_velocity(index, velocity[3]) { + new Float:vector[3]; + IVecFVec(velocity, vector); + entity_set_vector(index, EV_VEC_velocity, vector); +} + +/* Gets the origin of an entity */ +stock get_entity_origin(index, origin[3]) { + new Float:vector[3]; + entity_get_vector(index, EV_VEC_origin, vector); + FVecIVec(vector, origin); +} + +/* Sets the origin of an entity */ +stock set_entity_origin(index, origin[3]) { + new Float:vector[3]; + IVecFVec(origin, vector); + entity_set_vector(index, EV_VEC_origin, vector); +} + +/* Get the index of the grenade belonging to index. + * Model of grenade is returned in model[]. + * Specify the grenadeindex to start searching from, + * or leave it at 0 to search from the start. + * Returns grenade index. + * Paths + models of grenades in Counter-Strike: + * HEGRENADE = "models/w_hegrenade.mdl" + * FLASHBANG = "models/w_flashbang.mdl" + * SMOKEGRENADE = "models/w_smokegrenade.mdl" */ +stock get_grenade_index(index, model[], len, grenadeindex = 0) { + new entfind = grenadeindex; + new entowner = index; + + for (;;) { + entfind = find_ent_by_class(entfind, "grenade"); + + if (entfind && is_valid_ent(entfind)) { + if (entity_get_edict(entFind, EV_ENT_owner) == entowner) { + entity_get_string(entfind, EV_SZ_model, model); + return entfind; + } + } + else { + // Eventually comes here if loop fails to find a grenade with specified owner. + return 0; + } + } +} + +/* Find the number of entities in the game */ +stock current_num_ents() { + return entity_count(); +} + +enum { + classname = 0, + target, + targetname +}; + +#if !defined _vexd_bcompat_included +/* Find an entity ID from start_from_ent id (use 0 to start from + * the beginning, category is either "classname", "target" or + * "targetname", value is the name you are searching for */ +stock find_entity(start_from_ent, category, value[]) { + switch (category) { + case target: return find_ent_by_target(start_from_ent, value); + case targetname: return find_ent_by_tname(start_from_ent, value); + } + return find_ent_by_class(start_from_ent, value); +} +#endif + +#endif // _xtrafun_included \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmodx.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmodx.inc new file mode 100644 index 0000000..a2af76a --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/amxmodx.inc @@ -0,0 +1,1081 @@ +/* AMX Mod X functions +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is provided as is (no warranties). +*/ + +#if defined _amxmodx_included + #endinput +#endif +#define _amxmodx_included + +#include <core> +#include <float> +#include <amxconst> +#include <string> +#include <file> +#include <vault> +#include <lang> +#include <messages> +#include <vector> +#include <sorting> +#include <cellarray> +#include <celltrie> +#include <newmenus> + +/* Function is called just after server activation. +* Good place for configuration loading, commands and cvars registration. */ +forward plugin_init(); + +/* Called when the plugin is paused. */ +forward plugin_pause(); + +/* Called when the plugin is unpaused. */ +forward plugin_unpause(); + +/* Called when the mod tries to change the map. */ +forward server_changelevel(map[]); + +/* Function is called when all plugin_init from plugins +* were called, so all commmands and cvars should be already registered. */ +forward plugin_cfg(); + +/* Function called before plugin unloading (server deactivation) */ +forward plugin_end(); + +/* Called on log message. */ +forward plugin_log(); + +/* Use here model_precache() and sound_precache() functions. */ +forward plugin_precache(); + +/* Whenever player info is changed, this function is called. */ +forward client_infochanged(id); + +/* Called on client connection. */ +forward client_connect(id); + +/* Called when client gets valid STEAM id (usually +* between client_connect() and client_putinserver()). */ +forward client_authorized(id); + +/* Called when client is disconnecting from server. */ +forward client_disconnect(id); + +/* Called when client is sending command. */ +forward client_command(id); + +/* Called when client is entering to a game. */ +forward client_putinserver(id); + +/* Sets informations about plugin. Returns the plugin id of the calling plugin. */ +native register_plugin(const plugin_name[],const version[],const author[]); + +/* Precache model. Can be used only in plugin_precache() function.*/ +native precache_model(const name[]); + +/* Precache sound. Can be used only in plugin_precache() function.*/ +native precache_sound(const name[]); + +/* Precaches any file. */ +native precache_generic(const szFile[]); + +/* Sets info for player. */ +native set_user_info(index,const info[],const value[]); + +/* Gets info from player. */ +native get_user_info(index,const info[],output[],len); + +/* Sets info for server. */ +native set_localinfo(const info[],const value[]); + +/* Gets info from server. */ +native get_localinfo(const info[],output[],len); + +/* Shows text in MOTD window. When there is no header, the MOTD title +* will be the name of server. If message is filename, then a contents +* of this file will be displayed as MOTD. */ +native show_motd(player,const message[],const header[]=""); + +/* Sends message to player. Set index to 0 to send text globaly. */ +native client_print(index,type,const message[],any:...); + +/* Sends message to player by engine. Set index to 0 to send text globaly. */ +native engclient_print(player,type,const message[],any:...); + +/* Sends message to console. */ +native console_print(id,const message[],any:...); + +/* Sends command to console. */ +native console_cmd(id,const cmd[],any:...); + +/* Registers event on which a given function will be called +* Flags: +* "a" - global event. +* "b" - specified. +* "c" - send only once when repeated to other players. +* "d" - call if is send to dead player. +* "e" - to alive. +* NOTE: Due to a long-standing bug that would break compatibility with old plugins, +* the client id should be checked for alive/dead state if you use d or e. +* Examples for conditions: +* "2=c4" - 2nd parameter of message must be sting "c4". +* "3>10" - 3rd parameter must be greater then 10. +* "3!4" - 3rd must be different from 4. +* "2&Buy" - 2nd parameter of message must contain "Buy" substring. +* "2!Buy" - 2nd parameter of message can't contain "Buy" substring. */ +native register_event(const event[],const function[],const flags[],const cond[]="", ... ); + +/* Registers log event on which the given function will be called +* Examples for conditions: +* "0=World triggered" "1=Game_Commencing" +* "1=say" +* "3=Terrorists_Win" +* "1=entered the game" +* "0=Server cvar" +*/ +native register_logevent(const function[], argsnum, ... ); + +/** + * Sets format for hudmessage. + * Note - as of AMX Mod X 1.61, setting the channel to -1 + * will automatically choose the next available HUD channel for a player. + */ +native set_hudmessage(red=200, green=100, blue=0, Float:x=-1.0, Float:y=0.35, effects=0, Float:fxtime=6.0, Float:holdtime=12.0, Float:fadeintime=0.1, Float:fadeouttime=0.2,channel=4); + +/* Displays HUD message to given player. */ +native show_hudmessage(index,const message[],any:...); + +/* Displays menu. Keys have bit values (key 1 is (1<<0), key 5 is (1<<4) etc.). */ +native show_menu(index,keys,const menu[], time = -1, const title[] = ""); + +/* Gets value from client messages. +* When you are asking for string the array and length is needed (read_data(2,name,len)). +* Integer is returned by function (new me = read_data(3)). +* Float is set in second parameter (read_data(3,value)). */ +native read_data(value, any:... ); + +/* Returns number of values in client message. */ +native read_datanum(); + +/* Gets log message. Can be called only in plugin_log() forward function. */ +native read_logdata(output[],len); + +/* Returns number of log arguments. +* Can be called only in plugin_log() forward function. */ +native read_logargc(); + +/* Gets log argument indexed from 0. +* Can be called only in plugin_log() forward function. */ +native read_logargv(id,output[],len); + +/* Parse log data about user ( "Butcher<5><BOT><TERRORIST>" etc. ). */ +native parse_loguser(const text[], name[], nlen, &userid = -2, authid[] = "", alen = 0, team[]="", tlen=0); + +/* Prints message to server console. +* You may use text formating (f.e. server_print("%-32s %.2f!","hello",7.345)) */ +native server_print(const message[], any:...); + +/* Returns 1 or 0. */ +native is_map_valid(const mapname[]); + +/* Returns 1 or 0. */ +native is_user_bot(index); + +/* Returns 1 or 0. */ +native is_user_hltv(index); + +/* Returns 1 or 0. */ +native is_user_connected(index); + +/* Returns 1 or 0. */ +native is_user_connecting(index); + +/* Returns 1 or 0. */ +native is_user_alive(index); + +/* Returns 1 or 0. */ +native is_dedicated_server(); + +/* Returns 1 or 0. */ +native is_linux_server(); + +/* Returns 1 or 0. */ +native is_jit_enabled(); + +/* Returns AMXX's version string of the current gameserver */ +native get_amxx_verstring(buffer[], length); + +/* If player is not attacked function returns 0, in other + * case returns index of attacking player. On second and third + * parameter you may get info about weapon and body hit place. + * As of 1.75, get_user_attacker can return a non-player index if the player was attacked by a non-player entity. + */ +native get_user_attacker(index,...); + +/* If player doesn't hit at anything function returns 0.0, +* in other case the distance between hit point and player is returned. +* If player is aiming at another player then the id and part of body are set. */ +native Float:get_user_aiming(index,&id,&body,dist=9999); + +/* Returns player frags. */ +native get_user_frags(index); + +/* Returns player armor. */ +native get_user_armor(index); + +/* Returns player deaths. */ +native get_user_deaths(index); + +/* Returns player health. */ +native get_user_health(index); + +/* Returns index. */ +native get_user_index(const name[]); + +/* Returns ip. */ +native get_user_ip(index,ip[],len, without_port = 0); + +/* Returns if the player has the weapon or not in their pev->weapons field. + set "setweapon" to 0 to turn the bit off, set to 1 to turn it on. */ +native user_has_weapon(index,weapon,setweapon=-1); + +/* Returns id of currently carried weapon. Gets also +* ammount of ammo in clip and backpack. */ +native get_user_weapon(index,&clip=0,&ammo=0); + +/* Gets ammo and clip from current weapon. */ +native get_user_ammo(index,weapon,&clip,&ammo); + +/* Converts numbers from range 0 - 999 to words. */ +native num_to_word(num,output[],len); + +/* Returns team id. When length is greater then 0 +* then a name of team is set. */ +native get_user_team(index, team[]="", len = 0); + +/* Returns player playing time in seconds. +* If flag is set then result is without connection time. */ +native get_user_time(index, flag = 0); + +/* Gets ping and loss at current time. */ +native get_user_ping(index, &ping, &loss); + +/* Gets origin from player. +* Modes: +* 0 - current position. +* 1 - position from eyes (weapon aiming). +* 2 - end position from player position. +* 3 - end position from eyes (hit point for weapon). +* 4 - position of last bullet hit (only CS). */ +native get_user_origin(index, origin[3], mode = 0); + +/* Returns all carried weapons as bit sum. Gets + * also theirs indexes. + * Note that num is incremental - if you pass 0, you get + * 32 weapons towards the total. Afterwards, num will + * will contain the number of weapons retrieved. + * However, subsequent calls to get_user_weapons() will + * return the next batch of weapons, in case the mod + * supports more than 32 weapons. + * This means to call get_user_weapons() on the same + * inputs twice, you must reset num to 0 to get the + * original output again. + */ +native get_user_weapons(index,weapons[32],&num); + +/* Returns weapon name. */ +native get_weaponname(id,weapon[],len); + +/* Returns player name. */ +native get_user_name(index,name[],len); + +/* Gets player authid. */ +native get_user_authid(index, authid[] ,len); + +/* Returns player userid. */ +native get_user_userid(index); + +/* Slaps player with given power. */ +native user_slap(index,power,rnddir=1); + +/* Kills player. When flag is set to 1 then death won't decrase frags. */ +native user_kill(index,flag=0); + +/* Logs something into the current amx logfile +* Parameters: +* string[] - format string +* ... - optional parameters +* Return value: +* always 0 */ +native log_amx(const string[], any:...); + +/* Sends message to standard HL logs. */ +native log_message(const message[],any:...); + +/* Sends log message to specified file. */ +native log_to_file(const file[],const message[],any:...); + +/* Returns number of players put in server. +* If flag is set then also connecting are counted. */ +native get_playersnum(flag=0); + +/* Sets indexes of players. +* Flags: +* "a" - don't collect dead players. +* "b" - don't collect alive players. +* "c" - skip bots. +* "d" - skip real players. +* "e" - match with team. +* "f" - match with part of name. +* "g" - ignore case sensitivity. +* "h" - skip HLTV. +* Example: Get all alive CTs: get_players(players,num,"ae","CT") */ +native get_players(players[32], &num ,const flags[]="", const team[]=""); + +/* Gets argument from command. */ +native read_argv(id,output[],len); + +/* Gets line of all arguments. */ +native read_args(output[],len); + +/* Returns number of arguments (+ one as command). */ +native read_argc(); + +/* Converts string to sum of bits. +* Example: "abcd" is a sum of 1, 2, 4 and 8. */ +native read_flags(const flags[]); + +/* Converts sum of bits to string. +* Example: 3 will return "ab". */ +native get_flags(flags,output[],len); + +/* Find player. +* Flags: +* "a" - with given name. +* "b" - with given part of name. +* "c" - with given authid. +* "d" - with given ip. +* "e" - with given team name. +* "f" - don't look in dead players. +* "g" - don't look in alive players. +* "h" - skip bots. +* "i" - skip real players. +* "j" - return index of last found player. +* "k" - with given userid. +* "l" - ignore case sensitivity. */ +native find_player(const flags[], ... ); + +/* Removes quotes from sentence. */ +native remove_quotes(text[]); + +/* Executes command on player. */ +native client_cmd(index,const command[],any:...); + +/* This is an emulation of a client command (commands aren't send to client!). +* It allows to execute some commands on players and bots. +* Function is excellent for forcing to do an action related to a game (not settings!). +* The command must stand alone but in arguments you can use spaces. */ +native engclient_cmd(index,const command[],const arg1[]="",const arg2[]=""); + +/* Executes command on a server console. */ +native server_cmd(const command[],any:...); + +/* Sets a cvar to given value. */ +native set_cvar_string(const cvar[],const value[]); + +/* If a cvar exists returns 1, in other case 0 */ +native cvar_exists(const cvar[]); + +/* Removes a cvar flags (not allowed for amx_version, +* fun_version and sv_cheats cvars). */ +native remove_cvar_flags(const cvar[],flags = -1); + +/* Sets a cvar flags (not allowed for amx_version, +* fun_version and sv_cheats cvars). */ +native set_cvar_flags(const cvar[],flags); + +/* Returns a cvar flags. */ +native get_cvar_flags(const cvar[]); + +/* Sets a cvar to given float. */ +native set_cvar_float(const cvar[],Float:value); + +/* Gets a cvar float. */ +native Float:get_cvar_float(const cvarname[]); + +/* Gets a cvar integer value. */ +native get_cvar_num(const cvarname[]); + +/* Sets a cvar with integer value. */ +native set_cvar_num(const cvarname[],value); + +/* Reads a cvar value. */ +native get_cvar_string(const cvarname[],output[],iLen); + +/* Returns a name of currently played map. */ +native get_mapname(name[],len); + +/* Returns time remaining on map in seconds. */ +native get_timeleft(); + +/* Returns a game time. */ +native Float:get_gametime(); + +/* Returns maxplayers setting. */ +native get_maxplayers(); + +/* Returns a name of currently played mod. */ +native get_modname(name[],len); + +/* Returns time in given format. The most popular is: "%m/%d/%Y - %H:%M:%S". */ +native get_time(const format[],output[],len); + +/* Returns time in given format. The most popular is: "%m/%d/%Y - %H:%M:%S". +* Last parameter sets time to format. */ +native format_time(output[],len, const format[],time = -1); + +/* Returns system time in seconds elapsed since 00:00:00 on January 1, 1970. +* Offset is given in seconds.*/ +native get_systime(offset = 0); + +/* Returns time in input and additionaly fills missing information +* with current time and date. If time is different than -1 then parsed +* time is added to given time. +* Example: +* parset_time( "10:32:54 04/02/2003", "%H:%M:%S %m:%d:%Y" ) +* For more information see strptime(...) function from C libraries. */ +native parse_time(const input[],const format[], time = -1); + +/* Calls function on specified time. +* Flags: +* "a" - repeat. +* "b" - loop task. +* "c" - do task on time after a map timeleft. +* "d" - do task on time before a map timelimit. */ +native set_task(Float:time,const function[],id = 0,const parameter[]="",len = 0,const flags[]="", repeat = 0); + +/* Removes all tasks with given id. If outside var is +* set then a task can be removed also when +* was set in another plugin. */ +native remove_task(id = 0, outside = 0); + +/* Changes the time of a task */ +native change_task(id = 0, Float:newTime=1.0, outside = 0); + +/* Returns 1 if task under given id exists. */ +native task_exists(id = 0, outside = 0); + +/* Sets the users flags with the assignment by bitwise OR operator. */ +native set_user_flags(index,flags=-1,id=0); + +/* Gets flags from player. Set index to 0 if you want to read flags from server. */ +native get_user_flags(index,id=0); + +/* Removes flags for player. */ +native remove_user_flags(index,flags=-1,id=0); + +/* Registers function which will be called from client console. + * Set FlagManager to 1 to make FlagManager always include this command + * Set FlagManager to 0 to make FlagManager never include this command + * Returns the command ID. + */ +native register_clcmd(const client_cmd[],const function[],flags=-1, const info[]="", FlagManager=-1); + +/* Registers function which will be called from any console. + * Set FlagManager to 1 to make FlagManager always include this command + * Set FlagManager to 0 to make FlagManager never include this command + * Returns the command ID. + */ +native register_concmd(const cmd[],const function[],flags=-1, const info[]="", FlagManager=-1); + +/* Registers function which will be called from server console. + * Returns the command ID. + */ +native register_srvcmd(const server_cmd[],const function[],flags=-1, const info[]=""); + +/* Gets info about client command. */ +native get_clcmd(index, command[], len1, &flags, info[], len2, flag); + +/* Returns number of registered client commands. */ +native get_clcmdsnum(flag); + +/* Gets info about server command. */ +native get_srvcmd(index,server_cmd[],len1,&flags, info[],len2, flag); + +/* Returns number of registered server commands. */ +native get_srvcmdsnum(flag); + +/* Gets info about console command. If id is set to 0, +then function returns only server cmds, if positive then +returns only client cmds. in other case returns all console commands. */ +native get_concmd(index,cmd[],len1,&flags, info[],len2, flag, id = -1); + +/* Gets the parent plugin id of a console command. */ +native get_concmd_plid(cid, flag_mask, id_type); + +/* Returns number of registered console commands. */ +native get_concmdsnum(flag,id = -1); + +/* Returns the number of plugin-registered cvars. */ +native get_plugins_cvarsnum(); + +/* Returns information about a plugin-registered cvar. */ +native get_plugins_cvar(num, name[], namelen, &flags=0, &plugin_id=0, &pcvar_handle=0); + +/* Gets unique id of menu. Outside set to 1 allows +* to catch menus outside a plugin where register_menuid is called. */ +native register_menuid(const menu[], outside=0 ); + +/* Calls function when player uses specified menu and proper keys. */ +native register_menucmd(menuid,keys, const function[] ); + +/* Gets what menu the player is watching and what keys for menu he have. +* When there is no menu the index is 0. If the id is negative then the menu +* is VGUI in other case the id is from register_menuid() function. */ +native get_user_menu(index,&id,&keys); + +/* Forces server to execute sent server command at current time. +* Very useful for map changes, setting cvars and other activities. */ +native server_exec(); + +/* Emits sound. Sample must be precached. */ +native emit_sound(index, channel, const sample[], Float:vol, Float:att,flags, pitch); + +/* Registers new cvar for HL engine. + * Returns the cvar pointer for get/set_pcvar functions. + */ +native register_cvar(const name[],const string[],flags = 0,Float:fvalue = 0.0); + +/* Generates random floating point number from a to b. */ +native Float:random_float(Float:a,Float:b); + +/* Generates random integer from a to b. */ +native random_num(a,b); + +/* Returns id of client message. +* Example: get_user_msgid("TextMsg"). */ +native get_user_msgid(const name[]); + +/* Gets name of client message index. Return value is number of +* characters copied into name. Returns 0 on invalid msgid. */ +native get_user_msgname(msgid, name[], len); + +/* Checks if public variable with given name exists in loaded plugins. */ +native xvar_exists( const name[] ); + +/* Returns an unique id for public variable specified by name. If such +* variable doesn't exist then returned value is -1. */ +native get_xvar_id( const name[] ); + +/* Returns an integer value of a public variable. Id is a value +* returned by get_xvar_id(...) native. */ +native get_xvar_num( id ); + +/* Returns a float value of a public variable. Id is a value +* returned by get_xvar_id(...) native. */ +native Float:get_xvar_float( id ); + +/* Sets a value of a public variable. Id is a value +* returned by get_xvar_id(...) native. */ +native set_xvar_num( id, value = 0 ); + +/* Sets a float value of a public variable. Id is a value +* returned by get_xvar_id(...) native. */ +native set_xvar_float( id, Float:value = 0.0 ); + +/* Checks whether a module is loaded. If it is not, the return value is -1, otherwise +* the return value is the module id. The function is case insensitive. */ +native is_module_loaded(const name[]); + +/* Gets info about a module. +* Parameters: +* id - the id of the module +* name[] - The name of the module will be stored here +* nameLen - maximal length of the name +* author[] - the author will be stored here +* authorLen - maximal length of the author +* version[] - the version of the module will be stored here +* versionLen - maximal length of the version +* status - the status of the module will be stored here +* Return value: +* id - success +* -1 - module not found */ +native get_module(id, name[], nameLen, author[], authorLen, version[], versionLen, &status); + +/* Returns number of currently registered modules */ +native get_modulesnum(); + +/** + * Checks whether a plugin is loaded by the given registered name (such as "Admin Base"), or, optionally + * the given filename ("admin.amxx"). + * + * @param name Either the plugin name to lookup, or the plugin filename to lookup. + * @param usefilename Set to true if you want to search for the plugin by the filename, false to search + * by the plugin's registered name. + * + * @return Plugin ID of the matching plugin on a successful search, -1 on a failed search. + * + * @note Prior to 1.8, this function would only search for plugins registered names, not + * the filename. + * + * @note The plugin registered name search is a case insensitive search, however, the plugin + * filename search is case sensitive. + */ +native is_plugin_loaded(const name[], bool:usefilename=false); + +/* Gets info about plugin by given index. + * Function returns -1 if plugin doesn't exist with given index. + * Note: the [...] portion should not be used, and is only for backward compatibility. + * Use index of -1 to use the calling plugin's ID. + */ +native get_plugin(index,filename[]="",len1=0,name[]="",len2=0,version[]="",len3=0,author[]="",len4=0,status[]="",len5=0,...); + +/* Returns number of all loaded plugins. */ +native get_pluginsnum(); + +/* Pauses function or plugin so it won't be executed. +* In most cases param1 is name of function and +* param2 name of plugin (all depends on flags). +* Flags: +* "a" - pause whole plugin. +* "c" - look outside the plugin (by given plugin name). +* "d" - set "stopped" status when pausing whole plugin. +* In this status plugin is unpauseable. +* Example: pause("ac","myplugin.amxx") +* +* Note: There used to be the b and e flags as well, +* which have been deprecated and are no longer used. +*/ +native pause(const flag[], const param1[]="",const param2[]=""); + +/* Unpauses function or plugin. +* Flags: +* "a" - unpause whole plugin. +* "c" - look outside the plugin (by given plugin name). */ +native unpause(const flag[], const param1[]="",const param2[]=""); + +/* Call a function in this / an another plugin by name. +* Parameters: +* plugin - plugin filename; if "", the caller plugin is used. +* If specified, it has to be the exact filename (for example stats.amxx) +* func - function name +* Return value: +* 1 - Success +* 0 - Runtime error +* -1 - Plugin not found +* -2 - Function not found */ +native callfunc_begin(const func[], const plugin[]=""); + +/* Call a function in this / an another plugin by id. +* Parameters: +* plugin - plugin id; the id you would pass to get_plugin +* If < 0, the current plugin is taken +* func - function id +* Return value: +* 1 - Success +* -1 - Plugin not found +* -2 - Function not executable */ +native callfunc_begin_i(func, plugin = -1); + +/* Get a function id (for callfunc_begin_i) + To get the plugin id, use the find_plugin stock +*/ +native get_func_id(const funcName[], pluginId = -1); + +/* Push a parameter (integer, string, float) + * Note that none of these values are const. + * Anything pushed by intrf, floatrf, array, or str + * can be modified by the called function. + */ +native callfunc_push_int(value); +native callfunc_push_float(Float: value); +native callfunc_push_intrf(&value); +native callfunc_push_floatrf(& Float: value); + +/* If copyback is 1 (default), any changes are copied back. + * Note that this will defy the 'const' specifier for push_str(), + * which is only kept for special backwards compatibility. + */ +native callfunc_push_str(const VALUE[], bool:copyback=true); +native callfunc_push_array(const VALUE[], array_size, bool:copyback=true); + +/* Make the actual call. +* Return value of the function called. */ +native callfunc_end(); + +/* Called on inconsistent file. You can put any text +* into reason to change an original message. */ +forward inconsistent_file(id,const filename[], reason[64] ); + +/* Forces the client and server to be running with the same +* version of the specified file ( e.g., a player model ). */ +native force_unmodified(force_type, const mins[3] , const maxs[3], const filename[]); + +/* Calculates the md5 keysum of a string */ +native md5(const szString[], md5buffer[34]); + +/* Calculates the md5 keysum of a file */ +native md5_file(const file[], md5buffer[34]); + +/* Returns the internal flags set on the plugin's state + * If hdr is 1, it will return the pcode flags rather than state flags. + * + * Use a plid of -1 to get the flags for the calling plugin. + */ +native plugin_flags(hdr=0, plid=-1); + +/** + * @deprecated + * Do not use! + */ +forward plugin_modules(); + +native require_module(const module[]); + +native is_amd64_server(); + +/* Returns plugin id searched by file/name. Returns INVALID_PLUGIN_ID on failure. */ +native find_plugin_byfile(const filename[], ignoreCase=1); + +/* This is called before plugin_init and allows you to register natives. */ +forward plugin_natives(); + +/* Registers a NATIVE. When a plugin uses your native (you should distribute a .inc), + * the handler will be called with two parameters: the calling plugin id, and the + * number of parameters. + * If you set style=1, the method of parameter passing is a tad more efficient. + * Instead of "id, numParams", you label the native exactly as how the parameters + * should, in theory, be sent. Then for each byreference parameter, you call + * param_convert(num). This is theoretically more efficient but quite hacky. + * The method was discovered by dJeyL, props to him! + */ +native register_native(const name[], const handler[], style=0); + +/* Registers a library. To mark a library as required, place the following + * in your include file: + * #pragma reqlib <name> + * #if !defined AMXMODX_NOAUTOLOAD + * #pragma loadlib <name> + * #endif + */ +native register_library(const library[]); + +/* Logs an error in your native, and breaks into the debugger. + * Acts as if the calling plugin had the error. + */ +native log_error(error, const fmt[], any:...); + +// More Dynamic Native System Stuff +// Each of these natives affects one of the parameters sent to your native. +// Parameters go from 1 to n, just like in modules, and it is important to +// remember two things: The parameters are actually coming from another plugin +// (and just like modules, you must use these special natives). +// two: you CANNOT call your native from inside your native. This is very bad. + +//This function should only be called if you registered with style=1 +//You only need to use it on by-reference parameters. +native param_convert(num); + +// Gets a string from the calling plugin +native get_string(param, dest[], maxlen); + +// Sets a string in the calling plugin +native set_string(param, dest[], maxlen); + +// Gets a normal int or float parameter +native get_param(param); +native Float:get_param_f(param); + +// Gets/Sets a float or int parameter by reference +native get_param_byref(param); +native Float:get_float_byref(param); +native set_param_byref(param, value); +native set_float_byref(param, Float:value); + +// Copies an array either from the calling plugin to you +// Or copies an array from you to the calling plugin +native get_array(param, dest[], size); +native get_array_f(param, Float:dest[], size); +native set_array(param, const source[], size); +native set_array_f(param, const Float:source[], size); + +// Dispatches a client cvar query +// id: Player id +// cvar: cvar name +// resultFunc: public handler function +// paramLen + params: optional array parameter +// resultFunc looks like: +// public callbackCvarValue(id, const cvar[], const value[]) +// or if you use the optional parameter: +// public callbackCvarValue(id, const cvar[], const value[], const param[]) +native query_client_cvar(id, const cvar[], const resultFunc[], paramlen=0, const params[] = ""); + + +/** + * Allows you to trap error messages that occur in your plugin. + * You can use this to override the debug messages that occur when your plugin + * causes some sort of runtime error. Your handler will be called in this style: + * + * public error_filter(error_code, bool:debugging, message[]) + * error_code is the AMX_ERR code. debugging is whether or not the plugin is in debug mode. + * message[] is any message that was sent along with the error. + * Return PLUGIN_CONTINUE to let the error pass through the filter. + * Return PLUGIN_HANDLED to block the error from displaying. + */ +native set_error_filter(const handler[]); + +/** + * Gets a trace handle for the item at the top of the traced call stack. + * Returns 0 if no debugging information is available. + */ +native dbg_trace_begin(); + +/** + * Gets the next item in a traced call stack. Returns 0 if no more traces exist. + */ +native dbg_trace_next(trace); + +/** + * Gets the call stack info for a trace. + */ +native dbg_trace_info(trace, &line, function[], maxLength1, file[], maxLength2); + +/** + * Gets the formatted error string, which looks like "Run time error X: (description)" + */ +native dbg_fmt_error(buffer[], maxLength); + +/** + * The following two natives are useful for creating cross-mod plugins + * where instead of #define flags to compile separate versions, you can + * filter out the natives and modules depending on the current mod. + * Examples of this usage are in plmenu.sma, which filters out the cstrike module. + */ + +/** + * Sets a native filter. This must be first set in plugin_natives(), but future calls will + * simply set a new filter. + * This filter will allow your plugin to load even if its modules aren't loaded. For example, + * if Fun isn't loaded and you use set_user_frags, your plugin will still load. However, if you + * attempt to call this native, your filter will intercept it with these parameters: + * + * public function native_filter(const name[], index) + * native - name of native + * index - index of native + * trap - 0 if native couldn't be found, 1 if native use was attempted + * + * If you return PLUGIN_HANDLED, no error is thrown. If you return PLUGIN_CONTINUE, + * your plugin will have a run-time-error. To print your own error, or change the default, + * you can return PLUGIN_HANDLED or return PLUGIN_CONTINUE and use set_error_filter. + * If you return PLUGIN_CONTINUE when trap is 0, the plugin will ABORT AND FAIL TO LOAD! + * When trap is 0, it is unsafe to use natives that modify the server or use other plugins. + */ +native set_native_filter(const handler[]); + +/** + * This function sets a module/library filter. It will let you intercept the automatic requirement + * of a module and return PLUGIN_CONTINUE to fail load or PLUGIN_HANDLED to imply that load + * can continue even without the module. + * + * This is the most unforgiving of the filter functions. You can ONLY call it during plugin_natives, + * and any error that occurs is not filtered -- instead your plugin will fail to load as if you + * returned PLUGIN_CONTINUE. + * + * Your handler will be called with this prototype: + * + * public module_filter(const library[], LibType:type); + * library - library or class name of the module that is required + * libtype - The type of requirement being checked (library/module or class). + * + * + * set_module_filter() returns 0 on success (unlike most natives). + */ +native set_module_filter(const handler[]); + +/** + * Aborts execution of the current callback. Your script will throw a run time error. + * You can also specify an optional message. + * You should NOT call this function inside: + * - Error or module filters (native filters are safe if trap is 1) + * - plugin_natives() + * Note that the plugin's filename is prepending to your message: + * [myplugin.amxx] MESSAGE + */ +native abort(error, const fmt[]="", any:...); + +/** + * Checks if a specific module is loaded. This is the exact same method AMX Mod X + * uses to see if a module is required by a plugin. For example: + * module_exists("cstrike") + * module_exists("dbi") + */ +native module_exists(const logtag[]); + +/** + * Checks if a library/class is loaded. This is the newer version of module_exists. + */ +native LibraryExists(const library[], LibType:type); + +/** + * Returns the next valid hudchannel for a user, from 1-4. + */ +native next_hudchannel(player); + +/** + * Creates a HUD Synchronization Object. Create one of these + * for each section of the screen that contains overlapping HUD messages. + * For example, if you use both sides of the screen to display three messages + * that can potentially overlap, each side counts as a synchronizable area. + * You can then use ShowSyncHudMsg() to correctly synchronize displaying the + * HUD message with any other messages potentially in its class. Note that this + * does not yet do anything like reserve screen area, its sole purpose is to be + * able to wipe an old message on an auto-channel and ensure that it will not + * clear a message from another plugin. + * The parameters are kept blank for future use. + */ +native CreateHudSyncObj(num=0, ...); + +/** + * Displays a synchronized HUD message. This will check that your + * HUD object has its previous display on the screen cleared before + * it proceeds to write another. It will only do this in the case + * of that channel not having been cleared already. + * Target can be 0 for all players or 1-get_maxplayers(). + * You must use set_hudmessage, although the channel parameter is + * entirely ignored. + */ +native ShowSyncHudMsg(target, syncObj, const fmt[], any:...); + +/** + * Clears the display on a HudSync Object. This is essentially the same + * thing as: ShowSyncHudMsg(x, y, ""), except doing that would send + * out two messages and use up another channel. This re-uses the last + * channel and clears it at the same time. + * Note: for this you do not have to use set_hudmessage(). + * Note: target can be 0 for all players. + */ +native ClearSyncHud(target, syncObj); + +//no +native int3(); + +//Sets your plugin to a failed/error state. +//If you use this, your plugin will cease operating. +//This is a good idea to fatally, but gracefully, handle errors. +//You can set a failed error message. +native set_fail_state(const err_msg[]); + +//Returns the reference address of the variable passed in. +//This address is local to the plugin, and not a full CPU address +//pass the variable as the first parameter +native get_var_addr(any:...); + +//Returns the value of an address. This dereferences something returned by +// get_var_addr(). Attempting to pass in a value beyond stack or heap limits +// will result in AMX_ERR_MEMACCESS. +native get_addr_val(addr); + +//Sets the value of an address. same as above, essentially +native set_addr_val(addr, val); + + +/** + * Creates a multi-plugin forward. + * Stop type must be one of the ET_ values in amxconst.inc + * results will be > 0 for success + */ +native CreateMultiForward(const name[], stop_type, ...); + +/** + * Creates a multi-forward plugin that can filter between old/new plugins. + * Old plugins are used by the AMX Mod backwards compatibility layer. + * Stop type must be one of the ET_ values in amxconst.inc + * Forward type must be one of the FORWARD_ values in amxconst.inc. + */ +native CreateMultiForwardEx(const name[], stop_type, forward_type, ...); + +/** + * Creates a forward for one plugin. + * Results will be > 0 for success. + * id should be an id such as returned by find_plugin_byfile. + * Unlike get_plugin(), negative numbers will not work. + */ +native CreateOneForward(plugin_id, const name[], ...); + +/** + * prepares an array. use this and pass the result into + * ExecuteForward() instead of the array itself. + */ +native PrepareArray(const array[], size, copyback=0); + +/** + * executes a forward. returns result in ret. + * returns 1 for success, 0 for failure. + */ +native ExecuteForward(forward_handle, &ret, any:...); + +/** + * Destroys/deallocates any type of forward + */ +native DestroyForward(forward_handle); + + +/* CVAR Pointer natives. Use these for + * more optimized CVAR usage. + * register_cvar() returns a pointer you can use. + */ + +/** + * Get a cvar pointer. Returns 0 if not found. + */ +native get_cvar_pointer(const cvar[]); + +native get_pcvar_flags(pcvar); +native set_pcvar_flags(pcvar, flags); +native get_pcvar_num(pcvar); +native set_pcvar_num(pcvar, num); +native Float:get_pcvar_float(pcvar); +native set_pcvar_float(pcvar, Float:num); +native get_pcvar_string(pcvar, string[], maxlen); +native set_pcvar_string(pcvar, const string[]); + +/** + * Sets a whole array to a certain value. + */ +native arrayset(array[], value, size); + +/** + * Returns the weapon id, otherwise 0 when no id found. + * The weapon name is case sensitive, and has the weapon_* form. + */ +native get_weaponid(const name[]); + +/** + * Adds an admin to the dynamic admin storage + * for lookup at a later time + */ +native admins_push(const AuthData[], const Password[], Access, Flags); + +/** + * Gets the number of admins in the dynamic admin + * storage list + */ +native admins_num(); + +/** + * Gets information about a dynamically stored admin + * Use the enum AdminProp + * Returns an integer value: AdminProp_Access, AdminProp_Flags + * Sets the buffer string: AdminProp_Auth, AdminProp_Password + */ +native admins_lookup(num, AdminProp:Property, Buffer[]="", BufferSize=0); + +/** + * Clears the list of dynamically stored admins + */ +native admins_flush(); +// Keep this always at the bottom of this file +#include <message_stocks> diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/cellarray.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/cellarray.inc new file mode 100644 index 0000000..77e7a10 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/cellarray.inc @@ -0,0 +1,254 @@ +#if defined _cellarray_included + #endinput +#endif + +#define _cellarray_included + +enum Array +{ + Invalid_Array = 0 +}; +/** + * These arrays are intended to be used for a form of global storage without + * requiring a #define that needs to be increased each time a person needs more + * storage. + * These are not designed to be used as a replacement for normal arrays, as + * normal arrays are faster and should be used whenever possible. + */ + +/** + * Creates a handle to a dynamically sized array. + * It is very important that the cellsize you provide matches up with the buffer sizes + * that you pass with subsequent Array{Get,Set,Push} calls. + * + * @param cellsize How many cells each entry in the array is. + * @param reserved How many blank entries are created immediately when the array is created. These entries are not valid to read from until called with ArraySet. + * @return Handle to the array. + */ +native Array:ArrayCreate(cellsize=1, reserved=32); + +/** + * Clears all entries from the array. + * + * @param which The array to clear. + * @return 1 on success, 0 on failure. + */ +native ArrayClear(Array:which); + +/** + * Returns the number of elements in the array. + * + * @param which The array to check. + * @return How many elements are in the array. + */ +native ArraySize(Array:which); + +/** + * Returns data within an array. + * Make sure the output buffer matches the size the array was created with! + * + * @param which The array to retrieve the item from. + * @param item The item to retrieve (zero-based). + * @param output The output buffer to write. + */ +native ArrayGetArray(Array:which, item, any:output[]); + +/** + * Returns a single cell of data from an array. + * Use this only with arrays that were created with a cellsize of 1! + * + * @param which The array to retrieve the item from. + * @param item The item to retrieve (zero-based). + * @return The value of the cell. + */ +native any:ArrayGetCell(Array:which, item); + +/** + * Returns a string value from an array. + * + * @param which The array to retrieve the item from. + * @param item The item to retrieve (zero-based). + * @param output The variable to store the value in. + * @param size Character size of the output buffer. + */ +native ArrayGetString(Array:which, item, output[], size); + +/** + * Sets an item's data with that of a local buffer. + * The buffer size must match what the cellsize that the array was created with! + * The item must already exist, use ArrayPushArray to create a new item within the array. + * + * @param which The array to set the item from within. + * @param item The item to set (zero-based). + * @param input The input buffer to store. + */ +native ArraySetArray(Array:which, item, const any:input[]); + +/** + * Sets an array's single cell value. Use this only on array that were created with a cellsize of 1! + * The item must already exist, use ArrayPushCell to create a new item within the array. + * + * @param which The array to set the item from within. + * @param item The item to set (zero-based). + * @param input The value to set. + */ +native ArraySetCell(Array:which, item, any:input); + +/** + * Sets a string value from an array. + * The stored string will be truncated if it is longer than the cellsize the array was created with! + * The item must already exist, use ArrayPushString to create a new item within the array. + * + * @param which The array to set the item from within. + * @param item The item to set (zero-based). + * @param input The string to set the item as. + */ +native ArraySetString(Array:which, item, const input[]); + +/** + * Creates a new item at the end of the array and sets its data with that of a local buffer. + * The buffer size must match what the cellsize that the array was created with! + * + * @param which The array to add the item to. + * @param input The input buffer to store. + */ +native ArrayPushArray(Array:which, const any:input[]); + +/** + * Creates a new item and sets the array's single cell value. + * Use this only on array that were created with a cellsize of 1! + * + * @param which The array to add the item to. + * @param input The value to set. + */ +native ArrayPushCell(Array:which, any:input); + +/** + * Creates a new element in the array and sets its value to the input buffer. + * The stored string will be truncated if it is longer than the cellsize the array was created with! + * + * @param which The array to add the item to. + * @param input The string to set the item as. + */ +native ArrayPushString(Array:which, const input[]); + +/** + * Inserts an item after the selected item. All items beyond it get shifted up 1 space. + * The buffer size must match what the cellsize that the array was created with! + * + * @param which The array to add the item to. + * @param item The item to insert after. + * @param input The input buffer to store. + */ +native ArrayInsertArrayAfter(Array:which, item, const any:input[]); + +/** + * Inserts an item after the selected item. All items beyond it get shifted up 1 space. + * Use this only on an array that was created with a cellsize of 1! + * + * @param which The array to add the item to. + * @param item The item to insert after. + * @param input The value to set. + */ +native ArrayInsertCellAfter(Array:which, item, any:input); + +/** + * Inserts an item after the selected item. All items beyond it get shifted up 1 space. + * The stored string will be truncated if it is longer than the cellsize the array was created with! + * + * @param which The array to add the item to. + * @param item The item to insert after. + * @param input The value to set. + */ +native ArrayInsertStringAfter(Array:which, item, const input[]); + +/** + * Inserts an item before the selected item. All items beyond it, and the selected item get shifted up 1 space. + * The buffer size must match what the cellsize that the array was created with! + * + * @param which The array to add the item to. + * @param item The item to insert before. + * @param input The input buffer to store. + */ +native ArrayInsertArrayBefore(Array:which, item, const any:input[]); + +/** + * Inserts an item before the selected item. All items beyond it, and the selected item get shifted up 1 space. + * Use this only on an array that was created with a cellsize of 1! + * + * @param which The array to add the item to. + * @param item The item to insert after. + * @param input The value to set. + */ +native ArrayInsertCellBefore(Array:which, item, const any:input); + +/** + * Inserts an item before the selected item. All items beyond it, and the selected item get shifted up 1 space. + * The stored string will be truncated if it is longer than the cellsize the array was created with! + * + * @param which The array to add the item to. + * @param item The item to insert before. + * @param input The value to set. + */ +native ArrayInsertStringBefore(Array:which, item, const input[]); + +/** + * Swaps the position of two items. + * + * @param which The array that contains the items. + * @param item1 The first item to swap. + * @param item2 The second item to swap. + */ +native ArraySwap(Array:which, item1, item2); + +/** + * Deletes an item from the array. All items beyond it get shifted down 1 space. + * + * @param which The array that contains the item to delete. + * @param item The item to delete. + */ +native ArrayDeleteItem(Array:which, item); + +/** + * Creates a handle that is passable to a format compliant routine for printing as a string (with the %a format option). + * It is suggested to pass the function directly as a parameter to the format routine. + * The array contents must be a null-terminated string! + * + * An example usage: client_print(id, print_chat, "%a", ArrayGetStringHandle(MessageArray, i)); + * + * @param which The array the string is stored in. + * @param item Which item to print the string value of. + * @return Handle to the item directly. Do not use or save stale handles. + */ +native DoNotUse:ArrayGetStringHandle(Array:which, item); + +/** + * Destroys the array, and resets the handle to 0 to prevent accidental usage after it is destroyed. + * + * @param which The array to destroy. + */ +native ArrayDestroy(&Array:which); + + + +/** + * Similar to sorting.inc's CustomSort. + * The sorting algorithm then uses your comparison function to sort the data. + * The function is called in the following manner: + * + * public MySortFunc(Array:array, item1, item2, const data[], data_size) + * + * array - Array handle in its current un-sorted state. + * item1, item2 - Current item pair being compared + * data[] - Extra data array you passed to the sort func. + * data_size - Size of extra data you passed to the sort func. + * + * Your function should return: + * -1 if item1 should go before item2 + * 0 if item1 and item2 are equal + * 1 if item1 should go after item2 + * Note that the parameters after item2 are all optional and you do not need to specify them. + * + * Note that unlike the sorting.inc versions, the array passed to the callback is not in mid-sorted state. + */ +native ArraySort(Array:array, const comparefunc[], data[]="", data_size=0); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/celltrie.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/celltrie.inc new file mode 100644 index 0000000..2300c6e --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/celltrie.inc @@ -0,0 +1,26 @@ +#if defined _celltrie_included +#endinput +#endif +#define _celltrie_included + +enum Trie +{ + Invalid_Trie = 0 +}; + + +native Trie:TrieCreate(); +native TrieClear(Trie:handle); + +native TrieSetCell(Trie:handle, const key[], any:value); +native TrieSetString(Trie:handle, const key[], const value[]); +native TrieSetArray(Trie:handle, const key[], const any:buffer[], size); + +native bool:TrieGetCell(Trie:handle, const key[], &any:value); +native bool:TrieGetString(Trie:handle, const key[], output[], outputsize); +native bool:TrieGetArray(Trie:handle, const key[], any:output[], outputsize); + +native bool:TrieDeleteKey(Trie:handle, const key[]); +native bool:TrieKeyExists(Trie:handle, const key[]); +native TrieDestroy(&Trie:handle); + diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/core.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/core.inc new file mode 100644 index 0000000..496c66e --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/core.inc @@ -0,0 +1,44 @@ +/* Core functions +* +* (c) Copyright 1998-2003, ITB CompuPhase +* +* This file is provided as is (no warranties). +*/ + +#if defined _core_included + #endinput +#endif +#define _core_included + +native heapspace(); + +native funcidx(const name[]); + +native numargs(); +native getarg(arg, index=0); +native setarg(arg, index=0, value); + +native strlen(const string[]); + +native tolower(c); +native toupper(c); +native swapchars(c); + +native random(max); + +native min(value1, value2); +native max(value1, value2); +native clamp(value, min=cellmin, max=cellmax); + +native power(value, exponent); +native sqroot(value); + +native time(&hour=0,&minute=0,&second=0); +native date(&year=0,&month=0,&day=0); + +native tickcount(&granularity=0); + +stock abs(x) +{ + return x > 0 ? x : -x; +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/csstats.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/csstats.inc new file mode 100644 index 0000000..7755dcf --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/csstats.inc @@ -0,0 +1,61 @@ + +#if defined _csstats_included + #endinput +#endif +#define _csstats_included + +/* Gets stats from given weapon index. If wpnindex is 0 +* then the stats are from all weapons. If weapon has not been used function +* returns 0 in other case 1. Fields in stats are: +* 0 - kills +* 1 - deaths +* 2 - headshots +* 3 - teamkilling +* 4 - shots +* 5 - hits +* 6 - damage + +* For body hits fields see amxconst.inc. */ +native get_user_wstats(index,wpnindex,stats[8],bodyhits[8]); + +/* Gets round stats from given weapon index.*/ +native get_user_wrstats(index,wpnindex,stats[8],bodyhits[8]); + +/* Gets overall stats which are stored in file on server +* and updated on every respawn or user disconnect. +* Function returns the position in stats by diff. kills to deaths. */ +native get_user_stats(index,stats[8],bodyhits[8]); + +/* Gets round stats of player. */ +native get_user_rstats(index,stats[8],bodyhits[8]); + +/* Gets stats with which user have killed/hurt his victim. If victim is 0 +* then stats are from all victims. If victim has not been hurt, function +* returns 0 in other case 1. User stats are reset on his respawn. */ +native get_user_vstats(index,victim,stats[8],bodyhits[8],wpnname[]="",len=0); + +/* Gets stats with which user have been killed/hurt. If killer is 0 +* then stats are from all attacks. If killer has not hurt user, function +* returns 0 in other case 1. User stats are reset on his respawn. */ +native get_user_astats(index,wpnindex,stats[8],bodyhits[8],wpnname[]="",len=0); + +/* Resets life, weapon, victims and attackers user stats. */ +native reset_user_wstats(index); + +/* Gets overall stats which stored in stats.dat file in amx folder +* and updated on every mapchange or user disconnect. +* Function returns next index of stats entry or 0 if no more exists. */ +native get_stats(index,stats[8],bodyhits[8],name[],len,authid[] = "",authidlen = 0); + +/* Returns number of all entries in stats. */ +native get_statsnum(); + +/* +* new stats: +* 0 - total defusions +* 1 - bomb defused +* 2 - bomb plants +* 3 - bomb explosions +*/ +native get_user_stats2(index,stats[4]); +native get_stats2(index,stats[4],authid[] = "",authidlen = 0); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/cstrike.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/cstrike.inc new file mode 100644 index 0000000..2c0e85a --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/cstrike.inc @@ -0,0 +1,355 @@ +/* Counter-Strike functions +* +* by the AMX Mod X Development Team +* +* This file is provided as is (no warranties). +*/ + +#if defined _cstrike_included + #endinput +#endif +#define _cstrike_included + +#if AMXX_VERSION_NUM >= 175 + #pragma reqlib cstrike + #if !defined AMXMODX_NOAUTOLOAD + #pragma loadlib cstrike + #endif +#else + #pragma library cstrike +#endif + +/* Returns player deaths. + */ +native cs_get_user_deaths(index); + +/* Sets player deaths. + */ +native cs_set_user_deaths(index, newdeaths); + +/* Returns index of entity (does not have to be a player) which hostage is following. 0 is hostage doesn't follow anything. + * Note: this native does not work on Condition Zero, which has a different hostage AI than CS. + */ +native cs_get_hostage_foll(index); + +/* Set hostage to follow entity specified in followedindex. Does not have to be a player. If followedindex is 0 the hostage will stop following. + * Note: this native does not work on Condition Zero, which has a different hostage AI than CS. + */ +native cs_set_hostage_foll(index, followedindex = 0); + +/* Get unique hostage id. + */ +native cs_get_hostage_id(index); + +/* Get amount of ammo in backpack on a user for a specific weapon. + * Look in amxconst.inc for weapon types: CSW_*. + * Weapons on the same line uses the same ammo type: + * awm + * scout, ak, g3 + * para + * famas, m4a1, aug, sg550, galil, sg552 + * m3, xm + * usp, ump, mac + * fiveseven, p90 + * deagle + * p228 + * glock, mp5, tmp, elites + * flash + * he + * smoke + */ +native cs_get_user_bpammo(index, weapon); + +/* Restock/remove ammo in a user's backpack. + */ +native cs_set_user_bpammo(index, weapon, amount); + +/* Returns 1 if user has a defuse kit. + */ +native cs_get_user_defuse(index); + +/* If defusekit is 1, the user will have a defuse kit. + * You can specify a different colour for the defuse kit icon showing on hud. Default is the normal green. + * You can specify an icon. Default is "defuser". Set flash to 1 if you want the icon to flash red. + */ +native cs_set_user_defuse(index, defusekit = 1, r = 0, g = 160, b = 0, icon[] = "defuser", flash = 0); + +/* Is user in buyzone? Returns 1 when true, 0 when false. + */ +native cs_get_user_buyzone(index); + +/* Returns 1 when user has a primary weapon OR a shield in inventory, else 0. + */ +native cs_get_user_hasprim(index); + +/* Get user model. + */ +native cs_get_user_model(index, model[], len); + +/* Set user model. + */ +native cs_set_user_model(index, const model[]); + +/* Use to reset model to standard selected model. + */ +native cs_reset_user_model(index); + +/* Returns users money. + */ +native cs_get_user_money(index); + +/* Gives money to user. If flash is 1, the difference between new and old amount will flash red or green. + */ +native cs_set_user_money(index, money, flash = 1); + +/* Does user have night vision goggles? + */ +native cs_get_user_nvg(index); + +/* Set nvgoggles to 1 to give night vision goggles to index. Set it to 0 to remove them. + */ +native cs_set_user_nvg(index, nvgoggles = 1); + +/* Returns 1 if user has the "skill" to plant bomb, else 0. Normally this would only be true for a terrorist carrying a bomb. + */ +native cs_get_user_plant(index); + +/* If plant is 1, a user will be set to be able to plant bomb within the usual bomb target areas if having one. + * You should use this if you give a player a weapon_c4, or he won't be able to plant it + * without dropping it and picking it up again (only possible for terrorists). + * If showbombicon is 1, the green C4 icon will be shown on user hud (if plant "skill" was enabled). + */ +native cs_set_user_plant(index, plant = 1, showbombicon = 1); + +/* Set user team without killing player. + * If model is anything other than CS_DONTCHANGE, that will be set as player's model. + */ +enum CsInternalModel { + CS_DONTCHANGE = 0, + CS_CT_URBAN = 1, + CS_T_TERROR = 2, + CS_T_LEET = 3, + CS_T_ARCTIC = 4, + CS_CT_GSG9 = 5, + CS_CT_GIGN = 6, + CS_CT_SAS = 7, + CS_T_GUERILLA = 8, + CS_CT_VIP = 9, + CZ_T_MILITIA = 10, + CZ_CT_SPETSNAZ = 11 +}; +native cs_set_user_team(index, {CsTeams,_}:team, {CsInternalModel,_}:model = CS_DONTCHANGE); + +/* Get team directly from player's entity. + * 1 = terrorist + * 2 = counter-terrorist + * 3 = spectator + */ +enum CsTeams { + CS_TEAM_UNASSIGNED = 0, + CS_TEAM_T = 1, + CS_TEAM_CT = 2, + CS_TEAM_SPECTATOR = 3 +}; +native CsTeams:cs_get_user_team(index, &{CsInternalModel,_}:model = CS_DONTCHANGE); + +/* Is user vip? Returns 1 if true, 0 if false. + */ +native cs_get_user_vip(index); + +/* If vip = 1, user is set to vip. + * If model = 1, then user's model will be changed to VIP model or random CT model if vip = 0. + * If scoreboard = 1, then scoreboard will be updated to show that user is VIP. + * This shouldn't be used for players on teams other than CT. + * NOTE: this is mostly useful for unsetting vips, so they can change teams and/or buy items properly. + * It does not alter game play; the one being VIP at start of round will retain internal status as VIP; terrorists + * can terminate him and accomplish their objective, etc. + */ + native cs_set_user_vip(index, vip = 1, model = 1, scoreboard = 1); + +/* Returns 1 of specified user has tk:ed (team killed). + */ +native cs_get_user_tked(index); + +/* Returns 1 of specified user has TKed (team killed). + * tk = 1: player has TKed + * tk = 0: player hasn't TKed + * Set subtract to how many frags to subtract. Set subtract to negative value to add frags. + */ +native cs_set_user_tked(index, tk = 1, subtract = 1); + +/* Returns different values depending on if user is driving a vehicle - and if so at what speed. + * 0: no driving + * 1: driving, but standing still + * 2-4: driving, different positive speeds + * 5: driving, negative speed (backing) + * Note: these values were tested quickly, they may differ. + */ +native cs_get_user_driving(index); + +/* Returns 1 if user has a shield, else 0. + */ +native cs_get_user_shield(index); + +/* Returns 1 if user is using a stationary gun, else 0. + */ +native cs_get_user_stationary(index); + +/* Returns armor value and sets by reference the armor type in second parameter. + */ +enum CsArmorType { + CS_ARMOR_NONE = 0, // no armor + CS_ARMOR_KEVLAR = 1, // armor + CS_ARMOR_VESTHELM = 2 // armor and helmet +}; +native cs_get_user_armor(index, &CsArmorType:armortype); + +/* Use this instead of fun's set_user_armor. + * Appropriate message to update client's HUD will be sent if armortype is kevlar or vesthelm. + */ +native cs_set_user_armor(index, armorvalue, CsArmorType:armortype); + +/* Returns 1 if specified weapon is in burst mode. + */ +native cs_get_weapon_burst(index); + +/* If burstmode = 1, weapon will be changed to burst mode, 0 and non-burst mode (semiautomatic/automatic) will be activated. + * Only GLOCK and FAMAS can enter/leave burst mode. + */ +native cs_set_weapon_burst(index, burstmode = 1); + +/* Returns 1 if weapon is silenced, else 0. + */ +native cs_get_weapon_silen(index); + +/* If silence = 1, weapon will be silenced, 0 and silencer will be removed. Only USP and M4A1 can be silenced. + */ +native cs_set_weapon_silen(index, silence = 1, draw_animation = 1); + +/* Returns amount of ammo in weapon's clip. + */ +native cs_get_weapon_ammo(index); + +/* Set amount of ammo in weapon's clip. + */ +native cs_set_weapon_ammo(index, newammo); + +/* Get weapon type. Corresponds to CSW_* in amxconst.inc: 1 is CSW_P228, 2 is CSW_SCOUT and so on... + */ +native cs_get_weapon_id(index); + +/* Returns 1 if no knives mode is enabled, else 0. + */ +native cs_get_no_knives(); + +/* Enabled no knives mode by calling this with value 1. Disabled with 0. + * No knives mode means that player will not be given a knife when spawning. + * You can still give knives (ie through fun's give_item). + */ +native cs_set_no_knives(noknives = 0); + +/* Spawns a Counter-Strike player + */ +native cs_user_spawn(player); + +/* Get what weapon type (CSW_*) an armoury_entity is. + */ +native cs_get_armoury_type(index); + +/* Set an armoury_entity to be of specified type. You will have to set the appropriate model. + * The second argument, type, should be a CSW_* constant. Not all weapons are supported by Counter-strike. + * Supported weapons/items: CSW_MP5NAVY, CSW_TMP, CSW_P90, CSW_MAC10, CSW_AK47, CSW_SG552, CSW_M4A1, CSW_AUG, CSW_SCOUT + * CSW_G3SG1, CSW_AWP, CSW_M3, CSW_XM1014, CSW_M249, CSW_FLASHBANG, CSW_HEGRENADE, CSW_VEST, CSW_VESTHELM, CSW_SMOKEGRENADE + */ +native cs_set_armoury_type(index, type); + +#define CS_MAPZONE_BUY (1<<0) +#define CS_MAPZONE_BOMBTARGET (1<<1) +#define CS_MAPZONE_HOSTAGE_RESCUE (1<<2) +#define CS_MAPZONE_ESCAPE (1<<3) +#define CS_MAPZONE_VIP_SAFETY (1<<4) + +/* Returns in bitwise form if the user is in a specific map zone. + * NOTE: If user can't plant (cs_get_user_plant(index) is 0) then cs_get_user_mapzones(index) & CS_MAPZONE_BOMBTARGET will return 0 too. + */ +native cs_get_user_mapzones(index); + +/* Zoom type enum. Used for get/set_user_zoom() natives. + */ +enum +{ + CS_RESET_ZOOM = 0, // Reset any zoom blocking (when using this type, mode has no effect) + CS_SET_NO_ZOOM, // Disable any sort of zoom (ie: to disable zoom in all weapons use this with mode=0) + CS_SET_FIRST_ZOOM, // Set first zoom (awp style) + CS_SET_SECOND_ZOOM, // Set second zoom (awp style) + CS_SET_AUGSG552_ZOOM, // Set aug/sg552 zoom style +}; +/* Sets a weapon zoom type on a player, any zoom type will work for all weapons, so you can even set an awp zoom to pistols :D + * The 2nd param has to be one of the above zoom types in the enum. Mode can only be 0 or 1. + * If mode=0 (blocking mode), the user will be forced to use the zoom type set by the native, and wont be able to change it (even by changing weapon) + * until the native resets the zoom with CS_RESET_ZOOM. + * If mode=1 the user will be able to restore back to a normal view by changing weapon. + */ +native cs_set_user_zoom(index, type, mode); + +/* Returns how a user is zooming during the native call. Values correspond to the above enum, but will return 0 if an error occurred. + */ +native cs_get_user_zoom(index); + +/* Returns the submodel setting of the player. + * If this is 1, then the user has a backpack or defuser on their model (depending on team) + */ +native cs_get_user_submodel(index); + +/* Sets the submodel setting of the player. + * If this is 1, then the user has a backpack or defuser on their model (depending on team) + * 0 removes it. + */ +native cs_set_user_submodel(index, value); + +/* Gets or sets the user's last activity time. This is the time that CS's internal afk kicker + * checks to see who has been afk too long. + */ +native Float:cs_get_user_lastactivity(index); + +native cs_set_user_lastactivity(index, Float:value); + +/* Gets or sets the number of hostages that a user has killed. + */ +native cs_get_user_hostagekills(index); + +native cs_set_user_hostagekills(index, value); + +/* Gets or sets the time that the hostage was last used. + */ +native Float:cs_get_hostage_lastuse(index); + +native cs_set_hostage_lastuse(index, Float:value); + +/* Gets or sets the time which the hostage can next be used. + */ +native Float:cs_get_hostage_nextuse(index); + +native cs_set_hostage_nextuse(index, Float:value); + +/* Gets or sets the time in which the C4 will explode. + */ +native Float:cs_get_c4_explode_time(index); + +native cs_set_c4_explode_time(index, Float:value); + +/* Gets or sets whether the C4 is being defused. + */ +native bool:cs_get_c4_defusing(c4index); + +native cs_set_c4_defusing(c4index, bool:defusing); +/** + * Called when CS internally fires a command to a player. It does this for a few + * functions, most notably rebuy/autobuy functionality. This is also used to pass + * commands to CZ bots internally. + * + * @param id Client index. + * @param cmd Command string. + * @return PLUGIN_HANDLED to block, PLUGIN_CONTINUE for normal operation. + */ +forward CS_InternalCommand(id, const cmd[]); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/csx.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/csx.inc new file mode 100644 index 0000000..604ec26 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/csx.inc @@ -0,0 +1,68 @@ +/* CSX functions + * + * (c) 2004, SidLuke + * This file is provided as is (no warranties). + */ + +#if defined _csx_included + #endinput +#endif +#define _csx_included + +#include <csstats> + +#if AMXX_VERSION_NUM >= 175 + #pragma reqclass xstats + #if !defined AMXMODX_NOAUTOLOAD + #pragma defclasslib xstats csx + #endif +#else + #pragma library csx +#endif + +/* + * Forwards + */ + +/* Function is called after player to player attacks , +* if players were damaged by teammate TA is set to 1 */ +forward client_damage(attacker,victim,damage,wpnindex,hitplace,TA); + +/* Function is called after player death , +* if player was killed by teammate TK is set to 1 */ +forward client_death(killer,victim,wpnindex,hitplace,TK); + +forward grenade_throw( index,greindex,wId ); + +forward bomb_planting(planter); +forward bomb_planted(planter); +forward bomb_explode(planter,defuser); +forward bomb_defusing(defuser); +forward bomb_defused(defuser); + +/************* Shared Natives Start ********************************/ + +/* Custom Weapon Support */ +/* function will return index of new weapon */ +native custom_weapon_add( const wpnname[],melee = 0,const logname[]="" ); +/* Function will pass damage done by this custom weapon to stats module and other plugins */ +native custom_weapon_dmg( weapon, att, vic, damage, hitplace=0 ); +/* Function will pass info about custom weapon shot to stats module */ +native custom_weapon_shot( weapon,index ); // weapon id , player id + +/* function will return 1 if true */ +native xmod_is_melee_wpn(wpnindex); + +/* Returns weapon name. */ +native xmod_get_wpnname(wpnindex,name[],len); + +/* Returns weapon logname. */ +native xmod_get_wpnlogname(wpnindex,name[],len); + +/* Returns weapons array size */ +native xmod_get_maxweapons(); + +/* Returns stats array size */ +native xmod_get_stats_size(); + +/************* Shared Natives End ********************************/ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/dbi.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/dbi.inc new file mode 100644 index 0000000..82c24d8 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/dbi.inc @@ -0,0 +1,145 @@ +/* SQL Database API + * By the AMX Mod X Development Team + * Notes - Read the comments! Make sure your plugins use + * nice ANSI SQL and don't use database column names like "key" + * otherwise this API will be a nightmare + * Never do error checking with the not operator! This is bad: + * if (!dbi_query()) + * You should do: + * ret = dbi_query() + * if (ret < 0) + * This is because DBI functions can and will return negative numbers + * Negative numbers evaluate to "true" in AMX. + */ + +#if defined _dbi_included + #endinput +#endif +#define _dbi_included + +// You can't include SQLX first! +// there's really no reason to anyway. +#assert !defined _sqlx_included + +#if AMXX_VERSION_NUM >= 175 + #pragma reqclass dbi +#else + #pragma library dbi +#endif + +enum Sql +{ + SQL_FAILED=0, + SQL_OK +}; + +enum Result +{ + RESULT_FAILED=-1, + RESULT_NONE, + RESULT_OK +}; + +/* This will return a number equal to or below 0 on failure. + * If it does fail, the error will be mirrored in dbi_error() + * The return value will otherwise be a resource handle, not an + * OK code or cell pointer. + */ +native Sql:dbi_connect(_host[], _user[], _pass[], _dbname[], _error[]="", _maxlength=0); + +/* This will do a simple query execution on the SQL server. + * If it fails, it will return a number BELOW ZERO (0) + * If zero, it succeeded with NO RETURN RESULT. + * If greater than zero, make sure to call dbi_free_result() on it! + * The return is a handle to the result set + */ +native Result:dbi_query(Sql:_sql, _query[], any:...); + +/* Has the same usage as dbi_query, but this native returns by + * reference the number of rows affected in the query. If the + * query fails rows will be equal to -1. + */ +native Result:dbi_query2(Sql:_sql, &rows, _query[], any:...); + +/* Returns 0 on failure or End of Results. + * Advances result pointer by one row. + */ +native dbi_nextrow(Result:_result); + +/* Gets a field by number. Returns 0 on failure. + * Although internally fields always start from 0, + * This function takes fieldnum starting from 1. + * No extra params: returns int + * One extra param: returns Float: byref + * Two extra param: Stores string with length + */ +native dbi_field(Result:_result, _fieldnum, {Float,_}:... ); + +/* Gets a field by name. Returns 0 on failure. + * One extra param: returns Float: byref + * Two extra param: Stores string with length + */ +native dbi_result(Result:_result, _field[], {Float,_}:... ); + +/* Returns the number of rows returned from a query + */ +native dbi_num_rows(Result:_result); + +/* Frees memory used by a result handle. Do this or get memory leaks. + */ +native dbi_free_result(&Result:result); + +/* Closes a database handle. Internally, it will also + * mark the handle as free, so this particular handle may + * be re-used in the future to save time. + */ +native dbi_close(&Sql:_sql); + +/* Returns an error message set. For PGSQL and MySQL, + * this is a direct error return from the database handle/API. + * For MSSQL, it returns the last error message found from a + * thrown exception. + */ +native dbi_error(Sql:_sql, _error[], _len); + +/* Returns the type of database being used. So far: + * "mysql", "pgsql", "mssql", "sqlite" + */ +native dbi_type(_type[], _len); + +/* Returns the number of fields/colums in a result set. + * Unlike dbi_nextrow, you must pass a valid result handle. + */ +native dbi_num_fields(Result:result); + +/* Retrieves the name of a field/column in a result set. + * Requires a valid result handle, and columns are numbered 1 to n. + */ +native dbi_field_name(Result:result, field, name[], maxLength); + +/* This function can be used to find out if a table in a Sqlite database exists. + */ +stock bool:sqlite_table_exists(Sql:sql, table[]) +{ + new bool:exists; + new query[128]; + format(query, 127, "SELECT name FROM sqlite_master WHERE type='table' AND name='%s' LIMIT 1;", table); + + new Result:result = dbi_query(sql, query); + + if (dbi_nextrow(result)) + { + exists = true; + } + else + { + exists = false; + } + + if (result > RESULT_NONE) + { + dbi_free_result(result); + } + + return exists; +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/dodconst.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/dodconst.inc new file mode 100644 index 0000000..4071109 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/dodconst.inc @@ -0,0 +1,135 @@ +/* DoDX functions + * + * (c) 2004, SidLuke + * This file is provided as is (no warranties). + */ + +#if defined _dodconst_included + #endinput +#endif +#define _dodconst_included + +/* DoD teams */ +#define ALLIES 1 +#define AXIS 2 + +#define FT_NEW 1<<0 +#define FT_OLD 1<<1 + +#define STAMINA_SET 0 +#define STAMINA_RESET 1 + +#define FUSE_SET 0 +#define FUSE_RESET 1 + +#define DODMAX_WEAPONS 46 // 5 slots for custom weapons + +// DoD Weapon Types +enum +{ + DODWT_PRIMARY = 0, + DODWT_SECONDARY, + DODWT_MELEE, + DODWT_GRENADE, + DODWT_OTHER +}; + +// Ammo Channels +#define AMMO_SMG 1 // thompson, greasegun, sten, mp40 +#define AMMO_ALTRIFLE 2 // carbine, k43, mg34 +#define AMMO_RIFLE 3 // garand, enfield, scoped enfield, k98, scoped k98 +#define AMMO_PISTOL 4 // colt, webley, luger +#define AMMO_SPRING 5 // springfield +#define AMMO_HEAVY 6 // bar, bren, stg44, fg42, scoped fg42 +#define AMMO_MG42 7 // mg42 +#define AMMO_30CAL 8 // 30cal +#define AMMO_GREN 9 // grenades (should be all 3 types) +#define AMMO_ROCKET 13 // bazooka, piat, panzerschreck +enum { + PS_NOPRONE =0, + PS_PRONE, + PS_PRONEDEPLOY, + PS_DEPLOY, +}; + +/* info types for dod_get_map_info native */ +enum { + MI_ALLIES_TEAM = 0, + MI_ALLIES_PARAS, + MI_AXIS_PARAS, +}; + +/* DoD weapons */ +enum { + DODW_AMERKNIFE = 1, + DODW_GERKNIFE, + DODW_COLT, + DODW_LUGER, + DODW_GARAND, + DODW_SCOPED_KAR, + DODW_THOMPSON, + DODW_STG44, + DODW_SPRINGFIELD, + DODW_KAR, + DODW_BAR, + DODW_MP40, + DODW_HANDGRENADE, + DODW_STICKGRENADE, + DODW_STICKGRENADE_EX, + DODW_HANDGRENADE_EX, + DODW_MG42, + DODW_30_CAL, + DODW_SPADE, + DODW_M1_CARBINE, + DODW_MG34, + DODW_GREASEGUN, + DODW_FG42, + DODW_K43, + DODW_ENFIELD, + DODW_STEN, + DODW_BREN, + DODW_WEBLEY, + DODW_BAZOOKA, + DODW_PANZERSCHRECK, + DODW_PIAT, + DODW_SCOPED_FG42, + DODW_FOLDING_CARBINE, + DODW_KAR_BAYONET, + DODW_SCOPED_ENFIELD, + DODW_MILLS_BOMB, + DODW_BRITKNIFE, + DODW_GARAND_BUTT, + DODW_ENFIELD_BAYONET, + DODW_MORTAR, + DODW_K43_BUTT, +}; + +/* DoD Classes */ +enum { + DODC_GARAND = 1, + DODC_CARBINE, + DODC_THOMPSON, + DODC_GREASE, + DODC_SNIPER, + DODC_BAR, + DODC_30CAL, + DODC_BAZOOKA, + //DODC_ALLIES_MORTAR, + DODC_KAR = 10, + DODC_K43, + DODC_MP40, + DODC_MP44, + DODC_SCHARFSCHUTZE, + DODC_FG42, + DODC_SCOPED_FG42, + DODC_MG34, + DODC_MG42, + DODC_PANZERJAGER, + //DODC_AXIS_MORTAR, + DODC_ENFIELD = 21, + DODC_STEN, + DODC_MARKSMAN, + DODC_BREN, + DODC_PIAT, + //DODC_BRIT_MORTAR, +}; diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/dodfun.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/dodfun.inc new file mode 100644 index 0000000..ea8f63d --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/dodfun.inc @@ -0,0 +1,149 @@ +/* DoDFun functions + * + * (c) 2004-2005, SidLuke + * This file is provided as is (no warranties). + */ + +#if defined _dodfun_included + #endinput +#endif +#define _dodfun_included + +#include <dodconst> + +#if AMXX_VERSION_NUM >= 175 + #pragma reqlib dodfun + #if !defined AMXMODX_NOAUTOLOAD + #pragma loadlib dodfun + #endif +#else + #pragma library dodfun +#endif + +/* Function is called after grenade throw */ +forward grenade_throw(index,greindex,wId); + +/* Function is called after a rocket is shot */ +forward rocket_shoot(index,rocketindex,wId); + +/* Example: for full stamina use dod_player_stamina(1,STAMINA_SET,100,100) */ +/* value is from 0 - 100 */ +native dod_set_stamina(index,set=STAMINA_SET,minvalue=0,maxvalue=100); + +/* Sets fuse for grenades. Valid number is from 0.1-20.0 */ +/* types : new or preprimed */ +native dod_set_fuse(index,set=FUSE_SET,Float:newFuse=5.0, Type=FT_NEW); + +/* Sets player class */ +native dod_set_user_class(index,classId); + +/* Sets player team and random class. Don't work for spectators. */ +native dod_set_user_team(index,teamId,refresh=1); + +/* Returns next player class. Usefull is player is using random class */ +native dod_get_next_class(index); + +/* Returns 1 if player choose random class */ +native dod_is_randomclass(index); + +/* Returns player deaths */ +native dod_get_pl_deaths(index); + +/* Sets player deaths. + * Note if you opt to refresh the scoreboard, it + * will make the player appear as "DEAD" in the scoreboard. + */ +native dod_set_pl_deaths(index,value,refresh=1); + +/* Returns player deaths. */ +native dod_get_user_kills(index); + +/* Sets player kills. */ +native dod_set_user_kills(index,value,refresh=1); + +/* Sets player score. */ +native dod_set_user_score(index,value,refresh=1); + +/* Sets new team name for this player */ +native dod_set_pl_teamname(index,const szName[]); + +/* Gets player team name */ +native dod_get_pl_teamname(index,szName[],len); + +/* Returns 1 is player weapon is deployed (bar,mg..) */ +native dod_is_deployed(index); + +/*Sets the ammo of the specified weapon entity id */ +native dod_set_user_ammo(index,wid,value); + +/*Gets the ammo of the specified weapon entity id */ +native dod_get_user_ammo(index,wid); + +/* called after first InitObj */ +forward controlpoints_init(); + +enum CP_VALUE { + CP_edict = 1, // read only + CP_area, // read only + CP_index, // read only + CP_owner, + CP_default_owner, + CP_visible, // reinit after change + CP_icon_neutral, // reinit after change + CP_icon_allies, // reinit after change + CP_icon_axis, // reinit after change + CP_origin_x, // reinit after change + CP_origin_y, // reinit after change + + CP_can_touch, + CP_pointvalue, + + CP_points_for_cap, + CP_team_points, + + CP_model_body_neutral, + CP_model_body_allies, + CP_model_body_axis, + + // strings + CP_name, + CP_reset_capsound, + CP_allies_capsound, + CP_axis_capsound, + CP_targetname, + + CP_model_neutral, + CP_model_allies, + CP_model_axis, +}; + +/* returns number of objectives */ +native objectives_get_num(); + +/* use this function to update client(s) hud. You need to do this sometimes. Check CP_VALUE comments. + if player is 0 , all clients will get this message */ +native objectives_reinit( player=0 ); + +/* use this function to get info about specified control point */ +native objective_get_data( index, CP_VALUE:key, szValue[]="", len=0 ); + +/* use this function to change control point's data */ +native objective_set_data( index, CP_VALUE:key , iValue=-1, const szValue[]="" ); + +enum CA_VALUE { + CA_edict = 1, + CA_allies_numcap, + CA_axis_numcap, + CA_timetocap, + CA_can_cap, + + // strings + CA_target, + CA_sprite, +}; + +/* use this function to get info about specified control point's area */ +native area_get_data( index, CA_VALUE:key, szValue[]="", len=0 ); + +/* use this function to change control point's area data */ +native area_set_data( index, CA_VALUE:key , iValue=-1, const szValue[]="" ); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/dodstats.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/dodstats.inc new file mode 100644 index 0000000..cf3d072 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/dodstats.inc @@ -0,0 +1,62 @@ +/* DoDX Stats functions + * + * (c) 2004, SidLuke + * This file is provided as is (no warranties). + */ + +#if defined _dodstats_included + #endinput +#endif +#define _dodstats_included + +/* Gets stats from given weapon index. If wpnindex is 0 +* then the stats are from all weapons. If weapon has not been used function +* returns 0 in other case 1. Fields in stats are: +* 0 - kills +* 1 - deaths +* 2 - headshots +* 3 - teamkilling +* 4 - shots +* 5 - hits +* 6 - damage +* 7 - score +* For body hits fields see amxconst.inc. */ +native get_user_wstats(index,wpnindex,stats[9],bodyhits[8]); + +/* Gets round stats from given weapon index.*/ +native get_user_wrstats(index,wpnindex,stats[9],bodyhits[8]); + +/* Gets life (from spawn to spawn) stats from given weapon index.*/ +native get_user_wlstats(index,wpnindex,stats[9],bodyhits[8]); + +/* Gets overall stats which are stored in file on server +* and updated on every respawn or user disconnect. +* Function returns the position in stats by diff. kills to deaths. */ +native get_user_stats(index,stats[9],bodyhits[8]); + +/* Gets round stats of player. */ +native get_user_rstats(index,stats[9],bodyhits[8]); + +/* Gets life (from spawn to spawn) stats of player. */ +native get_user_lstats(index,stats[9],bodyhits[8]); + +/* Gets stats with which user have killed/hurt his victim. If victim is 0 +* then stats are from all victims. If victim has not been hurt, function +* returns 0 in other case 1. User stats are reset on his respawn. */ +native get_user_vstats(index,victim,stats[9],bodyhits[8],wpnname[]="",len=0); + +/* Gets stats with which user have been killed/hurt. If killer is 0 +* then stats are from all attacks. If killer has not hurt user, function +* returns 0 in other case 1. User stats are reset on his respawn. */ +native get_user_astats(index,wpnindex,stats[9],bodyhits[8],wpnname[]="",len=0); + +/* Resets life, weapon, victims and attackers user stats. */ +native reset_user_wstats(index); + +/* Gets overall stats which stored in stats.dat file in amx folder +* and updated on every mapchange or user disconnect. +* Function returns next index of stats entry or 0 if no more exists. */ +native get_stats(index,stats[9],bodyhits[8],name[],len); + +/* Returns number of all entries in stats. */ +native get_statsnum(); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/dodx.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/dodx.inc new file mode 100644 index 0000000..5903eaa --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/dodx.inc @@ -0,0 +1,158 @@ +/* DoDX functions + * + * (c) 2004, SidLuke + * This file is provided as is (no warranties). + */ + +#if defined _dodx_included + #endinput +#endif +#define _dodx_included + +#include <dodconst> +#include <dodstats> + +#if AMXX_VERSION_NUM >= 175 + #pragma reqclass xstats + #if !defined AMXMODX_NOAUTOLOAD + #pragma defclasslib xstats dodx + #endif +#else + #pragma library dodx +#endif + +/************* Shared Natives Start ********************************/ + +/* Forward types */ +enum { + XMF_DAMAGE = 0, + XMF_DEATH, + XMF_SCORE, +}; + +/* Use this function to register forwards */ +native register_statsfwd(ftype); + +/* Function is called after player to player attacks , +* if players were damaged by teammate TA is set to 1 */ +forward client_damage(attacker, victim, damage, wpnindex, hitplace, TA); + +/* Function is called after player death , +* if player was killed by teammate TK is set to 1 */ +forward client_death(killer, victim, wpnindex, hitplace, TK); + +/* Function is called if player scored */ +forward client_score(id, score, total); + +/* This Forward is called when a player changes team */ +forward dod_client_changeteam(id, team, oldteam); + +/* This Forward is called if a player changes class, but just after spawn */ +forward dod_client_changeclass(id, class, oldclass); + +/* This Forward is called when a player spawns */ +forward dod_client_spawn(id); + +/* This will be called whenever a player scopes or unscopes +value = 1 scope up +value = 0 scope down */ +forward dod_client_scope(id, value); + +/* This will be called whenever a player drops a weapon +weapon is weapon dropped or picked up +value = 1 picked up +value = 0 dropped */ +forward dod_client_weaponpickup(id, weapon, value); + +/* Called whenever the the player goes to or comes from prone position +value = 1 going down +value = 0 getting up */ +forward dod_client_prone(id, value); + +/* This will be called whenever a player switches a weapon */ +forward dod_client_weaponswitch(id, wpnew, wpnold); + +/* Forward for when a grenade explodes and its location */ +forward dod_grenade_explosion(id, pos[3], wpnid); + +/* Forward for when a rocket explodes and its location */ +forward dod_rocket_explosion(id, pos[3], wpnid); + +/* Forward for when a player picks up a object */ +forward dod_client_objectpickup(id, objid, pos[3], value); + +/* Forward for when a users stamina decreases */ +forward dod_client_stamina(id, stamina); + +/* We want to get just the weapon of whichever type that the player is on him +Use DODWT_* in dodconst.inc for type */ +native dod_weapon_type(id, type); + +/* This native will change the position of a weapon within the users slots and its ammo ammount */ +native dod_set_weaponlist(id, wpnID, slot, dropslot, totalrds); + +/* Sets the model for a player */ +native dod_set_model(id, const model[]); + +/* Sets the model for a player */ +native dod_set_body_number(id, bodynumber); + +/* Un-Sets the model for a player */ +native dod_clear_model(id); + +/* Custom Weapon Support */ +/* function will return index of new weapon */ +native custom_weapon_add( const wpnname[], melee = 0, const logname[]="" ); + +/* Function will pass damage done by this custom weapon to stats module and other plugins */ +native custom_weapon_dmg( weapon, att, vic, damage, hitplace=0 ); + +/* Function will pass info about custom weapon shot to stats module */ +native custom_weapon_shot( weapon, index ); // weapon id , player id + +/* function will return 1 if true */ +native xmod_is_melee_wpn(wpnindex); + +/* Returns weapon name. */ +native xmod_get_wpnname(wpnindex, name[], len); + +/* Returns weapon logname. */ +native xmod_get_wpnlogname(wpnindex, name[], len); + +/* Returns weapons array size */ +native xmod_get_maxweapons(); + +/* Returns stats array size ex. 8 in TS , 9 in DoD */ +native xmod_get_stats_size(); + +/* Returns 1 if true */ +native xmod_is_custom_wpn(wpnindex); + +/************* Shared Natives End ********************************/ + +/* weapon logname to weapon name convertion */ +native dod_wpnlog_to_name(const logname[],name[],len); + +/* weapon logname to weapon index convertion */ +native dod_wpnlog_to_id(const logname[]); + +native dod_get_map_info( info ); + +/* Returns id of currently carried weapon. Gets also +* ammount of ammo in clip and backpack. */ +native dod_get_user_weapon(index,&clip=0,&ammo=0); + +/* Returns team score */ +native dod_get_team_score(teamId); + +/* Returns player class id */ +native dod_get_user_class(index); + +/* Returns player score */ +native dod_get_user_score(index); + +/* values are: 0-no prone, 1-prone, 2-prone + w_deploy */ +native dod_get_pronestate(index); + +/* It is not as safe as original but player deaths will not be increased */ +native dod_user_kill(index); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/engine.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/engine.inc new file mode 100644 index 0000000..e9a50e2 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/engine.inc @@ -0,0 +1,241 @@ +/* Engine functions +* +* by the AMX Mod X Development Team +* thanks to Vexd and mahnsawce +* +* This file is provided as is (no warranties). +*/ + +#if defined _engine_included + #endinput +#endif +#define _engine_included + +#include <engine_const> + +#if AMXX_VERSION_NUM >= 175 + #pragma reqlib engine + #if !defined AMXMODX_NOAUTOLOAD + #pragma loadlib engine + #endif +#else + #pragma library engine +#endif + +native traceresult(type,any:...); + +/* Registers a client impulse to a function. Function is passed the ID of the user. */ +native register_impulse(impulse, const function[]); + +/* Registers a touch action to a function by classnames. Use * to specify any classname. */ +native register_touch(const Touched[], const Toucher[], const function[]); + +/* Registers a think action to a function by classname. */ +native register_think(const Classname[], const function[]); + +/* NOTE: In old engine versions, this was not the case. Values are now WINDOWS values. + * You must pass with the windows offset (e.g. if 230 on windows, pass 230 no matter what) + * The module will automatically add +5 for Linux. + */ + +/* Precaches an event. */ +native precache_event(type, const Name[], any:...); + +/* set/get a user's speak flags */ +native set_speak(iIndex, iSpeakFlags); +native get_speak(iIndex); + +/* Drops an entity to the floor (work?) */ +native drop_to_floor(entity); + +/* Get whole buffer containing keys and their data. */ +native get_info_keybuffer(id, buffer[], length); + +/* Use an entity with another entity. "entUsed" could be a hostage, "entUser" a player. */ +native force_use(entUsed, entUser); + +/* Get globals from server. */ +native Float:get_global_float(variable); +native get_global_int(variable); +native get_global_string(variable, string[], maxlen); +native get_global_vector(variable, Float:vector[3]); +native get_global_edict(variable); + +/* Set entity bounds. */ +native entity_set_size(index, const Float:mins[3], const Float:maxs[3]); + +/* Get decal index */ +native get_decal_index(const szDecalName[]); + +/* Returns the distance between two entities. */ +native Float:entity_range(ida,idb); + +/* Sets/gets things in an entities Entvars Struct. */ +native entity_get_int(iIndex, iKey); +native entity_set_int(iIndex, iKey, iVal); +native Float:entity_get_float(iIndex, iKey); +native entity_set_float(iIndex, iKey, Float:iVal); +native entity_get_vector(iIndex, iKey, Float:vRetVector[3]); +native entity_set_vector(iIndex, iKey, const Float:vNewVector[3]); +native entity_get_edict(iIndex, iKey); +native entity_set_edict(iIndex, iKey, iNewIndex); +native entity_get_string(iIndex, iKey, szReturn[], iRetLen); +native entity_set_string(iIndex, iKey, const szNewVal[]); +native entity_get_byte(iIndex, iKey); +native entity_set_byte(iIndex, iKey, iVal); + +/* Creates an entity, will return the index of the created entity. ClassName must be valid. */ +native create_entity(const szClassname[]); + +/* Finds an entity in the world, will return 0 if nothing is found */ +native find_ent_by_class(iIndex, const szClass[]); +//optionally you can set a jghg2 type +// 1: target, 2:targetname, 0:classname (default) +native find_ent_by_owner(iIndex, const szClass[], iOwner, iJghgType=0); +native find_ent_by_target(iIndex, const szClass[]); +native find_ent_by_tname(iIndex, const szClass[]); +native find_ent_by_model(iIndex, const szClass[], const szModel[]); +native find_ent_in_sphere(start_from_ent, const Float:origin[3], Float:radius); + +//this will CBaseEntity::Think() or something from the entity +native call_think(entity); + +/* Is entity valid? */ +native is_valid_ent(iIndex); + +/* Proper origin setting, keeps updated with Half-Life engine. */ +native entity_set_origin(iIndex, const Float:fNewOrigin[3]); + +/* Sets the model of an Entity. */ +native entity_set_model(iIndex, const szModel[]); + +/* Remove an entity from the world. */ +native remove_entity(iIndex); + +/* Return current number of entities in the map */ +native entity_count(); + +/* Simulate two entities colliding/touching. */ +native fake_touch(entTouched, entToucher); + +/* 2 formats. + Format: DispatchKeyValue("KeyName","Value") - sets keyvalues for the entity specified in the keyvalue() forward. + Format: DispatchKeyValue(index,"KeyName","Value") - Sets keyvalue for entity not specified in keyvalue() forward. */ +#if !defined AMXMOD_BCOMPAT +native DispatchKeyValue(...); +#endif + +native get_keyvalue(entity, const szKey[], value[], maxLength); + +native copy_keyvalue(szClassName[],sizea,szKeyName[],sizeb,szValue[],sizec); + +/* Runs the GameDLL's DispatchSpawn for an entity, I think it's used with DispatchKeyValue. */ +native DispatchSpawn(iIndex); + +/* Hurts/Kills players in a sphere, like an explosion, Multiplier determines damage. */ +#if !defined AMXMOD_BCOMPAT +native radius_damage(const Float:fExplodeAt[3], iDamageMultiplier, iRadiusMultiplier); +#endif + +/* Will return the contents of a point (inside map? in sky? outside map? etc.). */ +native point_contents(const Float:fCheckAt[3]); + +/* Trace a line from Start(X, Y, Z) to End(X, Y, Z), will return the point hit in vReturn[3] + * and an entity index if an entity is hit. */ +#if !defined AMXMOD_BCOMPAT +native trace_line(iIgnoreEnt, const Float:fStart[3], const Float:fEnd[3], Float:vReturn[3]); +#endif + +/* Traces a hull. */ +native trace_hull(const Float:origin[3],hull,ignoredent=0,ignoremonsters=0); + +/* Traces a line, and returns the normal to the plane hit in vReturn. + * Returns 0 if theres no normal. */ +native trace_normal(iIgnoreEnt, const Float:fStart[3], const Float:fEnd[3], Float:vReturn[3]); + +/* Gets the ID of a grenade. */ +native get_grenade_id(id, model[], len, grenadeid = 0); + +/* Gets gpGlobals->time from Half-Life */ +native Float:halflife_time(); + +/* Sets map lighting, #OFF to disable. */ +native set_lights(const Lighting[]); + +/* Sets Player's View to entity iTargetIndex. */ +native attach_view(iIndex, iTargetIndex); + +/* Sets Player's View Mode. + * rpgrocket.mdl must be precached in order for this function to work */ +native set_view(iIndex, ViewType); + +/* Direct copy of PLAYBACK_EVENT_FULL from Metamod/HLSDK. If you don't know how that works, you probably shouldn't be using it. */ +native playback_event(flags,invoker,eventindex,Float:delay,const Float:origin[3],const Float:angles[3],Float:fparam1,Float:fparam2,iparam1,iparam2,bparam1,bparam2); + +/* Gets parameters sent from CmdStart. + Note that you will receive modified values if any other plugin have + changed them. */ +native get_usercmd(type,any:...); + +/* Sets the parameters sent from CmdStart. + Note that your changes will be seen by any other plugin doing get_usercmd() */ +native set_usercmd(type,any:...); + +/* Converts a string offset into a real string. Some of the forwards in fakemeta + uses string offsets. (FM_CreateNamedEntity) */ +native eng_get_string(_string, _returnString[], _len); + +/* FORWARDS + **********/ + +/* Called when 2 entities touch. + * ptr - touched entity + * ptd - toucher entity + */ +forward pfn_touch(ptr, ptd); + +/* Called once every server frame. May cause lag. */ +forward server_frame(); + +/* Called when a client types kill in console. */ +forward client_kill(id); + +/* Forward for PreThink()/PostThink() on a player. */ +forward client_PreThink(id); +forward client_PostThink(id); + +/* Forward for impulses. */ +forward client_impulse(id, impulse); + +/* Called when an entity "thinks" (DispatchThink) */ +forward pfn_think(entid); + +/* Called when an event is played */ +forward pfn_playbackevent(flags, entid, eventid, Float:delay, Float:Origin[3], Float:Angles[3], Float:fparam1, Float:fparam2, iparam1, iparam2, bparam1, bparam2); + +/* Called when an entity gets a keyvalue set on it from the engine (ie: map load) Use copy_keyvalue to get the keyvalue information */ +forward pfn_keyvalue(entid); + +/* Called when an entity is spawned */ +forward pfn_spawn(entid); + +//from jghg2 +/* As above, but returns number of ents stored in entlist. Use to find a specific type of entity classname (specify in _lookforclassname) around a + * certain entity specified in aroundent. All matching ents are stored in entlist. Specify max amount of entities to find in maxents. + * If aroundent is 0 its origin is not used, but origin in 6th parameter. Ie, do not specify 6th parameter (origin) if you specified an entity + * in aroundent. + */ +native find_sphere_class(aroundent, const _lookforclassname[], Float:radius, entlist[], maxents, const Float:origin[3] = {0.0, 0.0, 0.0}); + +/* SDK function - checks if an origin is in an entity's view cone + * Set use3d to 1 to do the calculation in 3D. Otherwise it will be in 2D. + */ +native is_in_viewcone(entity, const Float:origin[3], use3d = 0); + +//SDK function - checks if an entity is visible to an entity +native is_visible(entity, target); + +//Added at twistedeuphoria's request, see funcwiki for details +native trace_forward(const Float:start[3], const Float:angle[3], Float:give, ignoreEnt, &Float:hitX, &Float:hitY, &Float:shortestDistance, &Float:shortestDistLow, &Float:shortestDistHigh); + +#include <engine_stocks> diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/engine_const.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/engine_const.inc new file mode 100644 index 0000000..c4414a6 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/engine_const.inc @@ -0,0 +1,261 @@ +/* Engine constants +* +* by the AMX Mod X Development Team +* +* This file is provided as is (no warranties). +*/ + +#if defined _engine_const_included + #endinput +#endif +#define _engine_const_included + +#include <hlsdk_const> + +#define SPEAK_NORMAL 0 +#define SPEAK_MUTED 1 +#define SPEAK_ALL 2 +#define SPEAK_LISTENALL 4 + +#define CAMERA_NONE 0 +#define CAMERA_3RDPERSON 1 +#define CAMERA_UPLEFT 2 +#define CAMERA_TOPDOWN 3 + +/* Int */ +enum { + EV_INT_gamestate = 0, + EV_INT_oldbuttons, + EV_INT_groupinfo, + EV_INT_iuser1, + EV_INT_iuser2, + EV_INT_iuser3, + EV_INT_iuser4, + EV_INT_weaponanim, + EV_INT_pushmsec, + EV_INT_bInDuck, + EV_INT_flTimeStepSound, + EV_INT_flSwimTime, + EV_INT_flDuckTime, + EV_INT_iStepLeft, + EV_INT_movetype, + EV_INT_solid, + EV_INT_skin, + EV_INT_body, + EV_INT_effects, + EV_INT_light_level, + EV_INT_sequence, + EV_INT_gaitsequence, + EV_INT_modelindex, + EV_INT_playerclass, + EV_INT_waterlevel, + EV_INT_watertype, + EV_INT_spawnflags, + EV_INT_flags, + EV_INT_colormap, + EV_INT_team, + EV_INT_fixangle, + EV_INT_weapons, + EV_INT_rendermode, + EV_INT_renderfx, + EV_INT_button, + EV_INT_impulse, + EV_INT_deadflag, +}; + +/* Float */ +enum { + EV_FL_impacttime = 0, + EV_FL_starttime, + EV_FL_idealpitch, + EV_FL_pitch_speed, + EV_FL_ideal_yaw, + EV_FL_yaw_speed, + EV_FL_ltime, + EV_FL_nextthink, + EV_FL_gravity, + EV_FL_friction, + EV_FL_frame, + EV_FL_animtime, + EV_FL_framerate, + EV_FL_health, + EV_FL_frags, + EV_FL_takedamage, + EV_FL_max_health, + EV_FL_teleport_time, + EV_FL_armortype, + EV_FL_armorvalue, + EV_FL_dmg_take, + EV_FL_dmg_save, + EV_FL_dmg, + EV_FL_dmgtime, + EV_FL_speed, + EV_FL_air_finished, + EV_FL_pain_finished, + EV_FL_radsuit_finished, + EV_FL_scale, + EV_FL_renderamt, + EV_FL_maxspeed, + EV_FL_fov, + EV_FL_flFallVelocity, + EV_FL_fuser1, + EV_FL_fuser2, + EV_FL_fuser3, + EV_FL_fuser4, +}; + +/* Vector */ +enum { + EV_VEC_origin = 0, + EV_VEC_oldorigin, + EV_VEC_velocity, + EV_VEC_basevelocity, + EV_VEC_clbasevelocity, + EV_VEC_movedir, + EV_VEC_angles, + EV_VEC_avelocity, + EV_VEC_punchangle, + EV_VEC_v_angle, + EV_VEC_endpos, + EV_VEC_startpos, + EV_VEC_absmin, + EV_VEC_absmax, + EV_VEC_mins, + EV_VEC_maxs, + EV_VEC_size, + EV_VEC_rendercolor, + EV_VEC_view_ofs, + EV_VEC_vuser1, + EV_VEC_vuser2, + EV_VEC_vuser3, + EV_VEC_vuser4, +}; + +/* Edict */ +enum { + EV_ENT_chain = 0, + EV_ENT_dmg_inflictor, + EV_ENT_enemy, + EV_ENT_aiment, + EV_ENT_owner, + EV_ENT_groundentity, + EV_ENT_pContainingEntity, + EV_ENT_euser1, + EV_ENT_euser2, + EV_ENT_euser3, + EV_ENT_euser4, +}; + +/* String */ +enum { + EV_SZ_classname = 0, + EV_SZ_globalname, + EV_SZ_model, + EV_SZ_target, + EV_SZ_targetname, + EV_SZ_netname, + EV_SZ_message, + EV_SZ_noise, + EV_SZ_noise1, + EV_SZ_noise2, + EV_SZ_noise3, + EV_SZ_viewmodel, + EV_SZ_weaponmodel, +}; + +/* Byte */ +enum { + EV_BYTE_controller1 = 0, + EV_BYTE_controller2, + EV_BYTE_controller3, + EV_BYTE_controller4, + EV_BYTE_blending1, + EV_BYTE_blending2, +}; + +#if defined _jghg_enums + #endinput +#endif +#define _jghg_enums +enum { + // Edict + GL_trace_ent = 0, + + // Float + GL_coop, + GL_deathmatch, + GL_force_retouch, + GL_found_secrets, + GL_frametime, + GL_serverflags, + GL_teamplay, + GL_time, + GL_trace_allsolid, + GL_trace_fraction, + GL_trace_inopen, + GL_trace_inwater, + GL_trace_plane_dist, + GL_trace_startsolid, + + // Int + GL_cdAudioTrack, + GL_maxClients, + GL_maxEntities, + GL_msg_entity, + GL_trace_flags, + GL_trace_hitgroup, + + // String + GL_pStringBase, + GL_mapname, + GL_startspot, + + // Vector + GL_trace_endpos, + GL_trace_plane_normal, + GL_v_forward, + GL_v_right, + GL_v_up, + GL_vecLandmarkOffset, + + // Void (not supported) + GL_pSaveData +}; + +enum +{ + usercmd_float_start, + usercmd_forwardmove, // Float + usercmd_sidemove, // Float + usercmd_upmove, // Float + usercmd_float_end, + usercmd_int_start, + usercmd_lerp_msec, // short + usercmd_msec, // byte + usercmd_lightlevel, // byte + usercmd_buttons, // unsigned short + usercmd_impulse, // byte + usercmd_weaponselect, // byte + usercmd_impact_index, // int + usercmd_int_end, + usercmd_vec_start, + usercmd_viewangles, // Vector + usercmd_impact_position, // vec + usercmd_vec_end +}; + +// Used by the traceresult() native. +enum +{ + TR_AllSolid, // (int) if true, plane is not valid + TR_StartSolid, // (int) if true, the initial point was in a solid area + TR_InOpen, // (int) + TR_InWater, // (int) + TR_Fraction, // (float) time completed, 1.0 = didn't hit anything + TR_EndPos, // (vector) final position + TR_PlaneDist, // (float) + TR_PlaneNormal, // (vector) surface normal at impact + TR_Hit, // (entity) entity the surface is on + TR_Hitgroup // (int) 0 == generic, non zero is specific body part +}; + diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/engine_stocks.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/engine_stocks.inc new file mode 100644 index 0000000..6d80700 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/engine_stocks.inc @@ -0,0 +1,255 @@ +/* Engine stocks +* +* by the AMX Mod X Development Team +* thanks to AssKicR, Freecode and T(+)rget +* +* This file is provided as is (no warranties). +*/ + +#if defined _engine_stocks_included + #endinput +#endif +#define _engine_stocks_included + +#if !defined _amxmodx_included + #include <amxmodx> +#endif + +#if !defined _engine_included + #include <engine> +#endif + +stock fakedamage(idvictim,const szClassname[],Float:takedmgdamage,damagetype) +{ + new entity = create_entity("trigger_hurt"); + if (entity) + { + DispatchKeyValue(entity,"classname","trigger_hurt"); + new szDamage[16]; + // Takedamages only do half damage per attack (damage is damage per second, and it's triggered in 0.5 second intervals). + // Compensate for that. + format(szDamage,15,"%f",takedmgdamage * 2); + DispatchKeyValue(entity,"dmg",szDamage); + format(szDamage,15,"%i",damagetype); + DispatchKeyValue(entity,"damagetype",szDamage); + DispatchKeyValue(entity,"origin","8192 8192 8192"); + DispatchSpawn(entity); + entity_set_string(entity, EV_SZ_classname, szClassname); + fake_touch(entity,idvictim); + remove_entity(entity); + return 1; + } + return 0; +} + +//wrapper for find_ent_by_class +stock find_ent(iStart, const szClassname[]) +{ + return find_ent_by_class(iStart, szClassname); +} + +/* Get the Button(s) user is pressing */ +stock get_user_button(id) +{ + return entity_get_int(id, EV_INT_button); +} + +stock get_user_oldbutton(id) +{ + return entity_get_int(id, EV_INT_oldbuttons); +} + +/* Get flags an entity is flagged with */ +stock get_entity_flags(ent) +{ + return entity_get_int(ent, EV_INT_flags); +} + +/* Get the distance between two entities */ +stock get_entity_distance(ent1, ent2) +{ + return floatround(entity_range(ent1, ent2)); +} + +/* Get grenade thrown by this user */ +stock get_grenade(id) +{ + new iGrenade = find_ent_by_class(-1, "grenade"); + while(iGrenade > 0) + { + if(entity_get_edict(iGrenade, EV_ENT_owner) == id) + return iGrenade; + + iGrenade = find_ent_by_class(iGrenade, "grenade"); + } + + return 0; +} + +/* Get origin of a brush entity */ +stock get_brush_entity_origin(ent, Float:orig[3]) +{ + new Float:Min[3], Float:Max[3]; + + entity_get_vector(ent, EV_VEC_origin, orig); + entity_get_vector(ent, EV_VEC_mins, Min); + entity_get_vector(ent, EV_VEC_maxs, Max); + + orig[0] += (Min[0] + Max[0]) * 0.5; + orig[1] += (Min[1] + Max[1]) * 0.5; + orig[2] += (Min[2] + Max[2]) * 0.5; + + return 1; +} + +/* Remove entity by name */ +stock remove_entity_name(const eName[]) +{ + new iEntity = find_ent_by_class(-1, eName); + while (iEntity > 0) + { + remove_entity(iEntity); + iEntity = find_ent_by_class(-1, eName); + } + + return 1; +} + +/* Get the contents of the point a user is aiming at */ +stock ViewContents(id) +{ + new origin[3], Float:Orig[3]; + get_user_origin(id, origin, 3); + Orig[0] = float(origin[0]); + Orig[1] = float(origin[1]); + Orig[2] = float(origin[2]); + + return point_contents(Orig); +} + +stock get_speed(ent) +{ + new Float:Vel[3]; + entity_get_vector(ent, EV_VEC_velocity, Vel); + + return floatround(vector_length(Vel)); +} + +/* Set rendering of an entity */ +stock set_rendering(index, fx=kRenderFxNone, r=255, g=255, b=255, render=kRenderNormal, amount=16) +{ + entity_set_int(index,EV_INT_renderfx,fx); + new Float:RenderColor[3]; + RenderColor[0] = float(r); + RenderColor[1] = float(g); + RenderColor[2] = float(b); + entity_set_vector(index,EV_VEC_rendercolor,RenderColor); + entity_set_int(index,EV_INT_rendermode,render); + entity_set_float(index,EV_FL_renderamt,float(amount)); + + return 1; +} + +/* Set flags on an entity */ +stock set_entity_flags(ent,flag,onoff) +{ + if ((entity_get_int(ent,EV_INT_flags)&flag) > 0) + { + if (onoff == 1) + { + return 2; + } + else + { + entity_set_int(ent,EV_INT_flags,entity_get_int(ent,EV_INT_flags)-flag); + return 1; + } + } + else + { + if (onoff == 0) + { + return 2; + } + else + { + entity_set_int(ent,EV_INT_flags,entity_get_int(ent,EV_INT_flags)+flag); + return 1; + } + } + + return 0; +} + +/* If visible = 1, entity will be set to be visible, else invisible. */ +stock set_entity_visibility(entity, visible = 1) +{ + entity_set_int(entity, EV_INT_effects, visible == 1 ? entity_get_int(entity, EV_INT_effects) & ~EF_NODRAW : entity_get_int(entity, EV_INT_effects) | EF_NODRAW); + + return 1; +} + +/* Returns 1 if entity is visible. */ +stock get_entity_visibility(entity) +{ + return !(entity_get_int(entity, EV_INT_effects) & EF_NODRAW); +} + +stock set_user_velocity(entity, const Float:vec[3]) +{ + return entity_set_vector(entity, EV_VEC_velocity, vec); +} + +stock get_user_velocity(entity, Float:vec[3]) +{ + return entity_get_vector(entity, EV_VEC_velocity, vec); +} + +/* Backwards compatible */ +/* Hurts/Kills players in a sphere, like an explosion, Multiplier determines damage. */ +stock RadiusDamage(const Float:fExplodeAt[3], iDamageMultiplier, iRadiusMultiplier) +{ + return radius_damage(fExplodeAt, iDamageMultiplier, iRadiusMultiplier); +} +/* Gives you a velocity in the direction a player is looking, iVelocity is the multiplier. */ +stock VelocityByAim(iIndex,iVelocity, Float:vRetValue[3]) +{ + return velocity_by_aim(iIndex,iVelocity,vRetValue); +} +/* Will return the contents of a point (inside map? in sky? outside map? etc.). */ +stock PointContents(const Float:fCheckAt[3]) +{ + return point_contents(fCheckAt); +} + +stock set_size(index, const Float:mins[3], const Float:maxs[3]) +{ + return entity_set_size(index,mins,maxs); +} + +//by Twilight Suzuka, request addition at29428 +//"Lifted from HLSDK" +stock IsInWorld( ent ) +{ + new Float:origin[3]; + entity_get_vector(ent,EV_VEC_origin,origin); + + if (origin[0] >= 4096.0) return 0; + if (origin[1] >= 4096.0) return 0; + if (origin[2] >= 4096.0) return 0; + if (origin[0] <= -4096.0) return 0; + if (origin[1] <= -4096.0) return 0; + if (origin[2] <= -4096.0) return 0; + + new Float:velocity[3]; + entity_get_vector(ent,EV_VEC_velocity,velocity); + + if (velocity[0] >= 2000) return 0; + if (velocity[1] >= 2000) return 0; + if (velocity[2] >= 2000) return 0; + if (velocity[0] <= -2000) return 0; + if (velocity[1] <= -2000) return 0; + if (velocity[2] <= -2000) return 0; + + return 1; +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/esf.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/esf.inc new file mode 100644 index 0000000..cd67903 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/esf.inc @@ -0,0 +1,70 @@ +/*********************************************** + +[ Corona-Bytes.NET ] EvolutionX Core Plugin + + (c) Corona - Bytes .NET coders :: coders@corona-bytes.net + + > 2005 Corona Bytes :: http://www.corona-bytes.net + +***********************************************/ + +#if defined __EVOLUTION_CORE__ + #endinput +#endif +#define __EVOLUTION_CORE__ + +#pragma library EvolutionXCore + +native setClientPL ( Client, PowerLevel ); +native getClientPL ( Client ); +native setClientACPL ( Client, ActualPowerLevel ); +native getClientACPL ( Client ); +native setClientADPL ( Client, AfterDeathPowerLevel ); +native getClientADPL ( Client ); +native setClientSPL ( Client, PowerLevel ); +native setClientPLtoADPL ( Client ); + +native setClientKI ( Client, Ki ); +native getClientKI ( Client ); + +native setClientHP ( Client, Health ); +native getClientHP ( Client ); +native setClientMHP ( Client, MaximumHealth ); +native getClientMHP ( Client ); + +native setClientSPEED ( Client, Speed ); +native getClientSPEED ( Client ); +native setClientSWOOPSPEED ( Client, SwoopSpeed ); +native getClientSWOOPSPEED ( Client ); + +native setClientPROTECT ( Client, bool:Enable = true ); +native getClientPROTECT ( Client ); + +native setClientFROZEN ( Client, bool:Enable = true ); +native getClientFROZEN ( Client ); + +native setClientGOD ( Client, bool:Enable = true ); +native getClientGOD ( Client ); + +native getClientFLY ( Client ); + +native setClientHiddenTURBO ( Client, bool:Enable = true ); +native getClientTURBO ( Client ); + +native getClientBLOCK ( Client ); + +native setClientHiddenPOWERUP ( Client, bool:Enable = true ); +native getClientPOWERUP ( Client ); + +native getClientSWOOPING ( Client ); +native getClientATKSHOOT ( Client ); +native getClientATKCHARGE ( Client ); +native getClientMELEE ( Client ); +native getClientTHROWAWAY ( Client ); +native getClientTHROW ( Client ); +native getClientWALLGND ( Client ); +native getClientINFREEFALL ( Client ); +native getClientBEAMJUMP ( Client ); + +// kills a player without score/death msg +native silentClientKILL ( Client ); \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/esf_const.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/esf_const.inc new file mode 100644 index 0000000..91b8191 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/esf_const.inc @@ -0,0 +1,71 @@ +/** + * (C)2004-2005 AMX Mod X Development Team + * based on the stocks and information provided by LynX + * organized and released by BAILOPAN + * This file is provided as is (no warranties). + */ + +#if defined _esfconst_included + #endinput +#endif +#define _esfconst_included + +enum +{ + Character_Buu = 1, + Character_Goku = 2, + Character_Gohan = 3, //my favorite :) + Character_Krillin = 4, + Character_Frieza = 5, + Character_Piccolo = 6, + Character_Trunks = 7, + Character_Vegeta = 8, + Character_Cell = 9, +}; + +enum +{ + Explosion_Blue = 0, + Explosion_Green, + Explosion_Orange, + Explosion_Purple, + Explosion_Yellow, + Explosion_Red, + Explosion_White, + Explosions_Total, +}; + +enum +{ + Attack_Kamehameha=1, + Attack_SpiritBomb, + Attack_GalletGun, + Attack_FinalFlash, + Attack_Renzoku, + Attack_Kametorpedo, + Attack_GenericBeam, + Attack_Throw, +}; + +enum +{ + Direction_Left=1, + Direction_Right, + Direction_Up, + Direction_Down, + Direction_Forward, + Direction_Backward, +}; + +enum +{ + Recovery_Kicked=1, + Recovery_Tumbled, + Recovery_Lying, + Recovery_Thrown, +}; + +#define ESF_CHARGING 1 +#define ESF_CONTROLLING 2 +#define ESF_SHOOTING 3 +#define ESF_SHOT 4 diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/fakemeta.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/fakemeta.inc new file mode 100644 index 0000000..3e76dd5 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/fakemeta.inc @@ -0,0 +1,260 @@ +/* FakeMeta functions +* +* by the AMX Mod X Development Team +* +* This file is provided as is (no warranties). +*/ + +#if defined _fakemeta_included + #endinput +#endif +#define _fakemeta_included + +#include <fakemeta_const> + +#if AMXX_VERSION_NUM >= 175 + #pragma reqlib fakemeta + #if !defined AMXMODX_NOAUTOLOAD + #pragma loadlib fakemeta + #endif +#else + #pragma library fakemeta +#endif + +/** + * Returns entvar data from an entity. Use the pev_* enum (in fakemeta_const.inc) to specify which data you want retrieved. + * + * @note This function uses "read_data" style data syntax. It returns integer values, + * by-references float data, and sets a buffer for string data. + * + * @note If retrieving strings, you may optionally get a pointer into the global string table. Depending on + * your situation, there are two ways to do this. + * 1: This simply gets the pointer. + * new ptr = pev(entid, pev_classname) + * 2: The pointer will be stored in ptr AND the actual string is retrieved. + * new ptr, classname[32] + * pev(entid, pev_classname, ptr, classname, 31) + * + * @param _index The entity index to lookup. + * @param _value The pev field to lookup (look in fakemeta_const.inc) + */ +native pev(_index,_value,any:...); + +/** + * Sets entvar data for an entity. Use the pev_* enum from fakemeta_const.inc for reference. + * + * @note Setting string data will automatically allocate a new string (via AllocString) + * If you have a string already allocated with your own call to AllocString, use + * set_pev_string_ptr instead. + * + * @param _index The entity index to set the value on. + * @param _value The pev field to set, (look in fakemeta_const.inc) + */ +native set_pev(_index,_value,any:...); + +/** + * Use this native to set a pev field to a string that is already allocated (via a function such + * as EngFunc_AllocString). + * + * @note If you specify _value as anything other than string fields, an error will be thrown. + * @note Pass 0 as the _string field to set it to an empty string. + * + * @param _index The entity index to set the value on. + * @param _value The pev field to set - MUST be a string field. + * @param _string The string handle, retrieved from places like AllocString. + */ +native set_pev_string(_index, _value, _string); + + +/** + * Checks the validity of an entity. + * + * @param entindex The entity id to check. + * + * @return 0 on invalid entity + * 1 on entity is valid + * 2 on entity is valid and it has private data (safe to use pdata natives on). + */ +native pev_valid(entindex); + +/** + * Returns the serial number for each entity. The serial number is a unique identity + * generated when an entity is created. + * + * @param entindex The entity id. + * + * @return The serial number for the entity. + */ +native pev_serial(entindex); + +/* Returns any global variable inside globalvars_t structure. Use the glb_* enum. + * + * When returning data from glb_pStringBase (the global string table), you may give a pointer into that table + * in order to get different strings. + * Example: + * new model[128] + * new ptr = pev(id, pev_viewmodel) + * global_get(glb_pStringBase, ptr, model, 127) + */ +native global_get(_value, any:...); + +/* Returns an integer from private data. _linuxdiff is added into the _Offset if it's used on a linux server. */ +native get_pdata_int(_index,_Offset,_linuxdiff=5,_macdiff=5); + +/* Sets an integer from private data. _linuxdiff is added into the _Offset if it's used on a linux server. */ +native set_pdata_int(_index,_Offset,_Value,_linuxdiff=5,_macdiff=5); + +/* Returns a float from private data. _linuxdiff is added into the _Offset if it's used on a linux server. */ +native Float:get_pdata_float(_index,_Offset,_linuxdiff=5,_macdiff=5); + +/* Sets a float from private data. _linuxdiff is added into the _Offset if it's used on a linux server. */ +native set_pdata_float(_index,_Offset,Float:_Value,_linuxdiff=5,_macdiff=5); + +/** + * Tries to retrieve an edict (entity encapsulation) pointer from an entity's private data. + * + * This function is byte-addressable. Unlike get_pdata_int() which searches in byte increments of 4, + * get_pdata_end searches in increments of 1. + * + * @param _index Entity index. + * @param _offset Offset to search. + * @param _linuxdiff Linux difference. + * @param _macdiff Mac OS X difference. + * @return -2 if an invalid entity was found. + * -1 if an empty entity was found. + * Otherwise, an entity index is returned. + */ +native get_pdata_ent(_index, _offset, _linuxdiff=20, _macdiff=20); + +/* Registers a forward. + * Returns an id you can pass to unregister_forward + */ +native register_forward(_forwardType,const _function[],_post=0); + +/* Unregisters a forward. + * The registerId must be from register_forward, and + * post/forwardtype must match what you registered the forward as. + */ +native unregister_forward(_forwardType, registerId, post=0); + +/* Returns data for metamod */ +native forward_return(type,any:...); + +/* Returns the original return value of an engine function. + * This is only valid in forwards that were registered as post. + * + * get_orig_retval() - no params, retrieves integer return value + * get_orig_retval(&Float:value) - retrieves float return value by reference + * get_orig_retval(value[], len) - retrives string return value + */ +native get_orig_retval({Float,_}:...); + +native engfunc(type,any:...); +native dllfunc(type,any:...); + +//only use this with functions that pass a Trace +// get: zero extra params - return int, one extra param = byref float or vector +// set: use anything +native get_tr(TraceResult:tr_member, {Float,_}:...); +native set_tr(TraceResult:tr_member, {Float,_}:...); + +//Upgraded version takes in a TraceResult handle, optionally passed in as the last parameter to the +//TraceResult forward. Use 0 to specify the global traceresult handle set from calling +// some of the Engfucs. +native get_tr2(tr_handle, {TraceResult,_}:tr_member, {Float,_}:...); +native set_tr2(tr_handle, {TraceResult,_}:tr_member, {Float,_}:...); + +/** + * Creates a traceresult handle. This value should never be altered. + * The handle can be used in get/set_tr2 and various traceresult engine functions. + * + * NOTE: You must call free_tr2() on every handle made with create_tr2(). + * + * @return A new TraceResult handle. + */ +native create_tr2(); + +/** + * Frees a traceresult handle created with free_tr2(). Do not call + * this more than once per handle, or on handles not created through + * create_tr2(). + * + * @param tr_handle TraceResult handle created via create_tr2(). + * @noreturn + */ +native free_tr2(tr_handle); + +//Same as above, use either a kvd_handle or 0 for global reserved kvd data +//kvd_handle is passed by the kvd hook, last param +native get_kvd(kvd_handle, KeyValueData:member, {Float,_}:...); + +//Using set_kvd with the handle from the hook for anything under KV_fHandled +// is considered an undefined operation (it could crash). You should fire a new +// keyvalues structure rather than changing the internal engine strings. +native set_kvd(kvd_handle, KeyValueData:member, {Float,_}:...); + +// These functions are used with the clientdata data structure (FM_UpdateClientData) +// Get: 0 extra params - Return integer; 1 extra param - by ref float or vector; 2 extra params - string and length +// Set: Use anything +// Use 0 for cd_handle to specify the global clientdata handle +native get_cd(cd_handle, ClientData:member, {Float,_}:...); +native set_cd(cd_handle, ClientData:member, {Float,_}:...); + +// These functions are used with the entity_state data structure (FM_AddToFullPack) +// Get: 0 extra params - Return integer; 1 extra param - by ref float or vector or array +// Set: Use anything +// Use 0 for es_handle to specify the global entity_state handle +native get_es(es_handle, EntityState:member, {Float,_}:...); +native set_es(es_handle, EntityState:member, {Float,_}:...); + +// These functions are used with the usercmd data structure (FM_CmdStart) +// Get: 0 extra params - Return integer; 1 extra param - by ref float or vector +// Set: Use anything +// Use 0 for uc_handle to specify the global usercmd handle +native get_uc(uc_handle, UserCmd:member, {Float,_}:...); +native set_uc(uc_handle, UserCmd:member, {Float,_}:...); + +//NOTE that for the string offsets below, on AMD64, a byref (char **) offset is NOT the same as an int offset +//In fact it's QWORD aligned rather than DWORD aligned, so the offset will be exactly half. +//Gets a string from a private offset. If byref is false, the string is treated as static rather than dynamic. +//linux value is what to add to the offset for linux servers. +//mac value is what to add to the offset for os x servers. Default (cellmin) means that linux value will be used. +//this cannot use a default value due to older version using an awkward default value. +native get_pdata_string(entity, offset, dest[], maxlength, byref=1, linux, mac=cellmin); + +//Sets a string in a private offset. +//realloc = -1 - nonbyref copy (static +//realloc = 0 - copy byref, no realloc *(char **) +//realloc = 1 - reallocate new string with free+malloc +//realloc = 2 - reallocate new string with delete[]+new[] +//linux value is what to add to the offset for linux servers. +//mac value iswhat to add to the offset for os x servers. +//this cannot use a default value due to older version using an awkward default value. +native set_pdata_string(entity, offset, const source[], realloc=2, linux, mac=cellmin); + +// Copies the given infoBuffer pointer into out[] +// An infoBuffer pointer is returned by EngFunc_GetInfoKeyBuffer +native copy_infokey_buffer(infoBuffer, out[], maxlen); + + +/** + * Looks up the sequence for the entity. + * + * @param entity The entity id to lookup. + * @param name The sequence name to lookup, case insensitive. ("JUMP" would match "jump") + * @param framerate The framerate of the sequence, if found. + * @param loops Whether or not the sequence loops. + * @param groundspeed The groundspeed setting of the sequence. + * @return -1 on failed lookup, the sequence number on successful lookup. + */ +native lookup_sequence(entity, const name[], &Float:framerate = 0.0, &bool:loops = false, &Float:groundspeed = 0.0); + +/** + * Sets a bone controller with the specified value. + * + * @param entity The entity id to set the value on. + * @param controller Which controller to set (0 through 3). + * @param value The value to set it to. + * @return The percentage that the controller is extended (0.0 through 1.0) + */ +native Float:set_controller(entity, controller, Float:value); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/fakemeta_const.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/fakemeta_const.inc new file mode 100644 index 0000000..851bcb8 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/fakemeta_const.inc @@ -0,0 +1,749 @@ +/* FakeMeta constants +* +* by the AMX Mod X Development Team +* +* This file is provided as is (no warranties). +*/ + +#if defined _fakemeta_const_included + #endinput +#endif +#define _fakemeta_const_included + +// For forward_return +#define FMV_STRING 1 +#define FMV_FLOAT 2 +#define FMV_CELL 3 + +#include <hlsdk_const> + +/* The actual return value of the function, use these instead of PLUGIN_HANDLED etc when + * returning from registered forwards. + */ +#define FMRES_IGNORED 1 // Calls target function, returns normal value +#define FMRES_HANDLED 2 // Tells metamod you did something, still calls target function and returns normal value +#define FMRES_OVERRIDE 3 // Supposed to still call the target function but return your value instead + // however this does not work properly with metamod; use supercede instead. +#define FMRES_SUPERCEDE 4 // Block the target call, and use your return value (if applicable) + +// Use this with GetInfoKeyBuffer if you want the server's localinfo buffer +#define FM_NULLENT -1 + + +/* Used with engfunc() + */ +enum { + EngFunc_PrecacheModel, // int ) (char *s); + EngFunc_PrecacheSound, // int ) (char *s); + EngFunc_SetModel, // void ) (edict_t *e, const char *m); + EngFunc_ModelIndex, // int ) (const char *m); + EngFunc_ModelFrames, // int ) (int modelIndex); + EngFunc_SetSize, // void ) (edict_t *e, const float *rgflMin, const float *rgflMax); + EngFunc_ChangeLevel, // void ) (char* s1, char* s2); + EngFunc_VecToYaw, // float) (const float *rgflVector); + EngFunc_VecToAngles, // void ) (const float *rgflVectorIn, float *rgflVectorOut); + EngFunc_MoveToOrigin, // void ) (edict_t *ent, const float *pflGoal, float dist, int iMoveType); + EngFunc_ChangeYaw, // void ) (edict_t* ent); + EngFunc_ChangePitch, // void ) (edict_t* ent); + EngFunc_FindEntityByString, // edict) (edict_t *pEdictStartSearchAfter, const char *pszField, const char *pszValue); + EngFunc_GetEntityIllum, // int ) (edict_t* pEnt); + EngFunc_FindEntityInSphere, // edict) (edict_t *pEdictStartSearchAfter, const float *org, float rad); + EngFunc_FindClientInPVS, // edict) (edict_t *pEdict); + EngFunc_EntitiesInPVS, // edict) (edict_t *pplayer); + EngFunc_MakeVectors, // void ) (const float *rgflVector); + EngFunc_AngleVectors, // void ) (const float *rgflVector, float *forward, float *right, float *up); + EngFunc_CreateEntity, // edict) (void); + EngFunc_RemoveEntity, // void ) (edict_t *e); + EngFunc_CreateNamedEntity, // edict) (int className); + EngFunc_MakeStatic, // void ) (edict_t *ent); + EngFunc_EntIsOnFloor, // int ) (edict_t *e); + EngFunc_DropToFloor, // int ) (edict_t *e); + EngFunc_WalkMove, // int ) (edict_t *ent, float yaw, float dist, int iMode); + EngFunc_SetOrigin, // void ) (edict_t *e, const float *rgflOrigin); + EngFunc_EmitSound, // void ) (edict_t *entity, int channel, const char *sample, float volume, float attenuation, int fFlags, int pitch); + EngFunc_EmitAmbientSound, // void ) (edict_t *entity, float *pos, const char *samp, float vol, float attenuation, int fFlags, int pitch); + + //With 1.71 you can pass an optional TraceLine ptr for trace natives + // it can be 0, for meaning "global tr handle" (for get/set_tr2), or + // it can be any other TR handle (such as one from a TR hook) + EngFunc_TraceLine, // void ) (const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr); + EngFunc_TraceToss, // void ) (edict_t *pent, edict_t *pentToIgnore, TraceResult *ptr); + EngFunc_TraceMonsterHull, // int ) (edict_t *pEdict, const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr); + EngFunc_TraceHull, // void ) (const float *v1, const float *v2, int fNoMonsters, int hullNumber, edict_t *pentToSkip, TraceResult *ptr); + EngFunc_TraceModel, // void ) (const float *v1, const float *v2, int hullNumber, edict_t *pent, TraceResult *ptr); + EngFunc_TraceTexture, // const char *) (edict_t *pTextureEntity, const float *v1, const float *v2 ); + EngFunc_TraceSphere, // void ) (const float *v1, const float *v2, int fNoMonsters, float radius, edict_t *pentToSkip, TraceResult *ptr); + + EngFunc_GetAimVector, // void ) (edict_t *ent, float speed, float *rgflReturn); + EngFunc_ParticleEffect, // void ) (const float *org, const float *dir, float color, float count); + EngFunc_LightStyle, // void ) (int style, char *val); + EngFunc_DecalIndex, // int ) (const char *name); + EngFunc_PointContents, // int ) (const float *rgflVector); + EngFunc_FreeEntPrivateData, // void ) (edict_t *pEdict); + EngFunc_SzFromIndex, // const char *) (int iString); + EngFunc_AllocString, // int ) (const char *szValue); + EngFunc_RegUserMsg, // int ) (const char *pszName, int iSize); + EngFunc_AnimationAutomove, // void ) (const edict_t *pEdict, float flTime); + EngFunc_GetBonePosition, // void ) (const edict_t *pEdict, int iBone, float *rgflOrigin, float *rgflAngles); + EngFunc_GetAttachment, // void ) (const edict_t *pEdict, int iAttachment, float *rgflOrigin, float *rgflAngles); + EngFunc_SetView, // void ) (const edict_t *pClient, const edict_t *pViewent); + EngFunc_Time, // float) ( void ); + EngFunc_CrosshairAngle, // void ) (const edict_t *pClient, float pitch, float yaw); + EngFunc_FadeClientVolume, // void ) (const edict_t *pEdict, int fadePercent, int fadeOutSeconds, int holdTime, int fadeInSeconds); + EngFunc_SetClientMaxspeed, // void ) (const edict_t *pEdict, float fNewMaxspeed); + EngFunc_CreateFakeClient, // edict) (const char *netname); // returns NULL if fake client can't be created + EngFunc_RunPlayerMove, // void ) (edict_t *fakeclient, const float *viewangles, float forwardmove, float sidemove, float upmove, unsigned short buttons, byte impulse, byte msec); + EngFunc_NumberOfEntities, // int ) ( void ); + EngFunc_StaticDecal, // void ) (const float *origin, int decalIndex, int entityIndex, int modelIndex); + EngFunc_PrecacheGeneric, // int ) (char* s); + EngFunc_BuildSoundMsg, // void ) (edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); + EngFunc_GetPhysicsKeyValue, // const char *) (const edict_t *pClient, const char *key); + EngFunc_SetPhysicsKeyValue, // void ) (const edict_t *pClient, const char *key, const char *value); + EngFunc_GetPhysicsInfoString, // const char *) (const edict_t *pClient); + EngFunc_PrecacheEvent, // unsigned short) (int type, const char*psz); + EngFunc_PlaybackEvent, // void ) (int flags, const edict_t *pInvoker, unsigned short eventindex, float delay, float *origin, float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2); + EngFunc_CheckVisibility, // int ) (const edict_t *entity, unsigned char *pset); + EngFunc_GetCurrentPlayer, // int ) ( void ); + EngFunc_CanSkipPlayer, // int ) (const edict_t *player); + EngFunc_SetGroupMask, // void ) (int mask, int op); + EngFunc_GetClientListening, // bool ) (int iReceiver, int iSender) + EngFunc_SetClientListening, // bool ) (int iReceiver, int iSender, bool Listen) + EngFunc_MessageBegin, // void ) (int msg_dest, int msg_type, const float *pOrigin, edict_t *ed) + EngFunc_WriteCoord, // void ) (float flValue) + EngFunc_WriteAngle, // void ) (float flValue) + EngFunc_InfoKeyValue, // char*) (char *infobuffer, char *key); + EngFunc_SetKeyValue, // void ) (char *infobuffer, char *key, char *value); + EngFunc_SetClientKeyValue, // void ) (int clientIndex, char *infobuffer, char *key, char *value); + EngFunc_CreateInstBaseline, // int ) (int classname, struct entity_state_s *baseline); + + // Returns pointer to info buffer that can be used with the infobuffer param of InfoKeyValue, SetKeyValue, and SetClientKeyValue + EngFunc_GetInfoKeyBuffer, // char*) (edict_t *e); + EngFunc_AlertMessage, // void ) (ALERT_TYPE atype, char *szFmt, ...); + EngFunc_ClientPrintf, // void ) (edict_t* pEdict, PRINT_TYPE ptype, const char *szMsg); + EngFunc_ServerPrint // void ) (const char *szMsg); +}; + +/* Used with dllfunc() + */ +enum +{ + DLLFunc_GameInit, // void ) ( void ); + DLLFunc_Spawn, // int ) (edict_t *pent); + DLLFunc_Think, // void ) (edict_t *pent); + DLLFunc_Use, // void ) (edict_t *pentUsed, edict_t *pentOther); + DLLFunc_Touch, // void ) (edict_t *pentTouched, edict_t *pentOther); + DLLFunc_Blocked, // void ) (edict_t *pentBlocked, edict_t *pentOther); + + //You can pass in 0 for glb kvd handle or a kvd handle here + DLLFunc_KeyValue, // void ) (edict_t *pentKeyvalue, KeyValueData *pkvd); + DLLFunc_SetAbsBox, // void ) (edict_t *pent); + DLLFunc_ClientConnect, // bool ) (edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[128]); + + DLLFunc_ClientDisconnect, // void ) (edict_t *pEntity); + DLLFunc_ClientKill, // void ) (edict_t *pEntity); + DLLFunc_ClientPutInServer, // void ) (edict_t *pEntity); + DLLFunc_ClientCommand, // void ) (edict_t *pEntity); + + DLLFunc_ServerDeactivate, // void ) ( void ); + + DLLFunc_PlayerPreThink, // void ) (edict_t *pEntity); + DLLFunc_PlayerPostThink, // void ) (edict_t *pEntity); + + DLLFunc_StartFrame, // void ) ( void ); + DLLFunc_ParmsNewLevel, // void ) ( void ); + DLLFunc_ParmsChangeLevel, // void ) ( void ); + + // Returns string describing current .dll. E.g., TeamFotrress 2, Half-Life + // This also gets called when the server is queried for information (for example, by a server browser tool) + DLLFunc_GetGameDescription, // const char *) ( void ); + + // Spectator funcs + DLLFunc_SpectatorConnect, // void ) (edict_t *pEntity); + DLLFunc_SpectatorDisconnect, // void ) (edict_t *pEntity); + DLLFunc_SpectatorThink, // void ) (edict_t *pEntity); + + // Notify game .dll that engine is going to shut down. Allows mod authors to set a breakpoint. + DLLFunc_Sys_Error, // void ) (const char *error_string); + + DLLFunc_PM_FindTextureType, // char ) (char *name); + DLLFunc_RegisterEncoders, // void ) ( void ); + + // Enumerates player hulls. Returns 0 if the hull number doesn't exist, 1 otherwise + DLLFunc_GetHullBounds, // int ) (int hullnumber, float *mins, float *maxs); + + // Create baselines for certain "unplaced" items. + DLLFunc_CreateInstBaselines, // void ) ( void ); + DLLFunc_pfnAllowLagCompensation, // int ) ( void ); + // I know this does not fit with DLLFUNC(), but I don't want another native just for it. + MetaFunc_CallGameEntity, // bool ) (plid_t plid, const char *entStr,entvars_t *pev); + DLLFunc_ClientUserInfoChanged, // void ) (edict *pEntity, char *infobuffer); + // You can pass in 0 for global cd handle or another cd handle here + DLLFunc_UpdateClientData, // void ) (const struct edict_s *ent, int sendweapons, struct clientdata_s *cd); + // You can pass in 0 for global entity state handle or another entity state handle here + DLLFunc_AddToFullPack, // int ) (struct entity_state_s *state, int e, edict_t *ent, edict_t *host, int hostflags, int player, unsigned char *pSet); + // You can pass in 0 for global usercmd handle or another usercmd handle here + DLLFunc_CmdStart, // void ) (const edict_t *player, const struct usercmd_s *cmd, unsigned int random_seed); + DLLFunc_CmdEnd, // void ) (const edict_t *player); + DLLFunc_CreateBaseline // void ) (int player, int eindex, struct entity_state_s *baseline, struct edict_s *entity, int playermodelindex, vec3_t player_mins, vec3_t player_maxs); +}; + +enum { + pev_string_start = 0, + pev_classname, + pev_globalname, + pev_model, + pev_target, + pev_targetname, + pev_netname, + pev_message, + pev_noise, + pev_noise1, + pev_noise2, + pev_noise3, + pev_string_end, + pev_edict_start, + pev_chain, + pev_dmg_inflictor, + pev_enemy, + pev_aiment, + pev_owner, + pev_groundentity, + pev_euser1, + pev_euser2, + pev_euser3, + pev_euser4, + pev_edict_end, + pev_float_start, + pev_impacttime, + pev_starttime, + pev_idealpitch, + pev_ideal_yaw, + pev_pitch_speed, + pev_yaw_speed, + pev_ltime, + pev_nextthink, + pev_gravity, + pev_friction, + pev_frame, + pev_animtime, + pev_framerate, + pev_scale, + pev_renderamt, + pev_health, + pev_frags, + pev_takedamage, + pev_max_health, + pev_teleport_time, + pev_armortype, + pev_armorvalue, + pev_dmg_take, + pev_dmg_save, + pev_dmg, + pev_dmgtime, + pev_speed, + pev_air_finished, + pev_pain_finished, + pev_radsuit_finished, + pev_maxspeed, + pev_fov, + pev_flFallVelocity, + pev_fuser1, + pev_fuser2, + pev_fuser3, + pev_fuser4, + pev_float_end, + pev_int_start, + pev_fixangle, + pev_modelindex, + pev_viewmodel, + pev_weaponmodel, + pev_movetype, + pev_solid, + pev_skin, + pev_body, + pev_effects, + pev_light_level, + pev_sequence, + pev_gaitsequence, + pev_rendermode, + pev_renderfx, + pev_weapons, + pev_deadflag, + pev_button, + pev_impulse, + pev_spawnflags, + pev_flags, + pev_colormap, + pev_team, + pev_waterlevel, + pev_watertype, + pev_playerclass, + pev_weaponanim, + pev_pushmsec, + pev_bInDuck, + pev_flTimeStepSound, + pev_flSwimTime, + pev_flDuckTime, + pev_iStepLeft, + pev_gamestate, + pev_oldbuttons, + pev_groupinfo, + pev_iuser1, + pev_iuser2, + pev_iuser3, + pev_iuser4, + pev_int_end, + pev_byte_start, + pev_controller_0, + pev_controller_1, + pev_controller_2, + pev_controller_3, + pev_blending_0, + pev_blending_1, + pev_byte_end, + pev_bytearray_start, + pev_controller, + pev_blending, + pev_bytearray_end, + pev_vecarray_start, + pev_origin, + pev_oldorigin, + pev_velocity, + pev_basevelocity, + pev_clbasevelocity, + pev_movedir, + pev_angles, + pev_avelocity, + pev_v_angle, + pev_endpos, + pev_startpos, + pev_absmin, + pev_absmax, + pev_mins, + pev_maxs, + pev_size, + pev_rendercolor, + pev_view_ofs, + pev_vuser1, + pev_vuser2, + pev_vuser3, + pev_vuser4, + pev_punchangle, + pev_vecarray_end, + pev_string2_begin, /* anything after here are string corrections */ + pev_weaponmodel2, + pev_viewmodel2, + pev_string2_end, + pev_edict2_start, /* edict corrections */ + pev_pContainingEntity, + pev_absolute_end +}; + +/* Used with global_get() + */ +enum +{ + glb_start_int = 0, + glb_trace_hitgroup, + glb_trace_flags, + glb_msg_entity, + glb_cdAudioTrack, + glb_maxClients, + glb_maxEntities, + glb_end_int, + glb_start_float, + glb_time, + glb_frametime, + glb_force_retouch, + glb_deathmatch, + glb_coop, + glb_teamplay, + glb_serverflags, + glb_found_secrets, + glb_trace_allsolid, + glb_trace_startsolid, + glb_trace_fraction, + glb_trace_plane_dist, + glb_trace_inopen, + glb_trace_inwater, + glb_end_float, + glb_start_edict, + glb_trace_ent, + glb_end_edict, + glb_start_vector, + glb_v_forward, + glb_v_up, + glb_v_right, + glb_trace_endpos, + glb_trace_plane_normal, + glb_vecLandmarkOffset, + glb_end_vector, + glb_start_string, + glb_mapname, + glb_startspot, + glb_end_string, + glb_start_pchar, + glb_pStringBase, + glb_end_pchar +}; + +/* Used with register_forward() + */ +enum { + FM_PrecacheModel = 1, + FM_PrecacheSound, + FM_SetModel, + FM_ModelIndex, + FM_ModelFrames, + FM_SetSize, + FM_ChangeLevel, + FM_VecToYaw, + FM_VecToAngles, + FM_MoveToOrigin, + FM_ChangeYaw, + FM_ChangePitch, + FM_FindEntityByString, + FM_GetEntityIllum, + FM_FindEntityInSphere, + FM_FindClientInPVS, + FM_EntitiesInPVS, + FM_MakeVectors, + FM_AngleVectors, + FM_CreateEntity, + FM_RemoveEntity, + FM_CreateNamedEntity, + FM_MakeStatic, + FM_EntIsOnFloor, + FM_DropToFloor, + FM_WalkMove, + FM_SetOrigin, + FM_EmitSound, + FM_EmitAmbientSound, + FM_TraceLine, + FM_TraceToss, + FM_TraceMonsterHull, + FM_TraceHull, + FM_TraceModel, + FM_TraceTexture, + FM_TraceSphere, + FM_GetAimVector, + FM_ParticleEffect, + FM_LightStyle, + FM_DecalIndex, + FM_PointContents, + FM_MessageBegin, + FM_MessageEnd, + FM_WriteByte, + FM_WriteChar, + FM_WriteShort, + FM_WriteLong, + FM_WriteAngle, + FM_WriteCoord, + FM_WriteString, + FM_WriteEntity, + FM_CVarGetFloat, + FM_CVarGetString, + FM_CVarSetFloat, + FM_CVarSetString, + FM_FreeEntPrivateData, + FM_SzFromIndex, + FM_AllocString, + FM_RegUserMsg, + FM_AnimationAutomove, + FM_GetBonePosition, + FM_GetAttachment, + FM_SetView, + FM_Time, + FM_CrosshairAngle, + FM_FadeClientVolume, + FM_SetClientMaxspeed, + FM_CreateFakeClient, + FM_RunPlayerMove, + FM_NumberOfEntities, + FM_StaticDecal, + FM_PrecacheGeneric, + FM_BuildSoundMsg, + FM_GetPhysicsKeyValue, + FM_SetPhysicsKeyValue, + FM_GetPhysicsInfoString, + FM_PrecacheEvent, + FM_PlaybackEvent, + FM_CheckVisibility, + FM_GetCurrentPlayer, + FM_CanSkipPlayer, + FM_SetGroupMask, + FM_Voice_GetClientListening, + FM_Voice_SetClientListening, + FM_InfoKeyValue, + FM_SetKeyValue, + FM_SetClientKeyValue, + FM_GetPlayerAuthId, + FM_GetPlayerWONId, + FM_IsMapValid, + + FM_Spawn, + FM_Think, + FM_Use, + FM_Touch, + FM_Blocked, + FM_KeyValue, + FM_SetAbsBox, + FM_ClientConnect, + + FM_ClientDisconnect, + FM_ClientKill, + FM_ClientPutInServer, + FM_ClientCommand, + + FM_ServerDeactivate, + + FM_PlayerPreThink, + FM_PlayerPostThink, + + FM_StartFrame, + FM_ParmsNewLevel, + FM_ParmsChangeLevel, + + // Returns string describing current .dll. E.g., TeamFotrress 2, Half-Life + // This also gets called when the server is queried for information (for example, by a server browser tool) + FM_GetGameDescription, + + // Spectator funcs + FM_SpectatorConnect, + FM_SpectatorDisconnect, + FM_SpectatorThink, + + // Notify game .dll that engine is going to shut down. Allows mod authors to set a breakpoint. + FM_Sys_Error, + + FM_PM_FindTextureType, + FM_RegisterEncoders, + + // Create baselines for certain "unplaced" items. + FM_CreateInstBaselines, + + FM_AllowLagCompensation, + FM_AlertMessage, + + // NEW_DLL_FUNCTIONS: + FM_OnFreeEntPrivateData, + FM_GameShutdown, + FM_ShouldCollide, + + // LATE ADDITIONS (v1.71) + FM_ClientUserInfoChanged, + + // LATE ADDITIONS (v1.75) + FM_UpdateClientData, + FM_AddToFullPack, + FM_CmdStart, + FM_CmdEnd, + FM_CreateInstBaseline, + FM_CreateBaseline, + FM_GetInfoKeyBuffer, + FM_ClientPrintf, + + // LATE ADDITIONS (v1.80) + FM_ServerPrint +}; + +enum TraceResult +{ + TR_AllSolid, // int + TR_StartSolid, // int + TR_InOpen, // int + TR_InWater, // int + TR_flFraction, // float + TR_vecEndPos, // float array[3] + TR_flPlaneDist, // float + TR_vecPlaneNormal, // float array[3] + TR_pHit, // int (edict_t*) + TR_iHitgroup, // int +}; + +enum KeyValueData +{ + KV_ClassName, // string + KV_KeyName, // string + KV_Value, // string + KV_fHandled // int +}; + +enum ClientData +{ + CD_Origin, // float array[3] + CD_Velocity, // float array[3] + CD_ViewModel, // int + CD_PunchAngle, // float array[3] + CD_Flags, // int + CD_WaterLevel, // int + CD_WaterType, // int + CD_ViewOfs, // float array[3] + CD_Health, // float + CD_bInDuck, // int + CD_Weapons, // int + CD_flTimeStepSound, // int + CD_flDuckTime, // int + CD_flSwimTime, // int + CD_WaterJumpTime, // int + CD_MaxSpeed, // float + CD_FOV, // float + CD_WeaponAnim, // int + CD_ID, // int + CD_AmmoShells, // int + CD_AmmoNails, // int + CD_AmmoCells, // int + CD_AmmoRockets, // int + CD_flNextAttack, // float + CD_tfState, // int + CD_PushMsec, // int + CD_DeadFlag, // int + CD_PhysInfo, // string[256] + CD_iUser1, // int + CD_iUser2, // int + CD_iUser3, // int + CD_iUser4, // int + CD_fUser1, // float + CD_fUser2, // float + CD_fUser3, // float + CD_fUser4, // float + CD_vUser1, // float array[3] + CD_vUser2, // float array[3] + CD_vUser3, // float array[3] + CD_vUser4 // float array[3] +}; + +enum EntityState +{ + // Fields which are filled in by routines outside of delta compression + ES_EntityType, // int + // Index into cl_entities array for this entity + ES_Number, // int + ES_MsgTime, // float + + // Message number last time the player/entity state was updated + ES_MessageNum, // int + + // Fields which can be transitted and reconstructed over the network stream + ES_Origin, // float array[3] + ES_Angles, // float array[3] + + ES_ModelIndex, // int + ES_Sequence, // int + ES_Frame, // float + ES_ColorMap, // int + ES_Skin, // short + ES_Solid, // short + ES_Effects, // int + ES_Scale, // float + ES_eFlags, // byte + + // Render information + ES_RenderMode, // int + ES_RenderAmt, // int + ES_RenderColor, // byte array[3], RGB value + ES_RenderFx, // int + + ES_MoveType, // int + ES_AnimTime, // float + ES_FrameRate, // float + ES_Body, // int + ES_Controller, // byte array[4] + ES_Blending, // byte array[4] + ES_Velocity, // float array[3] + + // Send bbox down to client for use during prediction + ES_Mins, // float array[3] + ES_Maxs, // float array[3] + + ES_AimEnt, // int + // If owned by a player, the index of that player (for projectiles) + ES_Owner, // int + + // Friction, for prediction + ES_Friction, // float + // Gravity multiplier + ES_Gravity, // float + + // PLAYER SPECIFIC + ES_Team, // int + ES_PlayerClass, // int + ES_Health, // int + ES_Spectator, // bool + ES_WeaponModel, // int + ES_GaitSequence, // int + // If standing on conveyor, e.g. + ES_BaseVelocity, // float array[3] + // Use the crouched hull, or the regular player hull + ES_UseHull, // int + // Latched buttons last time state updated + ES_OldButtons, // int + // -1 = in air, else pmove entity number + ES_OnGround, // int + ES_iStepLeft, // int + // How fast we are falling + ES_flFallVelocity, // float + + ES_FOV, // float + ES_WeaponAnim, // int + + // Parametric movement overrides + ES_StartPos, // float array[3] + ES_EndPos, // float array[3] + ES_ImpactTime, // float + ES_StartTime, // float + + // For mods + ES_iUser1, // int + ES_iUser2, // int + ES_iUser3, // int + ES_iUser4, // int + ES_fUser1, // float + ES_fUser2, // float + ES_fUser3, // float + ES_fUser4, // float + ES_vUser1, // float array[3] + ES_vUser2, // float array[3] + ES_vUser3, // float array[3] + ES_vUser4 // float array[3] +}; + +enum UserCmd +{ + // Interpolation time on client + UC_LerpMsec, // short + // Duration in ms of command + UC_Msec, // byte + // Command view angles + UC_ViewAngles, // float array[3] + + // Intended velocities + // Forward velocity + UC_ForwardMove, // float + // Sideways velocity + UC_SideMove, // float + // Upward velocity + UC_UpMove, // float + // Light level at spot where we are standing + UC_LightLevel, // byte + // Attack buttons + UC_Buttons, // unsigned short + // Impulse command issued + UC_Impulse, // byte + // Current weapon id + UC_WeaponSelect, // byte + + // Experimental player impact stuff + UC_ImpactIndex, // int + UC_ImpactPosition // float array[3] +}; + +enum AlertType +{ + at_notice = 0, + at_console, // same as at_notice, but forces a ConPrintf, not a message box + at_aiconsole, // same as at_console, but only shown if developer level is 2! + at_warning, + at_error, + at_logged // Server print to console (only in multiplayer games) +}; diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/fakemeta_stocks.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/fakemeta_stocks.inc new file mode 100644 index 0000000..7a7a6bb --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/fakemeta_stocks.inc @@ -0,0 +1,275 @@ +/* FakeMeta stocks +* +* by the AMX Mod X Development Team +* +* This file is provided as is (no warranties). +*/ + +#if !defined _fakemeta_included + #include <fakemeta> +#endif + +#if defined _fakemeta_stocks_included + #endinput +#endif +#define _fakemeta_stocks_included + +// EngFuncs +stock EF_PrecacheModel(const string[]) + return engfunc(EngFunc_PrecacheModel, string); + +stock EF_PrecacheSound(const string[]) + return engfunc(EngFunc_PrecacheSound, string); +stock EF_SetModel(const ID, const STRING[]) + return engfunc(EngFunc_SetModel, ID, STRING); +stock EF_ModelIndex(const STRING[]) + return engfunc(EngFunc_ModelIndex, STRING); +stock EF_ModelFrames(modelIndex) + return engfunc(EngFunc_ModelFrames, modelIndex); + +stock EF_SetSize(const ENTITY, const Float:MIN[3], const Float:MAX[3]) + return engfunc(EngFunc_SetSize, ENTITY, MIN, MAX); +stock EF_ChangeLevel(const S1[], const S2[]) + return engfunc(EngFunc_ChangeLevel, S1, S2); +stock EF_VecToYaw(const Float:VECTOR[3], &Float:returnValue) + return engfunc(EngFunc_VecToYaw, VECTOR, returnValue); +stock EF_VecToAngles(const Float:VECTORIN[3], const Float:VECTOROUT[3]) + return engfunc(EngFunc_VecToAngles, VECTORIN, VECTOROUT); +stock EF_MoveToOrigin(const ENTITY, const Float:GOAL[3], const Float:DISTANCE, const MOVETYPE) + return engfunc(EngFunc_MoveToOrigin, ENTITY, GOAL, DISTANCE, MOVETYPE); + +stock EF_ChangeYaw(const ENTITY) + return engfunc(EngFunc_ChangeYaw, ENTITY); +stock EF_ChangePitch(const ENTITY) + return engfunc(EngFunc_ChangePitch, ENTITY); +stock EF_FindEntityByString(const STARTSEARCHAFTER, const FIELD[], const VALUE[]) + return engfunc(EngFunc_FindEntityByString, STARTSEARCHAFTER, FIELD, VALUE); +stock EF_GetEntityIllum(const ENTITY) + return engfunc(EngFunc_GetEntityIllum, ENTITY); +stock EF_FindEntityInSphere(const STARTSEARCHAFTER, const Float:ORIGIN[3], Float:radius) + return engfunc(EngFunc_FindEntityInSphere, STARTSEARCHAFTER, ORIGIN, radius); + +stock EF_FindClientInPVS(const CLIENT) + return engfunc(EngFunc_FindClientInPVS, CLIENT); +stock EF_EntitiesInPVS(const CLIENT) + return engfunc(EngFunc_EntitiesInPVS, CLIENT); +stock EF_MakeVectors(const Float:VECTOR[3]) + return engfunc(EngFunc_MakeVectors, VECTOR); +stock EF_AngleVectors(const Float:VECTOR[3], Float:forward_[3], Float:right[3], Float:up[3]) + return engfunc(EngFunc_AngleVectors, VECTOR, forward_, right, up); +stock EF_CreateEntity() + return engfunc(EngFunc_CreateEntity); + +stock EF_RemoveEntity(const ENTITY) + return engfunc(EngFunc_RemoveEntity, ENTITY); +stock EF_CreateNamedEntity(const CLASSNAME) + return engfunc(EngFunc_CreateNamedEntity, CLASSNAME); +stock EF_MakeStatic(const ENTITY) + return engfunc(EngFunc_MakeStatic, ENTITY); +stock EF_EntIsOnFloor(const ENTITY) + return engfunc(EngFunc_EntIsOnFloor, ENTITY); +stock EF_DropToFloor(const ENTITY) + return engfunc(EngFunc_DropToFloor, ENTITY); + +stock EF_WalkMove(const ENTITY, Float:yaw, Float:distance, iMode) + return engfunc(EngFunc_WalkMove, ENTITY, yaw, distance, iMode); +stock EF_SetOrigin(const ENTITY, const Float:ORIGIN[3]) + return engfunc(EngFunc_SetOrigin, ENTITY, ORIGIN); +stock EF_EmitSound(const ENTITY, channel, const SAMPLE[], Float:volume, Float:attenuation, fFlags, pitch) + return engfunc(EngFunc_EmitSound, ENTITY, channel, SAMPLE, volume, attenuation, fFlags, pitch); +stock EF_EmitAmbientSound(const ENTITY, Float:pos[3], const SAMPLE[], Float:volume, Float:attenuation, fFlags, pitch) + return engfunc(EngFunc_EmitAmbientSound, ENTITY, pos, SAMPLE, volume, attenuation, fFlags, pitch); +stock EF_TraceLine(const Float:V1[3], const Float:V2[3], fNoMonsters, const ENT_TO_SKIP) + return engfunc(EngFunc_TraceLine, V1, V2, fNoMonsters, ENT_TO_SKIP); + +stock EF_TraceToss(const ENTITY, const ENTITY_TO_IGNORE) + return engfunc(EngFunc_TraceToss, ENTITY, ENTITY_TO_IGNORE); +stock EF_TraceMonsterHull(const ENTITY, const Float:V1[3], const Float:V2[3], fNoMonsters, const ENTITY_TO_SKIP) + return engfunc(EngFunc_TraceMonsterHull, ENTITY, V1, V2, fNoMonsters, ENTITY_TO_SKIP); +stock EF_TraceHull(const Float:V1[3], const Float:V2[3], fNoMonsters, hullNumber, const ENTITY_TO_SKIP) + return engfunc(EngFunc_TraceHull, V1, V2, fNoMonsters, hullNumber, ENTITY_TO_SKIP); +stock EF_TraceModel(const Float:V1[3], const Float:V2[3], hullNumber, const ENTITY) + return engfunc(EngFunc_TraceModel, V1, V2, hullNumber, ENTITY); +stock EF_TraceTexture(const TEXTURE_ENTITY, const Float:V1[3], const Float:V2[3]) + return engfunc(EngFunc_TraceTexture, TEXTURE_ENTITY, V1, V2); + +stock EF_TraceSphere(const Float:V1[3], const Float:V2[3], fNoMonsters, Float:radius, const ENTITY_TO_SKIP) + return engfunc(EngFunc_TraceSphere, V1, V2, fNoMonsters, radius, ENTITY_TO_SKIP); +stock EF_GetAimVector(const ENTITY, Float:speed, Float:returnVector[3]) + return engfunc(EngFunc_GetAimVector, ENTITY, speed, returnVector); +stock EF_ParticleEffect(const Float:ORIGIN[3], const Float:DIRECTION[3], Float:color, Float:count) + return engfunc(EngFunc_ParticleEffect, ORIGIN, DIRECTION, color, count); +stock EF_LightStyle(style, val[]) + return engfunc(EngFunc_LightStyle, style, val); +stock EF_DecalIndex(const NAME[]) + return engfunc(EngFunc_DecalIndex, NAME); + +stock EF_PointContents(const Float:VECTOR[3]) + return engfunc(EngFunc_PointContents, VECTOR); +stock EF_FreeEntPrivateData(const ENTITY) + return engfunc(EngFunc_FreeEntPrivateData, ENTITY); +stock EF_SzFromIndex(iString) + return engfunc(EngFunc_SzFromIndex, iString); +stock EF_AllocString(const STRING[]) + return engfunc(EngFunc_AllocString, STRING); +stock EF_RegUserMsg(const NAME[], iSize) + return engfunc(EngFunc_RegUserMsg, NAME, iSize); + +stock EF_AnimationAutomove(const ENTITY, Float:flTime) + return engfunc(EngFunc_AnimationAutomove, ENTITY, flTime); +stock EF_GetBonePosition(const ENTITY, iBone, Float:origin[3], Float:angles[3]) + return engfunc(EngFunc_GetBonePosition, ENTITY, iBone, origin, angles); +stock EF_GetAttachment(const ENTITY, iAttachment, Float:origin[3], Float:angles[3]) + return engfunc(EngFunc_GetAttachment, ENTITY, iAttachment, origin, angles); +stock EF_SetView(const CLIENT, const VIEW_ENTITY) + return engfunc(EngFunc_SetView, CLIENT, VIEW_ENTITY); +stock EF_Time(&Float:returnValue) + return engfunc(EngFunc_Time, returnValue); + +stock EF_CrosshairAngle(const CLIENT, Float:pitch, Float:yaw) + return engfunc(EngFunc_CrosshairAngle, CLIENT, pitch, yaw); +stock EF_FadeClientVolume(const ENTITY, fadePercent, fadeOutSeconds, holdTime, fadeInSeconds) + return engfunc(EngFunc_FadeClientVolume, ENTITY, fadePercent, fadeOutSeconds, holdTime, fadeInSeconds); +stock EF_SetClientMaxspeed(const ENTITY, Float:newMaxspeed) + return engfunc(EngFunc_SetClientMaxspeed, ENTITY, newMaxspeed); +stock EF_CreateFakeClient(const NETNAME[]) + return engfunc(EngFunc_CreateFakeClient, NETNAME); +stock EF_RunPlayerMove(const FAKECLIENT, const Float:VIEWANGLES[3], Float:forwardmove, Float:sidemove, Float:upmove, buttons, impulse, msec) + return engfunc(EngFunc_RunPlayerMove, FAKECLIENT, VIEWANGLES, forwardmove, sidemove, upmove, buttons, impulse, msec); + +stock EF_NumberOfEntities() + return engfunc(EngFunc_NumberOfEntities); +stock EF_StaticDecal(const Float:ORIGIN[3], decalIndex, entityIndex, modelIndex) + return engfunc(EngFunc_StaticDecal, ORIGIN, decalIndex, entityIndex, modelIndex); +stock EF_PrecacheGeneric(const STRING[]) + return engfunc(EngFunc_PrecacheGeneric, STRING); +stock EF_BuildSoundMSG(const ENTITY, channel, const SAMPLE[], Float:volume, Float:attenuation, fFlags, pitch, msg_dest, msg_type, const Float:ORIGIN[3], const ED) + return engfunc(EngFunc_BuildSoundMsg, ENTITY, channel, SAMPLE, volume, attenuation, fFlags, pitch, msg_dest, msg_type, ORIGIN, ED); +stock EF_GetPhysicsKeyValue(const CLIENT, const KEY[]) + return engfunc(EngFunc_GetPhysicsKeyValue, CLIENT, KEY); + +stock EF_SetPhysicsKeyValue(const CLIENT, const KEY[], const VALUE[]) + return engfunc(EngFunc_SetPhysicsKeyValue, CLIENT, KEY, VALUE); +stock EF_GetPhysicsInfoString(const CLIENT, returnString[], maxLength) + return engfunc(EngFunc_GetPhysicsInfoString, CLIENT, returnString, maxLength); +stock EF_PrecacheEvent(type, const STRING[]) + return engfunc(EngFunc_PrecacheEvent, type, STRING); +stock EF_PlaybackEvent(flags, const INVOKER, eventindex, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iparam1, iparam2, bparam1, bparam2) + return engfunc(EngFunc_PlaybackEvent, flags, INVOKER, eventindex, delay, origin, angles, fparam1, fparam2, iparam1, iparam2, bparam1, bparam2); +stock EF_CheckVisibility(const ENTITY, set) + return engfunc(EngFunc_CheckVisibility, ENTITY, set); + +stock EF_GetCurrentPlayer() + return engfunc(EngFunc_GetCurrentPlayer); +stock EF_CanSkipPlayer(const PLAYER) + return engfunc(EngFunc_CanSkipPlayer, PLAYER); +stock EF_SetGroupMask(mask, op) + return engfunc(EngFunc_SetGroupMask, mask, op); +stock EF_GetClientListening(receiver, sender) + return engfunc(EngFunc_GetClientListening, receiver, sender); +stock EF_SetClientListening(receiver, sender, bool:listen) + return engfunc(EngFunc_SetClientListening, receiver, sender, listen); + +stock EF_MessageBegin(msg_dest, msg_type, const Float:ORIGIN[3], const ED) + return engfunc(EngFunc_MessageBegin, msg_dest, msg_type, ORIGIN, ED); +stock EF_WriteCoord(Float:value) + return engfunc(EngFunc_WriteCoord, value); +stock EF_WriteAngle(Float:value) + return engfunc(EngFunc_WriteAngle, value); +stock EF_InfoKeyValue(const INFOBUFFER, const KEY[], returnValue[], maxLength) + return engfunc(EngFunc_InfoKeyValue, INFOBUFFER, KEY, returnValue, maxLength); +stock EF_SetKeyValue(const INFOBUFFER, const KEY[], const VALUE[]) + return engfunc(EngFunc_SetKeyValue, INFOBUFFER, KEY, VALUE); + +stock EF_SetClientKeyValue(const ID, const INFOBUFFER, const KEY[], const VALUE[]) + return engfunc(EngFunc_SetClientKeyValue, ID, INFOBUFFER, KEY, VALUE); + +stock EF_CreateInstBaseline(CLASSNAME, baseline) + return engfunc(EngFunc_CreateInstBaseline, CLASSNAME, baseline); + +// Returns pointer to info buffer that can be used with the INFOBUFFER param +// of EF_InfoKeyValue, EF_SetKeyValue, and EF_SetClientKeyValue +stock EF_GetInfoKeyBuffer(const ENTITY) + return engfunc(EngFunc_GetInfoKeyBuffer, ENTITY); +stock EF_ClientPrintf(const ENTITY, const printType, const MESSAGE[]) + return engfunc(EngFunc_ClientPrintf, ENTITY, printType, MESSAGE); +stock EF_ServerPrint(const MESSAGE[]) + return engfunc(EngFunc_ServerPrint, MESSAGE); + +// DLLFuncs +stock DF_GameInit() + return dllfunc(DLLFunc_GameInit); +stock DF_Spawn(const ENTITY) + return dllfunc(DLLFunc_Spawn, ENTITY); +stock DF_Think(const ENTITY) + return dllfunc(DLLFunc_Think, ENTITY); +stock DF_Use(const ENT_Used, const ENT_User) + return dllfunc(DLLFunc_Use, ENT_Used, ENT_User); +stock DF_Touch(const ENT_Touched, const ENT_Toucher) + return dllfunc(DLLFunc_Touch, ENT_Touched, ENT_Toucher); + +stock DF_Blocked(const ENT_Blocked, const ENT_Other) + return dllfunc(DLLFunc_Blocked, ENT_Blocked, ENT_Other); +stock DF_SetAbsBox(const ENTITY) + return dllfunc(DLLFunc_SetAbsBox, ENTITY); +stock DF_ClientConnect(const ENTITY, const NAME[], const ADDRESS[], RejectReason[128]) + return dllfunc(DLLFunc_ClientConnect, ENTITY, NAME, ADDRESS, RejectReason); +stock DF_ClientDisconnect(const ENTITY) + return dllfunc(DLLFunc_ClientDisconnect, ENTITY); +stock DF_ClientKill(const ENTITY) + return dllfunc(DLLFunc_ClientKill, ENTITY); + +stock DF_ClientPutInServer(const ENTITY) + return dllfunc(DLLFunc_ClientPutInServer, ENTITY); +stock DF_ClientCommand(const ENTITY) + return dllfunc(DLLFunc_ClientCommand, ENTITY); +stock DF_ServerDeactivate() + return dllfunc(DLLFunc_ServerDeactivate); +stock DF_PlayerPreThink(const ENTITY) + return dllfunc(DLLFunc_PlayerPreThink, ENTITY); +stock DF_PlayerPostThink(const ENTITY) + return dllfunc(DLLFunc_PlayerPostThink, ENTITY); + +stock DF_StartFrame() + return dllfunc(DLLFunc_StartFrame); +stock DF_ParmsNewLevel() + return dllfunc(DLLFunc_ParmsNewLevel); +stock DF_ParmsChangeLevel() + return dllfunc(DLLFunc_ParmsChangeLevel); +stock DF_GetGameDescription() + return dllfunc(DLLFunc_GetGameDescription); +stock DF_SpectatorConnect(const ENTITY) + return dllfunc(DLLFunc_SpectatorConnect, ENTITY); + +stock DF_SpectatorDisconnect(const ENTITY) + return dllfunc(DLLFunc_SpectatorDisconnect, ENTITY); +stock DF_SpectatorThink(const ENTITY) + return dllfunc(DLLFunc_SpectatorThink, ENTITY); +stock DF_Sys_Error(const ERROR_STRING[]) + return dllfunc(DLLFunc_Sys_Error, ERROR_STRING); +stock DF_PM_FindTextureType(name[]) + return dllfunc(DLLFunc_PM_FindTextureType, name); +stock DF_RegisterEncoders() + return dllfunc(DLLFunc_RegisterEncoders); + +stock DF_GetHullBounds(hullnumber, Float:mins[3], Float:maxs[3]) + return dllfunc(DLLFunc_GetHullBounds, hullnumber, mins, maxs); +stock DF_CreateInstBaselines() + return dllfunc(DLLFunc_CreateInstBaselines); +stock DF_pfnAllowLagCompensation() + return dllfunc(DLLFunc_pfnAllowLagCompensation); +stock DF_MetaFunc_CallGameEntity(const STRING[], const ENTITY) + return dllfunc(MetaFunc_CallGameEntity, STRING, ENTITY); +stock DF_ClientUserInfoChanged(const IDPLAYER) + return dllfunc(DLLFunc_ClientUserInfoChanged, IDPLAYER); + +stock DF_UpdateClientData(const ENTITY, sendweapons, const cd/* = 0*/) + return dllfunc(DLLFunc_UpdateClientData, ENTITY, sendweapons, cd); +stock DF_AddToFullPack(const STATE/* = 0*/, e, ENT, HOST, hostflags, player, set) + return dllfunc(DLLFunc_AddToFullPack, STATE, e, ENT, HOST, hostflags, player, set); +stock DF_CmdStart(const PLAYER, const CMD/* = 0*/, randomSeed) + return dllfunc(DLLFunc_CmdStart, PLAYER, CMD, randomSeed); +stock DF_CmdEnd(const PLAYER) + return dllfunc(DLLFunc_CmdEnd, PLAYER); +stock DF_CreateBaseline(PLAYER, eIndex, baseline, playerModelIndex, Float:playerMins[3], Float:playerMaxs[3]) + return dllfunc(DLLFunc_CreateBaseline, PLAYER, eIndex, baseline, playerModelIndex, playerMins, playerMaxs); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/fakemeta_util.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/fakemeta_util.inc new file mode 100644 index 0000000..bc4300f --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/fakemeta_util.inc @@ -0,0 +1,882 @@ +/** + * This file provides various utility functions that use the Fakemeta module. + * This file is created and maintained by VEN. + * For support and issues, see: + * http://forums.alliedmods.net/showthread.php?t=28284 + */ + + +/* Fakemeta Utilities +* +* by VEN +* +* This file is provided as is (no warranties). +*/ + +#if !defined _fakemeta_included + #include <fakemeta> +#endif + +#if defined _fakemeta_util_included + #endinput +#endif +#define _fakemeta_util_included + +#include <xs> + + +/* Engine functions */ + +#define fm_precache_generic(%1) engfunc(EngFunc_PrecacheGeneric, %1) +/* stock fm_precache_generic(const file[]) + return engfunc(EngFunc_PrecacheGeneric, file) */ + +#define fm_precache_event(%1,%2) engfunc(EngFunc_PrecacheEvent, %1, %2) +/* stock fm_precache_event(type, const name[]) + return engfunc(EngFunc_PrecacheEvent, type, name) */ + +// ported by v3x +#define fm_drop_to_floor(%1) engfunc(EngFunc_DropToFloor, %1) +/* stock fm_drop_to_floor(entity) + return engfunc(EngFunc_DropToFloor, entity) */ + +#define fm_force_use(%1,%2) dllfunc(DLLFunc_Use, %2, %1) +/* stock fm_force_use(user, used) + return dllfunc(DLLFunc_Use, used, user) */ + +#define fm_entity_set_size(%1,%2,%3) engfunc(EngFunc_SetSize, %1, %2, %3) +/* stock fm_entity_set_size(index, const Float:mins[3], const Float:maxs[3]) + return engfunc(EngFunc_SetSize, index, mins, maxs) */ + +#define fm_get_decal_index(%1) engfunc(EngFunc_DecalIndex, %1) +/* stock fm_get_decal_index(const decalname[]) + return engfunc(EngFunc_DecalIndex, decalname) */ + +stock Float:fm_entity_range(ent1, ent2) { + new Float:origin1[3], Float:origin2[3]; + pev(ent1, pev_origin, origin1); + pev(ent2, pev_origin, origin2); + + return get_distance_f(origin1, origin2); +} + +// based on KoST's port, upgraded version fits into the macros +#define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1)) +/* stock fm_create_entity(const classname[]) + return engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, classname)) */ + +#define fm_find_ent_by_class(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "classname", %2) +/* stock fm_find_ent_by_class(index, const classname[]) + return engfunc(EngFunc_FindEntityByString, index, "classname", classname) */ + +stock fm_find_ent_by_owner(index, const classname[], owner, jghgtype = 0) { + new strtype[11] = "classname", ent = index; + switch (jghgtype) { + case 1: strtype = "target"; + case 2: strtype = "targetname"; + } + + while ((ent = engfunc(EngFunc_FindEntityByString, ent, strtype, classname)) && pev(ent, pev_owner) != owner) {} + + return ent; +} + +#define fm_find_ent_by_target(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "target", %2) +/* stock fm_find_ent_by_target(index, const target[]) + return engfunc(EngFunc_FindEntityByString, index, "target", target) */ + +#define fm_find_ent_by_tname(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "targetname", %2) +/* stock fm_find_ent_by_tname(index, const targetname[]) + return engfunc(EngFunc_FindEntityByString, index, "targetname", targetname) */ + +stock fm_find_ent_by_model(index, const classname[], const model[]) { + new ent = index, mdl[72]; + while ((ent = fm_find_ent_by_class(ent, classname))) { + pev(ent, pev_model, mdl, sizeof mdl - 1); + if (equal(mdl, model)) + return ent; + } + + return 0; +} + +#define fm_find_ent_in_sphere(%1,%2,%3) engfunc(EngFunc_FindEntityInSphere, %1, %2, %3) +/* stock fm_find_ent_in_sphere(index, const Float:origin[3], Float:radius) + return engfunc(EngFunc_FindEntityInSphere, index, origin, radius) */ + +#define fm_call_think(%1) dllfunc(DLLFunc_Think, %1) +/* stock fm_call_think(entity) + return dllfunc(DLLFunc_Think, entity) */ + +#define fm_is_valid_ent(%1) pev_valid(%1) +/* stock fm_is_valid_ent(index) + return pev_valid(index) */ + +stock fm_entity_set_origin(index, const Float:origin[3]) { + new Float:mins[3], Float:maxs[3]; + pev(index, pev_mins, mins); + pev(index, pev_maxs, maxs); + engfunc(EngFunc_SetSize, index, mins, maxs); + + return engfunc(EngFunc_SetOrigin, index, origin); +} + +#define fm_entity_set_model(%1,%2) engfunc(EngFunc_SetModel, %1, %2) +/* stock fm_entity_set_model(index, const model[]) + return engfunc(EngFunc_SetModel, index, model) */ + +// ported by v3x +#define fm_remove_entity(%1) engfunc(EngFunc_RemoveEntity, %1) +/* stock fm_remove_entity(index) + return engfunc(EngFunc_RemoveEntity, index) */ + +#define fm_entity_count() engfunc(EngFunc_NumberOfEntities) +/* stock fm_entity_count() + return engfunc(EngFunc_NumberOfEntities) */ + +#define fm_fake_touch(%1,%2) dllfunc(DLLFunc_Touch, %1, %2) +/* stock fm_fake_touch(toucher, touched) + return dllfunc(DLLFunc_Touch, toucher, touched) */ + +#define fm_DispatchSpawn(%1) dllfunc(DLLFunc_Spawn, %1) +/* stock fm_DispatchSpawn(entity) + return dllfunc(DLLFunc_Spawn, entity) */ + +// ported by v3x +#define fm_point_contents(%1) engfunc(EngFunc_PointContents, %1) +/* stock fm_point_contents(const Float:point[3]) + return engfunc(EngFunc_PointContents, point) */ + +stock fm_trace_line(ignoreent, const Float:start[3], const Float:end[3], Float:ret[3]) { + engfunc(EngFunc_TraceLine, start, end, ignoreent == -1 ? 1 : 0, ignoreent, 0); + + new ent = get_tr2(0, TR_pHit); + get_tr2(0, TR_vecEndPos, ret); + + return pev_valid(ent) ? ent : 0; +} + +stock fm_trace_hull(const Float:origin[3], hull, ignoredent = 0, ignoremonsters = 0) { + new result = 0; + engfunc(EngFunc_TraceHull, origin, origin, ignoremonsters, hull, ignoredent > 0 ? ignoredent : 0, 0); + + if (get_tr2(0, TR_StartSolid)) + result += 1; + if (get_tr2(0, TR_AllSolid)) + result += 2; + if (!get_tr2(0, TR_InOpen)) + result += 4; + + return result; +} + +stock fm_trace_normal(ignoreent, const Float:start[3], const Float:end[3], Float:ret[3]) { + engfunc(EngFunc_TraceLine, start, end, 0, ignoreent, 0); + get_tr2(0, TR_vecPlaneNormal, ret); + + new Float:fraction; + get_tr2(0, TR_flFraction, fraction); + if (fraction >= 1.0) + return 0; + + return 1; +} + +// note that for CS planted C4 has a "grenade" classname as well +stock fm_get_grenade_id(id, model[], len, grenadeid = 0) { + new ent = fm_find_ent_by_owner(grenadeid, "grenade", id); + if (ent && len > 0) + pev(ent, pev_model, model, len); + + return ent; +} + +#define fm_halflife_time() get_gametime() +/* stock Float:fm_halflife_time() + return get_gametime() */ + +#define fm_attach_view(%1,%2) engfunc(EngFunc_SetView, %1, %2) +/* stock fm_attach_view(index, entity) + return engfunc(EngFunc_SetView, index, entity) */ + +stock fm_playback_event(flags, invoker, eventindex, Float:delay, const Float:origin[3], const Float:angles[3], Float:fparam1, Float:fparam2, iparam1, iparam2, bparam1, bparam2) { + return engfunc(EngFunc_PlaybackEvent, flags, invoker, eventindex, delay, origin, angles, fparam1, fparam2, iparam1, iparam2, bparam1, bparam2); +} + +#define fm_eng_get_string(%1,%2,%3) engfunc(EngFunc_SzFromIndex, %1, %2, %3) +/* stock fm_eng_get_string(istring, string[], len) + return engfunc(EngFunc_SzFromIndex, istring, string, len) */ + + +/* HLSDK functions */ + +// the dot product is performed in 2d, making the view cone infinitely tall +stock bool:fm_is_in_viewcone(index, const Float:point[3]) { + new Float:angles[3]; + pev(index, pev_angles, angles); + engfunc(EngFunc_MakeVectors, angles); + global_get(glb_v_forward, angles); + angles[2] = 0.0; + + new Float:origin[3], Float:diff[3], Float:norm[3]; + pev(index, pev_origin, origin); + xs_vec_sub(point, origin, diff); + diff[2] = 0.0; + xs_vec_normalize(diff, norm); + + new Float:dot, Float:fov; + dot = xs_vec_dot(norm, angles); + pev(index, pev_fov, fov); + if (dot >= floatcos(fov * M_PI / 360)) + return true; + + return false; +} + +stock bool:fm_is_visible(index, const Float:point[3], ignoremonsters = 0) { + new Float:start[3], Float:view_ofs[3]; + pev(index, pev_origin, start); + pev(index, pev_view_ofs, view_ofs); + xs_vec_add(start, view_ofs, start); + + engfunc(EngFunc_TraceLine, start, point, ignoremonsters, index, 0); + + new Float:fraction; + get_tr2(0, TR_flFraction, fraction); + if (fraction == 1.0) + return true; + + return false; +} + + +/* Engine_stocks functions */ + +stock fm_fakedamage(victim, const classname[], Float:takedmgdamage, damagetype) { + new class[] = "trigger_hurt"; + new entity = fm_create_entity(class); + if (!entity) + return 0; + + new value[16]; + float_to_str(takedmgdamage * 2, value, sizeof value - 1); + fm_set_kvd(entity, "dmg", value, class); + + num_to_str(damagetype, value, sizeof value - 1); + fm_set_kvd(entity, "damagetype", value, class); + + fm_set_kvd(entity, "origin", "8192 8192 8192", class); + fm_DispatchSpawn(entity); + + set_pev(entity, pev_classname, classname); + fm_fake_touch(entity, victim); + fm_remove_entity(entity); + + return 1; +} + +#define fm_find_ent(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "classname", %2) +/* stock fm_find_ent(index, const classname[]) + return engfunc(EngFunc_FindEntityByString, index, "classname", classname) */ + +#define fm_get_user_button(%1) pev(%1, pev_button) +/* stock fm_get_user_button(index) + return pev(index, pev_button) */ + +#define fm_get_user_oldbutton(%1) pev(%1, pev_oldbuttons) +/* stock fm_get_user_oldbutton(index) + return pev(index, pev_oldbuttons) */ + +#define fm_get_entity_flags(%1) pev(%1, pev_flags) +/* stock fm_get_entity_flags(index) + return pev(index, pev_flags) */ + +#define fm_get_entity_distance(%1,%2) floatround(fm_entity_range(%1, %2)) +/* stock fm_get_entity_distance(ent1, ent2) + return floatround(fm_entity_range(ent1, ent2)) */ + +#define fm_get_grenade(%1) fm_get_grenade_id(%1, "", 0) +/* stock fm_get_grenade(id) + return fm_get_grenade_id(id, "", 0) */ + +// optimization idea by Orangutanz +stock fm_get_brush_entity_origin(index, Float:origin[3]) { + new Float:mins[3], Float:maxs[3]; + + pev(index, pev_origin, origin); + pev(index, pev_mins, mins); + pev(index, pev_maxs, maxs); + + origin[0] += (mins[0] + maxs[0]) * 0.5; + origin[1] += (mins[1] + maxs[1]) * 0.5; + origin[2] += (mins[2] + maxs[2]) * 0.5; + + return 1; +} + +// based on v3x's port, upgraded version returns number of removed entities +stock fm_remove_entity_name(const classname[]) { + new ent = -1, num = 0; + while ((ent = fm_find_ent_by_class(ent, classname))) + num += fm_remove_entity(ent); + + return num; +} + +stock fm_ViewContents(id) { + new origin[3], Float:Orig[3]; + get_user_origin(id, origin, 3); + IVecFVec(origin, Orig); + + return fm_point_contents(Orig); +} + +stock fm_get_speed(entity) { + new Float:Vel[3]; + pev(entity, pev_velocity, Vel); + + return floatround(vector_length(Vel)); +} + +stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) { + new Float:RenderColor[3]; + RenderColor[0] = float(r); + RenderColor[1] = float(g); + RenderColor[2] = float(b); + + set_pev(entity, pev_renderfx, fx); + set_pev(entity, pev_rendercolor, RenderColor); + set_pev(entity, pev_rendermode, render); + set_pev(entity, pev_renderamt, float(amount)); + + return 1; +} + +stock fm_set_entity_flags(index, flag, onoff) { + new flags = pev(index, pev_flags); + if ((flags & flag) > 0) + return onoff == 1 ? 2 : 1 + 0 * set_pev(index, pev_flags, flags - flag); + else + return onoff == 0 ? 2 : 1 + 0 * set_pev(index, pev_flags, flags + flag); + + return 0; +} + +stock fm_set_entity_visibility(index, visible = 1) { + set_pev(index, pev_effects, visible == 1 ? pev(index, pev_effects) & ~EF_NODRAW : pev(index, pev_effects) | EF_NODRAW); + + return 1; +} + +#define fm_get_entity_visibility(%1) (!(pev(%1, pev_effects) & EF_NODRAW)) +/* stock fm_get_entity_visibility(index) + return !(pev(index, pev_effects) & EF_NODRAW) */ + +stock fm_set_user_velocity(entity, const Float:vector[3]) { + set_pev(entity, pev_velocity, vector); + + return 1; +} + +#define fm_get_user_velocity(%1,%2) pev(%1, pev_velocity, %2) +/* stock fm_get_user_velocity(entity, Float:vector[3]) + return pev(entity, pev_velocity, vector) */ + + +/* Fun functions */ + +#define fm_get_client_listen(%1,%2) engfunc(EngFunc_GetClientListening, %1, %2) +/* stock fm_get_client_listen(receiver, sender) + return engfunc(EngFunc_GetClientListening, receiver, sender) */ + +#define fm_set_client_listen(%1,%2,%3) engfunc(EngFunc_SetClientListening, %1, %2, %3) +/* stock fm_set_client_listen(receiver, sender, listen) + return engfunc(EngFunc_SetClientListening, receiver, sender, listen) */ + +stock fm_get_user_godmode(index) { + new Float:val; + pev(index, pev_takedamage, val); + + return (val == DAMAGE_NO); +} + +stock fm_set_user_godmode(index, godmode = 0) { + set_pev(index, pev_takedamage, godmode == 1 ? DAMAGE_NO : DAMAGE_AIM); + + return 1; +} + +stock fm_set_user_armor(index, armor) { + set_pev(index, pev_armorvalue, float(armor)); + + return 1; +} + +stock fm_set_user_health(index, health) { + health > 0 ? set_pev(index, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, index); + + return 1; +} + +stock fm_set_user_origin(index, /* const */ origin[3]) { + new Float:orig[3]; + IVecFVec(origin, orig); + + return fm_entity_set_origin(index, orig); +} + +stock fm_set_user_rendering(index, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) { + return fm_set_rendering(index, fx, r, g, b, render, amount); +} + +stock fm_give_item(index, const item[]) { + if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10)) + return 0; + + new ent = fm_create_entity(item); + if (!pev_valid(ent)) + return 0; + + new Float:origin[3]; + pev(index, pev_origin, origin); + set_pev(ent, pev_origin, origin); + set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN); + dllfunc(DLLFunc_Spawn, ent); + + new save = pev(ent, pev_solid); + dllfunc(DLLFunc_Touch, ent, index); + if (pev(ent, pev_solid) != save) + return ent; + + engfunc(EngFunc_RemoveEntity, ent); + + return -1; +} + +stock fm_set_user_maxspeed(index, Float:speed = -1.0) { + engfunc(EngFunc_SetClientMaxspeed, index, speed); + set_pev(index, pev_maxspeed, speed); + + return 1; +} + +stock Float:fm_get_user_maxspeed(index) { + new Float:speed; + pev(index, pev_maxspeed, speed); + + return speed; +} + +stock fm_set_user_gravity(index, Float:gravity = 1.0) { + set_pev(index, pev_gravity, gravity); + + return 1; +} + +stock Float:fm_get_user_gravity(index) { + new Float:gravity; + pev(index, pev_gravity, gravity); + + return gravity; +} + +/* interferes with FM_Spawn enum, just use fm_DispatchSpawn +stock fm_spawn(entity) { + return dllfunc(DLLFunc_Spawn, entity) +} +*/ + +stock fm_set_user_noclip(index, noclip = 0) { + set_pev(index, pev_movetype, noclip == 1 ? MOVETYPE_NOCLIP : MOVETYPE_WALK); + + return 1; +} + +#define fm_get_user_noclip(%1) (pev(%1, pev_movetype) == MOVETYPE_NOCLIP) +/* stock fm_get_user_noclip(index) + return (pev(index, pev_movetype) == MOVETYPE_NOCLIP) */ + +// note: get_user_weapon will still return former weapon index +stock fm_strip_user_weapons(index) { + new ent = fm_create_entity("player_weaponstrip"); + if (!pev_valid(ent)) + return 0; + + dllfunc(DLLFunc_Spawn, ent); + dllfunc(DLLFunc_Use, ent, index); + engfunc(EngFunc_RemoveEntity, ent); + + return 1; +} + +stock fm_set_user_frags(index, frags) { + set_pev(index, pev_frags, float(frags)); + + return 1; +} + + +/* Cstrike functions */ + +stock fm_cs_user_spawn(index) { + set_pev(index, pev_deadflag, DEAD_RESPAWNABLE); + dllfunc(DLLFunc_Spawn, index); + set_pev(index, pev_iuser1, 0); + + return 1; +} + + +/* Custom functions */ + +// based on Basic-Master's set_keyvalue, upgraded version accepts an optional classname (a bit more efficient if it is passed) +stock fm_set_kvd(entity, const key[], const value[], const classname[] = "") { + if (classname[0]) + set_kvd(0, KV_ClassName, classname); + else { + new class[32]; + pev(entity, pev_classname, class, sizeof class - 1); + set_kvd(0, KV_ClassName, class); + } + + set_kvd(0, KV_KeyName, key); + set_kvd(0, KV_Value, value); + set_kvd(0, KV_fHandled, 0); + + return dllfunc(DLLFunc_KeyValue, entity, 0); +} + +stock fm_find_ent_by_integer(index, pev_field, value) { + static maxents; + if (!maxents) + maxents = global_get(glb_maxEntities); + + for (new i = index + 1; i < maxents; ++i) { + if (pev_valid(i) && pev(i, pev_field) == value) + return i; + } + + return 0; +} + +stock fm_find_ent_by_flags(index, pev_field, flags) { + static maxents; + if (!maxents) + maxents = global_get(glb_maxEntities); + + for (new i = index + 1; i < maxents; ++i) { + if (pev_valid(i) && (pev(i, pev_field) & flags) == flags) + return i; + } + + return 0; +} + +stock Float:fm_distance_to_box(const Float:point[3], const Float:mins[3], const Float:maxs[3]) { + new Float:dist[3]; + for (new i = 0; i < 3; ++i) { + if (point[i] > maxs[i]) + dist[i] = point[i] - maxs[i]; + else if (mins[i] > point[i]) + dist[i] = mins[i] - point[i]; + } + + return vector_length(dist); +} + +stock Float:fm_boxes_distance(const Float:mins1[3], const Float:maxs1[3], const Float:mins2[3], const Float:maxs2[3]) { + new Float:dist[3]; + for (new i = 0; i < 3; ++i) { + if (mins1[i] > maxs2[i]) + dist[i] = mins1[i] - maxs2[i]; + else if (mins2[i] > maxs1[i]) + dist[i] = mins2[i] - maxs1[i]; + } + + return vector_length(dist); +} + +stock Float:fm_distance_to_boxent(entity, boxent) { + new Float:point[3]; + pev(entity, pev_origin, point); + + new Float:mins[3], Float:maxs[3]; + pev(boxent, pev_absmin, mins); + pev(boxent, pev_absmax, maxs); + + return fm_distance_to_box(point, mins, maxs); +} + +stock Float:fm_boxents_distance(boxent1, boxent2) { + new Float:mins1[3], Float:maxs1[3]; + pev(boxent1, pev_absmin, mins1); + pev(boxent1, pev_absmax, maxs1); + + new Float:mins2[3], Float:maxs2[3]; + pev(boxent2, pev_absmin, mins2); + pev(boxent2, pev_absmax, maxs2); + + return fm_boxes_distance(mins1, maxs1, mins2, maxs2); +} + +// projects a center of a player's feet base (originally by P34nut, improved) +stock Float:fm_distance_to_floor(index, ignoremonsters = 1) { + new Float:start[3], Float:dest[3], Float:end[3]; + pev(index, pev_origin, start); + dest[0] = start[0]; + dest[1] = start[1]; + dest[2] = -8191.0; + + engfunc(EngFunc_TraceLine, start, dest, ignoremonsters, index, 0); + get_tr2(0, TR_vecEndPos, end); + + pev(index, pev_absmin, start); + new Float:ret = start[2] - end[2]; + + return ret > 0 ? ret : 0.0; +} + +// potential to crash (?) if used on weaponbox+weapon_* entity pair (use fm_remove_weaponbox instead) +stock fm_kill_entity(index) { + set_pev(index, pev_flags, pev(index, pev_flags) | FL_KILLME); + + return 1; +} + +// if weapon index isn't passed then assuming that it's the current weapon +stock fm_get_user_weapon_entity(id, wid = 0) { + new weap = wid, clip, ammo; + if (!weap && !(weap = get_user_weapon(id, clip, ammo))) + return 0; + + new class[32]; + get_weaponname(weap, class, sizeof class - 1); + + return fm_find_ent_by_owner(-1, class, id); +} + +// only weapon index or its name can be passed, if neither is passed then the current gun will be stripped +stock bool:fm_strip_user_gun(index, wid = 0, const wname[] = "") { + new ent_class[32]; + if (!wid && wname[0]) + copy(ent_class, sizeof ent_class - 1, wname); + else { + new weapon = wid, clip, ammo; + if (!weapon && !(weapon = get_user_weapon(index, clip, ammo))) + return false; + + get_weaponname(weapon, ent_class, sizeof ent_class - 1); + } + + new ent_weap = fm_find_ent_by_owner(-1, ent_class, index); + if (!ent_weap) + return false; + + engclient_cmd(index, "drop", ent_class); + + new ent_box = pev(ent_weap, pev_owner); + if (!ent_box || ent_box == index) + return false; + + dllfunc(DLLFunc_Think, ent_box); + + return true; +} + +// only weapon index or its name can be passed, if neither is passed then the current gun will be transferred +stock bool:fm_transfer_user_gun(index1, index2, wid = 0, const wname[] = "") { + new ent_class[32]; + if (!wid && wname[0]) + copy(ent_class, sizeof ent_class - 1, wname); + else { + new weapon = wid, clip, ammo; + if (!weapon && !(weapon = get_user_weapon(index1, clip, ammo))) + return false; + + get_weaponname(weapon, ent_class, sizeof ent_class - 1); + } + + new ent_weap = fm_find_ent_by_owner(-1, ent_class, index1); + if (!ent_weap) + return false; + + engclient_cmd(index1, "drop", ent_class); + + new ent_box = pev(ent_weap, pev_owner); + if (!ent_box || ent_box == index1) + return false; + + set_pev(ent_box, pev_flags, pev(ent_box, pev_flags) | FL_ONGROUND); + dllfunc(DLLFunc_Touch, ent_box, index2); + if (pev(ent_weap, pev_owner) != index2) + return false; + + return true; +} + +stock bool:fm_is_ent_visible(index, entity, ignoremonsters = 0) { + new Float:start[3], Float:dest[3]; + pev(index, pev_origin, start); + pev(index, pev_view_ofs, dest); + xs_vec_add(start, dest, start); + + pev(entity, pev_origin, dest); + engfunc(EngFunc_TraceLine, start, dest, ignoremonsters, index, 0); + + new Float:fraction; + get_tr2(0, TR_flFraction, fraction); + if (fraction == 1.0 || get_tr2(0, TR_pHit) == entity) + return true; + + return false; +} + +// ported from AMXX's core get_user_origin(..., 3) (suggested by Greenberet) +stock fm_get_aim_origin(index, Float:origin[3]) { + new Float:start[3], Float:view_ofs[3]; + pev(index, pev_origin, start); + pev(index, pev_view_ofs, view_ofs); + xs_vec_add(start, view_ofs, start); + + new Float:dest[3]; + pev(index, pev_v_angle, dest); + engfunc(EngFunc_MakeVectors, dest); + global_get(glb_v_forward, dest); + xs_vec_mul_scalar(dest, 9999.0, dest); + xs_vec_add(start, dest, dest); + + engfunc(EngFunc_TraceLine, start, dest, 0, index, 0); + get_tr2(0, TR_vecEndPos, origin); + + return 1; +} + +stock bool:fm_get_user_longjump(index) { + new value[2]; + engfunc(EngFunc_GetPhysicsKeyValue, index, "slj", value, 1); + switch (value[0]) { + case '1': return true; + } + + return false; +} + +stock fm_set_user_longjump(index, bool:longjump = true, bool:tempicon = true) { + if (longjump == fm_get_user_longjump(index)) + return; + + if (longjump) { + engfunc(EngFunc_SetPhysicsKeyValue, index, "slj", "1"); + if (tempicon) { + static msgid_itempickup; + if (!msgid_itempickup) + msgid_itempickup = get_user_msgid("ItemPickup"); + + message_begin(MSG_ONE, msgid_itempickup, _, index); + write_string("item_longjump"); + message_end(); + } + } + else + engfunc(EngFunc_SetPhysicsKeyValue, index, "slj", "0"); +} + +#define WEAPON_SUIT 31 + +stock bool:fm_get_user_suit(index) { + return bool:(!(!(pev(index, pev_weapons) & (1<<WEAPON_SUIT)))); // i'm not insane, this is a trick! +} + +stock fm_set_user_suit(index, bool:suit = true, bool:sound = true) { + new weapons = pev(index, pev_weapons); + if (!suit) + set_pev(index, pev_weapons, weapons & ~(1<<WEAPON_SUIT)); + else if (!(weapons & (1<<WEAPON_SUIT))) { + set_pev(index, pev_weapons, weapons | (1<<WEAPON_SUIT)); + if (sound) + emit_sound(index, CHAN_VOICE, "items/tr_kevlar.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM); + } +} + +#define FEV_RELIABLE (1<<1) +#define FEV_GLOBAL (1<<2) + +// removes all created decals and players' corpses from the world +// set a specific index to remove decals only for the given client +stock fm_cs_remove_decals(index = 0) { + static eventindex_decal_reset; + if (!eventindex_decal_reset) + eventindex_decal_reset = engfunc(EngFunc_PrecacheEvent, 1, "events/decal_reset.sc"); + + new flags = FEV_RELIABLE; + if (!index) + flags |= FEV_GLOBAL; + + engfunc(EngFunc_PlaybackEvent, flags, index, eventindex_decal_reset, 0.0, Float:{0.0, 0.0, 0.0}, Float:{0.0, 0.0, 0.0}, 0.0, 0.0, 0, 0, 0, 0); +} + +// checks whether the entity's classname is equal to the passed classname +stock bool:fm_is_ent_classname(index, const classname[]) { + if (!pev_valid(index)) + return false; + + new class[32]; + pev(index, pev_classname, class, sizeof class - 1); + if (equal(class, classname)) + return true; + + return false; +} + +// the same as AMXX's core user_kill but fixes the issue when the scoreboard doesn't update immediately if flag is set to 1 +stock fm_user_kill(index, flag = 0) { + if (flag) { + new Float:frags; + pev(index, pev_frags, frags); + set_pev(index, pev_frags, ++frags); + } + + dllfunc(DLLFunc_ClientKill, index); + + return 1; +} + +// returns a degree angle between player-to-point and player's view vectors +stock Float:fm_get_view_angle_diff(index, const Float:point[3]) { + new Float:vec[3], Float:ofs[3], Float:aim[3]; + pev(index, pev_origin, vec); + pev(index, pev_view_ofs, ofs); + xs_vec_add(vec, ofs, vec); + xs_vec_sub(point, vec, vec); + xs_vec_normalize(vec, vec); + + pev(index, pev_v_angle, aim); + engfunc(EngFunc_MakeVectors, aim); + global_get(glb_v_forward, aim); + + return xs_vec_angle(vec, aim); +} + +// gets a weapon type of the linked to weaponbox weapon_* entity +stock fm_get_weaponbox_type(entity) { + static max_clients, max_entities; + if (!max_clients) + max_clients = global_get(glb_maxClients); + if (!max_entities) + max_entities = global_get(glb_maxEntities); + + for (new i = max_clients + 1; i < max_entities; ++i) { + if (pev_valid(i) && entity == pev(i, pev_owner)) { + new wname[32]; + pev(i, pev_classname, wname, sizeof wname - 1); + return get_weaponid(wname); + } + } + + return 0; +} + +// safe removal of weaponbox+weapon_* entity pair (delay =~= 0.03 second) +#define fm_remove_weaponbox(%1) dllfunc(DLLFunc_Think, %1) +/* stock fm_remove_weaponbox(entity) + return dllfunc(DLLFunc_Think, entity) */ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/file.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/file.inc new file mode 100644 index 0000000..14d9379 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/file.inc @@ -0,0 +1,143 @@ +/* Files functions +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is provided as is (no warranties). +*/ + +#if defined _file_included + #endinput +#endif +#define _file_included + +/* Reads content from directory. +* Returns index of next element or 0 when end of dir. is reached. */ +native read_dir(const dirname[],pos,output[],len,&outlen); + +/* Reads line from file. Returns index of next line or 0 when end of file is reached. */ +native read_file(const file[],line,text[],len,&txtlen); + +/* Writes text to file. Function returns 0 on failure. +* When line is set to -1, the text is added at the end of file. */ +native write_file(const file[],const text[],line = -1); + +/* Deletes file. Function returns 1 on success, 0 on failure. */ +native delete_file(const file[]); + +/* Checks for file. If file exists function returns 1, in other case 0. */ +native file_exists(const file[]); + +/* renames a file. returns 0 on failure, 1 on success. + * if relative true, rename_file will act like other natives which + * use the moddir as a base directory. otherwise, the current directory is + * undefined (but assumed to be hlds). + */ +native rename_file(const oldname[], const newname[], relative=0); + +/* Checks if a directory exists */ +native dir_exists(const dir[]); + +/* Returns a file size in bytes if flag is set to 0. +* When flag is set to 1 returns number of lines in the file, +* and when flags is 2, function returns 1 if the file ends +* with line feed. If file doesn't exist returns -1. */ +native file_size(const file[], flag=0); + +#define SEEK_SET 0 +#define SEEK_CUR 1 +#define SEEK_END 2 + +//Open a file, returns a handle or 0 on failure +native fopen(const filename[],const mode[]); + +//Closes a file handle +native fclose(file); + +#define BLOCK_INT 4 +#define BLOCK_SHORT 2 +#define BLOCK_CHAR 1 +#define BLOCK_BYTE 1 + +//The following functions work as such: +// RAW - means the array you pass is a raw bytestream, for experts only +// BLOCK - means you are passing in an array where each element will be written +// NORMAL - means you are writing only one element +// RAW and BLOCK return the number of blocks acted upon successfully +// NORMAL returns 1 on success + +native fread(file, &data, mode); +native fread_blocks(file, data[], blocks, mode); +native fread_raw(file, stream[], blocksize, blocks); +native fwrite(file, data, mode); +native fwrite_blocks(file, const data[], blocks, mode); +native fwrite_raw(file, const stream[], blocksize, mode); + +//Returns 1 if the file is ended, 0 otherwise +native feof(file); + +//Reads a line from a text file -- includes newline! +native fgets(file, buffer[], maxlength); + +//Writes a line to a text file. Returns # of characters written. +native fputs(file, const text[]); + +//Writes a line to the file +native fprintf(file, const fmt[], any:...); + +//Sets the current position in a file (see SEEK_ values above) +native fseek(file, position, start); + +//Returns the current position in a file +native ftell(file); + +//These are straight from the C standard. +native fgetc(file); +native fputc(file, data); +native fungetc(file, data); + +//Return the size of a file +native filesize(const filename[], any:...); + +//Attempts to remove a directory. +//Note that you cannot remove a directory that has files on most +// operating systems. +native rmdir(const path[]); + +/* Returns 0 on success, like the POSIX specification */ +native mkdir(const dirname[]); + + +//Delete a file (delete_file macro) +native unlink(const filename[]); + +//Returns a handle to a directory +native open_dir(dir[], firstfile[], length); +native next_file(dirh, buffer[], length); +native close_dir(dirh); + +/** + * Loads a file using the LoadFileForMe engine function. + * + * The data is truncated if there is not enough space. No null-terminator + * is applied; the data is the raw contents of the file. + * + * @param file File to load (may be a file from the GCF). + * @param buffer Buffer to store file contents. + * @param maxlength Maximum size of the file buffer. + * @param length Variable to store the file length. This may return + * a number larger than the buffer size. + * @return -1 if the file could not be loaded. Otherwise, + * the number of cells actually written to the buffer + * are returned. + */ +native LoadFileForMe(const file[], buffer[], maxlength, &length=0); + +/** + * Flushes a buffered output stream. + * + * @param file File handle, or 0 for all open streams. + * @return 0 on success, -1 on failure. + */ +native fflush(file); + diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/float.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/float.inc new file mode 100644 index 0000000..35b65ae --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/float.inc @@ -0,0 +1,213 @@ +/* Float arithmetic +* +* (c) Copyright 1999, Artran, Inc. +* Written by Greg Garner (gmg@artran.com) +* Modified in March 2001 to include user defined +* operators for the floating point functions. +* +* This file is provided as is (no warranties). +*/ + +#if defined _float_included + #endinput +#endif +#define _float_included + +/* Different methods of rounding */ +enum floatround_method { + floatround_round = 0, + floatround_floor, + floatround_ceil, + floatround_tozero +}; + +enum anglemode { + radian = 0, + degrees, + grades +}; + +/* Convert an integer into a floating point value */ +native Float:float(value); + +/* Convert a string into a floating point value */ +native Float:floatstr(const string[]); + +/* Multiple two floats together */ +native Float:floatmul(Float:oper1, Float:oper2); + +/* Divide the dividend float by the divisor float */ +native Float:floatdiv(Float:dividend, Float:divisor); + +/* Add two floats together */ +native Float:floatadd(Float:dividend, Float:divisor); + +/* Subtract oper2 float from oper1 float */ +native Float:floatsub(Float:oper1, Float:oper2); + +/* Return the fractional part of a float */ +native Float:floatfract(Float:value); + +/* Round a float into a integer value */ +native floatround(Float:value, floatround_method:method=floatround_round); + +/* Compare two integers. If the two elements are equal, return 0. +* If the first argument is greater than the second argument, return 1, +* If the first argument is less than the second argument, return -1. */ +native floatcmp(Float:fOne, Float:fTwo); + +/* Return the square root of the input value, same as floatpower(value, 0.5) */ +native Float:floatsqroot(Float:value); + +/* Return the value raised to the power of the exponent */ +native Float:floatpower(Float:value, Float:exponent); + +/* Return the logarithm */ +native Float:floatlog(Float:value, Float:base=10.0); + +/* Return the sine, cosine or tangent. + * The input angle may be in radians, degrees or grades. */ +native Float:floatsin(Float:value, anglemode:mode=radian); +native Float:floatcos(Float:value, anglemode:mode=radian); +native Float:floattan(Float:value, anglemode:mode=radian); + +/* Return the hyperbolic sine, cosine or tangent. + * The input angle may be in radians, degrees or grades. */ +native Float:floatsinh(Float:angle, anglemode:mode=radian); +native Float:floatcosh(Float:angle, anglemode:mode=radian); +native Float:floattanh(Float:angle, anglemode:mode=radian); + +/* Return the absolute value */ +native Float:floatabs(Float:value); + +/* Return the angle of a sine, cosine or tangent. + * The output angle may be in radians, degrees, or grades. */ +native Float:floatatan(Float:angle, {anglemode,_}:radix); +native Float:floatacos(Float:angle, {anglemode,_}:radix); +native Float:floatasin(Float:angle, {anglemode,_}:radix); +native Float:floatatan2(Float:x, Float:y, {anglemode,_}:radix); + +#pragma rational Float + +/* user defined operators */ +native Float:operator*(Float:oper1, Float:oper2) = floatmul; +native Float:operator/(Float:oper1, Float:oper2) = floatdiv; +native Float:operator+(Float:oper1, Float:oper2) = floatadd; +native Float:operator-(Float:oper1, Float:oper2) = floatsub; + +stock Float:operator++(Float:oper) + return oper+1.0; + +stock Float:operator--(Float:oper) + return oper-1.0; + +stock Float:operator-(Float:oper) + return oper^Float:cellmin; /* IEEE values are sign/magnitude */ + +stock Float:operator*(Float:oper1, oper2) + return floatmul(oper1, float(oper2)); /* "*" is commutative */ + +stock Float:operator/(Float:oper1, oper2) + return floatdiv(oper1, float(oper2)); + +stock Float:operator/(oper1, Float:oper2) + return floatdiv(float(oper1), oper2); + +stock Float:operator+(Float:oper1, oper2) + return floatadd(oper1, float(oper2)); /* "+" is commutative */ + +stock Float:operator-(Float:oper1, oper2) + return floatsub(oper1, float(oper2)); + +stock Float:operator-(oper1, Float:oper2) + return floatsub(float(oper1), oper2); + +stock bool:operator==(Float:oper1, Float:oper2) + return floatcmp(oper1, oper2) == 0; + +stock bool:operator==(Float:oper1, oper2) + return floatcmp(oper1, float(oper2)) == 0; /* "==" is commutative */ + +stock bool:operator!=(Float:oper1, Float:oper2) + return floatcmp(oper1, oper2) != 0; + +stock bool:operator!=(Float:oper1, oper2) + return floatcmp(oper1, float(oper2)) != 0; /* "==" is commutative */ + +stock bool:operator>(Float:oper1, Float:oper2) + return floatcmp(oper1, oper2) > 0; + +stock bool:operator>(Float:oper1, oper2) + return floatcmp(oper1, float(oper2)) > 0; + +stock bool:operator>(oper1, Float:oper2) + return floatcmp(float(oper1), oper2) > 0; + +stock bool:operator>=(Float:oper1, Float:oper2) + return floatcmp(oper1, oper2) >= 0; + +stock bool:operator>=(Float:oper1, oper2) + return floatcmp(oper1, float(oper2)) >= 0; + +stock bool:operator>=(oper1, Float:oper2) + return floatcmp(float(oper1), oper2) >= 0; + +stock bool:operator<(Float:oper1, Float:oper2) + return floatcmp(oper1, oper2) < 0; + +stock bool:operator<(Float:oper1, oper2) + return floatcmp(oper1, float(oper2)) < 0; + +stock bool:operator<(oper1, Float:oper2) + return floatcmp(float(oper1), oper2) < 0; + +stock bool:operator<=(Float:oper1, Float:oper2) + return floatcmp(oper1, oper2) <= 0; + +stock bool:operator<=(Float:oper1, oper2) + return floatcmp(oper1, float(oper2)) <= 0; + +stock bool:operator<=(oper1, Float:oper2) + return floatcmp(float(oper1), oper2) <= 0; + +stock bool:operator!(Float:oper) + return (_:oper & ((-1)/2)) == 0; /* -1 = all bits to 1; /2 = remove most significant bit (sign) + works on both 32bit and 64bit systems; no constant required */ +/* forbidden operations */ +forward operator%(Float:oper1, Float:oper2); +forward operator%(Float:oper1, oper2); +forward operator%(oper1, Float:oper2); + + +stock Float:floatmin(Float:ValueA, Float:ValueB) +{ + if (ValueA<=ValueB) + { + return ValueA; + } + + return ValueB; +} + +stock Float:floatmax(Float:ValueA, Float:ValueB) +{ + if (ValueA>=ValueB) + { + return ValueA; + } + + return ValueB; +} +stock Float:floatclamp(Float:Value, Float:MinValue, Float:MaxValue) +{ + if (Value<=MinValue) + { + return MinValue; + } + if (Value>=MaxValue) + { + return MaxValue; + } + + return Value; +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/fun.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/fun.inc new file mode 100644 index 0000000..d176666 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/fun.inc @@ -0,0 +1,99 @@ +/* Fun functions +* +* by the AMX Mod X Development Team +* +* This file is provided as is (no warranties). +*/ + +#if defined _fun_included + #endinput +#endif +#define _fun_included + +#if AMXX_VERSION_NUM >= 175 + #pragma reqlib fun + #if !defined AMXMODX_NOAUTOLOAD + #pragma loadlib fun + #endif +#else + #pragma library fun +#endif + +/* Returns 1 if receiver hears sender via voice communication. */ +native get_client_listen(receiver, sender); + +/* Sets who can listen who. Function returns 0 +* if for some reasons this setting can't be done. */ +native set_client_listen(receiver, sender, listen); + +/* Sets player godmode. If you want to disable godmode set only first parameter. */ +native set_user_godmode(index, godmode = 0); + +/* Returns 1 if godmode is set. */ +native get_user_godmode(index); + +/* Sets player armor. */ +native set_user_armor(index, armor); + +/* Sets player health. */ +native set_user_health(index, health); + +/* Move player to origin. */ +native set_user_origin(index, const origin[3]); + +/* Sets player rendering mode. */ +native set_user_rendering(index, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16); + +/* Gives item to player, name of item can start + * with weapon_, ammo_ and item_. This event + * is announced with proper message to all players. */ +native give_item(index, const item[]); + +/* Sets hit zones for player. + * Parts of body are as bits: + * 1 - generic + * 2 - head + * 4 - chest + * 8 - stomach + * 16 - left arm + * 32 - right arm + * 64 - left leg + * 128 - right leg */ +native set_user_hitzones(index = 0, target = 0, body = 255); + +/* Get user hitzones. */ +native get_user_hitzones(index, target); + +/* Sets users max. speed. */ +native set_user_maxspeed(index, Float:speed = -1.0); + +/* Returns users max. speed. */ +native Float:get_user_maxspeed(index); + +/* Sets users gravity. */ +native set_user_gravity(index, Float:gravity = 1.0); + +/* Returns users gravity. */ +native Float:get_user_gravity(index); + +/* Spawns entity. */ +native spawn(index); + +/* Sets player noclip. If you want to disable noclip set only first parameter. */ +native set_user_noclip(index, noclip = 0); + +/* Returns 1 if noclip is set. */ +native get_user_noclip(index); + +/* Returns 1 if player has silent footsteps, 0 if footsteps are set to normal */ +native get_user_footsteps(index); + +/* Gives player silent footsteps. +* if set = 0 it will return footsteps to normal */ +native set_user_footsteps(id, set = 1); + +/* Strips all weapons from user. */ +native strip_user_weapons(index); + +/* Sets player frags. */ +native set_user_frags(index, frags); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/geoip.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/geoip.inc new file mode 100644 index 0000000..8a25394 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/geoip.inc @@ -0,0 +1,74 @@ +/* GeoIP module functions for AMX Mod X + by David "BAILOPAN" Anderson + (C)Copyrighted under the GNU General Public License, Version 2 + */ + +#if defined geoip_included + #endinput +#endif +#define _geoip_included + +#if AMXX_VERSION_NUM >= 175 + #pragma reqlib geoip + #if !defined AMXMODX_NOAUTOLOAD + #pragma loadlib geoip + #endif +#else + #pragma library geoip +#endif + +/// IP addresses passed to these natives can contain ports, the ports will be ignored. + +/** + * Lookup the two character country code for a given IP address. + * e.g: "US", "CA", etc. + * + * @param ip The IP address to lookup. + * @param result The result buffer. If the lookup does not succeed, the buffer is not modified. + * @return true on a successful lookup, false on a failed lookup. + */ +native bool:geoip_code2_ex(const ip[], result[3]); + +/** + * Lookup the three character country code for a given IP address. + * e.g: "USA", "cAN", etc. + * + * @param ip The IP address to lookup. + * @param result The result buffer. If the lookup does not succeed, the buffer is not modified. + * @return true on a successful lookup, false on a failed lookup. + */ +native bool:geoip_code3_ex(const ip[], result[4]); + +/** + * @deprecated + * Lookup the two character country code for a given IP address. + * + * @note This native will overflow the buffer by one cell on an unknown ip lookup! + * @note Use geoip_code2_ex instead! + * + * @param ip The IP address to lookup. + * @param result The result buffer. + */ +native geoip_code2(const ip[], ccode[3]); + +/** + * @deprecated + * Lookup the three character country code for a given IP address. + * + * @note This native will overflow the buffer by one cell on an unknown ip lookup! + * @note Use geoip_code3_ex instead! + * + * @param ip The IP address to lookup. + * @param result The result buffer. + */ +native geoip_code3(const ip[], result[4]); + +/** + * Lookup the full country name for the given IP address. Sets the buffer to "error" on + * an unsuccessful lookup. + * + * @param ip The IP address to lookup. + * @param result The result of the geoip lookup. + * @param len The maximum length of the result buffer. + */ +native geoip_country(const ip[], result[], len=45); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/ham_const.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/ham_const.inc new file mode 100644 index 0000000..27f9e0f --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/ham_const.inc @@ -0,0 +1,1129 @@ +#if defined _ham_const_included + #endinput +#endif +#define _ham_const_included + +/** + * Ham return types. + * - + * Return these from hooks to disable calling the target function. + * Numbers match up with fakemeta's FMRES_* for clarity. They are interchangable. + * 0 (or no return) is also interpretted as HAM_IGNORED. + */ +#define HAM_IGNORED 1 /**< Calls target function, returns normal value */ +#define HAM_HANDLED 2 /**< Tells the module you did something, still calls target function and returns normal value */ +#define HAM_OVERRIDE 3 /**< Still calls the target function, but returns whatever is set with SetHamReturn*() */ +#define HAM_SUPERCEDE 4 /**< Block the target call, and use your return value (if applicable) (Set with SetHamReturn*()) */ + +/** + * A few notes about all of the following functions: + * - Not all functions will do as you expect on all mods. + * If a function does not do what you would believe it should + * DO NOT file a bug report, you will be ignored. + * + * - Passing invalid parameters has potential to crash the server + * So be careful, and adequately test! + * + * - All functions take (and pass) a "this" index as the first param. + * This is the entity from which the function is being executed on. + * + * - All functions and forwards (eg: {Register,Execute}Ham[B]) require + * the mod to have the pev and base keys in addition to the function + * keys for the corresponding mod/operating system in hamdata.ini + * + * - Some functions that return booleans may need to be logically ANDed + * to get the results desired. e.g: if (ExecuteHam(Ham_TS_IsObjective, this) & 0x0000FFFF != 0) { // true.. } + * because the module will return the full integer value. + */ + +enum Ham +{ + /** + * Description: This is typically called whenever an entity is created. + * It is the virtual equivilent of spawn from the engine. + * Some mods call this on player spawns too. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_Spawn, this); + */ + Ham_Spawn = 0, + + /** + * Description: This is typically called on map change. + * This will typically precache all assets required by the entity. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_Precache, this); + */ + Ham_Precache, + + /** + * Description: Typically this is similar to an engine keyvalue call. + * Use the kvd natives from fakemeta to handle the kvd_handle passed. + * NOTE: Do not pass handle 0 to this! Use get_kvd_handle(0) from fakemeta instead! + * Forward params: function(this, kvd_handle); + * Return type: None. + * Execute params: ExecuteHam(Ham_Keyvalue, this, kvd_handle); + */ + Ham_Keyvalue, + + /** + * Description: Returns flags for how an entity can be used (FCAP_* constants in hlsdk_const.inc) + * Forward params: function(this) + * Return type: Integer. + * Execute params: ExecuteHam(Ham_ObjectCaps, this); + */ + Ham_ObjectCaps, + + /** + * Description: Usually called to activate some objects. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_Activate, this); + */ + Ham_Activate, + + /** + * Description: Usually called after the engine call with the same name. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_SetObjectCollisionBox, this); + */ + Ham_SetObjectCollisionBox, + + /** + * Description: Returns an integer number that corresponds with what type of entity this is. + * Forward params: function(this) + * Return type: Integer. + * Execute params: ExecuteHam(Ham_Classify, this); + */ + Ham_Classify, + + /** + * Description: Typically called when an entity dies to notify any children entities about the death. + * Forward params: function(this, idchild) + * Return type: None. + * Execute params: ExecuteHam(Ham_DeathNotice, this, idchild) + */ + Ham_DeathNotice, + + /** + * Description: Usually called whenever an entity gets attacked by a hitscan (such as a gun) weapon. + * Use the get/set tr2 natives in fakemeta to handle the traceresult data. + * Do not use a handle of 0 as a traceresult in execution, use create_tr2() from Fakemeta + * to pass a custom handle instead. (Don't forget to free the handle when you're done.) + * Forward params: function(this, idattacker, Float:damage, Float:direction[3], traceresult, damagebits) + * Return type: None. + * Execute params: ExecuteHam(Ham_TraceAttack, this, idattacker, Float:damage, Float:direction[3], tracehandle, damagebits); + */ + Ham_TraceAttack, + + /** + * Description: Usually called whenever an entity takes any kind of damage. + * Inflictor is the entity that caused the damage (such as a gun). + * Attacker is the entity that tirggered the damage (such as the gun's owner). + * Forward params: function(this, idinflictor, idattacker, Float:damage, damagebits); + * Return type: Integer. + * Execute params: ExecuteHam(Ham_TakeDamage, this, idinflictor, idattacker, Float:damage, damagebits); + */ + Ham_TakeDamage, + + /** + * Description: Usually called whenever an entity gets a form of a heal. + * Forward params: function(this, Float:health, damagebits); + * Return type: Integer. + * Execute params: ExecuteHam(Ham_TakeHealth, this, Float:health, damagebits); + */ + Ham_TakeHealth, + + /** + * Description: Normally called whenever an entity dies. + * Forward params: function(this, idattacker, shouldgib) + * Return type: None. + * Execute params: ExecuteHam(Ham_Killed, this, idattacker, shouldgib); + */ + Ham_Killed, + + /** + * Description: Normally returns the blood color of the entity. + * Forward params: function(this) + * Return type: Integer. + * Execute params: ExecuteHam(Ham_BloodColor, this) + */ + Ham_BloodColor, + + /** + * Description: Traces where blood should appear. + * Forward params: function(this, Float:Damage, Float:Direction[3], trace_handle, damagebits); + * Return type: None. + * Execute params: ExecuteHam(Ham_TraceBleed, this, Float:damage, Float:direction[3], trace_handle, damagebits); + */ + Ham_TraceBleed, + + /** + * Description: Returns whether an entity is activated. + * Forward params: function(this, idActivator); + * Return type: Integer. + * Execute params: ExecuteHam(Ham_IsTriggered, this, idActivator); + */ + Ham_IsTriggered, + + /** + * Description: Returns the id of the entity if its class is derived off of CBaseMonster, -1 otherwise. + * Forward params: function(this) + * Return type: Entity. + * Execute params: ExecuteHam(Ham_MyMonsterPointer, this); + */ + Ham_MyMonsterPointer, + + /** + * Description: Returns the id of the entity if its class is derived off of CBaseSquadMonster, -1 otherwise. + * Forward params: function(this) + * Return type: Entity. + * Execute params: ExecuteHam(Ham_MySquadMonsterPointer, this); + */ + Ham_MySquadMonsterPointer, + + /** + * Description: Returns the toggle state of the entity. + * Forward params: function(this) + * Return type: Integer. + * Execute params: ExecuteHam(Ham_GetToggleState, this); + */ + Ham_GetToggleState, + + /** + * Description: Typically adds points to the entity. + * Forward params: function(this, points, bool:cangonegative); + * Return type: None. + * Execute params: ExecuteHam(Ham_AddPoints, this, points, bool:cangonegative); + */ + Ham_AddPoints, + + /** + * Description: Typically adds points to everybody on the entity's team. + * Forward params: function(this, points, bool:cangonegative); + * Return type: None. + * Execute params: ExecuteHam(Ham_AddPointsToTeam, this, points, bool:cangonegative); + */ + Ham_AddPointsToTeam, + + /** + * Description: Adds an item to the player's inventory. + * Forward params: function(this, idother); + * Return type: Integer. + * Execute params: ExecuteHam(Ham_AddPlayerItem, this, idother); + */ + Ham_AddPlayerItem, + + /** + * Description: Removes an item to the player's inventory. + * Forward params: function(this, idother); + * Return type: Integer. + * Execute params: ExecuteHam(Ham_RemovePlayerItem, this, idother); + */ + Ham_RemovePlayerItem, + + /** + * Description: Gives ammo to the entity. + * Forward params: function(this, Amount, const Name[], Max) + * Return type: Integer. + * Execute params: ExecuteHam(Ham_GiveAmmo, this, amount, "type", max); + */ + Ham_GiveAmmo, + + /** + * Description: Unsure, I believe this is the delay between activation for an entity. + * Forward params: function(this) + * Return type: Float. + * Execute params: ExecuteHam(Ham_GetDelay, this, Float:output) + */ + Ham_GetDelay, + + /** + * Description: Whether or not the entity is moving. + * Forward params: function(this); + * Return type: Integer. + * Execute params: ExecuteHam(Ham_IsMoving, this); + */ + Ham_IsMoving, + + /** + * Description: Unsure. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_OverrideReset, this) + */ + Ham_OverrideReset, + + /** + * Description: Returns the damage decal of the entity for the damage type. + * Forward params: function(this, damagebits) + * Return type: Integer. + * Execute params: ExecuteHam(Ham_DamageDecal, this); + */ + Ham_DamageDecal, + + /** + * Description: Sets the toggle state of the entity. + * Forward params: function(this, state) + * Return type: None. + * Execute params: ExecuteHam(Ham_SetToggleState, this, state); + */ + Ham_SetToggleState, + + /** + * Description: Not entirely sure what this does. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_StartSneaking, this); + */ + Ham_StartSneaking, + + /** + * Description: Not entirely sure what this does. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_StopSneaking, this); + */ + Ham_StopSneaking, + + /** + * Description: Not entirely sure. + * Forward params: function(this, idOn) + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_OnControls, this, idOn); + */ + Ham_OnControls, + + /** + * Description: Whether or not the entity is sneaking. + * Forward params: function(this); + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_IsSneaking, this); + */ + Ham_IsSneaking, + + /** + * Description: Whether or not the entity is alive. + * Forward params: function(this); + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_IsAlive, this); + */ + Ham_IsAlive, + + /** + * Description: Whether or not the entity uses a BSP model. + * Forward params: function(this); + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_IsBSPModel, this); + */ + Ham_IsBSPModel, + + /** + * Description: Whether or not the entity can reflect gauss shots.. + * Forward params: function(this); + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_ReflectGauss, this); + */ + Ham_ReflectGauss, + + /** + * Description: Whether or not the target is the same as the one passed. + * Note the strindex parameter is a string passed that has been allocated by the engine. + * Use fakemeta's EngFunc_SzFromIndex to convert to a normal string, or fakemeta's + * EngFunc_AllocString to create a new string. + * Forward params: function(this, strindex). + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_HasTarget, this, strindex); + */ + Ham_HasTarget, + + /** + * Description: Whether or not the entity is in the world. + * Forward params: function(this); + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_IsInWorld, this); + */ + Ham_IsInWorld, + + /** + * Description: Whether or not the entity is a player. + * Forward params: function(this); + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_IsPlayer, this); + */ + Ham_IsPlayer, + + /** + * Description: Whether or not the entity is a net client. + * Forward params: function(this); + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_IsNetClient, this); + */ + Ham_IsNetClient, + + /** + * Description: Get the entity's team id. + * Forward params: function(this); + * Return type: String (string length returned and string byref'd in ExecuteHam). + * Execute params: ExecuteHam(Ham_TeamId, this, buffer[], size); + */ + Ham_TeamId, + + /** + * Description: Returns the next target of this. + * Forward params: function(this); + * Return type: Entity. + * Execute params: ExecuteHam(Ham_GetNextTarget, this); + */ + Ham_GetNextTarget, + + /** + * Description: Called whenever an entity thinks. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_Think, this); + */ + Ham_Think, + + /** + * Description: Called whenever two entities touch. + * Forward params: function(this, idother); + * Return type: None. + * Execute params: ExecuteHam(Ham_Touch, this, idother); + */ + Ham_Touch, + + /** + * Description: Called whenver one entity uses another. + * Forward params: function(this, idcaller, idactivator, use_type, Float:value) + * Return type: None. + * Execute params: ExecuteHam(Ham_Use, this, idcaller, idactivator, use_type, Float:value); + */ + Ham_Use, + + /** + * Description: Normally called whenever one entity blocks another from moving. + * Forward params: function(this, idother); + * Return type: None. + * Execute params: ExecuteHam(Ham_Blocked, this, idother); + */ + Ham_Blocked, + + /** + * Description: Normally called when a map-based item respawns, such as a health kit or something. + * Forward params: function(this); + * Return type: Entity. + * Execute params: ExecuteHam(Ham_Respawn, this); + */ + Ham_Respawn, + + /** + * Description: Used in Half-Life to update a monster's owner. + * Forward params: function(this); + * Return type: None. + * Execute params: ExecuteHam(Ham_UpdateOwner, this); + */ + Ham_UpdateOwner, + + /** + * Description: Normally called whenever a barnacle grabs the entity. + * Forward params: function(this); + * Return type: Integer. + * Execute params: ExecuteHam(Ham_FBecomeProne, this); + */ + Ham_FBecomeProne, + + /** + * Description: Returns the center of the entity. + * Forward params: function(this); + * Return type: Vector (byref'd in Execute). + * Execute params: ExecuteHam(Ham_Center, this, Float:output[3]); + */ + Ham_Center, + + /** + * Description: Returns the eye position of the entity. + * Forward params: function(this); + * Return type: Vector (byref'd in Execute). + * Execute params: ExecuteHam(Ham_EyePosition, this, Float:output[3]); + */ + Ham_EyePosition, + + /** + * Description: Returns the ear position of the entity. + * Forward params: function(this); + * Return type: Vector (byref'd in Execute). + * Execute params: ExecuteHam(Ham_EarPosition, this, Float:output[3]); + */ + Ham_EarPosition, + + /** + * Description: Position to shoot at. + * Forward params: function(this, Float:srcvector[3]); + * Return type: Vector (byref'd in Execute). + * Execute params: ExecuteHam(Ham_BodyTarget, Float:srcvector[3], Float:returnvector[3]) + */ + Ham_BodyTarget, + + /** + * Description: Returns the illumination of the entity. + * Forward params: function(this) + * Return type: Integer. + * Execute params: ExecuteHam(Ham_Illumination, this); + */ + Ham_Illumination, + + /** + * Description: Unsure, I assume it is whether or not the other entity is visible to this entity. + * Forward params: function(this, idOther); + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_FVisible, this, idOther); + */ + Ham_FVisible, + + /** + * Description: Unsure, I assume it is whether or not the target vector is visible to this entity. + * Forward params: function(this, const Float:origin[3]); + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_FVecVisible, this, const Float:origin[3]); + */ + Ham_FVecVisible, + + + /** + * Players have all the attributes of normal entities, in addition to these. + */ + + /** + * Description: Typically called every frame when a player has jump held. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_Player_Jump, this); + */ + Ham_Player_Jump, + + /** + * Description: Typically called every frame when a player has duck held. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_Player_Duck, this); + */ + Ham_Player_Duck, + + /** + * Description: Typically called every frame during PlayerPreThink engine call. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_Player_PreThink, this); + */ + Ham_Player_PreThink, + + /** + * Description: Typically called every frame during PlayerPostThink engine call. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_Player_PostThink, this); + */ + Ham_Player_PostThink, + + /** + * Description: Returns a vector that tells the gun position. + * Forward params: function(this) + * Return type: Vector, byreffed in execute. + * Execute params: ExecuteHam(Ham_Player_GetGunPosition, this, Float:output[3]); + */ + Ham_Player_GetGunPosition, + + /** + * Description: Whether or not the player should fade on death. + * Forward param: function(this) + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_Player_ShouldFadeOnDeath, this); + */ + Ham_Player_ShouldFadeOnDeath, + + /** + * Description: Called whenever an impulse command is executed. + * Forward param: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_Player_ImpulseComands, this); + */ + Ham_Player_ImpulseCommands, + + /** + * Description: Updates the client's data for hud changes (such as ammo). Usually called every frame. + * Forward param: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_Player_UpdateClientData, this); + */ + Ham_Player_UpdateClientData, + + /** + * Items have all the attributes of normal entities in addition to these. + */ + + /** + * Description: Adds the item to the player. + * Forward params: function(this, idPlayer); + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_Item_AddToPlayer, this, idPlayer); + */ + Ham_Item_AddToPlayer, + + /** + * Description: Unsure. + * Forward params: function(this, idOriginal); + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_Item_AddDuplicate, this, idOriginal); + */ + Ham_Item_AddDuplicate, + + /** + * Description: Whether or not this entity can be deployed. + * Forward params: function(this); + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_Item_CanDeploy, this); + */ + Ham_Item_CanDeploy, + + /** + * Description: Deploys the entity (usually a weapon). + * Forward params: function(this); + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_Item_Deploy, this); + */ + Ham_Item_Deploy, + + /** + * Description: Whether or not the entity can be holstered. + * Forward params: function(this); + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_Item_CanHolster, this); + */ + Ham_Item_CanHolster, + + /** + * Description: Whether or not the entity (usually weapon) can be holstered. + * Forward params: function(this) + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_Item_Holster, this); + */ + Ham_Item_Holster, + + /** + * Description: Updates the HUD info about this item. + * Forward params: function(this); + * Return type: None. + * Execute params: ExecuteHam(Ham_UpdateItemInfo, this); + */ + Ham_Item_UpdateItemInfo, + + /** + * Description: Called each frame for an item, normally only on active items. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_Item_PreFrame, this); + */ + Ham_Item_PreFrame, + + /** + * Description: Called each frame for an item, normally only on active items. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_Item_PostFrame, this); + */ + Ham_Item_PostFrame, + + /** + * Description: Called when an item gets dropped, normally on death only. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_Item_Drop, this); + */ + Ham_Item_Drop, + + /** + * Description: Normally called when an item gets deleted. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_Item_Drop, this); + */ + Ham_Item_Kill, + + /** + * Description: Called when an entity starts being attached to (normally invisible and "following") a player. + * Forward params: function(this, idPlayer) + * Return type: None. + * Execute params: ExecuteHam(Ham_Item_AttachToPlayer, this, idPlayer) + */ + Ham_Item_AttachToPlayer, + + /** + * Description: Returns the ammo index of the item. + * Forward params: function(this) + * Return type: Integer. + * Execute params: ExecuteHam(Ham_Item_PrimaryAmmoIndex, this); + */ + Ham_Item_PrimaryAmmoIndex, + + /** + * Description: Returns the secondary ammo index of the item. + * Forward params: function(this) + * Return type: Integer. + * Execute params: ExecuteHam(Ham_Item_SecondaryAmmoIndex, this); + */ + Ham_Item_SecondaryAmmoIndex, + + /** + * Description: Updates item data for the client. + * Forward params: function(this, idPlayer) + * Return type: Integer. + * Execute params: ExecuteHam(Ham_Item_UpdateClientData, this, idPlayer); + */ + Ham_Item_UpdateClientData, + + /** + * Description: Returns the entity index if the item is a weapon, -1 otherwise. + * Forward params: function(this) + * Return type: Entity. + * Execute Params: ExecuteHam(Ham_Item_GetWeaponPtr, this) + */ + Ham_Item_GetWeaponPtr, + + /** + * Description: Returns the item slot for the item. + * Forward params: function(this) + * Return type: Integer. + * Execute Params: ExecuteHam(Ham_Item_ItemSlot, this) + */ + Ham_Item_ItemSlot, + + + /** + * Weapons have all the attributes to Ham_Item_*, in addition to these. + */ + + /** + * Description: Gets ammo from the target weapon. + * Forward params: function(this, idTarget) + * Return type: Integer. + * Execute Params: ExecuteHam(Ham_Weapon_ExtractAmmo, this, idTarget) + */ + Ham_Weapon_ExtractAmmo, + + /** + * Description: Gets clip ammo from the target weapon. + * Forward params: function(this, idTarget) + * Return type: Integer. + * Execute Params: ExecuteHam(Ham_Weapon_ExtractAmmo, this, idTarget) + */ + Ham_Weapon_ExtractClipAmmo, + + /** + * Description: Unsure. + * Forward params: function(this) + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_Weapon_AddWeapon, this); + */ + Ham_Weapon_AddWeapon, + + /** + * Description: Plays the weapon's empty sound. + * Forward params: function(this) + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_Weapon_PlayEmptySound, this); + */ + Ham_Weapon_PlayEmptySound, + + /** + * Description: Sets the weapon so that it can play empty sound again. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_Weapon_ResetEmptySound, this); + */ + Ham_Weapon_ResetEmptySound, + + /** + * Description: Sends an animation event for the weapon. + * Forward params: function(this, iAnim, skiplocal, body); + * Return type: None. + * Execute params: ExecuteHam(Ham_Weapon_SendWeaponAnim, this, iAnim, skiplocal, body); + */ + Ham_Weapon_SendWeaponAnim, + + /** + * Description: Whether or not the weapon is usable (has ammo, etc.) + * Forward params: function(this) + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_Weapon_IsUsable, this) + */ + Ham_Weapon_IsUsable, + + /** + * Description: Called when the main attack of a weapon is triggered. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_Weapon_PrimaryAttack, this); + */ + Ham_Weapon_PrimaryAttack, + + /** + * Description: Called when the secondary attack of a weapon is triggered. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_Weapon_SecondaryAttack, this); + */ + Ham_Weapon_SecondaryAttack, + + /** + * Description: Called when the weapon is reloaded. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_Weapon_Reload, this); + */ + Ham_Weapon_Reload, + + /** + * Description: Displays the idle animation for the weapon. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_Weapon_WeaponIdle, this); + */ + Ham_Weapon_WeaponIdle, + + /** + * Description: There is no more ammo for this gun, so switch to the next best one. + * Forward params: function(this) + * Return type: None. + * ExecuteParams: ExecuteHam(Ham_Weapon_RetireWeapon, this) + */ + Ham_Weapon_RetireWeapon, + + /** + * Description: Whether or not the weapon should idle. + * Forward params: function(this) + * Return type: Integer (boolean). + * Execute Params: ExecuteHam(Ham_Weapon_ShouldWeaponIdle, this) + */ + Ham_Weapon_ShouldWeaponIdle, + + /** + * Description: Not sure. + * Forward params: function(this) + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_Weapon_UseDecrement, this); + */ + Ham_Weapon_UseDecrement, + + /** + * Description: - + * Forward params: function(this, someboolvalue) + * Return type: None. + * Execute params: ExecuteHam(Ham_TS_BreakableRespawn, this, someboolvalue); + */ + Ham_TS_BreakableRespawn, + + /** + * Description: - + * Forward params: function(this) + * Return type: Integer (boolean) + * Execute params: ExecuteHam(Ham_TS_CanUsedThroughWalls, this); + */ + Ham_TS_CanUsedThroughWalls, + + /** + * Description: Unsure - this was removed in TS 3.0 (and thus is deprecated). + * Forward params: function(this) + * Return type: Integer (I think...) + * Execute params: ExecuteHam(Ham_TS_RespawnWait, this); + */ + Ham_TS_RespawnWait, + + /** + * Description: This is called on a map reset for most map based entities. + * Forward params: function(this); + * Return type: None. + * Execute params: ExecuteHam(Ham_CS_Restart, this); + */ + Ham_CS_Restart, + + /** + * Description: Respawn function for players/bots only! Do not use this on non player/bot entities! + * Forward params: function(this); + * Return type: None. + * Execute params: ExecuteHam(Ham_CS_RoundRespawn, this); + */ + Ham_CS_RoundRespawn, + /** + * Description: Whether or not the player can drop the specified item. + * Forward params: function(this) + * Return type: Integer + * Execute params: ExecuteHam(Ham_CS_Item_CanDrop, this); + */ + Ham_CS_Item_CanDrop, + + /** + * Description: Gets the maximum speed for whenever a player has the item deployed. + * Forward params: function(this); + * Return type: Float, byrefed in execute. + * Execute params: ExecuteHam(Ham_CS_Item_GetMaxSpeed, this, Float:output); + */ + Ham_CS_Item_GetMaxSpeed, + + /** + * Description: I assume this spawns players at the start of a new round. + * Forward params: function(this) + * Return type: None. + * Execute Params: ExecuteHam(Ham_DOD_RoundRespawn, this); + */ + Ham_DOD_RoundRespawn, + + /** + * Description: I assume this spawns entities (like func_breakables) at the start of a new round. + * Forward params: function(this) + * Return type: None. + * Execute Params: ExecuteHam(Ham_DOD_RoundRespawnEnt, this); + */ + Ham_DOD_RoundRespawnEnt, + + /** + * Description: Unsure. + * Forward params: function(this) + * Return type: None, I think... + * Execute params: ExecuteHam(Ham_DOD_RoundStore, this); + */ + Ham_DOD_RoundStore, + + /** + * Description: Unsure. + * Forward params: function(this, someintegervalue) + * Return type: None. + * Execute params: ExecuteHam(Ham_DOD_AreaSetIndex, this, someintegervalue) + */ + Ham_DOD_AreaSetIndex, + + /** + * Description: Unsure + * Forward params: function(this, idPlayer) + * Return type: None. + * Execute Params: ExecuteHam(Ham_DOD_AreaSendStatus, this, idPlayer); + */ + Ham_DOD_AreaSendStatus, + + /** + * Description: Unsure. + * Forward params: function(this) + * Return type: Integer. + * Execute Params: ExecuteHam(Ham_DOD_GetState, this); + */ + Ham_DOD_GetState, + + /** + * Description: Unsure. + * Forward params: function(this, idtarget) + * Return type: Integer. + * Execute Params: ExecuteHam(Ham_DOD_GetStateEnt, this, idtarget); + */ + Ham_DOD_GetStateEnt, + + /** + * Description: Whether or not a player can drop this item. + * Forward params: function(this) + * Return type: Integer (boolean). + * Execute Params: ExecuteHam(Ham_DOD_Item_CanDrop, this); + */ + Ham_DOD_Item_CanDrop, + + /** + * Description: Unsure. + * Forward params: function(this, iduser) + * Return type: Integer. + * Execute params: ExecuteHam(Ham_TFC_EngineerUse, this, iduser) + */ + Ham_TFC_EngineerUse, + + /** + * Description: Unsure. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_TFC_Finished, this); + */ + Ham_TFC_Finished, + + /** + * Description: Unsure. + * Forward params: function(this, entityid, Float:floata, Float:floatb) + * Return type: None. + * Execute params: ExecuteHam(Ham_TFC_EmpExplode, this, entityid, Float:floata, Float:floatb) + */ + Ham_TFC_EmpExplode, + + /** + * Description: Unsure. + * Forward params: function(this, Float:floata, Float:floatb) + * Return type: None. + * Execute params: ExecuteHam(Ham_TFC_CalcEmpDmgRad, this, Float:floata, Float:floatb) + */ + Ham_TFC_CalcEmpDmgRad, + + /** + * Description: Unsure. + * Forward params: function(this, entityid) + * Return type: None. + * Execute params: ExecuteHam(Ham_TFC_TakeEmpBlast, this, entityid); + */ + Ham_TFC_TakeEmpBlast, + + /** + * Description: Unsure. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_TFC_EmpRemove, this); + */ + Ham_TFC_EmpRemove, + + + /** + * Description: Unsure. + * Forward params: function(this, entityid, Float:floata) + * Return type: None. + * Execute params: ExecuteHam(Ham_TFC_TakeConcussionBlast, this, entityid, Float:floata); + */ + Ham_TFC_TakeConcussionBlast, + + /** + * Description: Unsure. + * Forward params: function(this, entityid) + * Return type: None. + * Execute params: ExecuteHam(Ham_TFC_Concuss, this, entityid); + */ + Ham_TFC_Concuss, + + + /** + * Description: Unsure. + * Is only in ESF Open Beta. + * Forward params: function(this) + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_ESF_IsEnvModel, this); + */ + Ham_ESF_IsEnvModel, + + /** + * Description: Unsure. + * Is only in ESF Open Beta. + * Forward params: function(this, entityida, entityidb, Float:floata, Float:floatb, dmgbits) + * Return type: Integer. + * Execute params: ExecuteHam(Ham_ESF_TakeDamage2, this, entityida, entityidb, Float:floata, Float:floatb, dmgbits); + */ + Ham_ESF_TakeDamage2, + + /** + * Description: Returns how many points each entity is worth. + * Forward params: function(this) + * Return type: Integer. + * Execute params: ExecuteHam(Ham_NS_GetPointValue, this); + */ + Ham_NS_GetPointValue, + + /** + * Description: Unsure. Probably awards this with the killing of idvictim. + * Forward params: function(this, idvictim) + * Return type: None. + * Execute params: ExecuteHam(Ham_NS_AwardKill, this, idvictim); + */ + Ham_NS_AwardKill, + + /** + * Description: Unsure, probably whenever an entity resets after a new round. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_NS_ResetEntity, this); + */ + Ham_NS_ResetEntity, + + /** + * Description: Unsure. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_NS_UpdateOnRemove, this) + */ + Ham_NS_UpdateOnRemove, + + + /** Virtual functions added to TS in TS 3 */ + + /** + * Description: Unsure. + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_TS_GiveSlowMul, this) + */ + Ham_TS_GiveSlowMul, + + /** + * Description: Unsure. The second paramater is actually a char. + * Forward params: function(this, Float:someval, someotherval) + * Return type: None. + * Execute params: ExecuteHam(Ham_TS_GoSlow, this, Float:someval, someotherval) + */ + Ham_TS_GoSlow, + + /** + * Description: Probably returns true if the user is in slow mo. + * Forward params: function(this) + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_TS_InSlow, this) + */ + Ham_TS_InSlow, + + /** + * Description: Returns true if the entity is an objective. + * Forward params: function(this) + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_TS_IsObjective, this) + */ + Ham_TS_IsObjective, + + /** + * Description: Unsure. + * Forward params: function(this, bool:someval) + * Return type: None. + * Execute params: ExecuteHam(Ham_TS_EnableObjective, this, bool:someval) + */ + Ham_TS_EnableObjective, + + /** + * Description: Probably called when the engine call to OnEntFreePrivateData is called (the entity destructor.) + * Forward params: function(this) + * Return type: None. + * Execute params: ExecuteHam(Ham_TS_OnEntFreePrivateData, this) + */ + Ham_TS_OnFreeEntPrivateData, + + /** + * Description: Probably called when the engine call to ShouldCollide is called. + * Forward params: function(this, otherEntity) + * Return type: Integer (boolean). + * Execute params: ExecuteHam(Ham_TS_ShouldCollide, this, otherEntity) + */ + Ham_TS_ShouldCollide, + + + /** + * DONT USE ME LOL + */ + HAM_LAST_ENTRY_DONT_USE_ME_LOL +}; + +enum HamError +{ + HAM_OK = 0, + + HAM_INVALID_FUNC, // The function is not valid + HAM_FUNC_NOT_CONFIGURED, // This function is not configured in hamdata.ini + + HAM_ERR_END +}; diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/hamsandwich.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/hamsandwich.inc new file mode 100644 index 0000000..0cb55cc --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/hamsandwich.inc @@ -0,0 +1,382 @@ +/** + * Ham Sandwich module include file. + * (c) 2007, The AMX Mod X Development Team + * + * - + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * In addition, as a special exception, the author gives permission to + * link the code of this program with the Half-Life Game Engine ("HL + * Engine") and Modified Game Libraries ("MODs") developed by Valve, + * L.L.C ("Valve"). You must obey the GNU General Public License in all + * respects for all of the code used other than the HL Engine and MODs + * from Valve. If you modify this file, you may extend this exception + * to your version of the file, but you are not obligated to do so. If + * you do not wish to do so, delete this exception statement from your + * version. + */ + +/** + * Ham Sandwich is a module that is used to hook and call virtual functions of + * entities. + * Virtual functions are mod-specific functions. This means that in order + * for this to work on a mod, it needs to be configured with the hamdata.ini + * file. + * Be very careful with parameter passing to these functions. + */ + +#if defined _hamsandwich_included + #endinput +#endif +#define _hamsandwich_included + +#include <ham_const> + +#if AMXX_VERSION_NUM >= 175 + #pragma reqlib hamsandwich + #if !defined AMXMODX_NOAUTOLOAD + #pragma loadlib hamsandwich + #endif +#else + #pragma library hamsandwich +#endif + +/** + * Hooks the virtual table for the specified entity class. + * An example would be: RegisterHam(Ham_TakeDamage, "player", "player_hurt"); + * Look at the Ham enum for parameter lists. + * + * @param function The function to hook. + * @param EntityClass The entity classname to hook. + * @param callback The forward to call. + * @param post Whether or not to forward this in post. + * @return Returns a handle to the forward. Use EnableHamForward/DisableHamForward to toggle the forward on or off. + */ +native HamHook:RegisterHam(Ham:function, const EntityClass[], const Callback[], Post=0); + +/** + * Hooks the virtual table for the specified entity's class. + * An example would be: RegisterHam(Ham_TakeDamage, id, "player_hurt"); + * Look at the Ham enum for parameter lists. + * Note: This will cause hooks for the entire internal class that the entity is + * not exclusively for the provided entity. + * + * @param function The function to hook. + * @param EntityId The entity classname to hook. + * @param callback The forward to call. + * @param post Whether or not to forward this in post. + * @return Returns a handle to the forward. Use EnableHamForward/DisableHamForward to toggle the forward on or off. + */ +native HamHook:RegisterHamFromEntity(Ham:function, EntityId, const Callback[], Post=0); + + +/** + * Stops a ham forward from triggering. + * Use the return value from RegisterHam as the parameter here! + * + * @param fwd The forward to stop. + */ +native DisableHamForward(HamHook:fwd); + +/** + * Starts a ham forward back up. + * Use the return value from RegisterHam as the parameter here! + * + * @param fwd The forward to re-enable. + */ +native EnableHamForward(HamHook:fwd); + +/** + * Executes the virtual function on the entity. + * Look at the Ham enum for parameter lists. + * + * @param function The function to call. + * @param id The id of the entity to execute it on. + */ +native ExecuteHam(Ham:function, this, any:...); + +/** + * Executes the virtual function on the entity, this will trigger all hooks on that function. + * Be very careful about recursion! + * Look at the Ham enum for parameter lists. + * + * @param function The function to call. + * @param id The id of the entity to execute it on. + */ +native ExecuteHamB(Ham:function, this, any:...); + +/** + * Gets the return status of the current hook. + * This is useful to determine what return natives to use. + * + * @return The current status of the hook (such as HAM_SUPERCEDE). + */ +native GetHamReturnStatus(); + +/** + * Gets the return value of a hook for hooks that return integers or booleans. + * + * @param output The variable to store the value in. + */ +native GetHamReturnInteger(&output); + +/** + * Gets the return value of a hook for hooks that return float. + * + * @param output The variable to store the value in. + */ +native GetHamReturnFloat(&Float:output); + +/** + * Gets the return value of a hook for hooks that return Vectors. + * + * @param output The variable to store the value in. + */ +native GetHamReturnVector(Float:output[3]); + +/** + * Gets the return value of a hook for hooks that return entities. + * + * @param output The variable to store the value in. Will be -1 on null. + */ +native GetHamReturnEntity(&output); + +/** + * Gets the return value of a hook for hooks that return strings. + * + * @param output The buffer to store the string in. + * @param size The string size of the buffer. + */ +native GetHamReturnString(output[], size); + +/** + * Gets the original return value of a hook for hooks that return integers or booleans. + * + * @param output The variable to store the value in. + */ +native GetOrigHamReturnInteger(&output); + +/** + * Gets the original return value of a hook for hooks that return floats. + * + * @param output The variable to store the value in. + */ +native GetOrigHamReturnFloat(&Float:output); + +/** + * Gets the original return value of a hook for hooks that return Vectors. + * + * @param output The variable to store the value in. + */ +native GetOrigHamReturnVector(Float:output[3]); + +/** + * Gets the original return value of a hook for hooks that return entities. + * + * @param output The variable to store the value in. -1 on null. + */ +native GetOrigHamReturnEntity(&output); + +/** + * Gets the original return value of a hook for hooks that return strings. + * + * @param output The buffer to store the string in. + * @param size The size of the buffer. + */ +native GetOrigHamReturnString(output[], size); + + +/** + * Sets the return value of a hook that returns an integer or boolean. + * This needs to be used in conjunction with HAM_OVERRIDE or HAM_SUPERCEDE. + * + * @param value The value to set the return to. + */ +native SetHamReturnInteger(value); + +/** + * Sets the return value of a hook that returns a float. + * This needs to be used in conjunction with HAM_OVERRIDE or HAM_SUPERCEDE. + * + * @param value The value to set the return to. + */ +native SetHamReturnFloat(Float:value); + +/** + * Sets the return value of a hook that returns a Vector. + * This needs to be used in conjunction with HAM_OVERRIDE or HAM_SUPERCEDE. + * + * @param value The value to set the return to. + */ +native SetHamReturnVector(const Float:value[3]); + +/** + * Sets the return value of a hook that returns an entity. Set to -1 for null. + * This needs to be used in conjunction with HAM_OVERRIDE or HAM_SUPERCEDE. + * + * @param value The value to set the return to. + */ +native SetHamReturnEntity(value); + +/** + * Sets the return value of a hook that returns a string. + * This needs to be used in conjunction with HAM_OVERRIDE or HAM_SUPERCEDE. + * + * @param value The value to set the return to. + */ +native SetHamReturnString(const value[]); + + +/** + * Sets a parameter on the fly of the current hook. This has no effect in post hooks. + * Use this on parameters that are integers. + * + * @param which Which parameter to change. Starts at 1, and works up from the left to right. 1 is always "this". + * @param value The value to change it to. + */ +native SetHamParamInteger(which, value); + +/** + * Sets a parameter on the fly of the current hook. This has no effect in post hooks. + * Use this on parameters that are floats. + * + * @param which Which parameter to change. Starts at 1, and works up from the left to right. 1 is always "this". + * @param value The value to change it to. + */ +native SetHamParamFloat(which, Float:value); + +/** + * Sets a parameter on the fly of the current hook. This has no effect in post hooks. + * Use this on parameters that are Vectors. + * + * @param which Which parameter to change. Starts at 1, and works up from the left to right. 1 is always "this". + * @param value The value to change it to. + */ +native SetHamParamVector(which, const Float:value[3]); + +/** + * Sets a parameter on the fly of the current hook. This has no effect in post hooks. + * Use this on parameters that are entities. + * + * @param which Which parameter to change. Starts at 1, and works up from the left to right. 1 is always "this". + * @param value The value to change it to. + */ +native SetHamParamEntity(which, value); + +/** + * Sets a parameter on the fly of the current hook. This has no effect in post hooks. + * Use this on parameters that are strings. + * + * @param which Which parameter to change. Starts at 1, and works up from the left to right. 1 is always "this". + * @param value The value to change it to. + */ +native SetHamParamString(which, const output[]); + +/** + * Sets a parameter on the fly of the current hook. This has no effect in post hooks. + * Use this on parameters that are trace result handles. + * + * @param which Which parameter to change. Starts at 1, and works up from the left to right. 1 is always "this". + * @param value The value to change it to. + */ +native SetHamParamTraceResult(which, tr_handle); + + +/** + * Returns whether or not the function for the specified Ham is valid. + * Things that would make it invalid would be bounds (an older module version + * may not have all of the functions), and the function not being found in + * the mod's hamdata.ini file. + * + * @param function The function to look up. + * @return true if the function is valid, false otherwise. + */ +native bool:IsHamValid(Ham:function); + +/** + * This is used to compliment fakemeta's {get,set}_pdata_{int,float,string}. + * This requires the mod to have the pev and base fields set in hamdata.ini. + * Note this dereferences memory! Improper use of this will crash the server. + * This will return an index of the corresponding cbase field in private data. + * Returns -1 on a null entry. + * + * @param id The entity to examine the private data. + * @param offset The windows offset of the data. + * @param linuxdiff The linux difference of the data. + * @param macdiff The mac os x difference of the data. + * @return The index of the corresponding pdata field. -1 for none set. + */ +native get_pdata_cbase(id, offset, linuxdiff=5, macdiff=5); + +/** + * This is used to compliment fakemeta's {get,set}_pdata_{int,float,string}. + * This requires the mod to have the pev and base fields set in hamdata.ini. + * This will set the corresponding cbase field in private data with the index. + * Pass -1 to null the entry. + * + * @param id The entity to examine the private data. + * @param offset The windows offset of the data. + * @param value The index to store, -1 for invalid + * @param linuxdiff The linux difference of the data. + * @param macdiff The mac os x difference of the data. + */ +native set_pdata_cbase(id, offset, value, linuxdiff=5, macdiff=5); + +/** + * This is similar to the get_pdata_cbase, however it does not dereference memory. + * This is many times slower than get_pdata_cbase, and this should only be used + * for testing and finding of offsets, not actual release quality plugins. + * This will return an index of the corresponding cbase field in private data. + * Returns -1 on a null entry. -2 on an invalid entry. + * + * @param id Entry to examine the private data. + * @param offset The windows offset of the data. + * @param linuxdiff The linux difference of the data. + * @param macdiff The mac os x difference of the data. + * @return The index of the corresponding pdata field, -1 for null, -2 for invalid. + */ +native get_pdata_cbase_safe(id, offset, linuxdiff=5, macdiff=5); + + + + +// This is the callback from the module, this handles any fatal errors. +// This will in turn call the "HamFilter(Ham:id, HamError:err, const reason[])" public, if it exists. +// Return PLUGIN_HANDLED from within the HamFilter to stop the plugin from failing. +// Any other return value will fail the plugin. +// You do not need to have a HamFilter, if there is none, all fatal errors will fail the plugin. +// Do not modify this! +public __fatal_ham_error(Ham:id, HamError:err, const reason[]) +{ + + new func=get_func_id("HamFilter", -1); + new bool:fail=true; + + if (func != -1 && callfunc_begin_i(func, -1)==1) + { + callfunc_push_int(_:id); + callfunc_push_int(_:err); + callfunc_push_str(reason, false); + if (callfunc_end()==PLUGIN_HANDLED) + { + fail=false; + } + } + if (fail) + { + set_fail_state(reason); + } + +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/hlsdk_const.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/hlsdk_const.inc new file mode 100644 index 0000000..5f0b183 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/hlsdk_const.inc @@ -0,0 +1,492 @@ +/* Half-Life Software Development Kit constants +* +* by the AMX Mod X Development Team +* +* This file is provided as is (no warranties). +* +*/ + +#if defined _hlsdk_const_included + #endinput +#endif +#define _hlsdk_const_included + +// pev(entity, pev_button) or pev(entity, pev_oldbuttons) values +#define IN_ATTACK (1<<0) +#define IN_JUMP (1<<1) +#define IN_DUCK (1<<2) +#define IN_FORWARD (1<<3) +#define IN_BACK (1<<4) +#define IN_USE (1<<5) +#define IN_CANCEL (1<<6) +#define IN_LEFT (1<<7) +#define IN_RIGHT (1<<8) +#define IN_MOVELEFT (1<<9) +#define IN_MOVERIGHT (1<<10) +#define IN_ATTACK2 (1<<11) +#define IN_RUN (1<<12) +#define IN_RELOAD (1<<13) +#define IN_ALT1 (1<<14) +#define IN_SCORE (1<<15) // Used by client.dll for when scoreboard is held down + +// pev(entity, pev_flags) values +#define FL_FLY (1<<0) // Changes the SV_Movestep() behavior to not need to be on ground +#define FL_SWIM (1<<1) // Changes the SV_Movestep() behavior to not need to be on ground (but stay in water) +#define FL_CONVEYOR (1<<2) +#define FL_CLIENT (1<<3) +#define FL_INWATER (1<<4) +#define FL_MONSTER (1<<5) +#define FL_GODMODE (1<<6) +#define FL_NOTARGET (1<<7) +#define FL_SKIPLOCALHOST (1<<8) // Don't send entity to local host, it's predicting this entity itself +#define FL_ONGROUND (1<<9) // At rest / on the ground +#define FL_PARTIALGROUND (1<<10) // Not all corners are valid +#define FL_WATERJUMP (1<<11) // Player jumping out of water +#define FL_FROZEN (1<<12) // Player is frozen for 3rd person camera +#define FL_FAKECLIENT (1<<13) // JAC: fake client, simulated server side; don't send network messages to them +#define FL_DUCKING (1<<14) // Player flag -- Player is fully crouched +#define FL_FLOAT (1<<15) // Apply floating force to this entity when in water +#define FL_GRAPHED (1<<16) // Worldgraph has this ent listed as something that blocks a connection +#define FL_IMMUNE_WATER (1<<17) +#define FL_IMMUNE_SLIME (1<<18) +#define FL_IMMUNE_LAVA (1<<19) +#define FL_PROXY (1<<20) // This is a spectator proxy +#define FL_ALWAYSTHINK (1<<21) // Brush model flag -- call think every frame regardless of nextthink - ltime (for constantly changing velocity/path) +#define FL_BASEVELOCITY (1<<22) // Base velocity has been applied this frame (used to convert base velocity into momentum) +#define FL_MONSTERCLIP (1<<23) // Only collide in with monsters who have FL_MONSTERCLIP set +#define FL_ONTRAIN (1<<24) // Player is _controlling_ a train, so movement commands should be ignored on client during prediction. +#define FL_WORLDBRUSH (1<<25) // Not moveable/removeable brush entity (really part of the world, but represented as an entity for transparency or something) +#define FL_SPECTATOR (1<<26) // This client is a spectator, don't run touch functions, etc. +#define FL_CUSTOMENTITY (1<<29) // This is a custom entity +#define FL_KILLME (1<<30) // This entity is marked for death -- This allows the engine to kill ents at the appropriate time +#define FL_DORMANT (1<<31) // Entity is dormant, no updates to client + +// engfunc(EngFunc_WalkMove, entity, Float:yaw, Float:dist, iMode) iMode values +#define WALKMOVE_NORMAL 0 // Normal walkmove +#define WALKMOVE_WORLDONLY 1 // Doesn't hit ANY entities, no matter what the solid type +#define WALKMOVE_CHECKONLY 2 // Move, but don't touch triggers + +// pev(entity, pev_movetype) values +#define MOVETYPE_NONE 0 // Never moves +#define MOVETYPE_WALK 3 // Player only - moving on the ground +#define MOVETYPE_STEP 4 // Gravity, special edge handling -- monsters use this +#define MOVETYPE_FLY 5 // No gravity, but still collides with stuff +#define MOVETYPE_TOSS 6 // Gravity/Collisions +#define MOVETYPE_PUSH 7 // No clip to world, push and crush +#define MOVETYPE_NOCLIP 8 // No gravity, no collisions, still do velocity/avelocity +#define MOVETYPE_FLYMISSILE 9 // Extra size to monsters +#define MOVETYPE_BOUNCE 10 // Just like Toss, but reflect velocity when contacting surfaces +#define MOVETYPE_BOUNCEMISSILE 11 // Bounce w/o gravity +#define MOVETYPE_FOLLOW 12 // Track movement of aiment +#define MOVETYPE_PUSHSTEP 13 // BSP model that needs physics/world collisions (uses nearest hull for world collision) + +// pev(entity, pev_solid) values +// NOTE: Some movetypes will cause collisions independent of SOLID_NOT/SOLID_TRIGGER when the entity moves +// SOLID only effects OTHER entities colliding with this one when they move - UGH! +#define SOLID_NOT 0 // No interaction with other objects +#define SOLID_TRIGGER 1 // Touch on edge, but not blocking +#define SOLID_BBOX 2 // Touch on edge, block +#define SOLID_SLIDEBOX 3 // Touch on edge, but not an onground +#define SOLID_BSP 4 // BSP clip, touch on edge, block + +// pev(entity, pev_deadflag) values +#define DEAD_NO 0 // Alive +#define DEAD_DYING 1 // Playing death animation or still falling off of a ledge waiting to hit ground +#define DEAD_DEAD 2 // Dead, lying still +#define DEAD_RESPAWNABLE 3 +#define DEAD_DISCARDBODY 4 + +// new Float:takedamage, pev(entity, pev_takedamage, takedamage) values +#define DAMAGE_NO 0.0 +#define DAMAGE_YES 1.0 +#define DAMAGE_AIM 2.0 + +// pev(entity, pev_effects) values +#define EF_BRIGHTFIELD 1 // Swirling cloud of particles +#define EF_MUZZLEFLASH 2 // Single frame ELIGHT on entity attachment 0 +#define EF_BRIGHTLIGHT 4 // DLIGHT centered at entity origin +#define EF_DIMLIGHT 8 // Player flashlight +#define EF_INVLIGHT 16 // Get lighting from ceiling +#define EF_NOINTERP 32 // Don't interpolate the next frame +#define EF_LIGHT 64 // Rocket flare glow sprite +#define EF_NODRAW 128 // Don't draw entity + +// engfunc(EngFunc_PointContents, Float:origin) return values +#define CONTENTS_EMPTY -1 +#define CONTENTS_SOLID -2 +#define CONTENTS_WATER -3 +#define CONTENTS_SLIME -4 +#define CONTENTS_LAVA -5 +#define CONTENTS_SKY -6 +#define CONTENTS_ORIGIN -7 // Removed at csg time +#define CONTENTS_CLIP -8 // Changed to contents_solid +#define CONTENTS_CURRENT_0 -9 +#define CONTENTS_CURRENT_90 -10 +#define CONTENTS_CURRENT_180 -11 +#define CONTENTS_CURRENT_270 -12 +#define CONTENTS_CURRENT_UP -13 +#define CONTENTS_CURRENT_DOWN -14 +#define CONTENTS_TRANSLUCENT -15 +#define CONTENTS_LADDER -16 +#define CONTENT_FLYFIELD -17 +#define CONTENT_GRAVITY_FLYFIELD -18 +#define CONTENT_FOG -19 + +// Instant damage values for use with gmsgDamage 3rd value write_long(BIT) +#define DMG_GENERIC 0 // Generic damage was done +#define DMG_CRUSH (1<<0) // Crushed by falling or moving object +#define DMG_BULLET (1<<1) // Shot +#define DMG_SLASH (1<<2) // Cut, clawed, stabbed +#define DMG_BURN (1<<3) // Heat burned +#define DMG_FREEZE (1<<4) // Frozen +#define DMG_FALL (1<<5) // Fell too far +#define DMG_BLAST (1<<6) // Explosive blast damage +#define DMG_CLUB (1<<7) // Crowbar, punch, headbutt +#define DMG_SHOCK (1<<8) // Electric shock +#define DMG_SONIC (1<<9) // Sound pulse shockwave +#define DMG_ENERGYBEAM (1<<10) // Laser or other high energy beam +#define DMG_NEVERGIB (1<<12) // With this bit OR'd in, no damage type will be able to gib victims upon death +#define DMG_ALWAYSGIB (1<<13) // With this bit OR'd in, any damage type can be made to gib victims upon death. +#define DMG_DROWN (1<<14) // Drowning +#define DMG_PARALYZE (1<<15) // Slows affected creature down +#define DMG_NERVEGAS (1<<16) // Nerve toxins, very bad +#define DMG_POISON (1<<17) // Blood poisioning +#define DMG_RADIATION (1<<18) // Radiation exposure +#define DMG_DROWNRECOVER (1<<19) // Drowning recovery +#define DMG_ACID (1<<20) // Toxic chemicals or acid burns +#define DMG_SLOWBURN (1<<21) // In an oven +#define DMG_SLOWFREEZE (1<<22) // In a subzero freezer +#define DMG_MORTAR (1<<23) // Hit by air raid (done to distinguish grenade from mortar) +#define DMG_TIMEBASED (~(0x3fff)) // Mask for time-based damage + +// The fNoMonsters parameter of EngFunc_TraceLine, EngFunc_TraceMonsterHull, EngFunc_TraceHull, and EngFunc_TraceSphere +#define DONT_IGNORE_MONSTERS 0 +#define IGNORE_MONSTERS 1 +#define IGNORE_MISSILE 2 +#define IGNORE_GLASS 0x100 + +// The hullnumber paramater of EngFunc_TraceHull, EngFunc_TraceModel and DLLFunc_GetHullBounds +#define HULL_POINT 0 +#define HULL_HUMAN 1 +#define HULL_LARGE 2 +#define HULL_HEAD 3 + +// global_get(glb_trace_flags) +#define FTRACE_SIMPLEBOX (1<<0) // Traceline with a simple box + +// Used with get/set_es(es_handle, ES_eFlags, ...) (entity_state data structure) +#define EFLAG_SLERP 1 // Do studio interpolation of this entity + +// pev(entity, pev_spawnflags) values +// Many of these flags apply to specific entities +// func_train +#define SF_TRAIN_WAIT_RETRIGGER 1 +#define SF_TRAIN_START_ON 4 // Train is initially moving +#define SF_TRAIN_PASSABLE 8 // Train is not solid -- used to make water trains + +// func_wall_toggle +#define SF_WALL_START_OFF 0x0001 + +// func_converyor +#define SF_CONVEYOR_VISUAL 0x0001 +#define SF_CONVEYOR_NOTSOLID 0x0002 + +// func_button +#define SF_BUTTON_DONTMOVE 1 +#define SF_BUTTON_TOGGLE 32 // Button stays pushed until reactivated +#define SF_BUTTON_SPARK_IF_OFF 64 // Button sparks in OFF state +#define SF_BUTTON_TOUCH_ONLY 256 // Button only fires as a result of USE key. + +// func_rot_button +#define SF_ROTBUTTON_NOTSOLID 1 + +// env_global +#define SF_GLOBAL_SET 1 // Set global state to initial state on spawn + +// multisource +#define SF_MULTI_INIT 1 + +// momentary_rot_button +#define SF_MOMENTARY_DOOR 0x0001 + +// button_target +#define SF_BTARGET_USE 0x0001 +#define SF_BTARGET_ON 0x0002 + +// func_door, func_water, func_door_rotating, momementary_door +#define SF_DOOR_ROTATE_Y 0 +#define SF_DOOR_START_OPEN 1 +#define SF_DOOR_ROTATE_BACKWARDS 2 +#define SF_DOOR_PASSABLE 8 +#define SF_DOOR_ONEWAY 16 +#define SF_DOOR_NO_AUTO_RETURN 32 +#define SF_DOOR_ROTATE_Z 64 +#define SF_DOOR_ROTATE_X 128 +#define SF_DOOR_USE_ONLY 256 // Door must be opened by player's use button +#define SF_DOOR_NOMONSTERS 512 // Monster can't open +#define SF_DOOR_SILENT 0x80000000 + +// gibshooter +#define SF_GIBSHOOTER_REPEATABLE 1 // Allows a gibshooter to be refired + +// env_funnel +#define SF_FUNNEL_REVERSE 1 // Funnel effect repels particles instead of attracting them + +// env_bubbles +#define SF_BUBBLES_STARTOFF 0x0001 + +// env_blood +#define SF_BLOOD_RANDOM 0x0001 +#define SF_BLOOD_STREAM 0x0002 +#define SF_BLOOD_PLAYER 0x0004 +#define SF_BLOOD_DECAL 0x0008 + +// env_shake +#define SF_SHAKE_EVERYONE 0x0001 // Don't check radius +#define SF_SHAKE_DISRUPT 0x0002 // Disrupt controls +#define SF_SHAKE_INAIR 0x0004 // Shake players in air + +// env_fade +#define SF_FADE_IN 0x0001 // Fade in, not out +#define SF_FADE_MODULATE 0x0002 // Modulate, don't blend +#define SF_FADE_ONLYONE 0x0004 + +// env_beam, env_lightning +#define SF_BEAM_STARTON 0x0001 +#define SF_BEAM_TOGGLE 0x0002 +#define SF_BEAM_RANDOM 0x0004 +#define SF_BEAM_RING 0x0008 +#define SF_BEAM_SPARKSTART 0x0010 +#define SF_BEAM_SPARKEND 0x0020 +#define SF_BEAM_DECALS 0x0040 +#define SF_BEAM_SHADEIN 0x0080 +#define SF_BEAM_SHADEOUT 0x0100 +#define SF_BEAM_TEMPORARY 0x8000 + +// env_sprite +#define SF_SPRITE_STARTON 0x0001 +#define SF_SPRITE_ONCE 0x0002 +#define SF_SPRITE_TEMPORARY 0x8000 + +// env_message +#define SF_MESSAGE_ONCE 0x0001 // Fade in, not out +#define SF_MESSAGE_ALL 0x0002 // Send to all clients + +// env_explosion +#define SF_ENVEXPLOSION_NODAMAGE (1<<0) // When set, ENV_EXPLOSION will not actually inflict damage +#define SF_ENVEXPLOSION_REPEATABLE (1<<1) // Can this entity be refired? +#define SF_ENVEXPLOSION_NOFIREBALL (1<<2) // Don't draw the fireball +#define SF_ENVEXPLOSION_NOSMOKE (1<<3) // Don't draw the smoke +#define SF_ENVEXPLOSION_NODECAL (1<<4) // Don't make a scorch mark +#define SF_ENVEXPLOSION_NOSPARKS (1<<5) // Don't make a scorch mark + +// func_tank +#define SF_TANK_ACTIVE 0x0001 +#define SF_TANK_PLAYER 0x0002 +#define SF_TANK_HUMANS 0x0004 +#define SF_TANK_ALIENS 0x0008 +#define SF_TANK_LINEOFSIGHT 0x0010 +#define SF_TANK_CANCONTROL 0x0020 +#define SF_TANK_SOUNDON 0x8000 + +// grenade +#define SF_DETONATE 0x0001 + +// item_suit +#define SF_SUIT_SHORTLOGON 0x0001 + +// game_score +#define SF_SCORE_NEGATIVE 0x0001 +#define SF_SCORE_TEAM 0x0002 + +// game_text +#define SF_ENVTEXT_ALLPLAYERS 0x0001 + +// game_team_master +#define SF_TEAMMASTER_FIREONCE 0x0001 +#define SF_TEAMMASTER_ANYTEAM 0x0002 + +// game_team_set +#define SF_TEAMSET_FIREONCE 0x0001 +#define SF_TEAMSET_CLEARTEAM 0x0002 + +// game_player_hurt +#define SF_PKILL_FIREONCE 0x0001 + +// game_counter +#define SF_GAMECOUNT_FIREONCE 0x0001 +#define SF_GAMECOUNT_RESET 0x0002 + +// game_player_equip +#define SF_PLAYEREQUIP_USEONLY 0x0001 + +// game_player_team +#define SF_PTEAM_FIREONCE 0x0001 +#define SF_PTEAM_KILL 0x0002 +#define SF_PTEAM_GIB 0x0004 + +// func_trackchange +#define SF_PLAT_TOGGLE 0x0001 +#define SF_TRACK_ACTIVATETRAIN 0x00000001 +#define SF_TRACK_RELINK 0x00000002 +#define SF_TRACK_ROTMOVE 0x00000004 +#define SF_TRACK_STARTBOTTOM 0x00000008 +#define SF_TRACK_DONT_MOVE 0x00000010 + +// func_tracktrain +#define SF_TRACKTRAIN_NOPITCH 0x0001 +#define SF_TRACKTRAIN_NOCONTROL 0x0002 +#define SF_TRACKTRAIN_FORWARDONLY 0x0004 +#define SF_TRACKTRAIN_PASSABLE 0x0008 +#define SF_PATH_DISABLED 0x00000001 +#define SF_PATH_FIREONCE 0x00000002 +#define SF_PATH_ALTREVERSE 0x00000004 +#define SF_PATH_DISABLE_TRAIN 0x00000008 +#define SF_PATH_ALTERNATE 0x00008000 +#define SF_CORNER_WAITFORTRIG 0x001 +#define SF_CORNER_TELEPORT 0x002 +#define SF_CORNER_FIREONCE 0x004 + +// trigger_push +#define SF_TRIGGER_PUSH_START_OFF 2 // Spawnflag that makes trigger_push spawn turned OFF + +// trigger_hurt +#define SF_TRIGGER_HURT_TARGETONCE 1 // Only fire hurt target once +#define SF_TRIGGER_HURT_START_OFF 2 // Spawnflag that makes trigger_push spawn turned OFF +#define SF_TRIGGER_HURT_NO_CLIENTS 8 // Spawnflag that makes trigger_push spawn turned OFF +#define SF_TRIGGER_HURT_CLIENTONLYFIRE 16 // Trigger hurt will only fire its target if it is hurting a client +#define SF_TRIGGER_HURT_CLIENTONLYTOUCH 32 // Only clients may touch this trigger + +// trigger_auto +#define SF_AUTO_FIREONCE 0x0001 + +// trigger_relay +#define SF_RELAY_FIREONCE 0x0001 + +// multi_manager +#define SF_MULTIMAN_CLONE 0x80000000 +#define SF_MULTIMAN_THREAD 0x00000001 + +// env_render - Flags to indicate masking off various render parameters that are normally copied to the targets +#define SF_RENDER_MASKFX (1<<0) +#define SF_RENDER_MASKAMT (1<<1) +#define SF_RENDER_MASKMODE (1<<2) +#define SF_RENDER_MASKCOLOR (1<<3) + +// trigger_changelevel +#define SF_CHANGELEVEL_USEONLY 0x0002 + +// trigger_endsection +#define SF_ENDSECTION_USEONLY 0x0001 + +// trigger_camera +#define SF_CAMERA_PLAYER_POSITION 1 +#define SF_CAMERA_PLAYER_TARGET 2 +#define SF_CAMERA_PLAYER_TAKECONTROL 4 + +// func_rotating +#define SF_BRUSH_ROTATE_Y_AXIS 0 +#define SF_BRUSH_ROTATE_INSTANT 1 +#define SF_BRUSH_ROTATE_BACKWARDS 2 +#define SF_BRUSH_ROTATE_Z_AXIS 4 +#define SF_BRUSH_ROTATE_X_AXIS 8 +#define SF_PENDULUM_AUTO_RETURN 16 +#define SF_PENDULUM_PASSABLE 32 +#define SF_BRUSH_ROTATE_SMALLRADIUS 128 +#define SF_BRUSH_ROTATE_MEDIUMRADIUS 256 +#define SF_BRUSH_ROTATE_LARGERADIUS 512 + +// triggers +#define SF_TRIGGER_ALLOWMONSTERS 1 // Monsters allowed to fire this trigger +#define SF_TRIGGER_NOCLIENTS 2 // Players not allowed to fire this trigger +#define SF_TRIGGER_PUSHABLES 4 // Only pushables can fire this trigger + +#define SF_TRIG_PUSH_ONCE 1 +// func_breakable +#define SF_BREAK_TRIGGER_ONLY 1 // May only be broken by trigger +#define SF_BREAK_TOUCH 2 // Can be 'crashed through' by running player (plate glass) +#define SF_BREAK_PRESSURE 4 // Can be broken by a player standing on it +#define SF_BREAK_CROWBAR 256 // Instant break if hit with crowbar + +// func_pushable (it's also func_breakable, so don't collide with those flags) +#define SF_PUSH_BREAKABLE 128 + +// light_spawn +#define SF_LIGHT_START_OFF 1 +#define SPAWNFLAG_NOMESSAGE 1 +#define SPAWNFLAG_NOTOUCH 1 +#define SPAWNFLAG_DROIDONLY 4 +#define SPAWNFLAG_USEONLY 1 // Can't be touched, must be used (buttons) + +// Monster Spawnflags +#define SF_MONSTER_WAIT_TILL_SEEN 1 // Spawnflag that makes monsters wait until player can see them before attacking +#define SF_MONSTER_GAG 2 // No idle noises from this monster +#define SF_MONSTER_HITMONSTERCLIP 4 +#define SF_MONSTER_PRISONER 16 // Monster won't attack anyone, no one will attacke him +#define SF_MONSTER_WAIT_FOR_SCRIPT 128 // Spawnflag that makes monsters wait to check for attacking until the script is done or they've been attacked +#define SF_MONSTER_PREDISASTER 256 // This is a predisaster scientist or barney; influences how they speak +#define SF_MONSTER_FADECORPSE 512 // Fade out corpse after death +#define SF_MONSTER_FALL_TO_GROUND 0x80000000 +#define SF_MONSTER_TURRET_AUTOACTIVATE 32 +#define SF_MONSTER_TURRET_STARTINACTIVE 64 +#define SF_MONSTER_WAIT_UNTIL_PROVOKED 64 // Don't attack the player unless provoked + +// info_decal +#define SF_DECAL_NOTINDEATHMATCH 2048 + +// worldspawn +#define SF_WORLD_DARK 0x0001 // Fade from black at startup +#define SF_WORLD_TITLE 0x0002 // Display game title at startup +#define SF_WORLD_FORCETEAM 0x0004 // Force teams + +// Set this bit on guns and stuff that should never respawn +#define SF_NORESPAWN (1<<30) + +// Valve Mod Weapon Constants +#define HLI_HEALTHKIT 1 +#define HLI_ANTIDOTE 2 +#define HLI_SECURITY 3 +#define HLI_BATTERY 4 + +#define HLW_NONE 0 +#define HLW_CROWBAR 1 +#define HLW_GLOCK 2 +#define HLW_PYTHON 3 +#define HLW_MP5 4 +#define HLW_CHAINGUN 5 +#define HLW_CROSSBOW 6 +#define HLW_SHOTGUN 7 +#define HLW_RPG 8 +#define HLW_GAUSS 9 +#define HLW_EGON 10 +#define HLW_HORNETGUN 11 +#define HLW_HANDGRENADE 12 +#define HLW_TRIPMINE 13 +#define HLW_SATCHEL 14 +#define HLW_SNARK 15 +#define HLW_SUIT 31 +#define HLW_ALLWEAPONS (~(1<<HLW_SUIT)) + + +#define FEV_NOTHOST (1<<0) // Skip local host for event send. +#define FEV_RELIABLE (1<<1) // Send the event reliably. You must specify the origin and angles + // for this to work correctly on the server for anything + // that depends on the event origin/angles. I.e., the origin/angles are not + // taken from the invoking edict for reliable events. +#define FEV_GLOBAL (1<<2) // Don't restrict to PAS/PVS, send this event to _everybody_ on the server ( useful for stopping CHAN_STATIC + // sounds started by client event when client is not in PVS anymore ( hwguy in TFC e.g. ). +#define FEV_UPDATE (1<<3) // If this client already has one of these events in its queue, just update the event instead of sending it as a duplicate +#define FEV_HOSTONLY (1<<4) // Only send to entity specified as the invoker +#define FEV_SERVER (1<<5) // Only send if the event was created on the server. +#define FEV_CLIENT (1<<6) // Only issue event client side ( from shared code ) + +// These are caps bits to indicate what an object's capabilities (currently used for save/restore and level transitions) +#define FCAP_CUSTOMSAVE 0x00000001 +#define FCAP_ACROSS_TRANSITION 0x00000002 // should transfer between transitions +#define FCAP_MUST_SPAWN 0x00000004 // Spawn after restore +#define FCAP_DONT_SAVE 0x80000000 // Don't save this +#define FCAP_IMPULSE_USE 0x00000008 // can be used by the player +#define FCAP_CONTINUOUS_USE 0x00000010 // can be used by the player +#define FCAP_ONOFF_USE 0x00000020 // can be used by the player +#define FCAP_DIRECTIONAL_USE 0x00000040 // Player sends +/- 1 when using (currently only tracktrains) +#define FCAP_MASTER 0x00000080 // Can be used to "master" other entities (like multisource) diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/lang.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/lang.inc new file mode 100644 index 0000000..ba08635 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/lang.inc @@ -0,0 +1,56 @@ +/* Language functions +* +* by the AMX Mod X Development Team +* +* This file is provided as is (no warranties). +*/ + +#if defined _lang_included + #endinput +#endif +#define _lang_included + +//return the number of languages loaded +native get_langsnum(); + +//sets name to the two-letter name of a language returned by get_langsnum +//index starts at 0 +native get_lang(id, name[3]); + +//registers a dictionary file, making sure the words are in the dictionary +// the file should be in "addons/amxx/data/lang/", but only the name needs to be +// given. (e.g. register_dictionary("file.txt") will be addons/amxx/data/file.txt). +native register_dictionary(const filename[]); + +//returns 1 if the language is loaded, 0 otherwise. +native lang_exists(const name[]); + +enum TransKey +{ + TransKey_Bad = -1, +}; + +/** + * Adds or finds a translation key. + */ +native TransKey:CreateLangKey(const key[]); + +/** + * Finds a translation key id without adding on failure. + * Returns -1 on not found. + */ +native TransKey:GetLangTransKey(const key[]); + +/** + * Adds a translation. + */ +native AddTranslation(const lang[3], TransKey:key, const phrase[]); + +/** + * Looks up the translation of the key for the given type + * This does NOT format the output text. + * eg: If the key includes %s, the outputted text will also contain %s. + * NOTE: LANG_PLAYER is invalid in this, use a player index + * or LANG_SERVER + */ +native LookupLangKey(Output[], OutputSize, const Key[], const &id); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/message_const.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/message_const.inc new file mode 100644 index 0000000..3624bd4 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/message_const.inc @@ -0,0 +1,803 @@ +/* Message constants +* +* by the AMX Mod X Development Team +* +* This file is provided as is (no warranties). +* +*/ + +#if defined _message_const_included + #endinput +#endif +#define _message_const_included + +/* Destination types for message_begin() */ +#define MSG_BROADCAST 0 // Unreliable to all +#define MSG_ONE 1 // Reliable to one (msg_entity) +#define MSG_ALL 2 // Reliable to all +#define MSG_INIT 3 // Write to the init string +#define MSG_PVS 4 // Ents in PVS of org +#define MSG_PAS 5 // Ents in PAS of org +#define MSG_PVS_R 6 // Reliable to PVS +#define MSG_PAS_R 7 // Reliable to PAS +#define MSG_ONE_UNRELIABLE 8 // Send to one client, but don't put in reliable stream, put in unreliable datagram (could be dropped) +#define MSG_SPEC 9 // Sends to all spectator proxies + +/* Hardcoded message types for message_begin() + * Look in the actual HLSDK for details! + */ +#define SVC_NOP 1 +#define SVC_DISCONNECT 2 +#define SVC_EVENT 3 +#define SVC_VERSION 4 +#define SVC_SETVIEW 5 +#define SVC_SOUND 6 +#define SVC_TIME 7 +#define SVC_PRINT 8 +#define SVC_STUFFTEXT 9 +#define SVC_SETANGLE 10 +#define SVC_SERVERINFO 11 +#define SVC_LIGHTSTYLE 12 +#define SVC_UPDATEUSERINFO 13 +#define SVC_DELTADESCRIPTION 14 +#define SVC_CLIENTDATA 15 +#define SVC_STOPSOUND 16 +#define SVC_PINGS 17 +#define SVC_PARTICLE 18 +#define SVC_DAMAGE 19 +#define SVC_SPAWNSTATIC 20 +#define SVC_EVENT_RELIABLE 21 +#define SVC_SPAWNBASELINE 22 +#define SVC_TEMPENTITY 23 +#define SVC_SETPAUSE 24 +#define SVC_SIGNONNUM 25 +#define SVC_CENTERPRINT 26 +#define SVC_KILLEDMONSTER 27 +#define SVC_FOUNDSECRET 28 +#define SVC_SPAWNSTATICSOUND 29 +#define SVC_INTERMISSION 30 +#define SVC_FINALE 31 +#define SVC_CDTRACK 32 +#define SVC_RESTORE 33 +#define SVC_CUTSCENE 34 +#define SVC_WEAPONANIM 35 +#define SVC_DECALNAME 36 +#define SVC_ROOMTYPE 37 +#define SVC_ADDANGLE 38 +#define SVC_NEWUSERMSG 39 +#define SVC_PACKETENTITIES 40 +#define SVC_DELTAPACKETENTITIES 41 +#define SVC_CHOKE 42 +#define SVC_RESOURCELIST 43 +#define SVC_NEWMOVEVARS 44 +#define SVC_RESOURCEREQUEST 45 +#define SVC_CUSTOMIZATION 46 +#define SVC_CROSSHAIRANGLE 47 +#define SVC_SOUNDFADE 48 +#define SVC_FILETXFERFAILED 49 +#define SVC_HLTV 50 +#define SVC_DIRECTOR 51 +#define SVC_VOICEINIT 52 +#define SVC_VOICEDATA 53 +#define SVC_SENDEXTRAINFO 54 +#define SVC_TIMESCALE 55 + +/* Message flags for set_msg_block() */ +#define BLOCK_NOT 0 +#define BLOCK_ONCE 1 +#define BLOCK_SET 2 + +/* Used with get_msg_argtype() and set_msg_arg_ */ +enum +{ + ARG_BYTE = 1, /* int */ + ARG_CHAR, /* int */ + ARG_SHORT, /* int */ + ARG_LONG, /* int */ + ARG_ANGLE, /* float */ + ARG_COORD, /* float */ + ARG_STRING, /* string */ + ARG_ENTITY, /* int */ +}; + +/* Temp entity message types for message_begin() */ +#define TE_BEAMPOINTS 0 // Beam effect between two points +// write_byte(TE_BEAMPOINTS) +// write_coord(startposition.x) +// write_coord(startposition.y) +// write_coord(startposition.z) +// write_coord(endposition.x) +// write_coord(endposition.y) +// write_coord(endposition.z) +// write_short(sprite index) +// write_byte(starting frame) +// write_byte(frame rate in 0.1's) +// write_byte(life in 0.1's) +// write_byte(line width in 0.1's) +// write_byte(noise amplitude in 0.01's) +// write_byte(red) +// write_byte(green) +// write_byte(blue) +// write_byte(brightness) +// write_byte(scroll speed in 0.1's) + +#define TE_BEAMENTPOINT 1 // Beam effect between point and entity +// write_byte(TE_BEAMENTPOINT) +// write_short(start entity) +// write_coord(endposition.x) +// write_coord(endposition.y) +// write_coord(endposition.z) +// write_short(sprite index) +// write_byte(starting frame) +// write_byte(frame rate in 0.1's) +// write_byte(life in 0.1's) +// write_byte(line width in 0.1's) +// write_byte(noise amplitude in 0.01's) +// write_byte(red) +// write_byte(green) +// write_byte(blue) +// write_byte(brightness) +// write_byte(scroll speed in 0.1's) + +#define TE_GUNSHOT 2 // Particle effect plus ricochet sound +// write_byte(TE_GUNSHOT) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) + +#define TE_EXPLOSION 3 // Additive sprite, 2 dynamic lights, flickering particles, explosion sound, move vertically 8 pps +// write_byte(TE_EXPLOSION) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_short(sprite index) +// write_byte(scale in 0.1's) +// write_byte(framerate) +// write_byte(flags) +// +// The Explosion effect has some flags to control performance/aesthetic features: +#define TE_EXPLFLAG_NONE 0 // All flags clear makes default Half-Life explosion +#define TE_EXPLFLAG_NOADDITIVE 1 // Sprite will be drawn opaque (ensure that the sprite you send is a non-additive sprite) +#define TE_EXPLFLAG_NODLIGHTS 2 // Do not render dynamic lights +#define TE_EXPLFLAG_NOSOUND 4 // Do not play client explosion sound +#define TE_EXPLFLAG_NOPARTICLES 8 // Do not draw particles + +#define TE_TAREXPLOSION 4 // Quake1 "tarbaby" explosion with sound +// write_byte(TE_TAREXPLOSION) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) + +#define TE_SMOKE 5 // Alphablend sprite, move vertically 30 pps +// write_byte(TE_SMOKE) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_short(sprite index) +// write_byte(scale in 0.1's) +// write_byte(framerate) + +#define TE_TRACER 6 // Tracer effect from point to point +// write_byte(TE_TRACER) +// write_coord(startposition.x) +// write_coord(startposition.y) +// write_coord(startposition.z) +// write_coord(endposition.x) +// write_coord(endposition.y) +// write_coord(endposition.z) + +#define TE_LIGHTNING 7 // TE_BEAMPOINTS with simplified parameters +// write_byte(TE_LIGHTNING) +// write_coord(startposition.x) +// write_coord(startposition.y) +// write_coord(startposition.z) +// write_coord(endposition.x) +// write_coord(endposition.y) +// write_coord(endposition.z) +// write_byte(life in 0.1's) +// write_byte(width in 0.1's) +// write_byte(amplitude in 0.01's) +// write_short(sprite model index) + +#define TE_BEAMENTS 8 +// write_byte(TE_BEAMENTS) +// write_short(start entity) +// write_short(end entity) +// write_short(sprite index) +// write_byte(starting frame) +// write_byte(frame rate in 0.1's) +// write_byte(life in 0.1's) +// write_byte(line width in 0.1's) +// write_byte(noise amplitude in 0.01's) +// write_byte(red) +// write_byte(green) +// write_byte(blue) +// write_byte(brightness) +// write_byte(scroll speed in 0.1's) + +#define TE_SPARKS 9 // 8 random tracers with gravity, ricochet sprite +// write_byte(TE_SPARKS) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) + +#define TE_LAVASPLASH 10 // Quake1 lava splash +// write_byte(TE_LAVASPLASH) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) + +#define TE_TELEPORT 11 // Quake1 teleport splash +// write_byte(TE_TELEPORT) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) + +#define TE_EXPLOSION2 12 // Quake1 colormaped (base palette) particle explosion with sound +// write_byte(TE_EXPLOSION2) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_byte(starting color) +// write_byte(num colors) + +#define TE_BSPDECAL 13 // Decal from the .BSP file +// write_byte(TE_BSPDECAL) +// write_coord(position.x) decal position (center of texture in world) +// write_coord(position.y) +// write_coord(position.z) +// write_short(texture index of precached decal texture name) +// write_short(entity index) +// [optional - write_short(index of model of above entity) only included if previous short is non-zero (not the world)] + +#define TE_IMPLOSION 14 // Tracers moving toward a point +// write_byte(TE_IMPLOSION) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_byte(radius) +// write_byte(count) +// write_byte(life in 0.1's) + +#define TE_SPRITETRAIL 15 // Line of moving glow sprites with gravity, fadeout, and collisions +// write_byte(TE_SPRITETRAIL) +// write_coord(startposition.x) +// write_coord(startposition.y) +// write_coord(startposition.z) +// write_coord(endposition.x) +// write_coord(endposition.y) +// write_coord(endposition.z) +// write_short(sprite index) +// write_byte(count) +// write_byte(life in 0.1's) +// write_byte(scale in 0.1's) +// write_byte(velocity along vector in 10's) +// write_byte(randomness of velocity in 10's) + +#define TE_SPRITE 17 // Additive sprite, plays 1 cycle +// write_byte(TE_SPRITE) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_short(sprite index) +// write_byte(scale in 0.1's) +// write_byte(brightness) + +#define TE_BEAMSPRITE 18 // A beam with a sprite at the end +// write_byte(TE_BEAMSPRITE) +// write_coord(startposition.x) +// write_coord(startposition.y) +// write_coord(startposition.z) +// write_coord(endposition.x) +// write_coord(endposition.y) +// write_coord(endposition.z) +// write_short(beam sprite index) +// write_short(end sprite index) + +#define TE_BEAMTORUS 19 // Screen aligned beam ring, expands to max radius over lifetime +// write_byte(TE_BEAMTORUS) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_coord(axis.x) +// write_coord(axis.y) +// write_coord(axis.z) +// write_short(sprite index) +// write_byte(starting frame) +// write_byte(frame rate in 0.1's) +// write_byte(life in 0.1's) +// write_byte(line width in 0.1's) +// write_byte(noise amplitude in 0.01's) +// write_byte(red) +// write_byte(green) +// write_byte(blue) +// write_byte(brightness) +// write_byte(scroll speed in 0.1's) + +#define TE_BEAMDISK 20 // Disk that expands to max radius over lifetime +// write_byte(TE_BEAMDISK) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_coord(axis.x) +// write_coord(axis.y) +// write_coord(axis.z) +// write_short(sprite index) +// write_byte(starting frame) +// write_byte(frame rate in 0.1's) +// write_byte(life in 0.1's) +// write_byte(line width in 0.1's) +// write_byte(noise amplitude in 0.01's) +// write_byte(red) +// write_byte(green) +// write_byte(blue) +// write_byte(brightness) +// write_byte(scroll speed in 0.1's) + +#define TE_BEAMCYLINDER 21 // Cylinder that expands to max radius over lifetime +// write_byte(TE_BEAMCYLINDER) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_coord(axis.x) +// write_coord(axis.y) +// write_coord(axis.z) +// write_short(sprite index) +// write_byte(starting frame) +// write_byte(frame rate in 0.1's) +// write_byte(life in 0.1's) +// write_byte(line width in 0.1's) +// write_byte(noise amplitude in 0.01's) +// write_byte(red) +// write_byte(green) +// write_byte(blue) +// write_byte(brightness) +// write_byte(scroll speed in 0.1's) + +#define TE_BEAMFOLLOW 22 // Create a line of decaying beam segments until entity stops moving +// write_byte(TE_BEAMFOLLOW) +// write_short(entity:attachment to follow) +// write_short(sprite index) +// write_byte(life in 0.1's) +// write_byte(line width in 0.1's) +// write_byte(red) +// write_byte(green) +// write_byte(blue) +// write_byte(brightness) + +#define TE_GLOWSPRITE 23 +// write_byte(TE_GLOWSPRITE) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_short(model index) +// write_byte(scale / 10) +// write_byte(size) +// write_byte(brightness) + +#define TE_BEAMRING 24 // Connect a beam ring to two entities +// write_byte(TE_BEAMRING) +// write_short(start entity) +// write_short(end entity) +// write_short(sprite index) +// write_byte(starting frame) +// write_byte(frame rate in 0.1's) +// write_byte(life in 0.1's) +// write_byte(line width in 0.1's) +// write_byte(noise amplitude in 0.01's) +// write_byte(red) +// write_byte(green) +// write_byte(blue) +// write_byte(brightness) +// write_byte(scroll speed in 0.1's) + +#define TE_STREAK_SPLASH 25 // Oriented shower of tracers +// write_byte(TE_STREAK_SPLASH) +// write_coord(startposition.x) +// write_coord(startposition.y) +// write_coord(startposition.z) +// write_coord(vector.x) +// write_coord(vector.y) +// write_coord(vector.z) +// write_byte(color) +// write_short(count) +// write_short(base speed) +// write_short(ramdon velocity) + +#define TE_DLIGHT 27 // Dynamic light, effect world, minor entity effect +// write_byte(TE_DLIGHT) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_byte(radius in 10's) +// write_byte(red) +// write_byte(green) +// write_byte(blue) +// write_byte(brightness) +// write_byte(life in 10's) +// write_byte(decay rate in 10's) + +#define TE_ELIGHT 28 // Point entity light, no world effect +// write_byte(TE_ELIGHT) +// write_short(entity:attachment to follow) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_coord(radius) +// write_byte(red) +// write_byte(green) +// write_byte(blue) +// write_byte(life in 0.1's) +// write_coord(decay rate) + +#define TE_TEXTMESSAGE 29 +// write_byte(TE_TEXTMESSAGE) +// write_byte(channel) +// write_short(x) -1 = center) +// write_short(y) -1 = center) +// write_byte(effect) 0 = fade in/fade out, 1 is flickery credits, 2 is write out (training room) +// write_byte(red) - text color +// write_byte(green) +// write_byte(blue) +// write_byte(alpha) +// write_byte(red) - effect color +// write_byte(green) +// write_byte(blue) +// write_byte(alpha) +// write_short(fadein time) +// write_short(fadeout time) +// write_short(hold time) +// [optional] write_short(fxtime) time the highlight lags behing the leading text in effect 2 +// write_string(text message) 512 chars max string size + +#define TE_LINE 30 +// write_byte(TE_LINE) +// write_coord(startposition.x) +// write_coord(startposition.y) +// write_coord(startposition.z) +// write_coord(endposition.x) +// write_coord(endposition.y) +// write_coord(endposition.z) +// write_short(life in 0.1 s) +// write_byte(red) +// write_byte(green) +// write_byte(blue) + +#define TE_BOX 31 +// write_byte(TE_BOX) +// write_coord(boxmins.x) +// write_coord(boxmins.y) +// write_coord(boxmins.z) +// write_coord(boxmaxs.x) +// write_coord(boxmaxs.y) +// write_coord(boxmaxs.z) +// write_short(life in 0.1 s) +// write_byte(red) +// write_byte(green) +// write_byte(blue) + +#define TE_KILLBEAM 99 // Kill all beams attached to entity +// write_byte(TE_KILLBEAM) +// write_short(entity) + +#define TE_LARGEFUNNEL 100 +// write_byte(TE_LARGEFUNNEL) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_short(sprite index) +// write_short(flags) + +#define TE_BLOODSTREAM 101 // Particle spray +// write_byte(TE_BLOODSTREAM) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_coord(vector.x) +// write_coord(vector.y) +// write_coord(vector.z) +// write_byte(color) +// write_byte(speed) + +#define TE_SHOWLINE 102 // Line of particles every 5 units, dies in 30 seconds +// write_byte(TE_SHOWLINE) +// write_coord(startposition.x) +// write_coord(startposition.y) +// write_coord(startposition.z) +// write_coord(endposition.x) +// write_coord(endposition.y) +// write_coord(endposition.z) + +#define TE_BLOOD 103 // Particle spray +// write_byte(TE_BLOOD) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_coord(vector.x) +// write_coord(vector.y) +// write_coord(vector.z) +// write_byte(color) +// write_byte(speed) + +#define TE_DECAL 104 // Decal applied to a brush entity (not the world) +// write_byte(TE_DECAL) +// write_coord(position.x) decal position (center of texture in world) +// write_coord(position.y) +// write_coord(position.z) +// write_byte(texture index of precached decal texture name) +// write_short(entity index) + +#define TE_FIZZ 105 // Create alpha sprites inside of entity, float upwards +// write_byte(TE_FIZZ) +// write_short(entity) +// write_short(sprite index) +// write_byte density) + +#define TE_MODEL 106 // Create a moving model that bounces and makes a sound when it hits +// write_byte(TE_MODEL) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_coord(velocity.x) +// write_coord(velocity.y) +// write_coord(velocity.z) +// write_angle(initial yaw) +// write_short(model index) +// write_byte(bounce sound type) +// write_byte(life in 0.1's) + +#define TE_EXPLODEMODEL 107 // Spherical shower of models, picks from set +// write_byte(TE_EXPLODEMODEL) +// write_coord(origin.x) +// write_coord(origin.y) +// write_coord(origin.z) +// write_coord(velocity.x) +// write_coord(velocity.y) +// write_coord(velocity.z) +// write_short(model index) +// write_short(count) +// write_byte(life in 0.1's) + +#define TE_BREAKMODEL 108 // Box of models or sprites +// write_byte(TE_BREAKMODEL) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_coord(size.x) +// write_coord(size.y) +// write_coord(size.z) +// write_coord(velocity.x) +// write_coord(velocity.y) +// write_coord(velocity.z) +// write_byte(random velocity in 10's) +// write_short(sprite or model index) +// write_byte(count) +// write_byte(life in 0.1 secs) +// write_byte(flags) + +#define TE_GUNSHOTDECAL 109 // Decal and ricochet sound +// write_byte(TE_GUNSHOTDECAL) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_short(entity index???) +// write_byte(decal???) + +#define TE_SPRITE_SPRAY 110 // Spray of alpha sprites +// write_byte(TE_SPRITE_SPRAY) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_coord(velocity.x) +// write_coord(velocity.y) +// write_coord(velocity.z) +// write_short(sprite index) +// write_byte(count) +// write_byte(speed) +// write_byte(noise) + +#define TE_ARMOR_RICOCHET 111 // Quick spark sprite, client ricochet sound. +// write_byte(TE_ARMOR_RICOCHET) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_byte(scale in 0.1's) + +#define TE_PLAYERDECAL 112 +// write_byte(TE_PLAYERDECAL) +// write_byte(playerindex) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_short(entity???) +// write_byte(decal number) +// [optional] write_short(model index) + +#define TE_BUBBLES 113 // Create alpha sprites inside of box, float upwards +// write_byte(TE_BUBBLES) +// write_coord(position.x) (min start position) +// write_coord(position.y) +// write_coord(position.z) +// write_coord(position.x) (max start position) +// write_coord(position.y) +// write_coord(position.z) +// write_coord(float height) +// write_short(model index) +// write_byte(count) +// write_coord(speed) + +#define TE_BUBBLETRAIL 114 // Create alpha sprites along a line, float upwards +// write_byte(TE_BUBBLETRAIL) +// write_coord(position.x) (min start position) +// write_coord(position.y) (min start position) +// write_coord(position.z) (min start position) +// write_coord(position.x) (max start position) +// write_coord(position.y) (max start position) +// write_coord(position.z) (max start position) +// write_coord(float height) +// write_short(model index) +// write_byte(count) +// write_coord(speed) + +#define TE_BLOODSPRITE 115 // Spray of opaque sprite1's that fall, single sprite2 for 1..2 secs (this is a high-priority tent) +// write_byte(TE_BLOODSPRITE) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_short(sprite1 index) +// write_short(sprite2 index) +// write_byte(color) +// write_byte(scale) + +#define TE_WORLDDECAL 116 // Decal applied to the world brush +// write_byte(TE_WORLDDECAL) +// write_coord(position.x) decal position (center of texture in world) +// write_coord(position.y) +// write_coord(position.z) +// write_byte(texture index of precached decal texture name) + +#define TE_WORLDDECALHIGH 117 // Decal (with texture index > 256) applied to world brush +// write_byte(TE_WORLDDECALHIGH) +// write_coord(position.x) decal position (center of texture in world) +// write_coord(position.y) +// write_coord(position.z) +// write_byte(texture index of precached decal texture name - 256) + +#define TE_DECALHIGH 118 // Same as TE_DECAL, but the texture index was greater than 256 +// write_byte(TE_DECALHIGH) +// write_coord(position.x) decal position (center of texture in world) +// write_coord(position.y) +// write_coord(position.z) +// write_byte(texture index of precached decal texture name - 256) +// write_short(entity index) + +#define TE_PROJECTILE 119 // Makes a projectile (like a nail) (this is a high-priority tent) +// write_byte(TE_PROJECTILE) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_coord(velocity.x) +// write_coord(velocity.y) +// write_coord(velocity.z) +// write_short(modelindex) +// write_byte(life) +// write_byte(owner) projectile won't collide with owner (if owner == 0, projectile will hit any client). + +#define TE_SPRAY 120 // Throws a shower of sprites or models +// write_byte(TE_SPRAY) +// write_coord(position.x) +// write_coord(position.y) +// write_coord(position.z) +// write_coord(direction.x) +// write_coord(direction.y) +// write_coord(direction.z) +// write_short(modelindex) +// write_byte(count) +// write_byte(speed) +// write_byte(noise) +// write_byte(rendermode) + +#define TE_PLAYERSPRITES 121 // Sprites emit from a player's bounding box (ONLY use for players!) +// write_byte(TE_PLAYERSPRITES) +// write_short(playernum) +// write_short(sprite modelindex) +// write_byte(count) +// write_byte(variance) (0 = no variance in size) (10 = 10% variance in size) + +#define TE_PARTICLEBURST 122 // Very similar to lavasplash +// write_byte(TE_PARTICLEBURST) +// write_coord(origin) +// write_short(radius) +// write_byte(particle color) +// write_byte(duration * 10) (will be randomized a bit) + +#define TE_FIREFIELD 123 // Makes a field of fire +// write_byte(TE_FIREFIELD) +// write_coord(origin) +// write_short(radius) (fire is made in a square around origin. -radius, -radius to radius, radius) +// write_short(modelindex) +// write_byte(count) +// write_byte(flags) +// write_byte(duration (in seconds) * 10) (will be randomized a bit) +// +// to keep network traffic low, this message has associated flags that fit into a byte: +#define TEFIRE_FLAG_ALLFLOAT 1 // All sprites will drift upwards as they animate +#define TEFIRE_FLAG_SOMEFLOAT 2 // Some of the sprites will drift upwards. (50% chance) +#define TEFIRE_FLAG_LOOP 4 // If set, sprite plays at 15 fps, otherwise plays at whatever rate stretches the animation over the sprite's duration. +#define TEFIRE_FLAG_ALPHA 8 // If set, sprite is rendered alpha blended at 50% else, opaque +#define TEFIRE_FLAG_PLANAR 16 // If set, all fire sprites have same initial Z instead of randomly filling a cube. + +#define TE_PLAYERATTACHMENT 124 // Attaches a TENT to a player (this is a high-priority tent) +// write_byte(TE_PLAYERATTACHMENT) +// write_byte(entity index of player) +// write_coord(vertical offset) (attachment origin.z = player origin.z + vertical offset) +// write_short(model index) +// write_short(life * 10 ) + +#define TE_KILLPLAYERATTACHMENTS 125 // Will expire all TENTS attached to a player. +// write_byte(TE_KILLPLAYERATTACHMENTS) +// write_byte(entity index of player) + +#define TE_MULTIGUNSHOT 126 // Much more compact shotgun message +// This message is used to make a client approximate a 'spray' of gunfire. +// Any weapon that fires more than one bullet per frame and fires in a bit of a spread is +// a good candidate for MULTIGUNSHOT use. (shotguns) +// +// NOTE: This effect makes the client do traces for each bullet, these client traces ignore +// entities that have studio models.Traces are 4096 long. +// +// write_byte(TE_MULTIGUNSHOT) +// write_coord(origin.x) +// write_coord(origin.y) +// write_coord(origin.z) +// write_coord(direction.x) +// write_coord(direction.y) +// write_coord(direction.z) +// write_coord(x noise * 100) +// write_coord(y noise * 100) +// write_byte(count) +// write_byte(bullethole decal texture index) + +#define TE_USERTRACER 127 // Larger message than the standard tracer, but allows some customization. +// write_byte(TE_USERTRACER) +// write_coord(origin.x) +// write_coord(origin.y) +// write_coord(origin.z) +// write_coord(velocity.x) +// write_coord(velocity.y) +// write_coord(velocity.z) +// write_byte(life * 10) +// write_byte(color) this is an index into an array of color vectors in the engine. (0 - ) +// write_byte(length * 10) + +// From hltv.h from the HLSDK, these are used in conjunction with SVC_DIRECTOR +// sub commands of svc_director: +#define DRC_CMD_NONE 0 // NULL director command +#define DRC_CMD_START 1 // start director mode +#define DRC_CMD_EVENT 2 // informs about director command +#define DRC_CMD_MODE 3 // switches camera modes +#define DRC_CMD_CAMERA 4 // sets camera registers +#define DRC_CMD_TIMESCALE 5 // sets time scale +#define DRC_CMD_MESSAGE 6 // send HUD centerprint +#define DRC_CMD_SOUND 7 // plays a particular sound +#define DRC_CMD_STATUS 8 // status info about broadcast +#define DRC_CMD_BANNER 9 // banner file name for HLTV gui +#define DRC_CMD_FADE 10 // send screen fade command +#define DRC_CMD_SHAKE 11 // send screen shake command +#define DRC_CMD_STUFFTEXT 12 // like the normal svc_stufftext but as director command + +#define DRC_CMD_LAST 12 + +// HLTV_EVENT event flags +#define DRC_FLAG_PRIO_MASK 0x0F // priorities between 0 and 15 (15 most important) +#define DRC_FLAG_SIDE (1<<4) // +#define DRC_FLAG_DRAMATIC (1<<5) // is a dramatic scene +#define DRC_FLAG_SLOWMOTION (1<<6) // would look good in SloMo +#define DRC_FLAG_FACEPLAYER (1<<7) // player is doning something (reload/defuse bomb etc) +#define DRC_FLAG_INTRO (1<<8) // is a introduction scene +#define DRC_FLAG_FINAL (1<<9) // is a final scene +#define DRC_FLAG_NO_RANDOM (1<<10) // don't randomize event data + + +#define MAX_DIRECTOR_CMD_PARAMETERS 4 +#define MAX_DIRECTOR_CMD_STRING 128 diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/message_stocks.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/message_stocks.inc new file mode 100644 index 0000000..41fafaf --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/message_stocks.inc @@ -0,0 +1,58 @@ +/* Message Stocks +* +* by the AMX Mod X Development Team +* +* This file is provided as is (no warranties). +* +*/ + +#if defined _message_stocks_included + #endinput +#endif +#define _message_stocks_included + +/* Creates a death message. */ +stock dod_make_deathmsg(killer, victim, weaponNUM) +{ + message_begin(MSG_ALL, get_user_msgid("DeathMsg"), {0,0,0}, 0); + write_byte(killer); + write_byte(victim); + write_byte(weaponNUM); + message_end(); + + return 1; +} + +/* Kills a user without a message. */ +stock user_silentkill(index) +{ + static msgid = 0; + new msgblock; + if (!msgid) + { + msgid = get_user_msgid("DeathMsg"); + } + msgblock = get_msg_block(msgid); + set_msg_block(msgid, BLOCK_ONCE); + user_kill(index, 1); + set_msg_block(msgid, msgblock); + + return 1; +} + +/* Creates a death message. */ +stock make_deathmsg(killer, victim, headshot, const weapon[]) +{ + message_begin(MSG_ALL, get_user_msgid("DeathMsg"), {0,0,0}, 0); + write_byte(killer); + write_byte(victim); + + new mod_name[32]; + get_modname(mod_name, 31); + if (equal(mod_name, "cstrike") || equal(mod_name, "czero") || equal(mod_name, "csv15") || equal(mod_name, "cs13")) + write_byte(headshot); + write_string(weapon); + message_end(); + + return 1; +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/messages.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/messages.inc new file mode 100644 index 0000000..9a8652b --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/messages.inc @@ -0,0 +1,93 @@ +/* Messaging functions (now part of Core) + * + * by the AMX Mod X Development Team + * + * This file is provided as is (no warranties). + */ + +#if defined _coremsg_included + #endinput +#endif +#define _coremsg_included + +#include <message_const> + +/* These functinos are used to generate client messages. + * You may generate menu, smoke, shockwaves, thunderlights, + * intermission and many many others messages. + * See HL SDK for more examples. */ +native message_begin(dest, msg_type, const origin[3] = {0,0,0}, player = 0); +native message_end(); +native write_byte(x); +native write_char(x); +native write_short(x); +native write_long(x); +native write_entity(x); +native write_angle(x); +native write_coord(x); +native write_string(const x[]); + +/* These are the same as above, except that the messages sent + * are also sent to all other plugins and Metamod plugins. + * This means that if you send one of these messages, other plugins will + * be notified, which was previously impossible. + * BE CAREFUL! Using these incorrectly, or not for their intended purpose, + * could cause infinite recursion or something just as bad. + * NOTE! These natives are experimental. + */ +native emessage_begin(dest, msg_type, const origin[3] = {0,0,0}, player = 0); +native emessage_end(); +native ewrite_byte(x); +native ewrite_char(x); +native ewrite_short(x); +native ewrite_long(x); +native ewrite_entity(x); +native ewrite_angle(x); +native ewrite_coord(x); +native ewrite_string(const x[]); + +/* Sets/Gets what engine messages are blocked. */ +native set_msg_block(iMessage, iMessageFlags); +native get_msg_block(iMessage); + +/* Lets you directly hook a message in the engine! + * You can overwrite the message before anything happens and either let the message continue + * or fully block it. Here is how it works: + * If you hook a message, the message is stored but not sent. You have the opportunity to + * not only execute code, but to get/set the contents of the message, before you choose to + * either block it or let it go on its way. The hooked function will be passed a msg_id, msg_dest, and entity index. + * The return value can be passed to unregister_message() to stop the message from being hooked */ +native register_message(iMsgId, const szFunction[]); + +/* Unregisters a message hook previously created with register_message + * You must pass the proper message id, and return value from the message to unregister the message successfully. */ +native unregister_message(iMsgId, registeredmsg); + + +/* The get/set _msg commands will fail if used outside a hooked message scope. + * They should never be used unless inside a registered message function. + * There are eight different ways of sending a message, five are ints, two are floats, and one is string. + * These are denoted by iArgType. argn is the number + * of the argument. Exceeding the bounds of 1 to get_msg_args() is a bad idea. + * As of AMX Mod X 1.5, the middle parameter of set_* no longer does anything. + * You cannot change the message argument type (as this would crash the mod anyway) + */ + +/* Gets number of arguments that were passed to this message */ +native get_msg_args(); + +/* Gets the argument type of argument argn */ +native get_msg_argtype(argn); + +/* Gets the value of argn. */ +native get_msg_arg_int(argn); +native Float:get_msg_arg_float(argn); +native get_msg_arg_string(argn, szReturn[], iLength); + +/* sets the value of argn. */ +native set_msg_arg_int(argn, argtype, iValue); +native set_msg_arg_float(argn, argtype, Float:fValue); +native set_msg_arg_string(argn, const szString[]); + +/* Gets the origin of a message */ +native get_msg_origin(const Float:_Origin[3]); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/newmenus.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/newmenus.inc new file mode 100644 index 0000000..97208b2 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/newmenus.inc @@ -0,0 +1,262 @@ +/* AMX Mod X constants +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is provided as is (no warranties). +*/ + +#if defined _newmenus_included + #endinput +#endif +#define _newmenus_included + +#define MEXIT_ALL 1 /* Menu will have an exit option (default)*/ +#define MEXIT_NEVER -1 /* Menu will not have an exit option */ + +#define MPROP_PERPAGE 1 /* Number of items per page (param1 = number, 0=no paginating, 7=default) */ +#define MPROP_BACKNAME 2 /* Name of the back button (param1 = string) */ +#define MPROP_NEXTNAME 3 /* Name of the next button (param1 = string) */ +#define MPROP_EXITNAME 4 /* Name of the exit button (param1 = string) */ +#define MPROP_TITLE 5 /* Menu title text (param1 = string) */ +#define MPROP_EXIT 6 /* Exit functionality (param1 = number, see MEXIT constants) */ +#define MPROP_NOCOLORS 8 /* Sets whether colors are not auto (param1 = number, 0=default) */ +#define MPROP_NUMBER_COLOR 10 /* Color indicator to use for numbers (param1 = string, "\r"=default) */ + +#define MEXIT_NORMAL 0 /* DEPRECATED, do not use (has no effect) */ +#define MENUPAD_NONE 0 /* DEPRECATED, do not use (has no effect) */ +#define MENUPAD_PAGE 1 /* DEPRECATED, do not use (has no effect) */ +#define MPROP_ORDER 7 /* DEPRECATED, do not use (has no effect) */ +#define MPROP_PADMENU 9 /* DEPRECATED, do not use (has no effect) */ + +/** + * @brief Creates a new menu object. + * + * The handler function should be prototyped as: + * + * public <function>(id, menu, item) + * id - Client the menu is being acted upon. + * menu - Menu resource identifier. + * item - Item the client selected. If less than 0, the menu was + * cancelled and the item is a status code. menu_display + * should never be called immediately if the item is a status + * code, for re-entrancy reasons. + * + * The handler function should always return PLUGIN_HANDLED to block + * any old menu handlers from potentially feeding on the menu, unless + * that is the desired functionality. + * + * @param title Title the menu should use. + * @param handler Name of the handler function. The function will be invoked + * once and only once to every menu_display() call. + * @param ml Unused (should be 0). + * @return Menu resource identifier which must be destroyed via + * menu_destroy(). All menus are destroyed when the plugin + * unloads. + * @error Function name not found. + */ +native menu_create(const title[], const handler[], ml=0); + +/** + * Creates a menu item callback handler. + * + * The handler function should be prototyped as: + * + * public <function>(id, menu, item) + * id - Client index being displayed to. + * menu - Menu resource identifier. + * item - Item being drawn. + * <return> - ITEM_IGNORE to use the default functionality. ITEM_ENABLED to + * explicitly enable or ITEM_DISABLED to explicitly disable. + * + * @param function Function name. + * @return Menu callback ID. + */ +native menu_makecallback(const function[]); + +/** + * Adds an menu to a menu. + * + * @param menu Menu resource identifier. + * @param name Item text to display. + * @param info Item info string for internal information. + * @param paccess Access required by the player viewing the menu. + * @param callback If set to a valid ID from menu_makecallback(), the + * callback will be invoked before drawing the item. + * @noreturn + * @error Invalid menu resource. + */ +native menu_additem(menu, const name[], const info[]="", paccess=0, callback=-1); + +/** + * Returns the number of pages in a menu. + * + * @param menu Menu resource identifier. + * @return Number of pages in the menu. + * @error Invalid menu resource. + */ +native menu_pages(menu); + +/** + * Returns the number of items in a menu. + * + * @param menu Menu resource identifier. + * @return Number of items in the menu. + * @error Invalid menu resource. + */ +native menu_items(menu); + +/** + * Displays a menu to one client. This should never be called from a handler + * when the item is less than 0 (i.e. calling this from a cancelled menu will + * result in an error). + * + * @param id Client index. + * @param menu Menu resource identifier. + * @param page Page to start from (starting from 0). + * @noreturn + * @error Invalid menu resource or client index. + */ +native menu_display(id, menu, page=0); + +/** + * Given a page on a menu and a keypress on that page, returns the item id selected. + * If the item is less than 0, a special option was chosen (such as MENU_EXIT). + * + * @param menu Menu resource identifier. + * @param page Page on the menu. + * @param key Key pressed (from 1 to 10). + * @return Item identifier, or <0 for a special selection code. + * @error Invalid menu resource. + */ +native menu_find_id(menu, page, key); + +/** + * Retrieves info about a menu item. + * + * @param menu Menu resource identifier. + * @param item Item identifier. + * @param access Variable to store access value. + * @param info Buffer to store item info. + * @param infolen Item info buffer length. + * @param name Buffer to store item display text. + * @param namelen Item name buffer length. + * @param callback Callback ID. + * @return 1 on success, 0 on failure. + * @error Invalid menu resource. + */ +native menu_item_getinfo(menu, item, &access, info[], infolen, name[]="", namelen=0, &callback); + +/** + * Sets an item's display text. + * + * @param menu Menu resource identifier. + * @param item Item identifier. + * @param name New item display text. + * @return 1 on success, 0 on failure. + * @error Invalid menu resource. + */ +native menu_item_setname(menu, item, const name[]); + +/** + * Sets an item's info string. + * + * @param menu Menu resource identifier. + * @param item Item identifier. + * @param info New item info string. + * @return 1 on success, 0 on failure. + * @error Invalid menu resource. + */ +native menu_item_setcmd(menu, item, const info[]); + +/** + * Sets an item's callback. + * + * @param menu Menu resource identifier. + * @param item Item identifier. + * @param callback New callback from menu_makecallback(), or -1 to clear. + * @return 1 on success, 0 on failure. + * @error Invalid menu resource. + */ +native menu_item_setcall(menu, item, callback=-1); + +/** + * Destroys a menu. Player menus will be cancelled (although may still linger + * on the HUD), and future attempts to access the menu resource will result in + * an error. + * + * This must be called if you create menus dynamically, otherwise you will + * leak memory. For normal dynamic menus, you will destroy the menu in the + * handler function (remembering to handle the case of a menu being cancelled, + * it must still be destroyed). + * + * @param menu Menu resource identifier. + * @noreturn + * @error Invalid menu resource. + */ +native menu_destroy(menu); + +/** + * Returns information about a menu (if any) the client is currently viewing. + * + * If newmenu is valid, then the menu will refer to the menuid associated with + * the title. If newmenu is not valid, and the menu is valid, then the player + * is viewing a menu displayed with show_menu(). + * + * Both may be invalid if the player is not viewing a menu. + * + * @param id Client index. + * @param menu Variable to store old menu id. If none, then <1 will be + * stored. + * @param newmenu Variable to store new menu id. If none, then -1 will be + * stored. + * @param menupage Variable to store current page of the new menu, if any. + * @return 1 if the player is viewing a menu, 0 otherwise. + * @error Invalid client. + */ +native player_menu_info(id, &menu, &newmenu, &menupage=0); + +/** + * Adds a blank line to a menu. + * + * @param menu Menu resource identifier. + * @param slot 1 (default) if the line should shift the numbering down. + * 0 if the line should be a visual shift only. + * @noreturn + * @error Invalid menu resource. + */ +native menu_addblank(menu, slot=1); + +/** + * Adds a text line to a menu. Only available in amxmodx 1.8.1 and above. + * + * @param menu Menu resource identifier. + * @param text Text to add. + * @param slot 1 (default) if the line should shift the numbering down. + * 0 if the line should be a visual shift only. + * @noreturn + * @error Invalid menu resource. + */ +native menu_addtext(menu, const text[], slot=1); + +/** + * Sets a menu property. + * + * @param menu Menu resource identifier. + * @param prop MPROP_ constant. + * @param ... Property parameters. + * @return 1 on success, 0 on failure. + * @error Invalid menu resource or property. + */ +native menu_setprop(menu, prop, ...); + +/** + * Cancels a player's menu, effectively forcing the player to select MENU_EXIT. + * The menu will still exist on their screen but any results are invalidated, + * and the callback is invoked. + * + * @param player Client index. + * @noreturn + * @error Invalid client index. + */ +native menu_cancel(player); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/ns.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/ns.inc new file mode 100644 index 0000000..fbcfa02 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/ns.inc @@ -0,0 +1,753 @@ +/* NS module functions + * + * by the AMX Mod X Development Team + * + * This file is provided as is (no warranties). + */ + +#if defined NS_INC + #endinput +#endif +#define NS_INC + +#if AMXX_VERSION_NUM >= 175 + #pragma reqlib ns + #if !defined AMXMODX_NOAUTOLOAD + #pragma loadlib ns + #endif +#else + #pragma library ns +#endif + + + +#include <ns_const> + + +/** + * Called whenever the client's class is changed. + * + * @param id The index of the player who changed. + * @param newclass The class the client changed to. Check the class enum in ns_const.inc. + * @param oldclass The class the client changed from. Check the class enum in ns_const.inc. + * @noreturn + */ +forward client_changeclass(id, newclass, oldclass); + +/** + * Called whenever the client builds a structure. + * + * @param idPlayer The player index who triggered the building. + * @param idStructure The structure index that was created. + * @param type The type of structure that was built (1 for marine, 2 for alien). + * @param impulse The impulse command that was issued to build this structure. + * @noreturn + */ +forward client_built(idPlayer, idStructure, type, impulse); + +/** + * Tell whether or not the map is combat. + * + * @return 1 if combat, 0 otherwise. + */ +native ns_is_combat(); + +/** + * Returns the gameplay type for the currently active map. + * Refer to ns_const.inc's NSGameplay enum for details. + * + * @note The earliest this is guaranteed to be accurate is during plugin_init(). It needs + * the info_gameplay entity to be properly set within the map, or it will return "Unknown", + * or "Cantfind". + * + * @return Return the gameplay mode, as accurate as the module can tell. + */ +native NSGameplay:ns_get_gameplay(); + +/** + * Exact syntax as get_user_team, but should be more accurate. + * + * @param id Player id. + * @param buff Buffer to store team name in. + * @param len Buffer length. + * @return The pev_team setting for the player. + */ +native ns_get_user_team(id, buff[], len); + +/** + * Send an NS-style popup message. + * + * @param target The client to receive the message. Set to 0 to send to everybody. + * @param szMsg The message to send, 180 characters max. + * @param ah Whether to only display the message on clients who have the cvar "cl_autohelp" set to 1. + * @noreturn + */ +native ns_popup(target, const szMsg[180], ah=0); + +/** + * Sets a player model. Omit the second parameter to return to default + * + * @note The model does not revert on death, teamswitch, gestation, etc. + * + * @param id The player id to change. + * @param szModel The model to change to. + * @noreturn + */ +native ns_set_player_model(id, const szModel[]=""); + +/** + * Sets a player skin. Omit the second parameter to return to default + * + * @note The skin does not revert on death, teamswitch, gestation, etc. + * + * @param id The player id to change. + * @param skin The skin number to change to. + * @noreturn + */ +native ns_set_player_skin(id, skin=-1); + +/** + * Sets a player body. Omit the second parameter to return to default + * + * @note The body does not revert on death, teamswitch, gestation, etc. + * + * @param id The player id to change. + * @param body The body number to change to. + * @noreturn + */ +native ns_set_player_body(id, body=-1); + +/** + * Set this to modify the player's speed by a certain amount. + * + * @note The speed does not revert on death, teamswitch, gestation, etc. + * + * @param id The player id to change. + * @param speedchange The speed to modify the player speed by. Set to 0 to revert to default speed. + * @noreturn + */ +native ns_set_speedchange(id, speedchange=0); + +/** + * Returns a client's current speed modifier. + * + * @param id The client id to check. + * @return The module's current speed modifier for the client. + */ +native ns_get_speedchange(id); + +/** + * Returns a client's maxspeed before the speed change modifier is factored in. + * + * @param id The client id to check. + * @return The maxspeed for the client. + */ +native ns_get_maxspeed(id); + +/* Returns whether or not this mask is set from the entity's iuser4 field. Use the "mask" enum for reference. */ +native ns_get_mask(id,mask); + +/* Sets or removes the mask from the entity's iuser4 field. Set "value" to 1 to turn the mask on, 0 to turn it off. */ +native ns_set_mask(id,mask,value); + +/* Returns built/unbuilt structures. + If: + builtOnly is 1 (default): + Only fully built structures are counted. + builtOnly is 0: + Any structure meeting the classname is counted. + + Number is 0 (default): + The total number of matching structures is returned. + Number is any other value: + The index of the #th matching structure is returned. +*/ +native ns_get_build(const classname[],builtOnly=1,Number=0); + +/* Returns if the player has the weapon or not in their pev->weapons field. + set "setweapon" to 0 to turn the bit off, set to 1 to turn it on. Or omit it to just return the value. */ +native ns_has_weapon(id,weapon,setweapon=-1); + +/* Gets spawn point for specified team (type). + If: + Team is equal to 0: + Ready room spawns are returned. + Team is greater than 0: + Spawns for the team are returned. + + Number is equal to 0: + Total number of spawns is returned. + Number is greater than 0: + The location of the specified spawn is returned. +*/ +native ns_get_spawn(team,number=0,Float:ret[3]); + +/* Returns the class of the player. Look in the classes enum in ns_const.inc for the value's meaning. */ +native ns_get_class(id); + +/** + * Gets the player's jetpack fuel reserve. + * + * @param id The player to get fuel from. + * @return The amount of fuel in the player's reserve. (0.0 through 100.0) + */ +native Float:ns_get_jpfuel(id); + +/** + * Sets the player's jetpack fuel reserve. + * + * @param id The player to set fuel. + * @param fuel The amount of fuel to set, as a percentage (0.0 through 100.0) + * @noreturn + */ +native ns_set_jpfuel(id, Float:fuel); + +/** + * Adds to the player's jetpack fuel reserve. + * + * @param id The player to add fuel to. + * @param amount The amount of fuel to add, as a percentage (0.0 through 100.0) + * @return The new amount of fuel in the player's reserve. (0.0 through 100.0) + */ +native Float:ns_add_jpfuel(id, Float:amount); + +/** + * Gets the player's energy percentage. + * + * @param id The player to get the energy from. + * @return The amount of energy the player has (0.0 through 100.0) + */ +native Float:ns_get_energy(id); + +/** + * Sets the player's energy percentage. + * + * @param id The player to set the energy on. + * @param energy The amount of energy to set (0.0 through 100.0) + * @noreturn + */ +native ns_set_energy(id, Float:energy); + +/** + * Adds to the player's energy percentage. + * + * @param id The player to add the energy to. + * @param amount The amount of energy to add to the player. + * @return The new amount of energy the player has (0.0 through 100.0) + */ +native Float:ns_add_energy(id, Float:amount); + + +/** + * Returns a player's resources. + * + * @note This is only for alien players. + * @param id The id of the player to check. + * @return Amount of resources this player has. + */ +native Float:ns_get_res(id); + +/** + * Sets a player's resources. + * + * @note This is only for alien players. + * @param id The id of the player to set. + * @param res Amount of resources to set on this player. + * @noreturn + */ +native ns_set_res(id, Float:res); + +/** + * Adds an amount of resources to the player. + * + * @note This is only for alien players. + * @param id The id of the player to add resources to. + * @param amount The amount to add to the player. + * @return The new amount of resources the player has. + */ +native Float:ns_add_res(id, Float:amount); + +/** + * Returns the team's resources. + * + * @param Team 1 for teama, 2 for teamb. (eg: in MvA maps, 1 is marines, + 2 is aliens. In mvm, 1 is marine1, 2 is marine2) + * @return The amount of resources in this team's resource pool. + */ +native Float:ns_get_teamres(Team); + +/** + * Sets the team's resources in the resource pool. + * + * @note If this is used on an alien team, the resources will be + * distributed between all of the players who need resources. + * @param Team 1 for teama, 2 for teamb. (eg: in MvA maps, 1 is marines, + * 2 is aliens. In mvm, 1 is marine1, 2 is marine2) + * @param value The amount to set the resources to set to. + * @noreturn + */ +native ns_set_teamres(Team, Float:value); + +/** + * Adds to the team's resources in the resource pool. + * + * @note If this is used on an alien team, the resources will be + * distributed between all of the players who need resources. + * @param Team 1 for teama, 2 for teamb. (eg: in MvA maps, 1 is marines, + * 2 is aliens. In mvm, 1 is marine1, 2 is marine2) + * @param value The amount to set the resources to add to the pool + * @return The new amount of resources in the resource pool. + */ +native Float:ns_add_teamres(Team,Float:value); + + +/** + * Returns the player's experience. + * + * @note Combat only. + * @param id The player to get experience value from. + * @return The amount of experience this player has. + */ +native Float:ns_get_exp(id); + +/** + * Sets the player's experience. + * + * @note Combat only. + * @param id The player to set experience value on. + * @param exp The amount of experience this player will have. + * @noreturn + */ +native ns_set_exp(id,Float:exp); + +/** + * Adds to the player's experience. + * + * @note Combat only. + * @param id The player to add experience value to. + * @param value The amount of experience this player will receive. + * @return The new amount of experience this player has. + */ +native Float:ns_add_exp(id, Float:value); + +/** + * Gets the player's points spent count in combat. + * + * @param id The player to check. + * @return The amount of points this player has spent. + */ +native ns_get_points(id); + +/** + * Sets the player's points spent count in combat. + * + * @param id The player to set this on. + * @param points The amount to set this to. + * @noreturn + */ +native ns_set_points(id, points); + +/** + * Adds to the player's points spent count in combat. + * + * @param id The player to add this to. + * @param value The value to add to the points spent. + * @return The new value of the points spent variable. + */ +native ns_add_points(id,points); + +/** + * Gets the damage for this weapon. + * + * @note Use weapon index, not player index! + * @param idWeapon The entity index of the weapon to check. + * @return The damage this weapon does. + */ +native Float:ns_get_weap_dmg(idWeapon); + +/** + * Sets the damage for this weapon. + * + * @note Use weapon index, not player index! + * @param idWeapon The entity index of the weapon to set. + * @param damage The damage to make this weapon cause. + * @noreturn + */ +native ns_set_weap_dmg(idWeapon, Float:damage); + +/** + * Gets the maximum range for this weapon. + * + * @note Use weapon index, not player index! + * @param idWeapon The entity index of the weapon to check. + * @return The maximum range this weapon has. + */ +native Float:ns_get_weap_range(idWeapon); + +/** + * Sets the maximum range for this weapon. + * + * @note Use weapon index, not player index! + * @param idWeapon The entity index of the weapon to set. + * @param range The maximum range this weapon will have. + * @noreturn + */ +native ns_set_weap_range(idWeapon, Float:range); + +/** + * Gets the weapon's clip ammo. + * + * @note Use weapon index, not player index! + * @param idWeapon The weapon to get the clip ammo from. + * @return The amount of ammunition in the weapon's clip. + */ +native ns_get_weap_clip(idWeapon); + +/** + * Sets the weapon's ammo in the clip. + * + * @note Use weapon index, not player index! + * @param idWeapon The weapon to set the clip ammo on. + * @param clipsize The amount of ammunition to set in the weapon's clip. + * @noreturn + */ +native ns_set_weap_clip(idWeapon, clipsize); + +/** + * Gets the player's weapon reserve (backpack ammo) for the specified + * type of weapon. + * + * @note Use player index, not weapon index! + * @param id The player id to check ammo count on. + * @param weapon The weapon type to check ammo count for. + * @return The ammunition count in the player's reserve. + */ +native ns_get_weap_reserve(id,weapon); + +/** + * Sets the player's weapon reserve (backpack ammo) for the specified + * type of weapon. + * + * @note Use player index, not weapon index! + * @param id The player id to set ammo count on. + * @param weapon The weapon type to set ammo count for. + * @param ammo The ammunition count to set. + * @noreturn + */ +native ns_set_weap_reserve(id,weapon,ammo); + +/** + * Gets the player's score. + * + * @note The score from level is automatically factored into the scoreboard in combat. + * @param idPlayer The player to get the score for. + * @return The player's score. + */ +native ns_get_score(idPlayer); + +/** + * Sets the player's score. + * + * @note The score from level is automatically factored into the scoreboard in combat. + * @param idPlayer The player to get the score for. + * @param score What to set the player's score as. + * @noreturn + */ +native ns_set_score(idPlayer, score); + +/* Adds to a player's score + * Returns the new score on success + */ +native ns_add_score(idPlayer,score); + +/* Gets a player's death count. */ +native ns_get_deaths(idPlayer); + +/* Sets a player's death count. */ +native ns_set_deaths(idPlayer,numdeaths); + +/* Adds to a player's death count + * Returns the new death count on success + */ +native ns_add_deaths(idPlayer,numdeaths); + +/* Gets the index of the owner of a structure. -1 for no owner. */ +native ns_get_struct_owner(idStructsure); + +/* Sets the index of the owner of a structure. -1 for no owner. */ +native ns_set_struct_owner(idStructure,indexOwner); + +/* Gets the trait type tied to the hive. Look at the hivetrait enum for the values. */ +native ns_get_hive_trait(idHive); + +/* Sets the trait type tied to the hive. Look at the hivetrait enum for the values. */ +native ns_set_hive_trait(idHive,trait); + +/* Sets the players field of view, set "_fov" to 0.0 (or omit it) to return to normal. FOV change will persist until disconnect unless reset by a plugin */ +native ns_set_fov(idPlayer,Float:_fov=0.0); + +/** + * Give the player an item. + * + * @param id The player to give the item to. + * @param class The map-classname of the entity to give to the player. + * @noreturn + */ +native ns_give_item(id, const class[]); + +/** + * Returns 1 if a player has the hive ability number. + * If ability is 0, it will return the number of active hives. + * + * @param idPlayer The player index to look up. + * @param ability The ability number to check, set to 0 to get number of active hives. + * @return If ability is != 0, returns 1 or 0 depending on if the client has the ability. + * If ability is 0, returns the number of active hives. + */ +native ns_get_hive_ability(idPlayer, ability=0); + +/** + * Triggered whenever a client's pev->team changes. + * + * @param id The id of the client. + * @param newteam The team number of the new team. + * @param oldteam The team number of the old team. + * @noreturn + */ +forward client_changeteam(id, newteam, oldteam); + +/** + * Triggered whenever a client's pev->deadflag changes from >0 to 0. + * + * @param id The id of the client. + * @noreturn + */ +forward client_spawn(id); + +/** + * Calls NS's private damage routine on the victim entity. + * + * @deprecated + * @note This is provided for backwards compatibility with peachy's module. + * It is suggested to use hamsandwich for this action instead. + * + * @param IDVictim The victim that is taking the damage. + * @param IDInflictor The entity that is causing the damage (weapon, etc). + * @param IDAttacker The attacker who is triggering the damage (person shooting). + * @param Damage The amount of damage being done. + * @param DamageType The damage type being done (bitmask). + */ +native ns_takedamage(IDVictim, IDInflictor, IDAttacker, Float:Damage, DamageType); + +/** + * Attempts to unstick a player. + * + * @param id Player to unstick. + * @param StartDistance Distance to start from the player to check for a new location. + * @param MaxAttempts How many attempts to try to find a new spot before giving up. + * @return 1 on success, 0 on cannot find a place to move player to, + * -1 on invalid state (stunned/webbed), -2 on invalid class (comm/egg) + * -3 if the player is dead or a spectator, -4 on invalid player, + * -5 if the player is not connected. + */ +native ns_unstick_player(id, StartDistance=32, MaxAttempts=128); + +/** + * Whether or not there is a game in progress. + * + * @return true if a game is in progress, false otherwise. + */ +native bool:ns_round_in_progress(); + +/** + * Called at the approximate time that a round is started. + * + * @noreturn + */ +forward round_start(); + +/** + * Called immediately when a round ends + * + * @param roundtime The length of the round in seconds. + * @noreturn + */ +forward round_end(Float:roundtime); + +forward map_reset(isload); + +native ns_get_weapon(idPlayer,weaponid,&weapontype=0); + +/* Returns the location name of the provided x/y position + * (z origin is ignored; can't have location over location) + * - + * Note that as of NS 3.2 beta 2, on the following maps + * the returned string should be passed through ns_lookup_title + * to be human readable: + * ns_bast, ns_hera, ns_nothing, ns_tanith, + * ns_nancy, ns_caged, ns_eclipse, ns_veil + * + * Passing the 5th parameter as non zero will auto look up + * the title if it exists. + */ +native ns_get_locationname(Float:x, Float:y, name[], len, titlelookup=0); + +/* Looks up a key from titles.txt + * Returns -1 if the key is not found + * Otherwise it returns the length of the output + */ +native ns_lookup_title(const KeyName[], Output[], length); + +/* Forces the structure to fully build + * Removes the ghost state from marine structures. + * Do not use this on hives! It wont work. + */ +native ns_build_structure(idStructure); + +/* Forces the structure to begin recycling + * Passing an index other than a marine structure will + * have undefined results! + * - + * Note: This calls a private NS function! + * Be careful when using this! + */ +native ns_recycle(idStructure); + +/* Forces the weldable to trigger + * Passing an index other than a weldable + * will have undefined results! + * - + * NS renames func_weldable to avhweldable + * at map load. + * - + * Note: This calls a private NS function! + * Be careful when using this! + */ +native ns_finish_weldable(idWeldable); + +/* Gets the total time needed to weld this + * func_weldable shut. + * Note: NS renames "func_weldable"s to "avhweldable"s + * at run time! + */ +native Float:ns_get_weld_time(idWeldable); + +/* Sets the total time needed to weld this + * func_weldable shut. + */ +native ns_set_weld_time(idWeldable,Float:value); + +/* Adds to the weldable's time required to open. + * Returns the new required time on success. + * Note this native clamps the low value to 0. + */ +native Float:ns_add_weld_time(idWeldable,Float:value); + +/* Gets the total time this func_weldable + * has been welded. + */ +native Float:ns_get_weld_done(idWeldable); + +/* Sets the total time this func_weldable + * has been welded. + */ +native ns_set_weld_done(idWeldable,Float:value); + +/* Adds to the total time this func_weldable + * has been welded. Returns the new value. + * Note this native clamps the low value to 0.0 + */ +native Float:ns_add_weld_done(idWeldable,Float:value); + +/* Gets/sets/adds to the energy pool of this observatory. */ +native Float:ns_get_obs_energy(idObs); +native ns_set_obs_energy(idObs,Float:value); +native Float:ns_add_obs_energy(idObs,Float:value); + +/** + * Removes an upgrade from the player's bought and active upgrade lists. + * This will not refund the points spent on the upgrade, nor will it + * immediately strip the upgrade if the player is alive. Rather, it will + * make it so the player no longer receives the upgrade on spawn. + * + * @note This only works in combat. + * @params idPlayer The player index to change upgrades for. + * @params ugprade The impulse number for the upgrade to strip. + * @return 2 for upgrade removed from player's bought and active list. + * 1 for upgrade removed from player's bought list only. + * 3 for upgrade removed from player's active list only (shouldn't happen, just incase.) + * 0 for the player didn't have the upgrade in either list. + */ +native ns_remove_upgrade(idPlayer, upgrade); + +/** + * Particle system natives + * - + * The particle system emulates a map-based custom particle system. + * Familiarity with the keyvalues from the map-based particle systems + * is recommended! You will be lost otherwise! + * - + * prsearle's NSPEdit is also recommended for designing the systems: + * http://homepage.ntlworld.com/pr.searle/NSPSEdit/NSPSEdit.html + */ + +/* Creates a handle to the a particle system to configure + * - + * Note! this is not a particle system you can pass to + * ns_fire_ps()! + */ +native RawPS:ns_create_ps(); + +/* Sets the name of the particle system. + * - + * This is used for things like ns_get_ps_id() + * and through calling another particle system + * through the "ps_to_gen" field + */ +native ns_set_ps_name(RawPS:system, const name[]); + +/* Sets the sprite to use for the particle system + * - + * You do NOT have to precache the sprite, BUT + * the sprite must obviously be on the client to + * display. + */ +native ns_set_ps_sprite(RawPS:system, const sprite[]); + +/* Finalizes the particle system. Do not configure it after this. + * A usable particle system handle is returned. + */ +native Particle:ns_spawn_ps(RawPS:system); + +/* Draws a particle system at the given origin (and angles) + * Flags are the FEV_* defines from hlsdk_const.inc + * Only use handles returned by ns_spawn_ps or ns_get_ps_id here! + */ +native ns_fire_ps(Particle:system,const Float:origin[3],const Float:angles[3]={0.0,0.0,0.0}, flags=0); + +/* Looks up a particle system by name + * Returns a usable particle system handle. + */ +native Particle:ns_get_ps_id(const Name[]); + +/* The following are the parameters for configuring the + * particle system. Look through the fgd and NSPSEdit + * for details! + */ +native ns_set_ps_genrate(RawPS:system, genrate); +native ns_set_ps_genshape(RawPS:system, NSPS_GenShape:genshape); +native ns_set_ps_genshape_params(RawPS:system, const params[]); +native ns_set_ps_spriteframes(RawPS:system, spriteframes); +native ns_set_ps_numparticles(RawPS:system, numparticles); +native ns_set_ps_size(RawPS:system, Float:size); +native ns_set_ps_vel_params(RawPS:system, const params[]); +native ns_set_ps_vel_shape(RawPS:system, NSPS_VelShape:shape); +native ns_set_ps_sys_life(RawPS:system, Float:lifetime); +native ns_set_ps_particle_life(RawPS:system, Float:lifetime); +native ns_set_ps_rendermode(RawPS:system, NSPS_RenderMode:rendermode); +native ns_set_ps_to_gen(RawPS:system, const name[]); +native ns_set_ps_anim_speed(RawPS:system, speed); +native ns_set_ps_spawn_flags(RawPS:system, NSPS_Flags:flags); +native ns_set_ps_base_color(RawPS:system, const colors[]); +native ns_set_ps_scale(RawPS:system, Float:scale); +native ns_set_ps_max_alpha(RawPS:system, Float:maxalpha); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/ns2amx.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/ns2amx.inc new file mode 100644 index 0000000..c85823b --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/ns2amx.inc @@ -0,0 +1,263 @@ +/* NS2AMX Utility backwards compatibility +* +* by the AMX Mod X Development Team +* +* This file is provided as is (no warranties). +*/ + +#if defined _ns2amx_included + #endinput +#endif +#define _ns2amx_included + +#include <engine> // various engine calls +#include <fakemeta> // pev/engfunc/dllfunc/various calls which rely on engfunc/dllfunc +#include <ns> // ns specifics + +stock is_entity(id) + return is_valid_ent(id); + +/* The end of the native is buffered incase the plugin is including an NS_VERSION (no longer supported), ignore it */ +stock get_build(classname[], value, number=0,any:...) + return ns_get_build(classname, value, number); + +stock get_private_i(index, offset, linuxdiff=5) + return get_pdata_int(index, offset, linuxdiff); + +stock set_private_i(index, offset, value, linuxdiff=5) +{ + return set_pdata_int(index, offset, value, linuxdiff); +} + +stock Float:get_private_f(index, offset, linuxdiff=5) +{ + return get_pdata_float(index, offset, linuxdiff); +} + +stock set_private_f(index, offset, Float:value, linuxdiff=5) +{ + return set_pdata_float(index, offset, value, linuxdiff); +} + +stock make_string(value[]) + return engfunc(EngFunc_AllocString,value); + +stock string(value, ret[]) +{ + new szString[128]; + engfunc(EngFunc_SzFromIndex,value,szString,127); + copy(ret,127,szString); +} + +stock gpgobals_time() + return floatround(halflife_time()); + +stock Float:get_range(ida, idb) + return entity_range(ida, idb); + +stock supercede() + return 0; + +stock register_clientkill() + return 0; + +stock register_changelvl() + return 0; + +stock register_msgblock(msgName[]) + return set_msg_block(get_user_msgid(msgName), BLOCK_SET); + +stock register_msgedit(msgName[], cmd[]) + return register_message(get_user_msgid(msgName), cmd); + +stock register_playback(event, cmd[]) + return 0; + +stock get_spawn(type, number=0, Float:ret[3]) + return ns_get_spawn(type, number, ret); + +stock has_weapon(index, weapon, setweapon=-1) + return ns_has_weapon(index, weapon, setweapon); + +stock gpglobals_v(type, Float:ret[3]) +{ + new v_type=0; + switch (type) + { + case 1: + v_type = GL_v_forward; + case 2: + v_type = GL_v_right; + case 3: + v_type = GL_v_up; + } + if (!v_type) + return 0; + return get_global_vector(v_type, ret); +} + +stock pev_i(_index,_field) + return pev(_index,_field); + +stock set_pev_i(_index, _field, _val) + return set_pev(_index,_field,_val); + +stock Float:pev_f(_index,_field) +{ + new Float:f; + pev(_index,_field,f); + return f; +} +stock set_pev_f(_index,_field,Float:_val) + return set_pev(_index,_field,_val); + + +stock msg_args() + return get_msg_args(); + +stock Float:msg_loc(vec) +{ + new Float:Ret[3]; + get_msg_origin(Ret); + if (vec < 0 || vec > 3) + return float(0); + else + return Ret[vec]; + + return 0.0; // make compiler happy! +} + +stock msg_dest() + return 0; + +stock msg_type() + return 0; + +stock msg_name() + return 0; + +stock msg_set_s(number, value[]) + return set_msg_arg_string(number, value); + +stock msg_set_f(number, Float:value) + return set_msg_arg_float(number, get_msg_argtype(number), value); + +stock msg_set_i(number, value) + return set_msg_arg_int(number, get_msg_argtype(number), value); + +stock msg_data_type(value) + return get_msg_argtype(value); + +stock msg_strdata(value) + return 0; + +stock msg_data(value, ...) +{ + return (0*value); +} + +stock get_filename(szFile[], len=-1) +{ + new name[16], version[16], author[16], status[16]; + new res = get_plugin(0, szFile, len, name, 16, version, 16, author, 16, status, 16); + return res; +} + +stock get_speedchange(id) + return ns_get_speedchange(id); + +stock set_speedchange(id, speed) + return ns_set_speedchange(id,speed); + +stock get_maxspeed(id) + return ns_get_maxspeed(id); + +stock set_player_model(id, model[]="") + return ns_set_player_model(id, model); + +stock set_player_skin(id, skin=-1) + return ns_set_player_skin(id, skin); + +stock set_player_body(id, body=-1) + return ns_set_player_body(id, body); + +stock ns2amx_version() + return 0; + +stock set_kvhandled() + return 0; + +stock ns2amx_getammo(id,Weapon) + return ns_get_weap_reserve(id, Weapon); + +stock ns2amx_setammo(id,Weapon,Value) + return ns_set_weap_reserve(id, Weapon, Value); + +stock ns2amx_giveitem(id,svClassname[]) + return ns_give_item(id, svClassname); + +stock ns2amx_moveto(idMoved,idDest) +{ + new Float:origin[3]; + entity_get_vector(idDest, EV_VEC_origin,origin); + entity_set_origin(idMoved, origin); + return 1; +} +/* Returns whether or not the player has the MASK_DIGESTING flag set. */ +stock ns2amx_isdigesting(id) + return ns_get_mask(id,MASK_DIGESTING); + +/* Returns total # of active hives. */ +stock ns2amx_gethives() + return ns_get_build("team_hive",1); + +/* Returns 1 if the two entities are within the given range. */ +stock ns2amx_inrange(ida,idb,range) +{ + if (entity_range(ida,idb) <= range) + return 1; + return 0; +} + +stock ns2amx_nspopup(id,svMessage[190]) { + new szMessage[180]; + copy(szMessage,179,svMessage); + return ns_popup(id, szMessage); +} + +stock ns2amx_setres(id,value) + return ns_set_res(id, float(value)); + +stock ns2amx_getenergy(id) + return floatround(ns_get_energy(id)); + +stock ns2amx_setenergy(id,energy) + return ns_set_energy(id, float(energy)); + +stock ns2amx_getjpfuel(id) + return floatround(ns_get_jpfuel(id)); + +stock ns2amx_setjpfuel(id,fuel) + return ns_set_jpfuel(id, float(fuel)); + +stock get_mask(id,mask) + return ns_get_mask(id, mask); + +stock set_mask(id,mask,value) + return ns_set_mask(id,mask,value); + +stock get_special(id,mask) +{ + if (pev(id,pev_iuser4) & mask) + return 1; + return 0; +} + +stock get_res(id) + return floatround(ns_get_res(id)); + +stock get_class(id) + return ns_get_class(id); + +stock is_combat() + return ns_is_combat(); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/ns_const.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/ns_const.inc new file mode 100644 index 0000000..d018250 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/ns_const.inc @@ -0,0 +1,192 @@ +/* NS module constants + * + * by the AMX Mod X Development Team + * Most definitions graciously provided by Flayra + * + * This file is provided as is (no warranties). + */ + + +#if defined NS_CONST_INC + #endinput +#endif +#define NS_CONST_INC + + +enum NSGameplay +{ + NSGame_CantTell, /**< It is too soon to tell (can't find avhgameplay + entity or it doesn't have private data) */ + + NSGame_MarineVAlien, /**< Marine vs Aliens (standard) gameplay */ + NSGame_MarineVMarine, /**< Marine vs Marine */ + NSGame_AlienVAlien, /**< Alien vs Alien */ + + NSGame_Unknown, /**< Can find the gameplay entity, but can't + determine gameplay type. */ +}; + +// entity pev->iuser4 fields +enum { + MASK_NONE = 0, + MASK_SIGHTED = 1, + MASK_DETECTED = 2, + MASK_BUILDABLE = 4, + MASK_BASEBUILD0 = 8, // Base build slot #0 + MASK_WEAPONS1 = 8, // Marine weapons 1 + MASK_CARAPACE = 8, // Alien carapace + MASK_WEAPONS2 = 16, // Marines weapons 2 + MASK_REGENERATION = 16, // Alien regeneration + MASK_BASEBUILD1 = 16, // Base build slot #1 + MASK_WEAPONS3 = 32, // Marine weapons 3 + MASK_REDEMPTION = 32, // Alien redemption + MASK_BASEBUILD2 = 32, // Base build slot #2 + MASK_ARMOR1 = 64, // Marine armor 1 + MASK_CELERITY = 64, // Alien celerity + MASK_BASEBUILD3 = 64, // Base build slot #3 + MASK_ARMOR2 = 128, // Marine armor 2 + MASK_ADRENALINE = 128, // Alien adrenaline + MASK_BASEBUILD4 = 128, // Base build slot #4 + MASK_ARMOR3 = 256, // Marine armor 3 + MASK_SILENCE = 256, // Alien silence + MASK_BASEBUILD5 = 256, // Base build slot #5 + MASK_JETPACK = 512, // Marine jetpacks + MASK_CLOAKING = 512, // Alien cloaking + MASK_BASEBUILD6 = 512, // Base build slot #6 + MASK_FOCUS = 1024, // Alien focus + MASK_MOTION = 1024, // Marine motion tracking + MASK_BASEBUILD7 = 1024, // Base build slot #7 + MASK_SCENTOFFEAR = 2048, // Alien scent of fear + MASK_DEFENSE2 = 4096, // Defense level 2 + MASK_DEFENSE3 = 8192, // Defense level 3 + MASK_ELECTRICITY = 8192, // Electricy + MASK_MOVEMENT2 = 16384, // Movement level 2, + MASK_MOVEMENT3 = 32768, // Movement level 3 + MASK_HEAVYARMOR = 32768, // Marine heavy armor + MASK_SENSORY2 = 65536, // Sensory level 2 + MASK_SENSORY3 = 131072, // Sensory level 3 + MASK_ALIEN_MOVEMENT = 262144, // Onos is charging + MASK_WALLSTICKING = 524288, // Flag for wall-sticking + MASK_PRIMALSCREAM = 1048576, // Alien is in range of active primal scream + MASK_UMBRA = 2097152, // In umbra + MASK_DIGESTING = 4194304, // When set on a visible player, player is digesting. When set on invisible player, player is being digested + MASK_RECYCLING = 8388608, // Building is recycling + MASK_TOPDOWN = 16777216, // Commander view + MASK_PLAYER_STUNNED = 33554432, // Player has been stunned by stomp + MASK_ENSNARED = 67108864, // Webbed + MASK_ALIEN_EMBRYO = 134217728, // Gestating + MASK_SELECTABLE = 268435456, // ??? + MASK_PARASITED = 536870912, // Parasite flag + MASK_SENSORY_NEARBY = 1073741824 // Sensory chamber in range +}; + + +enum { + CLASS_UNKNOWN = 0, + CLASS_SKULK, + CLASS_GORGE, + CLASS_LERK, + CLASS_FADE, + CLASS_ONOS, + CLASS_MARINE, + CLASS_JETPACK, + CLASS_HEAVY, + CLASS_COMMANDER, + CLASS_GESTATE, + CLASS_DEAD, + CLASS_NOTEAM +}; + +enum { + WEAPON_NONE = 0, + WEAPON_CLAWS, + WEAPON_SPIT, + WEAPON_SPORES, + WEAPON_SPIKE, + WEAPON_BITE, + WEAPON_BITE2, + WEAPON_SWIPE, + WEAPON_WEBSPINNER, + WEAPON_METABOLIZE, + WEAPON_PARASITE, + WEAPON_BLINK, + WEAPON_DIVINEWIND, + WEAPON_KNIFE, + WEAPON_PISTOL, + WEAPON_LMG, + WEAPON_SHOTGUN, + WEAPON_HMG, + WEAPON_WELDER, + WEAPON_MINE, + WEAPON_GRENADE_GUN, + WEAPON_LEAP, + WEAPON_CHARGE, + WEAPON_UMBRA, + WEAPON_PRIMALSCREAM, + WEAPON_BILEBOMB, + WEAPON_ACIDROCKET, + WEAPON_HEALINGSPRAY, + WEAPON_GRENADE, + WEAPON_STOMP, + WEAPON_DEVOUR, + WEAPON_MAX +}; + +enum { + HIVETRAIT_NONE = 0, + HIVETRAIT_DC = 92, + HIVETRAIT_SC = 93, + HIVETRAIT_MC = 94 +}; + +enum NSPS_VelShape +{ + NSPS_VS_POINT = 1, + NSPS_VS_BOX, + NSPS_VS_SPHERE, + NSPS_VS_BLOB +}; + +/* Genshape used in ns_set_ps_genshape + * NOTE: The following are in the ns.ps file but + * are not listed in the .fgd file. Use + * at your own risk! + * Line, Triangle, Plane, Cylinder, + * Cone, Disc, Rectangle and None + */ +enum NSPS_GenShape +{ + NSPS_GS_POINT = 0, + NSPS_GS_LINE, + NSPS_GS_TRIANGLE, + NSPS_GS_PLANE, + NSPS_GS_BOX, + NSPS_GS_CYLINDER, + NSPS_GS_CONE, + NSPS_GS_BLOB, + NSPS_GS_DISC, + NSPS_GS_RECTANGLE, + NSPS_GS_NONE +}; +enum NSPS_RenderMode +{ + NSPS_R_NORMAL = 0, + NSPS_R_TRANSCOLOR, + NSPS_R_TRANSTEXTURE, + NSPS_R_GLOW, + NSPS_R_TRANSALPHA, + NSPS_R_ADDITIVE +}; +enum NSPS_Flags +{ + NSPS_FL_START_ON = 1, + NSPS_FL_PARTICLE_DENSITY = 2, + NSPS_FL_FADE_IN = 4, + NSPS_FL_FADE_OUT = 8, + NSPS_FL_USE_GRAVITY = 16, + NSPS_FL_USE_TRI = 32, + NSPS_FL_CONSTRAIN_PITCH = 128, + NSPS_FL_COLLIDE = 256, + NSPS_FL_HI_DETAIL = 512, + NSPS_FL_FACE_UP = 1024 +}; diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/nvault.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/nvault.inc new file mode 100644 index 0000000..33736f7 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/nvault.inc @@ -0,0 +1,61 @@ +/* nVault functions +* +* by the AMX Mod X Development Team +* +* This file is provided as is (no warranties). +*/ + +#if defined _nvault_included + #endinput +#endif +#define _nvault_included + +#if AMXX_VERSION_NUM >= 175 + #pragma reqlib nvault + #if !defined AMXMODX_NOAUTOLOAD + #pragma loadlib nvault + #endif +#else + #pragma library nvault +#endif + +/* All timestamps are in UNIX epoch form. */ + +/* Opens a vault by name (such as "myvault") + * Returns a vault id, INVALID_HANDLE otherwise (-1) + */ +native nvault_open(const name[]); + +/* Gets a vault value by returning an int + * setting a byref float or setting a string + maxlength + */ +native nvault_get(vault, const key[], {Float,_}:...); + +/* Looks up a vault value for full information + * Returns 0 if the entry is not found + */ +native nvault_lookup(vault, const key[], value[], maxlen, ×tamp); + +/* Sets a vault value (with current timestamp) */ +native nvault_set(vault, const key[], const value[]); + +/* Sets a permanent vault value (no timestamp) */ +native nvault_pset(vault, const key[], const value[]); + +/* Prunes the vault for entries that are within the given timestamps. + * This will not erase values set with pset + */ +native nvault_prune(vault, start, end); + +/* Closes a vault */ +native nvault_close(vault); + +/* Removes a key from the vault */ +native nvault_remove(vault, const key[]); + +/* "Touches" a key to update its timestamp value. + * If stamp is -1 (default), it will use the current time. + * Like the unix command "touch," it will create an empty key + * if the value does not exist. + */ +native nvault_touch(vault, const key[], timestamp=-1); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/regex.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/regex.inc new file mode 100644 index 0000000..c56cfe6 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/regex.inc @@ -0,0 +1,134 @@ +/* Regular Expression API + * (C)2004 by David "BAILOPAN" Anderson + * Licensed under the GNU General Public License. + * No warranties of any kind. + */ + +#if defined _regex_included + #endinput +#endif +#define _regex_included + +#if AMXX_VERSION_NUM >= 175 + #pragma reqlib regex + #if !defined AMXMODX_NOAUTOLOAD + #pragma loadlib regex + #endif +#else + #pragma library regex +#endif + +enum Regex +{ + REGEX_MATCH_FAIL = -2, + REGEX_PATTERN_FAIL, + REGEX_NO_MATCH, + REGEX_OK +}; + +/** + * Precompile a regular expression. Use this if you intend on using the + * same expression multiple times. Pass the regex handle returned here to + * regex_match_c to check for matches. + * + * @param pattern The regular expression pattern. + * @param errcode Error code encountered, if applicable. + * @param error Error message encountered, if applicable. + * @param maxLen Maximum string length of the error buffer. + * @param flags General flags for the regular expression. + * i = Ignore case + * m = Multilines (affects ^ and $ so that they match + * the start/end of a line rather than matching the + * start/end of the string). + * s = Single line (affects . so that it matches any character, + * even new line characters). + * x = Pattern extension (ignore whitespace and # comments). + * + * @return -1 on error in the pattern, > valid regex handle (> 0) on success. + * + * @note This handle is automatically freed on map change. However, + * if you are completely done with it before then, you should + * call regex_free on this handle. + */ +native Regex:regex_compile(const pattern[], &ret, error[], maxLen, const flags[]=""); + +/** + * Matches a string against a pre-compiled regular expression pattern. + * + * + * @param pattern The regular expression pattern. + * @param string The string to check. + * @param ret Error code, if applicable, or number of results on success. + * + * @return -2 = Matching error (error code is stored in ret) + * 0 = No match. + * >1 = Number of results. + * + * @note You should free the returned handle (with regex_free()) + * when you are done with this pattern. + * + * @note Use the regex handle passed to this function to extract + * matches with regex_substr(). + */ +native regex_match_c(const string[], Regex:pattern, &ret); + +/** + * Matches a string against a regular expression pattern. + * + * @note If you intend on using the same regular expression pattern + * multiple times, consider using regex_compile and regex_match_c + * instead of making this function reparse the expression each time. + * + * @param string The string to check. + * @param pattern The regular expression pattern. + * @param ret Error code, or result state of the match. + * @param error Error message, if applicable. + * @param maxLen Maximum length of the error buffer. + * @param flags General flags for the regular expression. + * i = Ignore case + * m = Multilines (affects ^ and $ so that they match + * the start/end of a line rather than matching the + * start/end of the string). + * s = Single line (affects . so that it matches any character, + * even new line characters). + * x = Pattern extension (ignore whitespace and # comments). + * + * @return -2 = Matching error (error code is stored in ret) + * -1 = Error in pattern (error message and offset # in error and ret) + * 0 = No match. + * >1 = Handle for getting more information (via regex_substr) + * + * @note Flags only exist in amxmodx 1.8 and later. + * @note You should free the returned handle (with regex_free()) + * when you are done extracting all of the substrings. + */ +native Regex:regex_match(const string[], const pattern[], &ret, error[], maxLen, const flags[] = ""); + +/** + * Returns a matched substring from a regex handle. + * Substring ids start at 0 and end at ret-1, where ret is from the corresponding + * regex_match or regex_match_c function call. + * + * @param id The regex handle to extract data from. + * @param str_id The index of the expression to get - starts at 0, and ends at ret - 1. + * @param buffer The buffer to set to the matching substring. + * @param maxLen The maximum string length of the buffer. + * + */ +native regex_substr(Regex:id, str_id, buffer[], maxLen); + +/** + * Frees the memory associated with a regex result, and sets the handle to 0. + * This must be called on all results from regex_match() when you are done extracting + * the results with regex_substr(). + * The results of regex_compile() (and subsequently, regex_match_c()) only need to be freed + * when you are done using the pattern. + * + * + * @param id The regex handle to free. + * + * @noreturn + * + * @note Do not use the handle again after freeing it! + */ +native regex_free(&Regex:id); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/sockets.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/sockets.inc new file mode 100644 index 0000000..7eda92b --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/sockets.inc @@ -0,0 +1,64 @@ +/* + * + * AMX Mod X Module + * Basic Socket Functions + * + * Codebase from Ivan, -g-s-ivan@web.de (AMX 0.9.3) + * Modification by Olaf Reusch, kenterfie@hlsw.de (AMXX 0.16, AMX 0.96) + * + */ + +#if defined _socket_included + #endinput +#endif +#define _socket_included + +#if AMXX_VERSION_NUM >= 175 + #pragma reqlib sockets + #if !defined AMXMODX_NOAUTOLOAD + #pragma loadlib sockets + #endif +#else + #pragma library socket +#endif + +// Use SOCKET_TCP for TCP Socket connections + +#define SOCKET_TCP 1 + +// Use SOCKET_UDP for UDP Socket connections + +#define SOCKET_UDP 2 + +/* Opens a new connection to hostname:port via protocol (either SOCKET_TCP or SOCKET_UDP), + * returns a socket (positive) or negative or zero on error. + * States of error: + * 0 - no error + * 1 - error while creating socket + * 2 - couldn't resolve hostname + * 3 - couldn't connect to given hostname:port +*/ + +native socket_open(const _hostname[], _port, _protocol = SOCKET_TCP, &_error); + +/* Closes a Socket */ + +native socket_close(_socket); + +/* Recieves Data to string with the given length */ + +native socket_recv(_socket, _data[], _length); + +/* Sends data to the Socket */ + +native socket_send(_socket, const _data[], _length); + +/* Same as socket_send but Data can contain null bytes */ + +native socket_send2(_socket, const _data[], _length); + +/* This function will return true if the state (buffer content) have changed within the last recieve or +* the timeout, where timeout is a value in µSeconds, (1 sec =1000000 µsec). +* Use to check if new data is in your socket. */ + +native socket_change(_socket, _timeout=100000); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/sorting.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/sorting.inc new file mode 100644 index 0000000..567080c --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/sorting.inc @@ -0,0 +1,76 @@ +/* Sorting functions. + * + * by the AMX Mod X Development Team + * + * This file is provided as is (no warranties). + * + * All sort functions are based off the qsort() function from the + * C standard library, which uses the Quick Sort algorithm. + * For more info, see: http://linux.wku.edu/~lamonml/algor/sort/sort.html + */ + +#if defined _sorting_included + #endinput +#endif +#define _sorting_included + +enum SortMethod +{ + Sort_Ascending = 0, + Sort_Descending = 1, +}; + +/** + * Basic sorting functions below. + */ + +native SortIntegers(array[], array_size, SortMethod:order = Sort_Ascending); + +native SortFloats(Float:array[], array_size, SortMethod:order = Sort_Ascending); + +native SortStrings(array[][], num_strings, SortMethod:order = Sort_Ascending); + +/** + * Custom sorting functions below. + */ + +/** + * Sorts a custom 1D array. You must pass in a comparison function. + * The sorting algorithm then uses your comparison function to sort the data. + * The function is called in the following manner: + * + * public MySortFunc(elem1, elem2, const array[], const data[], data_size) + * + * elem1, elem2 - Current element pair being compared + * array[] - Array in its current mid-sorted state. + * data[] - Extra data array you passed to the sort func. + * data_size - Size of extra data you passed to the sort func. + * + * Your function should return: + * -1 if elem1 should go before elem2 + * 0 if elem1 and elem2 are equal + * 1 if elem1 should go after elem2 + * Note that the parameters after elem2 are all optional and you do not need to specify them. + */ +native SortCustom1D(array[], array_size, const comparefunc[], data[]="", data_size=0); + + +/** + * Sorts a custom 2D array. + * The sorting algorithm then uses your comparison function to sort the data. + * The function is called in the following manner: + * + * public MySortFunc(const elem1[], const elem2[], const array[], data[], data_size) + * + * elem1[], elem2[] - Current element array pairs being compared + * array[][] - Array in its currently being sorted state. + * data[] - Extra data array you passed to the sort func. + * data_size - Size of extra data you passed to the sort func. + * + * Your function should return: + * -1 if elem1[] should go before elem2[] + * 0 if elem1[] and elem2 are equal[] + * 1 if elem1[] should go after elem2[] + * Note that the parameters after elem2[] are all optional and you do not need to specify them. + */ +native SortCustom2D(array[][], array_size, const comparefunc[], data[]="", data_size=0); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/sqlx.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/sqlx.inc new file mode 100644 index 0000000..0baf82b --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/sqlx.inc @@ -0,0 +1,383 @@ +/** + * SQLX - Newer version of SQL stuff + */ + +#if defined _sqlx_included + #endinput +#endif +#define _sqlx_included + +//eh.. +#define SQL_NumRows SQL_NumResults + +#if AMXX_VERSION_NUM >= 175 + #pragma reqclass sqlx + #if !defined AMXMODX_NOAUTOLOAD + #pragma defclasslib sqlx mysql + #endif //!defined AMXMODX_NOAUTOLOAD +#endif //AMXX_VERSION_NUM + +enum Handle +{ + Empty_Handle +}; + +/** + * Creates a connection information tuple. + * This tuple must be passed into connection routines. + * Freeing the tuple is not necessary, but is a good idea if you + * create many of them. You can cache these handles globally. + * !!NOTE!! I have seen most people think that this connects to the DB. + * Nowhere does it say this, and in fact it does not. It only caches + * the connection information, the host/user/pass/etc. + * + * The optional timeout parameter specifies how long connections should wait before + * giving up. If 0, the default (which is undefined) is used. + * + */ +native Handle:SQL_MakeDbTuple(const host[], const user[], const pass[], const db[], timeout=0); + + +/** + * Frees an SQL handle. + * The handle can be to anything (tuple, connection, query, results, etc). + * If you free a database connection, it closes the connection as well. + */ +native SQL_FreeHandle(Handle:h); + + +/** + * Opens a database connection. + * Returns an SQL handle, which must be freed. + * Returns Empty_Handle on failure. + */ +native Handle:SQL_Connect(Handle:cn_tuple, &errcode, error[], maxlength); + + +/** + * Prepares a query. + * The query must always be freed. + * This does not actually do the query! + */ +native Handle:SQL_PrepareQuery(Handle:db, const fmt[], any:...); + + +/** + * Back-quotes characters in a string for database querying. + * Note: The buffer's maximum size should be 2*strlen(string) to catch + * all scenarios. + * + * @param db Database handle for localization, or Empty_Handle + * for when a handle is not available. + * @param buffer Buffer to copy to. + * @param buflen Maximum size of the buffer. + * @param string String to backquote (should not overlap buffer). + * @return Length of new string, or -1 on failure. + */ +native SQL_QuoteString(Handle:db, buffer[], buflen, const string[]); + +/** + * Back-quotes characters in a string for database querying. + * Note: The buffer's maximum size should be 2*strlen(string) to catch + * all scenarios. + * + * @param db Database handle for localization, or Empty_Handle + * for when a handle is not available. + * @param buffer Buffer to copy to. + * @param buflen Maximum size of the buffer. + * @param fmt Format of string to backquote (should not overlap buffer). + * @param ... Format arguments. + * @return Length of new string, or -1 on failure. + */ +native SQL_QuoteStringFmt(Handle:db, buffer[], buflen, const fmt[], any:...); + + +#define TQUERY_CONNECT_FAILED -2 +#define TQUERY_QUERY_FAILED -1 +#define TQUERY_SUCCESS 0 +/** + * Prepares and executes a threaded query. + * This will not interrupt gameplay in the event of a poor/lossed + * connection, however, the interface is more complicated and + * asynchronous. Furthermore, a new connection/disconnection is + * made for each query to simplify driver support. + * The handler should look like: + * + * @param failstate - One of the three TQUERY_ defines. + * @param query - Handle to the query, do not free it. + * @param error - An error message, if any. + * @param errnum - An error code, if any. + * @param data - Data array you passed in. + * @param size - Size of the data array you passed in. + * @param queuetime - Amount of gametime that passed while the query was resolving. + * + * public QueryHandler(failstate, Handle:query, error[], errnum, data[], size, Float:queuetime) + * + * Note! The handle you pass in is a DB Tuple, NOT an active connection! + * Note! The handle does not need to be freed. + * Also note: This function is not guaranteed to be in another thread + * (in fact - it's not). You're seeing data "after the fact", + * and as such to execute another query you should run + * SQL_ThreadQuery again with new data. + */ +native SQL_ThreadQuery(Handle:db_tuple, const handler[], const query[], const data[]="", dataSize=0); + + +/** + * Executes a query. + * Returns 1 if the query succeeded. + * Returns 0 if the query failed. + * NOTE: You can call this multiple times as long as its parent + * connection is kept open. Each time the result set will be freed + * from the previous call. + */ +native SQL_Execute(Handle:query); + +/** + * Gets information about a failed query error. + * Returns the errorcode. + */ +native SQL_QueryError(Handle:query, error[], maxlength); + + +/** + * Returns 1 if there are more results to be read, + * 0 otherwise. + */ +native SQL_MoreResults(Handle:query); + + +/** + * Tells whether a specific column in the current row + * is NULL or not. + */ +native SQL_IsNull(Handle:query, column); + +/** + * Retrieves the current result. + * A successful query starts at the first result, + * so you should not call SQL_NextRow() first. + * Passing no extra params - return int + * Passing one extra param - return float in 1st extra arg + * Passing two extra params - return string in 1st arg, max length in 2nd + * Example: + * new num = SQL_ReadResult(query, 0) + * new Float:num2 + * new str[32] + * SQL_ReadResult(query, 1, num2) + * SQL_ReadResult(query, 2, str, 31) + */ +native SQL_ReadResult(Handle:query, column, {Float,_}:...); + + +/** + * Advances to the next result (return value should be ignored). + */ +native SQL_NextRow(Handle:query); + + +/** + * Returns the number of affected rows. + */ +native SQL_AffectedRows(Handle:query); + + +/** + * Returns the number of rows total. + */ +native SQL_NumResults(Handle:query); + + +/** + * Returns the number of columns total. + */ +native SQL_NumColumns(Handle:query); + + +/** + * Returns the name of a column. + * Errors on a bad field number. + */ +native SQL_FieldNumToName(Handle:query, num, name[], maxlength); + + +/** + * Returns the number of a named column, or -1 if not found. + */ +native SQL_FieldNameToNum(Handle:query, const name[]); + + +/** + * Rewinds a result set to the first row. + */ +native SQL_Rewind(Handle:query); + + +/** + * Returns the insert id of the last INSERT query. + * Returns 0 otherwise. + */ +native SQL_GetInsertId(Handle:query); + + +/** + * Returns which driver this plugin is currently bound to. + */ +native SQL_GetAffinity(driver[], maxlen); + +/** + * Sets driver affinity. You can use this to force a particular + * driver implementation. This will automatically change all SQL + * natives in your plugin to be "bound" to the module in question. + * If no such module is found, it will return 0. This isn't necessarily bad - + * the user might have typed the wrong driver. Unless your plugin is built + * to handle different driver types at once, you should let this error pass. + * Note, that using this while you have open handles to another database + * type will cause problems. I.e., you cannot open a handle, switch + * affinity, then close the handle with a different driver. + * Switching affinity is an O(n*m) operation, where n is the number of + * SQL natives and m is the number of used natives in total. + * Intuitive programmers will note that this causes problems for threaded queries. + * You will have to either force your script to work under one affinity, or to + * pack the affinity type into the query data, check it against the current, then + * set the new affinity if necessary. Then, restore the old for safety. + */ +native SQL_SetAffinity(const driver[]); + +/** + * Returns the original query string that a query handle used. + */ +native SQL_GetQueryString(Handle:query, buffer[], maxlength); + +/** + * For queries which return multiple result sets, this advances to the next + * result set if one is available. Otherwise, the current result set is + * destroyed and will no longer be accessible. + * + * This function will always return false on SQLite, and when using threaded + * queries in MySQL. Nonetheless, it has the same effect of removing the last + * result set. + * + * @param query Query Handle. + * @return True on success, false on failure. + */ +native bool:SQL_NextResultSet(Handle:query); + +/** + * This function can be used to find out if a table in a Sqlite database exists. + * (updated for newer API) + */ +stock bool:sqlite_TableExists(Handle:db, const table[]) +{ + new Handle:query = SQL_PrepareQuery( + db, + "SELECT name FROM sqlite_master WHERE type='table' AND name='%s' LIMIT 1;", + table); + + if (!SQL_Execute(query) || !SQL_NumResults(query)) + { + SQL_FreeHandle(query); + return false; + } + + SQL_FreeHandle(query); + + return true; +} + +/** + * Use this for executing a query where you don't care about the result. + * Returns 0 on failure, 1 on success + */ +stock SQL_SimpleQuery(Handle:db, const query[], error[]="", maxlength=0, &rows=0) +{ + new Handle:hQuery = SQL_PrepareQuery(db, "%s", query); + + if (!SQL_Execute(hQuery)) + { + SQL_QueryError(hQuery, error, maxlength); + SQL_FreeHandle(hQuery); + return 0; + } + + rows = SQL_NumResults(hQuery); + + SQL_FreeHandle(hQuery); + + return 1; +} + +/** + * Use this for executing a query where you don't care about the result. + * Returns 0 on failure, 1 on success + */ +stock SQL_SimpleQueryFmt(Handle:db, error[]="", maxlength=0, &rows=0, const fmt[], any:...) +{ + static query_buf[2048]; + vformat(query_buf, 2047, fmt, 6); + + new Handle:hQuery = SQL_PrepareQuery(db, "%s", query_buf); + + if (!SQL_Execute(hQuery)) + { + SQL_QueryError(hQuery, error, maxlength); + SQL_FreeHandle(hQuery); + return 0; + } + + rows = SQL_NumResults(hQuery); + + SQL_FreeHandle(hQuery); + + return 1; +} + +/** + * Use this for executing a query and not caring about the error. + * Returns -1 on error, >=0 on success (with number of affected rows) + */ +stock SQL_QueryAndIgnore(Handle:db, const queryfmt[], any:...) +{ + static query[4096]; + new Handle:hQuery; + new ret; + + vformat(query, sizeof(query)-1, queryfmt, 3); + + hQuery = SQL_PrepareQuery(db, "%s", query); + + if (SQL_Execute(hQuery)) + { + ret = SQL_AffectedRows(hQuery); + } else { + ret = -1; + } + + SQL_FreeHandle(hQuery); + + return ret; +} + +stock Handle:SQL_MakeStdTuple(timeout = 0) +{ + static host[64], user[32], pass[32], db[128]; + static get_type[12], set_type[12]; + + get_cvar_string("amx_sql_host", host, 63); + get_cvar_string("amx_sql_user", user, 31); + get_cvar_string("amx_sql_pass", pass, 31); + get_cvar_string("amx_sql_type", set_type, 11); + get_cvar_string("amx_sql_db", db, 127); + + SQL_GetAffinity(get_type, 12); + + if (!equali(get_type, set_type)) + { + if (!SQL_SetAffinity(set_type)) + { + log_amx("Failed to set affinity from %s to %s.", get_type, set_type); + } + } + + return SQL_MakeDbTuple(host, user, pass, db, timeout); +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/string.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/string.inc new file mode 100644 index 0000000..7a5674a --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/string.inc @@ -0,0 +1,269 @@ +/* Strings manipulation +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is provided as is (no warranties). +*/ + +#if defined _string_included + #endinput +#endif +#define _string_included + +#define charsmax(%1) (sizeof(%1)-1) + +/* Checks if source contains string. On success function +* returns position in source, on failure returns -1. */ +native contain(const source[],const string[]); + +/* Checks if source contains string with case ignoring. On success function +* returns position in source, on failure returns -1. */ +native containi(const source[],const string[]); + +/* Replaces given string to another in given text. */ +native replace(text[], len, const what[], const with[]); + +/* Adds one string to another. Last parameter different from 0, specifies +* how many chars we want to add. Function returns number of all merged chars. */ +native add(dest[],len,const src[],max=0); + +/* Fills string with given format and parameters. + * Function returns number of copied chars. + * Example: format(dest,"Hello %s. You are %d years old","Tom",17). + * If any of your input buffers overlap with the destination buffer, + * format() falls back to a "copy-back" version as of 1.65. This is + * slower, so you should using a source string that is the same as + * the destination. + */ +native format(output[] ,len ,const format[] , any:...); + +/* Same as format(), except does not perform a "copy back" check. + * This means formatex() is faster, but DOES NOT ALLOW this type + * of call: + * formatex(buffer, len, "%s", buffer) + * formatex(buffer, len, buffer, buffer) + * formatex(buffer, len, "%s", buffer[5]) + * This is because the output is directly stored into "buffer", + * rather than copied back at the end. + */ +native formatex(output[] ,len ,const format[] , any:...); + +/* Replacement for format_args. Much faster and %L compatible. + * This works exactly like vsnprintf() from C. + * You must pass in the output buffer and its size, + * the string to format, and the number of the FIRST variable + * argument parameter. For example, for: + * function (a, b, c, ...) + * You would pass 4 (a is 1, b is 2, c is 3, et cetera). + * There is no vformatex(). + */ +native vformat(buffer[], len, const fmt[], vararg); + +/* + * Same as vformat(), except works in normal style dynamic natives. + * Instead of passing the format arg string, you can only pass the + * actual format argument number itself. + * If you pass 0, it will read the format string from an optional + * fifth parameter. + */ +native vdformat(buffer[], len, fmt_arg, vararg, ...); + +/* Gets parameters from function as formated string. */ +native format_args(output[] ,len ,pos = 0); + +/* Converts number to string. */ +native num_to_str(num,string[],len); + +/* Returns converted string to number. */ +native str_to_num(const string[]); + +/* Converts float to string. */ +native float_to_str(Float:fl, string[], len); + +/* Parses a float. */ +native Float:str_to_float(const string[]); + +/* Checks if two strings equal. If len var is set +* then there are only c chars comapred. */ +native equal(const a[],const b[],c=0); + +/* Checks if two strings equal with case ignoring. +* If len var is set then there are only c chars comapred. */ +native equali(const a[],const b[],c=0); + +/* Copies one string to another. By len var +* you may specify max. number of chars to copy. */ +native copy(dest[],len,const src[]); + +/* Copies one string to another until char ch is found. +* By len var you may specify max. number of chars to copy. */ +native copyc(dest[],len,const src[],ch); + +/* Sets string with given character. */ +native setc(src[],len,ch); + +/* Gets parameters from text. +* Example: to split text: "^"This is^" the best year", +* call function like this: parse(text,arg1,len1,arg2,len2,arg3,len3,arg4,len4) +* and you will get: "This is", "the", "best", "year" +* Function returns number of parsed parameters. */ +native parse(const text[], ... ); + +/* Breaks a string into two halves, by token. + See strbreak() for doing this with parameters. + Example: + str1[] = This *is*some text + strtok(str1, left, 24, right, 24, '*') + left will be "This " + Right will be "is*some text" + If you use trimSpaces, all spaces are trimmed from Left. +*/ +native strtok(const text[], Left[], leftLen, Right[], rightLen, token=' ', trimSpaces=0); + + +/* Gets parameters from text one at a time + It breaks a string into the first parameter and the rest of the parameters + (A left side and right side of the string) + Example: to split text: "^"This is^" the best year", + strbreak(text, arg1, len1, arg2, len2) + arg1="This is", arg2=the best year + This is more useful than parse() because you can keep breaking + any number of arguments */ +native strbreak(const text[], Left[], leftLen, Right[], rightLen); + +/* Strips spaces from the beginning and end of a string. */ +native trim(text[]); + +/* Converts all chars in string to lower case. */ +native strtolower(string[]); + +/* Converts all chars in string to upper case. */ +native strtoupper(string[]); + +/* Make a string's first character uppercase */ +native ucfirst(string[]); + +/* Returns true when value is digit. */ +native isdigit(ch); + +/* Returns true when value is letter. */ +native isalpha(ch); + +/* Returns true when value is space. */ +native isspace(ch); + +/* Returns true when value is letter or digit. */ +native isalnum(ch); + +/* Concatenates a string. Maxlength is the total buffer of the destination. */ +native strcat(dest[], const source[], maxlength); + +/* Finds a string in another string. Returns -1 if not found. */ +native strfind(const string[], const sub[], ignorecase=0, pos=0); + +/* Compares two strings with the C function strcmp(). Returns 0 on equal. */ +native strcmp(const string1[], const string2[], ignorecase=0); + +/* Tests if given string contains only digits. Also, returns false for zero-length strings. */ +stock bool:is_str_num(const sString[]) +{ + new i = 0; + + while (sString[i] && isdigit(sString[i])) + ++i; + + return sString[i] == 0 && i != 0; +} + +/* It is basically strbreak but you have a delimiter that is more than one character in length. + You pass the Input string, the Left output, the max length of the left output, + the right output , the max right length, and then the delimiter string. + By Suicid3 +*/ +stock split(const szInput[], szLeft[], pL_Max, szRight[], pR_Max, const szDelim[]) +{ + new iEnd = contain(szInput, szDelim); + new iStart = iEnd + strlen(szDelim); + + //If delimiter isnt in Input just split the string at max lengths + if (iEnd == -1) + { + iStart = copy(szLeft, pL_Max, szInput); + copy(szRight, pR_Max, szInput[iStart]); + return; + } + + //If delimter is in Input then split at input for max lengths + if (pL_Max >= iEnd) + copy(szLeft, iEnd, szInput); + else + copy(szLeft, pL_Max, szInput); + + copy(szRight, pR_Max, szInput[iStart]); + + return; +} + +/* Removes a path from szFilePath leaving the name of the file in szFile for a pMax length. */ +stock remove_filepath(const szFilePath[], szFile[], pMax) +{ + new len = strlen(szFilePath); + + while ((--len >= 0) && (szFilePath[len] != '/') && (szFilePath[len] != '\')) { } + + copy(szFile, pMax, szFilePath[len + 1]); + + return; +} + +/* Replaces a contained string iteratively. + * This ensures that no infinite replacements will take place by + * intelligently moving to the next string position each iteration. + */ +stock replace_all(string[], len, const what[], const with[]) +{ + new pos = 0; + + if ((pos = contain(string, what)) == -1) + { + return 0; + } + + new total = 0; + new with_len = strlen(with); + new diff = strlen(what) - with_len; + new total_len = strlen(string); + new temp_pos = 0; + + while (replace(string[pos], len - pos, what, with) != 0) + { + total++; + + /* jump to position after replacement */ + pos += with_len; + + /* update cached length of string */ + total_len -= diff; + + /* will the next call be operating on the last character? */ + if (pos >= total_len) + { + break; + } + + /* find the next position from our offset */ + temp_pos = contain(string[pos], what); + + /* if it's invalid, we're done */ + if (temp_pos == -1) + { + break; + } + + /* otherwise, reposition and update counters */ + pos += temp_pos; + } + + return total; +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/svn_version.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/svn_version.inc new file mode 100644 index 0000000..2701890 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/svn_version.inc @@ -0,0 +1,16 @@ +/* AMX Mod X constants +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is provided as is (no warranties). +*/ + +#if defined _svnversion_included + #endinput +#endif +#define _svnversion_included + +#define AMXX_VERSION 1.82 +#define AMXX_VERSION_NUM 182 +stock const AMXX_VERSION_STR[] = "1.8.2"; diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/svn_version.tpl b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/svn_version.tpl new file mode 100644 index 0000000..db49387 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/svn_version.tpl @@ -0,0 +1,16 @@ +/* AMX Mod X constants +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is provided as is (no warranties). +*/ + +#if defined _svnversion_included + #endinput +#endif +#define _svnversion_included + +#define AMXX_VERSION $PMAJOR$.$PMINOR$$PREVISION$ +#define AMXX_VERSION_NUM $PMAJOR$$PMINOR$$PREVISION$ +stock const AMXX_VERSION_STR[] = "$PMAJOR$.$PMINOR$.$PREVISION$"; diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tfcconst.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tfcconst.inc new file mode 100644 index 0000000..0affc38 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tfcconst.inc @@ -0,0 +1,78 @@ +/* TFCX const + * + * (c) 2004, SidLuke + * This file is provided as is (no warranties). + */ + +#if defined _tfcconst_included + #endinput +#endif +#define _tfcconst_included + + +#define TFCMAX_WEAPONS 37 + +enum { + TFC_AMMO_SHELLS = 0, + TFC_AMMO_BULLETS, + TFC_AMMO_CELLS, + TFC_AMMO_ROCKETS, + TFC_AMMO_NADE1, + TFC_AMMO_NADE2, +}; + +enum { + TFC_WPN_NONE = 0, + TFC_WPN_TIMER,//TFC_WPN_UNK1, + TFC_WPN_SENTRYGUN,//TFC_WPN_UNK2, + TFC_WPN_MEDIKIT, + TFC_WPN_SPANNER, + TFC_WPN_AXE, + TFC_WPN_SNIPERRIFLE, + TFC_WPN_AUTORIFLE, + TFC_WPN_SHOTGUN, + TFC_WPN_SUPERSHOTGUN, + TFC_WPN_NG, + TFC_WPN_SUPERNG, + TFC_WPN_GL, + TFC_WPN_FLAMETHROWER, + TFC_WPN_RPG, + TFC_WPN_IC, + TFC_WPN_FLAMES,//TFC_WPN_UNK16, + TFC_WPN_AC, + TFC_WPN_UNK18, + TFC_WPN_UNK19, + TFC_WPN_TRANQ, + TFC_WPN_RAILGUN, + TFC_WPN_PL, + TFC_WPN_KNIFE, + TFC_WPN_CALTROP, // 24 + TFC_WPN_CONCUSSIONGRENADE, + TFC_WPN_NORMALGRENADE, + TFC_WPN_NAILGRENADE, + TFC_WPN_MIRVGRENADE, + TFC_WPN_NAPALMGRENADE, + TFC_WPN_GASGRENADE, + TFC_WPN_EMPGRENADE, +}; + +enum { + TFC_PC_SCOUT = 1, + TFC_PC_SNIPER, + TFC_PC_SOLDIER, + TFC_PC_DEMOMAN, + TFC_PC_MEDIC, + TFC_PC_HWGUY, + TFC_PC_PYRO, + TFC_PC_SPY, + TFC_PC_ENGENEER, + TFC_PC_CIVILIAN, +}; + +#define TFC_PC_ENGINEER TFC_PC_ENGENEER + +// Goal items +#define TFC_GOALITEM_BLUE (1 << 17) +#define TFC_GOALITEM_RED (1 << 18) +#define TFC_GOALITEM_YELLOW (1 << 24) +#define TFC_GOALITEM_GREEN (1 << 25) diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tfcstats.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tfcstats.inc new file mode 100644 index 0000000..eb11868 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tfcstats.inc @@ -0,0 +1,55 @@ +/* TFCX Stats functions + * + * (c) 2004, SidLuke + * This file is provided as is (no warranties). + */ + +#if defined _tfcstats_included + #endinput +#endif +#define _tfcstats_included + +/* Gets stats from given weapon index. If wpnindex is 0 +* then the stats are from all weapons. If weapon has not been used function +* returns 0 in other case 1. Fields in stats are: +* 0 - kills +* 1 - deaths +* 2 - headshots +* 3 - teamkilling +* 4 - shots +* 5 - hits +* 6 - damage +* For body hits fields see amxconst.inc. */ +native get_user_wstats(index,wpnindex,stats[8],bodyhits[8]); + +/* Gets round stats from given weapon index.*/ +native get_user_wrstats(index,wpnindex,stats[8],bodyhits[8]); + +/* Gets overall stats which are stored in file on server +* and updated on every respawn or user disconnect. +* Function returns the position in stats by diff. kills to deaths. */ +native get_user_stats(index,stats[8],bodyhits[8]); + +/* Gets round stats of player. */ +native get_user_rstats(index,stats[8],bodyhits[8]); + +/* Gets stats with which user have killed/hurt his victim. If victim is 0 +* then stats are from all victims. If victim has not been hurt, function +* returns 0 in other case 1. User stats are reset on his respawn. */ +native get_user_vstats(index,victim,stats[8],bodyhits[8],wpnname[]="",len=0); + +/* Gets stats with which user have been killed/hurt. If killer is 0 +* then stats are from all attacks. If killer has not hurt user, function +* returns 0 in other case 1. User stats are reset on his respawn. */ +native get_user_astats(index,wpnindex,stats[8],bodyhits[8],wpnname[]="",len=0); + +/* Resets life, weapon, victims and attackers user stats. */ +native reset_user_wstats(index); + +/* Gets overall stats which stored in stats.dat file in amx folder +* and updated on every mapchange or user disconnect. +* Function returns next index of stats entry or 0 if no more exists. */ +native get_stats(index,stats[8],bodyhits[8],name[],len); + +/* Returns number of all entries in stats. */ +native get_statsnum(); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tfcx.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tfcx.inc new file mode 100644 index 0000000..73bff77 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tfcx.inc @@ -0,0 +1,145 @@ +/* tfcX functions + * + * (c) 2004, SidLuke + * This file is provided as is (no warranties). + */ + +#if defined _tfcx_included + #endinput +#endif +#define _tfcx_included + +#include <tfcconst> +#include <tfcstats> + +#if AMXX_VERSION_NUM >= 175 + #pragma reqclass xstats + #if !defined AMXMODX_NOAUTOLOAD + #pragma defclasslib xstats tfcx + #endif +#else + #pragma library tfcx +#endif + +/************* Shared Natives Start ********************************/ + +/* Forward types */ +enum { + XMF_DAMAGE = 0, + XMF_DEATH, +}; + +/* Use this function to register forwards */ +native register_statsfwd( ftype ); + +/* Function is called after player to player attacks , +* if players were damaged by teammate TA is set to 1 */ +forward client_damage(attacker,victim,damage,wpnindex,hitplace,TA); + +/* Function is called after player death , +* if player was killed by teammate TK is set to 1 */ +forward client_death(killer,victim,wpnindex,hitplace,TK); + +/* Custom Weapon Support */ +/* function will return index of new weapon */ +native custom_weapon_add( const wpnname[],melee = 0,const logname[]="" ); +/* Function will pass damage done by this custom weapon to stats module and other plugins */ +native custom_weapon_dmg( weapon, att, vic, damage, hitplace=0 ); +/* Function will pass info about custom weapon shot to stats module */ +native custom_weapon_shot( weapon,index ); // weapon id , player id + +/* function will return 1 if true */ +native xmod_is_melee_wpn(wpnindex); + +/* Returns weapon name. */ +native xmod_get_wpnname(wpnindex,name[],len); + +/* Returns weapon logname. */ +native xmod_get_wpnlogname(wpnindex,name[],len); + +/* Returns weapons array size */ +native xmod_get_maxweapons(); + +/* Returns stats array size ex. 8 in TS , 9 in DoD */ +native xmod_get_stats_size(); + +/* Returns 1 if true */ +native xmod_is_custom_wpn(wpnindex); + +/************* Shared Natives End ********************************/ + +stock tfc_isgrenade( weapon ){ + switch( weapon ) + { + case TFC_WPN_CALTROP, + TFC_WPN_CONCUSSIONGRENADE, + TFC_WPN_NORMALGRENADE, + TFC_WPN_NAILGRENADE, + TFC_WPN_MIRVGRENADE, + TFC_WPN_NAPALMGRENADE, + TFC_WPN_GASGRENADE, + TFC_WPN_EMPGRENADE: + return 1; + default: return 0; + } + return 0; +} + +native tfc_userkill( index ); + +/* Use this function to set private data offsets if needed +Default offsets: + timer: 932 + sentrygun: 83 +from AssKicR + shells: 53 + bullets: 55 + cells: 57 + rockets: 59 + nade1: 14 + nade2: 15 +*/ +native tfc_setpddata(timer,sentrygun,shells,bullets,cells,rockets,nade1,nade2); + +/*********************************************************************/ + +native tfc_setmodel(index, const Model[], const Skin[]); +native tfc_clearmodel(index); + +/* Get amount of ammo in backpack on a user for a specific weapon */ +/* Ammo Types in tfcconst.inc */ +native tfc_getbammo(index, ammo); + +/* Set amount of ammo in backpack on a user for a specific weapon */ +native tfc_setbammo(index, ammo, value); + +/* Returns amount of ammo in weapon's clip (backpack) */ +/* Weapons list in tfcconst.inc */ +native tfc_getweaponbammo(index, weapon); + +/* Sets amount of ammo in weapon's clip (backpack) */ +native tfc_setweaponbammo(index, weapon, value); + +/* Returns amount of ammo in weapon's clip */ +/* Index must be weapon's entity index */ +native tfc_getweaponammo(index); + +/* Sets amount of ammo in weapon's clip */ +/* Index must be weapon's entity index */ +native tfc_setweaponammo(index, value); + +/* Returns 1 if user is carrying a goal item such as a flag or a keycard, else 0. + * Team is by reference parameter that will be set to owning team(s) of the goal item. + * Use the TFC_GOALITEM_* constants to determine the owning team. + */ +native tfc_get_user_goalitem(index, &team); + +/* Returns 1 if the player is a spy and is currently feigning death */ +native tfc_is_user_feigning(index); + +/* Returns 1 if the two teams are allies, 0 otherwise + * Note: Team must be 1->4 + * Team 0 will always return 0 + * Any other team will result in an error + */ +native tfc_is_team_ally(TeamA,TeamB); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/time.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/time.inc new file mode 100644 index 0000000..b76a275 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/time.inc @@ -0,0 +1,90 @@ +/* Time specific functions +* +* by the AMX Mod X Development Team +* +* This file is provided as is (no warranties). +*/ + +#if defined _time_included + #endinput +#endif +#define _time_included + +/* Time unit types for get_time_length() */ +enum +{ + timeunit_seconds = 0, + timeunit_minutes, + timeunit_hours, + timeunit_days, + timeunit_weeks, +}; + +// seconds are in each time unit +#define SECONDS_IN_MINUTE 60 +#define SECONDS_IN_HOUR 3600 +#define SECONDS_IN_DAY 86400 +#define SECONDS_IN_WEEK 604800 + +/* Stock by Brad */ +stock get_time_length(id, unitCnt, type, output[], outputLen) +{ +// IMPORTANT: You must add register_dictionary("time.txt") in plugin_init() + +// id: The player whose language the length should be translated to (or 0 for server language). +// unitCnt: The number of time units you want translated into verbose text. +// type: The type of unit (i.e. seconds, minutes, hours, days, weeks) that you are passing in. +// output: The variable you want the verbose text to be placed in. +// outputLen: The length of the output variable. + + if (unitCnt > 0) + { + // determine the number of each time unit there are + new weekCnt = 0, dayCnt = 0, hourCnt = 0, minuteCnt = 0, secondCnt = 0; + + switch (type) + { + case timeunit_seconds: secondCnt = unitCnt; + case timeunit_minutes: secondCnt = unitCnt * SECONDS_IN_MINUTE; + case timeunit_hours: secondCnt = unitCnt * SECONDS_IN_HOUR; + case timeunit_days: secondCnt = unitCnt * SECONDS_IN_DAY; + case timeunit_weeks: secondCnt = unitCnt * SECONDS_IN_WEEK; + } + + weekCnt = secondCnt / SECONDS_IN_WEEK; + secondCnt -= (weekCnt * SECONDS_IN_WEEK); + + dayCnt = secondCnt / SECONDS_IN_DAY; + secondCnt -= (dayCnt * SECONDS_IN_DAY); + + hourCnt = secondCnt / SECONDS_IN_HOUR; + secondCnt -= (hourCnt * SECONDS_IN_HOUR); + + minuteCnt = secondCnt / SECONDS_IN_MINUTE; + secondCnt -= (minuteCnt * SECONDS_IN_MINUTE); + + // translate the unit counts into verbose text + new maxElementIdx = -1; + new timeElement[5][33]; + + if (weekCnt > 0) + format(timeElement[++maxElementIdx], 32, "%i %L", weekCnt, id, (weekCnt == 1) ? "TIME_ELEMENT_WEEK" : "TIME_ELEMENT_WEEKS"); + if (dayCnt > 0) + format(timeElement[++maxElementIdx], 32, "%i %L", dayCnt, id, (dayCnt == 1) ? "TIME_ELEMENT_DAY" : "TIME_ELEMENT_DAYS"); + if (hourCnt > 0) + format(timeElement[++maxElementIdx], 32, "%i %L", hourCnt, id, (hourCnt == 1) ? "TIME_ELEMENT_HOUR" : "TIME_ELEMENT_HOURS"); + if (minuteCnt > 0) + format(timeElement[++maxElementIdx], 32, "%i %L", minuteCnt, id, (minuteCnt == 1) ? "TIME_ELEMENT_MINUTE" : "TIME_ELEMENT_MINUTES"); + if (secondCnt > 0) + format(timeElement[++maxElementIdx], 32, "%i %L", secondCnt, id, (secondCnt == 1) ? "TIME_ELEMENT_SECOND" : "TIME_ELEMENT_SECONDS"); + + switch(maxElementIdx) + { + case 0: format(output, outputLen, "%s", timeElement[0]); + case 1: format(output, outputLen, "%s %L %s", timeElement[0], id, "TIME_ELEMENT_AND", timeElement[1]); + case 2: format(output, outputLen, "%s, %s %L %s", timeElement[0], timeElement[1], id, "TIME_ELEMENT_AND", timeElement[2]); + case 3: format(output, outputLen, "%s, %s, %s %L %s", timeElement[0], timeElement[1], timeElement[2], id, "TIME_ELEMENT_AND", timeElement[3]); + case 4: format(output, outputLen, "%s, %s, %s, %s %L %s", timeElement[0], timeElement[1], timeElement[2], timeElement[3], id, "TIME_ELEMENT_AND", timeElement[4]); + } + } +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tsconst.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tsconst.inc new file mode 100644 index 0000000..a49ec5f --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tsconst.inc @@ -0,0 +1,146 @@ +/* TSFUN constants + * + * (c) 2005, Suzuka + * This file is provided as is (no warranties). + */ + +#if defined _tsconst_included + #endinput +#endif +#define _tsconst_included + +#define TSMAX_WEAPONS 44 // 37 + throwing knife + brekable + 5 custom weapon slots + +#define TSPWUP_NONE 0 +#define TSPWUP_RANDOM 0 +#define TSPWUP_SLOWMO 1 +#define TSPWUP_INFAMMO 2 +#define TSPWUP_KUNGFU 4 +#define TSPWUP_SLOWPAUSE 8 +#define TSPWUP_DFIRERATE 16 +#define TSPWUP_GRENADE 32 +#define TSPWUP_HEALTH 64 +#define TSPWUP_ARMOR 128 +#define TSPWUP_SUPERJUMP 256 + +#define TSITEM_KUNGFU 1<<0 +#define TSITEM_SUPERJUMP 1<<1 + +#define TSKF_STUNTKILL 1<<0 +#define TSKF_SLIDINGKILL 1<<1 +#define TSKF_DOUBLEKILL 1<<2 +#define TSKF_ISSPEC 1<<3 +#define TSKF_KILLEDSPEC 1<<4 + +#define TSA_SILENCER 1 +#define TSA_LASERSIGHT 2 +#define TSA_FLASHLIGHT 4 +#define TSA_SCOPE 8 + +#define TSMSG_NORMAL 6 +#define TSMSG_WAITING 11 +#define TSMSG_DEAD 1 +#define TSMSG_KILLER 2 +#define TSMSG_DEMOLITION 3 +#define TSMSG_SPECIALIST 4 +#define TSMSG_UNSTOPPABLE 5 +#define TSMSG_THEONE 10 + +#define STUNT_NONE 0 +#define STUNT_DUCK 1 +#define STUNT_ROLL 2 +#define STUNT_DIVE 3 +#define STUNT_GETUP 4 +#define STUNT_FLIP 5 + +enum { + TSW_GLOCK18 = 1, + TSW_UNK1, + TSW_UZI, + TSW_M3, + TSW_M4A1, + TSW_MP5SD, + TSW_MP5K, + TSW_ABERETTAS, + TSW_MK23, + TSW_AMK23, + TSW_USAS, + TSW_DEAGLE, + TSW_AK47, + TSW_57, + TSW_AUG, + TSW_AUZI, + TSW_TMP, + TSW_M82A1, + TSW_MP7, + TSW_SPAS, + TSW_GCOLTS, + TSW_GLOCK20, + TSW_UMP, + TSW_M61GRENADE, + TSW_CKNIFE, + TSW_MOSSBERG, + TSW_M16A4, + TSW_MK1, + TSW_C4, + TSW_A57, + TSW_RBULL, + TSW_M60E3, + TSW_SAWED_OFF, + TSW_KATANA, + TSW_SKNIFE, + TSW_KUNG_FU, + TSW_TKNIFE, +}; + +/* +valid tsweaponid in TS_GiveWeapon + +1: "Glock 18" +3: "Mini Uzi" +4: "Benelli M3" +5: "M4A1" +6: "MP5SD" +7: "MP5K" +8: "Akimbo Berettas" +9: "Socom Mk23" +11: "Usas12" +12: "Desert Eagle" +13: "Ak47" +14: "FiveSeven" +15: "Steyr Aug" +17: "Steyr Tmp" +18: "Barrett M82" +19: "HK Pdw" +20: "Spas12" +21: "Akimbo colts" +22: "Glock 20" +23: "Mac10" +25: "Combat Knife" +26: "Mossberg 500" +27: "M16A4" +28: "Ruger Mk1" +24: "M61 Grenade" +29: "C4" +31: "Raging Bull" +32: "M60" +33: "Sawed off" +34: "Katana" +35: "Seal Knife" + +valid pwuptype in TS_GivePwUp + +0: "Random" +1: "Slow Motion" +2: "Infinite Clip" +4: "Kung Fu" +8: "Slow Pause" +16: "Double Firerate" +32: "Grenade" +64: "Health" +128: "Armor" +256: "Superjump" + +*/ + + diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tsfun.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tsfun.inc new file mode 100644 index 0000000..623df22 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tsfun.inc @@ -0,0 +1,154 @@ +/* TSFUN + * + * (c) 2005-2006, AMX Mod X Dev Team + * This file is provided as is (no warranties). + */ + +#if defined _tsxfun_included + #endinput +#endif +#define _tsxfun_included + +#include <tsx> +#include <tsconst> + +/************* Shared Natives Start ********************************/ + +/* Forward types */ +enum { + XMF_DAMAGE = 0, + XMF_DEATH, +}; + +#if AMXX_VERSION_NUM >= 175 + #pragma reqlib tsfun + #if !defined AMXMODX_NOAUTOLOAD + #pragma loadlib tsfun + #endif +#else + #pragma library tsfun +#endif + +/************* Shared Natives End ********************************/ + +/* Function is called just before a kung foo attack is done, + * damage and time length may be altered with natives. + * Return PLUGIN_HANDLED to stop attack. + * UNAVAILABLE IN 1.70 + */ +forward Melee_Attack(id,Float:time,Float:damage,UNAVAILABLE); + + +// Returns when someone stunts, after they do it. +//UNAVAILABLE IN 1.70 +forward client_stunt(id,stunttype,UNAVAILABLE); + +/* Function is called when powerups are ran, + * Returns value of powerup. Use TSPWUP_*'s + * to find exactly which one it is. + * UNAVAILABLE IN 1.70 + */ +forward client_powerup(id,powerup,UNAVAILABLE); + +/* weapon logname to weapon name convertion */ +native ts_wpnlogtoname(const logname[],name[],len); + +/* weapon logname to weapon index convertion */ +native ts_wpnlogtoid(const logname[]); + +//UNAVAILABLE IN 1.70 +//native Float:ts_getusertime( index ); //! +//native ts_setusertime( index, Float:time ); //! + +native ts_getusercash( index ); +native ts_setusercash( index, money ); + +native ts_getuserslots( index ); +native ts_setuserslots( index, slots ); + +native ts_getuserstate( index ); +native ts_getuserwpn( index,&clip=0,&ammo=0,&mode=0,&extra=0 ); +native ts_getuserspace( index ); + +native ts_getuserkillflags(killer); +native ts_getkillingstreak( index ); +native ts_getuserlastfrag( index ); + +native ts_giveweapon( index,weapon,clips,extra ); + +native ts_getuserpwup( index ); + +stock ts_has_slowmo(id) return (ts_getuserpwup(id) &TSPWUP_SLOWMO); +stock ts_has_infammo(id) return (ts_getuserpwup(id) &TSPWUP_INFAMMO); +stock ts_has_slowpause(id) return (ts_getuserpwup(id) &TSPWUP_SLOWPAUSE); +stock ts_has_dfirerate(id) return (ts_getuserpwup(id) &TSPWUP_DFIRERATE); +stock ts_has_grenade(id) return (ts_getuserpwup(id) &TSPWUP_GRENADE); +stock ts_has_health(id) return (ts_getuserpwup(id) &TSPWUP_HEALTH); +stock ts_has_armor(id) return (ts_getuserpwup(id) &TSPWUP_ARMOR); + +/* Function will create pwup entity and return its index (pwupent) */ +native ts_createpwup( pwup ); + +native ts_givepwup( index,pwupent ); + +native ts_setpddata( knifeoffset ); + +// Alters a fu attack. Use with fu forward +// UNAVAILABLE IN 1.70 +// native ts_set_fuattack(id,Float:time,Float:damage); //! + +// Changes board message +native ts_set_message(id,message); + +// Gets the message board message +native ts_get_message(id); + +stock ts_is_normal(id) +{ + new msg = ts_get_message(id); + if( (msg > 11) || (msg > 6 && msg < 10) ) return 1; + return 0; +} +stock ts_is_waiting(id) return (ts_get_message(id) == TSMSG_WAITING); +stock ts_is_dead(id) return (ts_get_message(id) == TSMSG_DEAD); +stock ts_is_killer(id) return (ts_get_message(id) == TSMSG_KILLER); +stock ts_is_demolition(id) return (ts_get_message(id) == TSMSG_DEMOLITION); +stock ts_is_specialist(id) return (ts_get_message(id) == TSMSG_SPECIALIST); +stock ts_is_unstoppable(id) return (ts_get_message(id) == TSMSG_UNSTOPPABLE); +stock ts_is_theone(id) return (ts_get_message(id) == TSMSG_THEONE); + +// Return one on true, 0 on false +// UNAVAILABLE IN 1.70 +native ts_has_superjump(id); //! +native ts_has_fupowerup(id); //! +native ts_is_in_slowmo(id); + +// Get and set consecutive frags +//UNAVAILABLE IN 1.70 +//native ts_get_cons_frags(id); +//native ts_set_cons_frags(id,num); + +// Set to see cool bullet trails. Only id will see them. +native ts_set_bullettrail(id,yesorno); + +// Sets fake versions of slow mo and slow pause. Use ts_set_speed for more options. +native ts_set_fakeslowmo(id,Float:time); +native ts_set_fakeslowpause(id,Float:time); + +/* Sets speed artificially. 1.0 is default, Go into fractions and decimals for slower +* and put in higher numbers for higher speeds. Aura is how far things around you are effected +* Time is the time until it wears off. 0.0 for speed will freeze people. Do not use negatives. */ + +native ts_set_speed(id,Float:speed,Float:auradist,Float:time); + +/* Sets physics speed artificially. Things like sparks and sounds will be effected. +* Any negative number will render all physics paused. */ +native ts_set_physics_speed(id,Float:speed); + +// Returns 0 if no powerup is running. Returns the powerup type otherwise. +native ts_is_running_powerup(id); + +// Highly experimental command which overrides powerup types. +// Use if a powerup is already running, or if a powerup is not running. +// Safe to use in powerup forward. +native ts_force_run_powerup(id,PWUP_TYPE); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tsstats.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tsstats.inc new file mode 100644 index 0000000..7ec543f --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tsstats.inc @@ -0,0 +1,58 @@ +/* TSXMod Stats functions + * + * (c) 2004, SidLuke + * This file is provided as is (no warranties). + */ + +#if defined _tsstats_included + #endinput +#endif +#define _tsstats_included + +/* Gets stats from given weapon index. If wpnindex is 0 +* then the stats are from all weapons. If weapon has not been used function +* returns 0 in other case 1. Fields in stats are: +* 0 - kills +* 1 - deaths +* 2 - headshots +* 3 - teamkilling +* 4 - shots +* 5 - hits +* 6 - damage +* For body hits fields see amxconst.inc. */ +native get_user_wstats(index,wpnindex,stats[8],bodyhits[8]); + +/* Gets round stats from given weapon index.*/ +native get_user_wrstats(index,wpnindex,stats[8],bodyhits[8]); + +/* Gets life (from spawn to spawn) stats from given weapon index.*/ +native get_user_wlstats(index,wpnindex,stats[8],bodyhits[8]); + +/* Gets overall stats which are stored in file on server +* and updated on every respawn or user disconnect. +* Function returns the position in stats by diff. kills to deaths. */ +native get_user_stats(index,stats[8],bodyhits[8]); + +/* Gets round stats of player. */ +native get_user_rstats(index,stats[8],bodyhits[8]); + +/* Gets stats with which user have killed/hurt his victim. If victim is 0 +* then stats are from all victims. If victim has not been hurt, function +* returns 0 in other case 1. User stats are reset on his respawn. */ +native get_user_vstats(index,victim,stats[8],bodyhits[8],wpnname[]="",len=0); + +/* Gets stats with which user have been killed/hurt. If killer is 0 +* then stats are from all attacks. If killer has not hurt user, function +* returns 0 in other case 1. User stats are reset on his respawn. */ +native get_user_astats(index,wpnindex,stats[8],bodyhits[8],wpnname[]="",len=0); + +/* Resets life, weapon, victims and attackers user stats. */ +native reset_user_wstats(index); + +/* Gets overall stats which stored in stats.dat file in amx folder +* and updated on every mapchange or user disconnect. +* Function returns next index of stats entry or 0 if no more exists. */ +native get_stats(index,stats[8],bodyhits[8],name[],len); + +/* Returns number of all entries in stats. */ +native get_statsnum(); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tsx.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tsx.inc new file mode 100644 index 0000000..222b227 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/tsx.inc @@ -0,0 +1,85 @@ +/* TSXMod functions + * + * (c) 2004, SidLuke + * This file is provided as is (no warranties). + */ + +#if defined _tsx_included + #endinput +#endif +#define _tsx_included + +#include <tsstats> + +#if AMXX_VERSION_NUM >= 175 + #pragma reqclass xstats + #if !defined AMXMODX_NOAUTOLOAD + #pragma defclasslib xstats tsx + #endif +#else + #pragma library tsx +#endif + +/************* Shared Natives Start ********************************/ + +/* Forward types */ +enum { + XMF_DAMAGE = 0, + XMF_DEATH, +}; + +/* Use this function to register forwards + * DEPRECATED + */ +native register_statsfwd( ftype ); + +/* Function is called after player to player attacks , +* if players were damaged by teammate TA is set to 1 */ +forward client_damage(attacker,victim,damage,wpnindex,hitplace,TA); + +/* Function is called after player death , +* if player was killed by teammate TK is set to 1 */ +forward client_death(killer,victim,wpnindex,hitplace,TK); + +/* Custom Weapon Support */ +/* function will return index of new weapon */ +native custom_weapon_add( const wpnname[],melee = 0,const logname[]="" ); +/* Function will pass damage done by this custom weapon to stats module and other plugins */ +native custom_weapon_dmg( weapon, att, vic, damage, hitplace=0 ); +/* Function will pass info about custom weapon shot to stats module */ +native custom_weapon_shot( weapon,index ); // weapon id , player id + +/* function will return 1 if true */ +native xmod_is_melee_wpn(wpnindex); + +/* Returns weapon name. */ +native xmod_get_wpnname(wpnindex,name[],len); + +/* Returns weapon logname. */ +native xmod_get_wpnlogname(wpnindex,name[],len); + +/* Returns weapons array size */ +native xmod_get_maxweapons(); + +/* Returns stats array size ex. 8 in TS , 9 in DoD */ +native xmod_get_stats_size(); + +/* Returns 1 if true */ +native xmod_is_custom_wpn(wpnindex); + +/************* Shared Natives End ********************************/ + +/* Spawns a Weapon */ +stock ts_weaponspawn(const weaponid[], const duration[], const extraclip[], const spawnflags[], const Float:Origin[3]) +{ + new ent = create_entity("ts_groundweapon"); + + DispatchKeyValue(ent, "tsweaponid", weaponid); + DispatchKeyValue(ent, "wduration", duration); + DispatchKeyValue(ent, "wextraclip", extraclip); + DispatchKeyValue(ent, "spawnflags", spawnflags); + DispatchSpawn(ent); + + entity_set_origin(ent, Origin); + return PLUGIN_HANDLED; +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/vault.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/vault.inc new file mode 100644 index 0000000..43a915c --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/vault.inc @@ -0,0 +1,26 @@ +/* Vault functions +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is provided as is (no warranties). +*/ + +#if defined _vault_included + #endinput +#endif +#define _vault_included + +/* Reads a data from given key. +* If len is set to zero then get_vaultdata +* returns value as an number. */ +native get_vaultdata(const key[], data[] = "", len = 0); + +/* Sets a data under given key. */ +native set_vaultdata(const key[], const data[] = ""); + +/* Removes a key from vault.*/ +native remove_vaultdata(const key[]); + +/* Checks if a key exists in the vault.*/ +native vaultdata_exists(const key[]); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/vector.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/vector.inc new file mode 100644 index 0000000..39ba89b --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/vector.inc @@ -0,0 +1,59 @@ +/* Vector functions (now part of Core) + * + * by the AMX Mod X Development Team + * + * This file is provided as is (no warranties). + */ + +#if defined _corevector_included + #endinput +#endif +#define _corevector_included + +/* Used for angle_vector() */ +#define ANGLEVECTOR_FORWARD 1 +#define ANGLEVECTOR_RIGHT 2 +#define ANGLEVECTOR_UP 3 + +/* Returns distance between two vectors. */ +native get_distance(const origin1[3], const origin2[3]); + +/* Gets distance between two origins (float). */ +native Float:get_distance_f(const Float:Origin1[3], const Float:Origin2[3]); + +/* Gives you a velocity in the direction a player is looking, iVelocity is the multiplier. */ +native velocity_by_aim(iIndex, iVelocity, Float:vRetValue[3]); + +/* Changes a vector into an angle vector. */ +native vector_to_angle(const Float:fVector[3], Float:vReturn[3]); + +/* Changes an angle vector into a vector. */ +native angle_vector(const Float:vector[3], FRU, Float:ret[3]); + +/* Gets the length of a vector (float[3]). */ +native Float:vector_length(const Float:vVector[3]); + +/* Gets the distance between 2 vectors (float[3]). */ +native Float:vector_distance(const Float:vVector[3], const Float:vVector2[3]); + +/* Changes an integer vec to a floating vec + * This is not a for loop because that's slower + */ +stock IVecFVec(const IVec[3], Float:FVec[3]) +{ + FVec[0] = float(IVec[0]); + FVec[1] = float(IVec[1]); + FVec[2] = float(IVec[2]); + + return 1; +} + +/* Changes a float vec to an integer vec */ +stock FVecIVec(const Float:FVec[3], IVec[3]) +{ + IVec[0] = floatround(FVec[0]); + IVec[1] = floatround(FVec[1]); + IVec[2] = floatround(FVec[2]); + + return 1; +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/xs.inc b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/xs.inc new file mode 100644 index 0000000..2257486 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/include/xs.inc @@ -0,0 +1,1246 @@ +/* XS Library +* for AMX and AMXX +* +* Copyright (C) 2004 Pavol "PM" Marko +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +* +* Version 0.1 +* +* +* MACROS THAT YOU CAN DEFINE BEFORE INCLUDING XS.INC: +* XS_FLEQ_TOLERANCE: +* Tolerance that is used for XS_FLEQ float nearly-equal comparisions +* DEFAULT: 0.000005 +* XS_DEBUG +* Turn debug logging on +* DEFAULT: 0 +* XS_LOGBUFFER_SIZE +* Buffer size for logging +* DEFAULT: 512 +* XS_TASK_MAXPARAMS +* Maximal parameter count for managed tasks +* DEFAULT: 8 +* XS_TASK_MAXPARAMSIZE +* Maximal size of string parameter for tasks +* Has to be power of 2 and has to be >= 8 +* DEFAULT: 512 +* XS_TASK_MANAGEDIDS +* Number of managed IDs for tasks. +* DEFAULT: 2048 +* XS_REPLACEBUF_SIZE +* DEFAULT: 3072 +* +* +* NOTES: +* On AMX, VexdUM is required for some math functions +* +* xs__ / XS__ (2 underscores) stuff is meant to be intern +* +* untested: never tested +* half-tested: succesfully used in other applications; not extensively tested in xs though +* tested: fully tested +* +* If you have any useful functions / ideas for functions, please tell me. +*/ + +#if defined _xs_included + #endinput +#endif +#define _xs_included + +// **** CONFIG CHECK + +#if !defined XS_FLEQ_TOLERANCE + #define XS_FLEQ_TOLERANCE 0.000005 +#endif + +#if !defined XS_DEBUG + #define XS_DEBUG 0 +#endif + +#if !defined XS_LOGBUFFER_SIZE + #define XS_LOGBUFFER_SIZE 512 +#endif + +#if !defined XS_TASK_MAXPARAMS + #define XS_TASK_MAXPARAMS 8 +#endif + +#if !defined XS_TASK_MAXPARAMSIZE + #define XS_TASK_MAXPARAMSIZE 512 +#endif + +#if !defined XS_TASK_MANAGEDIDS + #define XS_TASK_MANAGEDIDS 2048 +#endif + +#if !defined XS_REPLACEBUF_SIZE + #define XS_REPLACEBUF_SIZE 3072 +#endif + +// **** Detect platform +#define XS_AMX 0 +#define XS_AMXX 1 + +#if defined _amxmodx_included + #define XS_PLATFORM XS_AMXX +#endif + +#if defined _amxmod_included && !defined _amxmodx_included + #define XS_PLATFORM XS_AMX +#endif + +#if !defined XS_PLATFORM + // Could not detect platform. + // Make sure you include amxmodx.inc or amxmod.inc before including xs.inc + #assert 0 + #endinput +#endif + +// Turn on for release +#define XS__LIBRELEASE 1 + +#if XS__LIBRELEASE + #define XS_LIBFUNC_ATTRIB stock +#else + #define XS_LIBFUNC_ATTRIB +#endif +#if XS__LIBRELEASE + #define XS_LIBVAR_ATTRIB stock +#else + #define XS_LIBVAR_ATTRIB new +#endif + + +/****** DEBUGGING / LOGING FUNCTIONS ******/ + enum xs_logtypes + { + xs_debug, + xs_message, + xs_warning, + xs_error, + xs_fatalerror, + xs__assertionfailed, + + // must come last + xs_logtypes_count + } + + XS_LIBVAR_ATTRIB const xs__logtypenames[xs_logtypes_count][] = {"DEBUG", "", "WARNING", "ERROR", "FATAL ERROR", "DEBUG ASSERTION FAILED"}; + + // tested + XS_LIBFUNC_ATTRIB xs_log(xs_logtypes:logtype, {Float,_}:...) + { + // WARNING: Don't try to use assert in here; it uses this func + + // Don't log debug if not in debug mode + #if !XS_DEBUG + if (logtype == xs_debug) + return; + #endif + + new buffer[XS_LOGBUFFER_SIZE+1]; + buffer[XS_LOGBUFFER_SIZE]=0; + format_args(buffer, XS_LOGBUFFER_SIZE, 1 /* go from SECOND argument*/); + new bool:addLogTypeName = strlen(xs__logtypenames[logtype]) ? true : false; + + #if XS_PLATFORM == XS_AMX + new plugname[32]; + new dummy[1]; + get_plugin(-1, plugname, 31, dummy, 0, dummy, 0, dummy, 0, dummy, 0, dummy[0]); + // log into HL Logs + log_message("[AMX][%s]: %s%s%s", plugname, addLogTypeName ? xs__logtypenames[logtype] : "", + addLogTypeName ? ": " : "", buffer); + #else // assume AMXX + + // Use AMXX's logging system + log_amx("%s%s%s", addLogTypeName ? xs__logtypenames[logtype] : "", + addLogTypeName ? ": " : "", buffer); + #endif + } + + // Assertion + // tested + XS_LIBFUNC_ATTRIB xs_assertfunc({Float,_}:exp, const desc[]) + { + // Check exp + if (exp) + return 1; // ok + + // not ok + + // print info + xs_log(xs__assertionfailed, "%s", desc); + + return 0; + } + #define xs_assert(%1,%2) if (!xs_assertfunc(%1,%2)) xs__global_null /= xs__global_null + + + // Assertion; only in debug mode + // untested; logical flow says it should work + #if XS_DEBUG + #define xs_assert_dbg(%1,%2) if (!xs_assertfunc(%1,%2)) xs__global_null /= xs__global_null + #else + #define xs_assert_dbg(%1,%2) + #endif + + new xs__global_null = 0; + +/****** MATH FUNCTIONS ******/ + + /****** BASIC STUFF ******/ + + #if XS_PLATFORM == XS_AMX + enum anglemode + { + radian = 0, + degrees, + grades + } + #endif + + // Returns -1 if num is negative, 0 if num is 0, 1 if num is positive + // tested + XS_LIBFUNC_ATTRIB xs_sign(num) + { + return (num < 0) ? -1 : ((num == 0) ? 0 : 1); + } + + // Returns -1 if num is negative, 0 if num is 0, 1 if num is positive + // tested + XS_LIBFUNC_ATTRIB xs_fsign(Float:num) + { + return (num < 0.0) ? -1 : ((num == 0.0) ? 0 : 1); + } + + // Returns absolute value + // tested + XS_LIBFUNC_ATTRIB xs_abs(num) + { + return (num < 0) ? -num : num; + } + + // is power of 2? (== can be expressed as 1<<i) + // tested + XS_LIBFUNC_ATTRIB xs_is_2power(x) + { + return (x!=0) && ((x&(x-1))==0); + } + + // degrees to radians + // tested + XS_LIBFUNC_ATTRIB Float:xs_deg2rad(Float:x) + { + return x * 0.017453292519943; + } + + // tested + XS_LIBFUNC_ATTRIB Float:xs_rad2deg(Float:x) + { + return x * 57.29577951308232; + } + + // untested, should work though + XS_LIBFUNC_ATTRIB Float:xs_gra2rad(Float:x) + { + return x * 0.015707963267948; + } + + // untested, should work though + XS_LIBFUNC_ATTRIB Float:xs_rad2gra(Float:x) + { + return x * 63.66197723675813; + } + + // Only works when there is no whitespace between %1, the comma and %2... + // tested + #define XS_FLEQ(%1,%2) (((%1) <= ((%2) + XS_FLEQ_TOLERANCE)) && ((%1) >= ((%2) - XS_FLEQ_TOLERANCE))) + + // 1/sqrt + // tested + XS_LIBFUNC_ATTRIB Float:xs_rsqrt(Float:x) + { + #if XS_PLATFORM == XS_AMX + // store half + new Float:xhalf = x * 0.5; + + // compute initial guess + new i = _:x; + i = 0x5f375a84 - (i >> 1); + x = Float:i; + + // refine 3 times + x = x * (1.5 - xhalf * x * x); + x = x * (1.5 - xhalf * x * x); + x = x * (1.5 - xhalf * x * x); + + return x; + #else + return 1.0 / floatsqroot(x); + #endif + } + + // sqrt + // tested + XS_LIBFUNC_ATTRIB Float:xs_sqrt(Float:x) + { + #if XS_PLATFORM == XS_AMX + // 1.0 / rsqrt should still be faster than loop-using-approximation-methods + return 1.0 / xs_rsqrt(x); + #else + return floatsqroot(x); + #endif + } + + // These functions generate errors if you use the macros with wrong parameter count. + stock Float:xs_fabs(Float:pa) + { + #pragma unused pa + new rawr = you_need_one_param_for_fabs; + rawr = warning_below_shows_line_number; + #pragma unused rawr + } + stock Float:xs_asin(Float:pa,Float:pb) + { + #pragma unused pa,pb + new rawr = you_need_two_params_for_asin; + rawr = warning_below_shows_line_number; + #pragma unused rawr + } + stock Float:xs_sin(Float:pa,Float:pb) + { + #pragma unused pa,pb + new rawr = you_need_two_params_for_sin; + #pragma unused rawr + } + stock Float:xs_acos(Float:pa,Float:pb) + { + #pragma unused pa,pb + new rawr = you_need_two_params_for_acos; + rawr = warning_below_shows_line_number; + #pragma unused rawr + } + stock Float:xs_cos(Float:pa,Float:pb) + { + #pragma unused pa,pb + new rawr = you_need_two_params_for_cos; + rawr = warning_below_shows_line_number; + #pragma unused rawr + } + stock Float:xs_atan(Float:pa,Float:pb) + { + #pragma unused pa,pb + new rawr = you_need_two_params_for_atan; + rawr = warning_below_shows_line_number; + #pragma unused rawr + } + stock Float:xs_atan2(Float:pa,Float:pb) + { + #pragma unused pa,pb + new rawr = you_need_two_params_for_atan2; + rawr = warning_below_shows_line_number; + #pragma unused rawr + } + stock Float:xs_tan(Float:pa, Float:pb) + { + #pragma unused pa,pb + new rawr = you_need_two_params_for_tan; + rawr = warning_below_shows_line_number; + #pragma unused rawr + } + + #if XS_PLATFORM == XS_AMX + #pragma semicolon 0 + #include <VexdUM> + #pragma semicolon 1 + // We need stocks to provide radian / degrees / grades functionality + + XS_LIBFUNC_ATTRIB Float:xs__2rad(Float:x, anglemode:mod) + { + switch (mod) + { + case radian: + return x; + case degrees: + return xs_deg2rad(x); + case grades: + return xs_gra2rad(x); + default: + xs_assert(0, "xs_asin, xs_sin, xs_acos, xs_cos, xs_atan, xs_atan2 or xs_tan called with invalid mod param"); + } + + return 0.0; // compiler warning + } + + #define xs_fabs(%1) fabs(%1) + #define xs_asin(%1,%2) asin(xs__2rad(%1, %2)) + #define xs_sin(%1,%2) sin(xs__2rad(%1, %2)) + #define xs_acos(%1,%2) acos(xs__2rad(%1, %2)) + #define xs_cos(%1,%2) cos(xs__2rad(%1, %2)) + #define xs_atan(%1,%2) atan(xs__2rad(%1, %2)) + #define xs_atan2(%1,%2) atan2(xs__2rad(%1, %2)) + #define xs_tan(%1,%2) tan(xs__2rad(%1, %2)) + #else + #define xs_fabs(%1) floatabs(%1) + #define xs_asin(%1,%2) floatasin(%1, %2) + #define xs_sin(%1,%2) floatsin(%1, %2) + #define xs_acos(%1,%2) floatacos(%1, %2) + #define xs_cos(%1,%2) floatcos(%1, %2) + #define xs_atan(%1,%2) floatatan(%1, %2) + #define xs_atan2(%1,%2) floatatan2(%1, %2) + #define xs_tan(%1,%2) floattan(%1, %2) + #endif + + /****** RANDOM NUMBERS ******/ + // This routine comes from the book "Inner Loops" by Rick Booth, Addison-Wesley + // (ISBN 0-201-47960-5). This is a "multiplicative congruential random number + // generator" that has been extended to 31-bits + + XS_LIBVAR_ATTRIB xs__internalseed=0x546875; + + #define XS__IL_RMULT 1103515245 + + // tested + XS_LIBFUNC_ATTRIB xs_seed(seed) + { + xs__internalseed = seed; + } + + // tested + XS_LIBFUNC_ATTRIB xs_irand() + { + new lo, hi, ll, lh, hh, hl; + new result; + + lo = xs__internalseed & 0xffff; + hi = xs__internalseed >> 16; + xs__internalseed = xs__internalseed * XS__IL_RMULT + 12345; + ll = lo * (XS__IL_RMULT & 0xffff); + lh = lo * (XS__IL_RMULT >> 16 ); + hl = hi * (XS__IL_RMULT & 0xffff); + hh = hi * (XS__IL_RMULT >> 16 ); + result = xs_abs(((ll + 12345) >> 16) + lh + hl + (hh << 16)); + return result; + } + + // tested + XS_LIBFUNC_ATTRIB Float:xs_frand() + { + return float(xs_irand()) / float(xs_get_maxnum()); // -1/2 should be the biggest possible positive number + } + + // tested + XS_LIBFUNC_ATTRIB xs_irand_range(pmin, pmax) + { + xs_assert_dbg(pmax - pmin >= 0, "xs_irand_range: pmin > pmax"); + new i = pmin + floatround(xs_frand() * float(pmax - pmin)); + if (i > pmax) + i = pmax; + return i; + } + + /****** VECTORS & PLANES ******/ + + // *** vectors + + // Set vec components to values + // tested + XS_LIBFUNC_ATTRIB xs_vec_set(Float:vec[], Float:x, Float:y, Float:z) + { + vec[0] = x; + vec[1] = y; + vec[2] = z; + } + + // Add vec + // tested + XS_LIBFUNC_ATTRIB xs_vec_add(const Float:in1[], const Float:in2[], Float:out[]) + { + out[0] = in1[0] + in2[0]; + out[1] = in1[1] + in2[1]; + out[2] = in1[2] + in2[2]; + } + + // Subtract vec + // untested, but should work + XS_LIBFUNC_ATTRIB xs_vec_sub(const Float:in1[], const Float:in2[], Float:out[]) + { + out[0] = in1[0] - in2[0]; + out[1] = in1[1] - in2[1]; + out[2] = in1[2] - in2[2]; + } + + // Are vectors equal? + // untested, but should work + XS_LIBFUNC_ATTRIB bool:xs_vec_equal(const Float:vec1[], const Float:vec2[]) + { + return (vec1[0] == vec2[0]) && (vec1[1] == vec2[1]) && (vec1[2] == vec2[2]); + } + + // Are vectors nearly equal? + // tested + XS_LIBFUNC_ATTRIB bool:xs_vec_nearlyequal(const Float:vec1[], const Float:vec2[]) + { + return XS_FLEQ(vec1[0], vec2[0]) && XS_FLEQ(vec1[1], vec2[1]) && XS_FLEQ(vec1[2], vec2[2]); + } + + // multiply vector by scalar + // tested + XS_LIBFUNC_ATTRIB xs_vec_mul_scalar(const Float:vec[], Float:scalar, Float:out[]) + { + out[0] = vec[0] * scalar; + out[1] = vec[1] * scalar; + out[2] = vec[2] * scalar; + } + + // divide vector by scalar + // untested, but should work + XS_LIBFUNC_ATTRIB xs_vec_div_scalar(const Float:vec[], Float:scalar, Float:out[]) + { + new Float:__tmp = 1.0 / scalar; + out[0] = vec[0] * __tmp; + out[1] = vec[1] * __tmp; + out[2] = vec[2] * __tmp; + } + + // Compute vector length + // tested + XS_LIBFUNC_ATTRIB Float:xs_vec_len(const Float:vec[]) + { + return xs_sqrt(vec[0]*vec[0] + vec[1]*vec[1] + vec[2]*vec[2]); + } + + // Normalize vec + // tested + XS_LIBFUNC_ATTRIB xs_vec_normalize(const Float:vec[], Float:out[]) + { + new Float:invlen = xs_rsqrt(vec[0]*vec[0] + vec[1]*vec[1] + vec[2]*vec[2]); + out[0] = vec[0] * invlen; + out[1] = vec[1] * invlen; + out[2] = vec[2] * invlen; + } + + // Store the cross product of vec1 and vec2 in out + // tested + XS_LIBFUNC_ATTRIB xs_vec_cross(const Float:vec1[], const Float:vec2[], Float:out[]) + { + out[0] = vec1[1]*vec2[2] - vec1[2]*vec2[1]; + out[1] = vec1[2]*vec2[0] - vec1[0]*vec2[2]; + out[2] = vec1[0]*vec2[1] - vec1[1]*vec2[0]; + } + + // Compute vec1 dot vec2 + // tested + XS_LIBFUNC_ATTRIB Float:xs_vec_dot(const Float:vec1[], const Float:vec2[]) + { + return vec1[0]*vec2[0] + vec1[1]*vec2[1] + vec1[2]*vec2[2]; + } + + // Negate vec into out + // untested, but should work + XS_LIBFUNC_ATTRIB xs_vec_neg(const Float:vec[], Float:out[]) + { + out[0] = -vec[0]; + out[1] = -vec[1]; + out[2] = -vec[2]; + } + + // Copy vec + // untested, but should work + XS_LIBFUNC_ATTRIB xs_vec_copy(const Float:vecIn[], Float:vecOut[]) + { + vecOut[0] = vecIn[0]; + vecOut[1] = vecIn[1]; + vecOut[2] = vecIn[2]; + } + + // Compute angle between vec1 and vec2 + // tested + XS_LIBFUNC_ATTRIB Float:xs_vec_angle(const Float:vec1[], const Float:vec2[]) + { + return xs_rad2deg(xs_acos(xs_vec_dot(vec1, vec2), radian)); + } + + // Reflect vec about normal + // untested + XS_LIBFUNC_ATTRIB xs_vec_reflect(const Float:vec[], const Float:normal[], Float:out[]) + { + // normalize(vec) - (normal * 2.0 * (tmp . normal)) * length(vec) + + new Float:tmp1[3]; + xs_vec_normalize(vec, tmp1); + + // tmp1 - (normal * 2.0 * (tmp . normal)) * length(vec) + + new Float:tmp2[3]; + xs_vec_mul_scalar(normal, 2.0, tmp2); + xs_vec_mul_scalar(tmp2, xs_vec_dot(tmp1, normal), tmp2); + + // tmp1 - tmp2 * length(vec) + xs_vec_mul_scalar(tmp2, xs_vec_len(vec), tmp2); + + // tmp1 - tmp2 + xs_vec_sub(tmp1, tmp2, out); + } + + // Turn a 3D vector into a 2D vector + XS_LIBFUNC_ATTRIB xs_vec_make2d(const Float:vec[3], Float:out[2]) + { + out[0] = vec[0]; + out[1] = vec[1]; + } + + // *** planes + + // normal + #define XS_PLANE_A 0 + #define XS_PLANE_B 1 + #define XS_PLANE_C 2 + // plane shift distance + #define XS_PLANE_D 3 + + + // Set a plane to specific values + // tested + XS_LIBFUNC_ATTRIB xs_plane_set(Float:plane[], Float:a, Float:b, Float:c, Float:d) + { + plane[XS_PLANE_A] = a; + plane[XS_PLANE_B] = b; + plane[XS_PLANE_C] = c; + plane[XS_PLANE_D] = d; + } + + // Construct a plane out of 3 points + // tested + XS_LIBFUNC_ATTRIB xs_plane_3p(Float:plane[], const Float:p1[], const Float:p2[], const Float:p3[]) + { + new Float:normalA[3], Float:normalB[3]; + + // normalA = Normalize(p3 - p1); + normalA[0] = p3[0] - p1[0]; + normalA[1] = p3[1] - p1[1]; + normalA[2] = p3[2] - p1[2]; + xs_vec_normalize(normalA, normalA); + + // normalB = Normalize(p3 - p2); + normalB[0] = p3[0] - p2[0]; + normalB[1] = p3[1] - p2[1]; + normalB[2] = p3[2] - p2[2]; + xs_vec_normalize(normalB, normalB); + + // plane normal = Normalize(normalA cross normalB) + xs_vec_cross(normalA, normalB, plane); + xs_vec_normalize(plane, plane); + + // plane shift distance = (-p1) dot plane normal + new Float:__tmp[3]; + xs_vec_neg(plane, __tmp); + plane[XS_PLANE_D] = xs_vec_dot(__tmp, p1); + + } + + // untested, but should work + XS_LIBFUNC_ATTRIB bool:xs_plane_equal(const Float:plane1[], const Float:plane2[]) + { + if ( (plane1[0] == plane2[0]) && + (plane1[1] == plane2[1]) && + (plane1[2] == plane2[2]) && + (plane1[3] == plane2[3])) + return true; + return false; + } + + // untested, but should work + XS_LIBFUNC_ATTRIB bool:xs_plane_nearlyequal(const Float:plane1[], const Float:plane2[]) + { + if ( XS_FLEQ(plane1[0], plane2[0]) && + XS_FLEQ(plane1[1], plane2[1]) && + XS_FLEQ(plane1[2], plane2[2]) && + XS_FLEQ(plane1[3], plane2[3])) + return true; + return false; + } + + // Compute distance between plane and point + // tested + XS_LIBFUNC_ATTRIB Float:xs_plane_dst2point(const Float:plane[], const Float:point[]) + { + // return normal dot point + D + return xs_vec_dot(plane, point) + plane[XS_PLANE_D]; + } + + // Checks whether plane intersects with the ray starting and rayStart and going to rayDir direction. + // If yes, returns true and sets out to the intersection point + // Otherwise, returns false + // tested + XS_LIBFUNC_ATTRIB bool:xs_plane_rayintersect(const Float:plane[], const Float:rayStart[], const Float:rayDir[], Float:out[]) + { + new Float:a = xs_vec_dot(plane, rayDir); + + if (a == 0.0) + return false; // ray is parallel to plane + + // if (distance plane<->(rayStart + rayDir) > distance plane<->rayStart) and both have the same sign, the ray + // goes away from the plane + new Float:rsplusrd[3]; + xs_vec_add(rayStart, rayDir, rsplusrd); + new Float:dst1 = xs_plane_dst2point(plane, rsplusrd); + new Float:dst2 = xs_plane_dst2point(plane, rayStart); + if (xs_fabs(dst1) > xs_fabs(dst2) && xs_fsign(dst1) == xs_fsign(dst2)) + return false; + + + // out = rayStart - rayDir * ((distance plane<->rayStart) / a) + new Float:__tmp[3]; + xs_vec_mul_scalar(rayDir, xs_plane_dst2point(plane, rayStart) / a, __tmp); + // out = rayStart - tmp + xs_vec_sub(rayStart, __tmp, out); + + return true; + } + + // Is point on plane? + // tested + XS_LIBFUNC_ATTRIB bool:xs_point_onplane(const Float:plane[], const Float:point[]) + { + return XS_FLEQ(xs_plane_dst2point(plane, point), 0.0); + } + + // Project point on plane + // tested + XS_LIBFUNC_ATTRIB xs_projpoint_onplane(const Float:plane[], const Float:point[], Float:out[]) + { + new Float:__tmp[3]; + // out = point - (plane normal * distance point<->plane) + xs_vec_copy(plane, __tmp); + xs_vec_mul_scalar(__tmp, xs_plane_dst2point(plane, point), __tmp); + xs_vec_sub(point, __tmp, out); + } + + // Copy plane + // untested, but should work + XS_LIBFUNC_ATTRIB xs_plane_copy(const Float:planeIn[], Float:planeOut[]) + { + planeOut[0] = planeIn[0]; + planeOut[1] = planeIn[1]; + planeOut[2] = planeIn[2]; + planeOut[3] = planeIn[3]; + } + + /****** HL ENGINE SPECIFIC STUFF ******/ + // Compute forward, right and up vector from angles + // half-tested + + // angle indexes + #define XS_PITCH 0 // up / down + #define XS_YAW 1 // left / right + #define XS_ROLL 2 // fall over + + XS_LIBFUNC_ATTRIB xs_anglevectors(const Float:angles[3], Float:fwd[3], Float:right[3], Float:up[3]) + { + // sin (s) and cos (c) for yaw (y), pitch (p) and roll (r) + new Float:sr, Float:sp, Float:sy, Float:cr, Float:cp, Float:cy; + + sy = xs_sin(angles[XS_YAW], degrees); + cy = xs_cos(angles[XS_YAW], degrees); + sp = xs_sin(angles[XS_PITCH], degrees); + cp = xs_cos(angles[XS_PITCH], degrees); + sr = xs_sin(angles[XS_ROLL], degrees); + cr = xs_cos(angles[XS_ROLL], degrees); + + fwd[0] = cp*cy; + fwd[1] = cp*sy; + fwd[2] = -sp; + + right[0] = (-1*sr*sp*cy + -1*cr*-sy); + right[1] = (-1*sr*sp*sy + -1*cr*cy); + right[2] = -1*sr*cp; + + up[0] = (cr*sp*cy + -sr*-sy); + up[1] = (cr*sp*sy + -sr*cy); + up[2] = cr*cp; + } +/****** STRING FUNCS *******/ + + // tested + XS_LIBFUNC_ATTRIB xs_strchr(const str[], chr) + { + for (new i = 0; str[i] != 0; ++i) + { + if (str[i] == chr) + return i; + } + return -1; + } + + // by JGHG, adapted + // removes charstotrim number of charactes from stringtotrim's + // - beginning if fromleft is true + // - end if fromleft is false + // tested + XS_LIBFUNC_ATTRIB xs_strtrim(stringtotrim[], charstotrim, bool:fromleft = true) + { + if (charstotrim <= 0) + return; + + if (fromleft) + { + new maxlen = strlen(stringtotrim); + if (charstotrim > maxlen) + charstotrim = maxlen; + + // In format, input and output regions can overlap + format(stringtotrim, maxlen, "%s", stringtotrim[charstotrim]); + } + else + { + new maxlen = strlen(stringtotrim) - charstotrim; + if (maxlen < 0) + maxlen = 0; + + // In format, input and output regions can overlap + format(stringtotrim, maxlen, "%s", stringtotrim); + } + } + + // by xeroblood, adapted + // copies characters from oldmsg to newmsg, starting at start and ending at end (_includes_ end). + // terminates newmsg with 0 + // if outlen is positive, it specifies the maximal number of characters to be copied. + // otherwise, assumes that newmsg is at least end-start+1 characters long. + // tested + XS_LIBFUNC_ATTRIB xs_strmid(const oldmsg[], newmsg[], start, end, outlen=-1) + { + new len = strlen(oldmsg); + + if(start < 0) + start = 0; + + ++end; // Include end + + if(end <= start || end > len) + end = len; + + new j = 0, i = start; + for(; (i < end) && (outlen--);) + newmsg[j++] = oldmsg[i++]; + + newmsg[j] = 0; + } + + // by xeroblood, adapted + // maxelems: maximal number of elements in output, elemsize: maximal size of one element + // tested + XS_LIBFUNC_ATTRIB xs_explode(const input[], output[][], delimiter, maxelems, elemsize) + { + new nIdx = 0; + new nLen = 0; + + new copied = 0; + while(nLen < strlen(input) && nIdx < maxelems) + { + copied = copyc(output[nIdx++], elemsize, input[nLen], delimiter); + if (copied == elemsize) + { + // maybe it got force-stopped because of maxsize + // so check whether we have to skip something + if (input[nLen + copied] != delimiter && input[nLen + copied] != 0) + { + new found = xs_strchr(input[nLen + copied], delimiter); + if (found == -1) + break; + copied += found; + } + } + + nLen += copied + 1; // +1: skip delimiter + } + return nIdx; + } + + // returns number of cells written. + XS_LIBFUNC_ATTRIB xs_implode(output[], outsize, delimiter, const input[][], elemsnum) + { + new pos = 0; + new copied; + for (new i = 0; i < elemsnum; ++i) + { + copied = copy(output[pos], outsize - pos, input[i]); + pos += copied; + if (pos >= outsize) + return outsize; + // append delimiter + output[pos] = delimiter; + ++pos; + // last check + if (pos >= outsize) + return outsize; + } + + output[--pos] = 0; // The last char would be delimiter, so skip it. + return pos; + } + + + XS_LIBVAR_ATTRIB xs__replace_buf[XS_REPLACEBUF_SIZE]; + // Replace all occurencies of what in text with with + // Returns number of (also partially if trimmed by len) replaced items. + XS_LIBFUNC_ATTRIB xs_replace(text[], len, const what[], const with[]) + { + new occur = 0; + new i = 0; + new bufPos = 0; + new replaceLen = strlen(with); + new whatLen = strlen(what); + for (; text[i]; ++i) + { + if (text[i] == what[0]) + { + new posInWhat=0; + new j; + for (j = i; j-i < replaceLen && text[j]; ++j, ++posInWhat) + { + if (text[j] != what[posInWhat]) + break; + } + if (whatLen == posInWhat) + { + for (new i2 = 0; i2 < replaceLen && bufPos < XS_REPLACEBUF_SIZE; ++i2) + xs__replace_buf[bufPos++] = with[i2]; + i = j - 1; + ++occur; + if (bufPos >= XS_REPLACEBUF_SIZE) + return occur; + continue; + } + } + if (bufPos >= XS_REPLACEBUF_SIZE) + return occur; + xs__replace_buf[bufPos++] = text[i]; + } + xs__replace_buf[bufPos] = 0; + copy(text, len, xs__replace_buf); + return occur; + } + + // replaces all occurencies of what in text with with + // Returns number of replaced items. + XS_LIBFUNC_ATTRIB xs_replace_char(text[], len, what, with) + { + // let the xs_replace function do the work + new arr[4]; + arr[0] = what; + arr[1] = 0; + arr[2] = with; + arr[3] = 0; + + return xs_replace(text, len, arr[0], arr[2]); + } + + #if XS_PLATFORM == XS_AMX + // message_begin checking for AMX + xs__hook_message_begin(dest, msg_type, origin[3]={0,0,0}, player = 0) + { + xs_assert(xs_is_msg_valid(msg_type), "message_begin called with bogus message type"); + return message_begin(dest, msg_type, origin, player); + } + + #define message_begin xs__hook_message_begin + #endif +/****** MISC FUNCS *******/ + // sets namestr to name of the command identified by cid + // half-tested + XS_LIBFUNC_ATTRIB xs_concmd_name(cid, namestr[], namelen) + { + new dummy1; + new dummy2[1]; + get_concmd(cid, namestr, namelen, dummy1, dummy2, 0, 0); + } + + // Checks whether there are at least num free visible slots + // half-tested + XS_LIBFUNC_ATTRIB bool:xs_freevisibleslots(num) + { + new maxplayers = get_cvar_num("sv_visiblemaxplayers"); + if (maxplayers <= 0) + maxplayers = get_maxplayers(); + + return (get_playersnum(1) <= maxplayers-num) ? true : false; + } + + // Returns biggest possible positive number + XS_LIBVAR_ATTRIB xs__maxnum = 0; + // tested + XS_LIBFUNC_ATTRIB xs_get_maxnum() + { + if (!xs__maxnum) + { + // build it + xs__maxnum = ((1 << (cellbits - 2)) - 1 ) | (1 << (cellbits - 2)); + /* + new bits = get_cellsize() * 8 - 1; + for (new i = 0; i < bits; ++i) + xs__maxnum |= 1 << i; + */ + } + return xs__maxnum; + } + + // tested + XS_LIBFUNC_ATTRIB xs_get_minnum() + { + return xs_get_maxnum() + 1; + } + + + // *** The following two functions were created by Damaged Soul. + + // Max messages reserved by engine (DO NOT MODIFY) + #define XS__MAX_ENGINE_MESSAGES 63 + // Max possible messages for mod, is 255 really the limit? + #define XS__MAX_POSSIBLE_MESSAGES 255 + + // Returns max number of messages for mod + XS_LIBFUNC_ATTRIB xs_get_maxmessages() + { + new name[2]; + + for (new i = XS__MAX_ENGINE_MESSAGES + 1; i <= XS__MAX_POSSIBLE_MESSAGES; i++) + if (!get_user_msgname(i, name, 1)) + return i - 1; + + return XS__MAX_POSSIBLE_MESSAGES; + } + + // Returns true if msgid is a valid message + XS_LIBFUNC_ATTRIB bool:xs_is_msg_valid(msgid) + { + new name[2]; + new retval = get_user_msgname(msgid, name, 1); + + if (msgid < 1 || (msgid > XS__MAX_ENGINE_MESSAGES && !retval)) + return false; + + return true; + } + +/****** MANAGED TASKS ******/ + + // ***** managed task ids + XS_LIBFUNC_ATTRIB xs_find_freetaskid() + { + for (new i = 1; i <= XS_TASK_MANAGEDIDS; ++i) + { + if (!task_exists(i)) + return i; + } + return -1; + } + + // ***** managed tasks + enum xs_paramtypes + { + xs_invalid = 0, + xs_int, + xs_float, + xs_string + } + + // new task + XS_LIBVAR_ATTRIB xs__TaskParam[ 1 + // number of parameters + XS_TASK_MAXPARAMS + // parameter types + (XS_TASK_MAXPARAMSIZE char) * XS_TASK_MAXPARAMS]; // space for len + value + + XS_LIBVAR_ATTRIB Float:xs__TaskInterval = 0.0; + XS_LIBVAR_ATTRIB xs__TaskFlags[5]; + XS_LIBVAR_ATTRIB xs__TaskFunc[48]; + XS_LIBVAR_ATTRIB xs__TaskId; + XS_LIBVAR_ATTRIB xs__TaskRepeat; + + #define xs__TaskParamCount xs__TaskParam[0] + #define xs__TaskParamType[%1] xs__TaskParam[1 + %1] + + #define xs__TaskParamValue[%1] xs__TaskParam[1 + XS_TASK_MAXPARAMS + (%1 * (XS_TASK_MAXPARAMSIZE char))] + + + // incoming task + XS_LIBVAR_ATTRIB xs__ITaskParam[ 1 + // number of parameters + XS_TASK_MAXPARAMS + // parameter types + (XS_TASK_MAXPARAMSIZE char) * XS_TASK_MAXPARAMS]; // space for len + value + XS_LIBVAR_ATTRIB xs__ITaskId; + + #define xs__ITaskParamCount xs__ITaskParam[0] + #define xs__ITaskParamType[%1] xs__ITaskParam[1 + %1] + + #define xs__ITaskParamValue[%1] xs__ITaskParam[1 + XS_TASK_MAXPARAMS + (%1 * (XS_TASK_MAXPARAMSIZE char))] + + // tested + XS_LIBFUNC_ATTRIB xs_task_begin(Float:interval, const func[], id = 0, const flags[] = "", repeat = 0) + { + xs_assert(xs__TaskInterval == 0.0, "New xs_task_begin called before xs_task_end"); + + xs__TaskInterval = interval; + if (xs__TaskInterval < 0.1) + xs__TaskInterval = 0.1; + + copy(xs__TaskFunc, 47, func); + xs__TaskId = id; + copy(xs__TaskFlags, 4, flags); + xs__TaskRepeat = repeat; + + xs__TaskParamCount = 0; + } + + // tested + XS_LIBFUNC_ATTRIB xs_task_pushint(value, bool:__isfl=false /*internal use only*/) + { + xs_assert(xs__TaskInterval, "xs_task_push* called without xs_task_begin"); + if (xs__TaskParamCount >= XS_TASK_MAXPARAMS) + return 0; + + xs__TaskParamType[xs__TaskParamCount] = __isfl ? xs_float : xs_int; + xs__TaskParamValue[xs__TaskParamCount] = value; + + ++xs__TaskParamCount; + return 1; + } + + // tested + XS_LIBFUNC_ATTRIB xs_task_pushfl(Float:value) + { + return xs_task_pushint(_:value, true); + } + + // tested + XS_LIBFUNC_ATTRIB xs_task_pushstr(const value[]) + { + xs_assert(xs__TaskInterval, "xs_task_push* called without xs_task_begin"); + if (xs__TaskParamCount >= XS_TASK_MAXPARAMS) + return 0; + + xs__TaskParamType[xs__TaskParamCount] = xs_string; + strpack(xs__TaskParamValue[xs__TaskParamCount], value); + ++xs__TaskParamCount; + return 1; + } + + // tested + XS_LIBFUNC_ATTRIB xs_task_end() + { + xs_assert(xs__TaskInterval, "xs_task_end called without xs_task_begin"); + + // find a task id if needed + if (xs__TaskId == -1) + { + xs__TaskId = xs_find_freetaskid(); + if (xs__TaskId == -1) + { + // not found + xs__TaskInterval = 0.0; + return -1; + } + } + + set_task(xs__TaskInterval, xs__TaskFunc, xs__TaskId, xs__TaskParam, + 1 + xs__TaskParamCount * (XS_TASK_MAXPARAMSIZE char), xs__TaskFlags, xs__TaskRepeat); + + xs__TaskInterval = 0.0; + + return xs__TaskId; + } + + + // tested + #define XS_MAKE_TASKFUNC(%1) public %1(const _xs__taskparam[], _xs__taskid) if(xs__task_setup(_xs__taskparam, _xs__taskid)) + + // tested + XS_LIBFUNC_ATTRIB xs__task_setup(const param[], taskid) + { + xs__ITaskId = taskid; + new len = 1 + param[0] * (XS_TASK_MAXPARAMSIZE char); + for (new i = 0; i < len; ++i) + xs__ITaskParam[i] = param[i]; + return 1; + } + + // tested + XS_LIBFUNC_ATTRIB xs_task_readid() + { + return xs__ITaskId; + } + + // tested + XS_LIBFUNC_ATTRIB xs_task_paramcount() + { + return xs__ITaskParamCount; + } + + // tested + XS_LIBFUNC_ATTRIB xs_paramtypes:xs_task_paramtype(paramid) + { + if (paramid < 0 || paramid >= xs__ITaskParamCount) + return xs_invalid; + + return xs_paramtypes:xs__ITaskParamType[paramid]; + } + + // tested + XS_LIBFUNC_ATTRIB xs_task_paramint(paramid) + { + if (paramid < 0 || paramid >= xs__ITaskParamCount) + return 0; + if (xs__ITaskParamType[paramid] != _:xs_int) + return 0; + + return xs__ITaskParamValue[paramid]; + } + + // tested + XS_LIBFUNC_ATTRIB Float:xs_task_paramfl(paramid) + { + if (paramid < 0 || paramid >= xs__ITaskParamCount) + return 0.0; + if (xs__ITaskParamType[paramid] != _:xs_float) + return 0.0; + + return Float:xs__ITaskParamValue[paramid]; + } + + // tested + XS_LIBFUNC_ATTRIB xs_task_paramstr(paramid, out[], maxlen) + { + #pragma unused maxlen + + if (paramid < 0 || paramid >= xs__ITaskParamCount) + return 0; + if (xs__ITaskParamType[paramid] != _:xs_string) + return 0; + + strunpack(out, xs__ITaskParamValue[paramid]); + return 1; + } + diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/mapchooser.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/mapchooser.sma new file mode 100644 index 0000000..0e0d0e9 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/mapchooser.sma @@ -0,0 +1,315 @@ +/* AMX Mod X +* Nextmap Chooser Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> +#include <amxmisc> + +#define SELECTMAPS 5 + +#define charsof(%1) (sizeof(%1)-1) + +new Array:g_mapName; +new g_mapNums; + +new g_nextName[SELECTMAPS] +new g_voteCount[SELECTMAPS + 2] +new g_mapVoteNum +new g_teamScore[2] +new g_lastMap[32] + +new g_coloredMenus +new bool:g_selected = false + +public plugin_init() +{ + register_plugin("Nextmap Chooser", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("mapchooser.txt") + register_dictionary("common.txt") + + g_mapName=ArrayCreate(32); + + new MenuName[64] + + format(MenuName, 63, "%L", "en", "CHOOSE_NEXTM") + register_menucmd(register_menuid(MenuName), (-1^(-1<<(SELECTMAPS+2))), "countVote") + register_cvar("amx_extendmap_max", "90") + register_cvar("amx_extendmap_step", "15") + + if (cstrike_running()) + register_event("TeamScore", "team_score", "a") + + get_localinfo("lastMap", g_lastMap, 31) + set_localinfo("lastMap", "") + + new maps_ini_file[64] + get_configsdir(maps_ini_file, 63); + format(maps_ini_file, 63, "%s/maps.ini", maps_ini_file); + + if (!file_exists(maps_ini_file)) + get_cvar_string("mapcyclefile", maps_ini_file, 63) + if (loadSettings(maps_ini_file)) + set_task(15.0, "voteNextmap", 987456, "", 0, "b") + + g_coloredMenus = colored_menus() + +} + +public checkVotes() +{ + new b = 0 + + for (new a = 0; a < g_mapVoteNum; ++a) + if (g_voteCount[b] < g_voteCount[a]) + b = a + + + if (g_voteCount[SELECTMAPS] > g_voteCount[b] + && g_voteCount[SELECTMAPS] > g_voteCount[SELECTMAPS+1]) + { + new mapname[32] + + get_mapname(mapname, 31) + new Float:steptime = get_cvar_float("amx_extendmap_step") + set_cvar_float("mp_timelimit", get_cvar_float("mp_timelimit") + steptime) + client_print(0, print_chat, "%L", LANG_PLAYER, "CHO_FIN_EXT", steptime) + log_amx("Vote: Voting for the nextmap finished. Map %s will be extended to next %.0f minutes", mapname, steptime) + + return + } + + new smap[32] + if (g_voteCount[b] && g_voteCount[SELECTMAPS + 1] <= g_voteCount[b]) + { + ArrayGetString(g_mapName, g_nextName[b], smap, charsof(smap)); + set_cvar_string("amx_nextmap", smap); + } + + + get_cvar_string("amx_nextmap", smap, 31) + client_print(0, print_chat, "%L", LANG_PLAYER, "CHO_FIN_NEXT", smap) + log_amx("Vote: Voting for the nextmap finished. The nextmap will be %s", smap) +} + +public countVote(id, key) +{ + if (get_cvar_float("amx_vote_answers")) + { + new name[32] + get_user_name(id, name, 31) + + if (key == SELECTMAPS) + client_print(0, print_chat, "%L", LANG_PLAYER, "CHOSE_EXT", name) + else if (key < SELECTMAPS) + { + new map[32]; + ArrayGetString(g_mapName, g_nextName[key], map, charsof(map)); + client_print(0, print_chat, "%L", LANG_PLAYER, "X_CHOSE_X", name, map); + } + } + ++g_voteCount[key] + + return PLUGIN_HANDLED +} + +bool:isInMenu(id) +{ + for (new a = 0; a < g_mapVoteNum; ++a) + if (id == g_nextName[a]) + return true + return false +} + +public voteNextmap() +{ + new winlimit = get_cvar_num("mp_winlimit") + new maxrounds = get_cvar_num("mp_maxrounds") + + if (winlimit) + { + new c = winlimit - 2 + + if ((c > g_teamScore[0]) && (c > g_teamScore[1])) + { + g_selected = false + return + } + } + else if (maxrounds) + { + if ((maxrounds - 2) > (g_teamScore[0] + g_teamScore[1])) + { + g_selected = false + return + } + } else { + new timeleft = get_timeleft() + + if (timeleft < 1 || timeleft > 129) + { + g_selected = false + return + } + } + + if (g_selected) + return + + g_selected = true + + new menu[512], a, mkeys = (1<<SELECTMAPS + 1) + + new pos = format(menu, 511, g_coloredMenus ? "\y%L:\w^n^n" : "%L:^n^n", LANG_SERVER, "CHOOSE_NEXTM") + new dmax = (g_mapNums > SELECTMAPS) ? SELECTMAPS : g_mapNums + + for (g_mapVoteNum = 0; g_mapVoteNum < dmax; ++g_mapVoteNum) + { + a = random_num(0, g_mapNums - 1) + + while (isInMenu(a)) + if (++a >= g_mapNums) a = 0 + + g_nextName[g_mapVoteNum] = a + pos += format(menu[pos], 511, "%d. %a^n", g_mapVoteNum + 1, ArrayGetStringHandle(g_mapName, a)); + mkeys |= (1<<g_mapVoteNum) + g_voteCount[g_mapVoteNum] = 0 + } + + menu[pos++] = '^n' + g_voteCount[SELECTMAPS] = 0 + g_voteCount[SELECTMAPS + 1] = 0 + + new mapname[32] + get_mapname(mapname, 31) + + if ((winlimit + maxrounds) == 0 && (get_cvar_float("mp_timelimit") < get_cvar_float("amx_extendmap_max"))) + { + pos += format(menu[pos], 511, "%d. %L^n", SELECTMAPS + 1, LANG_SERVER, "EXTED_MAP", mapname) + mkeys |= (1<<SELECTMAPS) + } + + format(menu[pos], 511, "%d. %L", SELECTMAPS+2, LANG_SERVER, "NONE") + new MenuName[64] + + format(MenuName, 63, "%L", "en", "CHOOSE_NEXTM") + show_menu(0, mkeys, menu, 15, MenuName) + set_task(15.0, "checkVotes") + client_print(0, print_chat, "%L", LANG_SERVER, "TIME_CHOOSE") + client_cmd(0, "spk Gman/Gman_Choose2") + log_amx("Vote: Voting for the nextmap started") +} +stock bool:ValidMap(mapname[]) +{ + if ( is_map_valid(mapname) ) + { + return true; + } + // If the is_map_valid check failed, check the end of the string + new len = strlen(mapname) - 4; + + // The mapname was too short to possibly house the .bsp extension + if (len < 0) + { + return false; + } + if ( equali(mapname[len], ".bsp") ) + { + // If the ending was .bsp, then cut it off. + // the string is byref'ed, so this copies back to the loaded text. + mapname[len] = '^0'; + + // recheck + if ( is_map_valid(mapname) ) + { + return true; + } + } + + return false; +} + +loadSettings(filename[]) +{ + if (!file_exists(filename)) + return 0 + + new szText[32] + new currentMap[32] + + new buff[256]; + + get_mapname(currentMap, 31) + + new fp=fopen(filename,"r"); + + while (!feof(fp)) + { + buff[0]='^0'; + szText[0]='^0'; + + fgets(fp, buff, charsof(buff)); + + parse(buff, szText, charsof(szText)); + + + if (szText[0] != ';' && + ValidMap(szText) && + !equali(szText, g_lastMap) && + !equali(szText, currentMap)) + { + ArrayPushString(g_mapName, szText); + ++g_mapNums; + } + + } + + fclose(fp); + + return g_mapNums +} + +public team_score() +{ + new team[2] + + read_data(1, team, 1) + g_teamScore[(team[0]=='C') ? 0 : 1] = read_data(2) +} + +public plugin_end() +{ + new current_map[32] + + get_mapname(current_map, 31) + set_localinfo("lastMap", current_map) +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/mapsmenu.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/mapsmenu.sma new file mode 100644 index 0000000..b957f30 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/mapsmenu.sma @@ -0,0 +1,595 @@ +/* AMX Mod X +* Maps Menu Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> +#include <amxmisc> + +new Array:g_mapName; +new g_mapNums +new g_menuPosition[33] + +new g_voteCount[5] + +new g_voteSelected[33][4] +new g_voteSelectedNum[33] + +new g_coloredMenus + +new g_choosed + +public plugin_init() +{ + register_plugin("Maps Menu", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("mapsmenu.txt") + register_dictionary("common.txt") + register_clcmd("amx_mapmenu", "cmdMapsMenu", ADMIN_MAP, "- displays changelevel menu") + register_clcmd("amx_votemapmenu", "cmdVoteMapMenu", ADMIN_VOTE, "- displays votemap menu") + + register_menucmd(register_menuid("Changelevel Menu"), 1023, "actionMapsMenu") + register_menucmd(register_menuid("Which map do you want?"), 527, "voteCount") + register_menucmd(register_menuid("Change map to"), 527, "voteCount") + register_menucmd(register_menuid("Votemap Menu"), 1023, "actionVoteMapMenu") + register_menucmd(register_menuid("The winner: "), 3, "actionResult") + + g_mapName=ArrayCreate(32); + + new maps_ini_file[64]; + get_configsdir(maps_ini_file, 63); + format(maps_ini_file, 63, "%s/maps.ini", maps_ini_file); + + if (!file_exists(maps_ini_file)) + get_cvar_string("mapcyclefile", maps_ini_file, sizeof(maps_ini_file) - 1); + + if (!file_exists(maps_ini_file)) + format(maps_ini_file, 63, "mapcycle.txt") + + load_settings(maps_ini_file) + + g_coloredMenus = colored_menus() +} + +public autoRefuse() +{ + log_amx("Vote: %L", "en", "RESULT_REF") + client_print(0, print_chat, "%L", LANG_PLAYER, "RESULT_REF") +} + +public actionResult(id, key) +{ + remove_task(4545454) + + switch (key) + { + case 0: + { + new _modName[10] + get_modname(_modName, 9) + + if (!equal(_modName, "zp")) + { + message_begin(MSG_ALL, SVC_INTERMISSION) + message_end() + } + + new tempMap[32]; + ArrayGetString(g_mapName, g_choosed, tempMap, charsmax(tempMap)); + + set_task(2.0, "delayedChange", 0, tempMap, strlen(tempMap) + 1) + log_amx("Vote: %L", "en", "RESULT_ACC") + client_print(0, print_chat, "%L", LANG_PLAYER, "RESULT_ACC") + } + case 1: autoRefuse() + } + + return PLUGIN_HANDLED +} + +public checkVotes(id) +{ + id -= 34567 + new num, ppl[32], a = 0 + + get_players(ppl, num, "c") + if (num == 0) num = 1 + g_choosed = -1 + + for (new i = 0; i < g_voteSelectedNum[id]; ++i) + if (g_voteCount[a] < g_voteCount[i]) + a = i + + new votesNum = g_voteCount[0] + g_voteCount[1] + g_voteCount[2] + g_voteCount[3] + g_voteCount[4] + new iRatio = votesNum ? floatround(get_cvar_float("amx_votemap_ratio") * float(votesNum), floatround_ceil) : 1 + new iResult = g_voteCount[a] + + if (iResult >= iRatio) + { + g_choosed = g_voteSelected[id][a] + new tempMap[32]; + ArrayGetString(g_mapName, g_choosed, tempMap, charsmax(tempMap)); + client_print(0, print_chat, "%L %s", LANG_PLAYER, "VOTE_SUCCESS", tempMap); + log_amx("Vote: %L %s", "en", "VOTE_SUCCESS", tempMap); + } + + if (g_choosed != -1) + { + if (is_user_connected(id)) + { + new menuBody[512] + new tempMap[32]; + ArrayGetString(g_mapName, g_choosed, tempMap, charsmax(tempMap)); + new len = format(menuBody, 511, g_coloredMenus ? "\y%L: \w%s^n^n" : "%L: %s^n^n", id, "THE_WINNER", tempMap) + + len += format(menuBody[len], 511 - len, g_coloredMenus ? "\y%L^n\w" : "%L^n", id, "WANT_CONT") + format(menuBody[len], 511-len, "^n1. %L^n2. %L", id, "YES", id, "NO") + + show_menu(id, 0x03, menuBody, 10, "The winner: ") + set_task(10.0, "autoRefuse", 4545454) + } else { + new _modName[10] + get_modname(_modName, 9) + + if (!equal(_modName, "zp")) + { + message_begin(MSG_ALL, SVC_INTERMISSION) + message_end() + } + new tempMap[32]; + ArrayGetString(g_mapName, g_choosed, tempMap, charsmax(tempMap)); + set_task(2.0, "delayedChange", 0, tempMap, strlen(tempMap) + 1) + } + } else { + client_print(0, print_chat, "%L", LANG_PLAYER, "VOTE_FAILED") + log_amx("Vote: %L", "en", "VOTE_FAILED") + } + + remove_task(34567 + id) +} + +public voteCount(id, key) +{ + if (key > 3) + { + client_print(0, print_chat, "%L", LANG_PLAYER, "VOT_CANC") + remove_task(34567 + id) + set_cvar_float("amx_last_voting", get_gametime()) + log_amx("Vote: Cancel vote session") + + return PLUGIN_HANDLED + } + + if (get_cvar_float("amx_vote_answers")) + { + new name[32] + + get_user_name(id, name, 31) + client_print(0, print_chat, "%L", LANG_PLAYER, "X_VOTED_FOR", name, key + 1) + } + + ++g_voteCount[key] + + return PLUGIN_HANDLED +} + +isMapSelected(id, pos) +{ + for (new a = 0; a < g_voteSelectedNum[id]; ++a) + if (g_voteSelected[id][a] == pos) + return 1 + return 0 +} + +displayVoteMapsMenu(id, pos) +{ + if (pos < 0) + return + + new menuBody[512], b = 0, start = pos * 7 + + if (start >= g_mapNums) + start = pos = g_menuPosition[id] = 0 + + new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "VOTEMAP_MENU", pos + 1, (g_mapNums / 7 + ((g_mapNums % 7) ? 1 : 0))) + new end = start + 7, keys = MENU_KEY_0 + + if (end > g_mapNums) + end = g_mapNums + + new tempMap[32]; + for (new a = start; a < end; ++a) + { + ArrayGetString(g_mapName, a, tempMap, charsmax(tempMap)); + if (g_voteSelectedNum[id] == 4 || isMapSelected(id, pos * 7 + b)) + { + ++b + if (g_coloredMenus) + len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, tempMap) + else + len += format(menuBody[len], 511-len, "#. %s^n", tempMap) + } else { + keys |= (1<<b) + len += format(menuBody[len], 511-len, "%d. %s^n", ++b, tempMap) + } + } + + if (g_voteSelectedNum[id]) + { + keys |= MENU_KEY_8 + len += format(menuBody[len], 511-len, "^n8. %L^n", id, "START_VOT") + } + else + len += format(menuBody[len], 511-len, g_coloredMenus ? "^n\d8. %L^n\w" : "^n#. %L^n", id, "START_VOT") + + if (end != g_mapNums) + { + len += format(menuBody[len], 511-len, "^n9. %L...^n0. %L^n", id, "MORE", id, pos ? "BACK" : "EXIT") + keys |= MENU_KEY_9 + } + else + len += format(menuBody[len], 511-len, "^n0. %L^n", id, pos ? "BACK" : "EXIT") + + if (g_voteSelectedNum[id]) + len += format(menuBody[len], 511-len, g_coloredMenus ? "^n\y%L:^n\w" : "^n%L:^n", id, "SEL_MAPS") + else + len += format(menuBody[len], 511-len, "^n^n") + + for (new c = 0; c < 4; c++) + { + if (c < g_voteSelectedNum[id]) + { + ArrayGetString(g_mapName, g_voteSelected[id][c], tempMap, charsmax(tempMap)); + len += format(menuBody[len], 511-len, "%s^n", tempMap) + } + else + len += format(menuBody[len], 511-len, "^n") + } + + new menuName[64] + format(menuName, 63, "%L", "en", "VOTEMAP_MENU") + + show_menu(id, keys, menuBody, -1, menuName) +} + +public cmdVoteMapMenu(id, level, cid) +{ + if (!cmd_access(id, level, cid, 1)) + return PLUGIN_HANDLED + + if (get_cvar_float("amx_last_voting") > get_gametime()) + { + client_print(id, print_chat, "%L", id, "ALREADY_VOT") + return PLUGIN_HANDLED + } + + g_voteSelectedNum[id] = 0 + + if (g_mapNums) + { + displayVoteMapsMenu(id, g_menuPosition[id] = 0) + } else { + console_print(id, "%L", id, "NO_MAPS_MENU") + client_print(id, print_chat, "%L", id, "NO_MAPS_MENU") + } + + return PLUGIN_HANDLED +} + +public cmdMapsMenu(id, level, cid) +{ + if (!cmd_access(id, level, cid, 1)) + return PLUGIN_HANDLED + + if (g_mapNums) + { + displayMapsMenu(id, g_menuPosition[id] = 0) + } else { + console_print(id, "%L", id, "NO_MAPS_MENU") + client_print(id, print_chat, "%L", id, "NO_MAPS_MENU") + } + + return PLUGIN_HANDLED +} + +public delayedChange(mapname[]) + server_cmd("changelevel %s", mapname) + +public actionVoteMapMenu(id, key) +{ + new tempMap[32]; + switch (key) + { + case 7: + { + new Float:voting = get_cvar_float("amx_last_voting") + + if (voting > get_gametime()) + { + client_print(id, print_chat, "%L", id, "ALREADY_VOT") + return PLUGIN_HANDLED + } + + if (voting && voting + get_cvar_float("amx_vote_delay") > get_gametime()) + { + client_print(id, print_chat, "%L", id, "VOT_NOW_ALLOW") + return PLUGIN_HANDLED + } + + g_voteCount = {0, 0, 0, 0, 0} + + new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0 + set_cvar_float("amx_last_voting", get_gametime() + vote_time) + new iVoteTime = floatround(vote_time) + + set_task(vote_time, "checkVotes", 34567 + id) + + new menuBody[512] + new players[32] + new pnum, keys, len + + get_players(players, pnum) + + if (g_voteSelectedNum[id] > 1) + { + len = format(menuBody, 511, g_coloredMenus ? "\y%L^n\w^n" : "%L^n^n", id, "WHICH_MAP") + + for (new c = 0; c < g_voteSelectedNum[id]; ++c) + { + ArrayGetString(g_mapName, g_voteSelected[id][c], tempMap, charsmax(tempMap)); + len += format(menuBody[len], 511, "%d. %s^n", c + 1, tempMap) + keys |= (1<<c) + } + + keys |= (1<<8) + len += format(menuBody[len], 511, "^n9. %L^n", id, "NONE") + } else { + ArrayGetString(g_mapName, g_voteSelected[id][0], tempMap, charsmax(tempMap)); + len = format(menuBody, 511, g_coloredMenus ? "\y%L^n%s?^n\w^n1. %L^n2. %L^n" : "%L^n%s?^n^n1. %L^n2. %L^n", id, "CHANGE_MAP_TO", tempMap, id, "YES", id, "NO") + keys = MENU_KEY_1|MENU_KEY_2 + } + + new menuName[64] + format(menuName, 63, "%L", "en", "WHICH_MAP") + + for (new b = 0; b < pnum; ++b) + if (players[b] != id) + show_menu(players[b], keys, menuBody, iVoteTime, menuName) + + format(menuBody[len], 511, "^n0. %L", id, "CANC_VOTE") + keys |= MENU_KEY_0 + show_menu(id, keys, menuBody, iVoteTime, menuName) + + new authid[32], name[32] + + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + + show_activity_key("ADMIN_V_MAP_1", "ADMIN_V_MAP_2", name); + + new tempMapA[32]; + new tempMapB[32]; + new tempMapC[32]; + new tempMapD[32]; + if (g_voteSelectedNum[id] > 0) + { + ArrayGetString(g_mapName, g_voteSelected[id][0], tempMapA, charsmax(tempMapA)); + } + else + { + copy(tempMapA, charsmax(tempMapA), ""); + } + if (g_voteSelectedNum[id] > 1) + { + ArrayGetString(g_mapName, g_voteSelected[id][1], tempMapB, charsmax(tempMapB)); + } + else + { + copy(tempMapB, charsmax(tempMapB), ""); + } + if (g_voteSelectedNum[id] > 2) + { + ArrayGetString(g_mapName, g_voteSelected[id][2], tempMapC, charsmax(tempMapC)); + } + else + { + copy(tempMapC, charsmax(tempMapC), ""); + } + if (g_voteSelectedNum[id] > 3) + { + ArrayGetString(g_mapName, g_voteSelected[id][3], tempMapD, charsmax(tempMapD)); + } + else + { + copy(tempMapD, charsmax(tempMapD), ""); + } + + log_amx("Vote: ^"%s<%d><%s><>^" vote maps (map#1 ^"%s^") (map#2 ^"%s^") (map#3 ^"%s^") (map#4 ^"%s^")", + name, get_user_userid(id), authid, + tempMapA, tempMapB, tempMapC, tempMapD) + } + case 8: displayVoteMapsMenu(id, ++g_menuPosition[id]) + case 9: displayVoteMapsMenu(id, --g_menuPosition[id]) + default: + { + g_voteSelected[id][g_voteSelectedNum[id]++] = g_menuPosition[id] * 7 + key + displayVoteMapsMenu(id, g_menuPosition[id]) + } + } + + return PLUGIN_HANDLED +} + +public actionMapsMenu(id, key) +{ + switch (key) + { + case 8: displayMapsMenu(id, ++g_menuPosition[id]) + case 9: displayMapsMenu(id, --g_menuPosition[id]) + default: + { + new a = g_menuPosition[id] * 8 + key + new _modName[10] + + get_modname(_modName, 9) + if (!equal(_modName, "zp")) + { + message_begin(MSG_ALL, SVC_INTERMISSION) + message_end() + } + + new authid[32], name[32] + + get_user_authid(id, authid, 31) + get_user_name(id, name, 31) + + new tempMap[32]; + ArrayGetString(g_mapName, a, tempMap, charsmax(tempMap)); + + show_activity_key("ADMIN_CHANGEL_1", "ADMIN_CHANGEL_2", name, tempMap); + + log_amx("Cmd: ^"%s<%d><%s><>^" changelevel ^"%s^"", name, get_user_userid(id), authid, tempMap) + set_task(2.0, "delayedChange", 0, tempMap, strlen(tempMap) + 1) + /* displayMapsMenu(id, g_menuPosition[id]) */ + } + } + + return PLUGIN_HANDLED +} + +displayMapsMenu(id, pos) +{ + if (pos < 0) + return + + new menuBody[512] + new tempMap[32] + new start = pos * 8 + new b = 0 + + if (start >= g_mapNums) + start = pos = g_menuPosition[id] = 0 + + new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "CHANGLE_MENU", pos + 1, (g_mapNums / 8 + ((g_mapNums % 8) ? 1 : 0))) + new end = start + 8 + new keys = MENU_KEY_0 + + if (end > g_mapNums) + end = g_mapNums + + for (new a = start; a < end; ++a) + { + keys |= (1<<b) + ArrayGetString(g_mapName, a, tempMap, charsmax(tempMap)); + len += format(menuBody[len], 511-len, "%d. %s^n", ++b, tempMap) + } + + if (end != g_mapNums) + { + format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") + keys |= MENU_KEY_9 + } + else + format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") + + new menuName[64] + format(menuName, 63, "%L", "en", "CHANGLE_MENU") + + show_menu(id, keys, menuBody, -1, menuName) +} +stock bool:ValidMap(mapname[]) +{ + if ( is_map_valid(mapname) ) + { + return true; + } + // If the is_map_valid check failed, check the end of the string + new len = strlen(mapname) - 4; + + // The mapname was too short to possibly house the .bsp extension + if (len < 0) + { + return false; + } + if ( equali(mapname[len], ".bsp") ) + { + // If the ending was .bsp, then cut it off. + // the string is byref'ed, so this copies back to the loaded text. + mapname[len] = '^0'; + + // recheck + if ( is_map_valid(mapname) ) + { + return true; + } + } + + return false; +} + +load_settings(filename[]) +{ + new fp = fopen(filename, "r"); + + if (!fp) + { + return 0; + } + + + new text[256]; + new tempMap[32]; + + while (!feof(fp)) + { + fgets(fp, text, charsmax(text)); + + if (text[0] == ';') + { + continue; + } + if (parse(text, tempMap, charsmax(tempMap)) < 1) + { + continue; + } + if (!ValidMap(tempMap)) + { + continue; + } + + ArrayPushString(g_mapName, tempMap); + g_mapNums++; + } + + fclose(fp); + + return 1; +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/menufront.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/menufront.sma new file mode 100644 index 0000000..d5c14c7 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/menufront.sma @@ -0,0 +1,391 @@ +/* AMX Mod X +* Menus Front-End Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> +#include <amxmisc> + +#define MAXMENUS 128 +#define STRINGSIZE 32 +#define STRINGLENGTH STRINGSIZE - 1 +#define MENUITEMSPERPAGE 8 +//#define MENUS_NUMBER 16 + +new g_menuPosition[33] +new g_menusNumber = 0 +new g_menuBody[MAXMENUS][STRINGSIZE] +new bool:g_menuBodyPhrase[MAXMENUS] +new g_menuCmd[MAXMENUS][STRINGSIZE] +new g_menuAccess[MAXMENUS] +new g_menuPlugin[MAXMENUS][STRINGSIZE] + +new g_coloredMenus + +new g_clientMenuPosition[33] +new g_clientMenusNumber = 0 +new g_clientMenuBody[MAXMENUS][STRINGSIZE] +new bool:g_clientMenuBodyPhrase[MAXMENUS] +new g_clientMenuCmd[MAXMENUS][STRINGSIZE] +new g_clientMenuAccess[MAXMENUS] +new g_clientMenuPlugin[MAXMENUS][STRINGSIZE] + +// menuBody: Text that will be shown for this item in menu +// menuCmd: Command that should be executed to start menu +// menuAccess: Access required for menu +// menuPlugin: The exact case-insensitive name of plugin holding the menu command +public AddMenu(const menuBody[], const menuCmd[], const menuAccess, const menuPlugin[]) +{ + if (g_menusNumber + 1 == MAXMENUS) + { + log_amx("Error: Plugin ^"%s^" tried to add a menu item to Menu Front-End plugin with maximum menu items reached!", menuPlugin) + return + } + + copy(g_menuBody[g_menusNumber], STRINGLENGTH, menuBody) + g_menuBodyPhrase[g_menusNumber] = false + + copy(g_menuCmd[g_menusNumber], STRINGLENGTH, menuCmd) + g_menuAccess[g_menusNumber] = menuAccess + + copy(g_menuPlugin[g_menusNumber], STRINGLENGTH, menuPlugin) + + g_menusNumber++ + server_print("Menu item %d added to Menus Front-End: ^"%s^" from plugin ^"%s^"", g_menusNumber, menuBody, menuPlugin) +} + +public AddMenuLang(const menuBody[], const menuCmd[], const menuAccess, const menuPlugin[]) +{ + if (g_menusNumber + 1 == MAXMENUS) + { + log_amx("Error: Plugin ^"%s^" tried to add a menu item to Menu Front-End plugin with maximum menu items reached!", menuPlugin) + return + } + + copy(g_menuBody[g_menusNumber], STRINGLENGTH, menuBody) + g_menuBodyPhrase[g_menusNumber] = true + + copy(g_menuCmd[g_menusNumber], STRINGLENGTH, menuCmd) + g_menuAccess[g_menusNumber] = menuAccess + + copy(g_menuPlugin[g_menusNumber], STRINGLENGTH, menuPlugin) + g_menusNumber++ + + //server_print("Menu item %d added to Menus Front-End: ^"%s^" (LANG) from plugin ^"%s^"", g_menusNumber, menuBody, menuPlugin) +} + +public AddClientMenu(const menuBody[], const menuCmd[], const menuAccess, const menuPlugin[]) +{ + if (g_clientMenusNumber + 1 == MAXMENUS) + { + log_amx("Error: Plugin ^"%s^" tried to add a menu item to Menu Front-End plugin with maximum menu items reached!", menuPlugin) + return + } + + copy(g_clientMenuBody[g_clientMenusNumber], STRINGLENGTH, menuBody) + g_clientMenuBodyPhrase[g_clientMenusNumber] = false + + copy(g_clientMenuCmd[g_clientMenusNumber], STRINGLENGTH, menuCmd) + g_clientMenuAccess[g_clientMenusNumber] = menuAccess + + copy(g_clientMenuPlugin[g_clientMenusNumber], STRINGLENGTH, menuPlugin) + + g_clientMenusNumber++ + server_print("Client menu item %d added to Client Menus Front-End: ^"%s^" from plugin ^"%s^"", g_clientMenusNumber, menuBody, menuPlugin) +} + +AddDefaultMenus() +{ + new flags; + AddMenuLang("KICK_PLAYER", "amx_kickmenu", get_clcmd_flags("amx_kickmenu", flags) ? flags : ADMIN_KICK , "Players Menu") + AddMenuLang("BAN_PLAYER", "amx_banmenu", get_clcmd_flags("amx_banmenu", flags) ? flags : ADMIN_BAN, "Players Menu") + AddMenuLang("SLAP_SLAY", "amx_slapmenu", get_clcmd_flags("amx_slapmenu", flags) ? flags : ADMIN_SLAY, "Players Menu") + AddMenuLang("TEAM_PLAYER", "amx_teammenu", get_clcmd_flags("amx_teammenu", flags) ? flags : ADMIN_LEVEL_A, "Players Menu") + AddMenuLang("CHANGEL", "amx_mapmenu", get_clcmd_flags("amx_mapmenu", flags) ? flags : ADMIN_MAP, "Maps Menu") + AddMenuLang("VOTE_MAPS", "amx_votemapmenu", get_clcmd_flags("amx_votemapmenu", flags) ? flags : ADMIN_VOTE, "Maps Menu") + AddMenuLang("SPECH_STUFF", "amx_speechmenu", get_clcmd_flags("amx_speechmenu", flags) ? flags : ADMIN_MENU, "Commands Menu") + AddMenuLang("CLIENT_COM", "amx_clcmdmenu", get_clcmd_flags("amx_clcmdmenu", flags) ? flags : ADMIN_LEVEL_A, "Players Menu") + AddMenuLang("SERVER_COM", "amx_cmdmenu", get_clcmd_flags("amx_cmdmenu", flags) ? flags : ADMIN_MENU, "Commands Menu") + AddMenuLang("CVARS_SET", "amx_cvarmenu", get_clcmd_flags("amx_cvarmenu", flags) ? flags : ADMIN_CVAR, "Commands Menu") + AddMenuLang("CONFIG", "amx_cfgmenu", get_clcmd_flags("amx_cfgmenu", flags) ? flags : ADMIN_MENU, "Commands Menu") + AddMenuLang("LANG_SET", "amx_langmenu", get_clcmd_flags("amx_langmenu", flags) ? flags : ADMIN_CFG, "Multi-Lingual System") + AddMenuLang("STATS_SET", "amx_statscfgmenu", get_clcmd_flags("amx_statscfgmenu", flags) ? flags : ADMIN_CFG, "Stats Configuration") + AddMenuLang("PAUSE_PLUG", "amx_pausecfgmenu", get_clcmd_flags("amx_pausecfgmenu", flags) ? flags : ADMIN_CFG, "Pause Plugins") + AddMenuLang("RES_WEAP", "amx_restmenu", get_clcmd_flags("amx_restmenu", flags) ? flags : ADMIN_CFG, "Restrict Weapons") + AddMenuLang("TELE_PLAYER", "amx_teleportmenu", get_clcmd_flags("amx_teleportmenu", flags) ? flags : ADMIN_CFG, "Teleport Menu") +} +stock bool:get_clcmd_flags(const search_command[], &flags) +{ + new count = get_clcmdsnum(-1); + static cmd[128]; + static info[1]; + new _flags; + + for (new i = 0; i < count; i++) + { + get_clcmd(i, cmd, charsmax(cmd), _flags, info, charsmax(info), -1); + + if (strcmp(cmd, search_command) == 0) + { + flags = _flags; + return true; + } + } + + return false; +} +public actionMenu(id, key) +{ + switch (key) + { + case 8: displayMenu(id, ++g_menuPosition[id]) + case 9: displayMenu(id, --g_menuPosition[id]) + default: client_cmd(id, "%s", g_menuCmd[g_menuPosition[id] * 8 + key]) + } + + return PLUGIN_HANDLED +} + +public clientActionMenu(id, key) +{ + switch (key) + { + case 8: clientDisplayMenu(id, ++g_clientMenuPosition[id]) + case 9: clientDisplayMenu(id, --g_clientMenuPosition[id]) + default: client_cmd(id, "%s", g_clientMenuCmd[g_clientMenuPosition[id] * 8 + key]) + } + + return PLUGIN_HANDLED +} + +displayMenu(id, pos) +{ + if (pos < 0) + return + + new menuBody[512] + new b = 0 + new start = pos * MENUITEMSPERPAGE + + if (start >= g_menusNumber) // MENUS_NUMBER + start = pos = g_menuPosition[id] = 0 + + new len = format(menuBody, 511, + + g_coloredMenus ? "\yAMX Mod X Menu\R%d/%d^n\w^n" : "AMX Mod X Menu %d/%d^n^n" , pos + 1, (g_menusNumber / MENUITEMSPERPAGE) + (((g_menusNumber % MENUITEMSPERPAGE) > 0) ? 1 : 0)) + + new end = start + MENUITEMSPERPAGE + new keys = MENU_KEY_0 + + if (end > g_menusNumber) // MENUS_NUMBER + end = g_menusNumber // MENUS_NUMBER + + for (new a = start; a < end; ++a) + { + if ( access(id, g_menuAccess[a]) && + ((is_plugin_loaded(g_menuPlugin[a]) != -1) || // search plugins for registered name + (is_plugin_loaded(g_menuPlugin[a], true) != -1))) // search plugins for filename + { + keys |= (1<<b) + + if (g_menuBodyPhrase[a]) + len += format(menuBody[len], 511-len, "%d. %L^n", ++b, id, g_menuBody[a]) + else + len += format(menuBody[len], 511-len, "%d. %s^n", ++b, g_menuBody[a]) + } else { + ++b + + if (g_coloredMenus) + { + if (g_menuBodyPhrase[a]) + len += format(menuBody[len], 511-len, "\d%d. %L^n\w", b, id, g_menuBody[a]) + else + len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, g_menuBody[a]) + } else { + if (g_menuBodyPhrase[a]) + len += format(menuBody[len], 511-len, "#. %L^n", id, g_menuBody[a]) + else + len += format(menuBody[len], 511-len, "#. %s^n", g_menuBody[a]) + } + } + } + + if (end != g_menusNumber) // MENUS_NUMBER + { + format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") + keys |= MENU_KEY_9 + } else { + format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") + } + + show_menu(id, keys, menuBody) +} + +clientDisplayMenu(id, pos) +{ + if (pos < 0) + return + + new menuBody[512] + new b = 0 + new start = pos * MENUITEMSPERPAGE + + if (start >= g_clientMenusNumber) // MENUS_NUMBER + start = pos = g_clientMenuPosition[id] = 0 + + new len = format(menuBody, 511, g_coloredMenus ? "\yAMX Mod X Client Menu\R%d/%d^n\w^n" : "AMX Mod X Client Menu %d/%d^n^n" , pos + 1, (g_clientMenusNumber / MENUITEMSPERPAGE) + (((g_clientMenusNumber % MENUITEMSPERPAGE) > 0) ? 1 : 0)) + + new end = start + MENUITEMSPERPAGE + new keys = MENU_KEY_0 + + if (end > g_clientMenusNumber) // MENUS_NUMBER + end = g_clientMenusNumber // MENUS_NUMBER + + for (new a = start; a < end; ++a) + { + if ( access(id, g_clientMenuAccess[a]) && + ((is_plugin_loaded(g_clientMenuPlugin[a]) != -1) || // search plugins for registered name + (is_plugin_loaded(g_clientMenuPlugin[a], true) != -1))) // search plugins for file name + { + keys |= (1<<b) + + if (g_clientMenuBodyPhrase[a]) + len += format(menuBody[len], 511-len, "%d. %L^n", ++b, id, g_clientMenuBody[a]) + else + len += format(menuBody[len], 511-len, "%d. %s^n", ++b, g_clientMenuBody[a]) + } else { + ++b + + if (g_coloredMenus) + { + if (g_clientMenuBodyPhrase[a]) + len += format(menuBody[len], 511-len, "\d%d. %L^n\w", b, id, g_clientMenuBody[a]) + else + len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, g_clientMenuBody[a]) + } else { + if (g_clientMenuBodyPhrase[a]) + len += format(menuBody[len], 511-len, "#. %L^n", id, g_clientMenuBody[a]) + else + len += format(menuBody[len], 511-len, "#. %s^n", g_clientMenuBody[a]) + } + } + } + + if (end != g_clientMenusNumber) // MENUS_NUMBER + { + format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") + keys |= MENU_KEY_9 + } + else { + format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") + } + + show_menu(id, keys, menuBody) +} + +public cmdMenu(id, level, cid) +{ + if (cmd_access(id, level, cid, 1)) + displayMenu(id, g_menuPosition[id] = 0) + + return PLUGIN_HANDLED +} +public clientCmdMenu(id, level, cid) +{ + if (cmd_access(id, level, cid, 1)) + clientDisplayMenu(id, g_clientMenuPosition[id] = 0) + + return PLUGIN_HANDLED +} + +public addmenuitem_cmd(id, level, cid) +{ + if (!cmd_access(id, level, cid, 5)) + return PLUGIN_HANDLED + + // AddMenu(const menuBody[], const menuCmd[], const menuAccess, const menuPlugin[]) + new menuBody[STRINGSIZE], menuCmd[STRINGSIZE], flags[STRINGSIZE], menuAccess = 0, menuPlugin[STRINGSIZE] + read_argv(1, menuBody, STRINGLENGTH) + read_argv(2, menuCmd, STRINGLENGTH) + read_argv(3, flags, STRINGLENGTH) + menuAccess = read_flags(flags) + read_argv(4, menuPlugin, STRINGLENGTH) + + AddMenu(menuBody, menuCmd, menuAccess, menuPlugin) + + return PLUGIN_HANDLED +} + +public addclientmenuitem_cmd(id, level, cid) +{ + if (!cmd_access(id, level, cid, 5)) + return PLUGIN_HANDLED + + // AddMenu(const menuBody[], const menuCmd[], const menuAccess, const menuPlugin[]) + new menuBody[STRINGSIZE], menuCmd[STRINGSIZE], flags[STRINGSIZE], menuAccess = 0, menuPlugin[STRINGSIZE] + read_argv(1, menuBody, STRINGLENGTH) + read_argv(2, menuCmd, STRINGLENGTH) + read_argv(3, flags, STRINGLENGTH) + menuAccess = read_flags(flags) + read_argv(4, menuPlugin, STRINGLENGTH) + + AddClientMenu(menuBody, menuCmd, menuAccess, menuPlugin) + + return PLUGIN_HANDLED +} + +public plugin_init() +{ + register_plugin("Menus Front-End", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("menufront.txt") + register_dictionary("common.txt") + + register_menucmd(register_menuid("AMX Mod X Menu"), 1023, "actionMenu") + register_menucmd(register_menuid("AMX Mod X Client Menu"), 1023, "clientActionMenu") + register_clcmd("amxmodmenu", "cmdMenu", ADMIN_MENU, "- displays menus") + register_clcmd("amx_menu", "clientCmdMenu", 0, "- displays menus available to client") + + register_srvcmd("amx_addmenuitem", "addmenuitem_cmd", 0, "<menu text> <menu command> <access flags> <plugin name | plugin filename> - Add a menu item to Menus Front-End") + register_srvcmd("amx_addclientmenuitem", "addclientmenuitem_cmd", 0, "<menu text> <menu command> <access flags> <plugin name | plugin filename> - Add a menu item to Client Menus Front-End") + + g_coloredMenus = colored_menus() + + +} +public plugin_cfg() +{ + AddDefaultMenus() + + new configs[128] + get_configsdir(configs, 127) + server_cmd("exec %s/custommenuitems.cfg", configs) +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/miscstats.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/miscstats.sma new file mode 100644 index 0000000..31f1aed --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/miscstats.sma @@ -0,0 +1,778 @@ +/* AMX Mod X +* Misc. Stats Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> +#include <csx> +#include <cstrike> + +public MultiKill +public MultiKillSound +public BombPlanting +public BombDefusing +public BombPlanted +public BombDefused +public BombFailed +public BombPickUp +public BombDrop +public BombCountVoice +public BombCountDef +public BombReached +public ItalyBonusKill +public EnemyRemaining +public LastMan +public KnifeKill +public KnifeKillSound +public GrenadeKill +public GrenadeSuicide +public HeadShotKill +public HeadShotKillSound +public RoundCounterSound +public RoundCounter +public KillingStreak +public KillingStreakSound +public DoubleKill +public DoubleKillSound +public PlayerName +public FirstBloodSound + +new g_streakKills[33][2] +new g_multiKills[33][2] +new g_C4Timer +new g_Defusing +new g_Planter +new Float:g_LastOmg +new g_LastAnnounce +new g_roundCount +new Float:g_doubleKill +new g_doubleKillId +new g_friend[33] +new g_firstBlood +new g_center1_sync +new g_announce_sync +new g_status_sync +new g_left_sync +new g_bottom_sync +new g_he_sync + +new g_MultiKillMsg[7][] = +{ + "Multi-Kill! %s^n%L %d %L (%d %L)", + "Ultra-Kill!!! %s^n%L %d %L (%d %L)", + "%s IS ON A KILLING SPREE!!!^n%L %d %L (%d %L)", + "RAMPAGE!!! %s^n%L %d %L (%d hs)", + "%s IS UNSTOPPABLE!!!^n%L %d %L (%d %L)", + "%s IS A MONSTER!^n%L %d %L (%d %L)", + "%s IS GODLIKE!!!!^n%L %d %L (%d %L)" +} + +new g_Sounds[7][] = +{ + "multikill", + "ultrakill", + "killingspree", + "rampage", + "unstoppable", + "monsterkill", + "godlike" +} +new g_KillingMsg[7][] = +{ + "%s: Multi-Kill!", + "%s: Ultra-Kill!!!", + "%s IS ON A KILLING SPREE!!!", + "%s: RAMPAGE!!!", + "%s IS UNSTOPPABLE!!!", + "%s IS A MONSTER!", + "%s IS GODLIKE!!!" +} + +new g_KinfeMsg[4][] = +{ + "KNIFE_MSG_1", + "KNIFE_MSG_2", + "KNIFE_MSG_3", + "KNIFE_MSG_4" +} + +new g_LastMessages[4][] = +{ + "LAST_MSG_1", + "LAST_MSG_2", + "LAST_MSG_3", + "LAST_MSG_4" +} + +new g_HeMessages[4][] = +{ + "HE_MSG_1", + "HE_MSG_2", + "HE_MSG_3", + "HE_MSG_4" +} + +new g_SHeMessages[4][] = +{ + "SHE_MSG_1", + "SHE_MSG_2", + "SHE_MSG_3", + "SHE_MSG_4" +} + +new g_HeadShots[7][] = +{ + "HS_MSG_1", + "HS_MSG_2", + "HS_MSG_3", + "HS_MSG_4", + "HS_MSG_5", + "HS_MSG_6", + "HS_MSG_7" +} + +new g_teamsNames[4][] = +{ + "TERRORIST", + "CT", + "TERRORISTS", + "CTS" +} + +public plugin_init() +{ + register_plugin("CS Misc. Stats", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("miscstats.txt") + register_event("TextMsg", "eRestart", "a", "2&#Game_C", "2&#Game_w") + register_event("SendAudio", "eEndRound", "a", "2&%!MRAD_terwin", "2&%!MRAD_ctwin", "2&%!MRAD_rounddraw") + register_event("RoundTime", "eNewRound", "bc") + register_event("StatusValue", "setTeam", "be", "1=1") + register_event("StatusValue", "showStatus", "be", "1=2", "2!0") + register_event("StatusValue", "hideStatus", "be", "1=1", "2=0") + + new mapname[32] + get_mapname(mapname, 31) + + if (equali(mapname, "de_", 3) || equali(mapname, "csde_", 5)) + { + register_event("StatusIcon", "eGotBomb", "be", "1=1", "1=2", "2=c4") + register_event("TextMsg", "eBombPickUp", "bc", "2&#Got_bomb") + register_event("TextMsg", "eBombDrop", "bc", "2&#Game_bomb_d") + } + else if (equali(mapname, "cs_italy")) + { + register_event("23", "chickenKill", "a", "1=108", /*"12=106", */ "15=4") + register_event("23", "radioKill", "a", "1=108", /*"12=294", */ "15=2") + } + + g_center1_sync = CreateHudSyncObj() + g_announce_sync = CreateHudSyncObj() + g_status_sync = CreateHudSyncObj() + g_left_sync = CreateHudSyncObj() + g_bottom_sync = CreateHudSyncObj() + g_he_sync = CreateHudSyncObj() +} + +public plugin_cfg() +{ + new g_addStast[] = "amx_statscfg add ^"%s^" %s" + + server_cmd(g_addStast, "ST_MULTI_KILL", "MultiKill") + server_cmd(g_addStast, "ST_MULTI_KILL_SOUND", "MultiKillSound") + server_cmd(g_addStast, "ST_BOMB_PLANTING", "BombPlanting") + server_cmd(g_addStast, "ST_BOMB_DEFUSING", "BombDefusing") + server_cmd(g_addStast, "ST_BOMB_PLANTED", "BombPlanted") + server_cmd(g_addStast, "ST_BOMB_DEF_SUCC", "BombDefused") + server_cmd(g_addStast, "ST_BOMB_DEF_FAIL", "BombFailed") + server_cmd(g_addStast, "ST_BOMB_PICKUP", "BombPickUp") + server_cmd(g_addStast, "ST_BOMB_DROP", "BombDrop") + server_cmd(g_addStast, "ST_BOMB_CD_VOICE", "BombCountVoice") + server_cmd(g_addStast, "ST_BOMB_CD_DEF", "BombCountDef") + server_cmd(g_addStast, "ST_BOMB_SITE", "BombReached") + server_cmd(g_addStast, "ST_ITALY_BONUS", "ItalyBonusKill") + server_cmd(g_addStast, "ST_LAST_MAN", "LastMan") + server_cmd(g_addStast, "ST_KNIFE_KILL", "KnifeKill") + server_cmd(g_addStast, "ST_KNIFE_KILL_SOUND", "KnifeKillSound") + server_cmd(g_addStast, "ST_HE_KILL", "GrenadeKill") + server_cmd(g_addStast, "ST_HE_SUICIDE", "GrenadeSuicide") + server_cmd(g_addStast, "ST_HS_KILL", "HeadShotKill") + server_cmd(g_addStast, "ST_HS_KILL_SOUND", "HeadShotKillSound") + server_cmd(g_addStast, "ST_ROUND_CNT", "RoundCounter") + server_cmd(g_addStast, "ST_ROUND_CNT_SOUND", "RoundCounterSound") + server_cmd(g_addStast, "ST_KILL_STR", "KillingStreak") + server_cmd(g_addStast, "ST_KILL_STR_SOUND", "KillingStreakSound") + server_cmd(g_addStast, "ST_ENEMY_REM", "EnemyRemaining") + server_cmd(g_addStast, "ST_DOUBLE_KILL", "DoubleKill") + server_cmd(g_addStast, "ST_DOUBLE_KILL_SOUND", "DoubleKillSound") + server_cmd(g_addStast, "ST_PLAYER_NAME", "PlayerName") + server_cmd(g_addStast, "ST_FIRST_BLOOD_SOUND", "FirstBloodSound") +} + +public client_putinserver(id) +{ + g_multiKills[id] = {0, 0} + g_streakKills[id] = {0, 0} +} + +public client_death(killer, victim, wpnindex, hitplace, TK) +{ + if (wpnindex == CSW_C4) + return + + new headshot = (hitplace == HIT_HEAD) ? 1 : 0 + new selfkill = (killer == victim) ? 1 : 0 + + if (g_firstBlood) + { + g_firstBlood = 0 + if (FirstBloodSound) + play_sound("misc/firstblood") + } + + if ((KillingStreak || KillingStreakSound) && !TK) + { + g_streakKills[victim][1]++ + g_streakKills[victim][0] = 0 + + if (!selfkill) + { + g_streakKills[killer][0]++ + g_streakKills[killer][1] = 0 + + new a = g_streakKills[killer][0] - 3 + + if ((a > -1) && !(a % 2)) + { + new name[32] + get_user_name(killer, name, 31) + + if ((a >>= 1) > 6) + a = 6 + + if (KillingStreak) + { + set_hudmessage(0, 100, 255, 0.05, 0.50, 2, 0.02, 6.0, 0.01, 0.1, -1) + ShowSyncHudMsg(0, g_left_sync, g_KillingMsg[a], name) + } + + if (KillingStreakSound) + { + new file[32] + + format(file, 31, "misc/%s", g_Sounds[a]) + play_sound(file) + } + } + } + } + + if (MultiKill || MultiKillSound) + { + if (!selfkill && !TK && killer) + { + g_multiKills[killer][0]++ + g_multiKills[killer][1] += headshot + + new param[2] + + param[0] = killer + param[1] = g_multiKills[killer][0] + set_task(4.0 + float(param[1]), "checkKills", 0, param, 2) + } + } + + if (EnemyRemaining && is_user_connected(victim)) + { + new ppl[32], pplnum = 0, maxplayers = get_maxplayers() + new epplnum = 0 + new CsTeams:team = cs_get_user_team(victim) + new CsTeams:other_team + new CsTeams:enemy_team = (team == CS_TEAM_T) ? CS_TEAM_CT : CS_TEAM_T + + if (team == CS_TEAM_T || team == CS_TEAM_CT) + { + for (new i=1; i<=maxplayers; i++) + { + if (!is_user_connected(i)) + { + continue + } + if (i == victim) + { + continue + } + other_team = cs_get_user_team(i) + if (other_team == team && is_user_alive(i)) + { + epplnum++ + } else if (other_team == enemy_team) { + ppl[pplnum++] = i + } + } + + if (pplnum && epplnum) + { + new message[128], team_name[32] + + set_hudmessage(255, 255, 255, 0.02, 0.85, 2, 0.05, 0.1, 0.02, 3.0, -1) + + /* This is a pretty stupid thing to translate, but whatever */ + new _teamname[32] + if (team == CS_TEAM_T) + { + format(_teamname, 31, "TERRORIST%s", (epplnum == 1) ? "" : "S") + } else if (team == CS_TEAM_CT) { + format(_teamname, 31, "CT%s", (epplnum == 1) ? "" : "S") + } + + for (new a = 0; a < pplnum; ++a) + { + format(team_name, 31, "%L", ppl[a], _teamname) + format(message, 127, "%L", ppl[a], "REMAINING", epplnum, team_name) + ShowSyncHudMsg(ppl[a], g_bottom_sync, "%s", message) + } + } + } + } + + if (LastMan) + { + new cts[32], ts[32], ctsnum, tsnum + new maxplayers = get_maxplayers() + new CsTeams:team + + for (new i=1; i<=maxplayers; i++) + { + if (!is_user_connected(i) || !is_user_alive(i)) + { + continue + } + team = cs_get_user_team(i) + if (team == CS_TEAM_T) + { + ts[tsnum++] = i + } else if (team == CS_TEAM_CT) { + cts[ctsnum++] = i + } + } + + if (ctsnum == 1 && tsnum == 1) + { + new ctname[32], tname[32] + + get_user_name(cts[0], ctname, 31) + get_user_name(ts[0], tname, 31) + + set_hudmessage(0, 255, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, -1) + ShowSyncHudMsg(0, g_center1_sync, "%s vs. %s", ctname, tname) + + play_sound("misc/maytheforce") + } + else if (!g_LastAnnounce) + { + new oposite = 0, _team = 0 + + if (ctsnum == 1 && tsnum > 1) + { + g_LastAnnounce = cts[0] + oposite = tsnum + _team = 0 + } + else if (tsnum == 1 && ctsnum > 1) + { + g_LastAnnounce = ts[0] + oposite = ctsnum + _team = 1 + } + + if (g_LastAnnounce) + { + new name[32] + + get_user_name(g_LastAnnounce, name, 31) + + set_hudmessage(0, 255, 255, -1.0, 0.38, 0, 6.0, 6.0, 0.5, 0.15, -1) + ShowSyncHudMsg(0, g_center1_sync, "%s (%d HP) vs. %d %s%s: %L", name, get_user_health(g_LastAnnounce), oposite, g_teamsNames[_team], (oposite == 1) ? "" : "S", LANG_PLAYER, g_LastMessages[random_num(0, 3)]) + + if (!is_user_connecting(g_LastAnnounce)) + { + client_cmd(g_LastAnnounce, "spk misc/oneandonly") + } + } + } + } + + if (wpnindex == CSW_KNIFE && (KnifeKill || KnifeKillSound)) + { + if (KnifeKill) + { + new killer_name[32], victim_name[32] + + get_user_name(killer, killer_name, 31) + get_user_name(victim, victim_name, 31) + + set_hudmessage(255, 100, 100, -1.0, 0.25, 1, 6.0, 6.0, 0.5, 0.15, -1) + ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_KinfeMsg[random_num(0, 3)], killer_name, victim_name) + } + + if (KnifeKillSound) + play_sound("misc/humiliation") + } + + if (wpnindex == CSW_HEGRENADE && (GrenadeKill || GrenadeSuicide)) + { + new killer_name[32], victim_name[32] + + get_user_name(killer, killer_name, 31) + get_user_name(victim, victim_name, 31) + + set_hudmessage(255, 100, 100, -1.0, 0.25, 1, 6.0, 6.0, 0.5, 0.15, -1) + + if (!selfkill) + { + if (GrenadeKill) + ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_HeMessages[random_num(0, 3)], killer_name, victim_name) + } + else if (GrenadeSuicide) + ShowSyncHudMsg(0, g_he_sync, "%L", LANG_PLAYER, g_SHeMessages[random_num(0, 3)], victim_name) + } + + if (headshot && (HeadShotKill || HeadShotKillSound)) + { + if (HeadShotKill && wpnindex) + { + new killer_name[32], victim_name[32], weapon_name[32], message[256], players[32], pnum + + xmod_get_wpnname(wpnindex, weapon_name, 31) + get_user_name(killer, killer_name, 31) + get_user_name(victim, victim_name, 31) + get_players(players, pnum, "c") + + for (new i = 0; i < pnum; i++) + { + format(message, sizeof(message)-1, "%L", players[i], g_HeadShots[random_num(0, 6)]) + + replace(message, sizeof(message)-1, "$vn", victim_name) + replace(message, sizeof(message)-1, "$wn", weapon_name) + replace(message, sizeof(message)-1, "$kn", killer_name) + + set_hudmessage(100, 100, 255, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1) + ShowSyncHudMsg(players[i], g_announce_sync, "%s", message) + } + } + + if (HeadShotKillSound) + { + client_cmd(killer, "spk misc/headshot") + client_cmd(victim, "spk misc/headshot") + } + } + + if ((DoubleKill || DoubleKillSound) && !selfkill) + { + new Float:nowtime = get_gametime() + + if (g_doubleKill == nowtime && g_doubleKillId == killer) + { + if (DoubleKill) + { + new name[32] + + get_user_name(killer, name, 31) + + set_hudmessage(255, 0, 255, -1.0, 0.35, 0, 6.0, 6.0, 0.5, 0.15, -1) + ShowSyncHudMsg(0, g_center1_sync, "%L", LANG_PLAYER, "DOUBLE_KILL", name) + } + + if (DoubleKillSound) + play_sound("misc/doublekill") + } + + g_doubleKill = nowtime + g_doubleKillId = killer + } +} + +public hideStatus(id) +{ + if (PlayerName) + { + ClearSyncHud(id, g_status_sync) + } +} + +public setTeam(id) + g_friend[id] = read_data(2) + +public showStatus(id) +{ + if(!is_user_bot(id) && is_user_connected(id) && PlayerName) + { + new name[32], pid = read_data(2) + + get_user_name(pid, name, 31) + new color1 = 0, color2 = 0 + + if (get_user_team(pid) == 1) + color1 = 255 + else + color2 = 255 + + if (g_friend[id] == 1) // friend + { + new clip, ammo, wpnid = get_user_weapon(pid, clip, ammo) + new wpnname[32] + + if (wpnid) + xmod_get_wpnname(wpnid, wpnname, 31) + + set_hudmessage(color1, 50, color2, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1) + ShowSyncHudMsg(id, g_status_sync, "%s -- %d HP / %d AP / %s", name, get_user_health(pid), get_user_armor(pid), wpnname) + } else { + set_hudmessage(color1, 50, color2, -1.0, 0.60, 1, 0.01, 3.0, 0.01, 0.01, -1) + ShowSyncHudMsg(id, g_status_sync, "%s", name) + } + } +} + +public eNewRound() +{ + if (read_data(1) == floatround(get_cvar_float("mp_roundtime") * 60.0,floatround_floor)) + { + g_firstBlood = 1 + g_C4Timer = 0 + ++g_roundCount + + if (RoundCounter) + { + set_hudmessage(200, 0, 0, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1) + ShowSyncHudMsg(0, g_announce_sync, "%L", LANG_PLAYER, "PREPARE_FIGHT", g_roundCount) + } + + if (RoundCounterSound) + play_sound("misc/prepare") + + if (KillingStreak) + { + new appl[32], ppl, i + get_players(appl, ppl, "ac") + + for (new a = 0; a < ppl; ++a) + { + i = appl[a] + + if (g_streakKills[i][0] >= 2) + client_print(i, print_chat, "* %L", i, "KILLED_ROW", g_streakKills[i][0]) + else if (g_streakKills[i][1] >= 2) + client_print(i, print_chat, "* %L", i, "DIED_ROUNDS", g_streakKills[i][1]) + } + } + } +} + +public eRestart() +{ + eEndRound() + g_roundCount = 0 + g_firstBlood = 1 +} + +public eEndRound() +{ + g_C4Timer = -2 + g_LastOmg = 0.0 + remove_task(8038) + g_LastAnnounce = 0 +} + +public checkKills(param[]) +{ + new id = param[0] + new a = param[1] + + if (a == g_multiKills[id][0]) + { + a -= 3 + + if (a > -1) + { + if (a > 6) + { + a = 6 + } + + if (MultiKill) + { + new name[32] + + get_user_name(id, name, 31) + set_hudmessage(255, 0, 100, 0.05, 0.50, 2, 0.02, 6.0, 0.01, 0.1, -1) + + ShowSyncHudMsg(0, g_left_sync, g_MultiKillMsg[a], name, LANG_PLAYER, "WITH", g_multiKills[id][0], LANG_PLAYER, "KILLS", g_multiKills[id][1], LANG_PLAYER, "HS") + } + + if (MultiKillSound) + { + new sound[24] + format(sound, 23, "misc/%s", g_Sounds[a]) + play_sound(sound) + } + } + g_multiKills[id] = {0, 0} + } +} + +public chickenKill() +{ + if (ItalyBonusKill) + announceEvent(0, "KILLED_CHICKEN") +} + +public radioKill() +{ + if (ItalyBonusKill) + announceEvent(0, "BLEW_RADIO") +} + +announceEvent(id, message[]) +{ + new name[32] + + get_user_name(id, name, 31) + set_hudmessage(255, 100, 50, -1.0, 0.30, 0, 6.0, 6.0, 0.5, 0.15, -1) + ShowSyncHudMsg(0, g_announce_sync, "%L", LANG_PLAYER, message, name) +} + +public eBombPickUp(id) +{ + if (BombPickUp) + announceEvent(id, "PICKED_BOMB") +} + +public eBombDrop() +{ + if (BombDrop) + announceEvent(g_Planter, "DROPPED_BOMB") +} + +public eGotBomb(id) +{ + g_Planter = id + + if (BombReached && read_data(1) == 2 && g_LastOmg < get_gametime()) + { + g_LastOmg = get_gametime() + 15.0 + announceEvent(g_Planter, "REACHED_TARGET") + } +} + +public bombTimer() +{ + if (--g_C4Timer > 0) + { + if (BombCountVoice) + { + if (g_C4Timer == 30 || g_C4Timer == 20) + { + new temp[64] + + num_to_word(g_C4Timer, temp, 63) + format(temp, 63, "^"vox/%s seconds until explosion^"", temp) + play_sound(temp) + } + else if (g_C4Timer < 11) + { + new temp[64] + + num_to_word(g_C4Timer, temp, 63) + format(temp, 63, "^"vox/%s^"", temp) + play_sound(temp) + } + } + if (BombCountDef && g_Defusing) + client_print(g_Defusing, print_center, "%d", g_C4Timer) + } + else + remove_task(8038) +} + +public bomb_planted(planter) +{ + g_Defusing = 0 + + if (BombPlanted) + announceEvent(planter, "SET_UP_BOMB") + + g_C4Timer = get_cvar_num("mp_c4timer") + set_task(1.0, "bombTimer", 8038, "", 0, "b") +} + +public bomb_planting(planter) +{ + if (BombPlanting) + announceEvent(planter, "PLANT_BOMB") +} + +public bomb_defusing(defuser) +{ + if (BombDefusing) + announceEvent(defuser, "DEFUSING_BOMB") + + g_Defusing = defuser +} + +public bomb_defused(defuser) +{ + if (BombDefused) + announceEvent(defuser, "DEFUSED_BOMB") +} + +public bomb_explode(planter, defuser) +{ + if (BombFailed && defuser) + announceEvent(defuser, "FAILED_DEFU") +} + +public play_sound(sound[]) +{ + new players[32], pnum + get_players(players, pnum, "c") + new i + + for (i = 0; i < pnum; i++) + { + if (is_user_connecting(players[i])) + continue + + client_cmd(players[i], "spk %s", sound) + } +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/multilingual.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/multilingual.sma new file mode 100644 index 0000000..7ecf4c2 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/multilingual.sma @@ -0,0 +1,230 @@ +/* AMX Mod X script. +* Multilingual System Plugin +* +* by the AMX Mod X Development Team +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> +#include <amxmisc> + +#define DISPLAY_MSG // Comment to disable message on join + +new g_menuLang[33][2] +new g_serverLang +new g_langNum +new g_coloredMenus + +public plugin_init() +{ + register_plugin("Multi-Lingual System", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("multilingual.txt") + register_dictionary("common.txt") + register_dictionary("languages.txt") + + register_cvar("amx_language", "en", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY) + //Set to zero to disable client effects + register_cvar("amx_client_languages", "1") + register_concmd("amx_setlang", "cmdLang", ADMIN_CFG, "<language>") + register_clcmd("amx_langmenu", "cmdLangMenu", ADMIN_ALL) + register_menu("Language Menu", 1023, "actionMenu") + + new lang[3] + + if (vaultdata_exists("server_language")) + { + get_vaultdata("server_language", lang, 2) + } else { + copy(lang, 2, "en") + set_vaultdata("server_language", lang) + } + + set_cvar_string("amx_language", lang) + + g_langNum = get_langsnum() + g_serverLang = get_lang_id(lang) + g_coloredMenus = colored_menus() +} + +#if defined DISPLAY_MSG +public client_putinserver(id) +{ + if (get_cvar_num("amx_client_languages") && !is_user_bot(id)) + set_task(10.0, "dispInfo", id) +} + +public client_disconnect(id) +{ + remove_task(id) +} + +public dispInfo(id) +{ + if (get_cvar_num("amx_client_languages")) + client_print(id, print_chat, "%L", id, "TYPE_LANGMENU") +} +#endif + +public cmdLang(id, level, cid) +{ + if (!cmd_access(id, level, cid, 2)) + return PLUGIN_HANDLED + + new arg[3] + read_argv(1, arg, 2) + + if (!lang_exists(arg)) + { + console_print(id, "[AMXX] %L", id, "LANG_NOT_EXISTS") + return PLUGIN_HANDLED + } + + set_vaultdata("server_language", arg) + set_cvar_string("amx_language", arg) + g_serverLang = get_lang_id(arg) + + return PLUGIN_HANDLED +} + +public cmdLangMenu(id, level, cid) +{ + new buffer[3] + + if (!get_cvar_num("amx_client_languages")) + { + client_print(id, print_console, "[AMXX] %L", LANG_SERVER, "LANG_MENU_DISABLED") + return PLUGIN_HANDLED + } + + get_user_info(id, "lang", buffer, 2) + g_menuLang[id][0] = get_lang_id(buffer) + g_menuLang[id][1] = g_serverLang + + showMenu(id) + + return PLUGIN_HANDLED +} + +showMenu(id) +{ + if (!get_cvar_num("amx_client_languages")) + return PLUGIN_HANDLED + + new menuBody[512], pLang[3] + + get_lang(g_menuLang[id][0], pLang) + + new len = format(menuBody, 511, (g_coloredMenus ? "\y%L\w^n^n" : "%L^n^n"), id, "LANG_MENU") + + len += format(menuBody[len], 511-len, (g_coloredMenus ? "1. %L\R\r%L\w^n" : "1. %L %L^n"), id, "PERSO_LANG", pLang, "LANG_NAME") + + if (access(id, ADMIN_CFG)) + { + new sLang[3] + + get_lang(g_menuLang[id][1], sLang) + len += format(menuBody[len], 511-len, (g_coloredMenus ? "2. %L\R\r%L\w^n^n" : "2. %L %L^n^n"), id, "SERVER_LANG", sLang, "LANG_NAME") + len += format(menuBody[len], 511-len, "3. %L", id, "SAVE_LANG") + } else { + len += format(menuBody[len], 511-len, "^n2. %L", id, "SAVE_LANG") + } + + format(menuBody[len], 511-len, "^n^n0. %L", id, "EXIT") + + show_menu(id, MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3, menuBody, -1, "Language Menu") + + return 1 +} + +public actionMenu(id, key) +{ + if (!get_cvar_num("amx_client_languages")) + return 0 + + new isAdmin = access(id, ADMIN_CFG) + + if (key == 0) + { + if (g_menuLang[id][0] < (g_langNum-1)) + g_menuLang[id][0]++ + else + g_menuLang[id][0] = 0 + + showMenu(id) + } + + if (isAdmin && (key == 1)) + { + if (g_menuLang[id][1] < (g_langNum - 1)) + g_menuLang[id][1]++ + else + g_menuLang[id][1] = 0 + + showMenu(id) + } + + new pLang[3], pLang_old[3], sLang[3], sLang_old[3], lName[64] + + get_lang(g_menuLang[id][0], pLang) + get_lang(g_menuLang[id][1], sLang) + get_user_info(id, "lang", pLang_old, 2) + get_lang(g_serverLang, sLang_old) + + if (isAdmin && (key == 2) && !equali(sLang, sLang_old)) + { + set_vaultdata("server_language", sLang) + set_cvar_string("amx_language", sLang) + g_serverLang = g_menuLang[id][1] + format(lName, 63, "%L", sLang, "LANG_NAME") + client_print(id, print_chat, "%L", pLang, "SET_LANG_SERVER", lName) + } + + if (!equali(pLang, pLang_old) && ((isAdmin && (key == 2)) || (!isAdmin && (key == 1)))) + { + client_cmd(id, "setinfo ^"lang^" ^"%s^"", pLang) + format(lName, 63, "%L", pLang, "LANG_NAME") + client_print(id, print_chat, "%L", pLang, "SET_LANG_USER", lName) + } + + return 0 +} + +get_lang_id(lang[]) +{ + new tLang[3] + + for (new i = 0; i < g_langNum; i++) + { + get_lang(i, tLang) + if (equali(tLang, lang)) + return i + } + + return 0 +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/nextmap.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/nextmap.sma new file mode 100644 index 0000000..5f9c7f5 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/nextmap.sma @@ -0,0 +1,238 @@ +/* AMX Mod X +* NextMap Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> + +// WARNING: If you comment this line make sure +// that in your mapcycle file maps don't repeat. +// However the same map in a row is still valid. +#define OBEY_MAPCYCLE + +new g_nextMap[32] +new g_mapCycle[32] +new g_pos + +public plugin_init() +{ + register_plugin("NextMap", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("nextmap.txt") + register_event("30", "changeMap", "a") + register_clcmd("say nextmap", "sayNextMap", 0, "- displays nextmap") + register_clcmd("say currentmap", "sayCurrentMap", 0, "- display current map") + register_clcmd("say ff", "sayFFStatus", 0, "- display friendly fire status") + register_cvar("amx_nextmap", "", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY) + + new szString[32], szString2[32], szString3[8] + + get_localinfo("lastmapcycle", szString, 31) + parse(szString, szString2, 31, szString3, 7) + g_pos = str_to_num(szString3) + get_cvar_string("mapcyclefile", g_mapCycle, 31) + + if (!equal(g_mapCycle, szString2)) + g_pos = 0 // mapcyclefile has been changed - go from first + + readMapCycle(g_mapCycle, g_nextMap, 31) + set_cvar_string("amx_nextmap", g_nextMap) + format(szString3, 31, "%s %d", g_mapCycle, g_pos) // save lastmapcycle settings + set_localinfo("lastmapcycle", szString3) +} + +getNextMapName(szArg[], iMax) +{ + new len = get_cvar_string("amx_nextmap", szArg, iMax) + + if (ValidMap(szArg)) return len + len = copy(szArg, iMax, g_nextMap) + set_cvar_string("amx_nextmap", g_nextMap) + + return len +} + +public sayNextMap() +{ + new name[32] + + getNextMapName(name, 31) + client_print(0, print_chat, "%L %s", LANG_PLAYER, "NEXT_MAP", name) +} + +public sayCurrentMap() +{ + new mapname[32] + + get_mapname(mapname, 31) + client_print(0, print_chat, "%L: %s", LANG_PLAYER, "PLAYED_MAP", mapname) +} + +public sayFFStatus() +{ + client_print(0, print_chat, "%L: %L", LANG_PLAYER, "FRIEND_FIRE", LANG_PLAYER, get_cvar_num("mp_friendlyfire") ? "ON" : "OFF") +} + +public delayedChange(param[]) +{ + set_cvar_float("mp_chattime", get_cvar_float("mp_chattime") - 2.0) + server_cmd("changelevel %s", param) +} + +public changeMap() +{ + new string[32] + new Float:chattime = get_cvar_float("mp_chattime") + + set_cvar_float("mp_chattime", chattime + 2.0) // make sure mp_chattime is long + new len = getNextMapName(string, 31) + 1 + set_task(chattime, "delayedChange", 0, string, len) // change with 1.5 sec. delay +} + +new g_warning[] = "WARNING: Couldn't find a valid map or the file doesn't exist (file ^"%s^")" + +stock bool:ValidMap(mapname[]) +{ + if ( is_map_valid(mapname) ) + { + return true; + } + // If the is_map_valid check failed, check the end of the string + new len = strlen(mapname) - 4; + + // The mapname was too short to possibly house the .bsp extension + if (len < 0) + { + return false; + } + if ( equali(mapname[len], ".bsp") ) + { + // If the ending was .bsp, then cut it off. + // the string is byref'ed, so this copies back to the loaded text. + mapname[len] = '^0'; + + // recheck + if ( is_map_valid(mapname) ) + { + return true; + } + } + + return false; +} + +#if defined OBEY_MAPCYCLE +readMapCycle(szFileName[], szNext[], iNext) +{ + new b, i = 0, iMaps = 0 + new szBuffer[32], szFirst[32] + + if (file_exists(szFileName)) + { + while (read_file(szFileName, i++, szBuffer, 31, b)) + { + if (!isalnum(szBuffer[0]) || !ValidMap(szBuffer)) continue + + if (!iMaps) + copy(szFirst, 31, szBuffer) + + if (++iMaps > g_pos) + { + copy(szNext, iNext, szBuffer) + g_pos = iMaps + return + } + } + } + + if (!iMaps) + { + log_amx(g_warning, szFileName) + get_mapname(szFirst, 31) + } + + copy(szNext, iNext, szFirst) + g_pos = 1 +} + +#else + +readMapCycle(szFileName[], szNext[], iNext) +{ + new b, i = 0, iMaps = 0 + new szBuffer[32], szFirst[32], szCurrent[32] + + get_mapname(szCurrent, 31) + + new a = g_pos + + if (file_exists(szFileName)) + { + while (read_file(szFileName, i++, szBuffer, 31, b)) + { + if (!isalnum(szBuffer[0]) || !ValidMap(szBuffer)) continue + + if (!iMaps) + { + iMaps = 1 + copy(szFirst, 31, szBuffer) + } + + if (iMaps == 1) + { + if (equali(szCurrent, szBuffer)) + { + if (a-- == 0) + iMaps = 2 + } + } else { + if (equali(szCurrent, szBuffer)) + ++g_pos + else + g_pos = 0 + + copy(szNext, iNext, szBuffer) + return + } + } + } + + if (!iMaps) + { + log_amx(g_warning, szFileName) + copy(szNext, iNext, szCurrent) + } + else + copy(szNext, iNext, szFirst) + + g_pos = 0 +} +#endif diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/pausecfg.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/pausecfg.sma new file mode 100644 index 0000000..9892d11 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/pausecfg.sma @@ -0,0 +1,551 @@ +/* AMX Mod X +* Pause Plugins Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> +#include <amxmisc> + +// Uncomment if you want to have two new commands +// amx_off - pause plugins not marked as unpauseable +// amx_on - enable plugins not marked as unpauseable +#define DIRECT_ONOFF + +#define MAX_SYSTEM 32 + +new g_menuPos[33] +new g_fileToSave[64] +new g_coloredMenus +new g_Modified +new g_addCmd[] = "amx_pausecfg add ^"%s^"" +new g_system[MAX_SYSTEM] +new g_systemNum + +public plugin_init() +{ + register_plugin("Pause Plugins", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("pausecfg.txt") + register_dictionary("common.txt") + register_dictionary("admincmd.txt") + + register_concmd("amx_pausecfg", "cmdPlugin", ADMIN_CFG, "- list commands for pause/unpause management") + register_clcmd("amx_pausecfgmenu", "cmdMenu", ADMIN_CFG, "- pause/unpause plugins with menu") +#if defined DIRECT_ONOFF + register_concmd("amx_off", "cmdOFF", ADMIN_CFG, "- pauses some plugins") + register_concmd("amx_on", "cmdON", ADMIN_CFG, "- unpauses some plugins") +#endif + register_menucmd(register_menuid("Pause/Unpause Plugins"), 1023, "actionMenu") + + g_coloredMenus = colored_menus() + get_configsdir(g_fileToSave, 63); + format(g_fileToSave, 63, "%s/pausecfg.ini", g_fileToSave); + + return PLUGIN_CONTINUE +} + +#if defined DIRECT_ONOFF +public cmdOFF(id, level, cid) +{ + if (cmd_access(id, level, cid, 1)) + pausePlugins(id) + + return PLUGIN_HANDLED +} + +public cmdON(id, level, cid) +{ + if (cmd_access(id, level, cid, 1)) + unpausePlugins(id) + + return PLUGIN_HANDLED +} +#endif + +public plugin_cfg() +{ + loadSettings(g_fileToSave) + + // Put here titles of plugins which you don't want to pause + server_cmd(g_addCmd, "Admin Base") + server_cmd(g_addCmd, "Admin Base (SQL)") + server_cmd(g_addCmd, "Pause Plugins") + server_cmd(g_addCmd, "TimeLeft") + server_cmd(g_addCmd, "NextMap") + server_cmd(g_addCmd, "Slots Reservation") +} + +public actionMenu(id, key) +{ + switch (key) + { + case 6: + { + if (file_exists(g_fileToSave)) + { + delete_file(g_fileToSave) + client_print(id, print_chat, "* %L", id, "PAUSE_CONF_CLEARED") + } + else + client_print(id, print_chat, "* %L", id, "PAUSE_ALR_CLEARED") + + displayMenu(id, g_menuPos[id]) + } + case 7: + { + if (saveSettings(g_fileToSave)) + { + g_Modified = 0 + client_print(id, print_chat, "* %L", id, "PAUSE_CONF_SAVED") + } + else + client_print(id, print_chat, "* %L", id, "PAUSE_SAVE_FAILED") + + displayMenu(id, g_menuPos[id]) + } + case 8: displayMenu(id, ++g_menuPos[id]) + case 9: displayMenu(id, --g_menuPos[id]) + default: + { + new option = g_menuPos[id] * 6 + key + new file[32], status[2] + + get_plugin(option, file, 31, status, 0, status, 0, status, 0, status, 1) + + switch (status[0]) + { + // "running" + case 'r': pause("ac", file) + + // "debug" + case 'd': pause("ac", file) + + // "paused" + case 'p': + { + g_Modified = 1 + unpause("ac", file) + } + + // "stopped" + case 's': + { + client_print(id, print_chat, "%L", id, "CANT_UNPAUSE_PLUGIN", file); + } + } + + displayMenu(id, g_menuPos[id]) + } + } + + return PLUGIN_HANDLED +} + +getStatus(id, code, &statusCode, lStatus[], lLen) +{ + switch (code) + { + // "running" + case 'r': + { + statusCode = 'O' + format(lStatus, lLen, "%L", id, "ON") + } + + // "debug" + case 'd': + { + statusCode = 'O' + format(lStatus, lLen, "%L", id, "ON") + } + + // "stopped" + case 's': + { + statusCode = 'S' + format(lStatus, lLen, "%L", id, "STOPPED") + } + + // "paused" + case 'p': + { + statusCode = 'O' + format(lStatus, lLen, "%L", id, "OFF") + } + + // "bad load" + case 'b': + { + statusCode = 'E' + format(lStatus, lLen, "%L", id, "ERROR") + } + default: + { + statusCode = 'L' + format(lStatus, lLen, "%L", id, "LOCKED") + } + } +} + +isSystem(id) +{ + for (new a = 0; a < g_systemNum; ++a) + if (g_system[a] == id) + return 1 + return 0 +} + +displayMenu(id, pos) +{ + if (pos < 0) return + + new filename[32], title[32], status[8], statusCode + new datanum = get_pluginsnum() + new menu_body[512], start = pos * 6, k = 0 + + if (start >= datanum) + start = pos = g_menuPos[id] = 0 + + new len = format(menu_body, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "PAUSE_UNPAUSE", pos + 1, ((datanum / 6) + ((datanum % 6) ? 1 : 0))) + new end = start + 6, keys = MENU_KEY_0|MENU_KEY_8|MENU_KEY_7 + + if (end > datanum) + end = datanum + + for (new a = start; a < end; ++a) + { + get_plugin(a, filename, 31, title, 31, status, 0, status, 0, status, 1) + getStatus(id, status[0], statusCode, status, 7) + + if (isSystem(a) || (statusCode != 'O' && statusCode != 'S')) + { + if (g_coloredMenus) + { + len += format(menu_body[len], 511-len, "\d%d. %s\R%s^n\w", ++k, title, status) + } else { + ++k + len += format(menu_body[len], 511-len, "#. %s %s^n", title, status) + } + } else { + keys |= (1<<k) + len += format(menu_body[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s %s^n", ++k, title, status) + } + } + + len += format(menu_body[len], 511-len, "^n7. %L^n", id, "CLEAR_PAUSED") + len += format(menu_body[len], 511-len, g_coloredMenus ? "8. %L \y\R%s^n\w" : "8. %L %s^n", id, "SAVE_PAUSED", g_Modified ? "*" : "") + + if (end != datanum) + { + format(menu_body[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") + keys |= MENU_KEY_9 + } + else + format(menu_body[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") + + show_menu(id, keys, menu_body, -1, "Pause/Unpause Plugins") +} + +public cmdMenu(id, level, cid) +{ + if (cmd_access(id, level, cid, 1)) + displayMenu(id, g_menuPos[id] = 0) + + return PLUGIN_HANDLED +} + +pausePlugins(id) +{ + new filename[32], title[32], status[2] + new count = 0, imax = get_pluginsnum() + + for (new a = 0; a < imax; ++a) + { + get_plugin(a, filename, 31, title, 31, status, 0, status, 0, status, 1) + + if (!isSystem(a) && status[0] == 'r' && pause("ac", filename)) + { + //console_print(id, "Pausing %s (file ^"%s^")", title, filename) + ++count + } + } + + console_print(id, "%L", id, (count == 1) ? "PAUSED_PLUGIN" : "PAUSED_PLUGINS", count) +} + +unpausePlugins(id) +{ + new filename[32], title[32], status[2] + new count = 0, imax = get_pluginsnum() + + for (new a = 0; a < imax; ++a) + { + get_plugin(a, filename, 31, title, 31, status, 0, status, 0, status, 1) + + if (!isSystem(a) && status[0] == 'p' && unpause("ac", filename)) + { + //console_print(id, "Unpausing %s (file ^"%s^")", title, filename) + ++count + } + } + + console_print(id, "%L", id, (count == 1) ? "UNPAUSED_PLUGIN" : "UNPAUSED_PLUGINS", count) +} + +findPluginByFile(arg[32], &len) +{ + new name[32], title[32], status[2] + new inum = get_pluginsnum() + + for (new a = 0; a < inum; ++a) + { + get_plugin(a, name, 31, title, 31, status, 0, status, 0, status, 1) + + if (equali(name, arg, len) && ( + status[0] == 'r' || /*running*/ + status[0] == 'p' || /*paused*/ + status[0] == 's' || /*stopped*/ + status[0] == 'd' )) /*debug*/ + { + len = copy(arg, 31, name) + return a + } + } + + return -1 +} + +findPluginByTitle(name[], file[], len) +{ + new title[32], status[2] + new inum = get_pluginsnum() + + for (new a = 0; a < inum; ++a) + { + get_plugin(a, file, len, title, 31, status, 0, status, 0, status, 1) + + if (equali(title, name)) + return a + } + + return -1 +} + +public cmdPlugin(id, level, cid) +{ + if (!cmd_access(id, level, cid, 1)) + return PLUGIN_HANDLED + + new cmds[32] + read_argv(1, cmds, 31) + + if (equal(cmds, "add") && read_argc() > 2) + { + read_argv(2, cmds, 31) + new file[2] + + if ((g_system[g_systemNum] = findPluginByTitle(cmds, file, 0)) != -1) + { + if (g_systemNum < MAX_SYSTEM) + g_systemNum++ + else + console_print(id, "%L", id, "CANT_MARK_MORE") + } + } + else if (equal(cmds, "off")) + { + pausePlugins(id) + } + else if (equal(cmds, "on")) + { + unpausePlugins(id) + } + else if (equal(cmds, "save")) + { + if (saveSettings(g_fileToSave)) + { + g_Modified = 0 + console_print(id, "%L", id, "PAUSE_CONF_SAVED") + } + else + console_print(id, "%L", id, "PAUSE_SAVE_FAILED") + } + else if (equal(cmds, "clear")) + { + if (file_exists(g_fileToSave)) + { + delete_file(g_fileToSave) + console_print(id, "%L", id, "PAUSE_CONF_CLEARED") + } + else + console_print(id, "%L", id, "PAUSE_ALR_CLEARED") + } + else if (equal(cmds, "pause")) + { + new arg[32], a, len = read_argv(2, arg, 31) + + if (len && ((a = findPluginByFile(arg, len)) != -1) && !isSystem(a) && pause("ac", arg)) + console_print(id, "%L %L", id, "PAUSE_PLUGIN_MATCH", arg, id, "PAUSED") + else + console_print(id, "%L", id, "PAUSE_COULDNT_FIND", arg) + } + else if (equal(cmds, "enable")) + { + new arg[32], a, len = read_argv(2, arg, 31) + + if (len && (a = findPluginByFile(arg, len)) != -1 && !isSystem(a)) + { + if (unpause("ac", arg)) + { + console_print(id, "%L %L", id, "PAUSE_PLUGIN_MATCH", arg, id, "UNPAUSED") + } + else + { + console_print(id, "%L", id, "CANT_UNPAUSE_PLUGIN", arg) + } + } + else + { + console_print(id, "%L", id, "PAUSE_COULDNT_FIND", arg) + } + } + else if (equal(cmds, "stop")) + { + new arg[32], a, len = read_argv(2, arg, 31) + + if (len && (a = findPluginByFile(arg, len)) != -1 && !isSystem(a) && pause("dc", arg)) + { + g_Modified = 1 + console_print(id, "%L %L", id, "PAUSE_PLUGIN_MATCH", arg, id, "STOPPED") + } + else + console_print(id, "%L", id, "PAUSE_COULDNT_FIND", arg) + } + else if (equal(cmds, "list")) + { + new lName[32], lVersion[32], lAuthor[32], lFile[32], lStatus[32] + + format(lName, 31, "%L", id, "NAME") + format(lVersion, 31, "%L", id, "VERSION") + format(lAuthor, 31, "%L", id, "AUTHOR") + format(lFile, 31, "%L", id, "FILE") + format(lStatus, 31, "%L", id, "STATUS") + + new arg1[8], running = 0 + new start = read_argv(2, arg1, 7) ? str_to_num(arg1) : 1 + + if (--start < 0) + start = 0 + + new plgnum = get_pluginsnum() + + if (start >= plgnum) + start = plgnum - 1 + + console_print(id, "^n----- %L -----", id, "PAUSE_LOADED") + console_print(id, " %-18.17s %-8.7s %-17.16s %-16.15s %-9.8s", lName, lVersion, lAuthor, lFile, lStatus) + + new plugin[32], title[32], version[16], author[32], status[16] + new end = start + 10 + + if (end > plgnum) end = plgnum + + for (new a = start; a < end; ++a) + { + get_plugin(a, plugin, 31, title, 31, version, 15, author, 31, status, 15) + if (status[0] == 'r') ++running + console_print(id, " [%3d] %-18.17s %-8.7s %-17.16s %-16.15s %-9.8s", a + 1, title, version, author, plugin, status) + } + + console_print(id, "----- %L -----", id, "PAUSE_ENTRIES", start + 1, end, plgnum, running) + + if (end < plgnum) + console_print(id, "----- %L -----", id, "PAUSE_USE_MORE", end + 1) + else + console_print(id, "----- %L -----", id, "PAUSE_USE_BEGIN") + } else { + console_print(id, "%L", id, "PAUSE_USAGE") + console_print(id, "%L:", id, "PAUSE_COMMANDS") + console_print(id, "%L", id, "COM_PAUSE_OFF") + console_print(id, "%L", id, "COM_PAUSE_ON") + console_print(id, "%L", id, "COM_PAUSE_STOP") + console_print(id, "%L", id, "COM_PAUSE_PAUSE") + console_print(id, "%L", id, "COM_PAUSE_ENABLE") + console_print(id, "%L", id, "COM_PAUSE_SAVE_PAUSED") + console_print(id, "%L", id, "COM_PAUSE_CLEAR_PAUSED") + console_print(id, "%L", id, "COM_PAUSE_LIST") + console_print(id, "%L", id, "COM_PAUSE_ADD") + } + + return PLUGIN_HANDLED +} + +saveSettings(filename[]) +{ + if (file_exists(filename)) + delete_file(filename) + + new text[256], file[32], title[32], status[2] + new inum = get_pluginsnum() + + if (!write_file(filename, ";Generated by Pause Plugins Plugin. Do not modify!^n;Title Filename")) + return 0 + + for (new a = 0; a < inum; ++a) + { + get_plugin(a, file, 31, title, 31, status, 0, status, 0, status, 1) + + // "paused" + if (status[0] == 'p') + { + format(text, 255, "^"%s^" ;%s", title, file) + write_file(filename, text) + } + } + + return 1 +} + +loadSettings(filename[]) +{ + if (!file_exists(filename)) + return 0 + + new name[256], file[32], i, pos = 0 + + while (read_file(filename, pos++, name, 255, i)) + { + if (name[0] != ';' && parse(name, name, 31) && (i = findPluginByTitle(name, file, 31) != -1)) + pause("ac", file) + } + + return 1 +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/plmenu.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/plmenu.sma new file mode 100644 index 0000000..f706051 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/plmenu.sma @@ -0,0 +1,931 @@ +/* AMX Mod X +* Players Menu Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> +#include <amxmisc> + +/** skip autoloading since it's optional */ +#define AMXMODX_NOAUTOLOAD +#include <cstrike> + +new g_menuPosition[33] +new g_menuPlayers[33][32] +new g_menuPlayersNum[33] +new g_menuOption[33] +new g_menuSettings[33] + +new g_menuSelect[33][64] +new g_menuSelectNum[33] + +#define MAX_CLCMDS 24 + +new g_clcmdName[MAX_CLCMDS][32] +new g_clcmdCmd[MAX_CLCMDS][64] +new g_clcmdMisc[MAX_CLCMDS][2] +new g_clcmdNum + +new g_coloredMenus +new g_cstrike = 0 + +new Array:g_bantimes; +new Array:g_slapsettings; + +new g_CSTeamNames[3][] = { + "TERRORIST", + "CT", + "SPECTATOR" +} +new g_CSTeamNumbers[3][] = { + "1", + "2", + "6" +} +new g_CSTeamiNumbers[3] = { + 1, + 2, + 6 +} + + +public plugin_natives() +{ + set_module_filter("module_filter") + set_native_filter("native_filter") +} + +public plugin_init() +{ + register_plugin("Players Menu", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("common.txt") + register_dictionary("admincmd.txt") + register_dictionary("plmenu.txt") + + register_clcmd("amx_kickmenu", "cmdKickMenu", ADMIN_KICK, "- displays kick menu") + register_clcmd("amx_banmenu", "cmdBanMenu", ADMIN_BAN, "- displays ban menu") + register_clcmd("amx_slapmenu", "cmdSlapMenu", ADMIN_SLAY, "- displays slap/slay menu") + register_clcmd("amx_teammenu", "cmdTeamMenu", ADMIN_LEVEL_A, "- displays team menu") + register_clcmd("amx_clcmdmenu", "cmdClcmdMenu", ADMIN_LEVEL_A, "- displays client cmds menu") + + register_menucmd(register_menuid("Ban Menu"), 1023, "actionBanMenu") + register_menucmd(register_menuid("Kick Menu"), 1023, "actionKickMenu") + register_menucmd(register_menuid("Slap/Slay Menu"), 1023, "actionSlapMenu") + register_menucmd(register_menuid("Team Menu"), 1023, "actionTeamMenu") + register_menucmd(register_menuid("Client Cmds Menu"), 1023, "actionClcmdMenu") + + + g_bantimes = ArrayCreate(); + // Load up the old default values + ArrayPushCell(g_bantimes, 0); + ArrayPushCell(g_bantimes, 5); + ArrayPushCell(g_bantimes, 10); + ArrayPushCell(g_bantimes, 15); + ArrayPushCell(g_bantimes, 30); + ArrayPushCell(g_bantimes, 45); + ArrayPushCell(g_bantimes, 60); + + + g_slapsettings = ArrayCreate(); + // Old default values + ArrayPushCell(g_slapsettings, 0); // First option is ignored - it is slay + ArrayPushCell(g_slapsettings, 0); // slap 0 damage + ArrayPushCell(g_slapsettings, 1); + ArrayPushCell(g_slapsettings, 5); + + + register_srvcmd("amx_plmenu_bantimes", "plmenu_setbantimes"); + register_srvcmd("amx_plmenu_slapdmg", "plmenu_setslapdmg"); + + g_coloredMenus = colored_menus() + + new clcmds_ini_file[64] + get_configsdir(clcmds_ini_file, 63) + format(clcmds_ini_file, 63, "%s/clcmds.ini", clcmds_ini_file) + load_settings(clcmds_ini_file) + + if (module_exists("cstrike")) + g_cstrike = 1 +} +public plmenu_setbantimes() +{ + new buff[32]; + new args = read_argc(); + + if (args <= 1) + { + server_print("usage: amx_plmenu_bantimes <time1> [time2] [time3] ..."); + server_print(" use time of 0 for permanent."); + + return; + } + + ArrayClear(g_bantimes); + + for (new i = 1; i < args; i++) + { + read_argv(i, buff, charsmax(buff)); + + ArrayPushCell(g_bantimes, str_to_num(buff)); + + } + +} +public plmenu_setslapdmg() +{ + new buff[32]; + new args = read_argc(); + + if (args <= 1) + { + server_print("usage: amx_plmenu_slapdmg <dmg1> [dmg2] [dmg3] ..."); + server_print(" slay is automatically set for the first value."); + + return; + } + + ArrayClear(g_slapsettings); + + ArrayPushCell(g_slapsettings, 0); // compensate for slay + + for (new i = 1; i < args; i++) + { + read_argv(i, buff, charsmax(buff)); + + ArrayPushCell(g_slapsettings, str_to_num(buff)); + + } + +} +public module_filter(const module[]) +{ + if (equali(module, "cstrike")) + return PLUGIN_HANDLED + + return PLUGIN_CONTINUE +} + +public native_filter(const name[], index, trap) +{ + if (!trap) + return PLUGIN_HANDLED + + return PLUGIN_CONTINUE +} + +/* Ban menu */ + +public actionBanMenu(id, key) +{ + switch (key) + { + case 7: + { + /* BEGIN OF CHANGES BY MISTAGEE ADDED A FEW MORE OPTIONS */ + + ++g_menuOption[id] + g_menuOption[id] %= ArraySize(g_bantimes); + + g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]); + + displayBanMenu(id, g_menuPosition[id]) + } + case 8: displayBanMenu(id, ++g_menuPosition[id]) + case 9: displayBanMenu(id, --g_menuPosition[id]) + default: + { + new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key] + new name[32], name2[32], authid[32], authid2[32] + + get_user_name(player, name2, 31) + get_user_authid(id, authid, 31) + get_user_authid(player, authid2, 31) + get_user_name(id, name, 31) + + new userid2 = get_user_userid(player) + + log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%d^")", name, get_user_userid(id), authid, name2, userid2, authid2, g_menuSettings[id]) + + if (g_menuSettings[id]==0) // permanent + { + new maxpl = get_maxplayers(); + for (new i = 1; i <= maxpl; i++) + { + show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "PERM"); + } + } + else + { + new tempTime[32]; + formatex(tempTime,sizeof(tempTime)-1,"%d",g_menuSettings[id]); + new maxpl = get_maxplayers(); + for (new i = 1; i <= maxpl; i++) + { + show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "FOR_MIN", tempTime); + } + } + /* ---------- check for Steam ID added by MistaGee -------------------- + IF AUTHID == 4294967295 OR VALVE_ID_LAN OR HLTV, BAN PER IP TO NOT BAN EVERYONE */ + + if (equal("4294967295", authid2) + || equal("HLTV", authid2) + || equal("STEAM_ID_LAN", authid2) + || equali("VALVE_ID_LAN", authid2)) + { + /* END OF MODIFICATIONS BY MISTAGEE */ + new ipa[32] + get_user_ip(player, ipa, 31, 1) + + server_cmd("addip %d %s;writeip", g_menuSettings[id], ipa) + } + else + { + server_cmd("banid %d #%d kick;writeid", g_menuSettings[id], userid2) + } + + server_exec() + + displayBanMenu(id, g_menuPosition[id]) + } + } + + return PLUGIN_HANDLED +} + +displayBanMenu(id, pos) +{ + if (pos < 0) + return + + get_players(g_menuPlayers[id], g_menuPlayersNum[id]) + + new menuBody[512] + new b = 0 + new i + new name[32] + new start = pos * 7 + + if (start >= g_menuPlayersNum[id]) + start = pos = g_menuPosition[id] = 0 + + new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "BAN_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0))) + new end = start + 7 + new keys = MENU_KEY_0|MENU_KEY_8 + + if (end > g_menuPlayersNum[id]) + end = g_menuPlayersNum[id] + + for (new a = start; a < end; ++a) + { + i = g_menuPlayers[id][a] + get_user_name(i, name, 31) + + if (is_user_bot(i) || (access(i, ADMIN_IMMUNITY) && i != id)) + { + ++b + + if (g_coloredMenus) + len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name) + else + len += format(menuBody[len], 511-len, "#. %s^n", name) + } else { + keys |= (1<<b) + + if (is_user_admin(i)) + len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name) + else + len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name) + } + } + + if (g_menuSettings[id]) + len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_FOR_MIN", g_menuSettings[id]) + else + len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_PERM") + + if (end != g_menuPlayersNum[id]) + { + format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") + keys |= MENU_KEY_9 + } + else + format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") + + show_menu(id, keys, menuBody, -1, "Ban Menu") +} + +public cmdBanMenu(id, level, cid) +{ + if (!cmd_access(id, level, cid, 1)) + return PLUGIN_HANDLED + + g_menuOption[id] = 0 + + if (ArraySize(g_bantimes) > 0) + { + g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]); + } + else + { + // should never happen, but failsafe + g_menuSettings[id] = 0 + } + displayBanMenu(id, g_menuPosition[id] = 0) + + return PLUGIN_HANDLED +} + +/* Slap/Slay */ + +public actionSlapMenu(id, key) +{ + switch (key) + { + case 7: + { + ++g_menuOption[id] + + g_menuOption[id] %= ArraySize(g_slapsettings); + + g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]); + + displaySlapMenu(id, g_menuPosition[id]); + } + case 8: displaySlapMenu(id, ++g_menuPosition[id]) + case 9: displaySlapMenu(id, --g_menuPosition[id]) + default: + { + new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key] + new name2[32] + + get_user_name(player, name2, 31) + + if (!is_user_alive(player)) + { + client_print(id, print_chat, "%L", id, "CANT_PERF_DEAD", name2) + displaySlapMenu(id, g_menuPosition[id]) + return PLUGIN_HANDLED + } + + new authid[32], authid2[32], name[32] + + get_user_authid(id, authid, 31) + get_user_authid(player, authid2, 31) + get_user_name(id, name, 31) + + if (g_menuOption[id]) + { + log_amx("Cmd: ^"%s<%d><%s><>^" slap with %d damage ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, g_menuSettings[id], name2, get_user_userid(player), authid2) + + show_activity_key("ADMIN_SLAP_1", "ADMIN_SLAP_2", name, name2, g_menuSettings[id]); + } else { + log_amx("Cmd: ^"%s<%d><%s><>^" slay ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2) + + show_activity_key("ADMIN_SLAY_1", "ADMIN_SLAY_2", name, name2); + } + + if (g_menuOption[id]) + user_slap(player, (get_user_health(player) > g_menuSettings[id]) ? g_menuSettings[id] : 0) + else + user_kill(player) + + displaySlapMenu(id, g_menuPosition[id]) + } + } + + return PLUGIN_HANDLED +} + +displaySlapMenu(id, pos) +{ + if (pos < 0) + return + + get_players(g_menuPlayers[id], g_menuPlayersNum[id]) + + new menuBody[512] + new b = 0 + new i + new name[32], team[4] + new start = pos * 7 + + if (start >= g_menuPlayersNum[id]) + start = pos = g_menuPosition[id] = 0 + + new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "SLAP_SLAY_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0))) + new end = start + 7 + new keys = MENU_KEY_0|MENU_KEY_8 + + if (end > g_menuPlayersNum[id]) + end = g_menuPlayersNum[id] + + for (new a = start; a < end; ++a) + { + i = g_menuPlayers[id][a] + get_user_name(i, name, 31) + + if (g_cstrike) + { + if (cs_get_user_team(i) == CS_TEAM_T) + { + copy(team, 3, "TE") + } + else if (cs_get_user_team(i) == CS_TEAM_CT) + { + copy(team, 3, "CT") + } else { + get_user_team(i, team, 3) + } + } else { + get_user_team(i, team, 3) + } + + if (!is_user_alive(i) || (access(i, ADMIN_IMMUNITY) && i != id)) + { + ++b + + if (g_coloredMenus) + len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team) + else + len += format(menuBody[len], 511-len, "#. %s %s^n", name, team) + } else { + keys |= (1<<b) + + if (is_user_admin(i)) + len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s * %s^n", ++b, name, team) + else + len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s %s^n", ++b, name, team) + } + } + + if (g_menuOption[id]) + len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAP_WITH_DMG", g_menuSettings[id]) + else + len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAY") + + if (end != g_menuPlayersNum[id]) + { + format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") + keys |= MENU_KEY_9 + } + else + format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") + + show_menu(id, keys, menuBody, -1, "Slap/Slay Menu") +} + +public cmdSlapMenu(id, level, cid) +{ + if (!cmd_access(id, level, cid, 1)) + return PLUGIN_HANDLED + + g_menuOption[id] = 0 + if (ArraySize(g_slapsettings) > 0) + { + g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]); + } + else + { + // should never happen, but failsafe + g_menuSettings[id] = 0 + } + + displaySlapMenu(id, g_menuPosition[id] = 0) + + return PLUGIN_HANDLED +} + +/* Kick */ + +public actionKickMenu(id, key) +{ + switch (key) + { + case 8: displayKickMenu(id, ++g_menuPosition[id]) + case 9: displayKickMenu(id, --g_menuPosition[id]) + default: + { + new player = g_menuPlayers[id][g_menuPosition[id] * 8 + key] + new authid[32], authid2[32], name[32], name2[32] + + get_user_authid(id, authid, 31) + get_user_authid(player, authid2, 31) + get_user_name(id, name, 31) + get_user_name(player, name2, 31) + + new userid2 = get_user_userid(player) + + log_amx("Kick: ^"%s<%d><%s><>^" kick ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, userid2, authid2) + + show_activity_key("ADMIN_KICK_1", "ADMIN_KICK_2", name, name2); + + + server_cmd("kick #%d", userid2) + server_exec() + + displayKickMenu(id, g_menuPosition[id]) + } + } + + return PLUGIN_HANDLED +} + +displayKickMenu(id, pos) +{ + if (pos < 0) + return + + get_players(g_menuPlayers[id], g_menuPlayersNum[id]) + + new menuBody[512] + new b = 0 + new i + new name[32] + new start = pos * 8 + + if (start >= g_menuPlayersNum[id]) + start = pos = g_menuPosition[id] = 0 + + new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "KICK_MENU", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0))) + new end = start + 8 + new keys = MENU_KEY_0 + + if (end > g_menuPlayersNum[id]) + end = g_menuPlayersNum[id] + + for (new a = start; a < end; ++a) + { + i = g_menuPlayers[id][a] + get_user_name(i, name, 31) + + if (access(i, ADMIN_IMMUNITY) && i != id) + { + ++b + + if (g_coloredMenus) + len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name) + else + len += format(menuBody[len], 511-len, "#. %s^n", name) + } else { + keys |= (1<<b) + + if (is_user_admin(i)) + len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name) + else + len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name) + } + } + + if (end != g_menuPlayersNum[id]) + { + format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") + keys |= MENU_KEY_9 + } + else + format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") + + show_menu(id, keys, menuBody, -1, "Kick Menu") +} + +public cmdKickMenu(id, level, cid) +{ + if (cmd_access(id, level, cid, 1)) + displayKickMenu(id, g_menuPosition[id] = 0) + + return PLUGIN_HANDLED +} + +/* Team menu */ + +public actionTeamMenu(id, key) +{ + switch (key) + { + case 7: + { + g_menuOption[id] = (g_menuOption[id] + 1) % (g_cstrike ? 3 : 2); + displayTeamMenu(id, g_menuPosition[id]) + } + case 8: displayTeamMenu(id, ++g_menuPosition[id]) + case 9: displayTeamMenu(id, --g_menuPosition[id]) + default: + { + new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key] + new authid[32], authid2[32], name[32], name2[32] + + get_user_name(player, name2, 31) + get_user_authid(id, authid, 31) + get_user_authid(player, authid2, 31) + get_user_name(id, name, 31) + + log_amx("Cmd: ^"%s<%d><%s><>^" transfer ^"%s<%d><%s><>^" (team ^"%s^")", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, g_menuOption[id] ? "TERRORIST" : "CT") + + show_activity_key("ADMIN_TRANSF_1", "ADMIN_TRANSF_2", name, name2, g_CSTeamNames[g_menuOption[id] % 3]); + + if (g_cstrike) + { + if (is_user_alive(player)) + { + new deaths = cs_get_user_deaths(player) + user_kill(player, 1) + cs_set_user_deaths(player, deaths) + } + // This modulo math just aligns the option to the CsTeams-corresponding number + cs_set_user_team(player, (g_menuOption[id] % 3) + 1) + cs_reset_user_model(player) + } else { + new limit_setting = get_cvar_num("mp_limitteams") + + set_cvar_num("mp_limitteams", 0) + engclient_cmd(player, "jointeam", g_CSTeamNumbers[g_menuOption[id] % 2]) + engclient_cmd(player, "joinclass", "1") + set_cvar_num("mp_limitteams", limit_setting) + } + + displayTeamMenu(id, g_menuPosition[id]) + } + } + + return PLUGIN_HANDLED +} + +displayTeamMenu(id, pos) +{ + if (pos < 0) + return + + get_players(g_menuPlayers[id], g_menuPlayersNum[id]) + + new menuBody[512] + new b = 0 + new i, iteam + new name[32], team[4] + new start = pos * 7 + + if (start >= g_menuPlayersNum[id]) + start = pos = g_menuPosition[id] = 0 + + new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "TEAM_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0))) + new end = start + 7 + new keys = MENU_KEY_0|MENU_KEY_8 + + if (end > g_menuPlayersNum[id]) + end = g_menuPlayersNum[id] + + for (new a = start; a < end; ++a) + { + i = g_menuPlayers[id][a] + get_user_name(i, name, 31) + + if (g_cstrike) + { + iteam = _:cs_get_user_team(i) + + if (iteam == 1) + { + copy(team, 3, "TE") + } + else if (iteam == 2) + { + copy(team, 3, "CT") + } + else if (iteam == 3) + { + copy(team, 3, "SPE"); + iteam = 6; + } else { + iteam = get_user_team(i, team, 3) + } + } else { + iteam = get_user_team(i, team, 3) + } + + if ((iteam == g_CSTeamiNumbers[g_menuOption[id] % (g_cstrike ? 3 : 2)]) || (access(i, ADMIN_IMMUNITY) && i != id)) + { + ++b + + if (g_coloredMenus) + len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team) + else + len += format(menuBody[len], 511-len, "#. %s %s^n", name, team) + } else { + keys |= (1<<b) + + if (is_user_admin(i)) + len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s * %s^n", ++b, name, team) + else + len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s %s^n", ++b, name, team) + } + } + + len += format(menuBody[len], 511-len, "^n8. %L^n", id, "TRANSF_TO", g_CSTeamNames[g_menuOption[id] % (g_cstrike ? 3 : 2)]) + + if (end != g_menuPlayersNum[id]) + { + format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") + keys |= MENU_KEY_9 + } + else + format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") + + show_menu(id, keys, menuBody, -1, "Team Menu") +} + +public cmdTeamMenu(id, level, cid) +{ + if (!cmd_access(id, level, cid, 1)) + return PLUGIN_HANDLED + + g_menuOption[id] = 0 + + displayTeamMenu(id, g_menuPosition[id] = 0) + + return PLUGIN_HANDLED +} + +/* Client cmds menu */ + +public actionClcmdMenu(id, key) +{ + switch (key) + { + case 7: + { + ++g_menuOption[id] + g_menuOption[id] %= g_menuSelectNum[id] + displayClcmdMenu(id, g_menuPosition[id]) + } + case 8: displayClcmdMenu(id, ++g_menuPosition[id]) + case 9: displayClcmdMenu(id, --g_menuPosition[id]) + default: + { + new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key] + new flags = g_clcmdMisc[g_menuSelect[id][g_menuOption[id]]][1] + + if (is_user_connected(player)) + { + new command[512], authid[32], name[32], userid[32] + + copy(command, charsmax(command), g_clcmdCmd[g_menuSelect[id][g_menuOption[id]]]) + get_user_authid(player, authid, 31) + get_user_name(player, name, 31) + num_to_str(get_user_userid(player), userid, 31) + + replace(command, charsmax(command), "%userid%", userid) + replace(command, charsmax(command), "%authid%", authid) + replace(command, charsmax(command), "%name%", name) + + if (flags & 1) + { + server_cmd("%s", command) + server_exec() + } else if (flags & 2) + client_cmd(id, "%s", command) + else if (flags & 4) + client_cmd(player, "%s", command) + } + + if (flags & 8) + displayClcmdMenu(id, g_menuPosition[id]) + } + } + + return PLUGIN_HANDLED +} + +displayClcmdMenu(id, pos) +{ + if (pos < 0) + return + + get_players(g_menuPlayers[id], g_menuPlayersNum[id]) + + new menuBody[512] + new b = 0 + new i + new name[32] + new start = pos * 7 + + if (start >= g_menuPlayersNum[id]) + start = pos = g_menuPosition[id] = 0 + + new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "CL_CMD_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0))) + new end = start + 7 + new keys = MENU_KEY_0|MENU_KEY_8 + + if (end > g_menuPlayersNum[id]) + end = g_menuPlayersNum[id] + + for (new a = start; a < end; ++a) + { + i = g_menuPlayers[id][a] + get_user_name(i, name, 31) + + if (!g_menuSelectNum[id] || (access(i, ADMIN_IMMUNITY) && i != id)) + { + ++b + + if (g_coloredMenus) + len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name) + else + len += format(menuBody[len], 511-len, "#. %s^n", name) + } else { + keys |= (1<<b) + + if (is_user_admin(i)) + len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name) + else + len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name) + } + } + + if (g_menuSelectNum[id]) + len += format(menuBody[len], 511-len, "^n8. %s^n", g_clcmdName[g_menuSelect[id][g_menuOption[id]]]) + else + len += format(menuBody[len], 511-len, "^n8. %L^n", id, "NO_CMDS") + + if (end != g_menuPlayersNum[id]) + { + format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") + keys |= MENU_KEY_9 + } + else + format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") + + show_menu(id, keys, menuBody, -1, "Client Cmds Menu") +} + +public cmdClcmdMenu(id, level, cid) +{ + if (!cmd_access(id, level, cid, 1)) + return PLUGIN_HANDLED + + g_menuSelectNum[id] = 0 + + for (new a = 0; a < g_clcmdNum; ++a) + if (access(id, g_clcmdMisc[a][0])) + g_menuSelect[id][g_menuSelectNum[id]++] = a + + g_menuOption[id] = 0 + + displayClcmdMenu(id, g_menuPosition[id] = 0) + + return PLUGIN_HANDLED +} + +load_settings(szFilename[]) +{ + if (!file_exists(szFilename)) + return 0 + + new text[256], szFlags[32], szAccess[32] + new a, pos = 0 + + while (g_clcmdNum < MAX_CLCMDS && read_file(szFilename, pos++, text, 255, a)) + { + if (text[0] == ';') continue + + if (parse(text, g_clcmdName[g_clcmdNum], 31, g_clcmdCmd[g_clcmdNum], 63, szFlags, 31, szAccess, 31) > 3) + { + while (replace(g_clcmdCmd[g_clcmdNum], 63, "\'", "^"")) + { + // do nothing + } + + g_clcmdMisc[g_clcmdNum][1] = read_flags(szFlags) + g_clcmdMisc[g_clcmdNum][0] = read_flags(szAccess) + g_clcmdNum++ + } + } + + return 1 +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/pluginmenu.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/pluginmenu.sma new file mode 100644 index 0000000..5bd59c2 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/pluginmenu.sma @@ -0,0 +1,957 @@ +/* AMX Mod X +* Plugin Cvar and Command Menu +* +* by the AMX Mod X Development Team +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> +#include <amxmisc> + + + +new DisabledCallback; +new EnabledCallback; + +// pcvar that the client is currently modifying +new CurrentCvar[33]; + +// Name of the cvar being modified +new CurrentCvarName[33][32]; + +// Plugin ID that the client is modifying +new CurrentPlid[33]; + +// Page that the client is currently on +new CurrentPage[33]; + +// Menu function ID that the client is in +new CurrentMenuFunction[33] = { -1,... }; + +new CurrentCommand[33][32]; +new cvarmenu_cmdid; +new cmdmenu_cmdid; + +new ExplicitPlugin[33]; + +public plugin_init() +{ + register_plugin("Plugin Menu",AMXX_VERSION_STR,"AMXX Dev Team"); + + register_dictionary("common.txt"); + register_dictionary("pausecfg.txt"); // Needed for PAUSE_COULDNT_FIND + + cvarmenu_cmdid=register_clcmd("amx_plugincvarmenu", "CvarMenuCommand", ADMIN_CVAR, " - displays the plugin cvar menu"); + cmdmenu_cmdid=register_clcmd("amx_plugincmdmenu", "CommandMenuCommand", ADMIN_MENU, " - displays the plugin command menu"); + + register_clcmd("amx_changecvar","CommandChangeCvar"); + register_clcmd("amx_executecmd","CommandExecuteCommand"); + + // Register global menu callbacks. + DisabledCallback=menu_makecallback("AlwaysDisableCallback"); + EnabledCallback=menu_makecallback("AlwaysEnableCallback"); +} + +// Add these menus to the amxmodmenu +public plugin_cfg() +{ + set_task(0.1, "addToMenuFront"); +} +public addToMenuFront() +{ + new PluginFileName[64]; + + get_plugin(-1, PluginFileName, charsmax(PluginFileName)); + new cvarflags; + new cmdflags; + new garbage[1]; + new cmd[32]; + + get_concmd(cmdmenu_cmdid, cmd, charsmax(cmd), cmdflags, garbage, charsmax(garbage), -1); + + if (strcmp(cmd, "amx_plugincmdmenu") != 0) + { + // this should never happen, but just incase! + cmdflags = ADMIN_MENU; + } + get_concmd(cvarmenu_cmdid, cmd, charsmax(cmd), cvarflags, garbage, charsmax(garbage), -1); + + if (strcmp(cmd, "amx_plugincvarmenu") != 0) + { + // this should never happen, but just incase! + cvarflags = ADMIN_CVAR; + } + + AddMenuItem("Plugin Cvars", "amx_plugincvarmenu", cvarflags, PluginFileName); + AddMenuItem("Plugin Commands", "amx_plugincmdmenu", cmdflags, PluginFileName); +} + +// Reset all fields for each client as they connect. +public client_connect(id) +{ + CurrentCvar[id]=0; + CurrentPlid[id]=0; + CurrentMenuFunction[id]=-1; + CurrentCvarName[id][0]=0; + CurrentCommand[id][0]=0; + ExplicitPlugin[id]=-1; + +} + +/** + * Creates a plugin list menu. + * + * @param MenuText The text to display as the title. + * @param Handler The function to call when an item is selected. + * @param Command The function to pass to the handler. It will be passed as "PLID Command". + * @param Callback Function to call for each plugin to be listed. Displays a number next to it (how many cvars, etc.) + */ +stock DisplayPluginMenu(id,const MenuText[], const Handler[], const Command[], const Callback[]) +{ + new Menu=menu_create(MenuText,Handler); + + + new PluginState[32]; + new PluginName[64]; + new func=get_func_id(Callback); + new tally; + new PluginCmd[64]; + new MenuText[64]; + for (new i=0, max=get_pluginsnum(); + i<max; + i++) + { + if (callfunc_begin_i(func,-1)==1) + { + callfunc_push_int(i); // push the plid + if ((tally=callfunc_end())>0) + { + get_plugin(i,"",0,PluginName,sizeof(PluginName)-1,"",0,"",0,PluginState,sizeof(PluginState)-1); + + // Command syntax is: "# Function", # being plugin ID, function being public function to call. + formatex(PluginCmd,sizeof(PluginCmd)-1,"%d %s",i,Command); + formatex(MenuText,sizeof(MenuText)-1,"%s - %d",PluginName,tally); + // If the plugin is running, add this as an activated menu item. + if (strcmp(PluginState,"running",true)==0 || + strcmp(PluginState,"debug", true)==0) + { + menu_additem(Menu,MenuText,PluginCmd,EnabledCallback); + } + else + { + menu_additem(Menu,MenuText,"",_,DisabledCallback); + } + } + } + } + + menu_setprop(Menu,MPROP_NUMBER_COLOR,"\y"); + menu_setprop(Menu,MPROP_EXIT,MEXIT_ALL); + menu_display(id,Menu,0); + +} + +/** + * Byrefs the plugin id of a target plugin (passed by argv(1)), but only if it's valid. + * + * @param id id of the display messages to upon failure. + * @param plid Variable to byref the plugin id. + * @return True on successful lookup, false on failure. + */ +stock bool:GetPlidForValidPlugins(id, &plid) +{ + // If arguments have been passed, then we were given + // a specific plugin to examine. + if (read_argc()>1) + { + // Yes, we were provided a plugin. + new TargetPlugin[64]; + read_argv(1,TargetPlugin,sizeof(TargetPlugin)-1); + + new BufferName[64]; + new BufferFile[64]; + new BufferState[64]; + // Scan for the plugin ID. + for (new i=0, max=get_pluginsnum(); + i<max; + i++) + { + get_plugin(i,BufferFile,sizeof(BufferFile)-1,BufferName,sizeof(BufferName)-1,"",0,"",0,BufferState,sizeof(BufferState)-1); + + if (strcmp(BufferFile,TargetPlugin,true) != 0|| + strcmp(BufferName,TargetPlugin,true) != 0) + { + // We have a match. + + // Check the status of the plugin. If it's anything other than "running" or "debug" fail. + if (strcmp(BufferState,"running") != 0 && + strcmp(BufferState,"debug") != 0) + { + // TODO: ML This + console_print(id,"Plugin ^"%s^" is not running.",BufferFile); + // Return a failed state. + return false; + } + plid=i; + break; + } + } + + // If the plugin was not found, then tell them there was an error. + if (plid==-1) + { + console_print(id, "%L", id, "PAUSE_COULDNT_FIND", TargetPlugin); + + // return a failure state + return false; + } + } + + return true; +} + +/** + * Returns the number of cvars available for a plugin by plid. (Callback for the plugin menu.) + * + * @return number of cvars in the plugin. + */ +public GetNumberOfCvarsForPlid(plid) +{ + new count=0; + new CvarPlid; + for (new i=0, max=get_plugins_cvarsnum(); + i<max; + i++) + { + get_plugins_cvar(i, "", 0,_, CvarPlid, _); + + if (CvarPlid==plid) + { + count++; + } + } + + return count; +} +/** + * Returns the number of commands available for a plugin by plid. (Callback for the plugin menu.) + * + * @return Number of valid commands in the plugin. + */ +public GetNumberOfCmdsForPlid(plid) +{ + new count=0; + + for (new i=0, max=get_concmdsnum(-1,-1); + i<max; + i++) + { + if (get_concmd_plid(i,-1,-1)==plid) + { + count++; + } + } + + return count; +} + +/** + * Whether or not the client has access to modify this cvar. + * + * @param id The admin id. + * @param Cvar The name of the cvar to be checked. + * @return True if the client has access, false otherwise. + */ +stock bool:CanIModifyCvar(id, const Cvar[]) +{ + new UserFlags=get_user_flags(id); + // If the user has rcon access don't bother checking anything. + if (UserFlags & ADMIN_RCON) + { + return true; + } + + // If the cvar is "sv_password" (somehow), then check access. + if (equali(Cvar,"sv_password") && UserFlags & ADMIN_PASSWORD) + { + return true; + } + + // Check to see if the cvar is flagged as protected. + if (get_cvar_flags(Cvar) & FCVAR_PROTECTED) + { + // non-rcon user trying to modify a protected cvar. + return false; + } + + // All known checks done, they can change this cvar if they + // were able to open the menu. + return true; +} + +/** + * Simple function to ensure that a menu item is always disabled. + * + * All parameters are dummy, nothing is used. + */ +public AlwaysDisableCallback(playerid, menuid, itemid) +{ + return ITEM_DISABLED; +} +/** + * Simple function to ensure that a menu item is always enabled. + * + * All parameters are dummy, nothing is used. + */ +public AlwaysEnableCallback(playerid, menuid, itemid) +{ + return ITEM_ENABLED; +} +/** + * Handler for the plugin menu. + * + * @param id The client selecting an item. + * @param menu The menu handle. + * @param item The item number that was selected. + */ +public PluginMenuSelection(id, menu, item) +{ + if (item==MENU_EXIT) + { + menu_destroy(menu); + } + if (item<0) + { + return PLUGIN_HANDLED; + } + + new Command[64]; + new Dummy[1]; + + // All of the commands set for each item is the public + // function that we want to call after the item is selected. + // The parameters are: function(idPlayer,itemnumber) + // Note the menu is destroyed BEFORE the command + // gets executed. + // The command retrieved is in the format: "PLID Command" + menu_item_getinfo(menu, item, Dummy[0], Command, sizeof(Command)-1,Dummy,0,Dummy[0]); + + + new plid=str_to_num(Command); + new Function[32]; + + for (new i=0;i<sizeof(Command)-1;i++) + { + if (Command[i]==' ') + { + // we're at the break. move up one space. + i++; + copy(Function,sizeof(Function)-1,Command[i]); + break; + } + } + + menu_destroy(menu); + + new funcid=get_func_id(Function); + if (funcid != -1 && callfunc_begin_i(funcid)==1) + { + CurrentPage[id]=0; + CurrentPlid[id]=plid; + CurrentMenuFunction[id]=funcid; + callfunc_push_int(id); + callfunc_push_int(plid); + callfunc_push_int(0); + callfunc_end(); + + } + return PLUGIN_HANDLED; +} + +/** + * The command to change a cvar has been called. + * + * @param id The client who is changing the cvar. + */ +public CommandChangeCvar(id) +{ + // All access checks are done before this command is called. + // So if the client has no pcvar pointer in his array slot + // then just ignore the command. + if (CurrentCvar[id]==0) + { + return PLUGIN_CONTINUE; + } + + new Args[256]; + + read_args(Args,sizeof(Args)-1); + + remove_quotes(Args); + + if (equali(Args,"!cancel",7)) + { + // The client didn't want to change this cvar. + client_print(id,print_chat,"[AMXX] Cvar not changed."); + } + else + { + // Changed to set_cvar_* for 1.76 tests + + new pointer=CurrentCvar[id]; + set_pcvar_string(CurrentCvar[id],Args); + + client_print(id,print_chat,"[AMXX] Cvar ^"%s^" changed to ^"%s^"",CurrentCvarName[id],Args); + + // Copy of admincmd's global output. + + new Name[32]; + new AuthID[40]; + + get_user_name(id,Name,sizeof(Name)-1); + get_user_authid(id,AuthID,sizeof(AuthID)-1); + + log_amx("Cmd: ^"%s<%d><%s><>^" set cvar (name ^"%s^") (value ^"%s^")", Name, get_user_userid(id), AuthID, CurrentCvarName[id], Args); + + + new cvar_val[64]; + new maxpl = get_maxplayers(); + for (new i = 1; i <= maxpl; i++) + { + if (is_user_connected(i) && !is_user_bot(i)) + { + if (get_pcvar_flags(pointer) & FCVAR_PROTECTED || equali(Args, "rcon_password")) + { + formatex(cvar_val, charsmax(cvar_val), "*** %L ***", i, "PROTECTED"); + } + else + { + copy(cvar_val, charsmax(cvar_val), Args); + } + show_activity_id(i, id, Name, "%L", i, "SET_CVAR_TO", "", CurrentCvarName[id], cvar_val); + } + } + console_print(id, "[AMXX] %L", id, "CVAR_CHANGED", CurrentCvarName[id], Args); + + } + + // Now redraw the menu for the client + if (CurrentMenuFunction[id]!=-1 && callfunc_begin_i(CurrentMenuFunction[id])==1) + { + callfunc_push_int(id); + callfunc_push_int(CurrentPlid[id]); + callfunc_push_int(CurrentPage[id]); + callfunc_end(); + } + + return PLUGIN_HANDLED; +} + +/** + * Process a selection from the cvar menu. + * + * @param id The client who chose an item. + * @param menu The menu handle. + * @param item The item that has been selected. + */ +public CvarMenuSelection(id, menu, item) +{ + + if (item==MENU_EXIT) + { + menu_destroy(menu); + + if (ExplicitPlugin[id]==-1) + { + client_cmd(id,"amx_plugincvarmenu"); + } + return PLUGIN_HANDLED; + } + else if (item==MENU_BACK) + { + --CurrentPage[id]; + client_print(id,print_chat,"MENU_BACK"); + return PLUGIN_HANDLED; + } + else if (item==MENU_MORE) + { + ++CurrentPage[id]; + client_print(id,print_chat,"MENU_MORE"); + return PLUGIN_HANDLED; + } + else + { + new CvarName[64]; + new Command[32]; + new Dummy[1]; + // pcvar pointer is stored in command, extract the name of the cvar from the name field. + menu_item_getinfo(menu, item, Dummy[0], Command, sizeof(Command)-1,CvarName,sizeof(CvarName)-1,Dummy[0]); + + CurrentCvar[id]=str_to_num(Command); + + if (CurrentCvar[id]==0) // This should never happen, but just incase.. + { + client_print(id,print_chat,"[AMXX] There was an error extracting the cvar pointer. (Name=^"%s^")",CvarName); + return PLUGIN_HANDLED; + } + // TODO: ML this + + // Scan up "CvarName" and stop at the first space + for (new i=0;i<sizeof(CvarName)-1;i++) + { + if (CvarName[i]==' ') + { + CvarName[i]='^0'; + break; + } + } + copy(CurrentCvarName[id],sizeof(CurrentCvarName[])-1,CvarName); + client_print(id,print_chat,"[AMXX] Type in the new value for %s, or !cancel to cancel.",CvarName); + client_cmd(id,"messagemode amx_changecvar"); + + menu_destroy(menu); + return PLUGIN_HANDLED; + } + + return 0; +} +/** + * Displays the cvar menu to a client. + * + * @param id id of the client. + * @param plid Plugin ID to display cvars from. + * @param page Page of the menu to start at. + */ +public DisplayCvarMenu(id, plid, page) +{ + new PluginName[32]; + new MenuTitle[64]; + get_plugin(plid,"",0,PluginName,sizeof(PluginName)-1,"",0,"",0,"",0); + + formatex(MenuTitle,sizeof(MenuTitle)-1,"%s Cvars:",PluginName); + + new Menu=menu_create(MenuTitle,"CvarMenuSelection"); + + new Cvar[64]; + new CvarPlid; + new CvarText[64]; + new CvarData[32]; + new CvarPtr; + + for (new i=0, max=get_plugins_cvarsnum(); + i<max; + i++) + { + get_plugins_cvar(i, Cvar, sizeof(Cvar),_, CvarPlid, CvarPtr); + + if (CvarPlid==plid) + { + if (CanIModifyCvar(id,Cvar)) + { + get_pcvar_string(CvarPtr,CvarData,sizeof(CvarData)-1); + formatex(CvarText,sizeof(CvarText)-1,"%s - %s",Cvar,CvarData); + + // Now store the pcvar data in Cvar + num_to_str(CvarPtr,Cvar,sizeof(Cvar)-1); + menu_additem(Menu,CvarText,Cvar,_,EnabledCallback); + } + else + { + menu_additem(Menu,Cvar,"",_,DisabledCallback); + } + + } + } + + menu_setprop(Menu,MPROP_EXIT,MEXIT_ALL); + menu_setprop(Menu,MPROP_NUMBER_COLOR,"\y"); + menu_display(id,Menu,page); + +} +/** + * Process the "amx_plugincvarmenu" command. + * + * @param id id of the client that is calling the command. + * @param level Access level required by the command. + * @param cid Command ID. + */ +public CvarMenuCommand(id, level, cid) +{ + if (!cmd_access(id,level,cid,0)) + { + return PLUGIN_HANDLED; + } + + // This is which plugin to display. -1 means display all plugins in a list. + new plid=-1; + + if (GetPlidForValidPlugins(id,plid)!=true) + { + // If GetPlidForValidPlugins returns false then it failed to find the plugin. + return PLUGIN_HANDLED; + } + + // Check if we were passed a specific plugin to display or not. + if (plid==-1) + { + ExplicitPlugin[id]=-1; + // We need to display a list of the plugins, instead of a specific plugin. + DisplayPluginMenu(id,"Plugin Cvar Menu:", "PluginMenuSelection","DisplayCvarMenu","GetNumberOfCvarsForPlid"); + } + else + { + ExplicitPlugin[id]=plid; + CurrentPlid[id]=plid; + CurrentPage[id]=0; + DisplayCvarMenu(id,plid,0); + } + return PLUGIN_HANDLED; +} +/** + * Handler for the menu that displays a single command ("Execute with no params", etc). + * + * @param id Id of the client. + * @param menu Menu handle. + * @param item Item that was selected. + */ +public SpecificCommandHandler(id,menu,item) +{ + // Exit was called, return to the previous menu. + if (item<0) + { + if (CurrentMenuFunction[id]!=-1 && callfunc_begin_i(CurrentMenuFunction[id])==1) + { + callfunc_push_int(id); + callfunc_push_int(CurrentPlid[id]); + callfunc_push_int(CurrentPage[id]); + callfunc_end(); + } + menu_destroy(menu); + + return PLUGIN_HANDLED; + } + + new Dummy[1]; + if (item==0) // "With params" + { + menu_item_getinfo(menu, item, Dummy[0], CurrentCommand[id], sizeof(CurrentCommand[])-1,"",0,Dummy[0]); + if (CurrentCommand[id][0]==0) // This should never happen, but just incase.. + { + client_print(id,print_chat,"[AMXX] There was an error extracting the command name."); + return PLUGIN_HANDLED; + } + // TODO: ML this + + client_print(id,print_chat,"[AMXX] Type in the parameters for %s, or !cancel to cancel.",CurrentCommand[id]); + client_cmd(id,"messagemode amx_executecmd"); + + menu_destroy(menu); + + return PLUGIN_HANDLED; // Don't return to original menu immediately! + } + else if (item==1) // "No params" + { + menu_item_getinfo(menu, item, Dummy[0], CurrentCommand[id], sizeof(CurrentCommand[])-1,"",0,Dummy[0]); + if (CurrentCommand[id][0]==0) // This should never happen, but just incase.. + { + client_print(id,print_chat,"[AMXX] There was an error extracting the command name."); + return PLUGIN_HANDLED; + } + // TODO: ML this + + // Now redraw the menu for the client BEFORE the command is executed, incase + // that menu brings up a menu of its own. + if (CurrentMenuFunction[id]!=-1 && callfunc_begin_i(CurrentMenuFunction[id])==1) + { + callfunc_push_int(id); + callfunc_push_int(CurrentPlid[id]); + callfunc_push_int(CurrentPage[id]); + callfunc_end(); + } + menu_destroy(menu); + + client_cmd(id,"%s",CurrentCommand[id]); + client_print(id,print_chat,"[AMXX] Command ^"%s^" executed with no parameters",CurrentCommand[id]); + + return PLUGIN_HANDLED; + } + + // We should never get here, but just incase.. + menu_destroy(menu); + + return PLUGIN_HANDLED; +} + +/** + * Generates and displays a menu to the client for a specific command. + * + * @param id The client to display the menu to. + * @param cid The command id to display. + */ +stock DisplaySpecificCommand(id,cid) +{ + new CommandName[64]; + new CommandDesc[128]; + new CommandTitle[256]; + new CommandAccess; + new Menu; + + get_concmd(cid,CommandName,sizeof(CommandName)-1,CommandAccess, CommandDesc,sizeof(CommandDesc)-1, -1, -1); + + if (CommandDesc[0]!='^0') + { + formatex(CommandTitle,sizeof(CommandTitle)-1,"%s^n%s",CommandName,CommandDesc); + Menu=menu_create(CommandTitle,"SpecificCommandHandler"); + } + else + { + Menu=menu_create(CommandName,"SpecificCommandHandler"); + } + menu_additem(Menu,"Execute with parameters.",CommandName,_,EnabledCallback); + menu_additem(Menu,"Execute with no parameters.",CommandName,_,EnabledCallback); + + menu_setprop(Menu,MPROP_NUMBER_COLOR,"\y"); + menu_display(id,Menu,0); +} + +/** + * Handles the executed command (via "amx_executecmd"). + * + * @param id The id of the client who executed this. + */ +public CommandExecuteCommand(id) +{ + // If they had no command stored, then just ignore it entirely. + if (CurrentCommand[id][0]=='^0') + { + return PLUGIN_CONTINUE; + } + + new Args[256]; + + read_args(Args,sizeof(Args)-1); + + remove_quotes(Args); + + if (equali(Args,"!cancel",7)) + { + // The client didn't want to execute this command. + client_print(id,print_chat,"[AMXX] Command not executed."); + + // Now redraw the menu for the client + if (CurrentMenuFunction[id]!=-1 && callfunc_begin_i(CurrentMenuFunction[id])==1) + { + callfunc_push_int(id); + callfunc_push_int(CurrentPlid[id]); + callfunc_push_int(CurrentPage[id]); + callfunc_end(); + } + + } + else + { + // TODO: ML + client_print(id,print_chat,"[AMXX] Command ^"%s^" executed with ^"%s^"",CurrentCommand[id],Args); + + // Now redraw the menu for the client + if (CurrentMenuFunction[id]!=-1 && callfunc_begin_i(CurrentMenuFunction[id])==1) + { + callfunc_push_int(id); + callfunc_push_int(CurrentPlid[id]); + callfunc_push_int(CurrentPage[id]); + callfunc_end(); + } + + // Execute the command on the client. + client_cmd(id,"%s %s",CurrentCommand[id],Args); + } + + + return PLUGIN_HANDLED; + +} + +/** + * Handle a specific selection from the command menu. + * + * @param id id of the client who made the selection. + * @param menu The menu handle. + * @param item The item that was selected. + */ +public CommandMenuSelection(id, menu, item) +{ + + if (item==MENU_EXIT) + { + menu_destroy(menu); + + // If the player did not explicitly specify a plugin, return them to the + // plugin selection menu. + + if (ExplicitPlugin[id]==-1) + { + client_cmd(id,"amx_plugincmdmenu"); + } + return PLUGIN_HANDLED; + } + else if (item==MENU_BACK) + { + --CurrentPage[id]; + client_print(id,print_chat,"MENU_BACK"); + return PLUGIN_HANDLED; + } + else if (item==MENU_MORE) + { + ++CurrentPage[id]; + client_print(id,print_chat,"MENU_MORE"); + return PLUGIN_HANDLED; + } + else + { + new Command[32]; + new Dummy[1]; + // pcvar pointer is stored in command, extract the name of the cvar from the name field. + menu_item_getinfo(menu, item, Dummy[0], Command, sizeof(Command)-1,"",0,Dummy[0]); + + menu_destroy(menu); + + DisplaySpecificCommand(id,str_to_num(Command)); + return PLUGIN_HANDLED; + } + + return 0; +} +/** + * This blocks "say" and "say_team" commands. + * Other commands that shouldn't be displayed (eg: amxauth<stuff>) should be filtered out already. + * + * @param Command The command that is being checked. + */ +stock bool:IsDisplayableCmd(const Command[]) +{ + // Block "say" and "say_team" + if (equal(Command,"say",3)) + { + return false; + } + + return true; +} +/** + * Displays a command list for the specified plugin. + * + * @param id Id of the client that's being displayed to. + * @param plid Plugin ID of the plugin that is to be displayed. + * @param page The page to start at. + */ +public DisplayCmdMenu(id, plid, page) +{ + new PluginName[32]; + new MenuTitle[64]; + get_plugin(plid,"",0,PluginName,sizeof(PluginName)-1,"",0,"",0,"",0); + + formatex(MenuTitle,sizeof(MenuTitle)-1,"%s Commands:",PluginName); + + new Menu=menu_create(MenuTitle,"CommandMenuSelection"); + + new Command[64]; + new CidString[32]; + new CommandAccess; + new userflags=get_user_flags(id); + new bool:isadmin=bool:is_user_admin(id); + + + for (new i=0, max=get_concmdsnum(-1,-1); + i<max; + i++) + { + if (get_concmd_plid(i,-1,-1)==plid) + { + get_concmd(i,Command,sizeof(Command)-1,CommandAccess, "",0, -1, -1); + + if (IsDisplayableCmd(Command)) + { + if ( userflags & CommandAccess || + (CommandAccess==ADMIN_ADMIN && isadmin) || + CommandAccess==ADMIN_USER || + CommandAccess==ADMIN_ALL) + { + num_to_str(i,CidString,sizeof(CidString)-1); + menu_additem(Menu,Command,CidString,0,EnabledCallback); + } + else + { + menu_additem(Menu,Command,"",0,DisabledCallback); + } + } + } + } + menu_setprop(Menu,MPROP_NUMBER_COLOR,"\y"); + menu_display(id,Menu,page); + +} +/** + * Handles the "amx_plugincmdmenu" command. + * + * @param id Id of the client that's being checked. + * @param level Access level of the command. + * @param cid Command ID of the command that was executed. + */ +public CommandMenuCommand(id, level, cid) +{ + if (!cmd_access(id,level,cid,0)) + { + return PLUGIN_HANDLED; + } + + // This is which plugin to display. -1 means display all plugins in a list. + new plid=-1; + + if (GetPlidForValidPlugins(id,plid)!=true) + { + // If GetPlidForValidPlugins returns false then it failed to find the plugin. + return PLUGIN_HANDLED; + } + + // Check if we were passed a specific plugin to display or not. + if (plid==-1) + { + // We need to display a list of the plugins, instead of a specific plugin. + ExplicitPlugin[id]=-1; + DisplayPluginMenu(id,"Plugin Command Menu:", "PluginMenuSelection","DisplayCmdMenu","GetNumberOfCmdsForPlid"); + } + else + { + ExplicitPlugin[id]=plid; + CurrentPlid[id]=plid; + CurrentPage[id]=0; + DisplayCmdMenu(id,plid,0); + } + return PLUGIN_HANDLED; +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/restmenu.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/restmenu.sma new file mode 100644 index 0000000..143bd68 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/restmenu.sma @@ -0,0 +1,983 @@ +/* AMX Mod X +* Restrict Weapons Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +// Uncomment if you want to have seperate settings for each map +//#define MAPSETTINGS + +#include <amxmodx> +#include <amxmisc> + +#define MAXMENUPOS 34 + +new g_Position[33] +new g_Modified +new g_blockPos[112] +new g_saveFile[64] +new g_Restricted[] = "* This item is restricted *" +new g_szWeapRestr[27] = "00000000000000000000000000" +new g_szEquipAmmoRestr[10] = "000000000" +new g_InBuyMenu[33] +new g_RegisteredMenus[10] + +new g_menuStrings[6][] = +{ + "BuyPistol", + "BuyShotgun", + "BuySubMachineGun", + "BuyRifle", + "BuyMachineGun", + "BuyItem" +} + +new g_menusNames[7][] = +{ + "pistol", + "shotgun", + "sub", + "rifle", + "machine", + "equip", + "ammo" +} + +new g_MenuTitle[7][] = +{ + "Handguns", + "Shotguns", + "Sub-Machine Guns", + "Assault & Sniper Rifles", + "Machine Guns", + "Equipment", + "Ammunition" +} + +new g_menusSets[7][2] = +{ + {0, 6}, {6, 8}, {8, 13}, {13, 23}, {23, 24}, {24, 32}, {32, 34} +} + +new g_AliasBlockNum +new g_AliasBlock[MAXMENUPOS] + +// First position is a position of menu (0 for ammo, 1 for pistols, 6 for equipment etc.) +// Second is a key for TERRORIST (all is key are minus one, 1 is 0, 2 is 1 etc.) +// Third is a key for CT +// Position with -1 doesn't exist + +new g_Keys[MAXMENUPOS][3] = +{ + {1, 1, 1}, // H&K USP .45 Tactical + {1, 0, 0}, // Glock18 Select Fire + {1, 3, 3}, // Desert Eagle .50AE + {1, 2, 2}, // SIG P228 + {1, 4, -1}, // Dual Beretta 96G Elite + {1, -1, 4}, // FN Five-Seven + {2, 0, 0}, // Benelli M3 Super90 + {2, 1, 1}, // Benelli XM1014 + {3, 1, 1}, // H&K MP5-Navy + {3, -1, 0}, // Steyr Tactical Machine Pistol + {3, 3, 3}, // FN P90 + {3, 0, -1}, // Ingram MAC-10 + {3, 2, 2}, // H&K UMP45 + {4, 1, -1}, // AK-47 + {4, 0, -1}, // Gali + {4, -1, 0}, // Famas + {4, 3, -1}, // Sig SG-552 Commando + {4, -1, 2}, // Colt M4A1 Carbine + {4, -1, 3}, // Steyr Aug + {4, 2, 1}, // Steyr Scout + {4, 4, 5}, // AI Arctic Warfare/Magnum + {4, 5, -1}, // H&K G3/SG-1 Sniper Rifle + {4, -1, 4}, // Sig SG-550 Sniper + {5, 0, 0}, // FN M249 Para + {6, 0, 0}, // Kevlar Vest + {6, 1, 1}, // Kevlar Vest & Helmet + {6, 2, 2}, // Flashbang + {6, 3, 3}, // HE Grenade + {6, 4, 4}, // Smoke Grenade + {6, -1, 6}, // Defuse Kit + {6, 5, 5}, // NightVision Goggles + {6, -1, 7}, // Tactical Shield + {0, 5, 5}, // Primary weapon ammo + {0, 6, 6} // Secondary weapon ammo +} + +new g_WeaponNames[MAXMENUPOS][] = +{ + "H&K USP .45 Tactical", + "Glock18 Select Fire", + "Desert Eagle .50AE", + "SIG P228", + "Dual Beretta 96G Elite", + "FN Five-Seven", + "Benelli M3 Super90", + "Benelli XM1014", + "H&K MP5-Navy", + "Steyr Tactical Machine Pistol", + "FN P90", + "Ingram MAC-10", + "H&K UMP45", + "AK-47", + "Gali", + "Famas", + "Sig SG-552 Commando", + "Colt M4A1 Carbine", + "Steyr Aug", + "Steyr Scout", + "AI Arctic Warfare/Magnum", + "H&K G3/SG-1 Sniper Rifle", + "Sig SG-550 Sniper", + "FN M249 Para", + "Kevlar Vest", + "Kevlar Vest & Helmet", + "Flashbang", + "HE Grenade", + "Smoke Grenade", + "Defuse Kit", + "NightVision Goggles", + "Tactical Shield", + "Primary weapon ammo", + "Secondary weapon ammo" +} + +new g_MenuItem[MAXMENUPOS][] = +{ + "\yHandguns^n\w^n%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w^n", + + "\yShotguns^n\w^n%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w^n", + + "\ySub-Machine Guns^n\w^n%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w^n", + + "\yAssault Rifles^n\w^n%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w^n", + + "\ySniper Rifles^n\w^n%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w^n", + + "\yMachine Guns^n\w^n%d. %s\y\R%L^n\w^n", + + "\yEquipment^n\w^n%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w^n", + + "\yAmmunition^n\w^n%d. %s\y\R%L^n\w", + "%d. %s\y\R%L^n\w" +} + +new g_Aliases[MAXMENUPOS][] = +{ + "usp", //Pistols + "glock", + "deagle", + "p228", + "elites", + "fn57", + + "m3", //Shotguns + "xm1014", + + "mp5", //SMG + "tmp", + "p90", + "mac10", + "ump45", + + "ak47", //Rifles + "galil", + "famas", + "sg552", + "m4a1", + "aug", + "scout", + "awp", + "g3sg1", + "sg550", + + "m249", //Machine Gun + + "vest", //Equipment + "vesthelm", + "flash", + "hegren", + "sgren", + "defuser", + "nvgs", + "shield", + + "primammo", //Ammo + "secammo" +} + +new g_Aliases2[MAXMENUPOS][] = +{ + "km45", //Pistols + "9x19mm", + "nighthawk", + "228compact", + "elites", + "fiveseven", + + "12gauge", //Shotguns + "autoshotgun", + + "smg", //SMG + "mp", + "c90", + "mac10", + "ump45", + + "cv47", //Rifles + "defender", + "clarion", + "krieg552", + "m4a1", + "bullpup", + "scout", + "magnum", + "d3au1", + "krieg550", + + "m249", //Machine Gun + + "vest", //Equipment + "vesthelm", + "flash", + "hegren", + "sgren", + "defuser", + "nvgs", + "shield", + "primammo", //Ammo + "secammo" +} + +#define AUTOBUYLENGTH 511 +new g_Autobuy[33][AUTOBUYLENGTH + 1] +//new g_Rebuy[33][AUTOBUYLENGTH + 1] + +bool:IsOurMenuID(id) +{ + for (new i=1; i<=g_RegisteredMenus[0]; i++) + { + if (g_RegisteredMenus[i] == id) + { + return true + } + } + + return false +} + +setWeapon(a, action) +{ + new b, m = g_Keys[a][0] * 8 + + if (g_Keys[a][1] != -1) + { + b = m + g_Keys[a][1] + + if (action == 2) + g_blockPos[b] = 1 - g_blockPos[b] + else + g_blockPos[b] = action + } + + if (g_Keys[a][2] != -1) + { + b = m + g_Keys[a][2] + 56 + + if (action == 2) + g_blockPos[b] = 1 - g_blockPos[b] + else + g_blockPos[b] = action + } + + for (new i = 0; i < g_AliasBlockNum; ++i) + if (g_AliasBlock[i] == a) + { + if (!action || action == 2) + { + --g_AliasBlockNum + + for (new j = i; j < g_AliasBlockNum; ++j) + g_AliasBlock[j] = g_AliasBlock[j + 1] + } + + return + } + + if (action && g_AliasBlockNum < MAXMENUPOS) + g_AliasBlock[g_AliasBlockNum++] = a +} + +findMenuId(name[]) +{ + for (new i = 0; i < 7 ; ++i) + if (equali(name, g_menusNames[i])) + return i + + return -1 +} + +findAliasId(name[]) +{ + for (new i = 0; i < MAXMENUPOS ; ++i) + if (equali(name, g_Aliases[i])) + return i + + return -1 +} + +switchCommand(id, action) +{ + new c = read_argc() + + if (c < 3) + { + for (new x = 0; x < MAXMENUPOS; x++) + setWeapon(x, action) + + console_print(id, "%L", id, action ? "EQ_WE_RES" : "EQ_WE_UNRES") + g_Modified = true + } else { + new arg[32], a + new bool:found = false + + for (new b = 2; b < c; ++b) + { + read_argv(b, arg, 31) + + if ((a = findMenuId(arg)) != -1) + { + c = g_menusSets[a][1] + + for (new i = g_menusSets[a][0]; i < c; ++i) + setWeapon(i, action) + + console_print(id, "%s %L %L", g_MenuTitle[a], id, (a < 5) ? "HAVE_BEEN" : "HAS_BEEN", id, action ? "RESTRICTED" : "UNRESTRICTED") + g_Modified = found = true + } + else if ((a = findAliasId(arg)) != -1) + { + g_Modified = found = true + setWeapon(a, action) + console_print(id, "%s %L %L", g_WeaponNames[a], id, "HAS_BEEN", id, action ? "RESTRICTED" : "UNRESTRICTED") + } + } + + if (!found) + console_print(id, "%L", id, "NO_EQ_WE") + } +} + +positionBlocked(a) +{ + new m = g_Keys[a][0] * 8 + new d = (g_Keys[a][1] == -1) ? 0 : g_blockPos[m + g_Keys[a][1]] + + d += (g_Keys[a][2] == -1) ? 0 : g_blockPos[m + g_Keys[a][2] + 56] + + return d +} + +public cmdRest(id, level, cid) +{ + if (!cmd_access(id, level, cid, 1)) + return PLUGIN_HANDLED + + new cmd[8] + + read_argv(1, cmd, 7) + + if (equali("on", cmd)) + switchCommand(id, 1) + else if (equali("off", cmd)) + switchCommand(id, 0) + else if (equali("list", cmd)) + { + new arg1[8] + new start = read_argv(2, arg1, 7) ? str_to_num(arg1) : 1 + + if (--start < 0) + start = 0 + + if (start >= MAXMENUPOS) + start = MAXMENUPOS - 1 + + new end = start + 10 + + if (end > MAXMENUPOS) + end = MAXMENUPOS + + new lName[16], lValue[16], lStatus[16], lOnOff[16] + + format(lName, 15, "%L", id, "NAME") + format(lValue, 15, "%L", id, "VALUE") + format(lStatus, 15, "%L", id, "STATUS") + + console_print(id, "^n----- %L: -----", id, "WEAP_RES") + console_print(id, " %-32.31s %-10.9s %-9.8s", lName, lValue, lStatus) + + if (start != -1) + { + for (new a = start; a < end; ++a) + { + format(lOnOff, 15, "%L", id, positionBlocked(a) ? "ON" : "OFF") + console_print(id, "%3d: %-32.31s %-10.9s %-9.8s", a + 1, g_WeaponNames[a], g_Aliases[a], lOnOff) + } + } + + console_print(id, "----- %L -----", id, "REST_ENTRIES_OF", start + 1, end, MAXMENUPOS) + + if (end < MAXMENUPOS) + console_print(id, "----- %L -----", id, "REST_USE_MORE", end + 1) + else + console_print(id, "----- %L -----", id, "REST_USE_BEGIN") + } + else if (equali("save", cmd)) + { + if (saveSettings(g_saveFile)) + { + console_print(id, "%L", id, "REST_CONF_SAVED", g_saveFile) + g_Modified = false + } + else + console_print(id, "%L", id, "REST_COULDNT_SAVE", g_saveFile) + } + else if (equali("load", cmd)) + { + setc(g_blockPos, 112, 0) // Clear current settings + new arg1[64] + + if (read_argv(2, arg1, 63)) + { + new configsdir[32] + get_configsdir(configsdir, 31) + + format(arg1, 63, "%s/%s", configsdir, arg1) + } + + if (loadSettings(arg1)) + { + console_print(id, "%L", id, "REST_CONF_LOADED", arg1) + g_Modified = true + } + else + console_print(id, "%L", id, "REST_COULDNT_LOAD", arg1) + } else { + console_print(id, "%L", id, "COM_REST_USAGE") + console_print(id, "%L", id, "COM_REST_COMMANDS") + console_print(id, "%L", id, "COM_REST_ON") + console_print(id, "%L", id, "COM_REST_OFF") + console_print(id, "%L", id, "COM_REST_ONV") + console_print(id, "%L", id, "COM_REST_OFFV") + console_print(id, "%L", id, "COM_REST_LIST") + console_print(id, "%L", id, "COM_REST_SAVE") + console_print(id, "%L", id, "COM_REST_LOAD") + console_print(id, "%L", id, "COM_REST_VALUES") + console_print(id, "%L", id, "COM_REST_TYPE") + } + + return PLUGIN_HANDLED +} + +displayMenu(id, pos) +{ + if (pos < 0) + return + + new menubody[512], start = pos * 7 + + if (start >= MAXMENUPOS) + start = pos = g_Position[id] = 0 + + new len = format(menubody, 511, "\y%L\R%d/5^n^n\w", id, "REST_WEAP", pos + 1) + new end = start + 7, keys = MENU_KEY_0|MENU_KEY_8, k = 0 + + if (end > MAXMENUPOS) + end = MAXMENUPOS + + for (new a = start; a < end; ++a) + { + keys |= (1<<k) + len += format(menubody[len], 511 - len, g_MenuItem[a], ++k, g_WeaponNames[a], id, positionBlocked(a) ? "ON" : "OFF") + } + + len += format(menubody[len], 511 - len, "^n8. %L \y\R%s^n\w", id, "SAVE_SET", g_Modified ? "*" : "") + + if (end != MAXMENUPOS) + { + format(menubody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") + keys |= MENU_KEY_9 + } + else + format(menubody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") + + show_menu(id, keys, menubody, -1, "Restrict Weapons") +} + +public actionMenu(id, key) +{ + switch (key) + { + case 7: + { + if (saveSettings(g_saveFile)) + { + g_Modified = false + client_print(id, print_chat, "* %L", id, "CONF_SAV_SUC") + } + else + client_print(id, print_chat, "* %L", id, "CONF_SAV_FAIL") + + displayMenu(id, g_Position[id]) + } + case 8: displayMenu(id, ++g_Position[id]) + case 9: displayMenu(id, --g_Position[id]) + default: + { + setWeapon(g_Position[id] * 7 + key, 2) + g_Modified = true + displayMenu(id, g_Position[id]) + + new a = g_Position[id] * 7 + key + new sz[1] + + if (a < 24) + { + sz[0] = g_szWeapRestr[a + 1] + g_szWeapRestr[a + 1] = (sz[0] == '0') ? '1' : '0' // primary and secondary weapons + } + else if ((a >= 24) && (a < 31)) + { + sz[0] = g_szEquipAmmoRestr[a - 24] + g_szEquipAmmoRestr[a - 24] = (sz[0] == '0') ? '1' : '0' // equipments + } + else if (a == 31) + { + sz[0] = g_szWeapRestr[25] + g_szWeapRestr[25] = (sz[0] == '0') ? '1' : '0' // shield + } + else if ((a > 31) && (a < 34)) + { + sz[0] = g_szEquipAmmoRestr[a - 25] + g_szEquipAmmoRestr[a - 25] = (sz[0] == '0') ? '1' : '0' // primary and secondary ammo + } + set_cvar_string("amx_restrweapons", g_szWeapRestr) + set_cvar_string("amx_restrequipammo", g_szEquipAmmoRestr) + } + } + + return PLUGIN_HANDLED +} + +public CS_InternalCommand(id, const cmd[]) +{ + new a = 0 + + do + { + if (equali(g_Aliases[g_AliasBlock[a]], cmd) || equali(g_Aliases2[g_AliasBlock[a]], cmd)) + { + client_print(id, print_center, "%s", g_Restricted) + return PLUGIN_HANDLED + } + } while (++a < g_AliasBlockNum) + + return PLUGIN_CONTINUE +} + +public client_command(id) +{ + if (g_AliasBlockNum) + { + new arg[13] + + if (read_argv(0, arg, 12) > 11) /* Longest buy command has 11 chars so if command is longer then don't care */ + { + return PLUGIN_CONTINUE + } + + if (equali(arg, "menuselect") && is_user_connected(id)) + { + new menu, newmenu + new inMenu = player_menu_info(id, menu, newmenu) + + if (!inMenu && g_InBuyMenu[id]) + { + new key[12], num + + read_argv(1, key, 11) + num = str_to_num(key) - 1 + + return checkRest(id, g_InBuyMenu[id], num) + } else if ((!menu || newmenu != -1) + || !IsOurMenuID(menu)) { + g_InBuyMenu[id] = 0 + } + + return PLUGIN_CONTINUE + } + + new a = 0 + + do + { + if (equali(g_Aliases[g_AliasBlock[a]], arg) || equali(g_Aliases2[g_AliasBlock[a]], arg)) + { + client_print(id, print_center, "%s", g_Restricted) + return PLUGIN_HANDLED + } + } while (++a < g_AliasBlockNum) + } + + return PLUGIN_CONTINUE +} + +public blockcommand(id) +{ + client_print(id, print_center, "%s", g_Restricted) + return PLUGIN_HANDLED +} + +public cmdMenu(id, level, cid) +{ + if (cmd_access(id, level, cid, 1)) + { + displayMenu(id, g_Position[id] = 0) + } + + return PLUGIN_HANDLED +} + +checkRest(id, menu, key) +{ + new team = get_user_team(id) + + if (team != 1 && team != 2) + { + return PLUGIN_HANDLED + } + + new pos = (menu * 8 + key) + (get_user_team(id) - 1) * 56 + + if (pos < 0 || pos >= 112) + { + return PLUGIN_CONTINUE + } + + if (g_blockPos[pos]) + { + engclient_cmd(id, "menuselect", "10") + client_print(id, print_center, "%s", g_Restricted) + + return PLUGIN_HANDLED + } + + return PLUGIN_CONTINUE +} + +public ammoRest1(id) return checkRest(id, 0, 5) +public ammoRest2(id) return checkRest(id, 0, 6) +public menuBuy(id, key) return checkRest(id, 0, key) +public menuPistol(id, key) return checkRest(id, 1, key) +public menuShotgun(id, key) return checkRest(id, 2, key) +public menuSub(id, key) return checkRest(id, 3, key) +public menuRifle(id, key) return checkRest(id, 4, key) +public menuMachine(id, key) return checkRest(id, 5, key) +public menuItem(id, key) return checkRest(id, 6, key) + +saveSettings(filename[]) +{ + if (file_exists(filename)) + delete_file(filename) + + if (!write_file(filename, "; Generated by Restrict Weapons Plugin. Do not modify!^n; value name")) + return 0 + + new text[64] + + for (new a = 0; a < MAXMENUPOS; ++a) + { + if (positionBlocked(a)) + { + format(text, 63, "%-16.15s ; %s", g_Aliases[a], g_WeaponNames[a]) + write_file(filename, text) + } + } + + return 1 +} + +loadSettings(filename[]) +{ + if (!file_exists(filename)) + return 0 + + new text[16] + new a, pos = 0 + + format(g_szEquipAmmoRestr, 9, "000000000") + format(g_szWeapRestr, 26, "00000000000000000000000000") + + while (read_file(filename, pos++, text, 15, a)) + { + if (text[0] == ';' || !a) + continue // line is a comment + + parse(text, text, 15) + + if ((a = findAliasId(text)) != -1) + { + setWeapon(a, 1) + if (a < 24) g_szWeapRestr[a + 1] = '1' // primary and secondary weapons + else if ((a >= 24) && (a < 31)) g_szEquipAmmoRestr[a - 24] = '1' // equipments + else if (a == 31) g_szWeapRestr[25] = '1' // shield + else if ((a > 31) && (a < 34)) g_szEquipAmmoRestr[a - 25] = '1' // primary and secondary ammo + } + } + set_cvar_string("amx_restrweapons", g_szWeapRestr) + set_cvar_string("amx_restrequipammo", g_szEquipAmmoRestr) + + return 1 +} + +// JGHG +public fn_setautobuy(id) +{ + // Empty user's autobuy prefs. (unnecessary?) + g_Autobuy[id][0] = '^0' + + new argCount = read_argc() + new arg[128] + new autobuyLen = 0 + + for (new i = 1; i < argCount; i++) // Start at parameter 1; parameter 0 is just "cl_setautobuy" + { + read_argv(i, arg, 127) + // Add this parameter to user's autobuy prefs + autobuyLen += format(g_Autobuy[id][autobuyLen], AUTOBUYLENGTH - autobuyLen, "%s", arg) + + // If we detect more parameters, add a space + if (i + 1 < argCount) + autobuyLen += format(g_Autobuy[id][autobuyLen], AUTOBUYLENGTH - autobuyLen, " ") + } + + if (g_AliasBlockNum) + { + // Strip any blocked items + new strippedItems[AUTOBUYLENGTH + 1] + + if (!StripBlockedItems(g_Autobuy[id], strippedItems)) + return PLUGIN_CONTINUE // don't touch anything if we didn't strip anything... + + //server_print("Stripped items: ^"%s^"", strippedItems) + engclient_cmd(id, "cl_setautobuy", strippedItems) + + return PLUGIN_HANDLED + } + + return PLUGIN_CONTINUE +} + +// Returns true if this strips any items, else false. +StripBlockedItems(inString[AUTOBUYLENGTH + 1], outString[AUTOBUYLENGTH + 1]) +{ + // First copy string + format(outString, AUTOBUYLENGTH, inString) + + // After that convert all chars in string to lower case (fix by VEN) + strtolower(outString) + + // Then strip those that are blocked. + for (new i = 0; i < g_AliasBlockNum; i++) + { + while (containi(outString, g_Aliases[g_AliasBlock[i]]) != -1) + replace(outString, AUTOBUYLENGTH, g_Aliases[g_AliasBlock[i]], "") + while (containi(outString, g_Aliases2[g_AliasBlock[i]]) != -1) + replace(outString, AUTOBUYLENGTH, g_Aliases2[g_AliasBlock[i]], "") + } + + // We COULD trim white space from outString here, but I don't think it really is necessary currently... + if (strlen(outString) < strlen(inString)) + return true // outstring is shorter: we stripped items, return true + + return false // else end here, return false, no items were stripped +} + +public fn_autobuy(id) +{ + // Don't do anything if no items are blocked. + if (!g_AliasBlockNum) + return PLUGIN_CONTINUE + + // Strip any blocked items + new strippedItems[AUTOBUYLENGTH + 1] + + if (!StripBlockedItems(g_Autobuy[id], strippedItems)) + return PLUGIN_CONTINUE // don't touch anything if we didn't strip anything... + + engclient_cmd(id, "cl_setautobuy", strippedItems) + + return PLUGIN_HANDLED +} + +public HookEvent_ShowMenu(id) +{ + new menustring[24] + + read_data(4, menustring, 23) + + /* Early breakouts */ + new curidx + if (menustring[curidx++] != '#') + { + g_InBuyMenu[id] = 0 + return + } + + /* Strip D */ + if (menustring[curidx] == 'D') + { + curidx++ + } + + /* Strip AS_ */ + if (menustring[curidx] == 'A' + && menustring[curidx+1] == 'S' + && menustring[curidx+2] == '_') + { + curidx += 3 + } + + /* Strip any team tags */ + if (menustring[curidx] == 'C' + && menustring[curidx+1] == 'T' + && menustring[curidx+2] == '_') + { + curidx += 3 + } else if (menustring[curidx] == 'T' + && menustring[curidx+1] == '_') { + curidx += 2 + } + + if (menustring[curidx] != 'B') + { + g_InBuyMenu[id] = 0 + return + } + + for (new i=0; i<6; i++) + { + if (equali(menustring[curidx], g_menuStrings[i])) + { + g_InBuyMenu[id] = i+1 + return + } + } + + g_InBuyMenu[id] = 0 +} + +RegisterMenuID(const menuname[]) +{ + new id = register_menuid(menuname, 1) + g_RegisteredMenus[++g_RegisteredMenus[0]] = id + return id +} + +public plugin_init() +{ + register_plugin("Restrict Weapons", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("restmenu.txt") + register_dictionary("common.txt") + register_clcmd("buyammo1", "ammoRest1") + register_clcmd("buyammo2", "ammoRest2") + register_clcmd("cl_setautobuy", "fn_setautobuy") + register_clcmd("cl_autobuy", "fn_autobuy") + register_clcmd("amx_restmenu", "cmdMenu", ADMIN_CFG, "- displays weapons restriction menu") + register_menucmd(register_menuid("#Buy", 1), 511, "menuBuy") + register_menucmd(register_menuid("Restrict Weapons"), 1023, "actionMenu") + register_menucmd(RegisterMenuID("BuyPistol"), 511, "menuPistol") + register_menucmd(RegisterMenuID("BuyShotgun"), 511, "menuShotgun") + register_menucmd(RegisterMenuID("BuySub"), 511, "menuSub") + register_menucmd(RegisterMenuID("BuyRifle"), 511, "menuRifle") + register_menucmd(RegisterMenuID("BuyMachine"), 511, "menuMachine") + register_menucmd(RegisterMenuID("BuyItem"), 511, "menuItem") + register_menucmd(-28, 511, "menuBuy") + register_menucmd(-29, 511, "menuPistol") + register_menucmd(-30, 511, "menuShotgun") + register_menucmd(-32, 511, "menuSub") + register_menucmd(-31, 511, "menuRifle") + register_menucmd(-33, 511, "menuMachine") + register_menucmd(-34, 511, "menuItem") + register_concmd("amx_restrict", "cmdRest", ADMIN_CFG, "- displays help for weapons restriction") + + register_cvar("amx_restrweapons", "00000000000000000000000000") + register_cvar("amx_restrequipammo", "000000000") + + register_event("ShowMenu", "HookEvent_ShowMenu", "b") + + new configsDir[64]; + get_configsdir(configsDir, 63); +#if defined MAPSETTINGS + new mapname[32] + get_mapname(mapname, 31) + format(g_saveFile, 63, "%s/weaprest_%s.ini", configsDir, mapname) +#else + format(g_saveFile, 63, "%s/weaprest.ini", configsDir) +#endif + loadSettings(g_saveFile) +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/scrollmsg.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/scrollmsg.sma new file mode 100644 index 0000000..abf9c04 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/scrollmsg.sma @@ -0,0 +1,128 @@ +/* AMX Mod X +* Scrolling Message Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> +#include <amxmisc> + +#define SPEED 0.3 +#define SCROLLMSG_SIZE 512 + +new g_startPos +new g_endPos +new g_scrollMsg[SCROLLMSG_SIZE] +new g_displayMsg[SCROLLMSG_SIZE] +new Float:g_xPos +new g_Length +new g_Frequency + +public plugin_init() +{ + register_plugin("Scrolling Message", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("scrollmsg.txt") + register_dictionary("common.txt") + register_srvcmd("amx_scrollmsg", "setMessage") +} + +public showMsg() +{ + new a = g_startPos, i = 0 + + while (a < g_endPos) + g_displayMsg[i++] = g_scrollMsg[a++] + + g_displayMsg[i] = 0 + + if (g_endPos < g_Length) + g_endPos++ + + if (g_xPos > 0.35) + g_xPos -= 0.0063 + else + { + g_startPos++ + g_xPos = 0.35 + } + + set_hudmessage(200, 100, 0, g_xPos, 0.90, 0, SPEED, SPEED, 0.05, 0.05, 2) + show_hudmessage(0, "%s", g_displayMsg) +} + +public msgInit() +{ + g_endPos = 1 + g_startPos = 0 + g_xPos = 0.65 + + new hostname[64] + + get_cvar_string("hostname", hostname, 63) + replace(g_scrollMsg, SCROLLMSG_SIZE-1, "%hostname%", hostname) + + g_Length = strlen(g_scrollMsg) + + set_task(SPEED, "showMsg", 123, "", 0, "a", g_Length + 48) + client_print(0, print_console, "%s", g_scrollMsg) +} + +public setMessage() +{ + remove_task(123) /* remove current messaging */ + read_argv(1, g_scrollMsg, SCROLLMSG_SIZE-1) + + g_Length = strlen(g_scrollMsg) + + new mytime[32] + + read_argv(2, mytime, 31) + + g_Frequency = str_to_num(mytime) + + if (g_Frequency > 0) + { + new minimal = floatround((g_Length + 48) * (SPEED + 0.1)) + + if (g_Frequency < minimal) + { + server_print("%L", LANG_SERVER, "MIN_FREQ", minimal) + g_Frequency = minimal + } + + server_print("%L", LANG_SERVER, "MSG_FREQ", g_Frequency / 60, g_Frequency % 60) + set_task(float(g_Frequency), "msgInit", 123, "", 0, "b") + } + else + server_print("%L", LANG_SERVER, "MSG_DISABLED") + + return PLUGIN_HANDLED +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/stats_logging.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/stats_logging.sma new file mode 100644 index 0000000..992396d --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/stats_logging.sma @@ -0,0 +1,112 @@ +/* AMX Mod X +* Stats Logging Plugin +* +* by the AMX Mod X Development Team +* originally developed by JustinHoMi +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> +#include <csx> + +new g_pingSum[33] +new g_pingCount[33] +new g_inGame[33] + +public plugin_init() +{ + register_plugin("CS Stats Logging", AMXX_VERSION_STR, "AMXX Dev Team") +} + +public client_disconnect(id) +{ + if (!g_inGame[id]) + return + + g_inGame[id] = 0 + + if (is_user_bot(id)) + { + return + } + + remove_task(id) + + new szTeam[16], szName[32], szAuthid[32], iStats[8], iHits[8], szWeapon[24] + new iUserid = get_user_userid(id) + new _max = xmod_get_maxweapons() + + get_user_team(id, szTeam, 15) + get_user_name(id, szName, 31) + get_user_authid(id, szAuthid, 31) + + for (new i = 1 ; i < _max ; ++i) + { + if (get_user_wstats(id, i, iStats, iHits)) + { + xmod_get_wpnname(i, szWeapon, 23) + + log_message("^"%s<%d><%s><%s>^" triggered ^"weaponstats^" (weapon ^"%s^") (shots ^"%d^") (hits ^"%d^") (kills ^"%d^") (headshots ^"%d^") (tks ^"%d^") (damage ^"%d^") (deaths ^"%d^")", + szName, iUserid, szAuthid, szTeam, szWeapon, iStats[4], iStats[5], iStats[0], iStats[2], iStats[3], iStats[6], iStats[1]) + log_message("^"%s<%d><%s><%s>^" triggered ^"weaponstats2^" (weapon ^"%s^") (head ^"%d^") (chest ^"%d^") (stomach ^"%d^") (leftarm ^"%d^") (rightarm ^"%d^") (leftleg ^"%d^") (rightleg ^"%d^")", + szName, iUserid, szAuthid, szTeam, szWeapon, iHits[1], iHits[2], iHits[3], iHits[4], iHits[5], iHits[6], iHits[7]) + } + } + + new iTime = get_user_time(id, 1) + + log_message("^"%s<%d><%s><%s>^" triggered ^"time^" (time ^"%d:%02d^")", szName, iUserid, szAuthid, szTeam, (iTime / 60), (iTime % 60)) + log_message("^"%s<%d><%s><%s>^" triggered ^"latency^" (ping ^"%d^")", szName, iUserid, szAuthid, szTeam, (g_pingSum[id] / (g_pingCount[id] ? g_pingCount[id] : 1))) +} + +public client_connect(id) +{ + g_inGame[id] = 0 +} + +public client_putinserver(id) +{ + g_inGame[id] = 1 + if (!is_user_bot(id)) + { + g_pingSum[id] = g_pingCount[id] = 0 + if (task_exists(id)) + remove_task(id) + set_task(19.5, "getPing", id, "", 0, "b") + } +} + +public getPing(id) +{ + new iPing, iLoss + + get_user_ping(id, iPing, iLoss) + g_pingSum[id] += iPing + ++g_pingCount[id] +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/statscfg.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/statscfg.sma new file mode 100644 index 0000000..1c7e5ff --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/statscfg.sma @@ -0,0 +1,325 @@ +/* AMX Mod X +* Stats Configuration Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> +#include <amxmisc> + +#define MAX_MENU_DATA 72 + +new g_menuData[MAX_MENU_DATA][32] +new g_menuDataVar[MAX_MENU_DATA][32] +new g_menuDataId[MAX_MENU_DATA] +new g_menuDataNum +new g_menuPosition[33] +new g_fileToSave[64] +new bool:g_modified +new g_coloredMenus + +public plugin_precache() +{ + register_clcmd("amx_statscfgmenu", "cmdCfgMenu", ADMIN_CFG, "- displays stats configuration menu") + register_dictionary("statscfg.txt") + register_dictionary("common.txt") + register_concmd("amx_statscfg", "cmdCfg", ADMIN_CFG, "- displays help for stats configuration") +} + +public plugin_init() +{ + register_plugin("Stats Configuration", AMXX_VERSION_STR, "AMXX Dev Team") + register_menucmd(register_menuid("Stats Configuration"), 1023, "actionCfgMenu") + + get_configsdir(g_fileToSave, 63) + format(g_fileToSave, 63, "%s/stats.ini", g_fileToSave) + loadSettings(g_fileToSave) + g_coloredMenus = colored_menus() +} + +public cmdCfg(id, level, cid) +{ + if (!cmd_access(id, level, cid, 1)) + return PLUGIN_HANDLED + + new cmds[32] + read_argv(1, cmds, 31) + + new option = equali(cmds, "on") ? 1 : 0 + + if (!option) + option = equali(cmds, "off") ? 2 : 0 + + if (read_argc() > 2 && option) + { + new var[32], enabled = 0 + read_argv(2, var, 31) + + for (new a = 0; a < g_menuDataNum; ++a) + { + if (containi(g_menuDataVar[a], var) != -1) + { + g_modified = true + ++enabled + if (option == 1) + { + set_xvar_num(g_menuDataId[a], 1) + console_print(id, "%L: %s", id, "STATS_ENABLED", g_menuData[a]) + } else { + set_xvar_num(g_menuDataId[a], 0) + console_print(id, "%L: %s", id, "STATS_DISABLED", g_menuData[a]) + } + } + } + + if (enabled) + console_print(id, "%L", id, "TOTAL_NUM", enabled) + else + console_print(id, "%L", id, "NO_OPTION", var) + } + else if (equali(cmds, "save")) + { + if (saveSettings(g_fileToSave)) + { + g_modified = false + console_print(id, "%L", id, "STATS_CONF_SAVED") + } + else + console_print(id, "%L", id, "STATS_CONF_FAILED") + } + else if (equali(cmds, "load")) + { + if (loadSettings(g_fileToSave)) + { + g_modified = false + console_print(id, "%L", id, "STATS_CONF_LOADED") + } + else + console_print(id, "%L", id, "STATS_CONF_FAIL_LOAD") + } + else if (equali(cmds, "list")) + { + new arg1[8] + new start = read_argv(2, arg1, 7) ? str_to_num(arg1) : 1 + + if (--start < 0) start = 0 + + if (start >= g_menuDataNum) + start = g_menuDataNum - 1 + + new end = start + 10 + + if (end > g_menuDataNum) + end = g_menuDataNum + + new lName[16], lVariable[16], lStatus[16] + + format(lName, 15, "%L", id, "NAME") + format(lVariable, 15, "%L", id, "VARIABLE") + format(lStatus, 15, "%L", id, "STATUS") + console_print(id, "^n----- %L: -----", id, "STATS_CONF") + console_print(id, " %-29.28s %-24.23s %-9.8s", lName, lVariable, lStatus) + + if (start != -1) + { + new lOnOff[16] + + for (new a = start; a < end; ++a) + { + format(lOnOff, 15, "%L", id, get_xvar_num(g_menuDataId[a]) ? "ON" : "OFF") + console_print(id, "%3d: %-29.28s %-24.23s %-9.8s", a + 1, g_menuData[a], g_menuDataVar[a], lOnOff) + } + } + + console_print(id, "----- %L -----", id, "STATS_ENTRIES_OF", start + 1, end, g_menuDataNum) + + if (end < g_menuDataNum) + console_print(id, "----- %L -----", id, "STATS_USE_MORE", end + 1) + else + console_print(id, "----- %L -----", id, "STATS_USE_BEGIN") + } + else if (equali(cmds, "add") && read_argc() > 3) + { + if (g_menuDataNum < MAX_MENU_DATA) + { + read_argv(2, g_menuData[g_menuDataNum], 31) + read_argv(3, g_menuDataVar[g_menuDataNum], 31) + g_menuDataId[g_menuDataNum] = get_xvar_id(g_menuDataVar[g_menuDataNum]) + ++g_menuDataNum + } + else + console_print(id, "%L", id, "CANT_ADD_STATS") + } else { + console_print(id, "%L", id, "COM_STATS_USAGE") + console_print(id, "%L", id, "COM_STATS_COM") + console_print(id, "%L", id, "COM_STATS_ON") + console_print(id, "%L", id, "COM_STATS_OFF") + console_print(id, "%L", id, "COM_STATS_SAVE") + console_print(id, "%L", id, "COM_STATS_LOAD") + console_print(id, "%L", id, "COM_STATS_LIST") + console_print(id, "%L", id, "COM_STATS_ADD") + } + + return PLUGIN_HANDLED +} + +public cmdCfgMenu(id, level, cid) +{ + if (cmd_access(id, level, cid, 1)) + displayCfgMenu(id, g_menuPosition[id] = 0) + + return PLUGIN_HANDLED +} + +displayCfgMenu(id, pos) +{ + if (pos < 0) + return + + new menu_body[512], start = pos * 7 + + if (start >= g_menuDataNum) + start = pos = g_menuPosition[id] = 0 + + new len = format(menu_body, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "STATS_CONF", pos + 1, ((g_menuDataNum / 7)+((g_menuDataNum % 7) ? 1 : 0))) + new end = start + 7, keys = MENU_KEY_0|MENU_KEY_8, k = 0 + + if (end > g_menuDataNum) + end = g_menuDataNum + + for (new a = start; a < end; ++a) + { + keys |= (1<<k) + /* Backwards compatibility hack - if the name starts with ST_, assume it is translation safe! */ + if (equal(g_menuData[a], "ST_", 3)) + { + len += format(menu_body[len], 511-len, g_coloredMenus ? "%d. %L\y\R%L^n\w" : "%d. %L %L^n", ++k, id, g_menuData[a], id, get_xvar_num(g_menuDataId[a]) ? "ON" : "OFF") + } else { + len += format(menu_body[len], 511-len, g_coloredMenus ? "%d. %s\y\R%L^n\w" : "%d. %s %L^n", ++k, g_menuData[a], id, get_xvar_num(g_menuDataId[a]) ? "ON" : "OFF") + } + } + + if (g_menuDataNum == 0) + len += format(menu_body[len], 511-len, g_coloredMenus ? "\d%L\w" : "%L", id, "NO_STATS") + + len += format(menu_body[len], 511-len, g_coloredMenus ? "^n8. %L\y\R%s^n\w" : "^n8. %L %s^n", id, "SAVE_CONF", g_modified ? "*" : "") + + if (end != g_menuDataNum) + { + format(menu_body[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") + keys |= MENU_KEY_9 + } + else + format(menu_body[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") + + show_menu(id, keys, menu_body, -1, "Stats Configuration") +} + +public actionCfgMenu(id, key) +{ + switch (key) + { + case 7: + { + if (saveSettings(g_fileToSave)) + { + g_modified = false + client_print(id, print_chat, "* %L", id, "STATS_CONF_SAVED") + } + else + client_print(id, print_chat, "* %L", id, "STATS_CONF_FAILED") + + displayCfgMenu(id, g_menuPosition[id]) + } + case 8: displayCfgMenu(id, ++g_menuPosition[id]) + case 9: displayCfgMenu(id, --g_menuPosition[id]) + default: + { + g_modified = true + new a = g_menuPosition[id] * 7 + key + set_xvar_num(g_menuDataId[a], 1 - get_xvar_num(g_menuDataId[a])) + + displayCfgMenu(id, g_menuPosition[id]) + } + } + + return PLUGIN_HANDLED +} + +saveSettings(filename[]) +{ + if (file_exists(filename)) + delete_file(filename) + + if (!write_file(filename, ";Generated by Stats Configuration Plugin. Do not modify!^n;Variable Description")) + return 0 + + new text[256] + + for (new a = 0; a < g_menuDataNum; ++a) + { + if (get_xvar_num(g_menuDataId[a])) + { + if (equal(g_menuData[a], "ST_", 3)) + { + format(text, 255, "%-24.23s ;%L", g_menuDataVar[a], LANG_SERVER, g_menuData[a]) + } + else + { + format(text, 255, "%-24.23s ;%s", g_menuDataVar[a], g_menuData[a]) + } + write_file(filename, text) + } + } + + return 1 +} + +loadSettings(filename[]) +{ + if (!file_exists(filename)) + return 0 + + new text[256], name[32] + new len, pos = 0, xid + + while (read_file(filename, pos++, text, 255, len)) + { + if (text[0] == ';') continue // line is a comment + + parse(text, name, 31) + + if ((xid = get_xvar_id(name)) != -1) + set_xvar_num(xid, 1) + } + + return 1 +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/statsx.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/statsx.sma new file mode 100644 index 0000000..ed4d2e0 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/statsx.sma @@ -0,0 +1,1706 @@ +/* AMX Mod X +* StatsX Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +//-------------------------------- +#include <amxmodx> +#include <amxmisc> +#include <csx> +//-------------------------------- + +// Uncomment to activate log debug messages. +//#define STATSX_DEBUG + +// HUD statistics duration in seconds (minimum 1.0 seconds). +#define HUD_DURATION_CVAR "amx_statsx_duration" +#define HUD_DURATION "12.0" + +// HUD statistics stop relative freeze end in seconds. +// To stop before freeze end use a negative value. +#define HUD_FREEZE_LIMIT_CVAR "amx_statsx_freeze" +#define HUD_FREEZE_LIMIT "-2.0" + +// HUD statistics minimum duration, in seconds, to trigger the display logic. +#define HUD_MIN_DURATION 0.2 + +// Config plugin constants. +#define MODE_HUD_DELAY 0 // Make a 0.01 sec delay on HUD reset process. + +// You can also manualy enable or disable these options by setting them to 1 +// For example: +// public ShowAttackers = 1 +// However amx_statscfg command is recommended + +public KillerChat = 0 // displays killer hp&ap to victim console + // and screen + +public ShowAttackers = 0 // shows attackers +public ShowVictims = 0 // shows victims +public ShowKiller = 0 // shows killer +public ShowTeamScore = 0 // shows team score at round end +public ShowTotalStats = 0 // shows round total stats +public ShowBestScore = 0 // shows rounds best scored player +public ShowMostDisruptive = 0 // shows rounds most disruptive player + +public EndPlayer = 0 // displays player stats at the end of map +public EndTop15 = 0 // displays top15 at the end of map + +public SayHP = 0 // displays information about user killer +public SayStatsMe = 0 // displays user's stats and rank +public SayRankStats = 0 // displays user's rank stats +public SayMe = 0 // displays user's stats +public SayRank = 0 // displays user's rank +public SayReport = 0 // report user's weapon status to team +public SayScore = 0 // displays team's map score +public SayTop15 = 0 // displays first 15 players +public SayStatsAll = 0 // displays all players stats and rank + +public ShowStats = 1 // set client HUD-stats switched off by default +public ShowDistHS = 0 // show distance and HS in attackers and + // victims HUD lists +public ShowFullStats = 0 // show full HUD stats (more than 78 chars) + +public SpecRankInfo = 0 // displays rank info when spectating + +// Standard Contstants. +#define MAX_TEAMS 2 +#define MAX_PLAYERS 32 + 1 + +#define MAX_NAME_LENGTH 31 +#define MAX_WEAPON_LENGTH 31 +#define MAX_TEXT_LENGTH 255 +#define MAX_BUFFER_LENGTH 2047 + +// User stats parms id +#define STATS_KILLS 0 +#define STATS_DEATHS 1 +#define STATS_HS 2 +#define STATS_TKS 3 +#define STATS_SHOTS 4 +#define STATS_HITS 5 +#define STATS_DAMAGE 6 + +// Global player flags. +new BODY_PART[8][] = +{ + "WHOLEBODY", + "HEAD", + "CHEST", + "STOMACH", + "LEFTARM", + "RIGHTARM", + "LEFTLEG", + "RIGHTLEG" +} + +// Killer information, save killer info at the time when player is killed. +#define KILLED_KILLER_ID 0 // Killer userindex/user-ID +#define KILLED_KILLER_HEALTH 1 // Killer's health +#define KILLED_KILLER_ARMOUR 2 // Killer's armour +#define KILLED_TEAM 3 // Killer's team +#define KILLED_KILLER_STATSFIX 4 // Fix to register the last hit/kill + +new g_izKilled[MAX_PLAYERS][5] + +// Menu variables and configuration +#define MAX_PPL_MENU_ACTIONS 2 // Number of player menu actions +#define PPL_MENU_OPTIONS 7 // Number of player options per displayed menu + +new g_iPluginMode = 0 + +new g_izUserMenuPosition[MAX_PLAYERS] = {0, ...} +new g_izUserMenuAction[MAX_PLAYERS] = {0, ...} +new g_izUserMenuPlayers[MAX_PLAYERS][32] + +new g_izSpecMode[MAX_PLAYERS] = {0, ...} + +new g_izShowStatsFlags[MAX_PLAYERS] = {0, ...} +new g_izStatsSwitch[MAX_PLAYERS] = {0, ...} +new Float:g_fzShowUserStatsTime[MAX_PLAYERS] = {0.0, ...} +new Float:g_fShowStatsTime = 0.0 +new Float:g_fFreezeTime = 0.0 +new Float:g_fFreezeLimitTime = 0.0 +new Float:g_fHUDDuration = 0.0 + +new g_iRoundEndTriggered = 0 +new g_iRoundEndProcessed = 0 + +new Float:g_fStartGame = 0.0 +new g_izTeamScore[MAX_TEAMS] = {0, ...} +new g_izTeamEventScore[MAX_TEAMS] = {0, ...} +new g_izTeamRndStats[MAX_TEAMS][8] +new g_izTeamGameStats[MAX_TEAMS][8] +new g_izUserUserID[MAX_PLAYERS] = {0, ...} +new g_izUserAttackerDistance[MAX_PLAYERS] = {0, ...} +new g_izUserVictimDistance[MAX_PLAYERS][MAX_PLAYERS] +new g_izUserRndName[MAX_PLAYERS][MAX_NAME_LENGTH + 1] +new g_izUserRndStats[MAX_PLAYERS][8] +new g_izUserGameStats[MAX_PLAYERS][8] + +// Common buffer to improve performance, as Small always zero-initializes all vars +new g_sBuffer[MAX_BUFFER_LENGTH + 1] = "" +new g_sScore[MAX_TEXT_LENGTH + 1] = "" +new g_sAwardAndScore[MAX_BUFFER_LENGTH + 1] = "" + +new t_sText[MAX_TEXT_LENGTH + 1] = "" +new t_sName[MAX_NAME_LENGTH + 1] = "" +new t_sWpn[MAX_WEAPON_LENGTH + 1] = "" + +new g_HudSync_EndRound +new g_HudSync_SpecInfo + +//-------------------------------- +// Initialize +//-------------------------------- +public plugin_init() +{ + // Register plugin. + register_plugin("StatsX", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("statsx.txt") + + // Register events. + register_event("TextMsg", "eventStartGame", "a", "2=#Game_Commencing", "2=#Game_will_restart_in") + register_event("ResetHUD", "eventResetHud", "be") + register_event("RoundTime", "eventStartRound", "bc") + register_event("SendAudio", "eventEndRound", "a", "2=%!MRAD_terwin", "2=%!MRAD_ctwin", "2=%!MRAD_rounddraw") + register_event("TeamScore", "eventTeamScore", "a") + register_event("30", "eventIntermission", "a") + register_event("TextMsg", "eventSpecMode", "bd", "2&ec_Mod") + register_event("StatusValue", "eventShowRank", "bd", "1=2") + + // Register commands. + register_clcmd("say /hp", "cmdHp", 0, "- display info. about your killer (chat)") + register_clcmd("say /statsme", "cmdStatsMe", 0, "- display your stats (MOTD)") + register_clcmd("say /rankstats", "cmdRankStats", 0, "- display your server stats (MOTD)") + register_clcmd("say /me", "cmdMe", 0, "- display current round stats (chat)") + register_clcmd("say /score", "cmdScore", 0, "- display last score (chat)") + register_clcmd("say /rank", "cmdRank", 0, "- display your rank (chat)") + register_clcmd("say /report", "cmdReport", 0, "- display weapon status (say_team)") + register_clcmd("say /top15", "cmdTop15", 0, "- display top 15 players (MOTD)") + register_clcmd("say /stats", "cmdStats", 0, "- display players stats (menu/MOTD)") + register_clcmd("say /switch", "cmdSwitch", 0, "- switch client's stats on or off") + register_clcmd("say_team /hp", "cmdHp", 0, "- display info. about your killer (chat)") + register_clcmd("say_team /statsme", "cmdStatsMe", 0, "- display your stats (MOTD)") + register_clcmd("say_team /rankstats", "cmdRankStats", 0, "- display your server stats (MOTD)") + register_clcmd("say_team /me", "cmdMe", 0, "- display current round stats (chat)") + register_clcmd("say_team /score", "cmdScore", 0, "- display last score (chat)") + register_clcmd("say_team /rank", "cmdRank", 0, "- display your rank (chat)") + register_clcmd("say_team /report", "cmdReport", 0, "- display weapon status (say_team_team)") + register_clcmd("say_team /top15", "cmdTop15", 0, "- display top 15 players (MOTD)") + register_clcmd("say_team /stats", "cmdStats", 0, "- display players stats (menu/MOTD)") + register_clcmd("say_team /switch", "cmdSwitch", 0, "- switch client's stats on or off") + + // Register menus. + register_menucmd(register_menuid("Server Stats"), 1023, "actionStatsMenu") + + // Register special configuration setting and default value. + register_srvcmd("amx_statsx_mode", "cmdPluginMode", ADMIN_CFG, "<flags> - sets plugin options") + +#if defined STATSX_DEBUG + register_clcmd("say /hudtest", "cmdHudTest") +#endif + + register_cvar(HUD_DURATION_CVAR, HUD_DURATION) + register_cvar(HUD_FREEZE_LIMIT_CVAR, HUD_FREEZE_LIMIT) + + // Init buffers and some global vars. + g_sBuffer[0] = 0 + save_team_chatscore() + + g_HudSync_EndRound = CreateHudSyncObj() + g_HudSync_SpecInfo = CreateHudSyncObj() +} + +public plugin_cfg() +{ + new addStast[] = "amx_statscfg add ^"%s^" %s" + + server_cmd(addStast, "ST_SHOW_KILLER_CHAT", "KillerChat") + server_cmd(addStast, "ST_SHOW_ATTACKERS", "ShowAttackers") + server_cmd(addStast, "ST_SHOW_VICTIMS", "ShowVictims") + server_cmd(addStast, "ST_SHOW_KILLER", "ShowKiller") + server_cmd(addStast, "ST_SHOW_TEAM_SCORE", "ShowTeamScore") + server_cmd(addStast, "ST_SHOW_TOTAL_STATS", "ShowTotalStats") + server_cmd(addStast, "ST_SHOW_BEST_SCORE", "ShowBestScore") + server_cmd(addStast, "ST_SHOW_MOST_DISRUPTIVE", "ShowMostDisruptive") + server_cmd(addStast, "ST_SHOW_HUD_STATS_DEF", "ShowStats") + server_cmd(addStast, "ST_SHOW_DIST_HS_HUD", "ShowDistHS") + server_cmd(addStast, "ST_STATS_PLAYER_MAP_END", "EndPlayer") + server_cmd(addStast, "ST_STATS_TOP15_MAP_END", "EndTop15") + server_cmd(addStast, "ST_SAY_HP", "SayHP") + server_cmd(addStast, "ST_SAY_STATSME", "SayStatsMe") + server_cmd(addStast, "ST_SAY_RANKSTATS", "SayRankStats") + server_cmd(addStast, "ST_SAY_ME", "SayMe") + server_cmd(addStast, "ST_SAY_RANK", "SayRank") + server_cmd(addStast, "ST_SAY_REPORT", "SayReport") + server_cmd(addStast, "ST_SAY_SCORE", "SayScore") + server_cmd(addStast, "ST_SAY_TOP15", "SayTop15") + server_cmd(addStast, "ST_SAY_STATS", "SayStatsAll") + server_cmd(addStast, "ST_SPEC_RANK", "SpecRankInfo") + + // Update local configuration vars with value in cvars. + get_config_cvars() +} + +// Set hudmessage format. +set_hudtype_killer(Float:fDuration) + set_hudmessage(220, 80, 0, 0.05, 0.15, 0, 6.0, fDuration, (fDuration >= g_fHUDDuration) ? 1.0 : 0.0, 1.0, -1) + +set_hudtype_endround(Float:fDuration) +{ + set_hudmessage(100, 200, 0, 0.05, 0.55, 0, 0.02, fDuration, (fDuration >= g_fHUDDuration) ? 1.0 : 0.0, 1.0) +} + +set_hudtype_attacker(Float:fDuration) + set_hudmessage(220, 80, 0, 0.55, 0.35, 0, 6.0, fDuration, (fDuration >= g_fHUDDuration) ? 1.0 : 0.0, 1.0, -1) + +set_hudtype_victim(Float:fDuration) + set_hudmessage(0, 80, 220, 0.55, 0.60, 0, 6.0, fDuration, (fDuration >= g_fHUDDuration) ? 1.0 : 0.0, 1.0, -1) + +set_hudtype_specmode() +{ + set_hudmessage(255, 255, 255, 0.02, 0.96, 2, 0.05, 0.1, 0.01, 3.0, -1) +} + +#if defined STATSX_DEBUG +public cmdHudTest(id) +{ + new i, iLen + iLen = 0 + + for (i = 1; i < 20; i++) + iLen += format(g_sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "....x....1....x....2....x....3....x....4....x....^n") + + set_hudtype_killer(50.0) + show_hudmessage(id, "%s", g_sBuffer) +} +#endif + +// Stats formulas +Float:accuracy(izStats[8]) +{ + if (!izStats[STATS_SHOTS]) + return (0.0) + + return (100.0 * float(izStats[STATS_HITS]) / float(izStats[STATS_SHOTS])) +} + +Float:effec(izStats[8]) +{ + if (!izStats[STATS_KILLS]) + return (0.0) + + return (100.0 * float(izStats[STATS_KILLS]) / float(izStats[STATS_KILLS] + izStats[STATS_DEATHS])) +} + +// Distance formula (metric) +Float:distance(iDistance) +{ + return float(iDistance) * 0.0254 +} + +// Get plugin config flags. +set_plugin_mode(id, sFlags[]) +{ + if (sFlags[0]) + g_iPluginMode = read_flags(sFlags) + + get_flags(g_iPluginMode, t_sText, MAX_TEXT_LENGTH) + console_print(id, "%L", id, "MODE_SET_TO", t_sText) + + return g_iPluginMode +} + +// Get config parameters. +get_config_cvars() +{ + g_fFreezeTime = get_cvar_float("mp_freezetime") + + if (g_fFreezeTime < 0.0) + g_fFreezeTime = 0.0 + + g_fHUDDuration = get_cvar_float(HUD_DURATION_CVAR) + + if (g_fHUDDuration < 1.0) + g_fHUDDuration = 1.0 + + g_fFreezeLimitTime = get_cvar_float(HUD_FREEZE_LIMIT_CVAR) +} + +// Get and format attackers header and list. +get_attackers(id, sBuffer[MAX_BUFFER_LENGTH + 1]) +{ + new izStats[8], izBody[8] + new iAttacker + new iFound, iLen + new iMaxPlayer = get_maxplayers() + + iFound = 0 + sBuffer[0] = 0 + + // Get and format header. Add killing attacker statistics if user is dead. + // Make sure shots is greater than zero or division by zero will occur. + // To print a '%', 4 of them must done in a row. + izStats[STATS_SHOTS] = 0 + iAttacker = g_izKilled[id][KILLED_KILLER_ID] + + if (iAttacker) + get_user_astats(id, iAttacker, izStats, izBody) + + if (izStats[STATS_SHOTS] && ShowFullStats) + { + get_user_name(iAttacker, t_sName, MAX_NAME_LENGTH) + iLen = format(sBuffer, MAX_BUFFER_LENGTH, "%L -- %s -- %0.2f%% %L:^n", id, "ATTACKERS", t_sName, accuracy(izStats), id, "ACC") + } + else + iLen = format(sBuffer, MAX_BUFFER_LENGTH, "%L:^n", id, "ATTACKERS") + + // Get and format attacker list. + for (iAttacker = 1; iAttacker <= iMaxPlayer; iAttacker++) + { + if (get_user_astats(id, iAttacker, izStats, izBody, t_sWpn, MAX_WEAPON_LENGTH)) + { + iFound = 1 + get_user_name(iAttacker, t_sName, MAX_NAME_LENGTH) + + if (izStats[STATS_KILLS]) + { + if (!ShowDistHS) + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%s -- %d %L / %d %L / %s^n", t_sName, izStats[STATS_HITS], id, "HIT_S", + izStats[STATS_DAMAGE], id, "DMG", t_sWpn) + else if (izStats[STATS_HS]) + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%s -- %d %L / %d %L / %s / %0.0f m / HS^n", t_sName, izStats[STATS_HITS], id, "HIT_S", + izStats[STATS_DAMAGE], id, "DMG", t_sWpn, distance(g_izUserAttackerDistance[id])) + else + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%s -- %d %L / %d %L / %s / %0.0f m^n", t_sName, izStats[STATS_HITS], id, "HIT_S", + izStats[STATS_DAMAGE], id, "DMG", t_sWpn, distance(g_izUserAttackerDistance[id])) + } + else + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%s -- %d %L / %d %L^n", t_sName, izStats[STATS_HITS], id, "HIT_S", izStats[STATS_DAMAGE], id, "DMG") + } + } + + if (!iFound) + sBuffer[0] = 0 + + return iFound +} + +// Get and format victims header and list +get_victims(id, sBuffer[MAX_BUFFER_LENGTH + 1]) +{ + new izStats[8], izBody[8] + new iVictim + new iFound, iLen + new iMaxPlayer = get_maxplayers() + + iFound = 0 + sBuffer[0] = 0 + + // Get and format header. + // Make sure shots is greater than zero or division by zero will occur. + // To print a '%', 4 of them must done in a row. + izStats[STATS_SHOTS] = 0 + get_user_vstats(id, 0, izStats, izBody) + + if (izStats[STATS_SHOTS]) + iLen = format(sBuffer, MAX_BUFFER_LENGTH, "%L -- %0.2f%% %L:^n", id, "VICTIMS", accuracy(izStats), id, "ACC") + else + iLen = format(sBuffer, MAX_BUFFER_LENGTH, "%L:^n", id, "VICTIMS") + + for (iVictim = 1; iVictim <= iMaxPlayer; iVictim++) + { + if (get_user_vstats(id, iVictim, izStats, izBody, t_sWpn, MAX_WEAPON_LENGTH)) + { + iFound = 1 + get_user_name(iVictim, t_sName, MAX_NAME_LENGTH) + + if (izStats[STATS_DEATHS]) + { + if (!ShowDistHS) + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%s -- %d %L / %d %L / %s^n", t_sName, izStats[STATS_HITS], id, "HIT_S", + izStats[STATS_DAMAGE], id, "DMG", t_sWpn) + else if (izStats[STATS_HS]) + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%s -- %d %L / %d %L / %s / %0.0f m / HS^n", t_sName, izStats[STATS_HITS], id, "HIT_S", + izStats[STATS_DAMAGE], id, "DMG", t_sWpn, distance(g_izUserVictimDistance[id][iVictim])) + else + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%s -- %d %L / %d %L / %s / %0.0f m^n", t_sName, izStats[STATS_HITS], id, "HIT_S", + izStats[STATS_DAMAGE], id, "DMG", t_sWpn, distance(g_izUserVictimDistance[id][iVictim])) + } + else + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%s -- %d %L / %d %L^n", t_sName, izStats[STATS_HITS], id, "HIT_S", izStats[STATS_DAMAGE], id, "DMG") + } + } + + if (!iFound) + sBuffer[0] = 0 + + return iFound +} + +// Get and format kill info. +get_kill_info(id, iKiller, sBuffer[MAX_BUFFER_LENGTH + 1]) +{ + new iFound, iLen + + iFound = 0 + sBuffer[0] = 0 + + if (iKiller && iKiller != id) + { + new izAStats[8], izABody[8], izVStats[8], iaVBody[8] + + iFound = 1 + get_user_name(iKiller, t_sName, MAX_NAME_LENGTH) + + izAStats[STATS_HITS] = 0 + izAStats[STATS_DAMAGE] = 0 + t_sWpn[0] = 0 + get_user_astats(id, iKiller, izAStats, izABody, t_sWpn, MAX_WEAPON_LENGTH) + + izVStats[STATS_HITS] = 0 + izVStats[STATS_DAMAGE] = 0 + get_user_vstats(id, iKiller, izVStats, iaVBody) + + iLen = format(sBuffer, MAX_BUFFER_LENGTH, "%L^n", id, "KILLED_YOU_DIST", t_sName, t_sWpn, distance(g_izUserAttackerDistance[id])) + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%L^n", id, "DID_DMG_HITS", izAStats[STATS_DAMAGE], izAStats[STATS_HITS], g_izKilled[id][KILLED_KILLER_HEALTH], g_izKilled[id][KILLED_KILLER_ARMOUR]) + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%L^n", id, "YOU_DID_DMG", izVStats[STATS_DAMAGE], izVStats[STATS_HITS]) + } + + return iFound +} + +// Get and format most disruptive. +add_most_disruptive(sBuffer[MAX_BUFFER_LENGTH + 1]) +{ + new id, iMaxDamageId, iMaxDamage, iMaxHeadShots + + iMaxDamageId = 0 + iMaxDamage = 0 + iMaxHeadShots = 0 + + // Find player. + for (id = 1; id < MAX_PLAYERS; id++) + { + if (g_izUserRndStats[id][STATS_DAMAGE] >= iMaxDamage && (g_izUserRndStats[id][STATS_DAMAGE] > iMaxDamage || g_izUserRndStats[id][STATS_HS] > iMaxHeadShots)) + { + iMaxDamageId = id + iMaxDamage = g_izUserRndStats[id][STATS_DAMAGE] + iMaxHeadShots = g_izUserRndStats[id][STATS_HS] + } + } + + // Format statistics. + if (iMaxDamageId) + { + id = iMaxDamageId + + new Float:fGameEff = effec(g_izUserGameStats[id]) + new Float:fRndAcc = accuracy(g_izUserRndStats[id]) + + format(t_sText, MAX_TEXT_LENGTH, "%L: %s^n%d %L / %d %L -- %0.2f%% %L / %0.2f%% %L^n", LANG_SERVER, "MOST_DMG", g_izUserRndName[id], + g_izUserRndStats[id][STATS_HITS], LANG_SERVER, "HIT_S", iMaxDamage, LANG_SERVER, "DMG", fGameEff, LANG_SERVER, "EFF", fRndAcc, LANG_SERVER, "ACC") + add(sBuffer, MAX_BUFFER_LENGTH, t_sText) + } + + return iMaxDamageId +} + +// Get and format best score. +add_best_score(sBuffer[MAX_BUFFER_LENGTH + 1]) +{ + new id, iMaxKillsId, iMaxKills, iMaxHeadShots + + iMaxKillsId = 0 + iMaxKills = 0 + iMaxHeadShots = 0 + + // Find player + for (id = 1; id < MAX_PLAYERS; id++) + { + if (g_izUserRndStats[id][STATS_KILLS] >= iMaxKills && (g_izUserRndStats[id][STATS_KILLS] > iMaxKills || g_izUserRndStats[id][STATS_HS] > iMaxHeadShots)) + { + iMaxKillsId = id + iMaxKills = g_izUserRndStats[id][STATS_KILLS] + iMaxHeadShots = g_izUserRndStats[id][STATS_HS] + } + } + + // Format statistics. + if (iMaxKillsId) + { + id = iMaxKillsId + + new Float:fGameEff = effec(g_izUserGameStats[id]) + new Float:fRndAcc = accuracy(g_izUserRndStats[id]) + + format(t_sText, MAX_TEXT_LENGTH, "%L: %s^n%d %L / %d hs -- %0.2f%% %L / %0.2f%% %L^n", LANG_SERVER, "BEST_SCORE", g_izUserRndName[id], + iMaxKills, LANG_SERVER, "KILL_S", iMaxHeadShots, fGameEff, LANG_SERVER, "EFF", fRndAcc, LANG_SERVER, "ACC") + add(sBuffer, MAX_BUFFER_LENGTH, t_sText) + } + + return iMaxKillsId +} + +// Get and format team score. +add_team_score(sBuffer[MAX_BUFFER_LENGTH + 1]) +{ + new Float:fzMapEff[MAX_TEAMS], Float:fzMapAcc[MAX_TEAMS], Float:fzRndAcc[MAX_TEAMS] + + // Calculate team stats + for (new iTeam = 0; iTeam < MAX_TEAMS; iTeam++) + { + fzMapEff[iTeam] = effec(g_izTeamGameStats[iTeam]) + fzMapAcc[iTeam] = accuracy(g_izTeamGameStats[iTeam]) + fzRndAcc[iTeam] = accuracy(g_izTeamRndStats[iTeam]) + } + + // Format round team stats, MOTD + format(t_sText, MAX_TEXT_LENGTH, "TERRORIST %d / %0.2f%% %L / %0.2f%% %L^nCT %d / %0.2f%% %L / %0.2f%% %L^n", g_izTeamScore[0], + fzMapEff[0], LANG_SERVER, "EFF", fzRndAcc[0], LANG_SERVER, "ACC", g_izTeamScore[1], fzMapEff[1], LANG_SERVER, "EFF", fzRndAcc[1], LANG_SERVER, "ACC") + add(sBuffer, MAX_BUFFER_LENGTH, t_sText) +} + +// Get and format team stats, chat version +save_team_chatscore() +{ + new Float:fzMapEff[MAX_TEAMS], Float:fzMapAcc[MAX_TEAMS], Float:fzRndAcc[MAX_TEAMS] + + // Calculate team stats + for (new iTeam = 0; iTeam < MAX_TEAMS; iTeam++) + { + fzMapEff[iTeam] = effec(g_izTeamGameStats[iTeam]) + fzMapAcc[iTeam] = accuracy(g_izTeamGameStats[iTeam]) + fzRndAcc[iTeam] = accuracy(g_izTeamRndStats[iTeam]) + } + + // Format game team stats, chat + format(g_sScore, MAX_BUFFER_LENGTH, "TERRORIST %d / %0.2f%% %L / %0.2f%% %L -- CT %d / %0.2f%% %L / %0.2f%% %L", g_izTeamScore[0], + fzMapEff[0], LANG_SERVER, "EFF", fzMapAcc[0], LANG_SERVER, "ACC", g_izTeamScore[1], fzMapEff[1], LANG_SERVER, "EFF", fzMapAcc[1], LANG_SERVER, "ACC") +} + +// Get and format total stats. +add_total_stats(sBuffer[MAX_BUFFER_LENGTH + 1]) +{ + format(t_sText, MAX_TEXT_LENGTH, "%L: %d %L / %d hs -- %d %L / %d %L^n", LANG_SERVER, "TOTAL", g_izUserRndStats[0][STATS_KILLS], LANG_SERVER, "KILL_S", + g_izUserRndStats[0][STATS_HS], g_izUserRndStats[0][STATS_HITS], LANG_SERVER, "HITS", g_izUserRndStats[0][STATS_SHOTS], LANG_SERVER, "SHOT_S") + add(sBuffer, MAX_BUFFER_LENGTH, t_sText) +} + +// Get and format a user's list of body hits from an attacker. +add_attacker_hits(id, iAttacker, sBuffer[MAX_BUFFER_LENGTH + 1]) +{ + new iFound = 0 + + if (iAttacker && iAttacker != id) + { + new izStats[8], izBody[8], iLen + + izStats[STATS_HITS] = 0 + get_user_astats(id, iAttacker, izStats, izBody) + + if (izStats[STATS_HITS]) + { + iFound = 1 + iLen = strlen(sBuffer) + get_user_name(iAttacker, t_sName, MAX_NAME_LENGTH) + + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%L:^n", id, "HITS_YOU_IN", t_sName) + + for (new i = 1; i < 8; i++) + { + if (!izBody[i]) + continue + + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%L: %d^n", id, BODY_PART[i], izBody[i]) + } + } + } + + return iFound +} + +// Get and format killed stats: killer hp, ap, hits. +format_kill_ainfo(id, iKiller, sBuffer[MAX_BUFFER_LENGTH + 1]) +{ + new iFound = 0 + + if (iKiller && iKiller != id) + { + new izStats[8], izBody[8] + new iLen + + iFound = 1 + get_user_name(iKiller, t_sName, MAX_NAME_LENGTH) + izStats[STATS_HITS] = 0 + get_user_astats(id, iKiller, izStats, izBody, t_sWpn, MAX_WEAPON_LENGTH) + + iLen = format(sBuffer, MAX_BUFFER_LENGTH, "%L (%dhp, %dap) >>", id, "KILLED_BY_WITH", t_sName, t_sWpn, distance(g_izUserAttackerDistance[id]), + g_izKilled[id][KILLED_KILLER_HEALTH], g_izKilled[id][KILLED_KILLER_ARMOUR]) + + if (izStats[STATS_HITS]) + { + for (new i = 1; i < 8; i++) + { + if (!izBody[i]) + continue + + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, " %L: %d", id, BODY_PART[i], izBody[i]) + } + } + else + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, " %L", id, "NO_HITS") + } + else + format(sBuffer, MAX_BUFFER_LENGTH, "%L", id, "YOU_NO_KILLER") + + return iFound +} + +// Get and format killed stats: hits, damage on killer. +format_kill_vinfo(id, iKiller, sBuffer[MAX_BUFFER_LENGTH + 1]) +{ + new iFound = 0 + new izStats[8] + new izBody[8] + new iLen + + izStats[STATS_HITS] = 0 + izStats[STATS_DAMAGE] = 0 + get_user_vstats(id, iKiller, izStats, izBody) + + if (iKiller && iKiller != id) + { + iFound = 1 + get_user_name(iKiller, t_sName, MAX_NAME_LENGTH) + iLen = format(sBuffer, MAX_BUFFER_LENGTH, "%L >>", id, "YOU_HIT", t_sName, izStats[STATS_HITS], izStats[STATS_DAMAGE]) + } + else + iLen = format(sBuffer, MAX_BUFFER_LENGTH, "%L >>", id, "LAST_RES", izStats[STATS_HITS], izStats[STATS_DAMAGE]) + + if (izStats[STATS_HITS]) + { + for (new i = 1; i < 8; i++) + { + if (!izBody[i]) + continue + + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, " %L: %d", id, BODY_PART[i], izBody[i]) + } + } + else + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, " %L", id, "NO_HITS") + + return iFound +} + +// Get and format top 15. +format_top15(sBuffer[MAX_BUFFER_LENGTH + 1]) +{ + new iMax = get_statsnum() + new izStats[8], izBody[8] + new iLen = 0 + + if (iMax > 15) + iMax = 15 + + new lKills[16], lDeaths[16], lHits[16], lShots[16], lEff[16], lAcc[16] + + format(lKills, 15, "%L", LANG_SERVER, "KILLS") + format(lDeaths, 15, "%L", LANG_SERVER, "DEATHS") + format(lHits, 15, "%L", LANG_SERVER, "HITS") + format(lShots, 15, "%L", LANG_SERVER, "SHOTS") + format(lEff, 15, "%L", LANG_SERVER, "EFF") + format(lAcc, 15, "%L", LANG_SERVER, "ACC") + + ucfirst(lEff) + ucfirst(lAcc) + + iLen = format(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>") + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%2s %-22.22s %6s %6s %6s %6s %4s %4s %4s^n", "#", "Nick", lKills, lDeaths, lHits, lShots, "HS", lEff, lAcc) + + for (new i = 0; i < iMax && MAX_BUFFER_LENGTH - iLen > 0; i++) + { + get_stats(i, izStats, izBody, t_sName, MAX_NAME_LENGTH) + replace_all(t_sName, MAX_NAME_LENGTH, "<", "[") + replace_all(t_sName, MAX_NAME_LENGTH, ">", "]") + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%2d %-22.22s %6d %6d %6d %6d %4d %3.0f%% %3.0f%%^n", i + 1, t_sName, izStats[STATS_KILLS], + izStats[STATS_DEATHS], izStats[STATS_HITS], izStats[STATS_SHOTS], izStats[STATS_HS], effec(izStats), accuracy(izStats)) + } +} + +// Get and format rank stats. +format_rankstats(id, sBuffer[MAX_BUFFER_LENGTH + 1], iMyId = 0) +{ + new izStats[8] = {0, ...} + new izBody[8] + new iRankPos, iLen + new lKills[16], lDeaths[16], lHits[16], lShots[16], lDamage[16], lEff[16], lAcc[16] + + format(lKills, 15, "%L", id, "KILLS") + format(lDeaths, 15, "%L", id, "DEATHS") + format(lHits, 15, "%L", id, "HITS") + format(lShots, 15, "%L", id, "SHOTS") + format(lDamage, 15, "%L", id, "DAMAGE") + format(lEff, 15, "%L", id, "EFF") + format(lAcc, 15, "%L", id, "ACC") + + ucfirst(lEff) + ucfirst(lAcc) + + iRankPos = get_user_stats(id, izStats, izBody) + iLen = format(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>") + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%L %L^n^n", id, (!iMyId || iMyId == id) ? "YOUR" : "PLAYERS", id, "RANK_IS", iRankPos, get_statsnum()) + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%6s: %d (%d with hs)^n%6s: %d^n%6s: %d^n%6s: %d^n%6s: %d^n%6s: %0.2f%%^n%6s: %0.2f%%^n^n", + lKills, izStats[STATS_KILLS], izStats[STATS_HS], lDeaths, izStats[STATS_DEATHS], lHits, izStats[STATS_HITS], lShots, izStats[STATS_SHOTS], + lDamage, izStats[STATS_DAMAGE], lEff, effec(izStats), lAcc, accuracy(izStats)) + + new L_BODY_PART[8][32] + + for (new i = 1; i < 8; i++) + { + format(L_BODY_PART[i], 31, "%L", id, BODY_PART[i]) + } + + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%10s:^n%10s: %d^n%10s: %d^n%10s: %d^n%10s: %d^n%10s: %d^n%10s: %d^n%10s: %d", "HITS", + L_BODY_PART[1], izBody[1], L_BODY_PART[2], izBody[2], L_BODY_PART[3], izBody[3], L_BODY_PART[4], izBody[4], L_BODY_PART[5], + izBody[5], L_BODY_PART[6], izBody[6], L_BODY_PART[7], izBody[7]) +} + +// Get and format stats. +format_stats(id, sBuffer[MAX_BUFFER_LENGTH + 1]) +{ + new izStats[8] = {0, ...} + new izBody[8] + new iWeapon, iLen + new lKills[16], lDeaths[16], lHits[16], lShots[16], lDamage[16], lEff[16], lAcc[16], lWeapon[16] + + format(lKills, 15, "%L", id, "KILLS") + format(lDeaths, 15, "%L", id, "DEATHS") + format(lHits, 15, "%L", id, "HITS") + format(lShots, 15, "%L", id, "SHOTS") + format(lDamage, 15, "%L", id, "DAMAGE") + format(lEff, 15, "%L", id, "EFF") + format(lAcc, 15, "%L", id, "ACC") + format(lWeapon, 15, "%L", id, "WEAPON") + + ucfirst(lEff) + ucfirst(lAcc) + + get_user_wstats(id, 0, izStats, izBody) + + iLen = format(sBuffer, MAX_BUFFER_LENGTH, "<body bgcolor=#000000><font color=#FFB000><pre>") + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%6s: %d (%d with hs)^n%6s: %d^n%6s: %d^n%6s: %d^n%6s: %d^n%6s: %0.2f%%^n%6s: %0.2f%%^n^n", + lKills, izStats[STATS_KILLS], izStats[STATS_HS], lDeaths, izStats[STATS_DEATHS], lHits, izStats[STATS_HITS], lShots, izStats[STATS_SHOTS], + lDamage, izStats[STATS_DAMAGE], lEff, effec(izStats), lAcc, accuracy(izStats)) + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%-12.12s %6s %6s %6s %6s %6s %4s^n", lWeapon, lKills, lDeaths, lHits, lShots, lDamage, lAcc) + + for (iWeapon = 1; iWeapon < xmod_get_maxweapons() && MAX_BUFFER_LENGTH - iLen > 0 ; iWeapon++) + { + if (get_user_wstats(id, iWeapon, izStats, izBody)) + { + xmod_get_wpnname(iWeapon, t_sWpn, MAX_WEAPON_LENGTH) + iLen += format(sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%-12.12s %6d %6d %6d %6d %6d %3.0f%%^n", t_sWpn, izStats[STATS_KILLS], izStats[STATS_DEATHS], + izStats[STATS_HITS], izStats[STATS_SHOTS], izStats[STATS_DAMAGE], accuracy(izStats)) + } + } +} + +// Show round end stats. If gametime is zero then use default duration time. +show_roundend_hudstats(id, Float:fGameTime) +{ + // Bail out if there no HUD stats should be shown + // for this player or end round stats not created. + if (!g_izStatsSwitch[id]) return + if (!g_sAwardAndScore[0]) return + + // If round end timer is zero clear round end stats. + if (g_fShowStatsTime == 0.0) + { + ClearSyncHud(id, g_HudSync_EndRound) +#if defined STATSX_DEBUG + log_amx("Clear round end HUD stats for #%d", id) +#endif + } + + // Set HUD-duration to default or remaining time. + new Float:fDuration + + if (fGameTime == 0.0) + fDuration = g_fHUDDuration + else + { + fDuration = g_fShowStatsTime + g_fHUDDuration - fGameTime + + if (fDuration > g_fFreezeTime + g_fFreezeLimitTime) + fDuration = g_fFreezeTime + g_fFreezeLimitTime + } + + // Show stats only if more time left than coded minimum. + if (fDuration >= HUD_MIN_DURATION) + { + set_hudtype_endround(fDuration) + ShowSyncHudMsg(id, g_HudSync_EndRound, "%s", g_sAwardAndScore) +#if defined STATSX_DEBUG + log_amx("Show %1.2fs round end HUD stats for #%d", fDuration, id) +#endif + } +} + +// Show round end stats. +show_user_hudstats(id, Float:fGameTime) +{ + // Bail out if there no HUD stats should be shown + // for this player or user stats timer is zero. + if (!g_izStatsSwitch[id]) return + if (g_fzShowUserStatsTime[id] == 0.0) return + + // Set HUD-duration to default or remaining time. + new Float:fDuration + + if (fGameTime == 0.0) + fDuration = g_fHUDDuration + else + { + fDuration = g_fzShowUserStatsTime[id] + g_fHUDDuration - fGameTime + + if (fDuration > g_fFreezeTime + g_fFreezeLimitTime) + fDuration = g_fFreezeTime + g_fFreezeLimitTime + } + + // Show stats only if more time left than coded minimum. + if (fDuration >= HUD_MIN_DURATION) + { + if (ShowKiller) + { + new iKiller + + iKiller = g_izKilled[id][KILLED_KILLER_ID] + get_kill_info(id, iKiller, g_sBuffer) + add_attacker_hits(id, iKiller, g_sBuffer) + set_hudtype_killer(fDuration) + show_hudmessage(id, "%s", g_sBuffer) +#if defined STATSX_DEBUG + log_amx("Show %1.2fs %suser HUD k-stats for #%d", fDuration, g_sBuffer[0] ? "" : "no ", id) +#endif + } + + if (ShowVictims) + { + get_victims(id, g_sBuffer) + set_hudtype_victim(fDuration) + show_hudmessage(id, "%s", g_sBuffer) +#if defined STATSX_DEBUG + log_amx("Show %1.2fs %suser HUD v-stats for #%d", fDuration, g_sBuffer[0] ? "" : "no ", id) +#endif + } + + if (ShowAttackers) + { + get_attackers(id, g_sBuffer) + set_hudtype_attacker(fDuration) + show_hudmessage(id, "%s", g_sBuffer) +#if defined STATSX_DEBUG + log_amx("Show %1.2fs %suser HUD a-stats for #%d", fDuration, g_sBuffer[0] ? "" : "no ", id) +#endif + } + } +} + +//------------------------------------------------------------ +// Plugin commands +//------------------------------------------------------------ + +// Set or get plugin config flags. +public cmdPluginMode(id, level, cid) +{ + if (!cmd_access(id, level, cid, 1)) + return PLUGIN_HANDLED + + if (read_argc() > 1) + read_argv(1, g_sBuffer, MAX_BUFFER_LENGTH) + else + g_sBuffer[0] = 0 + + set_plugin_mode(id, g_sBuffer) + + return PLUGIN_HANDLED +} + +// Display MOTD stats. +public cmdStatsMe(id) +{ + if (!SayStatsMe) + { + client_print(id, print_chat, "%L", id, "DISABLED_MSG") + return PLUGIN_HANDLED + } + + format_stats(id, g_sBuffer) + get_user_name(id, t_sName, MAX_NAME_LENGTH) + show_motd(id, g_sBuffer, t_sName) + + return PLUGIN_CONTINUE +} + +// Display MOTD rank. +public cmdRankStats(id) +{ + if (!SayRankStats) + { + client_print(id, print_chat, "%L", id, "DISABLED_MSG") + return PLUGIN_HANDLED + } + + format_rankstats(id, g_sBuffer) + get_user_name(id, t_sName, MAX_NAME_LENGTH) + show_motd(id, g_sBuffer, t_sName) + + return PLUGIN_CONTINUE +} + +// Display MOTD top15 ranked. +public cmdTop15(id) +{ + if (!SayTop15) + { + client_print(id, print_chat, "%L", id, "DISABLED_MSG") + return PLUGIN_HANDLED + } + + format_top15(g_sBuffer) + show_motd(id, g_sBuffer, "Top 15") + + return PLUGIN_CONTINUE +} + +// Display killer information. +public cmdHp(id) +{ + if (!SayHP) + { + client_print(id, print_chat, "%L", id, "DISABLED_MSG") + return PLUGIN_HANDLED + } + + new iKiller = g_izKilled[id][KILLED_KILLER_ID] + + format_kill_ainfo(id, iKiller, g_sBuffer) + client_print(id, print_chat, "* %s", g_sBuffer) + + return PLUGIN_CONTINUE +} + +// Display user stats. +public cmdMe(id) +{ + if (!SayMe) + { + client_print(id, print_chat, "%L", id, "DISABLED_MSG") + return PLUGIN_HANDLED + } + + format_kill_vinfo(id, 0, g_sBuffer) + client_print(id, print_chat, "* %s", g_sBuffer) + + return PLUGIN_CONTINUE +} + +// Display user rank +public cmdRank(id) +{ + if (!SayRank) + { + client_print(id, print_chat, "%L", id, "DISABLED_MSG") + return PLUGIN_HANDLED + } + + new izStats[8], izBody[8] + new iRankPos, iRankMax + new Float:fEff, Float:fAcc + + iRankPos = get_user_stats(id, izStats, izBody) + iRankMax = get_statsnum() + + fEff = effec(izStats) + fAcc = accuracy(izStats) + + client_print(id, print_chat, "* %L", id, "YOUR_RANK_IS", iRankPos, iRankMax, izStats[STATS_KILLS], izStats[STATS_HITS], fEff, fAcc) + + return PLUGIN_CONTINUE +} + +// Report user weapon status to team. +public cmdReport(id) +{ + if (!SayReport) + { + client_print(id, print_chat, "%L", id, "DISABLED_MSG") + return PLUGIN_HANDLED + } + + new iWeapon, iClip, iAmmo, iHealth, iArmor + + iWeapon = get_user_weapon(id, iClip, iAmmo) + + if (iWeapon != 0) + xmod_get_wpnname(iWeapon, t_sWpn, MAX_WEAPON_LENGTH) + + iHealth = get_user_health(id) + iArmor = get_user_armor(id) + + new lWeapon[16] + + format(lWeapon, 15, "%L", id, "WEAPON") + strtolower(lWeapon) + + if (iClip >= 0) + { + format(g_sBuffer, MAX_BUFFER_LENGTH, "%s: %s, %L: %d/%d, %L: %d, %L: %d", lWeapon, t_sWpn, LANG_SERVER, "AMMO", iClip, iAmmo, LANG_SERVER, "HEALTH", iHealth, LANG_SERVER, "ARMOR", iArmor) + } + else + format(g_sBuffer, MAX_BUFFER_LENGTH, "%s: %s, %L: %d, %L: %d", lWeapon, t_sWpn[7], LANG_SERVER, "HEALTH", iHealth, LANG_SERVER, "ARMOR", iArmor) + + engclient_cmd(id, "say_team", g_sBuffer) + + return PLUGIN_CONTINUE +} + +// Display team map score +public cmdScore(id) +{ + if (!SayScore) + { + client_print(id, print_chat, "%L", id, "DISABLED_MSG") + return PLUGIN_HANDLED + } + + client_print(id, print_chat, "%L: %s", id, "GAME_SCORE", g_sScore) + + return PLUGIN_CONTINUE +} + +// Client switch to enable or disable stats announcements. +public cmdSwitch(id) +{ + g_izStatsSwitch[id] = (g_izStatsSwitch[id]) ? 0 : -1 + num_to_str(g_izStatsSwitch[id], t_sText, MAX_TEXT_LENGTH) + client_cmd(id, "setinfo _amxstatsx %s", t_sText) + + new lEnDis[32] + + format(lEnDis, 31, "%L", id, g_izStatsSwitch[id] ? "ENABLED" : "DISABLED") + client_print(id, print_chat, "* %L", id, "STATS_ANNOUNCE", lEnDis) + + return PLUGIN_CONTINUE +} + +// Player stats menu. +public cmdStats(id) +{ + if (!SayStatsAll) + { + client_print(id, print_chat, "%L", id, "DISABLED_MSG") + return PLUGIN_HANDLED + } + + showStatsMenu(id, g_izUserMenuPosition[id] = 0) + + return PLUGIN_CONTINUE +} + +//-------------------------------- +// Menu +//-------------------------------- + +public actionStatsMenu(id, key) +{ + switch (key) + { + // Key '1' to '7', execute action on this option + case 0..6: + { + new iOption, iIndex + iOption = (g_izUserMenuPosition[id] * PPL_MENU_OPTIONS) + key + + if (iOption >= 0 && iOption < 32) + { + iIndex = g_izUserMenuPlayers[id][iOption] + + if (is_user_connected(iIndex)) + { + switch (g_izUserMenuAction[id]) + { + case 0: format_stats(iIndex, g_sBuffer) + case 1: format_rankstats(iIndex, g_sBuffer, id) + default: g_sBuffer[0] = 0 + } + + if (g_sBuffer[0]) + { + get_user_name(iIndex, t_sName, MAX_NAME_LENGTH) + show_motd(id, g_sBuffer, t_sName) + } + } + } + + showStatsMenu(id, g_izUserMenuPosition[id]) + } + // Key '8', change action + case 7: + { + g_izUserMenuAction[id]++ + + if (g_izUserMenuAction[id] >= MAX_PPL_MENU_ACTIONS) + g_izUserMenuAction[id] = 0 + + showStatsMenu(id, g_izUserMenuPosition[id]) + } + // Key '9', select next page of options + case 8: showStatsMenu(id, ++g_izUserMenuPosition[id]) + // Key '10', cancel or go back to previous menu + case 9: + { + if (g_izUserMenuPosition[id] > 0) + showStatsMenu(id, --g_izUserMenuPosition[id]) + } + } + + return PLUGIN_HANDLED +} + +new g_izUserMenuActionText[MAX_PPL_MENU_ACTIONS][] = {"Show stats", "Show rank stats"} + +showStatsMenu(id, iMenuPos) +{ + new iLen, iKeyMask, iPlayers + new iUserIndex, iMenuPosMax, iMenuOption, iMenuOptionMax + + get_players(g_izUserMenuPlayers[id], iPlayers) + iMenuPosMax = ((iPlayers - 1) / PPL_MENU_OPTIONS) + 1 + + // If menu pos does not excist use last menu (if players has left) + if (iMenuPos >= iMenuPosMax) + iMenuPos = iMenuPosMax - 1 + + iUserIndex = iMenuPos * PPL_MENU_OPTIONS + iLen = format(g_sBuffer, MAX_BUFFER_LENGTH, "\y%L\R%d/%d^n\w^n", id, "SERVER_STATS", iMenuPos + 1, iMenuPosMax) + iMenuOptionMax = iPlayers - iUserIndex + + if (iMenuOptionMax > PPL_MENU_OPTIONS) + iMenuOptionMax = PPL_MENU_OPTIONS + + for (iMenuOption = 0; iMenuOption < iMenuOptionMax; iMenuOption++) + { + get_user_name(g_izUserMenuPlayers[id][iUserIndex++], t_sName, MAX_NAME_LENGTH) + iKeyMask |= (1<<iMenuOption) + iLen += format(g_sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "%d. %s^n\w", iMenuOption + 1, t_sName) + } + + iKeyMask |= MENU_KEY_8|MENU_KEY_0 + iLen += format(g_sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "^n8. %s^n\w", g_izUserMenuActionText[g_izUserMenuAction[id]]) + + if (iPlayers > iUserIndex) + { + iLen += format(g_sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "^n9. %L...", id, "MORE") + iKeyMask |= MENU_KEY_9 + } + + if (iMenuPos > 0) + iLen += format(g_sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "^n0. %L", id, "BACK") + else + iLen += format(g_sBuffer[iLen], MAX_BUFFER_LENGTH - iLen, "^n0. %L", id, "EXIT") + + show_menu(id, iKeyMask, g_sBuffer, -1, "Server Stats") + + return PLUGIN_HANDLED +} + +//------------------------------------------------------------ +// Plugin events +//------------------------------------------------------------ + +// Reset game stats on game start and restart. +public eventStartGame() +{ + read_data(2, t_sText, MAX_TEXT_LENGTH) + + if (t_sText[6] == 'w') + { + read_data(3, t_sText, MAX_TEXT_LENGTH) + g_fStartGame = get_gametime() + float(str_to_num(t_sText)) + } + else + g_fStartGame = get_gametime() + + return PLUGIN_CONTINUE +} + +// Round start +public eventStartRound() +{ + new iTeam, id, i + + new Float:roundtime = get_cvar_float("mp_roundtime"); + if (read_data(1) >= floatround(roundtime * 60.0,floatround_floor) || (roundtime == 2.3 && read_data(1) == 137)) // these round too weird for it to work through pawn, have to add an exception for it + { +#if defined STATSX_DEBUG + log_amx("Reset round stats") +#endif + + // Reset game stats on game start and restart. + if (g_fStartGame > 0.0 && g_fStartGame <= get_gametime()) + { +#if defined STATSX_DEBUG + log_amx("Reset game stats") +#endif + g_fStartGame = 0.0 + + // Clear team and game stats. + for (iTeam = 0; iTeam < MAX_TEAMS; iTeam++) + { + g_izTeamEventScore[iTeam] = 0 + + for (i = 0; i < 8; i++) + g_izTeamGameStats[iTeam][i] = 0 + } + + // Clear game stats, incl '0' that is sum of all users. + for (id = 0; id < MAX_PLAYERS; id++) + { + for (i = 0; i < 8; i++) + g_izUserGameStats[id][i] = 0 + } + } + + // Update team score with "TeamScore" event values and + // clear team round stats. + for (iTeam = 0; iTeam < MAX_TEAMS; iTeam++) + { + g_izTeamScore[iTeam] = g_izTeamEventScore[iTeam] + + for (i = 0; i < 8; i++) + g_izTeamRndStats[iTeam][i] = 0 + } + + // Clear user round stats, incl '0' that is sum of all users. + for (id = 0; id < MAX_PLAYERS; id++) + { + g_izUserRndName[id][0] = 0 + + for (i = 0; i < 8; i++) + g_izUserRndStats[id][i] = 0 + + g_fzShowUserStatsTime[id] = 0.0 + } + + // Allow end round stats and reset end round triggered indicator. + g_iRoundEndTriggered = 0 + g_iRoundEndProcessed = 0 + g_fShowStatsTime = 0.0 + + // Update local configuration vars with value in cvars. + get_config_cvars() + } + + return PLUGIN_CONTINUE +} + +// Reset killer info on round restart. +public eventResetHud(id) +{ + new args[1] + args[0] = id + + if (g_iPluginMode & MODE_HUD_DELAY) + set_task(0.01, "delay_resethud", 200 + id, args, 1) + else + delay_resethud(args) + + return PLUGIN_CONTINUE +} + +public delay_resethud(args[]) +{ + new id = args[0] + new Float:fGameTime + + // Show user and score round stats after HUD-reset +#if defined STATSX_DEBUG + log_amx("Reset HUD for #%d", id) +#endif + fGameTime = get_gametime() + show_user_hudstats(id, fGameTime) + show_roundend_hudstats(id, fGameTime) + + // Reset round stats + g_izKilled[id][KILLED_KILLER_ID] = 0 + g_izKilled[id][KILLED_KILLER_STATSFIX] = 0 + g_izShowStatsFlags[id] = -1 // Initialize flags + g_fzShowUserStatsTime[id] = 0.0 + g_izUserAttackerDistance[id] = 0 + + for (new i = 0; i < MAX_PLAYERS; i++) + g_izUserVictimDistance[id][i] = 0 + + return PLUGIN_CONTINUE +} + +// Save killer info on death. +public client_death(killer, victim, wpnindex, hitplace, TK) +{ + // Bail out if no killer. + if (!killer) + return PLUGIN_CONTINUE + + if (killer != victim) + { + new iaVOrigin[3], iaKOrigin[3] + new iDistance + + get_user_origin(victim, iaVOrigin) + get_user_origin(killer, iaKOrigin) + + g_izKilled[victim][KILLED_KILLER_ID] = killer + g_izKilled[victim][KILLED_KILLER_HEALTH] = get_user_health(killer) + g_izKilled[victim][KILLED_KILLER_ARMOUR] = get_user_armor(killer) + g_izKilled[victim][KILLED_KILLER_STATSFIX] = 0 + + iDistance = get_distance(iaVOrigin, iaKOrigin) + g_izUserAttackerDistance[victim] = iDistance + g_izUserVictimDistance[killer][victim] = iDistance + } + + g_izKilled[victim][KILLED_TEAM] = get_user_team(victim) + g_izKilled[victim][KILLED_KILLER_STATSFIX] = 1 + + // Display kill stats for the player if round + // end stats was not processed. + if (!g_iRoundEndProcessed) + kill_stats(victim) + + return PLUGIN_CONTINUE +} + +// Display hudmessage stats on death. +// This will also update all round and game stats. +// Must be called at least once per round. +kill_stats(id) +{ + // Bail out if user stats timer is non-zero, + // ie function already called. + if (g_fzShowUserStatsTime[id] > 0.0) + { + return + } + + new team = get_user_team(id) + if (team < 1 || team > 2) + { + return + } + + // Flag kill stats displayed for this player. + g_fzShowUserStatsTime[id] = get_gametime() + + // Add user death stats to user round stats + new izStats[8], izBody[8] + new iTeam, i + new iKiller + + iKiller = g_izKilled[id][KILLED_KILLER_ID] + + // Get user's team (if dead use the saved team) + if (iKiller) + iTeam = g_izKilled[id][KILLED_TEAM] - 1 + else + iTeam = get_user_team(id) - 1 + + get_user_name(id, g_izUserRndName[id], MAX_NAME_LENGTH) + + if (get_user_rstats(id, izStats, izBody)) + { + // Update user's team round stats + if (iTeam >= 0 && iTeam < MAX_TEAMS) + { + for (i = 0; i < 8; i++) + { + g_izTeamRndStats[iTeam][i] += izStats[i] + g_izTeamGameStats[iTeam][i] += izStats[i] + g_izUserRndStats[0][i] += izStats[i] + g_izUserGameStats[0][i] += izStats[i] + } + } + + // Update user's round stats + if (g_izUserUserID[id] == get_user_userid(id)) + { + for (i = 0; i < 8; i++) + { + g_izUserRndStats[id][i] += izStats[i] + g_izUserGameStats[id][i] += izStats[i] + } + } else { + g_izUserUserID[id] = get_user_userid(id) + + for (i = 0; i < 8; i++) + { + g_izUserRndStats[id][i] = izStats[i] + g_izUserGameStats[id][i] = izStats[i] + } + } + + } // endif (get_user_rstats()) + + // Report stats in the chat section, if player is killed. + if (KillerChat && iKiller && iKiller != id) + { + if (format_kill_ainfo(id, iKiller, g_sBuffer)) + { + client_print(id, print_chat, "* %s", g_sBuffer) + format_kill_vinfo(id, iKiller, g_sBuffer) + } + + client_print(id, print_chat, "* %s", g_sBuffer) + } + + // Display player stats info. +#if defined STATSX_DEBUG + log_amx("Kill stats for #%d", id) +#endif + show_user_hudstats(id, 0.0) +} + +public eventEndRound() +{ + // Update local configuration vars with value in cvars. + get_config_cvars() + + // If first end round event in the round, calculate team score. + if (!g_iRoundEndTriggered) + { + read_data(2, t_sText, MAX_TEXT_LENGTH) + + if (t_sText[7] == 't') // Terrorist wins + g_izTeamScore[0]++ + else if (t_sText[7] == 'c') // CT wins + g_izTeamScore[1]++ + } + + set_task(0.3, "ERTask", 997) + + return PLUGIN_CONTINUE +} + +public ERTask() +{ + // Flag round end triggered. + g_iRoundEndTriggered = 1 + + // Display round end stats to all players. + endround_stats() +} + +endround_stats() +{ + // Bail out if end round stats has already been processed + // or round end not triggered. + if (g_iRoundEndProcessed || !g_iRoundEndTriggered) + return + + new iaPlayers[32], iPlayer, iPlayers, id + + get_players(iaPlayers, iPlayers) + + // Display attacker & victim list for all living players. + // This will also update all round and game stats for all players + // not killed. +#if defined STATSX_DEBUG + log_amx("End round stats") +#endif + + for (iPlayer = 0; iPlayer < iPlayers; iPlayer++) + { + id = iaPlayers[iPlayer] + + if (g_fzShowUserStatsTime[id] == 0.0) + { + kill_stats(id) + } + } + + g_sAwardAndScore[0] = 0 + + // Create round awards. + if (ShowMostDisruptive) + add_most_disruptive(g_sAwardAndScore) + if (ShowBestScore) + add_best_score(g_sAwardAndScore) + + // Create round score. + // Compensate HUD message if awards are disabled. + if (ShowTeamScore || ShowTotalStats) + { + if (ShowMostDisruptive && ShowBestScore) + add(g_sAwardAndScore, MAX_BUFFER_LENGTH, "^n^n") + else if (ShowMostDisruptive || ShowBestScore) + add(g_sAwardAndScore, MAX_BUFFER_LENGTH, "^n^n^n^n") + else + add(g_sAwardAndScore, MAX_BUFFER_LENGTH, "^n^n^n^n^n^n") + + if (ShowTeamScore) + add_team_score(g_sAwardAndScore) + + if (ShowTotalStats) + add_total_stats(g_sAwardAndScore) + } + + save_team_chatscore() + + // Get and save round end stats time. + g_fShowStatsTime = get_gametime() + + // Display round end stats to all players. + for (iPlayer = 0; iPlayer < iPlayers; iPlayer++) + { + id = iaPlayers[iPlayer] + show_roundend_hudstats(id, 0.0) + } + + // Flag round end processed. + g_iRoundEndProcessed = 1 +} + +public eventTeamScore() +{ + new sTeamID[1 + 1], iTeamScore + read_data(1, sTeamID, 1) + iTeamScore = read_data(2) + g_izTeamEventScore[(sTeamID[0] == 'C') ? 1 : 0] = iTeamScore + + return PLUGIN_CONTINUE +} + +public eventIntermission() +{ + if (EndPlayer || EndTop15) + set_task(1.0, "end_game_stats", 900) +} + +public end_game_stats() +{ + new iaPlayers[32], iPlayer, iPlayers, id + + if (EndPlayer) + { + get_players(iaPlayers, iPlayers) + + for (iPlayer = 0; iPlayer < iPlayers; iPlayer++) + { + id = iaPlayers[iPlayer] + + if (!g_izStatsSwitch[id]) + continue // Do not show any stats + + cmdStatsMe(iaPlayers[iPlayer]) + } + } + else if (EndTop15) + { + get_players(iaPlayers, iPlayers) + format_top15(g_sBuffer) + + for (iPlayer = 0; iPlayer < iPlayers; iPlayer++) + { + id = iaPlayers[iPlayer] + + if (!g_izStatsSwitch[id]) + continue // Do not show any stats + + show_motd(iaPlayers[iPlayer], g_sBuffer, "Top 15") + } + } + + return PLUGIN_CONTINUE +} + +public eventSpecMode(id) +{ + new sData[12] + read_data(2, sData, 11) + g_izSpecMode[id] = (sData[10] == '2') + + return PLUGIN_CONTINUE +} + +public eventShowRank(id) +{ + if (SpecRankInfo && g_izSpecMode[id]) + { + new iPlayer = read_data(2) + + if (is_user_connected(iPlayer)) + { + new izStats[8], izBody[8] + new iRankPos, iRankMax + + get_user_name(iPlayer, t_sName, MAX_NAME_LENGTH) + + iRankPos = get_user_stats(iPlayer, izStats, izBody) + iRankMax = get_statsnum() + + set_hudtype_specmode() + ShowSyncHudMsg(id, g_HudSync_SpecInfo, "%L", id, "X_RANK_IS", t_sName, iRankPos, iRankMax) + } + } + + return PLUGIN_CONTINUE +} + +public client_connect(id) +{ + if (ShowStats) + { + get_user_info(id, "_amxstatsx", t_sText, MAX_TEXT_LENGTH) + g_izStatsSwitch[id] = (t_sText[0]) ? str_to_num(t_sText) : -1 + } + else + g_izStatsSwitch[id] = 0 + + g_izKilled[id][KILLED_KILLER_ID] = 0 + g_izKilled[id][KILLED_KILLER_STATSFIX] = 0 + g_izShowStatsFlags[id] = 0 // Clear all flags + g_fzShowUserStatsTime[id] = 0.0 + + return PLUGIN_CONTINUE +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/telemenu.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/telemenu.sma new file mode 100644 index 0000000..d2d0b7a --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/telemenu.sma @@ -0,0 +1,199 @@ +/* AMX Mod X +* Teleport Menu Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> +#include <amxmisc> +#include <fun> + +new g_menuPosition[33] +new g_menuPlayers[33][32] +new g_menuPlayersNum[33] +new g_menuOption[33] = {-1, ...} +new g_menuOrgin[33][3] +new g_coloredMenus + +public plugin_init() +{ + register_plugin("Teleport Menu", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("telemenu.txt") + register_dictionary("common.txt") + register_clcmd("amx_teleportmenu", "cmdTelMenu", ADMIN_CFG, "- displays teleport menu") + register_menucmd(register_menuid("Teleport Menu"), 1023, "actionTelMenu") + + g_coloredMenus = colored_menus() +} + +public actionTelMenu(id, key) +{ + switch (key) + { + case 6: + { + g_menuOption[id] = 1 - g_menuOption[id] + displayTelMenu(id, g_menuPosition[id]) + } + case 7: + { + if (g_menuOption[id] < 0) /* unlocking position for the first time */ + g_menuOption[id] = 0 + + get_user_origin(id, g_menuOrgin[id]) + displayTelMenu(id, g_menuPosition[id]) + } + case 8: displayTelMenu(id, ++g_menuPosition[id]) + case 9: displayTelMenu(id, --g_menuPosition[id]) + default: + { + new player = g_menuPlayers[id][g_menuPosition[id] * 6 + key] + new name2[32] + + get_user_name(player, name2, 31) + + if (!is_user_alive(player)) + { + client_print(id, print_chat, "%L", id, "CANT_PERF_DEAD", name2) + displayTelMenu(id, g_menuPosition[id]) + return PLUGIN_HANDLED + } + + if (g_menuOption[id] > 0) + { + set_user_origin(player, g_menuOrgin[id]) + } else { + new origin[3] + + get_user_origin(id, origin) + set_user_origin(player, origin) + } + + new authid[32], authid2[32], name[32] + + get_user_authid(id, authid, 31) + get_user_authid(player, authid2, 31) + get_user_name(id, name, 31) + + log_amx("Cmd: ^"%s<%d><%s><>^" teleport ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2) + + show_activity_key("ADMIN_TELEPORT_1", "ADMIN_TELEPORT_2", name, name2); + + displayTelMenu(id, g_menuPosition[id]) + } + } + + return PLUGIN_HANDLED +} + +displayTelMenu(id, pos) +{ + if (pos < 0) + return + + get_players(g_menuPlayers[id], g_menuPlayersNum[id]) + + new menuBody[512] + new b = 0 + new i + new name[32] + new start = pos * 6 + new bool:blockMenu = (is_user_alive(id) && g_menuOption[id] < 1) ? true : false + + if (start >= g_menuPlayersNum[id]) + start = pos = g_menuPosition[id] = 0 + + new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "TELE_MENU", pos + 1, (g_menuPlayersNum[id] / 6 + ((g_menuPlayersNum[id] % 6) ? 1 : 0))) + new end = start + 6 + new keys = MENU_KEY_0|MENU_KEY_8 + + if (end > g_menuPlayersNum[id]) + end = g_menuPlayersNum[id] + + for (new a = start; a < end; ++a) + { + i = g_menuPlayers[id][a] + get_user_name(i, name, 31) + + if (blockMenu || !is_user_alive(i) || (id != i && get_user_flags(i) & ADMIN_IMMUNITY)) + { + ++b + + if (g_coloredMenus) + len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name) + else + len += format(menuBody[len], 511-len, "#. %s^n", name) + } else { + keys |= (1<<b) + + if (is_user_admin(i)) + len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name) + else + len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name) + } + } + + if (g_menuOption[id] > 0) // 1 + { + keys |= MENU_KEY_7 + len += format(menuBody[len], 511-len, "^n7. To location: %d %d %d^n", g_menuOrgin[id][0], g_menuOrgin[id][1], g_menuOrgin[id][2]) + } + else if (g_menuOption[id]) // -1 + { + if (g_coloredMenus) + len += format(menuBody[len], 511-len, "^n\d7. %L^n\w", id, "CUR_LOC") + else + len += format(menuBody[len], 511-len, "^n#. %L^n", id, "CUR_LOC") + } else { // 0 + keys |= MENU_KEY_7 + len += format(menuBody[len], 511-len, "^n7. %L^n", id, "CUR_LOC") + } + + len += format(menuBody[len], 511-len, "8. %L^n", id, "SAVE_LOC") + + if (end != g_menuPlayersNum[id]) + { + format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") + keys |= MENU_KEY_9 + } + else + format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") + + show_menu(id, keys, menuBody, -1, "Teleport Menu") +} + +public cmdTelMenu(id, level, cid) +{ + if (cmd_access(id, level, cid, 1)) + displayTelMenu(id, g_menuPosition[id] = 0) + + return PLUGIN_HANDLED +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/admins_test.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/admins_test.sma new file mode 100644 index 0000000..f3edd7a --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/admins_test.sma @@ -0,0 +1,123 @@ +#include <amxmodx> + +new __testnumber; +new errcount; + +enum TestType +{ + TT_Equal = 0, + TT_LessThan, + TT_GreaterThan, + TT_LessThanEqual, + TT_GreaterThanEqual, + TT_NotEqual +}; + +new TestWords[6][] = { + "==", + "<", + ">", + "<=", + ">=", + "!=" +}; + + + +stock test(A,B=0,TestType:Type=TT_Equal) +{ + ++__testnumber; + + new passed=0; + + switch (Type) + { + case TT_Equal: if (A==B) passed=1; + case TT_LessThan: if (A<B) passed=1; + case TT_GreaterThan: if (A>B) passed=1; + case TT_LessThanEqual: if (A<=B) passed=1; + case TT_GreaterThanEqual: if (A>=B) passed=1; + case TT_NotEqual: if (A!=B) passed=1; + } + + if (!passed) + { + log_amx("Failed test #%d (%d %s %d)",__testnumber,A,TestWords[_:Type],B); + errcount++; + } +} + + +public plugin_init() +{ + register_srvcmd("testadmins","testadmins"); +} +public testadmins() +{ + + new AuthData[44]; + new Password[32]; + new Access; + new Flags; + new id; + + __testnumber=0; + errcount=0; + + + test(admins_num(),0); + + admins_push("STEAM_0:1:23456","",read_flags("abcdefghijklmnopqrstu"),read_flags("ce")); + + test(admins_num(),1); + + admins_push("ABCDEFGHIJKLMNOP","abcdefghijklmnop",read_flags("z"),read_flags("a")); + + test(admins_num(),2); + + admins_push("ZYXWVUTSRQPONMLKJIHGFEDCBA","plop",read_flags("a"),read_flags("b")); + + test(admins_num(),3); + + id=0; + + admins_lookup(id,AdminProp_Auth,AuthData,sizeof(AuthData)-1); + admins_lookup(id,AdminProp_Password,Password,sizeof(Password)-1); + Access=admins_lookup(id,AdminProp_Access); + Flags=admins_lookup(id,AdminProp_Flags); + + test(strcmp(AuthData,"STEAM_0:1:23456"),0); + test(strcmp(Password,""),0); + test(Access,read_flags("abcdefghijklmnopqrstu")); + test(Flags,read_flags("ce")); + + id++; + + admins_lookup(id,AdminProp_Auth,AuthData,sizeof(AuthData)-1); + admins_lookup(id,AdminProp_Password,Password,sizeof(Password)-1); + Access=admins_lookup(id,AdminProp_Access); + Flags=admins_lookup(id,AdminProp_Flags); + + test(strcmp(AuthData,"ABCDEFGHIJKLMNOP"),0); + test(strcmp(Password,"abcdefghijklmnop"),0); + test(Access,read_flags("z")); + test(Flags,read_flags("a")); + + id++; + + admins_lookup(id,AdminProp_Auth,AuthData,sizeof(AuthData)-1); + admins_lookup(id,AdminProp_Password,Password,sizeof(Password)-1); + Access=admins_lookup(id,AdminProp_Access); + Flags=admins_lookup(id,AdminProp_Flags); + + test(strcmp(AuthData,"ZYXWVUTSRQPONMLKJIHGFEDCBA"),0); + test(strcmp(Password,"plop"),0); + test(Access,read_flags("a")); + test(Flags,read_flags("b")); + + admins_flush(); + + test(admins_num(),0); + + server_print("test complete, %d errors",errcount); +} \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/arraytest.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/arraytest.sma new file mode 100644 index 0000000..609e6d7 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/arraytest.sma @@ -0,0 +1,459 @@ +#include <amxmodx> + + +new __testnumber; +new errcount; +new __testfunc[32]; +new __testfuncnum; + +enum TestType +{ + TT_Equal = 0, + TT_LessThan, + TT_GreaterThan, + TT_LessThanEqual, + TT_GreaterThanEqual, + TT_NotEqual +}; + +new TestWords[6][] = { + "==", + "<", + ">", + "<=", + ">=", + "!=" +}; + + + +stock test(A,B=0,TestType:Type=TT_Equal) +{ + ++__testnumber; + + new passed=0; + + switch (Type) + { + case TT_Equal: if (A==B) passed=1; + case TT_LessThan: if (A<B) passed=1; + case TT_GreaterThan: if (A>B) passed=1; + case TT_LessThanEqual: if (A<=B) passed=1; + case TT_GreaterThanEqual: if (A>=B) passed=1; + case TT_NotEqual: if (A!=B) passed=1; + } + + if (!passed) + { + log_amx("Failed test #%d (%d %s %d)",__testnumber,A,TestWords[_:Type],B); + errcount++; + } +} +stock starttests(const startfunc[]) +{ + __testnumber=0; + errcount=0; + __testfuncnum=1; + server_print("Starting tests..."); + formatex(__testfunc,sizeof(__testfunc)-1,"%s",startfunc); + + new func[32]; + formatex(func,sizeof(func)-1,"%s%d",__testfunc,__testfuncnum++); + set_task(0.1,func); +} + +stock showres() +{ + if (errcount==0) + { + new func[32]; + formatex(func,sizeof(func)-1,"%s%d",__testfunc,__testfuncnum++); + if (get_func_id(func)==-1) + { + server_print("All tests ok!"); + } + else + { + server_print("Test ok, moving on..."); + + set_task(0.1,func); + } + } + else + { + server_print("Test failed, aborting."); + } +} + + + +public plugin_init() +{ + register_srvcmd("arraytest","arraytest"); +} + +public arraytest() +{ + starttests("arraytest"); +} +public arraytest1() +{ + server_print("Testing 1000 iterations of 1-cell arrays..."); + + new Float:f; + new Array:a=ArrayCreate(1); + if (a == Invalid_Array) + { + } + for (new i=0; i<1000; i++) + { + f=float(i); + ArrayPushCell(a,f); + } + new Float:r; + for (new i=0; i<1000; i++) + { + f=float(i); + r=Float:ArrayGetCell(a, i); + + // This is normally bad for float "casting", but in this case it should be fine. + test(_:f, _:r); + + + // Reset with inversed values + new g=_:f; + g=~g; + + ArraySetCell(a, i, g); + + r=Float:ArrayGetCell(a,i); + + test(g, _:r); + + } + + ArrayDestroy(a); + + showres(); +} +stock bool:checkarray(const a[], const b[], size) +{ + while (size--) + { + if (a[size]!=b[size]) + { + return false; + } + } + + return true; +} +stock invarray(a[],size) +{ + while (size--) + { + a[size] = ~a[size]; + } + +} +public arraytest2() +{ + server_print("Testing 1000 iterations of 40-cell arrays..."); + + new Array:a=ArrayCreate(40); + new buff[40]; + new buffb[40]; + for (new i=0; i<1000; i++) + { + arrayset(buff,i,sizeof(buff)); + + ArrayPushArray(a, buff); + } + for (new i=0; i<1000; i++) + { + arrayset(buff, i, sizeof(buff)); + + ArrayGetArray(a, i, buffb); + + test(_:checkarray(buff,buffb,sizeof(buff)),1); + + // Now overwrite the array with inversed value + invarray(buff,sizeof(buff)); + + ArraySetArray(a, i, buff); + + ArrayGetArray(a, i, buffb); + + test(_:checkarray(buff,buffb,sizeof(buff)),1); + } + + ArrayDestroy(a); + + showres(); +} +public arraytest3() +{ + server_print("Testing 1000 iterations of strings..."); + + // The string is 10 long, the string we're trying to pass is 20 long. + + new Array:a=ArrayCreate(10); + + new buff[20]="1234567890abcdefghi"; + new buffb[20]; + + for (new i=0; i<1000; i++) + { + ArrayPushString(a, buff); + } + for (new i=0; i<1000; i++) + { + ArrayGetString(a, i, buffb, sizeof(buffb)-1); + + test(strcmp(buffb,"123456789"),0); + + ArraySetString(a, i, "9876543210"); + + ArrayGetString(a, i, buffb, sizeof(buffb)-1); + + test(strcmp(buffb,"987654321"),0); + + buffb[0]=0; + + formatex(buffb,sizeof(buffb)-1,"%S", ArrayGetStringHandle(a, i)); + + test(strcmp(buffb, "987654321"),0); + } + + ArrayDestroy(a); + + showres(); +} + +public sortcallback(Array:a, b, c) +{ + static stra[40]; + static strb[40]; + + ArrayGetString(a, b, stra, sizeof(stra)-1); + ArrayGetString(a, c, strb, sizeof(strb)-1); + return strcmp(stra,strb); +} +public arraytest4() +{ + server_print("Testing sorting function..."); + + new Array:a=ArrayCreate(40); + + ArrayPushString(a, "z"); + ArrayPushString(a, "yz"); + ArrayPushString(a, "xyz"); + ArrayPushString(a, "wxyz"); + ArrayPushString(a, "vwxyz"); + ArrayPushString(a, "uvwxyz"); + ArrayPushString(a, "tuvwxyz"); + ArrayPushString(a, "stuvwxyz"); + ArrayPushString(a, "rstuvwxyz"); + ArrayPushString(a, "qrstuvwxyz"); + ArrayPushString(a, "pqrstuvwxyz"); + ArrayPushString(a, "opqrstuvwxyz"); + ArrayPushString(a, "nopqrstuvwxyz"); + ArrayPushString(a, "mnopqrstuvwxyz"); + ArrayPushString(a, "lmnopqrstuvwxyz"); + ArrayPushString(a, "klmnopqrstuvwxyz"); + ArrayPushString(a, "jklmnopqrstuvwxyz"); + ArrayPushString(a, "ijklmnopqrstuvwxyz"); + ArrayPushString(a, "hijklmnopqrstuvwxyz"); + ArrayPushString(a, "ghijklmnopqrstuvwxyz"); + ArrayPushString(a, "fghijklmnopqrstuvwxyz"); + ArrayPushString(a, "efghijklmnopqrstuvwxyz"); + ArrayPushString(a, "defghijklmnopqrstuvwxyz"); + ArrayPushString(a, "cdefghijklmnopqrstuvwxyz"); + ArrayPushString(a, "bcdefghijklmnopqrstuvwxyz"); + ArrayPushString(a, "abcdefghijklmnopqrstuvwxyz"); + + new OldSize=ArraySize(a); + + ArraySort(a, "sortcallback"); + + test(ArraySize(a),OldSize); + + new buff[40]; + + ArrayGetString(a,0,buff,sizeof(buff)-1); + + test(strcmp(buff,"abcdefghijklmnopqrstuvwxyz"),0); + + ArrayGetString(a,25,buff,sizeof(buff)-1); + + test(strcmp(buff,"z"),0); + + + new start='a'; + + for (new i=0;i<OldSize;i++) + { + ArrayGetString(a,i,buff,sizeof(buff)-1) + + test(buff[0],start++); + } + + showres(); +} +public arraytest5() +{ + server_print("Testing ArrayDeleteItem()..."); + new Array:a=ArrayCreate(1); + + new v; + + for (new i=0; i<1000; i++) + { + ArrayPushCell(a, i); + } + for (new i=ArraySize(a) - 1; i>=0 ; i--) + { + if (i % 2 == 0) + { + ArrayDeleteItem(a, i); + } + } + test(ArraySize(a), 500); + for (new i=0; i< 500; i++) + { + v=ArrayGetCell(a, i); + + // All items should be incrementing odd numbers + test(((i + 1) * 2) - 1, v); + + // All remaining entries should be odd + test((v & 1), 1); + } + ArrayDestroy(a); + + a=ArrayCreate(1); + // Repeat the same test, but check even numbers + for (new i=0; i<1000; i++) + { + ArrayPushCell(a, i); + } + for (new i=ArraySize(a) - 1; i>=0 ; i--) + { + if (i % 2 == 1) + { + ArrayDeleteItem(a, i); + } + } + test(ArraySize(a), 500); + for (new i=0; i< 500; i++) + { + v=ArrayGetCell(a, i); + + // All items should be incrementing even numbers + test(((i + 1) * 2) - 2, v); + + // All remaining entries should be even + test((v & 1), 0); + } + ArrayDestroy(a); + + showres(); +} +public arraytest6() +{ + server_print("Testing ArrayInsertCellAfter()..."); + + new Array:a=ArrayCreate(1); + + for (new i=0; i<10;i++) + { + ArrayPushCell(a, i); + new item=ArraySize(a)-1; + for (new j=0; j<10; j++) + { + ArrayInsertCellAfter(a, item + j, j); + } + } + + test(ArraySize(a), 110); + + new v; + for (new i=0; i<110; i++) + { + v=ArrayGetCell(a, i); + + test(v, i / 10); + for (new j=0; j<10; j++) + { + v=ArrayGetCell(a, ++i); + test(v, j); + } + } + + + ArrayDestroy(a); + + showres(); +} +public arraytest7() +{ + server_print("Testing ArrayInsertCellBefore()..."); + + new Array:a=ArrayCreate(1); + + for (new i=0; i<10;i++) + { + ArrayPushCell(a, i); + new item=ArraySize(a)-1; + for (new j=0; j<10; j++) + { + ArrayInsertCellBefore(a, item, j); + } + } + + test(ArraySize(a), 110); + + new v; + for (new i=0; i<110; i++) + { + for (new j=9; j>=0; j--) + { + v=ArrayGetCell(a, i++); + test(v, j); + } + + v=ArrayGetCell(a, i); + + test(v, (i - 10) / 10); + } + + + ArrayDestroy(a); + + showres(); +} +public arraytest8() +{ + server_print("Testing ArraySwap()..."); + new Array:a=ArrayCreate(1); + + for (new i=0; i<10; i++) + { + ArrayPushCell(a, i); + } + for (new i=0; i<5; i++) + { + ArraySwap(a, i, (10 - (i + 1))); + } + new v; + for (new i=0; i<5; i++) + { + v=ArrayGetCell(a, i); + + test(v, (10 - (i + 1))); + } + + ArrayDestroy(a); + + showres(); +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/callfunc_test.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/callfunc_test.sma new file mode 100644 index 0000000..f19ecd3 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/callfunc_test.sma @@ -0,0 +1,60 @@ +#include <amxmodx> + +public plugin_init() +{ + register_plugin("callfunc test", "1.0", "BAILOPAN") + + register_srvcmd("test_callfunc", "Command_Callfunc") +} + +public OnCallfuncReceived(num, str[], &val, array[], array2[], size, hello2[1]) +{ + server_print("num = %d (expected: %d)", num, 5) + server_print("str[] = ^"%s^" (expected: %s)", str, "Gaben") + + server_print("val = %d (expected %d, setting to %d)", val, 62, 15) + val = 15 + server_print("printing %d elements of array[] (expected: %d)", size, 6) + for (new i=0; i<size; i++) + { + server_print("array[%d] = %d (expected: %d)", i, array[i], i) + } + for (new i=0; i<size; i++) + { + server_print("array2[%d] = %d (expected: %d)", i, array[i], i) + } + array[0] = 5 + array2[1] = 6 + hello2[0] = 25 +} + +public Command_Callfunc() +{ + new a = 62 + new hello[] = {0,1,2,3,4,5} + new hello2[] = {9} + new pm = 6 + new err + + if ((err=callfunc_begin("OnCallfuncReceived")) < 1) + { + server_print("Failed to call callfunc_begin()! Error: %d", err) + + return PLUGIN_HANDLED + } + callfunc_push_int(5) + callfunc_push_str("Gaben") + callfunc_push_intrf(a) + callfunc_push_array(hello, pm) + callfunc_push_array(hello, pm) + callfunc_push_int(pm) + callfunc_push_array(hello2, 1, false) + callfunc_end() + + server_print("a = %d (expected: %d)", a, 15) + server_print("hello[0] = %d (expected: %d)", hello[0], 5) + server_print("hello[1] = %d (expected: %d)", hello[1], 6) + server_print("hello2[0] = %d (expected: %d)", hello2[0], 9) + + return PLUGIN_HANDLED +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/fakemeta_tests.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/fakemeta_tests.sma new file mode 100644 index 0000000..c7843a8 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/fakemeta_tests.sma @@ -0,0 +1,18 @@ +#include <amxmodx> +#include <fakemeta> + +public plugin_init() +{ + register_plugin("Fakemeta Tests", "1.0", "BAILOPAN") + register_forward(FM_ServerDeactivate, "Hook_ServerDeactivate") +} + +public Hook_ServerDeactivate() +{ + server_print("[FAKEMETA TEST] ServerDeactivate() at %f", get_gametime()) +} + +public plugin_end() +{ + server_print("[FAKEMETA TEST] plugin_end() at %f", get_gametime()) +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/fmttest.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/fmttest.sma new file mode 100644 index 0000000..28d9893 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/fmttest.sma @@ -0,0 +1,58 @@ +#include <amxmodx> + +public plugin_init() +{ + register_plugin("Format Test", "1.0", "BAILOPAN") + + register_srvcmd("test_format", "Command_TestFormat") + register_srvcmd("test_replace", "Command_TestReplace") +} + +public gabprint(const fmt[], ...) +{ + static buffer[2048] + vformat(buffer, 2047, fmt, 2) + + server_print("%s", buffer) +} + +public Command_TestFormat() +{ + server_print("Printing -1 with d: %d", -1) + server_print("Printing -1 with u: %u", -1) + server_print("Printing (1<<31) with d: %d", (1<<31)) + server_print("Printing (1<<31) with u: %u", (1<<31)) + server_print("Printing 1 with d: %d", 1) + server_print("Printing 1 with u: %u", 1) +} + +public Command_TestReplace() +{ + new message[192] = "^"@test^"" + + replace_all(message, 191, "^"", "") + server_print("Got: %s (expected: %s)", message, "@test") + + copy(message, 191, "test") + replace_all(message, 191, "t", "tt") + server_print("Got: %s (expected: %s)", message, "ttestt") + + replace_all(message, 191, "tt", "") + server_print("Got: %s (expected: %s)", message, "es") + + copy(message, 191, "good boys do fine always") + replace_all(message, 191, " ", "-----") + server_print("Got %s (expected: %s)", message, "good-----boys-----do-----fine-----always") + + copy(message, 191, "-----") + replace_all(message, 191, "-", "") + server_print("Got ^"%s%^" (expected: ^"%s%^")", message, "") + + copy(message, 191, "-----") + replace_all(message, 191, "--", "") + server_print("Got ^"%s%^" (expected: ^"%s%^")", message, "-") + + copy(message, 191, "aaaa") + replace_all(message, 191, "a", "Aaa") + server_print("Got %s (expected: %s)", message, "AaaAaaAaaAaa") +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/fwdtest1.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/fwdtest1.sma new file mode 100644 index 0000000..636f896 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/fwdtest1.sma @@ -0,0 +1,54 @@ +#include <amxmodx> + +new g_forward +new g_id + +public plugin_init() +{ + g_id = register_plugin("Foward Test (Master)", "1.0", "Belsebub") +} + +public plugin_natives() +{ + register_native("test_createforward", "test_createforward_handler") + register_native("test_executeforward", "test_executeforward_handler") +} + +//test_createforward(function[]) +public test_createforward_handler(pluginid, numparams) +{ + server_print("(test_createforward_handler: %d,%d)", pluginid, numparams) + + new function[32] + get_string(1, function, 31) + + if (g_forward > 0) + { + DestroyForward(g_forward) + } + + g_forward = CreateOneForward(pluginid, function) + if (g_forward < 0) + { + server_print("Failed to create forward!") + } +} + +//test_executeforward() +public test_executeforward_handler(pluginid, numparams) +{ + new retval + + server_print("(test_executeforward_handler: %d,%d)", pluginid, numparams) + + if (!ExecuteForward(g_forward, retval)) + { + server_print("failed to execute forward (I'm %d)", g_id) + } + + if (g_forward > 0) + { + DestroyForward(g_forward) + g_forward = -1 + } +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/fwdtest2.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/fwdtest2.sma new file mode 100644 index 0000000..5c01d84 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/fwdtest2.sma @@ -0,0 +1,25 @@ +#include <amxmodx> + +new g_id + +native test_createforward(function[]) +native test_executeforward() + +public plugin_init() +{ + g_id = register_plugin("Forward Test (Client)", "1.0", "Belsebub") + + register_srvcmd("fwd_test1", "Test_Forward1") +} + +public Test_Forward1() +{ + server_print("Executing forward ^"gaben^" (I'm %d)", g_id) + test_createforward("gaben") + test_executeforward() +} + +public gaben() +{ + server_print("gaben executed (I'm %d)", g_id) +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/logtest.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/logtest.sma new file mode 100644 index 0000000..7767cea --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/logtest.sma @@ -0,0 +1,45 @@ +#include <amxmodx> + +new g_BlockLog + +public plugin_init() +{ + register_plugin("Log Tester", "1.0", "BAILOPAN") + register_srvcmd("log_addlogevent", "Command_AddLogEvent") + register_srvcmd("log_setblock", "Command_LogSetBlock") +} + +public event_round_start() +{ + +} + +public Command_LogSetBlock() +{ + if (read_argc() < 2) + { + server_print("Specify 1 or 0.") + return PLUGIN_HANDLED + } + + new temp[12] + read_argv(1, temp, 11) + + g_BlockLog = str_to_num(temp) ? true : false + + return PLUGIN_HANDLED +} + +public plugin_log() +{ + server_print("Got log event! Blocking: %d", g_BlockLog) + + return g_BlockLog ? PLUGIN_HANDLED : PLUGIN_CONTINUE +} + +public Command_AddLogEvent(id) +{ + register_logevent("event_round_start", 2, "0=World triggered", "1=Round_Start") + + return PLUGIN_HANDLED +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/menutest.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/menutest.sma new file mode 100644 index 0000000..97c292a --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/menutest.sma @@ -0,0 +1,169 @@ +#include <amxmodx> + +public plugin_init() +{ + register_plugin("Menu Tests", "1.0", "BAILOPAN") + + register_clcmd("menu_test1", "Test_Menu1") + register_clcmd("menu_test2", "Test_Menu2") + register_clcmd("menu_test3", "Test_Menu3") + register_clcmd("menu_test4", "Test_Menu4") + register_clcmd("menu_test5", "Test_Menu5") +} + +public Test_Menu1(id, level, cid) +{ + new menu = menu_create("Character Upgrade:", "Test_Menu1_Handler") + menu_additem(menu, "Gabezilla 1", "1", 0) + menu_additem(menu, "Gabezilla 2", "2", 0) + menu_additem(menu, "Gabezilla 3", "3", 0) + menu_additem(menu, "Gabezilla 4", "4", 0) + menu_additem(menu, "Gabezilla 5", "5", 0) + menu_additem(menu, "Gabezilla 6", "6", 0) + menu_addblank(menu, 7) + menu_additem(menu, "Gabezilla 7", "7", 0) + menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER) + menu_display(id, menu, 0) + return PLUGIN_HANDLED +} + +public Test_Menu2(id, level, cid) +{ + new menu = menu_create("Character Upgrade:", "Test_Menu1_Handler") + menu_additem(menu, "Gabezilla 1", "1", 0) + menu_additem(menu, "Gabezilla 2", "2", 0) + menu_additem(menu, "Gabezilla 3", "3", 0) + menu_additem(menu, "Gabezilla 4", "4", 0) + menu_additem(menu, "Gabezilla 5", "5", 0) + menu_additem(menu, "Gabezilla 6", "6", 0) + menu_display(id, menu, 0) + return PLUGIN_HANDLED +} + +public Test_Menu1_Handler(id, menu, item) +{ + client_print(id, print_chat, "Menu (%d->%d): Chose %d", menu, id, item) + if (item == MENU_EXIT) + { + menu_destroy(menu) + return PLUGIN_HANDLED + } + + new cmd[32], name[32], access + + menu_item_getinfo(menu, item, access, cmd, 31, name, 31, access) + + client_print(id, print_chat, "Menu resolved to: %s (%s)", name, cmd) + + menu_destroy(menu) + + return PLUGIN_HANDLED +} + +public Test_Menu3(id) +{ + new mHandleID = menu_create("Test Menu 3", "Test_Menu3_Handler") + menu_additem(mHandleID, "test1", "1", 0) + menu_additem(mHandleID, "test2", "2", 0) + menu_additem(mHandleID, "test3", "3", 0) + menu_additem(mHandleID, "test4", "4", 0) + menu_additem(mHandleID, "test5", "5", 0) + menu_additem(mHandleID, "test6", "6", 0) + menu_additem(mHandleID, "test7", "7", 0) + menu_additem(mHandleID, "test8", "8", 0) + menu_additem(mHandleID, "test9", "9", 0) + menu_additem(mHandleID, "test10", "10", 0) + menu_additem(mHandleID, "test11", "11", 0) + menu_addblank(mHandleID, 1) // add blank got problem + menu_setprop(mHandleID, MPROP_PERPAGE, 5) + + menu_display(id, mHandleID, 0) + + return PLUGIN_HANDLED +} + +public Test_Menu3_Handler(id, menu, item) +{ + if (item == MENU_EXIT) + { + menu_destroy(menu) + return PLUGIN_HANDLED + } + + client_print(id, print_chat, "item = %d", item) + + menu_destroy(menu) + + return PLUGIN_HANDLED +} + +public Test_Menu4(id) +{ + new mHandleID = menu_create("Test Menu 4", "Test_Menu4_Handler") + menu_setprop(mHandleID, MPROP_PERPAGE, 0) + menu_additem(mHandleID, "test1", "1", 0) + menu_additem(mHandleID, "test2", "2", 0) + menu_additem(mHandleID, "test3", "3", 0) + menu_additem(mHandleID, "test4", "4", 0) + menu_additem(mHandleID, "test5", "5", 0) + menu_additem(mHandleID, "test6", "6", 0) + menu_additem(mHandleID, "test7", "7", 0) + menu_additem(mHandleID, "test8", "8", 0) + menu_additem(mHandleID, "test9", "9", 0) + + menu_display(id, mHandleID, 0) + + return PLUGIN_HANDLED +} + +public Test_Menu4_Handler(id, menu, item) +{ + if (item == MENU_EXIT) + { + menu_destroy(menu) + return PLUGIN_HANDLED + } + + client_print(id, print_chat, "item = %d", item) + + menu_destroy(menu) + + return PLUGIN_HANDLED +} + +public Test_Menu5(id) +{ + new mHandleID = menu_create("Test Menu 5", "Test_Menu5_Handler") + menu_additem(mHandleID, "test1", "1", 0) + menu_additem(mHandleID, "test2", "2", 0) + menu_additem(mHandleID, "test3", "3", 0) + menu_additem(mHandleID, "test4", "4", 0) + menu_additem(mHandleID, "test5", "5", 0) + menu_additem(mHandleID, "test6", "6", 0) + menu_additem(mHandleID, "test7", "7", 0) + menu_additem(mHandleID, "test8", "8", 0) + menu_additem(mHandleID, "test9", "9", 0) + menu_additem(mHandleID, "test10", "10", 0) + menu_additem(mHandleID, "test11", "11", 0) + menu_addblank(mHandleID, 1) // add blank got problem + menu_setprop(mHandleID, MPROP_EXIT, MEXIT_NEVER) + + menu_display(id, mHandleID, 0) + + return PLUGIN_HANDLED +} + +public Test_Menu5_Handler(id, menu, item) +{ + if (item == MENU_EXIT) + { + menu_destroy(menu) + return PLUGIN_HANDLED + } + + client_print(id, print_chat, "item = %d", item) + + menu_destroy(menu) + + return PLUGIN_HANDLED +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/native_test.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/native_test.sma new file mode 100644 index 0000000..5b014d2 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/native_test.sma @@ -0,0 +1,31 @@ +#include <amxmodx> + +native Factorial(num) + +public __Factorial(id, num) +{ + new num = get_param(1) + if (num == 0) + { + return 1 + } + + return num * Factorial(num - 1) +} + +public plugin_natives() +{ + register_native("Factorial", "__Factorial") +} + +public plugin_init() +{ + register_plugin("Native Test", "1.0", "BAILOPAN") + register_srvcmd("test_native1", "Command_TestNative1") +} + +public Command_TestNative1() +{ + new num = Factorial(6) + server_print("Factorial of 6 is: %d", num) +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/nvault_test.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/nvault_test.sma new file mode 100644 index 0000000..0a1dda7 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/nvault_test.sma @@ -0,0 +1,20 @@ +#include <amxmodx> +#include <nvault> + +public plugin_init() +{ + register_plugin("nVault Test", "1.0", "BAILOPAN") + + register_srvcmd("test_nvault", "Command_TestNvault") +} + +public Command_TestNvault() +{ + new v = nvault_open("://:/1/R!?#@41345$%:$") + server_print("Vault value: %d (expected: %d)", v, -1) + + if (v != -1) + { + nvault_close(v) + } +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/sorttest.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/sorttest.sma new file mode 100644 index 0000000..2b998fb --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/sorttest.sma @@ -0,0 +1,153 @@ +#include <amxmodx> + +public plugin_init() +{ + register_plugin("Sort Test", "1.0", "BAILOPAN") + + register_srvcmd("test_sort_ints", "Command_TestSortInts") + register_srvcmd("test_sort_floats", "Command_TestSortFloats") + register_srvcmd("test_sort_strings", "Command_TestSortStrings") + register_srvcmd("test_sort_1d", "Command_TestSort1D") + register_srvcmd("test_sort_2d", "Command_TestSort2D") +} + +/***************** + * INTEGER TESTS * + *****************/ +// Note that integer comparison is just int1-int2 (or a variation therein) + +PrintIntegers(const array[], size) +{ + for (new i=0; i<size; i++) + { + server_print("array[%d] = %d", i, array[i]) + } +} + +public Command_TestSortInts() +{ + new array[10] = {6, 7, 3, 2, 8, 5, 0, 1, 4, 9} + + server_print("Testing ascending sort:") + SortIntegers(array, 10, Sort_Ascending) + PrintIntegers(array, 10) + + server_print("Testing descending sort:") + SortIntegers(array, 10, Sort_Descending) + PrintIntegers(array, 10) +} + +/************************** + * Float comparison tests * + **************************/ + +PrintFloats(const Float:array[], size) +{ + for (new i=0; i<size; i++) + { + server_print("array[%d] = %f", i, array[i]) + } +} + +public Command_TestSortFloats() +{ + new Float:array[10] = {6.3, 7.6, 3.2, 2.1, 8.5, 5.2, 0.4, 1.7, 4.8, 8.2} + + server_print("Testing ascending sort:") + SortFloats(array, 10, Sort_Ascending) + PrintFloats(array, 10) + + server_print("Testing descending sort:") + SortFloats(array, 10, Sort_Descending) + PrintFloats(array, 10) + + return PLUGIN_HANDLED +} + +public Custom1DSort(Float:elem1, Float:elem2) +{ + if (elem1 > elem2) + { + return -1; + } else if (elem1 < elem2) { + return 1; + } + + return 0; +} + +public Command_TestSort1D() +{ + new Float:array[10] = {6.3, 7.6, 3.2, 2.1, 8.5, 5.2, 0.4, 1.7, 4.8, 8.2} + + SortCustom1D(_:array, 10, "Custom1DSort") + PrintFloats(array, 10) + + return PLUGIN_HANDLED +} + +/*************************** + * String comparison tests * + ***************************/ + +PrintStrings(const array[][], size) +{ + for (new i=0; i<size; i++) + { + server_print("array[%d] = %s", i, array[i]) + } +} + +public Command_TestSortStrings() +{ + new array[][] = + { + "faluco", + "bailopan", + "pm onoto", + "damaged soul", + "sniperbeamer", + "sidluke", + "johnny got his gun", + "gabe newell", + "hello", + "WHAT?!" + } + + server_print("Testing ascending sort:") + SortStrings(array, 10, Sort_Ascending) + PrintStrings(array, 10) + + server_print("Testing descending sort:") + SortStrings(array, 10, Sort_Descending) + PrintStrings(array, 10) + + return PLUGIN_HANDLED +} + +public Custom2DSort(const elem1[], const elem2[]) +{ + return strcmp(elem1, elem2) +} + +public Command_TestSort2D() +{ + new array[][] = + { + "faluco", + "bailopan", + "pm onoto", + "damaged soul", + "sniperbeamer", + "sidluke", + "johnny got his gun", + "gabe newell", + "hello", + "WHAT?!" + } + + SortCustom2D(array, 10, "Custom2DSort") + PrintStrings(array, 10) + + return PLUGIN_HANDLED +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/sqlxtest.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/sqlxtest.sma new file mode 100644 index 0000000..f0367a7 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/sqlxtest.sma @@ -0,0 +1,412 @@ +#include <amxmodx> +#include <amxmisc> +#include <dbi> +#include <sqlx> + +new Handle:g_DbInfo +new g_QueryNum +new bool:g_TestEnd = false + +public plugin_init() +{ + register_plugin("SQLX Test", "1.0", "BAILOPAN") + register_srvcmd("sqlx_test_normal", "SqlxTest_Normal") + register_srvcmd("sqlx_test_thread", "SqlxTest_Thread") + register_srvcmd("sqlx_test_proc", "SqlxTest_Proc") + register_srvcmd("sqlx_test_old1", "SqlxTest_Old1") + register_srvcmd("sqlx_test_old2", "SqlxTest_Old2") + register_srvcmd("sqlx_test_thread_end", "SqlxTest_ThreadEnd") + register_srvcmd("sqlx_test_bad", "SqlxTest_Bad") + register_srvcmd("sqlx_test_quote", "SqlxTest_Quote") + register_srvcmd("sqlx_test_affinity", "SqlxTest_Affinity") + + new configsDir[64] + get_configsdir(configsDir, 63) + + server_cmd("exec %s/sql.cfg", configsDir) + + set_task(2.0, "start_map") +} + +DoBasicInfo(affinities=0) +{ + new type[12] + new affinity[12] + new wanted_type[12] + + dbi_type(type, 11) + + server_print("DBI type: %s", type) + + if (!affinities) + return + + SQL_GetAffinity(affinity, 11); + server_print("SQLX Affinity: %s", affinity) + + get_cvar_string("amx_sql_type", wanted_type, 11) + if (!equal(wanted_type, affinity)) + { + if (g_DbInfo) + { + SQL_FreeHandle(g_DbInfo) + g_DbInfo = Empty_Handle + } + new res = SQL_SetAffinity(wanted_type) + server_print("Setting affinity from %s to %s: %s", + affinity, + wanted_type, + res ? "Success" : "Failed") + SQL_GetAffinity(affinity, 11) + start_map() + server_print("Verification: %s", affinity) + } +} + +public start_map() +{ + new host[64] + new user[64] + new pass[64] + new db[64] + + get_cvar_string("amx_sql_host", host, 63) + get_cvar_string("amx_sql_user", user, 63) + get_cvar_string("amx_sql_pass", pass, 63) + get_cvar_string("amx_sql_db", db, 63) + + g_DbInfo = SQL_MakeDbTuple(host, user, pass, db) +} + +public SqlxTest_Bad() +{ + new errnum, error[255] + new Handle:tempinfo = SQL_MakeDbTuple("1.2.3.4", "asdf", "gasdf", "gaben", 2) + new Handle:db = SQL_Connect(tempinfo, errnum, error, 254) + + if (db == Empty_Handle) + { + server_print(" --> Errored out! %d, %s", errnum, error) + } else { + server_print(" --> Something is wrong here.") + } + + return PLUGIN_HANDLED +} + +/** + * Note that this function works for both threaded and non-threaded queries. + */ +PrintQueryData(Handle:query) +{ + new columns = SQL_NumColumns(query) + new rows = SQL_NumResults(query) + static querystring[2048] + + SQL_GetQueryString(query, querystring, 2047) + + server_print("Original query string: %s", querystring) + server_print("Query columns: %d rows: %d", columns, rows) + + new num + new row + new str[32] + new cols[2][32] + SQL_FieldNumToName(query, 0, cols[0], 31) + SQL_FieldNumToName(query, 1, cols[1], 31) + while (SQL_MoreResults(query)) + { + num = SQL_ReadResult(query, 0) + SQL_ReadResult(query, 1, str, 31) + server_print("[%d]: %s=%d, %s=%s", row, cols[0], num, cols[1], str) + SQL_NextRow(query) + row++ + } +} + +/** + * Handler for when a threaded query is resolved. + */ +public GetMyStuff(failstate, Handle:query, error[], errnum, data[], size, Float:queuetime) +{ + server_print(" --> Resolved query %d, took %f seconds", data[0], queuetime) + if (failstate) + { + if (failstate == TQUERY_CONNECT_FAILED) + { + server_print(" --> Connection failed!") + } else if (failstate == TQUERY_QUERY_FAILED) { + server_print(" --> Query failed!") + } + server_print(" --> Error code: %d (Message: ^"%s^")", errnum, error) + + new querystring[1024] + SQL_GetQueryString(query, querystring, 1023) + server_print(" --> Original query: %s", querystring) + } else { + PrintQueryData(query) + } +} + +public SqlxTest_Affinity() +{ + server_print("[Access Manager] try SetAffinity to sqlite"); + SQL_SetAffinity("sqlite"); + server_print("[Access Manager] try SetAffinity to mysql"); + SQL_SetAffinity("mysql"); + server_print("[Access Manager] try SetAffinity to sqlite again"); + SQL_SetAffinity("sqlite"); +} + +/** + * Starts a threaded query. + */ +public SqlxTest_Thread() +{ + new query[512] + new data[1] + + data[0] = g_QueryNum + format(query, 511, "SELECT * FROM gaben") + + DoBasicInfo(1) + + server_print("Adding to %d queue at: %f", g_QueryNum, get_gametime()) + SQL_ThreadQuery(g_DbInfo, "GetMyStuff", query, data, 1) + + g_QueryNum++ +} + +/** + * Tests string quoting + */ +public SqlxTest_Quote() +{ + DoBasicInfo(1) + + new errno, error[255] + + new Handle:db = SQL_Connect(g_DbInfo, errno, error, sizeof(error)-1) + if (!db) + { + server_print("Query failure: [%d] %s", errno, error) + return + } + + new buffer[500], num + num = SQL_QuoteString(db, buffer, sizeof(buffer)-1, "Hi y'all! C\lam") + + server_print("num: %d str: %s", num, buffer) + + SQL_FreeHandle(db) +} + +public SqlxTest_Proc() +{ + new errnum, error[255] + + DoBasicInfo(1) + + new Handle:db = SQL_Connect(g_DbInfo, errnum, error, 254) + if (!db) + { + server_print("Query failure: [%d] %s", errnum, error) + return + } + + new Handle:query = SQL_PrepareQuery(db, "CALL ExampleProc()") + if (!SQL_Execute(query)) + { + errnum = SQL_QueryError(query, error, 254) + server_print("Query failure: [%d] %s", errnum, error) + SQL_FreeHandle(query) + SQL_FreeHandle(db) + return + } + + PrintQueryData(query) + + server_print("Next result: %d", SQL_NextResultSet(query)); + + PrintQueryData(query) + + SQL_FreeHandle(query) + SQL_FreeHandle(db) +} + +/** + * Does a normal query. + */ +public SqlxTest_Normal() +{ + new errnum, error[255] + + DoBasicInfo(1) + + new Handle:db = SQL_Connect(g_DbInfo, errnum, error, 254) + if (!db) + { + server_print("Query failure: [%d] %s", errnum, error) + return + } + + new Handle:query = SQL_PrepareQuery(db, "SELECT * FROM gaben") + if (!SQL_Execute(query)) + { + errnum = SQL_QueryError(query, error, 254) + server_print("Query failure: [%d] %s", errnum, error) + SQL_FreeHandle(query) + SQL_FreeHandle(db) + return + } + + PrintQueryData(query) + + server_print("Next result: %d", SQL_NextResultSet(query)); + + SQL_FreeHandle(query) + SQL_FreeHandle(db) +} + +/** + * Wrapper for an old-style connection. + */ +Sql:OldInitDatabase() +{ + new host[64] + new user[64] + new pass[64] + new db[64] + + get_cvar_string("amx_sql_host", host, 63) + get_cvar_string("amx_sql_user", user, 63) + get_cvar_string("amx_sql_pass", pass, 63) + get_cvar_string("amx_sql_db", db, 63) + + new error[255] + new Sql:sql = dbi_connect(host, user, pass, db, error, 254) + if (sql < SQL_OK) + { + server_print("Connection failure: %s", error) + return SQL_FAILED + } + + return sql +} + +/** + * Tests index-based lookup + */ +public SqlxTest_Old1() +{ + DoBasicInfo() + new Sql:sql = OldInitDatabase() + if (sql < SQL_OK) + return + + new Result:res = dbi_query(sql, "SELECT * FROM gaben") + + if (res == RESULT_FAILED) + { + new error[255] + new code = dbi_error(sql, error, 254) + server_print("Result failed! [%d]: %s", code, error) + } else if (res == RESULT_NONE) { + server_print("No result set returned.") + } else { + new cols[2][32] + new str[32] + new row, num + new rows = dbi_num_rows(res) + new columns = dbi_num_fields(res) + + dbi_field_name(res, 1, cols[0], 31) + dbi_field_name(res, 2, cols[1], 31) + server_print("Query columns: %d rows: %d", columns, rows) + while (dbi_nextrow(res) > 0) + { + num = dbi_field(res, 1) + dbi_field(res, 2, str, 31) + server_print("[%d]: %s=%d, %s=%s", row, cols[0], num, cols[1], str) + row++ + } + dbi_free_result(res) + } + + dbi_close(sql) +} + + +/** + * Tests name-based lookup + */ +public SqlxTest_Old2() +{ + DoBasicInfo() + new Sql:sql = OldInitDatabase() + if (sql < SQL_OK) + return + + new Result:res = dbi_query(sql, "SELECT * FROM gaben") + + if (res == RESULT_FAILED) + { + new error[255] + new code = dbi_error(sql, error, 254) + server_print("Result failed! [%d]: %s", code, error) + } else if (res == RESULT_NONE) { + server_print("No result set returned.") + } else { + new cols[2][32] + new str[32] + new row, num + new rows = dbi_num_rows(res) + new columns = dbi_num_fields(res) + + dbi_field_name(res, 1, cols[0], 31) + dbi_field_name(res, 2, cols[1], 31) + server_print("Query columns: %d rows: %d", columns, rows) + while (dbi_nextrow(res) > 0) + { + num = dbi_result(res, cols[0]) + dbi_result(res, cols[1], str, 31) + server_print("[%d]: %s=%d, %s=%s", row, cols[0], num, cols[1], str) + row++ + } + dbi_free_result(res) + } + + dbi_close(sql) +} + +public SqlxTest_ThreadEnd() +{ + if (read_argc() < 2) + { + server_print("Requires mapname!") + } else { + new mapname[64] + + read_argv(1, mapname, 63) + if (!is_map_valid(mapname)) + { + server_print("Invalid map: %s", mapname) + } else { + g_TestEnd = true + server_cmd("changelevel %s", mapname) + } + } + + return PLUGIN_HANDLED +} + + +public plugin_end() +{ + if (g_TestEnd) + { + SqlxTest_Thread() + } else { + SQL_FreeHandle(g_DbInfo) + } +} diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/sqlxtest.sq3 b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/sqlxtest.sq3 new file mode 100644 index 0000000..adba612 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/sqlxtest.sq3 differ diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/sqlxtest.sql b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/sqlxtest.sql new file mode 100644 index 0000000..bf22025 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/sqlxtest.sql @@ -0,0 +1,8 @@ + + +CREATE TABLE gaben (gaben int primary key, fat varchar(32)); + +INSERT INTO gaben VALUES(1, 'what the'); +INSERT INTO gaben VALUES(2, 'Bee''s Knees!'); +INSERT INTO gaben VALUES(3, 'newell'); +INSERT INTO gaben VALUES(4, 'CRAB CAKE.'); diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/trietest.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/trietest.sma new file mode 100644 index 0000000..42f122a --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/testsuite/trietest.sma @@ -0,0 +1,169 @@ +#include <amxmodx> + + +// These natives are only available in a debug build of amxmodx +native TrieFreeCount(); +native TrieMallocCount(); + +new failcount = 0; +new passcount = 0; +public plugin_init() +{ + register_plugin("Trie Test", AMXX_VERSION_STR, "AMXX Dev Team"); + register_srvcmd("trietest", "trietest"); +} + +stock fail(const testname[]) +{ + server_print("[FAIL] %s", testname); + + failcount++; +} +stock pass(const testname[]) +{ + server_print("[PASS] %s", testname); + + passcount++; +} +stock done() +{ + server_print("Finished. %d tests, %d failed", failcount + passcount, failcount); +} +stock check_frees() +{ + if (TrieMallocCount() != TrieFreeCount()) + fail("free count == malloc count"); + + else + pass("free count == malloc count"); + + server_print("malloc count: %d free count: %d", TrieMallocCount(), TrieFreeCount()); +} +public trietest() +{ + failcount = 0; + passcount = 0; + + new bool:ok = true; + new Trie:t = TrieCreate(); + + new Trie:oldhandle = t; // Makes sure that the trie handle system recycles old handles + + new key[32]; + for (new i = 0; i < 100; i++) + { + formatex(key, charsmax(key), "K%dK", i); + TrieSetCell(t, key, i); + } + + for (new i = 0; i < 100; i++) + { + formatex(key, charsmax(key), "K%dK", i); + new val; + if (!TrieGetCell(t, key, val)) + { + server_print("TrieGetCell(%d, '%s', %d) failed", t, key, val); + ok = false; + } + + else if (val != i) + { + server_print("val mismatch, expected: %d got: %d", i, val); + ok = false; + } + + } + if (ok) + pass("Cell tests"); + + else + fail("Cell tests"); + + TrieClear(t); + TrieDestroy(t); + + t = TrieCreate(); + + if (t == oldhandle) + pass("Recycle handles"); + + else + fail("Recycle handles"); + + ok = true; + for (new i = 0; i < 100; i++) + { + static val[32]; + formatex(key, charsmax(key), "K%dK", i); + formatex(val, charsmax(val), "V%dV", i); + TrieSetString(t, key, val); + } + + for (new i = 0; i < 100; i++) + { + formatex(key, charsmax(key), "K%dK", i); + static val[32]; + static exp[32]; + formatex(exp, charsmax(exp), "V%dV", i); + if (!TrieGetString(t, key, val, charsmax(val))) + { + server_print("TrieGetString(%d, '%s', %s) failed", t, key, val); + ok = false; + } + + else if (!equal(val, exp)) + { + server_print("val mismatch, key: '%s' expected: '%s' got: '%s'", key, exp, val); + ok = false; + } + + } + if (ok) + pass("String tests"); + + else + fail("String tests"); + + TrieDestroy(t); + + check_frees(); + + t = TrieCreate(); + ok = true; + for (new i = 0; i < 1000; i++) + { + formatex(key, charsmax(key), "!%d!", i); + TrieSetString(t, key, key); + } + for (new i = 0; i < 1000; i++) + { + formatex(key, charsmax(key), "!%d!", i); + + if (!TrieKeyExists(t, key)) + { + ok = false; + server_print("Key '%s' does not exist", key); + } + else + { + if (!TrieDeleteKey(t, key)) + { + server_print("Key '%s' could not be deleted", key); + ok = false; + } + } + } + if (ok) + pass("Exists/Delete"); + + else + fail("Exists/Delete"); + + check_frees(); + TrieClear(t); + TrieDestroy(t); + check_frees(); + done(); + +} + diff --git a/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/timeleft.sma b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/timeleft.sma new file mode 100644 index 0000000..2825521 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/amxmodx/scripting/timeleft.sma @@ -0,0 +1,274 @@ +/* AMX Mod X +* TimeLeft Plugin +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* This file is part of AMX Mod X. +* +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +*/ + +#include <amxmodx> + +new g_TimeSet[32][2] +new g_LastTime +new g_CountDown +new g_Switch + +public plugin_init() +{ + register_plugin("TimeLeft", AMXX_VERSION_STR, "AMXX Dev Team") + register_dictionary("timeleft.txt") + register_cvar("amx_time_voice", "1") + register_srvcmd("amx_time_display", "setDisplaying") + register_cvar("amx_timeleft", "00:00", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_UNLOGGED|FCVAR_SPONLY) + register_clcmd("say timeleft", "sayTimeLeft", 0, "- displays timeleft") + register_clcmd("say thetime", "sayTheTime", 0, "- displays current time") + + set_task(0.8, "timeRemain", 8648458, "", 0, "b") +} + +public sayTheTime(id) +{ + if (get_cvar_num("amx_time_voice")) + { + new mhours[6], mmins[6], whours[32], wmins[32], wpm[6] + + get_time("%H", mhours, 5) + get_time("%M", mmins, 5) + + new mins = str_to_num(mmins) + new hrs = str_to_num(mhours) + + if (mins) + num_to_word(mins, wmins, 31) + else + wmins[0] = 0 + + if (hrs < 12) + wpm = "am " + else + { + if (hrs > 12) hrs -= 12 + wpm = "pm " + } + + if (hrs) + num_to_word(hrs, whours, 31) + else + whours = "twelve " + + client_cmd(id, "spk ^"fvox/time_is_now %s_period %s%s^"", whours, wmins, wpm) + } + + new ctime[64] + + get_time("%m/%d/%Y - %H:%M:%S", ctime, 63) + client_print(0, print_chat, "%L: %s", LANG_PLAYER, "THE_TIME", ctime) + + return PLUGIN_CONTINUE +} + +public sayTimeLeft(id) +{ + if (get_cvar_float("mp_timelimit")) + { + new a = get_timeleft() + + if (get_cvar_num("amx_time_voice")) + { + new svoice[128] + setTimeVoice(svoice, 127, 0, a) + client_cmd(id, "%s", svoice) + } + client_print(0, print_chat, "%L: %d:%02d", LANG_PLAYER, "TIME_LEFT", (a / 60), (a % 60)) + } + else + client_print(0, print_chat, "%L", LANG_PLAYER, "NO_T_LIMIT") + + return PLUGIN_CONTINUE +} + +setTimeText(text[], len, tmlf, id) +{ + new secs = tmlf % 60 + new mins = tmlf / 60 + + if (secs == 0) + format(text, len, "%d %L", mins, id, (mins > 1) ? "MINUTES" : "MINUTE") + else if (mins == 0) + format(text, len, "%d %L", secs, id, (secs > 1) ? "SECONDS" : "SECOND") + else + format(text, len, "%d %L %d %L", mins, id, (mins > 1) ? "MINUTES" : "MINUTE", secs, id, (secs > 1) ? "SECONDS" : "SECOND") +} + +setTimeVoice(text[], len, flags, tmlf) +{ + new temp[7][32] + new secs = tmlf % 60 + new mins = tmlf / 60 + + for (new a = 0;a < 7;++a) + temp[a][0] = 0 + + if (secs > 0) + { + num_to_word(secs, temp[4], 31) + + if (!(flags & 8)) + temp[5] = "seconds " /* there is no "second" in default hl */ + } + + if (mins > 59) + { + new hours = mins / 60 + + num_to_word(hours, temp[0], 31) + + if (!(flags & 8)) + temp[1] = "hours " + + mins = mins % 60 + } + + if (mins > 0) + { + num_to_word(mins, temp[2], 31) + + if (!(flags & 8)) + temp[3] = "minutes " + } + + if (!(flags & 4)) + temp[6] = "remaining " + + return format(text, len, "spk ^"vox/%s%s%s%s%s%s%s^"", temp[0], temp[1], temp[2], temp[3], temp[4], temp[5], temp[6]) +} + +findDispFormat(time) +{ + for (new i = 0; g_TimeSet[i][0]; ++i) + { + if (g_TimeSet[i][1] & 16) + { + if (g_TimeSet[i][0] > time) + { + if (!g_Switch) + { + g_CountDown = g_Switch = time + remove_task(8648458) + set_task(1.0, "timeRemain", 34543, "", 0, "b") + } + + return i + } + } + else if (g_TimeSet[i][0] == time) + { + return i + } + } + + return -1 +} + +public setDisplaying() +{ + new arg[32], flags[32], num[32] + new argc = read_argc() - 1 + new i = 0 + + while (i < argc && i < 32) + { + read_argv(i + 1, arg, 31) + parse(arg, flags, 31, num, 31) + + g_TimeSet[i][0] = str_to_num(num) + g_TimeSet[i][1] = read_flags(flags) + + i++ + } + g_TimeSet[i][0] = 0 + + return PLUGIN_HANDLED +} + +public timeRemain(param[]) +{ + new gmtm = get_timeleft() + new tmlf = g_Switch ? --g_CountDown : gmtm + new stimel[12] + + format(stimel, 11, "%02d:%02d", gmtm / 60, gmtm % 60) + set_cvar_string("amx_timeleft", stimel) + + if (g_Switch && gmtm > g_Switch) + { + remove_task(34543) + g_Switch = 0 + set_task(0.8, "timeRemain", 8648458, "", 0, "b") + + return + } + + if (tmlf > 0 && g_LastTime != tmlf) + { + g_LastTime = tmlf + new tm_set = findDispFormat(tmlf) + + if (tm_set != -1) + { + new flags = g_TimeSet[tm_set][1] + new arg[128] + + if (flags & 1) + { + new players[32], pnum + + get_players(players, pnum, "c") + + for (new i = 0; i < pnum; i++) + { + setTimeText(arg, 127, tmlf, players[i]) + + if (flags & 16) + set_hudmessage(255, 255, 255, -1.0, 0.85, 0, 0.0, 1.1, 0.1, 0.5, -1) + else + set_hudmessage(255, 255, 255, -1.0, 0.85, 0, 0.0, 3.0, 0.0, 0.5, -1) + + show_hudmessage(players[i], "%s", arg) + } + } + + if (flags & 2) + { + setTimeVoice(arg, 127, flags, tmlf) + client_cmd(0, "%s", arg) + } + } + } +} \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/addons/metamod/config.ini b/config/funmaps/serverfiles/cstrike/addons/metamod/config.ini new file mode 100644 index 0000000..f6a6984 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/metamod/config.ini @@ -0,0 +1,4 @@ +# This contains basic config information, at the moment duplicating most of the +localinfo variables, but allowing for more flexible expansion of config options in the future. Also, it provides somewhat more reliable options setting, since +localinfo munges some argument values (in particular, pathnames with leading dots, ie "../dlls/blah.dll"). +# Basic format is +# <option> <value> +# http://metamod.org/metamod.html diff --git a/config/funmaps/serverfiles/cstrike/addons/metamod/dlls/metamod.dll b/config/funmaps/serverfiles/cstrike/addons/metamod/dlls/metamod.dll new file mode 100644 index 0000000..be38484 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/metamod/dlls/metamod.dll differ diff --git a/config/funmaps/serverfiles/cstrike/addons/metamod/dlls/metamod.so b/config/funmaps/serverfiles/cstrike/addons/metamod/dlls/metamod.so new file mode 100644 index 0000000..a964265 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/metamod/dlls/metamod.so differ diff --git a/config/funmaps/serverfiles/cstrike/addons/metamod/exec.ini b/config/funmaps/serverfiles/cstrike/addons/metamod/exec.ini new file mode 100644 index 0000000..c7a0042 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/metamod/exec.ini @@ -0,0 +1,2 @@ +# This is necessary for plugins that need to have settings specified prior to early API routines like ServerActivate, since autoexec.cfg is read too early and server.cfg is read to late. In particular, I found this necessary for the Trace plugin, in order to trace routines like RegUserMsg which are called during ServerActivate. +# http://metamod.org/metamod.html diff --git a/config/funmaps/serverfiles/cstrike/addons/metamod/plugins.ini b/config/funmaps/serverfiles/cstrike/addons/metamod/plugins.ini new file mode 100644 index 0000000..574d882 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/metamod/plugins.ini @@ -0,0 +1,5 @@ +# Plugins are described in a file "plugins.ini" and each line describes a plugin to load: +# <platform> <filepath> [<description>] +# http://metamod.org/metamod.html +linux addons/amxmodx/dlls/amxmodx_mm_i386.so +linux addons/semiclip/semiclip_mm_i386.so diff --git a/config/funmaps/serverfiles/cstrike/addons/semiclip/config.ini b/config/funmaps/serverfiles/cstrike/addons/semiclip/config.ini new file mode 100644 index 0000000..563d8f9 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/semiclip/config.ini @@ -0,0 +1,29 @@ +# Description +# +# semiclip 0|1 disable/enable semiclip +# team 0|1|2|3 +# - 0 Semiclip works for all +# - 1 Semiclip works only for Terrorists +# - 2 Semiclip works only for Counter-Terrorists +# - 3 Semiclip works only for teammates. +# +# time 0|60 How many time in seconds semiclip will work from the beginning of the round. 0 for all time. +# patch 0|1 Fix jamming on a mobile platform. (A global problem on DeathrunMod) +# crouch 0|1 Allows jump to crouching players when semiclip works. +# effects 0|1 Effect of transparency of the player. Depends from distance between players. +# flashfix 0|1 Fix flashing throw transparent players +# noteamflash 0|1 Teammates blocking flashing +# distance 0|200 At what distance player can have transparency and semiclip. +# transparency 0|255 transparency of the player. +# + +semiclip = 1; +team = 3; +time = 0; +patch = 0; +crouch = 1; +effects = 0; +flashfix = 1; +noteamflash = 0; +distance = 50; +transparency = 120; diff --git a/config/funmaps/serverfiles/cstrike/addons/semiclip/maps/_de_dust2.ini b/config/funmaps/serverfiles/cstrike/addons/semiclip/maps/_de_dust2.ini new file mode 100644 index 0000000..eba5ad3 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/semiclip/maps/_de_dust2.ini @@ -0,0 +1,10 @@ +/* + * Settings semiclip to map + * + * Example name configuration: .../semiclip/maps/mapname.ini + * Example settings: + * +*/ + +time = 3 +noteamflash = 0 \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/addons/semiclip/maps/_prefix_de.ini b/config/funmaps/serverfiles/cstrike/addons/semiclip/maps/_prefix_de.ini new file mode 100644 index 0000000..d81b09e --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/addons/semiclip/maps/_prefix_de.ini @@ -0,0 +1,10 @@ +/* + * Settings semiclip to map + * + * Example name configuration: .../semiclip/maps/prefix_*.ini + * Example settings: + * +*/ + +time = 3 +noteamflash = 0 \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/addons/semiclip/semiclip.dll b/config/funmaps/serverfiles/cstrike/addons/semiclip/semiclip.dll new file mode 100644 index 0000000..9f4b471 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/semiclip/semiclip.dll differ diff --git a/config/funmaps/serverfiles/cstrike/addons/semiclip/semiclip_mm_i386.so b/config/funmaps/serverfiles/cstrike/addons/semiclip/semiclip_mm_i386.so new file mode 100644 index 0000000..9e61249 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/addons/semiclip/semiclip_mm_i386.so differ diff --git a/config/funmaps/serverfiles/cstrike/aim_dgl_old.wad b/config/funmaps/serverfiles/cstrike/aim_dgl_old.wad new file mode 100755 index 0000000..1950154 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/aim_dgl_old.wad differ diff --git a/config/funmaps/serverfiles/cstrike/as_tundra.wad b/config/funmaps/serverfiles/cstrike/as_tundra.wad new file mode 100755 index 0000000..f571b19 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/as_tundra.wad differ diff --git a/config/funmaps/serverfiles/cstrike/cs_dust.wad b/config/funmaps/serverfiles/cstrike/cs_dust.wad new file mode 100755 index 0000000..3c67472 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/cs_dust.wad differ diff --git a/config/funmaps/serverfiles/cstrike/csserver.cfg b/config/funmaps/serverfiles/cstrike/csserver.cfg new file mode 100644 index 0000000..587216e --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/csserver.cfg @@ -0,0 +1,48 @@ +// Hostname for server. +hostname "PEWPEW 1000FPS Funmaps only + FASTDL" + +// RCON - remote console password. +rcon_password "foobar" + +// Server password - for private servers. +sv_password "" + +// Server Logging +log on +sv_logbans 1 +sv_logecho 1 +sv_logfile 1 +sv_log_onefile 0 + +mp_timelimit 15 +sv_maxspeed 320 +sv_cheats 0 +allow_spectators 1 +pausable 0 +mp_autoteambalance 0 +mp_chattime 0 +mp_autokick 0 +mp_buytime 0.5 +mp_c4timer 35 +mp_forcecamera 0 +mp_friendlyfire 0 +mp_freezetime 0 +sv_aim 0 +sv_timeout 65 +sv_maxunlag 1 +sv_voiceenable 1 +mp_consistency 0 +mp_hostagepenalty 0 + +sv_lan 0 +sv_maxrate 100000 +sv_minrate 70000 +sv_maxupdaterate 101 +sv_minupdaterate 60 +sys_ticrate 1000 +sv_unlag 1 +sv_region 3 +sys_ticrate 1000 +sv_allowdownload 1 +sv_allowupload 1 +sv_downloadurl "https://dl.ardestani.org/cstrike" diff --git a/config/funmaps/serverfiles/cstrike/de_dolc.wad b/config/funmaps/serverfiles/cstrike/de_dolc.wad new file mode 100755 index 0000000..6918e9c Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/de_dolc.wad differ diff --git a/config/funmaps/serverfiles/cstrike/de_gash.wad b/config/funmaps/serverfiles/cstrike/de_gash.wad new file mode 100755 index 0000000..43b1607 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/de_gash.wad differ diff --git a/config/funmaps/serverfiles/cstrike/de_vegas.wad b/config/funmaps/serverfiles/cstrike/de_vegas.wad new file mode 100755 index 0000000..7886ffd Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/de_vegas.wad differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/2desertbk.tga b/config/funmaps/serverfiles/cstrike/gfx/env/2desertbk.tga new file mode 100755 index 0000000..5183d1e Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/2desertbk.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/2desertdn.tga b/config/funmaps/serverfiles/cstrike/gfx/env/2desertdn.tga new file mode 100755 index 0000000..565c5da Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/2desertdn.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/2desertft.tga b/config/funmaps/serverfiles/cstrike/gfx/env/2desertft.tga new file mode 100755 index 0000000..2793dda Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/2desertft.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/2desertlf.tga b/config/funmaps/serverfiles/cstrike/gfx/env/2desertlf.tga new file mode 100755 index 0000000..8399a5c Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/2desertlf.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/2desertrt.tga b/config/funmaps/serverfiles/cstrike/gfx/env/2desertrt.tga new file mode 100755 index 0000000..1004cfd Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/2desertrt.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/2desertup.tga b/config/funmaps/serverfiles/cstrike/gfx/env/2desertup.tga new file mode 100755 index 0000000..de86d04 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/2desertup.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/cliffbk.tga b/config/funmaps/serverfiles/cstrike/gfx/env/cliffbk.tga new file mode 100755 index 0000000..cfde1d7 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/cliffbk.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/cliffdn.tga b/config/funmaps/serverfiles/cstrike/gfx/env/cliffdn.tga new file mode 100755 index 0000000..a61eeec Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/cliffdn.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/cliffft.tga b/config/funmaps/serverfiles/cstrike/gfx/env/cliffft.tga new file mode 100755 index 0000000..57e5f4f Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/cliffft.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/clifflf.tga b/config/funmaps/serverfiles/cstrike/gfx/env/clifflf.tga new file mode 100755 index 0000000..eb9488a Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/clifflf.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/cliffrt.tga b/config/funmaps/serverfiles/cstrike/gfx/env/cliffrt.tga new file mode 100755 index 0000000..e1ab79e Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/cliffrt.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/cliffup.tga b/config/funmaps/serverfiles/cstrike/gfx/env/cliffup.tga new file mode 100755 index 0000000..ff733d9 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/cliffup.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/desbk.tga b/config/funmaps/serverfiles/cstrike/gfx/env/desbk.tga new file mode 100755 index 0000000..7109d52 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/desbk.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/desdn.tga b/config/funmaps/serverfiles/cstrike/gfx/env/desdn.tga new file mode 100755 index 0000000..da6ed21 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/desdn.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/desert06bk.tga b/config/funmaps/serverfiles/cstrike/gfx/env/desert06bk.tga new file mode 100755 index 0000000..d4aa216 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/desert06bk.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/desert06dn.tga b/config/funmaps/serverfiles/cstrike/gfx/env/desert06dn.tga new file mode 100755 index 0000000..80bb3d1 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/desert06dn.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/desert06ft.tga b/config/funmaps/serverfiles/cstrike/gfx/env/desert06ft.tga new file mode 100755 index 0000000..425e952 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/desert06ft.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/desert06lf.tga b/config/funmaps/serverfiles/cstrike/gfx/env/desert06lf.tga new file mode 100755 index 0000000..6de6402 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/desert06lf.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/desert06rt.tga b/config/funmaps/serverfiles/cstrike/gfx/env/desert06rt.tga new file mode 100755 index 0000000..95c19a8 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/desert06rt.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/desert06up.tga b/config/funmaps/serverfiles/cstrike/gfx/env/desert06up.tga new file mode 100755 index 0000000..38ac586 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/desert06up.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/desft.tga b/config/funmaps/serverfiles/cstrike/gfx/env/desft.tga new file mode 100755 index 0000000..431ba67 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/desft.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/deslf.tga b/config/funmaps/serverfiles/cstrike/gfx/env/deslf.tga new file mode 100755 index 0000000..56a48dc Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/deslf.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/desrt.tga b/config/funmaps/serverfiles/cstrike/gfx/env/desrt.tga new file mode 100755 index 0000000..56d30ea Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/desrt.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/desup.tga b/config/funmaps/serverfiles/cstrike/gfx/env/desup.tga new file mode 100755 index 0000000..6a854fd Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/desup.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/grnplsntbk.tga b/config/funmaps/serverfiles/cstrike/gfx/env/grnplsntbk.tga new file mode 100755 index 0000000..5783d9d Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/grnplsntbk.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/grnplsntdn.tga b/config/funmaps/serverfiles/cstrike/gfx/env/grnplsntdn.tga new file mode 100755 index 0000000..c814768 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/grnplsntdn.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/grnplsntft.tga b/config/funmaps/serverfiles/cstrike/gfx/env/grnplsntft.tga new file mode 100755 index 0000000..1c56a28 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/grnplsntft.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/grnplsntlf.tga b/config/funmaps/serverfiles/cstrike/gfx/env/grnplsntlf.tga new file mode 100755 index 0000000..6dd7ee5 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/grnplsntlf.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/grnplsntrt.tga b/config/funmaps/serverfiles/cstrike/gfx/env/grnplsntrt.tga new file mode 100755 index 0000000..35f20e5 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/grnplsntrt.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/grnplsntup.tga b/config/funmaps/serverfiles/cstrike/gfx/env/grnplsntup.tga new file mode 100755 index 0000000..3d83a61 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/grnplsntup.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/mon_sky_bk.tga b/config/funmaps/serverfiles/cstrike/gfx/env/mon_sky_bk.tga new file mode 100755 index 0000000..12f5681 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/mon_sky_bk.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/mon_sky_dn.tga b/config/funmaps/serverfiles/cstrike/gfx/env/mon_sky_dn.tga new file mode 100755 index 0000000..e16fab4 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/mon_sky_dn.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/mon_sky_ft.tga b/config/funmaps/serverfiles/cstrike/gfx/env/mon_sky_ft.tga new file mode 100755 index 0000000..e629098 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/mon_sky_ft.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/mon_sky_lf.tga b/config/funmaps/serverfiles/cstrike/gfx/env/mon_sky_lf.tga new file mode 100755 index 0000000..de888ae Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/mon_sky_lf.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/mon_sky_rt.tga b/config/funmaps/serverfiles/cstrike/gfx/env/mon_sky_rt.tga new file mode 100755 index 0000000..a7c1252 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/mon_sky_rt.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/mon_sky_up.tga b/config/funmaps/serverfiles/cstrike/gfx/env/mon_sky_up.tga new file mode 100755 index 0000000..0d52640 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/mon_sky_up.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1bk.bmp b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1bk.bmp new file mode 100755 index 0000000..6ab33d2 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1bk.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1bk.tga b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1bk.tga new file mode 100755 index 0000000..04082dc Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1bk.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1dn.bmp b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1dn.bmp new file mode 100755 index 0000000..326fca5 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1dn.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1dn.tga b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1dn.tga new file mode 100755 index 0000000..021e423 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1dn.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1ft.bmp b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1ft.bmp new file mode 100755 index 0000000..ada6ab5 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1ft.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1ft.tga b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1ft.tga new file mode 100755 index 0000000..91c008d Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1ft.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1lf.bmp b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1lf.bmp new file mode 100755 index 0000000..1ee3638 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1lf.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1lf.tga b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1lf.tga new file mode 100755 index 0000000..a58bb75 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1lf.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1rt.bmp b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1rt.bmp new file mode 100755 index 0000000..666c136 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1rt.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1rt.tga b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1rt.tga new file mode 100755 index 0000000..442ccfd Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1rt.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1up.bmp b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1up.bmp new file mode 100755 index 0000000..5a5204c Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1up.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1up.tga b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1up.tga new file mode 100755 index 0000000..d8ea5f6 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/nebosky1up.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/oberon_bk.tga b/config/funmaps/serverfiles/cstrike/gfx/env/oberon_bk.tga new file mode 100755 index 0000000..cc5e597 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/oberon_bk.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/oberon_dn.tga b/config/funmaps/serverfiles/cstrike/gfx/env/oberon_dn.tga new file mode 100755 index 0000000..a59e440 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/oberon_dn.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/oberon_ft.tga b/config/funmaps/serverfiles/cstrike/gfx/env/oberon_ft.tga new file mode 100755 index 0000000..83f25ce Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/oberon_ft.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/oberon_lf.tga b/config/funmaps/serverfiles/cstrike/gfx/env/oberon_lf.tga new file mode 100755 index 0000000..a262716 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/oberon_lf.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/oberon_rt.tga b/config/funmaps/serverfiles/cstrike/gfx/env/oberon_rt.tga new file mode 100755 index 0000000..a3420cf Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/oberon_rt.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/oberon_up.tga b/config/funmaps/serverfiles/cstrike/gfx/env/oberon_up.tga new file mode 100755 index 0000000..99f8840 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/oberon_up.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/shogun_skybk.tga b/config/funmaps/serverfiles/cstrike/gfx/env/shogun_skybk.tga new file mode 100755 index 0000000..7b3ef65 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/shogun_skybk.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/shogun_skydn.tga b/config/funmaps/serverfiles/cstrike/gfx/env/shogun_skydn.tga new file mode 100755 index 0000000..7bb5442 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/shogun_skydn.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/shogun_skyft.tga b/config/funmaps/serverfiles/cstrike/gfx/env/shogun_skyft.tga new file mode 100755 index 0000000..3972602 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/shogun_skyft.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/shogun_skylf.tga b/config/funmaps/serverfiles/cstrike/gfx/env/shogun_skylf.tga new file mode 100755 index 0000000..334e229 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/shogun_skylf.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/shogun_skyrt.tga b/config/funmaps/serverfiles/cstrike/gfx/env/shogun_skyrt.tga new file mode 100755 index 0000000..3ecf419 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/shogun_skyrt.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/shogun_skyup.tga b/config/funmaps/serverfiles/cstrike/gfx/env/shogun_skyup.tga new file mode 100755 index 0000000..fc44467 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/shogun_skyup.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/snowbk.tga b/config/funmaps/serverfiles/cstrike/gfx/env/snowbk.tga new file mode 100755 index 0000000..c3b9672 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/snowbk.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/snowdn.tga b/config/funmaps/serverfiles/cstrike/gfx/env/snowdn.tga new file mode 100755 index 0000000..e119775 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/snowdn.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/snowft.tga b/config/funmaps/serverfiles/cstrike/gfx/env/snowft.tga new file mode 100755 index 0000000..89cb6c6 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/snowft.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/snowlf.tga b/config/funmaps/serverfiles/cstrike/gfx/env/snowlf.tga new file mode 100755 index 0000000..0b3549c Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/snowlf.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/snowrt.tga b/config/funmaps/serverfiles/cstrike/gfx/env/snowrt.tga new file mode 100755 index 0000000..48aa4e6 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/snowrt.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/snowup.tga b/config/funmaps/serverfiles/cstrike/gfx/env/snowup.tga new file mode 100755 index 0000000..1dda801 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/snowup.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/spreebk.tga b/config/funmaps/serverfiles/cstrike/gfx/env/spreebk.tga new file mode 100755 index 0000000..a4fd06d Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/spreebk.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/spreedn.tga b/config/funmaps/serverfiles/cstrike/gfx/env/spreedn.tga new file mode 100755 index 0000000..d4513b9 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/spreedn.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/spreeft.tga b/config/funmaps/serverfiles/cstrike/gfx/env/spreeft.tga new file mode 100755 index 0000000..6bcef9d Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/spreeft.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/spreelf.tga b/config/funmaps/serverfiles/cstrike/gfx/env/spreelf.tga new file mode 100755 index 0000000..964e785 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/spreelf.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/spreert.tga b/config/funmaps/serverfiles/cstrike/gfx/env/spreert.tga new file mode 100755 index 0000000..8134de6 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/spreert.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/spreeup.tga b/config/funmaps/serverfiles/cstrike/gfx/env/spreeup.tga new file mode 100755 index 0000000..cb82e08 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/spreeup.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/trainyardbk.tga b/config/funmaps/serverfiles/cstrike/gfx/env/trainyardbk.tga new file mode 100755 index 0000000..6ae31b4 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/trainyardbk.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/trainyarddn.tga b/config/funmaps/serverfiles/cstrike/gfx/env/trainyarddn.tga new file mode 100755 index 0000000..1f8dc4d Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/trainyarddn.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/trainyardft.tga b/config/funmaps/serverfiles/cstrike/gfx/env/trainyardft.tga new file mode 100755 index 0000000..b9a6e8c Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/trainyardft.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/trainyardlf.tga b/config/funmaps/serverfiles/cstrike/gfx/env/trainyardlf.tga new file mode 100755 index 0000000..9abaa9d Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/trainyardlf.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/trainyardrt.tga b/config/funmaps/serverfiles/cstrike/gfx/env/trainyardrt.tga new file mode 100755 index 0000000..3be96ed Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/trainyardrt.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/trainyardup.tga b/config/funmaps/serverfiles/cstrike/gfx/env/trainyardup.tga new file mode 100755 index 0000000..9b7186f Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/trainyardup.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/xen10bk.tga b/config/funmaps/serverfiles/cstrike/gfx/env/xen10bk.tga new file mode 100755 index 0000000..55f328c Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/xen10bk.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/xen10dn.tga b/config/funmaps/serverfiles/cstrike/gfx/env/xen10dn.tga new file mode 100755 index 0000000..813885f Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/xen10dn.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/xen10ft.tga b/config/funmaps/serverfiles/cstrike/gfx/env/xen10ft.tga new file mode 100755 index 0000000..64a1394 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/xen10ft.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/xen10lf.tga b/config/funmaps/serverfiles/cstrike/gfx/env/xen10lf.tga new file mode 100755 index 0000000..6c3e4d4 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/xen10lf.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/xen10rt.tga b/config/funmaps/serverfiles/cstrike/gfx/env/xen10rt.tga new file mode 100755 index 0000000..575a3b6 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/xen10rt.tga differ diff --git a/config/funmaps/serverfiles/cstrike/gfx/env/xen10up.tga b/config/funmaps/serverfiles/cstrike/gfx/env/xen10up.tga new file mode 100755 index 0000000..4d80aad Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/gfx/env/xen10up.tga differ diff --git a/config/funmaps/serverfiles/cstrike/liblist.gam b/config/funmaps/serverfiles/cstrike/liblist.gam new file mode 100644 index 0000000..b24c358 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/liblist.gam @@ -0,0 +1,18 @@ +game "Counter-Strike" +url_info "www.counter-strike.net" +url_dl "" +version "1.6" +size "184000000" +svonly "0" +secure "1" +type "multiplayer_only" +cldll "1" +hlversion "1111" +nomodels "1" +nohimodel "1" +mpentity "info_player_start" +gamedll_osx "dlls/cs.dylib" +trainmap "tr_1" +edicts "1800" +gamedll "addons/metamod/dlls/metamod.dll" +gamedll_linux "addons/metamod/dlls/metamod.so" diff --git a/config/funmaps/serverfiles/cstrike/mapcycle.txt b/config/funmaps/serverfiles/cstrike/mapcycle.txt new file mode 100644 index 0000000..1efaf8b --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/mapcycle.txt @@ -0,0 +1,116 @@ +aim_00_awp.bsp +aim_00.bsp +aim_1on1map.bsp +aim_ak-colt.bsp +aim_brucke.bsp +aim_crazyjump.bsp +aim_dgl_old.bsp +aim_esk_ak47.bsp +aim_fixit.bsp +aim_headshot.bsp +aim_kosova_ak47.bsp +aim_kosova_battle.bsp +aim_kosova_famas.bsp +aim_map2.bsp +aim_map.bsp +aim_map_esl.bsp +aim_map_usp.bsp +aim_sillos.bsp +aim_sk_aug_sig.bsp +aim_sk_galil_famas.bsp +aim_skog.bsp +as_crazytank2.bsp +as_crazytank3.bsp +as_crazytank.bsp +as_pacman.bsp +awp_city2.bsp +awp_city.bsp +awp_darkcrypt.bsp +awp_ea_base.bsp +awp_havana.bsp +awp_india_ks.bsp +awp_kosova_battle.bsp +awp_kosova.bsp +awp_kosovo_trainstation.bsp +awp_map2b.bsp +awp_map.bsp +awp_nite.bsp +awp_skog.bsp +battlefield_rush2.bsp +battlefield_rush.bsp +blahhhh.bsp +crazycar.bsp +crazycar_v2.bsp +crazytank.bsp +cs_beirut.bsp +cs_kloster.bsp +cs_mansion.bsp +cs_pacman.bsp +cspaintball1.bsp +cspaintball2.bsp +cs_paintball.bsp +csp_paintball.bsp +cs_prospeedball.bsp +cs_shogun_final.bsp +cs_speedball.bsp +deathrun_kosova.bsp +de_clan1_mill.bsp +de_crazytank.bsp +de_dolc.bsp +de_dust2_kosovo.bsp +de_dusttown_ex.bsp +de_gash.bsp +de_kosovo.bsp +de_kps.bsp +demo_derby_ka.bsp +demolition_derby2.bsp +de_motel_x.bsp +de_pacman.bsp +de_pacman_m32.bsp +de_paintball.bsp +de_pub2_r3.bsp +de_scud.bsp +de_spree.bsp +de_Super_PaintBall.bsp +de_westwood.bsp +duhhh.bsp +es_pacman.bsp +fy_buzzkill.bsp +fy_iceworld2k.bsp +fy_iceworld_arena_ak47.bsp +fy_iceworld_arena_deagle.bsp +fy_iceworld_arena_grenades.bsp +fy_iceworld_arena_knivesAB.bsp +fy_iceworld_arena_m3.bsp +fy_iceworld_arena_m4a1.bsp +fy_iceworld_arena_xm1014.bsp +fy_iceworld.bsp +fy_osama_house.bsp +fy_paintballarena.bsp +fy_pool_day.bsp +fy_repub.bsp +fy_snow.bsp +gahhhhh.bsp +gg_33_frisson.bsp +gg_bside_paintball.bsp +glass.bsp +GoW_awp_island.bsp +he_glass.bsp +huhhh.bsp +hunters_awpdawn.bsp +ka_pacman.bsp +lab_racing.bsp +laser_tron.bsp +lasertron.bsp +megacrazycar.bsp +overclocked.bsp +ow_cc_crazytank.bsp +pb_castle.bsp +scout_city.bsp +shotgun_frenzy.bsp +spaniard_awp.bsp +supercrazycar2.bsp +supercrazycar.bsp +supercrazytank.bsp +whaaa.bsp +xmas_crazytank.bsp diff --git a/config/funmaps/serverfiles/cstrike/maps/Aim_kosova_femas.txt b/config/funmaps/serverfiles/cstrike/maps/Aim_kosova_femas.txt new file mode 100755 index 0000000..7263bac --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/Aim_kosova_femas.txt @@ -0,0 +1,11 @@ +Map by wicKed a.k.a Shendrit Gashi - Republic of Kosova + +Its a simple map , only Famas allowed . +Find the RED button to open the secret door which gives you an AWP +Have fun + +More maps - wicked-maps.blogspot.com +My add - Diti_1234@hotmail.com +My FB - facebook.com/shendritgashi +My Fan Page - facebook.com/pages/WicKed-CS-16-maps/165400676834665 + diff --git a/config/funmaps/serverfiles/cstrike/maps/GoW_awp_island.bsp b/config/funmaps/serverfiles/cstrike/maps/GoW_awp_island.bsp new file mode 100755 index 0000000..a46cf25 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/GoW_awp_island.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/GoW_awp_island.res b/config/funmaps/serverfiles/cstrike/maps/GoW_awp_island.res new file mode 100755 index 0000000..360b4f6 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/GoW_awp_island.res @@ -0,0 +1,5 @@ +models/awp_island/bush_palmplant.mdl +models/awp_island/palmier.mdl +models/cool/arc_flower.mdl +maps/GoW_awp_island.res +maps/GoW_awp_island.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/GoW_awp_island.txt b/config/funmaps/serverfiles/cstrike/maps/GoW_awp_island.txt new file mode 100755 index 0000000..4e3d3ee --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/GoW_awp_island.txt @@ -0,0 +1,6 @@ +Map GoW_awp_island ~~ By ValianCe ~~ + +http://www.teamgow.net + + +(Press FIRE to continue) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_00.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_00.bsp new file mode 100755 index 0000000..dedb8d2 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_00.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_00.txt b/config/funmaps/serverfiles/cstrike/maps/aim_00.txt new file mode 100755 index 0000000..99c9932 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_00.txt @@ -0,0 +1,26 @@ +aim_00 - Aim-Map +------------------------- + +mapping +>> by Gimli (www.gimli-maps.de) + +textures +>> by Diggedagg and Blazeer + +betatesting +>> by NicTheSick + +gimli-maps: +www.gimli-maps.de + +clan00: +www.clan00.de + +Terrorists: +Simply aim fast and kill your enemies. + + +Counter-Terrorists: +Exactly the same! + +(Press FIRE to b4sh!) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_00_awp.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_00_awp.bsp new file mode 100755 index 0000000..d9fb65e Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_00_awp.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_00_awp.txt b/config/funmaps/serverfiles/cstrike/maps/aim_00_awp.txt new file mode 100755 index 0000000..16f0efd --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_00_awp.txt @@ -0,0 +1,26 @@ +aim_00_awp - Aim-Map +------------------------- + +mapping +>> by Gimli (www.gimli-maps.de) + +textures +>> by Diggedagg and Blazeer + +betatesting +>> by NicTheSick + +gimli-maps: +www.gimli-maps.de + +clan00: +www.clan00.de + +Terrorists: +Simply aim fast and kill your enemies. + + +Counter-Terrorists: +Exactly the same! + +(Press FIRE to b4sh!) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_00_awp_readme.txt b/config/funmaps/serverfiles/cstrike/maps/aim_00_awp_readme.txt new file mode 100755 index 0000000..0396fd9 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_00_awp_readme.txt @@ -0,0 +1,70 @@ +aim_00_awp! (aim_00_awp.bsp) +================================== + +Aim-Multiplayer map for Half-Life Counterstrike +------------------------------------------------------- + +General +------- +Author : Gimli +E-Mail : GimliW@gmx.net + +Textures : Diggedagge, Blazeer + +Sky : the cstrike team +Sound Editing : - +Models : - + +Map Information +--------------- +Version : Final Version 1.0 (28/03/2006) +Spawn Points : 32 +Other Notes : Just aim! + + +Construction +------------ +Level Editor : Valve Hammer Editor Beta 3.5 +Compile Tools : Zoner's HL Tools 1.7p15 modified by XP-Cagey +Compile Time : ~0,2 h on an AMD64 3700+, 1024 MB RAM +Build Time : ~4 hours but many more testing :-) + + +Other Maps from same author +--------------------------- +de_alps +cs_alps +csde_gimlirats +he_nature +de_esl_autumn + +latest news: http://www.gimli-maps.de + + +Install Information +------------------- +Unzip all files into your Half-Life / Counter-Strike directory + + + +Notes +----- + +You may only distribute this map via internet or BBS. +You are not allowed to distribute this map or parts of +the zip-file containing the map on a CD. + + + +Credits +------- +Greetings to the guys from #cs.maps (quakenet) and #clan00, +especially to Doc, Mewel, Jayjay, Sumi and the rest of the cs squad. +Thx to the mentioned artists for making awesome textures, skies, sounds and models. + +Big thx to NicTheSick / quiqueg for intensive beta testing. + + +Copyright +--------- +©2006 by Daniel "Gimli" Westhofen \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_00_readme.txt b/config/funmaps/serverfiles/cstrike/maps/aim_00_readme.txt new file mode 100755 index 0000000..f80462b --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_00_readme.txt @@ -0,0 +1,70 @@ +aim_00! (aim_00.bsp) +================================== + +Aim-Multiplayer map for Half-Life Counterstrike +------------------------------------------------------- + +General +------- +Author : Gimli +E-Mail : GimliW@gmx.net + +Textures : Diggedagge, Blazeer + +Sky : the cstrike team +Sound Editing : - +Models : - + +Map Information +--------------- +Version : Final Version 1.0 (28/03/2006) +Spawn Points : 32 +Other Notes : Just aim! + + +Construction +------------ +Level Editor : Valve Hammer Editor Beta 3.5 +Compile Tools : Zoner's HL Tools 1.7p15 modified by XP-Cagey +Compile Time : ~0,2 h on an AMD64 3700+, 1024 MB RAM +Build Time : ~4 hours but many more testing :-) + + +Other Maps from same author +--------------------------- +de_alps +cs_alps +csde_gimlirats +he_nature +de_esl_autumn + +latest news: http://www.gimli-maps.de + + +Install Information +------------------- +Unzip all files into your Half-Life / Counter-Strike directory + + + +Notes +----- + +You may only distribute this map via internet or BBS. +You are not allowed to distribute this map or parts of +the zip-file containing the map on a CD. + + + +Credits +------- +Greetings to the guys from #cs.maps (quakenet) and #clan00, +especially to Doc, Mewel, Jayjay, Sumi and the rest of the cs squad. +Thx to the mentioned artists for making awesome textures, skies, sounds and models. + +Big thx to NicTheSick / quiqueg for intensive beta testing. + + +Copyright +--------- +©2006 by Daniel "Gimli" Westhofen \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_1on1map.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_1on1map.bsp new file mode 100755 index 0000000..fa20d06 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_1on1map.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_ak-colt.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_ak-colt.bsp new file mode 100755 index 0000000..68ee7c2 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_ak-colt.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_brucke.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_brucke.bsp new file mode 100755 index 0000000..dfcd3cc Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_brucke.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_brucke.txt b/config/funmaps/serverfiles/cstrike/maps/aim_brucke.txt new file mode 100755 index 0000000..5864cd8 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_brucke.txt @@ -0,0 +1,15 @@ +aim_brucke (brucke is German for bridge) +By Keldon and Deletable_Man of the + Can i Get Paid? Clan + + and lots of + optimization, advice, tips, and + debugging by the great KornyBizkit! + +Thanks KB!! +---------------------------------------- +Counter-Terrorists: Kill the Terrorists +Terrorists: Kill the Counter-Terrorists +---------------------------------------- +http://cigp.recongamer.com +server.cigp.recongamer.com:27015 \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_crazyjump.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_crazyjump.bsp new file mode 100755 index 0000000..e0dedd0 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_crazyjump.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_dgl_old.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_dgl_old.bsp new file mode 100755 index 0000000..0043243 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_dgl_old.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_dgl_old.res b/config/funmaps/serverfiles/cstrike/maps/aim_dgl_old.res new file mode 100755 index 0000000..482ab2d --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_dgl_old.res @@ -0,0 +1,16 @@ +// aim_dgl_old.res - created with RESGen v2.0.2. +// RESGen is made by Jeroen "ShadowLord" Bogers, +// with serveral improvements and additions by Zero3Cool. +// For more info go to http://resgen.hltools.com + +// .res entries (10): +aim_dgl_old.wad +gfx/env/trainyardbk.tga +gfx/env/trainyarddn.tga +gfx/env/trainyardft.tga +gfx/env/trainyardlf.tga +gfx/env/trainyardrt.tga +gfx/env/trainyardup.tga +halflife.wad +models/player/gsg9/gsg9.mdl +models/player/guerilla/guerilla.mdl diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_dgl_old.txt b/config/funmaps/serverfiles/cstrike/maps/aim_dgl_old.txt new file mode 100755 index 0000000..b9269f5 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_dgl_old.txt @@ -0,0 +1,5 @@ +Great Map ! + +Diti_1234@hotmail.com + +Visit Kosova Visit Kosova Visit Kosova Visit Kosova Visit Kosova Visit Kosova Visit Kosova Visit Kosova Visit Kosova Visit Kosova Visit Kosova Visit Kosova Visit Kosova Visit Kosova Visit Kosova Visit Kosova Visit Kosova Visit Kosova Visit Kosova Visit Kosova \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_esk_ak47.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_esk_ak47.bsp new file mode 100755 index 0000000..8d5afa5 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_esk_ak47.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_esk_ak47.res b/config/funmaps/serverfiles/cstrike/maps/aim_esk_ak47.res new file mode 100755 index 0000000..96047a4 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_esk_ak47.res @@ -0,0 +1,17 @@ +// aim_esk_ak47.res - created with RESGen v2.0.2. +// RESGen is made by Jeroen "ShadowLord" Bogers, +// with serveral improvements and additions by Zero3Cool. +// For more info go to http://resgen.hltools.com + +// .res entries (11): +aim_esk_ak47.wad +gfx/env/mon_sky_bk.tga +gfx/env/mon_sky_dn.tga +gfx/env/mon_sky_ft.tga +gfx/env/mon_sky_lf.tga +gfx/env/mon_sky_rt.tga +gfx/env/mon_sky_up.tga +models/player/gsg9/gsg9.mdl +models/player/guerilla/guerilla.mdl +sound/ambience/wind2.wav +sound/ambience/wren1.wav diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_esk_ak47.txt b/config/funmaps/serverfiles/cstrike/maps/aim_esk_ak47.txt new file mode 100755 index 0000000..2020d5b --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_esk_ak47.txt @@ -0,0 +1,5 @@ +Map by wicKed a.k.a Shendrit Gashi + +more maps here --> + +http://wicked-maps.blogspot.com/ \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_fixit.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_fixit.bsp new file mode 100755 index 0000000..1e06752 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_fixit.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_headshot.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_headshot.bsp new file mode 100755 index 0000000..b8fb7f0 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_headshot.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_headshot.txt b/config/funmaps/serverfiles/cstrike/maps/aim_headshot.txt new file mode 100755 index 0000000..1d88b04 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_headshot.txt @@ -0,0 +1,3 @@ +Map par Shoutman +Pour le clan Rc +Et tous les joueurs de counter-strike \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_kosova_ak47.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_kosova_ak47.bsp new file mode 100755 index 0000000..de79bf1 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_kosova_ak47.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_kosova_ak47.res b/config/funmaps/serverfiles/cstrike/maps/aim_kosova_ak47.res new file mode 100755 index 0000000..fca6c90 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_kosova_ak47.res @@ -0,0 +1,24 @@ +// aim_kosova_ak47.res - created with RESGen v2.0.2. +// RESGen is made by Jeroen "ShadowLord" Bogers, +// with serveral improvements and additions by Zero3Cool. +// For more info go to http://resgen.hltools.com + +// .res entries (18): +aim_kosova_ak47.wad +gfx/env/nebosky1bk.tga +gfx/env/nebosky1dn.tga +gfx/env/nebosky1ft.tga +gfx/env/nebosky1lf.tga +gfx/env/nebosky1rt.tga +gfx/env/nebosky1up.tga +halflife.wad +models/aim_kosova_ak47/flag_alb.mdl +sound/ambience/bigwarning.wav +sound/ambience/drips.wav +sound/ambience/goal_1.wav +sound/ambience/industrial2.wav +sound/ambience/sandfall2.wav +sound/ambience/wind2.wav +sound/ambience/wren1.wav +sound/barney/waitin.wav +sound/gman/gman_choose2.wav diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_kosova_ak47.txt b/config/funmaps/serverfiles/cstrike/maps/aim_kosova_ak47.txt new file mode 100755 index 0000000..90ffe1b --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_kosova_ak47.txt @@ -0,0 +1,10 @@ +Map by wicKed a.k.a Shendrit Gashi - Republic of Kosova + +Only AK47 allowed try to climb near the Albanian Flag to +teleport you to a secret room . + +More maps - wicked-maps.blogspot.com +My add - Diti_1234@hotmail.com +My FB - facebook.com/shendritgashi +My Fan Page - facebook.com/pages/WicKed-CS-16-maps/165400676834665 + diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_kosova_battle.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_kosova_battle.bsp new file mode 100755 index 0000000..7d2e186 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_kosova_battle.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_kosova_battle.txt b/config/funmaps/serverfiles/cstrike/maps/aim_kosova_battle.txt new file mode 100755 index 0000000..6198a7a --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_kosova_battle.txt @@ -0,0 +1,7 @@ +Map by wicKed a.k.a ShendriT Gashi + +Map created for my country Kosovo + +Hope you like and enjoy it . + +wicked-maps.blogspot.com \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_kosova_famas.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_kosova_famas.bsp new file mode 100755 index 0000000..7ef920b Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_kosova_famas.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_kosova_famas.res b/config/funmaps/serverfiles/cstrike/maps/aim_kosova_famas.res new file mode 100755 index 0000000..c9a9269 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_kosova_famas.res @@ -0,0 +1,16 @@ +// aim_kosova_famas.res - created with RESGen v2.0.2. +// RESGen is made by Jeroen "ShadowLord" Bogers, +// with serveral improvements and additions by Zero3Cool. +// For more info go to http://resgen.hltools.com + +// .res entries (10): +decals.wad +gfx/env/trainyardbk.tga +gfx/env/trainyarddn.tga +gfx/env/trainyardft.tga +gfx/env/trainyardlf.tga +gfx/env/trainyardrt.tga +gfx/env/trainyardup.tga +halflife.wad +models/aim_kosova_famas/flag_alb.mdl +sound/scientist/okgetout.wav diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_map.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_map.bsp new file mode 100755 index 0000000..305cd01 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_map.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_map2.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_map2.bsp new file mode 100755 index 0000000..712771a Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_map2.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_map2.txt b/config/funmaps/serverfiles/cstrike/maps/aim_map2.txt new file mode 100755 index 0000000..77a3943 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_map2.txt @@ -0,0 +1,7 @@ +This map was created by Svill + +16/08/2003 + +I hope you enjoy playing my map. + +(Press FIRE to continue) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_map_esl.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_map_esl.bsp new file mode 100755 index 0000000..1c4f7b4 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_map_esl.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_map_esl.txt b/config/funmaps/serverfiles/cstrike/maps/aim_map_esl.txt new file mode 100755 index 0000000..d298453 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_map_esl.txt @@ -0,0 +1,24 @@ +////////////////////////////// +/////// aim_map_esl ////////// +////////////////////////////// + + +-> Created by MR.D + +#MR.D (irc.quakenet.org) +www.myMRD.de +(c) 2006 www.myMRD.de + + +-> for Electronic Sports League + +#ESL (irc.quakenet.org) +www.esl-europe.net + + + +////////////////////////////// +/////// Max Players: 12 ////// +////////////////////////////// +/////// Enjoy! /////////////// +////////////////////////////// \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_map_usp.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_map_usp.bsp new file mode 100755 index 0000000..53360b8 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_map_usp.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_map_usp.txt b/config/funmaps/serverfiles/cstrike/maps/aim_map_usp.txt new file mode 100755 index 0000000..ef2840a --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_map_usp.txt @@ -0,0 +1,12 @@ +Aimtraining USP +Map by Som (figge75@hotmail.com) +Additional textures by Som + + +Counter-Terrorists: +Practice your usp aim + +Terrorists: +Same as ct. + +(Press FIRE to continue) diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_sillos.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_sillos.bsp new file mode 100755 index 0000000..9cd7e2f Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_sillos.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_sillos.txt b/config/funmaps/serverfiles/cstrike/maps/aim_sillos.txt new file mode 100755 index 0000000..ec7d2d5 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_sillos.txt @@ -0,0 +1,12 @@ +Map by wicKed a.k.a Shendrit Gashi - Republic of Kosova + +Its a simple map , only Desert Eagle allowed . +Try to find the secret jump to teleport +to the secret room which gives you an AWP. +Have fun + +More maps - wicked-maps.blogspot.com +My add - Diti_1234@hotmail.com +My FB - facebook.com/shendritgashi +My Fan Page - facebook.com/pages/WicKed-CS-16-maps/165400676834665 + diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_sk_aug_sig.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_sk_aug_sig.bsp new file mode 100755 index 0000000..8e19b75 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_sk_aug_sig.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_sk_galil_famas.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_sk_galil_famas.bsp new file mode 100755 index 0000000..4948317 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_sk_galil_famas.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_sk_galil_famas.txt b/config/funmaps/serverfiles/cstrike/maps/aim_sk_galil_famas.txt new file mode 100755 index 0000000..2711c2d --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_sk_galil_famas.txt @@ -0,0 +1,25 @@ +Map: aim_sk_galil_famas +Weapons: GALIL & FAMAS +Series: aim_sk_series +Copyright: SK - Schroet Kommando +Author: Tazus +Textures: Pareeze + +Install: +Unzip all files in your cstrike folder. +If you have steam, it should be something like: +X:\Program Files\Steam\SteamApps\mail@mail.com\counter-strike\cstrike\ + +For more aim_sk maps check out: +http://www.schroet.com/maps.php + +For more maps by Tazus check out: +http://www.tazusmaps.com + +Contact: +info@schroet.com +http://www.schroet.com +#sk on irc.quakenet.org + + +(Press Fire to Continue) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_skog.bsp b/config/funmaps/serverfiles/cstrike/maps/aim_skog.bsp new file mode 100755 index 0000000..14092c1 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_skog.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_skog.nav b/config/funmaps/serverfiles/cstrike/maps/aim_skog.nav new file mode 100755 index 0000000..745addf Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/aim_skog.nav differ diff --git a/config/funmaps/serverfiles/cstrike/maps/aim_skog.txt b/config/funmaps/serverfiles/cstrike/maps/aim_skog.txt new file mode 100755 index 0000000..3f26e70 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/aim_skog.txt @@ -0,0 +1,15 @@ +Welcome to Skog, the Scandinavian +forest shooting range. + +Enjoy either the AWP or AIM version + +A Zbot navigation file has been included, +generated on a simplified version, as +the automatic learning crashed on my PC +in the full release map. + +You can try and generate your own by +deleting the aim_skog.nav file from +"cstrike/maps" + +FD|nelietis / koijotito \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/as_crazytank.bsp b/config/funmaps/serverfiles/cstrike/maps/as_crazytank.bsp new file mode 100755 index 0000000..c6cc070 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/as_crazytank.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/as_crazytank.res b/config/funmaps/serverfiles/cstrike/maps/as_crazytank.res new file mode 100755 index 0000000..414eed7 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/as_crazytank.res @@ -0,0 +1,14 @@ +// as_crazytank.res was written by YellowJello for redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + + +gfx/env/desbk.tga +gfx/env/desdn.tga +gfx/env/desft.tga +gfx/env/deslf.tga +gfx/env/desrt.tga +gfx/env/desup.tga +sound/weapons/elite_fire.wav +overviews/as_crazytank.bmp +overviews/as_crazytank.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/as_crazytank.txt b/config/funmaps/serverfiles/cstrike/maps/as_crazytank.txt new file mode 100755 index 0000000..2ace321 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/as_crazytank.txt @@ -0,0 +1,14 @@ +CrazyTank - Assassination + +Map by Nathaniel J Miller AKA NIPPER +maps @ www.geocities.com/nipper14223 +(nipperproductions@hotmail.com) + +CT: Use the CrazyTank to navigate your +way through the chasm to the VIP escape +zone. + +T: You have 20 seconds from the moment +you spawn to set up your ambush of the +CTs and their CrazyTank. + diff --git a/config/funmaps/serverfiles/cstrike/maps/as_crazytank2.bsp b/config/funmaps/serverfiles/cstrike/maps/as_crazytank2.bsp new file mode 100755 index 0000000..c71f401 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/as_crazytank2.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/as_crazytank2.res b/config/funmaps/serverfiles/cstrike/maps/as_crazytank2.res new file mode 100755 index 0000000..8d31407 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/as_crazytank2.res @@ -0,0 +1,13 @@ +// as_crazytank2.res was written by YellowJello for redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +gfx/env/desbk.tga +gfx/env/desdn.tga +gfx/env/desft.tga +gfx/env/deslf.tga +gfx/env/desrt.tga +gfx/env/desup.tga +sound/weapons/elite_fire.wav +overviews/as_crazytank2.bmp +overviews/as_crazytank2.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/as_crazytank2.txt b/config/funmaps/serverfiles/cstrike/maps/as_crazytank2.txt new file mode 100755 index 0000000..5ab3fdc --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/as_crazytank2.txt @@ -0,0 +1,19 @@ +CrazyTank 2 - Assassination + +Map by Nathaniel J Miller AKA NIPPER +maps @ www.geocities.com/nipper14223 +(nipperproductions@hotmail.com) + +CT: You have made it this far, but the +road ahead has too many obstacles for +the tank to drive through. With the help +of a chopper, the tank will be air lifted +through the rest of the chasm. But the +tank is too heavy to be lifted out of the +chasm completely. + +T: Stop the VIP from surviving the ride +through the chasm at all costs. + + + diff --git a/config/funmaps/serverfiles/cstrike/maps/as_crazytank3.bsp b/config/funmaps/serverfiles/cstrike/maps/as_crazytank3.bsp new file mode 100755 index 0000000..0c380d5 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/as_crazytank3.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/as_crazytank3.res b/config/funmaps/serverfiles/cstrike/maps/as_crazytank3.res new file mode 100755 index 0000000..13e9486 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/as_crazytank3.res @@ -0,0 +1,13 @@ +// as_crazytank3.res was written by YellowJello for redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +gfx/env/trainyardbk.tga +gfx/env/trainyarddn.tga +gfx/env/trainyardft.tga +gfx/env/trainyardlf.tga +gfx/env/trainyardrt.tga +gfx/env/trainyardup.tga +sound/weapons/elite_fire.wav +overviews/as_crazytank3.bmp +overviews/as_crazytank3.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/as_crazytank3.txt b/config/funmaps/serverfiles/cstrike/maps/as_crazytank3.txt new file mode 100755 index 0000000..6c8c05b --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/as_crazytank3.txt @@ -0,0 +1,17 @@ +CrazyTank 3 - Assassination + +Map by Nathaniel J Miller AKA NIPPER +maps @ www.geocities.com/nipper14223 +(nipperproductions@hotmail.com) + +CT: You must protect the crazytank +from being horribly mutated by the +evil map decompiling terrorists. +Carry the crazytank through the water +on the boat. + +T: Same as usual just kill those +CTs again. + + + diff --git a/config/funmaps/serverfiles/cstrike/maps/as_pacman.bsp b/config/funmaps/serverfiles/cstrike/maps/as_pacman.bsp new file mode 100755 index 0000000..997efb0 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/as_pacman.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/as_pacman.res b/config/funmaps/serverfiles/cstrike/maps/as_pacman.res new file mode 100755 index 0000000..06789e0 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/as_pacman.res @@ -0,0 +1,8 @@ +// as_pacman.res - created with RESGen v2.0.2. +// RESGen is made by Jeroen "ShadowLord" Bogers, +// with serveral improvements and additions by Zero3Cool. +// For more info go to http://resgen.hltools.com + +// .res entries (2): +sound/misc/pac_cherry.wav +sound/misc/pac_intro.wav diff --git a/config/funmaps/serverfiles/cstrike/maps/as_pacman.txt b/config/funmaps/serverfiles/cstrike/maps/as_pacman.txt new file mode 100755 index 0000000..8daa593 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/as_pacman.txt @@ -0,0 +1,9 @@ +as_pacman - Assassination +by CRAZG ( hm_crazg@hotmail.com ) + +Counter Terrorists: +Escort VIP to the center room. +VIP must touch the back wall. + +Terrorists: +Kill the VIP. diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_city.bsp b/config/funmaps/serverfiles/cstrike/maps/awp_city.bsp new file mode 100755 index 0000000..9aa341e Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/awp_city.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_city.res b/config/funmaps/serverfiles/cstrike/maps/awp_city.res new file mode 100755 index 0000000..ea98610 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/awp_city.res @@ -0,0 +1,6 @@ +// awp_city.res was written by YellowJello for redistribution on GameBanana. +// Credits for the original map go to SuperJer +// https://gamebanana.com/ + +overviews/awp_city.bmp +overviews/awp_city.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_city.txt b/config/funmaps/serverfiles/cstrike/maps/awp_city.txt new file mode 100755 index 0000000..055b285 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/awp_city.txt @@ -0,0 +1,9 @@ +AWP City +by SuperJer + +SuperJer.com + +Everyone wins a free AWP. +No purchase necessary. + + diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_city2.bsp b/config/funmaps/serverfiles/cstrike/maps/awp_city2.bsp new file mode 100755 index 0000000..f5ac349 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/awp_city2.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_city2.res b/config/funmaps/serverfiles/cstrike/maps/awp_city2.res new file mode 100755 index 0000000..f45f564 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/awp_city2.res @@ -0,0 +1,6 @@ +// awp_city2.res was written by YellowJello for redistribution on GameBanana. +// Credits for the original map go to SuperJer +// https://gamebanana.com/ + +overviews/awp_city2.bmp +overviews/awp_city2.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_city2.txt b/config/funmaps/serverfiles/cstrike/maps/awp_city2.txt new file mode 100755 index 0000000..d1bb468 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/awp_city2.txt @@ -0,0 +1,17 @@ +AWP City 2 +awp_city2.bsp +by SuperJer + +SuperJer.com + +New and better version of awp_city.bsp. +Improvements: +* More cover added to both sides. +* Reduced number of visible polys. +* Players receive awp after time delay + to prevent spawn killing. + +Have fun! + + + diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_darkcrypt.bsp b/config/funmaps/serverfiles/cstrike/maps/awp_darkcrypt.bsp new file mode 100755 index 0000000..d501f04 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/awp_darkcrypt.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_darkcrypt.log b/config/funmaps/serverfiles/cstrike/maps/awp_darkcrypt.log new file mode 100755 index 0000000..eed1829 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/awp_darkcrypt.log @@ -0,0 +1,16 @@ +AWP_DarkCrypt by tizu +======================= + +Decided to change the +FY_ style maps and do +an AWP_ style map. I +choosed a temple-like +map with big dimensions. +Big map, 32 spawns, +good gameplay, result: +fun! + +Hope you'll enjoy it! +======================= +(Orbital Studio leader) +======================= \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_ea_base.bsp b/config/funmaps/serverfiles/cstrike/maps/awp_ea_base.bsp new file mode 100755 index 0000000..11863d6 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/awp_ea_base.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_havana.bsp b/config/funmaps/serverfiles/cstrike/maps/awp_havana.bsp new file mode 100755 index 0000000..63a7d3b Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/awp_havana.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_havana.res b/config/funmaps/serverfiles/cstrike/maps/awp_havana.res new file mode 100755 index 0000000..bf82004 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/awp_havana.res @@ -0,0 +1,3 @@ +maps/awp_havana.txt +maps/awp_havana.res + diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_havana.txt b/config/funmaps/serverfiles/cstrike/maps/awp_havana.txt new file mode 100755 index 0000000..f685ee0 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/awp_havana.txt @@ -0,0 +1,3 @@ +awp_havana BY h9r9e ;). + +http://www.esl.eu/de/player/518195/ \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_india_ks.bsp b/config/funmaps/serverfiles/cstrike/maps/awp_india_ks.bsp new file mode 100755 index 0000000..caef348 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/awp_india_ks.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_india_ks.txt b/config/funmaps/serverfiles/cstrike/maps/awp_india_ks.txt new file mode 100755 index 0000000..bac052d --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/awp_india_ks.txt @@ -0,0 +1,5 @@ +AWP_INDIA_KS - KOSOVO + +MAP BY wicKed a.k.a Shendrit Gashi + +hope you enjoy it \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_kosova.bsp b/config/funmaps/serverfiles/cstrike/maps/awp_kosova.bsp new file mode 100755 index 0000000..7799a46 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/awp_kosova.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_kosova_battle.bsp b/config/funmaps/serverfiles/cstrike/maps/awp_kosova_battle.bsp new file mode 100755 index 0000000..c37acfb Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/awp_kosova_battle.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_kosova_battle.res b/config/funmaps/serverfiles/cstrike/maps/awp_kosova_battle.res new file mode 100755 index 0000000..6e9264f --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/awp_kosova_battle.res @@ -0,0 +1,14 @@ +// awp_kosova_battle.res - created with RESGen v2.0.2. +// RESGen is made by Jeroen "ShadowLord" Bogers, +// with serveral improvements and additions by Zero3Cool. +// For more info go to http://resgen.hltools.com + +// .res entries (8): +aim_drenica.wad +gfx/env/trainyardbk.tga +gfx/env/trainyarddn.tga +gfx/env/trainyardft.tga +gfx/env/trainyardlf.tga +gfx/env/trainyardrt.tga +gfx/env/trainyardup.tga +halflife.wad diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_kosova_battle.txt b/config/funmaps/serverfiles/cstrike/maps/awp_kosova_battle.txt new file mode 100755 index 0000000..fe82be5 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/awp_kosova_battle.txt @@ -0,0 +1,13 @@ +Map based of a city in " Republic of Kosovo " After 1999 war + + + + +Map by wicKed a.k.a ShendriT Gashi + +for more maps go to : + +http://wicked-maps.blogspot.com/ + +www.facebook.com/#!/pages/WicKed-CS-16-maps/165400676834665 + diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_kosovo_trainstation.bsp b/config/funmaps/serverfiles/cstrike/maps/awp_kosovo_trainstation.bsp new file mode 100755 index 0000000..b297f58 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/awp_kosovo_trainstation.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_kosovo_trainstation.bsp.txt b/config/funmaps/serverfiles/cstrike/maps/awp_kosovo_trainstation.bsp.txt new file mode 100755 index 0000000..4707138 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/awp_kosovo_trainstation.bsp.txt @@ -0,0 +1,8 @@ +Map by wicKed a.k.a Shendrit Gashi +from Kosovo + +Map based on TrainStation of Peja "City in Kosovo" + +thank you for playing in it and visit for more maps + +wicked-maps.blogspot.com diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_map.bsp b/config/funmaps/serverfiles/cstrike/maps/awp_map.bsp new file mode 100755 index 0000000..ebec647 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/awp_map.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_map2b.bsp b/config/funmaps/serverfiles/cstrike/maps/awp_map2b.bsp new file mode 100755 index 0000000..e59c65c Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/awp_map2b.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_nite.bsp b/config/funmaps/serverfiles/cstrike/maps/awp_nite.bsp new file mode 100755 index 0000000..1b6d268 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/awp_nite.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_nite.txt b/config/funmaps/serverfiles/cstrike/maps/awp_nite.txt new file mode 100755 index 0000000..b433873 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/awp_nite.txt @@ -0,0 +1,11 @@ +Awp Nite +map by BurQiousX (burqiousx@gmail.com) + + +Have Fun! + + + +Credits: jEFE (sr_jefe@hotmail.com) + +(Press FIRE to continue) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_skog.bsp b/config/funmaps/serverfiles/cstrike/maps/awp_skog.bsp new file mode 100755 index 0000000..38af340 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/awp_skog.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_skog.nav b/config/funmaps/serverfiles/cstrike/maps/awp_skog.nav new file mode 100755 index 0000000..745addf Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/awp_skog.nav differ diff --git a/config/funmaps/serverfiles/cstrike/maps/awp_skog.txt b/config/funmaps/serverfiles/cstrike/maps/awp_skog.txt new file mode 100755 index 0000000..f7d6f2c --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/awp_skog.txt @@ -0,0 +1,15 @@ +Welcome to Skog, the Scandinavian +forest shooting range. + +Enjoy either the AWP or AIM version + +A Zbot navigation file has been included, +generated on a simplified version, as +the automatic learning crashed on my PC +in the full release map. + +You can try and generate your own by +deleting the awp_skog.nav file from +"cstrike/maps" + +FD|nelietis / koijotito \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/battlefield_rush.bsp b/config/funmaps/serverfiles/cstrike/maps/battlefield_rush.bsp new file mode 100755 index 0000000..9c59bbc Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/battlefield_rush.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/battlefield_rush.nav b/config/funmaps/serverfiles/cstrike/maps/battlefield_rush.nav new file mode 100755 index 0000000..9dcaf3c Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/battlefield_rush.nav differ diff --git a/config/funmaps/serverfiles/cstrike/maps/battlefield_rush.res b/config/funmaps/serverfiles/cstrike/maps/battlefield_rush.res new file mode 100755 index 0000000..64189b2 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/battlefield_rush.res @@ -0,0 +1,14 @@ +// battlefield_rush.res - written by YellowJello for the redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +halflife.wad + +gfx/env/grnplsntbk.tga +gfx/env/grnplsntdn.tga +gfx/env/grnplsntft.tga +gfx/env/grnplsntlf.tga +gfx/env/grnplsntrt.tga +gfx/env/grnplsntup.tga + +sound/ambience/biggun1.wav \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/battlefield_rush.txt b/config/funmaps/serverfiles/cstrike/maps/battlefield_rush.txt new file mode 100755 index 0000000..edb82dd --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/battlefield_rush.txt @@ -0,0 +1,11 @@ +Battlefield rush - Diffusion +Mapping by Nathaniel Miller AKA NIPPER +maps @ www.geocities.com/nipper14223 + +T: Rush the CTs position and blow up +their damn crate prefabs! + +CT: Hold your posistion and defend your +crate prefabs! + +(press GOGOGO to continue...) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/battlefield_rush2.bsp b/config/funmaps/serverfiles/cstrike/maps/battlefield_rush2.bsp new file mode 100755 index 0000000..d375a51 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/battlefield_rush2.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/battlefield_rush2.nav b/config/funmaps/serverfiles/cstrike/maps/battlefield_rush2.nav new file mode 100755 index 0000000..b4936f6 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/battlefield_rush2.nav differ diff --git a/config/funmaps/serverfiles/cstrike/maps/battlefield_rush2.res b/config/funmaps/serverfiles/cstrike/maps/battlefield_rush2.res new file mode 100755 index 0000000..a403de5 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/battlefield_rush2.res @@ -0,0 +1,20 @@ +// battlefield_rush2.res - written by YellowJello for the redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +halflife.wad + +gfx/env/grnplsntbk.tga +gfx/env/grnplsntdn.tga +gfx/env/grnplsntft.tga +gfx/env/grnplsntlf.tga +gfx/env/grnplsntrt.tga +gfx/env/grnplsntup.tga + +models/w_c4.mdl + +overviews/battlefield_rush2.tga +overviews/battlefield_rush2.txt + +sound/weapons/elite_fire.wav +sound/weapons/fiveseven-1.wav \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/battlefield_rush2.txt b/config/funmaps/serverfiles/cstrike/maps/battlefield_rush2.txt new file mode 100755 index 0000000..2423222 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/battlefield_rush2.txt @@ -0,0 +1,14 @@ +Battlefield rush2 - CT Escape (Hostage Rescue) +Mapping by Nathaniel Miller AKA NIPPER +maps @ www.geocities.com/nipper14223 + +CT: Rush the Ts position and plant the +bomb under the T trench. Plan your attack! + +T: Hold your position and repel the CT attack. +Use the gun turrets. You will need them! + +Note: The grate at T spawn will open after +a short time. The button behind it blows up +the CT spawn, this is to kill any CTs that +might be AFK. diff --git a/config/funmaps/serverfiles/cstrike/maps/blahhhh.bsp b/config/funmaps/serverfiles/cstrike/maps/blahhhh.bsp new file mode 100755 index 0000000..6ce359a Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/blahhhh.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/blahhhh.res b/config/funmaps/serverfiles/cstrike/maps/blahhhh.res new file mode 100755 index 0000000..652a02e --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/blahhhh.res @@ -0,0 +1,31 @@ +// blahhhh.res - created with RESGen v2.0 BETA 3. +// RESGen is made by Jeroen "ShadowLord" Bogers. +// For more info go to http://resgen.hltools.com +// or E-mail me at resgen@hltools.com. + +// .res entries (25): +sound/duh_tree.wav +sound/nm_floyd_puddin.wav +sound/nm_radiohead_idioteque.wav +sound/nm_bookert_greenonions.wav +sound/nm_floyd_usandthem.wav +sound/nm_outkast_loveinwar.wav +sound/nm_stevemiller_airliner.wav +sound/nm_lz_bonzos.wav +sound/nm_stevemiller_usa.wav +sound/nm_doors_fugedup.wav +sound/nm_doors_scream.wav +sound/nm_rtp_theme.wav +sound/nm_fnm_midlife.wav +sound/nm_benfolds_ipaid.wav +sound/nm_rbf_senorita.wav +sound/nm_cb_comewithus.wav +sound/nmh_scream1.wav +sound/nm_doors_idiots.wav +sprites/flame2.spr +sprites/nm_red.spr +sound/nm_stones_intro.wav +sound/nm_rbf_intro.wav +sound/nm_scent_hooah.wav +overviews/blahhhh.tga +overviews/blahhhh.txt diff --git a/config/funmaps/serverfiles/cstrike/maps/blahhhh.txt b/config/funmaps/serverfiles/cstrike/maps/blahhhh.txt new file mode 100755 index 0000000..993f773 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/blahhhh.txt @@ -0,0 +1,16 @@ +BLAHHHH! - Bomb +Mapping by Nathaniel Miller AKA NIPPER +maps @ www.geocities.com/nipper14223 + +The baby-demon from the good part of hell +needs our help. But sitting alone in this +intergalactic diner one can’t help but wonder +if we really can help him. When then Colonel +calls will you not answer? We cannot save the +pudding for desert this time. We need to look +into our own eyes and see the light at the end +of the tunnel. Even if we need to call upon +the might of the CrazyTank, the baby-demon +must be saved. Only then may we arrive at +our utopia and only then will we be able to +dance. diff --git a/config/funmaps/serverfiles/cstrike/maps/crazycar.bsp b/config/funmaps/serverfiles/cstrike/maps/crazycar.bsp new file mode 100755 index 0000000..7d5e218 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/crazycar.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/crazycar.res b/config/funmaps/serverfiles/cstrike/maps/crazycar.res new file mode 100755 index 0000000..9e84fb3 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/crazycar.res @@ -0,0 +1,7 @@ +// crazycar.res was written by YellowJello for redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +de_vegas.wad +overviews/crazycar.bmp +overviews/crazycar.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/crazycar.txt b/config/funmaps/serverfiles/cstrike/maps/crazycar.txt new file mode 100755 index 0000000..306acb4 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/crazycar.txt @@ -0,0 +1,16 @@ +CrazyCar - Fight to the death +Mapping by Nathaniel Miller AKA NIPPER +Textures by: Half-life/Counter-strike + +Prefab by Yak_Fighter (truck is modified) + +Briefing: +DONT TAKE THIS MAP SERIOUSLY! +CTs have the crazycar and Ts have go-carts. + +Counter-Terrorists: Kill Ts from the +safety of the crazycar + +Terrorists: Kill CTs + +(Press FIRE to continue) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/crazycar_v2.bsp b/config/funmaps/serverfiles/cstrike/maps/crazycar_v2.bsp new file mode 100755 index 0000000..8f95b71 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/crazycar_v2.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/crazycar_v2.res b/config/funmaps/serverfiles/cstrike/maps/crazycar_v2.res new file mode 100755 index 0000000..9b070ae --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/crazycar_v2.res @@ -0,0 +1,12 @@ +// crazycar_v2.res was written by YellowJello for redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +de_vegas.wad +models/chick.mdl +models/head.mdl +models/w_smokegrenade.mdl +sound/ambience/biggun1.wav +sprites/muzzleflash2.spr +overviews/crazycar_v2.bmp +overviews/crazycar_v2.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/crazycar_v2.txt b/config/funmaps/serverfiles/cstrike/maps/crazycar_v2.txt new file mode 100755 index 0000000..a690103 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/crazycar_v2.txt @@ -0,0 +1,18 @@ +CrazyCar_v2 - Fight to the death +Mapping by Nathaniel Miller AKA NIPPER +Textures by: Half-life/Counter-strike + +Some Prefabs by Yak_Fighter (truck is modified) + +DONT TAKE THIS MAP SERIOUSLY! +CTs have the crazycar and Ts have go-carts +and a Hummer.....USE THEM! + +In the cave up the ramp there is a Bigwheel +bike jump the ramp with it and get on top +of the cliff. Use the buttons on top to set off +bombs in the map. + + + +(Press FIRE to continue) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/crazytank.bsp b/config/funmaps/serverfiles/cstrike/maps/crazytank.bsp new file mode 100755 index 0000000..a95ca96 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/crazytank.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/crazytank.res b/config/funmaps/serverfiles/cstrike/maps/crazytank.res new file mode 100755 index 0000000..1bc02b6 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/crazytank.res @@ -0,0 +1,6 @@ +// crazytank.res written by YellowJello for the redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +overviews/crazytank.tga +overviews/crazytank.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/crazytank.txt b/config/funmaps/serverfiles/cstrike/maps/crazytank.txt new file mode 100755 index 0000000..fd9a49a --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/crazytank.txt @@ -0,0 +1,17 @@ +CrazyTank - CT Escape (Hostage Rescue) +The idiot-proof version! + +Map by Nathaniel J Miller AKA NIPPER +maps @ www.geocities.com/nipper14223 +(nipperproductions@hotmail.com) + +CT: Use the CrazyTank to navigate your +way through the chasm to the hostage in +a box. + +T: You have 20 seconds from the moment +you spawn to set up your ambush of the +CTs and their CrazyTank. + +Note: CTs, In case of idiot-driver, use the +tunnels marked “Idiot driver escape route”. \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/cs_beirut.bsp b/config/funmaps/serverfiles/cstrike/maps/cs_beirut.bsp new file mode 100755 index 0000000..8a0137b Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/cs_beirut.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/cs_beirut.txt b/config/funmaps/serverfiles/cstrike/maps/cs_beirut.txt new file mode 100755 index 0000000..723857c --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/cs_beirut.txt @@ -0,0 +1,33 @@ +Beirut (build 58) +by Bluestrike McQueen + + +Briefing: + +A terrorist organization kidnapped some people in an +unspecified arabian country and keep them somewhere. +We think this is an political action. + +Intelligence found the hostage location, youre mission is to +rescue the hostages by any means nessesary and evacuate them. + +Stand by for insertation. + +Note's: +There 3 hostage rescue zones (marked with a decal) +The hosatge zones are the 'way of the map' +Terrorists have strategical advantage. + +fps: +r-speeds (w_polly) are very good considered the large area +Overall is 400 some places may be over 700 when facing sertain +directions but playtests showd those location's aren't used +to play a lot. + +--------------------------------------------------------------------- +Credits: +Map made by bluestrike. +Used textures or modified textures from: +MacMan (dust/cobble/aztec textures not sure of that last one) +DigiChaos (italy textures) +And some texture by myself :) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/cs_kloster.bsp b/config/funmaps/serverfiles/cstrike/maps/cs_kloster.bsp new file mode 100755 index 0000000..bb271c8 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/cs_kloster.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/cs_kloster.res b/config/funmaps/serverfiles/cstrike/maps/cs_kloster.res new file mode 100755 index 0000000..9cec40f --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/cs_kloster.res @@ -0,0 +1,5 @@ +sound/ambience/g_cbell.wav +sound/ambience/g_priester.wav +sound/ambience/g_monks.wav +maps/cs_kloster.bsp +maps/cs_kloster.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/cs_mansion.bsp b/config/funmaps/serverfiles/cstrike/maps/cs_mansion.bsp new file mode 100755 index 0000000..02bf9b7 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/cs_mansion.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/cs_pacman.bsp b/config/funmaps/serverfiles/cstrike/maps/cs_pacman.bsp new file mode 100755 index 0000000..d967d87 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/cs_pacman.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/cs_pacman.res b/config/funmaps/serverfiles/cstrike/maps/cs_pacman.res new file mode 100755 index 0000000..f66fd13 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/cs_pacman.res @@ -0,0 +1,8 @@ +// cs_pacman.res - created with RESGen v2.0.2. +// RESGen is made by Jeroen "ShadowLord" Bogers, +// with serveral improvements and additions by Zero3Cool. +// For more info go to http://resgen.hltools.com + +// .res entries (2): +sound/misc/pac_cherry.wav +sound/misc/pac_intro.wav diff --git a/config/funmaps/serverfiles/cstrike/maps/cs_pacman.txt b/config/funmaps/serverfiles/cstrike/maps/cs_pacman.txt new file mode 100755 index 0000000..bbeb5b8 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/cs_pacman.txt @@ -0,0 +1,8 @@ +cs_pacman - Hostage Rescue +by CRAZG ( hm_crazg@hotmail.com ) + +Counter Terrorists: +Get the hostages to the middle. + +Terrorists: +Stop the counter terrorists. \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/cs_paintball.bsp b/config/funmaps/serverfiles/cstrike/maps/cs_paintball.bsp new file mode 100755 index 0000000..1f67cd1 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/cs_paintball.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/cs_prospeedball.bsp b/config/funmaps/serverfiles/cstrike/maps/cs_prospeedball.bsp new file mode 100755 index 0000000..10c6415 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/cs_prospeedball.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/cs_shogun_final.bsp b/config/funmaps/serverfiles/cstrike/maps/cs_shogun_final.bsp new file mode 100755 index 0000000..3c45b05 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/cs_shogun_final.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/cs_shogun_final.res b/config/funmaps/serverfiles/cstrike/maps/cs_shogun_final.res new file mode 100755 index 0000000..94d9d70 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/cs_shogun_final.res @@ -0,0 +1,51 @@ +// cs_shogun_final.res - created with RESGen v1.10 +// RESGen is made by Jeroen "ShadowLord" Bogers +// URL: http://www.unitedadmins.com/mapRESGEN.asp +// E-MAIL: resgen@hltools.com +// Res creation date, GMT timezone (dd-mm-yyyy): 16-05-2003 + +// .res entries: +gfx/env/shogun_skyup.tga +gfx/env/shogun_skydn.tga +gfx/env/shogun_skylf.tga +gfx/env/shogun_skyrt.tga +gfx/env/shogun_skyft.tga +gfx/env/shogun_skybk.tga +sound/shogun/shogunstart.wav +sound/shogun/shogunwind.wav +sprites/shogun/rk_steam.spr +sprites/shogun/wall_puff1.spr +sound/shogun/shogun_falls.wav +models/shogun/shogun_tourou5.mdl +models/shogun/shogun_bonsai.mdl +sprites/shogun/shogun_bonsai.spr +sprites/shogun/mawibse_grass_02.spr +sprites/shogun/mawibse_grass_01.spr +sound/shogun/paper1.wav +sound/shogun/paper2.wav +sound/shogun/paper3.wav +sound/shogun/shogun_water.wav +models/shogun/shogun_dragon.mdl +models/shogun/worship.mdl +models/shogun/shogun_tree2.mdl +sprites/shogun/shogun_tree.spr +models/shogun/doofcranefin.mdl +sound/shogun/shogun_anthem4.wav +sprites/shogun/shogun_rainbow.spr +sprites/shogun/shogun_mist2.spr +sound/shogun/killchicken.wav +sprites/shogun/sho_clouds1c.spr +sprites/shogun/sho_clouds1d.spr +sprites/shogun/shogun_mist.spr +sound/shogun/shogun_tweeters.wav +sound/shogun/shogun_amb.wav +sound/shogun/shogun_yahoo.wav +sound/shogun/shogun_airmeat.wav +sprites/shogun/flames.spr +sound/shogun/shogun_hellland.wav +sound/shogun/shogun_hell.wav +models/shogun/sho_hostage.mdl +sound/shogun/chimes.wav +sound/shogun/wind.wav +models/shogun/doofbird.mdl +sound/shogun/shogun_hallelujah.wav diff --git a/config/funmaps/serverfiles/cstrike/maps/cs_shogun_final.txt b/config/funmaps/serverfiles/cstrike/maps/cs_shogun_final.txt new file mode 100755 index 0000000..2689ec9 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/cs_shogun_final.txt @@ -0,0 +1,52 @@ +cs_SHOGUN_FINAL - by [builder]oma + +email - oma@omazone.co.uk +Model birds - DarkForceRising +Textures: - [builder]oma + +The Japanese Palace built by the infamous +Shogun Yasuda, has been re-opened +for the first time in over 500 years. +A highly skilled and dangerous team of Japanese +and European Militants have infiltrated the high +temple building in an attempt to retrieve ancient +scripts the ancient shogun's sorcerers had worked +on which were said to contain instructions showing +a way to open a doorway into hell itself. + +The Terrorists had not banked upon a team of 5 scientists +and archaeologists being at the site. One of the +team had escaped, and have alerted the Japanese Law +enforcement. As a result the reamining team have been +held hostageand now serve as currency for the Militants +safe escape. + +CT's - RESCUE THE HOSTAGES! + +T's - Guard the hostages against the Japanese +counter-terrorist rescue attempt. + +Special Thanks to Ubehagelig for his "hmm" ideas +- Illa for various resources - Ginseng for help +with "the leap" - DFR for help with entities and +Mawibse for his poly reduction ideas. + +playtests:- +dirge(m3 mamma, mapping legend) +rogue(the mapper formerly known as muppet) +jake(thy farmer with a hoe) +rancid(hells hair on the coolest guy) +demo(1 fingered chicken chaser) +ivan(deagle wielding sausage smuggler) +DarkForceRising(like piles, only funny) +sc0t3h(tartan bagpipe playing porridge chewer) +greggie(Hair Splitting Deadeye robot) + +To anyone who can read the kanji words - +"Im sorry they just looked nice - I didnt +realise they meant that!" + +[builder]-uk's favorite cs/building clan +http://builder-clan.co.uk/ + +(Press Fire to Continue) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/cs_speedball.bsp b/config/funmaps/serverfiles/cstrike/maps/cs_speedball.bsp new file mode 100755 index 0000000..52ee7d6 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/cs_speedball.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/csp_paintball.bsp b/config/funmaps/serverfiles/cstrike/maps/csp_paintball.bsp new file mode 100755 index 0000000..f0e87f2 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/csp_paintball.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/cspaintball1.bsp b/config/funmaps/serverfiles/cstrike/maps/cspaintball1.bsp new file mode 100755 index 0000000..1f67cd1 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/cspaintball1.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/cspaintball1.txt b/config/funmaps/serverfiles/cstrike/maps/cspaintball1.txt new file mode 100755 index 0000000..69538c7 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/cspaintball1.txt @@ -0,0 +1,14 @@ +CSPaintball1 - Fight to the death +by Nathaniel Miller AKA NIPPER +nipperproductions@hotmail.com +Maps @ www.geocities.com/nipper14223 + +Counter-Terrorists: Kill them Terrorists + + +Terrorists: Kill them Counter Terrorists + + +Other Notes: Dont die + +(Press FIRE to continue) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/cspaintball2.bsp b/config/funmaps/serverfiles/cstrike/maps/cspaintball2.bsp new file mode 100755 index 0000000..3bb9270 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/cspaintball2.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/cspaintball2.txt b/config/funmaps/serverfiles/cstrike/maps/cspaintball2.txt new file mode 100755 index 0000000..c3adc09 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/cspaintball2.txt @@ -0,0 +1,15 @@ +Paintball Arena 2 - fight to the death +by Nathaniel Miller AKA NIPPER +(nipperproductions@hotmail.com) +(www.geocities.com/nipper14223) + + +Counter-Terrorists: Kill them Terrorists + + +Terrorists: Kill them Counter Terrorists + + +Other Notes: Dont die + +(Press FIRE to continue) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/de_Super_PaintBall.bsp b/config/funmaps/serverfiles/cstrike/maps/de_Super_PaintBall.bsp new file mode 100755 index 0000000..f5bfd64 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/de_Super_PaintBall.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/de_clan1_mill.bsp b/config/funmaps/serverfiles/cstrike/maps/de_clan1_mill.bsp new file mode 100755 index 0000000..2038226 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/de_clan1_mill.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/de_crazytank.bsp b/config/funmaps/serverfiles/cstrike/maps/de_crazytank.bsp new file mode 100755 index 0000000..c5e15f4 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/de_crazytank.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/de_crazytank.res b/config/funmaps/serverfiles/cstrike/maps/de_crazytank.res new file mode 100755 index 0000000..a6975e9 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_crazytank.res @@ -0,0 +1,12 @@ +// de_crazytank.res written by YellowJello for the redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +gfx/env/desbk.tga +gfx/env/desdn.tga +gfx/env/desft.tga +gfx/env/deslf.tga +gfx/env/desrt.tga +gfx/env/desup.tga +overviews/de_crazytank.bmp +overviews/de_crazytank.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/de_crazytank.txt b/config/funmaps/serverfiles/cstrike/maps/de_crazytank.txt new file mode 100755 index 0000000..e9ebae5 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_crazytank.txt @@ -0,0 +1,16 @@ +CrazyTank - Bomb/Diffuse +Mapping by Nathaniel Miller AKA NIPPER +maps @ www.geocities.com/nipper14223 + +The CrazyTank has finally reached its +destination. But its mobile capabilities +have been disabled. The Ts are on the +move and planning to blow it up while it +is weakened. + +CT: Protect the CrazyTank at all costs. + +T: Plant your C-4 near or inside the +CrazyTank. + + diff --git a/config/funmaps/serverfiles/cstrike/maps/de_dolc.bsp b/config/funmaps/serverfiles/cstrike/maps/de_dolc.bsp new file mode 100755 index 0000000..08bd140 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/de_dolc.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/de_dolc.res b/config/funmaps/serverfiles/cstrike/maps/de_dolc.res new file mode 100755 index 0000000..da08857 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_dolc.res @@ -0,0 +1,16 @@ +// www.DropForged.ru +// de_dolc.res - this file generated and downloded from www.DropForged.ru +// Ôàéë ñãåíåðèðîâàí è ñêà÷àí ñ ñàéòà www.DropForged.ru + +torntextures.wad +models/de_dolc/du_car1.mdl +models/de_dolc/de_dolctree.mdl +models/de_dolc/de_dolcgras.mdl +halflife.wad +gfx/env/trainyardup.tga +gfx/env/trainyardrt.tga +gfx/env/trainyardlf.tga +gfx/env/trainyardft.tga +gfx/env/trainyarddn.tga +gfx/env/trainyardbk.tga +de_dolc.wad \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/de_dust2_kosovo.bsp b/config/funmaps/serverfiles/cstrike/maps/de_dust2_kosovo.bsp new file mode 100755 index 0000000..29127b5 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/de_dust2_kosovo.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/de_dust2_kosovo.txt b/config/funmaps/serverfiles/cstrike/maps/de_dust2_kosovo.txt new file mode 100755 index 0000000..da7c42a --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_dust2_kosovo.txt @@ -0,0 +1,7 @@ +De_dust2_Kosovo + +Map by wicKed a.k.a Shendrit Gashi + +de_dust2 remake with some changes + +thanks , war_ning , Long Horn and you ! :) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/de_dusttown_ex.bsp b/config/funmaps/serverfiles/cstrike/maps/de_dusttown_ex.bsp new file mode 100755 index 0000000..61ede95 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/de_dusttown_ex.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/de_dusttown_ex.txt b/config/funmaps/serverfiles/cstrike/maps/de_dusttown_ex.txt new file mode 100755 index 0000000..1bd7926 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_dusttown_ex.txt @@ -0,0 +1,24 @@ +Dusttown - Bomb/Defuse +by Dr_Execution (Dr_Execution@web.de) + + +Thanks to: +- Macman for textures (MacManInfi@aol.com) +- DaveJ for some layout (dv@btinternet.com) + + +Counter-Terrorists: +Prevent Terrorists from bombing the +market place in the middle or the +reserves at town entrance. + + +Terrorists: +Destroy either the reserves at town entrance +or the market place in the middle of the town. + +Other Notes: To find the 2 bombtargets +follow the street. + + +(Press FIRE to continue) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/de_gash.bsp b/config/funmaps/serverfiles/cstrike/maps/de_gash.bsp new file mode 100755 index 0000000..3d509dd Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/de_gash.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/de_gash.res b/config/funmaps/serverfiles/cstrike/maps/de_gash.res new file mode 100755 index 0000000..130e1bf --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_gash.res @@ -0,0 +1,24 @@ +// de_gash.res - created with RESGen v2.0.2. +// RESGen is made by Jeroen "ShadowLord" Bogers, +// with serveral improvements and additions by Zero3Cool. +// For more info go to http://resgen.hltools.com + +// .res entries (18): +de_gash.wad +decals.wad +gfx/env/trainyardbk.tga +gfx/env/trainyarddn.tga +gfx/env/trainyardft.tga +gfx/env/trainyardlf.tga +gfx/env/trainyardrt.tga +gfx/env/trainyardup.tga +halflife.wad +models/de_gash/e4g1e_moskvich2141.mdl +models/de_gash/flag_alb.mdl +models/de_gash/palmtree.mdl +models/de_gash/shade.mdl +models/de_gash/trupi1.mdl +models/de_gash/trupi2.mdl +models/de_gash/trupi3.mdl +models/player/gsg9/gsg9.mdl +models/player/guerilla/guerilla.mdl diff --git a/config/funmaps/serverfiles/cstrike/maps/de_gash.txt b/config/funmaps/serverfiles/cstrike/maps/de_gash.txt new file mode 100755 index 0000000..4b3c5ae --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_gash.txt @@ -0,0 +1,15 @@ +De_gash by wicKed a.k.a ShendriT Gashi + +Map based by ancient city of Kosovo , Upliana (Dardania) + +Counter Terrorist +Try to stop planting the bomb on the targets . + +Terrorist +Try to plant the bomb on the targets + +Hope you like and enjoy it + +More of my maps . + +http://wicked-maps.blogspot.com/ \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/de_kosovo.bsp b/config/funmaps/serverfiles/cstrike/maps/de_kosovo.bsp new file mode 100755 index 0000000..22d6c04 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/de_kosovo.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/de_kosovo.nav b/config/funmaps/serverfiles/cstrike/maps/de_kosovo.nav new file mode 100755 index 0000000..8d66943 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/de_kosovo.nav differ diff --git a/config/funmaps/serverfiles/cstrike/maps/de_kosovo.txt b/config/funmaps/serverfiles/cstrike/maps/de_kosovo.txt new file mode 100755 index 0000000..c2c7d51 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_kosovo.txt @@ -0,0 +1,17 @@ +Map by wicKed a.k.a ShendriT GashI + +Map is based on a city of Republic of Kosovo + +Counter Terrorist + +Must save the Bomb Fields + +Terrorists + +Must plant the bomb + +Have fun and thnx for playing in + +it for more maps of wicKed go to + +www.wicked-maps.blogspot.com \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/de_kps.bsp b/config/funmaps/serverfiles/cstrike/maps/de_kps.bsp new file mode 100755 index 0000000..e55564f Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/de_kps.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/de_kps.txt b/config/funmaps/serverfiles/cstrike/maps/de_kps.txt new file mode 100755 index 0000000..fc3166a --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_kps.txt @@ -0,0 +1,12 @@ +de_kps + +~~~~~~~ + +Map by wicKed a.k.a Shendrit Gashi +for Kosova Public Server + +More maps - wicked-maps.blogspot.com +PM me - Diti_1234@hotmail.com +PM me - facebook.com/shendritgashi + +Hope you enjoyed this map \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/de_motel_x.bsp b/config/funmaps/serverfiles/cstrike/maps/de_motel_x.bsp new file mode 100755 index 0000000..d65a188 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/de_motel_x.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/de_motel_x.res b/config/funmaps/serverfiles/cstrike/maps/de_motel_x.res new file mode 100755 index 0000000..e7d9fdc --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_motel_x.res @@ -0,0 +1,28 @@ +gfx/env/oberon_bk.tga +gfx/env/oberon_dn.tga +gfx/env/oberon_ft.tga +gfx/env/oberon_lf.tga +gfx/env/oberon_rt.tga +gfx/env/oberon_up.tga +maps/de_motel_x.bsp +maps/de_motel_x.txt +models/xt_motel/glocke.mdl +models/xt_motel/male_corpse3.mdl +sound/xt_motel/baum.wav +sound/xt_motel/bell.wav +sound/xt_motel/bg1.wav +sound/xt_motel/bg2.wav +sound/xt_motel/heul1.wav +sound/xt_motel/heul2.wav +sound/xt_motel/klavir.wav +sound/xt_motel/knarren.wav +sound/xt_motel/knarren2.wav +sound/xt_motel/radio.wav +sound/xt_motel/regen.wav +sound/xt_motel/tv.wav +sprites/blueglow.spr +sprites/glow01.spr +sprites/xt_fire.spr +sprites/xt_rain3.spr +overviews/de_motel_x.txt +overviews/de_motel_x.bmp \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/de_motel_x.txt b/config/funmaps/serverfiles/cstrike/maps/de_motel_x.txt new file mode 100755 index 0000000..14f96a1 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_motel_x.txt @@ -0,0 +1,34 @@ +motel_x - Defusion (Version 1.0) +by X-Tender +(xtender2k@gmx.de) +Textures by X-Tender,3DPunk,Warbeast; +Bodymodel by G.I.Joe +Bellmodel by -Sa74n- + +Because my English sux so much, +I write the Story in German :P + +Background: +Wir schreiben das das Jahr 2001. Der alte +Motelbesitzer Madness T.G. beschließt in Rente +zu gehen und vermacht seinem Neffen Telly R.G. +sein Motel. Der wiederum ist viel zu beschäftigt +seinen Frauen Alimente zu zahlen so das er überhaupt +keine lust hat ein altes Motel zu verwalten. +Daraufhin heuert er eine Handvoll böser Buben an damit +sie das Haus in Schutt und Arsche legen. +Als das der alte Madness erfuhr beschloss er sein +alten Motel zu retten und es unter Denkmalschutz zu +stellen. Auch er heuert ein Paar leute an die sich selbst +"Los Desperados" nennen an damit sie die Sabotage an +seinem Motel verhintern. + +Counter-Terrorists: +Verhindert die Zerstürung des Motels. + +Terrorists: +Zerstürt die Emfangshalle oder das Fernsehzimmer +(das zur Statik des hauses dient). + + +(Press FIRE to continue) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/de_pacman.bsp b/config/funmaps/serverfiles/cstrike/maps/de_pacman.bsp new file mode 100755 index 0000000..78fcb7e Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/de_pacman.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/de_pacman.res b/config/funmaps/serverfiles/cstrike/maps/de_pacman.res new file mode 100755 index 0000000..6e07f68 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_pacman.res @@ -0,0 +1,9 @@ +// de_pacman.res - created with RESGen v2.0.2. +// RESGen is made by Jeroen "ShadowLord" Bogers, +// with serveral improvements and additions by Zero3Cool. +// For more info go to http://resgen.hltools.com + +// .res entries (3): +models/pac_cube.mdl +sound/misc/pac_cherry.wav +sound/misc/pac_intro.wav diff --git a/config/funmaps/serverfiles/cstrike/maps/de_pacman.txt b/config/funmaps/serverfiles/cstrike/maps/de_pacman.txt new file mode 100755 index 0000000..15e9c9c --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_pacman.txt @@ -0,0 +1,9 @@ +de_pacman - Bomb Defusion +by CRAZG ( hm_crazg@hotmail.com ) + +Counter Terrorists: +Prevent the terrorists from +bombing the center room. + +Terrorists: +Bomb the center room. diff --git a/config/funmaps/serverfiles/cstrike/maps/de_pacman_m32.bsp b/config/funmaps/serverfiles/cstrike/maps/de_pacman_m32.bsp new file mode 100755 index 0000000..2058462 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/de_pacman_m32.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/de_pacman_m32.res b/config/funmaps/serverfiles/cstrike/maps/de_pacman_m32.res new file mode 100755 index 0000000..92d55bb --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_pacman_m32.res @@ -0,0 +1,9 @@ +// de_pacman_m32.res - created with RESGen v2.0.2. +// RESGen is made by Jeroen "ShadowLord" Bogers, +// with serveral improvements and additions by Zero3Cool. +// For more info go to http://resgen.hltools.com + +// .res entries (3): +models/pac_cube.mdl +sound/misc/pac_cherry.wav +sound/misc/pac_intro.wav diff --git a/config/funmaps/serverfiles/cstrike/maps/de_pacman_m32.txt b/config/funmaps/serverfiles/cstrike/maps/de_pacman_m32.txt new file mode 100755 index 0000000..15e9c9c --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_pacman_m32.txt @@ -0,0 +1,9 @@ +de_pacman - Bomb Defusion +by CRAZG ( hm_crazg@hotmail.com ) + +Counter Terrorists: +Prevent the terrorists from +bombing the center room. + +Terrorists: +Bomb the center room. diff --git a/config/funmaps/serverfiles/cstrike/maps/de_paintball.bsp b/config/funmaps/serverfiles/cstrike/maps/de_paintball.bsp new file mode 100755 index 0000000..93807a4 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/de_paintball.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/de_pub2_r3.bsp b/config/funmaps/serverfiles/cstrike/maps/de_pub2_r3.bsp new file mode 100755 index 0000000..53dafea Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/de_pub2_r3.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/de_pub2_r3.txt b/config/funmaps/serverfiles/cstrike/maps/de_pub2_r3.txt new file mode 100755 index 0000000..864eac3 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_pub2_r3.txt @@ -0,0 +1,4 @@ +//Map by wicKed a.k.a ShendriT Gashi \\ + +Official Page - wicked-maps.blogspot.com/ +Fan Page - facebook.com/home.php#!/pages/WicKed-CS-16-maps/165400676834665 \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/de_pub_R3 b/config/funmaps/serverfiles/cstrike/maps/de_pub_R3 new file mode 100755 index 0000000..6bf6bcc Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/de_pub_R3 differ diff --git a/config/funmaps/serverfiles/cstrike/maps/de_pub_R3.txt b/config/funmaps/serverfiles/cstrike/maps/de_pub_R3.txt new file mode 100755 index 0000000..6527511 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_pub_R3.txt @@ -0,0 +1,8 @@ +Map by wicKed a.k.a ShendriT Gashi + +for more maps go to : + +http://wicked-maps.blogspot.com/ +ORs +www.facebook.com/#!/pages/WicKed-CS-16-maps/165400676834665 + diff --git a/config/funmaps/serverfiles/cstrike/maps/de_scud.bsp b/config/funmaps/serverfiles/cstrike/maps/de_scud.bsp new file mode 100755 index 0000000..ff78f47 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/de_scud.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/de_scud.txt b/config/funmaps/serverfiles/cstrike/maps/de_scud.txt new file mode 100755 index 0000000..317660c --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_scud.txt @@ -0,0 +1,22 @@ +SCUD - Bomb/Defuse + + map: Jeramy Cooke ook_22@hotmail.com + textures: Jeramy & Jason jasart@yahoo.com + +[ Background ] + +Terrorists have infiltrated a hidden +American missile base in an abandoned +palace near the Iraqi border. + + [ Counter-Terrorists ] + + Protect the missles and launch command + from the Terrorist strike force. + + [ Terrorists ] + + Destroy the launch command or the + missiles themselves. + +(Press FIRE to continue) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/de_spree.bsp b/config/funmaps/serverfiles/cstrike/maps/de_spree.bsp new file mode 100755 index 0000000..4f74b51 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/de_spree.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/de_spree.res b/config/funmaps/serverfiles/cstrike/maps/de_spree.res new file mode 100755 index 0000000..ae89f6d --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_spree.res @@ -0,0 +1,14 @@ +gfx/env/spreebk.tga +gfx/env/spreedn.tga +gfx/env/spreeft.tga +gfx/env/spreelf.tga +gfx/env/spreert.tga +gfx/env/spreeup.tga +sound/de_spree/rocket16_22_mono.wav +sound/de_spree/wind.wav +sound/de_spree/red16_22_mono.wav +sprites/blueflare1.spr +maps/de_spree.txt +maps/de_spree.bsp +overviews/de_spree.bmp +overviews/de_spree.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/de_spree.txt b/config/funmaps/serverfiles/cstrike/maps/de_spree.txt new file mode 100755 index 0000000..d3e62f3 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_spree.txt @@ -0,0 +1,17 @@ +Spree - Bomb/Defuse +by Pinkbunny (pinkbunny@radoz.de) + +Counter-Terrorists: Prevent Terrorists from +bringing havoc to the European chemical estate +or bombing the truck. This would poison +a large area. You must defuse any bombs +that threaten those areas. + +Terrorists: The Terrorist carrying the +C4 must destroy one of the targets. Watch +out for the night-watchman! + +Other Notes: There are 2 targets +in this mission. + +(Press FIRE to continue) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/de_westwood.bsp b/config/funmaps/serverfiles/cstrike/maps/de_westwood.bsp new file mode 100755 index 0000000..a5b4bfb Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/de_westwood.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/de_westwood.res b/config/funmaps/serverfiles/cstrike/maps/de_westwood.res new file mode 100755 index 0000000..0cf44cc --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_westwood.res @@ -0,0 +1,5 @@ +maps/de_westwood.bsp +maps/de_westwood.txt +sound/nm_goodbadugly.wav +overviews/de_westwood.tga +overviews/de_westwood.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/de_westwood.txt b/config/funmaps/serverfiles/cstrike/maps/de_westwood.txt new file mode 100755 index 0000000..7d6a2bd --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/de_westwood.txt @@ -0,0 +1,15 @@ +Westwood - Bomb + +By Nathaniel Miller AKA NIPPER +(nipperproductions@hotmail.com) +maps @ www.geocities.com/nipper14223 + +Those wacky terrorists are at it again. +This time they have gone back in time +to try and blow up a water tower and/or +some barrels of booze in ye olde bombsite. + +CT: Protect the water tower and ye olde +bombsite. + +T: Blow up one of the bombsites. diff --git a/config/funmaps/serverfiles/cstrike/maps/deathrun_kosova.bsp b/config/funmaps/serverfiles/cstrike/maps/deathrun_kosova.bsp new file mode 100755 index 0000000..9a08a8c Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/deathrun_kosova.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/deathrun_kosova.nav b/config/funmaps/serverfiles/cstrike/maps/deathrun_kosova.nav new file mode 100755 index 0000000..bdf79b7 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/deathrun_kosova.nav differ diff --git a/config/funmaps/serverfiles/cstrike/maps/demo_derby_ka.bsp b/config/funmaps/serverfiles/cstrike/maps/demo_derby_ka.bsp new file mode 100755 index 0000000..ab7f1d3 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/demo_derby_ka.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/demo_derby_ka.res b/config/funmaps/serverfiles/cstrike/maps/demo_derby_ka.res new file mode 100755 index 0000000..b1a573d --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/demo_derby_ka.res @@ -0,0 +1,10 @@ +// demo_derby_ka.res written by YellowJello for the redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +gfx/env/2desertbk.tga +gfx/env/2desertdn.tga +gfx/env/2desertft.tga +gfx/env/2desertlf.tga +gfx/env/2desertrt.tga +gfx/env/2desertup.tga \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/demo_derby_ka.txt b/config/funmaps/serverfiles/cstrike/maps/demo_derby_ka.txt new file mode 100755 index 0000000..b7c2ec5 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/demo_derby_ka.txt @@ -0,0 +1,15 @@ +Demolition Derby Knife Arena + +By Nathaniel Miller AKA NIPPER +(nipperproductions@hotmail.com) +maps @ www.geocities.com/nipper14223 + +NIPPER'S CAR SAFTEY TIPS: + +- Dont duck or jump while in a moving +vehicle its an easy way to get killed!! + +- SPREAD OUT! give the driver alot of room. + + +(Yell RUBBER SLED to continue) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/demolition_derby2.bsp b/config/funmaps/serverfiles/cstrike/maps/demolition_derby2.bsp new file mode 100755 index 0000000..3a1945b Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/demolition_derby2.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/demolition_derby2.res b/config/funmaps/serverfiles/cstrike/maps/demolition_derby2.res new file mode 100755 index 0000000..c1d1de0 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/demolition_derby2.res @@ -0,0 +1,11 @@ +// demolition_derby2.res written by YellowJello for the redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +cs_dust.wad +gfx/env/2desertbk.tga +gfx/env/2desertdn.tga +gfx/env/2desertft.tga +gfx/env/2desertlf.tga +gfx/env/2desertrt.tga +gfx/env/2desertup.tga \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/demolition_derby2.txt b/config/funmaps/serverfiles/cstrike/maps/demolition_derby2.txt new file mode 100755 index 0000000..62a129d --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/demolition_derby2.txt @@ -0,0 +1,10 @@ +Demolition derby 2 - fight to the death + +By Nathaniel Miller AKA NIPPER +(nipperproductions@hotmail.com) +maps @ www.geocities.com/nipper14223 + +Another car map :D + + +(Yell RUBBER SLED to continue) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/duhhh.bsp b/config/funmaps/serverfiles/cstrike/maps/duhhh.bsp new file mode 100755 index 0000000..f9b9656 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/duhhh.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/duhhh.txt b/config/funmaps/serverfiles/cstrike/maps/duhhh.txt new file mode 100755 index 0000000..731c7af --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/duhhh.txt @@ -0,0 +1,9 @@ +Duhhh - Bomb +Mapping by Nathaniel Miller AKA NIPPER +maps @ www.geocities.com/nipper14223 + +Outside the forest, just past the starway, +is the mansion of WhaHuhGah. + +DUH! + diff --git a/config/funmaps/serverfiles/cstrike/maps/es_pacman.bsp b/config/funmaps/serverfiles/cstrike/maps/es_pacman.bsp new file mode 100755 index 0000000..8d10fa7 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/es_pacman.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/es_pacman.res b/config/funmaps/serverfiles/cstrike/maps/es_pacman.res new file mode 100755 index 0000000..8ecfc8e --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/es_pacman.res @@ -0,0 +1,8 @@ +// es_pacman.res - created with RESGen v2.0.2. +// RESGen is made by Jeroen "ShadowLord" Bogers, +// with serveral improvements and additions by Zero3Cool. +// For more info go to http://resgen.hltools.com + +// .res entries (2): +sound/misc/pac_cherry.wav +sound/misc/pac_intro.wav diff --git a/config/funmaps/serverfiles/cstrike/maps/es_pacman.txt b/config/funmaps/serverfiles/cstrike/maps/es_pacman.txt new file mode 100755 index 0000000..babfe91 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/es_pacman.txt @@ -0,0 +1,9 @@ +es_pacman - Escape +by CRAZG ( hm_crazg@hotmail.com ) + +Counter Terrorists: +Stop the terrorists from escaping. + +Terrorists: +Escape to the center room. +You must touch the back wall. diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_buzzkill.bsp b/config/funmaps/serverfiles/cstrike/maps/fy_buzzkill.bsp new file mode 100755 index 0000000..467cc4a Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/fy_buzzkill.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_iceworld.bsp b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld.bsp new file mode 100755 index 0000000..df97c7a Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_iceworld.res b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld.res new file mode 100755 index 0000000..e4c2a17 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld.res @@ -0,0 +1,9 @@ +// fy_iceworld.res - created with RESGen v2.0.2. +// RESGen is made by Jeroen "ShadowLord" Bogers, +// with serveral improvements and additions by Zero3Cool. +// For more info go to http://resgen.hltools.com + +// .res entries (3): +de_vegas.wad +overviews/fy_iceworld.bmp +overviews/fy_iceworld.txt diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_iceworld2k.bsp b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld2k.bsp new file mode 100755 index 0000000..73e09d7 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld2k.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_iceworld2k.res b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld2k.res new file mode 100755 index 0000000..1adb7b4 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld2k.res differ diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_iceworld2k.txt b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld2k.txt new file mode 100755 index 0000000..dac106d --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld2k.txt @@ -0,0 +1,10 @@ +Ice World2k + +Remake of original Iceworld Map, basicly the same w/ some new features. +Choose your gun of choice on the ground +Buyzone is in the center of map +Have Fun!!! +-[MJ] Clan +http://cs.mcmus.com + +(Press FIRE to continue) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_ak47.bsp b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_ak47.bsp new file mode 100755 index 0000000..8390397 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_ak47.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_ak47.log b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_ak47.log new file mode 100755 index 0000000..29e8b55 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_ak47.log @@ -0,0 +1,5 @@ +fy_iceworld_arena PACK + +This map is only ak-47. + +By: the_marx666 \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_deagle.bsp b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_deagle.bsp new file mode 100755 index 0000000..03947b4 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_deagle.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_deagle.log b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_deagle.log new file mode 100755 index 0000000..ff8baa3 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_deagle.log @@ -0,0 +1,5 @@ +fy_iceworld_arena PACK + +This map is only deagle. + +By: the_marx666 \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_grenades.bsp b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_grenades.bsp new file mode 100755 index 0000000..abd6034 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_grenades.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_knivesAB.bsp b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_knivesAB.bsp new file mode 100755 index 0000000..126bd43 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_knivesAB.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_knivesAB.log b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_knivesAB.log new file mode 100755 index 0000000..a1ad73f --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_knivesAB.log @@ -0,0 +1,5 @@ +fy_iceworld_arena PACK + +This special map is only knives and you can plant/defuse a bomb. + +By: the_marx666 \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_m3.bsp b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_m3.bsp new file mode 100755 index 0000000..083e2d2 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_m3.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_m3.log b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_m3.log new file mode 100755 index 0000000..59e7479 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_m3.log @@ -0,0 +1,5 @@ +fy_iceworld_arena PACK + +This map is only M3. + +By: the_marx666 \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_m4a1.bsp b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_m4a1.bsp new file mode 100755 index 0000000..c74adb0 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_m4a1.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_m4a1.log b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_m4a1.log new file mode 100755 index 0000000..3655f16 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_m4a1.log @@ -0,0 +1,5 @@ +fy_iceworld_arena PACK + +This map is only m4a1. + +By: the_marx666 \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_xm1014.bsp b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_xm1014.bsp new file mode 100755 index 0000000..a71f8df Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_xm1014.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_xm1014.log b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_xm1014.log new file mode 100755 index 0000000..916fb4a --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/fy_iceworld_arena_xm1014.log @@ -0,0 +1,5 @@ +fy_iceworld_arena PACK + +This map is only xm1014. + +By: the_marx666 \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_osama_house.bsp b/config/funmaps/serverfiles/cstrike/maps/fy_osama_house.bsp new file mode 100755 index 0000000..bf69f0d Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/fy_osama_house.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_osama_house.res b/config/funmaps/serverfiles/cstrike/maps/fy_osama_house.res new file mode 100755 index 0000000..7b333f8 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/fy_osama_house.res @@ -0,0 +1,18 @@ +// fy_abbottabad_cs.res - created with RESGen v2.0.2. +// RESGen is made by Jeroen "ShadowLord" Bogers, +// with serveral improvements and additions by Zero3Cool. +// For more info go to http://resgen.hltools.com + +// .res entries (12): +fy_abbottabad_cs.wad +gfx/env/trainyardbk.tga +gfx/env/trainyarddn.tga +gfx/env/trainyardft.tga +gfx/env/trainyardlf.tga +gfx/env/trainyardrt.tga +gfx/env/trainyardup.tga +halflife.wad +models/fy_abbottabad_cs/e4g1e_moskvich2141.mdl +models/fy_abbottabad_cs/pi_tree3.mdl +models/fy_abbottabad_cs/trup3.mdl +sound/apache/ap_rotor2.wav diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_osama_house.txt b/config/funmaps/serverfiles/cstrike/maps/fy_osama_house.txt new file mode 100755 index 0000000..04fc04d --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/fy_osama_house.txt @@ -0,0 +1,17 @@ +Map by wicKed a.k.a ShendriT GashI + +From Republic OF Kosovo + +Remake of the house of Osama Bin Laden in Abbottabad + +Warning - The Hanging man is not Osama it just a dead body + +\\ Counter Terrorist - Must Kill all terrorists + +// Terrorist - Must kill all Police and save Osama which is hiding somewere + + +More maps - wicked-maps.blogspot.com +My add - Diti_1234@hotmail.com +My FB - facebook.com/shendritgashi +My Fan Page - facebook.com/pages/WicKed-CS-16-maps/165400676834665 \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_paintballarena.bsp b/config/funmaps/serverfiles/cstrike/maps/fy_paintballarena.bsp new file mode 100755 index 0000000..51a2640 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/fy_paintballarena.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_pool_day.bsp b/config/funmaps/serverfiles/cstrike/maps/fy_pool_day.bsp new file mode 100755 index 0000000..b0ef8b9 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/fy_pool_day.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_pool_day.res b/config/funmaps/serverfiles/cstrike/maps/fy_pool_day.res new file mode 100755 index 0000000..616f7fa --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/fy_pool_day.res @@ -0,0 +1,9 @@ +// fy_pool_day.res - created with RESGen v2.0.2. +// RESGen is made by Jeroen "ShadowLord" Bogers, +// with serveral improvements and additions by Zero3Cool. +// For more info go to http://resgen.hltools.com + +// .res entries (3): +overviews/fy_pool_day.bmp +overviews/fy_pool_day.txt +sound/ambience/sprayer.wav diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_repub.bsp b/config/funmaps/serverfiles/cstrike/maps/fy_repub.bsp new file mode 100755 index 0000000..3492077 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/fy_repub.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/fy_snow.bsp b/config/funmaps/serverfiles/cstrike/maps/fy_snow.bsp new file mode 100755 index 0000000..14a7d13 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/fy_snow.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/gahhhhh.bsp b/config/funmaps/serverfiles/cstrike/maps/gahhhhh.bsp new file mode 100755 index 0000000..dfefbf8 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/gahhhhh.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/gahhhhh.txt b/config/funmaps/serverfiles/cstrike/maps/gahhhhh.txt new file mode 100755 index 0000000..34ae180 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/gahhhhh.txt @@ -0,0 +1,11 @@ +GahhhHH - Bomb/Diffuse +Mapping by Nathaniel Miller AKA NIPPER +maps @ www.geocities.com/nipper14223 + +ArggggagGAGhhhhhh hhaAAAAAHh + +ZOINK! Ka-BLAM! YowzA! + +HOooAhhhhh! + +NOTE: 3rd version- fixed tomato. diff --git a/config/funmaps/serverfiles/cstrike/maps/gg_33_frisson.bsp b/config/funmaps/serverfiles/cstrike/maps/gg_33_frisson.bsp new file mode 100755 index 0000000..b785335 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/gg_33_frisson.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/gg_bside_paintball.bsp b/config/funmaps/serverfiles/cstrike/maps/gg_bside_paintball.bsp new file mode 100755 index 0000000..4d2ff4e Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/gg_bside_paintball.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/glass.bsp b/config/funmaps/serverfiles/cstrike/maps/glass.bsp new file mode 100755 index 0000000..c72d072 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/glass.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/glass.res b/config/funmaps/serverfiles/cstrike/maps/glass.res new file mode 100755 index 0000000..e3ecc6c --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/glass.res @@ -0,0 +1,10 @@ +// glass.res by YellowJello for the redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +gfx/env/xen10bk.tga +gfx/env/xen10dn.tga +gfx/env/xen10ft.tga +gfx/env/xen10lf.tga +gfx/env/xen10rt.tga +gfx/env/xen10up.tga \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/glass.txt b/config/funmaps/serverfiles/cstrike/maps/glass.txt new file mode 100755 index 0000000..878ab75 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/glass.txt @@ -0,0 +1,5 @@ +Glass - Fight to the death +Mapping by Nathaniel Miller AKA NIPPER +maps @ www.geocities.com/nipper14223 + +Its alot of glass. \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/he_glass.bsp b/config/funmaps/serverfiles/cstrike/maps/he_glass.bsp new file mode 100755 index 0000000..8275eb2 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/he_glass.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/he_glass.nav b/config/funmaps/serverfiles/cstrike/maps/he_glass.nav new file mode 100755 index 0000000..4ef14cf Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/he_glass.nav differ diff --git a/config/funmaps/serverfiles/cstrike/maps/he_glass.res b/config/funmaps/serverfiles/cstrike/maps/he_glass.res new file mode 100755 index 0000000..aa0086d --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/he_glass.res @@ -0,0 +1,10 @@ +// he_glass.res by YellowJello for the redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +gfx/env/xen10bk.tga +gfx/env/xen10dn.tga +gfx/env/xen10ft.tga +gfx/env/xen10lf.tga +gfx/env/xen10rt.tga +gfx/env/xen10up.tga \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/he_glass.txt b/config/funmaps/serverfiles/cstrike/maps/he_glass.txt new file mode 100755 index 0000000..94bfc97 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/he_glass.txt @@ -0,0 +1,5 @@ +HE_Glass - Fight to the death +Mapping by Nathaniel Miller AKA NIPPER +maps @ www.geocities.com/nipper14223 + +Its alot of glass with HE grenades. \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/huhhh.bsp b/config/funmaps/serverfiles/cstrike/maps/huhhh.bsp new file mode 100755 index 0000000..794d325 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/huhhh.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/huhhh.txt b/config/funmaps/serverfiles/cstrike/maps/huhhh.txt new file mode 100755 index 0000000..ec01137 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/huhhh.txt @@ -0,0 +1,16 @@ +HuhHh?! - Diffusion +Mapping by Nathaniel Miller AKA NIPPER +maps @ www.geocities.com/nipper14223 + +HUHHHWHAAAAA!? + +(the sequel/update to “whaaaaa”) + +CTs: Protect your weird little rectangle things +at your spawn zones. + +Ts: Bomb those weird little rectangle things +at the CTs spawns. + +NOTES: This map is haunted by the Cherryclan +Ghost. Beware the spirit of the Cherryclan! diff --git a/config/funmaps/serverfiles/cstrike/maps/hunters_awpdawn.bsp b/config/funmaps/serverfiles/cstrike/maps/hunters_awpdawn.bsp new file mode 100755 index 0000000..8d01fea Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/hunters_awpdawn.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/ka_pacman.bsp b/config/funmaps/serverfiles/cstrike/maps/ka_pacman.bsp new file mode 100755 index 0000000..cc26ccc Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/ka_pacman.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/ka_pacman.res b/config/funmaps/serverfiles/cstrike/maps/ka_pacman.res new file mode 100755 index 0000000..7dcced8 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/ka_pacman.res @@ -0,0 +1,8 @@ +// ka_pacman.res - created with RESGen v2.0.2. +// RESGen is made by Jeroen "ShadowLord" Bogers, +// with serveral improvements and additions by Zero3Cool. +// For more info go to http://resgen.hltools.com + +// .res entries (2): +sound/misc/pac_cherry.wav +sound/misc/pac_intro.wav diff --git a/config/funmaps/serverfiles/cstrike/maps/ka_pacman.txt b/config/funmaps/serverfiles/cstrike/maps/ka_pacman.txt new file mode 100755 index 0000000..4e5a523 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/ka_pacman.txt @@ -0,0 +1,8 @@ +ka_pacman - Knife Arena +by CRAZG ( hm_crazg@hotmail.com ) + +Counter Terrorists: +Stab the terrorists. + +Terrorists: +Stab the counter terrorists. diff --git a/config/funmaps/serverfiles/cstrike/maps/lab_racing.bsp b/config/funmaps/serverfiles/cstrike/maps/lab_racing.bsp new file mode 100755 index 0000000..51f4164 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/lab_racing.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/laser_tron.bsp b/config/funmaps/serverfiles/cstrike/maps/laser_tron.bsp new file mode 100755 index 0000000..b664387 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/laser_tron.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/laser_tron.res b/config/funmaps/serverfiles/cstrike/maps/laser_tron.res new file mode 100755 index 0000000..c4d58d6 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/laser_tron.res @@ -0,0 +1,6 @@ +// laser_tron.res was written by YellowJello for redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +overviews/laser_tron.tga +overviews/laser_tron.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/laser_tron.txt b/config/funmaps/serverfiles/cstrike/maps/laser_tron.txt new file mode 100755 index 0000000..ac9c29b --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/laser_tron.txt @@ -0,0 +1,13 @@ +Laser tron - Bomb + +By Nathaniel Miller AKA NIPPER +(nipperproductions@hotmail.com) +maps at www.geocities.com/nipper14223 + +WARNING THIS MAP CONTAINS HIGH R_SPEEDS! + +CTs Prevent the Ts from bombing your +base! + +Other notes:: Ts = Red area + CTs = Green area diff --git a/config/funmaps/serverfiles/cstrike/maps/lasertron.bsp b/config/funmaps/serverfiles/cstrike/maps/lasertron.bsp new file mode 100755 index 0000000..8e3eadb Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/lasertron.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/lasertron.res b/config/funmaps/serverfiles/cstrike/maps/lasertron.res new file mode 100755 index 0000000..02abc97 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/lasertron.res @@ -0,0 +1,7 @@ +// lasertron.res was written by YellowJello for redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +de_vegas.wad +overviews/lasertron.bmp +overviews/lasertron.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/lasertron.txt b/config/funmaps/serverfiles/cstrike/maps/lasertron.txt new file mode 100755 index 0000000..d0b997d --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/lasertron.txt @@ -0,0 +1,15 @@ +Laser tron - Fight to the death + +By Nathaniel Miller AKA NIPPER +(nipperproductions@hotmail.com) +maps at www.geocities.com/nipper14223 +Textures from various CS maps and Valve. + +Counter-Terrorists: Kill all Ts. + +Terrorists: Kill all CTs + +Other notes:: Ts = Red area + CTs = Blue area + +(Press FIRE to continue) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/megacrazycar.bsp b/config/funmaps/serverfiles/cstrike/maps/megacrazycar.bsp new file mode 100755 index 0000000..42ea852 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/megacrazycar.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/megacrazycar.res b/config/funmaps/serverfiles/cstrike/maps/megacrazycar.res new file mode 100755 index 0000000..e4da067 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/megacrazycar.res @@ -0,0 +1,12 @@ +// megacrazycar.res was written by YellowJello for redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +gfx/env/desbk.tga +gfx/env/desdn.tga +gfx/env/desft.tga +gfx/env/deslf.tga +gfx/env/desrt.tga +gfx/env/desup.tga +overviews/megacrazycar.bmp +overviews/megacrazycar.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/megacrazycar.txt b/config/funmaps/serverfiles/cstrike/maps/megacrazycar.txt new file mode 100755 index 0000000..46b016e --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/megacrazycar.txt @@ -0,0 +1,9 @@ +MegaCrazyCar - Fool around map + +Mapping by Nathaniel Miller AKA NIPPER +maps @ www.geocities.com/nipper14223 + +The biggest car........EVER! + +NOTE: THIS IS A DUMB MAP! + \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/overclocked.bsp b/config/funmaps/serverfiles/cstrike/maps/overclocked.bsp new file mode 100755 index 0000000..9b56f6f Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/overclocked.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/ow_cc_crazytank.bsp b/config/funmaps/serverfiles/cstrike/maps/ow_cc_crazytank.bsp new file mode 100755 index 0000000..ccba328 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/ow_cc_crazytank.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/ow_cc_crazytank.res b/config/funmaps/serverfiles/cstrike/maps/ow_cc_crazytank.res new file mode 100755 index 0000000..9e30771 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/ow_cc_crazytank.res @@ -0,0 +1,12 @@ +// ow_cc_crazytank.res was written by YellowJello for redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +gfx/env/desbk.tga +gfx/env/desdn.tga +gfx/env/desft.tga +gfx/env/deslf.tga +gfx/env/desrt.tga +gfx/env/desup.tga +overviews/ow_cc_crazytank.bmp +overviews/ow_cc_crazytank.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/ow_cc_crazytank.txt b/config/funmaps/serverfiles/cstrike/maps/ow_cc_crazytank.txt new file mode 100755 index 0000000..ffe4c52 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/ow_cc_crazytank.txt @@ -0,0 +1,11 @@ +ow Cc Crazytank - Stupid + +By Nathaniel Miller AKA NIPPER +nippermaps at gmail.com +maps @ www.geocities.com/nipper14223 + +Drive. +Die. +Repeat. + + diff --git a/config/funmaps/serverfiles/cstrike/maps/pb_castle.bsp b/config/funmaps/serverfiles/cstrike/maps/pb_castle.bsp new file mode 100755 index 0000000..be3ff65 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/pb_castle.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/scout_city.bsp b/config/funmaps/serverfiles/cstrike/maps/scout_city.bsp new file mode 100755 index 0000000..22dbdb6 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/scout_city.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/scout_city.res b/config/funmaps/serverfiles/cstrike/maps/scout_city.res new file mode 100755 index 0000000..ce9ca76 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/scout_city.res @@ -0,0 +1,6 @@ +// scout_city.res was written by YellowJello for redistribution on GameBanana. +// Credits for the original map go to SuperJer +// https://gamebanana.com/ + +overviews/scout_city.bmp +overviews/scout_city.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/scout_city.txt b/config/funmaps/serverfiles/cstrike/maps/scout_city.txt new file mode 100755 index 0000000..a1c4a03 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/scout_city.txt @@ -0,0 +1,16 @@ +Scout City +scout_city.bsp +by SuperJer + +SuperJer.com + +A very slight modification of awp_city2.bsp. +Now everyone gets a scout instead of an awp. + +Goal: (for those who need one) +Kill the dirty rotten other team, those incorrigible maggots! + +As always, have fun! + + + diff --git a/config/funmaps/serverfiles/cstrike/maps/shotgun_frenzy.bsp b/config/funmaps/serverfiles/cstrike/maps/shotgun_frenzy.bsp new file mode 100755 index 0000000..72ddcf4 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/shotgun_frenzy.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/spaniard_awp.bsp b/config/funmaps/serverfiles/cstrike/maps/spaniard_awp.bsp new file mode 100755 index 0000000..dba833a Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/spaniard_awp.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/spaniard_awp.txt b/config/funmaps/serverfiles/cstrike/maps/spaniard_awp.txt new file mode 100755 index 0000000..65d7427 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/spaniard_awp.txt @@ -0,0 +1,11 @@ +spaniard_awp - awm/p training map +by SoUlFaThEr (blakkwilderr@t-online.de) + + +Background: This is Spanish Bullfighting with AWM/P's, Counter-Strike style wickedness. + +Terrorists: See Target...aim....fire...and retreat. + Do this until all Tangos are K.I.A. +Counter-Terrrorists: See Target...aim...fire...retreat. + Do this until all Tangos are K.I.A. + diff --git a/config/funmaps/serverfiles/cstrike/maps/supercrazycar.bsp b/config/funmaps/serverfiles/cstrike/maps/supercrazycar.bsp new file mode 100755 index 0000000..47565bd Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/supercrazycar.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/supercrazycar.res b/config/funmaps/serverfiles/cstrike/maps/supercrazycar.res new file mode 100755 index 0000000..aabb6bd --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/supercrazycar.res @@ -0,0 +1,13 @@ +// supercrazycar.res was written by YellowJello for redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +gfx/env/cliffbk.tga +gfx/env/cliffdn.tga +gfx/env/cliffft.tga +gfx/env/clifflf.tga +gfx/env/cliffrt.tga +gfx/env/cliffup.tga +models/chick.mdl +overviews/supercrazycar.bmp +overviews/supercrazycar.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/supercrazycar.txt b/config/funmaps/serverfiles/cstrike/maps/supercrazycar.txt new file mode 100755 index 0000000..d21861d --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/supercrazycar.txt @@ -0,0 +1,13 @@ +Super CrazyCar - Fight to the death +Mapping by Nathaniel Miller AKA NIPPER +maps @ www.geocities.com/nipper14223 + +DONT TAKE THIS MAP SERIOUSLY! + +Its the sequal to crazycar! +The Ts have captured the CTs +crazycar but the CTs now have +the SuperCrazyCar. + + +(Press FIRE to continue) \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/supercrazycar2.bsp b/config/funmaps/serverfiles/cstrike/maps/supercrazycar2.bsp new file mode 100755 index 0000000..b8c8742 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/supercrazycar2.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/supercrazycar2.res b/config/funmaps/serverfiles/cstrike/maps/supercrazycar2.res new file mode 100755 index 0000000..b7efa8b --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/supercrazycar2.res @@ -0,0 +1,13 @@ +// supercrazycar2.res was written by YellowJello for redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +gfx/env/cliffbk.tga +gfx/env/cliffdn.tga +gfx/env/cliffft.tga +gfx/env/clifflf.tga +gfx/env/cliffrt.tga +gfx/env/cliffup.tga +models/chick.mdl +overviews/supercrazycar2.bmp +overviews/supercrazycar2.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/supercrazycar2.txt b/config/funmaps/serverfiles/cstrike/maps/supercrazycar2.txt new file mode 100755 index 0000000..288f95e --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/supercrazycar2.txt @@ -0,0 +1,13 @@ +Super CrazyCar v2 - Fight to the death +Mapping by Nathaniel Miller AKA NIPPER +maps @ www.geocities.com/nipper14223 + +DONT TAKE THIS MAP SERIOUSLY! + +Sorry about the r_speeds, I did the +best I could with them. + +Its the sequal to crazycar! +The Ts have captured the CTs +crazycar but the CTs now have +the SuperCrazyCar. \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/supercrazytank.bsp b/config/funmaps/serverfiles/cstrike/maps/supercrazytank.bsp new file mode 100755 index 0000000..3f29dd5 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/supercrazytank.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/supercrazytank.res b/config/funmaps/serverfiles/cstrike/maps/supercrazytank.res new file mode 100755 index 0000000..7fc0246 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/supercrazytank.res @@ -0,0 +1,14 @@ +// supercrazytank.res was written by YellowJello for redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +gfx/env/desbk.tga +gfx/env/desdn.tga +gfx/env/desft.tga +gfx/env/deslf.tga +gfx/env/desrt.tga +gfx/env/desup.tga +models/hostage.mdl +overviews/supercrazytank.tga +overviews/supercrazytank.txt +sound/weapons/elite_fire.wav \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/supercrazytank.txt b/config/funmaps/serverfiles/cstrike/maps/supercrazytank.txt new file mode 100755 index 0000000..de0ea13 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/supercrazytank.txt @@ -0,0 +1,16 @@ +SuperCrazyTank - Hostage Rescue + +By Nathaniel Miller AKA NIPPER +(nipperproductions@hotmail.com) +maps @ www.geocities.com/nipper14223 + +-Another stupid crazytank map. + +CT: Get in the tank, SPREAD OUT, +DON’T DUCK, and DON’T JUMP. +You got that you idiot? + +T: Stop the tank! + + + diff --git a/config/funmaps/serverfiles/cstrike/maps/whaaa.bsp b/config/funmaps/serverfiles/cstrike/maps/whaaa.bsp new file mode 100755 index 0000000..9cd83b0 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/whaaa.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/whaaa.txt b/config/funmaps/serverfiles/cstrike/maps/whaaa.txt new file mode 100755 index 0000000..749366e --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/whaaa.txt @@ -0,0 +1,14 @@ +WhAaA?! - Bomb +Mapping by Nathaniel Miller AKA NIPPER +maps @ www.geocities.com/nipper14223 + +WHAAAAAAA!? + +CTs: Stop Ts from blowing up you weird +little rectangle things at your spawn. + +NOTES: +-The 2nd version of this map. Fixed +gib-spam bug that crashed servers. + +-Also: WHAAAAaAAAaAAaAAAAAAA!!!!?!?! diff --git a/config/funmaps/serverfiles/cstrike/maps/xmas_crazytank.bsp b/config/funmaps/serverfiles/cstrike/maps/xmas_crazytank.bsp new file mode 100755 index 0000000..5d95190 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/maps/xmas_crazytank.bsp differ diff --git a/config/funmaps/serverfiles/cstrike/maps/xmas_crazytank.res b/config/funmaps/serverfiles/cstrike/maps/xmas_crazytank.res new file mode 100755 index 0000000..f0f1fc8 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/xmas_crazytank.res @@ -0,0 +1,14 @@ +// xmas_crazytank.res was written by YellowJello for redistribution on GameBanana. +// Credits for the original map go to Nathaniel Miller AKA NIPPER +// https://gamebanana.com/ + +gfx/env/snowbk.tga +gfx/env/snowdn.tga +gfx/env/snowft.tga +gfx/env/snowlf.tga +gfx/env/snowrt.tga +gfx/env/snowup.tga +sound/weapons/awp1.wav +sound/weapons/elite_fire.wav +overviews/xmas_crazytank.bmp +overviews/xmas_crazytank.txt \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/maps/xmas_crazytank.txt b/config/funmaps/serverfiles/cstrike/maps/xmas_crazytank.txt new file mode 100755 index 0000000..0a8f235 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/maps/xmas_crazytank.txt @@ -0,0 +1,29 @@ +X-mas Crazytank - Bomb/Diffuse +Mapping by Nathaniel Miller AKA NIPPER +maps @ www.geocities.com/nipper14223 + +After hearing of a terrorist plot to +capture Santa’s workshop the CTs were +deployed to the North Pole to help protect +the workshop. + + +CTs: Protect the Crazytank, for it is +your most powerful weapon. + +Ts: Attack the CT defenses, especially +the Crazytank. Once the tank is disabled +the CTs will fall and the workshop will +be yours! + + +NOTES: The Ts have a radio that they can +use once every 35 seconds to call in an air +strike against the CTs stronghold. But your +radio can be heard by the CTs so they will +know its coming! + + +(I can't belive you read this far...) + + diff --git a/config/funmaps/serverfiles/cstrike/models/aim_kosova_ak47/flag_alb.mdl b/config/funmaps/serverfiles/cstrike/models/aim_kosova_ak47/flag_alb.mdl new file mode 100755 index 0000000..0e3dcdc Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/aim_kosova_ak47/flag_alb.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/aim_kosova_famas/flag_alb.mdl b/config/funmaps/serverfiles/cstrike/models/aim_kosova_famas/flag_alb.mdl new file mode 100755 index 0000000..0e3dcdc Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/aim_kosova_famas/flag_alb.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/awp_island/bush_palmplant.mdl b/config/funmaps/serverfiles/cstrike/models/awp_island/bush_palmplant.mdl new file mode 100755 index 0000000..9b09327 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/awp_island/bush_palmplant.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/awp_island/palmier.mdl b/config/funmaps/serverfiles/cstrike/models/awp_island/palmier.mdl new file mode 100755 index 0000000..a9045e4 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/awp_island/palmier.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/cc_head.mdl b/config/funmaps/serverfiles/cstrike/models/cc_head.mdl new file mode 100755 index 0000000..4cb880a Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/cc_head.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/chick.mdl b/config/funmaps/serverfiles/cstrike/models/chick.mdl new file mode 100755 index 0000000..159a6e8 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/chick.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/cool/arc_flower.mdl b/config/funmaps/serverfiles/cstrike/models/cool/arc_flower.mdl new file mode 100755 index 0000000..64c7f86 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/cool/arc_flower.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/de_dolc/de_dolcgras.mdl b/config/funmaps/serverfiles/cstrike/models/de_dolc/de_dolcgras.mdl new file mode 100755 index 0000000..3282ba5 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/de_dolc/de_dolcgras.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/de_dolc/de_dolctree.mdl b/config/funmaps/serverfiles/cstrike/models/de_dolc/de_dolctree.mdl new file mode 100755 index 0000000..6676759 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/de_dolc/de_dolctree.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/de_dolc/du_car1.mdl b/config/funmaps/serverfiles/cstrike/models/de_dolc/du_car1.mdl new file mode 100755 index 0000000..7089506 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/de_dolc/du_car1.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/de_gash/GameCfg.wc b/config/funmaps/serverfiles/cstrike/models/de_gash/GameCfg.wc new file mode 100755 index 0000000..9d74b6b Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/de_gash/GameCfg.wc differ diff --git a/config/funmaps/serverfiles/cstrike/models/de_gash/e4g1e_moskvich2141.mdl b/config/funmaps/serverfiles/cstrike/models/de_gash/e4g1e_moskvich2141.mdl new file mode 100755 index 0000000..8894b01 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/de_gash/e4g1e_moskvich2141.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/de_gash/flag_alb.mdl b/config/funmaps/serverfiles/cstrike/models/de_gash/flag_alb.mdl new file mode 100755 index 0000000..0e3dcdc Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/de_gash/flag_alb.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/de_gash/palmtree.mdl b/config/funmaps/serverfiles/cstrike/models/de_gash/palmtree.mdl new file mode 100755 index 0000000..2ba033a Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/de_gash/palmtree.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/de_gash/shade.mdl b/config/funmaps/serverfiles/cstrike/models/de_gash/shade.mdl new file mode 100755 index 0000000..8ac5850 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/de_gash/shade.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/de_gash/trupi1.mdl b/config/funmaps/serverfiles/cstrike/models/de_gash/trupi1.mdl new file mode 100755 index 0000000..365a7d3 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/de_gash/trupi1.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/de_gash/trupi2.mdl b/config/funmaps/serverfiles/cstrike/models/de_gash/trupi2.mdl new file mode 100755 index 0000000..f48aefe Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/de_gash/trupi2.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/de_gash/trupi3.mdl b/config/funmaps/serverfiles/cstrike/models/de_gash/trupi3.mdl new file mode 100755 index 0000000..292fbb3 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/de_gash/trupi3.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/fy_abbottabad_cs/e4g1e_moskvich2141.mdl b/config/funmaps/serverfiles/cstrike/models/fy_abbottabad_cs/e4g1e_moskvich2141.mdl new file mode 100755 index 0000000..8894b01 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/fy_abbottabad_cs/e4g1e_moskvich2141.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/fy_abbottabad_cs/pi_tree3.mdl b/config/funmaps/serverfiles/cstrike/models/fy_abbottabad_cs/pi_tree3.mdl new file mode 100755 index 0000000..34f510c Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/fy_abbottabad_cs/pi_tree3.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/fy_abbottabad_cs/trup3.mdl b/config/funmaps/serverfiles/cstrike/models/fy_abbottabad_cs/trup3.mdl new file mode 100755 index 0000000..292fbb3 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/fy_abbottabad_cs/trup3.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/head.mdl b/config/funmaps/serverfiles/cstrike/models/head.mdl new file mode 100755 index 0000000..42ffe5a Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/head.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/hostage.mdl b/config/funmaps/serverfiles/cstrike/models/hostage.mdl new file mode 100755 index 0000000..3672bf1 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/hostage.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/ngyl_skog/tree_oak2.mdl b/config/funmaps/serverfiles/cstrike/models/ngyl_skog/tree_oak2.mdl new file mode 100755 index 0000000..9865376 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/ngyl_skog/tree_oak2.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/ngyl_skog/tree_oak4.mdl b/config/funmaps/serverfiles/cstrike/models/ngyl_skog/tree_oak4.mdl new file mode 100755 index 0000000..8a1a42c Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/ngyl_skog/tree_oak4.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/nm_gmanstat.mdl b/config/funmaps/serverfiles/cstrike/models/nm_gmanstat.mdl new file mode 100755 index 0000000..eca7695 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/nm_gmanstat.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/pac_cube.mdl b/config/funmaps/serverfiles/cstrike/models/pac_cube.mdl new file mode 100755 index 0000000..39b4058 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/pac_cube.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/scoutkos/gins_palmfam600_256.mdl b/config/funmaps/serverfiles/cstrike/models/scoutkos/gins_palmfam600_256.mdl new file mode 100755 index 0000000..01b9242 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/scoutkos/gins_palmfam600_256.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/shogun/CmdSeq.wc b/config/funmaps/serverfiles/cstrike/models/shogun/CmdSeq.wc new file mode 100755 index 0000000..b343172 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/shogun/CmdSeq.wc differ diff --git a/config/funmaps/serverfiles/cstrike/models/shogun/GameCfg.wc b/config/funmaps/serverfiles/cstrike/models/shogun/GameCfg.wc new file mode 100755 index 0000000..ff50be5 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/shogun/GameCfg.wc differ diff --git a/config/funmaps/serverfiles/cstrike/models/shogun/doofbird.mdl b/config/funmaps/serverfiles/cstrike/models/shogun/doofbird.mdl new file mode 100755 index 0000000..9cf7443 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/shogun/doofbird.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/shogun/doofcranefin.mdl b/config/funmaps/serverfiles/cstrike/models/shogun/doofcranefin.mdl new file mode 100755 index 0000000..57a7aca Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/shogun/doofcranefin.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/shogun/sho_hostage.mdl b/config/funmaps/serverfiles/cstrike/models/shogun/sho_hostage.mdl new file mode 100755 index 0000000..f5ec96a Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/shogun/sho_hostage.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/shogun/shogun_bonsai.mdl b/config/funmaps/serverfiles/cstrike/models/shogun/shogun_bonsai.mdl new file mode 100755 index 0000000..d2acc78 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/shogun/shogun_bonsai.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/shogun/shogun_dragon.mdl b/config/funmaps/serverfiles/cstrike/models/shogun/shogun_dragon.mdl new file mode 100755 index 0000000..c43ea7f Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/shogun/shogun_dragon.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/shogun/shogun_ropeb.mdl b/config/funmaps/serverfiles/cstrike/models/shogun/shogun_ropeb.mdl new file mode 100755 index 0000000..1f19dc7 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/shogun/shogun_ropeb.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/shogun/shogun_tourou5.mdl b/config/funmaps/serverfiles/cstrike/models/shogun/shogun_tourou5.mdl new file mode 100755 index 0000000..0db27f6 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/shogun/shogun_tourou5.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/shogun/shogun_tree1.mdl b/config/funmaps/serverfiles/cstrike/models/shogun/shogun_tree1.mdl new file mode 100755 index 0000000..8715907 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/shogun/shogun_tree1.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/shogun/shogun_tree2.mdl b/config/funmaps/serverfiles/cstrike/models/shogun/shogun_tree2.mdl new file mode 100755 index 0000000..7dceeae Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/shogun/shogun_tree2.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/shogun/worship.mdl b/config/funmaps/serverfiles/cstrike/models/shogun/worship.mdl new file mode 100755 index 0000000..846cb10 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/shogun/worship.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/w_smokegrenade.mdl b/config/funmaps/serverfiles/cstrike/models/w_smokegrenade.mdl new file mode 100755 index 0000000..f13b0fc Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/w_smokegrenade.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/xt_motel/glocke.mdl b/config/funmaps/serverfiles/cstrike/models/xt_motel/glocke.mdl new file mode 100755 index 0000000..5555208 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/xt_motel/glocke.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/models/xt_motel/male_corpse3.mdl b/config/funmaps/serverfiles/cstrike/models/xt_motel/male_corpse3.mdl new file mode 100755 index 0000000..adc642f Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/models/xt_motel/male_corpse3.mdl differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/Thumbs.db b/config/funmaps/serverfiles/cstrike/overviews/Thumbs.db new file mode 100755 index 0000000..2f2a546 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/Thumbs.db differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/as_crazytank.bmp b/config/funmaps/serverfiles/cstrike/overviews/as_crazytank.bmp new file mode 100755 index 0000000..c55e4d2 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/as_crazytank.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/as_crazytank.txt b/config/funmaps/serverfiles/cstrike/overviews/as_crazytank.txt new file mode 100755 index 0000000..c2fa3ad --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/as_crazytank.txt @@ -0,0 +1,14 @@ +// overview description file for as_crazytank.bsp + +global +{ + ZOOM 1.08 + ORIGIN 96 1364 -1473 + ROTATED 1 +} + +layer +{ + IMAGE "overviews/as_crazytank.bmp" + HEIGHT -1473.00 +} diff --git a/config/funmaps/serverfiles/cstrike/overviews/as_crazytank2.bmp b/config/funmaps/serverfiles/cstrike/overviews/as_crazytank2.bmp new file mode 100755 index 0000000..ead2377 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/as_crazytank2.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/as_crazytank2.txt b/config/funmaps/serverfiles/cstrike/overviews/as_crazytank2.txt new file mode 100755 index 0000000..a662d40 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/as_crazytank2.txt @@ -0,0 +1,12 @@ +global +{ + ZOOM 0.77 + ORIGIN -432 312 -441 + ROTATED 0 +} + +layer +{ + IMAGE "overviews/as_crazytank2.bmp" + HEIGHT -441 +} diff --git a/config/funmaps/serverfiles/cstrike/overviews/as_crazytank3.bmp b/config/funmaps/serverfiles/cstrike/overviews/as_crazytank3.bmp new file mode 100755 index 0000000..011ad2b Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/as_crazytank3.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/as_crazytank3.txt b/config/funmaps/serverfiles/cstrike/overviews/as_crazytank3.txt new file mode 100755 index 0000000..625ebd4 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/as_crazytank3.txt @@ -0,0 +1,12 @@ +global +{ + ZOOM 0.71 + ORIGIN 256 480 -769 + ROTATED 1 +} + +layer +{ + IMAGE "overviews/as_crazytank3.bmp" + HEIGHT -769 +} diff --git a/config/funmaps/serverfiles/cstrike/overviews/awp_city.bmp b/config/funmaps/serverfiles/cstrike/overviews/awp_city.bmp new file mode 100755 index 0000000..4ad161c Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/awp_city.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/awp_city.txt b/config/funmaps/serverfiles/cstrike/overviews/awp_city.txt new file mode 100755 index 0000000..e508467 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/awp_city.txt @@ -0,0 +1,12 @@ +global +{ + ZOOM 2.18 + ORIGIN 1280 1536 -65 + ROTATED 0 +} + +layer +{ + IMAGE "overviews/awp_city.bmp" + HEIGHT -65 +} diff --git a/config/funmaps/serverfiles/cstrike/overviews/awp_city2.bmp b/config/funmaps/serverfiles/cstrike/overviews/awp_city2.bmp new file mode 100755 index 0000000..578e1e6 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/awp_city2.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/awp_city2.txt b/config/funmaps/serverfiles/cstrike/overviews/awp_city2.txt new file mode 100755 index 0000000..d0a356b --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/awp_city2.txt @@ -0,0 +1,12 @@ +global +{ + ZOOM 1.95 + ORIGIN 1237.31 1534.83 -65 + ROTATED 1 +} + +layer +{ + IMAGE "overviews/awp_city2.bmp" + HEIGHT -65 +} diff --git a/config/funmaps/serverfiles/cstrike/overviews/awp_h9r9e_final.txt b/config/funmaps/serverfiles/cstrike/overviews/awp_h9r9e_final.txt new file mode 100755 index 0000000..1728340 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/awp_h9r9e_final.txt @@ -0,0 +1,14 @@ +// overview description file for awp_havana.bsp + +global +{ + ZOOM 3.40 + ORIGIN -124 1.72 45.50 + ROTATED 1 +} + +layer +{ + IMAGE "overviews/awp_havana.bmp" + HEIGHT -193 +} diff --git a/config/funmaps/serverfiles/cstrike/overviews/awp_havana.bmp b/config/funmaps/serverfiles/cstrike/overviews/awp_havana.bmp new file mode 100755 index 0000000..630c2c6 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/awp_havana.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/battlefield_rush2.tga b/config/funmaps/serverfiles/cstrike/overviews/battlefield_rush2.tga new file mode 100755 index 0000000..ca89d69 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/battlefield_rush2.tga differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/battlefield_rush2.txt b/config/funmaps/serverfiles/cstrike/overviews/battlefield_rush2.txt new file mode 100755 index 0000000..384405e --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/battlefield_rush2.txt @@ -0,0 +1,15 @@ + + +global +{ + ZOOM 1.70 + ORIGIN 128 1624 96 + ROTATED 0 +} + +layer +{ + IMAGE "overviews/battlefield_rush2.tga" + HEIGHT -321 +} + diff --git a/config/funmaps/serverfiles/cstrike/overviews/blahhhh.tga b/config/funmaps/serverfiles/cstrike/overviews/blahhhh.tga new file mode 100755 index 0000000..ac47a8b Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/blahhhh.tga differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/blahhhh.txt b/config/funmaps/serverfiles/cstrike/overviews/blahhhh.txt new file mode 100755 index 0000000..d254433 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/blahhhh.txt @@ -0,0 +1,15 @@ + + +global +{ + ZOOM 0.89 + ORIGIN -40 52 -1032 + ROTATED 1 +} + +layer +{ + IMAGE "overviews/blahhhh.tga" + HEIGHT -2705 +} + diff --git a/config/funmaps/serverfiles/cstrike/overviews/crazycar.bmp b/config/funmaps/serverfiles/cstrike/overviews/crazycar.bmp new file mode 100755 index 0000000..f501825 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/crazycar.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/crazycar.txt b/config/funmaps/serverfiles/cstrike/overviews/crazycar.txt new file mode 100755 index 0000000..a1d5448 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/crazycar.txt @@ -0,0 +1,12 @@ +global +{ + ZOOM 1.79 + ORIGIN -32 -128 -49 + ROTATED 0 +} + +layer +{ + IMAGE "overviews/crazycar.bmp" + HEIGHT -49 +} diff --git a/config/funmaps/serverfiles/cstrike/overviews/crazycar_v2.bmp b/config/funmaps/serverfiles/cstrike/overviews/crazycar_v2.bmp new file mode 100755 index 0000000..1bc250b Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/crazycar_v2.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/crazycar_v2.txt b/config/funmaps/serverfiles/cstrike/overviews/crazycar_v2.txt new file mode 100755 index 0000000..2649e8f --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/crazycar_v2.txt @@ -0,0 +1,12 @@ +global +{ + ZOOM 1.38 + ORIGIN -616 -136 -49 + ROTATED 1 +} + +layer +{ + IMAGE "overviews/as_crazycar_v2.bmp" + HEIGHT -49 +} diff --git a/config/funmaps/serverfiles/cstrike/overviews/crazytank.tga b/config/funmaps/serverfiles/cstrike/overviews/crazytank.tga new file mode 100755 index 0000000..eab174a Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/crazytank.tga differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/crazytank.txt b/config/funmaps/serverfiles/cstrike/overviews/crazytank.txt new file mode 100755 index 0000000..3401f8f --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/crazytank.txt @@ -0,0 +1,15 @@ + + +global +{ + ZOOM 1.03 + ORIGIN -8 1364 -544 + ROTATED 1 +} + +layer +{ + IMAGE "overviews/crazytank.tga" + HEIGHT -1473 +} + diff --git a/config/funmaps/serverfiles/cstrike/overviews/cs_shogun_final.bmp b/config/funmaps/serverfiles/cstrike/overviews/cs_shogun_final.bmp new file mode 100755 index 0000000..b811979 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/cs_shogun_final.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/cs_shogun_final.txt b/config/funmaps/serverfiles/cstrike/overviews/cs_shogun_final.txt new file mode 100755 index 0000000..94c7c92 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/cs_shogun_final.txt @@ -0,0 +1,14 @@ +// overview description file for cs_shogun_final.bsp + +global +{ + ZOOM 1.31 + ORIGIN -612.89 380.62 -16 + ROTATED 1 +} + +layer +{ + IMAGE "overviews/cs_shogun_final.bmp" + HEIGHT -16 +} diff --git a/config/funmaps/serverfiles/cstrike/overviews/de_crazytank.bmp b/config/funmaps/serverfiles/cstrike/overviews/de_crazytank.bmp new file mode 100755 index 0000000..e97bf84 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/de_crazytank.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/de_crazytank.txt b/config/funmaps/serverfiles/cstrike/overviews/de_crazytank.txt new file mode 100755 index 0000000..2cff5cb --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/de_crazytank.txt @@ -0,0 +1,12 @@ +global +{ + ZOOM 1.56 + ORIGIN -1344 128 -833 + ROTATED 1 +} + +layer +{ + IMAGE "overviews/de_crazytank.bmp" + HEIGHT -833 +} diff --git a/config/funmaps/serverfiles/cstrike/overviews/de_motel_x.bmp b/config/funmaps/serverfiles/cstrike/overviews/de_motel_x.bmp new file mode 100755 index 0000000..1dab1c9 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/de_motel_x.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/de_motel_x.txt b/config/funmaps/serverfiles/cstrike/overviews/de_motel_x.txt new file mode 100755 index 0000000..fa064d3 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/de_motel_x.txt @@ -0,0 +1,14 @@ +// overview description file for de_motel_x.bsp (overview by [HAU]TOT - tot@counter-strike.de) + +global +{ + ZOOM 1.81 + ORIGIN 1751.22 308.00 -113.00 + ROTATED 1 +} + +layer +{ + IMAGE "overviews/de_motel_x.bmp" + HEIGHT -113.00 +} diff --git a/config/funmaps/serverfiles/cstrike/overviews/de_spree.bmp b/config/funmaps/serverfiles/cstrike/overviews/de_spree.bmp new file mode 100755 index 0000000..034b02d Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/de_spree.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/de_spree.txt b/config/funmaps/serverfiles/cstrike/overviews/de_spree.txt new file mode 100755 index 0000000..188bf10 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/de_spree.txt @@ -0,0 +1,15 @@ +// overview description file for de_spree.bsp + +global +{ + ZOOM 1.66 + ORIGIN 1292 1042 -385 + ROTATED 0 +} + +layer +{ + IMAGE "overviews/de_spree.bmp" + HEIGHT -385 +} + diff --git a/config/funmaps/serverfiles/cstrike/overviews/de_westwood.tga b/config/funmaps/serverfiles/cstrike/overviews/de_westwood.tga new file mode 100755 index 0000000..97d3f1f Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/de_westwood.tga differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/de_westwood.txt b/config/funmaps/serverfiles/cstrike/overviews/de_westwood.txt new file mode 100755 index 0000000..a4877df --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/de_westwood.txt @@ -0,0 +1,15 @@ + + +global +{ + ZOOM 2.16 + ORIGIN 1152 512 0 + ROTATED 1 +} + +layer +{ + IMAGE "overviews/de_westwood.tga" + HEIGHT -369 +} + diff --git a/config/funmaps/serverfiles/cstrike/overviews/duhhh.tga b/config/funmaps/serverfiles/cstrike/overviews/duhhh.tga new file mode 100755 index 0000000..944d825 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/duhhh.tga differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/duhhh.txt b/config/funmaps/serverfiles/cstrike/overviews/duhhh.txt new file mode 100755 index 0000000..84d733e --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/duhhh.txt @@ -0,0 +1,15 @@ + + +global +{ + ZOOM 1.27 + ORIGIN 1652 520 -288 + ROTATED 0 +} + +layer +{ + IMAGE "overviews/duhhh.tga" + HEIGHT -2177 +} + diff --git a/config/funmaps/serverfiles/cstrike/overviews/fy_iceworld.bmp b/config/funmaps/serverfiles/cstrike/overviews/fy_iceworld.bmp new file mode 100755 index 0000000..f5ac6f6 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/fy_iceworld.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/fy_pool_day.bmp b/config/funmaps/serverfiles/cstrike/overviews/fy_pool_day.bmp new file mode 100755 index 0000000..2101859 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/fy_pool_day.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/gahhhhh.tga b/config/funmaps/serverfiles/cstrike/overviews/gahhhhh.tga new file mode 100755 index 0000000..aa7ce7f Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/gahhhhh.tga differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/gahhhhh.txt b/config/funmaps/serverfiles/cstrike/overviews/gahhhhh.txt new file mode 100755 index 0000000..ec7dbc6 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/gahhhhh.txt @@ -0,0 +1,15 @@ + + +global +{ + ZOOM 1.32 + ORIGIN 872 720 -544 + ROTATED 1 +} + +layer +{ + IMAGE "overviews/gahhhhh.tga" + HEIGHT -1441 +} + diff --git a/config/funmaps/serverfiles/cstrike/overviews/laser_tron.tga b/config/funmaps/serverfiles/cstrike/overviews/laser_tron.tga new file mode 100755 index 0000000..0d4c2c1 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/laser_tron.tga differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/laser_tron.txt b/config/funmaps/serverfiles/cstrike/overviews/laser_tron.txt new file mode 100755 index 0000000..fa5ea77 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/laser_tron.txt @@ -0,0 +1,15 @@ + + +global +{ + ZOOM 2.62 + ORIGIN 595 528 -342.67 + ROTATED 1 +} + +layer +{ + IMAGE "overviews/laser_tron.tga" + HEIGHT -451 +} + diff --git a/config/funmaps/serverfiles/cstrike/overviews/lasertron.bmp b/config/funmaps/serverfiles/cstrike/overviews/lasertron.bmp new file mode 100755 index 0000000..4e162f1 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/lasertron.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/lasertron.txt b/config/funmaps/serverfiles/cstrike/overviews/lasertron.txt new file mode 100755 index 0000000..24aaa46 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/lasertron.txt @@ -0,0 +1,12 @@ +global +{ + ZOOM 4.20 + ORIGIN 192 320 -1 + ROTATED 0 +} + +layer +{ + IMAGE "overviews/lasertron.bmp" + HEIGHT -1 +} \ No newline at end of file diff --git a/config/funmaps/serverfiles/cstrike/overviews/megacrazycar.bmp b/config/funmaps/serverfiles/cstrike/overviews/megacrazycar.bmp new file mode 100755 index 0000000..36624d5 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/megacrazycar.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/megacrazycar.txt b/config/funmaps/serverfiles/cstrike/overviews/megacrazycar.txt new file mode 100755 index 0000000..de31717 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/megacrazycar.txt @@ -0,0 +1,13 @@ +global +{ + ZOOM 1.17 + ORIGIN 128 1914.13 -3585 + ROTATED 1 +} + +layer +{ + IMAGE "overviews/megacrazycar.bmp" + HEIGHT -3585 +} + diff --git a/config/funmaps/serverfiles/cstrike/overviews/ow_cc_crazytank.bmp b/config/funmaps/serverfiles/cstrike/overviews/ow_cc_crazytank.bmp new file mode 100755 index 0000000..3291fe9 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/ow_cc_crazytank.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/ow_cc_crazytank.txt b/config/funmaps/serverfiles/cstrike/overviews/ow_cc_crazytank.txt new file mode 100755 index 0000000..78e1234 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/ow_cc_crazytank.txt @@ -0,0 +1,13 @@ +global +{ + ZOOM 1.03 + ORIGIN 960 0 -1609 + ROTATED 0 +} + +layer +{ + IMAGE "overviews/ow_cc_crazytank.bmp" + HEIGHT -1609 +} + diff --git a/config/funmaps/serverfiles/cstrike/overviews/scout_city.bmp b/config/funmaps/serverfiles/cstrike/overviews/scout_city.bmp new file mode 100755 index 0000000..4ad161c Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/scout_city.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/scout_city.txt b/config/funmaps/serverfiles/cstrike/overviews/scout_city.txt new file mode 100755 index 0000000..37d218c --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/scout_city.txt @@ -0,0 +1,12 @@ +global +{ + ZOOM 1.95 + ORIGIN 1237.31 1534.83 -65 + ROTATED 1 +} + +layer +{ + IMAGE "overviews/scout_city.bmp" + HEIGHT -65 +} diff --git a/config/funmaps/serverfiles/cstrike/overviews/supercrazycar.bmp b/config/funmaps/serverfiles/cstrike/overviews/supercrazycar.bmp new file mode 100755 index 0000000..6c89c66 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/supercrazycar.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/supercrazycar.txt b/config/funmaps/serverfiles/cstrike/overviews/supercrazycar.txt new file mode 100755 index 0000000..d2c80c9 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/supercrazycar.txt @@ -0,0 +1,13 @@ +global +{ + ZOOM 0.86 + ORIGIN -223.05 124.61 -193 + ROTATED 0 +} + +layer +{ + IMAGE "overviews/supercrazycar.bmp" + HEIGHT -193 +} + diff --git a/config/funmaps/serverfiles/cstrike/overviews/supercrazycar2.bmp b/config/funmaps/serverfiles/cstrike/overviews/supercrazycar2.bmp new file mode 100755 index 0000000..6336cd5 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/supercrazycar2.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/supercrazycar2.txt b/config/funmaps/serverfiles/cstrike/overviews/supercrazycar2.txt new file mode 100755 index 0000000..0803752 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/supercrazycar2.txt @@ -0,0 +1,13 @@ +global +{ + ZOOM 0.84 + ORIGIN -301.88 3.91 -193 + ROTATED 0 +} + +layer +{ + IMAGE "overviews/supercrazycar2.bmp" + HEIGHT -193 +} + diff --git a/config/funmaps/serverfiles/cstrike/overviews/supercrazytank.tga b/config/funmaps/serverfiles/cstrike/overviews/supercrazytank.tga new file mode 100755 index 0000000..2189438 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/supercrazytank.tga differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/supercrazytank.txt b/config/funmaps/serverfiles/cstrike/overviews/supercrazytank.txt new file mode 100755 index 0000000..f6a9dee --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/supercrazytank.txt @@ -0,0 +1,15 @@ + + +global +{ + ZOOM 1.23 + ORIGIN 1508 388 -124 + ROTATED 0 +} + +layer +{ + IMAGE "overviews/supercrazytank.tga" + HEIGHT -641 +} + diff --git a/config/funmaps/serverfiles/cstrike/overviews/xmas_crazytank.bmp b/config/funmaps/serverfiles/cstrike/overviews/xmas_crazytank.bmp new file mode 100755 index 0000000..0508408 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/overviews/xmas_crazytank.bmp differ diff --git a/config/funmaps/serverfiles/cstrike/overviews/xmas_crazytank.txt b/config/funmaps/serverfiles/cstrike/overviews/xmas_crazytank.txt new file mode 100755 index 0000000..87186a1 --- /dev/null +++ b/config/funmaps/serverfiles/cstrike/overviews/xmas_crazytank.txt @@ -0,0 +1,13 @@ +global +{ + ZOOM 1.49 + ORIGIN -1184 0 -385 + ROTATED 1 +} + +layer +{ + IMAGE "overviews/xmas_crazytank.bmp" + HEIGHT -385 +} + diff --git a/config/funmaps/serverfiles/cstrike/sound/DoYourThing.wav b/config/funmaps/serverfiles/cstrike/sound/DoYourThing.wav new file mode 100755 index 0000000..e763588 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/DoYourThing.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/IGetWet.wav b/config/funmaps/serverfiles/cstrike/sound/IGetWet.wav new file mode 100755 index 0000000..1ff2a97 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/IGetWet.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/LZ_RocknRoll.wav b/config/funmaps/serverfiles/cstrike/sound/LZ_RocknRoll.wav new file mode 100755 index 0000000..e42b1da Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/LZ_RocknRoll.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/PartyTillYaPuke.wav b/config/funmaps/serverfiles/cstrike/sound/PartyTillYaPuke.wav new file mode 100755 index 0000000..ecc7cc1 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/PartyTillYaPuke.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/ambience/Fortran_Italian_4_edit.wav b/config/funmaps/serverfiles/cstrike/sound/ambience/Fortran_Italian_4_edit.wav new file mode 100755 index 0000000..2d4d0a6 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/ambience/Fortran_Italian_4_edit.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/ambience/Fortran_Italian_5.wav b/config/funmaps/serverfiles/cstrike/sound/ambience/Fortran_Italian_5.wav new file mode 100755 index 0000000..04c1642 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/ambience/Fortran_Italian_5.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/ambience/biggun1.wav b/config/funmaps/serverfiles/cstrike/sound/ambience/biggun1.wav new file mode 100755 index 0000000..d79d9d6 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/ambience/biggun1.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/ambience/g_cbell.wav b/config/funmaps/serverfiles/cstrike/sound/ambience/g_cbell.wav new file mode 100755 index 0000000..4271330 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/ambience/g_cbell.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/ambience/g_monks.wav b/config/funmaps/serverfiles/cstrike/sound/ambience/g_monks.wav new file mode 100755 index 0000000..1d95f56 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/ambience/g_monks.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/ambience/g_priester.wav b/config/funmaps/serverfiles/cstrike/sound/ambience/g_priester.wav new file mode 100755 index 0000000..50eba8a Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/ambience/g_priester.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/ambience/sprayer.wav b/config/funmaps/serverfiles/cstrike/sound/ambience/sprayer.wav new file mode 100755 index 0000000..701b455 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/ambience/sprayer.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/bloodrave.wav b/config/funmaps/serverfiles/cstrike/sound/bloodrave.wav new file mode 100755 index 0000000..006ade2 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/bloodrave.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/de_spree/red16_22_mono.wav b/config/funmaps/serverfiles/cstrike/sound/de_spree/red16_22_mono.wav new file mode 100755 index 0000000..36be944 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/de_spree/red16_22_mono.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/de_spree/rocket16_22_mono.wav b/config/funmaps/serverfiles/cstrike/sound/de_spree/rocket16_22_mono.wav new file mode 100755 index 0000000..743f614 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/de_spree/rocket16_22_mono.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/de_spree/wind.wav b/config/funmaps/serverfiles/cstrike/sound/de_spree/wind.wav new file mode 100755 index 0000000..124ff42 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/de_spree/wind.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/duh_DoorsLAwomen.wav b/config/funmaps/serverfiles/cstrike/sound/duh_DoorsLAwomen.wav new file mode 100755 index 0000000..7d0f610 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/duh_DoorsLAwomen.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/duh_FoldsFuge.wav b/config/funmaps/serverfiles/cstrike/sound/duh_FoldsFuge.wav new file mode 100755 index 0000000..923609f Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/duh_FoldsFuge.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/duh_FoldsRegrets.wav b/config/funmaps/serverfiles/cstrike/sound/duh_FoldsRegrets.wav new file mode 100755 index 0000000..0f04f8d Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/duh_FoldsRegrets.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/duh_FoldsSuburbs.wav b/config/funmaps/serverfiles/cstrike/sound/duh_FoldsSuburbs.wav new file mode 100755 index 0000000..60f1bb8 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/duh_FoldsSuburbs.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/duh_LedBlackDog.wav b/config/funmaps/serverfiles/cstrike/sound/duh_LedBlackDog.wav new file mode 100755 index 0000000..c9fd14c Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/duh_LedBlackDog.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/duh_OverSupermoves.wav b/config/funmaps/serverfiles/cstrike/sound/duh_OverSupermoves.wav new file mode 100755 index 0000000..88f84d1 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/duh_OverSupermoves.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/duh_RushTrees.wav b/config/funmaps/serverfiles/cstrike/sound/duh_RushTrees.wav new file mode 100755 index 0000000..25506cf Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/duh_RushTrees.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/duh_bigtree.wav b/config/funmaps/serverfiles/cstrike/sound/duh_bigtree.wav new file mode 100755 index 0000000..878159b Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/duh_bigtree.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/duh_signs.wav b/config/funmaps/serverfiles/cstrike/sound/duh_signs.wav new file mode 100755 index 0000000..1e12bf0 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/duh_signs.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/duh_tree.wav b/config/funmaps/serverfiles/cstrike/sound/duh_tree.wav new file mode 100755 index 0000000..32b5c6f Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/duh_tree.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/g_FNM_cowboy.wav b/config/funmaps/serverfiles/cstrike/sound/g_FNM_cowboy.wav new file mode 100755 index 0000000..51a9b82 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/g_FNM_cowboy.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/g_FNM_nowhere.wav b/config/funmaps/serverfiles/cstrike/sound/g_FNM_nowhere.wav new file mode 100755 index 0000000..38c8825 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/g_FNM_nowhere.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/g_RTP.wav b/config/funmaps/serverfiles/cstrike/sound/g_RTP.wav new file mode 100755 index 0000000..ce17ab9 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/g_RTP.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/g_rush_SOR.wav b/config/funmaps/serverfiles/cstrike/sound/g_rush_SOR.wav new file mode 100755 index 0000000..f8c1585 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/g_rush_SOR.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/g_start.wav b/config/funmaps/serverfiles/cstrike/sound/g_start.wav new file mode 100755 index 0000000..30c458e Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/g_start.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/g_wk_party.wav b/config/funmaps/serverfiles/cstrike/sound/g_wk_party.wav new file mode 100755 index 0000000..f46fd2e Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/g_wk_party.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/headat.wav b/config/funmaps/serverfiles/cstrike/sound/headat.wav new file mode 100755 index 0000000..0d3ace0 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/headat.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/misc/pac_cherry.wav b/config/funmaps/serverfiles/cstrike/sound/misc/pac_cherry.wav new file mode 100755 index 0000000..c194db4 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/misc/pac_cherry.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/misc/pac_intro.wav b/config/funmaps/serverfiles/cstrike/sound/misc/pac_intro.wav new file mode 100755 index 0000000..4e51838 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/misc/pac_intro.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/ngyl_skog/amb.wav b/config/funmaps/serverfiles/cstrike/sound/ngyl_skog/amb.wav new file mode 100755 index 0000000..76c096f Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/ngyl_skog/amb.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/ngyl_skog/uguns.wav b/config/funmaps/serverfiles/cstrike/sound/ngyl_skog/uguns.wav new file mode 100755 index 0000000..1422727 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/ngyl_skog/uguns.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_CB_ComeWithUs.wav b/config/funmaps/serverfiles/cstrike/sound/nm_CB_ComeWithUs.wav new file mode 100755 index 0000000..8a53900 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_CB_ComeWithUs.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_FNM_midlife.wav b/config/funmaps/serverfiles/cstrike/sound/nm_FNM_midlife.wav new file mode 100755 index 0000000..73f0deb Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_FNM_midlife.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_LZ_bonzos.wav b/config/funmaps/serverfiles/cstrike/sound/nm_LZ_bonzos.wav new file mode 100755 index 0000000..756bf18 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_LZ_bonzos.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_RTP_theme.wav b/config/funmaps/serverfiles/cstrike/sound/nm_RTP_theme.wav new file mode 100755 index 0000000..ee41df0 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_RTP_theme.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_benfolds_ipaid.wav b/config/funmaps/serverfiles/cstrike/sound/nm_benfolds_ipaid.wav new file mode 100755 index 0000000..1c28504 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_benfolds_ipaid.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_bookert_greenonions.wav b/config/funmaps/serverfiles/cstrike/sound/nm_bookert_greenonions.wav new file mode 100755 index 0000000..6cb6841 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_bookert_greenonions.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_doors_fugedup.wav b/config/funmaps/serverfiles/cstrike/sound/nm_doors_fugedup.wav new file mode 100755 index 0000000..cf95367 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_doors_fugedup.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_doors_idiots.wav b/config/funmaps/serverfiles/cstrike/sound/nm_doors_idiots.wav new file mode 100755 index 0000000..0b27890 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_doors_idiots.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_doors_scream.wav b/config/funmaps/serverfiles/cstrike/sound/nm_doors_scream.wav new file mode 100755 index 0000000..3e8182a Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_doors_scream.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_floyd_puddin.wav b/config/funmaps/serverfiles/cstrike/sound/nm_floyd_puddin.wav new file mode 100755 index 0000000..3456cff Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_floyd_puddin.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_floyd_usandthem.wav b/config/funmaps/serverfiles/cstrike/sound/nm_floyd_usandthem.wav new file mode 100755 index 0000000..7fe1456 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_floyd_usandthem.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_goodbadugly.wav b/config/funmaps/serverfiles/cstrike/sound/nm_goodbadugly.wav new file mode 100755 index 0000000..cf00f1f Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_goodbadugly.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_outkast_loveinwar.wav b/config/funmaps/serverfiles/cstrike/sound/nm_outkast_loveinwar.wav new file mode 100755 index 0000000..4863f98 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_outkast_loveinwar.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_radiohead_idioteque.wav b/config/funmaps/serverfiles/cstrike/sound/nm_radiohead_idioteque.wav new file mode 100755 index 0000000..23a6c13 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_radiohead_idioteque.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_rbf_intro.wav b/config/funmaps/serverfiles/cstrike/sound/nm_rbf_intro.wav new file mode 100755 index 0000000..60757eb Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_rbf_intro.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_rbf_senorita.wav b/config/funmaps/serverfiles/cstrike/sound/nm_rbf_senorita.wav new file mode 100755 index 0000000..2b5c12f Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_rbf_senorita.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_scent_hooah.wav b/config/funmaps/serverfiles/cstrike/sound/nm_scent_hooah.wav new file mode 100755 index 0000000..0327a62 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_scent_hooah.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_stevemiller_airliner.wav b/config/funmaps/serverfiles/cstrike/sound/nm_stevemiller_airliner.wav new file mode 100755 index 0000000..f48f9d8 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_stevemiller_airliner.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_stevemiller_usa.wav b/config/funmaps/serverfiles/cstrike/sound/nm_stevemiller_usa.wav new file mode 100755 index 0000000..d758453 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_stevemiller_usa.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nm_stones_intro.wav b/config/funmaps/serverfiles/cstrike/sound/nm_stones_intro.wav new file mode 100755 index 0000000..cf44e42 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nm_stones_intro.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/nmh_scream1.wav b/config/funmaps/serverfiles/cstrike/sound/nmh_scream1.wav new file mode 100755 index 0000000..9034740 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/nmh_scream1.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/CmdSeq.wc b/config/funmaps/serverfiles/cstrike/sound/shogun/CmdSeq.wc new file mode 100755 index 0000000..38214a5 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/CmdSeq.wc differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/GameCfg.wc b/config/funmaps/serverfiles/cstrike/sound/shogun/GameCfg.wc new file mode 100755 index 0000000..82ae2d3 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/GameCfg.wc differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/chimes.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/chimes.wav new file mode 100755 index 0000000..2412d2d Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/chimes.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/killChicken.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/killChicken.wav new file mode 100755 index 0000000..46ce2f6 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/killChicken.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/paper1.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/paper1.wav new file mode 100755 index 0000000..f19ca22 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/paper1.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/paper2.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/paper2.wav new file mode 100755 index 0000000..5bfbd35 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/paper2.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/paper3.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/paper3.wav new file mode 100755 index 0000000..90e945c Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/paper3.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/shogun.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun.wav new file mode 100755 index 0000000..e79384e Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_airmeat.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_airmeat.wav new file mode 100755 index 0000000..0e36e7f Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_airmeat.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_amb.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_amb.wav new file mode 100755 index 0000000..5e31fcf Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_amb.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_anthem4.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_anthem4.wav new file mode 100755 index 0000000..257be0a Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_anthem4.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_falls.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_falls.wav new file mode 100755 index 0000000..5f1e426 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_falls.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_hallelujah.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_hallelujah.wav new file mode 100755 index 0000000..fbe4d6d Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_hallelujah.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_hell.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_hell.wav new file mode 100755 index 0000000..4395ebd Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_hell.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_hellland.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_hellland.wav new file mode 100755 index 0000000..4ebca06 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_hellland.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_rock.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_rock.wav new file mode 100755 index 0000000..16823c3 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_rock.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_tweeters.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_tweeters.wav new file mode 100755 index 0000000..4ac9bc9 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_tweeters.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_water.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_water.wav new file mode 100755 index 0000000..3fd23d9 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_water.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_yahoo.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_yahoo.wav new file mode 100755 index 0000000..d7d53b1 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/shogun_yahoo.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/shogunstart.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/shogunstart.wav new file mode 100755 index 0000000..0dea42c Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/shogunstart.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/shogunwind.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/shogunwind.wav new file mode 100755 index 0000000..ab200b5 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/shogunwind.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/shogun/wind.wav b/config/funmaps/serverfiles/cstrike/sound/shogun/wind.wav new file mode 100755 index 0000000..b075fde Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/shogun/wind.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/thunder_struck.wav b/config/funmaps/serverfiles/cstrike/sound/thunder_struck.wav new file mode 100755 index 0000000..7d25f88 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/thunder_struck.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/weapons/awp1.wav b/config/funmaps/serverfiles/cstrike/sound/weapons/awp1.wav new file mode 100755 index 0000000..5f223a2 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/weapons/awp1.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/weapons/elite_fire.wav b/config/funmaps/serverfiles/cstrike/sound/weapons/elite_fire.wav new file mode 100755 index 0000000..ba61e2e Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/weapons/elite_fire.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/xt_motel/baum.wav b/config/funmaps/serverfiles/cstrike/sound/xt_motel/baum.wav new file mode 100755 index 0000000..04bcfd6 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/xt_motel/baum.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/xt_motel/bell.wav b/config/funmaps/serverfiles/cstrike/sound/xt_motel/bell.wav new file mode 100755 index 0000000..4e7b337 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/xt_motel/bell.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/xt_motel/bg1.wav b/config/funmaps/serverfiles/cstrike/sound/xt_motel/bg1.wav new file mode 100755 index 0000000..99ec5fc Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/xt_motel/bg1.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/xt_motel/bg2.wav b/config/funmaps/serverfiles/cstrike/sound/xt_motel/bg2.wav new file mode 100755 index 0000000..4ff9ebf Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/xt_motel/bg2.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/xt_motel/heul1.wav b/config/funmaps/serverfiles/cstrike/sound/xt_motel/heul1.wav new file mode 100755 index 0000000..84f250b Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/xt_motel/heul1.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/xt_motel/heul2.wav b/config/funmaps/serverfiles/cstrike/sound/xt_motel/heul2.wav new file mode 100755 index 0000000..2b7460e Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/xt_motel/heul2.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/xt_motel/klavir.wav b/config/funmaps/serverfiles/cstrike/sound/xt_motel/klavir.wav new file mode 100755 index 0000000..c2f5bc8 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/xt_motel/klavir.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/xt_motel/knarren.wav b/config/funmaps/serverfiles/cstrike/sound/xt_motel/knarren.wav new file mode 100755 index 0000000..882f0ee Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/xt_motel/knarren.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/xt_motel/knarren2.wav b/config/funmaps/serverfiles/cstrike/sound/xt_motel/knarren2.wav new file mode 100755 index 0000000..ccc9ac7 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/xt_motel/knarren2.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/xt_motel/radio.wav b/config/funmaps/serverfiles/cstrike/sound/xt_motel/radio.wav new file mode 100755 index 0000000..d7c7dc1 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/xt_motel/radio.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/xt_motel/regen.wav b/config/funmaps/serverfiles/cstrike/sound/xt_motel/regen.wav new file mode 100755 index 0000000..ea8ea2b Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/xt_motel/regen.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sound/xt_motel/tv.wav b/config/funmaps/serverfiles/cstrike/sound/xt_motel/tv.wav new file mode 100755 index 0000000..aae7d97 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sound/xt_motel/tv.wav differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/blueflare1.spr b/config/funmaps/serverfiles/cstrike/sprites/blueflare1.spr new file mode 100755 index 0000000..c4693cd Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/blueflare1.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/blueglow.spr b/config/funmaps/serverfiles/cstrike/sprites/blueglow.spr new file mode 100755 index 0000000..c4693cd Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/blueglow.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/flame2.spr b/config/funmaps/serverfiles/cstrike/sprites/flame2.spr new file mode 100755 index 0000000..74a07cb Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/flame2.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/glow01.spr b/config/funmaps/serverfiles/cstrike/sprites/glow01.spr new file mode 100755 index 0000000..c4693cd Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/glow01.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/muzzleflash2.spr b/config/funmaps/serverfiles/cstrike/sprites/muzzleflash2.spr new file mode 100755 index 0000000..40a0fec Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/muzzleflash2.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/ngyl_skog/uguns.spr b/config/funmaps/serverfiles/cstrike/sprites/ngyl_skog/uguns.spr new file mode 100755 index 0000000..7468398 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/ngyl_skog/uguns.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/nm_blue.spr b/config/funmaps/serverfiles/cstrike/sprites/nm_blue.spr new file mode 100755 index 0000000..cc94816 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/nm_blue.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/nm_green.spr b/config/funmaps/serverfiles/cstrike/sprites/nm_green.spr new file mode 100755 index 0000000..f848f10 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/nm_green.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/nm_red.spr b/config/funmaps/serverfiles/cstrike/sprites/nm_red.spr new file mode 100755 index 0000000..554b8cd Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/nm_red.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/nm_white.spr b/config/funmaps/serverfiles/cstrike/sprites/nm_white.spr new file mode 100755 index 0000000..196749e Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/nm_white.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/nm_yellow.spr b/config/funmaps/serverfiles/cstrike/sprites/nm_yellow.spr new file mode 100755 index 0000000..0b7b69d Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/nm_yellow.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/paintball.spr b/config/funmaps/serverfiles/cstrike/sprites/paintball.spr new file mode 100755 index 0000000..699600b Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/paintball.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/shogun/CmdSeq.wc b/config/funmaps/serverfiles/cstrike/sprites/shogun/CmdSeq.wc new file mode 100755 index 0000000..978012f Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/shogun/CmdSeq.wc differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/shogun/GameCfg.wc b/config/funmaps/serverfiles/cstrike/sprites/shogun/GameCfg.wc new file mode 100755 index 0000000..3405271 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/shogun/GameCfg.wc differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/shogun/flames.spr b/config/funmaps/serverfiles/cstrike/sprites/shogun/flames.spr new file mode 100755 index 0000000..3e64cdc Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/shogun/flames.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/shogun/mawibse_grass_01.spr b/config/funmaps/serverfiles/cstrike/sprites/shogun/mawibse_grass_01.spr new file mode 100755 index 0000000..1226f6c Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/shogun/mawibse_grass_01.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/shogun/mawibse_grass_02.spr b/config/funmaps/serverfiles/cstrike/sprites/shogun/mawibse_grass_02.spr new file mode 100755 index 0000000..862e0a9 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/shogun/mawibse_grass_02.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/shogun/rk_steam.spr b/config/funmaps/serverfiles/cstrike/sprites/shogun/rk_steam.spr new file mode 100755 index 0000000..38275ef Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/shogun/rk_steam.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/shogun/sho_clouds1c.spr b/config/funmaps/serverfiles/cstrike/sprites/shogun/sho_clouds1c.spr new file mode 100755 index 0000000..6995cdd Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/shogun/sho_clouds1c.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/shogun/sho_clouds1d.spr b/config/funmaps/serverfiles/cstrike/sprites/shogun/sho_clouds1d.spr new file mode 100755 index 0000000..9bf3e4d Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/shogun/sho_clouds1d.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_bonsai.spr b/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_bonsai.spr new file mode 100755 index 0000000..ef54fca Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_bonsai.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_garden.spr b/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_garden.spr new file mode 100755 index 0000000..22a17bf Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_garden.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_mist.spr b/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_mist.spr new file mode 100755 index 0000000..634267d Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_mist.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_mist2.spr b/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_mist2.spr new file mode 100755 index 0000000..4c6c515 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_mist2.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_rainbow.spr b/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_rainbow.spr new file mode 100755 index 0000000..8107537 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_rainbow.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_tree.spr b/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_tree.spr new file mode 100755 index 0000000..3aa62e0 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_tree.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_treetemp.spr b/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_treetemp.spr new file mode 100755 index 0000000..440cb37 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/shogun/shogun_treetemp.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/shogun/wall_puff1.spr b/config/funmaps/serverfiles/cstrike/sprites/shogun/wall_puff1.spr new file mode 100755 index 0000000..4c26fc3 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/shogun/wall_puff1.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/xt_fire.spr b/config/funmaps/serverfiles/cstrike/sprites/xt_fire.spr new file mode 100755 index 0000000..8e25968 Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/xt_fire.spr differ diff --git a/config/funmaps/serverfiles/cstrike/sprites/xt_rain3.spr b/config/funmaps/serverfiles/cstrike/sprites/xt_rain3.spr new file mode 100755 index 0000000..55731cb Binary files /dev/null and b/config/funmaps/serverfiles/cstrike/sprites/xt_rain3.spr differ