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
Customizable Market & Arsenal
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:
Classic: Passive skill = Randomly dazzles the assailant
Fast: Passive skill = Very fast
Explosive: Skill = Infection gas ~ Activation on death
Phys: Skill = Scream ~ Activation on button: G
Deimos: Skill = Sting shot ~ Activation on button: G
Healer: Skill = Healing for money rewards ~ Activation on button: G
Smoker: Skill = Toxic cloud ~ Activation on button: G
Hunter: Skill = Fast running ~ Activation on button: G
Witch: Skill = Bats flock ~ Activation on button: G
Tesla: Skill = Hallucination blast ~ Activation on button: G
Stamper: Skill = Explosive coffin ~ Activation on button: G
Ghost: Skill = Invisibility ~ Activation on button: G
Heavy: Skill = Traping for money rewards ~ Activation on button: G
Tank: Skill = Invulnerability ~ Activation on button: G
Deathmatch System
Restoring System
Sounds System
Hitbox System
Logging System
Ragdoll System
Menu System
Skills System
Money System
Market 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
Chinese Supported
Romanian 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_extraitems "1" // Enable extraitems module, disabling this will disable e-related features [0-no // 1-yes]
zp_costume "1" // Enable costumes module, disabling this will disable costumes-related features [0-no // 1-yes] (Hats/costumes on the players)
// ----------
// < 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.0" // 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 "1.0" // Health multiplier for each level [health += health_ratio*level]
zp_level_speed_ratio "0.001" // Speed multiplier for each level [speed += speed_ratio*level]
zp_level_gravity_ratio "0.001" // Gravity multiplier for each level [gravity += gravity_ratio*level]
zp_level_damage_ratio "0.01" // 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_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_comeback "1" // Emit a comeback sound (to all humans) when a zombie respawn [0-no // 1-yes]
zp_seffects_moan "60.0" // Max time between emission of a moan sound from a zombie
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_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_player_item "item_buy_sounds" // The key block for player item buy sounds
//zp_seffects_player_armor "armor_buy_sounds" // The key block for player armor buy sounds
//zp_seffects_player_info "info_tips_sounds" // The key block for player info tips sounds
//zp_seffects_player_buy "buy_success_sounds" // The key block for player buy success sounds
//zp_seffects_player_fail "buy_fail_sounds" // The key block for player buy failed 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
// ----------
// < Teleport >
// ----------
zp_teleport_escape "0" // Allow teleport on escape modes only [0-no // 1-yes]
zp_teleport_zombie "1" // Allow zombies to use ZTele [0-no // 1-yes]
zp_teleport_human "1" // Allow humans to use ZTele [0-no // 1-yes]
zp_teleport_delay_zombie "3.0" // Time between using ZTele command and teleportation for zombies
zp_teleport_delay_human "3.0" // Time between using ZTele command and teleportation for humans
zp_teleport_max_zombie "3" // Max number of times a zombie is allowed to use ZTele per round
zp_teleport_max_human "1" // Max number of times a human is allowed to use ZTele per round
zp_teleport_autocancel "1" // Automatically cancel ZTele if player moves out of a set boundary [0-no // 1-yes]
zp_teleport_autocancel_distance "150.0" // Maximum distance, player is allowed to travel before teleport is cancelled
// ----------
// < Market >
// ----------
zp_market "1" // Enable market menu [0-no // 1-yes]
zp_market_buymenu "0" // Enable default (standart) buy menu [0-no // 1-yes]
zp_market_button "1" // Enable hook of button "B" for the market menu [0-no // 1-yes]
zp_market_reopen "2" // Enable reopening menu after purchasing [0-no // 1-yes // 2-main]
zp_market_favorites "1" // Enable favorites menu [0-no // 1-yes]
zp_market_zombie_open_all_menu "0" //If disabled then the zombie immediately opens the equipment (if enabled then all menu sections will be visible) [0-no // 1-yes]
zp_market_human_open_all_menu "0" // If disabled then the humans immediately opens the equipment (if enabled then all menu sections will be visible) [0-no // 1-yes]
zp_market_off_menu_when_mode_started "1" // If enabled and the infection has started, all menu sections except equipment become inactive [0-no // 1-yes]
zp_market_buytime "15.0" //If zp_market_off_menu_when_mode_started enabled, this is the time until all menus are available after spawn
// ----------
// < Arsenal >
// ----------
zp_arsenal "1" // Enable free arsenal on the spawing [0-no // 1-yes]
zp_arsenal_random_weapons "0" // Whether players should get weapons randomly instead of selecting them
zp_arsenal_primary "mp9, mac10, bizon" // Primary weapons list ['m4a1, ...'] = in the string divided by ',' from weapons.ini (Only for weapons with human class)
zp_arsenal_secondary "p250, fiveseven, hpk" // Secondary weapons list ['usp, ...'] = in the string divided by ',' from weapons.ini (Only for weapons with human class)
zp_arsenal_melee "knife, axe, spanner, hammer" // Melee weapons list ['knife, ...'] = in the string divided by ',' from weapons.ini (Only for weapons with human class)
zp_arsenal_additional "holy grenade, freeze grenade" // Addition weapons list ['nade, ...'] = in the string divided by ',' from weapons.ini (Only for weapons with human class)
// ----------
// < Messages >
// ----------
zp_messages_objective "1" // Enable objective messages [0-no // 1-yes]
zp_messages_counter "1" // Enable counter messages [0-no // 1-yes]
zp_messages_blast "1" // Enable blast messages [0-no // 1-yes]
zp_messages_damage "0" // Enable damage messages [0-no // 1-yes]
zp_messages_donate "1" // Enable donate messages [0-no // 1-yes]
zp_messages_class_info "1" // Enable class info messages [0-no // 1-yes]
zp_messages_class_choose "1" // Enable class choose messages [0-no // 1-yes]
zp_messages_class_dump "0" // Enable class dump messages [0-no // 1-yes]
zp_messages_item_info "1" // Enable item info messages [0-no // 1-yes]
zp_messages_item_all "1" // Enable item buy messages (for all players) [0-no // 1-yes]
zp_messages_weapon_info "1" // Enable weapon info messages [0-no // 1-yes]
zp_messages_weapon_drop "1" // Enable weapon drop messages [0-no // 1-yes]
// ----------
zp_messages_welcome_hud_time "3.0" // Number of seconds to hold the message [0-disabled]
zp_messages_welcome_hud_fadein "2.0" // Number of seconds to spend fading in
zp_messages_welcome_hud_fadeout "1.0" // Number of seconds to spend fading out
zp_messages_welcome_hud_R "0" // Color of welcome hud (Red)
zp_messages_welcome_hud_G "125" // Color of welcome hud (Green)
zp_messages_welcome_hud_B "200" // Color of welcome hud (Blue)
zp_messages_welcome_hud_A "255" // Alpha of welcome hud
zp_messages_welcome_hud_X "-1.0" // x coordinate, from 0 to 1. -1.0 is the center
zp_messages_welcome_hud_Y "0.17" // y coordinate, from 0 to 1. -1.0 is the center
// ----------
zp_messages_block "Player_Cash_Award_Team_Cash_Award_Player_Point_Award_Match_Will_Start_Chat_SavePlayer"
//! List of standart engine messages and notifications for blocking
// ----------
// < Weapons >
// ----------
zp_weapons_buyammo "1" // Enable hook of buyammo buttons ",." for weapons [0-no // 1-yes]
zp_weapons_pickup_range "125.0" // The distance a player can be to allow pickup non-pickupable weapons
zp_weapons_pickup_level "1" // Allows to pickup weapons only when player has the required level
zp_weapons_pickup_online "1" // Allows to pickup weapons only when online amount more or equal to the required limit
zp_weapons_pickup_group "0" // Allows to pickup weapons only when player has an access to a provided admin group
zp_weapons_default_melee "fists" // The default melee weapon which gives to human after dropping the last knife
zp_weapons_remove_dropped "0.0" // Time before removing dropped weapons in seconds [0-disabled]
// ----------
// < Menus & Buttons >
// ----------
zp_menu_button "+lookatweapon" // Bind of the button for the menu open. Look here: https://www.reddit.com/r/GlobalOffensive/comments/36cjph/default_binds/
zp_menu_button_block "1" // Block hooked command execution. Commands like "drop" probably need to have this turn off.
zp_skill_human_button "rebuy" // Bind of the button for the human skill usage. Look here: https://www.reddit.com/r/GlobalOffensive/comments/36cjph/default_binds/
zp_skill_human_button_block "1" // Block hooked command execution. Commands like "drop" probably need to have this turn off.
zp_skill_zombie_button "drop" // Bind of the button for the zombie skill usage. Look here: https://www.reddit.com/r/GlobalOffensive/comments/36cjph/default_binds/
zp_skill_zombie_button_block "1" // Block hooked command execution. Commands like "drop" probably need to have this turn off.
zp_light_button "autobuy" // Bind of the button for the flashlight trigger. Look here: https://www.reddit.com/r/GlobalOffensive/comments/36cjph/default_binds/
zp_light_button_block "1" // Block hooked command execution. Commands like "drop" probably need to have this turn off.
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]
// ----------
// < 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_knockback_air "0.75" // Multiplier for knockback reduction when victim off the ground
zp_knockback_crouch "0.8" // Multiplier for knockback reduction when victim is crouching
zp_remove_weapons_when_mode_started "1" // Removal of all dropped weapons after gamemode starts [0-no // 1-yes]
// ----------
zp_night_time_min "2300" // Min time for night state in format HHMM, where HH is the hour and MM is the minute (23:00pm)
zp_night_time_max "0630" // Max time for night state in format HHMM, where HH is the hour and MM is the minute (6:30am)
// ----------
_____________________________________________
Modification use some virtual addresses and offsets ../csgo/addons/sourcemod/gamedata/plugin.zombieplague
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 features integrated into the mod. Core uses groups to check user's flags.
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"
}
Either manage the database for money/level/exp/skin/items/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, favorite items, 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_dump_memory - Dumps active memory pool. Mainly for debugging.
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_teleport_force - Force teleport on a client. Usage: zp_ztele_force <client>
zp_teleport_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.
zzombie - Opens the zombie classes menu.
zhuman - Opens the human classes menu.
zcostume - Opens the costumes menu.
zfavor - Opens the favorites menu.
zmarket - Opens the market menu.
zarsenal - Opens the arsenal 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.
'F' - open a main game menu.
'F4/G' - use a human/zombie skill.
'F3' - switch flashlight, if you are human or nightvision, if you are a zombie.
'.' 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 use a weapon. ['' = all users]
--------------- types: The class types which had access to use a weapon. ['human'/'zombie' = default type | 'any' = custom type | '' = all types] - in the string divided by ',' from classes.ini
--------------- level: The level which had access to use a weapon. ['0' = off]
--------------- online: The number of players which require to use 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)
--------------- speed: The moving speed while holding a weapon. ['0.0' = off]
--------------- jump: The jump power while holding a weapon. ['0.0' = off]
--------------- 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]
--------------- types: 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.
--------------- space: Generate empty space after menu item.
--------------- 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 value. ['250.0' = standart speed | '300.0' = fast 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)
--------------- cost: The amount of health which will be deduct for a skill usage. ['0' = off]
--------------- 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)
--------------- 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 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_human: The additional health to the first humans. ['0' = off] (health = player count * health ratio)
--------------- health_zombie: 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)
--------------- comeback: The comeback (respawn) zombie sound. ['' = off] (Block from 'sounds.ini' config)
--------------- ambient: The ambient sound block. ['' = off] (Block from 'sounds.ini' config)
--------------- infect: Allow infection during round.
--------------- respawn: Allow respawning during round.
--------------- type_human: The type of the default human class. ['human' = default type | 'any' = custom type]
--------------- type_zombie: 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.
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)
--------------- weapon: The weapon name. ['' = off]
--------------- 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]
--------------- flags: The item availability flags. ['abcde..' = flags | '' = off]
--------------- group: The admin group to access to buy a item. ['' = all users]
--------------- types: 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
Flags::
"a" - the item is not available until the round starts.
"b" - the item is not available after the round starts.
"c" - the item is not available to a single zombie.
"d" - the item is not available to a single human.
"e" - the item is not available in an infection mode.
"f" - the item is not available in a respawn mode.
"g" - the item available once per map.
NOTE: Names must be a unique. NOTE: To remove category/item just delete whole block! NOTE: Name/info 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!
_____________________________________________
All sounds loading from ../sourcemod/zombieplague/sounds.ini
For additional information see include/zombieplague/sounds.inc
Look at the default sound case in that file for an example.
path: The sound path.
--------------- volume: The sound volume. ['0.5' = half volume | '2.0' = double volume]
--------------- level: The sound level in dB. ['75' = normal]
--------------- flags: The sound flags. (Check sdktools_sound.inc for more info)
--------------- pitch: The sound pitch. ['0' = lowest | '255' = highest]
--------------- duration: The accurate sound duration. (If '0.0' will be generated automatically using 'GetSoundDuration' on Windows only)
NOTE: Names must be a unique. NOTE: Supports default '.wav' sounds.
_____________________________________________
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:
// ----------------------------------------------------------------------------
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: 1.2.1 (March 01 2023)
* Updated props on custom weapons to other more suitable ones
* hammerid is not used for weaponmod replaced with maxhealth to identify custom weapons
* Added support of special map items found in Zombie Reloaded based maps
* Added recoil for custom weapons
* Added missed animations for custom weapons
* Removed the sound of flashbang explosion
* Removed the sound of the smokegrenade explosion
* Fixed glow util method
* Optimization of the search for players in the radius
* Added a new method of working with memory and signatures on Windows
* Fixed the hammer player (w_) model
* Now you can pickup claymore
* Glow will be auto removed when class changes or death for nemesis and madness
* Improved switching to the second mode for janus weapons
* Fixed sounds for linux, now you can specify the duration of sounds manually (especially on Linux)
-Version: 1.2.0 (February 23 2023)
* Slightly redesigned the work of view models on weapons
* Fixed creation of dropped models, now deleted when picking up
* The last person now dies and does not get infected (bug fix of the last round)
* Slightly changed the characteristics of nemesis for balance
* Increased recoil to the machine gun of the survivor
* Added extra item -> double jump
* Nemesis has access to some zombie extra items
* Reduced the number of hp for nemesis
* Reduced damage to sniper rifles
* Added a second jump grenade for zombies
* Holster hook converted to offset
* Added steamid search for teams related to levels and money
* Added global volume setting
* Removed jet in airdrop
* Redesigned airdrop , now the helicopter is called via supply nade
* Added a new extra item -> anti-personnel mine on the control panel with 2 modes of operation
* Reduced screen shaking on some weapons
* Added shaking for the psyh zombie skill
* Adjusted the price of uniforms
* lasermines addon is slightly renamed
* Added zombie comeback respawn sound
* Added new sounds
* Completely redesigned the sounds folder
* Fixed binding of viewmodels to players
* Reworked some skill sounds
* Fixed the sounds of footsteps and grenades, now they do not replace the standard ones
* Added sounds to hint messages
* Standard sounds for equipment and purchases are now used by the mod instead of custom mp3
* New natives for sounds
* The sound of gorenje and damage is not played until the last one ends
* Smoker & psyh now infects and does not kill if possible
* Fixed ambient sounds
* The sound system has been redesigned + a new sounds.ini has been added with support for each sound individually
* Added support for changing the sound of knives, attack sounds are removed from classes.ini
* Customer validation has been slightly changed
* Fixed the spawn of weapons and items, now when spawning, the first index from weapons.ini is selected instead of -1, and after that the desired one is set (disabled items are not created this way)
* Added the next button for the arsenal so that you can skip the issuance of counter-missile weapons and receive uniforms at the end
* Fixed a bug with switching weapons and checking the slot
* Added support for standard wav in sounds.ini
* Improved idle, moan sounds in zombies
-Version: 1.1.0 (February 14 2023)
* Global refactor of the kernel and addons
* Fixed calculation of damage bonuses, now reset with each class change
* Added night time check
* Refactor of some utility functions
* Fix with spawn gifts in trigger mode
* Implementation of flags for the item store
* Masives in configs are now inlining into object structures
* Fixed refund after infection
* New modules for logs
* Default grenade trails are enabled
* Added the menu item respravn for money
* Fixed rendering of invisible objects in the light of a flashlight
* Added the inclusion of a flashlight for bots
* Added extra item for zombie rabies
* Changed sounds and particulars for the Zombie Hunter skill
* Added a progress bar for trap victims
* Added detour hook for Holster
* Added a check that the LVL system is turned off in the store
* Removed infinite effects for classes
* Nemesis is given a heavysuit
* Added an effective addon - dynamic light glow for nemesis
* Fixed damage to gifts
* Fixed Russian localization errors
* Forward OnWeaponCreate has been redesigned, now it does not have a player index and is always called when creating weapons through the core
* Now the weapons from the addons are spawned with the correct set of states in the gift and airdrop plugins
* Fixed minigun for bots
* Added a new translation for groups
* The Group system has been changed, now the mod does not check the access of players to the group, but access to the flags of the specified group
* Updated gamedata config
* Rewritten generation of all menus, now a little faster
* Updated GetSlot offset for linux
* The last person is not infected at the first damage
* The stamper skill has been redesigned, now it does not attract but slows down, as in CSR, a fix for the location of the coffin, and a check for other players getting stuck has been added
* Added the ability to create spaces between menu categories in menus.ini
* Fixed the spawn of grenades after death
* Added some ffade effects for human and zombie classes
* Fixed the cache of standard sounds via downloads.ini
* Fixed invisibility in the light of a flashlight, no longer casts shadows
* Added description of skills for zombies and humans
* ZP_LookupAttachment & ZP_GetAttachment replaced with sdktools signatures
* ZP_LookupPoseParameter & ZP_LookupSequence moved from kernel to dronegun
* Added native software for obtaining weapons in weapons.inc
* Fixed attachments on trails and on fspistol
* The arsenal issues weapons to the ground if the slot is occupied when the automatic issue is enabled
* The UpdateTransmitState functionality has been removed
* Fixed drop models for created weapons on the map
* Fixed attack sound for chainsaw
* Dronegun addon renamed to turret
-Version: 1.0.0 (February 09 2023)
* The code has been updated to support SM & MM 1.11 or higher (some unused warnings in addons are normal)
* The volume of all sounds has been adjusted individually
* Nodisarm & movement unlock removed
* Fixed a bug with a dropped model of weapons that became invisible in the next round
* Fixed the position of the shot and hit on all custom firearms (now exactly on the sight)
* Redesigned recoil on custom weapons
* Rebalance of zombie classes
* Tried to fix a bug with the appearance of muzzle and other weapon effects on the map during the game
* Added support for changing zp_default_melee during the game
* Added a menu for selecting free weapons at the start of the round as in ZP CS 1.6 (with the ability to memorize the selection)
* Added a command and menu item to switch the memorization of the selection of weapons from the armory
* Added a new native for checking custom classes (not people and not zombies)
* Added a cvar for buying ammos
* Added cvar to turn off the rebuy menu
* Added the ability to disable extraitems modules
* After changing the class by another player, his weapon should drop to the ground and not be removed
* Fixed bug modules of zombie players who started twitching at a long distance
* Added a change to the knockback by sitting through the cvar
* Changed the speed system for classes, now does not depend on the default weapon
* Updated classes.ini configs to work with the new speed type
* Added the ability to change the player's speed via m_flLaggedMovementValue which is a kind of speed multiplier. 1.0 by default by default
* Added speed and gravity support for weapons in weapons.ini
* Added an optional timer for removing dropped weapons
* Removed infinite grenades with infinite ammo
* Some weapons have been modified and the shooting speed has been fixed
* Updated the offset CBaseCombatWeapon::getSlot, added a check to signal that the slot indexes are incorrect if the offset breaks again
* Failed to fix a bug with the drop of identical grenades when there are more than one in the inventory, while I limited their number to 1
* Removed some standard cvars from the config in gamemode_casual_server.cfg
* Fixed safe for airdrop
* Refactor of translations, divided into different files
* Added support for multiple translations for the mod
* Split the translations into several files, also moved the translations of addons to separate files
* Split translation files into different folders as in sm
* Refactor config files, replaced spaces with tabs to increase parsing speed
* Redesigned ethereal & sfpistol weapons in relation to the laser
* Added tracers for weapons where they stayed (m134, skull1, balrog3, sgdrill, airbuster)
* It is possible to use skills on the G (drop) button
* Added a cvar in order to be able not to block commands to which hooks are added. (menu, skill and flashlight)
* An empty rebuy menu will no longer automatically appear for a class for which items are not installed
* Added dynamic invisibility (decreases when moving) for the blue alice class
* Redesigned zombie class range, added a setting for infecting only 1 person in a radius and not all (for balance)
* Bots now use skills
* Bots automatically buy ammo when needed
* Bots automatically buy extra items and weapons
* Bots automatically select costumes
* Fixed the display of the commission in the transactions menu
* Added a welcome DHUD message along with cvars for setting it up
* The issue of weapons has been redesigned, sounds on weapons have become much less frequent (not sure)
* ClientCommand has been replaced with EmitSound with a quieter sound
* Fixed infinite ammunition, now work correctly on custom weapons
* Addons refactor for version 2.0
* Replaced macros with cvars in all addons
* Added partial settings for addons via configs with the ability to disable
* When particles are disabled, standard beam & trace effects are usually used in addons
* Added replenishment effects to class skills
* Slightly redesigned classes, also changed their location
* Added deceleration when hammer is not worn in (2x damage) mode
* Refactoring of weapon, weaponmod and weaponHDR modules. The states of viewmodels started to be stored in them and not in the array of players
* Added checks for all signatures, offsets and addresses. Now the mod will work with invalid gamedata with restrictions
* The autobuy menu has been completed, now you can not only customize the template for the class, but also open it anytime
* Removed the baller class, also renamed other zombie classes and rebalanced
* Added additional hp settings for people in game mode configs
* Added extra items to buy nemesis and survivor
* Refactoring of modules with menus (moved the code associated with the menu to separate files)
* Added admin checks for some commands
* A refactoring of the Market module
* The weapon purchase menu is combined with items in the new Market modules. Changed the configs weapons.ini, extraitems.ini & menus.ini
* Added the option to create menu categories via extraitems.ini
* Added purchase flags in extraitem.ini (not fully implemented yet)
* Added is a cvar for using the standard cs go shop, it will be synchronized with weapons.ini (so far without the possibility of setting the price)
* Class type checks in the entire core have been changed from strings to bit operations, changed natives, includs and configs in which it was used
* The maximum number of unique class types is now 32 (human, zombie, survivor, ect)
* The code for clearing the particle tables for linux has been removed
* Renamed module ZTele -> Teleport
* Shield removed
* Balance of store items
* C4 is given when calling airdrop
* Added the health cost for the use of abilities
* Fixed bonuses for killing
* Changed default buttons for interacting with the menu and flashlight
* By default, zombies now use skills on G
* Fixed damage to a frozen player
* Old versions
Spoiler
-Version: X.040 Stable (December 03 2020)
-Version: X.039 Stable (July 29 2020)
-Version: X.038 Stable (May 06 2020)
-Version: X.037 Stable (March 26 2020)
-Version: X.036 Stable (February 20 2020)
-Version: X.035 Stable (February 09 2020)
-Version: X.034 Stable (January 21 2020)
-Version: X.033 Stable (January 19 2020)
-Version: X.032 Stable (January 16 2020)
-Version: X.031 Stable (January 09 2020)
-Version: X.030 Stable (January 08 2020)
-Version: X.029 Stable (January 08 2020)
-Version: X.028 Stable (August 04 2019)
-Version: X.027 Stable (August 03 2019)
-Version: X.026 Stable (July 11 2019)
-Version: X.025 Stable (June 23 2019)
-Version: X.024 Stable (June 21 2019)
-Version: X.023 Stable (June 20 2019)
-Version: X.022 Stable (June 17 2019)
-Version: X.021 Stable (June 16 2019)
-Version: X.020 Stable (June 16 2019)
-Version: X.019 Stable (June 16 2019)
-Version: X.018 Stable (May 04 2018)
-Version: X.017 Stable (May 03 2019)
-Version: X.016 Stable (May 02 2019)
-Version: X.015 Stable (April 02 2019)
-Version: X.014 Stable (March 20 2019)
-Version: X.013 Stable (March 19 2019)
-Version: X.012 Stable (March 15 2019)
-Version: X.011 Stable (March 13 2019)
-Version: X.010 Stable (March 3 2019)
-Version: X.009 Stable (February 26 2019)
-Version: X.008 Stable (January 24 2019)
-Version: X.007 Stable (January 24 2019)
-Version: X.006 Stable (January 23 2019)
-Version: X.005 Stable (January 23 2019)
-Version: X.004 Stable (January 22 2019)
-Version: X.003 Stable (January 22 2019)
-Version: X.002 Stable (January 22 2019)
-Version: X.001 Stable (January 22 2019)
-Version: X Stable (January 17 2019)
-Version: 8.5.0 Experimental (December 12 2018)
-Version: 8.4.9 Experimental (November 25 2018)
-Version: 8.4.8 Experimental (November 25 2018)
-Version: 8.4.7 Experimental (November 23 2018)
-Version: 8.4.6 Experimental (November 22 2018)
-Version: 8.4.5 Experimental (November 13 2018)
-Version: 8.4.4 Experimental (November 02 2018)
-Version: 8.4.3 Experimental (October 28 2018)
-Version: 8.4.2 Experimental (October 27 2018)
-Version: 8.4.1 Experimental (October 25 2018)
-Version: 8.4.0 Experimental (October 16 2018)
-Version: 8.3.2 Experimental (August 12 2018)
-Version: 8.3.1 Experimental (August 11 2018)
-Version: 8.3.0 Experimental (August 08 2018)
-Version: 8.2.0 Experimental (Jule 30 2018)
-Version: 8.1.0 Experimental (Jule 22 2018)
-Version: 8.0.9 Experimental (Jule 20 2018)
-Version: 8.0.8 Experimental (Jule 20 2018)
-Version: 8.0.7 Experimental (Jule 18 2018)
-Version: 8.0.6 Experimental (Jule 17 2018)
-Version: 8.0.5 Experimental (Jule 14 2018)
-Version: 8.0.4 Experimental (Jule 14 2018)
-Version: 8.0.3 Experimental (Jule 12 2018)
-Version: 8.0.2 Experimental (Jule 11 2018)
-Version: 8.0.1 Experimental (Jule 10 2018)
-Version: 8.0 Experimental (Jule 08 2018)
-Version: 7.8 Stable (January 14 2017)
-Version: 7.7 Stable (January 14 2017)
-Version: 7.6fix Stable (December 26 2017)
-Version: 7.6 Stable (December 25 2017)
-Version: 7.5 Stable (December 20 2017)
-Version: 7.4 Stable (December 12 2017)
-Version: 7.3 Stable (December 10 2017)
-Version: 7.2 Stable (December 02 2017)
-Version: 7.1 Stable (November 29 2017)
-Version: 7.0 Stable (November 25 2017)
-Version: 6.8 Stable (Jule 29 2017)
-Version: 6.7 Stable (February 01, 2017)
-Version: 6.6 Stable (December 19, 2016)
-Version: 6.5 Stable (Novermber 23, 2016)
-Version: 6.4 Stable (Novermber 22, 2016)
-Version: 6.3 Stable (November 20, 2016)
-Version: 6.2 Stable (November 14, 2016)
-Version: 6.1 Stable (November 13, 2016)
-Version: 6.0 Stable (November 6, 2016)
-Version: 5.4 Stable (November 1, 2016)
-Version: 5.3 Stable (October 18, 2016)
-Version: 5.2fix3 Stable (Jule 10, 2016)
-Version: 5.2fix2 Stable (May 12, 2016)
-Version: 5.2fix Stable (May 11, 2016)
-Version: 5.2 Stable (May 10, 2016)
-Version: 5.1fix Stable (May 07, 2016)
-Version: 5.1 Stable (May 05, 2016)
-Version: 5.0fix5 Stable (May 02, 2016)
-Version: 5.0fix4 Stable (Apr 30, 2016)
-Version: 5.0fix3 Stable (Apr 27, 2016)
-Version: 5.0fix2 Stable (Apr 24, 2016)
-Version: 5.0fix Stable (Apr 23, 2016)
-Version: 5.0 Stable (Apr 22, 2016)
-Version: 4.7fix4 Stable (Mar 20, 2016)
-Version: 4.7fix3 Stable (Mar 19, 2016)
-Version: 4.7fix2 Stable (Mar 19, 2016)
-Version: 4.7fix Stable (Mar 18, 2016)
-Version: 4.7 Stable (Mar 18, 2016)
-Version: 4.6 Stable (Mar 14, 2016)
-Version: 4.5fix2 Stable (Dec 11, 2015)
-Version: 4.5fix Stable (Dec 08, 2015)
-Version: 4.5 Stable (Dec 07, 2015)
-Version: 4.4fix2 Stable (Dec 06, 2015)
-Version: 4.4fix Stable (Dec 04, 2015)
-Version: 4.4 Stable (Dec 01, 2015)
-Version: 4.3fix2 Stable (Nov 28, 2015)
-Version: 4.3fix Stable (Nov 27, 2015)
-Version: 4.3 Stable (Nov 27, 2015)
-Version: 4.3 Stable (Nov 25, 2015)
-Version: 4.3 Stable (Nov 22, 2015)
-Version: 4.3 Stable (Nov 22, 2015)
-Version: 4.3 Stable (Nov 21, 2015)
-Version: 4.3 Stable (Nov 20, 2015)
-Version: 4.3 Stable (Nov 18, 2015)
-Version: 4.2 Stable (Nov 8, 2015)
-Version: 4.1 Stable (Nov 6, 2015)
-Version: 4.0 Stable (Nov 5, 2015)
-Version: 3.9 Beta (Nov 2, 2015)
-Version: 3.8 Beta (Oct 30, 2015)
-Version: 3.7 Beta (Oct 30, 2015)
-Version: 3.6 Beta (Oct 29, 2015)
-Version: 3.5 Beta (Oct 20, 2015)
-Version: 3.4 Beta (Oct 20, 2015)
-Version: 3.3 Beta (Oct 19, 2015)
-Version: 3.2 Beta (Oct 18, 2015)
-Version: 3.1 Beta (Oct 17, 2015)
-Version: 3.0 Beta (Oct 17, 2015)
-Version: 2.5 Beta (Oct 10, 2015)
-Version: 2.2 Beta (Oct 10, 2015)
-Version: 2.1 Beta (Oct 9, 2015)
-Version: 2.0 Beta (Oct 7, 2015)
-Version: 1.3 Alpha (Oct 5, 2015)
-Version: 1.2 Alpha (Oct 4, 2015)
-Version: 1.0 Pre-Alpha (Oct 3, 2015)
* Public release.
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 06: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