ID:139805
 
Code:
var
list
BValues = new /list("a"=1,"b"=2,"c"=3,"d"=4,"e"=5,"f"=6,"g"=7,"h"=8,"i"=9,"j"=10,"k"=11,"l"=12,"m"=13,"n"=14,"o"=15,"p"=16,"q"=17,"r"=18,"s"=19,"t"=20,"u"=21,"v"=22,"w"=23,"x"=24,"y"=25,"z"=26,"-"="-")
proc
Encode()
var
Code = input("What do you want to say?") as text
Newtext
Place = 1

while(Place<= lentext(Code))
var/a = copytext(Code,Place,Place+1)
Newtext += BValues[a]
world << BValues[a]
Place++

world << "Newtext: [Newtext]"


mob/verb
Stop()
Encode()


Problem description:
I'm trying to encode text via an a=1 b=2 manner, yet the way I'm pulling from the list isn't working. The world << statement is showing null, which would make it seem as if variable a's value isn't in the list, however I've only been putting in direct letters, so it should be.. Any help would be appreciated!
I'd make use of text2ascii in this case.

proc
Encode(var/sourcetext)
var
texttoconvert = lowertext(sourcetext)
counter = 0
limit = length(sourcetext)
charactertoadd
while(counter++ < limit)
charactertoadd = text2ascii(texttoconvert, counter)
if(charactertoadd in 97 to 122)
. += "[charactertoadd - 96]"

mob
verb
Test()
world << Encode(input("What do you want to say?") as text)
"new /list()" is improper syntax for creating a list. Just use "list()" instead.

Additionally, your encryption does not work here. As you have it, you just get a number out of it, as they are being added numerically (because Newtext isn't a text string, so it'll default to a number when you add a number to it). If you made it a text string, it wouldn't be translatable, as there's no way to distinguish between "z" and "bf", which would both end up as "26".