Log in

View Full Version : Trying to setup a RoF testing server


addingice
01-11-2013, 07:20 PM
Wanted to move out of the RoF dev thread so i don't clutter it up and keep the main developers from having to deal with my stuff unless they want to help me.

ok, so last time we left this journey Derision had just informed me that the message i was seeing in the log seemed to indicate i had gotten through the log in and that the weird 20 byte packet which appears in the log is unimportant and that I should look into my world.log files to see the problem.

eqemu_debug_world.log:

---------------------------------------------
2238 [01.11. - 15:00:46] Starting Log: logs/eqemu_debug_world.log
2238 [01.11. - 15:00:46] [WORLD__INIT] Loading server configuration..
2238 [01.11. - 15:00:46] [WORLD__INIT] Log settings loaded from log.ini
2238 [01.11. - 15:00:46] [WORLD__INIT] CURRENT_WORLD_VERSION:EQEmulator 0.8.0
2238 [01.11. - 15:00:46] [WORLD__INIT] Added loginserver 192.168.2.14:5998
2238 [01.11. - 15:00:46] [WORLD__INIT] Connecting to MySQL...
2238 [01.11. - 15:00:46] [WORLD__INIT] HTTP world service disabled.
2238 [01.11. - 15:00:46] [WORLD__INIT] Loading variables..
2238 [01.11. - 15:00:46] [COMMON__THREADS] Starting DBAsyncLoop with thread ID -1232512144
2238 [01.11. - 15:00:46] [WORLD__INIT] Loading zones..
2238 [01.11. - 15:00:46] [WORLD__INIT] Clearing groups..
2238 [01.11. - 15:00:46] [WORLD__INIT] Clearing raids..
2238 [01.11. - 15:00:46] [WORLD__INIT] Loading items..
2238 [01.11. - 15:00:53] [WORLD__INIT] Loading guilds..
2238 [01.11. - 15:00:53] [WORLD__INIT] Loaded default rule set 'default'
2238 [01.11. - 15:00:53] [WORLD__INIT] Clearing temporary merchant lists..
2238 [01.11. - 15:00:53] [WORLD__INIT] Loading EQ time of day..
2238 [01.11. - 15:00:53] [WORLD__INIT] Loading launcher list..
2238 [01.11. - 15:00:53] [WORLD__INIT] Reboot zone modes ON
2238 [01.11. - 15:00:53] [WORLD__INIT] Deleted 0 stale player corpses from database
2238 [01.11. - 15:00:53] [WORLD__INIT] Deleted 0 stale player backups from database
2238 [01.11. - 15:00:53] [WORLD__INIT] Loading adventures...
2238 [01.11. - 15:00:53] [WORLD__INIT] Purging expired instances
2238 [01.11. - 15:00:53] [WORLD__INIT] Loading char create info...
2238 [01.11. - 15:00:53] [WORLD__INIT] Zone (TCP) listener started.
2238 [01.11. - 15:00:53] [WORLD__INIT] Client (UDP) listener started.
2238 [01.11. - 15:00:53] [COMMON__THREADS] Starting EQStreamFactoryWriterLoop with thread ID -1344455824
2238 [01.11. - 15:00:53] [COMMON__THREADS] Starting EQStreamFactoryReaderLoop with thread ID -1336063120
2238 [01.11. - 15:00:53] [NET__IDENTIFY] Registered patch 6.2
2238 [01.11. - 15:00:53] [NET__IDENTIFY] Registered patch Titanium
2238 [01.11. - 15:00:53] [NET__IDENTIFY] Registered patch SoF
2238 [01.11. - 15:00:53] [NET__IDENTIFY] Registered patch SoD
2238 [01.11. - 15:00:53] [NET__IDENTIFY] Registered patch Underfoot
2238 [01.11. - 15:00:53] [NET__IDENTIFY] Registered patch RoF
2238 [01.11. - 15:00:53] [WORLD__LS] Connecting to login server: 192.168.2.14:5998
2238 [01.11. - 15:00:53] [WORLD__LS] Connected to Loginserver: 192.168.2.14:5998
2238 [01.11. - 15:00:53] [COMMON__THREADS] Starting TCPConnectionLoop with thread ID -1361241232
2238 [01.11. - 15:00:56] [WORLD__ZONE] New TCP connection from 192.168.2.14:42503
2238 [01.11. - 15:00:56] [WORLD__CONSOLE] New launcher from 192.168.2.14:42503
2238 [01.11. - 15:00:56] [WORLD__LAUNCH] Adding pending launcher 1
2238 [01.11. - 15:00:56] [WORLD__LAUNCH] Launcher Identified itself as 'zone'. Loading zone list.
2238 [01.11. - 15:00:56] [WORLD__LAUNCH] Removing pending launcher 1. Adding zone to active list.
2238 [01.11. - 15:01:01] [WORLD__LAUNCH] zone: dynamic_01 reported state STARTED (1 starts)
2238 [01.11. - 15:01:21] [WORLD__LAUNCH] zone: dynamic_02 reported state STARTED (1 starts)
2238 [01.11. - 15:01:23] [WORLD__LAUNCH] zone: dynamic_03 reported state STARTED (1 starts)
2238 [01.11. - 15:01:25] [WORLD__LAUNCH] zone: dynamic_04 reported state STARTED (1 starts)
2238 [01.11. - 15:01:27] [WORLD__LAUNCH] zone: dynamic_05 reported state STARTED (1 starts)
2238 [01.11. - 15:02:45] [WORLD__ZONE] New TCP connection from 192.168.2.14:42509
2238 [01.11. - 15:02:45] [WORLD__ZONE] New TCP connection from 192.168.2.14:42510
2238 [01.11. - 15:02:45] [WORLD__ZONE] New TCP connection from 192.168.2.14:42511
2238 [01.11. - 15:02:45] [WORLD__ZONE] New TCP connection from 192.168.2.14:42512
2238 [01.11. - 15:02:45] [WORLD__ZONE] New TCP connection from 192.168.2.14:42513
2238 [01.11. - 15:02:45] [WORLD__CONSOLE] New zoneserver #1 from 192.168.2.14:42513
2238 [01.11. - 15:02:45] [WORLD__CONSOLE] New zoneserver #2 from 192.168.2.14:42512
2238 [01.11. - 15:02:45] [WORLD__CONSOLE] New zoneserver #3 from 192.168.2.14:42511
2238 [01.11. - 15:02:45] [WORLD__CONSOLE] New zoneserver #4 from 192.168.2.14:42510
2238 [01.11. - 15:02:45] [WORLD__CONSOLE] New zoneserver #5 from 192.168.2.14:42509
2238 [01.11. - 15:02:45] [WORLD__ZONE] [5] Zone started with name dynamic_02 by launcher zone
2238 [01.11. - 15:02:45] [WORLD__ZONE] [5] Auto zone port configuration. Telling zone to use port 7000
2238 [01.11. - 15:02:46] [WORLD__ZONE] [4] Zone started with name dynamic_03 by launcher zone
2238 [01.11. - 15:02:46] [WORLD__ZONE] [4] Auto zone port configuration. Telling zone to use port 7001
2238 [01.11. - 15:02:46] [WORLD__ZONE] [3] Zone started with name dynamic_04 by launcher zone
2238 [01.11. - 15:02:46] [WORLD__ZONE] [3] Auto zone port configuration. Telling zone to use port 7002
2238 [01.11. - 15:02:46] [WORLD__ZONE] [2] Zone started with name dynamic_05 by launcher zone
2238 [01.11. - 15:02:46] [WORLD__ZONE] [2] Auto zone port configuration. Telling zone to use port 7003
2238 [01.11. - 15:02:46] [WORLD__ZONE] [1] Zone started with name dynamic_01 by launcher zone
2238 [01.11. - 15:02:46] [WORLD__ZONE] [1] Auto zone port configuration. Telling zone to use port 7004

eqemu_world.log:

---------------------------------------------
2238 [01.11. - 15:00:46] Starting Log: logs/eqemu_world.log
2238 [01.11. - 15:00:46] Using database 'peqdb' at 192.168.2.14:3306
2238 [01.11. - 15:00:46] libEMuShareMem.so loaded
2238 [01.11. - 15:00:46] Loading items from database: count=92476

world.log:

[Debug] Starting Log: logs/eqemu_debug_world.log
[Debug] [WORLD__INIT] Loading server configuration..
[Debug] [WORLD__INIT] Log settings loaded from log.ini
[Debug] [WORLD__INIT] CURRENT_WORLD_VERSION:EQEmulator 0.8.0
[Debug] [WORLD__INIT] Added loginserver 192.168.2.14:5998
[Debug] [WORLD__INIT] Connecting to MySQL...
[Status] Starting Log: logs/eqemu_world.log
[Status] Using database 'peqdb' at 192.168.2.14:3306
[Debug] [WORLD__INIT] HTTP world service disabled.
[Debug] [WORLD__INIT] Loading variables..
[Debug] [COMMON__THREADS] Starting DBAsyncLoop with thread ID -1232512144
[Debug] [WORLD__INIT] Loading zones..
[Debug] [WORLD__INIT] Clearing groups..
[Debug] [WORLD__INIT] Clearing raids..
[Debug] [WORLD__INIT] Loading items..
[Status] libEMuShareMem.so loaded
[Status] Loading items from database: count=92476

all this appears to be ok? Any clues?

Noport
01-11-2013, 07:28 PM
Server login opcodes for RoF

[OPCode: 0x0001] OP_SessionReady [Size: 14]
[OPCode: 0x0017] OP_ChatMessage [Size: 17]
[OPCode: 0x0002] OP_Login [Size: 34]
[OPCode: 0x0018] OP_LoginAccepted [Size: 108]
[OPCode: 0x0004] OP_ServerListRequest [Size: 10]
[OPCode: 0x000d] OP_PlayEverquestRequest [Size: 16]
[OPCode: 0x0022] OP_PlayEverquestResponse [Size: 20]
[OPCode: 0x0003] OP_ServerListResponse [Size: 12]


you need to edit your opcode.conf file and change the login opcodes for local connection only

#Login opcodes
OP_SessionReady=0x0001
OP_Login=0x0002
OP_ServerListRequest=0x0004
OP_PlayEverquestRequest=0x000d
OP_PlayEverquestResponse=0x0022
OP_ChatMessage=0x0017
OP_LoginAccepted=0x0018
OP_ServerListResponse=0x0019
OP_Poll=0x0029
OP_EnterChat=0x000f
OP_PollResponse=0x0011


might look into eqemu_config

<!-- Loginserver information. -->
<loginserver>
<host>192.168.2.14</host>
<port>5999</port>
<account>root</account>
<password>xxxxxxxxxxxxxxx</password>
</loginserver>


in your peq database might make sure zone _server has a server name, 192.168.2.14, 7000,1, todays date etc.
might double check tblworldserverregistration under peqlogindb

addingice
01-11-2013, 08:04 PM
...and now I can no longer see a server list and can't seem to get it to come back.

off to redownload and reinstall everything.

NoPort..you are awesome =-P

Noport
01-11-2013, 08:24 PM
to change Login opcdes: back to default opcode.conf

#EQEmu Public Login Server OPCodes
#Login opcodes
OP_SessionReady=0x0001
OP_Login=0x0002
OP_ServerListRequest=0x0004
OP_PlayEverquestRequest=0x000d
OP_PlayEverquestResponse=0x0021
OP_ChatMessage=0x0016
OP_LoginAccepted=0x0017
OP_ServerListResponse=0x0018
OP_Poll=0x0029
OP_EnterChat=0x000f
OP_PollResponse=0x0011

addingice
01-11-2013, 09:06 PM
yup, changed it back...and it was still grumpy at me. weird. ok well i've got everything back up and running again. time to roll through each step to see if i can get this kicking again.

addingice
01-12-2013, 01:01 AM
Ok, I've got into game!

Graphics seem a bit screwy (ie, no models except for drakkins and even those models seem screwy as well. Oh well. I'm happy for tonight. I'll work on getting it further tomorrow. If anyone knows why I have those above problems please let me know =-D

addingice
01-16-2013, 11:34 PM
Had to clear things out and start over since things became...very broken.

So I'm back to the point where I can see a server is up and log into the server but not into the world. I try to log into the world and it kicks me right out.

I've copied the patch_RoF.conf file into ,y server directory. anything else I need to do in order to get this to work?

lerxst2112
01-16-2013, 11:46 PM
Didn't you have it working before? Look in the logs to check for errors.

addingice
01-17-2013, 12:37 AM
Yup, I had it working for a while, then I had to set it up on a different network and somewhere along the way I screwed shit up.

The real issue is that I'm trying to setup a script to download, build, compile, populate, etc etc everything so I can follow my normal testing protocols.

I just can't seem to figure out the opcode issue with RoF. I get to the point where I have a log in server and the world is 'up' but clicking play makes the client screen go black and die.

it's obvious my opcodes are all fucked up.

ok so here is my settings (emulator server is 192.168.2.11 and client is on 192.168.2.29)

eqemu_config.xml:

<?xml version="1.0">
<server>
<world>
<shortname>SMALLEQEMU</shortname>
<longname>Ship_In_A_Bottle</longname>

<address>EQEMU-SERVER</address> -->
<localaddress>192.168.2.11</localaddress> -->

<!-- Loginserver information. Defaults shown -->
<loginserver>
<host>192.168.2.11</host>
<port>5998</port>
<account>Admin</account>
<password>Password</password>
</loginserver>

<!-- Server status. Default is unlocked -->
<!--<locked/>-->
<unlocked/>

<tcp ip=192.168.2.11 port=9000 telnet=disable />

<key>some long random string</key>

<http port="9080" enabled="false" mimefile="mime.types" />
</world>

<!-- Chatserver (channels) information. Defaults shown -->
<chatserver>
<host>192.168.2.11</host>
<port>7778</port>
</chatserver>

<mailserver>
<host>192.168.2.11</host>
<port>7779</port>
</mailserver>

<zones>
<defaultstatus>20</defaultstatus>

<ports low="7000" high="7100"/>
</zones>

<database>
<host>192.168.2.11</host>
<port>3306</port>
<username>eqemu</username>
<password>eqemupw</password>
<db>peqdb</db>
</database>

<!-- Launcher Configuration -->
<launcher>
<!-- <logprefix>logs/zone-</logprefix> -->
<!-- <logsuffix>.log</logsuffix> -->
<!-- <exe>zone.exe or ./zone</exe> -->
<!-- <timers restart="10000" reterminate="10000"> -->
</launcher>

<!-- File locations. Defaults shown -->
<files>
<spells>spells_us.txt</spells>
<opcodes>opcodes.conf</opcodes>
<logsettings>log.ini</logsettings>
</files>
<!-- Directory locations. Defaults shown -->
<directories>
<maps>/home/eqemu/server/Maps</maps>
<quests>/home/eqemu/server/quests</quests>
<plugins>/home/eqemu/server/plugins</plugins>
</directories>
</server>

login.ini

[database]
host = 192.168.2.11
port = 3306
db = peqdb
user = eqemu
password = eqemupw
subsystem = MySQL

[options]
unregistered_allowed = TRUE
reject_duplicate_servers = FALSE
trace = TRUE
world_trace = TRUE
dump_packets_in = FALSE
dump_packets_out = FALSE
listen_port = 5998
local_network = 192.168.2.

[security]
plugin = EQEmuAuthCrypto
mode = 5

[Titanium]
port = 5998
opcodes = login_opcodes.conf

[SoD]
port = 5999
opcodes = login_opcodes_sod.conf

[schema]
account_table = tblLoginServerAccounts
world_registration_table = tblWorldServerRegistration
world_admin_registration_table = tblServerAdminRegistration
world_server_type_table = tblServerListType


LoginServer.ini


[LoginServer]
loginserver=EQEMU-SERVER
loginport=5998
worldname=Ship_In_A_Bottle
worldaddress=192.168.2.11
locked=false
account=
password=

[WorldServer]
Defaultstatus=0
Unavailzone=

[ChatChannelServer]
worldshortname=-
chataddress=
chatport=



login_opcodes_sod.conf, almost certain here is where it's screwy:


#EQEmu Public Login Server OPCodes
OP_SessionReady=0x0001
OP_Login=0x0002
OP_ServerListRequest=0x0004
OP_PlayEverquestRequest=0x000d
OP_PlayEverquestResponse=0x0022
OP_ChatMessage=0x0017
OP_LoginAccepted=0x0018
OP_ServerListResponse=0x0003
OP_Poll=0x0029
OP_EnterChat=0x000f
OP_PollResponse=0x0011



login_opcodes.conf, shouldn't matter since I'm using sod+


#EQEmu Public Login Server OPCodes
OP_SessionReady=0x0001
OP_Login=0x0002
OP_ServerListRequest=0x0004
OP_PlayEverquestRequest=0x000d
OP_PlayEverquestResponse=0x0021
OP_ChatMessage=0x0016
OP_LoginAccepted=0x0017
OP_ServerListResponse=0x0018
OP_Poll=0x0029
OP_EnterChat=0x000f
OP_PollResponse=0x0011


no RoF patch in server folder.

I realize I'm trying to set up an RoF server and that things are still in flux and it's really supposed to be for the main developers....but if it's easier to set this stuff up than you can get a lot more programmers submitting patches.

Why can't it be explained to me like I'm 4. condescension at this point would probably be helpful. =-P

lerxst2112
01-17-2013, 01:22 AM
In the previous post you said you copied patch_RoF.conf to your server directory, but this time you said you didn't. Which is it? You obviously need that file in the server directory.

The server generates tons of logs that contain lots of useful information. As I suggested before, you should look at them and see if you're getting any errors or if there are any clues to why it isn't working. You would also be able to tell if the connection is being detected as RoF properly or not.

addingice
01-17-2013, 02:04 AM
ok, so I transferred over *all* the patch files now...and hey it's happy.

So i'm going to spend some time getting a script all set up to get this thing working.

Obviously this is, by the nature of the system, full of little fiddly bits. It just seems a little odd to me we don't have a wizard or some other tool to check things.

but then, I spend most of my day job trying to make all the little fiddly bits of the software I write to go away as much as possible. I'm painfully aware of what it costs us.

ok, enough of me being a whiner. On to seeing if I can offer any help on it in the future. =-P

prickle
01-19-2013, 02:27 AM
Are you guys working with an "unmodified" RoF client from Steam? Or did you have to add files to make it work?

I ask because I have a eqemu server setup on my LAN, and I can get to the Char Select screen with my RoF client, but when I try to zone in with a toon, I get "string not found (xxxx)" (where xxxx is a number).

However, I'm able to log in with my UF client with no problems.

It looks like I have everything. The patch files, the opcodes, the lot. The "string not found" error makes me think I'm missing a string file or something from the client, but it doesn't appear to be the eqstr_en.txt, eqstr_us.txt or eqtext.txt files...

sorvani
01-19-2013, 02:47 AM
clean F2P/RoF download from steam.

create database, build server, copy files, and RoF will load.
If it does not you missed something.

there are no special opcodes needed.

trevius
01-19-2013, 02:52 AM
Have you tried logging into one of the public servers that have RoF enabled? There are a few including PEQ, Storm Haven, and some testing servers that I know of so far. If your client works on those servers, then the issue is with your server. If your client doesn't work on those servers or yours, then there is most likely a problem with your client. Either you modified something (UI or other custom files maybe), or you patched your client. It is possible that SOE updated their download, but I kinda doubt it. I know their latest Live patch would not allow you to even make it as far as Character Select.

prickle
01-19-2013, 02:59 AM
thanks for the pointers. I'll try connecting to one of the server's you mentioned to narrow down my issue.

prickle
01-19-2013, 03:25 AM
That did it. Turns out I have a combination of issues to sort:

1) Desktop Short-cut was wonkie and was running the eqgame.exe from a UF client folder but looking for resource files in the RoF folder ... got that fixed up and the client appears to work the way it should (was able to log into PEQ w/ RoF client).

2) Discovered an issue w/ my server. It appears i may have missed a db update or two and might need to update my quests repo.

prickle
01-19-2013, 05:26 AM
well, i'm not sure what the deal is. It's now showing i have 0 character slots available, and my existing toons aren't allowed to zone in.

i'm tired. i'll give it another go tomorrow.

prickle
01-19-2013, 03:31 PM
progress yay!

I updated my source and used the new CMake system to compile the latest and i'm now able to get into the game env with both my UF and my RoF clients.

now to get bots working... I set EQEMU_ENABLE_BOTS to ON during "cmake -i" but it appears that I may have missed something else, because i'm currently getting "You cannot spawn any bots" when i attempt to "#bot spawn <name>" in game.

c0ncrete
01-19-2013, 03:51 PM
that's because you have the BotQuest rule enabled, your gm flag is off, and your bot_spawn_limit qglobal is set to 0.

prickle
01-19-2013, 04:59 PM
Ah! It was the GM flag. Is there a way to disable the "#gm on" (that doesn't require changing source code?) requirement before spawning bots?

thanks for the help!

c0ncrete
01-19-2013, 05:06 PM
no, it wasn't the GM flag. again, it's the Bots:BotQuest rule in the database. yours is set to 'true'. if you don't intend to require a quest to be completed to allow a client to spawn bots, you want to set this to 'false'.

prickle
01-19-2013, 08:43 PM
No ... the DB has the settings you say I should have...

mysql> SELECT * FROM `rule_values` WHERE `rule_name` LIKE 'Bot%';
+------------+-----------------------+------------+---------------------------------------------------------------------------------------------------------------------------------+
| ruleset_id | rule_name | rule_value | notes |
+------------+-----------------------+------------+---------------------------------------------------------------------------------------------------------------------------------+
| 1 | Bots:BotSpellQuest | false | Anita Thrall's (Anita_Thrall.pl) Bot Spell Scriber quests. |
| 1 | Bots:CreateBotCount | 150 | Number of bots that each account can create |
| 1 | Bots:SpawnBotCount | 71 | Number of bots a character can have spawned at one time, You + 71 bots is a 12 group raid |
| 1 | Bots:BotQuest | false | Optional quest method to manage bot spawn limits using the quest_globals name bot_spawn_limit, see: /bazaar/Aediles_Thrall.pl |
| 1 | Bots:BotGroupBuffing | false | Bots will cast single target buffs as group buffs, default is false for single. Does not make single target buffs work for MGB. |
| 1 | Bots:BotManaRegen | 3.0 | Adjust mana regen for bots, 1 is fast and higher numbers slow it down 3 is about the same as players. |
| 1 | Bots:BotFinishBuffing | false | Allow for buffs to complete even if the bot caster is out of mana. Only affects buffing out of combat. |
| 1 | Bots:BotAAExpansion | 8 | The expansion through which bots will obtain AAs |
+------------+-----------------------+------------+---------------------------------------------------------------------------------------------------------------------------------+
8 rows in set (0.00 sec)

The Bots:BotQuest rule is set to False and always has been. I haven't changed it between my UF server and rebuilding for RoF. I've applied all of the DB patches that are available to bring me up to current.

Despite having the settings that you say the DB should have I still had to use "#gm on" in order to spawn my bots. So, assuming that I shouldn't need "#gm on" to spawn bots with my settings, that must mean there's either something wrong with my compile or there's a bug in the source somewhere...

I see more updates have been committed since i compiled earlier this morning. I'll recompile with the new commits to see if that changes anything.

lerxst2112
01-19-2013, 09:34 PM
The only way to get that exact error is to have that rule enabled.


if(RuleB(Bots, BotQuest) && !c->GetGM()) {
const int allowedBots = AllowedBotSpawns(c->CharacterID(), &TempErrorMessage);

if(!TempErrorMessage.empty()) {
c->Message(13, "Database Error: %s", TempErrorMessage.c_str());
return;
}

if(allowedBots == 0) {
c->Message(0, "You cannot spawn any bots.");
return;
}


What compiler are you using, and are you compiling for 32 or 64 bit?

prickle
01-19-2013, 09:53 PM
I'm compiling with gcc 64bit ...

when I run 'cmake -i' i also disable the -O2 and -O3 optimizations because the server borks and dumps clients like hot cakes on login if i don't (stringstream thing)...

http://www.eqemulator.org/forums/showthread.php?p=182629

Other people are experiencing the same -O optimization issues in Linux. A new thread popped up last week about it, and it has links to 2 other threads on the issue.

Also, I'm compiling on Linux ... this thread was in the development area when I started posting in it... then it got moved to 'Windows Servers' some time today...

lerxst2112
01-19-2013, 10:25 PM
There has been an issue with 64-bit and bool rules before. *shrug*

sorvani
01-19-2013, 10:32 PM
pretty sure those are all worked out.

prickle
01-19-2013, 10:52 PM
well... I noticed I don't have a bot_spawn_limit entry in my quest_globals table.

I'm pretty sure i've never had it, but just in case i've started searching the sql files for the one that creates that entry in the quest_globals table, and so far the only "bot_spawn_limit" entries i'm finding are in the comments section of the rule_values table :\

bah... I just enabled the quest NPC and hailed him that created the "bot_spawn_limit" table entry for me.

I got GM-less bots working again, not quite the way I expected, but it's working again.

Thanks for the help everyone.

prickle
01-19-2013, 10:55 PM
pretty sure those are all worked out.

looks like it may have popped back up? I have my rule_values Bots:BotQuest entry set to "false" and I still ended up having to do the quest to get my bots working again :\

c0ncrete
01-19-2013, 11:06 PM
so you got to work by toggling the rule on and off because it created the bot_spawn_limit qglobal? weird. it shouldn't have even checked for the value of the qglobal if the rule was false. i'm assuming it's set to 0 still?

prickle
01-19-2013, 11:31 PM
Not quite. I had no bot_spawn_limit entry in quest_globals, but it seems that my server was checking for it even though rule_values.Bots:BotQuest was set to false.

So, to make bots work without GM, I enabled the Quest NPC and started the quest to get the quest_globals.bot_spawn_limit entry.

Then I manually edited the quest_global.bot_spawn_limit entry and set it to a non-0 value, because I didn't want to do the quest, and my server is still checking that entry even though rule_values.Bots:BotQuest is set to false.

I did try setting rule_values.Bots:BotQuest to true and then back to false, but no matter what it's set to the server acts like it's always set to true. It was set to false at the start of this problem. It's set back to false right now.

I tried removing the bot_spawn_limit entry after cycling the Bots:BotQuest back to false, and the server instantly gave me the "You cannot spawn any bots" error.

It's definitely weird.

c0ncrete
01-19-2013, 11:47 PM
the rule itself is optional, i believe. if you were to take it out and that fixes it, it would probably confirm the aforementioned boolean issue.

prickle
01-20-2013, 12:22 AM
I'll give it a shot then

prickle
01-20-2013, 12:33 AM
With the Bots:BotQuest rule removed and the bot_spawn_limit entry removed the server gives me the "You cannot spawn any bots" message.

lerxst2112
01-20-2013, 12:37 AM
Make sure you completely rebuilt after switching to bots as well. Try 'make clean' then 'make' to force everything to be rebuilt.

I haven't really looked at it, but KLS mentioned that part of the source is built into a library. If that library didn't get rebuilt and any of the rule stuff is in it then maybe there's an issue with the rule arrays and the data is being read from the wrong place. Long shot, but worth a try.

prickle
01-20-2013, 02:59 AM
my most recent rebuild is of r2432 in a fresh build directory (i.e. it was empty prior to copying the source files in). Builds can't get much cleaner than that, but I still run "make clean" prior to running "make" out of habit.

So far in the various db changes, it appears that my server only cares what's in quest_globals bot_spawn_limit. As long as that exists and is non-0, then it will allow me to spawn my bots regardless of what's in rule_values > Bots:BotQuest, even if Bots:BotQuest is missing.

As far as the library file(s) goes, my previous builds (prior to cmake change) didn't have a libCommon.a file (in addition to the libEMuShareMem.so file). I've included this file in the server directory a long with the other Binary files, but it doesn't seem to make a difference (bot spawning wise) whether or not its there.

lerxst2112
01-20-2013, 06:18 AM
The libCommon.a library doesn't need to be in the server directory, it is created/used when compiling. I just wanted to make sure it had been rebuilt in case that might be the issue.

What does it say when you type #rules values bots in the game? Do the values agree with the corresponding values in the database?

prickle
01-20-2013, 02:34 PM
hmmm

it says "Failed to list rules!" O_o

The plot thickens. To help narrow this down, I ran the '#rules values' command for other categories to make sure it's working, and all of the ones I tried returned accurate information. I ran '#rules values aa' '#rules values adventure' '#rules values bazaar' '#rules values character' '#rules values water' etc, and all of them returned information that matched what's in the db.

Just, running '#rules values bots' returns "Failed to list rules!"

KLS
01-20-2013, 03:45 PM
I did make a fix to bots in the cmake script, it wasn't -DBOTS on the common lib. Though I question why common needs bots related stuff in it.

prickle
01-20-2013, 04:20 PM
roger that!

I'll grab the new source and give it a go!

prickle
01-20-2013, 05:07 PM
I just had a couple of runs at it. With r2433 unmodified, world would repeated core dump (crash) on me.

So, I removed the EQEMU_ENABLE_BOTS lines from the common/CMakeList.txt file and recompiled. So, common back to the way it was and world appears to be running normally again.

Unfortunately, bots are still the way they were before

I'll keep plugging away at this to see if i can figure something out

prickle
01-20-2013, 05:30 PM
I think i found the sticking point. In the old system we had to modify the world/makefile and add -DBOTS to it. I was just looking that the current world/CMakeLists.txt file and found that it doesn't have the "EQEMU_ENABLE_BOTS" conditional. I've added it to mine and recompiled, but the object files don't seem to be getting compiled right. I think i'm missing something else...

still digging

Derision
01-20-2013, 05:41 PM
Try this patch:

Index: world/CMakeLists.txt
================================================== =================
--- world/CMakeLists.txt (revision 2433)
+++ world/CMakeLists.txt (working copy)
@@ -67,6 +67,10 @@

ADD_DEFINITIONS(-DWORLD)

+IF(EQEMU_ENABLE_BOTS)
+ ADD_DEFINITIONS(-DBOTS)
+ENDIF(EQEMU_ENABLE_BOTS)
+
TARGET_LINK_LIBRARIES(world Common ${PERL_LIBRARY} debug ${MySQL_LIBRARY_DEBUG} optimized ${MySQL_LIBRARY_RELEASE})

IF(MSVC)


i.e.

Add:

IF(EQEMU_ENABLE_BOTS)
ADD_DEFINITIONS(-DBOTS)
ENDIF(EQEMU_ENABLE_BOTS)

After ADD_DEFINITIONS(-DWORLD) in the world/CMakeLists.txt file

prickle
01-20-2013, 06:17 PM
yeah... I just finished doing that with world/CMakelists.txt and was just about to post up my diff patch file. You beat me to it though.

That patch + Rev 2433 has bots working like it was before the change to CMake now. :) "#rules values bots" now pulls up all of the Bots:*** settings and I don't need anything in quest_globals to spawn my bots :D

for the record here's the diff I made on that file:
--- world/CMakeLists.txt (Rev 2433)
+++ world/CMakeLists.txt (working copy)
@@ -67,6 +67,10 @@ ADD_EXECUTABLE(world ${world_sources} ${

ADD_DEFINITIONS(-DWORLD)

+IF(EQEMU_ENABLE_BOTS)
+ ADD_DEFINITIONS(-DBOTS)
+ENDIF(EQEMU_ENABLE_BOTS)
+
TARGET_LINK_LIBRARIES(world Common ${PERL_LIBRARY} debug ${MySQL_LIBRARY_DEBUG} optimized ${MySQL_LIBRARY_RELEASE})

IF(MSVC)

Thanks again for all the help and hard work everyone :-D