String gavimas
Re: String gavimas
strtok dalina stringa i kaire ir i desne nuo pirmo tarpo (nebutinai tarpo), tai pirma dalini i viena name i kita time su reason, o veliau time ir reason atskiri.
Re: String gavimas
nesupratau ;/
tipo
1. Target Time
2. Time Reason
tipo
1. Target Time
2. Time Reason
Code: Select all
strtok(arg, target, charsmax(target), bantime, charsmax(bantime), ' ')strtok(arg, bantime, charsmax(bantime), reason, charsmax(reason), ' ')
- aaarnas
- Vyr. diskusijų administratorius
- Posts: 3891
- Joined: 2010 Aug 31 13:21
- Skype: fiarno
- Contact:
Re: String gavimas
Code: Select all
/* Plugin generated by AMXX-Studio */ #include <amxmodx>#include <amxmisc> #define PLUGIN "Plugin"#define VERSION "1.0"#define AUTHOR "aaarnas" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say", "clmds")} public clmds(id) { static text[250] read_args(text, charsmax(text)) remove_quotes(text) if(text[0] != '!') return PLUGIN_CONTINUE; new lenght = strlen(text) new param, slot, i new cmd[48], nick[40], ttime[10], reason[128] for(i=0; i<lenght; i++) { if(!text[i]) break; if(text[i] == ' ') { param++; slot = i+1; continue;} switch(param) { case 0: { if(i>charsmax(cmd)) return PLUGIN_HANDLED; cmd[i] = text[i] cmd[i+1] = 0 } case 1: { if(i-slot>charsmax(nick)) return PLUGIN_HANDLED; nick[i-slot] = text[i] nick[i-slot+1] = 0 } case 2: { if(i-slot>charsmax(ttime)) return PLUGIN_HANDLED; ttime[i-slot] = text[i] ttime[i-slot+1] = 0 } case 3: break; } } copy(reason, charsmax(reason), text[i]) /*client_print(id, print_console, cmd) client_print(id, print_console, nick) client_print(id, print_console, ttime) client_print(id, print_console, reason)*/ return PLUGIN_HANDLED;}
Palikau CS pasaulį ;/ . Nebepasiekiamas.
Re: String gavimas
kaip jei su tarpais ? Nes !kickaddinol5uzkodinimaircheatinima man netinka ;//
-- 2011 Geg 12 18:15 --
kaip jei su tarpais ? Nes !kickaddinol5uzkodinimaircheatinima man netinka ;//
-- 2011 Geg 12 18:15 --
kaip jei su tarpais ? Nes !kickaddinol5uzkodinimaircheatinima man netinka ;//
Re: String gavimas
Ta prasme "!kick" negali turėt tarpų ir "nick" negali. Jei žaidėjo nick'as bus "a b c", tai nelabai jį išspirsi pagal nick'ą, pagal user ID nebent.
Aš tai siūlyčiau naudot parse() ir viską, kas turi tarpus (nick'ą ar priežastį), rašyt kabutėse, kaip tai daroma konsolės komandomis. Arba naudot anksčiau pateiktus metodus (nick'ui su tarpais vistiek reiks kabučių).
Aš tai siūlyčiau naudot parse() ir viską, kas turi tarpus (nick'ą ar priežastį), rašyt kabutėse, kaip tai daroma konsolės komandomis. Arba naudot anksčiau pateiktus metodus (nick'ui su tarpais vistiek reiks kabučių).
- aaarnas
- Vyr. diskusijų administratorius
- Posts: 3891
- Joined: 2010 Aug 31 13:21
- Skype: fiarno
- Contact:
Re: String gavimas
hleV panašiai ir pasakė.
Ar su parse, ar su mano būdu, vis tiek negalėsi niko parašyti, jei jis susidės iš daugiau nei vieno žodžio.
Ta prasme:
!kick Asta La Vista 160 laminimas
Tada bus gauta taip:
cmd: !kick
Nick: Asta
Laikas: La
Reason: Vista 160 laminimas
Paprastai užtenka ir vieno žodžio iš niko, bet kaip hleV minėjo, jei žaidėjo nikas koks a b c, ar iš viso kokia viena raidė, tai su cmd_target tu niekaip neaptiksi to žaidėjo.
Tad jei labai reikia, galima padaryti, kad reaguotų į kabutes, bet neapsimoka, nes su konsolės komanda būtų žymiai paprasčiau tada.
Ar su parse, ar su mano būdu, vis tiek negalėsi niko parašyti, jei jis susidės iš daugiau nei vieno žodžio.
Ta prasme:
!kick Asta La Vista 160 laminimas
Tada bus gauta taip:
cmd: !kick
Nick: Asta
Laikas: La
Reason: Vista 160 laminimas
Paprastai užtenka ir vieno žodžio iš niko, bet kaip hleV minėjo, jei žaidėjo nikas koks a b c, ar iš viso kokia viena raidė, tai su cmd_target tu niekaip neaptiksi to žaidėjo.
Tad jei labai reikia, galima padaryti, kad reaguotų į kabutes, bet neapsimoka, nes su konsolės komanda būtų žymiai paprasčiau tada.
Palikau CS pasaulį ;/ . Nebepasiekiamas.
Re: String gavimas
ok o kaip su šituo padaryti daug komandų, ta prasme bus pas mane, slay, kick, ban ir dar pora, kiekvienas turės skirtingus parametrus.
!kick player reason
!ban player time reason
!slay player reason
!mute player time reason
ir t.t.
-- 2011 Geg 13 21:54 --
O jei naudočiau kažką panašaus į tai ? ar veiktų ? 
!kick player reason
!ban player time reason
!slay player reason
!mute player time reason
ir t.t.
-- 2011 Geg 13 21:54 --
Code: Select all
static arg[60] read_argv(1, arg, charsmax(arg)) if(arg[0] != '!') return PLUGIN_CONTINUE; if(equal(arg, "!mute", 5)) { new target[20], mutetime[7], reason[40] replace(arg, charsmax(arg), "!mute ", "") strbreak ( arg, target, sizeof target-1, mutetime, sizeof mutetime-1 ) replace(arg, charsmax(arg), target, "") replace(arg, charsmax(arg), mutetime, "") copy(reason, charsmax(reason), arg) client_print(id, print_console, "^nTarget: %s", target) client_print(id, print_console, "Time: %d", mutetime) client_print(id, print_console, "Reason: %s", reason) return PLUGIN_HANDLED_MAIN; } return PLUGIN_CONTINUE;

Who is online
Users browsing this forum: Ahrefs [Bot], Bing [Bot] and 4 guests