⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 battle.cpp

📁 完整龙族的无错反外挂登陆器,b编译后直接直接就可以放在客户端下运行
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		pMagic->magic_Runtime);
}

void CBattle::EffectPillar(MAGICLIST* pMagic, DWORD dwNow, const int nWidth, bool IsCkCollision) // 030519 kyo
{ // 窍疵俊辑 咯矾俺啊 冻绢瘤绰 捞棋飘 屈怕   
	const double dUnit = 0.785398; // PI甫 4殿盒
	LPCHARACTER pCaster = pMagic->lpChar_Own;
	LPCHARACTER pTarget = pMagic->lpChar_Target;
	if (pCaster == NULL || pTarget == NULL) 	return;  
	
	int nDir = 0, nOffX = 0, nOffY = 0;
	
	switch (pCaster->sprno)
	{ // 靛贰帮牢 版快绰 碍力肺 规氢 汲沥
    case 50:
    case 51:
    case 52: nDir = s_aAngle8[1];                  break;
    //default: nDir = s_aAngle8[pCaster->direction]; break;
	default: nDir = s_aAngle8[pMagic->dir]; break;// 030514 kyo //荤恩 规氢俊辑 捞棋飘 嘛篮 规氢
	}
	
	double dAngle = 0.0;
	
	for (int i = 0; i < 10; i++)
	{
		for (int j = -1; j <= 1; j++)
		{
			nOffX = rand()%nWidth + nWidth*i;
			nOffY = j*nWidth + j*rand()%nWidth;
			dAngle = dUnit*nDir;
			Coordinates(dAngle, nOffX, nOffY);

			if(IsCkCollision)
			{// 030519 kyo 捞蒲飘啊 哎荐 绝绰 镑俊 嘛鳃妨绊 窍搁 弊父 嘛绰促. 
				if( IsCollision((pMagic->x + nOffX)>>5,(pMagic->y - nOffY)>>5) )
				{
					return;
				}
			}
			::InsertMagic(pCaster, pTarget,
				pMagic->next_Effect,
				pMagic->magicSubNum,
				pMagic->x,
				pMagic->y,
				pMagic->x + nOffX, 
				pMagic->y - nOffY,
				false, 0, false, 
				dwNow + 100*(i + 1));
		}
	}
}

void CBattle::EffectQuake(MAGICLIST* pMagic, int nCount, DWORD dwNow)
{ // 窍疵俊辑 咯矾俺啊 冻绢瘤绰 捞棋飘 屈怕   
	const double dUnit = 0.785398; // PI甫 4殿盒
	LPCHARACTER pCaster = pMagic->lpChar_Own;
	LPCHARACTER pTarget = pMagic->lpChar_Target;
	if (pCaster == NULL || pTarget == NULL) 	return;  
	
	int nDir = 0, nOffX = 0, nOffY = 0;
	double dAngle = 0.0;
	
	for (int i = 0; i < nCount; i++)
	{
		nDir = s_aAngle8[pCaster->direction];
		nOffX = 120*i;
		nOffY = 0;
		dAngle = dUnit*nDir;
		Coordinates(dAngle, nOffX, nOffY);
		//
		::InsertMagic(pCaster, pTarget,
			pMagic->next_Effect,
			pMagic->magicSubNum,
			pMagic->x,
			pMagic->y,
			pMagic->x + nOffX, 
			pMagic->y - nOffY,
			false, 0, false, 
			dwNow + 200*(i + 1));
	}
}

void CBattle::EffectDrop(MAGICLIST* pMagic, int nCount, DWORD dwNow)
{ // 窍疵俊辑 咯矾俺啊 冻绢瘤绰 捞棋飘 屈怕   
	const double dUnit = 0.785398; // PI甫 4殿盒
	LPCHARACTER pCaster = pMagic->lpChar_Own;
	LPCHARACTER pTarget = pMagic->lpChar_Target;
	if (pCaster == NULL || pTarget == NULL) 	return;  
	
	int nDir = 0, nOffX = 0, nOffY = 0;
	double dAngle = 0.0;
	
	for (int i = 0; i < nCount; i++)
	{
		nDir = s_aAngle8[pCaster->direction];
		nOffX = 120*i;
		nOffY = 0;
		dAngle = dUnit*nDir;
		Coordinates(dAngle, nOffX, nOffY);
		//
		::InsertMagic(pCaster, pTarget,
			pMagic->next_Effect,
			pMagic->magicSubNum,
			pMagic->x,
			pMagic->y,
			pMagic->x + nOffX, 
			pMagic->y - nOffY,
			false, 0, false, 
			dwNow + 200*(i + 1));
	}
}

void CBattle::EffectSpreadIrregular(MAGICLIST* pMagic, DWORD dwNow, const int nTile, const int nRan, int nLoop) // 030511 kyo 
{ // 林函俊 nSize埃拜救俊 阂痹蘑利栏肺 捞棋飘甫 谎赴促. 骂瘤固 屈怕
	LPCHARACTER pCaster = pMagic->lpChar_Own;
	LPCHARACTER pTarget = pMagic->lpChar_Target;
	if (pCaster == NULL || pTarget == NULL) 	return;  
	
	//static const int nSpreadIrregular[3][25] =   { //弥措 3锅鳖瘤 骂柳促.		
	const int nSpreadIrregular[3][25] =   { //弥措 3锅鳖瘤 骂柳促. 
		//{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
		//{1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
		{1,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,1,0},
		//{0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,1},
		{0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,1},
		{0,0,1,0,0,1,0,1,0,0,0,0,1,0,1,0,0,1,0,0,1,0,0,0,0}};
							
	int nXl = nTile*TILE_SIZE;	
	int nYl = nXl;//*3/4;
	int nRand, nRandShow=0;

	//啊肺狼 辨捞啊 nXl*2, 茄 临俊 nTile俺 免仿( 5鸥老 埃拜捞扼搁 10鸥老俊 5俺 谎妨咙)
	const int nDiv = nXl*2/nTile;	

	if( nLoop > 3 || nLoop <= 0)
	{//裹困甫 哈绢唱搁 1锅父 免仿. 
		nLoop = 1;
	}

	for( int k=0; k < nLoop; k++)
	//for( int k=0; k < 1; k++)
	{//矫埃瞒甫 啊瘤绊 谎府扁 困秦. 犁蓖龋免富绊 for巩阑 倒覆 
		//for (int i = 0; i < 25; i++)
		for (int i = 0; i<nTile*nTile; i++)
		{				
			nRand = rand()%5;
			nRandShow = rand()%nRan;
			if(nRandShow==0)
			{					 
				::InsertMagic(pCaster, pTarget,
					  pMagic->next_Effect,
					  pMagic->magicSubNum,
					  pMagic->x,
					  pMagic->y,
					  pMagic->x - nXl + (nDiv * (i%nTile) ), 
					  pMagic->y - nYl + (nDiv * (i/nTile) ),					 
					  false, 0, false,//	0);			  
					  dwNow + 200*nRand + k*2000);	//矫埃瞒(0~0.1檬 + 2檬)甫 滴绊 捞棋飘 免仿
			}
		}
	}
}


///////////////////////////////////////////////////////////////////////////////
// Protected Method
///////////////////////////////////////////////////////////////////////////////

void CBattle::AddEffect(EFFECT_INFO* pEffect)
{ // 捞棋飘 眠啊
	const int nEffect = pEffect->nEffect; // 捞棋飘 锅龋
	MAGICLIST* pTemp = NULL;
	MemAlloc(pTemp, sizeof(MAGICLIST));
	pTemp->magicSerial = pEffect->nType;
	pTemp->magicNum = nEffect;	  
	pTemp->magicSubNum = pEffect->nSub;
	pTemp->sprite_Num = g_lpET[nEffect].sprite_Num;
	pTemp->spr_Speed = g_lpET[nEffect].spr_Speed;
	pTemp->spr_Height = g_lpET[nEffect].spr_Height;
	pTemp->target_Height = pEffect->pTarget->height;
	pTemp->dir = pEffect->nDir;
	pTemp->x = pTemp->s_X = pEffect->nSrcX; 
	pTemp->y = pTemp->s_Y = pEffect->nSrcY; 
	pTemp->tarx = pTemp->t_X = pEffect->nDstX;
	pTemp->tary = pTemp->t_Y = pEffect->nDstY;
	pTemp->map_Offset.x = g_Map.x;
	pTemp->map_Offset.y = g_Map.y;
	pTemp->trans_Type = g_lpET[nEffect].trans_Type;
	pTemp->trans_Level = g_lpET[nEffect].trans_Level;
	pTemp->object_Num = g_lpET[nEffect].object_Num;
	pTemp->fallow = g_lpET[nEffect].fallow;
	pTemp->firePattern = false;							   
	pTemp->lpChar_Own = pEffect->pCaster;
	pTemp->lpChar_Target = pEffect->pTarget;
	pTemp->Caster_id = pEffect->pCaster->id;
	pTemp->Target_id = pEffect->pTarget->id;
	pTemp->next_Effect = g_lpET[nEffect].next_Effect;
	pTemp->impect_Effect_Num = g_lpET[nEffect].impect_Effect_Num;
	pTemp->link_Frame = g_lpET[nEffect].link_Frame;
	pTemp->end_Time = g_lpET[nEffect].end_Time;
	pTemp->sound_LoopCount = g_lpET[nEffect].sound_loop;
	pTemp->flag = 0;
	pTemp->next_Flag = 0;
	pTemp->magic_Runtime = 0;
	pTemp->failed = false;
	// 荤款靛 肺爹
	if (g_lpET[nEffect].sound_Num != 0)
	{
		const int nSound = g_lpET[nEffect].sound_Num%1000;
		
		if (pEffect->pCaster == Hero)
		{
			::PlayListAutoSounds(g_lpET[nEffect].sound_Num, 0, 
				20 - (g_lpET[nEffect].sound_Volume/5), 0);
		}
		else
		{
			const int	nDistX = (pEffect->pCaster->x - Hero->x);
			const int nDistY = (pEffect->pCaster->y - Hero->y);
			::PlayListAutoSounds(g_lpET[nEffect].sound_Num, nDistX, nDistY, 0);
		}
	}
	
	if ((effSpr_Count[pTemp->sprite_Num]==0 || Effspr[pTemp->sprite_Num].EffSpr->img==NULL) && pTemp->sprite_Num != 0)
	{ // 贸澜 肺爹登绰 版快(magicNum绰 0~499鳖瘤)	
		char buf[30];
		strcpy(buf, g_lpET2[nEffect].sprite_Name);	//020808 YGI 
		strcat(buf, ".dat");

#ifdef _EFFECT_DATA_USING_DIVIDED_FILE // 030821 kyo //kyo
		::LoadEffectSpriteDivFile(g_lpET[nEffect].sprite_Num);
#else
		::LoadEffectSprite(g_lpET[nEffect].sprite_Num, buf);
#endif
		
		strcpy(buf, g_lpET2[nEffect].sprite_Name);		//020808 YGI 
		::LoadEffectAnimation(g_lpET[nEffect].sprite_Num, buf);
	}
	//捞棋飘 穿利 墨款飘 歹窃
	++effSpr_Count[g_lpET[nEffect].sprite_Num];	
	::InsertMagicList(&g_lpML, pTemp);
}

void CBattle::ClearCrash()
{ //< CSD-021021
	LPCHARACTER pTemp = Hero;
	
	do
	{
		pTemp->bCrash = false;
		pTemp = pTemp->lpNext;
	}
	while (pTemp != NULL);
} //> CSD-021021

///////////////////////////////////////////////////////////////////////////////
// Private Method
///////////////////////////////////////////////////////////////////////////////

void CBattle::Coordinates(double dAngle, int& rX, int& rY)
{ // (0, 0) 谅钎甫 扁霖栏肺 阿档父怒 谅钎函券
	int nX = rX, nY = rY;
	rX = nX*cos(dAngle) - nY*sin(dAngle);
	rY = nX*sin(dAngle) + nY*cos(dAngle);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -