Czas funkcji.
Ender #
26.01.2014
Kurczę, chciałbym się dowiedzieć jak użyć set_task'a aby no clip działał jakiś czas. Z tamtego poradnika mało rozumiem, coś tam rozumiem, ale za mało
Mam nadzieję, że ktoś mi to wyjaśni na "Chłopski Rozum" a najlepiej jakby mi napisał gotowego taska jako przykład który będzie trwał np. 10sek.
Wielkie Jol
26.01.2014
Robisz drugą funkcję, która będzie służyła jako wyłączenie no-clipa
public wyłącz(id){ if(!is_user_connected(id) return; set_user_noclip(id, 0) }
i w funkcji gdzie jest ustawianie noclipa, robisz set_task(10.0, "wyłącz", id);
Użytkownik Wielkie Jol edytował ten post 26.01.2014 16:27
Ender #
26.01.2014
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <fun> #define PLUGIN "Ruletka" #define VERSION "1.0" #define AUTHOR "Ender #" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /ruletka", "ruletka"); } public ruletka(id) { switch(random_num(1, 2)) { case 1: { client_print (id,print_center, "Masz 1 HP"); set_user_health (id, 1) } case 2: { client_print (id, print_center, "Jestes Duchem!"); set_user_noclip (id, 1) } } }
To jest kod ruletki (skopiowałem tylko do no clipa) i jak miałbym to zmodyfikować ?
Niide
26.01.2014
W taki sposób.
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <fun> #define PLUGIN "Ruletka" #define VERSION "1.0" #define AUTHOR "Ender #" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /ruletka", "ruletka"); } public ruletka(id) { if(is_user_alive(id)) { switch(random_num(1, 2)) { case 1: { client_print(id,print_center, "Masz 1 HP"); set_user_health(id, 1) } case 2: { client_print(id, print_center, "Jestes Duchem!"); set_user_noclip(id, 1) set_task(10.0, "off_no", id); } } } } public off_no(id) { if(is_user_connected(id)) set_user_noclip(id, 0); }
Ender #
26.01.2014
Dzięki wielkie Najlepiej mi się uczyć jak mam to przed oczami
Użytkownik Ender # edytował ten post 26.01.2014 18:43
Wielkie Jol
26.01.2014
Na marginesie dodaj wartość bool, żeby sprawdzać, czy grasz już nie użył ruletki w tej rundzie czy cuś, bo inaczej będzie mógł ją cały czas używać.
Ender #
26.01.2014
O właśnie chciałem o to spytać Jak dokładnie to zrobić? Mógłbyś tak samo dodać do kodu tylko tam razem do tego co dał Niide
To przy okazji żeby nie spamić tematami to się spytam również jak dać wiadomość typu admin_say, ale żeby wyświetlało się tylko 1 użytkownikowi i po środku
Użytkownik Ender # edytował ten post 26.01.2014 18:46
Niide
26.01.2014
Tu to z boolem: Co 300 sekund (5 minut) można używać ruletki).
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <fun> #define PLUGIN "Ruletka" #define VERSION "1.0" #define AUTHOR "Ender #" new bool: uzyl[33]; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /ruletka", "ruletka"); } public client_connect(id) { uzyl[id] = false; } public ruletka(id) { if(is_user_alive(id)) { if(uzyl[id]) { client_print(id, print_chat, "Poczekaj jeszcze troche przed uzyciem ruletki!"); return PLUGIN_HANDLED; } switch(random_num(1, 2)) { case 1: { client_print(id,print_center, "Masz 1 HP"); set_user_health(id, 1) } case 2: { client_print(id, print_center, "Jestes Duchem!"); set_user_noclip(id, 1) set_task(10.0, "off_no", id); } } uzyl[id] = true; set_task(300.0, "uzycie", id); } return PLUGIN_CONTINUE; } public off_no(id) { if(is_user_connected(id)) set_user_noclip(id, 0); } public uzycie(id) { if(is_user_connected(id) && uzyl[id]) uzyl[id] = false; }
Co do komendy, to zawze można użyć admin_psay. Wysyłasz prywatną wiadomość na czacie podanemu graczowi.
Użytkownik Niide edytował ten post 26.01.2014 19:23
Ender #
26.01.2014
A dało by radę taką wiadomość napisać tak jak w print_center?
Fajnie że co 300 sekund bo to nawet wygodniejsze
Niide
26.01.2014
Trzeba to zmienić w admichat.amxx. Trzymaj, w załączniku masz zmienione na print_center.
Załączone pliki
Ender #
26.01.2014
Dzięki, mam nadzieję że nikogo nie denerwuję tym, że ciąglę zmieniam że jednak nie do zamknięcia
Jeszcze chciałbym wiedzieć jak dodać pasek który pokazywał ile no clipa zostało
Użytkownik Ender # edytował ten post 26.01.2014 19:58
Niide
26.01.2014
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <fun> #define PLUGIN "Ruletka" #define VERSION "1.0" #define AUTHOR "Ender #" new bool: uzyl[33]; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /ruletka", "ruletka"); } public client_connect(id) { uzyl[id] = false; } public ruletka(id) { if(is_user_alive(id)) { if(uzyl[id]) { client_print(id, print_chat, "Poczekaj jeszcze troche przed uzyciem ruletki!"); return PLUGIN_HANDLED; } switch(random_num(1, 2)) { case 1: { client_print(id,print_center, "Masz 1 HP"); set_user_health(id, 1) } case 2: { client_print(id, print_center, "Jestes Duchem!"); set_user_noclip(id, 1) set_bartime(id, 10); set_task(10.0, "off_no", id); } } uzyl[id] = true; set_task(300.0, "uzycie", id); } return PLUGIN_CONTINUE; } public off_no(id) { if(is_user_connected(id)) { set_user_noclip(id, 0); set_bartime(id, 0); } } public uzycie(id) { if(is_user_connected(id) && uzyl[id]) uzyl[id] = false; } stock set_bartime(id, czas) { message_begin((id)?MSG_ONE:MSG_ALL, get_user_msgid("BarTime2"), _, id) write_short(czas); write_short(0); message_end(); }
Ender #
26.01.2014
Pomogłeś mi jak nie wiem, jak Ci dam kolejny plus to warna dostanę
A teraz Dzięki wszystkim za pomoc.
Tym razem na pewno do zamknięcia
Amaroq
26.01.2014
#include <amxmodx> #include <fun> #define PLUGIN "Ruletka" #define VERSION "1.0" #define AUTHOR "Ender #" new Uzyl; #define SetUzyl(%1) (Uzyl |= (1<<(%1-1))) #define CheckUzyl(%1) (Uzyl & (1<<(%1-1))) #define RemoveUzyl(%1) (Uzyl &= ~(1<<(%1-1))) public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /ruletka", "ruletka"); } public client_connect(id) { RemoveUzyl(id); } public client_disconnect(id) { RemoveUzyl(id); if(task_exists(id)) remove_task(id); } public ruletka(id) { if(is_user_alive(id)) { if(CheckUzyl(id)) { client_print(id, print_chat, "Poczekaj jeszcze troche przed uzyciem ruletki!"); return PLUGIN_HANDLED; } switch(random(2)) { case 0: { client_print(id,print_center, "Masz 1 HP"); set_user_health(id, 1) } case 1: { client_print(id, print_center, "Jestes Duchem!"); set_user_noclip(id, 1) set_bartime(id, 10); set_task(10.0, "off_no", id); } } SetUzyl(id); set_task(300.0, "uzycie", id); } return PLUGIN_CONTINUE; } public off_no(id) { if(is_user_connected(id)) { set_user_noclip(id, 0); } } public uzycie(id) { if(is_user_connected(id) && CheckUzyl(id)) RemoveUzyl(id) } stock set_bartime(id, czas) { static MsgBarTime; if(!MsgBarTime) MsgBarTime = get_user_msgid("BarTime"); message_begin((id)?MSG_ONE:MSG_ALL, MsgBarTime, _, id) write_short(czas); message_end(); }