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

plugin wyłącznie dla admina


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

#1 sq69i

    Zaawansowany

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:117
  • Lokalizacja:Polska
Offline

Napisano 05.07.2013 18:27

Witam, zapewne był gdzieś już taki temat, jednak nie wiem jak sprecyzować pytanie aby go odnaleźć. Poszukuję informacji jak zrobić aby zwykły plugin(dla wszystkich) był dostępny wyłącznie dla admina (z jakąś flagą) trzeba każdy plugin z osobna przerabiać dopisując do niego odpowiedni kod? czy jest jakaś inna możliwość?

 

Przykładowo wgrywam na serwer plugin z którego może korzystać każdy gracz a chcę zrobić tak aby mógł korzystać tylko ten kto ma odpowiednie uprawnienia.


  • +
  • -
  • 0

#2 Ogen Dogen

    Czempion

  • Power User

Reputacja: 261
Wszechwidzący

  • Postów:837
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Dąbrowa Górnicza
Offline

Napisano 05.07.2013 19:07

Tak. Trzeba każdy przerabiać w kodzie , żeby sprawdzał czy gracz ma flagi.


  • +
  • -
  • 0

b_350_20_360204_C20008_FFFFFF_000000.png 193.33.176.115:27015

 

94e23d811c.png

 


#3 sq69i

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:117
  • Lokalizacja:Polska
Offline

Napisano 05.07.2013 19:53

tzn. trzeba całkowicie przerabiać czy wystarczy dodać jakąś linijkę w kodzie?


  • +
  • -
  • 0

#4 xenos

    Wszechobecny

  • Użytkownik

Reputacja: 216
Profesjonalista

  • Postów:467
  • GG:
  • Imię:Konrad
  • Lokalizacja:Rzeszów
Offline

Napisano 05.07.2013 19:58

1 linijka
if(get_user_flags(id) & ADMIN_LEVEL_A){
//gracz ma flage m
}

  • +
  • -
  • 1
"Jeśli potrafię to pomogę, jeśli nie potrafię to wskaże drogę którą trzeba dążyć by znaleźć odpowiedz" 

Pluginy:
Szukanie Aktywnych Banów w AmxBansie
Drop After Death
Kto postawił mine

#5 sq69i

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:117
  • Lokalizacja:Polska
Offline

Napisano 07.07.2013 14:20

Tak, ale tej linijki nie mogę umieścić w byle jakim miejscu. Próbowałem później skompilować plugin i nie dało rady :| Jakieś dalsze rady? Jak to prawidłowo wkomponować np. w poniższy kod:

 

#include <amxmodx>


#define PLUGIN  "Hud Frags Death" 
#define VERSION "1.0" 
#define AUTHOR  "Biscuit" 


new maxplayers
public plugin_init() 
{ 
    register_plugin( PLUGIN, VERSION, AUTHOR )
    maxplayers = get_maxplayers()
    set_task(1.0,"ShowHud",0,"",0,"b")
}


public ShowHud()
{
    for(new i = 1 ; i <= maxplayers ; i++)
    {
        new Frags = get_user_frags(i)
        new Deaths = get_user_deaths(i)
        set_hudmessage(154,205,50,0.02,0.2,0, 1.0, 30.0, 0.1, 0.2, 1)
        show_hudmessage(i,"Frags : %d ^nDeaths : %d",Frags,Deaths)
    }
}

 


  • +
  • -
  • 0

#6 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

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

Napisano 07.07.2013 15:23

Łap



#include <amxmodx>


#define PLUGIN  "Hud Frags Death" 
#define VERSION "1.0" 
#define AUTHOR  "Biscuit" 


new maxplayers
public plugin_init() 
{ 
    register_plugin( PLUGIN, VERSION, AUTHOR )
    maxplayers = get_maxplayers()
    set_task(1.0,"ShowHud",0,"",0,"b")
}


public ShowHud()
{
    for(new i = 1 ; i <= maxplayers ; i++)
    {
	if(!(get_user_flags(i) & ADMIN_IMMUNITY))	continue; // Jeśli gracz nie posiada flagi a to go omijamy
		
        set_hudmessage(154,205,50,0.02,0.2,0, 1.0, 30.0, 0.1, 0.2, 1)
        show_hudmessage(i,"Frags : %i ^nDeaths : %i",get_user_frags(i),get_user_deaths(i))
    }
}

Tylko wiedz, że ten plugin nie jest optymalnie zrobiony. Ja ci tylko pokazuje jak użyć sprawdzania flag gracza.

Dlaczego? Bo co sekundę sprawdza:

- Flagi gracza

- Ilość Fragów

- Ilość zginięć

oraz co sekundę ustawia hud msg który na pewno będzie czasami znikał lub się nakładał na siebie

Biorąc pod uwagę że na serwerze są 32 osoby to może i nie jest dużo dla serwera ale jak ma się na serwerze dużo pluginów niedopracowanych to wynikają z tego duże pingi/ mało fps

Do tego dodam, że czasami będzie sypać błędami w logach serwera przez niego, bo nie jest sprawdzane czy gracz jest podłączony do serwera


Użytkownik BlackPerfum edytował ten post 07.07.2013 15:32

  • +
  • -
  • 0
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

#7 sq69i

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:117
  • Lokalizacja:Polska
Offline

Napisano 03.08.2013 11:05

przykład innego pluginu

   if(is_user_alive(g_Killer)) 

odpowiada za to że każdy gracz może korzystać z danego pluginu?

a jak bym zamienił to na 

if(!(get_user_flags(i) & ADMIN_IMMUNITY))    continue;

to wyłącznie admini?

 

staram się pojąć jak można modyfikować inne pluginy.

tą linijkę należy wklejać po

public plugin(){

?

 


  • +
  • -
  • 0

#8 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

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

Napisano 03.08.2013 11:23

przykład innego pluginu



   if(is_user_alive(g_Killer)) 

odpowiada za to że każdy gracz może korzystać z danego pluginu?

a jak bym zamienił to na 



if(!(get_user_flags(i) & ADMIN_IMMUNITY))    continue;

to wyłącznie admini?

 

staram się pojąć jak można modyfikować inne pluginy.

tą linijkę należy wklejać po



public plugin(){

?

Bez pokazania całego pluginu człowiek może się tylko domyślać gdzie jest twój warunek. Funkcja "is_user_alive" sprawdza czy gracz jest żywy dlatego lepiej nie zamieniaj tylko dodawaj kod bo możesz złapać niechciane błędy. i jeszcze jedno co do słowa "continue" go można(powinno się) używać tylko w pętli (for/while/do...while) dzięki niemu jeśli warunek przed nim się wykona to ominie resztę kodu, a pętla będzie się dalej obracać. A co do dodawania warunków to popatrz jak by wyglądał twój:

if(is_user_alive(g_Killer) && get_user_flags(g_Killer) & ADMIN_IMMUNITY)


staram się pojąć jak można modyfikować inne pluginy.
tą linijkę należy wklejać po
public plugin(){
?

Zależy od funkcji w jakiej to używasz


  • +
  • -
  • 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

#9 sq69i

    Zaawansowany

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:117
  • Lokalizacja:Polska
Offline

Napisano 03.08.2013 11:52

Przepraszam, że tak kawałkami dziele

 

czyli tak ma wyglądać kod aby plugin był dostępny wyłącznie dla flagi o?

 

#include <amxmodx>
#include <fun>


#define PLUGIN_VERSION "1.0"
#define ADMIN_LEVEL_C


new g_Killer


public plugin_init()
{
   register_plugin("Screen Fade", PLUGIN_VERSION, "zEEDu")


   register_event("DeathMsg", "hook_death", "a", "1>0")     
}


public hook_death()
{
   g_Killer = read_data(1)


if(is_user_alive(g_Killer) && get_user_flags(g_Killer) & ADMIN_IMMUNITY || get_user_flags(g_Killer) & ADMIN_LEVEL_C)
   {
   message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, g_Killer)
   write_short(1<<10)
   write_short(1<<10)
   write_short(0x0000)
   write_byte(30)
   write_byte(144)
   write_byte(255)
   write_byte(75)
   message_end()
   }
   
} 

niestety skompilować nie mogę...

 


  • +
  • -
  • 0

#10 Scorpion Flail

    Wszechobecny

  • Użytkownik

Reputacja: 129
Zaawansowany

  • Postów:489
  • GG:
  • Steam:steam
Offline

Napisano 03.08.2013 12:07

czyli tak ma wyglądać kod aby plugin był dostępny wyłącznie dla flagi o?

 

Jeśli chcesz na o to po co dajesz ADMIN_IMMUNITY?

 

W define nie musisz dawać ADMIN_LEVEL_C, ponieważ jest to standardowa flaga w amxx.

 

Linijka z warunkiem powinna wyglądać tak:

if(is_user_alive(g_Killer) && get_user_flags(g_Killer) & ADMIN_LEVEL_C)

  • +
  • -
  • 0

#11 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

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

Napisano 03.08.2013 12:11

 

#define ADMIN_LEVEL_C

Zły sposób definicji stałej. A poza tym ta stała już jest zdefiniowana w amxconst.ini

 

new g_Killer

 

Po co zmienna globalna?? Stwórz zmienną w funkcji

 

if(is_user_alive(g_Killer) && get_user_flags(g_Killer) & ADMIN_IMMUNITY || get_user_flags(g_Killer) & ADMIN_LEVEL_C)

 

 

W ten sposób warunek podziała tak. Jeśli gracz żyje i ma flagę "ADMIN_IMMUNITY" lub jeśli gracz ma flagę "ADMIN_LEVEL_C" tzn. za drugim razem nie sprawdza czy żyje. Nie potrzebnie pobierasz dwa razy flagi gracza. Za każdym razem sprawdzasz id wiadomości zapisz je!!

 

#include <fun>

 

Na co ci to?

 

 

Łap przerobiony:

Spoiler

 

// Znowu mnie ktoś uprzedził i sorki nie doczytałem że ma być na flagę "o" masz przerobione


Użytkownik BlackPerfum edytował ten post 03.08.2013 12:13

  • +
  • -
  • 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




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

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