Dormouse Newbie
Joined: 29 May 2004 Posts: 3
|
Posted: Sun Aug 07, 2005 11:31 pm
Variable Only Correctly Parses Second Time [Cipher script] |
I have created a simple class for allowing two players to speak in a custom language [cipher] and automatically translate it for them.
Unfortunately, after a player says something with the cipher alias [\ say], the next time they receive a ciphered line, it will display all of the %1 %2 &c parts properly, however for absolutely no reason that I can divine after many hours of debugging, it will reuse the previous value [that is the one stored when they spoke in cipher]. If they receive the exact same line again, however, it will properly decipher, and every time after tha tuntil they say something in cipher again at which point it repeats. Needless to say it is incredibly vexing and completely baffling. Any insight would be greatly appreciated.
Edit: Adding the #VAR cdbuff {%4} line makes it so that every time it will store the variable properl, as opposed to requiring twice the first time as with just the Perl in the trigger, but it's a pretty gross kludge, and doesn't shed any light on the original issue.
The class:
Code: |
#CLASS {Crypt}
#ALIAS \ {
#VARIABLE spmode {%1}
#VARIABLE cebuff {%-2}
;#SAY c @cebuff
#VARIABLE alebuff %subchar( %lower( %left( @cebuff, 1))%right( @cebuff, 1), @alph, @albalph)
;#say a @alebuff
;#VAR alebuff @alebuff
@spmode @gandbracket %item( @alkeys, %random( 1, %numitems( @alkeys))) @alebuff
;#var cdbuff clear
;#var cebuff clear
}
#VAR cebuff {}
#VAR alebuff {}
#VAR alph {abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ} {abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ}
#VAR albalph {ypltavkrezgmshubxncdijfqowYPLTAVKREZGMSHUBXNCDIJFQOW} {ypltavkrezgmshubxncdijfqowYPLTAVKREZGMSHUBXNCDIJFQOW}
#VAR cdbuff {}
#VAR aldbuff {}
#VAR spmode {says}
#VAR spverbs {say|says|whisper|whispers} {say|says|whisper|whispers}
#VAR alkeys {Qux|Zxc|Spqr|Shme|Lrtzolnt|Grlkmextr|Sluh|Boz|Jlikta|Qwghlm|Xuy|Cwmy}
#VAR gandbracket {"&z[&CGand&z]&W"} {"&z[&CGand&z]&W"}
#REGEX {^([a-zA-z0-9\s]+) (?spmode:@spverbs)(,|) '\[Gand\] (?:@alkeys) (?cdbuff:.+)'} {
;#SAY "3" %3 "4" %4
;#SAY @cdbuff
#VARIABLE cdbuff {%4}
#VARIABLE aldbuff %subchar( %upper( %left( @cdbuff, 1))%right( @cdbuff, 1), @albalph, @alph)
;#SAY ald @aldbuff
;#VARIABLE aldbuff @gandbracket @aldbuff
;#say ald2 @aldbuff
;#SAY "1" %1 "2" %2 "d" '@aldbuff'
#SUBSTITUTE {%1 %2 '%ansi(darkgray)~[%ansi(cyan)Gand%ansi(darkgray)~]%ansi(gray,bold) @aldbuff'}
}
#CLASS 0
|
Sample output with debugging on:
Code: |
> \ say This is a fruhstuck
c This is a fruhstuck
a drec ec y vnircdilg
say &z[&CGand&z]&W Xuy drec ec y vnircdilg
You say '[Gand] This is a fruhstuck'
3 , 4 drec ec y vnircdilg
drec ec y vnircdilg
Variable: cdbuff drec ec y vnircdilg
ald This is a fruhstuck
1 You 2 say d 'This is a fruhstuck'
> #cr;#echo Foo says, '~[Gand~] Sluh drec ec y nvnvnvnvnv'
Foo says '[Gand] This is a fruhstuck'
3 , 4 drec ec y nvnvnvnvnv
drec ec y vnircdilg
Variable: cdbuff drec ec y vnircdilg
ald This is a fruhstuck
1 Foo 2 says d 'This is a fruhstuck'
> #cr;#echo Foo says, '~[Gand~] Sluh drec ec y nvnvnvnvnv'
Foo says '[Gand] This is a rfrfrfrfrf'
3 , 4 drec ec y nvnvnvnvnv
drec ec y nvnvnvnvnv
Variable: cdbuff drec ec y nvnvnvnvnv
ald This is a rfrfrfrfrf
1 Foo 2 says d 'This is a rfrfrfrfrf'
|
|
|