Having problems compiling zone
Hello, I am trying to make a server on linux since I have gcc and I am runing into some trouble. I have world working it connects to the net fine even with errors poping up in the compile, but I can't say the same for zone. When I get to database.cpp I get this error :
database.cpp: In member function `bool Database::GetInventory(uint32, char*, Inventory*)': database.cpp:2902: error: invalid conversion from `const ItemCommonInst*' to `uint32' database.cpp:2902: error: initializing argument 1 of `ItemCommonInst::ItemCommonInst(uint32, sint16, uint32, uint32, uint32, uint32, uint32)' I found the code that is was complaning about, but havn't a clue as to what is wrong. #ifndef WORLD for(int i=0;i<5;i++) { if (aug[i]) { ItemCommonInst aug(aug[i]); common.PutAugment(aug,i); } } if (instnodrop) common.SetInstNoDrop(true); #endif If anyone has any ideas please share. EDIT: Ok I chaned ItemCommonInst aug(aug[i]); to ItemCommonInst aug(aug,i); and it was able to compile without any problems. That was the line giving trouble, but not sure if that is a good idea. Had some trouble with lib files but now I have a zone exacutalbe hopfuly it will work right. |
Quote:
Code:
if (aug[i]) { Since my Linux box is so terribly underpowered I've given up trying to build a server that works until I can find a P4 class machine with decent ram that I can afford. |
Zone startup FAILED!
I got zone to compile but when I start it up I get these error's.
[Status] Starting Log: logs/eqemu_zone.log [Status] Using database 'eq' at localhost [Status] CURRENT_ZONE_VERSION: EQEMu 0.6.2-DR1 [Status] Loading opcodes.. [Status] Mapping Opcodes [Status] Loading Variables [Status] Loading zone names [Status] Loading items [Status] libEMuShareMem.so loaded [Status] Loading npcs [Status] Loading npc faction lists [Status] libEMuShareMem.so loaded [Status] Loading loot tables [Status] Loading doors [Status] libEMuShareMem.so loaded [Status] libEMuShareMem.so loaded Error: EMuShareMem: DLLLoadSPDat: !SpellsMMF.IsLoaded() (timeout) [Error] Starting Log: logs/eqemu_error_zone.log [Error] LoadSPDat() EMuShareMemDLL.Spells.DLLLoadSPDat() returned false [Status] Loading guilds [Status] Loading guild list [Status] libEMuShareMem.so loaded [Status] Loading factions [Status] Loading titles [Status] Loading AA effects [Status] Loading swarm spells [Status] Loading tributes [Status] Loading corpse timers [Status] Loading what ever is left [Status] Loading commands [Debug] Starting Log: logs/eqemu_debug_zone.log [Debug] command_init(): - Command 'appearance' set to access level 150. (Debugs all commands in the addon.int file) [Status] 183 commands loaded [Status] Loading embedded perl XS [Debug] Warning: Perl dosub called for my_eval when perl is allready in use. [Quest] Starting Log: logs/eqemu_quest_zone.log [Quest] Loading perlemb plugins. [Quest] Loading perl commands... [Debug] Warning: Perl dosub called for my_eval when perl is allready in use. [Quest] Loading perlemb plugins. [Quest] Loading perl commands... [Status] Starting EQ Network server. [Error] Zone bootup FAILED! Connected to worldserver: archangel:9000 I guess the reason the zone bootup failed it because the SpellsMMF.IsLoaded() didn't load. What would cause this I got the spells_us.txt file in the sever folder. There were not errors when I compiled the ShareMem just got a few warrings not related. MMF.cpp: In member function `bool MMF::Open(const char*, int32)': MMF.cpp:213: warning: comparison between signed and unsigned integer expressions Loot.cpp: In function `bool pDLLLoadLoot(bool (*)(), int32, int32, int32, int32, int32, int32, int32, int32, int32, int32)': Loot.cpp:193: warning: cast from `const uint8*' to `int32*' discards qualifiers from pointer target type Loot.cpp:194: warning: cast from `const uint8*' to `int32*' discards qualifiers from pointer target type Loot.cpp: In function `const LootTable_Struct* pGetLootTable(uint32)': Loot.cpp:203: warning: cast from `const uint8*' to `LootTable_Struct*' discards qualifiers from pointer target type Loot.cpp: In function `const LootDrop_Struct* pGetLootDrop(uint32)': Loot.cpp:211: warning: cast from `const uint8*' to `LootDrop_Struct*' discards qualifiers from pointer target type If you got any ideas please post. |
just a note, it dosent look like your using code from cvs...
http://www.eqemulator.net/wiki/wikka...akka=DevBranch its not gunna fix it, but you might have better luck. |
What is your distrib linux ?
I have a Debian sarge core 2.6 With GCC 3.3.5 (perl and mysql up to date) and compilation is easy, no changes, i have just "Make clean; make" and that work ! here my source : http://eqfroggy.ath.cx/download/EQEmuCVS_09.28.2005.rar for spell error use the latest Spell_us.txt (that work!). |
I have Fedora Core 4 and gcc 3.4.2. I tryed your source still needed to make some changes not as much, but still be the same error.
|
I tried changing to a different linux box. It is Red Hat and has a gcc version 3.2.2. It complied everything with no error's what at all, but I still get the same errors when I boot of zone as stated above. I used the source from cvs this time. The problem seems to be with my spells_us.txt file. My windows server runs fine with it, so why wouldn't linux.
|
Are you use spell_us.txt from last patch from sony ? that work fine :)
|
Yes is before 9/13 my window server works with that file, but not linux for some reason. I would like a linux server because I can do compiling on it.
|
I founded out why zone failed to boot up I was starting the zone wrong. I was doing ./zone compID . 7790 compID when I needed to do ./zone . comID 7790 compID. With that said I still have problems with spells_us.txt. It does read the file and get the max spell id, but then something goes wrong. This program goes all the way to my cout << SPDAT_RECORDS; and then prints out the error message. This code is in net.cpp, function void LoadSPDat, and at line 746.
This is the zone output. [Status] Loading npc faction lists (This is the call to load)[Status] libEMuShareMem.so loaded [Status] Loading loot tables [Status] Loading doors (This is the call to load)[Status] libEMuShareMem.so loaded (This is the secound try to load)(Function getting max spellid)(File is opened)8402(Max found)(NEXT)(This is the call to load)[Status] libEMuShareMem.so loaded 8403(I am here trying a second time adding timer)Error: EMuShareMem: DLLLoadSPDat: !SpellsMMF.IsLoaded() (timeout) [Error] Starting Log: logs/eqemu_error_zone.log [Error] LoadSPDat() EMuShareMemDLL.Spells.DLLLoadSPDat() returned false (Am I an this error)[Status] Loading guilds [Status] Loading guild list (This is the call to load)[Status] libEMuShareMem.so loaded [Status] Loading factions and this is the code. sint32 MaxSpellID = GetMaxSpellID(); cout << MaxSpellID; //ME if (MaxSpellID == -1) { LogFile->write(EQEMuLog::Debug, "LoadSPDat() MaxSpellID == -1, %s missing?", SPELLS_FILE); return; } cout << "(Max found)"; //ME #ifdef SHAREMEM cout << "(NEXT)"; //ME if (!EMuShareMemDLL.Load()) { cout << "(In the if statmant)"; //ME return; } SPDAT_RECORDS = MaxSpellID+1; cout << SPDAT_RECORDS; //ME if (EMuShareMemDLL.Spells.DLLLoadSPDat((const CALLBACK_FileLoadSPDat)&extFileLoadSPDat, (const void**) &spells, &SPDAT_RECORDS, sizeof(SPDat_Spell_Struct))) { spells_loaded = true; } else { SPDAT_RECORDS = -1; LogFile->write(EQEMuLog::Error, "LoadSPDat() EMuShareMemDLL.Spells.DLLLoadSPDat() returned false"); cout << "(Am I an this error)"; //ME return; } If anyone has any ideas please share. I realy don't understand why this error is happening. |
yes, for spell don't use spell_us.txt before 09/13/2005 but LAST spell_us.txt (from fresh patch) that work better :)
|
It is working
I got it to work. It now loads. I added bool FileLoadSPDat(); after my cout << SPDAT_RECORDS; because the code would go to that point print out the return falas error. I am very happy I can now log in to my server and do something and with the ablity to compile.
SPDAT_RECORDS = MaxSpellID+1; cout << SPDAT_RECORDS; bool FileLoadSPDat(); //This fixed it if (EMuShareMemDLL.Spells.DLLLoadSPDat((const CALLBACK_FileLoadSPDat)&extFileLoadSPDat, (const void**) &spells, &SPDAT_RECORDS, sizeof(SPDat_Spell_Struct))) { spells_loaded = true; } else { SPDAT_RECORDS = -1; LogFile->write(EQEMuLog::Error, "LoadSPDat() EMuShareMemDLL.Spells.DLLLoadSPDat() returned false"); cout << "(Am I an this error)"; return; } |
All times are GMT -4. The time now is 03:32 PM. |
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.