Скрипт для генерации случайной строки не работает
Я пытаюсь сгенерировать случайную строку с пробелами, но она не работает:
/rs {
%i=1
%r=$rand(1,50)
%s=$rand(a,z)
while(%i <= %r) {
%i=%i+1
%s=%s $+ $rand(a,z)
if(1 == rand(1,4) %s=%s $+ $chr(32)
}
echo %s
}
Возвращает:
WHILE(%I Unknown command
Есть идеи?
3 ответа
У вас были некоторые проблемы, их всего несколько.
Пробелы: операторы mSL имеют смысл, когда речь идет о пробелах, те, которые вы должны поместить пробелы между
while (expression)
,if (expression)
и даже%i = 1
а также%r = $rand(1,50)
так далее'Скобка: Вы, вероятно, забыли маленькую скобку при условии космического генератора. Должно быть
if (1 == rand(1,4)) %s=%s $+ $chr(32)
$ sign: Вы также забыли поставить этот знак перед этим идентификатором
rand(1,4)
должно быть$rand(1,4)
Фиксированный фрагмент:
rs {
%i = 1
%r = $rand(1,50)
%s = $rand(a,z)
while (%i <= %r) {
%i = %i + 1
%s = %s $+ $rand(a,z)
if (1 == $rand(1,4)) %s = %s $chr(32)
}
echo -ag %s
}
Я взял на себя смелость разработки кода немного по-другому, теперь вы можете использовать его как $identifier
вместо псевдонима, который даст вам дополнительную гибкость и удобство использования.
Обычаи:
echo -ag $rs
(по умолчанию будет 50 символов)echo -ag $rs(20)
(случайная строка длиной 20 символов)set %myName $rs(15)
(сохранит выходную случайную строку в постоянную переменную)
Snippet:
rs {
if (!$1) {
tokenize 32 50
}
var %randString
var %randStringLength = $rand(1, $1)
var %i = 1
while (%i <= %randStringLength) {
%randString = %randString $+ $rand(a, z)
if ($rand(1, 4) == 1) {
%randString = %randString $chr(32)
}
inc %i
}
return %randString
}
Это идет на вкладку ALIAS. использование /SET
воздействовать на переменные в mIRC. Кроме того, ставьте пробелы до и после скобок. Вы также забыли $
до rand
в IF
, Я также должен был удалить $+
в $chr(32)
аффектация, иначе это не сработает. Это сценарий mIRC для вас.:)
/rs {
/set %i 1
/unset %s
/set %r $rand(1,50)
while ( %i <= %r ) {
/set %i %i + 1
/set %s %s $+ $rand(a,z)
if ( 1 == $rand(1,4) ) /set %s %s $chr(32)
}
echo %s
}
Несколько результатов это дает мне:
oe ucrifaktgl qkr fn ydjujclgmc dob hlx rtgnqenhdy f
x gtnr ly qx j
stvusfvfrn y
z sj g aign zx royjbvkcu a t x b
m d
nttyckhwfaufoqjordfecn ib k xsl
adupbnnwoxt q
rzvlytv
pd
o ycj eq
Смарт-предложение, слово, ник, строитель команды:
/regdom
//echo $regword(3,10).text-30
Пример:
gezodifix sebiy podagafiw curetumubih gidaharik tibovifec lacuxujor tumihugob yiwosinok nifabatuv boyeces cadamujez wuz nowafeh webenevip wekegibis herumeyab wefehadal jocavor kasitijor wizepijab givepulec pafucuk cebohes yirujisap xer nucupiyas lugob dogev moy
повеселись
alias regword { noop $regex($prop,/(\d+$)) | var %i-l $regml(1) | while %i-l { var %imp $addtok(%imp,$regdom($1,$2).w,32) | dec %i-l } | return %imp }
alias regdom {
if !$isid {
var %e- echo 5
%e- *** Commands:
%e- *** $!regdom(N,N).w N<N 1-10 From 1 to 10 character random words
%e- : $!regdom(3,10).w $!regdom(3,10)
%e- :*** Command KEY & Result:
%e- : W DUKEPOGEH
%e- : w dukepogeh
%e- : WR Mix
%e- : NR WILIXENIKIZUPOG_74
%e- : nr zeritacen^49
%e- : Mix mixing special characters H^a]y|u^M]A-g´
%e- : *** BONUS
%e- : ipsum regular word $!regword(3,10).text-10
%e- : Letters of words in the range of 3 to 10. 10 words creates Sentence
}
if $isid {
if $1 < $2 && $2 > 40 { echo 4 *** The maximum length value should be 1<40 | return }
if $1 < $2 && $2 <= 40 {
var %l' $r($1,$2),%s' a e i o u ,%a' b c d f g h j k l m n p r s t v x w y z . | :r
var %k' $addtok(%k',$gettok(%a',$r(1,$numtok(%a',32)),32),32)
if $len(%k') < %l' goto r
if $len(%k') >= %l' {
var %s- _.-.|.\.[.].^.´
var %r1 $regsubex($regsubex(%k',/(\W)/ig,$gettok(%s',$r(1,$numtok(%s',32)),32)),/([a-f]|[c-g]|[h-z])/g,$iif($r(0,20) > 15,$upper(\t),\t))
var %r2 $+($gettok(%s-,$r(1,$gettok(%s-,0,46)),46),$r(18,85))
var %r3 $regsubex($regsubex(%k',/(\W)/ig,$gettok(%s',$r(1,$numtok(%s',32)),32)),/([a-f]|[c-g]|[h-z])/g,$iif($r(1,100) > 10, $&
$+($iif($r(0,20) > 15,$upper(\t),\t),$gettok(%s-,$r(1,$gettok(%s-,0,46)),46)),$iif($r(0,20) > 15,$upper(\t),\t)))
if $prop === NR return $+($upper(%r1),%r2)
if $prop === nr return $+($lower(%r1),%r2)
if $prop === W return $upper(%r1)
if $prop === w return $lower(%r1)
if $prop === mix return %r3
if $prop === WR || !$prop { return $iif($r(1,10) > 5,%r1,$+(%r1,%r2)) }
else echo 5 *** incorrect key | return
} }
else echo 5 ***Incorrect or missing parameters..
} }