?? itemtable.cpp
字號:
char temp[20];
char temp2[1023];
if( !fscanf(fp, "%s", temp) ) break;
if( temp[0] == '#' || temp[0] == ';')
{
fgets(temp2, 1023, fp);
continue;
}
num = atoi(temp);
magic[num].LoadExplain(num, fp);
}
fclose(fp);
}
return 1;
}
bool ReadMagicTable()
{
FILE* fp = NULL;
//ReadMagicExplain(); // 剛歷 汲疙闌 佬絹 甸牢饒 單撈鷗 藹闌 佬絹輯 茄波鍋俊 歷厘茄促.
char filename[MAX_FILENAME], filenameBin[MAX_FILENAME];
memset(filename, 0, MAX_FILENAME);
memset(filenameBin, 0, MAX_FILENAME);
//< CSD-020702
sprintf(filename, "./magic/");
sprintf(filenameBin, "./magic/");
//> CSD-020702
switch (SCharacterData.nCharacterData[SPELL])
{
case WIZARD_SPELL:
{
strcat(filename, "wizard.txt");
strcat(filenameBin, "wizard.bin");
break;
}
case PRIEST_SPELL:
{
strcat(filename, "priest.txt");
strcat(filenameBin, "priest.bin");
break;
}
}
if( fp=Fopen(filename, "rt") )
{
char temp[2048];
memset( magic, 0, sizeof( CMagic ) * MAX_MAGIC_ );
while( fgets( temp, 2048, fp ) )
{
if( temp[0] == '#' || temp[0] == ';') continue;
char *token = strtok( temp, "\t\n" );
int magic_no = atoi( token );
magic[magic_no].SetMagicNum(magic_no);
token = strtok( NULL, "\t\n" );
magic[magic_no].SetName(token );
token = strtok( NULL, "\t\n" );
magic[magic_no].SetHanName(token );
token = strtok( NULL, "\t\n" );
magic[magic_no].SetData(0,atoi( token ));
token = strtok( NULL, "\t\n" );
magic[magic_no].SetData(1,atoi( token ));
token = strtok( NULL, "\t\n" );
magic[magic_no].SetData(2,atoi( token ));
token = strtok( NULL, "\t\n" );
magic[magic_no].SetData(3,atoi( token ));
token = strtok( NULL, "\t\n" );
magic[magic_no].SetExplain(token);
}
fclose(fp);
fp=Fopen( filenameBin, "wb" );
if(fp)
{
char *tt = (char *)magic;
char crc = 0;
for( int i=0; i< sizeof(CMagic)*MAX_MAGIC_ ; i++ )
{
crc += *tt;
tt++ ;
}
fwrite( &crc, 1, 1, fp );
fwrite( magic, sizeof(CMagic), MAX_MAGIC_, fp);
fwrite( &crc, 1, 1, fp );
fclose(fp);
}
for( int i=0; i<MAX_MAGIC_; i++ )
{
if( magic[i].GetMagicNum() )
ReadMagicIconImage( SCharacterData.nCharacterData[SPELL], magic[i].GetImage() );
}
}
else
{
fp = Fopen( filenameBin, "rb" );
if(fp)
{
char *tt = (char *) magic;
char crc = 0, crc1, crc2;
fread( &crc1, 1, 1, fp );
fread( magic, sizeof(CMagic), MAX_MAGIC_, fp);
fread( &crc2, 1, 1, fp );
fclose(fp);
for( int i=0; i< sizeof( CMagic ) *MAX_MAGIC_; i++ )
{
crc += *tt;
tt++ ;
}
if( crc != crc1 || crc != crc2 )
{
CheckSumError = -1;
JustMsg(lan->OutputMessage(6,82) );//CheckSumError = 1;//010215 lsw
}
else // 概流 酒撈能 佬絹 坷扁...
{
for( int i=0; i<MAX_MAGIC_; i++ )
if( magic[i].GetMagicNum() )
ReadMagicIconImage( SCharacterData.nCharacterData[SPELL], magic[i].GetImage() );
}
}
else return 0;
}
/*
if( GetSysInfo( SI_GAME_MAKE_MODE ) )
{
fp = fopen( "kein_wizard.txt", "wt" );
if( fp)
{
for( int i=0; i<MAX_MAGIC_; i++ )
{
if( magic[i].MagicNum )
fprintf( fp, "%d %s %s %d %d %d %d %s\n",
magic[i].MagicNum, magic[i].Name, magic[i].HanName,
magic[i].data[0], magic[i].data[1], magic[i].data[2], magic[i].data[3],
magic[i].explain );
}
fclose( fp );
}
}
*/
return 1;
}
void CMagic::DeleteMagic()
{
if( !GetMagicNum() ) return;
if( magic_spr[ m_data[ImgNum] ].img )
{
GlobalFree( magic_spr[ m_data[ImgNum] ].img );
}
magic_spr[ m_data[ImgNum] ].img = NULL;
m_iMagicNum=0;
SetName("");
SetHanName("");
memset( m_data, 0, sizeof( int[MAGIC_DATA_MAX] ) );
}
bool ReadMagicIconImage( int type, int num )
{
char filename[MAX_FILENAME];
FILE *fp;
Spr *s;
switch( type )
{
case WZD : sprintf( filename, "./Magic/w%03d.csp", num ); break;
case PRI : sprintf( filename, "./Magic/p%03d.csp", num ); break;
}
s = &magic_spr[num];
if( s->img ) return 1;
if( fp = Fopen(filename, "rb" ) )
{
fread( &s->xl, sizeof( short ), 1, fp);
fread( &s->yl, sizeof( short ), 1, fp);
fread( &s->ox, sizeof( short ), 1, fp);
fread( &s->oy, sizeof( short ), 1, fp);
fread( &s->size, sizeof( unsigned int ), 1, fp);
MemFree( s->img );
MemAlloc( s->img, s->size );
fread(s->img, s->size, 1, fp);
convert565to555( s );
fclose(fp);
}
else return 0;
return 1;
}
void FreeMagicIcon( )
{
for( int i=0; i<MAGIC_SPR_MAX; i++ )
{
if( magic_spr[i].img ) MemFree( magic_spr[i].img );
}
}
void PutMagicIcon( int x, int y, int num, int flag, int type )
{
Spr *s;
// if( !magic[num].GetImage() ) return;
s = &magic_spr[magic[num].GetImage()];
if( flag )
{
PutCompressedImageFX(x, y, s, flag, type);
}
else
{
PutCompressedImage(x, y, s);
}
}
////////////////////////////////////////////////////////////////////////////////////////
//
// 概流 包訪 拌魂 皋家靛 --> 輯滾
//
//
////////////////////////////////////////////////////////////////////////////////////////
//###########################################################################################
/*
extern ItemAttr InvItemAttr[3][3][8];
extern ItemAttr EquipItemAttr[8];
extern ItemAttr QuickItemAttr[7];
extern ItemAttr HandItemAttr;
extern ItemAttr InvAttrBackUp[3][3][8];
extern ItemAttr EquipAttrBackUp[8];
extern ItemAttr QuickAttrBackUp[6];
extern ItemAttr HandAttrBackUp;
extern int aAccelInventory[6];
extern int AccelBackUp[6];
extern int aArmor_Inventory[8];
extern int ArmorBackUp[8];
extern int aItemInventory[3][3][8];
extern int InvBackUp[3][3][8];
extern int HandBackUp;
extern int HandBackUptype;
extern int g_MouseItemNumber;
extern int g_MouseItemType;
*/
void InventoryBackUp()
{
memcpy( InvAttrBackUp, InvItemAttr, sizeof( ItemAttr[3][3][8] ) );
memcpy( EquipAttrBackUp, EquipItemAttr, sizeof( ItemAttr[8] ) );
memcpy( QuickAttrBackUp, QuickItemAttr, sizeof( ItemAttr[7] ) );
HandAttrBackUp = HandItemAttr;
// memcpy( AccelBackUp, aAccelInventory, sizeof( int[6] ) );
// memcpy( ArmorBackUp, aArmor_Inventory, sizeof( int[8] ) );
// memcpy( InvBackUp, aItemInventory, sizeof( int[3][3][8] ) );
HandBackUp = g_MouseItemNumber;
HandBackUptype = g_MouseItemType;
}
void InventoryRestore()
{
// 犁 傈價 罐綽促.
CallServer( CMD_RESEND_ITEM );
DeleteItem( &HandItemAttr );
g_MouseItemType = 0;
g_MouseItemNumber = 0;
ChangeEquip( Hero, EquipItemAttr, 0 );
}
int Item_Attack_Ani[27][8] =
{
0, 50, 65, 0, 0, 0, 0, 0, //劇頰八
61, 50, 70, 4, 3, 5, 6, 8, //茄頰漠..
62, 50, 70, 4, 3, 5, 6, 8, //茄頰漠..
63, 50, 70, 4, 3, 5, 6, 8, //閡漠.
64, 50, 70, 4, 3, 5, 6, 8, //
65, 50, 70, 4, 3, 5, 6, 8, //
66, 50, 70, 4, 3, 5, 6, 0, //
67, 50, 70, 4, 3, 5, 6, 0, //
68, 50, 70, 22, 21, 7, 23, 0, //秦贛
69, 50, 70, 4, 3, 5, 6, 0, //
70, 50, 70, 4, 3, 7, 8, 23, //豪1.
71, 50, 70, 4, 3, 7, 6, 23, //
72, 70, 90, 22, 21, 7, 6, 23, //
73, 70, 90, 22, 21, 7, 2, 30, //
74, 80, 100, 22, 21, 8, 0, 0, //芒1.
75, 70, 90, 22, 21, 8, 0, 0, //
76, 70, 90, 4, 3, 19, 0, 0, //
77, 70, 90, 4, 3, 19, 0, 0, //
78, 50, 480, 4, 3, 9, 0, 0, //勸1
79, 70, 530, 4, 3, 9, 0, 0, //
80, 40, 70, 10, 3, 11, 0, 0, //....?,,
81, 40, 70, 10, 3, 11, 0, 0, //
82, 40, 70, 10, 3, 11, 0, 0, //....?,,
83, 40, 70, 10, 3, 11, 0, 0, //....?,,
84, 40, 70, 10, 3, 11, 0, 0, //....?,,
85, 40, 70, 10, 3, 11, 0, 0, //....?,,
86, 40, 70, 10, 3, 11, 0, 0, //....?,,
};
void GetItemAnimationNumber(int num, int &a, int &b, int &c, int &d, int &e, int &f, int &g)
{
if(num)
{
a = Item_Attack_Ani[num-60][1];
b = Item_Attack_Ani[num-60][2];
c = Item_Attack_Ani[num-60][3];
d = Item_Attack_Ani[num-60][4];
e = Item_Attack_Ani[num-60][5];
f = Item_Attack_Ani[num-60][6];
g = Item_Attack_Ani[num-60][7];
}
else
{
a = Item_Attack_Ani[0][1];
b = Item_Attack_Ani[0][2];
c = Item_Attack_Ani[0][3];
d = Item_Attack_Ani[0][4];
e = Item_Attack_Ani[0][5];
f = Item_Attack_Ani[0][6];
g = Item_Attack_Ani[0][7];
}
}
// 020620 YGI
void CSkill::ReadSkill( int no, char *buf )
{
num = no;
char *token;
#ifdef KOREA_LOCALIZING_
token = strtok(buf, "\t\n");
strcpy(name, token);
token = strtok(NULL, "\t\n");
strcpy(han_name, token);
#else
token = strtok(buf, "\t\n");
strcpy(han_name, token);
token = strtok(NULL, "\t\n");
strcpy(name, token);
#endif
token= strtok(NULL, "\t\n") ;
inclusive = atoi(token);
token= strtok(NULL, "\t\n") ;
series = atoi(token);
token= strtok(NULL, "\t\n") ;
money = atoi(token);
token= strtok(NULL, "\t\n\r") ;
skillable = atoi(token);
token= strtok(NULL, "\t\n") ;
strcpy(explain, token);
static count=0;
int ct = strlen( token );
if( ct > count ) count = ct;
}
CSkill skill[MAX_SKILL];
Spr skill_spr[MAX_SKILL];
int inclusive_to_skill[MAX_SKILL_KIND][8];
bool ReadSkillTable()
{
char buf[511] ;
char temp[20];
FILE *fp ;
char filename[MAX_FILENAME],filenameBin[MAX_FILENAME];
sprintf(filename, "./skill/skill.txt");
sprintf(filenameBin, "./skill/skill.bin");
if( fp= Fopen(filename, "rt") )
{
//int i=0;
int num = 0;
while( !feof(fp) && num<MAX_SKILL )
{
if( !fscanf(fp, "%s", temp) ) break;
if( temp[0] == '#' || temp[0] == ';')
{
fgets(buf, 511, fp);
continue;
}
num = atoi( temp );
fgets(buf, 511, fp);
skill[num].ReadSkill(num, buf);
ReadSkillIcon( num );
// i++;
}
fclose(fp);
if(fp=Fopen( filenameBin, "wb" ) )
{
char *tt = (char *) skill;
char crc = 0;
for( int i=0; i<sizeof( CSkill ) *MAX_SKILL; i++ )
{
crc += *tt;
tt++;
}
fwrite( &crc, 1, 1, fp);
fwrite( skill, sizeof(CSkill), MAX_SKILL, fp);
fwrite( &crc, 1, 1, fp);
fclose(fp);
}
}
else
{
if(fp=Fopen( filenameBin, "rb" ) )
{
char *tt = (char *) skill ;
char crc = 0, crc1, crc2;
fread( &crc1, 1, 1, fp );
fread( skill, sizeof(CSkill), MAX_SKILL, fp);
fread( &crc2, 1, 1, fp );
fclose(fp);
for( int i=0; i<sizeof( CSkill )*MAX_SKILL; i++)
{
crc += *tt;
tt++;
}
if( crc != crc1 || crc != crc2 )
{
CheckSumError = -1;
JustMsg(lan->OutputMessage(6,83) );//CheckSumError = 1;//010215 lsw
}
else // 撈固瘤 佬絹 坷扁
{
for( int i=0; i<MAX_SKILL; i++ )
{
if( skill[i].num )
{
ReadSkillIcon( i );
}
}
#ifdef _DEBUG // 031110 YGI
if( GetSysInfo( SI_NOT_CONNECT_MODE ) )
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -