sorry for double post but sometimes the first zombie dont appear and in logs appear this:
L 03/08/2015 - 22
7:44: Start of error session.
L 03/08/2015 - 22
7:44: Info (map "zm_foda") (file "addons/amxmodx/logs/error_20150308.log")
L 03/08/2015 - 22
7:44: [zp50_zp43_compat.amxx] ERROR - first zombie index not found!
L 03/08/2015 - 22
7:44: [AMXX] Displaying debug trace (plugin "zp50_zp43_compat.amxx", version "5.0.5")
L 03/08/2015 - 22
7:44: [AMXX] Run time error 27: unknown error
L 03/08/2015 - 22
7:44: [AMXX] [0] zp50_zp43_compat.sma::zp_fw_gamemodes_start (line 146)
PHP Code:
public zp_fw_gamemodes_start(game_mode_id)
{
if (game_mode_id == g_GameModeInfectionID)
{
// Get first zombie index
new player_index = 1
while ((!is_user_alive(player_index) || !zp_core_is_zombie(player_index)) && player_index <= g_MaxPlayers)
player_index++
if (player_index > g_MaxPlayers)
{
abort(AMX_ERR_GENERAL, "ERROR - first zombie index not found!")
player_index = 0
}
ExecuteForward(g_Forwards[FW_ROUND_STARTED], g_ForwardResult, MODE_INFECTION, player_index)
}
else if (game_mode_id == g_GameModeMultiID)
{
ExecuteForward(g_Forwards[FW_ROUND_STARTED], g_ForwardResult, MODE_MULTI, 0)
}
else if (game_mode_id == g_GameModeNemesisID)
{
// Get nemesis index
new player_index = 1
while ((!is_user_alive(player_index) || !zp_class_nemesis_get(player_index)) && player_index <= g_MaxPlayers)
player_index++
if (player_index > g_MaxPlayers)
{
abort(AMX_ERR_GENERAL, "ERROR - nemesis index not found!") //this is the line
player_index = 0
}
ExecuteForward(g_Forwards[FW_ROUND_STARTED], g_ForwardResult, MODE_NEMESIS, player_index)
}
else if (game_mode_id == g_GameModeSurvivorID)
{
// Get survivor index
new player_index = 1
while ((!is_user_alive(player_index) || !zp_class_survivor_get(player_index)) && player_index <= g_MaxPlayers)
player_index++
if (player_index > g_MaxPlayers)
{
abort(AMX_ERR_GENERAL, "ERROR - survivor index not found!")
player_index = 0
}
ExecuteForward(g_Forwards[FW_ROUND_STARTED], g_ForwardResult, MODE_SURVIVOR, player_index)
}
else if (game_mode_id == g_GameModeSwarmID)
{
ExecuteForward(g_Forwards[FW_ROUND_STARTED], g_ForwardResult, MODE_SWARM, 0)
}
else if (game_mode_id == g_GameModePlagueID)
{
ExecuteForward(g_Forwards[FW_ROUND_STARTED], g_ForwardResult, MODE_PLAGUE, 0)
}
else
{
// Custom game mode started, pass MODE_CUSTOM (0) as mode parameter
ExecuteForward(g_Forwards[FW_ROUND_STARTED], g_ForwardResult, MODE_CUSTOM, 0)
}
g_ModeStarted = true
}
I do not understand why this happens I have the code mode of infection in this form:
PHP Code:
/*================================================================================
---------------------------------
-*- [ZP] Game Mode: Infection -*-
---------------------------------
This plugin is part of Zombie Plague Mod and is distributed under the
terms of the GNU General Public License. Check ZP_ReadMe.txt for details.
================================================================================*/
#include <amxmodx>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <cs_teams_api>
#include <cs_ham_bots_api>
#include <zp50_gamemodes>
#include <zp50_deathmatch>
// HUD messages
#define HUD_EVENT_X -1.0
#define HUD_EVENT_Y 0.17
#define HUD_EVENT_R 255
#define HUD_EVENT_G 0
#define HUD_EVENT_B 0
new g_MaxPlayers
new g_HudSync
new g_TargetPlayer, g_TargetPlayer2, g_TargetPlayer3
new cvar_infection_chance, cvar_infection_min_players
new cvar_infection_show_hud
new cvar_infection_allow_respawn, cvar_respawn_after_last_human
new cvar_zombie_first_hp_multiplier
new cvar_zombie_second_hp, cvar_zombie_third_hp
public plugin_precache()
{
// Register game mode at precache (plugin gets paused after this)
register_plugin("[ZP] Game Mode: Infection", ZP_VERSION_STRING, "ZP Dev Team")
new game_mode_id = zp_gamemodes_register("Infection Mode")
zp_gamemodes_set_default(game_mode_id)
// Create the HUD Sync Objects
g_HudSync = CreateHudSyncObj()
g_MaxPlayers = get_maxplayers()
cvar_infection_chance = register_cvar("zp_infection_chance", "1")
cvar_infection_min_players = register_cvar("zp_infection_min_players", "0")
cvar_infection_show_hud = register_cvar("zp_infection_show_hud", "1")
cvar_infection_allow_respawn = register_cvar("zp_infection_allow_respawn", "1")
cvar_respawn_after_last_human = register_cvar("zp_respawn_after_last_human", "1")
cvar_zombie_first_hp_multiplier = register_cvar("zp_zombie_first_hp_multiplier", "2.0")
cvar_zombie_second_hp = register_cvar("zp_zombie_second_hp", "3.0")
cvar_zombie_third_hp = register_cvar("zp_zombie_third_hp", "2.0")
}
// Deathmatch module's player respawn forward
public zp_fw_deathmatch_respawn_pre(id)
{
// Respawning allowed?
if (!get_pcvar_num(cvar_infection_allow_respawn))
return PLUGIN_HANDLED;
// Respawn if only the last human is left?
if (!get_pcvar_num(cvar_respawn_after_last_human) && zp_core_get_human_count() == 1)
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public zp_fw_gamemodes_choose_pre(game_mode_id, skipchecks)
{
if (!skipchecks)
{
// Random chance
if (random_num(1, get_pcvar_num(cvar_infection_chance)) != 1)
return PLUGIN_HANDLED;
// Min players
if (GetAliveCountHuman() < get_pcvar_num(cvar_infection_min_players))
return PLUGIN_HANDLED;
}
// Game mode allowed
return PLUGIN_CONTINUE;
}
public zp_fw_gamemodes_choose_post(game_mode_id, target_player)
{
// Pick player randomly?
g_TargetPlayer = (target_player == RANDOM_TARGET_PLAYER) ? GetRandomAlive(random_num(1, GetAliveCount())) : target_player
g_TargetPlayer2 = (target_player == RANDOM_TARGET_PLAYER) ? GetRandomAlive(random_num(1, GetAliveCount())) : target_player
g_TargetPlayer3 = (target_player == RANDOM_TARGET_PLAYER) ? GetRandomAlive(random_num(1, GetAliveCount())) : target_player
}
public zp_fw_gamemodes_start()
{
// Allow infection for this game mode
zp_gamemodes_set_allow_infect()
switch (GetAliveCountHuman())
{
case 0 .. 10:
{
if(is_user_alive(g_TargetPlayer))
{
zp_core_infect(g_TargetPlayer, g_TargetPlayer)
set_user_health(g_TargetPlayer, floatround(get_user_health(g_TargetPlayer) * get_pcvar_float(cvar_zombie_first_hp_multiplier)))
}
}
case 11 .. 20:
{
if(is_user_alive(g_TargetPlayer2))
{
zp_core_infect(g_TargetPlayer2, g_TargetPlayer2)
set_user_health(g_TargetPlayer2, floatround(get_user_health(g_TargetPlayer2) * get_pcvar_float(cvar_zombie_second_hp)))
}
if(is_user_alive(g_TargetPlayer))
{
zp_core_infect(g_TargetPlayer, g_TargetPlayer)
set_user_health(g_TargetPlayer, floatround(get_user_health(g_TargetPlayer) * get_pcvar_float(cvar_zombie_first_hp_multiplier)))
}
}
case 21 .. 32:
{
if(is_user_alive(g_TargetPlayer3))
{
zp_core_infect(g_TargetPlayer3, g_TargetPlayer3)
set_user_health(g_TargetPlayer3, floatround(get_user_health(g_TargetPlayer3) * get_pcvar_float(cvar_zombie_third_hp)))
}
if(is_user_alive(g_TargetPlayer2))
{
zp_core_infect(g_TargetPlayer2, g_TargetPlayer2)
set_user_health(g_TargetPlayer2, floatround(get_user_health(g_TargetPlayer2) * get_pcvar_float(cvar_zombie_second_hp)))
}
if(is_user_alive(g_TargetPlayer))
{
zp_core_infect(g_TargetPlayer, g_TargetPlayer)
set_user_health(g_TargetPlayer, floatround(get_user_health(g_TargetPlayer) * get_pcvar_float(cvar_zombie_first_hp_multiplier)))
}
}
}
// Remaining players should be humans (CTs)
new id
for (id = 1; id <= g_MaxPlayers; id++)
{
// Not alive
if (!is_user_alive(id))
continue;
// This is our first zombie
if (zp_core_is_zombie(id))
continue;
// Switch to CT
cs_set_player_team(id, CS_TEAM_CT)
}
if (get_pcvar_num(cvar_infection_show_hud))
{
// Show First Zombie HUD notice
new name[32]
get_user_name(g_TargetPlayer, name, charsmax(name))
set_hudmessage(HUD_EVENT_R, HUD_EVENT_G, HUD_EVENT_B, HUD_EVENT_X, HUD_EVENT_Y, 0, 0.0, 5.0, 1.0, 1.0, -1)
ShowSyncHudMsg(0, g_HudSync, "%L", LANG_PLAYER, "NOTICE_FIRST", name)
}
}
// Get Alive Count -returns alive players number-
GetAliveCountHuman()
{
new iAlive, id
for (id = 1; id <= g_MaxPlayers; id++)
{
if (is_user_alive(id))
iAlive++
}
return iAlive;
}
// Get Alive Count -returns alive players number-
GetAliveCount()
{
new iAlive, id
for (id = 1; id <= g_MaxPlayers; id++)
{
if (is_user_alive(id) && id != g_TargetPlayer && id != g_TargetPlayer2 && id != g_TargetPlayer3)
iAlive++
}
return iAlive;
}
// Get Random Alive -returns index of alive player number target_index -
GetRandomAlive(target_index)
{
new iAlive, id
for (id = 1; id <= g_MaxPlayers; id++)
{
if (is_user_alive(id) && id != g_TargetPlayer && id != g_TargetPlayer2 && id != g_TargetPlayer3)
iAlive++
if (iAlive == target_index)
return id;
}
return -1;
}
public zp_fw_gamemodes_end()
{
g_TargetPlayer = 0
g_TargetPlayer2 = 0
g_TargetPlayer3 = 0
}
you look something wrong? the server had six players when this happened.