[ROZWIĄZANE] Sprawdzenie poprawności plugi...
Najlepsza odpowiedź
Mister Silenzo
04.03.2014 21:59
#include <amxmodx> #include <fun> #include <colorchat> public plugin_init() { register_plugin("2 Fragi", "Autorska", "Mister Silenzo"); register_event("DeathMsg", "EventDeath", "a"); // Wydarzenie odpowiedzialne za wyłapywanie zabójstw } public EventDeath() { new kid = read_data(1); // Numer ID osoby, która zabiła new vid = read_data(2); // Numer ID osoby, która ZOSTAŁA zabita new hs = read_data(3); // Zwraca 1 jeżeli zabójstwo było przez headshot, lub 0 gdy było strzałem/kosą w ciało // read_data() służy do odczytywania parametrów wydarzenia, jeżeli użyłem złego słowa do opisania tej funkcji i jej funkcji to proszę o poprawienie mnie xd if(kid == vid || kid == 0) return; // Jeżeli OFIARĄ jest ZABÓJCA (czyt. samobójstwo) lub ZABÓJCA jest zerem (KID jest równe 0 gdy spada się z wysokości, lub admin używa SLAY ;-;) new name[2][32]; // Tablica dwuwymiarowa o dwóch polach z indeksami od 0 do 31 (Jeżeli źle wytłumaczyłem to proszę o poprawienie mnie ;/) if(get_user_weapon(kid) == CSW_KNIFE) { // Jeżeli bronią ZABÓJCY jest NÓŻ get_user_name(kid, name[0], 31); // Pobierz nick ZABÓJCY do pierwszego pola tablicy. get_user_name(vid, name[1], 31); // Pobierz nick OFIARY do drugiego pola tablicy. ColorChat(kid, RED, "^1Zdobywasz dodatkowego fraga za zabicie ^4%s^1 z ^4NOZA^1!", name[1]); // Wyświetl ZABÓJCY informację o dodaniu fraga for(new i = 0; i < get_maxplayers(); i++) { /* Tutaj spotykamy się ze słowem kluczowym "for", które definiuje pętlę. W pętli tworzymy nową zmienną "new i" i przypisujemy jej wartość zero "new i = 0;". Warunek obrotu pętli, czyli "i < get_maxplayers();", co ma się stać po obrocie pętli, czyli "i++".*/ if(!is_user_connected(i) || is_user_bot(i) || is_user_hltv(i) || i == kid) continue; /* I jest numerem ID gracza w tej pętli, więc jeżeli gracz z pętli jest zabójcą, jest niepołączony, jest botem lub hltv to go pomijamy :P Pomijamy zabójcę w pętli, ponieważ dla niego wiadomość została wyświetlona wcześniej, więc nie ma potrzeby pokazywać mu po raz kolejny tego samego, prawda? :P*/ ColorChat(i, RED, "^4%s ^1zdobywa dodatkowego fraga za zabicie ^4%s ^1NOZEM!", name[0], name[1]); } set_user_frags(kid, get_user_frags(kid) + 1); // Dodajemy do obecnej ilości fragów ZABÓJCY jednego fraga. return; // Przerywa dalsze działanie kodu, gdyż gdyby zabójstwo nożem odbyło by się poprzez HS gracz dostał by dwa dodatkowe fragi zamiast jednego. } // Tutaj robimy to samo co powyżej z tą różnicą, że funkcja nie rozpoczyna się od sprawdzenia czy gracz ma nóż, lecz czy zabójstwo odbyło się poprzez HS. if(hs == 1) { get_user_name(kid, name[0], 31); get_user_name(vid, name[1], 31); ColorChat(kid, RED, "^1Zdobywasz dodatkowego fraga za zabicie ^4%s HEADSHOTEM^1!", name[1]); for(new i = 0; i < get_maxplayers(); i++) { if(!is_user_connected(i) || is_user_bot(i) || is_user_hltv(i) || i == kid) continue; ColorChat(i, RED, "^4%s ^1zdobywa dodatkowego fraga za zabicie ^4%s ^1HEADSHOTEM!", name[0], name[1]); } set_user_frags(kid, get_user_frags(kid) + 1); return; } /* Mam nadzieję, że nauczyłeś się czegokolwiek XD Jeżeli czegoś nie wiesz to zapraszam na PW, bądź pisz w temacie, chętnie "pouczę" podstaw, gdyż jak na razie sam znam tylko podstawy :P */ }Proszę, oto kompletny kod z komentarzami, miłej lektury (o ile chcesz się czegoś nauczyć



SKCr0well
04.03.2014
Krótko i na temat, za dużo nie umiem zrobić z pluginami, ale oto co mi się udało zrobić. I teraz prośba do was czy to w ogóle zadziała?
W załączniku daje plik. Już wyjaśniam o co mi w nim chodziło, po pierwsze by za zabójstwo z HS i z noża dodawał dodatkowego fraga a przy tym powiadamiał wszystkich na say'u kto to zrobił.
Jeżeli coś nie tak to proszę o przybliżenie błędu:D
Załączone pliki
Mister Silenzo
04.03.2014
Nie musiałeś używać Hamsandwitcha Wystarczy zwykły DeathMsg, pewnie nie rozumiesz o co chodzi, więc tutaj masz "wydarzenia" w czasie rozgrywki http://amxx.pl/topic/1680-eventy/. DeathMsg jest eventem odpowiedzialnym za śmierć gracza, event przekazuje identyfikator zabijającego i zabitego oraz info o zabójstwie, a mianowicie czy odbyło się przez HS czy nie. Moje pytanie, z jakich broni ma dodawać ten jeden kill?
Najlepsza odpowiedź
Mister Silenzo
04.03.2014
#include <amxmodx> #include <fun> #include <colorchat> public plugin_init() { register_plugin("2 Fragi", "Autorska", "Mister Silenzo"); register_event("DeathMsg", "EventDeath", "a"); // Wydarzenie odpowiedzialne za wyłapywanie zabójstw } public EventDeath() { new kid = read_data(1); // Numer ID osoby, która zabiła new vid = read_data(2); // Numer ID osoby, która ZOSTAŁA zabita new hs = read_data(3); // Zwraca 1 jeżeli zabójstwo było przez headshot, lub 0 gdy było strzałem/kosą w ciało // read_data() służy do odczytywania parametrów wydarzenia, jeżeli użyłem złego słowa do opisania tej funkcji i jej funkcji to proszę o poprawienie mnie xd if(kid == vid || kid == 0) return; // Jeżeli OFIARĄ jest ZABÓJCA (czyt. samobójstwo) lub ZABÓJCA jest zerem (KID jest równe 0 gdy spada się z wysokości, lub admin używa SLAY ;-;) new name[2][32]; // Tablica dwuwymiarowa o dwóch polach z indeksami od 0 do 31 (Jeżeli źle wytłumaczyłem to proszę o poprawienie mnie ;/) if(get_user_weapon(kid) == CSW_KNIFE) { // Jeżeli bronią ZABÓJCY jest NÓŻ get_user_name(kid, name[0], 31); // Pobierz nick ZABÓJCY do pierwszego pola tablicy. get_user_name(vid, name[1], 31); // Pobierz nick OFIARY do drugiego pola tablicy. ColorChat(kid, RED, "^1Zdobywasz dodatkowego fraga za zabicie ^4%s^1 z ^4NOZA^1!", name[1]); // Wyświetl ZABÓJCY informację o dodaniu fraga for(new i = 0; i < get_maxplayers(); i++) { /* Tutaj spotykamy się ze słowem kluczowym "for", które definiuje pętlę. W pętli tworzymy nową zmienną "new i" i przypisujemy jej wartość zero "new i = 0;". Warunek obrotu pętli, czyli "i < get_maxplayers();", co ma się stać po obrocie pętli, czyli "i++".*/ if(!is_user_connected(i) || is_user_bot(i) || is_user_hltv(i) || i == kid) continue; /* I jest numerem ID gracza w tej pętli, więc jeżeli gracz z pętli jest zabójcą, jest niepołączony, jest botem lub hltv to go pomijamy :P Pomijamy zabójcę w pętli, ponieważ dla niego wiadomość została wyświetlona wcześniej, więc nie ma potrzeby pokazywać mu po raz kolejny tego samego, prawda? :P*/ ColorChat(i, RED, "^4%s ^1zdobywa dodatkowego fraga za zabicie ^4%s ^1NOZEM!", name[0], name[1]); } set_user_frags(kid, get_user_frags(kid) + 1); // Dodajemy do obecnej ilości fragów ZABÓJCY jednego fraga. return; // Przerywa dalsze działanie kodu, gdyż gdyby zabójstwo nożem odbyło by się poprzez HS gracz dostał by dwa dodatkowe fragi zamiast jednego. } // Tutaj robimy to samo co powyżej z tą różnicą, że funkcja nie rozpoczyna się od sprawdzenia czy gracz ma nóż, lecz czy zabójstwo odbyło się poprzez HS. if(hs == 1) { get_user_name(kid, name[0], 31); get_user_name(vid, name[1], 31); ColorChat(kid, RED, "^1Zdobywasz dodatkowego fraga za zabicie ^4%s HEADSHOTEM^1!", name[1]); for(new i = 0; i < get_maxplayers(); i++) { if(!is_user_connected(i) || is_user_bot(i) || is_user_hltv(i) || i == kid) continue; ColorChat(i, RED, "^4%s ^1zdobywa dodatkowego fraga za zabicie ^4%s ^1HEADSHOTEM!", name[0], name[1]); } set_user_frags(kid, get_user_frags(kid) + 1); return; } /* Mam nadzieję, że nauczyłeś się czegokolwiek XD Jeżeli czegoś nie wiesz to zapraszam na PW, bądź pisz w temacie, chętnie "pouczę" podstaw, gdyż jak na razie sam znam tylko podstawy :P */ }Proszę, oto kompletny kod z komentarzami, miłej lektury (o ile chcesz się czegoś nauczyć


Użytkownik Mister Silenzo edytował ten post 04.03.2014 22:01
SKCr0well
04.03.2014
Nie spodziewałem się aż takiego wytłumaczenia. Jestem Ci bardzo wdzięczny
Komentarze bardzo mi pomogły to zrozumieć, bez komentarzy bym tego nie zrozumiał.
Jeszcze raz dzięki:P