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

Blokowanie wiadomości tylko dla flagi


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
1 odpowiedź w tym temacie

#1 serp57

    Nowy

  • Nowy

Reputacja: 0
Nowy

  • Postów:2
Offline

Napisano 25.07.2015 19:14

Witam.

Mam taki kod blokujący wiadomość:

register_message(get_user_msgid("TextMsg") , "block_message");


public block_message() 
{
    if(get_msg_argtype(2) == ARG_STRING)
    {
        new value[64];
        get_msg_arg_string(2 , value , 63);

        if(equali(value , "#Cannot_Carry_Anymore"))
            return PLUGIN_HANDLED;
    }
}

Chcę zablokować wiadomość tylko dla danej flagi. Zrobiłem coś takiego:

public block_message(id) 
{
    if(!(get_user_flags(id) & ADMIN_LEVEL_H))
        return PLUGIN_CONTINUE;
    
    if(get_msg_argtype(2) == ARG_STRING)
    {
        new value[64];
        get_msg_arg_string(2 , value , 63);

        if(equali(value , "#Cannot_Carry_Anymore"))
            return PLUGIN_HANDLED;
    }

    return PLUGIN_CONTINUE;
}

Niby działa, jednak powoduje to error:

L 07/25/2015 - 20:03:55: [AMXX] Displaying debug trace (plugin "test.amxx")
L 07/25/2015 - 20:03:55: [AMXX] Run time error 10: native error (native "get_user_flags")
L 07/25/2015 - 20:03:55: [AMXX]    [0] test.sma::block_message (line 193)
L 07/25/2015 - 20:07:52: Invalid player id 77

Kombinowałem też z tak, ale bez skutku:

if(!(get_user_flags(id) & ADMIN_LEVEL_H) && is_user_alive(id))
        return PLUGIN_CONTINUE;

Jakieś pomysły?

 

 

 


  • +
  • -
  • 0

#2 Ossal

    Wszechwidzący

  • Użytkownik

Reputacja: 20
Życzliwy

  • Postów:273
  • GG:
  • Lokalizacja:Warszawa
Offline

Napisano 26.07.2015 15:48


Invalid player id 77

To oznacza, że nadawcą wiadomości był ent o numerze 77, a wywołanie funkcji get user_flags z parametrem większym niż get_maxplayers() (czyli w skrócie liczba slotów serwera) będzie powodować errory.
Kombinowałeś w dobry sposób, ale nie wziąłeś pod uwagę kolejności warunków ;)
Najpierw sprawdza flagi (i dla nie graczy sypie errorem), a dopiero potem sprawdza czy byt jest graczem :D

Zamień na coś takiego i będzie latać ;) Pozdrawiam

if(!is_user_alive(id) || !(get_user_flags(id) & ADMIN_LEVEL_H))
        return PLUGIN_CONTINUE;

  • +
  • -
  • 0




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

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