Jump to content

Spirited

Administrator
  • Posts

    527
  • Joined

  • Last visited

Everything posted by Spirited

  1. Merged. And yeah, feel free to make changes. That's why it's open source!
  2. Summary: Conquer Online has been added to CurseForge! Current stage: Testing You can submit new mods on CurseForge through their website. These mods will not appear as mod packs or appear in the CurseForge client at this time (as we have no way to manage the addition and removal of mods). Instead, players will be able to download the mods and install them on their own. This can and will hopefully get better when the tooling for managing mods is complete (no start to this yet). Only client visual / interface mods are supported for now. Get involved: Please let me know if you have any feedback related to this project or ideas for tooling. Also, reach out if you'd like to test integration.
  3. Official Introduction Era of Faith was launched in June 2004. It is a western-style mythical MMORPG featuring a virtual medieval fantasy world where players can customise their game characters with different development directions and in-game weapons. "Heroes of Might and Magic Online" (Era of Faith) is a 2.5D MMORPG. This game was developed based on the well-known PC game "Heroes of Might and Magic", licensed to the Company by Ubisoft Entertainment SA. "Heroes of Might and Magic Online" is unique among the existing online games in the market because it combines the classical turn-based strategy game play of "Heroes of Might and Magic" with versatile online game features to meet the demands and demographics of online game players. "Heroes of Might and Magic Online" adopted the world view of "Heroes of Might and Magic". Players can choose to play a hero who belongs to one of the eight races, build up his own castle and lead an army to fight in hundreds of conquests. Interesting new features are also available to satisfy the needs of players who are interested in manipulating various strategies in various conquests. NetDragon offers players diverse virtual items in this game, including various virtual weaponry and castle building material, which add more fun for the players. Background Era of Faith, modified and rebranded to "Heroes of Might and Magic Online", entered the US market in April 2004 as an early alpha test. Unfortunately, the game wasn't a financial success in the US market and was quickly abandoned to favor marketing for Conquer Online (marketing using billboards in LA and other popular cities). Rather than abandoning Era of Faith as a whole, TQ kept the developing on and running the game as a Korean MMORPG. The English client, therefore, has a very limited feature set (missing a large portion of leveling and skills). Pictures / Videos The first private server of Era of Faith by CptSky allowed us to see modern screenshots of the game client. Please enjoy some of those screenshots, existing wallpapers, and existing videos below. Screenshots Videos Wallpapers Known Domains You can view old domains for Era of Faith using links to the Wayback Machine below: http://tqxy.com http://xy.99.com
  4. Did you make those yourself, or did the assets come from somewhere?
  5. These are the flags CptSky has in his source: [Flags] public enum Flags : int { None = 0x0000, PKField = 0x0001, //No PkPoints, Not Flashing... ChangeMap_Disable = 0x0002, //Unused... Record_Disable = 0x0004, //Do not save this position, save the previous PK_Disable = 0x0008, //Can't Pk Booth_Enable = 0x0010, //Can create booth Team_Disable = 0x0020, //Can't create team Teleport_Disable = 0x0040, //Can't use scroll Syn_Map = 0x0080, //Syndicate Map Prison_Map = 0x0100, //Prison Map Wing_Disable = 0x0200, //Can't fly Family = 0x0400, //Family Map MineField = 0x0800, //Mine Map CallNewbie_Disable = 0x1000, //Unused... RebornNow_Enable = 0x2000, //Blessed reborn NewbieProtect = 0x4000, //Newbie protection };
  6. It's not something I'd particularly enjoy when I'm trying to speed through dialog for a daily quest I've read a few times already. I'm pretty content with non-dynamic responses - it's actually very helpful. Memorization of options is helpful especially in Conquer when a lot of stuff is grindy / repetitive. That's why I think having a dynamic / rotation daily quest or two would be very nice to have. Both in freshness of content and offering different, higher rewards for completion.
  7. Well, I think it's mostly about expectations. If you were completing lots of daily quests, for example, you'd wanna see the same dialog options to quickly accept rewards and close dialogs. If you had to re-read options every time, that would get frustrating (or at least would frustrate me). It's a fun idea, though . Maybe it can be applied in another way, like new daily quests / randomized dailies that give extra rewards (in addition to the normal dailies). Have a daily that rotates and has new quests that get added.
  8. Oh! For clarification, I was thinking the random encounter would be all just a description of how they died heroically. Edit: You can also look up some ideas from Wuxia (the martial arts style Conquer Online imitates).
  9. I like the inclusivity of your gender selection, though I'd love to see something that also speaks to those who are non-binary as well. I was just talking about this problem to someone else, and how it might be cool to have "masculine" and "feminine" as options... but also maybe a way to select your character's voice (since all body models have different voices). That way you can also be inclusive to transgender people. But besides that, it looks really good. I like the general idea and story. Would be very awesome to really glorify their past life and give a random encounter to them (maybe using their account hash or something as a seed). Really make them starting out feeling like they're a champion of this goddess. Rather than going the direction of "You could die and move on if you'd like...", go in the direction of "given your past heroics, I ask you humbly to become my champion" (and possibly explain more of her role as goddess of the land and what you'd be protecting / fighting against if you accept.
  10. Hey there, If you're looking for linkback images to help advertise our board and help us grow with your server, here's a banner: And a few other images: Small Banner with Background Banner with Transparent Background (Dark Theme) Banner with Transparent Background (Light Theme) Again, good luck and have fun! Best Regards, Spirited & Staff
  11. Hey there, Got an Era of Faith private server you'd like to share? That's great! Before you do, please keep the following rules and guidelines in mind when advertising your server: Do not create an account with the name of your server just to advertise. Servers must not be shop focused or host real-money gambling. Outgoing links must contain a link back to Cooldown so we can grow to better serve you and the community. Outgoing links must be secured over HTTPS. Account passwords must be hashed before being stored in a database, i.e. no plaintext passwords. Account recovery must validate identity, i.e. please use email validation or security codes. Server owners must advertise their servers, not members of the community. Servers should not depend on dynamic DNS or VPN services such as Hamachi. Servers that break these rules or are found to be offline will be hidden. Threads should also not contain a large amount of images or text (please summarize your server). Server threads will be pinned as verified (starred) based on feature richness and server uptime. Lastly, remember to be open-minded and honest when accepting feedback! All servers have growing pains, and we're here to help. If you have any questions about these rules or how best to advertise here, feel free to reach out to me or another staff member. Good luck and have fun! Best Regards, Spirited & Staff
  12. Closed, server is down.
  13. Closed, server is down.
  14. Closed - server is down.
  15. Awesome! Thanks for this!
  16. Awesome! Thanks for sharing this. I might go in and add the screenshots you shared to a new pinned thread, if you don't mind.
  17. Background This implementation was once published to an underground forum for Conquer Online by Lateralus. Though it works for Conquer Online v4217 (Alpha), it also works for the alpha client of Era of Faith. The code below is publicly published with permission (granted way back in 2012). Code public class Legacy { private byte[] _cryptKey1, _cryptKey2, _cryptKey3, _cryptKey4; private CryptCounter _decryptCounter; private CryptCounter _encryptCounter; public bool Exchanged { get; private set; } public Legacy() { Exchanged = false; _decryptCounter = new CryptCounter(); _encryptCounter = new CryptCounter(); CreateKeys(); } public void Decrypt(byte[] Data) { for (int i = 0; i < Data.Length; i++) { Data[i] ^= Exchanged ? (byte)(_cryptKey4[_decryptCounter.Key2] ^ _cryptKey3[_decryptCounter.Key1]) : Data[i] ^= (byte)(_cryptKey2[_decryptCounter.Key2] ^ _cryptKey1[_decryptCounter.Key1]); _decryptCounter.Increment(); } } public unsafe void Decrypt(byte* lpData, int Length) { for (int i = 0; i < Length; i++) { lpData[i] ^= Exchanged ? (byte)(_cryptKey4[_decryptCounter.Key2] ^ _cryptKey3[_decryptCounter.Key1]) : lpData[i] ^= (byte)(_cryptKey2[_decryptCounter.Key2] ^ _cryptKey1[_decryptCounter.Key1]); _decryptCounter.Increment(); } } public void Encrypt(byte[] Data) { for (int i = 0; i < Data.Length; i++) { Data[i] ^= (byte)(_cryptKey1[_encryptCounter.Key1] ^ _cryptKey2[_encryptCounter.Key2]); _encryptCounter.Increment(); } } public unsafe void Encrypt(byte* lpData, int Length) { for (int i = 0; i < Length; i++) { lpData[i] ^= (byte)(_cryptKey1[_encryptCounter.Key1] ^ _cryptKey2[_encryptCounter.Key2]); _encryptCounter.Increment(); } } private void CreateKeys() { _cryptKey1 = new byte[0x100]; _cryptKey2 = new byte[0x100]; byte iKey1 = 0x1F; byte iKey2 = 0x3F; for (int i = 0; i < 0x100; i++) { _cryptKey1[i] = iKey1; _cryptKey2[i] = iKey2; iKey1 = (byte)(((byte)(iKey1 << 5) + 0xFD) * iKey1 + 7); iKey2 = (byte)((iKey2 * 0x7A - 0x31) * iKey2 - 0x1B); } } public void GenerateKeys(uint Token, uint AccountID) { _cryptKey3 = new byte[0x100]; _cryptKey4 = new byte[0x100]; int tmpkey1 = (int)((Token + AccountID) ^ 0x4321 ^ Token); int tmpkey2 = tmpkey1 * tmpkey1; byte[] tmp1 = BitConverter.GetBytes(tmpkey1); byte[] tmp2 = BitConverter.GetBytes(tmpkey2); for (int i = 0; i < 256; i++) { _cryptKey3[i] = (byte)(_cryptKey1[i] ^ tmp1[i % 4]); _cryptKey4[i] = (byte)(_cryptKey2[i] ^ tmp2[i % 4]); } Exchanged = true; } private class CryptCounter { private int m_Counter = 0; public byte Key2 { get { return (byte)(m_Counter >> 8); } } public byte Key1 { get { return (byte)(m_Counter & 0xFF); } } public void Increment() { Interlocked.Increment(ref m_Counter); } } }
  18. Introduction This guide helps you set up and configure the Era of Faith game client to connect to a private server. Downloads Download a specific patch for the game below. If you're downloading a open source server project, match sure to match up the patch numbers correctly. If the patch doesn't exist in the list below, download a lower patched client and patch upwards using the provided patch archive. After you finish downloading the client, decompress it using 7-Zip. English Client 2107 (Alpha) Korean Client 1232 Installations These are official installations from TQ, compressed using WinRAR. These can also be decompressed using 7-Zip. English Installation 2107 (Alpha) Korean Installation 1200 Instructions These instructions have not been fully tested. Please let me know if these don't work. Download a client and extract it using 7-Zip. Open server.dat in Notepad and edit the IP address to be your own. Add an exception to your firewall to allow players to connect to your servers. Run the client using belief.exe with the command-line option "blacknull".
  19. Ah! Well, it's time you learn about threading then, 'cause it's VERY important for making a game server. Rule of thumb though, never have a thread sleep. If you have your command just reload NPCs in-place without a countdown, then it'd probably be fine. It's just for development purposes anyways, right?
  20. So, if you're following the multi-threaded game server model I mention on my blog where you have a single channel per map, then you're blocking your only thread. Those thread sleeps are what's killing you. Generally, you should never use thread sleeps in any main execution thread. What you can do instead is spawn a new task that performs the reload. Like maybe have a component on your server for managing the task (and making sure not more than one can be spawned at a time). Edit: Also, if you reload a map while players are on it... they could potentially perform actions on the map unless you block traffic during the reload.
  21. Hi all, The web host for Cooldown experienced a deployment issue today that removed all website permissions. This meant that files could be downloaded directly from the server. Fortunately, Cooldown had additional protections to prevent sensitive files (such as configuration files with database credentials) from being downloaded. To help give status updates to web downtime, I created a Twitter account for Cooldown. Thanks, Spirited
  22. Just be very careful when copying and pasting code you don't fully understand. It wasn't that long ago that a backdoor was put in one source's remote warehouse implementation. It allowed anyone to delete all accounts and characters on the server by ending a certain gold amount into the warehouse.
  23. Uh... hard to answer this when you provided no other information. Generally, you add NPCs and dialogs for the quests, and add a method of tracking quest completion for the day (likely using persistent storage like MySQL or however your source saves items and characters).
  24. Yup, you figured it out. Common.ini.
  25. Comet has been upgraded to .NET 6 / C# 10. Some asynchronous patterns have also been updated, but should be easy to merge into existing projects. Edit: Also added docker support.
×
×
  • Create New...