[ROZWIĄZANE] Maxymalna liczba wykorzystani...
Najlepsza odpowiedź grankee 12.11.2014 13:01
Jasne, że nie działa, bo Twój wcześniejszy kod jest błędny.
public PoczatekRundy(id)
Tu nie ma id a co za tym idzie nigdy nikt nie dostanie 2 losowań.
W ogóle Twój kod ma sens tylko jeśli runda trwa dłużej niż 5 minut, bo co runda każdy dostaje 2 losowania, ale jedno po drugim nie może nastąpić szybciej niż po 5 minutach więc jeśli runda jest krótsza to i tak w następnej musi czekać jeszcze a dostaje 2 nowe losowania. No, ale nie znam zastosowania więc niech będzie tak jak sobie zrobiłeś
new uzycia[33]; new Float:last_use[33] public plugin_init() { register_plugin("ruletka", "0.1", "autora sobie wpisz") register_clcmd("say /ruletka", "ruletka"); register_logevent("Poczatek_Rundy", 2, "1=Round_Start"); } public Poczatek_Rundy() { for(new a=1;a<33;a++) uzycia[a]=2 return PLUGIN_CONTINUE } public ruletka(id) { if((get_gametime()<last_use[id]+300.0) && (last_use[id]>0.0)) { client_print(id,print_chat,"Ruletka zostanie odblokowana za %.1f sekund.",last_use[id]+300.0-get_gametime()) return PLUGIN_HANDLED } if(uzycia[id] > 0) { if(is_user_alive(id) && !is_user_bot(id))//is_user_bot? masz boty co pisza na czasie /ruletka?:D { uzycia[id]--//dopiero w tym miejscu wiesz, ze jest zywy i ze wykorzysta losowanie last_use[id]=get_gametime() switch(random_num(1, 17)) { case 1..17: { // Coś tam wylosowałeś } } } } return PLUGIN_CONTINUE }Przejdź do postu
Dziobak?
07.11.2014
Potrzebuję komendy która ma maxymalny limit używania tej komendy np "komendy można użyć tylko 2 razy na rundę".
Bo piszę na swój serwer ruletkę i chce aby na rundę można było użyć jej tylko 2 razy /ruletka.
Bo jak każdy użyje tej ruletki to bd za dużo tego wszystkiego
Sam się z tym bawiłem, ale coś mi nie wychodziło więc postanowiłem tutaj napisać.
Wielkie Jol
07.11.2014
Zmienna typu bool, przy połączeniu się gracza ustawiasz na 0, przy każdym wpisaniu komendy zwiększasz o jeden, przy okazji sprawdzasz, czy zmienna przechowująca ilość wpisanych jest równa co najwyżej 2, jeżeli jest równa 2, to blokujesz dalsze wykonanie.
ShuQi 07.11.2014
Zmienna typu bool, przy połączeniu się gracza ustawiasz na 0, przy każdym wpisaniu komendy zwiększasz o jeden, przy okazji sprawdzasz, czy zmienna przechowująca ilość wpisanych jest równa co najwyżej 2, jeżeli jest równa 2, to blokujesz dalsze wykonanie.
Zmienna bool przechowuje tylko 1/2(true/false).
Stwórz zwykłą zmienną,
Po wywołaniu funkcji zwiększ wartość zmiennej o 1:
zmienna ++
Następnie na początku funkcji dodaj
if(zmienna >= 2) return;
Dziobak?
08.11.2014
if(block[id]) { if(g_count >= 2) { block[id] = true; } g_count ++ if(is_user_alive(id) && !is_user_bot(id)) { switch(random_num(1, 17)) { case 1: { // pam pam pam // } } } }
new block[33]; new g_count
Coś takiego w moim przypadku to ma wyglądać ?
Bo nie działa ;/
Chyba że to mam tak zrobić że nowej rundzie
g_count ++
i taki kod
if(g_count >= 2) {
Nie wiem już sam, sprawdzałem tyle opcji i nie działa mi nic ;/
Jak ktoś może to prosiłbym gotowego.
Sloenthran
08.11.2014
#include <amxmodx> new Uzycia[32]; public plugin_init() { register_clcmd("JakasKomenda", "JakasKomenda"); register_event("HLTV", "NowaRunda", "a", "1=0", "2=0"); } public client_authorized() { Uzycia[User] = 0; } public JakasKomenda(User) { if(Uzycia[User] =< 2) { TutajKod; Uzycia[User]++; } } public NowaRunda(User) { Uzycia[User] = 0; }
#include <amxmodx> new Uzycia; public plugin_init() { register_clcmd("JakasKomenda", "JakasKomenda"); register_event("HLTV", "NowaRunda", "a", "1=0", "2=0"); } public JakasKomenda() { if(Uzycia =< 2) { TutajKod; Uzycia++; } } public NowaRunda() { Uzycia = 0; }
Użytkownik Sloenthran edytował ten post 08.11.2014 08:29
Dziobak?
08.11.2014
#include <amxmodx> new Uzycia[32]; public plugin_init() { register_clcmd("JakasKomenda", "JakasKomenda"); register_event("HLTV", "NowaRunda", "a", "1=0", "2=0"); } public client_authorized() { Uzycia[User] = 0; } public JakasKomenda(User) { if(Uzycia[User] =< 2) { TutajKod; Uzycia[User]++; } } public NowaRunda(User) { Uzycia[User] = 0; }#include <amxmodx> new Uzycia; public plugin_init() { register_clcmd("JakasKomenda", "JakasKomenda"); register_event("HLTV", "NowaRunda", "a", "1=0", "2=0"); } public JakasKomenda() { if(Uzycia =< 2) { TutajKod; Uzycia++; } } public NowaRunda() { Uzycia = 0; }
Nie działa
Wielkie Jol
08.11.2014
#include <amxmodx> new Uzycia[32]; public plugin_init() { register_clcmd("JakasKomenda", "JakasKomenda"); register_event("HLTV", "NowaRunda", "a", "1=0", "2=0"); } public client_authorized() { Uzycia[User] = 0; } public JakasKomenda(User) { if(Uzycia[User] =< 2) { TutajKod; Uzycia[User]++; } } public NowaRunda(User) { Uzycia[User] = 0; }#include <amxmodx> new Uzycia; public plugin_init() { register_clcmd("JakasKomenda", "JakasKomenda"); register_event("HLTV", "NowaRunda", "a", "1=0", "2=0"); } public JakasKomenda() { if(Uzycia =< 2) { TutajKod; Uzycia++; } } public NowaRunda() { Uzycia = 0; }
1. Brak tablicy
2. Komu zerujesz uzycia?
3. Gracz będzie mógł użyć komendy 3x.
new uzycia[33]; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /odejmij", "odejmij"); // komenda } public client_connect(id){ uzycia[id] = 2; // dajemy 2 uzycia graczowi } public odejmij(id){ if(uzycia[id] > 0){ // sprawdzamy, czy pozostale uzycia sa wieksze od zera uzycia[id]-- // tak, wieksza - odejmujemy uzycie o 1 //dalszy kod } // gracz ma 0 uzyc, poinformuj go o tym. }
Dziobak?
08.11.2014
new uzycia[33]; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /odejmij", "odejmij"); // komenda } public client_connect(id){ uzycia[id] = 2; // dajemy 2 uzycia graczowi } public odejmij(id){ if(uzycia[id] > 0){ // sprawdzamy, czy pozostale uzycia sa wieksze od zera uzycia[id]-- // tak, wieksza - odejmujemy uzycie o 1 //dalszy kod } // gracz ma 0 uzyc, poinformuj go o tym. }
Dzięki, działa
Ale jak muszę to edytować teraz że jak użyje 2 pierwsze osoby ruletki nie mogły użyć tej ruletki w następnej rundzie ?
No bo z tego kodu powyższego załóżmy już że dodamy event nowa runda i żeby w nowej rundzie dodawało 2 użycia ale żeby osoby które użyły jej w poprzedniej rundzie nie mogły użyć już w następnej tylko dopiero za 300sekund.
Trochę skomplikowane
Przykład:
Zmiana mapy każdy może skorzystać z ruletki no i
Jacek i Norman byli pierwsi i jest BLOKADA aż do nowej rundy nikt nie może skorzystać z niej.
Jacek i Norman nie mogą korzystać z ruletki przez 300 sekund.
Wiktor.? 08.11.2014
Nie lepiej zrobić np co 200 sekund?
Bardzo fajnie i sprawnie
register_clcmd("say /ruletka", "anti");
public anti(id) { if(last_anti[id] + 200.0 > get_gametime()) { client_print(id, print_center, "Ta komenda moze byc uzyta tylko raz na 30 sekund!"); } else { last_anti[id] = floatround(get_gametime()); StripPlayerWeapons(id); show_menu_level_pistol(id); } }
Użytkownik Wiktor.? edytował ten post 08.11.2014 18:07
Dziobak?
08.11.2014
Nie lepiej zrobić np co 200 sekund?
Bardzo fajnie i sprawnie
register_clcmd("say /ruletka", "anti");public anti(id) { if(last_anti[id] + 200.0 > get_gametime()) { client_print(id, print_center, "Ta komenda moze byc uzyta tylko raz na 30 sekund!"); } else { last_anti[id] = floatround(get_gametime()); StripPlayerWeapons(id); show_menu_level_pistol(id); } }
Good Job, szkoda że to nie rozwiązuje dalej mojego problemu.
grankee
10.11.2014
To ja już się pogubiłem. Ma być 2 razy na rundę, ale co dwie rundy? Czy 2 razy na rundę a po tych dwóch razach blokada na 300 sekund?
Dziobak?
10.11.2014
To ja już się pogubiłem. Ma być 2 razy na rundę, ale co dwie rundy? Czy 2 razy na rundę a po tych dwóch razach blokada na 300 sekund?
Zmienia się mapa czy tam nowa runda i są dostępne 2losowania
Gdy gracz wykona losowanie, musi odczekać 300 sekund do następnego.
Czyli w 1rundzie mają być dozwolone maxymalnie 2 losowania + dodanie ograniczniku czasu, czyli coś takiego co kolega wyżej podał tylko to razem jakiś połączyć ale nie wychodzi mi.
No mamy coś takiego
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "Play" new uzycia[33]; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /ruletka", "ruletka"); register_logevent("PoczatekRundy", 2, "1=Round_Start"); } public PoczatekRundy(id) { uzycia[id] = 2; } public ruletka(id) { if(uzycia[id] > 0) { uzycia[id]-- if(is_user_alive(id) && !is_user_bot(id)) { switch(random_num(1, 17)) { case 1..17: { // Coś tam wylosowałeś } } } } }
i do tego potrzebuję dodać ogranicznik czasowy po wylosowaniu czyli gdy uzyjemy ruletki to następnie musimy odczekać 300sekund do nastepnego losowania.
Maxymalnie 2 graczy może losować w 1 rundzie, ale to już jest zrobione w kodzie.
Ktoś jest w stanie pomóc ?;d
grankee
12.11.2014
zmienna globalna
new Float:last_use[33]
... public ruletka(id) { if(get_gametime()<last_use[id]+300.0) { client_print(id,print_chat,"Ruletka zostanie odblokowana za %.1f sekund.",last_use[id]+300.0-get_gametime()) return PLUGIN_HANDLED } if(uzycia[id] > 0) { last_use[id]=get_gametime() ...
Użytkownik grankee edytował ten post 12.11.2014 02:11
Najlepsza odpowiedź
grankee
12.11.2014
Jasne, że nie działa, bo Twój wcześniejszy kod jest błędny.
public PoczatekRundy(id)
Tu nie ma id a co za tym idzie nigdy nikt nie dostanie 2 losowań.
W ogóle Twój kod ma sens tylko jeśli runda trwa dłużej niż 5 minut, bo co runda każdy dostaje 2 losowania, ale jedno po drugim nie może nastąpić szybciej niż po 5 minutach więc jeśli runda jest krótsza to i tak w następnej musi czekać jeszcze a dostaje 2 nowe losowania. No, ale nie znam zastosowania więc niech będzie tak jak sobie zrobiłeś
new uzycia[33]; new Float:last_use[33] public plugin_init() { register_plugin("ruletka", "0.1", "autora sobie wpisz") register_clcmd("say /ruletka", "ruletka"); register_logevent("Poczatek_Rundy", 2, "1=Round_Start"); } public Poczatek_Rundy() { for(new a=1;a<33;a++) uzycia[a]=2 return PLUGIN_CONTINUE } public ruletka(id) { if((get_gametime()<last_use[id]+300.0) && (last_use[id]>0.0)) { client_print(id,print_chat,"Ruletka zostanie odblokowana za %.1f sekund.",last_use[id]+300.0-get_gametime()) return PLUGIN_HANDLED } if(uzycia[id] > 0) { if(is_user_alive(id) && !is_user_bot(id))//is_user_bot? masz boty co pisza na czasie /ruletka?:D { uzycia[id]--//dopiero w tym miejscu wiesz, ze jest zywy i ze wykorzysta losowanie last_use[id]=get_gametime() switch(random_num(1, 17)) { case 1..17: { // Coś tam wylosowałeś } } } } return PLUGIN_CONTINUE }