Скрипт для генерации случайной строки не работает

Я пытаюсь сгенерировать случайную строку с пробелами, но она не работает:

/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.. 
  } }
Другие вопросы по тегам