Post by ShaunCraft15 on Jan 24, 2022 10:40:15 GMT
Hello Guys i will to add respawn limit to my predator mode and it's not working plz help
/*================================================================================
-------------------------------
-*- [ZP] Game Mode: Predator -*-
-------------------------------
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 <amx_settings_api>
#include <cs_teams_api>
#include <hamsandwich>
#include <zp50_gamemodes>
#include <zp50_class_predator>
#include <zp50_deathmatch>
// Settings file
new const ZP_SETTINGS_FILE[] = "zombieplague.ini"
// Default sounds
new const sound_predator[][] = { "zombie_plague/nemesis1.wav" , "zombie_plague/nemesis2.wav" }
#define SOUND_MAX_LENGTH 64
new Array:g_sound_predator
// HUD messages
#define HUD_EVENT_X -1.0
#define HUD_EVENT_Y 0.17
#define HUD_EVENT_R 20
#define HUD_EVENT_G 255
#define HUD_EVENT_B 20
new g_MaxPlayers
new g_HudSync
new g_TargetPlayer, g_TargetPlayer2, g_TargetPlayer3
new cvar_predator_chance, cvar_predator_min_players
new cvar_predator_show_hud, cvar_predator_sounds
new cvar_respawn_limit, cvar_allow_respawn
new g_iRespawnLimit[33]
public plugin_init()
{
register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0")
}
public plugin_precache()
{
// Register game mode at precache (plugin gets paused after this)
register_plugin("[ZP] Game Mode: Predator", ZP_VERSION_STRING, "ZP Dev Team")
zp_gamemodes_register("Predator Mode")
// Create the HUD Sync Objects
g_HudSync = CreateHudSyncObj()
g_MaxPlayers = get_maxplayers()
cvar_predator_chance = register_cvar("zp_predator_chance", "20")
cvar_predator_min_players = register_cvar("zp_predator_min_players", "0")
cvar_predator_show_hud = register_cvar("zp_predator_show_hud", "1")
cvar_predator_sounds = register_cvar("zp_predator_sounds", "1")
cvar_allow_respawn = register_cvar("zp_predator_allow_respawn", "1")
// Initialize arrays
g_sound_predator = ArrayCreate(SOUND_MAX_LENGTH, 1)
// Load from external file
amx_load_setting_string_arr(ZP_SETTINGS_FILE, "Sounds", "ROUND PREDATOR", g_sound_predator)
// If we couldn't load custom sounds from file, use and save default ones
new index
if (ArraySize(g_sound_predator) == 0)
{
for (index = 0; index < sizeof sound_predator; index++)
ArrayPushString(g_sound_predator, sound_predator[index])
// Save to external file
amx_save_setting_string_arr(ZP_SETTINGS_FILE, "Sounds", "ROUND PREDATOR", g_sound_predator)
}
// Precache sounds
new sound[SOUND_MAX_LENGTH]
for (index = 0; index < ArraySize(g_sound_predator); index++)
{
ArrayGetString(g_sound_predator, index, sound, charsmax(sound))
if (equal(sound[strlen(sound)-4], ".mp3"))
{
format(sound, charsmax(sound), "sound/%s", sound)
precache_generic(sound)
}
else
precache_sound(sound)
}
}
// Deathmatch module's player respawn forward
public zp_fw_deathmatch_respawn_pre(id)
{
// Respawning allowed?
if (!get_pcvar_num(cvar_allow_respawn))
return PLUGIN_HANDLED;
static victim = -1
g_iRespawnLimit[victim]++
client_print(victim, print_chat, "You Are Respawned %d/%d", g_iRespawnLimit[victim], get_pcvar_num(cvar_respawn_limit))
if(g_iRespawnLimit[victim] > get_pcvar_num(cvar_respawn_limit))
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
public Event_NewRound()
{
new iPlayers[32], iPlayerCount, i, id
get_players(iPlayers, iPlayerCount, "a")
for(i = 0; i < iPlayerCount; i++)
{
id = iPlayers[i]
g_iRespawnLimit[id] = 0
}
}
public zp_fw_gamemodes_choose_pre(game_mode_id, skipchecks)
{
if (!skipchecks)
{
// Random chance
if (random_num(1, get_pcvar_num(cvar_predator_chance)) != 1)
return PLUGIN_HANDLED;
// Min players
if (GetAliveCount() < get_pcvar_num(cvar_predator_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()
{
// Turn player into nemesis
// Remaining players should be humans (CTs)
new id
if (GetAliveCount() >= 24)
{
if(!zp_class_predator_get(g_TargetPlayer3))
{
zp_class_predator_set(g_TargetPlayer3)
}
if(!zp_class_predator_get(g_TargetPlayer2))
{
zp_class_predator_set(g_TargetPlayer2)
}
if(!zp_class_predator_get(g_TargetPlayer))
{
zp_class_predator_set(g_TargetPlayer)
}
}
if (GetAliveCount() >= 12)
{
if(!zp_class_predator_get(g_TargetPlayer2))
{
zp_class_predator_set(g_TargetPlayer2)
}
if(!zp_class_predator_get(g_TargetPlayer))
{
zp_class_predator_set(g_TargetPlayer)
}
}
else if (GetAliveCount() >= 2)
{
if(!zp_class_predator_get(g_TargetPlayer))
{
zp_class_predator_set(g_TargetPlayer)
}
}
for (id = 1; id <= g_MaxPlayers; id++)
{
// Not alive
if (!is_user_alive(id))
continue;
// This is our predator
if (zp_class_predator_get(id))
continue;
// Switch to CT
cs_set_player_team(id, CS_TEAM_CT)
}
// Play Nemesis sound
if (get_pcvar_num(cvar_predator_sounds))
{
new sound[SOUND_MAX_LENGTH]
ArrayGetString(g_sound_predator, random_num(0, ArraySize(g_sound_predator) - 1), sound, charsmax(sound))
PlaySoundToClients(sound)
}
if (get_pcvar_num(cvar_predator_show_hud))
{
// Show First Zombie HUD notice
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)
if (GetAliveCount() >= 24)
{
ShowSyncHudMsg(0, g_HudSync, "3 Players Are Predators ^nRun For Your Life")
}
if (GetAliveCount() >= 12)
{
ShowSyncHudMsg(0, g_HudSync, "2 Players Are Predators ^nRun For Your Life")
}
else if (GetAliveCount() >= 2)
{
ShowSyncHudMsg(0, g_HudSync, "1 Player Are Predator ^nRun For Your Life")
}
}
}
// Plays a sound on clients
PlaySoundToClients(const sound[])
{
if (equal(sound[strlen(sound)-4], ".mp3"))
client_cmd(0, "mp3 play ^"sound/%s^"", sound)
else
client_cmd(0, "spk ^"%s^"", sound)
}
// Get Alive Count -returns alive players number-
GetAliveCount()
{
new iAlive, id
for (id = 1; id <= g_MaxPlayers; id++)
{
if (is_user_alive(id))
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))
iAlive++
if (iAlive == target_index)
return id;
}
return -1;
}