Kod pluginu na grawitację
Najlepsza odpowiedź Wielkie Jol 23.11.2014 19:15
Tworzymy 33 elementową tablicę, by pomieścić wszystkich w niej graczy
new gravity[33];
Będzie ona przyjmowała wartość prawda/fałsz by sprawdzić, czy gracz już wpisał daną komendę.
Przy wpisywaniu komendy nasz plugin sprawdza, czy ta wartość jest ustawiona na prawdę czy na fałsz, dla każdej osoby osobno ( po to stworzyliśmy tę tablicę ).
Przy połączeniu gracza jest ona zawsze ustawiana na fałsz, jeżeli wcześniej nie przypisaliśmy ( np. przy funkcji client_putinserver ) wartości na true.
Czyli to wygląda tak:
new gravity[33]; // deklaracja 33 elementowej tablicy na pomieszczenie graczy public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /g", "cmdgravity"); // rejestrujemy komende } public cmdgravity(id){ // po wpisaniu komendy odnosnik do funkcji if(!is_user_alive(id)) // zeby miec pewnosc, ze martwy gracz nie bedzie ustawial sobie grawitacji return; // sprawdzamy czy zyje if(!gravity[id]){ // tu sprawdzamy czy gracz o swoim wlasnym id ma wartosc gravity na false set_user_gravity(id, 0.5); // tak ma na falsz - ustawiamy mu grawitacje. gravity[id] = true; // mowimy pluginowi o tym, ze gracz uzyl komendy i ma juz ustawiona grawitacje zmniejszona } else { // w innym wypadku - wartosc bool przyjmuje tylko true / false, czyli teraz jest na true. set_user_gravity(id, 1.0) // ustawiamy normalna grawitacje gravity[id]=false; // dajemy na falsz zmienna, by plugin znow wiedzial, ze zmienil sobie grawitacje na normalna. } }Przejdź do postu
v139
23.11.2014
Cześć, napisałby ktoś taki prosty plugin? Sam się za niego zabrałem, ale za każdym razem błędy
Polegałby na tym, że po wpisaniu /g na czacie, ustawiałoby graczowi używającego tej komendy grawitację na 400, a po ponownym wpisaniu /g ustawiałoby na 800.
Wielkie Jol
23.11.2014
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #include <fun> #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "Wielkie Jol" new gravity[33]; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /g", "cmdgravity"); } public cmdgravity(id){ if(!is_user_alive(id)) return; if(!gravity[id]){ set_user_gravity(id, 0.5); gravity[id] = true; } else { set_user_gravity(id, 1.0) gravity[id]=false; } }
v139
23.11.2014
Dzięki wielkie, a mógłbyś wyjaśnić co robi gravity[id]? Tylko tego nie rozumiem
Najlepsza odpowiedź
Wielkie Jol
23.11.2014
Tworzymy 33 elementową tablicę, by pomieścić wszystkich w niej graczy
new gravity[33];
Będzie ona przyjmowała wartość prawda/fałsz by sprawdzić, czy gracz już wpisał daną komendę.
Przy wpisywaniu komendy nasz plugin sprawdza, czy ta wartość jest ustawiona na prawdę czy na fałsz, dla każdej osoby osobno ( po to stworzyliśmy tę tablicę ).
Przy połączeniu gracza jest ona zawsze ustawiana na fałsz, jeżeli wcześniej nie przypisaliśmy ( np. przy funkcji client_putinserver ) wartości na true.
Czyli to wygląda tak:
new gravity[33]; // deklaracja 33 elementowej tablicy na pomieszczenie graczy public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /g", "cmdgravity"); // rejestrujemy komende } public cmdgravity(id){ // po wpisaniu komendy odnosnik do funkcji if(!is_user_alive(id)) // zeby miec pewnosc, ze martwy gracz nie bedzie ustawial sobie grawitacji return; // sprawdzamy czy zyje if(!gravity[id]){ // tu sprawdzamy czy gracz o swoim wlasnym id ma wartosc gravity na false set_user_gravity(id, 0.5); // tak ma na falsz - ustawiamy mu grawitacje. gravity[id] = true; // mowimy pluginowi o tym, ze gracz uzyl komendy i ma juz ustawiona grawitacje zmniejszona } else { // w innym wypadku - wartosc bool przyjmuje tylko true / false, czyli teraz jest na true. set_user_gravity(id, 1.0) // ustawiamy normalna grawitacje gravity[id]=false; // dajemy na falsz zmienna, by plugin znow wiedzial, ze zmienil sobie grawitacje na normalna. } }
Wielkie Jol
23.11.2014
grankee
24.11.2014
Przy połączeniu gracza jest ona zawsze ustawiana na fałsz
Gdzie ? Nie widzę takiego kodu.
Ponadto jeśli wartość ma być tylko false/true to zmienną tworzymy typu bool, czyli:
new gravity[33];
powinno wyglądać tak:
new bool:gravity[33];
Użytkownik grankee edytował ten post 24.11.2014 00:31