Issue information

Issue ID
#6081
Status
Fixed
Severity
None
Started
Hercules Elf Bot
Jun 21, 2012 11:11
Last Post
Hercules Elf Bot
Jun 21, 2012 17:06
Confirmation
Yes (6)
No (0)

Hercules Elf Bot - Jun 21, 2012 11:11

Originally posted by [b]emong[/b]
Using latest revision. Whenever I try to move in-game the map-server crashes for no reason.

I have reverted back my revision to 16325 and everything's working fine. no crash in map_sql

This post has been edited by emong on Jun 21, 2012 11:32

Hercules Elf Bot - Jun 21, 2012 11:33

Originally posted by [b]exneval[/b]
Confirmed!!

Hercules Elf Bot - Jun 21, 2012 12:00

Originally posted by [b]Napster[/b]
i think this problem

[url="http://sourceforge.net/apps/trac/rathena/changeset/16327"]http://sourceforge.net/apps/trac/rathena/changeset/16327[/url]

[quote]
0x007351B1 in unit_walktoxy_timer+0x431 (tid=(int)24, tick=(unsigned int)101492259, id=(int)2000001, data=(int)150)
md = (struct mob_data*)0x00000000 <invalid memory>
mrd = (struct mercenary_data*)0x00000000 <invalid memory>
[/quote]

Hercules Elf Bot - Jun 21, 2012 12:26

Originally posted by [b]JoWei[/b]
Confirmed crash. Reverting to 16326, fixes the issue.

Hercules Elf Bot - Jun 21, 2012 12:59

Originally posted by [b]wend[/b]
change this in unit.c:
[CODE] if( sd->md && !check_distance_bl(&sd->bl, &sd->md->bl, MAX_MER_DISTANCE) )
{
// mercenary should be warped after being 3 seconds too far from the master [greenbox]
if (sd->md->masterteleport_timer == 0)
{
sd->md->masterteleport_timer = gettick();
}
else if (DIFF_TICK(gettick(), sd->md->masterteleport_timer) > 3000)
{
sd->md->masterteleport_timer = 0;
unit_warp( &sd->md->bl, sd->bl.m, sd->bl.x, sd->bl.y, CLR_TELEPORT );
}
}
else
{
// reset the tick, he is not far anymore
sd->md->masterteleport_timer = 0;
}[/CODE]
to:
[CODE] if (sd->md) {
if( !check_distance_bl(&sd->bl, &sd->md->bl, MAX_MER_DISTANCE) )
{
// mercenary should be warped after being 3 seconds too far from the master [greenbox]
if (sd->md->masterteleport_timer == 0)
{
sd->md->masterteleport_timer = gettick();
}

else if (DIFF_TICK(gettick(), sd->md->masterteleport_timer) > 3000)
{
sd->md->masterteleport_timer = 0;
unit_warp( &sd->md->bl, sd->bl.m, sd->bl.x, sd->bl.y, CLR_TELEPORT );
}
}
else
{
// reset the tick, he is not far anymore
sd->md->masterteleport_timer = 0;
}
}[/CODE]

This post has been edited by wend on Jun 21, 2012 13:13

Hercules Elf Bot - Jun 21, 2012 16:10

Originally posted by [b]GreenBox[/b]
Fixed in [rev=16328], sorry about that :D