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