Skocz do zawartości
kox1906

[Rozwiązane] Zapisywanie wyboru z menu przy każdym odrodzeniu

Rekomendowane odpowiedzi

Siema,
Stworzyłem menu z dawaniem dwóch broni: AWP lub scout. Ma to działać na zasadzie deathmatcha, że przy każdym odrodzeniu wybrana broń gracza z menu broni zostaje dana w pierwszym slocie. Problem polega na tym, że gdy wybiorę scouta, a następnie ktoś mnie zabije to dostaję do ręki AWP przy odrodzeniu, natomiast, gdy wybiorę scouta i zmienię drużynę to odradzam się normalnie ze scoutem. Czy może ktoś zaproponować rozwiązanie na ten problem?

#include <sourcemod>
#include <sdktools>
#include <cstrike>
#pragma tabsize 0
 
char LastWeapon[MAXPLAYERS + 1][256];
 
public void OnClientPostAdminCheck(int client)
{
    CreateTimer(0.1, GunsMenuTimer, client);
}
public void OnPluginStart()
{
    RegConsoleCmd("sm_guns", GunsMenu);
    HookEvent("player_spawned", PlayerSpawn);
}
 
public Action GunsMenu(int client, int args)
{
    Menu guns = new Menu(Guns_Handler);
    guns.SetTitle("Avalible weapons:"); 
    guns.AddItem("AWP""AWP");
    guns.AddItem("SSG 08""SSG 08");
    guns.Display(client, 999);
    return Plugin_Handled;
}
 
public Action GunsMenuTimer(Handle timer, int client)
{
    Menu guns = new Menu(Guns_Handler);
    guns.SetTitle("Avalible weapons:"); 
    guns.AddItem("AWP""AWP");
    guns.AddItem("SSG 08""SSG 08");
    guns.Display(client, 999);
    return Plugin_Handled;
}
 
public int Guns_Handler(Menu guns, MenuAction action, int client, int position)
{
    if(action == MenuAction_End)
    {
        delete guns;
    }
    else if(action == MenuAction_Select)
    {
        char buffer[32];
        GetMenuItem(guns,position,buffer,sizeof(buffer));
        if(position==0 && IsPlayerAlive(client) && IsClientConnected(client))    
        {
            DeletePrimaryWeapon(client);
            GivePlayerItem(client, "weapon_awp"); 
            LastWeapon[client] = "weapon_awp";                    
        }
        else if(position==1 && IsPlayerAlive(client) && IsClientConnected(client))    
        {
            DeletePrimaryWeapon(client);
            GivePlayerItem(client, "weapon_ssg08");
            LastWeapon[client] = "weapon_ssg08";                                         
        }       
    }
}
 
public Action PlayerSpawn(Event e, const char[] n, bool b)
{
    int client = GetClientOfUserId(e.GetInt("userid"));
    DeletePrimaryWeapon(client);
    GivePlayerItem(client, LastWeapon[client]);
}
 
void DeletePrimaryWeapon(int client) 
{
    int slot = GetPlayerWeaponSlot(client, 0);
    if(slot != -1
    {                
        RemovePlayerItem(client, slot);
        AcceptEntityInput(slot, "Kill");
    }
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Wiadomość wygenerowana automatycznie

 

Problem został rozwiązany

Jeżeli się z tym nie zgadzasz, raportuj ten post

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

×
×
  • Dodaj nową pozycję...