📄 char_data.c
字号:
#include "version.h"#include <string.h>#include <math.h>#include "readmap.h"#include "common.h"#include "util.h"#include "anim_tbl.h"#include "battle.h"#include "char.h"#include "char_data.h"#include "buf.h"#include "item.h"#include "log.h"#include "pet.h"#include "enemy.h"#ifdef _PERSONAL_FAME // Arminius: 家族个人声望#include "char_base.h"#include "configfile.h"#endif#include "defaultPlayer.h"// CoolFish: Family 2001/7/28#include "family.h"#include "saacproto_cli.h"#ifdef _PET_LIMITLEVELvoid CHAR_CheckPetDoLimitlevel( int petindex , int toindex, int level); #endiftypedef struct tagdefaultCharcterGet{ int imagenumber; Char* initchardata; LevelUpPattern* lvpattern; CHAR_ImageType imgtype;}defaultCharacterGet;static defaultCharacterGet CHAR_defaultCharacterGet[]={ /* CHAR_DEFAULTPLAYER *///阂间裆ㄠ {SPR_001em,&player,&lvplayer00,CHAR_IMAGETYPE_CHILDBOY}, {SPR_002em,&player,&lvplayer00,CHAR_IMAGETYPE_CHILDBOY}, {SPR_003em,&player,&lvplayer00,CHAR_IMAGETYPE_CHILDBOY}, {SPR_004em,&player,&lvplayer00,CHAR_IMAGETYPE_CHILDBOY},//剂 ㄠ {SPR_011em,&player,&lvplayer00,CHAR_IMAGETYPE_BOY}, {SPR_012em,&player,&lvplayer00,CHAR_IMAGETYPE_BOY}, {SPR_013em,&player,&lvplayer00,CHAR_IMAGETYPE_BOY}, {SPR_014em,&player,&lvplayer00,CHAR_IMAGETYPE_BOY},//剂 ㄡ {SPR_021em,&player,&lvplayer00,CHAR_IMAGETYPE_BOY}, {SPR_022em,&player,&lvplayer00,CHAR_IMAGETYPE_BOY}, {SPR_023em,&player,&lvplayer00,CHAR_IMAGETYPE_BOY}, {SPR_024em,&player,&lvplayer00,CHAR_IMAGETYPE_BOY},//剂 ㄢ {SPR_031em,&player,&lvplayer00,CHAR_IMAGETYPE_BOY}, {SPR_032em,&player,&lvplayer00,CHAR_IMAGETYPE_BOY}, {SPR_033em,&player,&lvplayer00,CHAR_IMAGETYPE_BOY}, {SPR_034em,&player,&lvplayer00,CHAR_IMAGETYPE_BOY},//敛 ㄠ {SPR_041em,&player,&lvplayer00,CHAR_IMAGETYPE_MAN}, {SPR_042em,&player,&lvplayer00,CHAR_IMAGETYPE_MAN}, {SPR_043em,&player,&lvplayer00,CHAR_IMAGETYPE_MAN}, {SPR_044em,&player,&lvplayer00,CHAR_IMAGETYPE_MAN},//敛 ㄡ {SPR_051em,&player,&lvplayer00,CHAR_IMAGETYPE_MAN}, {SPR_052em,&player,&lvplayer00,CHAR_IMAGETYPE_MAN}, {SPR_053em,&player,&lvplayer00,CHAR_IMAGETYPE_MAN}, {SPR_054em,&player,&lvplayer00,CHAR_IMAGETYPE_MAN},//阂间辉ㄠ {SPR_061em,&player,&lvplayer00,CHAR_IMAGETYPE_CHILDGIRL}, {SPR_062em,&player,&lvplayer00,CHAR_IMAGETYPE_CHILDGIRL}, {SPR_063em,&player,&lvplayer00,CHAR_IMAGETYPE_CHILDGIRL}, {SPR_064em,&player,&lvplayer00,CHAR_IMAGETYPE_CHILDGIRL},//剂辉ㄠ {SPR_071em,&player,&lvplayer00,CHAR_IMAGETYPE_GIRL}, {SPR_072em,&player,&lvplayer00,CHAR_IMAGETYPE_GIRL}, {SPR_073em,&player,&lvplayer00,CHAR_IMAGETYPE_GIRL}, {SPR_074em,&player,&lvplayer00,CHAR_IMAGETYPE_GIRL},//剂辉ㄡ {SPR_081em,&player,&lvplayer00,CHAR_IMAGETYPE_GIRL}, {SPR_082em,&player,&lvplayer00,CHAR_IMAGETYPE_GIRL}, {SPR_083em,&player,&lvplayer00,CHAR_IMAGETYPE_GIRL}, {SPR_084em,&player,&lvplayer00,CHAR_IMAGETYPE_GIRL},//剂辉ㄢ {SPR_091em,&player,&lvplayer00,CHAR_IMAGETYPE_GIRL}, {SPR_092em,&player,&lvplayer00,CHAR_IMAGETYPE_GIRL}, {SPR_093em,&player,&lvplayer00,CHAR_IMAGETYPE_GIRL}, {SPR_094em,&player,&lvplayer00,CHAR_IMAGETYPE_GIRL},//辉岭ㄠ {SPR_101em,&player,&lvplayer00,CHAR_IMAGETYPE_WOMAN}, {SPR_102em,&player,&lvplayer00,CHAR_IMAGETYPE_WOMAN}, {SPR_103em,&player,&lvplayer00,CHAR_IMAGETYPE_WOMAN}, {SPR_104em,&player,&lvplayer00,CHAR_IMAGETYPE_WOMAN},//辉岭ㄡ {SPR_111em,&player,&lvplayer00,CHAR_IMAGETYPE_WOMAN}, {SPR_112em,&player,&lvplayer00,CHAR_IMAGETYPE_WOMAN}, {SPR_113em,&player,&lvplayer00,CHAR_IMAGETYPE_WOMAN}, {SPR_114em,&player,&lvplayer00,CHAR_IMAGETYPE_WOMAN}, {SPR_pet001,&player,&lvplayer00,CHAR_IMAGETYPE_DOG}, {SPR_pet002,&player,&lvplayer00,CHAR_IMAGETYPE_DOG}, {SPR_pet003,&player,&lvplayer00,CHAR_IMAGETYPE_DOG}, {SPR_pet004,&player,&lvplayer00,CHAR_IMAGETYPE_DOG}, {SPR_pet011,&player,&lvplayer00,CHAR_IMAGETYPE_DOG},};BOOL CHAR_getDefaultChar( Char* nc , int imagenumber ){ int i, j; int defcharaindex; Char* defaultchar; defaultchar = CHAR_defaultCharacterGet[arraysizeof(CHAR_defaultCharacterGet) - 1].initchardata; memset( nc,0,sizeof(Char) ); defcharaindex = 0; for( i = 0 ; i < arraysizeof( CHAR_defaultCharacterGet ) ; i ++ ){ if( CHAR_defaultCharacterGet[i].imagenumber == imagenumber ){ defaultchar = CHAR_defaultCharacterGet[i].initchardata; defcharaindex = i; break; } } nc->data[CHAR_IMAGETYPE] = CHAR_defaultCharacterGet[defcharaindex].imgtype; nc->use = TRUE; for( j = 0 ; j < CHAR_DATAINTNUM ; j ++ ) nc->data[j] = defaultchar->data[j]; for( j = 0 ; j < arraysizeof( nc->flg ) ; j ++ ) nc->flg[j] = defaultchar->flg[j]; for( j = 0 ; j < CHAR_DATACHARNUM ; j ++ ) nc->string[j].string[0] = '\0'; for( j = 0 ; j < CHAR_MAXITEMHAVE ; j ++ ) nc->indexOfExistItems[j] = -1; for( j = 0 ; j < CHAR_MAXPOOLITEMHAVE ; j ++ ) nc->indexOfExistPoolItems[j] = -1; for( j = 0 ; j < CHAR_MAXPETSKILLHAVE ; j ++ ) nc->unionTable.indexOfPetskill[j] = -1; for( j = 0 ; j < CHAR_MAXPOOLPETHAVE ; j ++ ) nc->indexOfPoolPet[j] = -1; for( j = 0 ; j < CHAR_SKILLMAXHAVE ; j ++ ) nc->haveSkill[j].use = FALSE; for( j = 0 ; j < CHAR_TITLEMAXHAVE ; j ++ ) nc->indexOfHaveTitle[j] = -1; for( j=0 ; j<ADDRESSBOOK_MAX ;j++ ) memset( &nc->addressBook[j],0,sizeof(nc->addressBook[j]) ); for( j = 0 ; j < CHAR_WORKDATAINTNUM ; j ++ ) nc->workint[j] = 0; for( j = 0 ; j < CHAR_WORKDATACHARNUM ; j ++ ) nc->workchar[j].string[0] = '\0'; nc->workint[CHAR_WORKFD] = -1; return TRUE;}static int CHAR_playerImageNumber[]={ /* CHAR_DEFAULTPLAYER */ SPR_001em,SPR_002em,SPR_003em,SPR_004em,SPR_011em,SPR_012em, SPR_013em,SPR_014em,SPR_021em,SPR_022em,SPR_023em,SPR_024em, SPR_031em,SPR_032em,SPR_033em,SPR_034em,SPR_041em,SPR_042em, SPR_043em,SPR_044em,SPR_051em,SPR_052em,SPR_053em,SPR_054em, SPR_061em,SPR_062em,SPR_063em,SPR_064em,SPR_071em,SPR_072em, SPR_073em,SPR_074em,SPR_081em,SPR_082em,SPR_083em,SPR_084em, SPR_091em,SPR_092em,SPR_093em,SPR_094em,SPR_101em,SPR_102em, SPR_103em,SPR_104em,SPR_111em,SPR_112em,SPR_113em,SPR_114em};BOOL CHAR_checkPlayerImageNumber( int imagenumber){ int i; for( i = 0; i < arraysizeof( CHAR_playerImageNumber); i ++ ) { if( imagenumber == CHAR_playerImageNumber[i] ) break; } if( i == arraysizeof( CHAR_playerImageNumber)) return FALSE; else return TRUE;}/*------------------------------------------------------------ * 涌 飓 寞及民尼永弁 * * 涌 飓 寞反动票及白巧□穴永玄匹瑁引匀化中月 * number = 窒谛 井 * CG_CHR_MAKE_FACE + (number*100) + ( 缙 number * 25) + ( 寞 * 5 ) + 轼 寞 * ------------------------------------------------------------*/BOOL CHAR_checkFaceImageNumber( int imagenumber, int faceimagenumber){ int image = imagenumber - SPR_001em; int number; int color; number = (faceimagenumber - CG_CHR_MAKE_FACE)/ 100*20; color = ((faceimagenumber - CG_CHR_MAKE_FACE)% 100) / 25*5; if( image != number + color ) return FALSE; return TRUE;}// 平乓仿 飓 □皮伙[ㄠ 丐凶曰隶 ㄤ潘 int CHAR_eqimagetbl[][5]={ // 允匹 {{{{ 轺徇 键 菰 { SPR_001em,SPR_001ax,SPR_001cl,SPR_001sp,SPR_001bw }, { SPR_002em,SPR_002ax,SPR_002cl,SPR_002sp,SPR_002bw }, { SPR_003em,SPR_003ax,SPR_003cl,SPR_003sp,SPR_003bw }, { SPR_004em,SPR_004ax,SPR_004cl,SPR_004sp,SPR_004bw }, { SPR_011em,SPR_011ax,SPR_011cl,SPR_011sp,SPR_011bw }, { SPR_012em,SPR_012ax,SPR_012cl,SPR_012sp,SPR_012bw }, { SPR_013em,SPR_013ax,SPR_013cl,SPR_013sp,SPR_013bw }, { SPR_014em,SPR_014ax,SPR_014cl,SPR_014sp,SPR_014bw }, { SPR_021em,SPR_021ax,SPR_021cl,SPR_021sp,SPR_021bw }, { SPR_022em,SPR_022ax,SPR_022cl,SPR_022sp,SPR_022bw }, { SPR_023em,SPR_023ax,SPR_023cl,SPR_023sp,SPR_023bw }, { SPR_024em,SPR_024ax,SPR_024cl,SPR_024sp,SPR_024bw }, { SPR_021em,SPR_021ax,SPR_021cl,SPR_021sp,SPR_021bw }, { SPR_031em,SPR_031ax,SPR_031cl,SPR_031sp,SPR_031bw }, { SPR_032em,SPR_032ax,SPR_032cl,SPR_032sp,SPR_032bw }, { SPR_033em,SPR_033ax,SPR_033cl,SPR_033sp,SPR_033bw }, { SPR_034em,SPR_034ax,SPR_034cl,SPR_034sp,SPR_034bw }, { SPR_041em,SPR_041ax,SPR_041cl,SPR_041sp,SPR_041bw }, { SPR_042em,SPR_042ax,SPR_042cl,SPR_042sp,SPR_042bw }, { SPR_043em,SPR_043ax,SPR_043cl,SPR_043sp,SPR_043bw }, { SPR_044em,SPR_044ax,SPR_044cl,SPR_044sp,SPR_044bw }, { SPR_051em,SPR_051ax,SPR_051cl,SPR_051sp,SPR_051bw }, { SPR_052em,SPR_052ax,SPR_052cl,SPR_052sp,SPR_052bw }, { SPR_053em,SPR_053ax,SPR_053cl,SPR_053sp,SPR_053bw }, { SPR_054em,SPR_054ax,SPR_054cl,SPR_054sp,SPR_054bw }, { SPR_061em,SPR_061ax,SPR_061cl,SPR_061sp,SPR_061bw }, { SPR_062em,SPR_062ax,SPR_062cl,SPR_062sp,SPR_062bw }, { SPR_063em,SPR_063ax,SPR_063cl,SPR_063sp,SPR_063bw }, { SPR_064em,SPR_064ax,SPR_064cl,SPR_064sp,SPR_064bw }, { SPR_071em,SPR_071ax,SPR_071cl,SPR_071sp,SPR_071bw }, { SPR_072em,SPR_072ax,SPR_072cl,SPR_072sp,SPR_072bw }, { SPR_073em,SPR_073ax,SPR_073cl,SPR_073sp,SPR_073bw }, { SPR_074em,SPR_074ax,SPR_074cl,SPR_074sp,SPR_074bw }, { SPR_081em,SPR_081ax,SPR_081cl,SPR_081sp,SPR_081bw }, { SPR_082em,SPR_082ax,SPR_082cl,SPR_082sp,SPR_082bw }, { SPR_083em,SPR_083ax,SPR_083cl,SPR_083sp,SPR_083bw }, { SPR_084em,SPR_084ax,SPR_084cl,SPR_084sp,SPR_084bw }, { SPR_091em,SPR_091ax,SPR_091cl,SPR_091sp,SPR_091bw }, { SPR_092em,SPR_092ax,SPR_092cl,SPR_092sp,SPR_092bw }, { SPR_093em,SPR_093ax,SPR_093cl,SPR_093sp,SPR_093bw }, { SPR_094em,SPR_094ax,SPR_094cl,SPR_094sp,SPR_094bw }, { SPR_101em,SPR_101ax,SPR_101cl,SPR_101sp,SPR_101bw }, { SPR_102em,SPR_102ax,SPR_102cl,SPR_102sp,SPR_102bw }, { SPR_103em,SPR_103ax,SPR_103cl,SPR_103sp,SPR_103bw }, { SPR_104em,SPR_104ax,SPR_104cl,SPR_104sp,SPR_104bw }, { SPR_111em,SPR_111ax,SPR_111cl,SPR_111sp,SPR_111bw }, { SPR_112em,SPR_112ax,SPR_112cl,SPR_112sp,SPR_112bw }, { SPR_113em,SPR_113ax,SPR_113cl,SPR_113sp,SPR_113bw }, { SPR_114em,SPR_114ax,SPR_114cl,SPR_114sp,SPR_114bw }, { SPR_091em,SPR_091ax,SPR_091cl,SPR_091sp,SPR_091bw }, { SPR_092em,SPR_092ax,SPR_092cl,SPR_092sp,SPR_092bw }, { SPR_pet001,SPR_pet001,SPR_pet001,SPR_pet001,SPR_pet001}, { SPR_pet002,SPR_pet002,SPR_pet002,SPR_pet002,SPR_pet002}, { SPR_pet003,SPR_pet003,SPR_pet003,SPR_pet003,SPR_pet003}, { SPR_pet004,SPR_pet004,SPR_pet004,SPR_pet004,SPR_pet004}, { SPR_pet011,SPR_pet011,SPR_pet011,SPR_pet011,SPR_pet011}, { SPR_121em,SPR_121ax,SPR_121cl,SPR_121sp,SPR_121bw }, { SPR_122em,SPR_122ax,SPR_122cl,SPR_122sp,SPR_122bw }, { SPR_131em,SPR_131ax,SPR_131cl,SPR_131sp,SPR_131bw }, { SPR_132em,SPR_132ax,SPR_132cl,SPR_132sp,SPR_132bw }, { SPR_133em,SPR_133ax,SPR_133cl,SPR_133sp,SPR_133bw }, { SPR_141em,SPR_141ax,SPR_141cl,SPR_141sp,SPR_141bw }, { SPR_142em,SPR_142ax,SPR_142cl,SPR_142sp,SPR_142bw }, { SPR_151em,SPR_151ax,SPR_151cl,SPR_151sp,SPR_151bw }, { SPR_152em,SPR_152ax,SPR_152cl,SPR_152sp,SPR_152bw }, { SPR_161em,SPR_161ax,SPR_161cl,SPR_161sp,SPR_161bw }, { SPR_162em,SPR_162ax,SPR_162cl,SPR_162sp,SPR_162bw },};/*------------------------------------------------------------ * 隶 午 飓 寞井日蕙仄中 飓 寞毛 月[ * 娄醒 * basebaseimagenumber int 葭卞卅月 飓 寞 * category ITEM_CATEGORY 失奶 丞及市 打伉 * 忒曰袄 * 蕙仄中 飓 寞[巨仿□及凛反}-1 ------------------------------------------------------------*/int CHAR_getNewImagenumberFromEquip( int basebaseimagenumber, ITEM_CATEGORY category ){ int i; /* ITEM_CATEGORY 民尼永弁 */ if( category < 0 || category > arraysizeof(CHAR_eqimagetbl[0]) ) return -1; for( i=0 ; i<arraysizeof(CHAR_eqimagetbl) ; i++ ){ if( CHAR_eqimagetbl[i][0] == basebaseimagenumber ) return CHAR_eqimagetbl[i][category]; } return -1;}/*------------------------------------------------------------ * 侬 井日 飓 寞毛 月[ * 娄醒 * string char* 侬 * 忒曰袄 * 巨仿□ -1 * 公木动陆分午弘仿白奴永弁 寞 ------------------------------------------------------------*/int CHAR_seekGraphicNumberFromString( char* string ){ int hashvalue; int i; int ret; /* 公及引引及醒侬分匀凶日公及引引忒允[ */ if( strtolchecknum( string, &ret,10,INT ) )return ret; return -1;}/*==================== 衬桦赭====================*//* 衬桦赭毛忡 允月 */typedef struct tagCHAR_invinsibleArea{ CHAR_AREAKIND kind; int floor; RECT area; int work[10];}CHAR_invincibleArea;CHAR_invincibleArea* CHAR_invarea;int CHAR_invareanum;/*------------------------------------------------------------ * 衬桦赭及赓渝祭毛允月[ * 娄醒 * filename char* 涩烂白央奶伙 * 忒曰袄 * 岳 TRUE(1) * 撩 FALSE(0) *------------------------------------------------------------*/BOOL CHAR_initInvinciblePlace( char* filename ){ FILE* f; char line[256]; int linenum=0; int invreadlen=0; f = fopen(filename,"r"); if( f == NULL ){ errorprint; return FALSE; } CHAR_invareanum=0; /* 引内 躲卅垫互窒垫丐月井升丹井譬屯月 */ while( fgets( line, sizeof( line ), f ) ){ linenum ++; if( line[0] == '#' )continue; /* comment */ if( line[0] == '\n' )continue; /* none */ chomp( line ); CHAR_invareanum++; } if( fseek( f, 0, SEEK_SET ) == -1 ){ fprint( "Seek Error\n" );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -