MEnu do jb extreme i returny
Pawian
11.07.2014
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):
Wpisujemy "zabij", ale plugin nas nie zabije, jeśli jesteśmy w TT??
A teraz:
Plugin nas zabije, nawet jeżeli jesteśmy w TT?
Brzydko wygląda, ale nie wiem jak te spoilery sie dodaje
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
Użytkownik GwynBleidD edytował ten post 11.07.2014 15:16
k4x4z5
11.07.2014
'benio101', dnia 31 Sie 2012 - 23:51, napisał:
Funkcja return bez względu na zwracaną wartość, przerywa wywołanie funkcji.
Innymi słowy,
- 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.Ponadto warto zauważyć, że istotna jest kolejność pluginów w pliku plugins.ini
- 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
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.
Pawian
11.07.2014
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 ;/
GwynBleidD
11.07.2014
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!
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!