Skocz do zawartości
PepeKOZAK

[Rozwiązane] Timer Command

Rekomendowane odpowiedzi

Witam!

Potrzebuję zrobić komendę, którą można wpisać tylko przez 15 sekund na początku rundy. Czy mógłby mi ktoś pomóc? 😄

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • Kocham to 1
Napisano (edytowane)

coś takiego... ?

 

Spoiler
#include <sdktools>

bool access;

public void OnPluginStart() 
{
	
	HookEvent("round_start", Event_RoundStart);
	
	RegConsoleCmd("sm_test", Command);
	
	access = false;
}


public Action Event_RoundStart(Event event, const char[] name, bool dontBroadcast)
{
	if (IsWarmup())return;
	
	CreateTimer(15.0, AccessBlock);
	
	access = true;
}

public Action AccessBlock(Handle timer)
{
	access = false;
}

public Action Command(int client, int args)
{
	if (access)
		ReplyToCommand(client, "Nie mineło 15 sekund po starcie rundy");
	else
		ReplyToCommand(client, "Mineło 15 sekund po starcie rundy, nie możesz użyć tej komendy");
	
}

bool IsWarmup()
{
	int warmup = GameRules_GetProp("m_bWarmupPeriod", 4, 0);
	if (warmup == 1)return true;
	else return false;
} 

 

 

 

 

Edytowane przez fejmek

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tak, dziękuję :D. Mam jeszcze prośbę. Czy dał byś mi radę, jak zrobić menu z broniami, gdzie gracz wybiera z którą bronią się respi?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Gość

Umiesz stworzyć proste menu z handlerem?

pozycje dodajesz tak :

menu.AddItem("weapon_ak47", "AK-47");

 

a w Handlerze sprawdzasz po menu.GetItem nazwę broni, przypisujesz ją do globalnej zmiennej typu char i przy respawnie dajesz broń funkcją GivePlayerItem (#include <cstrike>) wykorzystując tę zmienną.

Pamiętaj o resecie zmiennej przy wejściu gracza na serwer 🙂 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Spoiler
#include <sourcemod>
#include <cstrike>
 
char bronie[32];
char pistolety[32];
 
public void OnPluginStart() {
    RegConsoleCmd("sm_guns", Bronie);
    RegConsoleCmd("sm_pistol", Pistolety);
}
 
public Action Bronie(int client, int args) {
    if (IsValidClient(client)) {
        if (IsPlayerVip(client)) {
            Menu menu = new Menu(MenuHandler1);
            menu.SetTitle("ELITA : Wybierz broń");
            menu.AddItem("weapon_ak47""AK-47");
            menu.AddItem("weapon_m4a1""M4A4");
            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);
        }
    }
}
 
public int MenuHandler1(Menu menu, MenuAction action, int client, int itemNum) {
    if (action == MenuAction_Select) {
        char bronie[32];
        GetMenuItem(menu, itemNum, bronie, sizeof(bronie));
    }
    else if (action == MenuAction_End)
        CloseHandle(menu);
}
 
public Action Pistolety(int client, int args) {
    if (IsValidClient(client)) {
        if (IsPlayerVip(client)) {
            Menu menusec = new Menu(MenuHandler2);
            menusec.SetTitle("ELITA : Wybierz pistolet");
            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);
        }
    }
}
 
public int MenuHandler2(Menu menusec, MenuAction action, int client, int itemNum) {
    
    if (action == MenuAction_Select) {
        char pistolety[32];
        GetMenuItem(menusec, itemNum, pistolety, sizeof(pistolety));
    }
    else if (action == MenuAction_End)
        CloseHandle(menusec);
}
 
public Action Event_RoundStart(Event hEvent, const char[] chName, bool bDontBroadcast) {
    int client = GetClientOfUserId(hEvent.GetInt("userid"));
    
    if (IsPlayerAlive(client)) {
        GivePlayerItem(client, bronie);
    }
 
    if (IsPlayerAlive(client)) {
        GivePlayerItem(client, pistolety);
    }
}

Nie wiem czy to dobrze zrobiłem 😧 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Cytat
#include <sourcemod>
#include <sdktools>
#pragma tabsize 0
 
char client_bron[MAXPLAYERS + 1][256];
 
char chat_triggers[][] = {
    "guns""bronie"
};
 
public OnPluginStart()
{   
    for (int i = 0; i < sizeof(chat_triggers); i++)
        RegConsoleCmd(chat_triggers, bronie);
    HookEvent("player_spawn", player_spawn);
}
 
public Action bronie(int client, int args)
{
    Menu menu = new Menu(m_h);
    menu.SetTitle("Wybierz broń:");
    menu.AddItem("weapon_ak47""AK-47");
    menu.AddItem("weapon_m4a1""M4A4");
    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);
    return Plugin_Handled;
}
 
int m_h(Menu menu, MenuAction act, int client, int arg2)
{
    if (act == MenuAction_Select)
    {
        char bron[256];
        GetMenuItem(menu, arg2, bron, sizeof(bron));
        client_bron[client] = bron;
    }
    return 0;
}
 
public Action player_spawn(Event e, const char[] n, bool b)
{
    GivePlayerItem(GetClientOfUserId(GetEventInt(e, "userid")), client_bron[GetClientOfUserId(GetEventInt(e, "userid"))]);
}

 

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ę...