[patch] r7466 | eA | endless teleport loop

This place is for Closed bug reports only. NOT for asking help!

Moderators: Moderators, Developers

Mortimal
Developers
Developers
Posts: 389
Joined: 01 Nov 2008, 15:31
Noob?: No

Re: [patch] r7466 | eA | endless teleport loop

#11 Post by Mortimal »

First one solves the bug.
Second - bot makes 1 additional teleport.(it was expectable)
Third one - appear another bug... With ignoring tele command...

Thats all I used all my ideas...
Please use pin function for uploading your file contents!
EternalHarvest
Developers
Developers
Posts: 1798
Joined: 05 Dec 2008, 05:42
Noob?: Yes

Re: [patch] r7466 | eA | endless teleport loop

#12 Post by EternalHarvest »

The logic in current processDelayedTeleport is:

If there's ai_teleport_delay seconds from last use of Teleport confirmed by the server (set in skill_used_no_damage packet, is it set properly?), then AI::dequeue;

else, if ai_teleport_delay is not set at all (no Teleport cast confirmed) and ai_teleport_retry seconds from last attempt to cast Teleport, try to cast it again.
User avatar
kLabMouse
Administrator
Administrator
Posts: 1301
Joined: 24 Apr 2008, 12:02

Re: [patch] r7466 | eA | endless teleport loop

#13 Post by kLabMouse »

EternalHarvest wrote:The logic in current processDelayedTeleport is:

If there's ai_teleport_delay seconds from last use of Teleport confirmed by the server (set in skill_used_no_damage packet, is it set properly?), then AI::dequeue;

else, if ai_teleport_delay is not set at all (no Teleport cast confirmed) and ai_teleport_retry seconds from last attempt to cast Teleport, try to cast it again.
There could be a situation, that 'skill_used_no_damage packet' is not received.
In that case, the logic breaks, and Kore tries to teleport again.
Mortimal
Developers
Developers
Posts: 389
Joined: 01 Nov 2008, 15:31
Noob?: No

Re: [patch] r7466 | eA | endless teleport loop

#14 Post by Mortimal »

i have made this in ServerType0.pm:

Code: Select all

my $prom = $skill->getHandle();
	message T("Recieved No Damage Skill package - $prom!\n");
	# Set teleport time
	if ($args->{sourceID} eq $accountID && $skill->getHandle() eq 'AL_TELEPORT') {
		message T("Recieved Teleport success package!\n");
		$timeout{ai_teleport_delay}{time} = time;
	}
REALY! There is no reply to 26 skill using Creamy card(Acolite skill not tested...)...
Last edited by Mortimal on 25 Jan 2011, 12:34, edited 2 times in total.
Please use pin function for uploading your file contents!
Mortimal
Developers
Developers
Posts: 389
Joined: 01 Nov 2008, 15:31
Noob?: No

Re: [patch] r7466 | eA | endless teleport loop

#15 Post by Mortimal »

EternalHarvest wrote: else, if ai_teleport_delay is not set at all (no Teleport cast confirmed) and ai_teleport_retry seconds from last attempt to cast Teleport, try to cast it again.

And if server never confirm cast... that means that Kore will teleport in 100% of cases because ai_teleport_retry timeout will sooner or earlier expire and ...
kLabMouse wrote:the logic breaks, and Kore tries to teleport again.
The problem is how to bypass this(((???
Please use pin function for uploading your file contents!
Mortimal
Developers
Developers
Posts: 389
Joined: 01 Nov 2008, 15:31
Noob?: No

Re: [patch] r7466 | eA | endless teleport loop

#16 Post by Mortimal »

The only solution i see is to add teleporyAuto_noConfirmation as parameter in config.txt.

Or there is another solution?
Please use pin function for uploading your file contents!
EternalHarvest
Developers
Developers
Posts: 1798
Joined: 05 Dec 2008, 05:42
Noob?: Yes

Re: [patch] r7466 | eA | endless teleport loop

#17 Post by EternalHarvest »

Another solution: limit the number of teleport attempts in processDelayedTeleport.

What the client receives after casting teleport? Standard menu, map change or something different?
Mortimal
Developers
Developers
Posts: 389
Joined: 01 Nov 2008, 15:31
Noob?: No

Re: [patch] r7466 | eA | endless teleport loop

#18 Post by Mortimal »

I wrote in first post:

Code: Select all

[Jan 23 22:10:50 2011.44] Received packet: 0091 Handler: map_change
[Jan 23 22:10:50 2011.45] Локация сменилась на: lhz_dun03.gat (174, 199).
[Jan 23 22:10:50 2011.45] Вы AI suspended by clientSuspend for 10 seconds
[Jan 23 22:10:50 2011.48] Локация загружена
[Jan 23 22:10:50 2011.88] Received packet: 01F3 Handler: misc_effect
...
[Jan 23 22:10:50 2011.93] Received packet: 01D7 Handler: player_equipment
[Jan 23 22:10:50 2011.94] Received packet: 02E8 Handler: inventory_items_stackable
...
[Jan 23 22:10:50 2011.97] Received packet: 02D0 Handler: inventory_items_nonstackable
...
[Jan 23 22:10:51 2011.33] Received packet: 00B0 Handler: stat_info
...
[Jan 23 22:10:51 2011.27] Received packet: 00B0 Handler: stat_info
...
[Jan 23 22:10:51 2011.69] Received packet: 0199 Handler: map_property
...
[Jan 23 22:10:51 2011.10] Received packet: 022C Handler: actor_display
....
[Jan 23 22:10:51 2011.11] Received packet: 0078 Handler: actor_display
blah blah blah...
Last edited by Mortimal on 25 Jan 2011, 15:39, edited 1 time in total.
Please use pin function for uploading your file contents!
Mortimal
Developers
Developers
Posts: 389
Joined: 01 Nov 2008, 15:31
Noob?: No

Re: [patch] r7466 | eA | endless teleport loop

#19 Post by Mortimal »

Maybe we can specify $timeout{ai_teleport_delay}{time} in map_change package processing?

P.S.: This definetly fixes the problem...
Please use pin function for uploading your file contents!
EternalHarvest
Developers
Developers
Posts: 1798
Joined: 05 Dec 2008, 05:42
Noob?: Yes

Re: [patch] r7466 | eA | endless teleport loop

#20 Post by EternalHarvest »

map_change actually clears both timeouts in initMapChangeVars (functions.pl):

Code: Select all

	delete $timeout{ai_teleport_retry}{time};
	delete $timeout{ai_teleport_delay}{time};
But then, processDelayedTeleport will just call sendSkillUseAgain, it seems.

Try to change

Code: Select all

AI::clear("attack", "move");
in initMapChangeVars to

Code: Select all

AI::clear(qw(attack move teleport));