quest system support

Wrote new code? Fixed a bug? Want to discuss technical stuff? Feel free to post it here.

Moderator: Moderators

User avatar
kLabMouse
Administrator
Administrator
Posts: 1301
Joined: 24 Apr 2008, 12:02

Re: quest system support

#11 Post by kLabMouse »

0x02b3 PACKET_ZC_ADD_QUEST

Code: Select all

struct PACKET_ZC_ADD_QUEST {
  short PacketType;
  struct QUEST_MISSION_RECORD {
    unsigned long questID;
    unsigned char show; // Optimizing Compiler sometimes makes this 4 byte long. So be WARNED! (current state, 1 byte)
    time_t startTime; // Mission start time. Not really used, parser just read it.
    time_t time;
    short mobCount; // Max 3. used only LOBYTE. Donno why. Bug???
    struct MISSION_MOB_RECORD {
	  usnigned long mobID;
	  short mobHunt;
	  char mobName[24];
    } mission_mobs[3]; // Max only 3
  } mission_data;
}
User avatar
kLabMouse
Administrator
Administrator
Posts: 1301
Joined: 24 Apr 2008, 12:02

Re: quest system support

#12 Post by kLabMouse »

0x02b4 PACKET_ZC_DEL_QUEST

Code: Select all

struct PACKET_ZC_DEL_QUEST {
  short PacketType;
  unsigned long questID;
}
obsc
Noob
Noob
Posts: 18
Joined: 11 Sep 2009, 03:58
Noob?: Yes

Re: quest system support

#13 Post by obsc »

kLabMouse wrote:0x02b2 PACKET_ZC_ALL_QUEST_MISSION

Code: Select all

struct PACKET_ZC_ALL_QUEST_MISSION {
  short PacketType;
  short PacketLength;
  int questMissionNum;
  struct QUEST_MISSION_RECORD {
    unsigned long questID;
    unsigned char show;
    time_t time;
    short mobCount; // Max 3
    struct MISSION_MOB_RECORD {
	  usnigned long mobID;
	  short mobHunt;
	  char mobName[24];
    } mission_mobs[3]; // Max only 3
  } mission_data[questMissionNum]; // Actually, Client read this data one by one, unless PacketLength end.
}
mmm... can't fit what i dump (iRO::Valkyrie) to this struct:

Code: Select all

B2 02 D8 00 02 00 00 00 D3 EA 00 00 00 00 00 00 
00 00 00 00 01 00 50 04 00 00 0A 00 43 6F 63 6F 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
D6 EA 00 00 00 00 00 00 00 00 00 00 01 00 4F 04 
00 00 08 00 43 61 72 61 6D 65 6C 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
seems like <QUEST_MISSION_RECORD::show> comes as 4-bytes, while counter name does not seem to be as little as 24 bytes.
different protocol implementations?
Last edited by obsc on 11 Sep 2009, 09:43, edited 2 times in total.
User avatar
kLabMouse
Administrator
Administrator
Posts: 1301
Joined: 24 Apr 2008, 12:02

Re: quest system support

#14 Post by kLabMouse »

obsc wrote:different protocol implementations?
short PacketType;
int Type; <-- Here
short PacketLength;
obsc
Noob
Noob
Posts: 18
Joined: 11 Sep 2009, 03:58
Noob?: Yes

Re: quest system support

#15 Post by obsc »

kLabMouse wrote:
obsc wrote:different protocol implementations?
short PacketType;
int Type; <-- Here
short PacketLength;
i failed understanding what you pointed at (to be more precise: where did these 3 lines - especially red middle one - come from), but it's not like my understanding decides anything )
as long as it would work the same way or better - i'm ok with not understanding something )
User avatar
kLabMouse
Administrator
Administrator
Posts: 1301
Joined: 24 Apr 2008, 12:02

Re: quest system support

#16 Post by kLabMouse »

0x02b5 PACKET_ZC_UPDATE_MISSION_HUNT

Code: Select all

struct PACKET_ZC_UPDATE_MISSION_HUNT {
  short PacketType;
  short PacketLen;
  short updateMissionNum;
  struct UPDATE_MISSION_RECORD {
    unsigned long questID;
    usnigned long mobID;
    short mobHunt;
  } update_missions[updateMissionNum];  // Actually, Client determinate this value by PacketLength
};
User avatar
kLabMouse
Administrator
Administrator
Posts: 1301
Joined: 24 Apr 2008, 12:02

Re: quest system support

#17 Post by kLabMouse »

0x02b7 PACKET_ZC_ACTIVE_QUEST

Code: Select all

struct PACKET_ZC_ACTIVE_QUEST {
  short PacketType;
  unsigned int questID;
  unsigned char show;
};
User avatar
kLabMouse
Administrator
Administrator
Posts: 1301
Joined: 24 Apr 2008, 12:02

Re: quest system support

#18 Post by kLabMouse »

0x02b6 PACKET_CZ_ACTIVE_QUEST

Code: Select all

struct PACKET_CZ_ACTIVE_QUEST {
  short PacketType;
  unsigned long questID;
  unsigned char active; // show
}
User avatar
kLabMouse
Administrator
Administrator
Posts: 1301
Joined: 24 Apr 2008, 12:02

Re: quest system support

#19 Post by kLabMouse »

obsc wrote:

Code: Select all

B2 02 D8 00 02 00 00 00 D3 EA 00 00 00 00 00 00 
00 00 00 00 01 00 50 04 00 00 0A 00 43 6F 63 6F 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
D6 EA 00 00 00 00 00 00 00 00 00 00 01 00 4F 04 
00 00 08 00 43 61 72 61 6D 65 6C 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 
Unpacked:

Code: Select all

PacketType: B2 02
PacketLen: D8 00
questMissionNum: 02 00 00 00
mission_data[0] {
  questID: D3 EA 00 00
  show: 00 00 00 00
  time: 00 00 00 00
  mobCount: 01 00
  mission_mobs[0] {
    mobID: 50 04 00 00
    mobHunt: 0A 00
    mobName: 43 6F 63 6F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
  }
  mission_mobs[1] {
    mobID: 00 00 00 00
    mobHunt: 00 00
    mobName: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
  }
  mission_mobs[2] {
    mobID: 00 00 00 00
    mobHunt: 00 00
    mobName: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
  }
}
mission_data[1] {
  questID: D6 EA 00 00
  show: 00 00 00 00
  time: 00 00 00 00
  mobCount: 01 00
  mission_mobs[0] {
    mobID: 4F 04 00 00
    mobHunt: 08 00
    mobName: 43 61 72 61 6D 65 6C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
  }
  mission_mobs[1] {
    mobID: 00 00 00 00
    mobHunt: 00 00
    mobName: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
  }
  mission_mobs[2] {
    mobID: 00 00 00 00
    mobHunt: 00 00
    mobName: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
  }
}
You see the "show: 00 00 00 00" ??? that's Because sometimes MS VC++ optimizer, optimize in memory structures for effective use. that's why, some "char"s can get extra 3 bytes.
Technology
Super Moderators
Super Moderators
Posts: 801
Joined: 06 May 2008, 12:47
Noob?: No

Re: quest system support

#20 Post by Technology »

the perl parsing of the packet:

Code: Select all

quest_all_mission 216, 2
60115, 0, 0, 1
1104, 10, Coco
60118, 0, 0, 1
1103, 8, Caramel
obsc, can you record packet 02B3 (aka. quest_add)?
One ST0 to rule them all? One PE viewer to find them!
One ST_kRO to bring them all and in the darkness bind them...

Mount Doom awaits us, fellowship of OpenKore!