Removed old class system. Cleared out external API natives and forwards. Commented out old menus.
This commit is contained in:
parent
c4ceebe9ab
commit
648a875c14
@ -1,42 +1,3 @@
|
||||
/**
|
||||
* ====================
|
||||
* Zombie:Reloaded
|
||||
* File: zr.inc
|
||||
* Author: Greyscale
|
||||
* ====================
|
||||
*/
|
||||
|
||||
/**
|
||||
* Used to check if a player is a zombie.
|
||||
* @param client Client index.
|
||||
* @return True if the player is a zombie, and false if human.
|
||||
*/
|
||||
native bool:ZR_IsClientZombie(client);
|
||||
|
||||
/**
|
||||
* Returns the client's zombie class.
|
||||
* @param client Client index.
|
||||
* @return The client's zombie class.
|
||||
*/
|
||||
native ZR_GetClientZClass(client);
|
||||
|
||||
/**
|
||||
* Returns if the zombie has spawned or not.
|
||||
* @return Returns true, if the first zombie has spawned during the round, false if not.
|
||||
*/
|
||||
native bool:ZR_HasZombieSpawned();
|
||||
|
||||
/**
|
||||
* Called when a player turns into a zombie.
|
||||
* @param client Client index.
|
||||
* @param mother True if zombie is a mother, false if zombified by another zombie.
|
||||
*/
|
||||
forward ZR_Zombify(client, bool:mother);
|
||||
|
||||
/**
|
||||
* Called when a player changes their zombie class.
|
||||
* @param client Client index.
|
||||
* @param oldclass The client's old class.
|
||||
* @param newclass The client's new class.
|
||||
*/
|
||||
forward ZR_OnZClassChanged(client, oldclass, newclass);
|
||||
// ===============================
|
||||
// Zombie:Reloaded External API
|
||||
// ===============================
|
@ -23,7 +23,6 @@
|
||||
#include "zr/translation"
|
||||
#include "zr/offsets"
|
||||
#include "zr/ambience"
|
||||
#include "zr/classes"
|
||||
#include "zr/models"
|
||||
#include "zr/overlays"
|
||||
#include "zr/playerclasses/playerclasses"
|
||||
@ -125,15 +124,8 @@ public OnMapStart()
|
||||
LoadModelData();
|
||||
LoadDownloadData();
|
||||
|
||||
|
||||
new i;
|
||||
new classindex = GetDefaultClassIndex();
|
||||
for (i = 1; i <= MAXPLAYERS; i++)
|
||||
{
|
||||
pClass[i] = classindex;
|
||||
}
|
||||
|
||||
// Forward event to modules.
|
||||
ClassLoad();
|
||||
WeaponsOnMapStart();
|
||||
Anticamp_Startup();
|
||||
}
|
||||
@ -164,15 +156,11 @@ public OnConfigsExecuted()
|
||||
}
|
||||
|
||||
FindMapSky();
|
||||
ClassLoad();
|
||||
LoadClassData();
|
||||
LoadAmbienceData();
|
||||
|
||||
}
|
||||
|
||||
public OnClientPutInServer(client)
|
||||
{
|
||||
pClass[client] = GetDefaultClassIndex();
|
||||
gBlockMotherInfect[client] = false;
|
||||
gKilledByWorld[client] = false;
|
||||
|
||||
|
@ -1,392 +0,0 @@
|
||||
/**
|
||||
* ====================
|
||||
* Zombie:Reloaded
|
||||
* File: classes.inc
|
||||
* Author: Greyscale
|
||||
* ====================
|
||||
*/
|
||||
|
||||
enum ZR_ClassOptions
|
||||
{
|
||||
String:data_name[64],
|
||||
String:data_model[256],
|
||||
String:data_menu_description[256],
|
||||
String:data_zvision[256],
|
||||
data_health,
|
||||
Float:data_speed,
|
||||
Float:data_jump_distance,
|
||||
Float:data_jump_height,
|
||||
Float:data_knockback,
|
||||
data_nvgs,
|
||||
data_fov,
|
||||
bool:data_regen,
|
||||
data_regen_health,
|
||||
Float:data_regen_interval,
|
||||
bool:data_napalm,
|
||||
Float:data_napalm_time,
|
||||
bool:data_nofalldamage,
|
||||
data_kill_bonus,
|
||||
data_infect_health,
|
||||
data_alpha_spawn,
|
||||
data_alpha_damaged,
|
||||
data_alpha_damage
|
||||
}
|
||||
|
||||
#define MAXCLASSES 20
|
||||
|
||||
new Handle:kvClasses = INVALID_HANDLE;
|
||||
|
||||
new arrayClasses[MAXCLASSES][ZR_ClassOptions];
|
||||
new classCount;
|
||||
|
||||
LoadClassData()
|
||||
{
|
||||
if (kvClasses != INVALID_HANDLE)
|
||||
{
|
||||
CloseHandle(kvClasses);
|
||||
}
|
||||
|
||||
kvClasses = CreateKeyValues("classes");
|
||||
|
||||
decl String:path[PLATFORM_MAX_PATH];
|
||||
BuildPath(Path_SM, path, sizeof(path), "configs/zr/classes.txt");
|
||||
|
||||
if (!FileToKeyValues(kvClasses, path))
|
||||
{
|
||||
SetFailState("\"%s\" missing from server", path);
|
||||
}
|
||||
|
||||
KvRewind(kvClasses);
|
||||
if (!KvGotoFirstSubKey(kvClasses))
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
if (classes)
|
||||
{
|
||||
SetConVarBool(gCvars[CVAR_CLASSES], false);
|
||||
|
||||
ZR_LogMessage("Class auto-disable", path);
|
||||
}
|
||||
}
|
||||
|
||||
decl String:name[64];
|
||||
decl String:model[256];
|
||||
decl String:menu_description[256];
|
||||
decl String:zvision[256];
|
||||
|
||||
classCount = 0;
|
||||
|
||||
do
|
||||
{
|
||||
KvGetString(kvClasses, "name", name, sizeof(name));
|
||||
strcopy(arrayClasses[classCount][data_name], 64, name);
|
||||
|
||||
KvGetString(kvClasses, "model", model, sizeof(model));
|
||||
strcopy(arrayClasses[classCount][data_model], 256, model);
|
||||
|
||||
KvGetString(kvClasses, "menu_description", menu_description, sizeof(menu_description));
|
||||
strcopy(arrayClasses[classCount][data_menu_description], 256, menu_description);
|
||||
|
||||
decl String:cvar_zvision[256];
|
||||
GetConVarString(gCvars[CVAR_ZOMBIE_ZVISION], cvar_zvision, sizeof(cvar_zvision));
|
||||
|
||||
KvGetString(kvClasses, "zvision", zvision, sizeof(zvision), cvar_zvision);
|
||||
strcopy(arrayClasses[classCount][data_zvision], 256, zvision);
|
||||
|
||||
arrayClasses[classCount][data_health] = KvGetNum(kvClasses, "health"), GetConVarInt(gCvars[CVAR_ZOMBIE_HEALTH]);
|
||||
arrayClasses[classCount][data_speed] = KvGetFloat(kvClasses, "speed"), GetConVarFloat(gCvars[CVAR_ZOMBIE_SPEED]);
|
||||
arrayClasses[classCount][data_jump_distance] = KvGetFloat(kvClasses, "jump_distance"), GetConVarFloat(gCvars[CVAR_ZOMBIE_JUMP_DISTANCE]);
|
||||
arrayClasses[classCount][data_jump_height] = KvGetFloat(kvClasses, "jump_height"), GetConVarFloat(gCvars[CVAR_ZOMBIE_JUMP_HEIGHT]);
|
||||
arrayClasses[classCount][data_knockback] = KvGetFloat(kvClasses, "knockback");
|
||||
arrayClasses[classCount][data_nvgs] = KvGetNum(kvClasses, "nvgs"), GetConVarInt(gCvars[CVAR_ZOMBIE_NVGS]);
|
||||
arrayClasses[classCount][data_fov] = KvGetNum(kvClasses, "fov"), GetConVarInt(gCvars[CVAR_ZOMBIE_FOV]);
|
||||
arrayClasses[classCount][data_regen] = bool:KvGetNum(kvClasses, "regen"), GetConVarBool(gCvars[CVAR_ZOMBIE_REGEN]);
|
||||
arrayClasses[classCount][data_regen_health] = KvGetNum(kvClasses, "regen_health"), GetConVarInt(gCvars[CVAR_ZOMBIE_REGEN_HEALTH]);
|
||||
arrayClasses[classCount][data_regen_interval] = KvGetFloat(kvClasses, "regen_interval"), GetConVarFloat(gCvars[CVAR_ZOMBIE_REGEN_INTERVAL]);
|
||||
arrayClasses[classCount][data_napalm] = bool:KvGetNum(kvClasses, "napalm"), GetConVarBool(gCvars[CVAR_ZOMBIE_NAPALM]);
|
||||
arrayClasses[classCount][data_napalm_time] = KvGetFloat(kvClasses, "napalm_time"), GetConVarFloat(gCvars[CVAR_ZOMBIE_NAPALM_TIME]);
|
||||
arrayClasses[classCount][data_nofalldamage] = bool:KvGetNum(kvClasses, "nofalldamage"), GetConVarBool(gCvars[CVAR_ZOMBIE_NOFALLDAMAGE]);
|
||||
arrayClasses[classCount][data_kill_bonus] = KvGetNum(kvClasses, "kill_bonus"), GetConVarInt(gCvars[CVAR_ZOMBIE_KILL_BONUS]);
|
||||
arrayClasses[classCount][data_infect_health] = KvGetNum(kvClasses, "infect_health"), GetConVarInt(gCvars[CVAR_ZOMBIE_INFECT_HEALTH]);
|
||||
arrayClasses[classCount][data_alpha_spawn] = KvGetNum(kvClasses, "alpha_spawn");
|
||||
arrayClasses[classCount][data_alpha_damaged] = KvGetNum(kvClasses, "alpha_damaged");
|
||||
arrayClasses[classCount][data_alpha_damage] = KvGetNum(kvClasses, "alpha_damage");
|
||||
|
||||
classCount++;
|
||||
} while (KvGotoNextKey(kvClasses));
|
||||
}
|
||||
|
||||
GetClassName(classindex, String:name[], maxlen)
|
||||
{
|
||||
strcopy(name, maxlen, arrayClasses[classindex][data_name]);
|
||||
}
|
||||
|
||||
GetClassIndex(String:name[])
|
||||
{
|
||||
new i;
|
||||
decl String:current_name[64];
|
||||
|
||||
for (i = 0; i < classCount; i++)
|
||||
{
|
||||
GetClassName(i, current_name, sizeof(current_name));
|
||||
if (strcmp(name, current_name, false) == 0)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
GetDefaultClassIndex()
|
||||
{
|
||||
new String:classname[64];
|
||||
new classindex;
|
||||
GetConVarString(gCvars[CVAR_CLASSES_DEFAULT], classname, sizeof(classname));
|
||||
|
||||
if (strlen(classname) > 0)
|
||||
{
|
||||
if (classCount > 1 && (strcmp(classname, "random", false) == 0))
|
||||
{
|
||||
classindex = GetRandomInt(0, classCount - 1);
|
||||
return classindex;
|
||||
}
|
||||
else
|
||||
{
|
||||
classindex = GetClassIndex(classname);
|
||||
if (classindex == -1)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return classindex;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*GetClassModel(classindex, String:model[], maxlen)
|
||||
{
|
||||
strcopy(model, maxlen, arrayClasses[classindex][data_model]);
|
||||
}*/
|
||||
|
||||
GetClassMenuDescription(classindex, String:menudescription[], maxlen)
|
||||
{
|
||||
strcopy(menudescription, maxlen, arrayClasses[classindex][data_menu_description]);
|
||||
}
|
||||
|
||||
/*GetClassZVision(classindex, String:zvision[], maxlen)
|
||||
{
|
||||
strcopy(zvision, maxlen, arrayClasses[classindex][data_zvision]);
|
||||
}*/
|
||||
|
||||
/*GetClassHealth(classindex)
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
if (classes)
|
||||
{
|
||||
return arrayClasses[classindex][data_health];
|
||||
}
|
||||
|
||||
return GetConVarInt(gCvars[CVAR_ZOMBIE_HEALTH]);
|
||||
}*/
|
||||
|
||||
/*Float:GetClassSpeed(classindex)
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
if (classes)
|
||||
{
|
||||
return arrayClasses[classindex][data_speed];
|
||||
}
|
||||
|
||||
return GetConVarFloat(gCvars[CVAR_ZOMBIE_SPEED]);
|
||||
}*/
|
||||
|
||||
/*Float:GetClassJumpDistance(classindex)
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
if (classes)
|
||||
{
|
||||
return arrayClasses[classindex][data_jump_distance];
|
||||
}
|
||||
|
||||
return GetConVarFloat(gCvars[CVAR_ZOMBIE_JUMP_DISTANCE]);
|
||||
}*/
|
||||
|
||||
/*Float:GetClassJumpHeight(classindex)
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
if (classes)
|
||||
{
|
||||
return arrayClasses[classindex][data_jump_height];
|
||||
}
|
||||
|
||||
return GetConVarFloat(gCvars[CVAR_ZOMBIE_JUMP_HEIGHT]);
|
||||
}*/
|
||||
|
||||
/*Float:GetClassKnockback(classindex)
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
if (classes)
|
||||
{
|
||||
return arrayClasses[classindex][data_knockback] * GetConVarFloat(gCvars[CVAR_ZOMBIE_KNOCKBACK]);
|
||||
}
|
||||
|
||||
return GetConVarFloat(gCvars[CVAR_ZOMBIE_KNOCKBACK]);
|
||||
}*/
|
||||
|
||||
/*bool:GetClassNVGs(classindex)
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
|
||||
if (classes)
|
||||
{
|
||||
new nvgs_override = GetConVarInt(gCvars[CVAR_ZOMBIE_NVGS]);
|
||||
if (nvgs_override > -1)
|
||||
{
|
||||
return IntToBool(nvgs_override);
|
||||
}
|
||||
else
|
||||
{
|
||||
return IntToBool(arrayClasses[classindex][data_nvgs]);
|
||||
}
|
||||
}
|
||||
|
||||
return IntToBool(GetConVarInt(gCvars[CVAR_ZOMBIE_NVGS]));
|
||||
}*/
|
||||
|
||||
/*GetClassFOV(classindex)
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
if (classes)
|
||||
{
|
||||
return arrayClasses[classindex][data_fov];
|
||||
}
|
||||
|
||||
return GetConVarInt(gCvars[CVAR_ZOMBIE_FOV]);
|
||||
}*/
|
||||
|
||||
/*bool:GetClassRegen(classindex)
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
if (classes)
|
||||
{
|
||||
return arrayClasses[classindex][data_regen];
|
||||
}
|
||||
|
||||
return GetConVarBool(gCvars[CVAR_ZOMBIE_REGEN]);
|
||||
}*/
|
||||
|
||||
/*GetClassRegenHealth(classindex)
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
if (classes)
|
||||
{
|
||||
return arrayClasses[classindex][data_regen_health];
|
||||
}
|
||||
|
||||
return GetConVarInt(gCvars[CVAR_ZOMBIE_REGEN_HEALTH]);
|
||||
}*/
|
||||
|
||||
/*Float:GetClassRegenInterval(classindex)
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
if (classes)
|
||||
{
|
||||
return arrayClasses[classindex][data_regen_interval];
|
||||
}
|
||||
|
||||
return GetConVarFloat(gCvars[CVAR_ZOMBIE_REGEN_INTERVAL]);
|
||||
}*/
|
||||
|
||||
/*bool:GetClassNapalm(classindex)
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
if (classes)
|
||||
{
|
||||
return arrayClasses[classindex][data_napalm];
|
||||
}
|
||||
|
||||
return GetConVarBool(gCvars[CVAR_ZOMBIE_NAPALM]);
|
||||
}*/
|
||||
|
||||
/*Float:GetClassNapalmTime(classindex)
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
if (classes)
|
||||
{
|
||||
return arrayClasses[classindex][data_napalm_time];
|
||||
}
|
||||
|
||||
return GetConVarFloat(gCvars[CVAR_ZOMBIE_NAPALM_TIME]);
|
||||
}*/
|
||||
|
||||
/*bool:GetClassNoFallDamage(classindex)
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
if (classes)
|
||||
{
|
||||
return arrayClasses[classindex][data_nofalldamage];
|
||||
}
|
||||
|
||||
return GetConVarBool(gCvars[CVAR_ZOMBIE_NOFALLDAMAGE]);
|
||||
}*/
|
||||
|
||||
/*GetClassKillBonus(classindex)
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
if (classes)
|
||||
{
|
||||
return arrayClasses[classindex][data_kill_bonus];
|
||||
}
|
||||
|
||||
return GetConVarInt(gCvars[CVAR_ZOMBIE_KILL_BONUS]);
|
||||
}*/
|
||||
|
||||
/*GetClassInfectHealth(classindex)
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
if (classes)
|
||||
{
|
||||
return arrayClasses[classindex][data_infect_health];
|
||||
}
|
||||
|
||||
return GetConVarInt(gCvars[CVAR_ZOMBIE_INFECT_HEALTH]);
|
||||
}*/
|
||||
|
||||
/*GetClassAlphaSpawn(classindex)
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
if (classes)
|
||||
{
|
||||
return arrayClasses[classindex][data_alpha_spawn];
|
||||
}
|
||||
|
||||
return GetConVarInt(gCvars[CVAR_ZOMBIE_ALPHA_SPAWN]);
|
||||
}*/
|
||||
|
||||
/*GetClassAlphaDamaged(classindex)
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
if (classes)
|
||||
{
|
||||
return arrayClasses[classindex][data_alpha_damaged];
|
||||
}
|
||||
|
||||
return GetConVarInt(gCvars[CVAR_ZOMBIE_ALPHA_DAMAGED]);
|
||||
}*/
|
||||
|
||||
/*GetClassAlphaDamage(classindex)
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
if (classes)
|
||||
{
|
||||
return arrayClasses[classindex][data_alpha_damage];
|
||||
}
|
||||
|
||||
return GetConVarInt(gCvars[CVAR_ZOMBIE_ALPHA_DAMAGE]);
|
||||
}*/
|
@ -20,11 +20,11 @@ CreateCommands()
|
||||
RegAdminCmd("zr_restrict", Command_Restrict, ADMFLAG_GENERIC, "Restrict a specified weapon");
|
||||
RegAdminCmd("zr_unrestrict", Command_Unrestrict, ADMFLAG_GENERIC, "Unrestrict a specified weapon");
|
||||
|
||||
RegAdminCmd("zr_set_class_knockback", Command_SetClassKnockback, ADMFLAG_GENERIC, "Sets the knockback to the specified class. Usage: zr_set_class_knockback <class name> <value>");
|
||||
RegAdminCmd("zr_get_class_knockback", Command_GetClassKnockback, ADMFLAG_GENERIC, "Gets the knockback to the specified class. Usage: zr_get_class_knockback <class name>");
|
||||
//RegAdminCmd("zr_set_class_knockback", Command_SetClassKnockback, ADMFLAG_GENERIC, "Sets the knockback to the specified class. Usage: zr_set_class_knockback <class name> <value>");
|
||||
//RegAdminCmd("zr_get_class_knockback", Command_GetClassKnockback, ADMFLAG_GENERIC, "Gets the knockback to the specified class. Usage: zr_get_class_knockback <class name>");
|
||||
|
||||
RegAdminCmd("zr_admin", Command_AdminMenu, ADMFLAG_GENERIC, "Displays the admin menu for Zombie: Reloaded.");
|
||||
RegAdminCmd("zr_knockback_m", Command_KnockbackMMenu, ADMFLAG_GENERIC, "Displays the knockback multiplier menu.");
|
||||
//RegAdminCmd("zr_knockback_m", Command_KnockbackMMenu, ADMFLAG_GENERIC, "Displays the knockback multiplier menu.");
|
||||
RegAdminCmd("zr_teleadmin", Command_TeleMenu, ADMFLAG_GENERIC, "Displays the teleport admin menu for Zombie: Reloaded.");
|
||||
|
||||
RegAdminCmd("zr_anticamp_create_volume", Command_AnticampCreateVolume, ADMFLAG_GENERIC, "Creates a rectangular hurt volume between two points. Usage: ht_create_volume <damage> <interval> <x1> <y1> <z1> <x2> <y2> <z2>");
|
||||
@ -192,7 +192,7 @@ public Action:Command_Unrestrict(client, argc)
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
public Action:Command_SetClassKnockback(client, argc)
|
||||
/*public Action:Command_SetClassKnockback(client, argc)
|
||||
{
|
||||
if (argc < 2)
|
||||
{
|
||||
@ -245,7 +245,7 @@ public Action:Command_GetClassKnockback(client, argc)
|
||||
ReplyToCommand(client, "Current knockback for %s: %f", classname, knockback);
|
||||
|
||||
return Plugin_Handled;
|
||||
}
|
||||
}*/
|
||||
|
||||
public Action:Command_AdminMenu(client, argc)
|
||||
{
|
||||
@ -255,7 +255,8 @@ public Action:Command_AdminMenu(client, argc)
|
||||
}
|
||||
else
|
||||
{
|
||||
ReplyToCommand(client, "This menu cannot be used from the console.");
|
||||
// BAD!
|
||||
// ReplyToCommand(client, "This menu cannot be used from the console.");
|
||||
}
|
||||
return Plugin_Handled;
|
||||
}
|
||||
@ -269,7 +270,8 @@ public Action:Command_KnockbackMMenu(client, argc)
|
||||
}
|
||||
else
|
||||
{
|
||||
ReplyToCommand(client, "This menu cannot be used from the console.");
|
||||
// Tsk tsk no translation? :P
|
||||
//ReplyToCommand(client, "This menu cannot be used from the console.");
|
||||
}
|
||||
return Plugin_Handled;
|
||||
}
|
||||
@ -282,6 +284,7 @@ public Action:Command_TeleMenu(client, argc)
|
||||
}
|
||||
else
|
||||
{
|
||||
// BAD!
|
||||
ReplyToCommand(client, "This menu cannot be used from the console.");
|
||||
}
|
||||
return Plugin_Handled;
|
||||
|
@ -186,18 +186,6 @@ public Action:PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast)
|
||||
NightVisionOn(index, false);
|
||||
NightVision(index, false);
|
||||
|
||||
if (pNextClass[index] != -1)
|
||||
{
|
||||
Call_StartForward(hOnZClassChanged);
|
||||
Call_PushCell(index);
|
||||
Call_PushCell(pClass[index]);
|
||||
Call_PushCell(pNextClass[index]);
|
||||
Call_Finish();
|
||||
|
||||
pClass[index] = pNextClass[index];
|
||||
pNextClass[index] = -1;
|
||||
}
|
||||
|
||||
pProtect[index] = false;
|
||||
if (zombieSpawned)
|
||||
{
|
||||
|
@ -6,31 +6,9 @@
|
||||
* ====================
|
||||
*/
|
||||
|
||||
new Handle:hZombify = INVALID_HANDLE;
|
||||
new Handle:hOnZClassChanged = INVALID_HANDLE;
|
||||
|
||||
/**
|
||||
* All external API natives are created here.
|
||||
*/
|
||||
CreateGlobals()
|
||||
{
|
||||
CreateNative("ZR_IsClientZombie", Native_IsClientZombie);
|
||||
CreateNative("ZR_GetClientZClass", Native_GetClientZClass);
|
||||
CreateNative("ZR_HasZombieSpawned", Native_HasZombieSpawned);
|
||||
|
||||
hZombify = CreateGlobalForward("ZR_Zombify", ET_Ignore, Param_Cell, Param_Cell);
|
||||
hOnZClassChanged = CreateGlobalForward("ZR_OnZClassChanged", ET_Ignore, Param_Cell, Param_Cell, Param_Cell);
|
||||
}
|
||||
|
||||
public Native_IsClientZombie(Handle:plugin, argc)
|
||||
{
|
||||
return gZombie[GetNativeCell(1)];
|
||||
}
|
||||
|
||||
public Native_GetClientZClass(Handle:plugin, argc)
|
||||
{
|
||||
new class = GetNativeCell(1);
|
||||
return pClass[class];
|
||||
}
|
||||
|
||||
public Native_HasZombieSpawned(Handle:plugin, argc)
|
||||
{
|
||||
return zombieSpawned;
|
||||
}
|
@ -24,7 +24,7 @@ MainMenu(client)
|
||||
|
||||
Format(zmenu, sizeof(zmenu), "%t", "!zmenu menu");
|
||||
Format(zadmin, sizeof(zadmin), "%t", "!zmenu admin");
|
||||
Format(zclass, sizeof(zclass), "%t", "!zmenu class");
|
||||
Format(zclass, sizeof(zclass), "%t", "!zmenu class", ITEMDRAW_DISABLED);
|
||||
Format(zmarket, sizeof(zmarket), "%t", "!zmenu market");
|
||||
Format(zspawn, sizeof(zspawn), "%t", "!zmenu spawn");
|
||||
Format(ztele, sizeof(ztele), "%t", "!zmenu tele");
|
||||
@ -74,10 +74,10 @@ public MainMenuHandle(Handle:menu_main, MenuAction:action, client, slot)
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
if (!ZClass(client))
|
||||
/*if (!ZClass(client))
|
||||
{
|
||||
MainMenu(client);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
@ -110,7 +110,7 @@ public MainMenuHandle(Handle:menu_main, MenuAction:action, client, slot)
|
||||
}
|
||||
}
|
||||
|
||||
ClassMenu(client)
|
||||
/**ClassMenu(client)
|
||||
{
|
||||
new Handle:menu_classes = CreateMenu(ClassMenuHandle);
|
||||
|
||||
@ -184,4 +184,4 @@ public ClassMenuHandle(Handle:menu_classes, MenuAction:action, client, slot)
|
||||
{
|
||||
CloseHandle(menu_classes);
|
||||
}
|
||||
}
|
||||
}*/
|
@ -45,35 +45,27 @@ ClassOnClientSpawn(client)
|
||||
|
||||
if (showmenu && !randomclass)
|
||||
{
|
||||
ClassMenu(client);
|
||||
//ClassMenu(client);
|
||||
}
|
||||
|
||||
// Assign random classes if enabled.
|
||||
GetClientAuthString(client, steamid, sizeof(steamid));
|
||||
if (StrEqual(steamid, "BOT") || randomclass)
|
||||
{
|
||||
// Old class system.
|
||||
new classindex = GetRandomInt(0, classCount - 1);
|
||||
|
||||
Call_StartForward(hOnZClassChanged);
|
||||
Call_PushCell(client);
|
||||
Call_PushCell(pClass[client]);
|
||||
Call_PushCell(classindex);
|
||||
Call_Finish();
|
||||
|
||||
pClass[client] = classindex;
|
||||
|
||||
// New class system.
|
||||
// Get player's team
|
||||
new teamid = GetClientTeam(client);
|
||||
|
||||
// If the first zombie spawned, and the player is on the terrorist team, then
|
||||
// find a random zombie class, otherwise find a human class.
|
||||
if (zombieSpawned && teamid == CS_TEAM_T)
|
||||
{
|
||||
classindex = ClassGetRandomClass(ZR_CLASS_TEAM_ZOMBIES);
|
||||
new classindex = ClassGetRandomClass(ZR_CLASS_TEAM_ZOMBIES);
|
||||
ClassSelected[client][ZR_CLASS_TEAM_ZOMBIES] = classindex;
|
||||
ClassGetName(client, classname, sizeof(classname));
|
||||
}
|
||||
else
|
||||
{
|
||||
classindex = ClassGetRandomClass(ZR_CLASS_TEAM_HUMANS);
|
||||
new classindex = ClassGetRandomClass(ZR_CLASS_TEAM_HUMANS);
|
||||
ClassSelected[client][ZR_CLASS_TEAM_HUMANS] = classindex;
|
||||
ClassGetName(client, classname, sizeof(classname));
|
||||
}
|
||||
|
@ -551,8 +551,6 @@ bool:ClassReloadPlayerCache(client, classindex, cachetype = ZR_CLASS_CACHE_MODIF
|
||||
*/
|
||||
ClassClientSetDefaultIndexes(client = -1)
|
||||
{
|
||||
new classindex = GetDefaultClassIndex(); // Old class system. Not removed for backwards compatibility.
|
||||
|
||||
// Get indexes.
|
||||
new zombieindex = ClassGetDefaultSpawnClass(ZR_CLASS_TEAM_ZOMBIES);
|
||||
new humanindex = ClassGetDefaultSpawnClass(ZR_CLASS_TEAM_HUMANS);
|
||||
@ -603,10 +601,6 @@ ClassClientSetDefaultIndexes(client = -1)
|
||||
// Check if a client is specified.
|
||||
if (client > 0)
|
||||
{
|
||||
// Set the old array for backwards compatibility while introducing the
|
||||
// new class system.
|
||||
pClass[client] = classindex;
|
||||
|
||||
ClassSelected[client][ZR_CLASS_TEAM_ZOMBIES] = zombieindex;
|
||||
ClassSelected[client][ZR_CLASS_TEAM_HUMANS] = humanindex;
|
||||
ClassSelected[client][ZR_CLASS_TEAM_ADMINS] = adminindex;
|
||||
@ -619,10 +613,6 @@ ClassClientSetDefaultIndexes(client = -1)
|
||||
// No client specified. Loop through all players.
|
||||
for (new clientindex = 1; clientindex <= MAXPLAYERS; clientindex++)
|
||||
{
|
||||
// Set the old array for backwards compatibility while introducing the
|
||||
// new class system.
|
||||
pClass[clientindex] = classindex;
|
||||
|
||||
ClassSelected[clientindex][ZR_CLASS_TEAM_ZOMBIES] = zombieindex;
|
||||
ClassSelected[clientindex][ZR_CLASS_TEAM_HUMANS] = humanindex;
|
||||
ClassSelected[clientindex][ZR_CLASS_TEAM_ADMINS] = adminindex;
|
||||
|
@ -35,10 +35,10 @@ public Action:SayCommand(client, argc)
|
||||
ZRAdminMenu(client);
|
||||
}
|
||||
|
||||
else if (StrEqual(args, "!zclass", false))
|
||||
/*else if (StrEqual(args, "!zclass", false))
|
||||
{
|
||||
ZClass(client);
|
||||
}
|
||||
}*/
|
||||
|
||||
else if (StrEqual(args, "!zmarket", false))
|
||||
{
|
||||
@ -77,7 +77,7 @@ public Action:SayCommand(client, argc)
|
||||
return Plugin_Continue;
|
||||
}
|
||||
|
||||
bool:ZClass(client)
|
||||
/*bool:ZClass(client)
|
||||
{
|
||||
new bool:classes = GetConVarBool(gCvars[CVAR_CLASSES]);
|
||||
if (!classes)
|
||||
@ -98,7 +98,7 @@ bool:ZClass(client)
|
||||
ClassMenu(client);
|
||||
|
||||
return true;
|
||||
}
|
||||
}*/
|
||||
|
||||
bool:ZMarket(client)
|
||||
{
|
||||
|
@ -162,11 +162,6 @@ public Action:MotherZombie(Handle:timer)
|
||||
|
||||
Zombify_Mother(client)
|
||||
{
|
||||
Call_StartForward(hZombify);
|
||||
Call_PushCell(client);
|
||||
Call_PushCell(true);
|
||||
Call_Finish();
|
||||
|
||||
gZombie[client] = true;
|
||||
motherZombie[client] = true;
|
||||
|
||||
@ -246,12 +241,6 @@ Zombify(client, attacker = -1, bool:motherinfect = false)
|
||||
}
|
||||
}
|
||||
|
||||
// Forward global event.
|
||||
Call_StartForward(hZombify);
|
||||
Call_PushCell(client);
|
||||
Call_PushCell(false);
|
||||
Call_Finish();
|
||||
|
||||
// Set player status.
|
||||
gZombie[client] = true;
|
||||
motherZombie[client] = motherinfect;
|
||||
|
@ -76,9 +76,6 @@ new bool:dispHP[MAXPLAYERS + 1];
|
||||
new bool:pProtect[MAXPLAYERS + 1];
|
||||
new bool:gKilledByWorld[MAXPLAYERS + 1] = {false, ...};
|
||||
|
||||
new pClass[MAXPLAYERS + 1];
|
||||
new pNextClass[MAXPLAYERS + 1];
|
||||
|
||||
new pTimeLeft[MAXPLAYERS + 1];
|
||||
|
||||
new Float:spawnLoc[MAXPLAYERS + 1][3];
|
||||
|
Loading…
Reference in New Issue
Block a user