←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

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 - zdjęcie 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.

 

Odpowiedz

  • +
  • -
Wielkie Jol - zdjęcie 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; 
}
}
Odpowiedz

  • +
  • -
v139 - zdjęcie v139 23.11.2014

Dzięki wielkie, a mógłbyś wyjaśnić co robi gravity[id]? Tylko tego nie rozumiem

Odpowiedz

  • +
  • -
Najlepsza odpowiedź Wielkie Jol - zdjęcie 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.
}
}
Odpowiedz

  • +
  • -
v139 - zdjęcie v139 23.11.2014

Świetna odpowiedź, wielkie dzięki. Tablica może mieć dowolną nazwę?
Odpowiedz

  • +
  • -
Wielkie Jol - zdjęcie Wielkie Jol 23.11.2014

Jasne ale najlepiej by zmienne nazywaly to do czego sluza, gdyz przy większych projektach łatwo się pogubić
Odpowiedz

  • +
  • -
grankee - zdjęcie 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
Odpowiedz