📄 skill_lsw.cpp
字号:
{
if(DIVIDE_ITEM == rit2->GetRButton()){r2count += Item.attr[IATTR_MUCH];}
else{r2count++;}
}
}
if( rit3 )
{
if(ino3 == Item.item_no)
{
if(DIVIDE_ITEM==rit3->GetRButton()){r3count += Item.attr[IATTR_MUCH];}
else{r3count++;}
}
}
if( rit4 )
{
if(ino4 == Item.item_no)
{
if(DIVIDE_ITEM==rit4->GetRButton()){r4count += Item.attr[IATTR_MUCH];}
else{r4count++;}
}
}
}
}
}
return 0;
}
void RecvCMD_ADD_EFFECT(t_packet *p)
{
const WORD wEffectNo =p->u.AddEffect.wEffectNo; // 荤侩等 付过狼 锅龋
const WORD idTarget =p->u.AddEffect.idTarget; // 付过阑 荤侩茄 措惑磊
const DWORD dwDuration =p->u.AddEffect.wDuration*1000; // 蜡瘤矫埃
LPCHARACTER ch = ReturnCharacterPoint(idTarget);
if(ch)
{
InsertMagic(ch,ch,wEffectNo,0,ch->x,ch->y,ch->x,ch->y,0,0,0,g_ClientTime+dwDuration);
}
}
void ReadItemFunctionTable(char * buf,int i)
{
char *token;
token = strtok(buf, "\t\n\r"); if( token == NULL ) return; const int iIndex = ItemFunction[i].iNo = atoi(token);
token = strtok(NULL,"\t\n\r"); if( token == NULL ) return;memcpy(ItemFunction[iIndex].Name ,token,39);
EatRearWhiteChar( ItemFunction[iIndex].Name );
token = strtok(NULL,"\t\n\r"); if( token == NULL ) return;memcpy(ItemFunction[iIndex].NameAdd ,token,39);
EatRearWhiteChar( ItemFunction[iIndex].NameAdd );
token = strtok(NULL,"\t\n\r"); if( token == NULL ) return;memcpy(ItemFunction[iIndex].Exp ,token,49);
EatRearWhiteChar( ItemFunction[iIndex].Exp );
token = strtok(NULL,"\t\n\r"); if( token == NULL ) return;ItemFunction[iIndex].iExpMark = atoi(token); //020530 lsw
token = strtok(NULL,"\t\n\r"); if( token == NULL ) return;ItemFunction[iIndex].iEffectNo = atoi(token);
token = strtok(NULL,"\t\n\r"); if( token == NULL ) return;ItemFunction[iIndex].iUpgradeAble = atoi(token);
token = strtok(NULL,"\t\n\r"); if( token == NULL ) return;ItemFunction[iIndex].iScrollNo = atoi(token);
token = strtok(NULL,"\t\n\r"); if( token == NULL ) return;ItemFunction[iIndex].iMakeRand[0] = atoi(token);
token = strtok(NULL,"\t\n\r"); if( token == NULL ) return;ItemFunction[iIndex].iMakeRand[1] = atoi(token);
token = strtok(NULL,"\t\n\r"); if( token == NULL ) return;ItemFunction[iIndex].iMakeRand[2] = atoi(token);
for(int x = 0; x<17;x++)
{
token = strtok(NULL,"\t\n\r"); if( token == NULL ) return;ItemFunction[iIndex].GRADE[x] = atoi(token);
}
for(int y = 0; y<17;y++)
{
token = strtok(NULL,"\t\n\r"); if( token == NULL ) return;ItemFunction[iIndex].iTime[y] = atoi(token);
}
token = strtok(NULL,"\t\n\r"); if( token == NULL ) return;ItemFunction[iIndex].iBuffer1 = atoi(token);
token = strtok(NULL,"\t\n\r"); if( token == NULL ) return;ItemFunction[iIndex].iBuffer2 = atoi(token);
return;
}
bool LoadItemFunctionTable()
{
char buf[1024];
FILE *fp ;
char filename[MAX_FILENAME],filenameBin[MAX_FILENAME];
sprintf(filename, ".\\itemtable\\ItemFunction.txt");
sprintf(filenameBin, ".\\itemtable\\ItemFunction.bin");
if( fp= Fopen(filename, "rt") )
{
int i=0;
while( !feof(fp) )
{
fgets(buf, 1023, fp);
if( *buf == ';' ) continue;
if(i> MAX_ITEM_FUNCTION-1 ) break;
ReadItemFunctionTable(buf, i);
i++;
}
fclose(fp);
if(fp=Fopen( filenameBin, "wb" ) )
{
fwrite( ItemFunction, sizeof(t_ItemFunction)*MAX_ITEM_FUNCTION, 1, fp);
fclose(fp);
}
}
else
{
if(fp=Fopen( filenameBin, "rb" ) )
{
fread( ItemFunction, sizeof(t_ItemFunction)*MAX_ITEM_FUNCTION, 1, fp);
fclose(fp);
}
else return 0;
}
return 1;
}
bool CanViewGhost(CHARACTER *ch)
{
if(ch->bCanViewGhost)
{
if( g_ClientTimeNoGap < ch->dwCanViewGhostTime)
{
return true;
}
}
return false;
}
bool CanViewMagicTrap(CHARACTER *ch)
{
if(ch->bCanViewMagicTrap)
{
if( g_ClientTimeNoGap < ch->dwCanViewMagicTrapTime )
{
return true;
}
}
return false;
}
bool CanViewTrap(CHARACTER *ch)
{
if(ch->bCanViewTrap)
{
if( g_ClientTimeNoGap < ch->dwCanViewTrapTime )
{
return true;
}
}
return false;
}
bool CanViewBomb(CHARACTER *ch)//Trap 0
{
if( ch->bCanViewBomb )
{
if( g_ClientTimeNoGap < ch->dwCanViewBombTime)
{
return true;
}
}
return false;
}
void InitHeroCanView()
{
Hero->bCanViewGhost = 0;
Hero->bCanViewMagicTrap = 0;
Hero->bCanViewBomb = 0;
Hero->bCanViewTrap = 0;
}
//堡盔 悸泼 窍绰 窃荐
void SetDayLight(const short int nValue)
{
DayLightControl = nValue;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////// 傈捧 胶懦
/////////////////////////////////////////////////////// 傈捧 胶懦 Point
int GetCombatSkillIndexStart(const int iGroupNo,const int iGroupType)
{
return (iGroupNo-1)*12 +(iGroupType-1)*6 +1;
}
int SkillIdToCombatSkillIconImage(const int iSkilNo,const bool bIsMain)
{
if(!bIsMain)
{
return (iSkilNo-iCSCovertSkillID);//i绰 胶懦 逞滚绊 iCSCovertSkillID锅 何磐 矫累捞聪鳖 iCSCovertSkillID甫 力寇茄促 捞固瘤 弓篮芭俊 36 锅何磐 货肺款芭扼辑 +35 茄促
}
return (iSkilNo-iCSCovertSkillID)+36;//i绰 胶懦 逞滚绊 iCSCovertSkillID锅 何磐 矫累捞聪鳖 iCSCovertSkillID甫 力寇茄促
}
int GetKnowCSGroupType(const int iGroupNo)//弊缝逞滚甫 啊瘤绊 唱狼 弊缝鸥涝阑 馆券茄促. 弊缝捞 酒公巴档 绝栏搁 0阑 馆券
{
switch(iGroupNo)
{
case 1: case 2: case 3:
break;
default:
JustMsg("GetKnowCSGroupType俊 弊缝蔼捞 捞惑钦聪促");
break;
}
const int iGroup1Start = iCSCovertSkillID+(iGroupNo-1)*12;//1锅 弊缝何磐 矫累窍聪鳖
const int iGroup1End = iGroup1Start+5;
const int iGroup2Start = iGroup1End+1;
const int iGroup2End = iGroup2Start +5;
int iGroupTypeSum1 = 0, iGroupTypeSum2 =0 ,i = 0;
for(i = iGroup1Start; i <=iGroup1End; i++)
{
iGroupTypeSum1 += SCharacterData.SkillId[i];
}
for(i = iGroup2Start; i <=iGroup2End; i++)
{
iGroupTypeSum2 += SCharacterData.SkillId[i];
}
if( iGroupTypeSum1 > iGroupTypeSum2)
{
return 1;
}
if( iGroupTypeSum2 > iGroupTypeSum1)
{
return 2;
}
return 0;
}
void SetCSPButtonType(const int iSelectedGroupButton)//困俊 3俺 乐绰 弊缝 滚瓢阑 穿福绰芭 弊 滚瓢狼 nWillDo 蔼捞 滚瓢捞 啊柳 弊缝 蔼捞促
{//何弗 弊缝阑 啊瘤绊 郴啊 捞 弊缝鸥涝阑 急琶 秦具 窍绰啊?, 捞固 硅况辑 诀弊饭捞靛 窜拌牢啊甫 惶酒 滚瓢阑 沥府茄促
//窜瘤 滚瓢 劝己拳父 氓烙柳促
switch(GetKnowCSGroupType(iSelectedGroupButton))
{
case 0://弊缝 急琶傈
{
SMenu[MN_COMBAT_SKILL_POINT].nImageNumber = 9;//捞固瘤 逞滚甫 弊缝鸥涝急琶 且锭 捞固瘤肺
//OK 01
SMenu[MN_COMBAT_SKILL_POINT].nField[1].nType = FT_NONE;//厚劝己
//DONE 03
SMenu[MN_COMBAT_SKILL_POINT].nField[3].nType = FT_HIDE_SPECIAL_WILLDO_AUTO_PUT;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[7].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[8].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[9].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[10].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[11].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[12].nType = FT_NONE;//劝己
//弊缝 急琶 胶懦1 02 //nWillDo 蔼捞 弊缝 鸥涝 1鸥涝 2鸥涝
SMenu[MN_COMBAT_SKILL_POINT].nField[13].nType = FT_SHOW_SPECIAL_WILLDO_AUTO_PUT;//劝己
//弊缝 急琶 胶懦2 02
SMenu[MN_COMBAT_SKILL_POINT].nField[14].nType = FT_SHOW_SPECIAL_WILLDO_AUTO_PUT;//劝己
//器牢飘 诀 01//茄臂 橇赴泼 鳖瘤 窍绰 滚瓢阑 父甸绊 Rect 甫 捞侩 窍咯 1 鞘靛肺 贸府
SMenu[MN_COMBAT_SKILL_POINT].nField[15].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[16].nType = FT_CS_GROUP_EXPLAIN;
SMenu[MN_COMBAT_SKILL_POINT].nField[17].nType = FT_CS_GROUP_EXPLAIN;
SMenu[MN_COMBAT_SKILL_POINT].nField[18].nType = FT_CS_EXPLAIN;
SMenu[MN_COMBAT_SKILL_POINT].nField[19].nType = FT_CS_EXPLAIN;
SMenu[MN_COMBAT_SKILL_POINT].nField[20].nType = FT_CS_EXPLAIN;
SMenu[MN_COMBAT_SKILL_POINT].nField[21].nType = FT_CS_EXPLAIN;
SMenu[MN_COMBAT_SKILL_POINT].nField[22].nType = FT_CS_EXPLAIN;
SMenu[MN_COMBAT_SKILL_POINT].nField[23].nType = FT_CS_EXPLAIN;
SMenu[MN_COMBAT_SKILL_POINT].nField[24].nType = FT_CS_EXPLAIN;
SMenu[MN_COMBAT_SKILL_POINT].nField[25].nType = FT_CS_EXPLAIN;
SMenu[MN_COMBAT_SKILL_POINT].nField[26].nType = FT_CS_EXPLAIN;
SMenu[MN_COMBAT_SKILL_POINT].nField[27].nType = FT_CS_EXPLAIN;
SMenu[MN_COMBAT_SKILL_POINT].nField[28].nType = FT_CS_EXPLAIN;
SMenu[MN_COMBAT_SKILL_POINT].nField[29].nType = FT_CS_EXPLAIN;
}break;
default://弊缝捞 乐促
{
SMenu[MN_COMBAT_SKILL_POINT].nImageNumber = 0;//捞固瘤 逞滚甫 弊缝鸥涝急琶 且锭 捞固瘤肺
//OK 01
SMenu[MN_COMBAT_SKILL_POINT].nField[1].nType = FT_HIDE_SPECIAL_WILLDO_AUTO_PUT;//厚劝己
//DONE 03
SMenu[MN_COMBAT_SKILL_POINT].nField[3].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[7].nType = FT_CS_ICON;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[8].nType = FT_CS_ICON;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[9].nType = FT_CS_ICON;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[10].nType = FT_CS_ICON;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[11].nType = FT_CS_ICON;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[12].nType = FT_CS_ICON;//劝己
//弊缝 急琶 胶懦1 02 //nWillDo 蔼捞 弊缝 鸥涝 1鸥涝 2鸥涝
SMenu[MN_COMBAT_SKILL_POINT].nField[13].nType = FT_NONE;//劝己
//弊缝 急琶 胶懦2 02
SMenu[MN_COMBAT_SKILL_POINT].nField[14].nType = FT_NONE;//劝己
//器牢飘 诀 01//茄臂 橇赴泼 鳖瘤 窍绰 滚瓢阑 父甸绊 Rect 甫 捞侩 窍咯 1 鞘靛肺 贸府
SMenu[MN_COMBAT_SKILL_POINT].nField[15].nType = FT_CSP_POINT_UP;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[16].nType = FT_NONE;
SMenu[MN_COMBAT_SKILL_POINT].nField[17].nType = FT_NONE;
SMenu[MN_COMBAT_SKILL_POINT].nField[18].nType = FT_NONE;
SMenu[MN_COMBAT_SKILL_POINT].nField[19].nType = FT_NONE;
SMenu[MN_COMBAT_SKILL_POINT].nField[20].nType = FT_NONE;
SMenu[MN_COMBAT_SKILL_POINT].nField[21].nType = FT_NONE;
SMenu[MN_COMBAT_SKILL_POINT].nField[22].nType = FT_NONE;
SMenu[MN_COMBAT_SKILL_POINT].nField[23].nType = FT_NONE;
SMenu[MN_COMBAT_SKILL_POINT].nField[24].nType = FT_NONE;
SMenu[MN_COMBAT_SKILL_POINT].nField[25].nType = FT_NONE;
SMenu[MN_COMBAT_SKILL_POINT].nField[26].nType = FT_NONE;
SMenu[MN_COMBAT_SKILL_POINT].nField[27].nType = FT_NONE;
SMenu[MN_COMBAT_SKILL_POINT].nField[28].nType = FT_NONE;
SMenu[MN_COMBAT_SKILL_POINT].nField[29].nType = FT_NONE;
}break;
}
}
void SetCSPButtonTypeWhenSelectGroupType()
{//滚瓢阑 悸泼 茄促
SMenu[MN_COMBAT_SKILL_POINT].nImageNumber = 0;//捞固瘤 逞滚甫 弊缝鸥涝急琶 且锭 捞固瘤肺
//OK 01
SMenu[MN_COMBAT_SKILL_POINT].nField[1].nType = FT_HIDE_SPECIAL_WILLDO_AUTO_PUT;//厚劝己
//CANCEL 02
SMenu[MN_COMBAT_SKILL_POINT].nField[2].nType = FT_HIDE_SPECIAL_WILLDO_AUTO_PUT;//厚劝己
//DONE 03
SMenu[MN_COMBAT_SKILL_POINT].nField[3].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[7].nType = FT_CS_ICON;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[8].nType = FT_CS_ICON;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[9].nType = FT_CS_ICON;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[10].nType = FT_CS_ICON;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[11].nType = FT_CS_ICON;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[12].nType = FT_CS_ICON;//劝己
//弊缝 急琶 胶懦1 02 //nWillDo 蔼捞 弊缝 鸥涝 1鸥涝 2鸥涝
SMenu[MN_COMBAT_SKILL_POINT].nField[13].nType = FT_NONE;//劝己
//弊缝 急琶 胶懦2 02
SMenu[MN_COMBAT_SKILL_POINT].nField[14].nType = FT_NONE;//劝己
//器牢飘 诀 01//茄臂 橇赴泼 鳖瘤 窍绰 滚瓢阑 父甸绊 Rect 甫 捞侩 窍咯 1 鞘靛肺 贸府
SMenu[MN_COMBAT_SKILL_POINT].nField[15].nType = FT_CSP_POINT_UP;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[16].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[17].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[18].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[19].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[20].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[21].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[22].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[23].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[24].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[25].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[26].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[27].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[28].nType = FT_NONE;//劝己
SMenu[MN_COMBAT_SKILL_POINT].nField[29].nType = FT_NONE;//劝己
}
void SetCSPGroupButtonImage(const int iSelected)//弊缝 滚瓢 捞固瘤 悸泼
{
SFIELD *f = &SMenu[MN_COMBAT_SKILL_POINT].nField[4];
switch(GetKnowCSGroupType(1))
{
case 1:
{
f->nImageNumber = 12;
f->nRectImage = 11;
}break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -