Board ArchivesSite FeaturesActiveworlds SupportHistoric Archives |
o0oiiijoshiiio0o // User Search
o0oiiijoshiiio0o // User SearchencryptionJun 25, 2002, 12:15am
bleh. ive been programming mostly c++, but for anyone doing that that wants
some basic encryption, sorry for the uselessness of this, im tired, but here's the basis of an XOR encryption. because im not gunna put that much effort into it, this will only work on strings of the same length char* XOR(char* buffer, char* key) { char* m_return; for(x = 0; x <= strlen(buffer); x++) { m_return[x] = buffer[x] ^ key[x]; } return m_return; } the way this works is XOR is a bitwise operation where things that are the same return a 0 (false) otherwise a 1 (true) so if you had to name it a function, you might call it IsDifferent(). this way.... 11110000 ^ 00001111 = 11111111 10101010 ^ 01010101 = 11111111 11110000 ^ 10101010 = 01011010 fairly easy to crack though: 11110000 ^ 00001111 ^ 11110000 = 00001111 so, be careful not to use this on things where the user will know what the buffer is equal to, like chat... and a demonstration on how this works for strings is This is the string that we'll encrypt ^ ababababababababababababa is T^a, h^b, i^a, etc.... if you wanted to have varied length keys and buffers, the finished encryption would end up looking like this: This is the string that we'll encrypt. XORKEYXORKEYXORKEYXORK where you just repeat the key to match the number of chars in the buffer. ok, im sorry, i just had to post sometime or id explode from being off of the NGs for so long. enjoy, if it's any use to you whatsoever. and i know this was originally about VB :P -J [View Quote] yab (yet another bot)Oct 10, 2002, 9:03pm
Hey hey hey. Don't oversimplify. C/++ can be made as huge or small as the
owner has in power. VB is a set size. I guarantee you my C version of that would be far smaller... -J [View Quote] something strange about the SDKJun 12, 2002, 10:48am
blah. the sdk is loaded with strange stuff. keep in mind that we have the
bot telegram stuff and it's just not turned on? i believe luke knew how to get access to all that stuff... -J [View Quote] Gap in terrain?Jun 25, 2002, 7:57pm
Is it possible to take out a chunk of the terrain so as to say add a cave
system? -J Gap in terrain?Jun 25, 2002, 8:04pm
Gap in terrain?Jun 25, 2002, 8:05pm
oh hey i get it! i always wondered what that hole button did.
[View Quote] Gap in terrain?Jun 25, 2002, 8:07pm
and... is there any way i can undo a hole? hahahaha.
[View Quote] Multithreading Tutorial (Was to be "Is there a wait command?")Jul 17, 2002, 10:34am
Multithreading is a good thing. I'll give you some code to get you started,
but be warned that my code actually only waits 5 between saying it will wait 5 and saying it has waited 5 - it won't stop its other actions from running. Excersise for the student, not the woke-up-10-minutes-ago teacher ;) #include <windows.h> #include <aw.h> #include <time.h> HANDLE d_ThreadHandle; DWORD d_threadID; bool d_IsRunning; int StartTime; int TimeToFinish; void TimerStarter() { aw_say("Behold, as I wait a marvelous 5 seconds!"); // Check to make sure a handle doesn't already exist. if(d_ThreadHandle) { return; } // Create the thread to run immediately. TimerTimer is the actual procedure d_ThreadHandle = CreateThread(NULL, 0, (unsigned long (_stdcall*)(void*))TimerTimer, 0, 0, (LPDWORD)&d_threadID); if(d_ThreadHandle) { // An error occured. GetError will return a DWORD that you can look up on msdn.microsoft.com } d_IsRunning = true; // StartTime = ??? I still don't have my K&R at my desk, but look up time.h // TimeToFinish = StartTime + <5 seconds. Implement this depending on which // member of the time_t you just used a second ago> } DWORD WINAPI TimerTimer() { // This is the thread procedure function. Think main() for the thread. //int CurrentTime = <make this identical to the StartTime = from before> if(TimeToFinish - CurrentTime <= StartTime) TimeFinish(); return 0; } void TimeFinish() { // Called when our 5 seconds are up aw_say("Tada! 5 seconds!"); d_IsRunning = false; CloseHandle(d_ThreadHandle); // Normally we'd use WaitForSingleObject, but // we know because this function was called, it's done. d_ThreadHandle = NULL; } Now you can call TimeStart() from your main thread, and there'll be 5 seconds between one message and the next (but it won't actually stop the rest of your program). Shamus told me that the SDK isn't thread safe but single instance programs should be fine, so..... keep that in mind. Check d_IsRunning to see if the thread has finished yet... Ask me if you need help with actually understanding the concept of threads... Another important thing is thread safety. To show the necessity... Take, for example, a program that has two functions that create threads: FindObjectInList DeleteEntireList and they're designed to manipulate your linked list (Aww, come on, surely you know how to do that. They're so much fun! ::shrugs:: ask me if not). However, if you call DeleteEntireList, and then FindObjectInList, FindObjectInList may traverse right onto an empty pointer, thus creating a serious problem... Actually, probably a crash of your program. What you need is a Mutex (Mutual Exclusivity Operator, or something like that). Mutex's are like those red-and-green lights on the railroad tracks. They say, ok, now it's safe for one guy to go, now it's safe for the other. As long as you aren't playing with the same toys at the same time, sharing can be fun. I'm not actually going to give you code beyond copy-pasting from something of mine that's only a slight modification on elsewhere's code. I have two functions, one for a blocking mutex and one for a non-blocking mutex. I'm gunna give you the blocking mutex. Works simple: For your valuable data (like your list) you make an instance of the mutex. Whenever you need to access it, you call MutexOn();... If it is off, it's turned on and now you can access the data. If it is turned on, it stops you from going (that's the blocking part) until the other guy calls MutexOff, at which point you're good to access the data. When you're done, you call MutexOff();. class cMonitor { HANDLE d_mutex; public: cMonitor() { // This mutex will help the two threads share their toys. d_mutex = CreateMutex( NULL, false, NULL ); if( d_mutex == NULL ) throw cError( "cMonitor::cMonitor() - Mutex creation failed." ); } virtual ~cMonitor() { if( d_mutex != NULL ) { CloseHandle( d_mutex ); d_mutex = NULL; } } void MutexOn() const { WaitForSingleObject( d_mutex, INFINITE ); // To be safe... } void MutexOff() const { ReleaseMutex( d_mutex ); // To be safe... } } -J [View Quote] Multithreading Tutorial (Was to be "Is there a wait command?")Aug 1, 2002, 8:39pm
Ahahah. Yeah. That was stoooopid of me. Well, it should have a loop that
checks the difference and calls the finisher once there is none... Oops. -J [View Quote] Converting a Co-ord String to API UsableJul 17, 2002, 11:41pm
Ah, all those replies and no working code. It makes me feel wanted. The
function I use is strtok, since it's ANSI C. I believe the header on that one is string.h. Note that I almost ALWAYS use STL string... more versatile... just #include <string> using namespace std; and then you can do string MyString.... but calling my soon-to-be-listed parse function with a string of any other type that I've ever tested with would work fine. This will take a string like "1000 -1000 10 90" and fill in the soon to be shown Coordinates struct. As an excersize (oh God, it must be summer) for the student, I'm not gunna deal with the characters NSEW, and use negative numbers instead. struct Coordinates { int x; int y; int z; int yaw; }; Coordinates *GetCoordinates(string ParseFrom) { char *token; Coordinates ParseReturn; token = strtok(ParseFrom.c_str(), " "); // 1234n 5678e leaves token as // 1234n ParseReturn.x = atoi(token); token = strtok(NULL, " "); // parse between the first two spaces ParseReturn.z = atoi(token); token = strtok(NULL, " "); ParseReturn.y = atoi(token); token = strtok(NULL, " "); ParseReturn.yaw = atoi(token); } So as a quick recap, if you have a string like -1234 5678 9 10 You can do Coordinates MyCoords = GetCoordinates(string); and then access members of the structs. Of course, since I'm dealing with pointers and don't have any coffee on my desk, that's a sign that you want to test and come back during the day hours if this doesn't work. I know how to do it; I've done it before. Just ::yawn:: tired. -J [View Quote] Converting a Co-ord String to API UsableJul 18, 2002, 11:32am
Well, of course, but I always give snippets for my ideas and no one's
mentioned strtok... -J [View Quote] [VB SDK] EventTelegramAug 1, 2002, 8:41pm
Exactly. It's a fully functional (I assume) set of functions and events that
are not enabled, so that it would be easy to support in later builds. At least, that's what I was told, and what I've come to believe, but either way, there's nothing you can do with it at the moment. (Unless you're Luke ;) -J [View Quote] [VB SDK] EventTelegramAug 2, 2002, 10:16am
Well, whether he is or whether he isn't, I happen to have known Luke to have
accessed these functions, eh? -J [View Quote] New to C++, how to make it work with an interface?Aug 9, 2002, 9:32pm
Help me I want to learn how to make botsAug 14, 2002, 12:35pm
do you already program? if so, what language?
in c/++, www.activeworlds.com/sdk in any other language, ask around but i cant help you if not, you'll need to do that first, pick up a good book on a good language (again, i recommend c/++) -J [View Quote] The moment about two of you have been waiting for!Jun 28, 2002, 9:57am
http://www.planet-safira.com/botspot/
My beautiful fractal terrain bot. It's shown its ability to do smooth rolling hills, mountains, ledges, all sorts of stuff. My personal favorite terrain bot, if I may say so myself ;) Sorry that the webpage is as... errr... hideous... as it is. I was just rushing to be ready for Cys ;) -J The moment about two of you have been waiting for!Jun 29, 2002, 11:22am
Is there a wait command?Jul 15, 2002, 9:14am
aw_wait can be used, as is seen in the AW SDK sample program #2 (the DJ).
That's the way I'd advise you to do it, though if you're using MFC, there are others... [View Quote] Is there a wait command?Jul 16, 2002, 9:50am
Not designed for that purpose, but that didn't stop the fine people at AW ;)
Anyways, the alternative is to include time.h - I don't have my K&R on hand (:O) so I can't tell you how to do it, but I know that you get a time_t struct with all sorts of time information.. -J [View Quote] New nifty terrain tool: BMP2TERAug 14, 2002, 1:15am
Not tested at all, so all of you that find bugs... enjoy and contact me.
A simple bot, this takes greyscale windows bitmaps and loads them into the world. Run as follows: BMP2TER 327603 YouWish beta 10000 c:\pictures\greyscale\josh.bmp where it's... cit#, ppw, worldname, max height (this is denormalized, so a white pixel in the bmp image will be equal to maxheight), and file path. Enjoy. -J New nifty terrain tool: BMP2TERAug 16, 2002, 12:56am
::cough:: Alright, my apologies. I had caughed it up in ten minutes and was
proud of myself for my lightning-speed ;) -J [View Quote] Another AW employee gone!Aug 5, 2002, 12:25am
Newburyport... I swear to god I have to bike ride up there sometime. It
would probably mean camping overnight once there and once back, but that's certainly a price to pay for some major AWC-employee nose-honking... isn't that right, Agent? ;) -J [View Quote] Another AW employee gone!Aug 5, 2002, 8:39pm
Please spare me any more of these messages. They're terribly funny to
read... ::cough:: OK, I lied there. But... blah. -J [View Quote] ** So that was going to be, observe his nose? heh. > He will notice > that all of my posts have had the email changed from the very start. > lol > YET it takes him umpteen posts later to notice that fact... That shows > right off where his nose has been.... Up this poor "KIEFFER's" butt. > > Will someone in the NG community do us all a little favor.... Stick > your nose up Goober's Butt.... And then write a news article on how > clean or DIRTY it is. lol > It sould really make for an interesting read. lol ** What's all this laughing for? It's not funny. > =============================================== > "goober king" <gooberking at utn.cjb.net> wrote in news:3D4EA527.5030806 > at utn.cjb.net: > > may > > Another AW employee gone!Aug 5, 2002, 8:43pm
Another AW employee gone!Aug 5, 2002, 8:44pm
Oh my. What am I reading? WHAT IS THIS WORLD COMING TO? WE ARE ALL DOOMED!
DOOMED, I SAY! DOOMED!!!!!! ::cough:: Sorry.... Really folks... -J [View Quote] Another AW employee gone!Aug 5, 2002, 11:31pm
Where might I find that guide of which your sig speaks?
-J ::snip:: > From the Newbie's Guide to the AW NG: > > "Nornny11 - The original wishy-washy man, this one can actually insult you > and compliment you in the same breath, and in the end say absolutely > nothing! What a talent!" ::snip:: Another AW employee gone!Aug 6, 2002, 9:55am
If you prefer it so much, how come such a large chunk of this argument was
made by... you? -J [View Quote] Another AW employee gone!Aug 7, 2002, 8:17pm
|