Nowadays Zombie Plague become a huge CS:GO server-side modification with API, developed as an source mod plugin based on new SourcePawn 1.7,
which completely revamps the gameplay, turning the game into an intense "Humans vs Zombies" survival experience.
Even though it's strongly based on the classic zombie infection mods, it takes the concept to a new level by introducing:
Gameplay Modes System: allowing add new game modes
Weapons System: allowing add new custom/standart weapons
Zombie Classes System: allowing add new zombie classes with unique models for knife and grenades
Human Classes System: allowing add new human classes with unique hands for all weapons
Account System: awarded killing, damaging or infecting players, can be exchanged for goods
Extra Items System: allows adding unlimited custom items to buy
Deathmatch Mode: where zombies or humans can continually respawn
Admin Menu: to easily manage gamemodes and players
Special Effects: from the HL2 Engine, such as dark lighting, infection effects, fog, screen shake and etc
Level System: awarded by killing, damaging or infecting, increase damage, speed, gravity
Restoring System: allow to restore health, if you are zombie
Main Features
_____________________________________________
Weapons Support (+Custom)
Custom Models Support
Extra Items Support
Zombie Classes Support
Human Classes Support
Gameplay Modes Support
Flashlight and Nightvision
Custom Lighting, Fog, Sky, Sun
Default Game Modes:
Normal Infection
Multi Infection
Swarm Mode
Nemesis Mode
Survivor Mode
Sniper Mode
Plague Mode
Armageddon
Default Human Classes:
Red tank: Skill = Armorup ~ Activation on button: F4
Blue tank: Skill = Regeneration ~ Activation on button: F4
Red Alice: Skill = Fast running ~ Activation on button: F4
Blue Alice: Skill = Invisibility ~ Activation on button: F4
And many others
Default Zombie Classes:
Explosive: Skill = Infection gas ~ Activation on death
Shaman: Skill = Scream ~ Activation on button: F4
Deimos: Skill = Sting shot ~ Activation on button: F4
Healer: Skill = Healing for money rewards ~ Activation on button: F4
Smoker: Skill = Toxic cloud ~ Activation on button: F4
Fast: Skill = Fast running ~ Activation on button: F4
Witch: Skill = Bats flock ~ Activation on button: F4
Baller: Skill = Paralyzing ball ~ Activation on button: F4
Tesla: Skill = Hallucination blast ~ Activation on button: F4
Stamper: Skill = Explosive coffin ~ Activation on button: F4
Ghost: Skill = Invisibility ~ Activation on button: F4
Sleeper: Passive skill = Randomly dazzles the assailant
Trapper: Skill = Traping for money rewards ~ Activation on button: F4
Tank: Skill = Invulnerability ~ Activation on button: F4
Deathmatch System
Restoring System
Sounds System
Hitbox System
Log System
Ragdoll System
Menu System
Skills System
Money System
Hands/Submodel System
Level System with MySQL and SQLite Support
Leap/Boost Jumps
Freeze, Fire, Flare, Infection, Jump and Molotov Nades
Objective removals (C4/Hostage/Buyzone/Doors)
Kill & Infection Rewards
More than 100 Natives and Forwards
Multi-Lanugage Support (All messages)
English Supported
Russian Supported
Main settings
_____________________________________________
Cfg file can be find here ../csgo/cfg/sourcemod/zombieplague.cfg
Spoiler
PHP Code:
// ================================================================================== // // ZOMBIE PLAGUE // Main configuration // // ================================================================================== // * Each uncommented line will be initialize a convar object during 'OnPluginStart'. // ================================================================================== // Defaults: // ----------------------------------------------------------------------------------
// < Basic > // ---------- zp_gamemode "30" // Time before any game mode starts in seconds [0-disabled] zp_database "1" // Enable auto saving of players data in the database [0-off // 1-always // 2-map] zp_antistick "1" // Enable auto unstick players when stuck within each others' collision hull [0-no // 1-yes] zp_hitgroup "1" // Enable hitgroups module, disabling this will disable hitgroup-related features [0-no // 1-yes] (Hitgroup knockback multipliers, hitgroup damage control) zp_knockback "1" // Enable push-knocknack system, disabling this will enable stamina-based slowdown features [0-no // 1-yes] (Knockback/slowdown for the players) zp_costume "1" // Enable costumes module, disabling this will disable costumes-related features [0-no // 1-yes] (Hats/costumes on the players) zp_menu_button "autobuy" // Bind of the button for the menu open. Look here: https://www.reddit.com/r/GlobalOffensive/comments/36cjph/default_binds/ zp_skill_button "rebuy" // Bind of the button for the skill usage. Look here: https://www.reddit.com/r/GlobalOffensive/comments/36cjph/default_binds/ zp_light_button "+lookatweapon" // Bind of the button for the flashlight trigger. Look here: https://www.reddit.com/r/GlobalOffensive/comments/36cjph/default_binds/ zp_buy_button "1" // Enable hook of buymenu button "B" for the weapon menu [0-no // 1-yes] zp_human_menu "0" // Enable human class menu on a humanize with instant class change for 10 seconds [0-no // 1-yes] zp_zombie_menu "0" // Enable zombie class menu on an infection with instant class change for 10 seconds [0-no // 1-yes] // ----------
// < Logs > // ---------- zp_log "1" // Enable logging of events in the plugin. Fatal errors are always logged [0-no // 1-yes] zp_log_module_filter "0" // Enable module filtering. Only events from listed modules will be logged [0-no // 1-yes] zp_log_ignore_console "1" // Don't log events triggered by console commands that are executed by the console itself, like commands in configs [0-no // 1-yes] zp_log_error_override "1" // Always log error messages no matter what logging flags or modules filters that are enabled [0-no // 1-yes] zp_log_print_chat "0" // Print log events to public chat in addition to the log file [0-no // 1-yes] // ----------
// < Jump Boost > // ---------- zp_jumpboost "1" // Enable jump boost [0-no // 1-yes] zp_jumpboost_multiplier "1.1" // Multiplier with power of jump [1.0 = normal jump // 2.0 = double jump] zp_jumpboost_max "300.0" // Maximum speed, which allow to increse jump // ----------
// < Level System > // ---------- zp_level_system "1" // Enable level system [0-no // 1-yes] // ---------- zp_level_health_ratio "10.0" // Health multiplier for each level [health += health_ratio*level] zp_level_speed_ratio "0.01" // Speed multiplier for each level [speed += speed_ratio*level] zp_level_gravity_ratio "0.01" // Gravity multiplier for each level [gravity += gravity_ratio*level] zp_level_damage_ratio "0.1" // Damage multiplier for each level [damage *= damage_ratio*level+1.0] // ---------- zp_level_hud "1" // Enable level hud [0-no // 1-yes] zp_level_hud_zombie_R "255" // Color of zombie hud (Red) zp_level_hud_zombie_G "0" // Color of zombie hud (Green) zp_level_hud_zombie_B "0" // Color of zombie hud (Blue) zp_level_hud_zombie_A "255" // Alpha of zombie hud zp_level_hud_human_R "0" // Color of human hud (Red) zp_level_hud_human_G "255" // Color of human hud (Green) zp_level_hud_human_B "0" // Color of human hud (Blue) zp_level_hud_human_A "255" // Alpha of human hud zp_level_hud_spectator_R "255" // Color of spectator hud (Red) zp_level_hud_spectator_G "255" // Color of spectator hud (Green) zp_level_hud_spectator_B "255" // Color of spectator hud (Blue) zp_level_hud_spectator_A "255" // Alpha of spectator hud zp_level_hud_X "0.02" // x coordinate, from 0 to 1. -1.0 is the center zp_level_hud_Y "0.885" // y coordinate, from 0 to 1. -1.0 is the center // ----------
// < Account > // ---------- zp_account_money "1" // Enable money hud [0-off // 1-classic // 2-custom] zp_account_connect "50" // The money amount on the first connection zp_account_bet "50" // The donate amount (also staring amount) zp_account_commision "0.2" // Starting commision in % zp_account_decrease "0.005" // Commision decrease in % (each increasing of bet) zp_account_hud_R "255" // Color of custom money hud (Red) zp_account_hud_G "255" // Color of custom money hud (Green) zp_account_hud_B "255" // Color of custom money hud (Blue) zp_account_hud_A "255" // Alpha of custom money hud zp_account_hud_X "0.02" // x coordinate, from 0 to 1. -1.0 is the center zp_account_hud_Y "0.01" // y coordinate, from 0 to 1. -1.0 is the center // ----------
// < Visual Effects > // ---------- zp_veffects_infect "1" // Visual effects on infect [0-no // 1-yes] zp_veffects_infect_fade "1" // Screen fade for infection of player [0-no // 1-yes] zp_veffects_infect_fade_time "0.6" // Holding time of fade effect zp_veffects_infect_fade_duration "0.2" // Duration of fade effect zp_veffects_infect_fade_R "255" // Color of infect fade (Red) zp_veffects_infect_fade_G "0" // Color of infect fade (Green) zp_veffects_infect_fade_B "0" // Color of infect fade (Blue) zp_veffects_infect_fade_A "30" // Alpha of infect fade zp_veffects_infect_shake "1" // Screen shake for infected player [0-no // 1-yes] zp_veffects_infect_shake_amp "15.0" // Amplitude of shaking effect zp_veffects_infect_shake_frequency "1.0" // Frequency of shaking effect zp_veffects_infect_shake_duration "4.0" // Duration of shaking effect // ---------- zp_veffects_humanize "1" // Visual effects on humanize [0-no // 1-yes] zp_veffects_humanize_fade "1" // Screen fade for humanize of player [0-no // 1-yes] zp_veffects_humanize_fade_time "0.6" // Holding time of fade effect zp_veffects_humanize_fade_duration "0.2" // Duration of fade effect zp_veffects_humanize_fade_R "0" // Color of infect fade (Red) zp_veffects_humanize_fade_G "0" // Color of infect fade (Green) zp_veffects_humanize_fade_B "255" // Color of infect fade (Blue) zp_veffects_humanize_fade_A "30" // Alpha of infect fade // ---------- zp_veffects_respawn "1" // Visual effect on re-spawn [0-no // 1-yes] zp_veffects_respawn_name "spiral_spiral_akskkk" // Name of partical effect (Not a path, each '.pcf' have a name inside) For standart particles. Look here: https://developer.valvesoftware.com/wiki/List_of_CS_GO_Particles zp_veffects_respawn_attachment "" // Attachment of re-spawn effect [""-client position // "eholster"-model attachment name] zp_veffects_respawn_duration "1.0" // Duration of re-spawn effect // ---------- zp_veffects_heal "1" // Visual effect on healing [0-no // 1-yes] zp_veffects_heal_name "heal_ss" // Name of partical effect (Not a path, each '.pcf' have a name inside) For standart particles. Look here: https://developer.valvesoftware.com/wiki/List_of_CS_GO_Particles zp_veffects_heal_attachment "" // Attachment of healing effect [""-client position // "eholster"-model attachment name] zp_veffects_heal_duration "1.0" // Duration of healing effect // ---------- zp_veffects_heal_fade "1" // Screen fade for healing of player [0-no // 1-yes] zp_veffects_heal_fade_time "0.3" // Holding time of fade effect zp_veffects_heal_fade_duration "0.15" // Duration of fade effect zp_veffects_heal_fade_R "0" // Color of infect fade (Red) zp_veffects_heal_fade_G "255" // Color of infect fade (Green) zp_veffects_heal_fade_B "0" // Color of infect fade (Blue) zp_veffects_heal_fade_A "25" // Alpha of infect fade // ---------- zp_veffects_leap "1" // Visual effect on leap-jump [0-no // 1-yes] zp_veffects_leap_name "block_trail_xzaa" // Name of partical effect (Not a path, each '.pcf' have a name inside) For standart particles. Look here: https://developer.valvesoftware.com/wiki/List_of_CS_GO_Particles zp_veffects_leap_attachment "" // Attachment of leap-jump effect [""-client position // "eholster"-model attachment name] zp_veffects_leap_duration "1.5" // Duration of leap-jump effect zp_veffects_leap_shake "1" // Screen shake for leap-jump [0-no // 1-yes] zp_veffects_leap_shake_amp "10.0" // Amplitude of shaking effect zp_veffects_leap_shake_frequency "1.0" // Frequency of shaking effect zp_veffects_leap_shake_duration "2.0" // Duration of shaking effect // ---------- zp_veffects_health "1" // Showing health sprite for an attacker player [0-no // 1-yes] zp_veffects_health_sprite "animated/hpbar5s.vmt" // The health sprite path (This material files/textures will be automatically precache) zp_veffects_health_scale "1.0" // Scale multiplier of the sprite zp_veffects_health_var "$frame" // Sets the chosen material parameter to the specified value zp_veffects_health_frames "21.0" // Total amount of frames in the sprite zp_veffects_health_duration "5.0" // Duration of sprite showing zp_veffects_health_height "80.0" // Vector height from the origin // ----------
// < Fog > // ---------- zp_veffects_fog "1" // Enable fog rendering on the map [0-no // 1-yes] zp_veffects_fog_color "200 200 200" // Primary and secondary color of the fog zp_veffects_fog_density "0.2" // Density (thickness) of the fog zp_veffects_fog_startdist "300" // Distance from player to start rendering foremost fog zp_veffects_fog_enddist "1200" // Distance from player to stop rendering fog zp_veffects_fog_farz "4000" // Vertical clipping plane. Look here: https://developer.valvesoftware.com/wiki/Env_fog_controller // ----------
// < Ragdoll (Bodies) > // ---------- zp_veffects_ragdoll_remove "0" // Remove players' ragdolls from the game after a delay [0-no // 1-yes] zp_veffects_ragdoll_dissolve "-1" // The ragdoll removal effect. [-2 = effectless removal // -1 = random effect // 0 = energy dissolve // 1 = heavy electrical dissolve // 2 = light electrical dissolve // 3 = core dissolve] zp_veffects_ragdoll_delay "0.5" // Time to wait before removing the ragdoll // ----------
// < Sound Effects > // ---------- zp_seffects_level "75" // Index of the sound level for the modification. Look here: // SNDLEVEL_NONE = 0 < None > // SNDLEVEL_RUSTLE = 20 < Rustling leaves > // SNDLEVEL_WHISPER = 25 < Whispering > // SNDLEVEL_LIBRARY = 30 < In a library > // SNDLEVEL_FRIDGE = 45 < Refrigerator > // SNDLEVEL_HOME = 50 < Average home (3.9 attn) > // SNDLEVEL_CONVO = 60 < Normal conversation (2.0 attn) > // SNDLEVEL_DRYER = 60 < Clothes dryer > // SNDLEVEL_DISHWASHER = 65 < Dishwasher/washing machine (1.5 attn) > // SNDLEVEL_CAR = 70 < Car or vacuum cleaner (1.0 attn) > // SNDLEVEL_NORMAL = 75 < Normal sound level > // SNDLEVEL_TRAFFIC = 75 < Busy traffic (0.8 attn) > // SNDLEVEL_MINIBIKE = 80 < Mini-bike, alarm clock (0.7 attn) > // SNDLEVEL_SCREAMING = 90 < Screaming child (0.5 attn) > // SNDLEVEL_TRAIN = 100 < Subway train, pneumatic drill (0.4 attn) > // SNDLEVEL_HELICOPTER = 105 < Helicopter > // SNDLEVEL_SNOWMOBILE = 110 < Snow mobile > // SNDLEVEL_AIRCRAFT = 120 < Auto horn, aircraft > // SNDLEVEL_RAIDSIREN = 130 < Air raid siren > // SNDLEVEL_GUNFIRE = 140 < Gunshot, jet engine (0.27 attn) > // SNDLEVEL_ROCKET = 180 < Rocket launching (0.2 attn) > // ---------- zp_seffects_voice "1" // Manipulating of sv_alltalk to obey zombie/human teams instead of t/ct [0-no // 1-yes] zp_seffects_voice_zombies_mute "0" // Only allow humans to communicate, block verbal zombie communication [0-no // 1-yes] // ---------- zp_seffects_infect "1" // Emit a infect sound when a human become zombie [0-no // 1-yes] zp_seffects_moan "30.0" // Time between emission of a moan sound from a zombie zp_seffects_groan "5" // The probability that a groan sound will be emitted from a zombie when shot/burn. [100 = 1% chance // 50 = 2% chance // 1 = 100% chance] zp_seffects_burn "1" // Emit a burn sound when a zombie on fire [0-no // 1-yes] zp_seffects_death "1" // Emit a death sound when a zombie dies [0-no // 1-yes] zp_seffects_footsteps "1" // Emit a footstep sound when a zombie walks [0-no // 1-yes] zp_seffects_claws "1" // Emit a claw sound when a zombie attacks [0-no // 1-yes] // ---------- zp_seffects_player_flashlight "FLASH_LIGHT_SOUNDS" // The key block for player flashlight sounds zp_seffects_player_nvgs "NIGHT_VISION_SOUNDS" // The key block for player nightvision sounds zp_seffects_player_ammunition "AMMUNITION_BUY_SOUNDS" // The key block for player ammunition sounds zp_seffects_player_level "LEVEL_UP_SOUNDS" // The key block for player levelup sounds // ---------- zp_seffects_round_start "ROUND_START_SOUNDS" // The key block for round start sounds zp_seffects_round_count "ROUND_COUNTER_SOUNDS" // The key block for round counter sounds zp_seffects_round_blast "GAMEMODE_BLAST_SOUNDS" // The key block for round blast sounds // ----------
// < ZTele > // ---------- zp_ztele_escape "0" // Allow teleport on escape modes only [0-no // 1-yes] zp_ztele_zombie "1" // Allow zombies to use ZTele [0-no // 1-yes] zp_ztele_human "1" // Allow humans to use ZTele [0-no // 1-yes] zp_ztele_delay_zombie "3.0" // Time between using ZTele command and teleportation for zombies zp_ztele_delay_human "3.0" // Time between using ZTele command and teleportation for humans zp_ztele_max_zombie "3" // Max number of times a zombie is allowed to use ZTele per round zp_ztele_max_human "1" // Max number of times a human is allowed to use ZTele per round zp_ztele_autocancel "1" // Automatically cancel ZTele if player moves out of a set boundary [0-no // 1-yes] zp_ztele_autocancel_distance "150.0" // Maximum distance, player is allowed to travel before teleport is cancelled // ----------
// < Additional settings > // ---------- zp_icon_infect "zombie_walking_csgo" // The infection icon name (This icon will be automatically precache) (Custom icons should be in equipment folder. Look here: 'materials/panorama/images/icons/equipment/*.svg') zp_icon_head "1" // Headshot icon on the infection [0-no // 1-yes] zp_blast_time "3.6" // Delay before blast (after round end) zp_weapons_remove "1" // Automatic removal of dropped weapons after gamemode starts [0-no // 1-yes] zp_knockback_air "0.75" // Multiplier for knockback reduction when victim off the ground // ---------- zp_pickup_range "125.0" // The distance a player can be to allow pickup non-pickupable weapons zp_pickup_level "1" // Allows to pickup weapons only when player has the required level zp_pickup_online "1" // Allows to pickup weapons only when online amount more or equal to the required limit zp_default_melee "fists" // The default melee weapon which gives to human after dropping the last knife // ---------- mp_roundtime "5" // Time of round mp_round_restart_delay "7.0" // Delay after round end // ---------- mp_teamname_1 "HUMAN" // Name of CT team mp_teamname_2 "ZOMBIE" // Name of TE team // ----------
_____________________________________________
Modification use some virtual addresses and offsets ../csgo/addons/sourcemod/gamedata/plugin.zombieplague
// Sigs from the lib ( https://forums.alliedmods.net/showthread.php?t=309074 ) // You can update them only by yourself using tutorial in the link "Signatures" { "CreateInterface" { "library" "engine" "windows" "@CreateInterface" "linux" "@CreateInterface" } "Find_Server" { "library" "server" "windows" "\x4D\x5A" }
/* * Info: Every custom particle precached during a map is not removed from precache table on the map end. * Then, if a lot of maps that uses custom particles are running in my server the precache table will be filled * and the custom particles used on the next maps will not show right but erros will appear in their place. */ "CParticleSystemDictionary::~CParticleSystemDictionary" // Str: "CParticleSystemMgr::InitAttributeTable has an out-of-date attribute list! (element %d not set up)\n" | "CParticleSystemMgr::InitAttributeTable" -> "CParticleSystemMgr::CParticleSystemMgr" -> "CParticleSystemMgr::~CParticleSystemMgr" { "library" "server" "windows" "\x55\x8B\xEC\x51\x56\x57\x8B\xF9\x33\xF6\x8B\x47\x58" "linux" "\x55\xBA\x2A\x2A\x2A\x2A\xB9\x30\x00\x00\x00\x89\xE5\x31\xC0" } "CParticleSystemDefinition::ParseChildren" // Str: "DmeParticleSystemDefinition" and "children" and "preventNameBasedLookup" { "library" "server" "windows" "\x55\x8B\xEC\x83\xEC\x20\x53\x56\x57\x8B\xF9\x51" "linux" "\x55\x89\xE5\x57\x56\x53\x83\xEC\x2C\x8B\x45\x0C\xC7\x44\x24\x04" } "SV_ActivateServer" // Str: "SV_ActivateServer" { "library" "engine" "windows" "\x55\x8B\xEC\x83\xE4\xF8\x83\xEC\x0C\x53\x8B\x1D\x2A\x2A\x2A\x2A" "linux" "\x55\x89\xE5\x57\x56\x53\x83\xEC\x2C\xC7\x04\x24\x2A\x2A\x2A\x2A\xE8\x2A\x2A\x2A\x2A\xC7\x04\x24\x2A\x2A\x2A\x2A" } "CNetworkStringTable::DeleteAllStrings" // Str: "___clientsideitemsplaceholder0___" { "library" "engine" "windows" "\x56\x8B\xF1\x57\x8B\x4E\x40" "linux" "\x55\x89\xE5\x53\x83\xEC\x14\x8B\x5D\x08\x8B\x43\x40" }
Hi! I've gotten a few requests for a dhooks tutorial so I decided to write this tutorial. This is (hopefully) Part I of II (can’t promise I’ll ever get to do Part II). This tutorial will give you a basic breakdown of how to use Dynamic Hooks (While also providing other useful information!).
Note for bigger version of the images click on them!
What you need:
IDA Free 5.0+ (Used in this tutorial is 5.0 Free. Normally I use 6.X)
linux_vtable_dump.idc
Downloads: IDA Free 5.0 Download link is at the bottom of the page. Install before proceeding. linux_vtable_dump.idc To save this file either click the link then right click and click Save As. Or Right click the link and click Save As. Save the file in the idc folder where you installed IDA.
Default on x86: C:\Program Files\IDA\idc
Default on x64: C:\Program Files (x86)\IDA\idc Notepad ++ This isn’t a requirement.
Now that you have everything installed grab a copy of the server.so for your game. Normally this will already download when you install a server. If it does not download you can force it by forcing hldsupdatetool to download the linux binary. To do so just add "-linux" to the game param when using the hldsupdatetool. For example to download the linux binaries for CS:S I would use these options.
Now that you have the server.so, launch IDA and open the server.so file. It should something like this. I usually like to keep a cleaner workspace so I close most of the tabs so it looks like this :P
After opening the file it will take a while to analyze (On 5.0 it takes about 45 minutes while 6.0 is about 10-20) But we can finish setting everything up while we wait! Let’s start by enabling the opcodes on each line. This isn’t as useful for this but is for finding signatures. Click on Options->General. This will bring up a box like below. Change "Number of Opcode bytes" to 10. Next (Note I only had to do this on 5.0 Free but you can check it on all versions) Click on Options->Demangled Names. This will bring up a box like bellow. Make sure that "Assume GCC v3.x names" is checked. If it is not, check it.
Now wait for the analysis to finish after it is complete the window will go into graph view to get out of graph view hit the space bar.
For this tutorial I will be hooking CCSGameRules::GoToIntermission(void). Click inside the "Function Names" box and press ALT+T to bring up the search. Search for GoToIntermission and double click the function. It should look something like
Click on the function name inside the IDA View-A and press CTRL+X to bring up the xrefs window. You should get something like this.
This function only exists on the CCSGameRules vtable which makes it easy. Double click it to go to the vtable. This should look something like this.
Make sure you are clicked within the vtable you want. Now click File->IDC File (or File->Script File in 6.0) and select the linux_vtable_dump.idc file.
By default the input will be 1, CHANGE IT TO 0 this will dump the linux values. Click ok and save the file somewhere (with a useful name like the vtable's name) This is how mine looks.
For windows anything before the destructor (~Classname method) is the same as on linux. After that it will be -1. As we can see the Destructor is at offset 13 so 0-12 are the same offset in windows. Everything after is -1 in windows. So since the linux offset is clearly higher than 13 we subtract one and get an offset of 146 for windows.
In some cases your function will be what is known as an overloaded function. For example the KeyValue functions on CBaseEntity.
Overloaded functions are functions with the same name but different parameters. For overloaded functions the rule from above still applies but the order is reversed (The first set of offsets is windows while the second line is linux in the code above). So if you want the first function, you would get the offset for the last one and apply the -1 rule if needed! With these rules you should be able to find most offset. There is however some classes where the offsets still vary for other reasons and I will go into detail on how to get them from the windows binary in part II of the tutorial.
Now on to the plugin! As you can see the return type is not given but the params are. To get the return value you can either think of what would make sense to be returned or use hex rays and the paid version of IDA to find out more info (still not always guaranteed to be correct). I happen to know that this returns an int :P
Let’s start by creating our gamedata file.
// int CCSGameRules::GoToIntermission(void) new Handle: hGoToIntermission; public OnPluginStart() { new Handle:temp = LoadGameConfigFile("test.games");
if(temp == INVALID_HANDLE) SetFailState("Why you no has gamedata?");
new offset = GameConfGetOffset(temp, "GoToIntermission");
if(offset == -1) SetFailState("Failed to get offset");
CloseHandle(temp);
hGoToIntermission = DHookCreate(offset, HookType_GameRules, ReturnType_Int, ThisPointer_Ignore, GoToIntermission); } public OnMapStart() { //Hook Gamerules function in map start //Set post to true since we don’t plan to block! DHookGamerules(hGoToIntermission, true); } //Since this is set to ignore remove the this param and since it has no params remove the params param // public MRESReturn: GoToIntermission (this, Handle:hReturn, Handle:hParams) to like so. public MRESReturn:GoToIntermission(Handle:hReturn) { PrintToServer("Going to intermission");
return MRES_Ignored; }
Compile and that is all there is to it! Hope this tutorial was useful and encourages people to use DHooks :D and get people more comfortable with IDA and vtable offsets. Feel free to correct me on anything that i might be wrong on.
Credits:
asherkin - Providing a better explanation of how -1 works on windows.
:fox:
_____________________________________________
Quote:
Originally Posted by blacklagoon
There's a plugin named bindiff for IDA, it will basically do a difference of the binaries, and show you what matched old functions symbols in a new tab.
Then you basically can do how Dr!fter does it.
NOTE: Download the old.soof CS:GO with proper nameshere
_____________________________________________
Quote:
Originally Posted by hmmmmm
I'll go through this one and try to explain how I did it, but only because it isn't as straightforward as most functions are with strings where you can directly search for inside the function. One thing that you need to understand however is that there isn't just "a way" to find the functions you're looking for. Think of it as a puzzle where all the function names are gone and you need to use your head to find out where the function you're looking for is. More often than not this is done with strings since they are the easiest to find, but it can also be done in other ways, for example using references to globals or using the vtable.
The easiest way to do this in CS:GO is to find an old binary that has symbols so you can easily find the function. You can find CS:GO binaries with symbols here: https://users.alliedmods.net/~asherk.../csgo_symbols/
In this example I'll use server.so to find the functions, then use the info I get from there to find them in an up-to-date server.dll where I'll get the signature.
So to start you open the server.so file with symbols and then click File->New Instance to open the server.dll simultaneously in another window and wait for the autoanalysis to finish. We'll be working out of server.so from here on and only using server.dll in case we need to check things. Click View->Open Subviews->Names to open the Names window. Do the same to open the Strings window. To keep things clean you can close all windows except for IDA View, Names window and Strings window, they're (usually) all you need.
I'll also be using IDA Pro which has the pseudocode view, but that isn't a must. You can find all the strings and info you need in the assembly view but it might be a bit harder to navigate. To open the pseudocode view, go to the IDA view and press Tab. You can press it again to switch back.
Next, open the Names window and press Ctrl+F to do a search for the function you want. In this case I'll do a search for CBaseAnimating::GetAttachment. This specific function has about 5 different overloads, each with a different set of parameters. Looking at the thread you linked, Pelipoika seems to use the one that takes (char *, Vector &, QAngle &) so double click on that one to go into it. Should look something like this:
The first thing you should be looking for is strings so that you can identify the function, but clearly this function doesn't have any so we'll have to find another way to do this. To do this we'll find cross-references to the function and try to find something to go off of from there. Cross-references (or xrefs for short) are places where the function or variable or string are referenced. For example if function X was used in functions Y and Z, the xrefs for X would show me Y and Z. IDA lets you see the xrefs by pressing your 'X' key on a function, variable or string. Finding xrefs is one of the tools you'll use the most in IDA so try to remember it and understand it. Let's try to use it on the CBaseAnimating::GetAttachment function.
Open the first function and you'll find that there are lots of strings that we can use here. In fact CBaseAnimating::GetAttachment is called with a string "Muzzle".
To make sure this string is unique and can be used to easily find our function, press X on it to see the xrefs. You'll see it is only used twice and both times with the GetAttachment function, so this string should work fine. Let's switch over to server.dll and open the Strings window to do a quick search for "Muzzle".
Unfortunately our "Muzzle" doesn't show up. You might think that the top result "muzzle" is the same, but the casing matters and if you look at the xrefs you'll see it's used in a different function. We still have a lot of other xrefs to GetAttachment we can look at so let's look for others in server.so again. After skimming through the list I found that it's used in CBaseServerVehicle::GetPassengerExitPoint (second last function) with the string "vehicle_driver_exit" which has only 1 xref, so it's unique. Once again, switch over to server.dll and do a string search for "vehicle_driver_exit".
There's only 1 result, so double click on it to go to it. IDA will take you to the rdata section which looks like this:
To find where the string is used click on aVehicleDriverE and press X. There's only 1 xref, go to it.
This should look familiar, it's the same CBaseServerVehicle::GetPassengerExitPoint function from server.so but without symbols. For comparison this is what it looks like in server.so with symbols.
Clearly sub_101A50D0 is CBaseAnimating::GetAttachment. To make things clearer, press N on it to rename it. This will also let you find it easily in the future in case you need it again. Now all you have to do is use the makesig.idc script (replace dtyp with dtype in the script if it fails on IDA 7 for you).
This generates the signature:
\x56\x04\x85\xC0\x74\x2A\x8B\xCF\xE8\x2A\x2A\ x2A\x2A\x8B\x8F\x9C\x04\x00\x00\x85\xC9\x74\x 2A\x83\x39\x00\x74\x2A\x8B\x55\x08
A similar process can be used to find LookupAttachment, try to find it yourself. Hope this helps.
_____________________________________________
Also, admin and vip module integrated into the mod.
Group information:
Spoiler
PHP Code:
Groups { /** * Allowed properties for a group: * * "flags" - Flag string. * "immunity" - Immunity level number, or a group name. * If the group name is a number, prepend it with an * '@' symbol similar to admins_simple.ini. Users * will only inherit the level number if it's higher * than their current value. */ "Default" { "immunity" "1" }
"[Admin]" { /** * You can override commands and command groups here. * Specify a command name or group and either "allow" or "deny" * Examples: * ":CSDM" "allow" * "csdm_enable" "deny" */ Overrides { } "flags" "abcdefghijklmnzopqrst"
/* Largish number for lots of in-between values. */ "immunity" "99" }
"[VIP]" { /** * You can override commands and command groups here. * Specify a command name or group and either "allow" or "deny" * Examples: * ":CSDM" "allow" * "csdm_enable" "deny" */ Overrides { } "flags" "o"
/* Largish number for lots of in-between values. */ "immunity" "98" } }
_____________________________________________
Either manage the database for money/level/exp/skin/weapon/zombie/human.
Database information:
Spoiler
Open database config ..addons/sourcemod/configs/databases.cfg
Edit "zombiedatabase" table.
You can use MySQL or SQlite database for money, level/exp, costumes, rebuy, and human/zombie class.
You must fill out the driver, host, database, user, and pass fields.
If you do not need a field, use empty quotation marks as the value ("")
More information here
_____________________________________________
Finally, manage the config constructor for any kind of customizations.
Config information:
Spoiler
So all custom configs are in the 'maps' folder.
Where the hierarchy of folders for loading is like that
Example:
So you have a map ze_italy
You create two folders ze_ & ze_italy
1.ze_:
classes.ini
menus.ini
2.ze_italy:
weapons.ini
menus.ini
So which configs will be loaded then on ze_italy map ? Answer:
classes.ini [from ze_]
weapons.ini [from ze_italy]
menus.ini [from ze_italy]
NB: Rest of configs will be loaded from the default folder!
To make ZP suitable for ze maps:
I removed all game modes, except multi and enable escape feature. (zombies will be sent respawn)
Removed all zombie classic types and make all zombie have a custom class type. (same one) So players wouldn't be able to choose classes and all zombie will be randomly chosen.
Removed zombie class menu from the menus.ini config.
Changed zombie class types in weapons and removed non existing class types
Finally, changed default zombie type for gamemodes.ini
zp_debug - Prints debugging dump info the log file. zp_config_menu - Opens the config reload menu. zp_config_reload - Reloads a config file. Usage: zp_config_reload <file alias> zp_config_reloadall - Reloads all config files. Usage: zp_config_reloadall zp_log_list - List available logging flags and modules with their status values. zp_log_add_module - Add one or more modules to the module filter. Usage: zp_log_add_module <module> [module] ... zp_log_remove_module - Remove one or more modules from the module filter. Usage: zp_log_remove_module <module> [module] ... zp_class_dump - Dumps class data at a specified index. Usage: zp_class_dump <index|name> zp_money_give - Gives the money. Usage: zp_money_give <name> [amount] zp_level_give - Gives the level. Usage: zp_level_give <name> [amount] zp_exp_give - Gives the experience. Usage: zp_exp_give <name> [amount] zp_ztele_force - Force ZTele on a client. Usage: zp_ztele_force <client> zp_ztele_menu - Opens the teleport menu. zp_class_menu - Opens the classes menu. zp_mode_menu - Opens the modes menu.
Client commands:
PHP Code:
'Generic' zmenu - Opens the main menu. zrebuy - Changes the rebuy state. zitem - Opens the extra items menu. zzombie - Opens the zombie classes menu. zhuman - Opens the human classes menu. zcostume - Opens the costumes menu. zpistol - Opens the pistols menu. zshotgun - Opens the shotguns menu. zrifle - Opens the rifles menu. zsniper - Opens the snipers menu. zmach - Opens the machineguns menu. zknife - Opens the knifes menu. zdonate - Opens the donates menu. zequip - Opens the equipments menu. zstuck - Unstucks player from the another prop. ztele - Teleport back to spawn. 'Unique' zp_version - Prints version info about this plugin. zp_money_donate - Donates the money.
_____________________________________________
Buttons:
PHP Code:
'B' - open a weapon menu. 'F3' - open a main game menu. 'F4' - use a human/zombie skill. 'F' - switch flashlight, if you are human or nightvision, if you are a zombie. (+lookatweapon) '.' or '/' - buy ammunition. 'CTRL' + 'SPACE' - do the leap jump. Do not move and press any button - for recovering HP, if you class has feature.
Extract everything from (.zip) to your server's cs:go folder.
Always change all files when you update to a newer version.
Better to install modification on the clear server.
name: The caption to display on the menu. (Only will be taken from translation file)
--------------- info: The caption to display in the hint. ['' = off] (Only will be taken from translation file)
--------------- entity: The entity name of a weapon refered to. (Look here: https://developer.valvesoftware.com/...nsive_Entities)
--------------- group: The admin group to access to buy a weapon. ['' = all users]
--------------- class: The class types which had access to buy/use a weapon. ['human'/'zombie' = default type | 'any' = custom type | '' = all types] - in the string divided by ',' from classes.ini
--------------- cost: The price of this weapon. ['0' = off any messages and weaponcost from menu]
--------------- slot: The slot name of a weapon resides in. ['pistol' | 'shotgun' | 'rifle' | 'sniper' | 'machinegun' | 'knife' | 'equipment' | 'custom']
--------------- level: The level which had access to buy a weapon. ['0' = off]
--------------- online: The number of players which require to buy a weapon. ['0' = off]
--------------- limit: The level which had access to buy a weapon. ['0' = off]
--------------- damage: The damage multiplier for a weapon. ['0.5' = half damage | '2.0' = double damage]
--------------- knockback: The knockback value for a weapon. ['30.0' = normal knockback | '200.0' = high knockback] (For a victim)
--------------- clip: The amount of ammo clip in a weapon. ['0' = default] (Amount of armor for an item)
--------------- ammo: The amount of ammo reserve in a weapon. ['0' = default] (Amount of grenades for default entities, check: 'ammo_grenade_limit_*')
--------------- ammunition: The clip price of a weapon. ['0' = off]
--------------- drop: Enables drop posibility.
--------------- speed: The delay between shoots of a weapon. ['0.0' = default | '-1.0' = instant]
--------------- reload: The duration of reload for a weapon. ['0.0' = default | '-1.0' = instant]
--------------- deploy: The duration of deploy for a weapon. ['0.0' = default | '-1.0' = instant]
--------------- sound: The attack sound block. ['' = default] (Block from 'sounds.ini' config)
--------------- icon: The kill icon name. ['' = default] (This icon will be automatically precache) (Custom icons should be in equipment folder. Look here: 'materials/panorama/images/icons/equipment/*.svg')
--------------- view: The view model path. ['' = default] (This model files/textures will be automatically precache)
--------------- world: The world model path. ['' = default] (This model files/textures will be automatically precache)
--------------- dropped: The drop model path. ['' = default] (This model files/textures will be automatically precache) (Also set on the player's back and on the grenades' projectile entity) (Not work on melee throw yet)
--------------- body: The view/world/drop/projectile model body index. ['0 0 0 0' = default]
--------------- skin: The view/world/drop/projectile model skin index. ['0 0 0 0' = default] (Skins not work at world models)
--------------- muzzle: The particle name of a muzzle effect. ['' = none] (Only work on "1" attachment on view model)
--------------- shell: The particle name of a shell effect. ['' = none] (Only work on "2" attachment on view model)
--------------- heat: The delay of a custom muzzle smoke effect. ['0.5' = default] (Only work on "1" attachment on view model)
NOTE: Names must be a unique. NOTE: To remove weapon case just delete whole block! NOTE: Name/info will be taken from translation file. (only low cases) NOTE: Mod will be precached all model files/textures/sound automatically!
SUPPORT: any weapon_*, weapon_c4, weapon_knife_t, weapon_fists, weapon_knife_ghost, weapon_axe, weapon_hammer,
name: The caption to display on the menu. (Only will be taken from translation file)
--------------- group: The admin group to access menu. ['' = all users]
--------------- class: The class types which had access to menu. ['human'/'zombie' = default type | 'any' = custom type | '' = all types] - in the string divided by ',' from classes.ini
--------------- hide: Hide the menu if not have a group/class access.
--------------- command: The console (chat) command to open menu. ['' = disabled]
--------------- submenu: The subkey with the same structure, used when command is disabled.
NOTE: Names must be a unique. NOTE: To remove menu case just delete whole block! NOTE: Name will be taken from translation file. (only low cases) NOTE: Main keys support only one submenu! NOTE: Checks of group/class will be automatically generated!
_____________________________________________
Hitgroups loading from ../sourcemod/zombieplague/hitgroups.ini
For additional information see include/zombieplague/hitgroups.inc
Look at the default hitgroup case in that file for an example.
name: The hitgroup name.
--------------- index: The hitgroup index.
--------------- damage: Enables damage to be done on this hitgroup.
--------------- knockback: The knockback multiplier for this hitgroup.
--------------- armor: The damage multiplier for the armor.
--------------- bonus: The each point of armor is work '1/x' points of the health.
--------------- heavy: The damage multiplier for the heavy suit.
--------------- shield: The damage multiplier for the shield.
--------------- protect: Allow armor fully protect health from the infection damage.
_____________________________________________
Classes loading from ../sourcemod/zombieplague/classes.ini
For additional information see include/zombieplague/classes.inc
Look at the default classes case in that file for an example.
name: The caption to display on the menu. (Only will be taken from translation file)
--------------- info: The caption to display in the hint. ['' = off] (Only will be taken from translation file)
--------------- type: The class type. ['zombie'/'human' = default type] (Only will be taken from translation file)
--------------- zombie: States the zombie type. ['' = not used for default types]
--------------- model: The player model path. ['' = default] (This model files/textures will be automatically precache)
--------------- claw_model: The knife model path. ['' = default] (This model files/textures will be automatically precache)
--------------- gren_model: The grenade model path. ['' = default] (This model files/textures will be automatically precache)
--------------- arm_model: The arm model to be used on standart weapons. ['' = default] (This model files/textures will be automatically precache)
--------------- body: The view model body index on custom weapons. ['-1' = off] (If disabled then indexes will be taken from the current weapon)
--------------- skin: The view model skin index on custom weapons. ['-1' = off] (If disabled then indexes will be taken from the current weapon)
--------------- health: The health points.
--------------- speed: The speed multiplier. ['1.0' = standart speed | '2.0' = double speed]
--------------- gravity: The gravity multiplier. ['0.1' = low gravity | '2.0' = high gravity]
--------------- knockback: The knockback multiplier. ['1.0' = standart knockback | '2.0' = double knockback]
--------------- armor: The armor on the spawn. ['0' = off]
--------------- level: The level which had access to choose a class. ['0' = off]
--------------- group: The admin group to access to buy a weapon. ['' = all users]
--------------- duration: The duration amount for a skill. ['0.0' = instant]
--------------- countdown: The countdown amount for a skill. ['0.0' = instant] (If both parameters disabled will off skill)
--------------- bar: Enables duration bar.
--------------- regenerate: The regenerating health. ['0' = off]
--------------- interval: The regenerating health interval. ['0.0' = off]
--------------- fall: Enables fall damage.
--------------- spotted: Enables spotting on the radar. (for enemies only)
--------------- fov: The field of view value. ['' = default].
--------------- crosshair: Give and turn on the crosshair.
--------------- nvgs: Give and turn on the nightvision. ['' = only overlay] (If disabled with overlay, flashlight will work instead)
--------------- overlay: The nightvision overlay path. ['' = default nightvision] (This material files/textures will be automatically precache)
--------------- weapon: The default weapons. ['jump bomb, zombie claw, ...'] = in the string divided by ',' from weapons.ini
--------------- money: The kill/damage/infect&humanize/win/lose/draw bonus money. ['0, 0, 0, 0, 0, 0' = off]
--------------- experience: The kill/damage/infect&humanize/win/lose/draw bonus experience. ['0, 0, 0, 0, 0, 0' = off]
--------------- lifesteal: The health gaining with each infection/killing. ['0' = off]
--------------- ammunition: The type of an ammunition. ['0' = off | '1' = BP ammunition | '2' = clip ammunition]
--------------- leap: The type of a leap. ['0' = off | '1' = enabled | '2' = only if a single player]
--------------- force: The force multiplier.
--------------- cooldown: The cooldown between leap uses.
--------------- effect: The name of an infect effect. ['' = off]
--------------- attachment: The attachment of an infect effect. ['' = center position]
--------------- time: The time of an infect effect.
--------------- death: The death sound block. ['' = off] (Block from 'sounds.ini' config)
--------------- hurt: The hurt sound block. ['' = off] (Block from 'sounds.ini' config)
--------------- idle: The idle sound block. ['' = off] (Block from 'sounds.ini' config)
--------------- infect: The infect sound block. ['' = off] (Block from 'sounds.ini' config)
--------------- respawn: The respawn sound block. ['' = off] (Block from 'sounds.ini' config)
--------------- burn: The burn sound block. ['' = off] (Block from 'sounds.ini' config)
--------------- attack: The attack sound block. ['' = off] (Block from 'sounds.ini' config)
--------------- footstep: The footstep sound block. ['' = off] (Block from 'sounds.ini' config)
--------------- regen: The regen sound block. ['' = off] (Block from 'sounds.ini' config)
--------------- jump: The leap sound block. ['' = off] (Block from 'sounds.ini' config)
Description of models:
Spoiler
This is quite obviously against the stated rules and will very likely get your server banned if reported even if it doesn't currently trigger the automatic detections.
Valve Model, Valve Texture = No. Valve Model, Custom Texture = No. Custom Model, Valve Texture = No. Custom Model, Custom Texture = Appears to be OK currently.
Also, check model, it must have all animations like CS: GO knife.
NOTE: Core play all animations from models by itself, so order not important now, except theDrawanimation
Working example of claws
Spoiler
Wrong example of claws
Spoiler
Working example of player
Spoiler
NOTE: Download Counter Strike: Global Offensive SDK and use ModelViewer to check models in your game directory!
NOTE: To remove class case just delete whole block! NOTE: Names/types must be a unique. NOTE: To remove class case just delete whole block! NOTE: Name/info/type will be taken from translation file. (only low cases) NOTE: Mod will be precached all model files/textures/sound automatically! NOTE: Uniqie classes will be choose randomly, exept 'zombie'/'human'! NOTE: All parameters works for all classes, exept 'zombie','infect'!
_____________________________________________
Gamemodes loading from ../sourcemod/zombieplague/gamemodes.ini
For additional information see include/zombieplague/gamemodes.inc
Look at the default modes case in that file for an example.
name: The gamemode name. (Only will be taken from translation file)
--------------- desc: The description to display in the dhud. ['' = off] (Only will be taken from translation file)
--------------- color: The color of the description. ['255 255 255 255' = white]
--------------- position_X: The X coordinate, from 0 to 1. -1.0 is the center. ['-1.0' = center]
--------------- position_Y: The Y coordinate, from 0 to 1. -1.0 is the center. ['-1.0' = center]
--------------- time: The description time on the screen. ['0.0' = off]
--------------- chance: The chance in 1 in X. ['0' = default]
--------------- min: Minimum players required to the start. ['0' = off]
--------------- ratio: The infect ratio. ['0.0' = single zombie | '1.0' = all zombies except one player] (zombie count = player count * infect ratio)
--------------- health: The additional health to the first zombies. ['0' = off] (health = player count * health ratio)
--------------- group: The admin group which had access to start a mode. ['' = all users]
--------------- start: The start sound block. ['' = off] (Block from 'sounds.ini' config)
--------------- end_human: The zombie win sound block. ['' = off] (Block from 'sounds.ini' config)
--------------- end_zombie: The human win sound block. ['' = off] (Block from 'sounds.ini' config)
--------------- end_draw: The draw sound block. ['' = off] (Block from 'sounds.ini' config)
--------------- ambient: The ambient sound block. ['' = off] (Block from 'sounds.ini' config)
--------------- duration: The duration of the ambient sound.
--------------- volume: The volume of the ambient sound. ['0.1' = low volume | '1.0' = max volume]
--------------- infect: Allow infection during round.
--------------- respawn: Allow respawning during round.
--------------- humanclass: The type of the default human class. ['human' = default type | 'any' = custom type]
--------------- zombieclass: The type of the default zombie class. ['zombie' = default type | 'any' = custom type]
--------------- overlay_human: The human win overlay path. ['' = disabled] (This material files/textures will be automatically precache)
--------------- overlay_zombie: The zombie win overlay path. ['' = disabled] (This material files/textures will be automatically precache)
--------------- overlay_draw: The draw overlay path. ['' = disabled] (This material files/textures will be automatically precache)
--------------- deathmatch: The respawn as: ['0' = zombie | '1' = human | '2' = randomly | '3' = balance]
--------------- amount: The amount of respawns after death. ['0' = off]
--------------- delay: The delay before respawning. ['0.0' = instant]
--------------- last: Allow to respawn players if only the last 'n' players is alive. ['0' = off]
--------------- suicide: Allow to respawn players if they suicided.
--------------- escape: Enables respawn on the first infection. (zombie escape feature)
--------------- xray: Enables custom x-ray for viewing through walls.
--------------- regen: Enables restoring health, when zombie don't moving.
--------------- skill: Allow to use skills.
--------------- leapjump: Allow to use leapjumps.
--------------- weapon: Allow to buy weapons for humans after gamemode starts.
--------------- extraitem: Allow to buy extraitems for humans after gamemode starts.
NOTE: Names must be a unique. NOTE: To remove mode case just delete whole block! NOTE: Name/desc will be taken from translation file. (only low cases) NOTE: Mod will be precached all model files/textures/sound automatically!
_____________________________________________
Extraitems loading from ../sourcemod/zombieplague/extraitems.ini
For additional information see include/zombieplague/extraitems.inc
Look at the default items case in that file for an example.
name: The caption to display on the menu. (Only will be taken from translation file)
--------------- info: The caption to display in the hint. ['' = off] (Only will be taken from translation file)
--------------- cost: The price of this item. ['0' = off any messages and itemcost from menu
--------------- level: The level which had access to buy a item. ['0' = off]
--------------- online: The number of players which require to buy a item. ['0' = off]
--------------- limit: The number of purchases, which allowed to buy item. ['0' = off]
--------------- group: The admin group to access to buy a item. ['' = all users]
--------------- class: The class types which had access to buy a item. ['human'/'zombie' = default type | 'any' = custom type | '' = all types] - in the string divided by ',' from classes.ini
NOTE: Names must be a unique. NOTE: To remove item just delete whole block! NOTE: Names will be taken from translation file. (only low cases)
_____________________________________________
Costumes loading from ../sourcemod/zombieplague/costumes.ini
For additional information see include/zombieplague/costumes.inc
Look at the default costume case in that file for an example.
PHP Code:
"pig head" // Name { // Model "model" "models/cso2/hats/pighead/pighead.mdl"
model: The model path.
--------------- body: The model body index.
--------------- skin: The model skin index.
--------------- attachment: The attachment used from the player model. ['' = facemask]
--------------- position: The position vector. ['0.0 0.0 0.0' = bottom] (Only work when attachment is empty)
--------------- angle: The position angle. ['0.0 0.0 0.0' = bottom] (Only work when attachment is empty)
--------------- group: The admin group which had access to select a costume. ['' = all users]
--------------- hide: Hide the model in first person view.
--------------- merge: Bonemerge of the player model.
--------------- level: The level which had access to select a costume. ['0' = off]
NOTE: Names must be a unique. NOTE: To remove costume just delete whole block! NOTE: Names will be taken from translation file. (only low cases) NOTE: Mod will be precached all model files/textures/sound automatically! NOTE: Costumes work only on humans!
_____________________________________________
Levels loading from ../sourcemod/zombieplague/levels.ini
For additional information see include/zombieplague/classes/levelsystem.inc
The levels configuration file is a list of limits for each level.
Remember that list require enabled level system on the server.
Look at the default levels in that file for an example.
Default levels blocks:
Spoiler
PHP Code:
// ================================================================================== // // ZOMBIE PLAGUE // Level configuration // // // ================================================================================== // * Each uncommented line will be used as an experience limit for each level. // * Can be possibly increase to higher number. The last number represent max level. // * List will be sorted automatically in ASC order. Limits should not repeat. // ================================================================================== // Defaults: // ----------------------------------------------------------------------------
All files loading from ../sourcemod/zombieplague/downloads.ini
The downloads configuration file is a list of files used on the server.
Remember that most of modules will automatically precache models and thier materials.
Use one line per file, with paths relative to the "csgo" folder.
The maximum length of the full string must be less than 256 symbols.
In addition, module will be precache and add to download table all types of files: (mp3, wav, mdl, vmt, vvd, dx90.vtx, pcf)
Lastly, if you want to precache the whole folder, the path must have '/' (slash) in the end.
Look at the default downloads in that file for an example.
Default download blocks:
Spoiler
PHP Code:
// ================================================================================== // // ZOMBIE PLAGUE // Downloads configuration // // // ================================================================================== // * Each uncommented line will be used as a file path for clients to download. // * Path of a folder or a file must be not more than 256 symbols per line. // ================================================================================== // Defaults: // ----------------------------------------------------------------------------
NOTE: Don't forget about main server cvars to upload files to clients: sv_allowdownload, sv_downloadurl, sv_allowupload
_____________________________________________
All sounds loading from ../sourcemod/zombieplague/sounds.ini
For additional information see include/zombieplague/sounds.inc
The sounds configuration file is a list of sounds used on the server stored in key/value format.
The sounds listed in this file are also precached when on the map load.
You can add more sounds, in format "sound1", "sound2", "sound3"...
The maximum length of the full string must be less than 256 symbols.
You also can use that sounds by ZP_EmitSoundKeyID and ZP_GetSoundKeyID native functions in any other plugin.
Look at the default sounds in that file for an example.
Default sounds blocks:
Spoiler
PHP Code:
// ================================================================================== // // ZOMBIE PLAGUE // Sounds configuration // // // ================================================================================== // * All sounds will be automatically precache to server and all connecting clients. // * Maximum length of the each string, must be not more than 256 symbols per line. // * Can handle multiple same unique keysand system will randomly extract keys. // ================================================================================== // Defaults: // ----------------------------------------------------------------------------------
//********************************************************************* //* PLAYER SOUNDS * //*********************************************************************
Community of AlliedMods (For ideas and testing) Kuristaja - All player models was port and fix by him. You can ask him here: Steam.Page napas - All weapon models was port by him. You can ask him here: Steam.Page [CZE] мя. ξмıиεм - All weapon models was fix by him. You can ask him here: Steam.Page Greyscale and Richard Helgeby - Some useful modules and structures. inklesspen - Some important help with tests. Counter-Strike: Online 2 - Materials, sounds and models. Core.Page
If there are any bugs, please report them in this topic.
The version can have many of them, due to a huge amount of changes and lack of tests.
The number of natives and forwards allow making any gamemode changes throw the addons.
The best advice is just don't try to modify the core's sourcecode and be a flexible for the future updates.
-Version: X.040 Stable (December 03 2020)
* Fix Issue #20 (Invalid client index for OnDeploy forward)
* Replace spaces by tabs for all sourcecode
* Change some misleading file extentions
* Updated sigs
* Replace SetProgressBarTime sig by offset
-Version: X.038 Stable (May 06 2020)
* Fix with money give glitch
* Fix with money back after antidote
-Version: X.037 Stable (March 26 2020)
* Fix with gamemode start bug
* Fix with precaching default textures
-Version: X.036 Stable (February 20 2020)
* Fix with grenade modes message
* Weapons which spawn by map will not removed, they will use weapon.ini properties from the head of list
* Added weapon by all for rebuy menu on the first pos
* Decrytor of textures will write model name in logs which caused 'Invalid material path'
* Weapons which are dropped on ground by player will be removed (m_bIsAutoaimTarget store the buyed state of a weapon)
* Gamemodes weapon and items props which block to buy after round start, work only for humans now
* Turret rotate info will be printed on any it's (weapon controller) deploy
* Cvars for shake color on infection and healing for zombies
* Many new cvars for simple veffects
* Add support of ammo (count) for grenades weapons
-Version: X.035 Stable (February 09 2020)
* Fix with 0 cost in zmarket system
* Knockback system changes (Knockback not depend on damage)
* Weapons knockback now is value not a multiplier
* New cvars for knockback reduction in air
* Movement Unlocker by Peace-Maker included in core for CS:S style knockback
* Added ZTele module from zr + new cvar and ability to on/off on escape rounds
* All user commands remaked to small ones
* New ZTele menu for admin system
* Now database use account id insead of steam id, it will automatically update your old database for it on the first start
* Zombies are not will be infected two times in row, data will be stored by userid
* New randomizing way for the gamemodes module
* Small fix in fire function which might cause errors
* Fix with knifes rebuy, when drop is blocked (knifes will be removed from inventory then)
* Added knife ghost to utils list
* Knife ghost removed, because it cause errors of missing textures
* Now knife gg is default weapons for survivor and sniper by default
-Version: X.034 Stable (January 21 2020)
* CreateEvent handle now close correctly
-Version: X.032 Stable (January 16 2020)
* Remove ptah dependency fully
* Now can work on stable sm and mm builds
* Fix with money bug which allow to buy without limit in buy system
* Reduce screen kickback on wattercannon and janus7
-Version: X.031 Stable (January 09 2020)
* Fix of bugging idle animation in viewmodel system
-Version: X.030 Stable (January 08 2020)
* Fix for windows
* Core can work on classic dhook version
-Version: X.029 Stable (January 08 2020)
* Updates some sigs for Linux
* Fix tripwire mode (Thanks to b1gbear)
* Damage module forwards changes + new post damage forwards
* Fix with color bugs in hints, regards to Phoenix
* Added arms fix, regards to Kxnrl
* Fix with airburster and balrog1 shooting animation
* Changes in lasermines static mode, laser hits through all zombies
-Version: X.027 Stable (August 03 2019)
* Fix with dropped weapon entities (now all custom works like standard ones)
* Fix with some unclosed traces in weapon addons
* Added new cvars for weapon level system
* Fix with the speed reduction after heavy suit is broken
-Version: X.026 Stable (July 11 2019)
* Fix with lasermines, airdrop memory leak caused by non-deleteing array handle
* Removed solid from airdrop emitter
-Version: X.024 Stable (June 21 2019)
* All weapons fix (ZP_SequenceDuration removed because of the xmm reg on windows)
* Fix with costumes on loading when it disabled
* Balrog11 fix model
-Version: X.023 Stable (June 20 2019)
* Added proper solid check for mines and airdrop emitter
* Fix with costumes selection when costumes are disabled
* Improved dropping on weapon give
* Windows not supported officially now
* Showing armor bug fix
-Version: X.022 Stable (June 17 2019)
* Fix of outranged value for janus-11 spread
* Added ptah link for windows
* Turret upgrade fix with stuck inside when model changed
* Fix with grenade list array
* Replaced channel from static to weapon for weapons idle sounds
* Frezee time added randomizing for optimisation
-Version: X.020 Stable (June 16 2019)
* Fix of invalid addresses for Windows in present gamedata
* Added button to remove the costume
-Version: X.019 Stable (June 16 2019)
* Airburster end attack fix
* Deploy animatition fix
* Sky cvar fix
* Fire will be extinguish on antidot
* Set Animation for players fix by adding sig
* Fix with back weapon models on spectator team change
* Fix with remove all weapons function
* Add option to load/unload all addons
* Map load native
* Added shield and mp5sd and bumbmine
* Add missing sounds for armor
* Add support of any weapons for any future updates
* Added dynamic loading ini configs for any maps or map prefixes
* Replace all GetEntData* by GetEntProp*
* Fix with animation enums
* Added PTah extension function, now core able to spawn any weapons
* Weapons entities names removed, defindex used instead
* FireBullets work from PTah on windows and linux normally
* Levelsystem config load faster , string converting removed
* New config module load types
* Fix chainsaw particle effect
* Added new tranlations
* Fixed some russian translation
* UseOutput replaced by separate hooks
* Damage fix for some addons, ZP_TakeDamage was returned
* Fix with sdktools missing include
* Lasermines touchOutput replaced by hook
* HUD bar replaced by progress bar for skill system
* Added optional solidicity to lasermines (with new TR_EnumerateEntitiesHull's)
* Improved block of secondary attack on all melee and fists weapons
* Fix with lasermine damage function (replaced by delay)
* New sfsniper viewmodel to avoid quick reload with fast re-deploy
* Added invisible hands (subbody) for grenade and claws on invible class when invis is active
* Shield can be dropped
* Added support of shield's custom weaponmodels (on the players back)
* Fix parenting of the health sprite
* Shield become unbreakable
* Shield will bounce grenade on attack
* Added shield multiplayer for hitgroups.ini
* Added drill draw animation into code to avoid bug
* Fix with toss which can crash [CS_WeaponDrop]
* Default weapon cvar load on map start, compability with config constructor
* Fix with idle sounds for 10 weapon models and moved them into code
* Fix some weapon pisitions thanks to 'Crazy Boy' for help
* Added progress bar for jetpack
* New etherial, sfsniper, sfpistol, balrog3, sgdrill, skull1, airburster, M134 code (fully custom weapons now)
* Breachcharge will drop on the death
* Added armor info into damage message if armor > 0
* Added new languages in translation file
* Added presents addon which work on maps with nav files
* Added glowing for cases in presents and airdrop addon, each box have unique color
* Class invisible will increase it's alpha while moving fast
* Trap fix, will be visible for human while it activate
* Added zoom for sfsniper
* Fist are fully custom weapon to avoid bugs with force drop + added balrog9 sounds to fists
* Stamper coffin will slow humans in radius
* Coffin will play idle sound
* Fix damage for lasermine and turrets
* Removed snd_setsoundparam because Valve delete it
* Changed burn slow code by stamina thing
* Knockback system can be replaced by stamina slowdown feature
* Added donate command for normal players. Works similar to menu.
* Added janus activate info message
* All code refactoring
* Fix with inferno death icon
* Fix footsteps sounds on none movetype
* Added turrets upgrade and knockback rework + new upgrade sounds
* Added grenade modes (6 different modes using with R to switch)
* Fix flare model
* Added toolbox model for turret
* New install system for turret, second button used to rotate turret
* Added gibs for turret
* New forward post weapon drop
* Remove mine exp damage
* Instalation impromements for mines and airdrop
* Pickups turret and mine fix when owner changed class and try to pickup it
* Added decals after turret shots
* Added grenade mode info
* Damage system changes
* Make laucnher position higher for turret
* Fix with rocket submodel switch after rocket launch for turret
* 99% of extraitems move to equipment slot
* zombie and human classes & costumes store by strings in database
* Huge database changes
* Database will drop columns which not used and can update any column if it will be changed in future without workaround with db on SQLlite and Mysql
* Added new auto-buy menu for weapons which need to be customize by player + save into db
* Fix of empty cases work correct in some cases
* Add redirection case to equipment from extraintems
* C4 give removed by cvarlock
* Lasermine save hp for repickup
* Turret layer fix for after fire sequence
* Turret added rotate sound
* Added knockback for lasermine in impulse mode
* Added turret rotate info and menu info message
* Added turret control menu on R button
* Turret rotation become smooth, fix of NPCSTATE prop which cause rewrite removed
* Add spawn hull check
* Turret think and trasmit hooks become fully separate
* New jetpack (more balanced one)
* Similar soundhooks for grenade replaced by forward
* Remove player anim for airdrop weapon
* Added control menu for turret on F3
-Version: X.018 Stable (May 04 2018)
* New rebuy menu
* Fix with crash because of extraparticlestable
-Version: X.017 Stable (May 03 2019)
* Fix airdrop randomize which was block to debug
* Added dhook comp with non-detour version
* Detour's have own macros in zp_core.sp
-Version: X.016 Stable (May 02 2019)
* Heavy class trap entity improved
* Smoker, attached gas effect was remaked, now it will attach to pos of spawn
* New team check
* #emit removed
* Sfpistol model and shoot fix
* Drop dynamic stock improved
* Airdrop minor fixes with collision
* Fix self damage for turret and others
* ZP_TakeDamage removed, point_hurt used instead
* Damage system changes
* Turret got a knockback, but client not more gain money for damage appilied by them to victims (from mines is well)
* All custom damage now applied using point_hurt
* Improved Damage module
* Turret will attack NPC and chickens
* Turret rockets fix, added random skins
* Rockets are removed by bodygroup on turrets
* Airdrop some kill timers replace by inputs
* Increase def size of muzzle name using by native system up to 64
* Turret invalid sound fix
* Rockets spawn on fixed pos, because layers sometimes return invalid attachment
* When safe is open, it will spawn bag which will drop weapons on E (+use)
* New translate for bag info
* Airdrop will print lnfo only for humans
* Lasermine dropped model attachment changes for gibs
* Helicopter changes (now door should be expload only to open if)
* Helicopter drop many different cases
* Safe body (which is open) can be destoyed on +use to avoid problems with PVS
* Trains entity removed for drops, helicpter spawn phys entities
* Phys effect fix
* Fix reload for all full custom weapons (they used custom reload system)
* Fix sound for sfpistol
* Fix reload animations for custom weapons with custom reloading (near 7-8 addons)
* M32 full custom reloading added
* WeaponRunCmd will start calling after WeaponHolster & WeaponHolsterDeployPost, to avoid problems in hooks
* Line of sigth sig block , for ze maps triggers, thanks to SHUFFEN.jp
* Particles fix should work on PVS block on windows, new DHOOK required
* Particles will work on first download
* Fix with buy ammo
* All TE_DispatchEffect were replaced by info particle system entities
* Holster fix
* F18 bomber will drop bomb like a projectile object
* Added custom idle modules for some weapons, so idle state works perfect on full custom weapons
* Custom reloading act naturally + reload will execute automatically on 0 clip
* Added shell particles into the weapon module, in weapons .ini and also integrate into some fully custom weapons
* Add new native ZP_ResetSequence
* New fire bullets effect for fully custom weapons
* Added player animation stock in classes.inc
* Added player animations for fully custom weapons
* Tools module changes
* Added ZP_FireBullets native which works on Linux only
* Added zoom for m32, balrog7, balrog3, skull11 on second button
* Added empty clip sound for some custom weapons
* All weapons models was updated. Thanks to eminem
* Added new 2 natives which works with sequences
* Many custom animation delays are get from sequence durating, so many macroses in custom weapons removed
* Range and grenade infect function not will work if trace are blocked by any brash
* Unstuck fix
* Fix knife emilation by adding hull intersection function
* All tracer functions improved
* New airburster
* New flare and lasermine and tablet model
* New weapon sfmg, big hammer, sfsword, skullaxe
* Now players can drop knifes and grenades on G
* If player drop his knife, he will get fists
-Version: X.015 Stable (April 02 2019)
* Knockback fix
* Sound helicopter, turret fix
* Added new particles tracers for turret, etherial, janus7, sfpistol
* Improve some valid checkers for entities
* Added new stocks for creating tracers (for weapons) (thanks Phoenix)
* Improve transmit hooks
* Fix collision for turrets
* New physics for turrets
* Drill increase damage ;)
* Helicoper improvements, collisions improved, drop position, model rework
* Turret owner damage
* New natives
* New UTILs library
* Remove hud limits for clip/ammo
* New native to find player collision with solid sphere (FindPlayerInSphere)
* New natives for sound library, option to play sound by key without extraction of string
* New watercannon effect
* New effect for plasma
* New effect for janus7
* New trails for rockets, and many other staff
* New expsosion effects
* Stamper improved coffin skill
* Tracers are use world trace now
* Lasermines reworked
* New effect for jetpack
* Jumpbomb create phys force for props
* Airdrop addons fix for helicopter
* New effects for cannon, balrog
* All weapons data props was fixed
* Cannon will ignite the victims by touch
* Janus7 knockback in second mode removed
* Many weapons view models fixed muzzle flash
* Added custom particles effects for muzzle flash
* Fix janus1, blaster, tempest, sfpistol models
* Plasmagun got bubble effect
* New tablet models for turret (build plan)
* ZP_IsPlayerHasWeapon will return weapon index, instead of true/false
* Airdrop on next round will be reset, in case if random human got it again
-Version: X.014 Stable (March 20 2019)
* Particles fix for windows removed, because win clean table himself
* Windows crash fix because of particle fix
* Added downloadserver folder
-Version: X.013 Stable (March 19 2019)
* HPBar sprite for classes module
* Fix with auto precache .vmt files in configuratuion files (gamemodes.ini, classes.ini)
* Fix with ghost/alive invisible
* Many teleport entity functions replaced with the KeyValues dispatch
* Added eye angles for stamper and heavy (skill) entities
* Removed features of level hud enabled with disable level system, because it useless information
* Fixed menu constructor access problem
* Fixed with napalm damage when attacker become a zombie
* Added support of weapon_breachcharge, weapon_snowball
* Added c4 default extraitem (breachcharge for humans)
* Added MDS CLayMore extraitem (for calling airdrop or air bombarding) (Randomly give to humans)
* Turret rotate sound removed
* Fixed default sounds in lasermines and turrets
* Small changes invalidations in addons
* New models and some changes in configs, check github for details
-Version: X.012 Stable (March 15 2019)
* Small changes in core
* Removed limit for health, armor, money (Memory patching)
* Changed custom money hud cvars
* Removed armor for level / short info dhud
* Fixed molotov error on invalid loading (added reminder info of inc grenade)
* Added native to get the exp limit for given level
* Material files update
-Version: X.011 Stable (March 13 2019)
* Particle fix changes, removed some sigs and add support of windows ;)
* Added support of packaked .vpk textures for decryptor
* Dronegun improvents (TF2 remake) with 3 modes
* Submenu access fix (on display submenu content)
* 'B' button used for open weapon menu
* New config for level limits with small updates translation a bit. (+Pre convert string to int)
* Added validations for dhooks
* Rebuy tiny changes
* Improved performance of removing ent on round start
* Fix for voice module
* Fix issue than .pcf didnt downloaded to clients, Valve broke IsGenericPrecached again
* download.ini can be used to add some non usual formats to download table
* Shortcut button to buy last extraitem ???
* Removed terminateround block is someone is going to respawn, because it cause issue with multi respawning at round end
* Last in gamemode.ini removed support of that feature [off param will not force to a round end on the last zombie death if he will respawned]
* Lasermines beam are not stuck in players on install in non impulse mode, and in impulse mode not stuck in humans
* Slay (suicide) will call death event methods
* 3 new forwards, to block main menu (hook button menu), to hook death, to hook respawn (for blocking)
-Version: X.010 Stable (March 3 2019)
* Removed hooks checkers (Improve performance)
* New turret (custom dronegun)
* Trace improvements
* Custom icons improvements
* ZP_TakeDamage can be used to damage victim himself and dont get any rewards + also hook death from bool return
* ZP_TakeDamage get inflicter parameter
* All default death events blocked
* New custom event system
* Icons for skills (on death)
-Version: X.009 Stable (February 26 2019)
* SVG icons for all weapons kill, new cvars for icon for infection
* Added new way to check default models, particles, sounds which are in .vpk
* Added support of precache standart game models/particles/sounds in download.ini (Not textures, they should be precache )
* Lasermines fix for non impulse mode
* Dronegun fix
* Weapon buy limit (similat what extraitems have)
* Code refactoring
-Version: X.008 Stable (January 24 2019)
* ForceSuicide fix
* Plague mod fix
* Particles uncaching fix for Linux
* Some changes in decryptor
* Last purchase fix on the new round
* Removed squared param in addons
-Version: X.007 Stable (January 24 2019)
* Fix sound stop function when key is disabled
* Add sound for leap jump for classes
* Added one native and new param in classes.ini
* Fix money return on infection
* Increase psyh skill damage
-Version: X.006 Stable (January 23 2019)
* Fix of account function error during team change
* Fix of leap jumps for all classes
-Version: X.005 Stable (January 23 2019)
* Fix empty steam id on insertion into database
-Version: X.004 Stable (January 22 2019)
* Deploy, reload, attack can be instant
-Version: X.003 Stable (January 22 2019)
* Added SQL default values for all database
* Removed tabs from menus
-Version: X.002 Stable (January 22 2019)
* Fixed deploy time for weapons
-Version: X.001 Stable (January 22 2019)
* Fix of range zombie, now it can infect even when he a single zombie and round wont over
* Death event changed
* Overlays will reset on death (just in case)
* Keyvalues extractioon fixed on windows (force all translation alias to low cases)
* Fixed with missing transtions on class menu update
* Added cvar for stating account amount on first conenction
* Change collision on the turret (But owner still cant damage it)
* Round shouldn't over, if zombies will be respawn
* Added new var which store vision var on client into database
* Added round blast for draw (Kill zombies on draw) + new cvar with round blast time
* Added round blast sound cvar
* Added timer handler for soundend/soundblast
* Fixed blaster, temperst, lightzm meterial list, because they was generated in 8.5, which had some problem in material extration
* Database module remaked, to work with transactions, add new column and be more sutable for updates of core with adding new variables to store
-Version: X Stable (January 17 2019)
* New custom cvar system, which load cvars on plugin start. custom map config was removed
* Add dronegun (battleroyale) addon
* Fists and knife_ghost support in weapons.ini module. added fix of p_ models on ghost knife
* Precaching invalid texture/sound not stop writiring file's with pathes for models and particle textures/sounds
* Return cstrike module, fix round reason on windows
* Round end change function
* Added standart knifes in buymenu
* Allow pickup knifes for all classes, like c4 fix
* Cvars allow to make changes and apply them instantly during game, by reloading .cfg and some modules can be unload during game
* Zombieclasses/extraitems/humanclasses/gamemodes now work throght the .ini like other modules, API is changed (More flexible to customize during gameplay)
* String len optimization
* Core structure changes
* Cvars hook not work on the
* API changes
* Parser improved by specials separator, added string info errors, removed additional key buffers
* Nemesis knockback now can be customize
* Config system minor improvements
* Addons changes
* Added ambient sound system for gamemodes
* Improve sound core
* Weapon switch improve, make bowth view models invisible on pre deploy
* Jumpboost cvar for decrasing knockback in air
* Sniper not drop weapon on the drop on the spawn, the ZP_GiveClientWeapon get new param for remove on drop
* New warmpup cvars block
* Core now is stabled
* Menus module improved by adding key constructor.
* Fixed problem in auto textures extractor. By atd hash map validation, generated file of chainsaw v_ was updated
* Weapon drop changed to cstrike sig function
* Gamodes/classes configs improved
* Melee & fist secondary attack block because lack of cstrike hooks
* If trapper, catch the victim, his gain some rewards in money
* The trapping skill is changed, that you cant move during the using skill
* Kill/suicide commands will be available if player stucked in the physics prop (not another player)
* Gamemodes/zombieclases/humanclasses have a more customizations
* Many cvars removed to .ini files
* Nemesis/Survivor are removed, now you can create custom classes in .ini
* If level system is disabled, it will still show class name and armor in dhud
* Ammopacks removed, changed by standart money
* API for classes are reworked
* Zombie and human classes merged together
* Weapon post switch improved for both classes
* Added weapon validate forward for menu
* Added support of multi classes in extraitems.ini to make it easiar to manitpulate instead of code
* New forwards for all menus
* Classes parameteters for menus, extraitems
* Damage system reworked
* Hitgroups system add armor parameters
* Armor reworked for classes, no more limit
* Added new enum structs from last dev update
* Added unloaded compatibility
* Added support of specators DHUD for money and player info
* Parser improved to work directly with arraylists
* Sound system and cvar system parsing changed, removed additional buffer arrays
* Sound system can handle multiple same keys and will randomize block's index output on 'soundkeytoindex'
* Added full support of item_kevlar, item_assaultsuit, item_heavyassaultsuit for weapons.ini
* AntiStick collision change
* New forwards (OnClientMoney,Level, Exp) with copypack params
* All string quotes compytation improvement
* New algorithm to divide multistring
* Classes gain lifesteal (health recovery) on the kill is well
* All SendEntData/GetEntData moved to seperate stocks
* Zombies can reduce not only human armor, and their health is well, so lethal damage can infect similar to 0 armor!
* Gamemodes randomize got more optimized system for randomize clients, only 2 loops for build and shuffle array , no more single random player extracting
* Forwards moved to structs
* Infect icon changed to cvar
* Last human,zombie disconnect not force to restart round, force to infect/humanize other players based on current gamemode, to not stop gameplay
* Escape feature for gamemodes (send to respawn)
* Skill bar of duration added
* If you reset skill ,the duration timer will stop and end forward won't called then
* Slot for grenades are removed
* Strcmp functions reworked
* Weapon give function changed
* Added support of tablet weapon
* Clip pararemet for item_* is armor amount
* Infection sound are getting from the zombie class now
* Added block drop param to weapons ini (because fist can force to drop weapon even on zombies)
* Added forward to round end
* Database remaked, it store all changes immediately, and unload and load faster
* Mutation Heavy class place traps which will be visible for zombies, before activation
* Gamemode desc hint message change to dhud, + new param for gamemodes
* Reloads of classes.ini|gamemodes.ini (except cvars) are auto restart round, to reload the variables more quickly ???
* Added class dump command
* Added unstuck memu (for map props)
* Added ammopack donate menu
* Default menus havr a access check inside callbacks
* New gamemodes menu and class menu for admins , now only in core, because it fully dynamic
* Added translations for reply commands
* Gamemode names will be taken from a translation files (for menu purpose)
* Menu constructor got a auto listener to check all callbacks
* Added first class health multiplier in gamemodes.ini
* Fix spotting + param in classes.ini
* Shop history for rebuy resets only on round start after showing rebuy menu
* Commands for admin to give money, exp, level
* Fixed janus7 sounds in ini file
* Added tablet to the dronegun item to place it
thank you gubka and good job for the zombie plague reborn
i have some suggestions to make the mod better why not, so:
Quote:
- try to add weapon menu on spawn like on the cs 1.6 one
- add a feature thet shows the ammopacks like the hud message on 1.6 ( health: %s | Armor: %s | Ammopack: %s | ) or add it on zombie plague menu something like "available ammopacks:.. "
- make the xp feature as a separated sub addons, (make the mod as simple as possible, easy to edit by adding sub-addons)
- change menu button, because "E" if someone uses parachute plugin it will spam his screen with menu
And thank you again for reviving the zombie plague that we all loved on the 1.6
- try to add weapon menu on spawn like on the cs 1.6 one
Just to small plagin witch press E button on the spawn
Quote:
- add a feature thet shows the ammopacks like the hud message on 1.6 ( health: %s | Armor: %s | Ammopack: %s | ) or add it on zombie plague menu something like "available ammopacks:.. "
CS:GO don't have hud like in the 1.6
Quote:
make the xp feature as a separated sub addons, (make the mod as simple as possible, easy to edit by adding sub-addons)
You can disable level and xp feature in the zombieplague.cfg and i can't divide main part of the code in the subplugin, it just useless, it already easy like as possible, just open 'zp' folder and you can find a lot of modules in the code
In my opinion , just adddons must be by separate plugins, but not the main core
Quote:
- change menu button, because "E" if someone uses parachute plugin it will spam his screen with menu
It the easiest possible button now, because i cant hook M or B button in CS:GO because they on the client side, just edit parachute plugin and change E button there, on the (IN_USE -> IN_JUMP) for example
Just to small plagin witch press E button on the spawn
not like that, i mean a weapon menu for free like deathmatch on spawn
Quote:
Originally Posted by gubka
It the easiest possible button now, because i cant hook M or B button in CS:GO because they on the client side, just edit parachute plugin and change E button there, on the (IN_USE -> IN_JUMP) for example
that's a good idea editing parachute..., but why not making it more easier for people who don't know how to code and make zp sub parachute with jump button it's helpfull when u use jetpack with the mod
Edit: There is a bug with Round start sounds aren't played
Last edited by Mikado; 11-23-2016 at 07:45.
Reason: reported a bug
Edit: There is a bug with Round start sounds aren't played
Spoiler
PHP Code:
/** * The round is started. **/ void RoundStartOnRoundStart(/*void*/) { // Create timer for terminate round EndTimer(Task_ZombieRound); Task_ZombieRound = CreateTimer(GetConVarFloat(gRoundTimeZP) * 60.0, RoundEndTimer);
// Player round start sounds SoundsTransmitToAll("ZOMBIE_ROUND_START_SOUNDS");
// Kill all objective entities RoundStartOnKillEntity(); }
I know that this problem can exist, if you run the server, but at first server hibernate, and sourcemod didn't hook round start and when you connect you need to wait until restart, and on next round, hook will work and sounds is well
I had same problem with timer, and at first i didn't understand why timer do not start on first run of the server and after a create infinite timer which create on map start
Or might be you don't have fast download on your server and sound do not upload to clients, because i didnt have problems with sounds on my linux server on the hosting
May be sounds interact now with standart ones
Because here sounds worrking https://www.youtube.com/watch?v=ooDggGVhIFg
May be after last update they bugged my mod again) We need to update Valve update, where they will allow server to ctop standart client sounds on round end and round start, because playgamesound Music.StopAllMusic not work now
PHP Code:
- Version: 6.5 (Novermber 23, 2016) * Fix with round start sounds * Cvar system in the code have changes * Fix with custom weapons like medkit , etc.
Edit: I fixed that, now start sounds will enable on 20sec before infection
And also fix problems with non-weapons, like medkit
why don't you change it, instead of before infection to after infection so people can use a scary ambiance sound *-*
and please add a cvar to enable and control nemesis knockback
Edit: if you use a lower infection time ( countdown ) than 20s start sound won't work and help messages won't be displayed