←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Problem z czytaniem flagi


Najlepsza odpowiedź Rivit 06.01.2020 17:36

adminchat odpowiada za pisanie dla adminow w hud

 

@paka hosty

 

@@ i takie tam

Przejdź do postu

  • +
  • -
Dabster - zdjęcie Dabster 05.01.2020

Cześć, na wstępie dodam, że mam na serwerze VIP'a i SVIP'a z kompilatora.

Druga sprawa jest taka, że jak daje plugin na VIP'a aby działał od tej godziny do tej godziny to nie nadaje mi w pełni "flag"? albo coś takiego. Mam na myśli, że dostaje w hudzie [Status]: VIP/SVIP ale nie dostaje np. podwójnego skoku czy choćby menu z wyborem broni. Po nadaniu tego nocnego VIP'a jest dostęp tylko do menu wyboru skinów.

Taki sam problem mam z losowaniem VIP w danej rundzie, dostaję dostęp do skinów/oraz jest napis w hudzie nic więcej.

 

(Z podobnym problem borykam się po usługach w sklepie sms, że osoba która zakupiła coś przez sklep sms ma tylko napis hud/skiny)

Załączone pliki

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 05.01.2020


Cześć, na wstępie dodam, że mam na serwerze VIP'a i SVIP'a z kompilatora.

 

no i to jest kluczowa rzecz. Vip z generatora działa tak, że sprawdza flage tylko gdy gracz wchodzi na serwer i na tej podstawie osądza czy gracz jest vipem czy nie

 

Rozwiazania są conajmniej 3:

  • dodać natyw w vipie, który by ustawiał (wymuszał), że gracz jest vipem. W momencie gdy dajesz graczowi freevipa to wywołać ten natyw. Po zmianie mapy wszystko wraca do normy.
  • przerobic vipa i svipa aby sprawdzaly caly czas czy gracz ma flage a nie tylko przy wejsciu na serwer
  • wywołać forward amxbans_admin_connect a reszta stanie się tak jak w punkcie 1. jest to o tyle lepsze ze nie trzeba nic w vipie grzebac, tylko dodac wywolanie forwardu gdy gracz otrzymuje freevipa
Odpowiedz

  • +
  • -
Dabster - zdjęcie Dabster 05.01.2020

 


Cześć, na wstępie dodam, że mam na serwerze VIP'a i SVIP'a z kompilatora.

 

no i to jest kluczowa rzecz. Vip z generatora działa tak, że sprawdza flage tylko gdy gracz wchodzi na serwer i na tej podstawie osądza czy gracz jest vipem czy nie

 

Rozwiazania są conajmniej 3:

  • dodać natyw w vipie, który by ustawiał (wymuszał), że gracz jest vipem. W momencie gdy dajesz graczowi freevipa to wywołać ten natyw. Po zmianie mapy wszystko wraca do normy.
  • przerobic vipa i svipa aby sprawdzaly caly czas czy gracz ma flage a nie tylko przy wejsciu na serwer
  • wywołać forward amxbans_admin_connect a reszta stanie się tak jak w punkcie 1. jest to o tyle lepsze ze nie trzeba nic w vipie grzebac, tylko dodac wywolanie forwardu gdy gracz otrzymuje freevipa

 

Jak wykonać drugą i trzecią kropkę?

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 05.01.2020

wystarczy jedną z tych 3 kropek zrobic

 

sposob z forwardami - powinnien zadziałać ale nie jestem pewny czy cos nie sknocilem:

nocny_vip.sma

Spoiler
Odpowiedz

  • +
  • -
Dabster - zdjęcie Dabster 05.01.2020

wystarczy jedną z tych 3 kropek zrobic

 

sposob z forwardami - powinnien zadziałać ale nie jestem pewny czy cos nie sknocilem:

nocny_vip.sma

Spoiler

Spróbuje i dam znać ;# 

Odpowiedz

  • +
  • -
Dabster - zdjęcie Dabster 05.01.2020

Free vip mi działa.

No a pytanie jakbym chciał dodać ten forward do loswania vip co którąś tam rundę czy też by mi to przeszło?

Drugie pytanie dodając ten forward do VIP'a / SVIP'a zakup przez sklep sms działał by prawidłowo?

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 05.01.2020

tak, generalnie ten forward wystarczy dodac w miejscu gdzie uzywasz set_user_flags

pamiętaj tylko, żeby w ExecuteForward znalazło się prawidłowe id, żeby kto inny nie dostał

 

 

jesli korzystasz z amxx 1.9 to mozesz chyba tak zrobic:

new iForwardOne;
ExecuteForward(g_ForwardOne, iForwardOne, id);

->

ExecuteForward(g_ForwardOne, _, id);

Użytkownik TibacK edytował ten post 05.01.2020 16:35
Odpowiedz

  • +
  • -
Dabster - zdjęcie Dabster 05.01.2020

 

tak, generalnie ten forward wystarczy dodac w miejscu gdzie uzywasz set_user_flags

pamiętaj tylko, żeby w ExecuteForward znalazło się prawidłowe id, żeby kto inny nie dostał

 

 

jesli korzystasz z amxx 1.9 to mozesz chyba tak zrobic:

new iForwardOne;
ExecuteForward(g_ForwardOne, iForwardOne, id);

->

ExecuteForward(g_ForwardOne, _, id);

 

W którym miejscu robię źle? (załączam .sma)

Korzystam z 1.8.3.

Załączone pliki


Użytkownik Dabster edytował ten post 05.01.2020 17:24
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 05.01.2020

To o czym mowilem, patrz na id gracza, któremu ustawiasz flage. To samo id musi byc w executeforward

		set_user_flags(iPlayer, get_user_flags(iPlayer) | FLAGA);
		new iForwardOne;
		ExecuteForward(g_ForwardOne, iForwardOne, id);

id -> iPlayer

Odpowiedz

  • +
  • -
Dabster - zdjęcie Dabster 05.01.2020

To o czym mowilem, patrz na id gracza, któremu ustawiasz flage. To samo id musi byc w executeforward

		set_user_flags(iPlayer, get_user_flags(iPlayer) | FLAGA);
		new iForwardOne;
		ExecuteForward(g_ForwardOne, iForwardOne, id);

id -> iPlayer

Nawet nie wiesz ile przy Tobie się da nauczyć.

 

Teraz pytanie czy takie forward  jak tu i z takim samym id (te co jest napisane w VIP/SVIPIE) naprawi mi problem ze sklepem sms przy zakupie?

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 05.01.2020

nie wiem, po prostu to sprawdz

Odpowiedz

  • +
  • -
Dabster - zdjęcie Dabster 05.01.2020

W którym miejscu tutaj dodać forwarda? (dodam, że w vipie z kompilatora jest owy "forward amxbans_admin_connect(id);" i nie działa on za bardzo prawidłowo.) 

 

 

Załączone pliki

  • Załączony plik  vip.sma   6,89 KB   37 Ilość pobrań

Użytkownik Dabster edytował ten post 05.01.2020 18:42
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 05.01.2020

no nie, wlasnie po to jest ten forward, zeby go wywolac. ten forward jest wywolywany gdy jakis admin czy ktos kto ma flagi wchodzi na serwer (funkcjonalnosc amxbansa)

 

wlasnie to co ja ci kazalem zrobic. dodanie tego executeforward to jest taki 'fake', żeby cie poprawnie zautoryzowalo jako vip.

 

edit:

nie widzialem ze edytowales.

 

Ale vipa nie ruszasz, zmieniasz tylko pluginy, które dają vipa. bo to co chcesz zrobic to wywolac forward amxbans admin connect ale z innego pluginu, tak,żeby plugin vip ponowil sprawdzenie flag


Użytkownik TibacK edytował ten post 05.01.2020 18:48
Odpowiedz

  • +
  • -
Dabster - zdjęcie Dabster 05.01.2020

Rozumiem, a da się zrobić tego forwarda jako osobny plugin aby właśnie normalnie autoryzowało VIP/SVIPA? 

 

(Co do losowania VIP od 3 rundy działa i też dzięki za pomoc)

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 05.01.2020

jasne ze sie da, ale to juz takie obejscie chamskie

mozna zrobic zeby co spawn sprawdzalo po prostu czy masz odpowiednie flagi, jesli tak to wywolac ten forward wlasnie.

 

ale jak mowie, badziewne to rozwiazanie.

 

jak masz wiele pluginów co ustawiaja vipa itp to lepiej bedzie przerobic to tak jak mowilem ci w pierwszym poscie;

  • przerobic vipa i svipa aby sprawdzaly caly czas czy gracz ma flage a nie tylko przy wejsciu na serwer
Odpowiedz

  • +
  • -
Dabster - zdjęcie Dabster 05.01.2020

Na serwerze odnośnie VIP i SVIPA posiadam:

-losowanie VIP (tutaj ten forward)

-nocny VIP (tutaj ten forward)

-VIP

-SVIP

-fixvipds.

 

 

 

  • przerobic vipa i svipa aby sprawdzaly caly czas czy gracz ma flage a nie tylko przy wejsciu na serwer

 

No to w jaki sposób mógłbym to przerobić?

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 05.01.2020

najprostrzy sposob na vipy:

 

otwierasz sobie vip.sma

 

szukasz:

g_Vip[id]=true;
g_Vip[id]=false;
bool:g_Vip[33]

i usuwasz

 

 

potem szukasz w pliku wystąpień: g_Vip

 

jak masz np 

g_Vip[id]

 to zamieniasz to na:

(get_user_flags(id) & FLAGA_VIP)

Zwróć uwage na id, zebys nie dal innego niz bylo w g_Vip

 

no i analogicznie jakbys mial

!g_Vip[id]

to zamieniasz na:

!(get_user_flags(id) & FLAGA_VIP)

Rivit (05.01.2020 19:37):
jak przerobisz sobie te vipy to nie potrzebujesz juz w takim losowaniu tych wywolan forwardow co na poczatku uzywales
Odpowiedz

  • +
  • -
Dabster - zdjęcie Dabster 05.01.2020

Po usunięci g_VIP dostaję błędy przy kompilacji.

Tutaj pokaże Ci zwykłego VIP oraz VIPA w którym zmieniałem g_VIP

Załączone pliki

  • Załączony plik  vip.sma   6,89 KB   36 Ilość pobrań
  • Załączony plik  gvip.sma   6,99 KB   23 Ilość pobrań

Użytkownik Dabster edytował ten post 05.01.2020 20:01
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 05.01.2020

kurde źle podmieniasz... mowie ci co i jak

patrz:

if(is_user_alive(i) && g_Vip[i]){

zamieniles na:

if(is_user_alive(i) && (get_user_flags(id) & FLAGA_VIP){

ma byc tak: 

if(is_user_alive(i) && (get_user_flags(i) & FLAGA_VIP)){

mowilem - patrz na id jakie dałeś.

 

 

poza tym, zamiast FLAGA_VIP tam miala byc twoja flaga 

alze zeby nie dawac za kazdym razem mozesz tam pisac FLAGA_VIP, a na samej górze pod ostatnim #include dodać:

#define FLAGA_VIP ADMIN_LEVEL_H

to spowoduje, że wszystkie wystąpienia FLAGA_VIP zostaną zamienione na ADMIN_LEVEL_H, więc bedziesz mogl sterowac z jednego miejsca

 


Rivit (05.01.2020 20:08):
nie zmieniaj na pałe, tylko popatrz co jest w kwadratowych nawiasach. analogicznie do przykladu ktory ci dalem
Odpowiedz

  • +
  • -
Dabster - zdjęcie Dabster 05.01.2020

Zrobiłem poprawiłem ale jedna linijka dalej krzyczy:

Spoiler
 

 

    if(is_user_alive(killer) && g_Vip[killer] && get_user_team(killer) != get_user_team(victim)){ <== ta linijka

Spoiler

Użytkownik Dabster edytował ten post 05.01.2020 20:34
Odpowiedz