andon m. coleman // User Search

andon m. coleman // User Search

1  2  |  

Nothing, Inc. needs your help :)

Aug 11, 1999, 8:00am
Please . . . We're testing NEW Web Based Install . . .

We'd very much appriciate it, if you would take the time to go to :
http://members.xoom.com/Nothing_Inc/

or for a DIRECT LINK
http://members.xoom.com/Nothing_Inc/UltraBOT.htm

We need to test this on various configurations, such as Web Browser, OS, etc
.. . .

Please send all errors found to : gizmo98 at earthlink.net

Install will tell you what to do if it finds an error, but if you encounter
one before you even get Install to work, send OS, Web Browser, and a brief
description of your problem

-Thanks in advance from everyone at Nothing, Inc.

P.S. Andon13 is going on vacation for 2 weeks starting tomorrow (8-11-99),
so E-Mails regarding Ultra BOT won't be replied to for about 2 weeks.

Nothing, Inc. needs your help :)

Aug 21, 1999, 5:17am
It's not a Java Applet --- It's ActiveX control, and it has a SIGNED
Digital ID VIA Verisign . . .

Anyway, after careful review (about a hundred or so E-Mails of
UB_INSTALL_ERROR : 1), I realized I have a long way to go on the install
process . . .

However, the main concern now is to write the documentation for the BOT.
Once this is complete, I will offer 2 ways for installation.

NOTE : Web-Install will ALWAYS contain the newest version, as it is MUCH
easier and faster to create my Web-Install package and upload it than it is
to create a standard downloadable one. This goes for the BETA program
aswell. The initial setup for the BETA version will be Web-Install, and the
upgrades will be individual files.

Thanks,
Andon Coleman


Programmer
R&D

Nothing, Inc.

Ultra BOT is NOW Open BETA!

Feb 2, 2000, 3:11am
This is a multi-part message in MIME format.

------=_NextPart_000_001D_01BF6CFB.5C592380
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_001E_01BF6CFB.5C592380"


------=_NextPart_001_001E_01BF6CFB.5C592380
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hello everyone, it is my pleasure to announce that Ultra BOT is now Open =
BETA!

Currently there is no documentation, but I believe that it is simple =
enough to use. If you have any problems trying to use it please contact =
me (Andon13) via Telegrams or E-Mail (gizmo98 at earthlink.net). I will be =
more than willing to help.
Ultra BOT includes an advanced Auto-Update system, so during BETA =
updates will be quite frequent . . . Always be sure to read the Release =
Notes that are displayed after an Update is complete.
There is an Automated Bug Report system in the BOT . . . Currently =
for technical reasons you are only allowed to report 1 bug every time =
you run Ultra BOT.

All you have to do is run Installer.exe in the directory you wish to =
install Ultra BOT, and the rest will be done for you. Could it be any =
easier?


P.S. If you get an error about MFC42.DLL, then be sure to download the =
version from : http://home.earthlink.net/~gizmo98/UltraBOT/MFC42.DLL
This version is included with Visual Studio Service Pack 3, and is newer =
than the version that ships with Win95 / 98, but is the same version =
that ships with Windows 98 Second Edition. It is a rather large file, so =
please be patient . . .


Best Regards,
Andon M. Coleman

Senior Programmer
R&D

Nothing, Inc.



------=_NextPart_001_001E_01BF6CFB.5C592380
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2722.2800" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial>Hello everyone, it is my pleasure to announce =
that Ultra=20
BOT is now Open BETA!</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>&nbsp;&nbsp;&nbsp; Currently there is no =
documentation,=20
but I believe that it is simple enough to use. If you have any problems =
trying=20
to use it please contact me (Andon13) via Telegrams or E-Mail (<A=20
href=3D"mailto:gizmo98 at earthlink.net">gizmo98 at earthlink.net</A>). I will =
be more=20
than willing to help.</FONT></DIV>
<DIV><FONT face=3DArial>&nbsp;&nbsp;&nbsp; Ultra BOT includes an =


advanced=20
Auto-Update system, so during BETA updates will be quite frequent . . . =
Always=20
be sure to read the Release Notes that are displayed after an Update is=20
complete.</FONT></DIV>
<DIV><FONT face=3DArial>&nbsp;&nbsp;&nbsp; There is an Automated Bug =
Report system=20
in the BOT . . . Currently for technical reasons you are only allowed to =
report=20
1 bug every time you run Ultra BOT.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>All you have to do is run Installer.exe in the =
directory=20
you wish to install Ultra BOT, and the rest will be done for you. Could =
it be=20
any easier?</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>P.S. If you get an error about MFC42.DLL, then =
be sure to=20
download the version from : <A=20
href=3D"http://home.earthlink.net/~gizmo98/UltraBOT/MFC42.DLL">http://hom=
e.earthlink.net/~gizmo98/UltraBOT/MFC42.DLL</A></FONT></DIV>
<DIV><FONT face=3DArial>This version is included with Visual Studio =
Service Pack=20
3, and is newer than the version that ships with Win95 / 98, but is the =
same=20
version that ships with Windows 98 Second Edition. It is a rather large =
file, so=20
please be patient . . .</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>Best Regards,</FONT></DIV>
<DIV><FONT face=3DArial>Andon M. Coleman</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>Senior Programmer</FONT></DIV>
<DIV><FONT face=3DArial>R&amp;D</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>Nothing, Inc.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV></BODY></HTML>

------=_NextPart_001_001E_01BF6CFB.5C592380--

------=_NextPart_000_001D_01BF6CFB.5C592380
Content-Type: application/x-msdownload;
name="Installer.exe"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="Installer.exe"

TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA8AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAACj10OM57Yt3+e2Ld/nti3fhak+3+O2Ld9kqiPf5rYt3xiWJ9/sti3fGJYm
3+G2Ld8Ylinf47Yt3+e2LN9Dti3f57Yt3+G2Ld8PqTvf47Yt31+wK9/mti3fUmljaOe2Ld8AAAAA
AAAAAAAAAAAAAAAAUEUAAEwBBAB2jpc4AAAAAAAAAADgAA8BCwEGAAAwAAAAQAAAAAAAACI4AAAA
EAAAAEAAAAAAQAAAEAAAABAAAAQAAAAAAAAABAAAAAAAAAAAgAAAABAAAAAAAAACAAAAAAAQAAAQ
AAAAABAAABAAAAAAAAAQAAAAAAAAAAAAAAC4TAAAeAAAAABwAADYCgAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AEAAALACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAudGV4dAAAAE0tAAAAEAAAADAAAAAQAAAA
AAAAAAAAAAAAAAAgAABgLnJkYXRhAACSEgAAAEAAAAAgAAAAQAAAAAAAAAAAAAAAAAAAQAAAQC5k
YXRhAAAACAkAAABgAAAAEAAAAGAAAAAAAAAAAAAAAAAAAEAAAMAucnNyYwAAANgKAAAAcAAAABAA
AABwAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBRAADWUQAAwlEAAKRRAACOUQAArlEAAAAAAAD6CQCA
0AkAgIYRAIBjFgCAUg8AgEEEAIBPFACAXAkAgBINAIC0FACAthQAgKUKAICyEACA5xgAgLsUAICp
FACAUhYAgFoSAIBLDACAuwwAgHERAIBADACAvgwAgKkLAIAJDACAoAsAgPYOAIDvDwCApgsAgAcM
AIDwDwCADhIAgEgRAICaDgCAMQIAgDkDAIAvAwCA0gkAgPcOAICBAgCAIAMAgBwCAIAbAwCA/QIA
gJEUAIAYEQCA9RIAgIYTAICkFwCA7g8AgO8GAIA3EQCAeRQAgFEJAIArFACA5hgAgAERAICgFACA
8Q4AgD0KAIBBEgCAWAoAgAcIAIDoGACApQ4AgMkTAIC/BgCAjRQAgI4JAIBMCACAnRQAgBMSAIBJ
EQCADQ4AgFwDAIBEAQCAkAQAgHoEAICKEACA5RIAgCYIAIDzAgCA1gEAgEsJAIBRBACAWgMAgDcD
AICAEACAmQIAgPgZAIAhEACAtRAAgMwKAIAZAgCAQhUAgGEBAIAMAQCAHwYAgEcYAIBSCgCAFAwA
gBcCAIANFgCAzxUAgLICAIA3GACAIg8AgPEYAIBXFACAhQEAgHsaAIACCwCAnAMAgKcXAIDwBgCA
qhQAgEoNAICJDgCANwIAgHIOAID+CACAWREAgNYOAIBmEgCAKAYAgAAAAABuUAAAdlAAAIRQAACa
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAE6QAA7EEAA0BFAACYSQAB8EkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AQAAAHZlcnNpb24ubmV3ACVORgANCgAAJU5EAA0KAABJbnN0YWxsZXIgRXJyb3IAVW5hYmxlIHRv
IHJlYWQgaW5zdGFsbCBkYXRhIQAAAABVbHRyYSBCT1QuZXhlAAAAVXBkYXRlciAtLS0gTGF1bmNo
IEVycm9yAAAAAEVSUk9SOiBVbmFibGUgdG8gbGF1bmNoIFVsdHJhIEJPVCEAAGh0dHA6Ly9ob21l
LmVhcnRobGluay5uZXQvfmdpem1vOTgvVWx0cmFCT1QvQkVUQS92ZXJzaW9uLmRhdAAAAABZRVMA
JXMAAF8AAAANCgAAJWQgYnl0ZXMAAAAAJWQgYnl0ZXMAAAAARE9ORQAAAAAlZCBLYgAAACVkIE1i
AAAARE9ORQAAAAAlZCBLYgAAAERPTkUAAAAAJWQgTWIAAABET05FAAAAAA0KJXMgb2YgJXMAAA0K
IEZpbGUgRG9uZSEAAAAlcwAAWUVTAFlFUwAlcwAAJWREAA0KAABSZXRyaWV2aW5nIEZpbGUgU2l6
ZXMgLiAuIC4AJWRMACVkRgAlZFYADQoAAA0KAABJbnN0YWxsaW5nIDogJXMNClN0YXJ0aW5nIGRv
d25sb2FkIC4gLiAuAAAAAE5vIGZpbGVzIHJlbWFpbmluZwAAJWQgZmlsZXMgcmVtYWluaW5nAAAx
IGZpbGUgcmVtYWluaW5nAAAAAFlFUwBSZWFzb24gOiAlcwBFcnJvciBEb3dubG9hZGluZyBGaWxl
AAB2ZXJzaW9uLmRhdAB2ZXJzaW9uLmRhdAB2ZXJzaW9uLm5ldwB2ZXJzaW9uLm5ldwBZRVMAUmVh
c29uIDogJXMARXJyb3IgRG93bmxvYWRpbmcgSW5zdGFsbCBTY3JpcHQAAAAAwEdAAAAAAAAuUEFW
Q0V4Y2VwdGlvbkBAAAAAAAAAAADAR0AAAAAAAC4/QVZ0eXBlX2luZm9AQAABAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

bot request/addition

Jul 30, 1999, 3:56am
This is one NG you really don't belong in, you should keep all of your
complaining in Beta . . . Come to think of it, you should keep it all to
yourself . . .

You need to work on constructive criticism.

-Andon Coleman

What's wrong with this code?

Jul 29, 1999, 5:16pm
#include "stdafx.h"
#include "DlgProxy.h"
#include "mmsystem.h"
#include "SDK BOT.h"
#include "HistoryEdit.h"
#include "winsock2.h"


/* Header files used by AW SDK */
#include "aw.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* Header files used to make the Dialog Boxes work */
#include "Admin.h"
#include "DJ.h"
#include "Ejector.h"
#include "Greeter.h"
#include "New_Version.h"
#include "SDK BOTDlg.h"
#include "UPDATEDlg.h"



#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/* PRE-DEFINED DATA TABLE PART 1 --- The Initializing Stage */


CString chWorld; /* Stores the World the BOT is occupying */

CString chBotName; /* Stores the Bots Name */

CString chPassword; /* Stores the Privilidge password for the Citizen ID */

CString chUniverse; /* Will be used to select the Address and Port of a
Universe to login to */



CString strText; /* Is used for the Status LOG */
CString strBotStatus; /* Is used for the Status LOG */
#define strText strBotStatus /* Used to append the newest status to the rest
of the Status Window TEXT */

#define chIP "205.153.208.40"
int nPort = 5670;
int nWhois;

int nVisitors1 = 0; /* Visitor Counter --- Value Appended to */

char *reply[255]; /* Used in MANY of the bots messages */
char message[100]; /* Used in MANY of the bots messages */

CString chVersion="V. 1.05.700 <Developers Version>"; /* Displayed when
Version is called */

void handle_avatar_add (void);
void handle_chat (void);
void handle_avatar_click (void);
Buildit (int OBJECT_X, int OBJECT_Y, int OBJECT_Z, int OBJECT_YAW, CString
OBJECT_MODEL, CString OBJECT_ACTION, CString OBJECT_DESCRIPTION);
Whisper (int WHICH_AV, CString chWhisper);
void World_Options (void);
void Whois (void);

/* SEVERAL HUNDRED TOP-SECRET LINES CUT OUT =P */

void handle_chat (void)
{

if (msg2.Find("whois") == -1){}

else
{
Whisper (1, "Whois Pending --- Please click on the avatar you wish to
recieve info on . . .");
int nWhois=aw_int (AW_CHAT_SESSION);
aw_event_set (AW_EVENT_AVATAR_CLICK, 0);
aw_event_set (AW_EVENT_AVATAR_CLICK, Whois);

}
}

Whisper (int WHICH_AV, CString chWhisper)
{

if (WHICH_AV == 1)
{
aw_whisper (aw_int (AW_CHAT_SESSION), chWhisper);
}

else
{

if (WHICH_AV == 0)
{
aw_whisper (aw_int (AW_AVATAR_SESSION), chWhisper);
}

else
{
aw_whisper (WHICH_AV, chWhisper);
}
}
return 0;
}

void Whois (void)
{
char msg[255];
int address;
int session_id = aw_int (AW_CLICKED_SESSION);
aw_address(session_id);
address = aw_int (AW_AVATAR_ADDRESS);
sprintf ((char*)reply,"Whois results for %s", aw_string
(AW_CLICKED_NAME));
sprintf (msg, "IP address: %s", inet_ntoa (*(struct in_addr*)&address));
Whisper(nWhois,(char*)reply);
Whisper(nWhois, msg);

/*--------------------------------------------------------------------------
----------------
OTHER WHOIS STUFF WILL GO HERE, AS SOON AS I GET WHISPER TO WORK WITH IP
ADDRESS STUFF . . .
--------------------------------------------------------------------------
----------------*/
aw_event_set (AW_EVENT_AVATAR_CLICK, 0);
aw_event_set (AW_EVENT_AVATAR_CLICK, handle_avatar_click);
}

/* SEVERAL HUNDRED MORE TOP-SECRET LINES CUT OUT =P */



Problem with this code is :
It doesn't whisper to ANYONE after the IP address has been retrieved . . .
If AW_AVATAR_ADDRESS didn't write to :
aw_int (AW_AVATAR_SESSION) --- I'd be able to use :


Whisper(0,(char*)reply);
Whisper(0, msg);


-Thanks in advance,
Andon Coleman

Andon13
C.E.O. of Nothing, Inc.

What's wrong with this code?

Jul 29, 1999, 10:10pm
Calling AW_AVATAR_ADDRESS changes the value for AW_AVATAR_SESSION . . .

In other words, when I try to whisper to the person who did the clicking, it
whispers to the person who's IP address was being looked up . . .

-Andon Coleman

What's wrong with this code?

Jul 29, 1999, 10:34pm
Ahh, sweet, it works . . . I can't believe I overlooked that so many times .
.. .



And thanks for the advice on the Char . . . The program builds much faster
now and the source code is a LITTLE bit smaller : )

-Andon Coleman

Mysterious other DLL (not aw.dll)

Jul 30, 1999, 7:02pm
If you ever get a chance, you ought to get Visual C++ : )

You can get V. 5.0 real cheap, and the Introductory Edition of Visual C++ 6
is like $30. . . The best part of Visual C++, is the extensive SUPPORT for
Windows, and the extensive documentation.

-Andon Coleman

[delphi]teleporting

Jul 31, 1999, 9:38pm
Actually, you can do this :

Remove the bot from the world, and replace it in the world at the NEW
co-ordinates . . . It works for me with my BOT (Just have to temporarily
de-activate Avatar_ADD).

-Andon Coleman

[View Quote]

Getting Co-Ordinates based on Session ID?

Aug 3, 1999, 6:53pm
if (msg2.Find("follow me") >=0)
{
/* if (msg2.Find("follow me") >=0) <FIGURE OUT HOW TO
RETRIEVE SESSION CO-ORDS> */
}

That's what I have so far =P

Can you help me here?

Thanks,
Andon Coleman

Getting Co-Ordinates based on Session ID?

Aug 4, 1999, 5:36pm
That would seem to take up extra memory, and an unpredicted overflow in
the size of the array would cause an access violation error . . .

Shouldn't there be a way to retrieve them by calling an SDK function,
Roland? How does the AW Client do it?

-Andon Coleman

Got Registry access working, really stupid reason it wasn't working =P

Aug 4, 1999, 5:31pm
Primer on "_T" written at the bottom . . .

It wasn't working because I had these lines under the InitInstance OLE
FAILURE CHECK . . .

EXAMPLE OF HOW DO DO THIS :

// Use this line under InitInstance()
SetRegistryKey (_T ("Company Name Here"));

// These lines wherever you need them . . .

CWinApp::WriteProfileInt (_T ("Sub Key Name Here"),_T ("Sample Data"), INT
GOES HERE);

CWinApp::WriteProfileString (_T ("Sub Key Name Here"),_T ("Sample Data)",_T
("Sample VALUE"));


That works great, and it's EASIBLY convertable between Win98 and NT . .
.. That's why the _T is there, to make the string neutral, so that it can be
made into Unicode if you decide to port the program to NT or Win2K

Reason this may come in handy : Windows NT, and any versions of Windows
newer than 98 use an international standard character set called Unicode (16
Bit), whereas Windows 98 and previous version use ANSI (8 Bit) . . . Anyway,
Windows NT and Windows 2000+ are backward compatible with ANSI (They would
HAVE TO BE!!!), but it causes a performance hit while converting from ANSI
to Unicode.

Anyway, I'm told that sometimes you run into problems when writing to
the System Registry in NT using ANSI . . .

-Thanks,
Andon Coleman

Looking for some help with my Visual C++ Project . . . Thanks in advance.

Aug 8, 1999, 10:47pm
Okay, here's a list of the KNOWN problems ( I'm sure there's a ton more that
I don't even know about =) ).

1.] When the project is built in Release instead of Debug, the damn thing
doesn't respond to chat messages.

2.] Ever since adding my splash screen hitting 'esc' or [x] causes a crash
(NO BIG DEAL, since the intended action was to close the program anyway, but
this is nonetheless a bug).

3.] Am unable to get : GetProfile . . . To actually work outside of
SDKBOT.cpp

I would appriciate it if some nice person who I can trust with my ENTIRE
VC++ Project would take the time to help out a rookie, thanks . . . I really
don't know what I can offer in return, but I'm sure I can work something
out.

Thanks,
Andon Coleman

Looking for some help with my Visual C++ Project . . . Thanks in advance.

Aug 10, 1999, 1:20am
Hehehe, I fixed all the problems my self --- I don't know how, but I did it
=P

-Andon Coleman

[View Quote]

BOT Universe Logins using IP address ( Some Problems it may cause ).

Aug 8, 1999, 11:42pm
As stated in Roland's announcement that the Universe Server
(auth.activeworlds.com) will be changing IP addresses, this can present
unforeseen problems . . . I discovered one in my BOT's login code.


The problem with using IP addresses for logging into a universe as opposed
to a DNS is this :

If the IP address of the Universe Server changes, and the IP address for the
Universe was hard set into the source code, people using your bot are all
going to experience login problems when the IP address changes.



My thoughts on working around this problem were originally to add a second
entry box in my Universe Login settings for a DNS value, but then I got to
thinking . . . This is what I came up with :

Have the BOT Program query a Domain Name Server to find the
corresponding DNS for the entered IP (if one exists). If this is done at
the time that the person enters the IP address into the BOT settings and
stored in the registry as an entry called "FAIL- PROOF" or whatever
floats your boat, you'd then have a 2nd resource to fall back on . . .

If an attempt to connect to the Universe Server : 127.0.0.1:0001 returns a
callback other than 0, have it re-attempt a login using the previously
stored value for 127.0.0.1.
Let's call the DOMAIN NAME for 127.0.0.1 LocalHost (since that's
essentially what it is =P).
Now, let's say for some imaginary reason LocalHost has been moved from
127.0.0.1 to : 192.168.0.1
Had we not stored the Domain Name for 127.0.0.1, the BOT would never have
known that the new server is running on 192.168.0.1:0001
Furthermore, the process could be improved even more to change the IP
address in the settings from 127.0.0.1 to 192.168.0.1 automatically.
This in turn fixes any problems associated with my concept to create a
Network Efficient BOT.
Since it doesn't call upon your local Domain Name Server every time you
start up the BOT, you are saving resources on the DNS for more useful things
.. . . Like updating itself =P

-Andon Coleman

BOT Universe Logins using IP address ( Some Problems it may cause ).

Aug 10, 1999, 1:20am
I sense you don't understand the point of that . . .
[View Quote]

RC303?

Aug 9, 1999, 10:36pm
Obviously, you were using too many bytes =P
Try reducing the size of your data =)

FYI : data type sizes :

char : 8 bits
short int : 8 bits
int : 16 bits
long int : 32 bits
float : 32 bits
double : 64 bits
long double : 80 bits

That's about all I can say, cause that's about all you can do.

[View Quote]

Nothing, Inc. needs your help :)

Aug 11, 1999, 8:00am
Please . . . We're testing NEW Web Based Install . . .

We'd very much appriciate it, if you would take the time to go to :
http://members.xoom.com/Nothing_Inc/

or for a DIRECT LINK
http://members.xoom.com/Nothing_Inc/UltraBOT.htm

We need to test this on various configurations, such as Web Browser, OS, etc
.. . .

Please send all errors found to : gizmo98 at earthlink.net

Install will tell you what to do if it finds an error, but if you encounter
one before you even get Install to work, send OS, Web Browser, and a brief
description of your problem

-Thanks in advance from everyone at Nothing, Inc.

P.S. Andon13 is going on vacation for 2 weeks starting tomorrow (8-11-99),
so E-Mails regarding Ultra BOT won't be replied to for about 2 weeks.

Nothing, Inc. needs your help :)

Aug 21, 1999, 5:17am
It's not a Java Applet --- It's ActiveX control, and it has a SIGNED
Digital ID VIA Verisign . . .

Anyway, after careful review (about a hundred or so E-Mails of
UB_INSTALL_ERROR : 1), I realized I have a long way to go on the install
process . . .

However, the main concern now is to write the documentation for the BOT.
Once this is complete, I will offer 2 ways for installation.

NOTE : Web-Install will ALWAYS contain the newest version, as it is MUCH
easier and faster to create my Web-Install package and upload it than it is
to create a standard downloadable one. This goes for the BETA program
aswell. The initial setup for the BETA version will be Web-Install, and the
upgrades will be individual files.

Thanks,
Andon Coleman


Programmer
R&D

Nothing, Inc.

.hlp and .html . . . Are they easily convertable?

Aug 21, 1999, 6:32pm
I'm starting work on my documentation for my BOT, and was wondering if I
should do the base of it in HTML, or if I should write it in HLP. Any
comments are welcome.

Thanks,
Andon Coleman


Programmer
R&D

Nothing, Inc.

Have I lost my mind, or is this Error IMPOSSIBLE to Trace?

Aug 29, 1999, 9:49pm
This is a multi-part message in MIME format.

------=_NextPart_000_001A_01BEF257.8EFEEAA0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Okay . . . I run this code, and . . . The second I click Login, it =
returns :

LOGIN FAILURE
Reason: RC_NAME_TOO_SHORT
=20
Settings attempted :=20
=20
World : AWBot
Bot Name : Ultra BOT
Citizen Number : 68992
Privilege Password : *********

RELEVANT CODE:
----------------------------------------------------

void CUltraBOTDlg::OnOK() =20
{
UpdateData(TRUE);
PlaySound ("Audio/Logstart.wav",NULL,SND_ASYNC);

m_StatusLog.DoClear();

if (Login() =3D=3D TRUE)
{
aw_event_set (AW_EVENT_AVATAR_ADD, handle_avatar_add);
aw_event_set (AW_EVENT_AVATAR_CHANGE, handle_avatar_change);
aw_event_set (AW_EVENT_AVATAR_DELETE, handle_avatar_delete);
aw_event_set (AW_EVENT_CHAT, handle_chat);
aw_event_set (AW_EVENT_AVATAR_CLICK, handle_avatar_click);

sprintf(message,"\nStatus for :\n[%s]",chBotName);
m_BalloonToolTip.AddTool(GetDlgItem(IDC_Status),message, =
RGB(255,0,25));=20
}
}





bool Login (void)
{
int rc;

aw_destroy();
Whois =3D FALSE;

sprintf(reply2," ");
m_StatusLog.Append (status);
m_StatusLog.Append (status);
m_StatusLog.Append (status);
sprintf(reply2,"Attempting to Login to :");
m_StatusLog.Append (status);
sprintf(reply2,"The Universe %s using SDK Build %d", chUniverse, =
AW_BUILD);
m_StatusLog.Append (status);


if (rc =3D aw_init (AW_BUILD))
Login_Error (rc);

else
{
aw_int_set (AW_LOGIN_OWNER, (nCitnum));
aw_string_set (AW_LOGIN_PRIVILEGE_PASSWORD, chPassword);
sprintf (message,"Ultra Bot %s",chVersion);
aw_string_set (AW_LOGIN_APPLICATION, message);
aw_string_set (AW_LOGIN_NAME, chBotName);
aw_int_set (AW_MY_X, 0);
aw_int_set (AW_MY_Y, 0);
aw_int_set (AW_MY_Z, 0);
aw_int_set (AW_MY_YAW, 0);
aw_int_set (AW_MY_TYPE, 253);
}

if (rc =3D aw_create (chIP,nPort,0))
Login_Error (rc);
=20
else if (rc =3D aw_login ())
Login_Error (rc);
=20
else if (rc =3D aw_enter (chWorld,0))
Login_Error (rc);
=20
else if (rc =3D aw_state_change ())
Login_Error (rc);

if (rc =3D=3D 0)
return TRUE;
=20
else
return FALSE;
}





void Login_Error (int m_nError)
{


switch(m_nError)
{
case 1:
sprintf (message,"Citizen Number Has Expired");
break;
case 3:
sprintf (message,"Citizen Number Invalid");
break;
case 4:
sprintf (message,"Message Too Long");
break;
case 5:
sprintf (message,"Passwords Cannot Contain Spaces");
break;
case 6:
sprintf (message,"Password Is Too Long");
break;
case 7:
sprintf (message,"Password Is Too Short");
break;
case 8:
sprintf (message,"Range Too Large");
break;
case 9:
sprintf (message,"Range Too Short");
break;
case 10:
sprintf (message,"Too Many Users");
break;
case 11:
sprintf (message,"Too Few Users");
break;
case 12:
sprintf (message,"RC_LICENSE_WORLD_CONTAINS_SPACE");
break;
case 13:
sprintf (message,"Invalid Password");
break;
case 14:
sprintf (message,"RC_UNABLE_TO_MAIL_BACK_NUMBER");
break;
case 15:
sprintf (message,"RC_LICENSE_WORLD_TOO_SHORT");
break;
case 16:
sprintf (message,"RC_LICENSE_WORLD_TOO_LONG");
break;
case 17:
sprintf (message,"RC_SERVER_OUT_OF_MEMORY");
break;
case 27:
sprintf (message,"World Is Not Running");
break;
case 31:
sprintf (message,"RC_NOT_LOGGED_IN");
break;
case 32:
sprintf (message,"RC_UNAUTHORIZED");
break;
case 33:
sprintf (message,"RC_ALREADY_LICENSED");
break;
case 34:
sprintf (message,"RC_NO_SUCH_LICENSE");
break;
case 39:
sprintf (message,"RC_IDENTITY_ALREADY_IN_USE");
break;
case 40:
sprintf (message,"RC_UNABLE_TO_REPORT_LOCATION");
break;
case 41:
sprintf (message,"RC_INVALID_EMAIL");=20
break;
case 42:
sprintf (message,"Citizen Number Doesn't Exist");
break;
case 43:
sprintf (message,"Invalid Password");
break;
case 58:
sprintf (message,"Upgrade Required");
break;
case 59:
sprintf (message,"BOT Limit Reached");
break;
case 64:
sprintf (message,"RC_LICENSE_STARTS_WITH_NUMBER");
break;
case 66:
sprintf (message,"RC_NO_SUCH_EJECTION");
break;
case 67:
sprintf (message,"No Such Session Number");
break;
case 100:
sprintf (message,"RC_EMAIL_CONTAINS_INVALID_CHAR");
break;
case 101:
sprintf (message,"RC_EMAIL_ENDS_WITH_BLANK");
break;
case 102:
sprintf (message,"RC_EMAIL_MISSING_DOT");
break;
case 103:
sprintf (message,"RC_EMAIL_MISSING_AT");
break;
case 104:
sprintf (message,"RC_EMAIL_STARTS_WITH_BLANK");
break;
case 105:
sprintf (message,"RC_EMAIL_TOO_LONG");
break;
case 106:
sprintf (message,"RC_EMAIL_TOO_SHORT");
break;
case 107:
sprintf (message,"RC_NAME_ALREADY_USED");
break;
case 108:
sprintf (message,"RC_NAME_CONTAINS_INVALID_CHAR");
break;
case 109:
sprintf (message,"RC_NAME_CONTAINS_INVALID_BLANK");
break;
case 110:
sprintf (message,"RC_NAME_DOESNT_EXIST");
break;
case 111:
sprintf (message,"RC_NAME_ENDS_WITH_BLANK");
break;
case 112:
sprintf (message,"RC_NAME_TOO_LONG");
break;
case 113:
sprintf (message,"RC_NAME_TOO_SHORT");
break;
case 114:
sprintf (message,"RC_NAME_UNUSED");
break;
case 115:
sprintf (message,"RC_PASSWORD_TOO_LONG");
break;
case 116:
sprintf (message,"RC_PASSWORD_TOO_SHORT");
break;
case 117:
sprintf (message,"RC_PASSWORD_IS_WRONG");
break;
case 126:
sprintf (message,"RC_NUMBER_ALREADY_USED");
break;
case 127:
sprintf (message,"RC_NUMBER_OUT_OF_RANGE");
break;
case 128:
sprintf (message,"Privilege Password Too Short");
break;
case 203:
sprintf (message,"RC_NOT_CHANGE_OWNER");
break;
case 204:
sprintf (message,"RC_CANT_FIND_OLD_ELEMENT");
break;
case 211:
sprintf (message,"RC_CANT_CHANGE_OWNER");
break;
case 216:
sprintf (message,"RC_CANT_BUILD_HERE");
break;
case 232:
sprintf (message,"RC_NOT_ALLOWED");
break;
case 300:
sprintf (message,"RC_ENCROACHES");
break;
case 301:
sprintf (message,"RC_NO_SUCH_OBJECT");
break;
case 302:
sprintf (message,"RC_NOT_DELETE_OWNER");
break;
case 303:
sprintf (message,"RC_TOO_MANY_BYTES");
break;
case 306:
sprintf (message,"RC_UNREGISTERED_OBJECT");
break;
case 308:
sprintf (message,"RC_ELEMENT_ALREADY_EXISTS");
break;
case 311:
sprintf (message,"RC_NO_BUILD_RIGHTS");
break;
case 313:
sprintf (message,"Object Outside Of World Property Limits");
break;
case 314:
sprintf (message,"RC_RESTRICTED_OBJECT");
break;
case 400:
sprintf (message,"RC_OUT_OF_MEMORY");
break;
case 401:
sprintf (message,"RC_NOT_YET");
break;
case 402:
sprintf (message,"TIMEOUT");
break;
case 403:
sprintf (message,"RC_NULL_POINTER");
break;
case 404:
sprintf (message,"Unable To Contact Universe");
break;
case 405:
sprintf (message,"Unable To Contact World");
break;
case 406:
sprintf (message,"Invalid World Name");
break;
case 415:
sprintf (message,"RC_SEND_FAILED");
break;
case 416:
sprintf (message,"RC_RECEIVE_FAILED");
break;
case 421:
sprintf (message,"RC_STREAM_EMPTY");
break;
case 422:
sprintf (message,"RC_STREAM_MESSAGE_TOO_LONG");
break;
case 423:
sprintf (message,"World Name Too Long");
break;
case 426:
sprintf (message,"Message Too Long");
break;
case 429:
sprintf (message,"Unable To Connect to %s : %d",chIP,nPort);
break;
case 439:
sprintf (message,"No Connection");
break;
case 442:
sprintf (message,"Unable To Initialize Network");
break;
case 443:
sprintf (message,"Incorrect_Message_Length");
break;
case 444:
sprintf (message,"RC_NOT_INITIALIZED");
break;
case 445:
sprintf (message,"No BOT Instance Exists.");
break;
case 446:
sprintf (message,"RC_OUT_BUFFER_FULL");
break;
case 447:
sprintf (message,"RC_INVALID_CALLBACK");
break;
case 448:
sprintf (message,"RC_INVALID_ATTRIBUTE");
break;
case 449:
sprintf (message,"RC_TYPE_MISMATCH");
break;
case 450:
sprintf (message,"RC_STRING_TOO_LONG");
break;
case 451:
sprintf (message,"RC_READ_ONLY");
break;
case 453:
sprintf (message,"RC_INVALID_INSTANCE");
break;
case 454:
sprintf (message,"RC_VERSION_MISMATCH");
break;
case 461:
sprintf (message,"RC_IN_BUFFER_FULL");
break;
case 463:
sprintf (message,"RC_PROTOCOL_ERROR");
break;
case 464:
sprintf (message,"RC_QUERY_IN_PROGRESS");
break;
case 466:
sprintf (message,"RC_EJECTED");
break;
case 467:
sprintf (message,"RC_NOT_WELCOME");
break;
case 471:
sprintf (message,"RC_CONNECTION_LOST");
break;
case 474:
sprintf (message,"RC_NOT_AVAILABLE");
break; =20
}

m_StatusLog.DoClear();

if (m_nError =3D=3D 0)
{
PlaySound ("Audio/Logfinish.wav",NULL,SND_ASYNC);

sprintf(reply2, "Bot Name : [%s]", chBotName);
m_HistoryEdit.Append (status);
sprintf(reply2, "Citizen Number : %d", nCitnum);
m_HistoryEdit.Append (status);
sprintf (reply2," ");
m_HistoryEdit.Append (status);
sprintf(reply2, "Universe : %s", chUniverse);
m_HistoryEdit.Append (status);
sprintf(reply2, "World : %s", chWorld);
m_HistoryEdit.Append (status);
sprintf(reply2, "Location : Not Coded Yet");
m_HistoryEdit.Append (status);
sprintf (reply2," ");
m_StatusLog.Append (status);
sprintf(reply2, "Time Running : Not Coded Yet");
m_StatusLog.Append (status);
}

else
{
PlaySound ("Audio/Error.wav",NULL,SND_ASYNC);

sprintf (reply2," ");
m_StatusLog.Append (status);
m_StatusLog.Append (status);
m_StatusLog.Append (status);
sprintf (reply2,"LOGIN FAILURE");
m_StatusLog.Append (status);
sprintf (reply2,"Reason : %s",message);
m_StatusLog.Append (status);
}

}

-----------------------------------------------------------

Thanks in advance,
Andon Coleman

Senior Software Engineer
R&D

Nothing, Inc.



------=_NextPart_000_001A_01BEF257.8EFEEAA0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2614.3500" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>
<DIV><FONT face=3DArial size=3D2>Okay . . . I run this code, and&nbsp;. =
.. . The=20
second I click Login, it returns :</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; LOGIN FAILURE</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Reason: RC_NAME_TOO_SHORT</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Settings attempted : </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>World : AWBot</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Bot Name : Ultra BOT</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Citizen Number : 68992</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Privilege Password : =
*********</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>RELEVANT CODE:</FONT></DIV>
<DIV><FONT face=3DArial=20
size=3D2>----------------------------------------------------</FONT></DIV=
>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>void=20
CUltraBOTDlg::OnOK()&nbsp;&nbsp;<BR>{<BR>&nbsp;UpdateData(TRUE);<BR>&nbsp=
;PlaySound=20
("Audio/Logstart.wav",NULL,SND_ASYNC);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial =
size=3D2>&nbsp;m_StatusLog.DoClear();</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;if (Login() =3D=3D=20
TRUE)<BR>&nbsp;{<BR>&nbsp;&nbsp;aw_event_set (AW_EVENT_AVATAR_ADD,=20
handle_avatar_add);<BR>&nbsp;&nbsp;aw_event_set (AW_EVENT_AVATAR_CHANGE, =

handle_avatar_change);<BR>&nbsp;&nbsp;aw_event_set =
(AW_EVENT_AVATAR_DELETE,=20
handle_avatar_delete);<BR>&nbsp;&nbsp;aw_event_set (AW_EVENT_CHAT,=20
handle_chat);<BR>&nbsp;&nbsp;aw_event_set (AW_EVENT_AVATAR_CLICK,=20
handle_avatar_click);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;sprintf(message,"\nStatus =
for=20
:\n[%s]",chBotName);<BR>&nbsp;&nbsp;m_BalloonToolTip.AddTool(GetDlgItem(I=
DC_Status),message,=20
RGB(255,0,25));&nbsp;<BR>&nbsp;}<BR>}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>bool Login (void)<BR>{<BR>&nbsp;int=20
rc;</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;aw_destroy();<BR>&nbsp;Whois =3D=20
FALSE;</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;sprintf(reply2,"=20
");<BR>&nbsp;m_StatusLog.Append (status);<BR>&nbsp;m_StatusLog.Append=20
(status);<BR>&nbsp;m_StatusLog.Append=20
(status);<BR>&nbsp;sprintf(reply2,"Attempting to Login to=20
:");<BR>&nbsp;m_StatusLog.Append (status);<BR>&nbsp;sprintf(reply2,"The =
Universe=20
%s using SDK Build %d", chUniverse, =
AW_BUILD);<BR>&nbsp;m_StatusLog.Append=20
(status);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><BR>&nbsp;if (rc =3D aw_init=20
(AW_BUILD))<BR>&nbsp;&nbsp;Login_Error (rc);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial =
size=3D2>&nbsp;else<BR>&nbsp;{<BR>&nbsp;&nbsp;aw_int_set=20
(AW_LOGIN_OWNER, (nCitnum));<BR>&nbsp;&nbsp;aw_string_set=20
(AW_LOGIN_PRIVILEGE_PASSWORD, chPassword);<BR>&nbsp;&nbsp;sprintf=20
(message,"Ultra Bot %s",chVersion);<BR>&nbsp;&nbsp;aw_string_set=20
(AW_LOGIN_APPLICATION, message);<BR>&nbsp;&nbsp;aw_string_set =
(AW_LOGIN_NAME,=20
chBotName);<BR>&nbsp;&nbsp;aw_int_set (AW_MY_X, =
0);<BR>&nbsp;&nbsp;aw_int_set=20
(AW_MY_Y, 0);<BR>&nbsp;&nbsp;aw_int_set (AW_MY_Z, =
0);<BR>&nbsp;&nbsp;aw_int_set=20
(AW_MY_YAW, 0);<BR>&nbsp;&nbsp;aw_int_set (AW_MY_TYPE,=20
253);<BR>&nbsp;}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;if (rc =3D aw_create=20
(chIP,nPort,0))<BR>&nbsp;&nbsp;Login_Error=20
(rc);<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;else if (rc =3D aw_login=20
())<BR>&nbsp;&nbsp;Login_Error (rc);<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;else =
if (rc=20
=3D aw_enter (chWorld,0))<BR>&nbsp;&nbsp;Login_Error=20
(rc);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;else if (rc =3D =
aw_state_change=20
())<BR>&nbsp;&nbsp;Login_Error (rc);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;if (rc =3D=3D =
0)<BR>&nbsp;&nbsp;return=20
TRUE;<BR>&nbsp;<BR>&nbsp;else<BR>&nbsp;&nbsp;return =
FALSE;<BR>}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>void Login_Error (int =
m_nError)<BR>{</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial =
size=3D2><BR>&nbsp;switch(m_nError)<BR>&nbsp;{<BR>&nbsp;case=20
1:<BR>&nbsp;&nbsp;sprintf (message,"Citizen Number Has=20
Expired");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case 3:<BR>&nbsp;&nbsp;sprintf =

(message,"Citizen Number Invalid");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
4:<BR>&nbsp;&nbsp;sprintf (message,"Message Too=20
Long");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case 5:<BR>&nbsp;&nbsp;sprintf=20
(message,"Passwords Cannot Contain =
Spaces");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
6:<BR>&nbsp;&nbsp;sprintf (message,"Password Is Too=20
Long");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case 7:<BR>&nbsp;&nbsp;sprintf=20
(message,"Password Is Too Short");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
8:<BR>&nbsp;&nbsp;sprintf (message,"Range Too=20
Large");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case 9:<BR>&nbsp;&nbsp;sprintf=20
(message,"Range Too Short");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
10:<BR>&nbsp;&nbsp;sprintf (message,"Too Many=20
Users");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case 11:<BR>&nbsp;&nbsp;sprintf=20
(message,"Too Few Users");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
12:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_LICENSE_WORLD_CONTAINS_SPACE");<BR>&nbsp;&nbsp;break;<BR>&nb=
sp;case=20
13:<BR>&nbsp;&nbsp;sprintf (message,"Invalid=20
Password");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case =
14:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_UNABLE_TO_MAIL_BACK_NUMBER");<BR>&nbsp;&nbsp;break;<BR>&nbsp=
;case=20
15:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_LICENSE_WORLD_TOO_SHORT");<BR>&nbsp;&nbsp;break;<BR>&nbsp;ca=
se=20
16:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_LICENSE_WORLD_TOO_LONG");<BR>&nbsp;&nbsp;break;<BR>&nbsp;cas=
e=20
17:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_SERVER_OUT_OF_MEMORY");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case =

27:<BR>&nbsp;&nbsp;sprintf (message,"World Is Not=20
Running");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case =
31:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NOT_LOGGED_IN");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
32:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_UNAUTHORIZED");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
33:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_ALREADY_LICENSED");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
34:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NO_SUCH_LICENSE");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
39:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_IDENTITY_ALREADY_IN_USE");<BR>&nbsp;&nbsp;break;<BR>&nbsp;ca=
se=20
40:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_UNABLE_TO_REPORT_LOCATION");<BR>&nbsp;&nbsp;break;<BR>&nbsp;=
case=20
41:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_INVALID_EMAIL");&nbsp;<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
42:<BR>&nbsp;&nbsp;sprintf (message,"Citizen Number Doesn't=20
Exist");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case 43:<BR>&nbsp;&nbsp;sprintf=20
(message,"Invalid Password");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
58:<BR>&nbsp;&nbsp;sprintf (message,"Upgrade=20
Required");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case =
59:<BR>&nbsp;&nbsp;sprintf=20
(message,"BOT Limit Reached");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
64:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_LICENSE_STARTS_WITH_NUMBER");<BR>&nbsp;&nbsp;break;<BR>&nbsp=
;case=20
66:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NO_SUCH_EJECTION");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
67:<BR>&nbsp;&nbsp;sprintf (message,"No Such Session=20
Number");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case =
100:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_EMAIL_CONTAINS_INVALID_CHAR");<BR>&nbsp;&nbsp;break;<BR>&nbs=
p;case=20
101:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_EMAIL_ENDS_WITH_BLANK");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=
=20
102:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_EMAIL_MISSING_DOT");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
103:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_EMAIL_MISSING_AT");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
104:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_EMAIL_STARTS_WITH_BLANK");<BR>&nbsp;&nbsp;break;<BR>&nbsp;ca=
se=20
105:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_EMAIL_TOO_LONG");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
106:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_EMAIL_TOO_SHORT");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
107:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NAME_ALREADY_USED");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
108:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NAME_CONTAINS_INVALID_CHAR");<BR>&nbsp;&nbsp;break;<BR>&nbsp=
;case=20
109:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NAME_CONTAINS_INVALID_BLANK");<BR>&nbsp;&nbsp;break;<BR>&nbs=
p;case=20
110:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NAME_DOESNT_EXIST");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
111:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NAME_ENDS_WITH_BLANK");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case =

112:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NAME_TOO_LONG");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
113:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NAME_TOO_SHORT");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
114:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NAME_UNUSED");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
115:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_PASSWORD_TOO_LONG");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
116:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_PASSWORD_TOO_SHORT");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
117:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_PASSWORD_IS_WRONG");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
126:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NUMBER_ALREADY_USED");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
127:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NUMBER_OUT_OF_RANGE");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
128:<BR>&nbsp;&nbsp;sprintf (message,"Privilege Password Too=20
Short");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case 203:<BR>&nbsp;&nbsp;sprintf =

(message,"RC_NOT_CHANGE_OWNER");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
204:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_CANT_FIND_OLD_ELEMENT");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=
=20
211:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_CANT_CHANGE_OWNER");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
216:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_CANT_BUILD_HERE");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
232:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NOT_ALLOWED");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
300:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_ENCROACHES");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
301:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NO_SUCH_OBJECT");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
302:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NOT_DELETE_OWNER");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
303:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_TOO_MANY_BYTES");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
306:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_UNREGISTERED_OBJECT");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
308:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_ELEMENT_ALREADY_EXISTS");<BR>&nbsp;&nbsp;break;<BR>&nbsp;cas=
e=20
311:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NO_BUILD_RIGHTS");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
313:<BR>&nbsp;&nbsp;sprintf (message,"Object Outside Of World Property=20
Limits");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case =
314:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_RESTRICTED_OBJECT");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
400:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_OUT_OF_MEMORY");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
401:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NOT_YET");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
402:<BR>&nbsp;&nbsp;sprintf=20
(message,"TIMEOUT");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
403:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NULL_POINTER");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
404:<BR>&nbsp;&nbsp;sprintf (message,"Unable To Contact=20
Universe");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case =
405:<BR>&nbsp;&nbsp;sprintf=20
(message,"Unable To Contact World");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case =

406:<BR>&nbsp;&nbsp;sprintf (message,"Invalid World=20
Name");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case 415:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_SEND_FAILED");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
416:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_RECEIVE_FAILED");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
421:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_STREAM_EMPTY");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
422:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_STREAM_MESSAGE_TOO_LONG");<BR>&nbsp;&nbsp;break;<BR>&nbsp;ca=
se=20
423:<BR>&nbsp;&nbsp;sprintf (message,"World Name Too=20
Long");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case 426:<BR>&nbsp;&nbsp;sprintf=20
(message,"Message Too Long");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
429:<BR>&nbsp;&nbsp;sprintf (message,"Unable To Connect to %s :=20
%d",chIP,nPort);<BR>&nbsp;&nbsp;break;<BR>&nbsp;case =
439:<BR>&nbsp;&nbsp;sprintf=20
(message,"No Connection");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
442:<BR>&nbsp;&nbsp;sprintf (message,"Unable To Initialize=20
Network");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case =
443:<BR>&nbsp;&nbsp;sprintf=20
(message,"Incorrect_Message_Length");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=
=20
444:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NOT_INITIALIZED");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
445:<BR>&nbsp;&nbsp;sprintf (message,"No BOT Instance=20
Exists.");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case =
446:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_OUT_BUFFER_FULL");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
447:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_INVALID_CALLBACK");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
448:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_INVALID_ATTRIBUTE");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
449:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_TYPE_MISMATCH");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
450:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_STRING_TOO_LONG");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
451:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_READ_ONLY");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
453:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_INVALID_INSTANCE");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
454:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_VERSION_MISMATCH");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
461:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_IN_BUFFER_FULL");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
463:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_PROTOCOL_ERROR");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
464:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_QUERY_IN_PROGRESS");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
466:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_EJECTED");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
467:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NOT_WELCOME");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
471:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_CONNECTION_LOST");<BR>&nbsp;&nbsp;break;<BR>&nbsp;case=20
474:<BR>&nbsp;&nbsp;sprintf=20
(message,"RC_NOT_AVAILABLE");<BR>&nbsp;&nbsp;break;&nbsp;&nbsp;<BR>&nbsp;=
}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial =
size=3D2>&nbsp;m_StatusLog.DoClear();</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;if (m_nError =3D=3D=20
0)<BR>&nbsp;{<BR>&nbsp;&nbsp;PlaySound=20
("Audio/Logfinish.wav",NULL,SND_ASYNC);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;sprintf(reply2, "Bot Name : =
[%s]",=20
chBotName);<BR>&nbsp;&nbsp;m_HistoryEdit.Append=20
(status);<BR>&nbsp;&nbsp;sprintf(reply2, "Citizen Number : %d",=20
nCitnum);<BR>&nbsp;&nbsp;m_HistoryEdit.Append =
(status);<BR>&nbsp;&nbsp;sprintf=20
(reply2," ");<BR>&nbsp;&nbsp;m_HistoryEdit.Append=20
(status);<BR>&nbsp;&nbsp;sprintf(reply2, "Universe : %s",=20
chUniverse);<BR>&nbsp;&nbsp;m_HistoryEdit.Append=20
(status);<BR>&nbsp;&nbsp;sprintf(reply2, "World : %s",=20
chWorld);<BR>&nbsp;&nbsp;m_HistoryEdit.Append=20
(status);<BR>&nbsp;&nbsp;sprintf(reply2, "Location : Not Coded=20
Yet");<BR>&nbsp;&nbsp;m_HistoryEdit.Append =
(status);<BR>&nbsp;&nbsp;sprintf=20
(reply2," ");<BR>&nbsp;&nbsp;m_StatusLog.Append=20
(status);<BR>&nbsp;&nbsp;sprintf(reply2, "Time Running : Not Coded=20
Yet");<BR>&nbsp;&nbsp;m_StatusLog.Append =
(status);<BR>&nbsp;}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial =
size=3D2>&nbsp;else<BR>&nbsp;{<BR>&nbsp;&nbsp;PlaySound=20
("Audio/Error.wav",NULL,SND_ASYNC);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;sprintf (reply2,"=20
");<BR>&nbsp;&nbsp;m_StatusLog.Append=20
(status);<BR>&nbsp;&nbsp;m_StatusLog.Append=20
(status);<BR>&nbsp;&nbsp;m_StatusLog.Append =
(status);<BR>&nbsp;&nbsp;sprintf=20
(reply2,"LOGIN FAILURE");<BR>&nbsp;&nbsp;m_StatusLog.Append=20
(status);<BR>&nbsp;&nbsp;sprintf (reply2,"Reason :=20
%s",message);<BR>&nbsp;&nbsp;m_StatusLog.Append=20
(status);<BR>&nbsp;}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial=20
size=3D2>-----------------------------------------------------------</FON=
T></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Thanks in advance,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Andon Coleman</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Senior Software Engineer</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>R&amp;D</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Nothing, Inc.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV></FONT></DIV></BODY></HTML>

------=_NextPart_000_001A_01BEF257.8EFEEAA0--

Okay, I'm confused here . . . Here's the Source Code and SCRIPT in Question . . .

Sep 8, 1999, 3:14pm
This is a multi-part message in MIME format.

------=_NextPart_000_0008_01BEF9FC.2626BBA0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

// UpdaterDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Updater.h"
#include "UpdaterDlg.h"
#include "afxinet.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] =3D __FILE__;
#endif

#define HTTPBUFLEN 1024
char httpbuff[HTTPBUFLEN];

bool GetHttpFile(const char *url, const char *filename);

/////////////////////////////////////////////////////////////////////////=
////
// CUpdaterDlg dialog

CUpdaterDlg::CUpdaterDlg(CWnd* pParent /*=3DNULL*/)
: CDialog(CUpdaterDlg::IDD, pParent)
{
file://{{AFX_DATA_INIT(CUpdaterDlg)
// NOTE: the ClassWizard will add member initialization here
file://}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in =
Win32
m_hIcon =3D AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CUpdaterDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
file://{{AFX_DATA_MAP(CUpdaterDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
file://}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CUpdaterDlg, CDialog)
file://{{AFX_MSG_MAP(CUpdaterDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
file://}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////=
////
// CUpdaterDlg message handlers

BOOL CUpdaterDlg::OnInitDialog()
{

CDialog::OnInitDialog();

SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);

CFile NewData ("version.new", CFile::modeRead);
char pbuf[2000];
UINT nBytesRead =3D NewData.Read( pbuf, 1000 );
CString msg =3D pbuf;
int NewVersion;
int OldVersion;

msg =3D msg.Left(msg.Find("%N"));
msg.MakeReverse();
msg =3D msg.Left(msg.Find("VM%"));
msg.MakeReverse();
NewVersion =3D atoi (msg);

if (1 =3D=3D 1)
{
CFile OldData ("version.dat", CFile::modeRead);
char pbuf2[2000];
UINT nBytesRead =3D OldData.Read( pbuf2, 1000 );
CString msg =3D pbuf2;

msg =3D msg.Left(msg.Find("%N"));
msg.MakeReverse();
msg =3D msg.Left(msg.Find("VM%"));
msg.MakeReverse();
OldVersion =3D atoi (msg);
=20
if (NewVersion =3D=3D OldVersion)
{
OldVersion =3D atoi (msg);
msg.Format(" Update Patch %d Detected . . .\r\n\r\n Verifying . . . . =
.. . . . . . . . Failure!\r\n Creating Data Table . . . Failure!\r\n\r\n =
NO DIFFERENCE IN VERSION!",NewVersion);
GetDlgItem(IDC_Status)->SetWindowText(msg);
}

else if (NewVersion > OldVersion)
{

msg.Format(" Update Patch %d Detected . . .\r\n\r\n Verifying . . . . =
.. . . . . . . . Success!\r\n Creating Data Table . . . Success!\r\n\r\n =
Applying Patch for %d to %d",NewVersion,NewVersion,OldVersion);
GetDlgItem(IDC_Status)->SetWindowText(msg);
msg =3D pbuf;
msg =3D msg.Left(msg.Find("1L"));
msg.MakeReverse();
msg =3D msg.Left(msg.Find("N%"));
msg.MakeReverse();

int FILES =3D atoi (msg);

msg =3D pbuf;
int FILENUM =3D 1;

CString LOCAL;
CString EXTERNAL;
int VERSION;

while (FILENUM !=3D FILES)
{
CString NUML;
CString NUML2;
CString NUMF;
CString NUMV;

NUML.Format("%dL",FILENUM);
NUML2.Format("%dL",(FILENUM+1));
NUMF.Format("%dF",FILENUM);
NUMV.Format("%dV",FILENUM);
=20
msg =3D pbuf;
msg =3D msg.Left(msg.Find(NUMF));
NUML.MakeReverse();
msg.MakeReverse();
msg =3D msg.Left(msg.Find(NUML));
NUML.MakeReverse();
msg.MakeReverse();

LOCAL =3D msg;

msg =3D pbuf;
msg =3D msg.Left(msg.Find(NUMV));
NUMF.MakeReverse();
msg.MakeReverse();
msg =3D msg.Left(msg.Find(NUMF));
NUMF.MakeReverse();
msg.MakeReverse();

EXTERNAL =3D msg;

msg =3D pbuf;
msg =3D msg.Left(msg.Find(NUML2));
NUMV.MakeReverse();
msg.MakeReverse();
msg =3D msg.Left(msg.Find(NUMV));
NUMV.MakeReverse();
msg.MakeReverse();
=20
VERSION =3D atoi (msg);

if (VERSION > OldVersion)
{

LOCAL.Remove(' ');
EXTERNAL.Remove(' ');

RedrawWindow(NULL,NULL,RDW_UPDATENOW);

if (GetHttpFile(EXTERNAL, LOCAL) =3D=3D TRUE)
MessageBox("It Worked!",MB_OK);

else
{
char reply6[255];
sprintf(reply6,"%s\r\n%s",LOCAL,EXTERNAL);
MessageBox(reply6,MB_OK);
}
}


msg.Format(" Local : %s\n External : %s\n Update : =
%d",LOCAL,EXTERNAL,VERSION);

GetDlgItem(IDC_File)->SetWindowText(msg);


FILENUM +=3D 1;
}

char *pFileName =3D "version.dat";
OldData.Close();
CFile::Remove(pFileName);
char *pFileName2 =3D "version.new";
NewData.Close();
CFile::Rename(pFileName2, pFileName);
}

else
{
OldVersion =3D atoi (msg);
msg.Format(" Update Patch \? Detected . . .\r\n\r\n Verifying . . . . =
.. . . . . . . . Failure!\r\n Creating Data Table . . . Failure!\r\n\r\n =
ERROR : UNKNOWN");
GetDlgItem(IDC_Status)->SetWindowText(msg);
}
}
return TRUE; // return TRUE unless you set the focus to a control
}
// If you add a minimize button to your dialog, you will need the code =
below
// to draw the icon. For MFC applications using the document/view =
model,
// this is automatically done for you by the framework.

void CUpdaterDlg::OnPaint()=20
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle
int cxIcon =3D GetSystemMetrics(SM_CXICON);
int cyIcon =3D GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x =3D (rect.Width() - cxIcon + 1) / 2;
int y =3D (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}

// The system calls this to obtain the cursor to display while the user =
drags
// the minimized window.
HCURSOR CUpdaterDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}

bool GetHttpFile(const char *url, const char *filename)
{
bool success =3D FALSE;
TRY {
CInternetSession mysession;
CStdioFile *remotefile =3D mysession.OpenURL(url, =
1,INTERNET_FLAG_TRANSFER_BINARY|INTERNET_FLAG_RELOAD);
CFile myfile (filename, CFile::modeCreate|CFile::modeWrite);
int numbytes;
while (numbytes =3D remotefile->Read(httpbuff, HTTPBUFLEN))
{
myfile.Write(httpbuff, numbytes);
}
success =3D TRUE;
}
CATCH_ALL(e)
{
success =3D FALSE;
}
END_CATCH_ALL;
return (success);
}




SCRIPT :
%MV 0

%N 9

1L Ultra BOT.exe=20

1F UltraBOT.exe=20

1V 1

2L Updater.exe=20

2F Updater.exe=20

2V 1

3L AW.DLL=20

3F AW.DLL=20

3V 1

4L Audio\DJ.mid=20

4F Audio/DJ.mid=20

4V 1

5L Audio\jeopardy.mid=20

5F Audio/jeopardy.mid=20

5V 1

6L Audio\Error.wav=20

6F Audio/Error.wav=20

6V 1

7L Audio\Logfinish.wav=20

7F Audio/Logfinish.wav=20

7V 1

8L Audio\Logstart.wav=20

8F Audio/Logstart.wav=20

8V 1

9L Audio\Startup.wav=20

9F Audio/Startup.wav=20

9V 1

%TM "Testing"



Anyway, it always returns FALSE when it tries to use Fabers little HTTP =
Function.

If need be, I'll send you the ENTIRE Project - It's VERY small, and my =
preliminary .dat structure info.



Thanks,

Andon Coleman



Senior Programmer

R&D



Nothing, Inc.


------=_NextPart_000_0008_01BEF9FC.2626BBA0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2614.3500" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>// UpdaterDlg.cpp : implementation=20
file<BR>//</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>#include "stdafx.h"<BR>#include=20
"Updater.h"<BR>#include "UpdaterDlg.h"<BR>#include =
"afxinet.h"</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>#ifdef _DEBUG<BR>#define new =
DEBUG_NEW<BR>#undef=20
THIS_FILE<BR>static char THIS_FILE[] =3D =
__FILE__;<BR>#endif</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>#define HTTPBUFLEN 1024<BR>char=20
httpbuff[HTTPBUFLEN];</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>bool GetHttpFile(const char *url, const =
char=20
*filename);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial=20
size=3D2>////////////////////////////////////////////////////////////////=
/////////////<BR>//=20
CUpdaterDlg dialog</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>CUpdaterDlg::CUpdaterDlg(CWnd* pParent=20
/*=3DNULL*/)<BR>&nbsp;: CDialog(CUpdaterDlg::IDD, =
pParent)<BR>{<BR>&nbsp;<A=20
href=3D"file://{{">file://{{</A>AFX_DATA_INIT(CUpdaterDlg)<BR>&nbsp;&nbsp=
;// NOTE:=20
the ClassWizard will add member initialization here<BR>&nbsp;<A=20
href=3D"file://}}">file://}}</A>AFX_DATA_INIT<BR>&nbsp;// Note that =
LoadIcon does=20
not require a subsequent DestroyIcon in Win32<BR>&nbsp;m_hIcon =3D=20
AfxGetApp()-&gt;LoadIcon(IDR_MAINFRAME);<BR>}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>void =
CUpdaterDlg::DoDataExchange(CDataExchange*=20
pDX)<BR>{<BR>&nbsp;CDialog::DoDataExchange(pDX);<BR>&nbsp;<A=20
href=3D"file://{{">file://{{</A>AFX_DATA_MAP(CUpdaterDlg)<BR>&nbsp;&nbsp;=
// NOTE:=20
the ClassWizard will add DDX and DDV calls here<BR>&nbsp;<A=20
href=3D"file://}}">file://}}</A>AFX_DATA_MAP<BR>}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>BEGIN_MESSAGE_MAP(CUpdaterDlg, =
CDialog)<BR>&nbsp;<A=20
href=3D"file://{{">file://{{</A>AFX_MSG_MAP(CUpdaterDlg)<BR>&nbsp;ON_WM_P=
AINT()<BR>&nbsp;ON_WM_QUERYDRAGICON()<BR>&nbsp;<A=20
href=3D"file://}}">file://}}</A>AFX_MSG_MAP<BR>END_MESSAGE_MAP()</FONT></=
DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial=20
size=3D2>////////////////////////////////////////////////////////////////=
/////////////<BR>//=20
CUpdaterDlg message handlers</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>BOOL =
CUpdaterDlg::OnInitDialog()<BR>{</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial =
size=3D2>&nbsp;CDialog::OnInitDialog();</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;SetIcon(m_hIcon,=20
TRUE);<BR>&nbsp;SetIcon(m_hIcon, FALSE);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;CFile NewData ("version.new",=20
CFile::modeRead);<BR>&nbsp;char pbuf[2000];<BR>&nbsp;UINT nBytesRead =3D =

NewData.Read( pbuf, 1000 );<BR>&nbsp;CString msg =3D pbuf;<BR>&nbsp;int=20
NewVersion;<BR>&nbsp;int OldVersion;</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;msg =3D=20
msg.Left(msg.Find("%N"));<BR>&nbsp;msg.MakeReverse();<BR>&nbsp;msg =3D=20
msg.Left(msg.Find("VM%"));<BR>&nbsp;msg.MakeReverse();<BR>&nbsp;NewVersio=
n =3D=20
atoi (msg);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;if (1 =3D=3D =
1)<BR>&nbsp;{<BR>&nbsp;&nbsp;CFile=20
OldData ("version.dat", CFile::modeRead);<BR>&nbsp;&nbsp;char=20
pbuf2[2000];<BR>&nbsp;&nbsp;UINT nBytesRead =3D OldData.Read( pbuf2, =
1000=20
);<BR>&nbsp;&nbsp;CString msg =3D pbuf2;</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;msg =3D=20
msg.Left(msg.Find("%N"));<BR>&nbsp;&nbsp;msg.MakeReverse();<BR>&nbsp;&nbs=
p;msg =3D=20
msg.Left(msg.Find("VM%"));<BR>&nbsp;&nbsp;msg.MakeReverse();<BR>&nbsp;&nb=
sp;OldVersion=20
=3D atoi (msg);<BR>&nbsp;<BR>&nbsp;&nbsp;if (NewVersion =3D=3D=20
OldVersion)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;OldVersion =3D atoi=20
(msg);<BR>&nbsp;&nbsp;&nbsp;msg.Format(" Update Patch %d Detected . . =
..\r\n\r\n=20
Verifying . . . . . . . . . . . . Failure!\r\n Creating Data Table . . . =

Failure!\r\n\r\n NO DIFFERENCE IN=20
VERSION!",NewVersion);<BR>&nbsp;&nbsp;&nbsp;GetDlgItem(IDC_Status)-&gt;Se=
tWindowText(msg);<BR>&nbsp;&nbsp;}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;else if (NewVersion &gt;=20
OldVersion)<BR>&nbsp;&nbsp;{</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp;msg.Format(" Update =
Patch %d=20
Detected . . .\r\n\r\n Verifying . . . . . . . . . . . . Success!\r\n =
Creating=20
Data Table . . . Success!\r\n\r\n Applying Patch for %d to=20
%d",NewVersion,NewVersion,OldVersion);<BR>&nbsp;&nbsp;&nbsp;GetDlgItem(ID=
C_Status)-&gt;SetWindowText(msg);<BR>&nbsp;&nbsp;&nbsp;msg=20
=3D pbuf;<BR>&nbsp;&nbsp;&nbsp;msg =3D=20
msg.Left(msg.Find("1L"));<BR>&nbsp;&nbsp;&nbsp;msg.MakeReverse();<BR>&nbs=
p;&nbsp;&nbsp;msg=20
=3D =
msg.Left(msg.Find("N%"));<BR>&nbsp;&nbsp;&nbsp;msg.MakeReverse();</FONT><=
/DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp;int FILES =3D atoi=20
(msg);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp;msg =3D=20
pbuf;<BR>&nbsp;&nbsp;&nbsp;int FILENUM =3D 1;</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp;CString=20
LOCAL;<BR>&nbsp;&nbsp;&nbsp;CString EXTERNAL;<BR>&nbsp;&nbsp;&nbsp;int=20
VERSION;</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp;while (FILENUM !=3D=20
FILES)<BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString=20
NUML;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString=20
NUML2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString=20
NUMF;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString NUMV;</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial=20
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;NUML.Format("%dL",FILENUM);<BR>&nbsp;&nb=
sp;&nbsp;&nbsp;NUML2.Format("%dL",(FILENUM+1));<BR>&nbsp;&nbsp;&nbsp;&nbs=
p;NUMF.Format("%dF",FILENUM);<BR>&nbsp;&nbsp;&nbsp;&nbsp;NUMV.Format("%dV=
",FILENUM);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;msg=20
=3D pbuf;<BR>&nbsp;&nbsp;&nbsp;&nbsp;msg =3D=20
msg.Left(msg.Find(NUMF));<BR>&nbsp;&nbsp;&nbsp;&nbsp;NUML.MakeReverse();<=
BR>&nbsp;&nbsp;&nbsp;&nbsp;msg.MakeReverse();<BR>&nbsp;&nbsp;&nbsp;&nbsp;=
msg=20
=3D=20
msg.Left(msg.Find(NUML));<BR>&nbsp;&nbsp;&nbsp;&nbsp;NUML.MakeReverse();<=
BR>&nbsp;&nbsp;&nbsp;&nbsp;msg.MakeReverse();</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;LOCAL =3D =
msg;</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;msg =3D=20
pbuf;<BR>&nbsp;&nbsp;&nbsp;&nbsp;msg =3D=20
msg.Left(msg.Find(NUMV));<BR>&nbsp;&nbsp;&nbsp;&nbsp;NUMF.MakeReverse();<=
BR>&nbsp;&nbsp;&nbsp;&nbsp;msg.MakeReverse();<BR>&nbsp;&nbsp;&nbsp;&nbsp;=
msg=20
=3D=20
msg.Left(msg.Find(NUMF));<BR>&nbsp;&nbsp;&nbsp;&nbsp;NUMF.MakeReverse();<=
BR>&nbsp;&nbsp;&nbsp;&nbsp;msg.MakeReverse();</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;EXTERNAL =3D=20
msg;</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;msg =3D=20
pbuf;<BR>&nbsp;&nbsp;&nbsp;&nbsp;msg =3D=20
msg.Left(msg.Find(NUML2));<BR>&nbsp;&nbsp;&nbsp;&nbsp;NUMV.MakeReverse();=
<BR>&nbsp;&nbsp;&nbsp;&nbsp;msg.MakeReverse();<BR>&nbsp;&nbsp;&nbsp;&nbsp=
;msg=20
=3D=20
msg.Left(msg.Find(NUMV));<BR>&nbsp;&nbsp;&nbsp;&nbsp;NUMV.MakeReverse();<=
BR>&nbsp;&nbsp;&nbsp;&nbsp;msg.MakeReverse();<BR>&nbsp;&nbsp;&nbsp;&nbsp;=
<BR>&nbsp;&nbsp;&nbsp;&nbsp;VERSION=20
=3D atoi (msg);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;if (VERSION =
&gt;=20
OldVersion)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial =
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOCAL.Remove('=20
');<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXTERNAL.Remove(' ');</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial=20
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RedrawWindow(NULL,NULL,RDW_UPDATEN=
OW);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if=20
(GetHttpFile(EXTERNAL, LOCAL) =3D=3D=20
TRUE)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBox("It=20
Worked!",MB_OK);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial=20
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char=20
reply6[255];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf(reply6,"%s\r\=
n%s",LOCAL,EXTERNAL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBox(r=
eply6,MB_OK);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nb=
sp;}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial =
size=3D2><BR>&nbsp;&nbsp;&nbsp;&nbsp;msg.Format("=20
Local&nbsp;&nbsp;&nbsp;&nbsp; : %s\n External : %s\n Update&nbsp; :=20
%d",LOCAL,EXTERNAL,VERSION);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial=20
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;GetDlgItem(IDC_File)-&gt;SetWindowText(m=
sg);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><BR>&nbsp;&nbsp;&nbsp;&nbsp;FILENUM =
+=3D=20
1;<BR>&nbsp;&nbsp;&nbsp;}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp;char *pFileName =3D=20
"version.dat";<BR>&nbsp;&nbsp;&nbsp;OldData.Close();<BR>&nbsp;&nbsp;&nbsp=
;CFile::Remove(pFileName);<BR>&nbsp;&nbsp;&nbsp;char=20
*pFileName2 =3D=20
"version.new";<BR>&nbsp;&nbsp;&nbsp;NewData.Close();<BR>&nbsp;&nbsp;&nbsp=
;CFile::Rename(pFileName2,=20
pFileName);<BR>&nbsp;&nbsp;}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial=20
size=3D2>&nbsp;&nbsp;else<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;OldVersio=
n =3D atoi=20
(msg);<BR>&nbsp;&nbsp;&nbsp;msg.Format(" Update Patch \? Detected . . =
..\r\n\r\n=20
Verifying . . . . . . . . . . . . Failure!\r\n Creating Data Table . . . =

Failure!\r\n\r\n ERROR :=20
UNKNOWN");<BR>&nbsp;&nbsp;&nbsp;GetDlgItem(IDC_Status)-&gt;SetWindowText(=
msg);<BR>&nbsp;&nbsp;}<BR>&nbsp;}<BR>&nbsp;return=20
TRUE;&nbsp; // return TRUE&nbsp; unless you set the focus to a=20
control<BR>}<BR>// If you add a minimize button to your dialog, you will =
need=20
the code below<BR>//&nbsp; to draw the icon.&nbsp; For MFC applications =
using=20
the document/view model,<BR>//&nbsp; this is automatically done for you =
by the=20
framework.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>void CUpdaterDlg::OnPaint() =
<BR>{<BR>&nbsp;if=20
(IsIconic())<BR>&nbsp;{<BR>&nbsp;&nbsp;CPaintDC dc(this); // device =
context for=20
painting</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial =
size=3D2>&nbsp;&nbsp;SendMessage(WM_ICONERASEBKGND, (WPARAM)=20
dc.GetSafeHdc(), 0);</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;// Center icon in client=20
rectangle<BR>&nbsp;&nbsp;int cxIcon =3D=20
GetSystemMetrics(SM_CXICON);<BR>&nbsp;&nbsp;int cyIcon =3D=20
GetSystemMetrics(SM_CYICON);<BR>&nbsp;&nbsp;CRect=20
rect;<BR>&nbsp;&nbsp;GetClientRect(&amp;rect);<BR>&nbsp;&nbsp;int x =3D=20
(rect.Width() - cxIcon + 1) / 2;<BR>&nbsp;&nbsp;int y =3D (rect.Height() =
- cyIcon=20
+ 1) / 2;</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;// Draw the=20
icon<BR>&nbsp;&nbsp;dc.DrawIcon(x, y,=20
m_hIcon);<BR>&nbsp;}<BR>&nbsp;else<BR>&nbsp;{<BR>&nbsp;&nbsp;CDialog::OnP=
aint();<BR>&nbsp;}<BR>}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>// The system calls this to obtain the =
cursor to=20
display while the user drags<BR>//&nbsp; the minimized =
window.<BR>HCURSOR=20
CUpdaterDlg::OnQueryDragIcon()<BR>{<BR>&nbsp;return (HCURSOR)=20
m_hIcon;<BR>}</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>bool GetHttpFile(const char *url, const =
char=20
*filename)<BR>{<BR>&nbsp;bool success =3D FALSE;<BR>&nbsp;TRY =
{<BR>&nbsp;=20
CInternetSession mysession;<BR>&nbsp; CStdioFile *remotefile =3D=20
mysession.OpenURL(url,=20
1,INTERNET_FLAG_TRANSFER_BINARY|INTERNET_FLAG_RELOAD);<BR>&nbsp; CFile =
myfile=20
(filename, CFile::modeCreate|CFile::modeWrite);<BR>&nbsp; int=20
numbytes;<BR>&nbsp; while (numbytes =3D remotefile-&gt;Read(httpbuff,=20
HTTPBUFLEN))<BR>&nbsp; {<BR>&nbsp;&nbsp; myfile.Write(httpbuff,=20
numbytes);<BR>&nbsp; }<BR>&nbsp; success =3D=20
TRUE;<BR>&nbsp;}<BR>&nbsp;CATCH_ALL(e)<BR>&nbsp;{<BR>&nbsp; success =3D=20
FALSE;<BR>&nbsp;}<BR>&nbsp;END_CATCH_ALL;<BR>&nbsp;return=20
(success);<BR>}<BR></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>SCRIPT :</FONT></DIV>
<DIV><FONT face=3DArial size=3D2><FONT size=3D2>
<P>%MV 0</P>
<P>%N 9</P>
<P>1L Ultra BOT.exe </P>
<P>1F UltraBOT.exe </P>
<P>1V 1</P>
<P>2L Updater.exe </P>
<P>2F Updater.exe </P>
<P>2V 1</P>
<P>3L AW.DLL </P>
<P>3F AW.DLL </P>
<P>3V 1</P>
<P>4L Audio\DJ.mid </P>
<P>4F Audio/DJ.mid </P>
<P>4V 1</P>
<P>5L Audio\jeopardy.mid </P>
<P>5F Audio/jeopardy.mid </P>
<P>5V 1</P>
<P>6L Audio\Error.wav </P>
<P>6F Audio/Error.wav </P>
<P>6V 1</P>
<P>7L Audio\Logfinish.wav </P>
<P>7F Audio/Logfinish.wav </P>
<P>7V 1</P>
<P>8L Audio\Logstart.wav </P>
<P>8F Audio/Logstart.wav </P>
<P>8V 1</P>
<P>9L Audio\Startup.wav </P>
<P>9F Audio/Startup.wav </P>
<P>9V 1</P>
<P>%TM "Testing"</P>
<P>&nbsp;</P>
<P>Anyway, it always returns FALSE when it tries to use Fabers little =
HTTP=20
Function.</P>
<P>If need be, I'll send you the ENTIRE Project&nbsp;- It's VERY small,=20
and&nbsp;my preliminary .dat structure info.</P>
<P>&nbsp;</P>
<P>Thanks,</P>
<P>Andon Coleman</P>
<P>&nbsp;</P>
<P>Senior Programmer</P>
<P>R&amp;D</P>
<P>&nbsp;</P>
<P>Nothing, Inc.</P></FONT></DIV></FONT></BODY></HTML>

------=_NextPart_000_0008_01BEF9FC.2626BBA0--

Okay, I'm confused here . . . Here's the Source Code and SCRIPT in Question . . .

Oct 13, 1999, 6:02pm
This is a multi-part message in MIME format.

------=_NextPart_000_0013_01BF1594.6BA9DAA0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Actually, I fixed every single bug :)

For some reason attempting to put my HTTP Get File function into a =
Thread of its own was a bad idea . . . So, I moved the ENTIRE Process =
into its own thread, now it works great . . . You can move the window =
around while its downloading, and the Progress indicators work =
perfectly.

But thanks for the help originally . . .

Andon M. Coleman

Senior Programmer
R&D

Nothing, Inc.
[View Quote] If the project is VC, I could take a look. (I have VC6.) Send it to =
serac at lightmail.com.

P.S. If you are interested in Flex/Bison, I highly suggest you buy the =
O'Reilly & Associates, Inc. book "Lex & Yacc" -- Levine, Mason & Brown =
(ISBN 1-56592-000-7). And Delorie (creator of DJGPP) has Flex and Bison =
ports for DOS. There is a little bit of work to get VC to automatically =
run them. Flex does have support for a C++ lexical analyzer. However, =
I've not been able to find a reliable C++ version of the Bison parser. =
But remember that all C code runs along side C++, so you could probably =
get along with using the C versions of both.
[View Quote] Now my only problem is the downloaded update files come out =
corrupt, perhaps you could take a look at the project file? (It's only =
24KB Compiled, so it's not large by ANY means).

------=_NextPart_000_0013_01BF1594.6BA9DAA0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2614.3500" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial>Actually, I fixed every single =
bug&nbsp;:)</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>&nbsp;&nbsp;&nbsp; For some reason attempting to =
put my=20
HTTP Get File function into a Thread of its own was a bad idea . . . So, =
I moved=20
the ENTIRE Process into its own thread, now it works great . . . You can =
move=20
the window around while its downloading, and the Progress indicators =
work=20
perfectly.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>But thanks for the help originally . . =
..</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>Andon M. Coleman</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>Senior Programmer</FONT></DIV>
<DIV><FONT face=3DArial>R&amp;D</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>Nothing, Inc.</FONT></DIV>
<BLOCKQUOTE=20
style=3D"BORDER-LEFT: #000000 2px solid; MARGIN-LEFT: 5px; MARGIN-RIGHT: =
0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px">
<DIV>Aaron Hill &lt;<A=20
href=3D"mailto:serac at lightmail.com">serac at lightmail.com</A>&gt; wrote =
in message=20
<A href=3D"news:380291fc at homer">news:380291fc at homer</A>...</DIV>
<DIV>Have you looked into&nbsp;Flex/Bison&nbsp;to doing the parsing =
for=20
you?&nbsp; Using these tools you can spend more time on the more =
important=20
code in your program.</DIV>
<DIV>&nbsp;</DIV>
<DIV>If the project is VC, I could take a look.&nbsp; (I have =
VC6.)&nbsp; Send=20
it to <A =
href=3D"mailto:serac at lightmail.com">serac at lightmail.com</A>.</DIV>
<DIV>&nbsp;</DIV>
<DIV>P.S. If you are interested in Flex/Bison, I highly suggest you =
buy the=20
O'Reilly &amp; Associates, Inc. book "Lex&nbsp;&amp; Yacc" -- Levine, =
Mason=20
&amp; Brown (ISBN 1-56592-000-7).&nbsp; And Delorie (creator of DJGPP) =
has=20
Flex and Bison ports for DOS.&nbsp; There is a little bit of work to =
get VC to=20
automatically run them.&nbsp; Flex does have support for a C++ lexical =

analyzer.&nbsp; However, I've not been able to find a reliable C++ =
version of=20
the Bison parser.&nbsp; But remember that all C code runs along side =
C++, so=20
you&nbsp;could probably get along with using the C versions of =
both.</DIV>
<BLOCKQUOTE=20
style=3D"BORDER-LEFT: #000000 2px solid; MARGIN-LEFT: 5px; =
MARGIN-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px">
<DIV>Andon M. Coleman &lt;<A=20
href=3D"mailto:gizmo98 at earthlink.net">gizmo98 at earthlink.net</A>&gt; =
wrote in=20
message <A =
href=3D"news:38016db3.0 at homer">news:38016db3.0 at homer</A>...</DIV>
<DIV><FONT face=3DArial>&nbsp;&nbsp;&nbsp; Actually, my problem was =
in my=20
"Parsing Code" . . . I simply added some more code to strain the=20
data&nbsp;to the Left 4 Bytes in the CString (Since through my =
formatting /=20
testing I have added many more bytes) . . . And voila, it worked=20
:)</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>&nbsp;&nbsp;&nbsp; Now my only problem is =
the=20
downloaded update files come out corrupt, perhaps you could take a =
look at=20
the project file? (It's only 24KB Compiled, so it's not large by ANY =

means).</FONT></DIV></BLOCKQUOTE></BLOCKQUOTE></BODY></HTML>

------=_NextPart_000_0013_01BF1594.6BA9DAA0--

Simple method for creating "Lock-Up Look" FREE Logins, Sample Source included!!!

Sep 22, 1999, 5:54pm
This is a multi-part message in MIME format.

------=_NextPart_000_002C_01BF0512.BBF7E980
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Ooopsies, already I discovered a BUG . . . The Name specified is too =
long . . .
[View Quote] Q. What's this "Lock-Up Look", and what's it caused by?
A. The "Lock-Up Look" is named that because, when you call the AW SDK =
Login Functions without any intervention, your Dialog Thread does not =
receive the WIN32 Message Pump until each one of functions you call has =
finished.
Subsequently, your Dialog Thread is not able to do a Redraw, =
causing undesired Dialog Painting effects.

Q. What is this Thread you speak of?
A. Think of a thread in terms of real life . . .=20
Imagine our program as a string of yarn.
Now, think back to kindergarten, what is yarn made of? --- Why, =
threads of course!
=20
This applies to WIN32 Programming also, however, WIN32 Programs =
are not usually made of hundreds of threads :) --- Usually there's 2 or =
3, and in the case of simple MFC App Wizard applications, there's 1.
=20
This single thread is assigned the job of many things, including : =
Repainting the windows, and any code executed from within it (Such as a =
while block) . . . While blocks will cause the thread to focus in ONLY =
on repeating the code contained inside the block, and not redraw the =
windows, or any of the other stuff it's SUPPOSED to do

Q. Alrighty, that was a kind of loaded answer . . . How does Andon13 =
solve the "Lock-Up Look" problem?
A. Haven't you learned anything so far? =3DP
The most simple solution to the whole problem is the one used . . =
..
=20
In this work-around, we create a Background Worker thread . . . =
This thread has no Dialog Boxes or anything assigned to it, so it can =
focus solely on the AW SDK Initialization / Login --- Further, it has =
the ability to send data to the MAIN Thread, which is the basis for =
the nifty looking status indicator used in this solution.

=20
Q. Wow, sounds interesting . . . Is it hard to implement?
A. No, not at all --- The whole Sample Source code has been commented =
from head to toe (Well, the functions relating to the LOGIN anyway).






NOTE:
Here's a list of syntax / usage / purpose for the most commonly used =
functions in this sample code :

Function: Class: =
Usage: =
=
=
Return Type:
NewStatus(CString LOG, int nTYPE); CLogin Log is the =
message to be appended to the status text area of the Status Dialog, =
nTYPE is an integer value specifying the type of Status Message being =
sent VOID

=
nTYPE:
=
-1 =3D Append without increasing the Progress Indicator's =
Position
=
0 =3D Error --- This removes ANY progress currently shown =
in the Progress Indicator
=
1 =3D Append and Step the Progress indicator up 1 notch.

Function: =
=
=
Class: Usage:
Login (CString chPassword, int nCitnum, int nX, int nY, int nZ, int =
nYAW, int nAV, CString WorldName, CString chIP, int nPort, CString =
chBotName) CLogin Pretty straight forward . . . This function =
is to be called ONLY from within the Thread.

Return Type:
Boolean -- TRUE if the login completed without any errors, =
otherwise, it returns FALSE.

Function: Class: =
Usage:
ThreadFunc (LPVOID pParam) N/A (Global) This is =
called with the creation of the thread . . . There is no need to modify =
the Input / Output to this whatsoever, however, you may change the =
functions called from it (Login being the only important one)

Return Type:
UINT -- No need for intervention with this, just let =
WIN32 Process it.


Function: =
Class: Usage: =
=
=
Return Type:
OnThreadFinished (WPARAM wParam, LPARAM lParam) CLogin =
This is called by the Global Scope call to =
::PostMessage(There's some parameter's in here, but who cares? =3D)) =
LONG --- Leave this to WIN32

That's pretty much it --- If you have any questions, or find any BUGs, =
please E-Mail me : Andon M. Coleman at : Gizmo98 at earthlink.net

Andon M. Coleman

Senior Programmer
R&D

Nothing, Inc.


P.S. I can't forget to give J=F6rg K=F6nig credit for his nice little =
Bitmap Based Dialog code . . .

------=_NextPart_000_002C_01BF0512.BBF7E980
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2614.3500" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Ooopsies, already I discovered a BUG . =
.. . The Name=20
specified is too long . . .</FONT></DIV>
<BLOCKQUOTE=20
style=3D"BORDER-LEFT: #000000 2px solid; MARGIN-LEFT: 5px; MARGIN-RIGHT: =
0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px">
<DIV>Andon M. Coleman &lt;<A=20
href=3D"mailto:gizmo98 at earthlink.net">gizmo98 at earthlink.net</A>&gt; =
wrote in=20
message <A =
href=3D"news:37e92b4d.0 at homer">news:37e92b4d.0 at homer</A>...</DIV>
<DIV><FONT face=3DArial size=3D2>
<DIV>
<DIV><FONT face=3DArial size=3D2>Q. What is this?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>A. A method devised by Andon13 to =
work around the=20
problems associated with calling the AW SDK Login =
Functions.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Q. What's this "Lock-Up Look", and =
what's it=20
caused by?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>A. The "Lock-Up Look" is named that =
because, when=20
you call the AW SDK Login Functions without any intervention, your =
Dialog=20
Thread does not receive&nbsp;the WIN32 Message Pump until each one of=20
functions you call has finished.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; Subsequently, your =
Dialog=20
Thread is not able to do a Redraw, causing undesired Dialog Painting=20
effects.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Q. What is this Thread you speak =
of?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>A. </FONT><FONT face=3DArial =
size=3D2>Think of a=20
thread in terms of real life . . . </FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; Imagine our =
program as a=20
string of yarn.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; Now, think back to =

kindergarten, what is yarn made of? --- Why, threads of =
course!</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; </FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; This applies to =
WIN32=20
Programming also, however, WIN32 Programs are not usually made of =
hundreds of=20
threads :) --- Usually there's 2 or 3, and in the case of simple MFC =
App=20
Wizard applications, there's 1.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; </FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; This single thread =
is assigned=20
the job of many things, including : Repainting the windows, and any =
code=20
executed from within it (Such as a while block) . . . While blocks =
will cause=20
the thread to focus in ONLY on repeating the code contained inside the =
block,=20
and not &nbsp;&nbsp;&nbsp; redraw the windows, or any of the other =
stuff it's=20
SUPPOSED to do</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Q. Alrighty, that was a kind of =
loaded answer . .=20
. How does Andon13 solve the "Lock-Up Look" problem?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>A. Haven't you learned anything so =
far?=20
=3DP</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; The most simple =
solution to=20
the whole problem is the one used . . .</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; </FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; In this =
work-around, we create=20
a Background Worker thread . . . This thread has no Dialog Boxes or =
anything=20
assigned to it, so it can focus solely on the AW SDK Initialization / =
Login=20
--- Further, it has the ability to send data to the MAIN =
Thread,&nbsp;which is=20
the basis for &nbsp;&nbsp;&nbsp; the&nbsp;nifty looking status =
indicator used=20
in this solution.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Q. Wow, sounds interesting . . . Is =
it hard to=20
implement?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>A. No, not at all --- The whole =
Sample Source=20
code has been commented from head to toe (Well, the functions relating =
to the=20
LOGIN anyway).</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>NOTE:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Here's a list of syntax / usage / =
purpose for the=20
most commonly used functions in this sample code :</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><FONT face=3DArial size=3D2><FONT =
face=3DArial=20
=
size=3D2>Function:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class:&nbs=
p;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;=20
Usage:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; Return Type:</FONT></FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2>NewStatus(CString LOG, int=20
nTYPE);&nbsp;&nbsp;&nbsp;=20
=
CLogin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;=20
Log is the message to be appended to the status text area of the =
Status=20
Dialog, nTYPE is an integer value specifying the type of Status =
Message being=20
=
sent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;VOID</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial=20
=
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;=20
nTYPE:</FONT></DIV>
<DIV><FONT face=3DArial=20
=
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;=20
-1 =3D Append without increasing the Progress Indicator's =
Position</FONT></DIV>
<DIV><FONT face=3DArial=20
=
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;0=20
=3D Error --- This removes ANY progress currently shown in the =
Progress=20
Indicator</FONT></DIV>
<DIV><FONT face=3DArial=20
=
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;1=20
=3D Append and Step the Progress indicator up 1 notch.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><FONT face=3DArial size=3D2><FONT =
face=3DArial=20
size=3D2><FONT face=3DArial=20
=
size=3D2>Function:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;=20
Class:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;=20
Usage:</FONT></FONT></FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Login (CString chPassword, int =
nCitnum, int nX,=20
int nY, int nZ, int nYAW, int nAV, CString WorldName, CString chIP, =
int nPort,=20
CString chBotName)&nbsp;&nbsp;&nbsp;&nbsp; CLogin&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; Pretty straight forward . . . This function is to =
be called=20
ONLY from within the Thread.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Return Type:</FONT></DIV>
<DIV><FONT face=3DArial =
size=3D2>Boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --=20
&nbsp;&nbsp;&nbsp; TRUE if the login completed without any errors, =
otherwise,=20
it returns FALSE.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>
<DIV><FONT face=3DArial size=3D2>Function:&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;=20
=
Class:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
Usage:</FONT></DIV>ThreadFunc (LPVOID =
pParam)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
N/A=20
=
(Global)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;This=20
is called with the creation of the thread . . . There is no need to =
modify the=20
Input / Output to this whatsoever, however, you may change the =
functions=20
called from it (Login being the only important one)</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Return Type:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>UINT&nbsp;&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp;&nbsp; -- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; No need for =

intervention with this, just let WIN32 Process it.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>
<DIV><FONT face=3DArial size=3D2>Function:&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp;=20
=
Class:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
=
Usage:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return=20
Type:</FONT></DIV>
<DIV>OnThreadFinished (WPARAM wParam, LPARAM=20
=
lParam)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLogin&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
This is called by the Global Scope call to ::PostMessage(There's some=20
parameter's in here, but who cares?=20
=
=3D))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;LONG=20
--- Leave this to WIN32</DIV>
<DIV>&nbsp;</DIV>
<DIV>That's pretty much it --- If you have any questions, or find any =
BUGs,=20
please E-Mail me : Andon M. Coleman at : <A=20
href=3D"mailto:Gizmo98 at earthlink.net">Gizmo98 at earthlink.net</A></DIV>
<DIV>&nbsp;</DIV>
<DIV>Andon M. Coleman</DIV>
<DIV><BR>Senior Programmer</DIV>
<DIV>R&amp;D</DIV>
<DIV>&nbsp;</DIV>
<DIV>Nothing, Inc.</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>P.S. I can't forget to give J=F6rg K=F6nig credit for his nice =
little Bitmap=20
Based Dialog code . .=20
..</DIV></FONT></DIV></DIV></FONT></DIV></BLOCKQUOTE></BODY></HTML>

------=_NextPart_000_002C_01BF0512.BBF7E980--

Simple method for creating "Lock-Up Look" FREE Logins, Sample Source included!!!

Sep 22, 1999, 6:02pm
This is a multi-part message in MIME format.

------=_NextPart_000_003E_01BF0513.CF8FF9A0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hmmmmmm --- Converting that out of my DJ BOT and into a simple Sample =
BOT has presented a few bugs, maybe by tomorrow I'll have them all fixed =
.. . .

Regards, Andon13
[View Quote] Q. What's this "Lock-Up Look", and what's it caused by?
A. The "Lock-Up Look" is named that because, when you call the AW =
SDK Login Functions without any intervention, your Dialog Thread does =
not receive the WIN32 Message Pump until each one of functions you call =
has finished.
Subsequently, your Dialog Thread is not able to do a Redraw, =
causing undesired Dialog Painting effects.

Q. What is this Thread you speak of?
A. Think of a thread in terms of real life . . .=20
Imagine our program as a string of yarn.
Now, think back to kindergarten, what is yarn made of? --- Why, =
threads of course!
=20
This applies to WIN32 Programming also, however, WIN32 Programs =
are not usually made of hundreds of threads :) --- Usually there's 2 or =
3, and in the case of simple MFC App Wizard applications, there's 1.
=20
This single thread is assigned the job of many things, including =
: Repainting the windows, and any code executed from within it (Such as =
a while block) . . . While blocks will cause the thread to focus in ONLY =
on repeating the code contained inside the block, and not redraw the =
windows, or any of the other stuff it's SUPPOSED to do

Q. Alrighty, that was a kind of loaded answer . . . How does Andon13 =
solve the "Lock-Up Look" problem?
A. Haven't you learned anything so far? =3DP
The most simple solution to the whole problem is the one used . =
.. .
=20
In this work-around, we create a Background Worker thread . . . =
This thread has no Dialog Boxes or anything assigned to it, so it can =
focus solely on the AW SDK Initialization / Login --- Further, it has =
the ability to send data to the MAIN Thread, which is the basis for =
the nifty looking status indicator used in this solution.

=20
Q. Wow, sounds interesting . . . Is it hard to implement?
A. No, not at all --- The whole Sample Source code has been =
commented from head to toe (Well, the functions relating to the LOGIN =
anyway).






NOTE:
Here's a list of syntax / usage / purpose for the most commonly used =
functions in this sample code :

Function: Class: =
Usage: =
=
=
Return Type:
NewStatus(CString LOG, int nTYPE); CLogin Log is =
the message to be appended to the status text area of the Status Dialog, =
nTYPE is an integer value specifying the type of Status Message being =
sent VOID

=
nTYPE:
=
-1 =3D Append without increasing the Progress =
Indicator's Position
=
0 =3D Error --- This removes ANY progress currently =
shown in the Progress Indicator
=
1 =3D Append and Step the Progress indicator up 1 =
notch.

Function: =
=
=
Class: Usage:
Login (CString chPassword, int nCitnum, int nX, int nY, int nZ, int =
nYAW, int nAV, CString WorldName, CString chIP, int nPort, CString =
chBotName) CLogin Pretty straight forward . . . This function =
is to be called ONLY from within the Thread.

Return Type:
Boolean -- TRUE if the login completed without any errors, =
otherwise, it returns FALSE.

Function: Class: =
Usage:
ThreadFunc (LPVOID pParam) N/A (Global) This is =
called with the creation of the thread . . . There is no need to modify =
the Input / Output to this whatsoever, however, you may change the =
functions called from it (Login being the only important one)

Return Type:
UINT -- No need for intervention with this, just let =
WIN32 Process it.


Function: =
Class: Usage: =
=
=
Return Type:
OnThreadFinished (WPARAM wParam, LPARAM lParam) CLogin =
This is called by the Global Scope call to =
::PostMessage(There's some parameter's in here, but who cares? =3D)) =
LONG --- Leave this to WIN32

That's pretty much it --- If you have any questions, or find any =
BUGs, please E-Mail me : Andon M. Coleman at : Gizmo98 at earthlink.net

Andon M. Coleman

Senior Programmer
R&D

Nothing, Inc.


P.S. I can't forget to give J=F6rg K=F6nig credit for his nice =
little Bitmap Based Dialog code . . .

------=_NextPart_000_003E_01BF0513.CF8FF9A0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2614.3500" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Hmmmmmm --- Converting that out of my =
DJ BOT and=20
into a simple Sample BOT has presented a few bugs, maybe by tomorrow =
I'll have=20
them all fixed . . .</FONT></DIV>
<DIV><BR><FONT face=3DArial size=3D2>Regards, Andon13</FONT></DIV>
<BLOCKQUOTE=20
style=3D"BORDER-LEFT: #000000 2px solid; MARGIN-LEFT: 5px; MARGIN-RIGHT: =
0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px">
<DIV>Andon M. Coleman &lt;<A=20
href=3D"mailto:gizmo98 at earthlink.net">gizmo98 at earthlink.net</A>&gt; =
wrote in=20
message <A =
href=3D"news:37e93262.0 at homer">news:37e93262.0 at homer</A>...</DIV>
<DIV><FONT face=3DArial size=3D2>Ooopsies, already I discovered a BUG =
.. . . The=20
Name specified is too long . . .</FONT></DIV>
<BLOCKQUOTE=20
style=3D"BORDER-LEFT: #000000 2px solid; MARGIN-LEFT: 5px; =
MARGIN-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px">
<DIV>Andon M. Coleman &lt;<A=20
href=3D"mailto:gizmo98 at earthlink.net">gizmo98 at earthlink.net</A>&gt; =
wrote in=20
message <A =
href=3D"news:37e92b4d.0 at homer">news:37e92b4d.0 at homer</A>...</DIV>
<DIV><FONT face=3DArial size=3D2>
<DIV>
<DIV><FONT face=3DArial size=3D2>Q. What is this?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>A. A method devised by Andon13 to =
work around=20
the problems associated with calling the AW SDK Login=20
Functions.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Q. What's this "Lock-Up Look", and =
what's it=20
caused by?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>A. The "Lock-Up Look" is named that =
because,=20
when you call the AW SDK Login Functions without any intervention, =
your=20
Dialog Thread does not receive&nbsp;the WIN32 Message Pump until =
each one of=20
functions you call has finished.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; Subsequently, =
your Dialog=20
Thread is not able to do a Redraw, causing undesired Dialog Painting =

effects.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Q. What is this Thread you speak=20
of?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>A. </FONT><FONT face=3DArial =
size=3D2>Think of a=20
thread in terms of real life . . . </FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; Imagine our =
program as a=20
string of yarn.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; Now, think back =
to=20
kindergarten, what is yarn made of? --- Why, threads of =
course!</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; </FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; This applies to =
WIN32=20
Programming also, however, WIN32 Programs are not usually made of =
hundreds=20
of threads :) --- Usually there's 2 or 3, and in the case of simple =
MFC App=20
Wizard applications, there's 1.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; </FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; This single =
thread is=20
assigned the job of many things, including : Repainting the windows, =
and any=20
code executed from within it (Such as a while block) . . . While =
blocks will=20
cause the thread to focus in ONLY on repeating the code contained =
inside the=20
block, and not &nbsp;&nbsp;&nbsp; redraw the windows, or any of the =
other=20
stuff it's SUPPOSED to do</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Q. Alrighty, that was a kind of =
loaded answer .=20
. . How does Andon13 solve the "Lock-Up Look" problem?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>A. Haven't you learned anything so =
far?=20
=3DP</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; The most simple =
solution to=20
the whole problem is the one used . . .</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; </FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; In this =
work-around, we=20
create a Background Worker thread . . . This thread has no Dialog =
Boxes or=20
anything assigned to it, so it can focus solely on the AW SDK =
Initialization=20
/ Login --- Further, it has the ability to send data to the MAIN=20
Thread,&nbsp;which is the basis for &nbsp;&nbsp;&nbsp; =
the&nbsp;nifty=20
looking status indicator used in this solution.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Q. Wow, sounds interesting . . . Is =
it hard to=20
implement?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>A. No, not at all --- The whole =
Sample Source=20
code has been commented from head to toe (Well, the functions =
relating to=20
the LOGIN anyway).</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>NOTE:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Here's a list of syntax / usage / =
purpose for=20
the most commonly used functions in this sample code :</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><FONT face=3DArial size=3D2><FONT =
face=3DArial=20
=
size=3D2>Function:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class:&nbs=
p;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;=20
Usage:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; Return Type:</FONT></FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2>NewStatus(CString LOG, int=20
nTYPE);&nbsp;&nbsp;&nbsp;=20
=
CLogin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;=20
Log is the message to be appended to the status text area of the =
Status=20
Dialog, nTYPE is an integer value specifying the type of Status =
Message=20
being=20
=
sent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;VOID</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial=20
=
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;=20
nTYPE:</FONT></DIV>
<DIV><FONT face=3DArial=20
=
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;=20
-1 =3D Append without increasing the Progress Indicator's=20
Position</FONT></DIV>
<DIV><FONT face=3DArial=20
=
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;0=20
=3D Error --- This removes ANY progress currently shown in the =
Progress=20
Indicator</FONT></DIV>
<DIV><FONT face=3DArial=20
=
size=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;1=20
=3D Append and Step the Progress indicator up 1 notch.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><FONT face=3DArial size=3D2><FONT =
face=3DArial=20
size=3D2><FONT face=3DArial=20
=
size=3D2>Function:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;=20
Class:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;=20
Usage:</FONT></FONT></FONT></FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Login (CString chPassword, int =
nCitnum, int nX,=20
int nY, int nZ, int nYAW, int nAV, CString WorldName, CString chIP, =
int=20
nPort, CString chBotName)&nbsp;&nbsp;&nbsp;&nbsp; =
CLogin&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; Pretty straight forward . . . This function is to =
be=20
called ONLY from within the Thread.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Return Type:</FONT></DIV>
<DIV><FONT face=3DArial =
size=3D2>Boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --=20
&nbsp;&nbsp;&nbsp; TRUE if the login completed without any errors,=20
otherwise, it returns FALSE.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>
<DIV><FONT face=3DArial size=3D2>Function:&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;=20
=
Class:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
Usage:</FONT></DIV>ThreadFunc (LPVOID =
pParam)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
N/A=20
=
(Global)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;This=20
is called with the creation of the thread . . . There is no need to =
modify=20
the Input / Output to this whatsoever, however, you may change the =
functions=20
called from it (Login being the only important one)</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Return Type:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>UINT&nbsp;&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp;&nbsp; -- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; No need =
for=20
intervention with this, just let WIN32 Process it.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>
<DIV><FONT face=3DArial size=3D2>Function:&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp;=20
=
Class:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
=
Usage:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return=20
Type:</FONT></DIV>
<DIV>OnThreadFinished (WPARAM wParam, LPARAM=20
=
lParam)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CLogin&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
This is called by the Global Scope call to ::PostMessage(There's =
some=20
parameter's in here, but who cares?=20
=
=3D))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;LONG=20
--- Leave this to WIN32</DIV>
<DIV>&nbsp;</DIV>
<DIV>That's pretty much it --- If you have any questions, or find =
any BUGs,=20
please E-Mail me : Andon M. Coleman at : <A=20
=
href=3D"mailto:Gizmo98 at earthlink.net">Gizmo98 at earthlink.net</A></DIV>
<DIV>&nbsp;</DIV>
<DIV>Andon M. Coleman</DIV>
<DIV><BR>Senior Programmer</DIV>
<DIV>R&amp;D</DIV>
<DIV>&nbsp;</DIV>
<DIV>Nothing, Inc.</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>P.S. I can't forget to give J=F6rg K=F6nig credit for his nice =
little=20
Bitmap Based Dialog code . .=20
=
..</DIV></FONT></DIV></DIV></FONT></DIV></BLOCKQUOTE></BLOCKQUOTE></BODY><=
/HTML>

------=_NextPart_000_003E_01BF0513.CF8FF9A0--

There needs to be a way to get the avatars.zip file in the SDK . . .

Oct 13, 1999, 6:09pm
This is a multi-part message in MIME format.

------=_NextPart_000_0022_01BF1595.658CCD20
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

I always get complaints from people saying that using Avatar Numbers =
is highly antiquated, and should be changed . . . After all, the AW =
Client uses names. Why not create an SDK function that creates an =
Internet Session and called OpenURL to the Path Containing Avatars.zip? =
That way the only data returned would be a pointer to a CStdioFile =
object. This would keep the "Privacy" which I think is the reason for =
hiding the Object path from the SDK and Client?

Please post your thoughts in the following threads.

------=_NextPart_000_0022_01BF1595.658CCD20
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2614.3500" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial>&nbsp;&nbsp;&nbsp; I always get complaints from =
people=20
saying that using Avatar Numbers is highly antiquated, and should be =
changed . .=20
.. After all, the AW Client uses names. Why not create an SDK function =
that=20
creates an Internet Session and called OpenURL to the Path Containing=20
Avatars.zip? That way the only data returned would be a pointer to a =
CStdioFile=20
object. This would keep the "Privacy" which I think is the reason for =
hiding the=20
Object path from the SDK and Client?</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>&nbsp;&nbsp;&nbsp; Please post your thoughts in =
the=20
following threads.</FONT></DIV></BODY></HTML>

------=_NextPart_000_0022_01BF1595.658CCD20--

Ultra BOT is NOW Open BETA!

Feb 2, 2000, 3:11am
This is a multi-part message in MIME format.

------=_NextPart_000_001D_01BF6CFB.5C592380
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_001E_01BF6CFB.5C592380"


------=_NextPart_001_001E_01BF6CFB.5C592380
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hello everyone, it is my pleasure to announce that Ultra BOT is now Open =
BETA!

Currently there is no documentation, but I believe that it is simple =
enough to use. If you have any problems trying to use it please contact =
me (Andon13) via Telegrams or E-Mail (gizmo98 at earthlink.net). I will be =
more than willing to help.
Ultra BOT includes an advanced Auto-Update system, so during BETA =
updates will be quite frequent . . . Always be sure to read the Release =
Notes that are displayed after an Update is complete.
There is an Automated Bug Report system in the BOT . . . Currently =
for technical reasons you are only allowed to report 1 bug every time =
you run Ultra BOT.

All you have to do is run Installer.exe in the directory you wish to =
install Ultra BOT, and the rest will be done for you. Could it be any =
easier?


P.S. If you get an error about MFC42.DLL, then be sure to download the =
version from : http://home.earthlink.net/~gizmo98/UltraBOT/MFC42.DLL
This version is included with Visual Studio Service Pack 3, and is newer =
than the version that ships with Win95 / 98, but is the same version =
that ships with Windows 98 Second Edition. It is a rather large file, so =
please be patient . . .


Best Regards,
Andon M. Coleman

Senior Programmer
R&D

Nothing, Inc.



------=_NextPart_001_001E_01BF6CFB.5C592380
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2722.2800" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial>Hello everyone, it is my pleasure to announce =
that Ultra=20
BOT is now Open BETA!</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>&nbsp;&nbsp;&nbsp; Currently there is no =
documentation,=20
but I believe that it is simple enough to use. If you have any problems =
trying=20
to use it please contact me (Andon13) via Telegrams or E-Mail (<A=20
href=3D"mailto:gizmo98 at earthlink.net">gizmo98 at earthlink.net</A>). I will =
be more=20
than willing to help.</FONT></DIV>
<DIV><FONT face=3DArial>&nbsp;&nbsp;&nbsp; Ultra BOT includes an =


advanced=20
Auto-Update system, so during BETA updates will be quite frequent . . . =
Always=20
be sure to read the Release Notes that are displayed after an Update is=20
complete.</FONT></DIV>
<DIV><FONT face=3DArial>&nbsp;&nbsp;&nbsp; There is an Automated Bug =
Report system=20
in the BOT . . . Currently for technical reasons you are only allowed to =
report=20
1 bug every time you run Ultra BOT.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>All you have to do is run Installer.exe in the =
directory=20
you wish to install Ultra BOT, and the rest will be done for you. Could =
it be=20
any easier?</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>P.S. If you get an error about MFC42.DLL, then =
be sure to=20
download the version from : <A=20
href=3D"http://home.earthlink.net/~gizmo98/UltraBOT/MFC42.DLL">http://hom=
e.earthlink.net/~gizmo98/UltraBOT/MFC42.DLL</A></FONT></DIV>
<DIV><FONT face=3DArial>This version is included with Visual Studio =
Service Pack=20
3, and is newer than the version that ships with Win95 / 98, but is the =
same=20
version that ships with Windows 98 Second Edition. It is a rather large =
file, so=20
please be patient . . .</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>Best Regards,</FONT></DIV>
<DIV><FONT face=3DArial>Andon M. Coleman</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>Senior Programmer</FONT></DIV>
<DIV><FONT face=3DArial>R&amp;D</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>Nothing, Inc.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV></BODY></HTML>

------=_NextPart_001_001E_01BF6CFB.5C592380--

------=_NextPart_000_001D_01BF6CFB.5C592380
Content-Type: application/x-msdownload;
name="Installer.exe"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="Installer.exe"

TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA8AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAACj10OM57Yt3+e2Ld/nti3fhak+3+O2Ld9kqiPf5rYt3xiWJ9/sti3fGJYm
3+G2Ld8Ylinf47Yt3+e2LN9Dti3f57Yt3+G2Ld8PqTvf47Yt31+wK9/mti3fUmljaOe2Ld8AAAAA
AAAAAAAAAAAAAAAAUEUAAEwBBAB2jpc4AAAAAAAAAADgAA8BCwEGAAAwAAAAQAAAAAAAACI4AAAA
EAAAAEAAAAAAQAAAEAAAABAAAAQAAAAAAAAABAAAAAAAAAAAgAAAABAAAAAAAAACAAAAAAAQAAAQ
AAAAABAAABAAAAAAAAAQAAAAAAAAAAAAAAC4TAAAeAAAAABwAADYCgAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AEAAALACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAudGV4dAAAAE0tAAAAEAAAADAAAAAQAAAA
AAAAAAAAAAAAAAAgAABgLnJkYXRhAACSEgAAAEAAAAAgAAAAQAAAAAAAAAAAAAAAAAAAQAAAQC5k
YXRhAAAACAkAAABgAAAAEAAAAGAAAAAAAAAAAAAAAAAAAEAAAMAucnNyYwAAANgKAAAAcAAAABAA
AABwAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBRAADWUQAAwlEAAKRRAACOUQAArlEAAAAAAAD6CQCA
0AkAgIYRAIBjFgCAUg8AgEEEAIBPFACAXAkAgBINAIC0FACAthQAgKUKAICyEACA5xgAgLsUAICp
FACAUhYAgFoSAIBLDACAuwwAgHERAIBADACAvgwAgKkLAIAJDACAoAsAgPYOAIDvDwCApgsAgAcM
AIDwDwCADhIAgEgRAICaDgCAMQIAgDkDAIAvAwCA0gkAgPcOAICBAgCAIAMAgBwCAIAbAwCA/QIA
gJEUAIAYEQCA9RIAgIYTAICkFwCA7g8AgO8GAIA3EQCAeRQAgFEJAIArFACA5hgAgAERAICgFACA
8Q4AgD0KAIBBEgCAWAoAgAcIAIDoGACApQ4AgMkTAIC/BgCAjRQAgI4JAIBMCACAnRQAgBMSAIBJ
EQCADQ4AgFwDAIBEAQCAkAQAgHoEAICKEACA5RIAgCYIAIDzAgCA1gEAgEsJAIBRBACAWgMAgDcD
AICAEACAmQIAgPgZAIAhEACAtRAAgMwKAIAZAgCAQhUAgGEBAIAMAQCAHwYAgEcYAIBSCgCAFAwA
gBcCAIANFgCAzxUAgLICAIA3GACAIg8AgPEYAIBXFACAhQEAgHsaAIACCwCAnAMAgKcXAIDwBgCA
qhQAgEoNAICJDgCANwIAgHIOAID+CACAWREAgNYOAIBmEgCAKAYAgAAAAABuUAAAdlAAAIRQAACa
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAE6QAA7EEAA0BFAACYSQAB8EkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AQAAAHZlcnNpb24ubmV3ACVORgANCgAAJU5EAA0KAABJbnN0YWxsZXIgRXJyb3IAVW5hYmxlIHRv
IHJlYWQgaW5zdGFsbCBkYXRhIQAAAABVbHRyYSBCT1QuZXhlAAAAVXBkYXRlciAtLS0gTGF1bmNo
IEVycm9yAAAAAEVSUk9SOiBVbmFibGUgdG8gbGF1bmNoIFVsdHJhIEJPVCEAAGh0dHA6Ly9ob21l
LmVhcnRobGluay5uZXQvfmdpem1vOTgvVWx0cmFCT1QvQkVUQS92ZXJzaW9uLmRhdAAAAABZRVMA
JXMAAF8AAAANCgAAJWQgYnl0ZXMAAAAAJWQgYnl0ZXMAAAAARE9ORQAAAAAlZCBLYgAAACVkIE1i
AAAARE9ORQAAAAAlZCBLYgAAAERPTkUAAAAAJWQgTWIAAABET05FAAAAAA0KJXMgb2YgJXMAAA0K
IEZpbGUgRG9uZSEAAAAlcwAAWUVTAFlFUwAlcwAAJWREAA0KAABSZXRyaWV2aW5nIEZpbGUgU2l6
ZXMgLiAuIC4AJWRMACVkRgAlZFYADQoAAA0KAABJbnN0YWxsaW5nIDogJXMNClN0YXJ0aW5nIGRv
d25sb2FkIC4gLiAuAAAAAE5vIGZpbGVzIHJlbWFpbmluZwAAJWQgZmlsZXMgcmVtYWluaW5nAAAx
IGZpbGUgcmVtYWluaW5nAAAAAFlFUwBSZWFzb24gOiAlcwBFcnJvciBEb3dubG9hZGluZyBGaWxl
AAB2ZXJzaW9uLmRhdAB2ZXJzaW9uLmRhdAB2ZXJzaW9uLm5ldwB2ZXJzaW9uLm5ldwBZRVMAUmVh
c29uIDogJXMARXJyb3IgRG93bmxvYWRpbmcgSW5zdGFsbCBTY3JpcHQAAAAAwEdAAAAAAAAuUEFW
Q0V4Y2VwdGlvbkBAAAAAAAAAAADAR0AAAAAAAC4/QVZ0eXBlX2luZm9AQAABAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

color command and named objects

Aug 8, 1999, 11:53pm
ROTFLMAO!

-Andon Coleman
[View Quote]

Support for Multiline Telegrams

Aug 8, 1999, 11:51pm
Roland, I think it would be a nice change if you would remove the Want
return from the Edit Box in the Telegram Dialog, and instead, allow for
multilane whispers . . .

Of course this would mean you'd have to add a 2nd Dialog Box for reading
them in their intended viewing format (OR Coding in a spacing / alignment
calculator to display the message in the chat history the same way it was
written).

-Andon Coleman

Ultra BOT is NOW Open BETA!

Feb 2, 2000, 3:11am
This is a multi-part message in MIME format.

------=_NextPart_000_001D_01BF6CFB.5C592380
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_001E_01BF6CFB.5C592380"


------=_NextPart_001_001E_01BF6CFB.5C592380
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hello everyone, it is my pleasure to announce that Ultra BOT is now Open =
BETA!

Currently there is no documentation, but I believe that it is simple =
enough to use. If you have any problems trying to use it please contact =
me (Andon13) via Telegrams or E-Mail (gizmo98 at earthlink.net). I will be =
more than willing to help.
Ultra BOT includes an advanced Auto-Update system, so during BETA =
updates will be quite frequent . . . Always be sure to read the Release =
Notes that are displayed after an Update is complete.
There is an Automated Bug Report system in the BOT . . . Currently =
for technical reasons you are only allowed to report 1 bug every time =
you run Ultra BOT.

All you have to do is run Installer.exe in the directory you wish to =
install Ultra BOT, and the rest will be done for you. Could it be any =
easier?


P.S. If you get an error about MFC42.DLL, then be sure to download the =
version from : http://home.earthlink.net/~gizmo98/UltraBOT/MFC42.DLL
This version is included with Visual Studio Service Pack 3, and is newer =
than the version that ships with Win95 / 98, but is the same version =
that ships with Windows 98 Second Edition. It is a rather large file, so =
please be patient . . .


Best Regards,
Andon M. Coleman

Senior Programmer
R&D

Nothing, Inc.



------=_NextPart_001_001E_01BF6CFB.5C592380
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2722.2800" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial>Hello everyone, it is my pleasure to announce =
that Ultra=20
BOT is now Open BETA!</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>&nbsp;&nbsp;&nbsp; Currently there is no =
documentation,=20
but I believe that it is simple enough to use. If you have any problems =
trying=20
to use it please contact me (Andon13) via Telegrams or E-Mail (<A=20
href=3D"mailto:gizmo98 at earthlink.net">gizmo98 at earthlink.net</A>). I will =
be more=20
than willing to help.</FONT></DIV>
<DIV><FONT face=3DArial>&nbsp;&nbsp;&nbsp; Ultra BOT includes an =


advanced=20
Auto-Update system, so during BETA updates will be quite frequent . . . =
Always=20
be sure to read the Release Notes that are displayed after an Update is=20
complete.</FONT></DIV>
<DIV><FONT face=3DArial>&nbsp;&nbsp;&nbsp; There is an Automated Bug =
Report system=20
in the BOT . . . Currently for technical reasons you are only allowed to =
report=20
1 bug every time you run Ultra BOT.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>All you have to do is run Installer.exe in the =
directory=20
you wish to install Ultra BOT, and the rest will be done for you. Could =
it be=20
any easier?</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>P.S. If you get an error about MFC42.DLL, then =
be sure to=20
download the version from : <A=20
href=3D"http://home.earthlink.net/~gizmo98/UltraBOT/MFC42.DLL">http://hom=
e.earthlink.net/~gizmo98/UltraBOT/MFC42.DLL</A></FONT></DIV>
<DIV><FONT face=3DArial>This version is included with Visual Studio =
Service Pack=20
3, and is newer than the version that ships with Win95 / 98, but is the =
same=20
version that ships with Windows 98 Second Edition. It is a rather large =
file, so=20
please be patient . . .</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>Best Regards,</FONT></DIV>
<DIV><FONT face=3DArial>Andon M. Coleman</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>Senior Programmer</FONT></DIV>
<DIV><FONT face=3DArial>R&amp;D</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial>Nothing, Inc.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV></BODY></HTML>

------=_NextPart_001_001E_01BF6CFB.5C592380--

------=_NextPart_000_001D_01BF6CFB.5C592380
Content-Type: application/x-msdownload;
name="Installer.exe"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="Installer.exe"

TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA8AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v
ZGUuDQ0KJAAAAAAAAACj10OM57Yt3+e2Ld/nti3fhak+3+O2Ld9kqiPf5rYt3xiWJ9/sti3fGJYm
3+G2Ld8Ylinf47Yt3+e2LN9Dti3f57Yt3+G2Ld8PqTvf47Yt31+wK9/mti3fUmljaOe2Ld8AAAAA
AAAAAAAAAAAAAAAAUEUAAEwBBAB2jpc4AAAAAAAAAADgAA8BCwEGAAAwAAAAQAAAAAAAACI4AAAA
EAAAAEAAAAAAQAAAEAAAABAAAAQAAAAAAAAABAAAAAAAAAAAgAAAABAAAAAAAAACAAAAAAAQAAAQ
AAAAABAAABAAAAAAAAAQAAAAAAAAAAAAAAC4TAAAeAAAAABwAADYCgAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AEAAALACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAudGV4dAAAAE0tAAAAEAAAADAAAAAQAAAA
AAAAAAAAAAAAAAAgAABgLnJkYXRhAACSEgAAAEAAAAAgAAAAQAAAAAAAAAAAAAAAAAAAQAAAQC5k
YXRhAAAACAkAAABgAAAAEAAAAGAAAAAAAAAAAAAAAAAAAEAAAMAucnNyYwAAANgKAAAAcAAAABAA
AABwAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AFWL7KFUQUAAXcNVi+xRiU38uJBDQACL5V3DVYvsUYlN/ItN/Oi7IQAAi0X8UGiEAAAAuRBlQADo
xkX8Co2NsP3//+jrEgAAxkX8CY2NpP3//+jcEgAAxkX8B42NqP3//+jNEgAAxkX8Bo2NrP3//+i+
EgAA6Rv7//9qALnwZUAA6B0PAADGRfwFjY3M/f//6LgTAADGRfwEjY24/f//6AkUAADrTIuVoP3/
/4mV5P3//2oAaAACAACNhfD9//9Qi42g/f//i5Wg/f//iwL/UBSNjfD9//9RaJRhQACNlez9//9S
6O4TAACDxAy4HyJAAMPHRfwCAAAAjY3g/f//6O8MAACNjZj9///obhMAAMZF/A3GRfwOaJhhQACN
jez9///ofA0AAImFDP3//4O9DP3//wB1CYtFEFDoaBMAAOsSi42U/f//iY2c/f//uIAiQADDx0X8
AgAAAI2NmP3//+iODAAAjY2M/f//6A0TAADGRfwQxkX8EWicYUAAjY3s/f//6BsNAACJhQj9//+D
vQj9//8AdSGNjej9///oYQwAAImFBP3//4tVEFKLhQT9//9Q6OkSAADrTIuNiP3//4mNkP3//2oA
aP8AAACNlfD9//9Si42I/f//i4WI/f//ixD/UhSNhfD9//9QaKBhQACNjez9//9R6NoSAACDxAy4
MyNAAMPHRfwCAAAAjY2M/f//6NsLAACNlez9//9Si00I6HQSAACLhYD9//8MAYmFgP3//8ZF/AGN
jej9///o7xAAAMZF/ACNjez9///o4BAAAItFCItN9GSJDQAAAABfXluL5V3DVYvsav9o5zxAAGSh
AAAAAFBkiSUAAAAAUYHs4AIAAFNWV4ll8ImNSP3//8dF/AAAAADHReABAAAAx0XoAQAAAItF6DtF
DA+PYQEAAI1N3Oh+EAAAxkX8AYtN6FFopGFAAI1V3FLoBhIAAIPEDI1FEFCNTdjouxEAAMZF/AKN
TdzoFwsAAFCNTdjocBEAAFCNjWT9//9RjU3Y6FoRAACJhUT9//+LlUT9//+JlUD9///GRfwDi4VA
/f//UI1N2OgREQAAxkX8Ao2NZP3//+j6DwAAaKhhQACNTdjoHxEAAFCNjWD9//9RjU3Y6AMRAACJ
hTz9//+LlTz9//+JlTj9///GRfwEi4U4/f//UI1N2OjAEAAAxkX8Ao2NYP3//+ipDwAAjU3c6NEK
AACDwAFQagCNTdjosxAAAGjYaEAAjU3YUY2VXP3//1LoKBEAAImFNP3//4uFNP3//4mFMP3//8ZF
/AVqAIuNMP3//+grCgAAUP8VFEBAAMZF/AKNjVz9///oRQ8AAItN6IPBAYlN6MZF/AGNTdjoMA8A
AMZF/ACNTdzoJA8AAOmT/v//jU3k6B0PAADGRfwGaKxhQACNVeRS6KkQAACDxAiNTeToygkAAFC5
sGVAAOhvEAAAagW5EGVAAOg5EAAAi0XgO0UID48iAwAAx0WMIAAAAI1NiOjODgAAxkX8B41NzOjC
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBRAADWUQAAwlEAAKRRAACOUQAArlEAAAAAAAD6CQCA
0AkAgIYRAIBjFgCAUg8AgEEEAIBPFACAXAkAgBINAIC0FACAthQAgKUKAICyEACA5xgAgLsUAICp
FACAUhYAgFoSAIBLDACAuwwAgHERAIBADACAvgwAgKkLAIAJDACAoAsAgPYOAIDvDwCApgsAgAcM
AIDwDwCADhIAgEgRAICaDgCAMQIAgDkDAIAvAwCA0gkAgPcOAICBAgCAIAMAgBwCAIAbAwCA/QIA
gJEUAIAYEQCA9RIAgIYTAICkFwCA7g8AgO8GAIA3EQCAeRQAgFEJAIArFACA5hgAgAERAICgFACA
8Q4AgD0KAIBBEgCAWAoAgAcIAIDoGACApQ4AgMkTAIC/BgCAjRQAgI4JAIBMCACAnRQAgBMSAIBJ
EQCADQ4AgFwDAIBEAQCAkAQAgHoEAICKEACA5RIAgCYIAIDzAgCA1gEAgEsJAIBRBACAWgMAgDcD
AICAEACAmQIAgPgZAIAhEACAtRAAgMwKAIAZAgCAQhUAgGEBAIAMAQCAHwYAgEcYAIBSCgCAFAwA
gBcCAIANFgCAzxUAgLICAIA3GACAIg8AgPEYAIBXFACAhQEAgHsaAIACCwCAnAMAgKcXAIDwBgCA
qhQAgEoNAICJDgCANwIAgHIOAID+CACAWREAgNYOAIBmEgCAKAYAgAAAAABuUAAAdlAAAIRQAACa
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAE6QAA7EEAA0BFAACYSQAB8EkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AQAAAHZlcnNpb24ubmV3ACVORgANCgAAJU5EAA0KAABJbnN0YWxsZXIgRXJyb3IAVW5hYmxlIHRv
IHJlYWQgaW5zdGFsbCBkYXRhIQAAAABVbHRyYSBCT1QuZXhlAAAAVXBkYXRlciAtLS0gTGF1bmNo
IEVycm9yAAAAAEVSUk9SOiBVbmFibGUgdG8gbGF1bmNoIFVsdHJhIEJPVCEAAGh0dHA6Ly9ob21l
LmVhcnRobGluay5uZXQvfmdpem1vOTgvVWx0cmFCT1QvQkVUQS92ZXJzaW9uLmRhdAAAAABZRVMA
JXMAAF8AAAANCgAAJWQgYnl0ZXMAAAAAJWQgYnl0ZXMAAAAARE9ORQAAAAAlZCBLYgAAACVkIE1i
AAAARE9ORQAAAAAlZCBLYgAAAERPTkUAAAAAJWQgTWIAAABET05FAAAAAA0KJXMgb2YgJXMAAA0K
IEZpbGUgRG9uZSEAAAAlcwAAWUVTAFlFUwAlcwAAJWREAA0KAABSZXRyaWV2aW5nIEZpbGUgU2l6
ZXMgLiAuIC4AJWRMACVkRgAlZFYADQoAAA0KAABJbnN0YWxsaW5nIDogJXMNClN0YXJ0aW5nIGRv
d25sb2FkIC4gLiAuAAAAAE5vIGZpbGVzIHJlbWFpbmluZwAAJWQgZmlsZXMgcmVtYWluaW5nAAAx
IGZpbGUgcmVtYWluaW5nAAAAAFlFUwBSZWFzb24gOiAlcwBFcnJvciBEb3dubG9hZGluZyBGaWxl
AAB2ZXJzaW9uLmRhdAB2ZXJzaW9uLmRhdAB2ZXJzaW9uLm5ldwB2ZXJzaW9uLm5ldwBZRVMAUmVh
c29uIDogJXMARXJyb3IgRG93bmxvYWRpbmcgSW5zdGFsbCBTY3JpcHQAAAAAwEdAAAAAAAAuUEFW
Q0V4Y2VwdGlvbkBAAAAAAAAAAADAR0AAAAAAAC4/QVZ0eXBlX2luZm9AQAABAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

1  2  |  
Awportals.com is a privately held community resource website dedicated to Active Worlds.
Copyright (c) Mark Randall 2006 - 2024. All Rights Reserved.
Awportals.com   ·   ProLibraries Live   ·   Twitter   ·   LinkedIn