I have a problem with the plug-vip namely after killing a player gets on additional hp and by killing hs also gets extra hp
PHP Code:
new Handle:g_hCvar[8], g_iCvar[7], String:g_szFlags[AdminFlags_TOTAL + 1];
public OnPluginStart() {
g_hCvar[0] = CreateConVar("vip_connected_info", "1", "Czy ma wyswietlac w hud informacje o dolaczeniu VIPa na serwer", FCVAR_NONE, true, 0.0, true, 1.0);
g_hCvar[1] = CreateConVar("vip_give_money_kill", "0", "Ile ma dodawac pieniedzy za zabicie: 0:brak");
g_hCvar[2] = CreateConVar("vip_give_health_kill", "5", "Ile ma dodawac zycia za zabicie: 0:brak");
g_hCvar[3] = CreateConVar("vip_give_health_money_kill_hs", "1", "Ile razy wiecej zycia za zabicie headshotem: 0:brak");
g_hCvar[4] = CreateConVar("vip_additional_heal_max", "100", "Ile mozna miec maksymalnie zycia za zabicia: 0:brak");
g_hCvar[5] = CreateConVar("vip_disconnected_info", "1", "Czy ma wyswietlac w hud informacje o rozlaczeniu VIPa z serwera", FCVAR_NONE, true, 0.0, true, 1.0);
g_hCvar[6] = CreateConVar("vip_tag", "1", "Czy ma ustawic tag [VIP] w nicku na say i tabeli: 0:brak", FCVAR_NONE, true, 0.0, true, 1.0);
g_hCvar[7] = CreateConVar("vip_flag", "t", "Flagi VIPa (mozna podac kilka)");
g_iCvar[0] = GetConVarBool(g_hCvar[0]);
g_iCvar[1] = GetConVarInt(g_hCvar[1]);
g_iCvar[2] = GetConVarInt(g_hCvar[2]);
g_iCvar[3] = GetConVarInt(g_hCvar[3]);
g_iCvar[4] = GetConVarInt(g_hCvar[4]);
g_iCvar[5] = GetConVarBool(g_hCvar[5]);
g_iCvar[6] = GetConVarBool(g_hCvar[6]);
GetConVarString(g_hCvar[7], g_szFlags, sizeof g_szFlags);
//strcopy(g_szFlags, sizeof g_szFlags, g_szFlags);
RegConsoleCmd("sm_vips", VipsOnlineMenu, "Wyświetla menu z graczami VIP");
if(g_iCvar[1] || g_iCvar[2]) HookEvent("player_death", OnPlayerDeath);
if(g_iCvar[6]) {
HookEvent("player_team", OnTagTable);
HookEvent("player_spawn", OnTagTable);
}
AutoExecConfig(true, "vip_op");
}
public OnClientPostAdminCheck(client) {
if(!isVIP(client)) return;
if(g_iCvar[0]) PrintHintTextToAll("Dołączył VIP: %N", client);
}
public OnClientDisconnected(client) {
if(!isVIP(client)) return;
if(!g_iCvar[5]) PrintHintTextToAll("Dołączył VIP: %N", client);
}
public Action:VipsOnlineMenu(client, args) {
new i = 1;
new Handle:hMenu = CreateMenu(VipsOnlineMenuHandler, MenuAction_Display|MenuAction_Select|MenuAction_Cancel);
static String:szName[MAX_NAME_LENGTH + 5], String:szUserId[5];
while(++i <= MaxClients) {
if(!isValid(i)) continue;
IntToString(GetClientUserId(i), szUserId, sizeof szUserId);
FormatEx(szName, sizeof szName, "%N (%i)", i, GetClientUserId(client));
AddMenuItem(hMenu, szUserId, szName);
}
SetMenuTitle(hMenu, "Lista VIP'ów na serwerze:");
SetMenuExitButton(hMenu, true);
SetMenuExitBackButton(hMenu, false);
DisplayMenu(hMenu, client, MENU_TIME_FOREVER);
}
public VipsOnlineMenuHandler(Handle:hMenu, MenuAction:action, client, item) {
if(action != MenuAction_Select) return;
decl String:szInfo[32];
if(!GetMenuItem(hMenu, item, szInfo, sizeof szInfo)) return;
new iSelectedPlayer = GetClientOfUserId(StringToInt(szInfo));
if(IsClientConnected(iSelectedPlayer)) {
static String:szAuthid[32];
GetClientAuthId(iSelectedPlayer, AuthId_Steam2, szAuthid, sizeof szAuthid);
if(GetUserFlagBits(client) & ADMFLAG_CUSTOM6) {
static String:szIP[24];
GetClientIP(iSelectedPlayer, szIP, sizeof szIP);
PrintToChat(client, "\x04[VIP]\x01 Gracz:\x02 %N\x01 IP:\x02 %s\x01 Steam ID:\x02 %s\x01 Żyje:\x02 %s", client, szIP, szAuthid, IsPlayerAlive(iSelectedPlayer) ? "Tak" : "Nie");
}
else PrintToChat(client, "\x04[VIP]\x01 Gracz:\x02 %N\x01 Steam ID:\x02 %s\x01 Żyje:\x02 %s", client, szAuthid, IsPlayerAlive(iSelectedPlayer) ? "Tak" : "Nie");
}
else PrintToChat(client, "\x04[VIP]\x01 Wygrany gracz VIP wyszedł z serwera.");
}
public Action:OnPlayerDeath(Handle:event, const String:name[], bool:dontBroadcast) {
new attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
if(!isValid(attacker) || attacker == GetClientOfUserId(GetEventInt(event, "userid"))) return;
new iMoney = GetEventBool(event, "headshot") ? (g_iCvar[3] * g_iCvar[1]) : g_iCvar[3];
new iHealthAdd = GetEventBool(event, "headshot") ? (g_iCvar[2] * g_iCvar[3]) : g_iCvar[2];
PrintHintText(attacker, "+%iHP i +$%i", iHealthAdd);
SetEntData(attacker, FindDataMapOffs(attacker, "m_iHealth"), GetClientHealth(attacker) + iHealthAdd);
SetEntProp(attacker, Prop_Send, "m_iAccount", GetEntProp(attacker, Prop_Send, "m_iAccount") + iMoney);
new iHealth = GetClientHealth(attacker);
SetEntityHealth(attacker, iHealth + iHealthAdd >= g_iCvar[4] ? g_iCvar[4] : iHealth + iHealthAdd);
}
public Action:OnTagTable(Handle:event, String:name[], bool:dontBroadcast) {
new client = GetClientOfUserId(GetEventInt(event, "userid"));
static String:szTag[6];
CS_GetClientClanTag(client, szTag, sizeof szTag);
if(isValid(client) && !StrEqual(szTag, "[VIP]")) CS_SetClientClanTag(client, "[VIP]");
}
//stock isVIP(client) return GetUserFlagBits(id) & ReadFlagString(g_szFlags) == ReadFlagString(g_szFlags);
stock isVIP(client) return GetUserFlagBits(client) & ReadFlagString(g_szFlags);
stock isValid(client) return (1 <= client <= MaxClients && IsClientConnected(client) && IsClientInGame(client) && !IsFakeClient(client) && !IsClientReplay(client) && !IsClientSourceTV(client) && isVIP(client));