Hi ! > I've been looking over the portal codes on the ftp site, they all seem > nice. I just need a direction (or a little help, I'm pretty stuck here) > for something like this : > < cut > > > Hum, seems like I'm trying to make a code that can translate VNUMS into > some kind of word, maybe even depending wether you're a mage or a > cleric. (comes later though). Anyone has an idea on how to do this? (or > has made it already??), I would appreciate every help or suggestions I > can get on this one (as said from starters, I'm pretty stuck) Hmm, why not follow the 'example' in magic.c (?? spell_parser.c, spells.c ?) and just make 5 arrays with each 10 entries, and take each of the numbers from the vnum as a reference in each array... (e.g.:) 0 1 2 3 4 5 6 7 8 9 A1: na ra go ne to ni re ma ti lo A2: s g h w r c v m k l A3: ae ie ou oi an on en ao eo eu A4: v w s v b n m l p r A5: en or in on bur dur min kel kol nor So, if someone casts 'arcane name' in room 3402 (or 03402), he would get A1[0] + A2[3] + A3[4] + A4[0] + A5[2], or 'nawanvin'. Similarily, if someone wanted to get to room 19001, he'd have to cast 'portal' Ralaevor. Oh, you might want to add a 6th array, which would contain a 'checksum substring', so that the smarter players can't simply 'decode' the algorithm. ( ie: for room 03402: ((0 xor 3 xor 4 xor 0 xor 2) mod 10) ) The decoding routine would look something like this: { a = (char *) arcane_room_name; b = (char *) 0; r = (char *) 0; /* room number */ for (i = 1; i < 6; i++) { found = FALSE; for (j = 0; j < 10; j++) { b = A[i][j]; if (!strncmp(a, b, strlen(b)) { found = TRUE; a = a + strlen(b); /* or a = a[strlen(b)] */ room = room * 10 + j; } if (!found) return -1; } return room; } Hope this helps :) Alexander. +-----------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://cspo.queensu.ca/~fletcher/Circle/list_faq.html | +-----------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/18/00 PST