Na ma este neki estem újraírni a dolgokat. Viszooooooooooooooont. A végeredmény egy hibátlanul leforduló viszont nem működő plugin. DD
A plugin kódja:
Kód: #include <sourcemod> #include <sdktools> #include <sdkhooks> #include <cstrike>
#pragma semicolon 1 #pragma newdecls required
#define DATA "2.0"
public Plugin myinfo = { name = "VIP", author = "Zendor", description = "VIP PLUGIN", version = "0.1", url = "http://stat.erack.hu" };
Handle HP, Flashbang, Smokegrenade, Hegrenade, Molotov, Armorvalue, Bhashelmet, Defuser, Remove_grenade, Taser, trie_armas;
Handle timers[MAXPLAYERS + 1];
int g_iaGrenadeOffsets[] = {15, 17, 16, 14, 18, 17}, RoundCount = 0;
public void OnPluginStart() { HP = CreateConVar("vip_hp_start", "100", "Hány HP-n kezdjenek a VIP-k.", FCVAR_NOTIFY); Flashbang = CreateConVar("vip_grenade_flashbang", "1", "Kapjon a VIP flash gránátot a kör elején? (1-2))", FCVAR_NOTIFY, true, 0.0, true, 2.0); Smokegrenade = CreateConVar("vip_grenade_smokegrenade", "0", "Kapjon a VIP smoke-t a kör elején?", FCVAR_NONE, true, 0.0, true, 1.0); Hegrenade = CreateConVar("vip_grenade_hegrenade", "1", "Kapján a VIP gránátot a kör elején?", FCVAR_NONE, true, 0.0, true, 1.0); Molotov = CreateConVar("vip_grenade_molotov", "0", "Kapján a VIP molót a kör elején? ",FCVAR_NONE, true, 0.0, true, 1.0); Armorvalue = CreateConVar("vip_armorvalue", "100", "Mennyi armor-t kapjonak a VIP-k", FCVAR_NONE, true, 0.0, true, 1.0); Remove_grenade = CreateConVar("vip_grenade_remove", "0", "A kör elején eltávolítja az összes gránátot", FCVAR_NONE, true, 0.0, true, 1.0); Defuser = CreateConVar("vip_defuser", "1", "CT-ben kapjanak a VIP-k defusert?", FCVAR_NONE, true, 0.0, true, 1.0); Bhashelmet = CreateConVar("vip_bhashelmet", "1", "Legyen sisakjuk a VIP-knak?", FCVAR_NONE, true, 0.0, true, 1.0); Taser = CreateConVar("vip_taser", "1.0", "Zeust ad minden körben."); trie_armas = CreateTrie(); AutoExecConfig(true, "VIPBETA");
HookEvent("player_spawn", Spawn); HookEvent("round_start", Event_RoundStart); HookEvent("announce_phase_end", ResetAfterTeamChange); HookEvent("cs_intermission", ResetAfterTeamChange);
for (int i = 1; i <= MaxClients; i++) { if (IsValidClient(i)) OnClientPutInServer(i); OnClientPostAdminCheck(i); } } public void OnMapStart() { RoundCount = 0; } public Action Event_RoundStart(Event hEvent, const char[] chName, bool bDontBroadcast) { RoundCount = RoundCount + 1; }
public void OnClientPutInServer(int client) { SDKHook(client, SDKHook_WeaponEquipPost, EventItemPickup2); }
public void OnClientPostAdminCheck(int client) { if (IsPlayerGenericAdmin(client)) timers[client] = CreateTimer(3.0, Darm, client, TIMER_REPEAT); if (IsPlayerGenericAdmin(client)) { PrintToChatAll("╔══════════════════════════════╗"); PrintToChatAll("[TULAJDONOS] %N csatlakozott a szerverre", client); PrintToChatAll("╚══════════════════════════════╝"); }else if (IsPlayerGenericAdmin(client)) { PrintToChatAll("╔═══════════════════════════╗"); PrintToChatAll("[ADMIN] %N csatlakozott a szerverre", client); PrintToChatAll("╚═══════════════════════════╝"); }else if(IsPlayerGenericAdmin(client)) { PrintToChatAll("╔════════════════════════╗"); PrintToChatAll("[VIP] %N csatlakozott a szerverre", client); PrintToChatAll("╚════════════════════════╝"); } else { return; } }
public void OnClientDisconnect(int client) { if(timers[client] != INVALID_HANDLE) { KillTimer(timers[client]); timers[client] = INVALID_HANDLE; }
if (IsPlayerGenericAdmin(client)) { PrintToChatAll("╔══════════════════════════════╗"); PrintToChatAll("[TULAJDONOS] %N lecsatlakozott a szerverről", client); PrintToChatAll("╚══════════════════════════════╝"); }else if (IsPlayerGenericAdmin(client)) { PrintToChatAll("╔═══════════════════════════╗"); PrintToChatAll("[ADMIN] %N lecsatlakozott a szerverről", client); PrintToChatAll("╚═══════════════════════════╝"); }else if(IsPlayerGenericAdmin(client)) { PrintToChatAll("╔════════════════════════╗"); PrintToChatAll("[VIP] %N lecsatlakozott a szerverről", client); PrintToChatAll("╚════════════════════════╝"); } else { return; } }
public Action Darm(Handle timer, any client) { if(IsPlayerAlive(client)) { int weapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon"); if(weapon > 0 && (weapon == GetPlayerWeaponSlot(client, CS_SLOT_PRIMARY) || weapon == GetPlayerWeaponSlot(client, CS_SLOT_SECONDARY))) { int warray; char classname[4]; Format(classname, 4, "%i", GetEntProp(weapon, Prop_Send, "m_iItemDefinitionIndex")); if(GetTrieValue(trie_armas, classname, warray)) { if(GetReserveAmmo(weapon) != warray) SetEntProp(weapon, Prop_Send, "m_iPrimaryReserveAmmoCount", warray); } } } }
public Action ResetAfterTeamChange(Event hEvent, const char[] chName, bool bDontBroadcast) { RoundCount = 2; }
stock int GetReserveAmmo(int weapon) { return GetEntProp(weapon, Prop_Send, "m_iPrimaryReserveAmmoCount"); }
public Action EventItemPickup2(int client,int weapon) { if(weapon == GetPlayerWeaponSlot(client, CS_SLOT_PRIMARY) || weapon == GetPlayerWeaponSlot(client, CS_SLOT_SECONDARY)) { int warray; char classname[4]; Format(classname, 4, "%i", GetEntProp(weapon, Prop_Send, "m_iItemDefinitionIndex")); if(!GetTrieValue(trie_armas, classname, warray)) { warray = GetEntProp(weapon, Prop_Send, "m_iPrimaryReserveAmmoCount"); SetTrieValue(trie_armas, classname, warray); } else { if(IsPlayerGenericAdmin(client)) SetEntProp(weapon, Prop_Send, "m_iPrimaryReserveAmmoCount", warray); } } }
public Action Spawn(Event event, const char[] name, bool dontBroadcast) { int client = GetClientOfUserId(GetEventInt(event, "userid")), team = GetClientTeam(client), g_HP = GetConVarInt(HP), g_Flashbang = GetConVarInt(Flashbang); if(client > 0 && IsPlayerAlive(client) && IsPlayerGenericAdmin(client)) { SetEntityHealth(client, g_HP); if(GetConVarBool(Remove_grenade)) StripNades(client); if(GetConVarBool(Smokegrenade)) GivePlayerItem(client, "weapon_smokegrenade"); if(GetConVarBool(Hegrenade)) GivePlayerItem(client, "weapon_hegrenade"); if(GetConVarBool(Molotov) && team == CS_TEAM_T) GivePlayerItem(client, "weapon_molotov"); if(GetConVarBool(Molotov) && team == CS_TEAM_CT) GivePlayerItem(client, "weapon_incgrenade"); if(GetConVarBool(Armorvalue)) SetEntProp(client, Prop_Send, "m_ArmorValue", 100); if(GetConVarBool(Taser)) GivePlayerItem(client, "weapon_taser"); if(GetConVarBool(Bhashelmet) && RoundCount > 1) SetEntProp(client, Prop_Send, "m_bHasHelmet", 1); if(GetConVarBool(Flashbang)) { for (int i = 1; i <= g_Flashbang; i++) GivePlayerItem(client, "weapon_flashbang"); } if(team == CS_TEAM_CT) { if(GetConVarBool(Defuser) && GetEntProp(client, Prop_Send, "m_bHasDefuser") == 0) GivePlayerItem(client, "item_defuser"); } } }
stock void StripNades(int client) { while(RemoveWeaponBySlot(client, 3)){} for(int i = 0; i < 6; i++) SetEntProp(client, Prop_Send, "m_iAmmo", 0, _, g_iaGrenadeOffsets[i]); }
stock bool RemoveWeaponBySlot(int client, int iSlot) { int iEntity = GetPlayerWeaponSlot(client, iSlot); if(IsValidEdict(iEntity)) { RemovePlayerItem(client, iEntity); AcceptEntityInput(iEntity, "Kill"); return true; } return false; }
public int MenuHandler2(Menu menusec, MenuAction action, int client, int itemNum) { if (action == MenuAction_Select) { char info[32]; GetMenuItem(menusec, itemNum, info, sizeof(info)); if (IsPlayerAlive(client)) GivePlayerItem(client, info); } else if (action == MenuAction_End) CloseHandle(menusec); }
public Action PistolMenu(int client) { if (IsPlayerGenericAdmin(client) && ADMFLAG_CUSTOM1 && RoundCount > 1 && IsValidClient(client)) { Menu menusec = new Menu(MenuHandler2); menusec.SetTitle("VIP : Choose Pistol"); menusec.AddItem("weapon_deagle", "Deagle"); menusec.AddItem("weapon_revolver", "R8 Revolver"); menusec.AddItem("weapon_fiveseven", "Five-Seven"); menusec.AddItem("weapon_tec9", "Tec-9"); menusec.AddItem("weapon_cz75a", "CZ7a"); menusec.AddItem("weapon_elite", "Dual Elites"); menusec.AddItem("weapon_p250", "p250"); menusec.ExitButton = true; menusec.Display(client, 15); } }
stock void StripAllWeapons(int client) { int iEnt; for (int i = 0; i <= 2; i++) { while ((iEnt = GetPlayerWeaponSlot(client, i)) != -1) { RemovePlayerItem(client, iEnt); AcceptEntityInput(iEnt, "Kill"); } } }
public int MenuHandler1(Menu menu, MenuAction action, int client, int itemNum) { if (action == MenuAction_Select) { char info[32]; GetMenuItem(menu, itemNum, info, sizeof(info)); if (IsPlayerAlive(client)) { StripAllWeapons(client); GivePlayerItem(client, "weapon_knife"); GivePlayerItem(client, info); PistolMenu(client); } } else if (action == MenuAction_End) CloseHandle(menu); }
public Action GunsMenu(int client) { if (IsPlayerGenericAdmin(client) && ADMFLAG_CUSTOM1 && RoundCount > 1 && IsValidClient(client)) { Menu menu = new Menu(MenuHandler1); menu.SetTitle("VIP : Choose your Gun"); menu.AddItem("weapon_ak47", "AK-47"); menu.AddItem("weapon_m4a1", "M4A4"); menu.AddItem("weapon_sg556", "SG553"); menu.AddItem("weapon_m4a1_silencer", "M4A1-S"); menu.AddItem("weapon_awp", "AWP"); menu.AddItem("weapon_ssg08", "SCOUT"); menu.AddItem("weapon_xm1014", "XM1014"); menu.AddItem("weapon_famas", "FAMAS"); menu.ExitButton = true; menu.Display(client, 15); } }
stock bool IsValidClient(int client, bool alive = false) { if(client >= 1 && client <= MaxClients && IsClientInGame(client) && (alive == false || IsPlayerAlive(client))) { return true; } return false; }
stock bool IsPlayerGenericAdmin(int client) { if (!CheckCommandAccess(client, "sm_vipp", 0, true) && !CheckCommandAccess(client, "arenaskilla", ADMFLAG_ROOT, true)) return false; { return true; }
}
A hibaüzenetek:
Kód: L 01/15/2020 - 23:23:55: [SM] Exception reported: Client 3 is not connected L 01/15/2020 - 23:23:55: [SM] Blaming: VIPPLUGIN.smx L 01/15/2020 - 23:23:55: [SM] Call stack trace: L 01/15/2020 - 23:23:55: [SM] [0] GetUserFlagBits L 01/15/2020 - 23:23:55: [SM] [1] Line 105, C:\Users\Asus TUF\Downloads\CSGO\sourcemod-1.10.0-git6456-windows\addons\sourcemod\scripting\VIPPLUGIN.sp::OnClientPostAdminCheck L 01/15/2020 - 23:23:55: [SM] [2] Line 84, C:\Users\Asus TUF\Downloads\CSGO\sourcemod-1.10.0-git6456-windows\addons\sourcemod\scripting\VIPPLUGIN.sp::OnPluginStart L 01/15/2020 - 23:37:11: [SM] Exception reported: Client 7 is not connected L 01/15/2020 - 23:37:11: [SM] Blaming: VIPPLUGIN.smx L 01/15/2020 - 23:37:11: [SM] Call stack trace: L 01/15/2020 - 23:37:11: [SM] [0] GetUserFlagBits L 01/15/2020 - 23:37:11: [SM] [1] Line 90, C:\Users\Asus TUF\Downloads\CSGO\sourcemod-1.10.0-git6456-windows\addons\sourcemod\scripting\VIPPLUGIN.sp::OnClientPostAdminCheck L 01/15/2020 - 23:37:11: [SM] [2] Line 69, C:\Users\Asus TUF\Downloads\CSGO\sourcemod-1.10.0-git6456-windows\addons\sourcemod\scripting\VIPPLUGIN.sp::OnPluginStart L 01/15/2020 - 23:40:21: [SM] Exception reported: Client 6 is not connected L 01/15/2020 - 23:40:21: [SM] Blaming: VIPPLUGIN.smx L 01/15/2020 - 23:40:21: [SM] Call stack trace: L 01/15/2020 - 23:40:21: [SM] [0] GetUserFlagBits L 01/15/2020 - 23:40:21: [SM] [1] Line 90, C:\Users\Asus TUF\Downloads\CSGO\sourcemod-1.10.0-git6456-windows\addons\sourcemod\scripting\VIPPLUGIN.sp::OnClientPostAdminCheck L 01/15/2020 - 23:40:21: [SM] [2] Line 69, C:\Users\Asus TUF\Downloads\CSGO\sourcemod-1.10.0-git6456-windows\addons\sourcemod\scripting\VIPPLUGIN.sp::OnPluginStart L 01/15/2020 - 23:40:56: [SM] Exception reported: Client 6 is not connected L 01/15/2020 - 23:40:56: [SM] Blaming: VIPPLUGIN.smx L 01/15/2020 - 23:40:56: [SM] Call stack trace: L 01/15/2020 - 23:40:56: [SM] [0] GetUserFlagBits L 01/15/2020 - 23:40:56: [SM] [1] Line 90, C:\Users\Asus TUF\Downloads\CSGO\sourcemod-1.10.0-git6456-windows\addons\sourcemod\scripting\VIPPLUGIN.sp::OnClientPostAdminCheck L 01/15/2020 - 23:40:56: [SM] [2] Line 69, C:\Users\Asus TUF\Downloads\CSGO\sourcemod-1.10.0-git6456-windows\addons\sourcemod\scripting\VIPPLUGIN.sp::OnPluginStart L 01/15/2020 - 23:42:01: [SM] Exception reported: Client 7 is not connected L 01/15/2020 - 23:42:01: [SM] Blaming: VIPPLUGIN.smx L 01/15/2020 - 23:42:01: [SM] Call stack trace: L 01/15/2020 - 23:42:01: [SM] [0] GetUserFlagBits L 01/15/2020 - 23:42:01: [SM] [1] Line 90, C:\Users\Asus TUF\Downloads\CSGO\sourcemod-1.10.0-git6456-windows\addons\sourcemod\scripting\VIPPLUGIN.sp::OnClientPostAdminCheck L 01/15/2020 - 23:42:01: [SM] [2] Line 69, C:\Users\Asus TUF\Downloads\CSGO\sourcemod-1.10.0-git6456-windows\addons\sourcemod\scripting\VIPPLUGIN.sp::OnPluginStart L 01/15/2020 - 23:42:31: Error log file session closed. L 01/15/2020 - 23:42:31: SourceMod error session started L 01/15/2020 - 23:42:31: Info (map "de_mirage") (file "/home/container/csgo/addons/sourcemod/logs/errors_20200115.log") L 01/15/2020 - 23:42:31: [SM] Exception reported: Client 1 is not connected L 01/15/2020 - 23:42:31: [SM] Blaming: VIPPLUGIN.smx L 01/15/2020 - 23:42:31: [SM] Call stack trace: L 01/15/2020 - 23:42:31: [SM] [0] GetUserFlagBits L 01/15/2020 - 23:42:31: [SM] [1] Line 90, C:\Users\Asus TUF\Downloads\CSGO\sourcemod-1.10.0-git6456-windows\addons\sourcemod\scripting\VIPPLUGIN.sp::OnClientPostAdminCheck L 01/15/2020 - 23:42:31: [SM] [2] Line 69, C:\Users\Asus TUF\Downloads\CSGO\sourcemod-1.10.0-git6456-windows\addons\sourcemod\scripting\VIPPLUGIN.sp::OnPluginStart ------------------------------------------------- Eddig használtam GetUserFlagBits-et. Ezután már IsPlayerGenericAdmin ez volt. L 01/15/2020 - 23:42:31: [SM] Unable to load plugin "VIPPLUGIN.smx": Error detected in plugin startup (see error logs) L 01/15/2020 - 23:49:18: [SM] Exception reported: Client index 9 is invalid (arg 2) L 01/15/2020 - 23:49:18: [SM] Blaming: VIPPLUGIN.smx L 01/15/2020 - 23:49:18: [SM] Call stack trace: L 01/15/2020 - 23:49:18: [SM] [0] VFormat L 01/15/2020 - 23:49:18: [SM] [1] Line 386, C:\Users\Asus TUF\Downloads\CSGO\sourcemod-1.10.0-git6456-windows\addons\sourcemod\scripting\include\halflife.inc::PrintToChatAll L 01/15/2020 - 23:49:18: [SM] [2] Line 93, C:\Users\Asus TUF\Downloads\CSGO\sourcemod-1.10.0-git6456-windows\addons\sourcemod\scripting\VIPPLUGIN.sp::OnClientPostAdminCheck L 01/15/2020 - 23:49:18: [SM] [3] Line 68, C:\Users\Asus TUF\Downloads\CSGO\sourcemod-1.10.0-git6456-windows\addons\sourcemod\scripting\VIPPLUGIN.sp::OnPluginStart L 01/15/2020 - 23:50:29: [SM] Exception reported: Client index 5 is invalid (arg 2) L 01/15/2020 - 23:50:29: [SM] Blaming: VIPPLUGIN.smx L 01/15/2020 - 23:50:29: [SM] Call stack trace: L 01/15/2020 - 23:50:29: [SM] [0] VFormat L 01/15/2020 - 23:50:29: [SM] [1] Line 386, C:\Users\Asus TUF\Downloads\CSGO\sourcemod-1.10.0-git6456-windows\addons\sourcemod\scripting\include\halflife.inc::PrintToChatAll L 01/15/2020 - 23:50:29: [SM] [2] Line 93, C:\Users\Asus TUF\Downloads\CSGO\sourcemod-1.10.0-git6456-windows\addons\sourcemod\scripting\VIPPLUGIN.sp::OnClientPostAdminCheck L 01/15/2020 - 23:50:29: [SM] [3] Line 68, C:\Users\Asus TUF\Downloads\CSGO\sourcemod-1.10.0-git6456-windows\addons\sourcemod\scripting\VIPPLUGIN.sp::OnPluginStart
Ezeket a hibaüzeneteket produkálta. Eleinte még GetUserFlagBits-et használtam néhol, majd kicseréltem őket arra amit mondtál. Illetve így nemtudom, hogy hogy tudnám megkülönböztetni a VIP,TULAJDONOS és ADMIN-okat a csatlakozásnál.
UPDATE: A fegyvermenün és a welcome message-n kívül minden működik.
Kód: #include <sourcemod> #include <sdktools> #include <sdkhooks> #include <cstrike>
#pragma semicolon 1 #pragma newdecls required
#define DATA "2.0"
public Plugin myinfo = { name = "VIP", author = "Zendor", description = "VIP PLUGIN", version = "0.1", url = "http://stat.erack.hu" };
Handle HP, Flashbang, Smokegrenade, Hegrenade, Molotov, Armorvalue, Bhashelmet, Defuser, Remove_grenade, Taser, trie_armas;
Handle timers[MAXPLAYERS + 1];
int g_iaGrenadeOffsets[] = { 15, 17, 16, 14, 18, 17 };
int RoundCount = 1;
public void OnPluginStart() { HP = CreateConVar("vip_hp_start", "100", "Hány HP-n kezdjenek a VIP-k.", FCVAR_NOTIFY); Flashbang = CreateConVar("vip_grenade_flashbang", "1", "Kapjon a VIP flash gránátot a kör elején? (1-2))", FCVAR_NOTIFY, true, 0.0, true, 2.0); Smokegrenade = CreateConVar("vip_grenade_smokegrenade", "0", "Kapjon a VIP smoke-t a kör elején?", FCVAR_NONE, true, 0.0, true, 1.0); Hegrenade = CreateConVar("vip_grenade_hegrenade", "1", "Kapján a VIP gránátot a kör elején?", FCVAR_NONE, true, 0.0, true, 1.0); Molotov = CreateConVar("vip_grenade_molotov", "0", "Kapján a VIP molót a kör elején? ",FCVAR_NONE, true, 0.0, true, 1.0); Armorvalue = CreateConVar("vip_armorvalue", "100", "Mennyi armor-t kapjonak a VIP-k", FCVAR_NONE, true, 0.0, true, 1.0); Remove_grenade = CreateConVar("vip_grenade_remove", "0", "A kör elején eltávolítja az összes gránátot", FCVAR_NONE, true, 0.0, true, 1.0); Defuser = CreateConVar("vip_defuser", "1", "CT-ben kapjanak a VIP-k defusert?", FCVAR_NONE, true, 0.0, true, 1.0); Bhashelmet = CreateConVar("vip_bhashelmet", "1", "Legyen sisakjuk a VIP-knak?", FCVAR_NONE, true, 0.0, true, 1.0); Taser = CreateConVar("vip_taser", "1.0", "Zeust ad minden körben."); trie_armas = CreateTrie(); AutoExecConfig(true, "VIPBETA");
HookEvent("player_spawn", Spawn); HookEvent("round_start", Event_RoundStart); HookEvent("announce_phase_end", ResetAfterTeamChange); HookEvent("cs_intermission", ResetAfterTeamChange);
for (int i = 1; i <= MaxClients; i++) { if (IsClientInGame(i)) OnClientPutInServer(i); OnClientPostAdminCheck(i); } } public void OnMapStart() { RoundCount = 0; } public Action Event_RoundStart(Event hEvent, const char[] chName, bool bDontBroadcast) { RoundCount = RoundCount + 1; }
public void OnClientPutInServer(int client) { SDKHook(client, SDKHook_WeaponEquipPost, EventItemPickup2); }
public void OnClientPostAdminCheck(int client) { if (IsPlayerGenericAdmin(client)) timers[client] = CreateTimer(3.0, Darm, client, TIMER_REPEAT); // if(IsPlayerGenericAdmin(client)) //{ // PrintToChatAll("╔════════════════════════╗"); // PrintToChatAll("[VIP] %N csatlakozott a szerverre", client); // PrintToChatAll("╚════════════════════════╝"); //} else // { // return; //} }
public void OnClientDisconnect(int client) { if(timers[client] != INVALID_HANDLE) { KillTimer(timers[client]); timers[client] = INVALID_HANDLE; }
//if(IsPlayerGenericAdmin(client)) //{ // PrintToChatAll("╔════════════════════════╗"); // PrintToChatAll("[VIP] %N lecsatlakozott a szerverről", client); // PrintToChatAll("╚════════════════════════╝"); // } else // { // return; // } }
public Action Darm(Handle timer, any client) { if(IsPlayerAlive(client)) { int weapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon"); if(weapon > 0 && (weapon == GetPlayerWeaponSlot(client, CS_SLOT_PRIMARY) || weapon == GetPlayerWeaponSlot(client, CS_SLOT_SECONDARY))) { int warray; char classname[4]; Format(classname, 4, "%i", GetEntProp(weapon, Prop_Send, "m_iItemDefinitionIndex")); if(GetTrieValue(trie_armas, classname, warray)) { if(GetReserveAmmo(weapon) != warray) SetEntProp(weapon, Prop_Send, "m_iPrimaryReserveAmmoCount", warray); } } } }
public Action ResetAfterTeamChange(Event hEvent, const char[] chName, bool bDontBroadcast) { RoundCount = 1; }
stock int GetReserveAmmo(int weapon) { return GetEntProp(weapon, Prop_Send, "m_iPrimaryReserveAmmoCount"); }
public Action EventItemPickup2(int client,int weapon) { if(weapon == GetPlayerWeaponSlot(client, CS_SLOT_PRIMARY) || weapon == GetPlayerWeaponSlot(client, CS_SLOT_SECONDARY)) { int warray; char classname[4]; Format(classname, 4, "%i", GetEntProp(weapon, Prop_Send, "m_iItemDefinitionIndex")); if(!GetTrieValue(trie_armas, classname, warray)) { warray = GetEntProp(weapon, Prop_Send, "m_iPrimaryReserveAmmoCount"); SetTrieValue(trie_armas, classname, warray); } else { if(IsPlayerGenericAdmin(client)) SetEntProp(weapon, Prop_Send, "m_iPrimaryReserveAmmoCount", warray); } } }
public Action Spawn(Event event, const char[] name, bool dontBroadcast) { int client = GetClientOfUserId(GetEventInt(event, "userid")), team = GetClientTeam(client), g_HP = GetConVarInt(HP), g_Flashbang = GetConVarInt(Flashbang); if(client > 0 && IsPlayerAlive(client) && IsPlayerGenericAdmin(client)) { SetEntityHealth(client, g_HP); if(GetConVarBool(Remove_grenade)) StripNades(client); if(GetConVarBool(Smokegrenade)) GivePlayerItem(client, "weapon_smokegrenade"); if(GetConVarBool(Hegrenade)) GivePlayerItem(client, "weapon_hegrenade"); if(GetConVarBool(Molotov) && team == CS_TEAM_T) GivePlayerItem(client, "weapon_molotov"); if(GetConVarBool(Molotov) && team == CS_TEAM_CT) GivePlayerItem(client, "weapon_incgrenade"); if(GetConVarBool(Armorvalue) && RoundCount > 1) SetEntProp(client, Prop_Send, "m_ArmorValue", 100); if(GetConVarBool(Taser)) GivePlayerItem(client, "weapon_taser"); if(GetConVarBool(Bhashelmet) && RoundCount > 1) SetEntProp(client, Prop_Send, "m_bHasHelmet", 1); if(GetConVarBool(Flashbang)) { for (int i = 1; i <= g_Flashbang; i++) GivePlayerItem(client, "weapon_flashbang"); } if(team == CS_TEAM_CT) { if(GetConVarBool(Defuser) && GetEntProp(client, Prop_Send, "m_bHasDefuser") == 0) GivePlayerItem(client, "item_defuser"); } } }
stock void StripNades(int client) { while(RemoveWeaponBySlot(client, 3)){} for(int i = 0; i < 6; i++) SetEntProp(client, Prop_Send, "m_iAmmo", 0, _, g_iaGrenadeOffsets[i]); }
stock bool RemoveWeaponBySlot(int client, int iSlot) { int iEntity = GetPlayerWeaponSlot(client, iSlot); if(IsValidEdict(iEntity)) { RemovePlayerItem(client, iEntity); AcceptEntityInput(iEntity, "Kill"); return true; } return false; }
public int MenuHandler2(Menu menusec, MenuAction action, int client, int itemNum) { if (action == MenuAction_Select) { char info[32]; GetMenuItem(menusec, itemNum, info, sizeof(info)); if (IsPlayerAlive(client)) GivePlayerItem(client, info); } else if (action == MenuAction_End) CloseHandle(menusec); }
public Action PistolMenu(int client) { if (IsValidClient(client)) { if (IsPlayerGenericAdmin(client)) { Menu menusec = new Menu(MenuHandler2); menusec.SetTitle("VIP : Choose Pistol"); menusec.AddItem("weapon_deagle", "Deagle"); menusec.AddItem("weapon_revolver", "R8 Revolver"); menusec.AddItem("weapon_fiveseven", "Five-Seven"); menusec.AddItem("weapon_tec9", "Tec-9"); menusec.AddItem("weapon_cz75a", "CZ7a"); menusec.AddItem("weapon_elite", "Dual Elites"); menusec.AddItem("weapon_p250", "p250"); menusec.ExitButton = true; menusec.Display(client, 15); } } }
stock void StripAllWeapons(int client) { int iEnt; for (int i = 0; i <= 2; i++) { while ((iEnt = GetPlayerWeaponSlot(client, i)) != -1) { RemovePlayerItem(client, iEnt); AcceptEntityInput(iEnt, "Kill"); } } }
public int MenuHandler1(Menu menu, MenuAction action, int client, int itemNum) { if (action == MenuAction_Select) { char info[32]; GetMenuItem(menu, itemNum, info, sizeof(info)); if (IsPlayerAlive(client)) { StripAllWeapons(client); GivePlayerItem(client, "weapon_knife"); GivePlayerItem(client, info); PistolMenu(client); } } else if (action == MenuAction_End) CloseHandle(menu); }
public Action GunsMenu(int client) { if (IsValidClient(client)) { if (IsPlayerGenericAdmin(client)) { Menu menu = new Menu(MenuHandler1); menu.SetTitle("VIP : Choose your Gun"); menu.AddItem("weapon_ak47", "AK-47"); menu.AddItem("weapon_m4a1", "M4A4"); menu.AddItem("weapon_sg556", "SG553"); menu.AddItem("weapon_m4a1_silencer", "M4A1-S"); menu.AddItem("weapon_awp", "AWP"); menu.AddItem("weapon_ssg08", "SCOUT"); menu.AddItem("weapon_xm1014", "XM1014"); menu.AddItem("weapon_famas", "FAMAS"); menu.ExitButton = true; menu.Display(client, 15); } } }
stock bool IsValidClient(int client, bool alive = false) { if(client >= 1 && client <= MaxClients && IsClientInGame(client) && (alive == false || IsPlayerAlive(client))) { return true; } return false; }
stock bool IsPlayerGenericAdmin(int client) { if (!CheckCommandAccess(client, "sm_vipp", 0, true) && !CheckCommandAccess(client, "arenaskilla", ADMFLAG_ROOT, true)) return false; { return true; }
}
|