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

MEnu do jb extreme i returny


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

#1 Pawian

    Pomocny

  • Użytkownik

Reputacja: -6
Nowy

  • Postów:45
  • Imię:Ink
  • Lokalizacja:NIEWAŻNE
Offline

Napisano 11.07.2014 09:06

Siemka, czy dysponuje ktoś dobrym, nie bugującym menu do jailbreak extreme??
 
Napisałem część swojego menu, wbudowane już w extreme, ale prosiłbym o sprawdzenie fachowym okiem, czy plugin w trakcie działania działał by poprawnie/nic nie zbugował/nie skraszował itp.
 
Przeparszam, że tak, ale nie wiem jak się robi spoiler: http://www.wklej.org/id/1414337/
 
Dodam, że te return 0, kolega mi polecił zrobić. Może mi ktoś wyjaśnić co daje return 1 i return 0?
 
 
2. Jak to w końcu tymi returnami jest?? Czytam i czytam i nic nie pojmuję....
 
Załóżmy, że mamy takie pluginy (w uproszczeniu):
register_clcmd(say zabij, "zabij")
public zabij(id){
    if(cs_get_user_team(id) == CS_TEAM_T){
    return PLUGIN_HANDLED
    user_kill(id)
}
 
Wpisujemy "zabij", ale plugin nas nie zabije, jeśli jesteśmy w TT??
 
A teraz:
register_clcmd(say zabij, "zabij")
public zabij(id){
    if(cs_get_user_team(id) == CS_TEAM_T){
    return PLUGIN_CONTINUE
    user_kill(id)
}
 
Plugin nas zabije, nawet jeżeli jesteśmy w TT?
 
Brzydko wygląda, ale nie wiem jak te spoilery sie dodaje
GwynBleidD (11.07.2014 15:15):
52 posty na forum i tak ciężko znaleźć poradnik o wstawianiu kodu? Jeszcze jakby był gdzieś zakopany, ale jest podklejony w dziale na samej górze... no po prostu wstyd...

https://amxx.pl/topi...-kodu-na-forum/

Proszę na przyszłość się stosować, bo nie będzie taryfy ulgowej. Post poprawiłem.

Użytkownik GwynBleidD edytował ten post 11.07.2014 15:16

  • +
  • -
  • 0

#2 k4x4z5

    Wszechwidzący

  • Użytkownik

Reputacja: 84
Zaawansowany

  • Postów:257
  • Imię:Marcin
  • Lokalizacja:zDaleka
Offline

Napisano 11.07.2014 13:16

 

'benio101', dnia 31 Sie 2012 - 23:51, napisał: snapback.png

Funkcja return bez względu na zwracaną wartość, przerywa wywołanie funkcji.

  • PLUGIN_CONTINUE zwracasz, by po prostu zakończyć działanie funkcji.
    Zwrócenie tej wartości nic ponad przerwaniem wywołania funkcji, nie zmienia.
  • PLUGIN_HANDLED zwracasz, by uniemożliwić dalsze wykonanie danej komendy,
    danego zdarzenia czy innego hooka. Przerwany hook nie objawi się ani w grze
    ani w żadnym z kolejnych wywołań hooka, także w innych pluginach.
  • PLUGIN_HANDLED_MAIN zwracasz, by uniemożliwić dalsze wykonanie danej komendy,
    danego zdarzenia czy innego hooka jedynie w silniku gry podczas, gdy każde kolejne
    wywołanie hooka, także przez inne pluginy, będzie dalej możliwe do wykonania.
Innymi słowy,
  • PLUGIN_CONTINUE nie robi nic,
  • PLUGIN_HANDLED przerywa dalsze działanie i dla silnika i dla innych pluginów
  • PLUGIN_HANDLED_MAIN przerywa działanie tylko dla silnika, nie dla innych pluginów
Ponadto warto zauważyć, że istotna jest kolejność pluginów w pliku plugins.ini
Mając przykładowo takie pluginy:

#include <amxmodx>

public plugin_init(){
register_plugin("no say", "0.1", "test");
register_clcmd("say","say");
}

public say(id){
return PLUGIN_HANDLED;
}

#include <amxmodx>

public plugin_init(){
register_plugin("clean say", "0.1", "test");
register_clcmd("say","say");
}

public say(id){
new Speech[192];
read_args(Speech,191);
remove_quotes(Speech);
if(is_user_alive(id) && equali(Speech, "brzydkie_slowo")){
user_kill(id);
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}

Pierwszy plugin całkowicie blokuje say (PLUGIN_HANDLED), drugi natomiast blokuje jedynie brzydkie słowa (PLUGIN_HANDLED),
karząc śmiercią, pozostałe zaś przepuszczając (pozwalając na ich wypowiedzenie) (PLUGIN_CONTINUE).

Jeśli pierwszy plugin będzie u góry, to najpierw zostanie wysłana wartość PLUGIN_HANDLED, która drugiemu pluginowi
nie pozwoli ukarać śmiercią w przypadku brzydkich słów (wcześniej została zwrócona wartość PLUGIN_HANDLED).

Jeśli pluginy byłyby w odwrotnej kolejności, to brzydkie słowa
zostałyby nagrodzone śmiercią, a cały say i tak zablokowany.

To był przykład na istotę kolejności dodawanych pluginów w plugins.ini w powiązaniu z tematyką wątku.

 

 


  • +
  • -
  • 0

#3 Pawian

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: -6
Nowy

  • Postów:45
  • Imię:Ink
  • Lokalizacja:NIEWAŻNE
Offline

Napisano 11.07.2014 13:19

nie świruj pawiana....sam mi kazałeś return 0 dać. A to co dałeś to czytałem i właśnie też nic nie zrozumiałem ;/


  • +
  • -
  • 0

#4 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 11.07.2014 15:19

return 1 jest dokładnie tym samym, co return PLUGIN_HANDLED, jednak PLUGIN_HANDLED lepiej się czyta i nie trzeba się zastanawiać za co odpowiada.

return 0 to PLUGIN_CONTINUE

return 2 to PLUGIN_HANDLED_MAIN

Co dają odpowiednie returny, jest opisane wyżej. Pamiętaj, że działa to tylko w standardowych forwardach i natywach z AMXX, w fakemeta, hamsandwich i jakichś customowych funkcjach return może działać zupełnie inaczej!
  • +
  • -
  • 0

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark





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

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