Jump to content

freyreuxine13

Members
  • Posts

    85
  • Joined

  • Last visited

Posts posted by freyreuxine13

  1. It says game client not the latest version when I try to log in. I got the mmo.h right ( i think so)

    // Copyright (c) Athena Dev Teams - Licensed under GNU GPL
    // For more information, see LICENCE in the main folder
    
    #ifndef	_MMO_H_
    #define	_MMO_H_
    
    #include "cbasetypes.h"
    #include "../common/db.h"
    #include <time.h>
    
    // server->client protocol version
    //        0 - pre-?
    //        1 - ?                    - 0x196
    //        2 - ?                    - 0x78, 0x79
    //        3 - ?                    - 0x1c8, 0x1c9, 0x1de
    //        4 - ?                    - 0x1d7, 0x1d8, 0x1d9, 0x1da
    //        5 - 2003-12-18aSakexe+   - 0x1ee, 0x1ef, 0x1f0, ?0x1c4, 0x1c5?
    //        6 - 2004-03-02aSakexe+   - 0x1f4, 0x1f5
    //        7 - 2005-04-11aSakexe+   - 0x229, 0x22a, 0x22b, 0x22c
    // 20061023 - 2006-10-23aSakexe+   - 0x6b, 0x6d
    // 20070521 - 2007-05-21aSakexe+   - 0x283
    // 20070821 - 2007-08-21aSakexe+   - 0x2c5
    // 20070918 - 2007-09-18aSakexe+   - 0x2d7, 0x2d9, 0x2da
    // 20071106 - 2007-11-06aSakexe+   - 0x78, 0x7c, 0x22c
    // 20080102 - 2008-01-02aSakexe+   - 0x2ec, 0x2ed , 0x2ee
    // 20081126 - 2008-11-26aSakexe+   - 0x1a2
    // 20090408 - 2009-04-08aSakexe+   - 0x44a (dont use as it overlaps with RE client packets)
    // 20080827 - 2008-08-27aRagexeRE+ - First RE Client
    // 20081217 - 2008-12-17aRagexeRE+ - 0x6d (Note: This one still use old Char Info Packet Structure)
    // 20081218 - 2008-12-17bRagexeRE+ - 0x6d (Note: From this one client use new Char Info Packet Structure)
    // 20090603 - 2009-06-03aRagexeRE+ - 0x7d7, 0x7d8, 0x7d9, 0x7da
    // 20090617 - 2009-06-17aRagexeRE+ - 0x7d9
    // 20090922 - 2009-09-22aRagexeRE+ - 0x7e5, 0x7e7, 0x7e8, 0x7e9
    // 20091103 - 2009-11-03aRagexeRE+ - 0x7f7, 0x7f8, 0x7f9
    // 20100105 - 2010-01-05aRagexeRE+ - 0x133, 0x800, 0x801
    // 20100126 - 2010-01-26aRagexeRE+ - 0x80e
    // 20100223 - 2010-02-23aRagexeRE+ - 0x80f
    // 20100413 - 2010-04-13aRagexeRE+ - 0x6b
    // 20100629 - 2010-06-29aRagexeRE+ - 0x2d0, 0xaa, 0x2d1, 0x2d2
    // 20100721 - 2010-07-21aRagexeRE+ - 0x6b, 0x6d
    // 20100727 - 2010-07-27aRagexeRE+ - 0x6b, 0x6d
    // 20100803 - 2010-08-03aRagexeRE+ - 0x6b, 0x6d, 0x827, 0x828, 0x829, 0x82a, 0x82b, 0x82c, 0x842, 0x843
    // 20101124 - 2010-11-24aRagexeRE+ - 0x856, 0x857, 0x858
    // 20110111 - 2011-01-11aRagexeRE+ - 0x6b, 0x6d
    // 20110928 - 2011-09-28aRagexeRE+ - 0x6b, 0x6d
    // 20111025 - 2011-10-25aRagexeRE+ - 0x6b, 0x6d
    // 20120307 - 2012-03-07aRagexeRE+ - 0x970
    
    #ifndef PACKETVER
    	#define PACKETVER 20120515
    	//#define PACKETVER 20130320
    	//#define PACKETVER 20111116
    #endif
    
    //Remove/Comment this line to disable sc_data saving. [Skotlex]
    #define ENABLE_SC_SAVING
    //Remove/Comment this line to disable server-side hot-key saving support [Skotlex]
    //Note that newer clients no longer save hotkeys in the registry!
    #define HOTKEY_SAVING
    
    #if PACKETVER < 20090603
            // (27 = 9 skills x 3 bars)               (0x02b9,191)
            #define MAX_HOTKEYS 27
    #elif PACKETVER < 20090617
            // (36 = 9 skills x 4 bars)               (0x07d9,254)
            #define MAX_HOTKEYS 36
    #else
            // (38 = 9 skills x 4 bars & 2 Quickslots)(0x07d9,268)
            #define MAX_HOTKEYS 38
    #endif
    
    #define MAX_MAP_PER_SERVER 1500 // Increased to allow creation of Instance Maps
    #define MAX_INVENTORY 100
    //Max number of characters per account. Note that changing this setting alone is not enough if the client is not hexed to support more characters as well.
    #define MAX_CHARS 9
    //Number of slots carded equipment can have. Never set to less than 4 as they are also used to keep the data of forged items/equipment. [Skotlex]
    //Note: The client seems unable to receive data for more than 4 slots due to all related packets having a fixed size.
    #define MAX_SLOTS 4
    //Max amount of a single stacked item
    #define MAX_AMOUNT 30000
    #define MAX_ZENY 1000000000
    #define MAX_FAME 1000000000
    #define MAX_CART 100
    #define MAX_SKILL 3100
    #define GLOBAL_REG_NUM 256   // max permanent character variables per char
    #define ACCOUNT_REG_NUM 64   // max permanent local account variables per account
    #define ACCOUNT_REG2_NUM 16  // max permanent global account variables per account
    //Should hold the max of GLOBAL/ACCOUNT/ACCOUNT2 (needed for some arrays that hold all three)
    #define MAX_REG_NUM 256
    #define DEFAULT_WALK_SPEED 150
    #define MIN_WALK_SPEED 0
    #define MAX_WALK_SPEED 1000
    #define MAX_STORAGE 600
    #define MAX_GUILD_STORAGE 600
    #define MAX_PARTY 12
    #define MAX_GUILD 16+10*6	// increased max guild members +6 per 1 extension levels [Lupus]
    #define MAX_GUILDPOSITION 20	// increased max guild positions to accomodate for all members [Valaris] (removed) [PoW]
    #define MAX_GUILDEXPULSION 32
    #define MAX_GUILDALLIANCE 16
    #define MAX_GUILDSKILL	15 // increased max guild skills because of new skills [Sara-chan]
    #define MAX_GUILDLEVEL 50
    #define MAX_GUARDIANS 8	//Local max per castle. [Skotlex]
    #define MAX_QUEST_DB 2700 //Max quests that the server will load
    #define MAX_QUEST_OBJECTIVES 3 //Max quest objectives for a quest
    
    // for produce
    #define MIN_ATTRIBUTE 0
    #define MAX_ATTRIBUTE 4
    #define ATTRIBUTE_NORMAL 0
    #define MIN_STAR 0
    #define MAX_STAR 3
    
    #define MAX_STATUS_TYPE 5
    
    #define WEDDING_RING_M 2634
    #define WEDDING_RING_F 2635
    
    //For character names, title names, guilds, maps, etc.
    //Includes null-terminator as it is the length of the array.
    #define NAME_LENGTH (23 + 1)
    //For item names, which tend to have much longer names.
    #define ITEM_NAME_LENGTH 50
    //For Map Names, which the client considers to be 16 in length including the .gat extension
    #define MAP_NAME_LENGTH (11 + 1)
    #define MAP_NAME_LENGTH_EXT (MAP_NAME_LENGTH + 4)
    //Pincode Length
    #define PINCODE_LENGTH 4
    
    #define MAX_FRIENDS 40
    #define MAX_MEMOPOINTS 3
    
    //Size of the fame list arrays.
    #define MAX_FAME_LIST 10
    
    //Limits to avoid ID collision with other game objects
    #define START_ACCOUNT_NUM 2000000
    #define END_ACCOUNT_NUM 100000000
    #define START_CHAR_NUM 150000
    
    //Guilds
    #define MAX_GUILDMES1 60
    #define MAX_GUILDMES2 120
    
    //Base Homun skill.
    #define HM_SKILLBASE 8001
    #define MAX_HOMUNSKILL 43
    #define MAX_HOMUNCULUS_CLASS	52	//[orn], Increased to 60 from 16 to allow new Homun-S.
    #define HM_CLASS_BASE 6001
    #define HM_CLASS_MAX (HM_CLASS_BASE+MAX_HOMUNCULUS_CLASS-1)
    
    //Mail System
    #define MAIL_MAX_INBOX 30
    #define MAIL_TITLE_LENGTH 40
    #define MAIL_BODY_LENGTH 200
    
    //Mercenary System
    #define MC_SKILLBASE 8201
    #define MAX_MERCSKILL 40
    #define MAX_MERCENARY_CLASS 61
    
    //Elemental System
    #define MAX_ELEMENTALSKILL 42
    #define EL_SKILLBASE 8401
    #define MAX_ELESKILLTREE 3
    #define MAX_ELEMENTAL_CLASS 12
    #define EL_CLASS_BASE 2114
    #define EL_CLASS_MAX (EL_CLASS_BASE+MAX_ELEMENTAL_CLASS-1)
    
    enum item_types {
    	IT_HEALING = 0,
    	IT_UNKNOWN, //1
    	IT_USABLE,  //2
    	IT_ETC,     //3
    	IT_WEAPON,  //4
    	IT_ARMOR,   //5
    	IT_CARD,    //6
    	IT_PETEGG,  //7
    	IT_PETARMOR,//8
    	IT_UNKNOWN2,//9
    	IT_AMMO,    //10
    	IT_DELAYCONSUME,//11
    	IT_CASH = 18,
    	IT_MAX
    };
    
    
    //Questlog system [Kevin] [Inkfish]
    typedef enum quest_state { Q_INACTIVE, Q_ACTIVE, Q_COMPLETE } quest_state;
    
    struct quest {
    	int quest_id;
    	unsigned int time;
    	int count[MAX_QUEST_OBJECTIVES];
    	quest_state state;
    };
    
    struct item {
    	int id;
    	short nameid;
    	short amount;
    	unsigned short equip; // location(s) where item is equipped (using enum equip_pos for bitmasking)
    	char identify;
    	char refine;
    	char attribute;
    	short card[MAX_SLOTS];
    	unsigned int expire_time;
    	char favorite, bound;
    	uint64 unique_id;
    };
    
    struct point {
    	unsigned short map;
    	short x,y;
    };
    
    enum e_skill_flag
    {
    	SKILL_FLAG_PERMANENT,
    	SKILL_FLAG_TEMPORARY,
    	SKILL_FLAG_PLAGIARIZED,
    	SKILL_FLAG_REPLACED_LV_0, // temporary skill overshadowing permanent skill of level 'N - SKILL_FLAG_REPLACED_LV_0',
    	SKILL_FLAG_PERM_GRANTED, // permanent, granted through someway e.g. script
    	SKILL_FLAG_TMP_COMBO, //@FIXME for homon combo atm
    	//...
    };
    
    struct s_skill {
    	unsigned short id;
    	unsigned char lv;
    	unsigned char flag; // see enum e_skill_flag
    };
    
    struct global_reg {
    	char str[32];
    	char value[256];
    };
    
    //Holds array of global registries, used by the char server and converter.
    struct accreg {
    	int account_id, char_id;
    	int reg_num;
    	struct global_reg reg[MAX_REG_NUM];
    };
    
    //For saving status changes across sessions. [Skotlex]
    struct status_change_data {
    	unsigned short type; //SC_type
    	long val1, val2, val3, val4, tick; //Remaining duration.
    };
    
    struct storage_data {
    	int storage_amount;
    	struct item items[MAX_STORAGE];
    };
    
    struct guild_storage {
    	int dirty;
    	int guild_id;
    	short storage_status;
    	short storage_amount;
    	struct item items[MAX_GUILD_STORAGE];
    	unsigned short lock;
    };
    
    struct s_pet {
    	int account_id;
    	int char_id;
    	int pet_id;
    	short class_;
    	short level;
    	short egg_id;//pet egg id
    	short equip;//pet equip name_id
    	short intimate;//pet friendly
    	short hungry;//pet hungry
    	char name[NAME_LENGTH];
    	char rename_flag;
    	char incuvate;
    };
    
    struct s_homunculus {	//[orn]
    	char name[NAME_LENGTH];
    	int hom_id;
    	int char_id;
    	short class_;
    	short prev_class;
    	int hp,max_hp,sp,max_sp;
    	unsigned int intimacy;	//[orn]
    	short hunger;
    	struct s_skill hskill[MAX_HOMUNSKILL]; //albator
    	short skillpts;
    	short level;
    	unsigned int exp;
    	short rename_flag;
    	short vaporize; //albator
    	int str ;
    	int agi ;
    	int vit ;
    	int int_ ;
    	int dex ;
    	int luk ;
    
    	char spiritball; //for homun S [lighta]
    };
    
    struct s_mercenary {
    	int mercenary_id;
    	int char_id;
    	short class_;
    	int hp, sp;
    	unsigned int kill_count;
    	unsigned int life_time;
    };
    
    struct s_elemental {
    	int elemental_id;
    	int char_id;
    	short class_;
    	int mode;
    	int hp, sp, max_hp, max_sp, matk, atk, atk2;
    	short hit, flee, amotion, def, mdef;
    	int life_time;
    };
    
    struct s_friend {
    	int account_id;
    	int char_id;
    	char name[NAME_LENGTH];
    };
    
    #ifdef HOTKEY_SAVING
    struct hotkey {
    	unsigned int id;
    	unsigned short lv;
    	unsigned char type; // 0: item, 1: skill
    };
    #endif
    
    struct mmo_charstatus {
    	int char_id;
    	int account_id;
    	int partner_id;
    	int father;
    	int mother;
    	int child;
    
    	unsigned int base_exp,job_exp;
    	int zeny;
    
    	short class_;
    	unsigned int status_point,skill_point;
    	int hp,max_hp,sp,max_sp;
    	unsigned int option;
    	short manner;
    	unsigned char karma;
    	short hair,hair_color,clothes_color;
    	int party_id,guild_id,pet_id,hom_id,mer_id,ele_id;
    	int fame;
    
    	// Mercenary Guilds Rank
    	int arch_faith, arch_calls;
    	int spear_faith, spear_calls;
    	int sword_faith, sword_calls;
    
    	short weapon; // enum weapon_type
    	short shield; // view-id
    	short head_top,head_mid,head_bottom;
    	short robe;
    
    	char name[NAME_LENGTH];
    	unsigned int base_level,job_level;
    	short str,agi,vit,int_,dex,luk;
    	unsigned char slot,sex;
    
    	uint32 mapip;
    	uint16 mapport;
    
    	struct point last_point,save_point,memo_point[MAX_MEMOPOINTS];
    	struct item inventory[MAX_INVENTORY],cart[MAX_CART];
    	struct storage_data storage;
    	struct s_skill skill[MAX_SKILL];
    
    	struct s_friend friends[MAX_FRIENDS]; //New friend system [Skotlex]
    #ifdef HOTKEY_SAVING
    	struct hotkey hotkeys[MAX_HOTKEYS];
    #endif
    	bool show_equip;
    	short rename;
    
    	time_t delete_date;
    
    	// Char server addon system
    	unsigned int character_moves;
    };
    
    typedef enum mail_status {
    	MAIL_NEW,
    	MAIL_UNREAD,
    	MAIL_READ,
    } mail_status;
    
    struct mail_message {
    	int id;
    	int send_id;
    	char send_name[NAME_LENGTH];
    	int dest_id;
    	char dest_name[NAME_LENGTH];
    	char title[MAIL_TITLE_LENGTH];
    	char body[MAIL_BODY_LENGTH];
    
    	mail_status status;
    	time_t timestamp; // marks when the message was sent
    
    	int zeny;
    	struct item item;
    };
    
    struct mail_data {
    	short amount;
    	bool full;
    	short unchecked, unread;
    	struct mail_message msg[MAIL_MAX_INBOX];
    };
    
    struct auction_data {
    	unsigned int auction_id;
    	int seller_id;
    	char seller_name[NAME_LENGTH];
    	int buyer_id;
    	char buyer_name[NAME_LENGTH];
    
    	struct item item;
    	// This data is required for searching, as itemdb is not read by char server
    	char item_name[ITEM_NAME_LENGTH];
    	short type;
    
    	unsigned short hours;
    	int price, buynow;
    	time_t timestamp; // auction's end time
    	int auction_end_timer;
    };
    
    struct registry {
    	int global_num;
    	struct global_reg global[GLOBAL_REG_NUM];
    	int account_num;
    	struct global_reg account[ACCOUNT_REG_NUM];
    	int account2_num;
    	struct global_reg account2[ACCOUNT_REG2_NUM];
    };
    
    struct party_member {
    	int account_id;
    	int char_id;
    	char name[NAME_LENGTH];
    	unsigned short class_;
    	unsigned short map;
    	unsigned short lv;
    	unsigned leader : 1,
    	         online : 1;
    };
    
    struct party {
    	int party_id;
    	char name[NAME_LENGTH];
    	unsigned char count; //Count of online characters.
    	unsigned exp : 1,
    				item : 2; //&1: Party-Share (round-robin), &2: pickup style: shared.
    	struct party_member member[MAX_PARTY];
    };
    
    struct map_session_data;
    struct guild_member {
    	int account_id, char_id;
    	short hair,hair_color,gender,class_,lv;
    	uint64 exp;
    	int exp_payper;
    	short online,position;
    	char name[NAME_LENGTH];
    	struct map_session_data *sd;
    	unsigned char modified;
    };
    
    struct guild_position {
    	char name[NAME_LENGTH];
    	int mode;
    	int exp_mode;
    	unsigned char modified;
    };
    
    struct guild_alliance {
    	int opposition;
    	int guild_id;
    	char name[NAME_LENGTH];
    };
    
    struct guild_expulsion {
    	char name[NAME_LENGTH];
    	char mes[40];
    	int account_id;
    };
    
    struct guild_skill {
    	int id,lv;
    };
    
    struct guild {
    	int guild_id;
    	short guild_lv, connect_member, max_member, average_lv;
    	uint64 exp;
    	unsigned int next_exp;
    	int skill_point;
    	char name[NAME_LENGTH],master[NAME_LENGTH];
    	struct guild_member member[MAX_GUILD];
    	struct guild_position position[MAX_GUILDPOSITION];
    	char mes1[MAX_GUILDMES1],mes2[MAX_GUILDMES2];
    	int emblem_len,emblem_id;
    	char emblem_data[2048];
    	struct guild_alliance alliance[MAX_GUILDALLIANCE];
    	struct guild_expulsion expulsion[MAX_GUILDEXPULSION];
    	struct guild_skill skill[MAX_GUILDSKILL];
    
    	/* TODO: still used for something? */
    	unsigned short save_flag; // for TXT saving
    	void *channel;
    };
    
    struct guild_castle {
    	int castle_id;
    	int mapindex;
    	char castle_name[NAME_LENGTH];
    	char castle_event[NAME_LENGTH];
    	int guild_id;
    	int economy;
    	int defense;
    	int triggerE;
    	int triggerD;
    	int nextTime;
    	int payTime;
    	int createTime;
    	int visibleC;
    	struct {
    		unsigned visible : 1;
    		int id; // object id
    	} guardian[MAX_GUARDIANS];
    	int* temp_guardians; // ids of temporary guardians (mobs)
    	int temp_guardians_max;
    };
    
    struct fame_list {
    	int id;
    	int fame;
    	char name[NAME_LENGTH];
    };
    
    enum { //Change Guild Infos
    	GBI_EXP	=1,		// Guild Experience (EXP)
    	GBI_GUILDLV,		// Guild level
    	GBI_SKILLPOINT,		// Guild skillpoints
    	GBI_SKILLLV,		// Guild skill_lv ?? seem unused
    };
    
    enum { //Change Member Infos
    	GMI_POSITION	=0,
    	GMI_EXP,
    	GMI_HAIR,
    	GMI_HAIR_COLOR,
    	GMI_GENDER,
    	GMI_CLASS,
    	GMI_LEVEL,
    };
    
    enum e_guild_skill {
    	GD_SKILLBASE=10000,
    	GD_APPROVAL=10000,
    	GD_KAFRACONTRACT=10001,
    	GD_GUARDRESEARCH=10002,
    	GD_GUARDUP=10003,
    	GD_EXTENSION=10004,
    	GD_GLORYGUILD=10005,
    	GD_LEADERSHIP=10006,
    	GD_GLORYWOUNDS=10007,
    	GD_SOULCOLD=10008,
    	GD_HAWKEYES=10009,
    	GD_BATTLEORDER=10010,
    	GD_REGENERATION=10011,
    	GD_RESTORE=10012,
    	GD_EMERGENCYCALL=10013,
    	GD_DEVELOPMENT=10014,
    	GD_ITEMEMERGENCYCALL=10015,
    	GD_MAX,
    };
    
    
    //These mark the ID of the jobs, as expected by the client. [Skotlex]
    enum {
    	JOB_NOVICE,
    	JOB_SWORDMAN,
    	JOB_MAGE,
    	JOB_ARCHER,
    	JOB_ACOLYTE,
    	JOB_MERCHANT,
    	JOB_THIEF,
    	JOB_KNIGHT,
    	JOB_PRIEST,
    	JOB_WIZARD,
    	JOB_BLACKSMITH,
    	JOB_HUNTER,
    	JOB_ASSASSIN,
    	JOB_KNIGHT2,
    	JOB_CRUSADER,
    	JOB_MONK,
    	JOB_SAGE,
    	JOB_ROGUE,
    	JOB_ALCHEMIST,
    	JOB_BARD,
    	JOB_DANCER,
    	JOB_CRUSADER2,
    	JOB_WEDDING,
    	JOB_SUPER_NOVICE,
    	JOB_GUNSLINGER,
    	JOB_NINJA,
    	JOB_XMAS,
    	JOB_SUMMER,
    	JOB_HANBOK,
    	JOB_MAX_BASIC,
    
    	JOB_NOVICE_HIGH = 4001,
    	JOB_SWORDMAN_HIGH,
    	JOB_MAGE_HIGH,
    	JOB_ARCHER_HIGH,
    	JOB_ACOLYTE_HIGH,
    	JOB_MERCHANT_HIGH,
    	JOB_THIEF_HIGH,
    	JOB_LORD_KNIGHT,
    	JOB_HIGH_PRIEST,
    	JOB_HIGH_WIZARD,
    	JOB_WHITESMITH,
    	JOB_SNIPER,
    	JOB_ASSASSIN_CROSS,
    	JOB_LORD_KNIGHT2,
    	JOB_PALADIN,
    	JOB_CHAMPION,
    	JOB_PROFESSOR,
    	JOB_STALKER,
    	JOB_CREATOR,
    	JOB_CLOWN,
    	JOB_GYPSY,
    	JOB_PALADIN2,
    
    	JOB_BABY,
    	JOB_BABY_SWORDMAN,
    	JOB_BABY_MAGE,
    	JOB_BABY_ARCHER,
    	JOB_BABY_ACOLYTE,
    	JOB_BABY_MERCHANT,
    	JOB_BABY_THIEF,
    	JOB_BABY_KNIGHT,
    	JOB_BABY_PRIEST,
    	JOB_BABY_WIZARD,
    	JOB_BABY_BLACKSMITH,
    	JOB_BABY_HUNTER,
    	JOB_BABY_ASSASSIN,
    	JOB_BABY_KNIGHT2,
    	JOB_BABY_CRUSADER,
    	JOB_BABY_MONK,
    	JOB_BABY_SAGE,
    	JOB_BABY_ROGUE,
    	JOB_BABY_ALCHEMIST,
    	JOB_BABY_BARD,
    	JOB_BABY_DANCER,
    	JOB_BABY_CRUSADER2,
    	JOB_SUPER_BABY,
    
    	JOB_TAEKWON,
    	JOB_STAR_GLADIATOR,
    	JOB_STAR_GLADIATOR2,
    	JOB_SOUL_LINKER,
    
    	JOB_GANGSI,
    	JOB_DEATH_KNIGHT,
    	JOB_DARK_COLLECTOR,
    
    	JOB_RUNE_KNIGHT = 4054,
    	JOB_WARLOCK,
    	JOB_RANGER,
    	JOB_ARCH_BISHOP,
    	JOB_MECHANIC,
    	JOB_GUILLOTINE_CROSS,
    
    	JOB_RUNE_KNIGHT_T,
    	JOB_WARLOCK_T,
    	JOB_RANGER_T,
    	JOB_ARCH_BISHOP_T,
    	JOB_MECHANIC_T,
    	JOB_GUILLOTINE_CROSS_T,
    
    	JOB_ROYAL_GUARD,
    	JOB_SORCERER,
    	JOB_MINSTREL,
    	JOB_WANDERER,
    	JOB_SURA,
    	JOB_GENETIC,
    	JOB_SHADOW_CHASER,
    
    	JOB_ROYAL_GUARD_T,
    	JOB_SORCERER_T,
    	JOB_MINSTREL_T,
    	JOB_WANDERER_T,
    	JOB_SURA_T,
    	JOB_GENETIC_T,
    	JOB_SHADOW_CHASER_T,
    
    	JOB_RUNE_KNIGHT2,
    	JOB_RUNE_KNIGHT_T2,
    	JOB_ROYAL_GUARD2,
    	JOB_ROYAL_GUARD_T2,
    	JOB_RANGER2,
    	JOB_RANGER_T2,
    	JOB_MECHANIC2,
    	JOB_MECHANIC_T2,
    
    	JOB_BABY_RUNE = 4096,
    	JOB_BABY_WARLOCK,
    	JOB_BABY_RANGER,
    	JOB_BABY_BISHOP,
    	JOB_BABY_MECHANIC,
    	JOB_BABY_CROSS,
    	JOB_BABY_GUARD,
    	JOB_BABY_SORCERER,
    	JOB_BABY_MINSTREL,
    	JOB_BABY_WANDERER,
    	JOB_BABY_SURA,
    	JOB_BABY_GENETIC,
    	JOB_BABY_CHASER,
    
    	JOB_BABY_RUNE2,
    	JOB_BABY_GUARD2,
    	JOB_BABY_RANGER2,
    	JOB_BABY_MECHANIC2,
    
    	JOB_SUPER_NOVICE_E = 4190,
    	JOB_SUPER_BABY_E,
    
    	JOB_KAGEROU = 4211,
    	JOB_OBORO,
    
    	JOB_MAX,
    };
    
    enum {
    	SEX_FEMALE = 0,
    	SEX_MALE,
    	SEX_SERVER
    };
    
    // sanity checks...
    #if MAX_ZENY > INT_MAX
    #error MAX_ZENY is too big
    #endif
    
    #endif /* _MMO_H_ */
    
    

     

    packet_db:

    // Client<->Map Packet Database
    //
    // Structure of Database:
    // PacketType,PacketLength[,Name,FieldIndex1:FieldIndex2:FieldIndex3:...]
    //
    // 01. PacketType ID of the packet.
    // 02. PacketLength Length of the packet. If 0, packet is disabled in current packet version. If -1, packet has variable size.
    // 03. Name Name of the packet parser function (optional, for incoming packets only).
    // 04. FieldIndex Specifies the offset of a packet field in bytes from the begin of the packet (only specified when Name is given).
    // Can be 0, when the layout is not known.
    // ...
    //
    // NOTE: Up to MAX_PACKET_POS (typically 20) field indexes may be used.
    //
    // The packet database allows you to add support for new clients,
    // because packets change every release.
    //
    // Note: Every packet version needs a wanttoconnection specification, since
    // that is the packet used to identify a client's version.
    // If multiple versions have the same connection packet, the higher version
    // will be used (unless the lower one is specified as the default)
    //
    // Incoming packets have their parser function and layout specified, which enables
    // them for the current and all higher versions, unless explicitely disabled.
    //
    // Outgoing packets must be specified in order to enable them for the current
    // and all higher versions, unless explicitely disabled. Packets that are not
    // enabled for a packet version are silently discarded when sent as multicast.
    //
    // Every packet version inherits packet definitions from the previous (lower)
    // packet version.
    //
    // Main packet version of the DB to use (default = max available version)
    // Client detection is faster when all clients use this version.
    // Version 23 is the latest Sakexe (above versions are for Renewal clients)
    //packet_db_ver: 25
    packet_db_ver: 28

    packet_ver: 5
    0x0064,55
    0x0065,17
    0x0066,6
    0x0067,37
    0x0068,46
    0x0069,-1
    0x006a,23
    0x006b,-1
    0x006c,3
    0x006d,108
    0x006e,3
    0x006f,2
    0x0070,6
    0x0071,28
    0x0072,19,wanttoconnection,2:6:10:14:18
    0x0073,11
    0x0074,3
    0x0075,-1
    0x0076,9
    0x0077,5
    0x0078,54
    0x0079,53
    0x007a,58
    0x007b,60
    0x007c,41
    0x007d,2,loadendack,0
    0x007e,6,ticksend,2
    0x007f,6
    0x0080,7
    0x0081,3
    0x0082,2
    0x0083,2
    0x0084,2
    0x0085,5,walktoxy,2
    0x0086,16
    0x0087,12
    0x0088,10
    0x0089,7,actionrequest,2:6
    0x008a,29
    0x008b,2
    0x008c,-1,globalmessage,2:4
    0x008d,-1
    0x008e,-1
    //0x008f,-1
    0x0090,7,npcclicked,2
    0x0091,22
    0x0092,28
    0x0093,2
    0x0094,6,getcharnamerequest,2
    0x0095,30
    0x0096,-1,wis,2:4:28
    0x0097,-1
    0x0098,3
    0x0099,-1,broadcast,2:4
    0x009a,-1
    0x009b,5,changedir,2:4
    0x009c,9
    0x009d,17
    0x009e,17
    0x009f,6,takeitem,2
    0x00a0,23
    0x00a1,6
    0x00a2,6,dropitem,2:4
    0x00a3,-1
    0x00a4,-1
    0x00a5,-1
    0x00a6,-1
    0x00a7,8,useitem,2:4
    0x00a8,7
    0x00a9,6,equipitem,2:4
    0x00aa,7
    0x00ab,4,unequipitem,2
    0x00ac,7
    //0x00ad,-1
    0x00ae,-1
    0x00af,6
    0x00b0,8
    0x00b1,8
    0x00b2,3,restart,2
    0x00b3,3
    0x00b4,-1
    0x00b5,6
    0x00b6,6
    0x00b7,-1
    0x00b8,7,npcselectmenu,2:6
    0x00b9,6,npcnextclicked,2
    0x00ba,2
    0x00bb,5,statusup,2:4
    0x00bc,6
    0x00bd,44
    0x00be,5
    0x00bf,3,emotion,2
    0x00c0,7
    0x00c1,2,howmanyconnections,0
    0x00c2,6
    0x00c3,8
    0x00c4,6
    0x00c5,7,npcbuysellselected,2:6
    0x00c6,-1
    0x00c7,-1
    0x00c8,-1,npcbuylistsend,2:4
    0x00c9,-1,npcselllistsend,2:4
    0x00ca,3
    0x00cb,3
    0x00cc,6,gmkick,2
    0x00cd,3
    0x00ce,2,killall,0
    0x00cf,27,wisexin,2:26
    0x00d0,3,wisall,2
    0x00d1,4
    0x00d2,4
    0x00d3,2,wisexlist,0
    0x00d4,-1
    0x00d5,-1,createchatroom,2:4:6:7:15
    0x00d6,3
    0x00d7,-1
    0x00d8,6
    0x00d9,14,chataddmember,2:6
    0x00da,3
    0x00db,-1
    0x00dc,28
    0x00dd,29
    0x00de,-1,chatroomstatuschange,2:4:6:7:15
    0x00df,-1
    0x00e0,30,changechatowner,2:6
    0x00e1,30
    0x00e2,26,kickfromchat,2
    0x00e3,2,chatleave,0
    0x00e4,6,traderequest,2
    0x00e5,26
    0x00e6,3,tradeack,2
    0x00e7,3
    0x00e8,8,tradeadditem,2:4
    0x00e9,19
    0x00ea,5
    0x00eb,2,tradeok,0
    0x00ec,3
    0x00ed,2,tradecancel,0
    0x00ee,2
    0x00ef,2,tradecommit,0
    0x00f0,3
    0x00f1,2
    0x00f2,6
    0x00f3,8,movetokafra,2:4
    0x00f4,21
    0x00f5,8,movefromkafra,2:4
    0x00f6,8
    0x00f7,2,closekafra,0
    0x00f8,2
    0x00f9,26,createparty,2
    0x00fa,3
    0x00fb,-1
    0x00fc,6,partyinvite,2
    0x00fd,27
    0x00fe,30
    0x00ff,10,replypartyinvite,2:6
    0x0100,2,leaveparty,0
    0x0101,6
    0x0102,6,partychangeoption,2
    0x0103,30,removepartymember,2:6
    0x0104,79
    0x0105,31
    0x0106,10
    0x0107,10
    0x0108,-1,partymessage,2:4
    0x0109,-1
    0x010a,4
    0x010b,6
    0x010c,6
    0x010d,2
    0x010e,11
    0x010f,-1
    0x0110,10
    0x0111,39
    0x0112,4,skillup,2
    0x0113,10,useskilltoid,2:4:6
    0x0114,31
    0x0115,35
    0x0116,10,useskilltopos,2:4:6:8
    0x0117,18
    0x0118,2,stopattack,0
    0x0119,13
    0x011a,15
    0x011b,20,useskillmap,2:4
    0x011c,68
    0x011d,2,requestmemo,0
    0x011e,3
    0x011f,16
    0x0120,6
    0x0121,14
    0x0122,-1
    0x0123,-1
    0x0124,21
    0x0125,8
    0x0126,8,putitemtocart,2:4
    0x0127,8,getitemfromcart,2:4
    0x0128,8,movefromkafratocart,2:4
    0x0129,8,movetokafrafromcart,2:4
    0x012a,2,removeoption,0
    0x012b,2
    0x012c,3
    0x012d,4
    0x012e,2,closevending,0
    0x012f,-1
    0x0130,6,vendinglistreq,2
    0x0131,86
    0x0132,6
    0x0133,-1
    0x0134,-1,purchasereq,2:4:8
    0x0135,7
    0x0136,-1
    0x0137,6
    0x0138,3
    0x0139,16
    0x013a,4
    0x013b,4
    0x013c,4
    0x013d,6
    0x013e,24
    0x013f,26,itemmonster,2
    0x0140,22,mapmove,2:18:20
    0x0141,14
    0x0142,6
    0x0143,10,npcamountinput,2:6
    0x0144,23
    0x0145,19
    0x0146,6,npccloseclicked,2
    0x0147,39
    0x0148,8
    0x0149,9,gmreqnochat,2:6:7
    0x014a,6
    0x014b,27
    0x014c,-1
    0x014d,2,guildcheckmaster,0
    0x014e,6
    0x014f,6,guildrequestinfo,2
    0x0150,110
    0x0151,6,guildrequestemblem,2
    0x0152,-1
    0x0153,-1,guildchangeemblem,2:4
    0x0154,-1
    0x0155,-1,guildchangememberposition,2
    0x0156,-1
    0x0157,6
    0x0158,-1
    0x0159,54,guildleave,2:6:10:14
    0x015a,66
    0x015b,54,guildexpulsion,2:6:10:14
    0x015c,90
    0x015d,42,guildbreak,2
    0x015e,6
    0x015f,42
    0x0160,-1
    0x0161,-1,guildchangepositioninfo,2
    0x0162,-1
    0x0163,-1
    0x0164,-1
    0x0165,30,createguild,6
    0x0166,-1
    0x0167,3
    0x0168,14,guildinvite,2
    0x0169,3
    0x016a,30
    0x016b,10,guildreplyinvite,2:6
    0x016c,43
    0x016d,14
    0x016e,186,guildchangenotice,2:6:66
    0x016f,182
    0x0170,14,guildrequestalliance,2
    0x0171,30
    0x0172,10,guildreplyalliance,2:6
    0x0173,3
    0x0174,-1
    0x0175,6
    0x0176,106
    0x0177,-1
    0x0178,4,itemidentify,2
    0x0179,5
    0x017a,4,usecard,2
    0x017b,-1
    0x017c,6,insertcard,2:4
    0x017d,7
    0x017e,-1,guildmessage,2:4
    0x017f,-1
    0x0180,6,guildopposition,2
    0x0181,3
    0x0182,106
    0x0183,10,guilddelalliance,2:6
    0x0184,10
    0x0185,34
    //0x0186,-1
    0x0187,6
    0x0188,8
    0x0189,4
    0x018a,4,quitgame,0
    0x018b,4
    0x018c,29
    0x018d,-1
    0x018e,10,producemix,2:4:6:8
    0x018f,6
    0x0190,90,useskilltoposinfo,2:4:6:8:10
    0x0191,86
    0x0192,24
    0x0193,6,solvecharname,2
    0x0194,30
    0x0195,102
    0x0196,9
    0x0197,4,resetchar,2
    0x0198,8,changemaptype,2:4:6
    0x0199,4
    0x019a,14
    0x019b,10
    0x019c,-1,localbroadcast,2:4
    0x019d,6,gmhide,0
    0x019e,2
    0x019f,6,catchpet,2
    0x01a0,3
    0x01a1,3,petmenu,2
    0x01a2,35
    0x01a3,5
    0x01a4,11
    0x01a5,26,changepetname,2
    0x01a6,-1
    0x01a7,4,selectegg,2
    0x01a8,4
    0x01a9,6,sendemotion,2
    0x01aa,10
    0x01ab,12
    0x01ac,6
    0x01ad,-1
    0x01ae,4,selectarrow,2
    0x01af,4,changecart,2
    0x01b0,11
    0x01b1,7
    0x01b2,-1,openvending,2:4:84:85
    0x01b3,67
    0x01b4,12
    0x01b5,18
    0x01b6,114
    0x01b7,6
    0x01b8,3
    0x01b9,6
    0x01ba,26,remove,2
    0x01bb,26,shift,2
    0x01bc,26,recall,2
    0x01bd,26,summon,2
    0x01be,2
    0x01bf,3
    0x01c0,2
    0x01c1,14
    0x01c2,10
    0x01c3,-1
    0x01c4,22
    0x01c5,22
    0x01c6,4
    0x01c7,2
    0x01c8,13
    0x01c9,97
    //0x01ca,-1
    0x01cb,9
    0x01cc,9
    0x01cd,30
    0x01ce,6,autospell,2
    0x01cf,28
    0x01d0,8
    0x01d1,14
    0x01d2,10
    0x01d3,35
    0x01d4,6
    0x01d5,-1,npcstringinput,2:4:8
    0x01d6,4
    0x01d7,11
    0x01d8,54
    0x01d9,53
    0x01da,60
    0x01db,2
    0x01dc,-1
    0x01dd,47
    0x01de,33
    0x01df,6,gmreqaccname,2
    0x01e0,30
    0x01e1,8
    0x01e2,34
    0x01e3,14
    0x01e4,2
    0x01e5,6
    0x01e6,26
    0x01e7,2,sndoridori,0
    0x01e8,28,createparty2,2
    0x01e9,81
    0x01ea,6
    0x01eb,10
    0x01ec,26
    0x01ed,2,snexplosionspirits,0
    0x01ee,-1
    0x01ef,-1
    0x01f0,-1
    0x01f1,-1
    0x01f2,20
    0x01f3,10
    0x01f4,32
    0x01f5,9
    0x01f6,34
    0x01f7,14,adoptreply,0
    0x01f8,2
    0x01f9,6,adoptrequest,0
    0x01fa,48
    0x01fb,56
    0x01fc,-1
    0x01fd,4,repairitem,2
    0x01fe,5
    0x01ff,10
    0x0200,26
    0x0201,-1
    0x0202,26,friendslistadd,2
    0x0203,10,friendslistremove,2:6
    0x0204,18
    0x0205,26
    0x0206,11
    0x0207,34
    0x0208,11,friendslistreply,2:6:10
    0x0209,36
    0x020a,10
    //0x020b,-1
    //0x020c,-1
    0x020d,-1

    //2004-07-05aSakexe
    packet_ver: 6
    0x0072,22,wanttoconnection,5:9:13:17:21
    0x0085,8,walktoxy,5
    0x00a7,13,useitem,5:9
    0x0113,15,useskilltoid,4:9:11
    0x0116,15,useskilltopos,4:9:11:13
    0x0190,95,useskilltoposinfo,4:9:11:13:15
    0x0208,14,friendslistreply,2:6:10
    0x020e,24

    //2004-07-13aSakexe
    packet_ver: 7
    0x0072,39,wanttoconnection,12:22:30:34:38
    0x0085,9,walktoxy,6
    0x009b,13,changedir,5:12
    0x009f,10,takeitem,6
    0x00a7,17,useitem,6:13
    0x0113,19,useskilltoid,7:9:15
    0x0116,19,useskilltopos,7:9:15:17
    0x0190,99,useskilltoposinfo,7:9:15:17:19

    //2004-07-26aSakexe
    packet_ver: 8
    0x0072,14,dropitem,5:12
    0x007e,33,wanttoconnection,12:18:24:28:32
    0x0085,20,useskilltoid,7:12:16
    0x0089,15,getcharnamerequest,11
    0x008c,23,useskilltopos,3:6:17:21
    0x0094,10,takeitem,6
    0x009b,6,walktoxy,3
    0x009f,13,changedir,5:12
    0x00a2,103,useskilltoposinfo,3:6:17:21:23
    0x00a7,12,solvecharname,8
    0x00f3,-1,globalmessage,2:4
    0x00f5,17,useitem,6:12
    0x00f7,10,ticksend,6
    0x0113,16,movetokafra,5:12
    0x0116,2,closekafra,0
    0x0190,26,movefromkafra,10:22
    0x0193,9,actionrequest,3:8

    //2004-08-09aSakexe
    packet_ver: 9
    0x0072,17,dropitem,8:15
    0x007e,37,wanttoconnection,9:21:28:32:36
    0x0085,26,useskilltoid,11:18:22
    0x0089,12,getcharnamerequest,8
    0x008c,40,useskilltopos,5:15:29:38
    0x0094,13,takeitem,9
    0x009b,15,walktoxy,12
    0x009f,12,changedir,7:11
    0x00a2,120,useskilltoposinfo,5:15:29:38:40
    0x00a7,11,solvecharname,7
    0x00f5,24,useitem,9:20
    0x00f7,13,ticksend,9
    0x0113,23,movetokafra,5:19
    0x0190,26,movefromkafra,11:22
    0x0193,18,actionrequest,7:17

    //2004-08-16aSakexe
    0x0212,26,rc,2
    0x0213,26,check,2
    0x0214,42

    //2004-08-17aSakexe
    0x020f,10,pvpinfo,2:6
    0x0210,22

    //2004-09-06aSakexe
    packet_ver: 10
    0x0072,20,useitem,9:20
    0x007e,19,movetokafra,3:15
    0x0085,23,actionrequest,9:22
    0x0089,9,walktoxy,6
    0x008c,105,useskilltoposinfo,10:14:18:23:25
    0x0094,17,dropitem,6:15
    0x009b,14,getcharnamerequest,10
    0x009f,-1,globalmessage,2:4
    0x00a2,14,solvecharname,10
    0x00a7,25,useskilltopos,10:14:18:23
    0x00f3,10,changedir,4:9
    0x00f5,34,wanttoconnection,7:15:25:29:33
    0x00f7,2,closekafra,0
    0x0113,11,takeitem,7
    0x0116,11,ticksend,7
    0x0190,22,useskilltoid,9:15:18
    0x0193,17,movefromkafra,3:13

    //2004-09-20aSakexe
    packet_ver: 11
    0x0072,18,useitem,10:14
    0x007e,25,movetokafra,6:21
    0x0085,9,actionrequest,3:8
    0x0089,14,walktoxy,11
    0x008c,109,useskilltoposinfo,16:20:23:27:29
    0x0094,19,dropitem,12:17
    0x009b,10,getcharnamerequest,6
    0x00a2,10,solvecharname,6
    0x00a7,29,useskilltopos,6:20:23:27
    0x00f3,18,changedir,8:17
    0x00f5,32,wanttoconnection,10:17:23:27:31
    0x0113,14,takeitem,10
    0x0116,14,ticksend,10
    0x0190,14,useskilltoid,4:7:10
    0x0193,12,movefromkafra,4:8

    //2004-10-05aSakexe
    packet_ver: 12
    0x0072,17,useitem,6:13
    0x007e,16,movetokafra,5:12
    0x0089,6,walktoxy,3
    0x008c,103,useskilltoposinfo,2:6:17:21:23
    0x0094,14,dropitem,5:12
    0x009b,15,getcharnamerequest,11
    0x00a2,12,solvecharname,8
    0x00a7,23,useskilltopos,3:6:17:21
    0x00f3,13,changedir,5:12
    0x00f5,33,wanttoconnection,12:18:24:28:32
    0x0113,10,takeitem,6
    0x0116,10,ticksend,6
    0x0190,20,useskilltoid,7:12:16
    0x0193,26,movefromkafra,10:22

    //2004-10-25aSakexe
    packet_ver: 13
    0x0072,13,useitem,5:9
    0x007e,13,movetokafra,6:9
    0x0085,15,actionrequest,4:14
    0x008c,108,useskilltoposinfo,6:9:23:26:28
    0x0094,12,dropitem,6:10
    0x009b,10,getcharnamerequest,6
    0x00a2,16,solvecharname,12
    0x00a7,28,useskilltopos,6:9:23:26
    0x00f3,15,changedir,6:14
    0x00f5,29,wanttoconnection,5:14:20:24:28
    0x0113,9,takeitem,5
    0x0116,9,ticksend,5
    0x0190,26,useskilltoid,4:10:22
    0x0193,22,movefromkafra,12:18

    //2004-11-01aSakexe
    0x0084,-1
    0x0215,6

    //2004-11-08aSakexe
    0x0084,2
    0x0216,6
    0x0217,2,blacksmith,0
    0x0218,2,alchemist,0
    0x0219,282
    0x021a,282
    0x021b,10
    0x021c,10

    //2004-11-15aSakexe
    0x021d,6,lesseffect,2

    //2004-11-29aSakexe
    packet_ver: 14
    0x0072,22,useskilltoid,8:12:18
    0x007e,30,useskilltopos,4:9:22:28
    0x0085,-1,globalmessage,2:4
    0x0089,7,ticksend,3
    0x008c,13,getcharnamerequest,9
    0x0094,14,movetokafra,4:10
    0x009b,2,closekafra,0
    0x009f,18,actionrequest,6:17
    0x00a2,7,takeitem,3
    0x00a7,7,walktoxy,4
    0x00f3,8,changedir,3:7
    0x00f5,29,wanttoconnection,3:10:20:24:28
    0x00f7,14,solvecharname,10
    0x0113,110,useskilltoposinfo,4:9:22:28:30
    0x0116,12,dropitem,4:10
    0x0190,15,useitem,3:11
    0x0193,21,movefromkafra,4:17
    0x0221,-1
    0x0222,6,weaponrefine,2
    0x0223,8

    //2004-12-13aSakexe
    //skipped: many packets being set to -1
    0x0066,3
    0x0070,3
    0x01ca,3
    0x021e,6
    0x021f,66
    0x0220,10

    //2005-01-10bSakexe
    packet_ver: 15
    0x0072,26,useskilltoid,8:16:22
    0x007e,114,useskilltoposinfo,10:18:22:32:34
    0x0085,23,changedir,12:22
    0x0089,9,ticksend,5
    0x008c,8,getcharnamerequest,4
    0x0094,20,movetokafra,10:16
    0x009b,32,wanttoconnection,3:12:23:27:31
    0x009f,17,useitem,5:13
    0x00a2,11,solvecharname,7
    0x00a7,13,walktoxy,10
    0x00f3,-1,globalmessage,2:4
    0x00f5,9,takeitem,5
    0x00f7,21,movefromkafra,11:17
    0x0113,34,useskilltopos,10:18:22:32
    0x0116,20,dropitem,15:18
    0x0190,20,actionrequest,9:19
    0x0193,2,closekafra,0

    //2005-03-28aSakexe
    0x0224,10
    0x0225,2,taekwon,0
    0x0226,282

    //2005-04-04aSakexe
    0x0227,18
    0x0228,18

    //2005-04-11aSakexe
    0x0229,15
    0x022a,58
    0x022b,57
    0x022c,64

    //2005-04-25aSakexe
    0x022d,5,hommenu,2:4
    0x0232,9,hommoveto,2:6
    0x0233,11,homattack,2:6:10
    0x0234,6,hommovetomaster,2

    //2005-05-09aSakexe
    packet_ver: 16
    0x0072,25,useskilltoid,6:10:21
    0x007e,102,useskilltoposinfo,5:9:12:20:22
    0x0085,11,changedir,7:10
    0x0089,8,ticksend,4
    0x008c,11,getcharnamerequest,7
    0x0094,14,movetokafra,7:10
    0x009b,26,wanttoconnection,4:9:17:21:25
    0x009f,14,useitem,4:10
    0x00a2,15,solvecharname,11
    0x00a7,8,walktoxy,5
    0x00f5,8,takeitem,4
    0x00f7,22,movefromkafra,14:18
    0x0113,22,useskilltopos,5:9:12:20
    0x0116,10,dropitem,5:8
    0x0190,19,actionrequest,5:18

    //2005-05-23aSakexe
    0x022e,69
    0x0230,12

    //2005-05-30aSakexe
    0x022e,71
    0x0235,-1
    0x0236,10
    0x0237,2,rankingpk,0
    0x0238,282

    //2005-05-31aSakexe
    0x0216,2
    0x0239,11

    //2005-06-08aSakexe
    0x0216,6
    0x0217,2,blacksmith,0
    0x022f,5
    0x0231,26,changehomunculusname,0
    0x023a,4
    0x023b,36,storagepassword,2:4:20
    0x023c,6

    //2005-06-22aSakexe
    0x022e,71

    //2005-06-28aSakexe
    packet_ver: 17
    0x0072,34,useskilltoid,6:17:30
    0x007e,113,useskilltoposinfo,12:15:18:31:33
    0x0085,17,changedir,8:16
    0x0089,13,ticksend,9
    0x008c,8,getcharnamerequest,4
    0x0094,31,movetokafra,16:27
    0x009b,32,wanttoconnection,9:15:23:27:31
    0x009f,19,useitem,9:15
    0x00a2,9,solvecharname,5
    0x00a7,11,walktoxy,8
    0x00f5,13,takeitem,9
    0x00f7,18,movefromkafra,11:14
    0x0113,33,useskilltopos,12:15:18:31
    0x0116,12,dropitem,3:10
    0x0190,24,actionrequest,11:23
    0x0216,-1
    0x023d,-1
    0x023e,4

    //2005-07-18aSakexe
    packet_ver: 18
    0x0072,19,useskilltoid,5:11:15
    0x007e,110,useskilltoposinfo,9:15:23:28:30
    0x0085,11,changedir,6:10
    0x0089,7,ticksend,3
    0x008c,11,getcharnamerequest,7
    0x0094,21,movetokafra,12:17
    0x009b,31,wanttoconnection,3:13:22:26:30
    0x009f,12,useitem,3:8
    0x00a2,18,solvecharname,14
    0x00a7,15,walktoxy,12
    0x00f5,7,takeitem,3
    0x00f7,13,movefromkafra,5:9
    0x0113,30,useskilltopos,9:15:23:28
    0x0116,12,dropitem,6:10
    0x0190,21,actionrequest,5:20
    0x0216,6
    0x023f,2,mailrefresh,0
    0x0240,8
    0x0241,6,mailread,2
    0x0242,-1
    0x0243,6,maildelete,2
    0x0244,6,mailgetattach,2
    0x0245,7
    0x0246,4,mailwinopen,2
    0x0247,8,mailsetattach,2:4
    0x0248,68
    0x0249,3
    0x024a,70
    0x024b,4,auctioncancelreg,0
    0x024c,8,auctionsetitem,0
    0x024d,14
    0x024e,6,auctioncancel,0
    0x024f,10,auctionbid,0
    0x0250,3
    0x0251,2
    0x0252,-1

    //2005-07-19bSakexe
    packet_ver: 19
    0x0072,34,useskilltoid,6:17:30
    0x007e,113,useskilltoposinfo,12:15:18:31:33
    0x0085,17,changedir,8:16
    0x0089,13,ticksend,9
    0x008c,8,getcharnamerequest,4
    0x0094,31,movetokafra,16:27
    0x009b,32,wanttoconnection,9:15:23:27:31
    0x009f,19,useitem,9:15
    0x00a2,9,solvecharname,5
    0x00a7,11,walktoxy,8
    0x00f5,13,takeitem,9
    0x00f7,18,movefromkafra,11:14
    0x0113,33,useskilltopos,12:15:18:31
    0x0116,12,dropitem,3:10
    0x0190,24,actionrequest,11:23

    //2005-08-01aSakexe
    0x0245,3
    0x0251,4

    //2005-08-08aSakexe
    0x024d,12,auctionregister,0
    0x024e,4

    //2005-08-17aSakexe
    0x0253,3
    0x0254,3,feelsaveok,0

    //2005-08-29aSakexe
    0x0240,-1
    0x0248,-1,mailsend,2:4:28:68
    0x0255,5
    0x0256,-1
    0x0257,8

    //2005-09-12bSakexe
    0x0256,5
    0x0258,2
    0x0259,3

    //2005-10-10aSakexe
    0x020e,32
    0x025a,-1
    0x025b,6,cooking,0

    //2005-10-13aSakexe
    0x007a,6
    0x0251,32
    0x025c,4,auctionbuysell,0

    //2005-10-17aSakexe
    0x007a,58
    0x025d,6,auctionclose,0
    0x025e,4

    //2005-10-24aSakexe
    0x025f,6
    0x0260,6

    //2005-11-07aSakexe
    0x024e,6,auctioncancel,0
    0x0251,34,auctionsearch,0

    //2006-01-09aSakexe
    0x0261,11
    0x0262,11
    0x0263,11
    0x0264,20
    0x0265,20
    0x0266,30
    0x0267,4
    0x0268,4
    0x0269,4
    0x026a,4
    0x026b,4
    0x026c,4
    0x026d,4
    0x026f,2
    0x0270,2
    0x0271,38
    0x0272,44

    //2006-01-26aSakexe
    0x0271,40

    //2006-03-06aSakexe
    0x0273,6
    0x0274,8

    //2006-03-13aSakexe
    0x0273,30,mailreturn,2:6

    //2006-03-27aSakexe
    packet_ver: 20
    0x0072,26,useskilltoid,11:18:22
    0x007e,120,useskilltoposinfo,5:15:29:38:40
    0x0085,12,changedir,7:11
    //0x0089,13,ticksend,9
    0x008c,12,getcharnamerequest,8
    0x0094,23,movetokafra,5:19
    0x009b,37,wanttoconnection,9:21:28:32:36
    0x009f,24,useitem,9:20
    0x00a2,11,solvecharname,7
    0x00a7,15,walktoxy,12
    0x00f5,13,takeitem,9
    0x00f7,26,movefromkafra,11:22
    0x0113,40,useskilltopos,5:15:29:38
    0x0116,17,dropitem,8:15
    0x0190,18,actionrequest,7:17

    //2006-10-23aSakexe
    0x006d,110

    //2006-04-24aSakexe to 2007-01-02aSakexe
    0x023e,8
    0x0277,84
    0x0278,2
    0x0279,2
    0x027a,-1
    0x027b,14
    0x027c,60
    0x027d,62
    0x027e,-1
    0x027f,8
    0x0280,12
    0x0281,4
    0x0282,284
    0x0283,6
    0x0284,14
    0x0285,6
    0x0286,4
    0x0287,-1
    0x0288,6
    0x0289,8
    0x028a,18
    0x028b,-1
    0x028c,46
    0x028d,34
    0x028e,4
    0x028f,6
    0x0290,4
    0x0291,4
    0x0292,2,autorevive,0
    0x0293,70
    0x0294,10
    0x0295,-1
    0x0296,-1
    0x0297,-1
    0x0298,8
    0x0299,6
    0x029a,27
    0x029c,66
    0x029d,-1
    0x029e,11
    0x029f,3,mermenu,0
    0x02a0,-1
    0x02a1,-1
    0x02a2,8

    //2007-01-08aSakexe
    packet_ver: 21
    0x0072,30,useskilltoid,10:14:26
    0x007e,120,useskilltoposinfo,10:19:23:38:40
    0x0085,14,changedir,10:13
    0x0089,11,ticksend,7
    0x008c,17,getcharnamerequest,13
    0x0094,17,movetokafra,4:13
    0x009b,35,wanttoconnection,7:21:26:30:34
    0x009f,21,useitem,7:17
    0x00a2,10,solvecharname,6
    0x00a7,8,walktoxy,5
    0x00f5,11,takeitem,7
    0x00f7,15,movefromkafra,3:11
    0x0113,40,useskilltopos,10:19:23:38
    0x0116,19,dropitem,11:17
    0x0190,10,actionrequest,4:9

    //2007-01-22aSakexe
    0x02a3,18
    0x02a4,2

    //2007-01-29aSakexe
    0x029b,72
    0x02a3,-1
    0x02a4,-1
    0x02a5,8

    // 2007-02-05aSakexe
    0x02aa,4
    0x02ab,36
    0x02ac,6

    //2007-02-12aSakexe
    packet_ver: 22
    0x0072,25,useskilltoid,6:10:21
    0x007e,102,useskilltoposinfo,5:9:12:20:22
    0x0085,11,changedir,7:10
    0x0089,8,ticksend,4
    0x008c,11,getcharnamerequest,7
    0x0094,14,movetokafra,7:10
    0x009b,26,wanttoconnection,4:9:17:21:25
    0x009f,14,useitem,4:10
    0x00a2,15,solvecharname,11
    //0x00a7,8,walktoxy,5
    0x00f5,8,takeitem,4
    0x00f7,22,movefromkafra,14:18
    0x0113,22,useskilltopos,5:9:12:20
    0x0116,10,dropitem,5:8
    0x0190,19,actionrequest,5:18

    //2007-05-07aSakexe
    0x01fd,15,repairitem,2

    //2007-02-27aSakexe to 2007-10-02aSakexe
    0x0288,10,cashshopbuy,2:4:6
    0x0289,12
    0x02a6,22
    0x02a7,22
    0x02a8,162
    0x02a9,58
    0x02ad,8
    0x02b0,85
    0x02b1,-1
    0x02b2,-1
    0x02b3,107
    0x02b4,6
    0x02b5,-1
    0x02b6,7,queststate,2:6
    0x02b7,7
    0x02b8,22
    0x02b9,191
    0x02ba,11,hotkey,2:4:5:9
    0x02bb,8
    0x02bc,6
    0x02bf,10
    0x02c0,2
    0x02c1,-1
    0x02c2,-1
    0x02c4,26,partyinvite2,2
    0x02c5,30
    0x02c6,30
    0x02c7,7,replypartyinvite2,2:6
    0x02c8,3
    0x02c9,3
    0x02ca,3
    0x02cb,20
    0x02cc,4
    0x02cd,26
    0x02ce,10
    0x02cf,6
    0x02d0,-1
    0x02d1,-1
    0x02d2,-1
    0x02d3,4
    0x02d4,29
    0x02d5,2
    0x02d6,6,viewplayerequip,2
    0x02d7,-1
    0x02d8,10,equiptickbox,6
    0x02d9,10
    0x02da,3
    0x02db,-1,battlechat,2:4
    0x02dc,-1
    0x02dd,32
    0x02de,6
    0x02df,36
    0x02e0,34

    //2007-10-23aSakexe
    0x02cb,65
    0x02cd,71

    //2007-11-06aSakexe
    0x0078,55
    0x007c,42
    0x022c,65
    0x029b,80

    //2007-11-13aSakexe
    0x02e1,33

    //2007-11-20aSakexe
    //0x01df,10 <- ???
    0x02e2,14
    0x02e3,25
    0x02e4,8
    0x02e5,8
    0x02e6,6

    //2007-11-27aSakexe
    0x02e7,-1

    //2008-01-02aSakexe
    0x01df,6,gmreqaccname,2
    0x02e8,-1
    0x02e9,-1
    0x02ea,-1
    0x02eb,13
    0x02ec,67
    0x02ed,59
    0x02ee,60
    0x02ef,8

    //2008-03-18aSakexe
    0x02bf,-1
    0x02c0,-1
    0x02f0,10
    0x02f1,2,progressbar,0
    0x02f2,2

    //2008-03-25bSakexe
    0x02f3,-1
    0x02f4,-1
    0x02f5,-1
    0x02f6,-1
    0x02f7,-1
    0x02f8,-1
    0x02f9,-1
    0x02fa,-1
    0x02fb,-1
    0x02fc,-1
    0x02fd,-1
    0x02fe,-1
    0x02ff,-1
    0x0300,-1

    //2008-04-01aSakexe
    0x0301,-1
    0x0302,-1
    0x0303,-1
    0x0304,-1
    0x0305,-1
    0x0306,-1
    0x0307,-1
    0x0308,-1
    0x0309,-1
    0x030a,-1
    0x030b,-1
    0x030c,-1
    0x030d,-1
    0x030e,-1
    0x030f,-1
    0x0310,-1
    0x0311,-1
    0x0312,-1
    0x0313,-1
    0x0314,-1
    0x0315,-1
    0x0316,-1
    0x0317,-1
    0x0318,-1
    0x0319,-1
    0x031a,-1
    0x031b,-1
    0x031c,-1
    0x031d,-1
    0x031e,-1
    0x031f,-1
    0x0320,-1
    0x0321,-1
    0x0322,-1
    0x0323,-1
    0x0324,-1
    0x0325,-1
    0x0326,-1
    0x0327,-1
    0x0328,-1
    0x0329,-1
    0x032a,-1
    0x032b,-1
    0x032c,-1
    0x032d,-1
    0x032e,-1
    0x032f,-1
    0x0330,-1
    0x0331,-1
    0x0332,-1
    0x0333,-1
    0x0334,-1
    0x0335,-1
    0x0336,-1
    0x0337,-1
    0x0338,-1
    0x0339,-1
    0x033a,-1
    0x033b,-1
    0x033c,-1
    0x033d,-1
    0x033e,-1
    0x033f,-1
    0x0340,-1
    0x0341,-1
    0x0342,-1
    0x0343,-1
    0x0344,-1
    0x0345,-1
    0x0346,-1
    0x0347,-1
    0x0348,-1
    0x0349,-1
    0x034a,-1
    0x034b,-1
    0x034c,-1
    0x034d,-1
    0x034e,-1
    0x034f,-1
    0x0350,-1
    0x0351,-1
    0x0352,-1
    0x0353,-1
    0x0354,-1
    0x0355,-1
    0x0356,-1
    0x0357,-1
    0x0358,-1
    0x0359,-1
    0x035a,-1

    //2008-05-27aSakexe
    0x035b,-1
    0x035c,2
    0x035d,-1
    0x035e,2
    0x035f,-1
    0x0389,-1

    //2008-08-20aSakexe
    0x040c,-1
    0x040d,-1
    0x040e,-1
    0x040f,-1
    0x0410,-1
    0x0411,-1
    0x0412,-1
    0x0413,-1
    0x0414,-1
    0x0415,-1
    0x0416,-1
    0x0417,-1
    0x0418,-1
    0x0419,-1
    0x041a,-1
    0x041b,-1
    0x041c,-1
    0x041d,-1
    0x041e,-1
    0x041f,-1
    0x0420,-1
    0x0421,-1
    0x0422,-1
    0x0423,-1
    0x0424,-1
    0x0425,-1
    0x0426,-1
    0x0427,-1
    0x0428,-1
    0x0429,-1
    0x042a,-1
    0x042b,-1
    0x042c,-1
    0x042d,-1
    0x042e,-1
    0x042f,-1
    0x0430,-1
    0x0431,-1
    0x0432,-1
    0x0433,-1
    0x0434,-1
    0x0435,-1

    //2008-09-10aSakexe
    packet_ver: 23
    0x0436,19,wanttoconnection,2:6:10:14:18
    0x0437,7,actionrequest,2:6
    0x0438,10,useskilltoid,2:4:6
    0x0439,8,useitem,2:4

    //2008-11-13aSakexe
    0x043d,8
    0x043e,-1
    0x043f,8

    //2008-11-26aSakexe
    0x01a2,37
    0x0440,10
    0x0441,4

    //2008-12-10aSakexe
    0x0442,-1
    0x0443,8,skillselectmenu,2:6

    //2009-01-14aSakexe
    0x043f,25
    0x0444,-1
    0x0445,10

    //2009-02-18aSakexe
    0x0446,14

    //2009-02-25aSakexe
    0x0448,-1

    //2009-03-30aSakexe
    0x0449,4

    //2009-04-08aSakexe
    0x02a6,-1
    0x02a7,-1
    0x044a,6

    //Renewal Clients
    //2008-08-27aRagexeRE
    packet_ver: 24
    0x0072,22,useskilltoid,9:15:18
    0x007c,44
    0x007e,105,useskilltoposinfo,10:14:18:23:25
    0x0085,10,changedir,4:9
    0x0089,11,ticksend,7
    0x008c,14,getcharnamerequest,10
    0x0094,19,movetokafra,3:15
    0x009b,34,wanttoconnection,7:15:25:29:33
    0x009f,20,useitem,7:20
    0x00a2,14,solvecharname,10
    0x00a7,9,walktoxy,6
    0x00f5,11,takeitem,7
    0x00f7,17,movefromkafra,3:13
    0x0113,25,useskilltopos,10:14:18:23
    0x0116,17,dropitem,6:15
    0x0190,23,actionrequest,9:22
    0x02e2,20
    0x02e3,22
    0x02e4,11
    0x02e5,9

    //2008-09-10aRagexeRE
    packet_ver: 25
    0x0436,19,wanttoconnection,2:6:10:14:18
    0x0437,7,actionrequest,2:6
    0x0438,10,useskilltoid,2:4:6
    0x0439,8,useitem,2:4

    //2008-11-12aRagexeRE
    0x043d,8
    //0x043e,-1
    0x043f,8

    //2008-12-17aRagexeRE
    0x01a2,37
    //0x0440,10
    //0x0441,4
    //0x0442,8
    //0x0443,8

    //2008-12-17bRagexeRE
    0x006d,114

    //2009-01-21aRagexeRE
    0x043f,25
    //0x0444,-1
    //0x0445,10

    //2009-02-18aRagexeRE
    //0x0446,14

    //2009-02-26cRagexeRE
    //0x0448,-1

    //2009-04-01aRagexeRE
    //0x0449,4

    //2009-05-14aRagexeRE
    //0x044b,2

    //2009-05-20aRagexeRE
    //0x07d0,6
    //0x07d1,2
    //0x07d2,-1
    //0x07d3,4
    //0x07d4,4
    //0x07d5,4
    //0x07d6,4
    //0x0447,2

    //2009-06-03aRagexeRE
    0x07d7,8,partychangeoption,2:6:7
    0x07d8,8
    0x07d9,254
    0x07da,6,partychangeleader,2

    //2009-06-10aRagexeRE
    //0x07db,8

    //2009-06-17aRagexeRE
    0x07d9,268
    //0x07dc,6
    //0x07dd,54
    //0x07de,30
    //0x07df,54

    //2009-07-01aRagexeRE
    //0x0275,37
    //0x0276,-1

    //2009-07-08aRagexeRE
    //0x07e0,58

    //2009-07-15aRagexeRE
    0x07e1,15

    //2009-08-05aRagexeRE
    0x07e2,8

    //2009-08-18aRagexeRE
    0x07e3,6
    0x07e4,-1,itemlistwindowselected,2:4:8
    0x07e6,8

    //2009-08-25aRagexeRE
    //0x07e6,28
    0x07e7,5

    //2009-09-22aRagexeRE
    0x07e5,8
    0x07e6,8
    0x07e7,32
    0x07e8,-1
    0x07e9,5

    //2009-09-29aRagexeRE
    //0x07ea,2
    //0x07eb,-1
    //0x07ec,6
    //0x07ed,8
    //0x07ee,6
    //0x07ef,8
    //0x07f0,4
    //0x07f2,4
    //0x07f3,3

    //2009-10-06aRagexeRE
    //0x07ec,8
    //0x07ed,10
    //0x07f0,8
    //0x07f1,15
    //0x07f2,6
    //0x07f3,4
    //0x07f4,3

    //2009-10-27aRagexeRE
    0x07f5,6,gmreqaccname,2
    0x07f6,14

    //2009-11-03aRagexeRE
    0x07f7,-1
    0x07f8,-1
    0x07f9,-1

    //2009-11-17aRagexeRE
    0x07fa,8

    //2009-11-24aRagexeRE
    0x07fb,25

    //2009-12-01aRagexeRE
    //0x07fc,10
    //0x07fd,-1
    0x07fe,26
    //0x07ff,-1

    //2009-12-15aRagexeRE
    0x0800,-1
    //0x0801,-1

    //2009-12-22aRagexeRE
    0x0802,18,bookingregreq,2:4:6 // Booking System
    0x0803,4
    0x0804,8 // Booking System
    0x0805,-1
    0x0806,4,bookingdelreq,2 // Booking System
    //0x0807,2
    0x0808,4 // Booking System
    //0x0809,14
    //0x080A,50
    //0x080B,18
    //0x080C,6

    //2009-12-29aRagexeRE
    0x0804,14,bookingsearchreq,2:4:6:8:12 // Booking System
    0x0806,2,bookingdelreq,0 // Booking System
    0x0807,4
    0x0808,14,bookingupdatereq,2 // Booking System
    0x0809,50
    0x080A,18
    0x080B,6 // Booking System

    //2010-01-05aRagexeRE
    0x0801,-1,purchasereq2,2:4:8:12

    //2010-01-26aRagexeRE
    //0x080C,2
    //0x080D,3
    0x080E,14

    //2010-02-09aRagexeRE
    //0x07F0,6

    //2010-02-23aRagexeRE
    0x080F,20

    //2010-03-03aRagexeRE
    0x0810,3
    0x0811,-1,reqopenbuyingstore,2:4:8:9:89
    //0x0812,86
    //0x0813,6
    //0x0814,6
    //0x0815,-1
    //0x0817,-1
    //0x0818,6
    //0x0819,4

    //2010-03-09aRagexeRE
    0x0813,-1
    //0x0814,2
    //0x0815,6
    0x0816,6
    0x0818,-1
    //0x0819,10
    //0x081A,4
    //0x081B,4
    //0x081C,6
    0x081d,22
    0x081e,8

    //2010-03-23aRagexeRE
    //0x081F,-1

    //2010-04-06aRagexeRE
    //0x081A,6

    //2010-04-13aRagexeRE
    //0x081A,10
    0x0820,11
    //0x0821,2
    //0x0822,9
    //0x0823,-1

    //2010-04-14dRagexeRE
    //0x081B,8

    //2010-04-20aRagexeRE
    0x0812,8
    0x0814,86
    0x0815,2,reqclosebuyingstore,0
    0x0817,6,reqclickbuyingstore,2
    0x0819,-1,reqtradebuyingstore,2:4:8:12
    0x081a,4
    0x081b,10
    0x081c,10
    0x0824,6

    //2010-06-01aRagexeRE
    //0x0825,-1
    //0x0826,4
    0x0835,-1,searchstoreinfo,2:4:5:9:13:14:15
    0x0836,-1
    0x0837,3
    //0x0838,3

    //2010-06-08aRagexeRE
    0x0838,2,searchstoreinfonextpage,0
    0x083A,4 // Search Stalls Feature
    0x083B,2,closesearchstoreinfo,0
    0x083C,12,searchstoreinfolistitemclick,2:6:10
    0x083D,6

    //2010-06-15aRagexeRE
    //0x083E,26

    //2010-06-22aRagexeRE
    //0x083F,22

    //2010-06-29aRagexeRE
    0x00AA,9
    //0x07F1,18
    //0x07F2,8
    //0x07F3,6

    //2010-07-01aRagexeRE
    0x083A,5 // Search Stalls Feature

    //2010-07-13aRagexeRE
    //0x0827,6
    //0x0828,14
    //0x0829,6
    //0x082A,10
    //0x082B,6
    //0x082C,14
    //0x0840,-1
    //0x0841,19

    //2010-07-14aRagexeRE
    //0x841,4

    //2010-08-03aRagexeRE
    0x0839,66
    0x0842,6,recall2,2
    0x0843,6,remove2,2

    //2010-11-24aRagexeRE
    packet_ver: 26
    0x0288,-1,cashshopbuy,4:8
    0x0436,19,wanttoconnection,2:6:10:14:18
    0x035f,5,walktoxy,2
    0x0360,6,ticksend,2
    0x0361,5,changedir,2:4
    0x0362,6,takeitem,2
    0x0363,6,dropitem,2:4
    0x0364,8,movetokafra,2:4
    0x0365,8,movefromkafra,2:4
    0x0366,10,useskilltopos,2:4:6:8
    0x0367,90,useskilltoposinfo,2:4:6:8:10
    0x0368,6,getcharnamerequest,2
    0x0369,6,solvecharname,2
    0x0856,-1
    0x0857,-1
    0x0858,-1
    0x0859,-1

    //2011-10-05aRagexeRE
    packet_ver: 27
    0x0364,5,walktoxy,2
    0x0817,6,ticksend,2
    0x0366,5,changedir,2:4
    0x0815,6,takeitem,2
    0x0885,6,dropitem,2:4
    0x0893,8,movetokafra,2:4
    0x0897,8,movefromkafra,2:4
    0x0369,10,useskilltopos,2:4:6:8
    0x08ad,90,useskilltoposinfo,2:4:6:8:10
    0x088a,6,getcharnamerequest,2
    0x0838,6,solvecharname,2
    0x0439,8,useitem,2:4
    0x08d2,10

    // 2011-11-02aRagexe
    packet_ver: 28
    0x0436,26,friendslistadd,2
    0x0898,5,hommenu,4
    0x0281,36,storagepassword,0
    0x088d,26,partyinvite2,2
    0x083c,19,wanttoconnection,2:6:10:14:18
    0x08aa,7,actionrequest,2:6
    0x02c4,10,useskilltoid,2:4:6
    0x0811,-1,itemlistwindowselected,2:4:8
    0x890,8
    0x08a5,18,bookingregreq,2:4:6
    0x0835,-1,reqopenbuyingstore,2:4:8:9:89
    0x089b,2,reqclosebuyingstore,0
    0x08a1,6,reqclickbuyingstore,2
    0x089e,-1,reqtradebuyingstore,2:4:8:12
    0x08ab,-1,searchstoreinfo,2:4:5:9:13:14:15
    0x088b,2,searchstoreinfonextpage,0
    0x08a2,12,searchstoreinfolistitemclick,2:6:10

    //2012-03-07fRagexeRE
    packet_ver:29
    0x086A,19,wanttoconnection,2:6:10:14:18
    0x0437,5,walktoxy,2
    0x0887,6,ticksend,2
    0x0890,5,changedir,2:4
    0x0865,6,takeitem,2
    0x02C4,6,dropitem,2:4
    0x093B,8,movetokafra,2:4
    0x0963,8,movefromkafra,2:4
    0x0438,10,useskilltopos,2:4:6:8
    0x0366,90,useskilltoposinfo,2:4:6:8:10
    0x096A,6,getcharnamerequest,2
    0x0368,6,solvecharname,2
    0x0369,26,friendslistadd,2
    0x0863,5,hommenu,4
    0x0861,36,storagepassword,0
    0x0929,26,partyinvite2,2
    0x0885,7,actionrequest,2:6
    0x0889,10,useskilltoid,2:4:6
    0x0870,-1,itemlistwindowselected,2:4:8
    0x0926,18,bookingregreq,2:4:6
    0x0815,-1,reqopenbuyingstore,2:4:8:9:89
    0x0817,2,reqclosebuyingstore,0
    0x0360,6,reqclickbuyingstore,2
    0x0811,-1,reqtradebuyingstore,2:4:8:12
    0x0884,-1,searchstoreinfo,2:4:5:9:13:14:15
    0x0835,2,searchstoreinfonextpage,0
    0x0838,12,searchstoreinfolistitemclick,2:6:10
    0x0439,8,useitem,2:4

    //2012-05-15aRagexeRE
    packet_ver: 30
    0x01FD,15,repairitem,2
    0x0369,26,friendslistadd,2
    0x094B,5,hommenu,2:4
    0x089A,36,storagepassword,0
    0x0288,-1,cashshopbuy,4:8
    0x091F,26,partyinvite2,2
    0x08A8,19,wanttoconnection,2:6:10:14:18
    0x0923,7,actionrequest,2:6
    0x0947,10,useskilltoid,2:4:6
    0x0439,8,useitem,2:4
    0x0366,-1,itemlistwindowselected,2:4:8
    0x0891,-1,reqopenbuyingstore,2:4:8:9:89
    0x092C,2,reqclosebuyingstore,0
    0x091A,6,reqclickbuyingstore,2
    0x096A,-1,reqtradebuyingstore,2:4:8:12
    0x0817,-1,searchstoreinfo,2:4:5:9:13:14:15
    0x0367,2,searchstoreinfonextpage,0
    0x087E,12,searchstoreinfolistitemclick,2:6:10
    0x087C,5,walktoxy,2
    0x087D,6,ticksend,2
    0x08AC,5,changedir,2:4
    0x0964,6,takeitem,2
    0x0364,6,dropitem,2:4
    0x085A,8,movetokafra,2:4
    0x0869,8,movefromkafra,2:4
    0x08AD,10,useskilltopos,2:4:6:8
    0x08A2,90,useskilltoposinfo,2:4:6:8:10
    0x08A5,6,getcharnamerequest,2
    0x0957,6,solvecharname,2
    0x08E5,41,bookingregreq,2:4 //Added to prevent disconnections
    0x08E6,4
    0x08E7,10,bookingsearchreq,2
    0x08E8,-1
    0x08E9,2,bookingdelreq,2
    0x08EA,4
    0x08EB,39,bookingupdatereq,2
    0x08EC,73
    0x08ED,43
    0x08EE,6
    0x08EF,6,bookingignorereq,2
    0x08F0,6
    0x08F1,6,bookingjoinpartyreq,2
    0x08F2,36
    0x08F3,-1
    0x08F4,6
    0x08F5,-1,bookingsummonmember,2:4
    0x08F6,22
    0x08F7,3
    0x08F8,7
    0x08F9,6
    0x08FA,6
    0x08FB,6,bookingcanceljoinparty,2
    0x0907,5,moveitem,2:4
    0x0908,5
    0x08D7,28,battlegroundreg,2:4 //Added to prevent disconnections

     

    clif.h :

    // Copyright © Athena Dev Teams - Licensed under GNU GPL
    // For more information, see LICENCE in the main folder

    #ifndef _CLIF_H_
    #define _CLIF_H_

    #include "../common/cbasetypes.h"
    #include "../common/db.h" //dbmap

    //#include "../common/mmo.h"
    struct Channel;
    struct item;
    struct storage_data;
    struct guild_storage;
    //#include "map.h"
    struct block_list;
    struct unit_data;
    struct map_session_data;
    struct homun_data;
    struct pet_data;
    struct mob_data;
    struct npc_data;
    struct chat_data;
    struct flooritem_data;
    struct skill_unit;
    struct s_vending;
    struct party;
    struct party_data;
    struct guild;
    struct battleground_data;
    struct quest;
    struct party_booking_ad_info;
    #include

    enum
    {// packet DB
    MAX_PACKET_DB = 0xf00,
    MAX_PACKET_VER = 34,
    MAX_PACKET_POS = 20,
    };

    struct s_packet_db {
    short len;
    void (*func)(int, struct map_session_data *);
    short pos[MAX_PACKET_POS];
    };

    // packet_db[sERVER] is reserved for server use
    #define SERVER 0
    #define packet_len(cmd) packet_db[sERVER][cmd].len
    extern struct s_packet_db packet_db[MAX_PACKET_VER+1][MAX_PACKET_DB+1];

    // local define
    typedef enum send_target {
    ALL_CLIENT,
    ALL_SAMEMAP,
    AREA, // area
    AREA_WOS, // area, without self
    AREA_WOC, // area, without chatrooms
    AREA_WOSC, // area, without own chatroom
    AREA_CHAT_WOC, // hearable area, without chatrooms
    CHAT, // current chatroom
    CHAT_WOS, // current chatroom, without self
    PARTY,
    PARTY_WOS,
    PARTY_SAMEMAP,
    PARTY_SAMEMAP_WOS,
    PARTY_AREA,
    PARTY_AREA_WOS,
    GUILD,
    GUILD_WOS,
    GUILD_SAMEMAP,
    GUILD_SAMEMAP_WOS,
    GUILD_AREA,
    GUILD_AREA_WOS,
    GUILD_NOBG,
    DUEL,
    DUEL_WOS,
    SELF,

    BG, // BattleGround System
    BG_WOS,
    BG_SAMEMAP,
    BG_SAMEMAP_WOS,
    BG_AREA,
    BG_AREA_WOS,
    } send_target;

    typedef enum emotion_type {
    E_GASP = 0, // /!
    E_WHAT, // /?
    E_HO,
    E_LV,
    E_SWT,
    E_IC,
    E_AN,
    E_AG,
    E_CASH, // /$
    E_DOTS, // /...
    E_SCISSORS, // /gawi --- 10
    E_ROCK, // /bawi
    E_PAPER, // /bo
    E_KOREA,
    E_LV2,
    E_THX,
    E_WAH,
    E_SRY,
    E_HEH,
    E_SWT2,
    E_HMM, // --- 20
    E_NO1,
    E_NO, // /??
    E_OMG,
    E_OH,
    E_X,
    E_HLP,
    E_GO,
    E_SOB,
    E_GG,
    E_KIS, // --- 30
    E_KIS2,
    E_PIF,
    E_OK,
    E_MUTE, // red /... used for muted characters
    E_INDONESIA,
    E_BZZ, // /bzz, /stare
    E_RICE,
    E_AWSM, // /awsm, /cool
    E_MEH,
    E_SHY, // --- 40
    E_PAT, // /pat, /goodboy
    E_MP, // /mp, /sptime
    E_SLUR,
    E_COM, // /com, /comeon
    E_YAWN, // /yawn, /sleepy
    E_GRAT, // /grat, /congrats
    E_HP, // /hp, /hptime
    E_PHILIPPINES,
    E_MALAYSIA,
    E_SINGAPORE, // --- 50
    E_BRAZIL,
    E_FLASH, // /fsh
    E_SPIN, // /spin
    E_SIGH,
    E_DUM, // /dum
    E_LOUD, // /crwd
    E_OTL, // /otl, /desp
    E_DICE1,
    E_DICE2,
    E_DICE3, // --- 60
    E_DICE4,
    E_DICE5,
    E_DICE6,
    E_INDIA,
    E_LUV, // /love
    E_RUSSIA,
    E_VIRGIN,
    E_MOBILE,
    E_MAIL,
    E_CHINESE, // --- 70
    E_ANTENNA1,
    E_ANTENNA2,
    E_ANTENNA3,
    E_HUM,
    E_ABS,
    E_OOPS,
    E_SPIT,
    E_ENE,
    E_PANIC,
    E_WHISP, // --- 80
    E_YUT1,
    E_YUT2,
    E_YUT3,
    E_YUT4,
    E_YUT5,
    E_YUT6,
    E_YUT7,
    //
    E_MAX
    } emotion_type;

    typedef enum clr_type
    {
    CLR_OUTSIGHT = 0,
    CLR_DEAD,
    CLR_RESPAWN,
    CLR_TELEPORT,
    CLR_TRICKDEAD,
    } clr_type;

    enum map_property
    {// clif_map_property
    MAPPROPERTY_NOTHING = 0,
    MAPPROPERTY_FREEPVPZONE = 1,
    MAPPROPERTY_EVENTPVPZONE = 2,
    MAPPROPERTY_AGITZONE = 3,
    MAPPROPERTY_PKSERVERZONE = 4, // message "You are in a PK area. Please beware of sudden attacks." in color 0x9B9BFF (light red)
    MAPPROPERTY_PVPSERVERZONE = 5,
    MAPPROPERTY_DENYSKILLZONE = 6,
    };

    enum map_type
    {// clif_map_type
    MAPTYPE_VILLAGE = 0,
    MAPTYPE_VILLAGE_IN = 1,
    MAPTYPE_FIELD = 2,
    MAPTYPE_DUNGEON = 3,
    MAPTYPE_ARENA = 4,

    MAPTYPE_PENALTY_FREEPKZONE = 5,
    MAPTYPE_NOPENALTY_FREEPKZONE = 6,
    MAPTYPE_EVENT_GUILDWAR = 7,
    MAPTYPE_AGIT = 8,
    MAPTYPE_DUNGEON2 = 9,
    MAPTYPE_DUNGEON3 = 10,
    MAPTYPE_PKSERVER = 11,
    MAPTYPE_PVPSERVER = 12,
    MAPTYPE_DENYSKILL = 13,
    MAPTYPE_TURBOTRACK = 14,
    MAPTYPE_JAIL = 15,
    MAPTYPE_MONSTERTRACK = 16,
    MAPTYPE_PORINGBATTLE = 17,
    MAPTYPE_AGIT_SIEGEV15 = 18,
    MAPTYPE_BATTLEFIELD = 19,
    MAPTYPE_PVP_TOURNAMENT = 20,
    //Map types 21 - 24 not used.
    MAPTYPE_SIEGE_LOWLEVEL = 25,
    //Map types 26 - 28 remains opens for future types.
    MAPTYPE_UNUSED = 29,
    };

    enum useskill_fail_cause
    {// clif_skill_fail
    USESKILL_FAIL_LEVEL = 0,
    USESKILL_FAIL_SP_INSUFFICIENT = 1,
    USESKILL_FAIL_HP_INSUFFICIENT = 2,
    USESKILL_FAIL_STUFF_INSUFFICIENT = 3,
    USESKILL_FAIL_SKILLINTERVAL = 4,
    USESKILL_FAIL_MONEY = 5,
    USESKILL_FAIL_THIS_WEAPON = 6,
    USESKILL_FAIL_REDJAMSTONE = 7,
    USESKILL_FAIL_BLUEJAMSTONE = 8,
    USESKILL_FAIL_WEIGHTOVER = 9,
    USESKILL_FAIL = 10,
    USESKILL_FAIL_TOTARGET = 11,
    USESKILL_FAIL_ANCILLA_NUMOVER = 12,
    USESKILL_FAIL_HOLYWATER = 13,
    USESKILL_FAIL_ANCILLA = 14,
    USESKILL_FAIL_DUPLICATE_RANGEIN = 15,
    USESKILL_FAIL_NEED_OTHER_SKILL = 16,
    USESKILL_FAIL_NEED_HELPER = 17,
    USESKILL_FAIL_INVALID_DIR = 18,
    USESKILL_FAIL_SUMMON = 19,
    USESKILL_FAIL_SUMMON_NONE = 20,
    USESKILL_FAIL_IMITATION_SKILL_NONE = 21,
    USESKILL_FAIL_DUPLICATE = 22,
    USESKILL_FAIL_CONDITION = 23,
    USESKILL_FAIL_PAINTBRUSH = 24,
    USESKILL_FAIL_DRAGON = 25,
    USESKILL_FAIL_POS = 26,
    USESKILL_FAIL_HELPER_SP_INSUFFICIENT = 27,
    USESKILL_FAIL_NEER_WALL = 28,
    USESKILL_FAIL_NEED_EXP_1PERCENT = 29,
    USESKILL_FAIL_CHORUS_SP_INSUFFICIENT = 30,
    USESKILL_FAIL_GC_WEAPONBLOCKING = 31,
    USESKILL_FAIL_GC_POISONINGWEAPON = 32,
    USESKILL_FAIL_MADOGEAR = 33,
    USESKILL_FAIL_NEED_EQUIPMENT_KUNAI = 34,
    USESKILL_FAIL_TOTARGET_PLAYER = 35,
    USESKILL_FAIL_SIZE = 36,
    USESKILL_FAIL_CANONBALL = 37,
    //XXX_USESKILL_FAIL_II_MADOGEAR_ACCELERATION = 38,
    //XXX_USESKILL_FAIL_II_MADOGEAR_HOVERING_BOOSTER = 39,
    USESKILL_FAIL_MADOGEAR_HOVERING = 40,
    //XXX_USESKILL_FAIL_II_MADOGEAR_SELFDESTRUCTION_DEVICE = 41,
    //XXX_USESKILL_FAIL_II_MADOGEAR_SHAPESHIFTER = 42,
    USESKILL_FAIL_GUILLONTINE_POISON = 43,
    //XXX_USESKILL_FAIL_II_MADOGEAR_COOLING_DEVICE = 44,
    //XXX_USESKILL_FAIL_II_MADOGEAR_MAGNETICFIELD_GENERATOR = 45,
    //XXX_USESKILL_FAIL_II_MADOGEAR_BARRIER_GENERATOR = 46,
    //XXX_USESKILL_FAIL_II_MADOGEAR_OPTICALCAMOUFLAGE_GENERATOR = 47,
    //XXX_USESKILL_FAIL_II_MADOGEAR_REPAIRKIT = 48,
    //XXX_USESKILL_FAIL_II_MONKEY_SPANNER = 49,
    USESKILL_FAIL_MADOGEAR_RIDE = 50,
    USESKILL_FAIL_SPELLBOOK = 51,
    USESKILL_FAIL_SPELLBOOK_DIFFICULT_SLEEP = 52,
    USESKILL_FAIL_SPELLBOOK_PRESERVATION_POINT = 53,
    USESKILL_FAIL_SPELLBOOK_READING = 54,
    //XXX_USESKILL_FAIL_II_FACE_PAINTS = 55,
    //XXX_USESKILL_FAIL_II_MAKEUP_BRUSH = 56,
    USESKILL_FAIL_CART = 57,
    //XXX_USESKILL_FAIL_II_THORNS_SEED = 58,
    //XXX_USESKILL_FAIL_II_BLOOD_SUCKER_SEED = 59,
    USESKILL_FAIL_NO_MORE_SPELL = 60,
    //XXX_USESKILL_FAIL_II_BOMB_MUSHROOM_SPORE = 61,
    //XXX_USESKILL_FAIL_II_GASOLINE_BOOMB = 62,
    //XXX_USESKILL_FAIL_II_OIL_BOTTLE = 63,
    //XXX_USESKILL_FAIL_II_EXPLOSION_POWDER = 64,
    //XXX_USESKILL_FAIL_II_SMOKE_POWDER = 65,
    //XXX_USESKILL_FAIL_II_TEAR_GAS = 66,
    //XXX_USESKILL_FAIL_II_HYDROCHLORIC_ACID_BOTTLE = 67,
    //XXX_USESKILL_FAIL_II_HELLS_PLANT_BOTTLE = 68,
    //XXX_USESKILL_FAIL_II_MANDRAGORA_FLOWERPOT = 69,
    USESKILL_FAIL_MANUAL_NOTIFY = 70,
    USESKILL_FAIL_NEED_ITEM = 71,
    USESKILL_FAIL_NEED_EQUIPMENT = 72,
    USESKILL_FAIL_COMBOSKILL = 73,
    USESKILL_FAIL_SPIRITS = 74,
    USESKILL_FAIL_EXPLOSIONSPIRITS = 75,
    USESKILL_FAIL_HP_TOOMANY = 76,
    USESKILL_FAIL_NEED_ROYAL_GUARD_BANDING = 77,
    USESKILL_FAIL_NEED_EQUIPPED_WEAPON_CLASS = 78,
    USESKILL_FAIL_EL_SUMMON = 79,
    USESKILL_FAIL_RELATIONGRADE = 80,
    USESKILL_FAIL_STYLE_CHANGE_FIGHTER = 81,
    USESKILL_FAIL_STYLE_CHANGE_GRAPPLER = 82,
    USESKILL_FAIL_THERE_ARE_NPC_AROUND = 83,
    };

    enum clif_messages {
    MERC_MSG_BASE = 1266, //0x4f2
    SKILL_CANT_USE_AREA = 0x536,
    VIEW_EQUIP_FAIL = 0x54d,
    USAGE_FAIL = 0x783,
    };

    int clif_setip(const char* ip);
    void clif_setbindip(const char* ip);
    void clif_setport(uint16 port);

    uint32 clif_getip(void);
    uint32 clif_refresh_ip(void);
    uint16 clif_getport(void);
    void packetdb_readdb(void);

    void clif_authok(struct map_session_data *sd);
    void clif_authrefuse(int fd, uint8 error_code);
    void clif_authfail_fd(int fd, int type);
    void clif_charselectok(int id, uint8 ok);
    void clif_dropflooritem(struct flooritem_data* fitem);
    void clif_clearflooritem(struct flooritem_data *fitem, int fd);

    void clif_clearunit_single(int id, clr_type type, int fd);
    void clif_clearunit_area(struct block_list* bl, clr_type type);
    void clif_clearunit_delayed(struct block_list* bl, clr_type type, unsigned int tick);
    int clif_spawn(struct block_list *bl); //area
    void clif_walkok(struct map_session_data *sd); // self
    void clif_move(struct unit_data *ud); //area
    void clif_changemap(struct map_session_data *sd, short m, int x, int y); //self
    void clif_changemapserver(struct map_session_data* sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port); //self
    void clif_blown(struct block_list *bl); // area
    void clif_slide(struct block_list *bl, int x, int y); // area
    void clif_fixpos(struct block_list *bl); // area
    void clif_npcbuysell(struct map_session_data* sd, int id); //self
    void clif_buylist(struct map_session_data *sd, struct npc_data *nd); //self
    void clif_selllist(struct map_session_data *sd); //self
    void clif_scriptmes(struct map_session_data *sd, int npcid, const char *mes); //self
    void clif_scriptnext(struct map_session_data *sd,int npcid); //self
    void clif_scriptclose(struct map_session_data *sd, int npcid); //self
    void clif_scriptmenu(struct map_session_data* sd, int npcid, const char* mes); //self
    void clif_scriptinput(struct map_session_data *sd, int npcid); //self
    void clif_scriptinputstr(struct map_session_data *sd, int npcid); // self
    void clif_cutin(struct map_session_data* sd, const char* image, int type); //self
    void clif_viewpoint(struct map_session_data *sd, int npc_id, int type, int x, int y, int id, int color); //self
    void clif_additem(struct map_session_data *sd, int n, int amount, int fail); // self
    void clif_dropitem(struct map_session_data *sd,int n,int amount); //self
    void clif_delitem(struct map_session_data *sd,int n,int amount, short reason); //self
    void clif_updatestatus(struct map_session_data *sd,int type); //self
    void clif_changestatus(struct map_session_data* sd,int type,int val); //area
    int clif_damage(struct block_list* src, struct block_list* dst, unsigned int tick, int sdelay, int ddelay, int64 sdamage, int div, int type, int64 sdamage2); // area
    void clif_takeitem(struct block_list* src, struct block_list* dst);
    void clif_sitting(struct block_list* bl);
    void clif_standing(struct block_list* bl);
    void clif_changelook(struct block_list *bl,int type,int val); // area
    void clif_changetraplook(struct block_list *bl,int val); // area
    void clif_refreshlook(struct block_list *bl,int id,int type,int val,enum send_target target); //area specified in 'target'
    void clif_arrowequip(struct map_session_data *sd,int val); //self
    void clif_arrow_fail(struct map_session_data *sd,int type); //self
    void clif_arrow_create_list(struct map_session_data *sd); //self
    void clif_statusupack(struct map_session_data *sd,int type,int ok,int val); // self
    void clif_equipitemack(struct map_session_data *sd,int n,int pos,int ok); // self
    void clif_unequipitemack(struct map_session_data *sd,int n,int pos,int ok); // self
    void clif_misceffect(struct block_list* bl,int type); // area
    void clif_changeoption(struct block_list* bl); // area
    void clif_changeoption2(struct block_list* bl); // area
    void clif_useitemack(struct map_session_data *sd,int index,int amount,bool ok); // self
    void clif_GlobalMessage(struct block_list* bl, const char* message,enum send_target target);
    void clif_createchat(struct map_session_data* sd, int flag); // self
    void clif_dispchat(struct chat_data* cd, int fd); // area or fd
    void clif_joinchatfail(struct map_session_data *sd,int flag); // self
    void clif_joinchatok(struct map_session_data *sd,struct chat_data* cd); // self
    void clif_addchat(struct chat_data* cd,struct map_session_data *sd); // chat
    void clif_changechatowner(struct chat_data* cd, struct map_session_data* sd); // chat
    void clif_clearchat(struct chat_data *cd,int fd); // area or fd
    void clif_leavechat(struct chat_data* cd, struct map_session_data* sd, bool flag); // chat
    void clif_changechatstatus(struct chat_data* cd); // chat
    void clif_refresh(struct map_session_data *sd); // self

    void clif_fame_blacksmith(struct map_session_data *sd, int points);
    void clif_fame_alchemist(struct map_session_data *sd, int points);
    void clif_fame_taekwon(struct map_session_data *sd, int points);

    void clif_emotion(struct block_list *bl,int type);
    void clif_talkiebox(struct block_list* bl, const char* talkie);
    void clif_wedding_effect(struct block_list *bl);
    void clif_divorced(struct map_session_data* sd, const char* name);
    void clif_callpartner(struct map_session_data *sd);
    void clif_playBGM(struct map_session_data* sd, const char* name);
    void clif_soundeffect(struct map_session_data* sd, struct block_list* bl, const char* name, int type);
    void clif_soundeffectall(struct block_list* bl, const char* name, int type, enum send_target coverage);
    void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type, int target_id, unsigned int tick);
    void clif_parse_LoadEndAck(int fd,struct map_session_data *sd);
    void clif_hotkeys_send(struct map_session_data *sd);

    // trade
    void clif_traderequest(struct map_session_data* sd, const char* name);
    void clif_tradestart(struct map_session_data* sd, uint8 type);
    void clif_tradeadditem(struct map_session_data* sd, struct map_session_data* tsd, int index, int amount);
    void clif_tradeitemok(struct map_session_data* sd, int index, int fail);
    void clif_tradedeal_lock(struct map_session_data* sd, int fail);
    void clif_tradecancelled(struct map_session_data* sd);
    void clif_tradecompleted(struct map_session_data* sd, int fail);
    void clif_tradeundo(struct map_session_data* sd);

    // storage
    void clif_storagelist(struct map_session_data* sd, struct item* items, int items_length);
    void clif_updatestorageamount(struct map_session_data* sd, int amount, int max_amount);
    void clif_storageitemadded(struct map_session_data* sd, struct item* i, int index, int amount);
    void clif_storageitemremoved(struct map_session_data* sd, int index, int amount);
    void clif_storageclose(struct map_session_data* sd);

    int clif_insight(struct block_list *bl,va_list ap); // map_forallinmovearea callback
    int clif_outsight(struct block_list *bl,va_list ap); // map_forallinmovearea callback

    void clif_class_change(struct block_list *bl,int class_,int type);
    #define clif_mob_class_change(md, class_) clif_class_change(&md->bl, class_, 1)

    void clif_skillinfoblock(struct map_session_data *sd);
    void clif_skillup(struct map_session_data *sd, uint16 skill_id, int lv, int range, int upgradable);
    void clif_skillinfo(struct map_session_data *sd,int skill, int inf);
    void clif_addskill(struct map_session_data *sd, int id);
    void clif_deleteskill(struct map_session_data *sd, int id);

    void clif_skillcasting(struct block_list* bl, int src_id, int dst_id, int dst_x, int dst_y, uint16 skill_id, int property, int casttime);
    void clif_skillcastcancel(struct block_list* bl);
    void clif_skill_fail(struct map_session_data *sd,uint16 skill_id,enum useskill_fail_cause cause,int btype);
    void clif_skill_cooldown(struct map_session_data *sd, uint16 skill_id, unsigned int tick);
    int clif_skill_damage(struct block_list *src,struct block_list *dst,unsigned int tick,int sdelay,int ddelay,int64 sdamage,int div,uint16 skill_id,uint16 skill_lv,int type);
    //int clif_skill_damage2(struct block_list *src,struct block_list *dst,unsigned int tick,int sdelay,int ddelay,int damage,int div,uint16 skill_id,uint16 skill_lv,int type);
    int clif_skill_nodamage(struct block_list *src,struct block_list *dst,uint16 skill_id,int heal,int fail);
    void clif_skill_poseffect(struct block_list *src,uint16 skill_id,int val,int x,int y,int tick);
    void clif_skill_estimation(struct map_session_data *sd,struct block_list *dst);
    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);
    void clif_skill_memomessage(struct map_session_data* sd, int type);
    void clif_skill_teleportmessage(struct map_session_data *sd, int type);
    void clif_skill_produce_mix_list(struct map_session_data *sd, int skill_id, int trigger);
    void clif_cooking_list(struct map_session_data *sd, int trigger, uint16 skill_id, int qty, int list_type);

    void clif_produceeffect(struct map_session_data* sd,int flag,int nameid);

    void clif_skill_setunit(struct skill_unit *unit);
    void clif_skill_delunit(struct skill_unit *unit);

    void clif_skillunit_update(struct block_list* bl);

    void clif_autospell(struct map_session_data *sd,uint16 skill_lv);
    void clif_devotion(struct block_list *src, struct map_session_data *tsd);
    void clif_spiritball(struct block_list *bl);
    void clif_combo_delay(struct block_list *bl,int wait);
    void clif_bladestop(struct block_list *src, int dst_id, int active);
    void clif_changemapcell(int fd, int16 m, int x, int y, int type, enum send_target target);

    #define clif_status_load(bl, type, flag) clif_status_change((bl), (type), (flag), 0, 0, 0, 0)
    void clif_status_change(struct block_list *bl,int type,int flag,int tick,int val1, int val2, int val3);

    void clif_wis_message(int fd, const char* nick, const char* mes, int mes_len);
    void clif_wis_end(int fd, int flag);

    void clif_solved_charname(int fd, int charid, const char* name);
    void clif_charnameack(int fd, struct block_list *bl);
    void clif_charnameupdate(struct map_session_data *ssd);

    void clif_use_card(struct map_session_data *sd,int idx);
    void clif_insert_card(struct map_session_data *sd,int idx_equip,int idx_card,int flag);

    void clif_inventorylist(struct map_session_data *sd);
    void clif_equiplist(struct map_session_data *sd);

    void clif_cart_additem(struct map_session_data *sd,int n,int amount,int fail);
    void clif_cart_delitem(struct map_session_data *sd,int n,int amount);
    void clif_cartlist(struct map_session_data *sd);
    void clif_clearcart(int fd);

    void clif_item_identify_list(struct map_session_data *sd);
    void clif_item_identified(struct map_session_data *sd,int idx,int flag);
    void clif_item_repair_list(struct map_session_data *sd, struct map_session_data *dstsd, int lv);
    void clif_item_repaireffect(struct map_session_data *sd, int idx, int flag);
    void clif_item_damaged(struct map_session_data* sd, unsigned short position);
    void clif_item_refine_list(struct map_session_data *sd);

    void clif_item_skill(struct map_session_data *sd,uint16 skill_id,uint16 skill_lv);

    void clif_mvp_effect(struct map_session_data *sd);
    void clif_mvp_item(struct map_session_data *sd,int nameid);
    void clif_mvp_exp(struct map_session_data *sd, unsigned int exp);
    void clif_mvp_noitem(struct map_session_data* sd);
    void clif_changed_dir(struct block_list *bl, enum send_target target);

    // vending
    void clif_openvendingreq(struct map_session_data* sd, int num);
    void clif_showvendingboard(struct block_list* bl, const char* message, int fd);
    void clif_closevendingboard(struct block_list* bl, int fd);
    void clif_vendinglist(struct map_session_data* sd, int id, struct s_vending* vending);
    void clif_buyvending(struct map_session_data* sd, int index, int amount, int fail);
    void clif_openvending(struct map_session_data* sd, int id, struct s_vending* vending);
    void clif_vendingreport(struct map_session_data* sd, int index, int amount);

    void clif_movetoattack(struct map_session_data *sd,struct block_list *bl);

    // party
    void clif_party_created(struct map_session_data *sd,int result);
    void clif_party_member_info(struct party_data *p, struct map_session_data *sd);
    void clif_party_info(struct party_data* p, struct map_session_data *sd);
    void clif_party_invite(struct map_session_data *sd,struct map_session_data *tsd);
    void clif_party_inviteack(struct map_session_data* sd, const char* nick, int result);
    void clif_party_option(struct party_data *p,struct map_session_data *sd,int flag);
    void clif_party_withdraw(struct party_data* p, struct map_session_data* sd, int account_id, const char* name, int flag);
    void clif_party_message(struct party_data* p, int account_id, const char* mes, int len);
    void clif_party_xy(struct map_session_data *sd);
    void clif_party_xy_single(int fd, struct map_session_data *sd);
    void clif_party_hp(struct map_session_data *sd);
    void clif_hpmeter_single(int fd, int id, unsigned int hp, unsigned int maxhp);

    // guild
    void clif_guild_created(struct map_session_data *sd,int flag);
    void clif_guild_belonginfo(struct map_session_data *sd, struct guild *g);
    void clif_guild_masterormember(struct map_session_data *sd);
    void clif_guild_basicinfo(struct map_session_data *sd);
    void clif_guild_allianceinfo(struct map_session_data *sd);
    void clif_guild_memberlist(struct map_session_data *sd);
    void clif_guild_skillinfo(struct map_session_data* sd);
    void clif_guild_send_onlineinfo(struct map_session_data *sd); //[LuzZza]
    void clif_guild_memberlogin_notice(struct guild *g,int idx,int flag);
    void clif_guild_invite(struct map_session_data *sd,struct guild *g);
    void clif_guild_inviteack(struct map_session_data *sd,int flag);
    void clif_guild_leave(struct map_session_data *sd,const char *name,const char *mes);
    void clif_guild_expulsion(struct map_session_data* sd, const char* name, const char* mes, int account_id);
    void clif_guild_positionchanged(struct guild *g,int idx);
    void clif_guild_memberpositionchanged(struct guild *g,int idx);
    void clif_guild_emblem(struct map_session_data *sd,struct guild *g);
    void clif_guild_emblem_area(struct block_list* bl);
    void clif_guild_notice(struct map_session_data* sd, struct guild* g);
    void clif_guild_message(struct guild *g,int account_id,const char *mes,int len);
    void clif_guild_reqalliance(struct map_session_data *sd,int account_id,const char *name);
    void clif_guild_allianceack(struct map_session_data *sd,int flag);
    void clif_guild_delalliance(struct map_session_data *sd,int guild_id,int flag);
    void clif_guild_oppositionack(struct map_session_data *sd,int flag);
    void clif_guild_broken(struct map_session_data *sd,int flag);
    void clif_guild_xy(struct map_session_data *sd);
    void clif_guild_xy_single(int fd, struct map_session_data *sd);
    void clif_guild_xy_remove(struct map_session_data *sd);

    // Battleground
    void clif_bg_hp(struct map_session_data *sd);
    void clif_bg_xy(struct map_session_data *sd);
    void clif_bg_xy_remove(struct map_session_data *sd);
    void clif_bg_message(struct battleground_data *bg, int src_id, const char *name, const char *mes, int len);
    void clif_bg_updatescore(int16 m);
    void clif_bg_updatescore_single(struct map_session_data *sd);
    void clif_sendbgemblem_area(struct map_session_data *sd);
    void clif_sendbgemblem_single(int fd, struct map_session_data *sd);

    // Instancing
    void clif_instance_create(struct map_session_data *sd, const char *name, int num, int flag);
    void clif_instance_changewait(struct map_session_data *sd, int num, int flag);
    void clif_instance_status(struct map_session_data *sd, const char *name, unsigned int limit1, unsigned int limit2, int flag);
    void clif_instance_changestatus(struct map_session_data *sd, int type, unsigned int limit, int flag);

    // Custom Fonts
    void clif_font(struct map_session_data *sd);

    // atcommand
    void clif_displaymessage(const int fd, const char* mes);
    void clif_disp_onlyself(struct map_session_data *sd, const char *mes, int len);
    void clif_disp_message(struct block_list* src, const char* mes, int len, enum send_target target);
    void clif_broadcast(struct block_list* bl, const char* mes, int len, int type, enum send_target target);
    void clif_broadcast2(struct block_list* bl, const char* mes, int len, unsigned long fontColor, short fontType, short fontSize, short fontAlign, short fontY, enum send_target target);
    void clif_heal(int fd,int type,int val);
    void clif_resurrection(struct block_list *bl,int type);
    void clif_map_property(struct map_session_data* sd, enum map_property property);
    void clif_maptypeproperty2(struct block_list *bl,enum send_target t);
    void clif_pvpset(struct map_session_data *sd, int pvprank, int pvpnum,int type);
    void clif_map_property_mapall(int map, enum map_property property);
    void clif_refine(int fd, int fail, int index, int val);
    void clif_upgrademessage(int fd, int result, int item_id);

    //petsystem
    void clif_catch_process(struct map_session_data *sd);
    void clif_pet_roulette(struct map_session_data *sd,int data);
    void clif_sendegg(struct map_session_data *sd);
    void clif_send_petstatus(struct map_session_data *sd);
    void clif_send_petdata(struct map_session_data* sd, struct pet_data* pd, int type, int param);
    #define clif_pet_equip(sd, pd) clif_send_petdata(sd, pd, 3, (pd)->vd.head_bottom)
    #define clif_pet_equip_area(pd) clif_send_petdata(NULL, pd, 3, (pd)->vd.head_bottom)
    #define clif_pet_performance(pd, param) clif_send_petdata(NULL, pd, 4, param)
    void clif_pet_emotion(struct pet_data *pd,int param);
    void clif_pet_food(struct map_session_data *sd,int foodid,int fail);

    //friends list
    int clif_friendslist_toggle_sub(struct map_session_data *sd,va_list ap);
    void clif_friendslist_send(struct map_session_data *sd);
    void clif_friendslist_reqack(struct map_session_data *sd, struct map_session_data *f_sd, int type);

    void clif_weather(int16 m); // [Valaris]
    void clif_specialeffect(struct block_list* bl, int type, enum send_target target); // special effects [Valaris]
    void clif_specialeffect_single(struct block_list* bl, int type, int fd);
    void clif_messagecolor(struct block_list* bl, unsigned long color, const char* msg); // Mob/Npc color talk [snakeDrak]
    void clif_specialeffect_value(struct block_list* bl, int effect_id, int num, send_target target);

    void clif_GM_kickack(struct map_session_data *sd, int id);
    void clif_GM_kick(struct map_session_data *sd,struct map_session_data *tsd);
    void clif_manner_message(struct map_session_data* sd, uint32 type);
    void clif_GM_silence(struct map_session_data* sd, struct map_session_data* tsd, uint8 type);

    void clif_disp_overhead(struct block_list *bl, const char* mes);

    void clif_get_weapon_view(struct map_session_data* sd, unsigned short *rhand, unsigned short *lhand);

    void clif_party_xy_remove(struct map_session_data *sd); //Fix for minimap [Kevin]
    void clif_gospel_info(struct map_session_data *sd, int type);
    void clif_feel_req(int fd, struct map_session_data *sd, uint16 skill_lv);
    void clif_starskill(struct map_session_data* sd, const char* mapname, int monster_id, unsigned char star, unsigned char result);
    void clif_feel_info(struct map_session_data* sd, unsigned char feel_level, unsigned char type);
    void clif_hate_info(struct map_session_data *sd, unsigned char hate_level,int class_, unsigned char type);
    void clif_mission_info(struct map_session_data *sd, int mob_id, unsigned char progress);
    void clif_feel_hate_reset(struct map_session_data *sd);

    // [blackhole89]
    void clif_hominfo(struct map_session_data *sd, struct homun_data *hd, int flag);
    int clif_homskillinfoblock(struct map_session_data *sd);
    void clif_homskillup(struct map_session_data *sd, uint16 skill_id); //[orn]
    int clif_hom_food(struct map_session_data *sd,int foodid,int fail); //[orn]
    void clif_send_homdata(struct map_session_data *sd, int state, int param); //[orn]

    void clif_equiptickack(struct map_session_data* sd, int flag);
    void clif_viewequip_ack(struct map_session_data* sd, struct map_session_data* tsd);
    void clif_equipcheckbox(struct map_session_data* sd);

    void clif_msg(struct map_session_data* sd, unsigned short id);
    void clif_msg_value(struct map_session_data* sd, unsigned short id, int value);
    void clif_msg_skill(struct map_session_data* sd, uint16 skill_id, int msg_id);

    //quest system [Kevin] [inkfish]
    void clif_quest_send_list(struct map_session_data * sd);
    void clif_quest_send_mission(struct map_session_data * sd);
    void clif_quest_add(struct map_session_data * sd, struct quest * qd, int index);
    void clif_quest_delete(struct map_session_data * sd, int quest_id);
    void clif_quest_update_status(struct map_session_data * sd, int quest_id, bool active);
    void clif_quest_update_objective(struct map_session_data * sd, struct quest * qd, int index);
    void clif_quest_show_event(struct map_session_data *sd, struct block_list *bl, short state, short color);
    void clif_displayexp(struct map_session_data *sd, unsigned int exp, char type, bool quest);

    int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target type);
    int do_init_clif(void);
    void do_final_clif(void);

    // MAIL SYSTEM
    void clif_Mail_window(int fd, int flag);
    void clif_Mail_read(struct map_session_data *sd, int mail_id);
    void clif_Mail_delete(int fd, int mail_id, short fail);
    void clif_Mail_return(int fd, int mail_id, short fail);
    void clif_Mail_send(int fd, bool fail);
    void clif_Mail_new(int fd, int mail_id, const char *sender, const char *title);
    void clif_Mail_refreshinbox(struct map_session_data *sd);
    void clif_Mail_getattachment(int fd, uint8 flag);
    // AUCTION SYSTEM
    void clif_Auction_openwindow(struct map_session_data *sd);
    void clif_Auction_results(struct map_session_data *sd, short count, short pages, uint8 *buf);
    void clif_Auction_message(int fd, unsigned char flag);
    void clif_Auction_close(int fd, unsigned char flag);
    void clif_parse_Auction_cancelreg(int fd, struct map_session_data *sd);

    void clif_bossmapinfo(int fd, struct mob_data *md, short flag);
    void clif_cashshop_show(struct map_session_data *sd, struct npc_data *nd);

    // ADOPTION
    void clif_Adopt_reply(struct map_session_data *sd, int type);

    // MERCENARIES
    void clif_mercenary_info(struct map_session_data *sd);
    void clif_mercenary_skillblock(struct map_session_data *sd);
    void clif_mercenary_message(struct map_session_data* sd, int message);
    void clif_mercenary_updatestatus(struct map_session_data *sd, int type);

    // RENTAL SYSTEM
    void clif_rental_time(int fd, int nameid, int seconds);
    void clif_rental_expired(int fd, int index, int nameid);

    // BOOK READING
    void clif_readbook(int fd, int book_id, int page);

    // Show Picker
    void clif_party_show_picker(struct map_session_data * sd, struct item * item_data);

    // Progress Bar [inkfish]
    void clif_progressbar(struct map_session_data * sd, unsigned long color, unsigned int second);
    void clif_progressbar_abort(struct map_session_data * sd);

    void clif_PartyBookingRegisterAck(struct map_session_data *sd, int flag);
    void clif_PartyBookingDeleteAck(struct map_session_data* sd, int flag);
    void clif_PartyBookingSearchAck(int fd, struct party_booking_ad_info** results, int count, bool more_result);
    void clif_PartyBookingUpdateNotify(struct map_session_data* sd, struct party_booking_ad_info* pb_ad);
    void clif_PartyBookingDeleteNotify(struct map_session_data* sd, int index);
    void clif_PartyBookingInsertNotify(struct map_session_data* sd, struct party_booking_ad_info* pb_ad);

    void clif_showdigit(struct map_session_data* sd, unsigned char type, int value);

    /// Buying Store System
    void clif_buyingstore_open(struct map_session_data* sd);
    void clif_buyingstore_open_failed(struct map_session_data* sd, unsigned short result, unsigned int weight);
    void clif_buyingstore_myitemlist(struct map_session_data* sd);
    void clif_buyingstore_entry(struct map_session_data* sd);
    void clif_buyingstore_entry_single(struct map_session_data* sd, struct map_session_data* pl_sd);
    void clif_buyingstore_disappear_entry(struct map_session_data* sd);
    void clif_buyingstore_disappear_entry_single(struct map_session_data* sd, struct map_session_data* pl_sd);
    void clif_buyingstore_itemlist(struct map_session_data* sd, struct map_session_data* pl_sd);
    void clif_buyingstore_trade_failed_buyer(struct map_session_data* sd, short result);
    void clif_buyingstore_update_item(struct map_session_data* sd, unsigned short nameid, unsigned short amount);
    void clif_buyingstore_delete_item(struct map_session_data* sd, short index, unsigned short amount, int price);
    void clif_buyingstore_trade_failed_seller(struct map_session_data* sd, short result, unsigned short nameid);

    /// Search Store System
    void clif_search_store_info_ack(struct map_session_data* sd);
    void clif_search_store_info_failed(struct map_session_data* sd, unsigned char reason);
    void clif_open_search_store_info(struct map_session_data* sd);
    void clif_search_store_info_click_ack(struct map_session_data* sd, short x, short y);

    /// Cash Shop
    void clif_cashshop_result( struct map_session_data* sd, uint16 item_id, uint16 result );
    void clif_cashshop_open( struct map_session_data* sd );

    /**
    * 3CeAM
    **/
    void clif_msgtable(int fd, int line);
    void clif_msgtable_num(int fd, int line, int num);

    int clif_elementalconverter_list(struct map_session_data *sd);

    void clif_millenniumshield(struct map_session_data *sd, short shields );

    int clif_spellbook_list(struct map_session_data *sd);

    int clif_magicdecoy_list(struct map_session_data *sd, uint16 skill_lv, short x, short y);

    int clif_poison_list(struct map_session_data *sd, uint16 skill_lv);

    int clif_autoshadowspell_list(struct map_session_data *sd);

    int clif_status_load_notick(struct block_list *bl,int type,int flag,int val1, int val2, int val3);
    int clif_status_load_single(int fd, int id,int type,int flag,int val1, int val2, int val3);


    int clif_skill_itemlistwindow( struct map_session_data *sd, uint16 skill_id, uint16 skill_lv );
    void clif_elemental_info(struct map_session_data *sd);
    void clif_elemental_updatestatus(struct map_session_data *sd, int type);

    void clif_talisman(struct map_session_data *sd, short type);

    void clif_snap( struct block_list *bl, short x, short y );
    void clif_monster_hp_bar( struct mob_data* md, int fd );

    /**
    * Color Table
    **/
    enum clif_colors {
    COLOR_RED,

    COLOR_MAX
    };
    unsigned long color_table[color_MAX];
    int clif_colormes(struct map_session_data * sd, unsigned long color, const char* msg);

    void clif_channel_msg(struct Channel *channel, struct map_session_data *sd, char *msg, short color);

    #define clif_menuskill_clear(sd) (sd)->menuskill_id = (sd)->menuskill_val = (sd)->menuskill_val2 = 0;

    void clif_ranklist(struct map_session_data *sd, int16 rankingType);
    void clif_update_rankingpoint(struct map_session_data *sd, int rankingtype, int point);

    #endif /* _CLIF_H_ */

     

    clientinfo.xml:

     



    korea
    sakray


    Valkyrja Ragnarok Online
    Sakray Client

    199.71.213.33


    6900
    28
    1
    Sakray Client



     

    I recompiled the server already but still got the same error. please do help me. its kinda urgent :(

  2. I got this map server crash, and when I put my server into dbg mode i got this

     (gdb) bt full
    #0  0x080d12c5 in status_change_end_ (bl=0xdcb9101, type=SC_AUTOGUARD, tid=-1, 
        file=0x81d8e66 "status.c", line=9388) at status.c:9279
            sd = 0x0
            sc = 0xdcb9341
            sce = 0xff0dcb95
            status = 0xdcb92ed
            vd = <value optimized out>
            opt_flag = <value optimized out>
            calc_flag = <value optimized out>
            __FUNCTION__ = "status_change_end_"
    #1  0x080d297b in status_change_end_ (bl=0xdcb9f40, type=SC_AUTOGUARD, 
        tid=2615, file=0x81d8e66 "status.c", line=10788) at status.c:9388
            tsd = 0xdcb9101
            sd = 0xdcb9f40
            sc = 0xdcba1e0
            sce = 0xdcb918c
            status = <value optimized out>
            vd = 0xdcba128
            opt_flag = <value optimized out>
            calc_flag = 0
            __FUNCTION__ = "status_change_end_"
    #2  0x080d4565 in status_change_timer (tid=2615, tick=198529862, id=2000041, 

     

     
  3. can some fix this script? its not working

     

     

    prt_maze03,52,190,5 script Evil Baphomet 1929,{
    mes "[ Evil Baphomet ]";
    mes "So you're here to make the powerful horns?";
    mes "I can make you one if you bring me the right items";
    next;
    mes "[ Evil Baphomet ]";
    mes "These are what I need";
    mes "300 Evil Horns",
    mes "20 Pieces of Young Twig";
    mes "10 Pieces of Baphomet Card";
    mes "10 Pieces of Biotite";
    next;
    mes "and 1 Emblem of the Sun God";
    mes "Do you have the items that I need?";
    menu "Yes",-,No",L_ayaw;
    next;
    mes "[ Evil Baphomet ]";
    mes "Are the items ready? Let me check.";
    next;
    if(countitem(923) < 300 || countitem(7018) < 20 || countitem(7297) < 10 || countitem(4147) < 10 || countitem(7806) < 1) goto koolang;
    if(countitem(923) >= 300 || countitem(7018) >= 20 || countitem(7297) >= 10 || countitem(4147) >= 10 || countitem(7806) >= 1) goto kontinueq;
    close;
    L_ayaw:
    mes "[ Evil Baphomet ]";
    mes "Don't waste my time or I'll kill you";
    close;
    koolang:
    mes "[ Evil Baphomet ]";
    mes "You don't have the complete items needed";
    close;
    kontinueq:
    mes "[ Evil Baphomet ]";
    mes "Good!! Now here's the horn!!";
    delitem 923,300;
    delitem 7018,20;
    delitem 7297,10;
    delitem 4147,10;
    delitem 7806,1;
    getitem 26027,1;
    next;
    mes "[ Evil Baphomet ]";
    mes "Use my power wisely!!";
    announce "Wow! "+strcharinfo(0)+" has just acquired the Evil Baphomet Horns.",8;
    close;
    }
    

     

     
     
     
     
×
×
  • Create New...