📄 char_base.h
字号:
}CHAR_WORKDATAINT;
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);
#else
INLINE 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_MAXEXP
INLINE int CHAR_ChangeExp( int charaindex );
INLINE int CHAR_HandleExp( int charaindex );
#endif
// ride Pet table
typedef struct tagtagRidePetTable
{
int rideNo;
int charNo;
int petNo;
int petId;
} tagRidePetTable;
// CoolFish: Family Member Kind 2001/8/28
typedef enum
{
FMMEMBER_NONE = -1,
FMMEMBER_MEMBER = 1,
FMMEMBER_APPLY,
FMMEMBER_LEADER,
FMMEMBER_ELDER,
} CHAR_FM_MEMBERKIND;
// shan 2002/01/10
typedef 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_I
void 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_RIDE
typedef struct {
int fmfloor;
int ride[3];
}tagFmLeaderRide;
#endif
#ifdef _FM_LEADER_RIDE
int CHAR_FmLeaderRide(int meindex,int pet);
#endif
typedef 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 );
#else
int RIDEPET_getPETindex( int PetNo, unsigned int learnCode);
#endif
int RIDEPET_getRIDEno( int index, int ti);
#endif
#ifdef _TYPE_TOXICATION
BOOL CHAR_CanCureFlg( int charaindex, char *arg);
#endif
BOOL 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_SEPARATEDATA
void CHAR_showTempInt( int index);
BOOL CHAR_InitCharTempNum( Char* ch );
void CHAR_EndCharTempNum( void);
void CHAR_getDefaultCharTempNum( Char* ch );
#endif
#ifdef _RIDE_CF
int CHAR_Ride_CF_init();
#endif
void LodBadPetString( char *data, char *err, int ti);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -