Jump to content
DeltaWorlds

All Activity

This stream auto-updates

  1. Last week
  2. Charlie

    Starsrpg

  3. Earlier
  4. deltaworlds starsrpg 0.64S 3.04W 0.01a 183 church of Endura city a 'real city' deltaworlds asecret 48.74S 59.67W 0.89a 284 asecret trustme church #1 Mega space stations Promenade chapels deltaworlds deepspace 60.89S 16.05E 0.00a 79
  5. Charlie

    Starsrpg

    The training worlds in starsrpg has 9 hidden crystals. Using the stargate at the main castle there are 6 connected worlds to the training crystals. Some at the start castle some scattered across the 6 locations.
  6. About me

    Originally from the universe outerworlds I opened the world mystic in 2004 and have 21 years of world backups i try to create an immersive experience by providing starship travel around deltaworlds.  

     

    A huge Stargate database from aw awteen and my own collection of backups or personal builds available 

     

     

  7. Charlie

    Starsrpg

    My dream concept would be users creating their own characters across various locations so the worlds would be inhabited. Like a npc or more prominent characters. Interactive ships traveling between worlds. Using the stargates to travel the universe. Creating in world events and activity
  8. Charlie

    Deepspace

    Charlie recent activity was on board the Aurora a colony starship on the boarder between universe zones
  9. Charlie

    Asecret

    Key locations. Ocean city of Crystalia a city one of many mystic worlds ancient inspired cities from Stargate Atlantis.
  10. Charlie

    Starsrpg

    We could describe StarsRPG as a unique blend of exploration, adventure, and learning, offering users a chance to delve into the mysteries of space while navigating through immersive, interactive environments. The story of starsrpg spans across different worlds. Mystic lands aw Aw 7693.07n 23835.75w -0.03a Asecret world the land and ocean based locations. Deepspace space locations . Various mega stations and starships to be assigned to. Options for playing. The main story is featured at every start station. Follow the on going story and read past mission blogs. Follow the locations to the training worlds. Using the modified Stargate Try and locate the hidden crystals. Follow the location to the castle explore the limbo void of the Stargate worlds network City location a real city called Endura city Use the stargates to travel to other worlds and locations across the universe. Key activity is to explore
  11. Charlie

    Asecret

    A mystic colony world after ages of growth.
  12. Charlie

    Deepspace

    Call for a ride and starships respond to take you around the universe. Beyond the rides travel to the space locations
  13. #define AW_NO_FUNCTION_MAPPING // for UTF-8 or older single-byte and multi-byte character sets #include <windows.h> #include "reasons.h" #include "aw.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #define MAX_AVATARS_IN_SCENE 35 #define MAX_HUD_LINES 10 #define MAX_LINE_LENGTH 50 #define MAX_HUD_LINE_LINES 5 #define HEARTBEAT_INTERVAL 30 struct AVATAR { int session; char name[18]; }; struct HUD_LINE { int id; int num_lines; char lines[MAX_HUD_LINE_LINES][MAX_LINE_LENGTH + 1]; }; struct AVATAR avatars[MAX_AVATARS_IN_SCENE]; struct HUD_LINE hud_lines[MAX_HUD_LINES]; void handle_avatar_add(void); void handle_avatar_delete(void); void handle_address(int rc); void handle_chat(void); void update_hud_messages(void); void wrap_line(const char* line, struct HUD_LINE* hud_line, int max_line_length); void send_heartbeat(void); // Prototype heartbeat function, keeps bot from timing out int main(int argc, char* argv[]) { int rc; // Check command line if (argc < 4) { printf("To begin type: DWbot1.exe cit-number password world\n", argv[0]); return 1; } // Initialize Delta Worlds API rc = aw_init(AW_BUILD); if (rc != RC_SUCCESS) { printf("Unable to initialize API (reason %d)\n", rc); return 1; } // Variable to track last heartbeat time time_t last_heartbeat = time(NULL); // Install handler for avatar_add, avatar_delete, and chat events aw_event_set(AW_EVENT_AVATAR_ADD, handle_avatar_add); aw_event_set(AW_EVENT_AVATAR_DELETE, handle_avatar_delete); aw_event_set(AW_EVENT_CHAT, handle_chat); /* Install callback for aw_address */ aw_callback_set(AW_CALLBACK_ADDRESS, handle_address); /* create bot instance */ if ((rc = aw_create("auth.deltaworlds.com", 6671, 0)) != 0) { printf("Unable to create bot instance (reason %d)\n", rc); exit(1); } // Log bot into the universe aw_int_set(AW_LOGIN_OWNER, atoi(argv[1])); aw_string_set(AW_LOGIN_PRIVILEGE_PASSWORD, argv[2]); aw_string_set(AW_LOGIN_APPLICATION, "OCMBOTv1"); aw_string_set(AW_LOGIN_NAME, "HUDchat"); rc = aw_login(); if (rc != RC_SUCCESS) { printf("Unable to login (reason %d)\n", rc); return 1; } // Enter bot into the world rc = aw_enter(argv[3]); if (rc != RC_SUCCESS) { printf("Unable to enter world (reason %d)\n", rc); return 1; } // Announce position in the world aw_int_set(AW_MY_X, 1000); // 1W aw_int_set(AW_MY_Z, -7000); // 7S aw_int_set(AW_MY_YAW, 2250); // Face towards GZ rc = aw_state_change(); if (rc != RC_SUCCESS) { printf("Unable to change state (reason %d)\n", rc); return 1; } // Main event loop while (aw_wait(-1) == RC_SUCCESS) { if (difftime(time(NULL), last_heartbeat) >= HEARTBEAT_INTERVAL) { send_heartbeat(); last_heartbeat = time(NULL); // Update the last heartbeat time } // Close everything down aw_destroy(); aw_term(); return 0; } } void send_heartbeat() { // Heartbeat function - sends clear command to chat to keep from timing out. aw_say("/clear"); } void handle_avatar_add(void) { int i; int rc; // Add avatar to the scene for (i = 0; i < MAX_AVATARS_IN_SCENE; i++) { if (avatars[i].session == 0) { avatars[i].session = aw_int(AW_AVATAR_SESSION); strcpy(avatars[i].name, aw_string(AW_AVATAR_NAME)); break; } } aw_address(aw_int(AW_AVATAR_SESSION)); // Say Hello (remove slashes from the following lines to enable greeting message) // // char message[100]; // static char avatar_name[AW_MAX_ATTRIBUTE]; // strcpy(avatar_name, aw_string(AW_AVATAR_NAME)); // sprintf(message, "Ahoy there %s!", avatar_name); // aw_say(message); } void handle_avatar_delete(void) { int i; // Remove avatar from the scene for (i = 0; i < MAX_AVATARS_IN_SCENE; i++) { if (avatars[i].session == aw_int(AW_CHAT_SESSION)) { avatars[i].session = 0; // Mark struct as unused strcpy(avatars[i].name, ""); break; } } // Say Bye (remove slashes from the following lines to enable farewell message) // // char message[100]; // static char avatar_name[AW_MAX_ATTRIBUTE]; // strcpy(avatar_name, aw_string(AW_AVATAR_NAME)); // sprintf(message, "Bye, %s!", avatar_name); // aw_say(message); } void handle_address(int rc) { /* Keep in mind that AW_AVATAR_NAME is not defined within the context of this callback */ int i; char hud_message[100]; char name[256]; char msg[256]; strcpy(name, "<UNKNOWN>"); /* Find name of the avatar */ for (i = 0; i < MAX_AVATARS_IN_SCENE; i++) { if (avatars[i].session == aw_int(AW_AVATAR_SESSION)) { strcpy(name, avatars[i].name); break; } } if (rc != RC_SUCCESS) { sprintf(msg, "%s, I cannot determine your IP address (reason %d)", name, rc); } else { int address; unsigned char* p = (unsigned char*)&address; address = aw_int(AW_AVATAR_ADDRESS); /* The address is in network byte order which means that the most significant byte comes first in memory */ sprintf(hud_message, "%s [%u.%u.%u.%u] enters", name, p[0], p[1], p[2], p[3]); /* log the event to the console */ printf("[%u.%u.%u.%u] %s entered chat.\n", p[0], p[1], p[2], p[3], name); // Shift up old messages etc for (i = 0; i < MAX_HUD_LINES - 1; i++) { hud_lines[i].id = hud_lines[i + 1].id; hud_lines[i].num_lines = hud_lines[i + 1].num_lines; for (int j = 0; j < hud_lines[i].num_lines; j++) { strcpy(hud_lines[i].lines[j], hud_lines[i + 1].lines[j]); } } hud_lines[MAX_HUD_LINES - 1].id = 0; // We don't need the session ID for this message wrap_line(hud_message, &hud_lines[MAX_HUD_LINES - 1], MAX_LINE_LENGTH); // Update HUD messages update_hud_messages(); } } void handle_chat(void) { char message[301]; static char avatar_name[AW_MAX_ATTRIBUTE]; strcpy(avatar_name, aw_string(AW_AVATAR_NAME)); // Check for the "/clear" command if (strcmp(aw_string(AW_CHAT_MESSAGE), "/clear") == 0) { // Clear HUD for (int i = 0; i < MAX_HUD_LINES; i++) { hud_lines[i].id = 0; hud_lines[i].num_lines = 0; } // Display "Chat cleared" message wrap_line("Chat cleared", &hud_lines[MAX_HUD_LINES - 1], MAX_LINE_LENGTH); } else { // Handle normal chat messages snprintf(message, 300, "%s: %s", avatar_name, aw_string(AW_CHAT_MESSAGE)); // Shift up old messages for (int i = 0; i < MAX_HUD_LINES - 1; i++) { hud_lines[i].id = hud_lines[i + 1].id; hud_lines[i].num_lines = hud_lines[i + 1].num_lines; for (int j = 0; j < hud_lines[i].num_lines; j++) { strcpy(hud_lines[i].lines[j], hud_lines[i + 1].lines[j]); } } // Check if the chat message starts with "/me" and remove for action if (strncmp(aw_string(AW_CHAT_MESSAGE), "/me", 3) == 0) { snprintf(message, 300, "%s %s", avatar_name, aw_string(AW_CHAT_MESSAGE) + 4); // +4 to remove the "/me " from the message } hud_lines[MAX_HUD_LINES - 1].id = aw_int(AW_CHAT_SESSION); wrap_line(message, &hud_lines[MAX_HUD_LINES - 1], MAX_LINE_LENGTH); } // Update HUD messages update_hud_messages(); } void wrap_line(const char* line, struct HUD_LINE* hud_line, int max_line_length) { const char* line_end = line + strlen(line); const char* line_start = line; hud_line->num_lines = 0; while (line_start < line_end && hud_line->num_lines < MAX_HUD_LINE_LINES) { const char* line_break = line_start + max_line_length; if (line_break > line_end) { line_break = line_end; } else { while (line_break > line_start && *line_break != ' ') { line_break--; } if (line_break == line_start) { line_break = line_start + max_line_length; } } strncpy(hud_line->lines[hud_line->num_lines], line_start, line_break - line_start); hud_line->lines[hud_line->num_lines][line_break - line_start] = '\0'; hud_line->num_lines++; line_start = line_break; while (*line_start == ' ') { line_start++; } } } void update_hud_messages(void) { int rc; // Destroy old HUD elements for (int i = 0; i < MAX_HUD_LINES; i++) { for (int j = 0; j < MAX_HUD_LINE_LINES; j++) { aw_hud_destroy(0, i * MAX_HUD_LINE_LINES + j + 1); } } // Create new HUD elements int y_offset = 0; for (int i = 0; i < MAX_HUD_LINES; i++) { for (int j = 0; j < hud_lines[i].num_lines; j++) { // create the HUD element aw_int_set(AW_HUD_ELEMENT_TYPE, AW_HUD_TYPE_TEXT); aw_string_set(AW_HUD_ELEMENT_TEXT, hud_lines[i].lines[j]); aw_int_set(AW_HUD_ELEMENT_ID, y_offset + 1); aw_int_set(AW_HUD_ELEMENT_SESSION, 0); aw_int_set(AW_HUD_ELEMENT_ORIGIN, AW_HUD_ORIGIN_TOP_LEFT); aw_float_set(AW_HUD_ELEMENT_OPACITY, 1.0f); aw_int_set(AW_HUD_ELEMENT_X, -64); aw_int_set(AW_HUD_ELEMENT_Y, 50 + y_offset * 28); // Adjust the spacing between lines aw_int_set(AW_HUD_ELEMENT_Z, 1); aw_int_set(AW_HUD_ELEMENT_FLAGS, AW_HUD_ELEMENT_FLAG_CLICKS); aw_int_set(AW_HUD_ELEMENT_SIZE_X, 800); aw_int_set(AW_HUD_ELEMENT_SIZE_Y, 30); // Increase the text size aw_int_set(AW_HUD_ELEMENT_FLAGS, AW_HUD_ELEMENT_FLAG_TRANSITION | true); // Set the color to green for the IP address and name announcement message if (strstr(hud_lines[i].lines[j], "enters") != NULL && strstr(hud_lines[i].lines[j], "[") != NULL && strstr(hud_lines[i].lines[j], "]") != NULL) { aw_int_set(AW_HUD_ELEMENT_COLOR, 0x00FF00); // Green color } else { aw_int_set(AW_HUD_ELEMENT_COLOR, 0xFFFFFF); // White color } rc = aw_hud_create(); if (rc != RC_SUCCESS) { printf("Unable to create HUD element (reason %d)\n", rc); } y_offset++; } } }
  14. Hello Everyone! As we get further down the line of modern advancements and the power of computers improving every day, we want to keep DeltaWorlds relevent to the masses, of course we will continue to support our AW version of DeltaWorlds but we are in the works to make a totally new client, based on the Second Life codebase. I am hoping to get certain worlds imported and or updated into the platform, along with lots of user friendly features that the base version of Second Life does not have. Our viewer code is going to be based on the open source repo of Firestorm, I am open to suggestions and whoever has experience with the OpenSim code. Currently our grid systems are private, but I hope to provide a public test later down the line.
  15. Greetings! We now have our universal custom avatar system working correctly in DeltaWorlds, you should now have your custom avatar synced in every world that has Custom Avatars enabled, we no longer need to rely on local worlds storing your custom avatar.
  16. Hello Everyone! Sorry for the change to the forums, I have decided I wanted to go with something more modern for us, especially as we will be expanding to event calendars and support for DW grid system that will run alongside DeltaWorlds 6.2! Please remember to create a new account as your old accounts will not transfer from PHPBB 3.x Thankyou in advance
  1. Load more activity
×
×
  • Create New...