kox1906 Napisano 28 Czerwca 2020 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
ogbudowa 1 Napisano 28 Czerwca 2020 zamien "player_spawned" na "player_spawn" Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Paweł Napisano 30 Czerwca 2020 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