📄 char_base.h.bak
字号:
enum{ WORKFLG_DEBUGMODE = ( 1 << 0 ), WORKFLG_MICMODE = ( 2 << 0 ),};typedef enum{ CHAR_INITFUNC, CHAR_FIRSTFUNCTION = CHAR_INITFUNC, CHAR_WALKPREFUNC, CHAR_WALKPOSTFUNC, CHAR_PREOVERFUNC, CHAR_POSTOVERFUNC, CHAR_WATCHFUNC, CHAR_LOOPFUNC, CHAR_DYINGFUNC, CHAR_TALKEDFUNC, CHAR_PREATTACKEDFUNC, CHAR_POSTATTACKEDFUNC, CHAR_OFFFUNC, CHAR_LOOKEDFUNC, CHAR_ITEMPUTFUNC, CHAR_SPECIALTALKEDFUNC, CHAR_WINDOWTALKEDFUNC,#ifdef _USER_CHARLOOPS CHAR_LOOPFUNCTEMP1, CHAR_LOOPFUNCTEMP2, CHAR_BATTLEPROPERTY,#endif CHAR_LASTFUNCTION, CHAR_FUNCTABLENUM = CHAR_LASTFUNCTION,}CHAR_FUNCTABLE;typedef enum{ CHAR_WORKWALKARRAY, CHAR_NPCWORKCHAR1, CHAR_NPCWORKCHAR2, CHAR_NPCWORKCHAR3, CHAR_NPCWORKCHAR4, CHAR_NPCWORKCHAR5, CHAR_NPCWORKCHAR6, CHAR_WORKDATACHARNUM, CHAR_WORKBATTLE_TACTICSOPTION = CHAR_NPCWORKCHAR1,#ifdef _BATTLENPC_WARP_PLAYER CHAR_WORKBATTLE_ACT_CONDITION = CHAR_NPCWORKCHAR2,#endif CHAR_WORKDOORPASSWD = CHAR_NPCWORKCHAR1, CHAR_WORKDOORNAME = CHAR_NPCWORKCHAR2, CHAR_WORKDOORGOLDLIMIT = CHAR_NPCWORKCHAR3, CHAR_WORKDOORWEEK = CHAR_NPCWORKCHAR4, CHAR_WORKDOORHOUR = CHAR_NPCWORKCHAR5, CHAR_WORKDOORMINUTE = CHAR_NPCWORKCHAR6, CHAR_WORKDOORTITLE = CHAR_NPCWORKCHAR6, CHAR_WORKDOORMANDOORNAME = CHAR_NPCWORKCHAR1, CHAR_TIME1, CHAR_TIME2 = CHAR_NPCWORKCHAR6, }CHAR_WORKDATACHAR;typedef enum{ CHAR_IMAGETYPE_GIRL, CHAR_IMAGETYPE_BOY, CHAR_IMAGETYPE_CHILDBOY, CHAR_IMAGETYPE_CHILDGIRL, CHAR_IMAGETYPE_MAN, CHAR_IMAGETYPE_WOMAN, CHAR_IMAGETYPE_OLDMAN, CHAR_IMAGETYPE_DOG, CHAR_IMAGETYPENUM}CHAR_ImageType;#define CHAR_P_STRING_HP ( 1 << 1 ) // 0x00000002#define CHAR_P_STRING_MAXHP ( 1 << 2 ) // 0x00000004#define CHAR_P_STRING_MP ( 1 << 3 ) // 0x00000008#define CHAR_P_STRING_MAXMP ( 1 << 4 ) // 0x00000010#define CHAR_P_STRING_VITAL ( 1 << 5 )#define CHAR_P_STRING_STR ( 1 << 6 )#define CHAR_P_STRING_TOUGH ( 1 << 7 )#define CHAR_P_STRING_DEX ( 1 << 8 )#define CHAR_P_STRING_EXP ( 1 << 9 )#define CHAR_P_STRING_NEXTEXP ( 1 << 10 )#define CHAR_P_STRING_LV ( 1 << 11 )#define CHAR_P_STRING_ATK ( 1 << 12 )#define CHAR_P_STRING_DEF ( 1 << 13 )#define CHAR_P_STRING_QUICK ( 1 << 14 )#define CHAR_P_STRING_CHARM ( 1 << 15 )#define CHAR_P_STRING_LUCK ( 1 << 16 )#define CHAR_P_STRING_EARTH ( 1 << 17 )#define CHAR_P_STRING_WATER ( 1 << 18 )#define CHAR_P_STRING_FIRE ( 1 << 19 )#define CHAR_P_STRING_WIND ( 1 << 20 )#define CHAR_P_STRING_GOLD ( 1 << 21 )#define CHAR_P_STRING_TITLE ( 1 << 22 )#define CHAR_P_STRING_DUELPOINT ( 1 << 23 )#define CHAR_P_STRING_TRANSMIGRATION ( 1 << 24 )#define CHAR_P_STRING_NAME ( 1 << 25 )#define CHAR_P_STRING_OWNTITLE ( 1 << 26 )#define CHAR_P_STRING_RIDEPET ( 1 << 27 ) // 0x08000000#define CHAR_P_STRING_LEARNRIDE ( 1 << 28 ) // 0x10000000#define CHAR_P_STRING_BASEBASEIMAGENUMBER ( 1 << 29 ) // 0x20000000#define CHAR_P_STRING_SKYWALKER ( 1 << 30 ) // 0x40000000#define CHAR_P_STRING_DEBUGMODE ( 1 << 31 ) // 0x80000000#define CHAR_N_STRING_OBJINDEX ( 1 << 1 )#define CHAR_N_STRING_LV ( 1 << 2 )#define CHAR_N_STRING_MAXHP ( 1 << 3 )#define CHAR_N_STRING_HP ( 1 << 4 )#define CHAR_N_STRING_MP ( 1 << 5 )#define CHAR_N_STRING_NAME ( 1 << 6 )#define CHAR_K_STRING_BASEIMAGENUMBER ( 1 << 1 )#define CHAR_K_STRING_HP ( 1 << 2 )#define CHAR_K_STRING_MAXHP ( 1 << 3 )#define CHAR_K_STRING_MP ( 1 << 4 )#define CHAR_K_STRING_MAXMP ( 1 << 5 )#define CHAR_K_STRING_EXP ( 1 << 6 )#define CHAR_K_STRING_NEXTEXP ( 1 << 7 )#define CHAR_K_STRING_LV ( 1 << 8 )#define CHAR_K_STRING_ATK ( 1 << 9 )#define CHAR_K_STRING_DEF ( 1 << 10 )#define CHAR_K_STRING_QUICK ( 1 << 11 )#define CHAR_K_STRING_AI ( 1 << 12 )#define CHAR_K_STRING_EARTH ( 1 << 13 )#define CHAR_K_STRING_WATER ( 1 << 14 )#define CHAR_K_STRING_FIRE ( 1 << 15 )#define CHAR_K_STRING_WIND ( 1 << 16 )#define CHAR_K_STRING_SLOT ( 1 << 17 )#define CHAR_K_STRING_CHANGENAMEFLG ( 1 << 18 )#define CHAR_K_STRING_NAME ( 1 << 19 )#define CHAR_K_STRING_USERPETNAME ( 1 << 20 )typedef union { int indexOfPet[CHAR_MAXPETHAVE]; int indexOfPetskill[CHAR_MAXPETSKILLHAVE];}CHAR_UNIONTABLE;typedef struct tagChar{ BOOL use; int data[CHAR_DATAINTNUM]; STRING64 string[CHAR_DATACHARNUM]; char flg[(CHAR_FLGNUM%(sizeof(char)*8)) ? (CHAR_FLGNUM/(sizeof(char)*8))+1 : (CHAR_FLGNUM/(sizeof(char)*8))]; int indexOfExistItems[CHAR_MAXITEMHAVE]; int indexOfExistPoolItems[CHAR_MAXPOOLITEMHAVE]; CHAR_HaveSkill haveSkill[CHAR_SKILLMAXHAVE]; int indexOfHaveTitle[CHAR_TITLEMAXHAVE]; ADDRESSBOOK_entry addressBook[ADDRESSBOOK_MAX]; CHAR_UNIONTABLE unionTable; int indexOfPoolPet[CHAR_MAXPOOLPETHAVE]; STRING32 charfunctable[CHAR_FUNCTABLENUM]; int workint[CHAR_WORKDATAINTNUM]; STRING64 workchar[CHAR_WORKDATACHARNUM]; int CharMakeSequenceNumber; void* functable[CHAR_FUNCTABLENUM];}Char;#define CHAR_CHECKINDEX( index) _CHAR_CHECKINDEX( __FILE__, __LINE__, index)INLINE BOOL _CHAR_CHECKINDEX( char *file, int line, int index);#define CHAR_CHECKITEMINDEX( charaindex, iindex) _CHAR_CHECKITEMINDEX( __FILE__, __LINE__, charaindex, iindex)INLINE BOOL _CHAR_CHECKITEMINDEX( char *file, int line, int charaindex, int iindex );#define CHAR_CHECKPETINDEX( petindex) _CHAR_CHECKPETINDEX( __FILE__, __LINE__, petindex )INLINE BOOL _CHAR_CHECKPETINDEX( char *file, int line, int petindex );#define CHAR_CHECKPOOLPETINDEX( petindex) _CHAR_CHECKPOOLPETINDEX( __FILE__, __LINE__, petindex )INLINE BOOL _CHAR_CHECKPOOLPETINDEX( char *file, int line, int petindex );#define CHAR_CHECKPETSKILLINDEX( havepetskillindex) _CHAR_CHECKPETSKILLINDEX( __FILE__, __LINE__, havepetskillindex)INLINE BOOL _CHAR_CHECKPETSKILLINDEX( char *file, int line, int havepetskillindex );INLINE int CHAR_getInt( int index , CHAR_DATAINT element);#define CHAR_setInt( index , element, data) _CHAR_setInt( __FILE__, __LINE__, index , element, data)INLINE int _CHAR_setInt( char *file, int line, int index ,CHAR_DATAINT element, int data);#ifdef _FIX_SETWORKINT#define CHAR_getWorkInt( index , element) _CHAR_getWorkInt( __FILE__, __LINE__, index , element)INLINE int _CHAR_getWorkInt( char *file, int line, int index ,CHAR_WORKDATAINT element);#define CHAR_setWorkInt( index, element, data) _CHAR_setWorkInt( __FILE__, __LINE__, index , element, data)INLINE int _CHAR_setWorkInt( char *file, int line, int index ,CHAR_WORKDATAINT element, int data);#elseINLINE int CHAR_setWorkInt( int index ,CHAR_WORKDATAINT element, int data);#endif#define CHAR_getChar( index, elem) _CHAR_getChar( __FILE__, __LINE__, index, elem)INLINE char* _CHAR_getChar( char *file, int line, int index ,CHAR_DATACHAR element );#define CHAR_setChar( index, elem, n) _CHAR_setChar( __FILE__, __LINE__, index, elem, n)INLINE BOOL _CHAR_setChar( char *file, int line, int index ,CHAR_DATACHAR element, char* new );#define CHAR_getFlg( index, elem) _CHAR_getFlg( __FILE__, __LINE__, index, elem)INLINE BOOL _CHAR_getFlg( char *file, int line, int index ,CHAR_DATAFLG element );#define CHAR_setFlg( index, elem, n) _CHAR_setFlg( __FILE__, __LINE__, index, elem, n)INLINE BOOL _CHAR_setFlg( char *file, int line, int index , CHAR_DATACHAR element, int newdata );#define CHAR_getWorkChar( index, elem) _CHAR_getWorkChar( __FILE__, __LINE__, index, elem)INLINE char * _CHAR_getWorkChar( char *file, int line, int index, CHAR_WORKDATACHAR element );#define CHAR_setWorkChar( index, elem, n) _CHAR_setWorkChar( __FILE__, __LINE__, index, elem, n)INLINE BOOL _CHAR_setWorkChar( char *file, int line, int index, CHAR_WORKDATACHAR element, char * new);#define CHAR_getItemIndex( index, iindex) _CHAR_getItemIndex( __FILE__, __LINE__, index, iindex)INLINE int _CHAR_getItemIndex( char *file, int line, int charaindex, int ti);#define CHAR_setItemIndex( index, iindex,id) _CHAR_setItemIndex( __FILE__, __LINE__, index, iindex, id)INLINE int _CHAR_setItemIndex( char *file, int line, int index ,int iindex,int id );#define CHAR_getPoolItemIndex( index, iindex) _CHAR_getPoolItemIndex( __FILE__, __LINE__, index, iindex)INLINE int _CHAR_getPoolItemIndex( char *file, int line, int index, int iindex);#define CHAR_setPoolItemIndex( index, iindex,id) _CHAR_setPoolItemIndex( __FILE__, __LINE__, index, iindex, id)INLINE int _CHAR_setPoolItemIndex( char *file, int line, int index ,int iindex,int id );INLINE BOOL CHAR_setAddressbookEntry( int index , int aindex , ADDRESSBOOK_entry *a );INLINE ADDRESSBOOK_entry* CHAR_getAddressbookEntry( int index , int aindex);INLINE Char* CHAR_getCharPointer( int index );INLINE int CHAR_getCharNum( void );INLINE int CHAR_getPlayerMaxNum( void );INLINE int CHAR_getPetMaxNum( void );INLINE int CHAR_getOthersMaxNum( void );INLINE BOOL CHAR_getCharUse( int index );INLINE CHAR_HaveSkill* CHAR_getCharHaveSkill( int index,int sindex );INLINE int CHAR_getCharHaveTitle( int index,int tindex );INLINE int CHAR_setCharHaveTitle( int charaindex,int tindex, int new );INLINE int CHAR_getCharPet( int charaindex,int petindex );INLINE int CHAR_setCharPet( int charaindex,int petindex, int new );INLINE int CHAR_getCharPoolPet( int charaindex,int petindex );INLINE int CHAR_setCharPoolPet( int charaindex,int petindex, int new );int CHAR_getCharPetElement( int charaindex );int CHAR_getCharPoolPetElement( int charaindex );int CHAR_getCharPoolItemIndexElement( int charaindex );int CHAR_getEmptyCharPoolItemIndexNum( int charaindex);#define CHAR_getIntPSkill( index, skillti, ti) _CHAR_getIntPSkill( __FILE__, __LINE__, index, skillti, ti)INLINE int _CHAR_getIntPSkill( char *file, int line, int index, int skillti, SKILL_DATAINT ti);#define CHAR_setIntPSkill( index, skillti, ti, data) _CHAR_setIntPSkill( __FILE__, __LINE__, index, skillti, ti, data)INLINE void _CHAR_setIntPSkill( char *file, int line, int index, int skillti, SKILL_DATAINT ti, int data);extern Char *CHAR_chara;INLINE int CHAR_getCharMakeSequenceNumber( int charaindex );void CHAR_constructFunctable( int charaindex );void* CHAR_getFunctionPointer( int charaindex, int functype );BOOL CHAR_initCharArray( int pnum, int petnum,int onum );BOOL CHAR_endCharArray( void );int CHAR_initCharOneArray( Char* ch );void CHAR_endCharOneArray( int index );void CHAR_removeHaveItem( Char* ch );void CHAR_endCharData( Char* ch );char* CHAR_makeStringFromCharData( Char* one );char* CHAR_makeStringFromCharIndex( int index );BOOL CHAR_makeCharFromStringToArg( char* data, Char* one);int CHAR_makePetFromStringToArg( char *src, Char *ch, int ti);char *CHAR_makePetStringFromPetIndex( int petindex);#define CHAR_getPetSkillElement( petindex) _CHAR_getPetSkillElement( __FILE__, __LINE__, petindex)int _CHAR_getPetSkillElement( char *file, int line, int petindex );#define CHAR_setPetSkill( petindex, havepetskillindex, n) _CHAR_setPetSkill( __FILE__, __LINE__, petindex, havepetskillindex, n)INLINE int _CHAR_setPetSkill( char *file, int line, int petindex,int havepetskillindex, int new );#define CHAR_getPetSkill( petindex, havepetskillindex) _CHAR_getPetSkill( __FILE__, __LINE__, petindex, havepetskillindex)INLINE int _CHAR_getPetSkill( char *file, int line, int petindex,int havepetskillindex );#define SETFLG(a,b,c,d,e,f,g,h) (((a)<<0)+((b)<<1)+((c)<<2)+((d)<<3)+((e)<<4)+((f)<<5)+((g)<<6)+((h)<<7))INLINE int CHAR_AddMaxExp( int charaindex, int addexp);INLINE int CHAR_setMaxExpFromLevel( int charaindex, int level);INLINE int CHAR_setMaxExp( int charaindex, unsigned long int Setexp);#ifdef _NEWOPEN_MAXEXPINLINE int CHAR_ChangeExp( int charaindex );INLINE int CHAR_HandleExp( int charaindex );#endif// ride Pet tabletypedef struct tagtagRidePetTable{ int rideNo; int charNo; int petNo; int petId; } tagRidePetTable;// CoolFish: Family Member Kind 2001/8/28typedef enum{ FMMEMBER_NONE = -1, FMMEMBER_MEMBER = 1, FMMEMBER_APPLY, FMMEMBER_LEADER, FMMEMBER_ELDER,} CHAR_FM_MEMBERKIND;// shan 2002/01/10typedef enum{ PET_STAT_NONE = 0, PET_STAT_SELECT, PET_STAT_MAIL = 4, } CHAR_PET_STAT;#ifdef _PERSONAL_FAME // Arminius: 家族个人声望void CHAR_earnFame(int index, int fame);#endif// CoolFish: 2001/10/11#ifdef _UNIQUE_P_Ivoid CHAR_setPetUniCode(int petindex);void ITEM_setItemUniCode(int itemindex);void Check_P_I_UniCode(int charindex);#endif// Arminius 12.15 判断是否是男士int IsMale(int charindex);// Arminius 12.15 判断是否是女士int IsFemale(int charindex);#ifdef _NEW_RIDEPETS#define RIDE_PET0 1#define RIDE_PET1 ( 1 << 1 )#define RIDE_PET2 ( 1 << 2 )#define RIDE_PET3 ( 1 << 3 )#define RIDE_PET4 ( 1 << 4 )#define RIDE_PET5 ( 1 << 5 )#define RIDE_PET6 ( 1 << 6 )#define RIDE_PET7 ( 1 << 7 )#define RIDE_PET8 ( 1 << 8 )#define RIDE_PET9 ( 1 << 9 )#define RIDE_PET10 ( 1 << 11 )#define RIDE_PET11 ( 1 << 10 )#define RIDE_PET12 ( 1 << 12 )#define RIDE_PET13 ( 1 << 13 )#define RIDE_PET14 ( 1 << 14 )#ifdef _RIDE_CF#define RIDE_PET15 ( 1 << 15 )#define RIDE_PET16 ( 1 << 16 )#define RIDE_PET17 ( 1 << 17 )#define RIDE_PET19 ( 1 << 19 )#define RIDE_PET18 ( 1 << 18 )#define RIDE_PET20 ( 1 << 20 )#define RIDE_PET21 ( 1 << 21 )#define RIDE_PET22 ( 1 << 22 )#define RIDE_PET23 ( 1 << 23 )#define RIDE_PET24 ( 1 << 24 )#define RIDE_PET25 ( 1 << 25 )#define RIDE_PET26 ( 1 << 26 )#define RIDE_PET27 ( 1 << 27 )#define RIDE_PET28 ( 1 << 28 )#define RIDE_PET29 ( 1 << 29 )#define RIDE_PET30 ( 1 << 30 )#define RIDE_PET31 ( 1 << 31 )#define RIDE_TPYE1 1#define RIDE_TPYE2 ( 1 << 1 )#define RIDE_PET_ALL ( 0xFFFFFFFF )#define RIDE_TPYE_ALL ( 0xFFFFFFFF )#define MAXNOINDEX 32*2#else#define RIDE_PET_ALL ( RIDE_PET0|RIDE_PET1|RIDE_PET2|RIDE_PET3|RIDE_PET4|RIDE_PET5|RIDE_PET6|RIDE_PET7|RIDE_PET8|RIDE_PET9|RIDE_PET10|RIDE_PET11 )#define MAXNOINDEX 15#endif#ifdef _PET_BEATITUDE#define BEATITUDE_VITAL ( 1 << 0 )#define BEATITUDE_STR ( 1 << 1 )#define BEATITUDE_TOUGH ( 1 << 2 )#define BEATITUDE_DEX ( 1 << 3 )#endif#ifdef _FM_LEADER_RIDEtypedef struct { int fmfloor; int ride[3];}tagFmLeaderRide;#endif#ifdef _FM_LEADER_RIDEint CHAR_FmLeaderRide(int meindex,int pet);#endiftypedef struct { int petNo;#ifdef _RIDE_CF int petNo1;#endif unsigned int learnCode;}tagRideCodeMode;typedef struct { int RideNo[MAXNOINDEX]; int flg;}tagRideNoList;typedef struct { int charNo; int Noindex; int sex;}tagRidePetList;int RIDEPET_getNOindex( int baseNo);#ifdef _RIDE_CF int RIDEPET_getPETindex( int PetNo, unsigned int learnCode, int unsigned learnCode1 );int RIDEPET_getPETindex64( int PetNo, unsigned int learnCode, unsigned int learnCode1 );#elseint RIDEPET_getPETindex( int PetNo, unsigned int learnCode);#endifint RIDEPET_getRIDEno( int index, int ti);#endif#ifdef _TYPE_TOXICATIONBOOL CHAR_CanCureFlg( int charaindex, char *arg);#endifBOOL CHAR_getCharOnArrayPercentage( int mode, int *max, int *min, int *cnt);#define CHAR_DelItemMess( index, ti, flg) _CHAR_DelItem( __FILE__, __LINE__, index, ti, 1, flg)#define CHAR_DelItem( index, ti) _CHAR_DelItem( __FILE__, __LINE__, index, ti, 1, 1)#define CHAR_DelPileItemMess( index, ti, num, flg) _CHAR_DelItem( __FILE__, __LINE__, index, ti, num, flg)#define CHAR_AddPileItem( index, itemindex) _CHAR_AddPileItem( __FILE__, __LINE__, index, itemindex)INLINE int _CHAR_AddPileItem( char *file, int line, int charaindex, int itemindex);INLINE int _CHAR_DelItem( char *file, int line, int charaindex, int ti, int num, int flg);#define CHAR_AddGold( index, ti) _CHAR_AddGold( __FILE__, __LINE__, index, ti)INLINE int _CHAR_AddGold( char *file, int line, int charaindex, int gold);#define CHAR_DelGold( index, ti) _CHAR_DelGold( __FILE__, __LINE__, index, ti)INLINE int _CHAR_DelGold( char *file, int line, int charaindex, int gold);int CHAR_getMaxHaveGold( int charaindex);#ifdef _NPC_SEPARATEDATAvoid CHAR_showTempInt( int index);BOOL CHAR_InitCharTempNum( Char* ch );void CHAR_EndCharTempNum( void);void CHAR_getDefaultCharTempNum( Char* ch );#endif#ifdef _RIDE_CFint CHAR_Ride_CF_init();#endifvoid LodBadPetString( char *data, char *err, int ti);#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -