Jump to content
  • 0

Adding more warp points


Artur9211

Question


  • Group:  Members
  • Topic Count:  1
  • Topics Per Day:  0.00
  • Content Count:  3
  • Reputation:   0
  • Joined:  04/23/21
  • Last Seen:  

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 <skill id>.W { <map name>.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:
unknown.png

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

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...