0.6.1 DR1 and DR2 VS .NET Projects
I took the time to rebuild the project files so I could compile the code for 0.6.1 DR1 with the ranger bug fix. If anyone is interested in obtaining the updated files I can upload them to my server and create a link to download them. I could also post a guide to compile the source if needed. I haven't gone into the PERL aspect yet, as I do not have PERL on my laptop. I will keep you all updated on my progress.
-Steel Psychos Server Admin- |
can this be compiled on windows xp pro? if so I would be very greatful to have those files :)
|
Windows XP Pro
Yes, I compiled everything on Windows XP Pro with SP2 and Microsoft VS .NET. I am still working on the PERL compile, but as soon as I get that going, I'll put a link to everything I have on my server.
|
That good news, we need more dr1 compiled version :)
|
I finished the PERL
Well, I finished getting all the compilations working properly, so now, all I have left to do is .Zip and .rar the source I have and finish writing the guide tomorrow morning. It's past my bed time and I am losing faction with my wife... Anyway, I'll do what I can to get it all posted up tomorrow.
|
Guide to compiling EqEmu 0.6.1 DR1 or DR2 w and w/o PERL
Well, it took me some hours, but I got everything pulled together. I will note all the changes that I can remember that I made. I started With Visual Studio .Net Version 7.0.9446 (2002).
First, you have to get the source from my site or though CVS. If you go through CVS there are several changes you have to make to the code. I Included the DB fix that was noted by Emuman2098, and the Archery fix by cavedude, and I got most of my information to compile from Cisyouc. Thanks a lot guys. First, download the latest source from CVS and Edit/or download it from: The zlib library is already included with the source as well. And also in the original .tar I extracted it from. http://www.steelpsychos.com/index.php?link=eqemu.php Next, ensure that you have MySQL and PERL installed. I recommend MySQL 4.0.xx because I have some odd permissions problems with 4.1, but you may not. Also downloadable from my site. http://dev.mysql.com/downloads/mysql/4.1.html http://www.activestate.com/Products/...?id=ActivePerl After you extract the source, extract the zlib source into a folder called zlib under the same folder as the .sln file. (Already included in my source distro) Extract the source file to a folder of your choice. If you don't know how to do this, I suggest you learn how to use a PC before you try to program it. I use Winrar to package the files. I also provided a SFX Archive .exe. I take no responsibility for what these may do to your PC, but I ensure they are virus free, etc... Now that you have installed MySql, PERL(for PERL compiles only), and extracted the source, open the server.sln file. If it asks you to update/whatever, click yes. For All Compilations: Click Tools->Options. Expand Projects. Select VC++ Directories. Where it says Show Directories For: Select Include Files. Press CTRL+Insert to add a new line. Browse to your MySql installation and select the mysql\include folder. Press CTRL+Insert again. Browse to where you extracted zlib, and select that folder. Note: If you used my source zlib will be under the zlib folder. Do the same thing once more: Where it says Show Directories For: Select Library Files. Press CTRL+Insert to add a new line. Browse to your MySql installation and select the mysql\lib\opt folder. Press CTRL+Insert again. Browse to where you extracted zlib, and select that folder. Note: If you used my source zlib will be under the zlib folder. For compile with PERL: Make sure you have the DebugPerl configuration selected. Right-Click on Zone in the Solution Explorer Window. Click Properties. Expand the Configuration Properties Panel. Expand C/C++ Panel. Select General. Under the Additional Include Directories, ensure that the path points to where you installed PERL, and iafter that folder add \lib\core. It should resemble c:\PERL\lib\CORE. Once again, if you don't know how to do this, just stop here and download the pre-compiled version. ex: c:\perl\lib\core --Do not do this for DR2-- Once you ensure this is correct, click OK. Before you compile, you will have to make an edit to the PERL file: Remember to change this back after you are through compiling... On line ~18 of perl\lib\core\socket.h, change it from: #include <winsock.h> to: #include <winsock2.h> If you leave this part out you will get tons of library conflicts between winsock and winsock2 at zone compile time. --End do not do this for DR2-- Reason, DR2 was changed to use the winsock library rather than the winsock2 library. Compilation time: Now, you should be ready to compile. Select Build->Build Solution or press CTRL+ALT+B, and compilation will begin. If you have any errors, feel free to post them and I will try to re-create them and fix them for you. NOTE: I made a change in rdtsc.cpp. My compiler didn't like the type unsigned long long, so I changed it to uint64. I assumed that since it was trying to make an unsigned integer with the size of 2 longs(32 bits). That would have made it 64 bits long, so uint64 should do it. char 8bits -127 to 127 unsigned char 8bits 0 to 255 short 16bits -32,767 to 32,767 unsigned short 16bits 0 to 65,535 int 32bits -2,147,483,647 to 2,147,483,647 unsigned int 32bits 0 to 4,294,967,295 long 32bits -2,147,483,647 to 2,147,483,647 unsigned long 32bits 0 to 4,294,967,295 long long 64bits -9,223,372,036,854,775,807 to 9,223,372,036,854,775,807 unsigned long long 64bits 0 to 18,446,744,073,709,551,615 If I am wrong feel free to correct me and provide the proper code for the fix. If I missed anything, let me know and I'll fix it. Also, my compiled versions are available on my website for download with the fixes noted above. -Steel Psychos Server Admin- |
Wow , thanks alot Suede. This is much appriciated :)
|
Thanks splendid work :)
But i have some runtime error #3 on zone.exe ? Petstruc and augslot variables not defined error ? That my system or compiled version ? that totally crash my zone.Exe |
Crashed zone?
Which compile did you download? The only compile that I have tested is the one w/o PERL, and only in a minilogin situation. I haven't tested the code on my live server yet. I am still looking for bugs that I may be able to fix myself. Please keep all the bug reports coming though. What is your exact configuration? Minus the dbname and password of course. Also, does anyone know why the AAs aren't being updated properly in my database? Is it a DB problem or is it a server problem? If anyone can point me in the right direction, I will see what I can do to make it work. I am not an expert programmer, but I'd like to help in any way I can.
|
Hello,
My server working on Windows 2000 pro (all services pack and patch make) P4 3,5 Ghrtz with 2 gigas of ram. I use Myslq 4.0.23 and last version of ActivePerl I have Peq velious database + CVSfix for DR1 on my server. I try to use your perl compiled version and your debugperl compiled version (download from your site) When i use it, i have microsoft debug message, (Petstru or augslot not defined error #3) i need to click on requester and my zone.exe reach breakpoint and stop. I don't have this problems with other 0.6.1 DR1 compiled version (Face42 and Cavedude). |
I'll check into it.
Ok, I will check into it and see what's up with the compile. I haven't tested the PERL one at all yet, just got it to the stages where I could compile it. I know the non-PERL ones run just fine on my server at least... Anyway, I'll see what I can do.
|
I tested it.
Well, I just tested it on my test server with the PERL release, olny I re-compiled it on the test server PC, so I will upload it to the server later... It works with no errors for me... Maybe it was a PERL library conflict of some sort. Anyway, I'll upload the new one and update the .rar and .exe
-Suede- |
I was able to re-create the error...
I re-created the error, and there was a problem with database.cpp.
Code:
uint32 len_query = MakeAnyLenString(&query, "REPLACE INTO inventory (charid,slotid,itemid,charges,instnodrop,color,augslot1,augslot2,augslot3,augslot4,augslot5) VALUES(%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i)", Code:
uint32 len_query = MakeAnyLenString(&query, "REPLACE INTO inventory (charid,slotid,itemid,charges,instnodrop,color,augslot1,augslot2,augslot3,augslot4,augslot5) VALUES(%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i)", |
I am getting the same exact problems with your source as I get from cvs source
compiling with ms vb.net 2003 on winXP Pro. here they are Compiling... timer.cpp timeoutmgr.cpp TCPConnection.cpp serverinfo.cpp races.cpp packet_functions.cpp packet_dump_file.cpp packet_dump.cpp Mutex.cpp moremath.cpp MiscFunctions.cpp misc.cpp md5.cpp Item.cpp guilds.cpp extprofile.cpp eqtime.cpp EQEMuError.cpp EMuShareMem.cpp debug.cpp DBMemLeak.cpp dbcore.cpp dbasync.cpp database.cpp crc32.cpp Condition.cpp classes.cpp zoneserver.cpp net.cpp LoginServer.cpp console.cpp client.cpp Linking... client.obj : error LNK2001: unresolved external symbol "public: static unsigned char EQApplicationPacket::default_opcode_size" (?default_opcode_size@EQApplicationPacket@@2EA) client.obj : error LNK2019: unresolved external symbol "protected: __thiscall EQPacket::EQPacket(unsigned short,unsigned char const *,unsigned int)" (??0EQPacket@@IAE@GPBEI@Z) referenced in function "public: __thiscall EQApplicationPacket::EQApplicationPacket(void)" (??0EQApplicationPacket@@QAE@XZ) client.obj : error LNK2019: unresolved external symbol "public: __thiscall EQPacket::~EQPacket(void)" (??1EQPacket@@QAE@XZ) referenced in function $L109209 client.obj : error LNK2019: unresolved external symbol "public: void __thiscall EQApplicationPacket::SetOpcode(enum EmuOpcode)" (?SetOpcode@EQApplicationPacket@@QAEXW4EmuOpcode@@ @Z) referenced in function "public: __thiscall EQApplicationPacket::EQApplicationPacket(enum EmuOpcode)" (??0EQApplicationPacket@@QAE@W4EmuOpcode@@@Z) client.obj : error LNK2019: unresolved external symbol "public: enum EmuOpcode const __thiscall EQApplicationPacket::GetOpcodeConst(void)const " (?GetOpcodeConst@EQApplicationPacket@@QBE?BW4EmuOp code@@XZ) referenced in function "public: enum EmuOpcode const __thiscall EQApplicationPacket::GetOpcode(void)const " (?GetOpcode@EQApplicationPacket@@QBE?BW4EmuOpcode@ @XZ) packet_dump.obj : error LNK2001: unresolved external symbol "public: enum EmuOpcode const __thiscall EQApplicationPacket::GetOpcodeConst(void)const " (?GetOpcodeConst@EQApplicationPacket@@QBE?BW4EmuOp code@@XZ) packet_dump_file.obj : error LNK2001: unresolved external symbol "public: enum EmuOpcode const __thiscall EQApplicationPacket::GetOpcodeConst(void)const " (?GetOpcodeConst@EQApplicationPacket@@QBE?BW4EmuOp code@@XZ) client.obj : error LNK2019: unresolved external symbol "public: void __thiscall EQStream::SendDisconnect(void)" (?SendDisconnect@EQStream@@QAEXXZ) referenced in function "public: void __thiscall EQStream::Close(void)" (?Close@EQStream@@QAEXXZ) client.obj : error LNK2019: unresolved external symbol "public: void __thiscall EQStream::QueuePacket(class EQApplicationPacket const *,bool)" (?QueuePacket@EQStream@@QAEXPBVEQApplicationPacket @@_N@Z) referenced in function "public: void __thiscall Client::QueuePacket(class EQApplicationPacket const *,bool)" (?QueuePacket@Client@@QAEXPBVEQApplicationPacket@@ _N@Z) client.obj : error LNK2019: unresolved external symbol "public: class EQApplicationPacket * __thiscall EQStream::PopPacket(void)" (?PopPacket@EQStream@@QAEPAVEQApplicationPacket@@X Z) referenced in function "public: bool __thiscall Client::Process(void)" (?Process@Client@@QAE_NXZ) console.obj : error LNK2001: unresolved external symbol "class OpcodeManager * EQOpcodeManager" (?EQOpcodeManager@@3PAVOpcodeManager@@A) net.obj : error LNK2001: unresolved external symbol "class OpcodeManager * EQOpcodeManager" (?EQOpcodeManager@@3PAVOpcodeManager@@A) net.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall OpcodeManager::SetOpcode(enum EmuOpcode,unsigned short)" (?SetOpcode@OpcodeManager@@UAEXW4EmuOpcode@@G@Z) net.obj : error LNK2001: unresolved external symbol "public: virtual enum EmuOpcode __thiscall SharedOpcodeManager::EQToEmu(unsigned short)" (?EQToEmu@SharedOpcodeManager@@UAE?AW4EmuOpcode@@G @Z) net.obj : error LNK2001: unresolved external symbol "public: virtual unsigned short __thiscall SharedOpcodeManager::EmuToEQ(enum EmuOpcode)" (?EmuToEQ@SharedOpcodeManager@@UAEGW4EmuOpcode@@@Z ) net.obj : error LNK2001: unresolved external symbol "public: virtual bool __thiscall SharedOpcodeManager::ReloadOpcodes(char const *)" (?ReloadOpcodes@SharedOpcodeManager@@UAE_NPBD@Z) net.obj : error LNK2001: unresolved external symbol "public: virtual bool __thiscall SharedOpcodeManager::LoadOpcodes(char const *)" (?LoadOpcodes@SharedOpcodeManager@@UAE_NPBD@Z) net.obj : error LNK2019: unresolved external symbol "public: __thiscall OpcodeManager::OpcodeManager(void)" (??0OpcodeManager@@QAE@XZ) referenced in function "public: __thiscall SharedOpcodeManager::SharedOpcodeManager(void)" (??0SharedOpcodeManager@@QAE@XZ) net.obj : error LNK2019: unresolved external symbol "public: void __thiscall EQStreamFactory::Close(void)" (?Close@EQStreamFactory@@QAEXXZ) referenced in function _main net.obj : error LNK2019: unresolved external symbol "public: class EQStream * __thiscall EQStreamFactory::Pop(void)" (?Pop@EQStreamFactory@@QAEPAVEQStream@@XZ) referenced in function _main net.obj : error LNK2019: unresolved external symbol "public: bool __thiscall EQStreamFactory::Open(void)" (?Open@EQStreamFactory@@QAE_NXZ) referenced in function _main net.obj : error LNK2019: unresolved external symbol "public: __thiscall EQStreamFactory::EQStreamFactory(enum EQStreamType,int)" (??0EQStreamFactory@@QAE@W4EQStreamType@@H@Z) referenced in function _$E1 EMuShareMem.obj : error LNK2019: unresolved external symbol "public: char const * __thiscall SharedLibrary::GetError(void)" (?GetError@SharedLibrary@@QAEPBDXZ) referenced in function "public: bool __thiscall LoadEMuShareMemDLL::Load(void)" (?Load@LoadEMuShareMemDLL@@QAE_NXZ) EMuShareMem.obj : error LNK2019: unresolved external symbol "public: void * __thiscall SharedLibrary::GetSym(char const *)" (?GetSym@SharedLibrary@@QAEPAXPBD@Z) referenced in function "public: bool __thiscall LoadEMuShareMemDLL::Load(void)" (?Load@LoadEMuShareMemDLL@@QAE_NXZ) EMuShareMem.obj : error LNK2019: unresolved external symbol "public: virtual bool __thiscall SharedLibrary::Load(char const *)" (?Load@SharedLibrary@@UAE_NPBD@Z) referenced in function "public: bool __thiscall LoadEMuShareMemDLL::Load(void)" (?Load@LoadEMuShareMemDLL@@QAE_NXZ) EMuShareMem.obj : error LNK2019: unresolved external symbol "public: __thiscall SharedLibrary::SharedLibrary(void)" (??0SharedLibrary@@QAE@XZ) referenced in function "public: __thiscall LoadEMuShareMemDLL::LoadEMuShareMemDLL(void)" (??0LoadEMuShareMemDLL@@QAE@XZ) EMuShareMem.obj : error LNK2019: unresolved external symbol "public: virtual void __thiscall SharedLibrary::Unload(void)" (?Unload@SharedLibrary@@UAEXXZ) referenced in function "public: virtual void __thiscall LoadEMuShareMemDLL::Unload(void)" (?Unload@LoadEMuShareMemDLL@@UAEXXZ) EMuShareMem.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall SharedLibrary::~SharedLibrary(void)" (??1SharedLibrary@@UAE@XZ) referenced in function "public: virtual __thiscall LoadEMuShareMemDLL::~LoadEMuShareMemDLL(void)" (??1LoadEMuShareMemDLL@@UAE@XZ) .\../build/World.exe : fatal error LNK1120: 25 unresolved externals EDIT: Also I was told to remove the EQNetwork.cpp from this when trying to compile the cvs before, am I still suppose to have to take that out? |
You're missing files in the project. I couldn't tell you which ones because I'm not familiar with 6.1's code, but it seems to be referring to any of the new network files.
|
I think you opened the wrong file...
Try to re-extract the source, and just open the .sln file, not the other one... The .sln has all the updated files in it, and eqnetwork removed, etc...
|
I downloaded and extracted his rar and exe and tried both , I was assuming all the files needed were included.
|
I think your right Suede , I didnt use the sln, got ahead of myself I geuss , I will try that when I get home , thanks again.
|
Works great Suede , Thanks alot for this , now to try to fix the PoK books so they work . btw if anyone knows how allready let me know :) lol
|
there was a post a while back by sysadmin about fixing the pok stones. I havent gotten around to putting it into peq's database, but should give you a good idea on whats up.
|
I found the doors...
I found sysadmin's thread with all the doors in it, and put them all into one SQL file, so anyone can download if from my site. It is called doors_sysadmin.sql I haven't sourced or tested it yet, but I will let you all know when I do.
http://www.steelpsychos.com/index.php?link=eqemu.php -Suede- |
I just looked at what you have Suede, that looks like its a fix to add the PoK books and some doors , Im talking about a fix to actually make them work . Right now when you click on them they just port you to the zone you are allready in. I have all of the portals in PoK allready and all of teh books to port you to PoK all over norrath but none of them will port you out of the zone you are allready in. Or am I looking at this wrong and it will fix the problkem of not being able to port?
|
I think I found the code...
I think this is the code that moves the PC if the door is clicked...
Code:
if (opentype == 58 && strncmp(dest_zone,"NONE",strlen("NONE")) != 0 ){ // Teleport door! |
I saw that last night and using a doors.cpp from an older source that they worked on I tried to replicate it to this one , It did not make the zone crash and compiled fine but did not do anything and then I noticed in the zone folder there is a new file called zoning.cpp that does not appear in any other version and looking through there I think we have our problem , As I am by no means a coder and only a couple of months of self taught compiling I have no idea what to do to fix it , But I will keep trying ! and thanks for looking into it Suede.
Also Cavedude said right after he said " DO NOT QUOTE ME ON THIS " so please dont but he thought they may have changed movepc from using zone names to using zoneIDs ? I have no idea what to do at that point but mabey you may be able to use that . but still looking at that zoning.cpp it sure has an awful lot of SendZoneCancels in there ? |
MovePC
I did notice that there are 3 implementations of MovePC. One Is by ID, one is by zone name and the other has no space for zone, so I assume it's the current zone. I am going to edit the code and try a few things to see what I can get done.
Off-Topic: I noticed Fathernitwit was running a 0.6.1 DR2 server... Is this source currently available on CVS??? Thanks, -Suede- |
Cofruben has a compiled version of DR2 in the Development section , I tried it lastnight and couldnt get world to boot , it would only flash very fast and trying to see what it was saying it looked like it was just a bunch of opcodes , as far as source im not sure. Thanks for working on this door thing its really stopping me from progressing here. I wish I could be of some use and knew some more but I will keep messing with the code too on the hope I will accidently fix something lol , Take care
|
I found the error!
I wanna try this Junior Dev Stuff...
Alright, there is a problem in zoning.cpp. Looks like a copy, paste error. Original Code: zoning.cpp line 318 Code:
void Client::MovePC(const char* zonename, float x, float y, float z, int8 ignorerestrictions, bool summoned, ZoneMode zm) { Code:
void Client::MovePC(const char* zonename, float x, float y, float z, int8 ignorerestrictions, bool summoned, ZoneMode zm) { Edit 1: Upload complete. Testing begins... Edit 2: Code works great, just need to update DB for proper coords. I zoned right inside the qeynos stone when I zoned. -Suede- |
Woot !! Your the bomb diggity !!! Thanks bud !
Recompiled with that fix and YES it does work ! You here that Bel ?? WOOT I SAY ! |
Man fix one thing and five more break lol, well the portals are workingnow but I am getting zones crashing with something coming up undefined pet structure? wtf? didnt even do anything with pets lol , any ideas on that one?
|
Yeah
I don't know exactly why it says that because the pet structure is defined in the source file, but I am trying to work that one out now... I had that problem before the last fix, but it didn't just jump out. Anyway, I'll post as I fix...
-Suede- |
Ok thanks again , Looks to me its all linked together right below that fix because they made it so pets zone with you , guess thats why it has to effect pets to
|
I think I fixed the pets thing...
I think I fixed the pets, but I won't know until I can do some more testing. I will be using cavedude's db for the testing, beause it is the only one I have experienced the problem on so far...
-Suede- |
Ok , thanks , thats the database I am using atm so cool .
|
I think I fixed it again...
In pets.cpp Around line 541 or so...
Code:
MakePet(spell_id, 10, 1, prace, mat, 125, 2*size_mod, 5, 0, 0, petname); Code:
MakePet(spell_id, 10, 1, prace, mat, 125, 2*size_mod, 5, 0, 0, petname); Code:
MakePet(spell_id, 59, WARRIOR, 127,0,46,0,2, 0, 0, petname); Code:
MakePet(spell_id, 59, WARRIOR, 127,0,46,0,2, 0, 0, petname); -Suede- Edit: I am going to put a couple more files on my site: 1: update_zone.rar for updated zone compiles 2: update_world.rar for updated world compiles 3: update_dll.rar for updated emusharemem.dll files If there are no updated files from the releases posted, there will be no updated .rar Edit 2: I am also going to add the date field to the download page. -Suede- |
Ok thanks much for this , going to recompile right now !
|
Sweet.
That's some good stuff. Anyways, keep me posted on small errors you find, and I will try to fix them as they come. Just don't come up with anything that would make me have to re-write the entire database engine or anything... lol
-Suede- |
changed these and still getting the same error ? this is drivin me nuts, lol
|
Okay, i dont know how much i can help... But ive been running into this petstruct on my server as well. Basically if you hit ignore it will continue on ewithout crashing it.
Now... If its the same as me(im using peq velious database and some 6.1 perl upgrades from the guide i wrote), I notice it THE MOST in certain zones... Those certain zones being, akanon, sleepers tomb, necropolis, and other zones with traps/wizards... When i was in veeshans peak, i noticed that there were wizards that were creating sword of xuzil pets(or something like this). I killed their pets, and hit ignore on the error... When they recreated the sword pets, it happened again. Maybe there is some code thats messed up, or database error, that doesnt specify if someone has more than 1 pet... IE Swarm pets, sword/hammer pets, etc. Just an idea... Glad someones workin on this though, awesome news! If youre curious(not trying to plug) the dbs and emu versions im using are here: http://www.eqemulator.net/forums/sho...893#post109893 |
Yeah, hitting ignore will allow the application to continue, but you shouldn't have to hit ignore in the first place. I will look some more to see if I can track down the messed up code...
-Suede- |
Try going into Veeshans peak(mapname veeshan), theres some drakes on the way to hoskar(i think it is) they are two wizards... They both summon a familiar AND a invisible 'pet'. If you are in GM mode you can see them summoning the sword of xuxil or wahtever, if you kill the invisible pet with #kill(so they dont attack you), they will summon another one. Which is when I got the same error, i did it with both, and the error happened exactly when they summoned it...
Im not a coder or programmer... I also noticed theres a lot of 'wizard contraptions' or something in dragon necropolis that did real similar things, it seemed, but i didnt do too much research on those i must admit... There is one right in fron of zlandicar, and quite a few on the way to him, theyre normally just traps. Would be great if you could fix this, too many times have i been tping something in, to have that error popup and i spacebar and kill my zone, makes me sad :P |
All times are GMT -4. The time now is 06:46 AM. |
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.