Jump to content

Artur9211

Members
  • Posts

    3
  • Joined

  • Last visited

Posts posted by Artur9211

  1. 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! ?

×
×
  • Create New...