Toon posts:

[mirc] Var en Identifier $%x etc.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi, ik was bezig een script aan het schrijven. Waarmee je de eerste letter van een woord een andere kleur geeft dan de andere. Het werkt allemaal goed zonder een uitbreiding die ervoor zorgt dat het voor een hele zin werkt. Als ik nu een test doe, krijg ik geen output. Er gaat dus iets fout met $%x. Hoe los ik dit op?

code:
1
2
3
4
5
6
7
8
9
alias finc { 
  set %finctext
  var %x = 1
  :next
  %finctext = %finctext 6 $+ $upper($left($%x,1)) $+ 13 $+ $mid($%x,2,$len($%x)) 
  inc %x
  if ($%x != $null) goto next
  elseif ($%x == $null) say %finctext
}


Hehe let niet op de kleurtjes ;)

  • Alphega
  • Registratie: Oktober 2001
  • Laatst online: 02-05-2025
$%x moet je volgens mij noteren als %x (zonder de $ dus). Dit moet in overal in je script veranderen.

[ Voor 28% gewijzigd door Alphega op 25-02-2004 01:48 ]


Verwijderd

Topicstarter
Hmm dat werkt niet...
$1 = een identifier die je meestuurt als je het commando uitvoert. Als ik nu bijvoorbeeld '/finc test1 test2 test3' zou sturen dan is $1 gelijk aan 'test1' en $3 gelijk aan 'test3'. Alleen dit moet dus variabel worden.
*EDIT: Overigens is dan $2- 'test2 test3'

[ Voor 10% gewijzigd door Verwijderd op 25-02-2004 01:56 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

The [ ] evaluation brackets
If you want greater control over the order of evaluation of identifiers, you can use the [ ] brackets. Identifiers within these brackets will be evaluated first, from left to right. You can nest brackets.

/say % [ $+ [ $1 ] ]

You can also force a previously evaluated identifier to be re-evaluated by using extra [ ] brackets.

/set %x %y
/set %y Hiya!
/echo [ [ %x ] ]
lijkt mij dat je dus iets moet doen in de trand van $[$+ %x]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Alphega
  • Registratie: Oktober 2001
  • Laatst online: 02-05-2025
Zo doet ie wat jij wil volgens mij:
code:
1
2
3
alias finc { 
  echo -a  $+(6,$upper($left($1,1)),13,$mid($1,2,$len($1)))
}


echo -a betkent hij die string zegt in het actieve venster.
echo zonder de -a zegt de string in je status venster.
echo is een text die alleen jij ziet, wil je het in je channel blaten dan kun je idd "say" gebruiken in plaats van "echo -a" maar bij het testen van scripts wordt het in het algemeen gewaardeerd als je het niet steeds in het channel blaat maar gewoon voor jezelf houdt ;)

Het $+ commando voegt alle string, gescheiden door commaas, tussen de ( ) samen tot 1 string. Ik heb de kleuren aparte strings gemaakt zodat je de andere strings makkelijk met de commandoos kan aanmaken.
$1 is de eerste parameter meegeven bij de aanroep van finc
$mid(x,y,z) geeft van string x het deel y tot en met z
$left(x,z) geeft van string x de z-ste letter vanaf links
$upper(x) maakt van x een hoofdletter
$len(x) geeft de lengte van string x

(Zelf gemaakt variabelen geef je in het algemeen aan met %naam en niet met $%naam)

Jouw code:
code:
1
2
3
4
5
6
7
8
9
10
11
alias finc { 
  set %finctext
  var %x = 1
  :next
  %finctext = %finctext 6 $+ $upper($left($%x,1)) $+ 13 $+ $mid($%x,2,$len($%x)) 
  inc %x
  if ($%x != $null) goto next 
^^ while was misschien handiger als je wil loopen totdat iets niet meer geld
  elseif ($%x == $null) say %finctext  
^^ elseif ($%x == $null) is overbodig aangezien het tegenovergestelde is van != $null voldoet gewoon else ook.
}

[ Voor 124% gewijzigd door Alphega op 25-02-2004 02:56 ]


Verwijderd

Topicstarter
Volgens mij snap je het niet helemaal. :X

Het is namelijk de bedoeling dat de input een hele zin is. En vandaar de loop, dat ie elk woord split in de eerste letter en de rest, de eerste letter een hoofdletter wordt en een andere kleur. En de rest normaal blijft. Dit moet ie dus voor elk woord doen, vandaar de $%x probleem.

$[$+ %x] werkt helaas niet :(

Verwijderd

Heb net ff een half uurtje lopen spelen, en met die brackets kwam ik er ook niet uit, maar met $eval lukt 't wel :)

code:
1
2
3
4
/blaat {
var %x = 1
echo $eval($ $+ %x,2)
}


Dit echo'd dus de eerste parameter :)

edit: $eval verder uitgelegd

[ Voor 16% gewijzigd door Verwijderd op 25-02-2004 13:15 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

Bij mij werkt het wel met de brackets hoor

code:
1
2
3
4
5
6
/bla {
  /var %x 1
  /var %y 2
  /echo -a $ [ $+ [ %x ] ]     ; output de waarde van $1
  /echo -a $ [ $+ [ %x ] ] $ [ $+ [ %y ] ]   ; output de waarde van $1, gevolgd door $2
}


al die spaties tussen de brackets zijn overigens wel nodig :{

[ Voor 13% gewijzigd door .oisyn op 25-02-2004 13:29 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
.oisyn schreef op 25 februari 2004 @ 13:27:
Bij mij werkt het wel met de brackets hoor

code:
1
2
3
4
5
6
/bla {
  /var %x 1
  /var %y 2
  /echo -a $ [ $+ [ %x ] ]     ; output de waarde van $1
  /echo -a $ [ $+ [ %x ] ] $ [ $+ [ %y ] ]   ; output de waarde van $1, gevolgd door $2
}


al die spaties tussen de brackets zijn overigens wel nodig :{
Dankje zo werkt het wel idd 8)

  • Alphega
  • Registratie: Oktober 2001
  • Laatst online: 02-05-2025
Hmm mjah ik had het verkeerd begrepen zie ik. Overigens heeft je script volgens mij nog een probleempje: Als je getallen invoerd zet hij het eerste cijfer bij de kleur waardoor je het eerste cijfer van je getal verliest. Dit komt doordat de kleur de eerste 2 cijfers pakt die na het control+k commando staan, dit kun je oplossen door als kleur 06 neer te zetten ipv 6.

Ik wil nu ook het goede script maken ook :P Doet dit toevallig wel wat je beoogde :+
code:
1
2
3
4
5
6
7
8
9
10
alias finc { 
  var %finc.resultaat = $null
  var %finc.teller = 1
  while (%finc.teller <= $0) {
    %finc.woord = $ [ $+ [ %finc.teller ] ]
    %finc.resultaat = $+(%finc.resultaat,$chr(32),06,$upper($left(%finc.woord,1)),13,$mid(%finc.woord,2,$len(%finc.woord)))
    inc %finc.teller 1
  }
  say %finc.resultaat
}

[ Voor 56% gewijzigd door Alphega op 25-02-2004 15:13 ]


Verwijderd

Topicstarter
Hehe idd... goed idee

Bedankt voor jullie hulp iig. Vet ook dat mensen gewoon IRC kunnen scripten, had ik eerst nie verwacht :)
Pagina: 1