Holas, bueno, este es mi primer "TUT" en AlliedModders, voy a dejar un tutorial de como hacer
el modo Aniquilación de Zombie Plague 4.2 pero en este tutorial es diferente a la fuente, y con los "php"
Fuente :
http://forums.alliedmods.net/showthread.php?t=129337
Créditos : Script
Vamos a : // Game modes
Y Agregamos :
PHP Code:
MODE_ANIQUILACION
Quedaría :
PHP Code:
MODE_NONE = 0,
MODE_INFECTION,
MODE_NEMESIS,
MODE_SURVIVOR,
MODE_SWARM,
MODE_MULTI,
MODE_PLAGUE,
MODE_ANIQUILACION
Ahora Vamos a // Game vars :
Agregamos :
PHP Code:
new g_aniquilacionround // aniquilation round
Quedaría :
PHP Code:
new g_pluginenabled // ZP plugin enabled
new g_newround // new round starting
new g_endround // round ended
new g_nemround // nemesis round
new Float:g_teams_i // delay between Team Change messages
new g_survround // survivor round
new g_swarmround // swarm round
new g_plagueround // plague round
new g_aniquilacionround // aniquilation round
Vamos a : // CVAR pointers
Agregamos al final :
PHP Code:
,cvar_aniquilacionratio, cvar_aniquilacion, cvar_aniquilacionchance, cvar_aniquilacionminplayers
Ahora vamos a : public plugin_natives() (// Round natives)
Agregamos :
PHP Code:
register_native("zp_is_aniquilacion_round", "native_is_aniquilacion_round", 1)
Ahora vamos a :
// CVARS - Survivor
y debajo de
PHP Code:
cvar_survignoreammo = register_cvar("zp_surv_ignore_rewards", "0")
o
PHP Code:
cvar_survweapon = register_cvar("zp_surv_weapon", "weapon_m249")
Agregamos :
PHP Code:
// CVARS - Aniquilacion Mode
cvar_aniquilacion = register_cvar("zp_aniquilacion_enabled", "1")
cvar_aniquilacionchance = register_cvar("zp_aniquilacion_chance", "30")
cvar_aniquilacionminplayers = register_cvar("zp_aniquilacion_min_players", "0")
cvar_aniquilacionratio = register_cvar("zp_aniquilacion_ratio", "1.0")
Ahora vamos a : // Event Round Start
Abajo de
PHP Code:
g_plagueround = false
agregamos
PHP Code:
g_aniquilacionround = false
Vamos a : // zp_plague
Abajo de ese public agregamos :
PHP Code:
public cmd_aniquilacion(id, level, cid)
{
if (!get_user_flags(id) && ADMIN_RCON)
return PLUGIN_HANDLED
// Check for access flag
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED;
// Swarm mode not allowed
if (!allowed_swarm())
{
client_print(id, print_console, "[ZA] %L", id, "CMD_NOT")
return PLUGIN_HANDLED;
}
command_aniquilacion(id)
return PLUGIN_HANDLED;
}
Ahora vamos a : // Get prevent consecutive modes setting
Debajo de :
PHP Code:
g_plagueround = false
Agregamos :
PHP Code:
g_aniquilacionround = false
Ahora vamos a
PHP Code:
else if ((mode == MODE_NONE && (!preventconsecutive || g_lastmode != MODE_MULTI) && random_num(1, get_pcvar_num(cvar_multichance)) == get_pcvar_num(cvar_multi) && floatround(iPlayersnum*get_pcvar_float(cvar_multiratio), floatround_ceil) >= 2 && floatround(iPlayersnum*get_pcvar_float(cvar_multiratio), floatround_ceil) < iPlayersnum && iPlayersnum >= get_pcvar_num(cvar_multiminplayers)) || mode == MODE_MULTI)
y debajo de
PHP Code:
ExecuteForward(g_fwRoundStart, g_fwDummyResult, MODE_MULTI, 0);
Agregamos
PHP Code:
else if ((mode == MODE_NONE && (!preventconsecutive || g_lastmode != MODE_ANIQUILACION) && random_num(1, get_pcvar_num(cvar_aniquilacionchance)) == get_pcvar_num(cvar_aniquilacion) && floatround((iPlayersnum-2)*get_pcvar_float(cvar_aniquilacionratio), floatround_ceil) >= 1 && iPlayersnum >= get_pcvar_num(cvar_aniquilacionminplayers)) || mode == MODE_ANIQUILACION)
{
g_aniquilacionround = true
server_cmd("zp_deathmatch 2")
id = fnGetRandomAlive(random_num(1, iPlayersnum))
new name[33]
get_user_name(id, name, 32)
set_hudmessage(255, 0, 0, HUD_EVENT_X, HUD_EVENT_Y, 1, 0.0, 5.0, 1.0, 1.0, -1)
ShowSyncHudMsg(0, g_MsgSync, "Modo Aniquilacion!^nInfectado: %s", name)
zombieme(id, 0, 0, 1)
// Remaining players should be humans (CTs)
for (id = 1; id <= g_maxplayers; id++)
{
// Not alive
if (!is_user_alive(id))
continue;
message_begin(MSG_ONE_UNRELIABLE, g_msgScreenShake, _, id)
write_short(UNIT_SECOND*100) // amplitude
write_short(UNIT_SECOND*5) // duration
write_short(UNIT_SECOND*120) // frequency
message_end()
// First zombie/nemesis
if (g_zombie[id])
continue;
// Remove previous tasks
remove_task(id+TASK_TEAM)
// Switch to CT
if (fm_get_user_team(id) != CS_TEAM_CT) // need to change team?
{
fm_set_user_team(id, CS_TEAM_CT)
fm_user_team_update(id)
}
}
PlaySound(sound_plague[random_num(0, sizeof sound_plague -1)]);
ExecuteForward(g_fwRoundStart, g_fwDummyResult, MODE_ANIQUILACION, 0);
}
Ahora vamos a
PHP Code:
// Admin Command. zp_zombie
y debajo de esa linea ponemos :
PHP Code:
{
// Call Swarm Mode
console_print(id, "Modo Aniquilacion")
remove_task(TASK_MAKEZOMBIE)
make_a_zombie(MODE_ANIQUILACION, 0)
}
Ahora por ultimo vamos a :
PHP Code:
// Native: zp_is_plague_round
Y abajo del public ponemos :
PHP Code:
// Native: zp_is_aniquilacion_round
public native_is_aniquilacion_round()
{
return g_aniquilacionround;
}