btw ty jack for the fixes will let u know if any kind of bug foundMohamed Alaa wrote: ↑4 years ago Updated:
1- Added ambience.
2- Bug fixes.
3- Added countdown.
4- Added "ze_nemesis" command to set a specific player a nemesis.
Code:
Code: Select all
#include <zombie_escape> // Uncomment to use custom model for nemesis // Note: This includes player model & claws //#define USE_NEMESIS_MODEL // Uncomment to use leap for nemesis // Leap Code: https://escapers-zone.net/viewtopic.php?p=10582#p10582 //#define USE_NEMESIS_LEAP #define TASK_MAKE_NEMESIS 4949849 #define TASK_AMBIENCESOUND 2020 #define TASK_REAMBIENCESOUND 5050 // Access to start nemesis round #define STARTNEMESIS_ACCESS ADMIN_LEVEL_H // Settings file new const ZE_SETTING_FILE[] = "zombie_escape.ini" #if defined USE_NEMESIS_MODEL // Default models new const g_szModels_Nemesis_Player[][] = { "ze_nemesis_host" } new const g_szModels_Nemesis_Claws[][] = { "models/zombie_escape/v_knife_nemesis.mdl" } new Array:g_aModels_Nemesis_Player, Array:g_aModels_Nemesis_Claws #endif #if defined USE_NEMESIS_LEAP native ze_get_longjump(id) native ze_remove_longjump(id) #endif enum _:Colors { Red = 0, Green, Blue } new g_iAmbianceSoundDuration = 160 // Set ambience duration = highest sound duration new const szAmbianceSound[][] = { "zombie_escape/ze_ambiance1.mp3" } new bool:g_bIsNemesis[33], bool:g_bIsNextRoundNemesis = false, g_iCountDown, Array:g_szAmbianceSound new g_pCvarNemesisHP, g_pCvarNemesisGravity, g_pCvarNemesisSpeed, g_pCvarNemesisGlow, g_pCvarNemesisGlowColor[Colors], g_pCvarNemesisKB, g_pCvarNemesisDmg, g_pCvarNemesisFreeze, g_pCvarNemesisFire public plugin_natives() { register_native("ze_is_user_nemesis", "native_ze_is_user_nemesis", 1) register_native("ze_set_user_nemesis", "native_ze_set_user_nemesis", 1) } public plugin_precache() { g_szAmbianceSound = ArrayCreate(64, 1) amx_load_setting_string_arr(ZE_SETTING_FILE, "Sounds", "Nemesis Round Ambiance", g_szAmbianceSound) new iIndex, szSound[64] if (ArraySize(g_szAmbianceSound) == 0) { for (iIndex = 0; iIndex < sizeof szAmbianceSound; iIndex++) ArrayPushString(g_szAmbianceSound, szAmbianceSound[iIndex]) // Save to external file amx_save_setting_string_arr(ZE_SETTING_FILE, "Sounds", "Nemesis Round Ambiance", g_szAmbianceSound) } for (iIndex = 0; iIndex < ArraySize(g_szAmbianceSound); iIndex++) { ArrayGetString(g_szAmbianceSound, iIndex, szSound, charsmax(szSound)) if (equal(szSound[strlen(szSound)-4], ".mp3")) { format(szSound, charsmax(szSound), "sound/%s", szSound) precache_generic(szSound) } else { precache_sound(szSound) } } #if defined USE_NEMESIS_MODEL // Initialize arrays g_aModels_Nemesis_Player = ArrayCreate(32, 1) g_aModels_Nemesis_Claws = ArrayCreate(64, 1) // Load from external file amx_load_setting_string_arr(ZE_SETTING_FILE, "Player Models", "NEMESIS MODEL", g_aModels_Nemesis_Player) amx_load_setting_string_arr(ZE_SETTING_FILE, "Weapon Models", "V_KNIFE NEMESIS", g_aModels_Nemesis_Claws) // If we couldn't load from file, use and save default ones if (ArraySize(g_aModels_Nemesis_Player) == 0) { for (iIndex = 0; iIndex < sizeof g_szModels_Nemesis_Player; iIndex++) ArrayPushString(g_aModels_Nemesis_Player, g_szModels_Nemesis_Player[iIndex]) // Save to external file amx_save_setting_string_arr(ZE_SETTING_FILE, "Player Models", "NEMESIS", g_aModels_Nemesis_Player) } if (ArraySize(g_aModels_Nemesis_Claws) == 0) { for (iIndex = 0; iIndex < sizeof g_szModels_Nemesis_Claws; iIndex++) ArrayPushString(g_aModels_Nemesis_Claws, g_szModels_Nemesis_Claws[iIndex]) // Save to external file amx_save_setting_string_arr(ZE_SETTING_FILE, "Weapon Models", "V_KNIFE NEMESIS", g_aModels_Nemesis_Claws) } // Precache models new player_model[32], model[64], model_path[128] for (iIndex = 0; iIndex < ArraySize(g_aModels_Nemesis_Player); iIndex++) { ArrayGetString(g_aModels_Nemesis_Player, iIndex, player_model, charsmax(player_model)) formatex(model_path, charsmax(model_path), "models/player/%s/%s.mdl", player_model, player_model) precache_model(model_path) // Support modelT.mdl files formatex(model_path, charsmax(model_path), "models/player/%s/%sT.mdl", player_model, player_model) if (file_exists(model_path)) precache_model(model_path) } for (iIndex = 0; iIndex < ArraySize(g_aModels_Nemesis_Claws); iIndex++) { ArrayGetString(g_aModels_Nemesis_Claws, iIndex, model, charsmax(model)) precache_model(model) } #endif } public plugin_init() { register_plugin("[ZE] Addons: Nemesis", "2.0", "Jack") RegisterHam(Ham_TakeDamage, "player", "Fw_TakeDamage") register_clcmd("ze_start_nemesis_next", "cmd_start_nemesis", STARTNEMESIS_ACCESS) register_concmd("ze_nemesis", "cmd_nemsis", STARTNEMESIS_ACCESS) g_pCvarNemesisHP = register_cvar("ze_nemesis_hp", "20000") // Nemesis health - Set 0 to use zombie HP g_pCvarNemesisGravity = register_cvar("ze_nemesis_gravity", "600") // Nemesis gravity - Set 0 to use zombie gravity g_pCvarNemesisSpeed = register_cvar("ze_nemesis_speed", "300") // Nemesis speed - Set 0 to use zombie speed g_pCvarNemesisGlow = register_cvar("ze_nemesis_glow", "1") // Nemesis glow - 1 = enable | 0 = disable g_pCvarNemesisGlowColor[Red] = register_cvar("ze_nemesis_glow_r", "255") // Nemesis glow color RED g_pCvarNemesisGlowColor[Green] = register_cvar("ze_nemesis_glow_g", "255") // Nemesis glow color GREEN g_pCvarNemesisGlowColor[Blue] = register_cvar("ze_nemesis_glow_b", "255") // Nemesis glow color BLUE g_pCvarNemesisKB = register_cvar("ze_nemesis_kb", "200.0") // Nemesis knockback - Set 0 to use zombie knockback g_pCvarNemesisDmg = register_cvar("ze_nemesis_dmg", "200.0") // Nemesis damage g_pCvarNemesisFreeze = register_cvar("ze_nemesis_freeze", "0") // Nemesis get frozen? - 1 = doesn't get frozen | 0 = gets frozen g_pCvarNemesisFire = register_cvar("ze_nemesis_fire", "1") // Nemesis set on fire? - 1 = doesn't set on fire | 0 = set on fire } public client_disconnected(id) { if (g_bIsNemesis[id]) { new szPlayerName[2][32], iNewNemId get_user_name(id, szPlayerName[0], charsmax(szPlayerName)) iNewNemId = GetRandomNemesis() get_user_name(iNewNemId, szPlayerName[1], charsmax(szPlayerName)) g_bIsNemesis[id] = false Set_Nemesis(iNewNemId) ze_colored_print(0, "!g%s !thas left !n& !g%s !thas become nemesis!n.", szPlayerName[0], szPlayerName[1]) } } public client_putinserver(id) { if (g_bIsNemesis[id]) g_bIsNemesis[id] = false } public ze_user_infected_pre(iVictim, iAttacker) { if (g_bIsNemesis[iAttacker] && !ze_is_user_zombie(iVictim)) { SendDeathMsg(iAttacker, iVictim) return 1 } return 0 } public Fw_TakeDamage(iVictim, iInfector, iAttacker, Float:iDamage) { if (iVictim == iAttacker || !is_user_alive(iAttacker)) return HAM_IGNORED if (g_bIsNemesis[iAttacker] && !ze_is_user_zombie(iVictim) && iInfector == iAttacker) { SetHamParamFloat(4, iDamage * get_pcvar_float(g_pCvarNemesisDmg)) return HAM_HANDLED } return HAM_IGNORED } public ze_fire_pre(id) { if (g_bIsNemesis[id] && get_pcvar_num(g_pCvarNemesisFire)) return PLUGIN_HANDLED return PLUGIN_CONTINUE } public ze_frost_pre(id) { if (g_bIsNemesis[id] && get_pcvar_num(g_pCvarNemesisFreeze)) return PLUGIN_HANDLED return PLUGIN_CONTINUE } public ze_user_humanized(id) { UnSet_Nemesis(id) } public ze_roundend() { remove_task(TASK_AMBIENCESOUND) remove_task(TASK_REAMBIENCESOUND) remove_task(TASK_MAKE_NEMESIS) for (new id = 0; id <= get_member_game(m_nMaxPlayers); id++) { if (is_user_alive(id) && g_bIsNemesis[id]) UnSet_Nemesis(id) } } public ze_game_started_pre() { if (get_playersnum()) { if (g_bIsNextRoundNemesis) { g_bIsNextRoundNemesis = false g_iCountDown = 5 set_task(1.0, "StartNemesis", TASK_MAKE_NEMESIS, _, _, "b") set_task(3.0, "AmbianceSound", TASK_AMBIENCESOUND) return PLUGIN_HANDLED } } else { g_bIsNextRoundNemesis = false ze_colored_print(0, "!gThe server doesn't have enough players to start nemesis round !n(!tat least 1!n)!n.") } return PLUGIN_CONTINUE } public AmbianceSound() { // Stop All Sounds StopSound() // Play The Ambiance Sound For All Players new szSound[64] ArrayGetString(g_szAmbianceSound, random_num(0, ArraySize(g_szAmbianceSound) - 1), szSound, charsmax(szSound)) for (new id = 1; id <= get_member_game(m_nMaxPlayers); id++) { if (!is_user_connected(id)) continue PlaySound(id, szSound) } // We should Set Task back again to replay (Repeated 5 times MAX) set_task(float(g_iAmbianceSoundDuration), "AmbianceSound", TASK_REAMBIENCESOUND, _, _, "a", 5) } public StartNemesis(taskid) { if (!g_iCountDown) { Set_Nemesis(GetRandomNemesis()) remove_task(taskid) return } set_hudmessage(random(256), random(256), random(256), -1.0, 0.21, 0, 0.8, 0.8) show_hudmessage(0, "Nemesis starts in %d second(s).", g_iCountDown--) } public cmd_start_nemesis(id, level, cid) { if (!cmd_access(id, STARTNEMESIS_ACCESS, cid, 0)) { client_print(id, print_console, "You have not access.") return PLUGIN_HANDLED } g_bIsNextRoundNemesis = true client_print(id, print_console, "Nemesis round will start next round.") return PLUGIN_HANDLED } public cmd_nemsis(id, level, cid) { if (!cmd_access(id, STARTNEMESIS_ACCESS, cid, 0)) { client_print(id, print_console, "You have not access.") return PLUGIN_HANDLED } // Retrieve arguments new arg[32], player read_argv(1, arg, charsmax(arg)) player = cmd_target(id, arg, (CMDTARGET_ONLY_ALIVE | CMDTARGET_ALLOW_SELF)) // Invalid target if (!player || !is_user_alive(player)) { ze_colored_print(id, "Invalid player.") return PLUGIN_HANDLED } // Target not allowed to be nemesis if (g_bIsNemesis[player]) { new player_name[32] get_user_name(player, player_name, charsmax(player_name)) client_print(id, print_console, "[ZE] %s is already nemesis.", player_name) return PLUGIN_HANDLED } Set_Nemesis(player) return PLUGIN_HANDLED } public Set_Nemesis(id) { g_bIsNemesis[id] = true if (!ze_is_user_zombie(id)) ze_set_user_zombie(id) #if defined USE_NEMESIS_LEAP ze_get_longjump(id) #endif #if defined USE_NEMESIS_MODEL new szPlayerModel[32], szModel[64] ArrayGetString(g_aModels_Nemesis_Player, random_num(0, ArraySize(g_aModels_Nemesis_Player) - 1), szPlayerModel, charsmax(szPlayerModel)) cs_set_user_model(id, szPlayerModel) ArrayGetString(g_aModels_Nemesis_Claws, random_num(0, ArraySize(g_aModels_Nemesis_Claws) - 1), szModel, charsmax(szModel)) cs_set_player_view_model(id, CSW_KNIFE, szModel) #endif if (get_pcvar_num(g_pCvarNemesisHP)) { set_entvar(id, var_health, get_pcvar_float(g_pCvarNemesisHP)) } if (get_pcvar_num(g_pCvarNemesisSpeed)) { ze_set_zombie_speed(id, get_pcvar_num(g_pCvarNemesisSpeed)) } if (get_pcvar_num(g_pCvarNemesisGravity)) { ze_set_user_gravity(id, get_pcvar_num(g_pCvarNemesisGravity)) } if (get_pcvar_num(g_pCvarNemesisKB)) { ze_set_user_knockback(id, get_pcvar_float(g_pCvarNemesisKB)) } if (get_pcvar_num(g_pCvarNemesisGlow)) { Set_Rendering(id, kRenderFxNone, 255, 0, 0, kRenderNormal, 15) } new szName[32] get_user_name(id, szName, charsmax(szName)) set_hudmessage(255, 0, 0, -1.0, 0.21, 0, 0.0, 5.0, 0.1, 1.5) show_hudmessage(id, "%s became Nemesis", szName) ze_colored_print(0, "!g%s !tbecame !gNemesis!n.", szName) ze_colored_print(id, "!gYou !tbecame !gNemesis!n.") } public UnSet_Nemesis(id) { if (!g_bIsNemesis[id] || !is_user_alive(id)) return g_bIsNemesis[id] = false #if defined USE_NEMESIS_LEAP ze_remove_longjump(id) #endif if (get_pcvar_num(g_pCvarNemesisSpeed)) { ze_reset_zombie_speed(id) } if (get_pcvar_num(g_pCvarNemesisGravity)) { ze_reset_user_gravity(id) } if (get_pcvar_num(g_pCvarNemesisKB)) { ze_reset_user_knockback(id) } if (get_pcvar_num(g_pCvarNemesisGlow)) { Set_Rendering(id) } } public GetRandomNemesis() { if (get_playersnum()) { new iPlayers[32], iSelected[33], iCount = 0, iTotalPlayers, id get_players(iPlayers, iTotalPlayers) for (new i = 0; i < iTotalPlayers; i++) { id = iPlayers[i] if (is_user_alive(id) && !g_bIsNemesis[id]) { iSelected[iCount++] = id } } return iSelected[random(--iCount)] } return 0 } public native_ze_is_user_nemesis(id) { if (!is_user_connected(id)) { log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id) return -1 } return g_bIsNemesis[id] } public native_ze_set_user_nemesis(id, bool:set) { if (!is_user_connected(id)) { log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id) return false } if (set) { if (!g_bIsNemesis[id]) Set_Nemesis(id) } else { if (g_bIsNemesis[id]) UnSet_Nemesis(id) } return true }
I create nemesis plugin but not work [Help]
just models and in update a round ambience
I complied the code of nemesis i put on my sv but is no working, is showing me bad load.
cause u r using older version of ze have to upgrade to 1.5
jack only 1 thing frost nade is not working on nemesis can u fix it plz?
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
When you use knive menu and choose one of them, you can walk in freeztime while nemesis counting is ON. Can you fix this?
which ze version u are using?czirimbolo wrote: ↑4 years ago When you use knive menu and choose one of them, you can walk in freeztime while nemesis counting is ON. Can you fix this?
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
1,5vkaran wrote: ↑4 years agowhich ze version u are using?czirimbolo wrote: ↑4 years ago When you use knive menu and choose one of them, you can walk in freeztime while nemesis counting is ON. Can you fix this?
nd nemesis plugin not working?czirimbolo wrote: ↑4 years ago1,5vkaran wrote: ↑4 years agowhich ze version u are using?czirimbolo wrote: ↑4 years ago When you use knive menu and choose one of them, you can walk in freeztime while nemesis counting is ON. Can you fix this?
as u said it only bugged in knife menu?czirimbolo wrote: ↑4 years ago When you use knive menu and choose one of them, you can walk in freeztime while nemesis counting is ON. Can you fix this?
i mean if u use knife menu it bugger or it always behave like this?
-
- Veteran Member
- Posts: 598
- Joined: 7 years ago
- Contact:
nemesis is working but when I choose one of the knives, I can walk in freezetime when NEMESIS round is ON. I am not gonna turn off my knives. Nemesis plugin is causing that problem. I've never had any problems with knive menu till now
dont forget to include cstrike after ze includekaran wrote: ↑4 years ago and also if u facing model bug add thisat public UnSet_Nemesis(id)Code: Select all
#if defined USE_NEMESIS_MODEL new szPlayerModel[32], szModel[64] ArrayGetString(g_aModels_Nemesis_Player, random_num(0, ArraySize(g_aModels_Nemesis_Player) - 1), szPlayerModel, charsmax(szPlayerModel)) cs_reset_user_model(id) #endif
and done
#include <cstrike>
for me yes it is did some changes to work with version 1.6
Can you give me Fixed Your Nemesis Mod i am using v1.6
i used this plugin
bugged
1. When Make nemesis its not block sv to respawn zm
2. skin bugged normal zm skin showing
bugged
1. When Make nemesis its not block sv to respawn zm
2. skin bugged normal zm skin showing
- #include <cstrike>
- #include <zombie_escape>
- // Uncomment to use custom model for nemesis
- // Note: This includes player model & claws
- #define USE_NEMESIS_MODEL
- // Uncomment to use leap for nemesis
- // Leap Code: https://escapers-zone.net/viewtopic.php?p=10582#p10582
- #define USE_NEMESIS_LEAP
- #define TASK_MAKE_NEMESIS 4949849
- #define TASK_AMBIENCESOUND 2020
- #define TASK_REAMBIENCESOUND 5050
- // Access to start nemesis round
- #define STARTNEMESIS_ACCESS ADMIN_KICK
- // Settings file
- new const ZE_SETTING_FILE[] = "zombie_escape.ini"
- #if defined USE_NEMESIS_MODEL
- // Default models
- new const g_szModels_Nemesis_Player[][] = { "nemesis_v2" }
- new const g_szModels_Nemesis_Claws[][] = { "models/zombie_escape/v_nemesis_knife_v2.mdl" }
- new Array:g_aModels_Nemesis_Player,
- Array:g_aModels_Nemesis_Claws
- #endif
- #if defined USE_NEMESIS_LEAP
- native ze_get_longjump(id)
- native ze_remove_longjump(id)
- #endif
- enum _:Colors
- {
- Red = 0,
- Green,
- Blue
- }
- new g_iAmbianceSoundDuration = 160 // Set ambience duration = highest sound duration
- new const szAmbianceSound[][] =
- {
- "zombie_escape/ze_ambiance1.mp3"
- }
- new bool:g_bIsNemesis[33],
- bool:g_bIsNextRoundNemesis = false,
- g_iCountDown,
- Array:g_szAmbianceSound,
- g_iNemesisNum = 0
- new g_pCvarNemesisHP,
- g_pCvarNemesisGravity,
- g_pCvarNemesisSpeed,
- //g_pCvarNemesisGlow,
- //g_pCvarNemesisGlowColor[Colors],
- g_pCvarNemesisKB,
- g_pCvarNemesisDmg,
- g_pCvarNemesisFreeze,
- g_pCvarNemesisFire
- public plugin_natives()
- {
- register_native("ze_is_user_nemesis", "native_ze_is_user_nemesis", 1)
- register_native("ze_set_user_nemesis", "native_ze_set_user_nemesis", 1)
- }
- public plugin_precache()
- {
- g_szAmbianceSound = ArrayCreate(64, 1)
- amx_load_setting_string_arr(ZE_SETTING_FILE, "Sounds", "Nemesis Round Ambiance", g_szAmbianceSound)
- new iIndex, szSound[64]
- if (ArraySize(g_szAmbianceSound) == 0)
- {
- for (iIndex = 0; iIndex < sizeof szAmbianceSound; iIndex++)
- ArrayPushString(g_szAmbianceSound, szAmbianceSound[iIndex])
- // Save to external file
- amx_save_setting_string_arr(ZE_SETTING_FILE, "Sounds", "Nemesis Round Ambiance", g_szAmbianceSound)
- }
- for (iIndex = 0; iIndex < ArraySize(g_szAmbianceSound); iIndex++)
- {
- ArrayGetString(g_szAmbianceSound, iIndex, szSound, charsmax(szSound))
- if (equal(szSound[strlen(szSound)-4], ".mp3"))
- {
- format(szSound, charsmax(szSound), "sound/%s", szSound)
- precache_generic(szSound)
- }
- else
- {
- precache_sound(szSound)
- }
- }
- #if defined USE_NEMESIS_MODEL
- // Initialize arrays
- g_aModels_Nemesis_Player = ArrayCreate(32, 1)
- g_aModels_Nemesis_Claws = ArrayCreate(64, 1)
- // Load from external file
- amx_load_setting_string_arr(ZE_SETTING_FILE, "Player Models", "NEMESIS MODEL", g_aModels_Nemesis_Player)
- amx_load_setting_string_arr(ZE_SETTING_FILE, "Weapon Models", "V_KNIFE NEMESIS", g_aModels_Nemesis_Claws)
- // If we couldn't load from file, use and save default ones
- if (ArraySize(g_aModels_Nemesis_Player) == 0)
- {
- for (iIndex = 0; iIndex < sizeof g_szModels_Nemesis_Player; iIndex++)
- ArrayPushString(g_aModels_Nemesis_Player, g_szModels_Nemesis_Player[iIndex])
- // Save to external file
- amx_save_setting_string_arr(ZE_SETTING_FILE, "Player Models", "NEMESIS", g_aModels_Nemesis_Player)
- }
- if (ArraySize(g_aModels_Nemesis_Claws) == 0)
- {
- for (iIndex = 0; iIndex < sizeof g_szModels_Nemesis_Claws; iIndex++)
- ArrayPushString(g_aModels_Nemesis_Claws, g_szModels_Nemesis_Claws[iIndex])
- // Save to external file
- amx_save_setting_string_arr(ZE_SETTING_FILE, "Weapon Models", "V_KNIFE NEMESIS", g_aModels_Nemesis_Claws)
- }
- // Precache models
- new player_model[32], model[64], model_path[128]
- for (iIndex = 0; iIndex < ArraySize(g_aModels_Nemesis_Player); iIndex++)
- {
- ArrayGetString(g_aModels_Nemesis_Player, iIndex, player_model, charsmax(player_model))
- formatex(model_path, charsmax(model_path), "models/player/%s/%s.mdl", player_model, player_model)
- precache_model(model_path)
- // Support modelT.mdl files
- formatex(model_path, charsmax(model_path), "models/player/%s/%sT.mdl", player_model, player_model)
- if (file_exists(model_path)) precache_model(model_path)
- }
- for (iIndex = 0; iIndex < ArraySize(g_aModels_Nemesis_Claws); iIndex++)
- {
- ArrayGetString(g_aModels_Nemesis_Claws, iIndex, model, charsmax(model))
- precache_model(model)
- }
- #endif
- }
- public plugin_init()
- {
- register_plugin("[ZE] Addons: Nemesis", "2.0", "Jack")
- RegisterHam(Ham_TakeDamage, "player", "Fw_TakeDamage")
- register_clcmd("ze_start_nemesis_next", "cmd_start_nemesis", STARTNEMESIS_ACCESS)
- register_concmd("ze_nemesis", "cmd_nemsis", STARTNEMESIS_ACCESS)
- g_pCvarNemesisHP = register_cvar("ze_nemesis_hp", "20000") // Nemesis health - Set 0 to use zombie HP
- g_pCvarNemesisGravity = register_cvar("ze_nemesis_gravity", "600") // Nemesis gravity - Set 0 to use zombie gravity
- g_pCvarNemesisSpeed = register_cvar("ze_nemesis_speed", "300") // Nemesis speed - Set 0 to use zombie speed
- /*g_pCvarNemesisGlow = register_cvar("ze_nemesis_glow", "1") // Nemesis glow - 1 = enable | 0 = disable
- g_pCvarNemesisGlowColor[Red] = register_cvar("ze_nemesis_glow_r", "255") // Nemesis glow color RED
- g_pCvarNemesisGlowColor[Green] = register_cvar("ze_nemesis_glow_g", "255") // Nemesis glow color GREEN
- g_pCvarNemesisGlowColor[Blue] = register_cvar("ze_nemesis_glow_b", "255") // Nemesis glow color BLUE*/
- g_pCvarNemesisKB = register_cvar("ze_nemesis_kb", "200.0") // Nemesis knockback - Set 0 to use zombie knockback
- g_pCvarNemesisDmg = register_cvar("ze_nemesis_dmg", "200.0") // Nemesis damage
- g_pCvarNemesisFreeze = register_cvar("ze_nemesis_freeze", "0") // Nemesis get frozen? - 1 = doesn't get frozen | 0 = gets frozen
- g_pCvarNemesisFire = register_cvar("ze_nemesis_fire", "1") // Nemesis set on fire? - 1 = doesn't set on fire | 0 = set on fire
- }
- /*public client_disconnected(id)
- {
- if (g_bIsNemesis[id])
- {
- new szPlayerName[2][32], iNewNemId
- get_user_name(id, szPlayerName[0], charsmax(szPlayerName))
- iNewNemId = GetRandomNemesis()
- get_user_name(iNewNemId, szPlayerName[1], charsmax(szPlayerName))
- g_bIsNemesis[id] = false
- Set_Nemesis(iNewNemId)
- ze_colored_print(0, "!g%s !thas left !n& !g%s !thas become nemesis!n.", szPlayerName[0], szPlayerName[1])
- }
- }*/
- public client_putinserver(id)
- {
- if (g_bIsNemesis[id])
- g_bIsNemesis[id] = false
- }
- public ze_user_infected_pre(iVictim, iAttacker)
- {
- if (g_bIsNemesis[iAttacker] && !ze_is_user_zombie(iVictim))
- {
- ExecuteHamB(Ham_Killed, iVictim, iAttacker, 0)
- return 1
- }
- return 0
- }
- public Fw_TakeDamage(iVictim, iInfector, iAttacker, Float:iDamage)
- {
- if (iVictim == iAttacker || !is_user_alive(iAttacker))
- return HAM_IGNORED
- if (g_bIsNemesis[iAttacker] && !ze_is_user_zombie(iVictim) && iInfector == iAttacker)
- {
- ExecuteHamB(Ham_Killed, iVictim, iAttacker, 0)
- return 1
- }
- return HAM_IGNORED
- }
- public ze_fire_pre(id)
- {
- if (g_bIsNemesis[id] && get_pcvar_num(g_pCvarNemesisFire))
- return PLUGIN_HANDLED
- return PLUGIN_CONTINUE
- }
- public ze_frost_pre(id)
- {
- if (g_bIsNemesis[id] && get_pcvar_num(g_pCvarNemesisFreeze))
- return PLUGIN_HANDLED
- return PLUGIN_CONTINUE
- }
- public ze_user_humanized(id)
- {
- UnSet_Nemesis(id)
- }
- public ze_roundend()
- {
- remove_task(TASK_AMBIENCESOUND)
- remove_task(TASK_REAMBIENCESOUND)
- remove_task(TASK_MAKE_NEMESIS)
- for (new id = 0; id <= get_member_game(m_nMaxPlayers); id++)
- {
- if (is_user_alive(id) && g_bIsNemesis[id])
- UnSet_Nemesis(id)
- }
- }
- public ze_game_started_pre()
- {
- if (get_playersnum())
- {
- if (g_bIsNextRoundNemesis)
- {
- g_bIsNextRoundNemesis = false
- g_iCountDown = 17
- set_task(1.0, "StartNemesis", TASK_MAKE_NEMESIS, _, _, "b")
- set_task(5.0, "AmbianceSound", TASK_AMBIENCESOUND)
- return PLUGIN_HANDLED
- }
- }
- else
- {
- g_bIsNextRoundNemesis = false
- ze_colored_print(0, "!gThe server doesn't have enough players to start nemesis round !n(!tat least 1!n)!n.")
- }
- return PLUGIN_CONTINUE
- }
- public AmbianceSound()
- {
- // Stop All Sounds
- StopSound()
- // Play The Ambiance Sound For All Players
- new szSound[64]
- ArrayGetString(g_szAmbianceSound, random_num(0, ArraySize(g_szAmbianceSound) - 1), szSound, charsmax(szSound))
- for (new id = 1; id <= get_member_game(m_nMaxPlayers); id++)
- {
- if (!is_user_connected(id))
- continue
- PlaySound(id, szSound)
- }
- // We should Set Task back again to replay (Repeated 5 times MAX)
- set_task(float(g_iAmbianceSoundDuration), "AmbianceSound", TASK_REAMBIENCESOUND, _, _, "a", 5)
- }
- public StartNemesis(taskid)
- {
- if (!g_iCountDown)
- {
- new iNemesis, id
- while (iNemesis < RequiredNemesis())
- {
- id = GetRandomAlive(random_num(1, GetAllAlivePlayersNum()))
- if (!is_user_alive(id) || g_bIsNemesis[id])
- continue
- Set_Nemesis(id)
- iNemesis++
- }
- g_iNemesisNum = iNemesis
- remove_task(taskid)
- return
- }
- set_hudmessage(random(256), random(256), random(256), -1.0, 0.21, 0, 0.8, 0.8)
- show_hudmessage(0, "Nemesis starts in %d second(s).", g_iCountDown--)
- }
- public cmd_start_nemesis(id, level, cid)
- {
- if (!cmd_access(id, STARTNEMESIS_ACCESS, cid, 0))
- {
- client_print(id, print_console, "You have not access.")
- return PLUGIN_HANDLED
- }
- g_bIsNextRoundNemesis = true
- client_print(id, print_console, "Nemesis round will start next round.")
- return PLUGIN_HANDLED
- }
- public cmd_nemsis(id, level, cid)
- {
- if (!cmd_access(id, STARTNEMESIS_ACCESS, cid, 0))
- {
- client_print(id, print_console, "You have not access.")
- return PLUGIN_HANDLED
- }
- // Retrieve arguments
- new arg[32], player
- read_argv(1, arg, charsmax(arg))
- player = cmd_target(id, arg, (CMDTARGET_ONLY_ALIVE | CMDTARGET_ALLOW_SELF))
- // Invalid target
- if (!player || !is_user_alive(player))
- {
- ze_colored_print(id, "Invalid player.")
- return PLUGIN_HANDLED
- }
- // Target not allowed to be nemesis
- if (g_bIsNemesis[player])
- {
- new player_name[32]
- get_user_name(player, player_name, charsmax(player_name))
- client_print(id, print_console, "[ZE] %s is already nemesis.", player_name)
- return PLUGIN_HANDLED
- }
- Set_Nemesis(player)
- return PLUGIN_HANDLED
- }
- public Set_Nemesis(id)
- {
- g_bIsNemesis[id] = true
- if (!ze_is_user_zombie(id))
- ze_set_user_zombie(id)
- #if defined USE_NEMESIS_LEAP
- ze_get_longjump(id)
- #endif
- #if defined USE_NEMESIS_MODEL
- new szPlayerModel[32], szModel[64]
- ArrayGetString(g_aModels_Nemesis_Player, random_num(0, ArraySize(g_aModels_Nemesis_Player) - 1), szPlayerModel, charsmax(szPlayerModel))
- cs_set_user_model(id, szPlayerModel)
- ArrayGetString(g_aModels_Nemesis_Claws, random_num(0, ArraySize(g_aModels_Nemesis_Claws) - 1), szModel, charsmax(szModel))
- cs_set_player_view_model(id, CSW_KNIFE, szModel)
- #endif
- if (get_pcvar_num(g_pCvarNemesisHP))
- {
- set_entvar(id, var_health, get_pcvar_float(g_pCvarNemesisHP))
- }
- if (get_pcvar_num(g_pCvarNemesisSpeed))
- {
- ze_set_zombie_speed(id, get_pcvar_num(g_pCvarNemesisSpeed))
- }
- if (get_pcvar_num(g_pCvarNemesisGravity))
- {
- ze_set_user_gravity(id, get_pcvar_num(g_pCvarNemesisGravity))
- }
- if (get_pcvar_num(g_pCvarNemesisKB))
- {
- ze_set_user_knockback(id, get_pcvar_float(g_pCvarNemesisKB))
- }
- /*if (get_pcvar_num(g_pCvarNemesisGlow))
- {
- set_user_rendering(id, fx = kRenderFxNone, r = 255, g = 0, b = 0, render = kRenderNormal, amount = 10)
- }*/
- new szName[32]
- get_user_name(id, szName, charsmax(szName))
- set_hudmessage(255, 0, 0, -1.0, 0.21, 0, 0.0, 5.0, 0.1, 1.5)
- show_hudmessage(id, "%s became Nemesis", szName)
- ze_colored_print(0, "!g%s !tbecame !gNemesis!n.", szName)
- ze_colored_print(id, "!gYou !tbecame !gNemesis!n.")
- }
- public UnSet_Nemesis(id)
- {
- if (!g_bIsNemesis[id] || !is_user_alive(id))
- return
- g_bIsNemesis[id] = false
- #if defined USE_NEMESIS_LEAP
- ze_remove_longjump(id)
- #endif
- #if defined USE_NEMESIS_MODEL
- new szPlayerModel[32], szModel[64]
- ArrayGetString(g_aModels_Nemesis_Player, random_num(0, ArraySize(g_aModels_Nemesis_Player) - 1), szPlayerModel, charsmax(szPlayerModel))
- cs_reset_user_model(id)
- #endif
- if (get_pcvar_num(g_pCvarNemesisSpeed))
- {
- ze_reset_zombie_speed(id)
- }
- if (get_pcvar_num(g_pCvarNemesisGravity))
- {
- ze_reset_user_gravity(id)
- }
- if (get_pcvar_num(g_pCvarNemesisKB))
- {
- ze_reset_user_knockback(id)
- }
- /*if (get_pcvar_num(g_pCvarNemesisGlow))
- {
- Set_Rendering(id)
- }*/
- }
- public GetRandomNemesis()
- {
- new iPlayers[32], iSelected[33], iCount = 0, iTotalPlayers, iRandomIndex
- get_players(iPlayers, iTotalPlayers)
- if (iTotalPlayers > 0)
- {
- for (new i = 0; i < iTotalPlayers; i++)
- {
- iRandomIndex = iPlayers[i]
- if (is_user_alive(iRandomIndex))
- {
- iSelected[iCount++] = iRandomIndex
- }
- }
- return iSelected[random(--iCount)]
- }
- return 0
- }
- public native_ze_is_user_nemesis(id)
- {
- if (!is_user_connected(id))
- {
- log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
- return -1
- }
- return g_bIsNemesis[id]
- }
- public native_ze_set_user_nemesis(id, bool:set)
- {
- if (!is_user_connected(id))
- {
- log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
- return false
- }
- if (set)
- {
- if (!g_bIsNemesis[id])
- Set_Nemesis(id)
- }
- else
- {
- if (g_bIsNemesis[id])
- UnSet_Nemesis(id)
- }
- return true
- }
- stock RequiredNemesis()
- {
- switch(GetAllAlivePlayersNum())
- {
- case 2..5: return 1
- case 6..15: return 2
- case 16..25: return 3
- case 26..32: return 4
- }
- return 0
- }
- public native_ze_get_nemesis_number()
- {
- return g_iNemesisNum
- }
Release and fixed!
viewtopic.php?f=15&p=12044#p12044
viewtopic.php?f=15&p=12044#p12044
Create an account or sign in to join the discussion
You need to be a member in order to post a reply
Create an account
Not a member? register to join our community
Members can start their own topics & subscribe to topics
It’s free and only takes a minute
Sign in
Who is online
Users browsing this forum: No registered users and 5 guests