Current edition: Vol.5, No.8, August 2002
 

Active Worlds News


Building Contest
Bot of the Month
Tech Support Tip
Worlds to Watch
Avatars101
AWEC News
A!!CT Celebration
Seattle Reunion
Hot Spots to Visit
AWEC Calendar

Resources

Building Links
Community Links
AWCOM Links

 

 

icon

 

icon

 

icon

 

 

Bot Of The Month Club

Courtesy of image

AWQoP (Active Worlds - Quest of Power) is an RPG which ideas began early in 2001. It was in hope that it would be a unique RPG and could not compare to other RPGs currently available in ActiveWorlds. Unfortunately, at the current time, the SDK was limited and made it difficult to create a setup to have a large world that was always monitored by the main bots of the RPG that changed in the summer of 2002. The new AW SDK came out with the global feature that allowed a single bot to manage the whole entire world, which made the project a lot simpler than before.

On the original plans of QoP, we would have had to query the whole entire world for the objects before they were created by the bot. With the new global feature, it allows us to create the objects, and does not require the query before creating them. Along with that important new feature, console messages were made available, and along with the bots ability to route chat, which makes it easy to block '/' commands or any other commands that are requested to the bot, which originally would be spammed in chat windows. Another important feature, but not of the SDK was the new corona feature, which gave the idea of having spell effects, using coronas. Finally, the features in version 3.4, avatar force and gesture forcing, which allows to set their race (avatar) and while in combat, set a gesture to make a better visual effect.

Currently all RPGs setup in Active Worlds are simple click fighting, sometimes you do not even have an inventory to work with. Quest of Power has a target structure to have the ability to not only be in a combat status, but a friendly status to hail NPCs.

struct CurrentTarget_Struct

{

int32 target_session; // Targets session number

int32 target_citnum; // Targets citizen number

int8 target_level; // Targets level

int8 target_type; // 1) PC, 2) NPC, 3) Object

};

Every time a user clicks, it compares the target session currently in their target structure, and then comparing it with the object or avatar it just clicked. If it is different than the original, it changes the information accordingly (Other RPGs should adopt this idea that currently only has a combat setup). PC stands for the client class, which is obviously the player in the game. NPC stands for the bot class, and every unique NPC setup in the QoP database is a bot, no objects here :). The object class is for a few things, particle effects for spells and the level effect, corpses of NPCs and clients, item drops and doors.

This project is totally developed in C/C++, which performance surpasses current VB RPG projects. Players’ information is held in structures, and every four minutes saved to the MySQL database that QoP runs off of. It saves the structure directly to the database, and loads it when required, items, loot (Information of what a NPC drops on death), books (crafting items), factions (NPCs faction towards players), and spells are all saved as structures in the database. Everything saved into the database by structures is created online using GM commands. The MySQL database also allows the project to publish information on the Internet using PHP scripting.

The crafting ability you will most likely find unique, taking your skill, intelligence, and wisdom, the program uses algorithms to decide the result item by using a 'base item'. If your skill is poor, along with your wisdom and intelligence, the item will most likely be weaker than the base item created. If your skill is excellent, along with your wisdom and intelligence being high, the item will be stronger than the base item. After the item is created, depending on the success of it, it can be feeble, normal or grand, your name is placed on the object and you have created your own item. It is possible that the item created could even be one of a kind.

To encourage the use of grouping, the RPG's experience factor becomes greater with the more members in your group. Using this formula: ((bot.kill_exp)*(grouptotal*4)) / (client->GetLevel()*(bot.kill_exp/2)), the client is the person with the greatest hate towards the NPC, bot is the NPC that was killed. As you can see, with this formula, the more members in your group, the more experience you will receive. The RPG allows up to six members per group.

To make it more interactive, scripting features have been added. With the scripting features, we have the ability of not only responses to text, but item hands in, and death of the NPC. Responses of it are, obviously say, triggerspawn (Makes a NPC spawn by its ID), exp, givegold, givelevel, spawn_item, and teleport. Each NPC has its own unique file under a Quests directory by the NPC type ID, and can contain up to 120k of information in text per NPC. The original script idea was taken from the EQEMu project image worked on, it allows easy changes and various features. %CHARNAME%, %CHARCLASS%, %CHARRACE%, and %CHARLEVEL% are all converted before they are said to the client. To comment, simply put a '#' and everything after it will be commented out.

The following script is for NPC ID 1, theirfor named 1.qst in the Quests dir. It is a demonstration script to present to any guests that QoP might have to show the bots scripting capabilities.

TRIGGER_TEXT:Hail: { #On text 'Hail' found in a string, it will say this
SAY: Hello %CHARNAME%. This is a demonstration of the [quest] scripts.
}
TRIGGER_TEXT:quest: {
SAY: With quest scripts, you have the ability for an NPC to talk to a player and other [addons] and tell [information] about yourself.
}
TRIGGER_TEXT:information: {
SAY: Your name is %CHARNAME%, your class is %CHARCLASS%, your race is %CHARRACE%, and you are level %CHARLEVEL%.
}
TRIGGER_TEXT:addons: {
SAY: With quest scripts, we have the ability to give a player items, experience, faction changes, aggro towards an NPC and change their level. Take a [free item] if you wish.
}
TRIGGER_TEXT:free item: {
SAY: Here is a free item to put into your inventory.
SPAWN_ITEM 1 #SPAWN_ITEM itemid
SAY: Err btw, could I have that item back? just type /handitem with its inventory id at the end...
SAY: To get your inventory ID of the item do /getinventory 1 10 (You have a max of 40 items in your inventory, this is listing the first 10)
SAY: On one line you should see LeftRing Test Drop, the number to the left is its inventory id.
}
TRIGGER_ITEM:1: {
SAY: Thanks for my item back!
EXP 1 #EXP expamt
GIVEGOLD 1 #GIVEGOLD goldamt
SAY: Now I shall banish you from here now that you understand how to respond to NPCs.
TELEPORT -5299 10 1001 -1072 #TELEPORT X Y Z YAW
}

The script is pretty much explains itself.

Skills will be very important to a player in the game; it not only determines your combat skills, but also spells casting abilities, and item crafting. Unlike current AW RPGs where everything is a click-fest (as if its a AW paintball game), you will have weapons and spells with delays, just like online RPGs such as EverQuest and Asherons Call. Players and NPCs have the ability to resist spells, depending on their resistance skill in the type (fire, cold, magic, poison, and disease), and the skill of the caster.

Objects are very important to the RPG, because of the idea of a visual representation of what you would normally see in just text on AW RPG's. When casting spells, each spell can have a maximum of eight particle effects (Objects usually with corona and/or lighting) that have different actions, surrounding the caster, or target, or having a bolt on a trajectory to a certain location. Objects will also be used for item drops and on death of a NPC or client. Corpses for clients must be retrieved to get their equipment and gold back if they had it on them and not in the bank. Corpses for NPCs can be looted by the group or person who received the experience for the kill using the /loot command (Hopefully in the future an inventory screen will be available). The final usage of them is the doors. Similar to the world Grimm, these doors are virtual and everyone sees them opening and closing at the same time. A unique part of the doors is for the rogue class, which will have the ability to pick locks to certain doors that no key has been created for, inside rewards will be greater, but so shall the risk.

Currently, the Quest of Power bot is being tested in Flagg005, thanks to Bowen for the world to test the project in. Members of the project are currently, image, the programmer of the project and Bowen, which has offered his services in object creation of buildings, and building the world. The project is currently seeking approval from AWCOM for new sponsorship. The original world for the project, AWQoP was given to Poseidon to pursue a project called AWRPG. It is in hope that the Quest of Power project will be public before December of 2002 (Plus a beta test before then). If you have any comments or suggestions about the project, please post them on the temporary QoP forums (http://qop.detriumguild.com).

If you're interested in finding out more about how to use the SDK, visit the SDK site for information!

Know of a bot that you'd like to see featured as the Bot of the Month? If so, contact us at newsletter@activeworlds.com.

NEXT MONTH: Lord Fett highlights his Paintball/Capture the Flag bot from his world Lugia.

 

 
  Active Worlds   |   Newsletter Home   |   Newsletter Archive   |   Contact Us    |   Disclaimer