Jump to content


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

Posted Image Posted Image

Guest Message by DevFuse
 

Sprawdzenie czy jakiś gracz z ADMIN_LEVEL_G jest online


  • You cannot start a new topic
  • You cannot reply to this topic
13 replies to this topic

#1 Jadek

    Wszechwidzący

  • Użytkownik

  • Reputacja: 80
    Zaawansowany

  • Postów:288
  • GG:
  • Imię:Daniel
  • Lokalizacja:Polska
Offline

Posted 29.05.2014 18:05

Witam. Jak mam sprawdzić czy jakiś gracz z ADMIN_LEVEL_G jest na serwerze? Bo chodzi o to, że jeśli jest jakikolwiek gracz z tą flagą to wykonuję 1.IF a jeśli nie ma nikogo z taką flagą to 2.IF.

Dziękuję z góry.


  • +
  • -
  • 0

#2 MAGNET

    SourceLearned ;)

  • Moderator

  • Reputacja: 661
    Wszechmogący

  • Postów:1,535
  • GG:
  • Imię:Olek
  • Lokalizacja:Dalekoo
Offline

Posted 29.05.2014 18:09

new zmienna;
for(new i = 0;i<32;i++)
{
if(get_user_flags(i) & ADMIN_LEVEL_G)
++zmienna;
 
if(!zmienna)
{
////
}
else
{
///
}
}

  • +
  • -
  • 0

#3 Jadek

    Wszechwidzący

  • Autor tematu
  • Użytkownik

  • Reputacja: 80
    Zaawansowany

  • Postów:288
  • GG:
  • Imię:Daniel
  • Lokalizacja:Polska
Offline

Posted 29.05.2014 19:14

new zmienna;
for(new i = 0;i<32;i++)
{
if(get_user_flags(i) & ADMIN_LEVEL_G)
++zmienna;
 
if(!zmienna)
{
////
}
else
{
///
}
}

No dobrze, ale z tego co widzę to nie będzie zerować np gdy dany gracz wyjdzie. Racja?


  • +
  • -
  • 0

#4 szelbi

    Hero

  • Power User

  • Reputacja: 373
    Wszechpomocny

  • Postów:1,032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Posted 29.05.2014 19:16

To ponownie uruchamiasz funkcję i liczy ci od nowa.


  • +
  • -
  • 0

#5 Jadek

    Wszechwidzący

  • Autor tematu
  • Użytkownik

  • Reputacja: 80
    Zaawansowany

  • Postów:288
  • GG:
  • Imię:Daniel
  • Lokalizacja:Polska
Offline

Posted 29.05.2014 19:25

To ponownie uruchamiasz funkcję i liczy ci od nowa.

Masz na myśli for?


  • +
  • -
  • 0

#6 szelbi

    Hero

  • Power User

  • Reputacja: 373
    Wszechpomocny

  • Postów:1,032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Posted 29.05.2014 19:30

Masz taki kod:

public funkcja2()
{
	new zmienna = 0; // tworzysz zmienna, gdzie bedzie zapisywana liczba adminow
	
	for(new i=1;i<33;i++) // liczysz adminow
	{
		if(get_user_flags(i) & ADMIN_LEVEL_G)
		++zmienna;
	}
	
	if(!zmienna) // nie ma adminow
	{
		// co ma sie stac jesli nie ma adminow
	}
	else // sa admini
	{
		// co ma sie stac jesi sa admini
	}
}

I za każdym razem, kiedy chcesz wykonać coś, jeśli są admini lub ich nie ma to musisz uruchomić tę funkcję, więc zawsze ci liczy tych adminów od nowa.

Możesz tez liczyć inaczej, np. w client_authorized i client_disconnect, ale wtedy będzie to wyglądało inaczej.


  • +
  • -
  • 0

#7 Jadek

    Wszechwidzący

  • Autor tematu
  • Użytkownik

  • Reputacja: 80
    Zaawansowany

  • Postów:288
  • GG:
  • Imię:Daniel
  • Lokalizacja:Polska
Offline

Posted 29.05.2014 19:41

Masz taki kod:

public funkcja2()
{
	new zmienna = 0; // tworzysz zmienna, gdzie bedzie zapisywana liczba adminow
	
	for(new i=1;i<33;i++) // liczysz adminow
	{
		if(get_user_flags(i) & ADMIN_LEVEL_G)
		++zmienna;
	}
	
	if(!zmienna) // nie ma adminow
	{
		// co ma sie stac jesli nie ma adminow
	}
	else // sa admini
	{
		// co ma sie stac jesi sa admini
	}
}

I za każdym razem, kiedy chcesz wykonać coś, jeśli są admini lub ich nie ma to musisz uruchomić tę funkcję, więc zawsze ci liczy tych adminów od nowa.

Możesz tez liczyć inaczej, np. w client_authorized i client_disconnect, ale wtedy będzie to wyglądało inaczej.

Niestety to co podałeś nie działa. Nie wykonuje ani jednego warunku.

Ogólnie u mnie wygląda to tak:

new users_with_flag = 0;
        for(new i = 0;i<32;i++)
        {
            if(get_user_flags(i) & ADMIN_LEVEL_G)
            ++users_with_flag;
        }
 
        if(!users_with_flag)
        {    
            if(!dane_gracza[id] && ((get_user_time(id,1)+CzasGry[id]) < pCvarTiem) && !is_user_admin(id))
            {
                ColorChat(id, TEAM_COLOR, "^x04[PrisonBreak]^x01 Masz za malo czasu przegrane na serwerze by grac w CT! Potrzebujesz %d minut.", pCvarTiem/60);
                return JAIL_FORCE_TT;
            }
            else
            {
                ColorChat(id, GREEN, "Dolaczyles do straznikow, poniewaz nie ma innego straznika z flaga");
                return JAIL_CONTINUE;
            }
        }
        else
        {
            if(get_user_flags(id) & ADMIN_LEVEL_G)
            {
                ColorChat(id, GREEN, "Dolaczyles do straznikow.");
                return JAIL_CONTINUE;
            }
            else
            {
                ColorChat(id, GREEN, "Aby dolaczyc do straznikow zloz podanie na forum(free) lub wpisz komende /sklepsms");
                return JAIL_FORCE_TT;
            }
        }

Edited by Jadek, 29.05.2014 19:45.

  • +
  • -
  • 0

#8 szelbi

    Hero

  • Power User

  • Reputacja: 373
    Wszechpomocny

  • Postów:1,032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

Posted 29.05.2014 19:59

Spójrz na pętlę w moim kodzie i na tą w swoim.


  • +
  • -
  • 0

#9 Jadek

    Wszechwidzący

  • Autor tematu
  • Użytkownik

  • Reputacja: 80
    Zaawansowany

  • Postów:288
  • GG:
  • Imię:Daniel
  • Lokalizacja:Polska
Offline

Posted 29.05.2014 20:14

Spójrz na pętlę w moim kodzie i na tą w swoim.

Teraz mam taką jak ty czyli:

for(new i=1;i<33;i++)
        {
            if(get_user_flags(i) & ADMIN_LEVEL_G)
            ++users_with_flag;
        }

I to samo. Omija ify

Znowu robiąc tak:

new users_with_flag = 0;
        for(new i=1;i<33;i++)
        {
            if(get_user_flags(i) & ADMIN_LEVEL_G)
            ++users_with_flag;
        
 
        if(!users_with_flag)
        {    
            if(!dane_gracza[id] && ((get_user_time(id,1)+CzasGry[id]) < pCvarTiem) && !is_user_admin(id))
            {
                ColorChat(id, TEAM_COLOR, "^x04[PrisonBreak]^x01 Masz za malo czasu przegrane na serwerze by grac w CT! Potrzebujesz %d minut.", pCvarTiem/60);
                return JAIL_FORCE_TT;
            }
            else
            {
                ColorChat(id, GREEN, "Dolaczyles do straznikow, poniewaz nie ma innego straznika z flaga");
                return JAIL_CONTINUE;
            }
        }
        else
        {
            if(get_user_flags(id) & ADMIN_LEVEL_G)
            {
                ColorChat(id, GREEN, "Dolaczyles do straznikow.");
                return JAIL_CONTINUE;
            }
            else
            {
                ColorChat(id, GREEN, "Aby dolaczyc do straznikow zloz podanie na forum(free) lub wpisz komende /sklepsms");
                return JAIL_FORCE_TT;
            }
      }
        }

Niby pokazuje informacje ale jest osoba która ma flage "s" a mi pokazuje, ten colorchat:

ColorChat(id, GREEN, "Dolaczyles do straznikow, poniewaz nie ma innego straznika z flaga");

Edited by Jadek, 29.05.2014 20:21.

  • +
  • -
  • 0

#10 BlackPerfum

    Pseudo interakcja??

  • Power User

  • Reputacja: 459
    Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Posted 31.05.2014 22:02

Ja bym to tak zrobił:

for(new i=1;i<33;i++)
{
    if(get_user_flags(i) & ADMIN_LEVEL_G)
    {
        if(get_user_flags(id) & ADMIN_LEVEL_G)
        {
            ColorChat(id, GREEN, "Dolaczyles do straznikow.");
            return JAIL_CONTINUE;
        }
        else
        {
            ColorChat(id, GREEN, "Aby dolaczyc do straznikow zloz podanie na forum(free) lub wpisz komende /sklepsms");
            return JAIL_FORCE_TT;
        }
    }
}

if(!dane_gracza[id] && ((get_user_time(id,1)+CzasGry[id]) < pCvarTiem) && !is_user_admin(id))
{
    ColorChat(id, TEAM_COLOR, "^x04[PrisonBreak]^x01 Masz za malo czasu przegrane na serwerze by grac w CT! Potrzebujesz %d minut.", pCvarTiem/60);
    return JAIL_FORCE_TT;
}
else
{
    ColorChat(id, GREEN, "Dolaczyles do straznikow, poniewaz nie ma innego straznika z flaga");
    return JAIL_CONTINUE;
}

  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#11 Jadek

    Wszechwidzący

  • Autor tematu
  • Użytkownik

  • Reputacja: 80
    Zaawansowany

  • Postów:288
  • GG:
  • Imię:Daniel
  • Lokalizacja:Polska
Offline

Posted 31.05.2014 22:40


Ja bym to tak zrobił:

for(new i=1;i<33;i++)
{
    if(get_user_flags(i) & ADMIN_LEVEL_G)
    {
        if(get_user_flags(id) & ADMIN_LEVEL_G)
        {
            ColorChat(id, GREEN, "Dolaczyles do straznikow.");
            return JAIL_CONTINUE;
        }
        else
        {
            ColorChat(id, GREEN, "Aby dolaczyc do straznikow zloz podanie na forum(free) lub wpisz komende /sklepsms");
            return JAIL_FORCE_TT;
        }
    }
}

if(!dane_gracza[id] && ((get_user_time(id,1)+CzasGry[id]) < pCvarTiem) && !is_user_admin(id))
{
    ColorChat(id, TEAM_COLOR, "^x04[PrisonBreak]^x01 Masz za malo czasu przegrane na serwerze by grac w CT! Potrzebujesz %d minut.", pCvarTiem/60);
    return JAIL_FORCE_TT;
}
else
{
    ColorChat(id, GREEN, "Dolaczyles do straznikow, poniewaz nie ma innego straznika z flaga");
    return JAIL_CONTINUE;
}
W twoim przypadku gdy gracz ma powyzej x minut/na serwerze to go wpuści do CT z info ze dolaczyles bo nie ma innego strażnika.
  • +
  • -
  • 0

#12 BlackPerfum

    Pseudo interakcja??

  • Power User

  • Reputacja: 459
    Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Posted 31.05.2014 23:24

W twoim przypadku gdy gracz ma powyzej x minut/na serwerze to go wpuści do CT z info ze dolaczyles bo nie ma innego strażnika.

nie ma innego strażnika z flagą*

 

 

Tak zgadzam się lecz to ty tak zrobiłeś ja jedynie pozbyłem sie zmiennej "users_with_flag" i paru instrukcji. Jeśli nie tego chciałeś to napisz czego oczekujesz bo nie jestem jasnowidzem. Sam przecież tak zrobiłeś??


  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#13 Jadek

    Wszechwidzący

  • Autor tematu
  • Użytkownik

  • Reputacja: 80
    Zaawansowany

  • Postów:288
  • GG:
  • Imię:Daniel
  • Lokalizacja:Polska
Offline

Posted 01.06.2014 18:56

Nie no kolego ja tak nie zrobiłem, ja zrobiłem z tym czasem przegranym wtedy gdy nie ma żadnego gracza z flagą "s".


  • +
  • -
  • 0

#14 BlackPerfum

    Pseudo interakcja??

  • Power User

  • Reputacja: 459
    Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Posted 01.06.2014 19:26


Nie no kolego ja tak nie zrobiłem, ja zrobiłem z tym czasem przegranym wtedy gdy nie ma żadnego gracza z flagą "s".

No u mnie jest tak jak u ciebie. Przyjrzyj sie
  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika




  


1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users

Coinsy CSGOPolygon Za SMS, PSC , Przelew - CoinSell.pro
Skiny do CS:GO za SMS, PSC, Przelew - CSGOPaka.com
Automatyczny Bot Levelowania Steam - LVLUPSteam.com
CSGO Gambling Sites and Free Betting Codes - DreamCodes.gg

Sign In