Jump to content

Leaderboard


Popular Content

Showing most liked content since 01/08/2017 in all areas

  1. 7 points
    Here's a video of where I'm at today. A few problems note the empty slot - some kind of duff item is in the database, or something I've overlooked. Sorry low quality video, capturing video is not working properly with 3D mode on. Nice to see doors working, isn't it? Little things like that are pleasing.
  2. 4 points
    Hey guys, I wanted to share with you a video I've just finished. It's the story of the last day of Asheron's Call from my own perspective. Those who were here on that day can live it all again, and the nostalgic who played long ago can see how the game they loved ended. Those who didn't know Asheron's Call can have a glimpse of what was the MMORPG we loved for 17 years. Hope you enjoy it. I miss AC !! Feel free to share the link of this video to your friends, I'd like every AC player to see this video, I'm sure they felt the same way during the last minutes.
  3. 3 points
    Hello all. It's been a while since I posted. I am still working on things, but a few real life things have kept me busy elsewhere for while. Yes, mobs are going to be a problem in many ways. I took out code that autospawned monsters, and I am trying to get an annoying piece of code to work that removes creatures when landblocks are out of focus. There have been all sorts of problems going in and out of dungeons, with portals disappearing. At the moment, you manually spawn a creature (in a dungeon) it follows you rather relentlessly. It has a limitation of its travel, after which it returns "home". But it's rather more tenacious than the original game. No stuck in corners running pointlessly - it navigates around, follows you upstairs, leaps down if you jump down - very amusing. I stopped short of allowing them to follow you into portals.. that would be very amusing but I must resist! Creatures (like skeletons) randomly are equipped with appropriate weapons and shields, but sometimes not, and perform the right animation depending. I think I have all the idle animations defined too, I had to do a lot of experimentation. When I've got bored trying to fix bugs, I went on to do other things. I made jewellery have enchantments on them, and had to a dozen other things to make them assess properly. This led to all sorts of realizations about various assess functions not working correctly, and I had to persist spells and all that kind of jazz. Since gems are not far different from jewelry, I put code in for those too, at least inasmuch as you can spawn a gem, and it has random spells on it (only one so far) including minor or major traits, and you can click them and the spell activates and counts down. Code for mana stones and charging of them onto items is more or less correct - that was very tricky too because mana stones have to be declared in a certain way to make the warning about destroying the item come up or not come up. In the meantime I have wasted enormous amounts of time on various memory corruption issues. And I thought I'd share one of the culprits. Not my code, I hasten to add, but I thought I'd share. time(&NextCleanTime + DELAY); Innocuous looking line of code, but of course very nasty. It puts the current time into the variable's address plus the delay, which is some random other place. I've been putting in _CrtCheckMemory() commands to work out where the memory fault occurs. I had already fixed one of those elsewhere, but I suppose I'll have to look for similar other occurrences. It should be time(&NextCleanTime); NextCleanTime+= DELAY. There was another terrible bug in various places - a precedence problem throughout if (flags & 0x00000008 == 0x00000008) Yes - I might have once myself made that kind of mistake, but I tend to throw parenths around everything these days because I am paranoid about such things. So if ((flags & 0x00000008) == 0x00000008) This kind of thing can create quite baffling problems,not crashing but just wrong packets going out, so objects not appearing perhaps. The & has lower priority so the pointless 8 = 8 part is done first.
  4. 2 points
    Hey guys, I've been working on this video for some time, and it is the time to share it, after the second death of AC. I take you on a great tour to see all the towns and special places of Dereth. You can let me guide you or you can navigate through any town throughout the menu below. Feel free to share the link of this video to your friends if they knew Asheron's Call. Also, don't hesitate to comment your thoughts, I'd love to read and discuss them. AC Forever.
  5. 2 points
    Hey everyone! If you're looking to get more involved with the development of the ACEmu server or simply just want to chat with other Asheron's Call players then feel free to join us on our Discord chat server. There's a lot of action on our Discord chat that doesn't make it to the forums here so if you want to stay up to date on the latest information then I suggest to join ASAP. There's no signing up and you can even join anonymously. Simply click the following link to join us or use the widget on our home page to connect. ACEmulator Discord
  6. 2 points
    Hello all. I've not written in a while, because I've met some hairy obstacles to overcome. In short, it's the thorny problem of collision detection, monster movement, and dungeons, as in my last post. But I think I'm getting there now. I realised I needed a bit of a rethink. I've ended up with a bit of a cheat, but one that seems to work quite well. The basic problem just to clarify is that UAS2 in its original form has no knowledge at all about the objects in the world. It can create a monster and tell it where to go. The client then tries to make that motion happen. But what if there's a wall in the way? One of two things can happen, first the monster can effectively ignore the wall (a set position command is sent), secondly, it can run towards the given target, and not reach that target because .. duh, there's a wall in the way. The first looks stupid, because monsters aren't expected to just waltz through solid objects. The second is a problem because it can't be detected on the server. The server can allow enough time in a measured way and put the monster into combat mode when it thinks it should be in front of the player, but it can't know if the critter had got obstructed. The original game of course was not very good with collisions, but at least it knew when creatures were on the other side of a wall. How to solve... Ideally, the server would have a map in front of it of all obstacles, and be able to navigate around them After a few weeks messing around with the cell.dat data, I realised I could partly solve the problem with information in cell.dat, but the overall collision would still be a problem without doing enormous work. What I ended up with was a system where monsters could navigate to an enemy by staying to the middle coordinates of a cell, which are always 10x10. This nearly always works, but is not enough on its own. My cheating solution is quite fun. I keep track of all clients last 256 positions, whenever the X and Y change by a whole unit or more in a wrap-around buffer. Then when a monster detects an enemy, it logs that position and heads for it using the centre-cell method. Once there, it goes into a sort of breadcrumbs mode. Since the player's progress must have been througoh genuine positions that exist, the monster can follow the same coordinates and landblock cells. On the way, it can try to shortcut those routes, and so if the player dilly-dallies, it will skip those points. It also breadcrumbs its own route back "home", so something like a long piece of elastic, it can wind itself back, again checking points which it's already covered, so it doesn't blindly go round in circles. And the advantage of this is it will work outside dungeons too (but at the moment there's a few hard-coded bits that will make this not work). I also managed to get monsters have weapons and shields. This was a variation of the code I used to equip weapons and shields for the player, and was actually quite easy. I added a field called WeaponsGroup and ShieldsGroup, a new database that defines which belong to which group. I made a new tool to make it easy to set these up. So there's a pile of options that say a skeleton can have, with a few types of shield and a few types of weapon (or none at all), and it randomly picks them out when the creature spawns. Another thing I've played with was the problem of human type monsters. For reasons I am still not sure about, creatures like Bandits, and Mercenaries (any human species) were coming out naked. This is weird because they were captured with their palette and textures saved. But replicating those isn't enough in UAS2 for them to show up. So I took a step sideways... I made it save the packet data it generates when the player makes a costume change, and then fed that back into the capture software (with a few changes). So it was a case of playing dress-up - making myself look like the Bandit etc. Then, exiting, and renaming the capture log data file. A bit of database jiggery pokery to assign the new captured data to the old entry, and bingo, one correct(ish) looking Bandit. I added some randomising to the outfits, and created a small tool to assist in setting them up in the database. So far have done about 5, more to do. Hopefully I can finalise some of the dungeon code this week, and make the combat correct. Then I can happily ditch all the old code that used to handle combat!
  7. 2 points
    I cant wait to get my old Grindy AC back lol.
  8. 2 points
    Thanks for the positive comments. Of course I will share in due course. Hit a bit of a problem in the last week with palettes. It all started when I realised I had no Tumeroks, the capture had rejected them. Looking into it, I found the 3d model for Tumeroks must have changed from the old days. The new model number wasn't in the original portal.dat This led me to ascertain which models were not being used, and by forcing them onto creatures with a similar build, searched for the Tumeroks, and other extinct creatures. Many seemed to be variations on zombies and skeletons, and I found the Tumerok model. Then when I started looking closely at the values for the palettes, to see why the Tumerok types all looked the same, I realised that the new capture data referenced palettes that didn't exist in the old portal.dat file. I then took a step backwards, and looked closely at the capture data for palettes and realised that the original UAS2 and its companion capturing program were in error, but that a workaround somehow made it work. The original capture program did a weird thing when it loaded up the palettes, and made a field called Unknown-1 which it stored and presented when it was time to show that creature (or item). Each palette where it exists consists of a palette file number (in the portal file) and an offset and length, which overlay into the working palette. The values captured looked weird... I realised that the offset, length pairs were in fact actually palette file numbers misplaced in the data, so 6D for length of F was really palette file F6D. Because of the botched way UAS2 used the palette values, these somehow still came out correctly in most cases. In fact there is no need for an "unknown1" field. If a palette is present, it has a count of at least 1. What follows the counts of palette, texture and model is something that looks like a base palette, or a palette for part of the 3d model. This does not have an offset and length value, but is immediately followed by sets of palette overlays that do. These are often a value, and offset and length of 0. The length of 0 means 256. I played around for ages with a drudge ravener's palette. It seems some of the palette values come from that first palette, so it's not entirely that the subsequent palette(s) just overlay. So I have gone back to the original data, and applied various fixes to the data. We now have at least a correct set of data, and unknown-1 is replaced with BasePalette. I am now writing similar code for items. Of course I had to go through and put the base palette code into every class that presented palettes rather than the unknown_1 field. The big digression was trying to match the TOD palettes to the old palettes. This was like the old days for me, doing colour matching algorithms. And I think the results are pretty good.... but haven't helped me get Tumeroks looking correct! It seems that the old Tumerok model does not use the palette at all. The only thing I can do is make them slightly bigger or smaller! So onwards.. and then I need to get back to what I was doing last week.
  9. 2 points
    I liked AC so much more during this time period. It's very nice to see work being done on this still. I do hope you share it!
  10. 2 points
    Looks like it's coming along nicely, impressive work.
  11. 2 points
    Now adding monsters into my data capture program. It's hugely faster than the old buggy capture program. Runs against the large capture files that were previously taking hours, and takes a few minutes to do a whole folderfull. But it's only doing items or monsters... so that's partly why. Found it was adding NPCs, but can be eliminated by ignoring records with dwUnknown_V2 = 32. Was pleased to see my first Tusker Guard, and mite scion. Fixed nasty bug in generating bogus corpse item that show up with a black square. It needs to animate bending over when looting, and it's also not updating weight. I added healing kits as a treasure item. Something horrendous is wrong with level gaining. It tells me that I need 4 billion experience to get to the next level, at level 12, I guess it's calculating -1 or something as a DWORD, but I've not even looked at that code yet. I need to find a way to share the Exe and database. But I don't want a cease and desist order on me from WB!
  12. 2 points
    Looking at the monsters tables today. Monsters_type defines critters that can be spawned. It had the wrong linker value, was the ID of monsters_templates records, not dwLinker. Knocked up some quick C++ to fix, and zeroed records that weren't there. Now there are 100's of creatures that can be spawned, hurray.
  13. 2 points
    Our very own @Mogwai put together a very helpful video on how to work with ACLogView and the basic implementation of objects into the ACEmu server. He did an outstanding job explaining some of the inner workings of object creation so check it out if you're interested in this kind of stuff! Huge thanks to Mogwai for hosting this video conference!
  14. 2 points
    Well, I know people are working on other things. But UAS is a bit more like my dinosaur-way of programming than this modern .NET/C# stuff people are heading towards. I've been trying to get some understanding of how things hang together, and it's a lot of fun, especially as I can now melee fight things. So I thought I would create one thread with changes and observations about UAS2 and the capture program, and perhaps these might be useful if anyone's still playing with it. I don't feel I've made enough progress to upload a whole new version. Firstly, the capture program has a number of bugs, at least the one I had. It has "vetors" instead of "vectors", and its bad way of building an insert line means that it often creates dud lines. Actually there's a dozen or more other problems with it, with the fields it captures But I've put this to one side. For one thing, it's generating too many records, and this slows down the server launch time. I've had to create a few scripts like ones to remove duplicates. I also created a file splitter on pcap files. The capture program already can deal with a whole folder, so this means instead of reading one file, and often skipping through and missing half the stuff, it deals with the individual thousands of packets, and this generates more data. One problem and this is me understanding things wrong is that you cannot run the capture program without then applying the SQL straight away. If you run two captures, the second one will have duplicate Linker numbers, which will screw up the database. One problem which was annoying me was that the inventory wasn't being saved. Yet there's code there to do it... it turns out the inventory is being saved, but not loaded back. Actually to be precise it's more the announcement back to the client of the inventory, it happens as far as I can see too early. I added a function to delete the inventory (an internal store of objects), and a delayed second calling of create inventory in WorldServer: thus# int DelayedInventory = 0; (at top) [Before switch ( m_bWorldState )] if (DelayedInventory > 0) { DelayedInventory--; if (DelayedInventory <= 0) { // erase the last botched attempt.... m_pcAvatar->DeleteInventory(); cMasterServer::CreateInventory( this ); //Send create packets for inventory contents } } switch ( m_bWorldState ) { case 0: //First login ------------------ and this is set up here if ( pcRecvPacket->GetFlags( ) == 0x400 ) //400 message acknowledged { m_bWorldState = 4; DelayedInventory = 3; cMasterServer::CreateInventory( this ); //Send create packets for inventory contents cMasterServer::SendLoginData( this ); //Send login data (uses CreateInventory information) ---------------- and in avatar void cAvatar::DeleteInventory() { while ( !m_lstInventory.empty( ) ) { SAFEDELETE( m_lstInventory.front( ) ) m_lstInventory.pop_front( ); } return; } defined in avatar.h function prototype void DeleteInventory(); ------------------------- In TreasureGen.cpp there's a line needed for each CreateXXXXX( function) at the end something like cDatabase::AddToInventoryDB(who->m_pcAvatar->GetGUID(), aWand); or whatever the aXXXX is I made spawnitem take a name as a parameter, which makes it easier to spawn things I added a random distance to monster spawning. This was necessary as monsters attack now! MonsterServer needs quite a bit of work, but now a creature sees nearby enemies and goes for them. It also returns to base after. It's more or less right. Combat animation for melee wasn't working at all, and it was driving me nuts. In the end I went back to the earlier UAS1 and found it did work there, so I stole the "combat animation" code, and somehow that worked! But it's hardcoded for one attack. It needs to do low/medium/high. It's possible I mucked this up myself earlier. But I mention this in passing. Here's a question someone might know. I found a good many of the animations (by modifying !animation to default to the last number++ and working through) - the attack ones are 98-106 - but I didn't find ALL of them. In particular I can't find a stabbing animation, just more of a sweeping one. I'll make a list some time. For instance 106 is low kick. And another question: where are the female sounds? Ugh's and Arghs, etc? Looking at the way certain things are loaded - like monster spawns, NPCs, and permanent objects - I think it would be better to either load things up in a non-database way. Or a second program might do the load, and can just sit there in the background, and use shared-memory to supply whatever is needed. Oh and various hard-coded Maximum are too low once you start loading in captured objects. One big problem I can't get to the bottom of is a CLIENT crash that occurs once in a while. When it happens, the client restarted won't then connect to the server, so it's something the server has done to cause the client to crash. I might have to put some kind of a debug in that I can trap on demand in some way. The XP level code caused me to suddenly go from level 1 to level 126! I can't make sense of this line, so I fed in the XP table into a bit of code, it needs to be written properly, but it works now. Here's the line that was there - how was that ever supposed to work? 6 Xor 5? What's that all about? int level = floor( ( pow( (double)(9 * m_dwTotalXP + 6^5),(double)(1 / 5.0) ) - 6) + 1 ); That's all for now. Will post again.
  15. 2 points
    Awesome thanks guys. This may sound odd but I play around with both PhatAC and ACE but for some reason (even though there is more in Phat to do) I think ACE is a better Project. Kinda like why do people like Leafcull over Solclaim same game and all just feels better. I real hope you keep up with this some people REALY do appreciate the work going into this. Once I get to looking over the code and understanding the structure, will most definitely try to help out. Im not great but i do know some.
  16. 1 point
    Here is the Official AC Emulator YouTube Channel Link: http://www.youtube.com/channel/UCrtuJP-D4Y4xai3NksH_g6w/featured I saw a post in the General Discord for the Link! As of right now no content has been upLoaded. Looking forward to it! Please support it by going and Subscribing and setting Alerts for it! Long live ACE !
  17. 1 point
    This has been discussed quite a bit in the past and I think the general consensus is that WB/Turbine most likely have no interest in selling the IP or they would have when SSG stepped in to purchase DDO and LOTR. It's really all speculation in regards to the IP itself but in the end the only reliable way to bring AC back is by supporting an open source server emulator project like ACEmu.
  18. 1 point
    Nice work on the video! It brings back some good memories. I wouldn't say AC suffered a 2nd death yet tho since the acemu team is still pushing ahead.
  19. 1 point
    Asheron's Call has finally come to an end after a long 17+ year journey. We'll probably never see the game exactly as it once was but thanks to the MASSIVE amount of data that was collected over the last few weeks, our developers now have the means to hopefully re-create AC as close as possible to what we once knew and loved. Turbine/WB tried to pull a fast one on us by pulling the plug so quickly but our community banded together and fought back by tirelessly logging data around the clock and from every corner of Dereth, right up until the final moments of the servers being shut down. In the end, our valiant data miners were able to capture over 131 million packets containing over 224 million total game messages. Many of these messages contain valuable information such as object placement, item stats, quests, portal locations, action sequences, vendor inventories, and more, that are extremely helpful for preserving the true AC experience. Among that data is roughly 200 newly created characters, 800 recalls to lifestones, 4,000 player deaths, 167,000 defeated foes, 1.4 million cast spells, 4.1 million item identifications, and 8.7 million game objects. More logs continue to trickle in so the final numbers could go even higher still. To show just how much coverage we achieved, all the red areas on this map indicate player positions: It can't be understated just how helpful the data mining effort was, so here's a HUGE thank you to every single person that contributed to our data mining effort in one way or another! Without your help ACEmu wouldn't have been possible. Now that we have the logs it's going to be up to our highly skilled team of developers to transform all that vital data into a working and playable game. It's going to be a long time before we're able to get ACEmu just as playable as you once remembered but it can definitely be done. I'll try my best to keep everyone updated on the progress of ACEmu throughout the development process. We also plan on putting up a test server once ACEmu reaches a certain state of functionality, possibly within the next few weeks depending on progress. Make sure to check back often for any new developments!
  20. 1 point
    Here are the official files from Turbine: http://content.turbine.com/sites/cli...ac1install.exe http://content.turbine.com/acpatch/ac_data.zip
  21. 1 point
    Your Discord ban was lifted shortly after it happened. I agree that it should have just been deleted and a warning issued first. What I don't agree with is this childish comment, especially for a 48 year old veteran. Do you seriously think that trolling and saying "let the fun begin" is the best way to go about things?
  22. 1 point
    Hello people. Haven't posted for a couple of weeks, because I've hit a bit of a problem, and I've been working through it. It's all down to collision detection, and how monsters move. When I dug into the code, I found that my preconceptions were totally wrong. Monster fighting would have only ever worked out in the open without this work. This has led to a week of working out how cell.dat works, and writing tools that creates new tables for navigation. I can now edit cell.dat (in place editing), which is kind of fun, so I was able to raise Arwic entirely 6 feet up into the air, and bring it back down afterwards (not in game!) I can't say I completely understand it, but enough to parse out the data I need. Effectively there will be two different methods for the world, and for dungeons. Along the way, I populated all the dungeons I could find in the capture data, cross referencing to the ones that exist in the old game (something like 500 or more, though some aren't exactly dungeons, just places that are treated the same). I think I'm getting there, but I've stripped apart the monster movement code entirely and am rewriting, and there's a few problems to iron out.
  23. 1 point
    Continued the conversation on Discord.. for anyone following this thread.
  24. 1 point
  25. 1 point
    Wow! I wasn't expecting UAS2 to be revived and hope that one day, i would be able to play pre-tod AC. Thanks for your work!
  26. 1 point
    Didn't Tumeroks get a rework for ToD? And ToD introduced a second look for them as well? I'll check my notes... can't seem to find anything on Maggie's site. Oh well. That's what I seem to remember ToD did a "graphics upgrade" or something. Non-Sequitor Miscellaneous Random - found this @commands page on her site though: http://www.thejackcat.com/AC/Odds'nEnds/@command.htm brings back a flood of memories on her site. Sigh.... now back to my regular post, already in progress. Anyway! Love the work you're doing and the progress made. If we're missing one mob out of all AC offered, I will still play it. Would prefer Morsmen be the mob, not tumies.. oh well. In the end, As long as I can kill undead, zombies, revs, liches, lich lords, dark magus (magi?), I will be fine.
  27. 1 point
    As for the ACE.exe not compiling, check out the FAQ at https://github.com/ACEmulator/ACE It's towards the bottom and mentions the StyleCop stuff... Basically, if you don't have it to begin with, the ACE project won't load. (You may also need to right click on ACE in the Solution Explorer and "Set as Startup Project", as well. It will be bold if it is...) That may actually solve your other issue. From what I can figure out from that error, the calls it makes reference to don't currently exist. Also, the Server Time message no displays to the console (it's goes to a log). The only messages you should see are "Staring ACEmulator...", some about binding to ips/ports and loading of the cell and portal dat files. (Followed by "ACEmulator command prompt ready.") So if you can load the ACE solution properly and rebuild everything, it should behave a little better... Let us know!
  28. 1 point
    So a "View" is basically like a pre-defined query that typically pulls information from multiple tables into one virtual table. As the name implies, it's for viewing the data but not really editing it. Don't have access to the database at the moment, but I believe the view you're speaking of references ace_object and base_ace_object. By looking at the structure of those two, you should hopefully see how/where you'd need to add in a new item. (There may be other places that an item touches, too, I don't know off-hand)
  29. 1 point
    alright i'm not sure why, but using the mysql command line and granting privileges that way worked.. something with phpmyadmin i guess.
  30. 1 point
    Very nice! I love it!
  31. 1 point
    So, I decided to sneak the forum upgrade in without scheduling a downtime. Here's a quick rundown of what to expect: Your account information and password are the same if you're already a member. Most data including topics, replies, reputation, profiles, PM's, and more are intact after the conversion. Some minor things like the amount of topic "views" and "most users online" have been reset to 0. ACEmulator now has an entirely new look and feel to it! Minor bugs after conversion: Converted posts have an extra space inserted between line breaks. Future posts won't have this issue. They can also be edited to remove the extra spaces if need be. Converted topics show one less post than they really have. This fixes itself if a new post is added. In case you're wondering, one of the main reasons for the switch is the fact that IPS has hundreds of useful plugins while vBulletin Connect literally has none. There's really a lot of good reasons for the switch though besides that and I hope you all enjoy the new look and feel of our forums! I haven't noticed any major bugs yet myself but please send me a PM if you run into any and I'll do my best to get it fixed ASAP. View full article
  32. 1 point
    Thanks! much better now. Nice to see some lifestones too, it's great to see the progress being made.
  33. 1 point
    I voted original but would change my vote I think to DM there were parts of every version that I liked a lot, but some things they removed that I miss like (don't kill me) spell research and running around instead of using town network. part of the reason I like original was the community feel as well, it wasn't easy to get to max level, and so many people would work together and rely on each other. There was a lot more time-consuming exploration and adventure but as well as regular updates to keep the players interested. Not having updates or seasons really damaged AC I think. I don't know why the devs didn't just make an automated script that changes the seasons automatically (Maybe something you could do with ACE) when it is october, change it to halloween quests and textures, december christmas etc. They didn't need to do it manually if they just made it automated. The money system in games, pretty much every game, is flawed in my opinion because the money is not only fiat (backed by nothing) but also unlimited. If you have a resource without end, it eventually will lose value. On the other hand how would you make a game that has limited resources that would be circulated enough so that people don't end up with a lot, and others with little? Or what if a rich player stops playing, then all those resources would be stuck in limbo unless there were a in-game tax that slowly drained the characters over time adding the money back into the economy. You might need to give players job-roles and work together, not likely going to happen lol. One method around the excess of currency that some games use is a money sink, like tailoring was supposed to do, 50MMD for a tool to tailor. It still didn't keep up with the massive flood of MMDs that quests pumped out. maybe it would be best to not have currency and find a different way like bartering or resource gathering, of course then if the resources are unlimited as well and you run into the same problem. Anyway I'll stop ranting, I'd be happy with any working version of AC, they all had great parts to them .
  34. 1 point
    You can add this code to the ACE/Entity/Player.cs (add it after the "PhysicsData.CSetup = ..." line) if you want to feel a little warmer. (Made from only the finest Hoary Mattekar Hide...) Also doesn't hurt to find a nice fireplace. ModelData.PaletteGuid = 0x007e; ModelData.AddPalette(0x1abb, 0x40, 0x8); ModelData.AddPalette(0x1ab2, 0x48, 0x8); ModelData.AddPalette(0x1b9e, 0x28, 0x18); ModelData.AddPalette(0x0ed4, 0x28, 0x28); ModelData.AddPalette(0x05b0, 0x50, 0xc); ModelData.AddPalette(0x05b0, 0x74, 0xc); ModelData.AddPalette(0x048a, 0x60, 0xc); ModelData.AddTexture(0x0, 0x0bb0, 0x2a8d); ModelData.AddTexture(0x0, 0x0cbe, 0x2a8e); ModelData.AddTexture(0x5, 0x03d8, 0x2a8b); ModelData.AddTexture(0x1, 0x03d8, 0x2a8b); ModelData.AddTexture(0x6, 0x03da, 0x2a8c); ModelData.AddTexture(0x2, 0x03da, 0x2a8c); ModelData.AddTexture(0xa, 0x2a91, 0x2aaf); ModelData.AddTexture(0xb, 0x2a92, 0x2ab0); ModelData.AddTexture(0xd, 0x2a91, 0x2aaf); ModelData.AddTexture(0xe, 0x2a92, 0x2ab0); ModelData.AddTexture(0x0, 0x1879, 0x1879); ModelData.AddTexture(0x0, 0x1878, 0x1878); ModelData.AddTexture(0x1, 0x1880, 0x1880); ModelData.AddTexture(0x2, 0x187f, 0x187f); ModelData.AddTexture(0x5, 0x1880, 0x1880); ModelData.AddTexture(0x6, 0x187f, 0x187f); ModelData.AddTexture(0x9, 0x03d5, 0x187c); ModelData.AddTexture(0x9, 0x03d4, 0x187d); ModelData.AddTexture(0xa, 0x187b, 0x187b); ModelData.AddTexture(0xb, 0x187a, 0x187a); ModelData.AddTexture(0xd, 0x187b, 0x187b); ModelData.AddTexture(0xe, 0x187a, 0x187a); ModelData.AddModel(0xc, 0x0058); ModelData.AddModel(0xf, 0x005b); ModelData.AddModel(0x11, 0x01ec); ModelData.AddModel(0x12, 0x01ec); ModelData.AddModel(0x13, 0x01ec); ModelData.AddModel(0x14, 0x01ec); ModelData.AddModel(0x15, 0x01ec); ModelData.AddModel(0x16, 0x01ec); ModelData.AddModel(0x17, 0x01ec); ModelData.AddModel(0x18, 0x01ec); ModelData.AddModel(0x19, 0x01ec); ModelData.AddModel(0x1a, 0x01ec); ModelData.AddModel(0x1b, 0x01ec); ModelData.AddModel(0x1c, 0x01ec); ModelData.AddModel(0x1d, 0x01ec); ModelData.AddModel(0x1e, 0x01ec); ModelData.AddModel(0x1f, 0x01ec); ModelData.AddModel(0x20, 0x01ec); ModelData.AddModel(0x21, 0x01ec); ModelData.AddModel(0x0, 0x1a16); ModelData.AddModel(0x1, 0x1a0d); ModelData.AddModel(0x2, 0x1a06); ModelData.AddModel(0x3, 0x01ec); ModelData.AddModel(0x4, 0x01ec); ModelData.AddModel(0x5, 0x1a11); ModelData.AddModel(0x6, 0x1a09); ModelData.AddModel(0x7, 0x01ec); ModelData.AddModel(0x8, 0x01ec); ModelData.AddModel(0x9, 0x120d); ModelData.AddModel(0xa, 0x19f7); ModelData.AddModel(0xb, 0x19ed); ModelData.AddModel(0xd, 0x19ff); ModelData.AddModel(0xe, 0x19ef);
  35. 1 point
    I can now spawn items of armour and clothing, and wear them! I modified "spawn item" to take a comma, colour value. It needs to know the colour when loading the model. All sorts of stuff needed to make it load and save things properly. There are two nasty bugs in the code that caused the toon to mess up on equipping and unequipping. For the record they are in DatFile.cpp and Avatar.cpp - DatFile.cpp first - the object's palette change count was never being reset. So there's a new line void cPortalDat::LoadItemModel( cObject *pcObject, DWORD dwModelID, DWORD dwColorID, double dblColorValue ) { cItemModels *pcModel = cItemModels::FindModel(( pcObject )->GetItemModelID()); //pcModel - Item model instantiation; used to fetch item variables //dwModelID - 0x00000001 = male; 0x0000004E = female; other //dwColorID - color ID number; determines the CLUT list looked-up //dwColorValue - the particlar CLUT from the clut list if (!pcModel->m_clothingModelLoaded || dwColorID != NULL) { if (dwModelID == 0x02000001 || dwModelID == 0x0200004E) { pcModel->m_bWearPaletteChange = 0; pcModel->m_bWearTextureChange = 0; pcModel->m_bWearModelChange = 0; pcObject->m_bWearPaletteChange = 0; // WAS NOT IN THIS CODE.. every time it loads, it goes up by more and more } And I think this was causing things to be wrong when the avatar first loads - in Avatar.CPP close to the beginning of CreatePacket - the equip flag test should be done AFTER loading the model, or equipping the item will make things go awry. int paletteChange = m_bBasicPaletteChange; int textureChange = m_bBasicTextureChange; //Loop through the palettes and textures of currently equipped items //Check whether they contribute palettes and textures to the character model for ( iterObject_lst itObject = m_lstInventory.begin( ); itObject != m_lstInventory.end( ); ++itObject ) { cItemModels *pcItemInv = cItemModels::FindModel(( *itObject )->GetItemModelID()); if (pcItemInv->m_PortalLinker != 0) { if (this->m_wGender == 0) cPortalDat::LoadItemModel(( *itObject ), 0x0200004E, ( *itObject )->m_intColor); else cPortalDat::LoadItemModel(( *itObject ), 0x02000001, ( *itObject )->m_intColor); } if ( ( *itObject )->m_fEquipped == 2 ) { // by the time you've messed about testing for 0 through // half a dozen indirect pointers, you might as well // have just addded it! // if ( ( *itObject )->m_bWearPaletteChange != 0) paletteChange += ( *itObject )->m_bWearPaletteChange; // if ( pcItemInv->m_bWearTextureChange != 0) textureChange += pcItemInv->m_bWearTextureChange; } }
  36. 1 point
    These are just my rough assessment of that the sounds are that I could find. Might be useful to others. #ifndef DEFINE_SOUNDFX #define DEFINE_SOUNDFX enum { // these are all I could find SOUNDFX_WHIP = 3, SOUNDFX_PAIN_MALE1 = 12, SOUNDFX_PAIN_MALE2 = 13, SOUNDFX_PAIN_MALE3 = 14, SOUNDFX_CREATUREUNKNOWN = 15, SOUNDFX_BURDENED_PLAYER = 24, SOUNDFX_DEATH = 29, SOUNDFX_WEHIT1 = 30, SOUNDFX_WEHIT2 = 31, SOUNDFX_WEHIT3 = 32, SOUNDFX_BOWSTRETCH1 = 41, SOUNDFX_BOWPING = 42, SOUNDFX_BOWSTRETCH2 = 43, SOUNDFX_ARROWHITS1 = 44, SOUNDFX_WEHITBYARROW = 48, SOUNDFX_ARROWHITS2 = 49, SOUNDFX_ARROWHITSHIGH = 50, SOUNDFX_HITSSHIELD = 51, SOUNDFX_EATCHEW = 64, SOUNDFX_DRINK = 65, SOUNDFX_EXIT = 81, SOUNDFX_SPELL_POSITIVE_EFFECT1 = 82, SOUNDFX_SPELL_NEGATIVE_EFFECT1 = 83, SOUNDFX_SPELL_POSITIVE_EFFECT2 = 84, SOUNDFX_SPELL_NEGATIVE_EFFECT2 = 85, SOUNDFX_SPELL_TRANSFER = 86, SOUNDFX_SPELL_DRAIN = 87, SOUNDFX_BUFF = 88, SOUNDFX_SPELL_NEGATIVE_EFFECT3 = 89, SOUNDFX_SPELL_BANE = 90, SOUNDFX_SPELL_LURE = 91, SOUNDFX_WEIRD_PORTAL = 92, SOUNDFX_CRYSTAL = 93, SOUNDFX_SPELL_FAILED = 94, SOUNDFX_SPAWN = 95, SOUNDFX_LOCKPICK_OK = 105, SOUNDFX_TING_ATTRIBUTE_CHANGE = 118, SOUNDFX_PACK_SHUFFLE1 = 119, SOUNDFX_PACK_SHUFFLE2 = 120, SOUNDFX_GIVE_ITEM = 121, SOUNDFX_UNEQUIP = 122, SOUNDFX_DROP_ITEM = 123, SOUNDFX_MAGIC_RESIST = 124, SOUNDFX_RESIST_TRAP = 128, SOUNDFX_SPELL_EXPIRED = 129, SOUNDFX_MANA_RAN_OUT = 130, SOUNDFX_THUNDER = 131, SOUNDFX_SWIMMING = 132, SOUNDFX_MOVE_WALL = 133, SOUNDFX_END = 9999 }; #endif
  37. 1 point
    OK never mind, I got it working. I had modified the Shortcut created on installation and changed the target appropriately. I finally realized that the default shortcut did NOT set the "Start In" field of the shortcut. Once I put "C:\Turbine\Asheron's Call" in the "Start In" box it started working perfectly.
  38. 1 point
    This I can agree with, pre DM was the best time for PVP. No weeping wands, no rending, no cantrips, just skill.
  39. 1 point
    What is ACEmu? ACEmu (short for ACEmulator) is a new open source server emulator written in C# for the MMORPG Asheron's Call. It allows anybody to run their own private or public server. Can I play ACEmu without setting up a server? Yes, although the server owner must create an account for you first currently. This will change as soon as a custom launcher for the AC client is built. What client do I need to connect to an ACEmu server? The latest AC client and data files which are still available from the following links (Who knows for how much longer so make copies): http://content.turbine.com/sites/cli...ac1install.exe http://content.turbine.com/acpatch/ac_data.zip Does ACEmu cost anything to play? No, absolutely not. What's the plan for ACEmu? Our goal is to re-create Asheron's Call as close as possible to the way it was, right before the servers were shut down. How long will it take the ACEmu server to be reasonably playable? There's really no way to tell but progress is constantly being made. How long has ACEmu been in development? The initial commit on our Github was on Jan 15, 2017. Will I be able to customize my ACEmu server? Yes. You'll be able to edit and mold the game to your liking through various means including a config file, the database, and also the source code itself. How can I help? The best way to help (if your not a developer) is by spreading the word about the ACEmulator project to other Asheron's Call players. Do you accept donations? No, not at this time. Are you worried about C&D's? No.
  40. 1 point
    I was too depressed yesterday and forgot to upload what I had until today HUGE thanks to everyone involved in these efforts, especially Mag_nus for the great plugins (that goes for the past as well... I used Mag-Tools religiously).
  41. 1 point
    Attached is a image of the total coverage so far from tfarley. Pat yourselves on the back.
  42. 1 point
    Bug Reporting Template ============================== Title: Class: e.g. "Feature Request", "System Error", "Serious Bug" Date: Reported By: Version: Is it reproducible: Yes / Occasionally / One Time / No Description =========== Steps to Produce/Reproduce -------------------------- Expected Results ---------------- Actual Results -------------- Workarounds ----------- Attachments ----------- Other Information
  43. 1 point
    I have the standalone update package zip from The AC download page saved in a folder that I donwloaded probably 4 or 5 years ago now. I believe it comprises updates from ToD through 2010-2012, don't know the specifics. Right now I have no place to upload it. Is this of any use to anyone? For the record, I'm not a developer, just a lowly network engineer. But I did contribute to the data Mining as Uncle P.
  44. 1 point
    I have uploaded my last files. Tomorrow I will be at work but trying to watch the end draw near through a remote connection. I wish you all the best in your attempt to data mine the remaining places. Thanks goes out to all of the data miners and the developers creating us a new Dereth. I will be keeping an eye on the forums and reddit as much as I can tomorrow. Keep up the good fight!
  45. 1 point
    Ok sounds good I have an idea for that [URL]http://zebideex.imgur.com/[/URL] here you can find them with a nice rez and also other AC icons I made. ***Edit I created a new one that should work well for that space.
  46. 1 point
    https://www.youtube.com/watch?v=ESWzPhZWYeI
  47. 1 point
    Hey folks, I've been working on a tool to help inspect AC1 packet capture files (generated by aclog) that you can grab here: https://github.com/tfarley/aclogview/releases If you're curious, you can open your pcap logs to get a better idea of what the packets contain (only from aclog; no Wireshark yet). It also contains a ton of structures to parse and interpret a good majority of the interesting/common packets. It's built from scratch to follow the actual AC protocol as closely as possible, avoiding hacks and workarounds like those in UAS2 and derivatives. It still needs a bunch more work and testing, but can already reveal a lot about AC's network traffic. Let me know what you think.
  48. 1 point
    For nostalgia reasons I have to vote for the original game. However, for a retro-server, Dark Majesty would probably be great because it is both 'retro' and it would have a lot more content than a vanilla 1999 server.
  49. 1 point
    Personally I am starting from scratch. To me UAS has always been sort of a playground for AC emulation. You've had various individuals over the years fork it, tinker with it a bit, and maybe add a few new things before disappearing into obscurity. I feel that we need something new, written in a more modern language, with stability and scalability in mind. In regards to which client to support - if you look at UAS2 purely from the perspective of foundational functionality, it's fairly comprehensive. Even housing works. For this reason it seems to make the most sense to support the client that UAS2 is most compatible with, which I believe is the January 2004 client. This way you can use UAS2 as a reference when implementing the same basic functionality in the new emulator. Here are two additional reasons I provided in my post on Postcount: 1. There's a lot less to emulate if you stick with an older client. Think of the sheer amount of content that has been added in the past 10 years. 2. Nostalgia is a powerful thing. I'd wager that more effort has been put into emulation efforts to support early versions of MMOs than has been put into supporting the latest clients. Project 1999 for EQ and Nostalrius for WoW, for example. Lastly, the main advantage of using the latest client, which is the availability of the live servers to log packets from, goes away in 3 weeks. In my next post I will describe some of the technical challenges I've encountered so far.
  50. 1 point
    Dates are based on major game changes. The Master of Arms patch was chosen as a time period because that's the patch that started a downward spiral of other game altering patches before the game went into maintenance mode. 1999 - 2001: Original 2001 - 2005: Dark Majesty 2005 - 2012: Thrones of Destiny 2012 - 2017: Master of Arms Patch
×