Zabójstwo z nożna + napis w hud
IntelCom
01.01.2015
Witam,
Jak zrobić by po zabiciu wroga z knife (noża) pokazywała się wszystkim graczom na serwerze wiadomość w hud.
"Nick zabójcy" zabił "Nick ofiary"
Przykład:
Florek poćwiartował Anyes.
Dodałem do funkcji plugin init, event zdarzenia śmierci, ale nie za bardzo wiem co dalej?
Droso
01.01.2015
#include <amxmodx> #define PLUGIN "Zabicie z noza" #define VERSION "1.0" #define AUTHOR "Drozduuuu" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event("DeathMsg", "DeathMsg", "a") } public DeathMsg() { new kid = read_data(1); new vid = read_data(2); new weapon[64]; read_data(4,weapon,63); if(kid == 0 || kid == vid) return; if(containi(weapon, "knife") == -1) // sprawdzamy czy z noza return; if(!is_user_connected(kid) || !is_user_connected(vid)) return; new name_kid[32], name_vid[32]; get_user_name(kid, name_kid, 31) get_user_name(vid, name_vid, 31); set_hudmessage(0, 255, 0, -1.0, 0.3, 0, 6.0, 5.0) show_hudmessage(0, "%s pocwiartowal %s", name_kid, name_vid) }
IntelCom
01.01.2015
1.Dlaczego zmienna new weapon ma wartość zapisaną w tablicy [64]?
new weapon[64];
2.Tej linijki wogóle. nie rozumiem.
read_data(4,weapon,63);
3.Dlaczego ten warunek przyjmuje takie wartości i co oznacza ta nazwa containi?
if(containi(weapon, "knife") == -1)
4.No i ten fragment kodu, nie zbyt jasny dla mnie.
new name_kid[32], name_vid[32]; get_user_name(kid, name_kid, 31) get_user_name(vid, name_vid, 31);
Droso
01.01.2015
1.Dlaczego zmienna new weapon ma wartość zapisaną w tablicy [64]?
Jest to jej rozmiar, to pewnie wiesz, w niej przechowuję nazwę broni, ogólnie pewnie może być krótsza (bo 64 to na pewno starczy, a pewnie i by 32 wystarczyło), bo zawiera nazwę broni bez "weapon_" na początku.
Lista broni: http://amxx.pl/topic...ive-item-speed/(brakuje noża w tej tabelce, ale ma on weapon_knife - ID 29)
2.Tej linijki w ogóle. nie rozumiem.
read_data(4,weapon,63);
4 - oznacza, z którego elementu pobieram informacje.
Ogólnie 4 parametr w Evencie DeathMsg to krótka nazwa broni.
weapon, 63 - pobieram do tej tablicy, którą uprzednio stworzyłem
Czyli tutaj pobieram nazwę broni.
3.Dlaczego ten warunek przyjmuje takie wartości i co oznacza ta nazwa containi?
if(containi(weapon, "knife") == -1)
containi <-
Sprawdzam czy tablica "weapon" zawiera "fraze" "knife", jeżeli nie zawiera (czyli zwraca -1, według jej definicji , to koncze prace)
Jeżeli == -1 czyli wtedy to nie jest ta broń, czyli kończę funkcję przez zwracanie "return"
4.No i ten fragment kodu, nie zbyt jasny dla mnie.
new name_kid[32], name_vid[32]; get_user_name(kid, name_kid, 31) get_user_name(vid, name_vid, 31);
Najpierw tworzę tablice dla zabójcy i ofiary, aby pobrać ich nick (nick ma maksymalnie 32 znaki, dlatego 32).
Później pobieram
Użytkownik Droso edytował ten post 01.01.2015 17:22
IntelCom
01.01.2015
Ten warunek nie jest dla mnie taki do końca zrozumiały, te returny są potrzebne.Co jak by ich nie było?
Droso
01.01.2015
Ten warunek nie jest dla mnie taki do końca zrozumiały, te returny są potrzebne.Co jak by ich nie było?
Ah widzisz te returny, zatrzymują wykonywanie się funkcji dalej.
Czyli jeżeli warunek się spełni i zwrócimy return, to wtedy to co jest po tym warunku już się nie wykona
Więc mamy tablice weapon (rozmiar 64)
Pobieramy nazwe broni z jakiej zabiliśmy w evencie DeathMsg do tablicy weapon.
Robimy warunek + containi czyli sprawdzamy czy tablica zawiera w sobie "knife" jeżeli zawiera zwróci liczbę większa od -1, a jak nie znajdzie, zwróci -1.
Dlatego
jeżeli containi == -1, kończymy funkcje returnem, bo tablica weapon nie zawiera w sobie "knife"
Użytkownik Droso edytował ten post 01.01.2015 19:14
IntelCom
02.01.2015
grankee
02.01.2015
containi <-
Sprawdzam czy tablica "weapon" zawiera "fraze" "knife", jeżeli nie zawiera (czyli zwraca -1, według jej definicji , to koncze prace)
Jeżeli == -1 czyli wtedy to nie jest ta broń, czyli kończę funkcję przez zwracanie "return"
Droso
02.01.2015
Przeczytaj definicje containi
Trochę może się to wydawać ciężkie na początek, więc możesz wrócić do tego później