Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Pytanie


  • Zamknięty Temat jest zamknięty
13 odpowiedzi w tym temacie

#1 skuziak

    Życzliwy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:37
  • Lokalizacja:Stolica
Offline

Napisano 16.02.2010 16:19

Mam plugin który odpala vote na timelft mapy.
I jest pytanie jak zrobić żeby po 15 sekundach od dopalenia tego vote zamknęło się ono gdy gracz nic nie wybierze (zignoruje vote - myśląc że zaraz zniknie)

#include <amxmodx>
#include <amxmisc>

new choises[7]
new Float:g_timelimit

public plugin_init() 
{
    set_task(60.0, "start_vote");
}

public start_vote(id)
{    
    new menu = menu_create("\rIle ma byc grana mapa?", "menu_handler")
    menu_additem(menu, "\w15 minut", "1", 0)
    menu_additem(menu, "\w20 minut", "2", 0)
    menu_additem(menu, "\w25 minut", "3", 0)
    menu_additem(menu, "\w30 minut", "4", 0)
    menu_additem(menu, "\w35 minut", "5", 0)
    menu_addblank(menu, 0)
    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
    
    new players[32], inum
    get_players(players, inum, "ch")
    for(new i = 0; i < inum; i++)
    {
        menu_display(players[i], menu, 0)
    }
    
    set_task(15.0, "finish_vote")
    
    choises[1] = choises[2] = choises[3] = choises[4] = choises[5] =  0
    choises[6] = 0
    
    return 1
}

public menu_handler(id, menu, item)
{
    if (item == MENU_EXIT)
    {
        menu_cancel(id)
        return PLUGIN_HANDLED
    }

    new data[6], name[32]
    new access, callback
    
    menu_item_getinfo(menu, item, access, data, 5, _, _, callback)
    
    new key = str_to_num(data)
    get_user_name(id, name, 31)
    
    switch (key) 
    {
        case 1: 
        {
            client_print (0, print_chat, "[AMXX] %s zaglosowal na 15 minut", name);
        }
        case 2:
        {
            client_print (0, print_chat, "[AMXX] %s zaglosowal na 20 minut", name);
        }
        case 3:
        {
            client_print (0, print_chat, "[AMXX] %s zaglosowal na 25 minut", name);
        }
        case 4:
        {
            client_print (0, print_chat, "[AMXX] %s zaglosowal na 30 minut", name);
        }
        case 5:
        {
            client_print (0, print_chat, "[AMXX] %s zaglosowal na 35 minut", name);
        }
    }
    
    ++choises[key]
    
    menu_cancel(id)
    return PLUGIN_HANDLED
}

public finish_vote()
{
    g_timelimit = get_cvar_float("mp_timelimit")
    
    if(choises[1] > choises[2] && choises[1] > choises[3] && choises[1] > choises[4] && choises[1] > choises[5])
    {
        client_print(0, print_chat, "[AMXX] Opcja ^"15 minut^" wygrala przez %d votow", choises[1])
        server_cmd("mp_timelimit 15");
    }
    
    else if(choises[2] > choises[1] && choises[2] > choises[3] && choises[2] > choises[4] && choises[2] > choises[5])
    {
        client_print(0, print_chat, "[AMXX] Opcja ^"20 minut^" wygrala przez %d votow", choises[2])
        server_cmd("mp_timelimit 20");
    }
    else if(choises[3] > choises[1] && choises[3] > choises[2] && choises[3] > choises[4] && choises[3] > choises[5])
    {
        client_print(0, print_chat, "[AMXX] Opcja ^"25 minut^" wygrala przez %d votow", choises[3])
        server_cmd("mp_timelimit 25");
    }
    
    else if(choises[4] > choises[1] && choises[4] > choises[2] && choises[4] > choises[3] && choises[4] > choises[5])
    {
        client_print(0, print_chat, "[AMXX] Opcja ^"30 minut^" wygrala przez %d votow", choises[4])
        server_cmd("mp_timelimit 30");
    }
    
    else if(choises[5] > choises[1] && choises[5] > choises[2] && choises[5] > choises[3] && choises[5] > choises[4])
    {
        client_print(0, print_chat, "[AMXX] Opcja ^"35 minut^" wygrala przez %d votow", choises[5])
        server_cmd("mp_timelimit 35");
    }
    else if(choises[1] == 0 && choises[2] == 0 && choises[3] == 0 && choises[4] == 0 && choises[5] == 0)
    {
        client_print(0, print_chat, "[AMXX] Nie wybrano czasu mapy, czas mapy zostanie zmieniony na ^"20 minut^".", choises[6])
        server_cmd("mp_timelimit 20");
    }
}  

public plugin_end() 
{
    set_cvar_float("mp_timelimit", g_timelimit)
}

  • +
  • -
  • 0

#2 Mochi

    Zaawansowany

  • Użytkownik

Reputacja: 16
Początkujący

  • Postów:81
  • Lokalizacja:asd
Offline

Napisano 16.02.2010 16:22

W start_vote(id)
Musisz dodać set_task() na 15.0 sekund do funkcji z wyłączeniem menu czyli
menu_cancel(id)
  • +
  • -
  • 0

#3 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 16.02.2010 16:23

task na 15 sekund i menu_cancel (id)

Up: myslalem ze nikt tu nie pomaga :F
  • +
  • -
  • 0

#4 skuziak

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:37
  • Lokalizacja:Stolica
Offline

Napisano 16.02.2010 16:30

A jak dokładnie bo jakoś mi to nie wychodzi :confused:
  • +
  • -
  • 0

#5 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 16.02.2010 16:37

public start_vote(id)
{    
    set_task(15.0, "xyz_vote");

public xyz_vote()
{
    new players[32], inum
    get_players(players, inum, "ch")
    for(new i = 0; i < inum; i++)
    {
        menu_cancel (players[i])
    }
}

  • +
  • -
  • 0

#6 skuziak

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:37
  • Lokalizacja:Stolica
Offline

Napisano 16.02.2010 17:15

hmm...
Zrobiłem tak jak napisałeś i niestety nie zamyka menu
  • +
  • -
  • 0

#7 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 16.02.2010 17:21

Ja bym skompilowal na twoim miejscu :F

#edit
hmm sa 2 taski bez podania id, wiec moze to przez to... daj set_task(15.0, "xyz_vote",4169);
  • +
  • -
  • 0

#8 skuziak

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:37
  • Lokalizacja:Stolica
Offline

Napisano 16.02.2010 17:34

Pudło, tak też nie trybi ;>

Dla sprawdzanie dodaje kod:

#include <amxmodx>
#include <amxmisc>

new choises[7]
new Float:g_timelimit

public plugin_init() 
{
    set_task(60.0, "start_vote");
}

public start_vote(id)
{
    set_task(15.0, "zamknij_vote", 4169);

    new menu = menu_create("\rIle ma byc grana mapa?", "menu_handler")
    menu_additem(menu, "\w15 minut", "1", 0)
    menu_additem(menu, "\w20 minut", "2", 0)
    menu_additem(menu, "\w25 minut", "3", 0)
    menu_additem(menu, "\w30 minut", "4", 0)
    menu_additem(menu, "\w35 minut", "5", 0)
    menu_addblank(menu, 0)
    menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
    
    new players[32], inum
    get_players(players, inum, "ch")
    for(new i = 0; i < inum; i++)
    {
        menu_display(players[i], menu, 0)
    }
    
    set_task(15.0, "finish_vote")
    
    choises[1] = choises[2] = choises[3] = choises[4] = choises[5] =  0
    choises[6] = 0
    
    return 1
}

public menu_handler(id, menu, item)
{
    if (item == MENU_EXIT)
    {
        menu_cancel(id)
        return PLUGIN_HANDLED
    }

    new data[6], name[32]
    new access, callback
    
    menu_item_getinfo(menu, item, access, data, 5, _, _, callback)
    
    new key = str_to_num(data)
    get_user_name(id, name, 31)
    
    switch (key) 
    {
        case 1: 
        {
            client_print (0, print_chat, "[AMXX] %s zaglosowal na 15 minut", name);
        }
        case 2:
        {
            client_print (0, print_chat, "[AMXX] %s zaglosowal na 20 minut", name);
        }
        case 3:
        {
            client_print (0, print_chat, "[AMXX] %s zaglosowal na 25 minut", name);
        }
        case 4:
        {
            client_print (0, print_chat, "[AMXX] %s zaglosowal na 30 minut", name);
        }
        case 5:
        {
            client_print (0, print_chat, "[AMXX] %s zaglosowal na 35 minut", name);
        }
    }
    
    ++choises[key]
    
    menu_cancel(id)
    return PLUGIN_HANDLED
}

public zamknij_vote()
{
    new players[32], inum
    get_players(players, inum, "ch")
    for(new i = 0; i < inum; i++)
    {
        menu_cancel(players[i])
    }
}

public finish_vote()
{
    g_timelimit = get_cvar_float("mp_timelimit")
    
    if(choises[1] > choises[2] && choises[1] > choises[3] && choises[1] > choises[4] && choises[1] > choises[5])
    {
        client_print(0, print_chat, "[AMXX] Opcja ^"15 minut^" wygrala przez %d votow", choises[1])
        server_cmd("mp_timelimit 15");
    }
    
    else if(choises[2] > choises[1] && choises[2] > choises[3] && choises[2] > choises[4] && choises[2] > choises[5])
    {
        client_print(0, print_chat, "[AMXX] Opcja ^"20 minut^" wygrala przez %d votow", choises[2])
        server_cmd("mp_timelimit 20");
    }
    else if(choises[3] > choises[1] && choises[3] > choises[2] && choises[3] > choises[4] && choises[3] > choises[5])
    {
        client_print(0, print_chat, "[AMXX] Opcja ^"25 minut^" wygrala przez %d votow", choises[3])
        server_cmd("mp_timelimit 25");
    }
    
    else if(choises[4] > choises[1] && choises[4] > choises[2] && choises[4] > choises[3] && choises[4] > choises[5])
    {
        client_print(0, print_chat, "[AMXX] Opcja ^"30 minut^" wygrala przez %d votow", choises[4])
        server_cmd("mp_timelimit 30");
    }
    
    else if(choises[5] > choises[1] && choises[5] > choises[2] && choises[5] > choises[3] && choises[5] > choises[4])
    {
        client_print(0, print_chat, "[AMXX] Opcja ^"35 minut^" wygrala przez %d votow", choises[5])
        server_cmd("mp_timelimit 35");
    }
    else if(choises[1] == 0 && choises[2] == 0 && choises[3] == 0 && choises[4] == 0 && choises[5] == 0)
    {
        client_print(0, print_chat, "[AMXX] Nie wybrano czasu mapy, czas mapy zostanie zmieniony na ^"20 minut^".", choises[6])
        server_cmd("mp_timelimit 20");
    }
}  

public plugin_end() 
{
    set_cvar_float("mp_timelimit", g_timelimit)
}

  • +
  • -
  • 0

#9 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 16.02.2010 17:41

Jaki plik dałeś na serwer?
  • +
  • -
  • 0

#10 skuziak

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:37
  • Lokalizacja:Stolica
Offline

Napisano 16.02.2010 17:47

Skompilowany .sma na .amxx

//AMXXPC compile.exe
// by the AMX Mod X Dev Team

//// czasmapy.sma
// Header size:            532 bytes
// Code size:             4820 bytes
// Data size:             3116 bytes
// Stack/heap size:      16384 bytes; estimated max. usage=781 cells (3124 bytes)
// Total requirements:   24852 bytes
// Done.
//
// Compilation Time: 0,19 sec
// ----------------------------------------

Press enter to exit ...

Użytkownik skuziak edytował ten post 16.02.2010 17:54

  • +
  • -
  • 0

#11 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 16.02.2010 17:56

the menu will still exist on their screen but any results are invalidated, and the callback is invoked.


Funkcja zamyka menu - mozliwosc jego uzycia, ale nadal jest wyswietlane na ekranie :F
  • +
  • -
  • 0

#12 skuziak

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:37
  • Lokalizacja:Stolica
Offline

Napisano 16.02.2010 18:06

A więc da się jakoś zrobić żeby te menu zniknęło z ekranu ?
Tak jak to jest w innych pluginach np.: adminvote
  • +
  • -
  • 0

#13 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 16.02.2010 18:09

Dodaj to pod menu_cancel:

show_menu (players[i], 1023, "", 1, "" )

To powinno oszukac ekran :F
  • +
  • -
  • 0

#14 skuziak

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:37
  • Lokalizacja:Stolica
Offline

Napisano 16.02.2010 18:29

Niestety, ale to też nie pomaga :(
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych