Nexd írta:
Zendor20000 írta:
És azt megtudom valahogy oldani, hogy a fegyvermenü felülírja azt a fegyvert ami jelenleg a játékosnál van? Ne dobja le a földre.
Ha elveszed tőle a fegyvert előtte, akkor nem fogja kidobni
Kód:
stock void RemovePlayerPistol(int client) {
int fegya;
for (int i = 0; i < 6; i++)
{
fegya = GetPlayerWeaponSlot(client, i);
if(IsValidEntity(fegya) && i == 1)
{
RemovePlayerItem(client, fegya);
}
}
}
stock void RemovePlayerPrimary(int client) {
int fegya;
for (int i = 0; i < 6; i++)
{
fegya = GetPlayerWeaponSlot(client, i);
if(IsValidEntity(fegya) && i == 0)
{
RemovePlayerItem(client, fegya);
}
}
}
stock void RemovePlayerKnife(int client) {
int fegya;
for (int i = 0; i < 6; i++)
{
fegya = GetPlayerWeaponSlot(client, i);
if(IsValidEntity(fegya) && i == 2)
{
RemovePlayerItem(client, fegya);
}
}
}
stock bool IsThisKnife(char[] knifename)
{
if(IsStrContains(knifename, "knife") ||
IsStrContains(knifename, "bayonet"))
return true;
return false;
}
stock bool IsSMG(char[] weapon)
{
return (IsStrContains(weapon, "mp9") ||
IsStrContains(weapon, "p90") ||
IsStrContains(weapon, "mac10") ||
IsStrContains(weapon, "ump45") ||
IsStrContains(weapon, "mp7") ||
IsStrContains(weapon, "mp5sd") ||
IsStrContains(weapon, "bizon"))
}
stock bool IsHeavy(char[] weapon)
{
return (IsStrContains(weapon, "nova") ||
IsStrContains(weapon, "xm1014") ||
IsStrContains(weapon, "mag7") ||
IsStrContains(weapon, "negev") ||
IsStrContains(weapon, "sawedoff"))
}
stock bool IsPistol(char[] weapon)
{
return (IsStrContains(weapon, "deagle") ||
IsStrContains(weapon, "usp_silencer") ||
IsStrContains(weapon, "hkp2000") ||
IsStrContains(weapon, "glock") ||
IsStrContains(weapon, "elite") ||
IsStrContains(weapon, "p250") ||
IsStrContains(weapon, "cz75a") ||
IsStrContains(weapon, "fiveseven") ||
IsStrContains(weapon, "tec9") ||
IsStrContains(weapon, "revolver"))
}
stock bool IsRifle(char[] weapon)
{
return (IsStrContains(weapon, "awp") ||
IsStrContains(weapon, "ak47") ||
IsStrContains(weapon, "m4a1") ||
IsStrContains(weapon, "famas") ||
IsStrContains(weapon, "galilar") ||
IsStrContains(weapon, "ssg08") ||
IsStrContains(weapon, "sg556") ||
IsStrContains(weapon, "aug") ||
IsStrContains(weapon, "scar20") ||
IsStrContains(weapon, "g3sg1"))
}
stock bool IsStrContains(char[] String, char[] Text, bool caseSensitive = false)
{
if((StrContains(String, Text, caseSensitive) != -1))
return true;
return false;
}
Ezekkel szerintem megtudod oldani
Nagyon szépen köszönöm! Sikerült is!
Jelenleg így néz ki a plugin:
Kód:
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
#include <cstrike>
#include <multicolors>
#include <smlib>
#pragma semicolon 1
#pragma newdecls required
#define DATA "2.0"
#define VIP_PREFIX " ★ \x02[VIP]\x04"
#define ADMIN_PREFIX " ★ \x02[ADMIN]\x04"
#define TULAJ_PREFIX " ★ \x02[TULAJDONOS]\x04"
public Plugin myinfo =
{
name = "VIP",
author = "Zendor",
description = "VIP PLUGIN",
version = "0.1",
url = "http://stat.erack.hu"
};
char PrimaryWeapon[MAXPLAYERS + 1][24];
char SecondaryWeapon[MAXPLAYERS + 1][24];
bool PrimarySelected[MAXPLAYERS+1];
bool SecondarySelected[MAXPLAYERS+1];
bool Remember[MAXPLAYERS+1];
Handle HP,
Flashbang,
Smokegrenade,
Hegrenade,
Molotov,
Armorvalue,
Bhashelmet,
Defuser,
Remove_grenade,
Taser,
trie_armas;
// Welcome_message;
char g_sGrenadeNames[][] = {
"weapon_tagrenade",
"weapon_smokegrenade",
"weapon_decoy",
"weapon_healthshot",
"weapon_flashbang",
"weapon_incgrenade"
};
int m_iGrenadeOffsets[sizeof(g_sGrenadeNames)];
Handle timers[MAXPLAYERS + 1];
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.", FCVAR_NONE, true, 0.0, true, 1.0);
// Welcome_message = CreateConVar("vip_welcome", "1", "Üdvözlő üzenet.", FCVAR_NONE, true, 0.0, true, 1.0);
trie_armas = CreateTrie();
AutoExecConfig(true, "VIPBETA");
HookEvent("player_spawn", Spawn);
HookEvent("round_start", Event_RoundStart);
HookEvent("announce_phase_end", ResetAfterTeamChange);
HookEvent("cs_intermission", ResetAfterTeamChange);
RegAdminCmd("sm_guns", GunsMenu, ADMFLAG_CUSTOM1);
RegAdminCmd("sm_gunsmenu", GunsMenu, ADMFLAG_CUSTOM1);
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);
ResetClientSettings(client);
}
void ResetClientSettings(int client)
{
PrimarySelected[client] = false;
SecondarySelected[client] = false;
Remember[client] = false;
PrimaryWeapon[client] = "weapon_m4a1";
SecondaryWeapon[client] = "weapon_glock";
}
public void OnClientPostAdminCheck(int client)
{
if(IsOwner(client))
{
PrintToChatAll("╔════════════════════════╗");
PrintToChatAll("%s %N csatlakozott a szerverre", TULAJ_PREFIX, client);
PrintToChatAll("╚════════════════════════╝");
}
else if(IsAdmin(client))
{
PrintToChatAll("╔════════════════════════╗");
PrintToChatAll("%s %N csatlakozott a szerverre", ADMIN_PREFIX, client);
PrintToChatAll("╚════════════════════════╝");
}
else if (IsVIP(client))
{
timers[client] = CreateTimer(3.0, Darm, client, TIMER_REPEAT);
PrintToChatAll("╔════════════════════════╗");
PrintToChatAll("%s %N csatlakozott a szerverre", VIP_PREFIX, client);
PrintToChatAll("╚════════════════════════╝");
}
else
{
return;
}
}
public void OnClientDisconnect(int client)
{
if(timers[client] != INVALID_HANDLE)
{
KillTimer(timers[client]);
timers[client] = INVALID_HANDLE;
}
}
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(IsVIP(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) && IsVIP(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(RoundCount > 1)
{
if(Remember[client])
{
GiveLastWeapons(client);
}
else
{
Weapons(client);
}
}
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");
}
}
}
public void Weapons(int client)
{
Menu menu = new Menu(Weapon_Menu);
menu.SetTitle("[VIP] Fegyvermenü");
menu.AddItem("new", "Új fegyvert választok");
menu.AddItem("old", "Az előzőt használom");
menu.AddItem("olddontask", "Az előzőt használom[Ne kérdezze meg újra]");
menu.ExitButton = false;
menu.Display(client, 15);
}
stock void StripNades(int client)
{
while(RemoveWeaponBySlot(client, 3)){}
for(int i = 0; i < 6; i++)
SetEntProp(client, Prop_Send, "m_iAmmo", 0, _, m_iGrenadeOffsets[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;
}
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");
}
}
}
stock bool IsValidClient(int client, bool alive = false)
{
if(client <= 0) return false;
if(client > MaxClients) return false;
if(!IsClientConnected(client)) return false;
if(IsFakeClient(client)) return false;
if(IsClientSourceTV(client)) return false;
return IsClientInGame(client);
}
stock bool IsVIP(int client)
{
return (CheckCommandAccess(client, "sm_vipjog", ADMFLAG_CUSTOM1));
}
stock bool IsAdmin(int client)
{
return (CheckCommandAccess(client, "sm_adminjog", ADMFLAG_GENERIC));
}
stock bool IsOwner(int client)
{
return (CheckCommandAccess(client, "sm_tulaj", ADMFLAG_ROOT));
}
public Action GunsMenu(int client, int args)
{
if(!IsPlayerAlive(client))
{
return Plugin_Handled;
}
if(Remember[client])
{
Remember[client] = false;
CPrintToChat(client, "[{lightred}VIP{default}] Újrabekapcsoltad a fegyvermenüt!");
if(RoundCount > 1) {
PrimarySelected[client] = true;
}
SecondarySelected[client] = true;
return Plugin_Handled;
}
if(!PrimarySelected[client] && !SecondarySelected[client])
{
Weapons(client);
}
else
{
CPrintToChat(client, "[{lightred}VIP{default}] Már kiválasztottad a fegyvered!");
return Plugin_Handled;
}
return Plugin_Continue;
}
public int Weapon_Menu(Menu menu, MenuAction action, int client, int param2)
{
switch(action)
{
case MenuAction_Select:
{
char info[32];
menu.GetItem(param2, info, sizeof(info));
if (StrEqual(info, "new"))
{
SelectPrimaryWeapon(client);
Remember[client] = false;
}
else if (StrEqual(info, "old"))
{
GiveLastWeapons(client);
Remember[client] = false;
}
else if (StrEqual(info, "olddontask"))
{
CPrintToChat(client, "[{lightred}VIP{default}] Visszakapcsolhatod a fegyvermenüt ha újra beírod a chatbe {green}!guns{default}.");
GiveLastWeapons(client);
Remember[client] = true;
}
}
case MenuAction_End:{delete menu;}
}
return 0;
}
public void SelectPrimaryWeapon(int client)
{
Menu menu = new Menu(PrimaryWeapon_Menu);
menu.SetTitle("Elsődleges fegyver");
menu.AddItem("ak", "AK-47");
menu.AddItem("mka", "M4A4");
menu.AddItem("zagmka", "M4A1-S");
menu.AddItem("awp", "AWP");
menu.AddItem("sig553", "Sig 553");
menu.AddItem("aug", "Aug");
menu.AddItem("famas", "Famas");
menu.AddItem("galil", "Galil AR");
menu.AddItem("scout", "Scout");
menu.AddItem("negev", "Negev");
menu.AddItem("mac10", "Mac-10");
menu.AddItem("pro90", "P90");
menu.AddItem("nova", "Nova");
menu.AddItem("xm1014", "XM1014");
menu.AddItem("mag7", "MAG-7");
menu.ExitButton = false;
menu.Display(client, 15);
}
public int PrimaryWeapon_Menu(Menu menu, MenuAction action, int client, int param2)
{
switch(action)
{
case MenuAction_Select:
{
char info[32];
menu.GetItem(param2, info, sizeof(info));
if (StrEqual(info, "ak"))
{
RemovePlayerPrimary(client);
PrimarySelected[client] = true;
GivePlayerItem(client, "weapon_ak47");
PrimaryWeapon[client] = "weapon_ak47";
if(!SecondarySelected[client])
{
SelectSecondaryWeapon(client);
}
}
else if (StrEqual(info, "mka"))
{
RemovePlayerPrimary(client);
PrimarySelected[client] = true;
GivePlayerItem(client, "weapon_m4a1");
PrimaryWeapon[client] = "weapon_m4a1";
if(!SecondarySelected[client])
{
SelectSecondaryWeapon(client);
}
}
else if (StrEqual(info, "zagmka"))
{
RemovePlayerPrimary(client);
PrimarySelected[client] = true;
GivePlayerItem(client, "weapon_m4a1_silencer");
PrimaryWeapon[client] = "weapon_m4a1_silencer";
if(!SecondarySelected[client])
{
SelectSecondaryWeapon(client);
}
}
else if (StrEqual(info, "sig553"))
{
RemovePlayerPrimary(client);
PrimarySelected[client] = true;
GivePlayerItem(client, "weapon_sg556");
PrimaryWeapon[client] = "weapon_sg556";
if(!SecondarySelected[client])
{
SelectSecondaryWeapon(client);
}
}
else if (StrEqual(info, "aug"))
{
RemovePlayerPrimary(client);
PrimarySelected[client] = true;
GivePlayerItem(client, "weapon_aug");
PrimaryWeapon[client] = "weapon_aug";
if(!SecondarySelected[client])
{
SelectSecondaryWeapon(client);
}
}
else if (StrEqual(info, "famas"))
{
RemovePlayerPrimary(client);
PrimarySelected[client] = true;
GivePlayerItem(client, "weapon_famas");
PrimaryWeapon[client] = "weapon_famas";
if(!SecondarySelected[client])
{
SelectSecondaryWeapon(client);
}
}
else if (StrEqual(info, "galil"))
{
PrimarySelected[client] = true;
RemovePlayerPrimary(client);
GivePlayerItem(client, "weapon_galilar");
PrimaryWeapon[client] = "weapon_galilar";
if(!SecondarySelected[client])
{
SelectSecondaryWeapon(client);
}
}
else if (StrEqual(info, "negev"))
{
RemovePlayerPrimary(client);
PrimarySelected[client] = true;
GivePlayerItem(client, "weapon_negev");
PrimaryWeapon[client] = "weapon_negev";
if(!SecondarySelected[client])
{
SelectSecondaryWeapon(client);
}
}
else if (StrEqual(info, "mac10"))
{
RemovePlayerPrimary(client);
PrimarySelected[client] = true;
GivePlayerItem(client, "weapon_mac10");
PrimaryWeapon[client] = "weapon_mac10";
if(!SecondarySelected[client])
{
SelectSecondaryWeapon(client);
}
}
else if (StrEqual(info, "pro90"))
{
RemovePlayerPrimary(client);
PrimarySelected[client] = true;
GivePlayerItem(client, "weapon_p90");
PrimaryWeapon[client] = "weapon_p90";
if(!SecondarySelected[client])
{
SelectSecondaryWeapon(client);
}
}
else if (StrEqual(info, "nova"))
{
RemovePlayerPrimary(client);
PrimarySelected[client] = true;
GivePlayerItem(client, "weapon_nova");
PrimaryWeapon[client] = "weapon_nova";
if(!SecondarySelected[client])
{
SelectSecondaryWeapon(client);
}
}
else if (StrEqual(info, "xm1014"))
{
RemovePlayerPrimary(client);
PrimarySelected[client] = true;
GivePlayerItem(client, "weapon_xm1014");
PrimaryWeapon[client] = "weapon_xm1014";
if(!SecondarySelected[client])
{
SelectSecondaryWeapon(client);
}
}
else if (StrEqual(info, "mag7"))
{
RemovePlayerPrimary(client);
PrimarySelected[client] = true;
GivePlayerItem(client, "weapon_mag7");
PrimaryWeapon[client] = "weapon_mag7";
if(!SecondarySelected[client])
{
SelectSecondaryWeapon(client);
}
}
else if (StrEqual(info, "awp"))
{
RemovePlayerPrimary(client);
PrimarySelected[client] = true;
GivePlayerItem(client, "weapon_awp");
PrimaryWeapon[client] = "weapon_awp";
if(!SecondarySelected[client])
{
SelectSecondaryWeapon(client);
}
}
else if (StrEqual(info, "scout"))
{
RemovePlayerPrimary(client);
PrimarySelected[client] = true;
GivePlayerItem(client, "weapon_ssg08");
PrimaryWeapon[client] = "weapon_ssg08";
if(!SecondarySelected[client])
{
SelectSecondaryWeapon(client);
}
}
}
case MenuAction_End:{delete menu;}
}
return 0;
}
public void SelectSecondaryWeapon(int client)
{
Menu menu = new Menu(SecondaryWeapon_Menu);
menu.SetTitle("Másodlagos fegyver");
menu.AddItem("glock", "Glock-18");
menu.AddItem("usps", "USP-S");
menu.AddItem("usp", "P2000");
menu.AddItem("p250", "P250");
menu.AddItem("deagle", "Desert Eagle");
menu.AddItem("revol", "R8 Revolver");
menu.AddItem("f7", "Five-SeveN");
menu.AddItem("dualbar", "Dual Berettas");
menu.AddItem("tec9", "Tec-9");
menu.AddItem("czauto", "CZ75-Auto");
menu.ExitButton = false;
menu.Display(client, 15);
}
public int SecondaryWeapon_Menu(Menu menu, MenuAction action, int client, int param2)
{
switch(action)
{
case MenuAction_Select:
{
char info[32];
menu.GetItem(param2, info, sizeof(info));
if (StrEqual(info, "glock"))
{
RemovePlayerPistol(client);
SecondarySelected[client] = true;
GivePlayerItem(client, "weapon_glock");
SecondaryWeapon[client] = "weapon_glock";
}
else if (StrEqual(info, "usps"))
{
RemovePlayerPistol(client);
SecondarySelected[client] = true;
GivePlayerItem(client, "weapon_usp_silencer");
SecondaryWeapon[client] = "weapon_usp_silencer";
}
else if (StrEqual(info, "usp"))
{
RemovePlayerPistol(client);
SecondarySelected[client] = true;
GivePlayerItem(client, "weapon_hkp2000");
SecondaryWeapon[client] = "weapon_hkp2000";
}
else if (StrEqual(info, "p250"))
{
RemovePlayerPistol(client);
SecondarySelected[client] = true;
GivePlayerItem(client, "weapon_p250");
SecondaryWeapon[client] = "weapon_p250";
}
else if (StrEqual(info, "p250"))
{
RemovePlayerPistol(client);
SecondarySelected[client] = true;
GivePlayerItem(client, "weapon_p250");
SecondaryWeapon[client] = "weapon_p250";
}
else if (StrEqual(info, "deagle"))
{
RemovePlayerPistol(client);
SecondarySelected[client] = true;
GivePlayerItem(client, "weapon_deagle");
SecondaryWeapon[client] = "weapon_deagle";
}
else if (StrEqual(info, "revol"))
{
RemovePlayerPistol(client);
SecondarySelected[client] = true;
GivePlayerItem(client, "weapon_revolver");
SecondaryWeapon[client] = "weapon_revolver";
}
else if (StrEqual(info, "f7"))
{
RemovePlayerPistol(client);
SecondarySelected[client] = true;
GivePlayerItem(client, "weapon_fiveseven");
SecondaryWeapon[client] = "weapon_fiveseven";
}
else if (StrEqual(info, "dualbar"))
{
RemovePlayerPistol(client);
SecondarySelected[client] = true;
GivePlayerItem(client, "weapon_elite");
SecondaryWeapon[client] = "weapon_elite";
}
else if (StrEqual(info, "tec9"))
{
RemovePlayerPistol(client);
SecondarySelected[client] = true;
GivePlayerItem(client, "weapon_tec9");
SecondaryWeapon[client] = "weapon_tec9";
}
else if (StrEqual(info, "czauto"))
{
RemovePlayerPistol(client);
SecondarySelected[client] = true;
GivePlayerItem(client, "weapon_cz75a");
SecondaryWeapon[client] = "weapon_cz75a";
RemovePlayerPistol(client);
}
}
case MenuAction_End:{delete menu;}
}
return 0;
}
void GiveLastWeapons(int client)
{
GivePlayerItem(client, PrimaryWeapon[client]);
GivePlayerItem(client, SecondaryWeapon[client]);
PrimarySelected[client] = true;
SecondarySelected[client] = true;
}
stock void RemovePlayerPistol(int client) {
int fegya;
for (int i = 0; i < 6; i++)
{
fegya = GetPlayerWeaponSlot(client, i);
if(IsValidEntity(fegya) && i == 1)
{
RemovePlayerItem(client, fegya);
}
}
}
stock void RemovePlayerPrimary(int client) {
int fegya;
for (int i = 0; i < 6; i++)
{
fegya = GetPlayerWeaponSlot(client, i);
if(IsValidEntity(fegya) && i == 0)
{
RemovePlayerItem(client, fegya);
}
}
}
stock bool IsThisKnife(char[] knifename)
{
if(IsStrContains(knifename, "knife") ||
IsStrContains(knifename, "bayonet"))
return true;
return false;
}
stock bool IsSMG(char[] weapon)
{
return (IsStrContains(weapon, "mp9") ||
IsStrContains(weapon, "p90") ||
IsStrContains(weapon, "mac10") ||
IsStrContains(weapon, "ump45") ||
IsStrContains(weapon, "mp7") ||
IsStrContains(weapon, "mp5sd") ||
IsStrContains(weapon, "bizon"))
}
stock bool IsHeavy(char[] weapon)
{
return (IsStrContains(weapon, "nova") ||
IsStrContains(weapon, "xm1014") ||
IsStrContains(weapon, "mag7") ||
IsStrContains(weapon, "negev") ||
IsStrContains(weapon, "sawedoff"))
}
stock bool IsPistol(char[] weapon)
{
return (IsStrContains(weapon, "deagle") ||
IsStrContains(weapon, "usp_silencer") ||
IsStrContains(weapon, "hkp2000") ||
IsStrContains(weapon, "glock") ||
IsStrContains(weapon, "elite") ||
IsStrContains(weapon, "p250") ||
IsStrContains(weapon, "cz75a") ||
IsStrContains(weapon, "fiveseven") ||
IsStrContains(weapon, "tec9") ||
IsStrContains(weapon, "revolver"))
}
stock bool IsRifle(char[] weapon)
{
return (IsStrContains(weapon, "awp") ||
IsStrContains(weapon, "ak47") ||
IsStrContains(weapon, "m4a1") ||
IsStrContains(weapon, "famas") ||
IsStrContains(weapon, "galilar") ||
IsStrContains(weapon, "ssg08") ||
IsStrContains(weapon, "sg556") ||
IsStrContains(weapon, "aug") ||
IsStrContains(weapon, "scar20") ||
IsStrContains(weapon, "g3sg1"))
}
stock bool IsStrContains(char[] String, char[] Text, bool caseSensitive = false)
{
if((StrContains(String, Text, caseSensitive) != -1))
return true;
return false;
}
Nélküled nem lett volna se motivációm se kedvem megcsinálni. Tudásom meg végképp.
Elég sokat tanultam eme kis plugin megírása közben.
Kezdve az old és a transitional syntax közti különbséget. Már engem is zavar az oldsyntax ha megnyitok egy plugint. Igaz nem tudom 100%-ban megkülönböztetni őket, de amiket ismerek az megy.
Ha van valami ötleted amit még beleírhatnék, hogy azzal is gyakoroljak nyugodtan írd le azt megpróbálkozom vele.
Én a menüt úgy csinálnám meg, hogy már eleve a weaponclasst adnám tovább (weapon_ak47, weapon_awp stb stb) és akkor nem kellene ennyi ifet használni, hanem közvetlen GivePlayerItem, stb.., És mivel a két menü teljesen külön van így nincs szükség az IsThisKnife, IsRifle, stb dolgokra (Ezáltal az IsStrContains-ra sem mivel az meg csak az előbb említettekhez kellett volna, csak mivel "stock"-ok ezért a fordító nem szól hogy nincsenek használva)
És a menu.ExitButton = true; még mindig ott van, amikor nem változtat semmit (Mivel csak akkor nincs exitbutton ha előtte át lett állítva falsera)
OnClientPostAdminCheck-nél az utolsó else fölösleges, ha egyik feltétel sem teljesül akkor nem történik semmi.
Nemtudom, hogy melyik programban szerkeszted a kódot, de ha lehet akkor minél jobban figyelj oda, hogy hogyan "tabolsz"
Amit én még bele raknék az az, hogy a beállításokat mentse el hosszú távon is (clientprefs), amiben szintén segíthetek ha gondolod de előtte a fent említett dolgokat nézd át és mérlegeld