PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : problem mit (glob.) VARS


AidanPryde
09.09.2002, 01:16
Hab Heute mal angefangen mich ein wenig mit Mirc Scripts zu beschäftigen, bin aber auf Folgendes Problem gestossen...


[script]

alias -l setfarbe {
echo section1 = %section
echo farbe1 = %farbe testen
if (Check isin %section ) { %farbe = 3 }
echo section2 = %section
echo farbe2 = %farbe testen
if (Das isin %section) { %farbe = 7 }
echo section3 = %section
echo farbe3 = %farbe testen
if (Nicht || So || Leider isin %section ) { %farbe = 10 }
echo section4 = %section
echo farbe4 = %farbe testen
else { %farbe = 4 } }
on ^*:text:*:#:{
;NEW
if ((GANZ isin $nick)) {
var %section = Das
echo section5 = %section
msg #test30 $setfarbe() %farbe test test
}
}

Nun wie stelle ich das an mit der Variable, das sie im alias als auch im event bekannt ist, pack ich sie so wie im code in den event, kann der alias nix mit anfangen und vice versa :(

Thx for Help

Und wo ich grad dabei bin zu fragen, wo bzw. was pack ich in welche files, jetzt bezogen auf ini und mrc files??


Codeq
09.09.2002, 02:03
hi..
es ist egal ob du .ini oder .mrc files benutzt. bei grossen scripten sind .ini files allerdings schneller.

zu deinem source.. ich verstehe nicht so recht was der machen soll :confused:

also variablen in mirc legt man mit "var (lokal)" oder "set (global)" fest. ich würde abstand davon nehmen globale variablen zu benutzen, da sie sogar über die script files hinaus zu erreichen sind. und nach deinem 100ersten script weisst du nicht mehr was für variablen namen du verwendest hast. es kommt bei vernünftiger namensgebeung zwar selten zu fehlern, aber ich vermeide es lieber ganz...
wenn du aliases benutzt, dann ruf sie lieber mit parametern auf

/foo param1 param2 param3...

würde im source so abgefragt werden
alias foo {
echo $1 <-- erster param
echo $2 <-- 2ter param
echo 3-5 <-- 3ter bis 5ter param..
}

usw..


zu deinem ON TEXT event.. wozu hast du das ^ Prefix? willst du den event noch bevor mirc seine interne routine durchgeht für diesen event parsen und ausgeben? beachte aber das dort noch ein paar wenige identifiers noch nicht richtig gesetzt werden konnten...
if (Nicht || So || Leider isin %section ) { %farbe = 10 }<-- urks
setz so viele Klammern wie möglich... macht den parser schneller und es kommt seltener zu fehlern..
if ((Nicht || So || Leider) isin %section ) { } <-- ist einleuchtender glaube ich für alle.. mensch und parser ;)


hoffe das hat dir soweit geholfen...
und verrate mal plz was du vor hast :)

AidanPryde
09.09.2002, 16:33
Jo danke schon mal für alles, hab soweit alles in Griff bekommen, schlag mich jetzt mit nem kleinen Dangle Else Problem herum


if (Mann isin %section ) { %farbe = 3 }
if (Frau isin %section) { %farbe = 7 }
if ((Kind isin %section) || (Sohn isin %section) || (Tochter isin %section)) { %farbe = 10 }
else { %farbe 4 }


Wie muss ich das jetzt nu im Mirc Klammern bzw. was auch immer, damit else ausgeführt wird wenn alle 3 nicht zutreffen und nicht nur die letzte if Anweisung, und hat jemand ne Idee wie man die 3 if anweisung verkürzen kann.
So geht es leider nicht...

((Kind || Sohn || Tochter) isin %section) { }


Thx für die prompte Hile
bye
AidanPryde

Codeq
09.09.2002, 17:25
if (Mann isin %section ) { %farbe = 3 }
elseif (Frau isin %section) { %farbe = 7 }
elseif ((Kind isin %section) || (Sohn isin %section) || (Tochter isin %section)) { %farbe = 10 }
else { %farbe 4 }


so sollte das gehen...

AidanPryde
09.09.2002, 18:28
sollte tut es aber nicht ;(

AidanPryde
09.09.2002, 20:25
so ein ... gehst doch mit else if, meine eigenen kontroll echo anweisungen haben da was durcheinandergebracht das es nicht ging, hmm schlimmer als in der quantentheorie hrhr

naja

thx again bye

Codeq
10.09.2002, 00:38
else if
heisst soviel wie

else { if () { ... } }

Funzt gut solange die if bedingung in EINER Zeile ist. also würd ich immer den echten elseif () command benutzen

und variablen werden IMMER mit var oder set neu deklariert. eine zuweisung ohne diesen command funzt nicht...
also schau deinen source nochmal genau durch.. ;)