Re: I create nemesis plugin but not work [Help]
Posted: 04 Sep 2019, 21:10
Not Thing in Logs
!?
Zombie Escape Mod for Counter-Strike 1.6
https://escapers-zone.net/
Not Thing in Logs
i test true player (human) not bot -_-Muhammet20 wrote: ↑4 years ago wtf xd, man have you tested it really or no? i saying for lizou
try to test it with real persons, not bots
ok thanks
ok thanks
now its working but if i uncomment models ;this error accuring while compiling the plugin
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_HEROINE 4949849
// Access to start nemesis round
#define STARTNEMESIS_ACCESS ADMIN_LEVEL_H
#if defined USE_NEMESIS_MODEL
// Settings file
new const ZE_SETTING_FILE[] = "zombie_escape.ini"
// 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 bool:g_bIsNemesis[33],
bool:g_bIsNextRoundNemesis = false,
g_iNemesisNum = 0
new g_pCvarNemesisHP,
g_pCvarNemesisGravity,
g_pCvarNemesisSpeed,
g_pCvarNemesisGlow,
g_pCvarNemesisGlowColor[Colors],
g_pCvarNemesisKB,
g_pCvarNemesisFreeze,
g_pCvarNemesisFire,
g_pCvarFreezetime
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)
register_native("ze_get_nemesis_number", "native_ze_get_nemesis_number", 1)
}
#if defined USE_NEMESIS_MODEL
public plugin_precache()
{
// 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
new index
if (ArraySize(g_aModels_Nemesis_Player) == 0)
{
for (index = 0; index < sizeof g_szModels_Nemesis_Player; index++)
ArrayPushString(g_aModels_Nemesis_Player, g_szModels_Nemesis_Player[index])
// 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 (index = 0; index < sizeof g_szModels_Nemesis_Claws; index++)
ArrayPushString(g_aModels_Nemesis_Claws, g_szModels_Nemesis_Claws[index])
// 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 (index = 0; index < ArraySize(g_aModels_Nemesis_Player); index++)
{
ArrayGetString(g_aModels_Nemesis_Player, index, 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 (index = 0; index < ArraySize(g_aModels_Nemesis_Claws); index++)
{
ArrayGetString(g_aModels_Nemesis_Claws, index, model, charsmax(model))
precache_model(model)
}
}
#endif
public plugin_init()
{
register_plugin("[ZE] Addons: Nemesis", "1.0", "Jack")
register_clcmd("ze_start_nemesis_next", "cmd_nemesis", 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_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 plugin_cfg()
{
g_pCvarFreezetime = get_cvar_pointer("ze_freeze_time")
}
public client_disconnected(id)
{
UnSet_Nemesis(id)
}
public client_putinserver(id)
{
UnSet_Nemesis(id)
}
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 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()
{
for (new id = 0; id <= get_member_game(m_nMaxPlayers); id++)
{
if (is_user_alive(id) && g_bIsNemesis[id])
UnSet_Nemesis(id)
}
g_iNemesisNum = 0
}
public ze_game_started_pre()
{
while (g_bIsNextRoundNemesis)
{
g_bIsNextRoundNemesis = false
ze_colored_print(0, "!tThis is nemesis round.")
set_task(get_pcvar_float(g_pCvarFreezetime), "ChooseNemesis", TASK_MAKE_HEROINE)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public ChooseNemesis(taskid)
{
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
}
public cmd_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.")
new szName[32]
get_user_name(id, szName, charsmax(szName))
ze_colored_print(0, "!g%s !thas activated a nemesis round. Next round is nemesis.", szName)
return PLUGIN_HANDLED
}
public Set_Nemesis(id)
{
if (g_bIsNemesis[id] || !is_user_alive(id))
return
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_float(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, -1.0, 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()
{
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
}
Code: Select all
#include <zombie_escape>
native ze_is_user_nemesis(id)
native ze_set_user_nemesis(id, bool:set)
// Access to start nemesis menu
#define NEMESISMENU_ACCESS ADMIN_LEVEL_H
#define MENU_PAGE_PLAYERS g_menu_data[id]
const OFFSET_CSMENUCODE = 205
new g_menu_data[33]
public plugin_natives()
{
register_native("ze_open_nemesis_menu", "native_ze_open_nemesis_menu", 1)
}
public plugin_init()
{
register_plugin("[ZE] Nemesis Menu", "1.0", "Jack")
register_concmd("ze_nemmenu", "cmd_nemmenu", NEMESISMENU_ACCESS)
}
public cmd_nemmenu(id, level, cid)
{
if (!cmd_access(id, NEMESISMENU_ACCESS, cid, 0))
{
client_print(id, print_console, "You don't have access.")
return PLUGIN_HANDLED
}
open_nemesis_menu(id)
return PLUGIN_HANDLED
}
public open_nemesis_menu(id)
{
static szMenu[250], szName[32]
new iMenuID, index, buffer[2]
iMenuID = menu_create("Make nemesis", "menu_player_list")
for (index = 0; index <= get_member_game(m_nMaxPlayers); index++)
{
if (!is_user_alive(index))
continue
get_user_name(index, szName, charsmax(szName))
formatex(szMenu, charsmax(szMenu), "%s \r[%s]", szName, ze_is_user_zombie(index) ? "Zombie" : "Human")
buffer[0] = index
buffer[1] = 0
menu_additem(iMenuID, szMenu, buffer)
}
// Back - Next - Exit
formatex(szMenu, charsmax(szMenu), "%L", id, "MENU_BACK")
menu_setprop(iMenuID, MPROP_BACKNAME, szMenu)
formatex(szMenu, charsmax(szMenu), "%L", id, "MENU_NEXT")
menu_setprop(iMenuID, MPROP_NEXTNAME, szMenu)
formatex(szMenu, charsmax(szMenu), "%L", id, "MENU_EXIT")
menu_setprop(iMenuID, MPROP_EXITNAME, szMenu)
MENU_PAGE_PLAYERS = min(MENU_PAGE_PLAYERS, menu_pages(iMenuID) - 1)
set_pdata_int(id, OFFSET_CSMENUCODE, 0)
menu_display(id, iMenuID, MENU_PAGE_PLAYERS)
}
public menu_player_list(id, menuid, item)
{
if (item == MENU_EXIT)
{
MENU_PAGE_PLAYERS = 0
menu_destroy(menuid)
open_nemesis_menu(id)
return PLUGIN_HANDLED
}
// Remember player's menu page
MENU_PAGE_PLAYERS = item / 7
// Retrieve player id
new buffer[2], dummy, player
menu_item_getinfo(menuid, item, dummy, buffer, charsmax(buffer), _, _, dummy)
player = buffer[0]
if (is_user_alive(player))
{
new szName[2][32]
get_user_name(id, szName[0], charsmax(szName))
get_user_name(player, szName[1], charsmax(szName))
ze_set_user_nemesis(player, !ze_is_user_nemesis(player))
ze_colored_print(0, "!tAdmin !g%s!n: !g%s !tturned into %s!n.", szName[0], szName[1], ze_is_user_nemesis(player) ? "zombie" : "nemesis")
}
else
ze_colored_print(id, "Player isn't alive.")
menu_destroy(menuid)
open_nemesis_menu(id)
return PLUGIN_HANDLED
}
public native_ze_open_nemesis_menu(id)
{
if (!is_user_connected(id))
{
log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id)
return -1
}
open_nemesis_menu(id)
return true
}
now frost nade is not working for nemesis; can u fix it plzMohamed Alaa wrote: ↑4 years ago For the menu try:
What do you mean by external skin?Code: Select all
#include <zombie_escape> native ze_is_user_nemesis(id) native ze_set_user_nemesis(id, bool:set) // Access to start nemesis menu #define NEMESISMENU_ACCESS ADMIN_LEVEL_H #define MENU_PAGE_PLAYERS g_menu_data[id] const OFFSET_CSMENUCODE = 205 new g_menu_data[33] public plugin_natives() { register_native("ze_open_nemesis_menu", "native_ze_open_nemesis_menu", 1) } public plugin_init() { register_plugin("[ZE] Nemesis Menu", "1.0", "Jack") register_concmd("ze_nemmenu", "cmd_nemmenu", NEMESISMENU_ACCESS) } public cmd_nemmenu(id, level, cid) { if (!cmd_access(id, NEMESISMENU_ACCESS, cid, 0)) { client_print(id, print_console, "You don't have access.") return PLUGIN_HANDLED } open_nemesis_menu(id) return PLUGIN_HANDLED } public open_nemesis_menu(id) { static szMenu[250], szName[32] new iMenuID, index, buffer[2] iMenuID = menu_create("Make nemesis", "menu_player_list") for (index = 0; index <= get_member_game(m_nMaxPlayers); index++) { if (!is_user_alive(index)) continue get_user_name(index, szName, charsmax(szName)) formatex(szMenu, charsmax(szMenu), "%s \r[%s]", szName, ze_is_user_zombie(index) ? "Zombie" : "Human") buffer[0] = index buffer[1] = 0 menu_additem(iMenuID, szMenu, buffer) } // Back - Next - Exit formatex(szMenu, charsmax(szMenu), "%L", id, "MENU_BACK") menu_setprop(iMenuID, MPROP_BACKNAME, szMenu) formatex(szMenu, charsmax(szMenu), "%L", id, "MENU_NEXT") menu_setprop(iMenuID, MPROP_NEXTNAME, szMenu) formatex(szMenu, charsmax(szMenu), "%L", id, "MENU_EXIT") menu_setprop(iMenuID, MPROP_EXITNAME, szMenu) MENU_PAGE_PLAYERS = min(MENU_PAGE_PLAYERS, menu_pages(iMenuID) - 1) set_pdata_int(id, OFFSET_CSMENUCODE, 0) menu_display(id, iMenuID, MENU_PAGE_PLAYERS) } public menu_player_list(id, menuid, item) { if (item == MENU_EXIT) { MENU_PAGE_PLAYERS = 0 menu_destroy(menuid) open_nemesis_menu(id) return PLUGIN_HANDLED } // Remember player's menu page MENU_PAGE_PLAYERS = item / 7 // Retrieve player id new buffer[2], dummy, player menu_item_getinfo(menuid, item, dummy, buffer, charsmax(buffer), _, _, dummy) player = buffer[0] if (is_user_alive(player)) { new szName[2][32] get_user_name(id, szName[0], charsmax(szName)) get_user_name(player, szName[1], charsmax(szName)) ze_set_user_nemesis(player, !ze_is_user_nemesis(player)) ze_colored_print(0, "!tAdmin !g%s!n: !g%s !tturned into %s!n.", szName[0], szName[1], ze_is_user_nemesis(player) ? "zombie" : "nemesis") } else ze_colored_print(id, "Player isn't alive.") menu_destroy(menuid) open_nemesis_menu(id) return PLUGIN_HANDLED } public native_ze_open_nemesis_menu(id) { if (!is_user_connected(id)) { log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id) return -1 } open_nemesis_menu(id) return true }
Setkaran wrote: ↑4 years agonow frost nade is not working for nemesis; can u fix it plzMohamed Alaa wrote: ↑4 years ago For the menu try:
What do you mean by external skin?Code: Select all
#include <zombie_escape> native ze_is_user_nemesis(id) native ze_set_user_nemesis(id, bool:set) // Access to start nemesis menu #define NEMESISMENU_ACCESS ADMIN_LEVEL_H #define MENU_PAGE_PLAYERS g_menu_data[id] const OFFSET_CSMENUCODE = 205 new g_menu_data[33] public plugin_natives() { register_native("ze_open_nemesis_menu", "native_ze_open_nemesis_menu", 1) } public plugin_init() { register_plugin("[ZE] Nemesis Menu", "1.0", "Jack") register_concmd("ze_nemmenu", "cmd_nemmenu", NEMESISMENU_ACCESS) } public cmd_nemmenu(id, level, cid) { if (!cmd_access(id, NEMESISMENU_ACCESS, cid, 0)) { client_print(id, print_console, "You don't have access.") return PLUGIN_HANDLED } open_nemesis_menu(id) return PLUGIN_HANDLED } public open_nemesis_menu(id) { static szMenu[250], szName[32] new iMenuID, index, buffer[2] iMenuID = menu_create("Make nemesis", "menu_player_list") for (index = 0; index <= get_member_game(m_nMaxPlayers); index++) { if (!is_user_alive(index)) continue get_user_name(index, szName, charsmax(szName)) formatex(szMenu, charsmax(szMenu), "%s \r[%s]", szName, ze_is_user_zombie(index) ? "Zombie" : "Human") buffer[0] = index buffer[1] = 0 menu_additem(iMenuID, szMenu, buffer) } // Back - Next - Exit formatex(szMenu, charsmax(szMenu), "%L", id, "MENU_BACK") menu_setprop(iMenuID, MPROP_BACKNAME, szMenu) formatex(szMenu, charsmax(szMenu), "%L", id, "MENU_NEXT") menu_setprop(iMenuID, MPROP_NEXTNAME, szMenu) formatex(szMenu, charsmax(szMenu), "%L", id, "MENU_EXIT") menu_setprop(iMenuID, MPROP_EXITNAME, szMenu) MENU_PAGE_PLAYERS = min(MENU_PAGE_PLAYERS, menu_pages(iMenuID) - 1) set_pdata_int(id, OFFSET_CSMENUCODE, 0) menu_display(id, iMenuID, MENU_PAGE_PLAYERS) } public menu_player_list(id, menuid, item) { if (item == MENU_EXIT) { MENU_PAGE_PLAYERS = 0 menu_destroy(menuid) open_nemesis_menu(id) return PLUGIN_HANDLED } // Remember player's menu page MENU_PAGE_PLAYERS = item / 7 // Retrieve player id new buffer[2], dummy, player menu_item_getinfo(menuid, item, dummy, buffer, charsmax(buffer), _, _, dummy) player = buffer[0] if (is_user_alive(player)) { new szName[2][32] get_user_name(id, szName[0], charsmax(szName)) get_user_name(player, szName[1], charsmax(szName)) ze_set_user_nemesis(player, !ze_is_user_nemesis(player)) ze_colored_print(0, "!tAdmin !g%s!n: !g%s !tturned into %s!n.", szName[0], szName[1], ze_is_user_nemesis(player) ? "zombie" : "nemesis") } else ze_colored_print(id, "Player isn't alive.") menu_destroy(menuid) open_nemesis_menu(id) return PLUGIN_HANDLED } public native_ze_open_nemesis_menu(id) { if (!is_user_connected(id)) { log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player id (%d)", id) return -1 } open_nemesis_menu(id) return true }
ze_nemesis_freeze
to 1 and the nemesis will be frozen when they attacked with frost nade