[patch] r7466 | eA | endless teleport loop
Moderators: Moderators, Developers
-
- Developers
- Posts: 389
- Joined: 01 Nov 2008, 15:31
- Noob?: No
Re: [patch] r7466 | eA | endless teleport loop
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...
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!
-
- Developers
- Posts: 1798
- Joined: 05 Dec 2008, 05:42
- Noob?: Yes
Re: [patch] r7466 | eA | endless teleport loop
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.
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.
-
- Administrator
- Posts: 1301
- Joined: 24 Apr 2008, 12:02
Re: [patch] r7466 | eA | endless teleport loop
There could be a situation, that 'skill_used_no_damage packet' is not received.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.
In that case, the logic breaks, and Kore tries to teleport again.
-
- Developers
- Posts: 389
- Joined: 01 Nov 2008, 15:31
- Noob?: No
Re: [patch] r7466 | eA | endless teleport loop
i have made this in ServerType0.pm:
REALY! There is no reply to 26 skill using Creamy card(Acolite skill not tested...)...
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;
}
Last edited by Mortimal on 25 Jan 2011, 12:34, edited 2 times in total.
Please use pin function for uploading your file contents!
-
- Developers
- Posts: 389
- Joined: 01 Nov 2008, 15:31
- Noob?: No
Re: [patch] r7466 | eA | endless teleport loop
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 ...
The problem is how to bypass this(((???kLabMouse wrote:the logic breaks, and Kore tries to teleport again.
Please use pin function for uploading your file contents!
-
- Developers
- Posts: 389
- Joined: 01 Nov 2008, 15:31
- Noob?: No
Re: [patch] r7466 | eA | endless teleport loop
The only solution i see is to add teleporyAuto_noConfirmation as parameter in config.txt.
Or there is another solution?
Or there is another solution?
Please use pin function for uploading your file contents!
-
- Developers
- Posts: 1798
- Joined: 05 Dec 2008, 05:42
- Noob?: Yes
Re: [patch] r7466 | eA | endless teleport loop
Another solution: limit the number of teleport attempts in processDelayedTeleport.
What the client receives after casting teleport? Standard menu, map change or something different?
What the client receives after casting teleport? Standard menu, map change or something different?
-
- Developers
- Posts: 389
- Joined: 01 Nov 2008, 15:31
- Noob?: No
Re: [patch] r7466 | eA | endless teleport loop
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!
-
- Developers
- Posts: 389
- Joined: 01 Nov 2008, 15:31
- Noob?: No
Re: [patch] r7466 | eA | endless teleport loop
Maybe we can specify $timeout{ai_teleport_delay}{time} in map_change package processing?
P.S.: This definetly fixes the problem...
P.S.: This definetly fixes the problem...
Please use pin function for uploading your file contents!
-
- Developers
- Posts: 1798
- Joined: 05 Dec 2008, 05:42
- Noob?: Yes
Re: [patch] r7466 | eA | endless teleport loop
map_change actually clears both timeouts in initMapChangeVars (functions.pl):
But then, processDelayedTeleport will just call sendSkillUseAgain, it seems.
Try to change
in initMapChangeVars to
Code: Select all
delete $timeout{ai_teleport_retry}{time};
delete $timeout{ai_teleport_delay}{time};
Try to change
Code: Select all
AI::clear("attack", "move");
Code: Select all
AI::clear(qw(attack move teleport));