Hi! I've been on a trip to make this work (make warp portal have 8 memos). I followed the following guide, remembering to edit the places from 10 slots to work like 8:
Spoiler
Everything on the server side seems to be working fine, but I couldn't edit one thing from the guide:
change:
10,39,4,10,31,35,10,18,2,13,15,20,68,2,3,16,
to:
10,39,4,10,31,35,10,18,2,13,15,20,164,2,3,16,
It made me study some things about the hexadecimal packets things, and seems that this could be the problem. So this is my actual cliff_skill_warppoint:
Spoiler
/// Presents a list of available warp destinations (ZC_WARPLIST).
/// 011c <skillid>.W { <mapname>.16B }*4
void clif_skill_warppoint(struct map_session_data* sd, uint16 skill_id, uint16 skill_lv, unsigned short map1, unsigned short map2, unsigned short map3, unsigned short map4, unsigned short map5, unsigned short map6, unsigned short map7, unsigned short map8)
{
int fd;
nullpo_retv(sd);
fd = sd->fd;
WFIFOHEAD(fd,packet_len(0x11c));
WFIFOW(fd,0) = 0x11c;
WFIFOW(fd,2) = skill_id;
memset(WFIFOP(fd,4), 0x00, 4*MAP_NAME_LENGTH_EXT);
if (map1 == (unsigned short)-1) strcpy(WFIFOCP(fd,4), "Random");
else // normal map name
if (map1 > 0) mapindex_getmapname_ext(mapindex_id2name(map1), WFIFOCP(fd,4));
if (map2 > 0) mapindex_getmapname_ext(mapindex_id2name(map2), WFIFOCP(fd,20));
if (map3 > 0) mapindex_getmapname_ext(mapindex_id2name(map3), WFIFOCP(fd,36));
if (map4 > 0) mapindex_getmapname_ext(mapindex_id2name(map4), WFIFOCP(fd,52));
if (map5 > 0) mapindex_getmapname_ext(mapindex_id2name(map5), WFIFOCP(fd,68));
if (map6 > 0) mapindex_getmapname_ext(mapindex_id2name(map6), WFIFOCP(fd,84));
if (map7 > 0) mapindex_getmapname_ext(mapindex_id2name(map7), WFIFOCP(fd,100));
if (map8 > 0) mapindex_getmapname_ext(mapindex_id2name(map8), WFIFOCP(fd,116));
WFIFOSET(fd,packet_len(0x11c));
sd->menuskill_id = skill_id;
if (skill_id == AL_WARP) {
sd->menuskill_val = (sd->ud.skillx<<16)|sd->ud.skilly; //Store warp position here.
sd->state.workinprogress = WIP_DISABLE_ALL;
} else
sd->menuskill_val = skill_lv;
}
And I saw on packets.struct.hpp:
#if PACKETVER_MAIN_NUM >= 20170502 || PACKETVER_RE_NUM >= 20170419 || defined(PACKETVER_ZERO)
skilWarpPointType = 0xabe, // this is the one setted to me, 2020 hexed
#else
skilWarpPointType = 0x11c,
#endif
Maybe the WFIFOSET was giving the wrong packet all the time? And the 0x11c only works to X numbers of memo points?
So I changed all the 0x11c to 0xabe in cliff_skill_warppoint, and now my server gives me the following error:
So yes, I don't know what I'm doing, but I think that I'm getting close to a solution that doesn't need to edit on the hexed.
@Functor Maybe you have a light to different solution than editing the hexed?
Question
Artur9211
Hi! I've been on a trip to make this work (make warp portal have 8 memos). I followed the following guide, remembering to edit the places from 10 slots to work like 8:
Everything on the server side seems to be working fine, but I couldn't edit one thing from the guide:
change:
to:
It made me study some things about the hexadecimal packets things, and seems that this could be the problem. So this is my actual cliff_skill_warppoint:
And I saw on packets.struct.hpp:
#if PACKETVER_MAIN_NUM >= 20170502 || PACKETVER_RE_NUM >= 20170419 || defined(PACKETVER_ZERO) skilWarpPointType = 0xabe, // this is the one setted to me, 2020 hexed #else skilWarpPointType = 0x11c, #endif
Maybe the WFIFOSET was giving the wrong packet all the time? And the 0x11c only works to X numbers of memo points?
So I changed all the 0x11c to 0xabe in cliff_skill_warppoint, and now my server gives me the following error:

So yes, I don't know what I'm doing, but I think that I'm getting close to a solution that doesn't need to edit on the hexed.
@Functor Maybe you have a light to different solution than editing the hexed?
All the help is welcome!
Link to comment
Share on other sites
0 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.