hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2024.03.28. 12:22



Jelenlévő felhasználók

Jelenleg 206 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 205 vendég

A legtöbb felhasználó (1565 fő) 2020.11.21. 11:26-kor tartózkodott itt.

Regisztrált felhasználók: Bing [Bot] az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása  Hozzászólás a témához  [ 21 hozzászólás ]  Oldal Előző 1 2 3 Következő
Szerző Üzenet
 Hozzászólás témája: Re: [CS:GO] VIP PLUGIN
HozzászólásElküldve: 2020.01.16. 21:02 
Offline
Senior Tag
Avatar

Csatlakozott: 2013.12.18. 13:57
Hozzászólások: 240
Megköszönt másnak: 16 alkalommal
Megköszönték neki: 24 alkalommal
Zendor20000 írta:
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. :D
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"
Ez nem nagy dolog, de azért átláthatóbb ha ehelyett:
Kód:
   if(RoundCount > 1)
{
   if(Remember[client])
   {
      GiveLastWeapons(client);
   }
   else
   {
      Weapons(client);
   }
}


Így van:

Kód:
if(RoundCount > 1)
{
   if(Remember[client])
   {
      GiveLastWeapons(client);
   } else
   {
      Weapons(client);
   }
}


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

_________________
Discord: KillStr3aK#4724 | GitHub
https://eternar.dev


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [CS:GO] VIP PLUGIN
HozzászólásElküldve: 2020.01.17. 00:19 
Offline
Lelkes

Csatlakozott: 2019.01.12. 18:30
Hozzászólások: 17
Mindenképp az egész fegyvermenü részt átdolgozom. Illetve a RoundCount helyett is szerintem a GetTeamScore-t fogom használni. Találtam egy jó megoldást ami biztosabbnak tűnik mint a jelenlegi RoundCount. A VIPSpawn összezavarja a RoundCount-ot valamiért.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [CS:GO] VIP PLUGIN
HozzászólásElküldve: 2020.01.17. 14:27 
Offline
Senior Tag
Avatar

Csatlakozott: 2013.12.18. 13:57
Hozzászólások: 240
Megköszönt másnak: 16 alkalommal
Megköszönték neki: 24 alkalommal
Zendor20000 írta:
Mindenképp az egész fegyvermenü részt átdolgozom. Illetve a RoundCount helyett is szerintem a GetTeamScore-t fogom használni. Találtam egy jó megoldást ami biztosabbnak tűnik mint a jelenlegi RoundCount. A VIPSpawn összezavarja a RoundCount-ot valamiért.


Miben zavarja össze? Mi történik és minek kellene történnie? Ránézésre az lehet a baj, hogy amikor indul a map akkor 0-ra állítod a változót, aztán minden kör kezdetével növeled
Ez így működik is, de ha van warmup a szerveren (Vagy pl felcsatlakozik 1 játékos, belép 1 csapatba, majd később feljön még 1 és az a másik csapatba áll be akkor ugye újraindul a játék) akkor azt is körnek számítja (Mivel announce_phase_end-vel 1-re állítod az értékét, a kör akkor is utána fog kezdődni tehát egyből hozzáad +1-et)
Érdemes lehet a roundstart event elejére beszúrni ezt:

Kód:
if(IsWarmup()) return Plugin_Continue;


Kód:
stock bool IsWarmup()
{
   return view_as<bool>(GameRules_GetProp("m_bWarmupPeriod"));
}


De ha nem ez a probléma akkor ha elmagyarázod, megoldjuk

_________________
Discord: KillStr3aK#4724 | GitHub
https://eternar.dev


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [CS:GO] VIP PLUGIN
HozzászólásElküldve: 2020.01.18. 09:09 
Offline
Lelkes

Csatlakozott: 2019.01.12. 18:30
Hozzászólások: 17
Egyszerűen a RoundCount valamiért a vipspawn használatánál érzékelte, hogy ez a kövi kör.
Szóval papíron a 2 az az első körben kellett, hogy esedékes legyen. Na most ha azt állítottam be, hogy csak akkor működjön amikor 2-nél nagyobb számot ér el a RoundCount. Azaz a 2. körben amikor a 3-at számolja. Akkor ha valaki az első körben újraéledt akkor már 3 nak számolta neki.
De a RoundCount-ot kivettem már és GetTeamScore-t használok. Ez betonstabilnak tűnik jelenleg.
Illetve a fegyvermenüt kivettem és Franug ZR Gunsmenüjét átalakítottam saját felhasználásra amit fel is töltöttem az oldalra hátha kell valakinek. Csak még nem lett elfogadva. :D
A VIP plugint is szerintem frissítem és felteszem fegyvermenü nélkül.
A VIP pluginon még fogok fejleszteni, hogy minden is Convarokkal állítható legyen. Köztük a VIP/ADMIN és TULAJDONOS prefix is.
Emellett jelenleg a LevelRanks plugint tervezem átalakítani.
Jelenleg nálunk az emberek Zeusért/gránátért/molotovért több pontot kapnak illetve a VIP is dupla pontot.
Ami convarokkal állítható.
Na most mindenre kiszeretném terjeszteni a VIP beállításait.
Illetve, hogy a rankrendszerben a VIP meglegyen jelölve. Na most ezt még fogalmam sincs, hogy hogy fogom megoldani, de pont ezért szép.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [CS:GO] VIP PLUGIN
HozzászólásElküldve: 2020.02.05. 16:21 
Offline
Jómunkásember
Avatar

Csatlakozott: 2019.11.03. 22:00
Hozzászólások: 346
Megköszönt másnak: 37 alkalommal
Megköszönték neki: 22 alkalommal
Helló.Holtalálom a linket ahonna letölthetem ezt a plugint! :D

_________________
****


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [CS:GO] VIP PLUGIN
HozzászólásElküldve: 2020.02.05. 19:55 
Offline
Őstag
Avatar

Csatlakozott: 2017.08.21. 15:51
Hozzászólások: 1109
Megköszönt másnak: 36 alkalommal
Megköszönték neki: 195 alkalommal
Szerintem saját pluginja, szóval csak nála.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [CS:GO] VIP PLUGIN
HozzászólásElküldve: 2020.02.05. 22:26 
Offline
Senior Tag
Avatar

Csatlakozott: 2013.12.18. 13:57
Hozzászólások: 240
Megköszönt másnak: 16 alkalommal
Megköszönték neki: 24 alkalommal
Csabika20034 írta:
Helló.Holtalálom a linket ahonna letölthetem ezt a plugint! :D

Már feltöltötte a fórumra, csak még nincs jóváhagyva.

_________________
Discord: KillStr3aK#4724 | GitHub
https://eternar.dev


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [CS:GO] VIP PLUGIN
HozzászólásElküldve: 2020.02.08. 09:45 
Offline
Jómunkásember
Avatar

Csatlakozott: 2019.11.03. 22:00
Hozzászólások: 346
Megköszönt másnak: 37 alkalommal
Megköszönték neki: 22 alkalommal
jó lenne ha,feltenné médiafire-be és linket ideki tenné,és letöltenék megtennéd? :xicon_e_biggrin:

_________________
****


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [CS:GO] VIP PLUGIN
HozzászólásElküldve: 2020.02.08. 13:14 
Offline
Senior Tag
Avatar

Csatlakozott: 2013.12.18. 13:57
Hozzászólások: 240
Megköszönt másnak: 16 alkalommal
Megköszönték neki: 24 alkalommal
Csabika20034 írta:
jó lenne ha,feltenné médiafire-be és linket ideki tenné,és letöltenék megtennéd? :xicon_e_biggrin:

Ennek nem ez a folyamata, direkt nem letölthető még.
Amint jóvá lesz hagyva lefogod tudni tölteni

_________________
Discord: KillStr3aK#4724 | GitHub
https://eternar.dev


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája: Re: [CS:GO] VIP PLUGIN
HozzászólásElküldve: 2020.04.03. 18:41 
Offline
Tud valamit
Avatar

Csatlakozott: 2018.11.02. 12:23
Hozzászólások: 148
Megköszönt másnak: 2 alkalommal
Megköszönték neki: 19 alkalommal
Itt: https://forums.alliedmods.net/showthread.php?p=2373342
Csabika20034 írta:
Helló.Holtalálom a linket ahonna letölthetem ezt a plugint! :D



Nem sajátja, hanem Francisco 'Franc1sco' Garcíaé. :)
Pika írta:
Szerintem saját pluginja, szóval csak nála.

_________________
****


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése:  Rendezés  
Új téma nyitása  Hozzászólás a témához  [ 21 hozzászólás ]  Oldal Előző 1 2 3 Következő


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole