Chodzi mi o to aby przy pisaniu informacji w say podawało się od razu wartość.
a dokładniej to chciałbym wykonać coś takiego /daj <a tu podajesz wartość tylko cyfry>
np:
/daj 15
Prosiłbym o jakiś przykład.
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Napisano 06.11.2014 23:42
Chodzi mi o to aby przy pisaniu informacji w say podawało się od razu wartość.
a dokładniej to chciałbym wykonać coś takiego /daj <a tu podajesz wartość tylko cyfry>
np:
/daj 15
Prosiłbym o jakiś przykład.
Napisano 07.11.2014 00:13
#include <amxmodx> public plugin_init() { register_plugin("Plugin", "1.0", "Sloenthran"); register_clcmd("say", "Say"); register_clcmd("say_team", "Say"); } public Say(User) { new Arg[64], Arg1[16], Arg2[32]; read_args(Arg, 63); remove_quotes(63); strbreak(Arg, Arg1, 15, Arg2, 31); if(equal(arg1,"/daj")) { JakasKomenda(User, Arg2); } }
W tym przypadku w Arg2 byłoby własnie to Twoje 15
Użytkownik Sloenthran edytował ten post 07.11.2014 00:22
Napisano 07.11.2014 04:10
#include <amxmodx> public plugin_init() { register_plugin("Plugin", "1.0", "Autor"); register_clcmd("say /daj", "Say"); register_clcmd("say_team /daj", "Say"); } public Say(id) { new Arg[8] read_argv(Arg, 7); //tutaj Arg to ta wartość, rób z tym dalej co potrzebujesz }
Użytkownik grankee edytował ten post 07.11.2014 04:10
Napisano 07.11.2014 08:05
Czyli coś takiego zadziała ?
register_clcmd("say", "Say"); register_clcmd("say_team", "Say");
public Say(id, menu, item) { new szIle[5]; read_argv(1, szIle, charsmax(szIle)); remove_quotes(szIle); kwota[id] = str_to_num(szIle); if(equal(szIle,"/daj")) { if(kwota[id] < 1) { ColorChat(id, GREEN, "Niepoprawna wartosc!"); return PLUGIN_CONTINUE; } if(pobierz_kwote(id) < kwota[id]) { ColorChat(id, GREEN, "Nie ma tyle kasy"); kwota[id] = 0; return PLUGIN_CONTINUE; } say_handle(id, menu, item) } return PLUGIN_CONTINUE }
Napisano 08.11.2014 02:44
Drogi Michale z mojego miasta. Najprostszy sposób na sprawdzenie to kompilacja i próba. Dodatkowo nie zabezpieczasz się na wypadek jak ktoś wpisze coś innego niż cyfry w miejscu gdzie ich oczekujesz.
Napisano 08.11.2014 15:04
Drogi Michale z mojego miasta. Najprostszy sposób na sprawdzenie to kompilacja i próba. Dodatkowo nie zabezpieczasz się na wypadek jak ktoś wpisze coś innego niż cyfry w miejscu gdzie ich oczekujesz.
Kompiluje się kompiluje a nie działa.
Dlatego post powyżej zadałem jako pytanie.
Napisano 10.11.2014 18:39
public Say(id, menu, item)//to jest uchwyt funkcji, nie ma tu menu ani item. zmień na: public Say(id) { new szIle[5];//tworzysz tablicę char read_argv(1, szIle, charsmax(szIle))//odczytujesz pierwszy argument czyli to co jest w cudzysłowie lub jeśli nie użyjesz cudzysłowu to do pierwszej spacji remove_quotes(szIle);//usuwasz cudzysłowy, których tutaj nigdy nie będzie, bo są one ogranicznikami odczytywanego argumentu nr.1 natomiast same są pomijane kwota[id] = str_to_num(szIle);//zamieniasz dowolny ciąg znaków na liczbę, w założeniu będzie to "/daj" oczywiście bez cudzysłowów if(equal(szIle,"/daj")) { if(kwota[id] < 1) Jeżeli kod się nie wysypał w momencie zamiany słowa na liczbę i doszedł do tego miejsca to kwota[id] ma wartość 0 po nieudanej próbie przypisania jej zamienionego na liczbę słowa "/daj" { ColorChat(id, GREEN, "Niepoprawna wartosc!"); return PLUGIN_CONTINUE; } if(pobierz_kwote(id) < kwota[id]) { ColorChat(id, GREEN, "Nie ma tyle kasy"); kwota[id] = 0; return PLUGIN_CONTINUE; } say_handle(id, menu, item)//to nie jest menu więc co to tutaj robi? } return PLUGIN_CONTINUE }
0 użytkowników, 0 gości, 0 anonimowych