vip_multi_jump.sp(24) : error 021: symbol already defined: "Cookie"
vip_multi_jump.sp(67) : error 174: symbol 'Cookie' is a type and cannot be used as a value
vip_multi_jump.sp(182) : error 174: symbol 'Cookie' is a type and cannot be used as a value
Code:
#include <sourcemod>
#include <sdktools_functions>
#include <vip_core>
#include <clientprefs>
#pragma semicolon 1
#pragma newdecls required
public Plugin myinfo =
{
name = "[VIP] MULTI JUMP",
author = "Pheonix (˙·٠●Феникс●٠·˙), CrazyHackGUT aka Kruzya",
version = "1.0.1",
url = "http://zizt.ru/ http://hlmod.ru/"
};
stock const char g_szFunctionName[] = "MULTI_JUMP";
int JUMP[MAXPLAYERS+1][5];
float JUMPS[MAXPLAYERS+1];
int PJUMP;
int PJUMPD;
float PJUMPS;
Handle Cookie;
public void OnPluginStart()
{
Cookie = RegClientCookie(g_szFunctionName, g_szFunctionName, CookieAccess_Protected);
if (VIP_IsVIPLoaded())
VIP_OnVIPLoaded();
}
public void OnPluginEnd() {
if (CanTestFeatures() && GetFeatureStatus(FeatureType_Native, "VIP_UnregisterFeature") == FeatureStatus_Available && VIP_IsValidFeature(g_szFunctionName))
VIP_UnregisterFeature(g_szFunctionName);
}
public void OnMapStart()
{
KeyValues kv = new KeyValues(g_szFunctionName);
char path[128];
BuildPath(Path_SM, path, 128, "data/vip/modules/multi_jump.ini");
if(!kv.ImportFromFile(path)) SetFailState("[MULTI JUMP] - Файл конфигураций не найден");
else
{
PJUMP = kv.GetNum("JUMP");
if(PJUMP == 3) PJUMPS = kv.GetFloat("JUMP_K");
else if(PJUMP == 2) PJUMPD = kv.GetNum("JUMP_K");
}
CloseHandle(kv);
}
public void VIP_OnVIPLoaded()
{
VIP_RegisterFeature(g_szFunctionName, STRING, SELECTABLE, SELECTABLE_ITEM, OnDisplayItem, ItemDraw);
}
public void VIP_OnVIPClientLoaded(int iClient)
{
char buf[3][10];
VIP_GetClientFeatureString(iClient, g_szFunctionName, buf[0], 10);
ExplodeString(buf[0], ";", buf, 3, 10);
StringToIntEx(buf[0], JUMP[iClient][0]);
StringToIntEx(buf[1], JUMP[iClient][1]);
StringToFloatEx(buf[2], JUMPS[iClient]);
if(JUMPS[iClient] > 0.0) JUMP[iClient][2] = 1;
GetClientCookie(iClient, Cookie, buf[0], 10);
int b = StringToInt(buf[0]);
if(b)
{
if((PJUMP != b || PJUMP==0) && JUMP[iClient][b-1]) JUMP[iClient][4] = b;
else JUMP[iClient][4] = 0;
}
else JUMP[iClient][4] = 0;
}
public void OnClientPutInServer(int iClient)
{
for (int i; i < 5; ++i) JUMP[iClient][i] = 0;
}
public int ItemDraw(int iClient, const char[] sFeatureName, int iStyle)
{
if(JUMP[iClient][0] || JUMP[iClient][1] || JUMP[iClient][2]) return iStyle;
return ITEMDRAW_DISABLED;
}
public bool SELECTABLE_ITEM(int iClient, const char[] sSubMenuName)
{
int buf = JUMP[iClient][4];
static bool h;
while (!h)
{
buf++;
if(buf > 3)
{
JUMP[iClient][4] = 0;
break;
}
else if((PJUMP != buf || PJUMP==0) && JUMP[iClient][buf-1])
{
JUMP[iClient][4] = buf;
break;
}
}
save(iClient);
return true;
}
public bool OnDisplayItem(int iClient, const char[] sFeatureName, char[] sDisplay, int maxlen)
{
switch (JUMP[iClient][4])
{
case 0: strcopy(sDisplay, maxlen, "Jumping [Standard]");
case 1: strcopy(sDisplay, maxlen, "Jumping [BunnyHop]");
case 2: FormatEx(sDisplay, maxlen, "Jumping [%d jump (s)]", JUMP[iClient][1]);
case 3: strcopy(sDisplay, maxlen, "Jumping [Super jump]");
}
return true;
}
public Action OnPlayerRunCmd(int iClient, int &fCurButtons, int &impulse, float vel[3], float angles[3], int &weapon)
{
if (IsPlayerAlive(iClient))
{
static int g_fLastButtons[MAXPLAYERS+1], g_fLastFlags[MAXPLAYERS+1], g_iJumps[MAXPLAYERS+1], fCurFlags;
static bool sp[MAXPLAYERS+1];
fCurFlags = GetEntityFlags(iClient);
if((PJUMP == 2 && JUMP[iClient][4] == 0) || JUMP[iClient][4] == 2)
{
static int u;
if(PJUMP == 2) u = PJUMPD;
else u = JUMP[iClient][1];
if (g_fLastFlags[iClient] & FL_ONGROUND && !(fCurFlags & FL_ONGROUND) && !(g_fLastButtons[iClient] & IN_JUMP) && fCurButtons & IN_JUMP) g_iJumps[iClient]++;
else if(fCurFlags & FL_ONGROUND) g_iJumps[iClient] = 1;
else if(!(g_fLastButtons[iClient] & IN_JUMP) && fCurButtons & IN_JUMP && g_iJumps[iClient] < u)
{
g_iJumps[iClient]++;
float vVel[3];
GetEntPropVector(iClient, Prop_Data, "m_vecVelocity", vVel);
vVel[2] = 300.0;
TeleportEntity(iClient, NULL_VECTOR, NULL_VECTOR, vVel);
}
}
else if ((PJUMP == 1 && JUMP[iClient][4] == 0) || JUMP[iClient][4] == 1 && fCurButtons & IN_JUMP)
{
if (GetEntProp(iClient, Prop_Data, "m_nWaterLevel") <= 1)
{
if (!(GetEntityMoveType(iClient) & MOVETYPE_LADDER))
{
SetEntPropFloat(iClient, Prop_Send, "m_flStamina", 0.0);
if (!(fCurFlags & FL_ONGROUND))
{
fCurButtons &= ~IN_JUMP;
}
}
}
}
else if(iClient && ((PJUMP == 3 && JUMP[iClient][4] == 0) || JUMP[iClient][4] == 3))
{
if(!(g_fLastButtons[iClient] & IN_JUMP) && fCurButtons & IN_JUMP && !sp[iClient])
{
sp[iClient] = true;
float vVel[3];
GetEntPropVector(iClient, Prop_Data, "m_vecVelocity", vVel);
if(PJUMP == 3) vVel[2] = 300.0*PJUMPS;
else vVel[2] = 300.0*JUMPS[iClient];
TeleportEntity(iClient, NULL_VECTOR, NULL_VECTOR, vVel);
}
else if(fCurFlags & FL_ONGROUND) sp[iClient] = false;
}
g_fLastFlags[iClient] = fCurFlags;
g_fLastButtons[iClient] = fCurButtons;
}
return Plugin_Continue;
}
void save(int iClient)
{
char buf[5];
IntToString(JUMP[iClient][4], buf, 5);
SetClientCookie(iClient, Cookie, buf);
}