Page 1 of 1

String išskirstymas

Posted: 2011 May 10 14:01
by addinol
Taigi norėčiau sulaukti pagalbos, nes pats nesugebu tai padaryti, kaip padaryti šią say komandą su reason, priežastimi.

Dabar turiu:

!kick nick
pvz: !kick addinol
norėčiau
!kick nick reason
pvz: !kick addinol eik kad nematyciau


Kodas:

Code: Select all

/* Plugin generated by AMXX-Studio */ #include <amxmodx>#include <colorchat> #define PLUGIN "Plugin name"#define VERSION "1.0"#define AUTHOR "ADDiNOL"  public plugin_init() {    register_plugin(PLUGIN, VERSION, AUTHOR)        register_clcmd("say ", "hook_say")} public hook_say(id){    new arg[64];    read_args(arg, charsmax(arg));    remove_quotes(arg);        new cmd[10], rest[54];    parse(arg, cmd, charsmax(cmd), rest, charsmax(rest));    if(get_user_flags(id) & ADMIN_BAN)    {        if(equali(cmd, "!kick") || equali(cmd, "!k"))        {                new player = cmd_target(id, rest, CMDTARGET_OBEY_IMMUNITY);                        new name[35];            get_user_name(player, name, charsmax(name));                        if(player)            {                client_cmd(player, "disconnect;echo ^"kicked^"")            }            else            {                client_print(id, print_chat, "[ INFO ] Player ^"%s^" not found", name)            }            return PLUGIN_HANDLED_MAIN;        }    }    return PLUGIN_CONTINUE;}  
Vienas žmogus pasiųlė naudoti

Code: Select all

strbreak(szArg, szCmd, charsmax(szCmd), szArg, charsmax(szArg))strbreak(szArg, szTarget, charsmax(szTarget), szReason, charsmax(szReason)) 
bet irgi nežinau kaip jį čia dabar naudoti tą strbreak.

Re: String išskirstymas

Posted: 2011 May 10 15:37
by hleV
Taip gal.

Code: Select all

public hook_say(id){     new text[190];    read_args(text, sizeof text - 1);    remove_quotes(text);     if (text[0] != '!')        return PLUGIN_HANDLED;     new cmd[6], name[32], reason[128];    parse(text[1], cmd, sizeof cmd - 1, name, sizeof name - 1, reason, sizeof reason - 1);     if (equali(cmd, "k") || equali(cmd, "kick") && get_user_flags(id) & ADMIN_KICK)        server_cmd("amx_kick ^"%s^" ^"%s^"", name, reason);    else        return PLUGIN_CONTINUE;     return PLUGIN_HANDLED;}

Re: String išskirstymas

Posted: 2011 May 10 15:39
by addinol
o tikslei pamiršau vapše apie parse :D nu dėkui, dabar jau susigaudysiu :)

EDIT: PS. Vietoj PLUGIN_HANDLED; naudok PLUGIN_CONTINUE; juk čia hook eventas :) jei returninsi su handled neparodys message.

-- 2011 Geg 10 17:15 --

dar viena bėda, jog parse paskutinį stringą noriu jog gautų visą iki žinutės pabaigos,
nes pas mane tarkim !kick zaidejas uz cheatinima ir kodinima

ir parodo jam reason tik žodį 'uz', aišku jei dėčiau kabutes veiktų, bet būna kai pamiršta, tai ar įmanoma be kabučių ką nors padaryti ?