Skocz do zawartości
[Rozwiązane] Funkcja ma sprawdzać czy gracz jest adminem.
Pytania

Rekomendowane odpowiedzi

Jest sobie funkcja  (w pluginie, który był wcześniej nie działała i trochę go przekształciłem, aby sprawdzić czy działa tak sama z siebie)

bool jestADMIN(int client){
    if(GetUserFlagBits(client) & ADMFLAG_BAN) return true;

    return false;
}

i chyba powinna działać. Lecz gdy ją wepnę do reszty kodu:

#include <sourcemod>
#include <multicolors>

public void OnPluginStart(){
    RegConsoleCmd("sm_isadmin", admin);
}

public Action admin(int client, int args){
    if (jestADMIN(client)) {
        CPrintToChat(client, "[{red}ADMIN{default}] {green}%N jest na serwerze!", client); // Admin = kolor czerwony; nie admin = kolor niebieski
    }
    else CPrintToChat(client, "[{blue}ADMIN{default}] {green}%N jest na serwerze!", client);
    return Plugin_Handled;
}

bool jestADMIN(int client){
    if(GetUserFlagBits(client) & ADMFLAG_BAN) return true;

    return false;
}

Jestem dodany do adminów, a jednak po wpisaniu komendy wywołuje się 

    else CPrintToChat(client, "[{blue}ADMIN{default}] {green}%N jest na serwerze!", client);

Coś robię źle? Proszę o pomoc 😄

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Warunki zawsze neguj jeśli tylko możesz.

if(!jestADMIN(client)) { }

 

Chociaż nie wydaje mi się, by było to problemem. Możesz na serwerze wpisać sm_who ? 😛 

Z tego co zauważyłem, to flaga "Z" sama w sobie nie daje fizycznie wszystkich flag po kolei, tylko jakby ich permisje no.

To znaczy, że ta funkcja pokaże Ci false gdy zapytasz o flagę np ADMFLAG_CUSTOM1, mając flagę AMDFLAG_ROOT. To sprawdzałem, z ADMFLAG_BAN może być podobnie. Check it out 😛

Odnośnik do odpowiedzi
Udostępnij na innych stronach
6 godzin temu, SUPER TIMOR napisał:

Warunki zawsze neguj jeśli tylko możesz.

if(!jestADMIN(client)) { }

 

Chociaż nie wydaje mi się, by było to problemem. Możesz na serwerze wpisać sm_who ? 😛 

Z tego co zauważyłem, to flaga "Z" sama w sobie nie daje fizycznie wszystkich flag po kolei, tylko jakby ich permisje no.

To znaczy, że ta funkcja pokaże Ci false gdy zapytasz o flagę np ADMFLAG_CUSTOM1, mając flagę AMDFLAG_ROOT. To sprawdzałem, z ADMFLAG_BAN może być podobnie. Check it out 😛

Miałeś rację, zmiana typu flagi na ADMFLAG_ROOT okazała się być prawidłowym rozwiązaniem, dzięki 😄

Wiesz może czy dało się jakby przeformatować typ  zmiennej z CHAR do INT i w jaki sposób to zrobić? Chodzi o to, że np. jest komenda !hp <wartość> i ma ustawić hp na taką wartość, tyle że funkcja GetCmdArgString zapisuje w zmiennej typie char, a potrzebuję zamienić ten typ na int. Z góry dzięki 🙂 

  • Lubię to!
Odnośnik do odpowiedzi
Udostępnij na innych stronach
  • 1 miesiąc temu...
  • Moderator poziom 2

Wiadomość wygenerowana automatycznie

 

Problem został rozwiązany

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

Sygnatura użytkownika

» Support: https://discord.com/invite/zMXt97R63v

» Steam: https://steamcommunity.com/id/pawelsteam/

» Discord: Paweł#8244

» PluginyCS: https://pluginycs.pl/profile/Pawel

» Przyjmuję zlecenia na paczki oraz pluginy.  «

Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ostatnio przeglądający ten temat (5 użytkowników)

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
×
×
  • Dodaj nową pozycję...