|
|
 |
 |
 |
 |
|
 |
 |
|
 |
 |
|
 |
|
Development::Bots Forum for bots. |

10-23-2009, 02:23 AM
|
Developer
|
|
Join Date: Apr 2003
Posts: 589
|
|
Prickle,
What is the makeup of your group in the example you posted? Was it 2 characters and 4 bots?
__________________
Read my developer notes at my blog.
Quote:
If it's not on IRC, it ain't l33t!
|
|

10-23-2009, 02:48 AM
|
Hill Giant
|
|
Join Date: Sep 2009
Posts: 147
|
|
hmmmmm.... I was only aware of needing to add -DBOTS to the zone/makefile ... I didn't know about the world/makefile
I'll add it, recompile, and report back tomorrow...
The group is 1 player (me --Nunyas) and 5 bots
|

10-23-2009, 11:48 AM
|
Hill Giant
|
|
Join Date: Sep 2009
Posts: 147
|
|
well, just added -DBOTS to my world/makefile and then followed that up with 'make clean' and 'make' from the top level build directory.
I'm still getting the same results. bots still forget to follow me after zoning.
/confused
|

10-23-2009, 12:37 PM
|
Developer
|
|
Join Date: Apr 2003
Posts: 589
|
|
Want to try re-applying this SQL to your group_id table just in case its not there?
Code:
ALTER TABLE `group_id` DROP PRIMARY KEY, ADD PRIMARY KEY USING BTREE(`groupid`, `charid`, `name`);
__________________
Read my developer notes at my blog.
Quote:
If it's not on IRC, it ain't l33t!
|
|
 |
|
 |

10-23-2009, 12:46 PM
|
Developer
|
|
Join Date: Apr 2003
Posts: 589
|
|
Aside from checking your SQL, which sounds like you already have, the only thing I can offer is the following method that actually does the bot zoning:
Code:
// Load and spawn all zoned bots by bot owner character
void Bot::LoadAndSpawnAllZonedBots(Client* botOwner) {
if(botOwner) {
if(botOwner->HasGroup()) {
Group* g = botOwner->GetGroup();
if(g) {
uint32 TempGroupId = g->GetID();
std::string errorMessage;
std::list<uint32> ActiveBots = Bot::GetGroupedBotsByGroupId(botOwner->GetGroup()->GetID(), &errorMessage);
if(errorMessage.empty() && !ActiveBots.empty()) {
for(list<uint32>::iterator itr = ActiveBots.begin(); itr != ActiveBots.end(); itr++) {
Bot* activeBot = Bot::LoadBot(*itr, &errorMessage);
if(!errorMessage.empty()) {
safe_delete(activeBot);
break;
}
if(activeBot) {
activeBot->Spawn(botOwner, &errorMessage);
g->UpdatePlayer(activeBot);
if(g->GetLeader())
activeBot->SetFollowID(g->GetLeader()->GetID());
}
if(activeBot && !botOwner->HasGroup())
database.SetGroupID(activeBot->GetCleanName(), 0, activeBot->GetBotID());
}
}
// Catch all condition for error messages destined for the zone error log
if(!errorMessage.empty()) {
// TODO: Log this error message to zone error log
}
}
}
}
}
The fact that you can see your bot after it zones with you and it has spawned tells me you have gotten to this part of the code...
Code:
if(activeBot) {
activeBot->Spawn(botOwner, &errorMessage);
so i think for you, its just a matter of something not coming together as expected for the next two statements:
Code:
g->UpdatePlayer(activeBot);
if(g->GetLeader())
activeBot->SetFollowID(g->GetLeader()->GetID());
If you know how to debug this, then I'd recommend making sure that GetLeader() isn't returning a null value. if it is not, then I'd make sure that the same object returned by GetLeader() isn't returning a value from GetID() that is 0 .
I'll keep thinking on this for you.
__________________
Read my developer notes at my blog.
Quote:
If it's not on IRC, it ain't l33t!
|
|
 |
|
 |
 |
|
 |

10-23-2009, 02:06 PM
|
Hill Giant
|
|
Join Date: Sep 2009
Posts: 147
|
|
I just noticed this line in the 1030_botzoningsupport.sql file
Code:
DROP TABLE IF EXISTS `botactives`;
The 1027_botactives.sql file creates this table, and then the 1030 update removes it. Is this correct? From looking at the bots.sql file, this seems correct too me, because the latest bots.sql file does not create the botactives table, but I thought I'd check to make sure this is correct.
I looked through the bot.cpp file and all of the bits of code that you mentioned are in there.
I was just digging through the diffs on the bots.sql file in SVN over the changes from 1027 to current and I noticed this was added to the bots.sql file but not to the 1027 update sql file:
Code:
75 DELIMITER $$
76
77 DROP FUNCTION IF EXISTS `GetMobType` $$
78 CREATE FUNCTION `GetMobType` (mobname VARCHAR(64)) RETURNS CHAR(1)
79 BEGIN
80 DECLARE Result CHAR(1);
81
82 SET Result = NULL;
83
84 IF (select count(*) from character_ where name = mobname) > 0 THEN
85 SET Result = 'C';
86 ELSEIF (select count(*) from bots where Name = mobname) > 0 THEN
87 SET Result = 'B';
88 END IF;
89
90 RETURN Result;
91 END $$
92
93 DELIMITER ;
Not sure if this this will have an effect or not, but since it's not in my Database (i didn't source bots.sql, I thought the incremental update sql files would get me there) and I can't find anything else different, I thought I'd mention it...
gonna source it in right now and see if there's any difference...
|
 |
|
 |

10-23-2009, 02:28 PM
|
Developer
|
|
Join Date: Apr 2003
Posts: 589
|
|
Your right that the incremental SQL files are missing the creation of that function, but it isnt used for zoning bots. It is used primarily for supporting bots in ldon adventures.
__________________
Read my developer notes at my blog.
Quote:
If it's not on IRC, it ain't l33t!
|
|

10-23-2009, 02:34 PM
|
Hill Giant
|
|
Join Date: Sep 2009
Posts: 147
|
|
ah... well shoot... /sigh
|

10-23-2009, 07:14 PM
|
Hill Giant
|
|
Join Date: Sep 2009
Posts: 147
|
|
To answer your original question...
Raiding seems ok... I've been 2 grouping in ToV all day. sometimes 2 full groups and sometimes 1 full group and 2 half groups...The raid stuff seems to be working pretty well for me..
|
 |
|
 |

10-24-2009, 12:18 PM
|
Hill Giant
|
|
Join Date: Sep 2009
Posts: 147
|
|
More info on my bot zoning issue:
Updated to 1038 last night
Here are the log entries:
eqemu_debug_world.log - log in from char select to ToV:
Code:
6667 [10.24. - 09:06:44] [WORLD__CLIENT] Checking inbound connection 192.168.1.70 against BannedIPs table
6667 [10.24. - 09:06:44] [WORLD__CLIENT] Connection 192.168.1.70 PASSED banned IPs check. Processing connection.
6667 [10.24. - 09:06:44] [WORLD__CLIENT] rvecchiolli: Logged in. Mode=(CharSel)
6667 [10.24. - 09:06:44] [WORLD__CLIENT] rvecchiolli: LS Account #1
6667 [10.24. - 09:07:28] [WORLD__CLIENT] rvecchiolli: Entering zone templeveeshan (124:0)
6667 [10.24. - 09:07:28] [WORLD__ZONE] [93] [templeveeshan] Setting to 'templeveeshan' (124:0) (Static)
6667 [10.24. - 09:07:28] [WORLD__CLIENT] rvecchiolli: Sending client to zone templeveeshan (124:0) at 192.168.1.135:7092
6667 [10.24. - 09:07:28] [WORLD__CLIENT] rvecchiolli: Client disconnected (not active in process)
eqemu_error_zone.log (still no group):
no entries made during log in
zone-templeveeshan.log first zone in (no groups):
Code:
[Debug] Nunyas has a 14 percent chance of successfully being saved from death. Caster UnfailingDivinityAA rank was 0.
[Debug] Nunyas has a melee rune spell buff with 650 points remaining.
Unable to get group id, char not found!
Unable to get raid id, char not found!
[Debug] [CLIENT__NET_ERR] Nunyas: Unhandled incoming opcode: [OpCode OP_WeaponEquip2 (0x63da) Size=8]
0: 8D 01 00 00 40 00 00 00 | ....@...
[Debug] [CLIENT__NET_ERR] Nunyas: Unhandled incoming opcode: [OpCode OP_WeaponEquip2 (0x63da) Size=8]
0: 8D 01 00 00 80 00 00 00 | ........
[Debug] [CLIENT__NET_ERR] Nunyas: Unhandled incoming opcode: [OpCode OP_WeaponEquip1 (0x6c5e) Size=12]
0: 8D 01 00 00 00 00 00 00 - 00 00 00 00 | ............
|
 |
|
 |

10-24-2009, 12:32 PM
|
Developer
|
|
Join Date: Apr 2003
Posts: 589
|
|
What that log tells me is when you zone in (I presume your zoning into templeveeshan with a group with at least one bot in it), your server is unable to find your group id when it tried to execute this sql command:
Code:
RunQuery(query, MakeAnyLenString(&query, "SELECT groupid from group_id where name='%s'", name), errbuf, &result)
Its too bad we can't debug this for you.
Maybe you can edit your database.cpp file and change the logic that prints the error message "Unable to get group id, char not found!" to something like the following:
Code:
printf("Unable to get group id, char name %s not found!\n", name);
at least then you can be sure of what client or bot it is trying to get the group id for and then check to see if that exact name is in your group_id table.
__________________
Read my developer notes at my blog.
Quote:
If it's not on IRC, it ain't l33t!
|
|
 |
|
 |

10-24-2009, 12:47 PM
|
Hill Giant
|
|
Join Date: Sep 2009
Posts: 147
|
|
Quote:
Originally Posted by WildcardX
What that log tells me is when you zone in (I presume your zoning into templeveeshan with a group with at least one bot in it), your server is unable to find your group id when it tried to execute this sql command:
Code:
RunQuery(query, MakeAnyLenString(&query, "SELECT groupid from group_id where name='%s'", name), errbuf, &result)
Its too bad we can't debug this for you.
Maybe you can edit your database.cpp file and change the logic that prints the error message "Unable to get group id, char not found!" to something like the following:
Code:
printf("Unable to get group id, char name %s not found!\n", name);
at least then you can be sure of what client or bot it is trying to get the group id for and then check to see if that exact name is in your group_id table.
|
Sorry, the first post with initial log in with NO GROUP. I was splitting it up into 3 posts instead of 1 long post. #1 zone in no group, #2 spawn bot setup testing group, and #3 evac/zone the group.
I'll have a look at the file you mentioned and see if I can find anything suspicious... though, I must admit C++ isn't a very strong language for me...
|
 |
|
 |

10-24-2009, 12:58 PM
|
Developer
|
|
Join Date: Apr 2003
Posts: 589
|
|
This is bad:
Quote:
Member of group 92004 named 'Nunyas' had an out of date pointer!!
|
So this means your server has two different objects in memory for your client character as well as yours bot character.
Are you using any custom code? Anything about your server that is not straight out of the peqdatabase or eqemuserver repo?
__________________
Read my developer notes at my blog.
Quote:
If it's not on IRC, it ain't l33t!
|
|

10-24-2009, 12:37 PM
|
Hill Giant
|
|
Join Date: Sep 2009
Posts: 147
|
|
There are the log entries made for spawning my bot and adding to group
MySQL Tables after spawning bot and adding to group (bot is Nukesalot leader os PC Nunyas):
Code:
mysql> select * from group_id;
+---------+--------+-----------+
| groupid | charid | name |
+---------+--------+-----------+
| 92004 | 16 | Nukesalot |
| 92004 | 6 | Nunyas |
+---------+--------+-----------+
2 rows in set (0.00 sec)
mysql> select * from group_leaders;
+-------+------------+---------+--------------+
| gid | leadername | marknpc | leadershipaa |
+-------+------------+---------+--------------+
| 92004 | Nunyas | | |
+-------+------------+---------+--------------+
1 row in set (0.00 sec)
|
 |
|
 |

10-24-2009, 12:44 PM
|
Hill Giant
|
|
Join Date: Sep 2009
Posts: 147
|
|
The following is the log outputs after EVAC WITH bot group:
zone_templeveeshan.log (grouped evac):
Code:
[Debug] Zoning Nunyas to safe coords (-499.000000,-2086.000000,-36.000000) in templeveeshan (124)
[Status] Zoning 'Nunyas' to: templeveeshan (124) - (0) x=-499.000000, y=-2086.000000, z=-36.000000
[Debug] Client::AddMoneyToPP() Nunyas should have: plat:889 gold:78 silver:113 copper:87
[Debug] [WORLD__CLIENT] New connection from 192.168.1.70:49236
[Debug] [NET__IDENT_TRACE] 192.168.1.70:49236: First opcode 0x7213 did not match expected 0x2792
[Debug] [NET__IDENT_TRACE] 192.168.1.70:49236: Tried patch 6.2_world, and it did not match.
[Debug] [NET__IDENT_TRACE] 192.168.1.70:49236: First opcode 0x7213 did not match expected 0x2ec9
[Debug] [NET__IDENT_TRACE] 192.168.1.70:49236: Tried patch 6.2_zone, and it did not match.
[Debug] [NET__IDENT_TRACE] 192.168.1.70:49236: First opcode 0x7213 did not match expected 0x4dd0
[Debug] [NET__IDENT_TRACE] 192.168.1.70:49236: Tried patch Titanium_world, and it did not match.
[Debug] [NET__IDENT_TRACE] 192.168.1.70:49236: First opcode matched 0x7213 and length matched 68
[Debug] [NET__IDENTIFY] Identified stream 192.168.1.70:49236 with signature Titanium_zone
[Debug] [WORLD__CLIENT] New client from 192.168.1.70:49236
[Debug] Nunyas has a melee rune spell buff with 650 points remaining.
[Debug] Member of group 92004 named 'Nunyas' had an out of date pointer!!
[Debug] Member of group 92004 named 'Nukesalot' had an out of date pointer!!
[Error] HandlePacket() Opcode error: Unexpected packet during CLIENT_CONNECTING: opcode: OP_AnnoyingZoneUnknown (#311 eq=0x0000), size: 4112
Unable to get raid id, char not found!
[Debug] [CLIENT__NET_ERR] Nunyas: Unhandled incoming opcode: [OpCode OP_WeaponEquip2 (0x63da) Size=8]
0: 90 01 00 00 40 00 00 00 | ....@...
[Debug] [CLIENT__NET_ERR] Nunyas: Unhandled incoming opcode: [OpCode OP_WeaponEquip2 (0x63da) Size=8]
0: 90 01 00 00 80 00 00 00 | ........
[Debug] [CLIENT__NET_ERR] Nunyas: Unhandled incoming opcode: [OpCode OP_WeaponEquip1 (0x6c5e) Size=12]
0: 90 01 00 00 00 00 00 00 - 00 00 00 00 | ............
MySQL Tables:
Code:
mysql> select * from group_id;
+---------+--------+-----------+
| groupid | charid | name |
+---------+--------+-----------+
| 92004 | 16 | Nukesalot |
| 92004 | 6 | Nunyas |
+---------+--------+-----------+
2 rows in set (0.00 sec)
mysql> select * from group_leaders;
+-------+------------+---------+--------------+
| gid | leadername | marknpc | leadershipaa |
+-------+------------+---------+--------------+
| 92004 | Nunyas | | |
+-------+------------+---------+--------------+
1 row in set (0.00 sec)
eqemu_debug_world.log:
Code:
6667 [10.24. - 09:39:12] [WORLD__CLIENT] New connection from 192.168.1.70:49233
6667 [10.24. - 09:39:12] [NET__IDENT_TRACE] 192.168.1.70:49233: First opcode 0x4dd0 did not match expected 0x2792
6667 [10.24. - 09:39:12] [NET__IDENT_TRACE] 192.168.1.70:49233: Tried patch 6.2_world, and it did not match.
6667 [10.24. - 09:39:12] [NET__IDENT_TRACE] 192.168.1.70:49233: First opcode 0x4dd0 did not match expected 0x2ec9
6667 [10.24. - 09:39:12] [NET__IDENT_TRACE] 192.168.1.70:49233: Tried patch 6.2_zone, and it did not match.
6667 [10.24. - 09:39:12] [NET__IDENT_TRACE] 192.168.1.70:49233: First opcode matched 0x4dd0 and length matched 464
6667 [10.24. - 09:39:12] [NET__IDENTIFY] Identified stream 192.168.1.70:49233 with signature Titanium_world
6667 [10.24. - 09:39:12] [WORLD__CLIENT] Checking inbound connection 192.168.1.70 against BannedIPs table
6667 [10.24. - 09:39:12] [WORLD__CLIENT] Connection 192.168.1.70 PASSED banned IPs check. Processing connection.
6667 [10.24. - 09:39:12] [WORLD__CLIENT] rvecchiolli: Logged in. Mode=(Zoning)
6667 [10.24. - 09:39:12] [WORLD__CLIENT] rvecchiolli: LS Account #1
6667 [10.24. - 09:39:12] [WORLD__CLIENT] rvecchiolli: Telling client to continue session.
6667 [10.24. - 09:39:13] [WORLD__CLIENT] rvecchiolli: Zoning to templeveeshan (124:0)
6667 [10.24. - 09:39:13] [WORLD__CLIENT] rvecchiolli: Sending client to zone templeveeshan (124:0) at 192.168.1.135:7092
6667 [10.24. - 09:39:13] [WORLD__ZONE] [93] [templeveeshan] Setting to 'templeveeshan' (124:0) (Static)
6667 [10.24. - 09:39:13] [WORLD__CLIENT] rvecchiolli: Client disconnected (not active in process)
eqemu_error_zone.log:
Code:
7465 [10.24. - 09:39:24] HandlePacket() Opcode error: Unexpected packet during CLIENT_CONNECTING: opcode: OP_AnnoyingZoneUnknown (#311 eq=0x0000), size: 4112
|
 |
|
 |
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -4. The time now is 01:19 PM.
|
|
 |
|
 |
|
|
|
 |
|
 |
|
 |