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

📄 battle.cpp

📁 完整龙族的无错反外挂登陆器,b编译后直接直接就可以放在客户端下运行
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// Battle.cpp: implementation of the CBattle class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Battle.h"

#include <math.h>
#include "Map.h"
#include "Hong_Sub.h"
#include "Effect.h"
#include "DirectSound.h"
///////////////////////////////////////////////////////////////////////////////
// Global Member
///////////////////////////////////////////////////////////////////////////////

static int s_aAngle8[8] = 
{
	6, 5, 4, 3, 2, 1, 0, 7
};

static int s_aAngle16[16] = 
{
	2, 4, 6, 8, 10, 12, 14, 0, 3, 5, 7, 9, 11, 13, 15, 1
};

static POINT s_aPoint[9] = 
{
	{-3, 0}, {-2, 2}, {0, 3}, {2, 2}, {0, 0}, {2, -2}, {0, -3}, {-2, -2}, {3, 0}
};

static POINT s_aRound[8] = 
{
	{-5, -1}, {-3,  4}, {-1,  5}, { 4,  3}, 
	{ 5,  1}, { 3, -4}, { 1, -5}, {-4, -3}
};

static int s_aOffset[8][5] = 
{
	{0,  8, 15, 1, 7},
	{1,  9,  8, 2, 0},
	{2, 10,  9, 3, 1},
	{3, 11, 10, 4, 2},
	{4, 12, 11, 5, 3},
	{5, 13, 12, 6, 4},
	{6, 14, 13, 7, 5},
	{7, 15, 14, 0, 6}
};

static POINT s_aDistance[8][5] = 
{
	{{0, 0}, {-50,   0}, { 50,   0}, {-100,   0}, { 100,    0}},
	{{0, 0}, {-40, -40}, { 40,  40}, { -80, -80}, {  80,   80}},
	{{0, 0}, {  0,  50}, {  0, -50}, {  0,  100}, {   0, -100}},
	{{0, 0}, {-40,  40}, { 40, -40}, { -80,  80}, {  80,  -80}},
	{{0, 0}, { 50,   0}, {-50,   0}, { 100,   0}, {-100,    0}},
	{{0, 0}, { 40,  40}, {-40, -40}, {  80,  80}, { -80,  -80}},
	{{0, 0}, {  0, -50}, {  0,  50}, {  0, -100}, {   0,  100}},
	{{0, 0}, { 40, -40}, {-40,  40}, {  80, -80}, { -80,   80}}
};

static POINT s_aCircle[29] = 
{
	{-2,  2}, {-1,  2}, { 0,  2}, { 1,  2}, { 2,  2},
	{-2,  1}, {-1,  1}, { 0,  1}, { 1,  1}, { 2,  1},
	{-2,  0}, {-1,  0}, { 0,  0}, { 1,  0}, { 2,  0},
	{-2, -1}, {-1, -1}, { 0, -1}, { 1, -1}, { 2, -1},
	{-2, -2}, {-1, -2}, { 0, -2}, { 1, -2}, { 2, -2},
	{-3,  0}, { 0,  3}, { 3,  0}, { 0, -3}
};

///////////////////////////////////////////////////////////////////////////////
// Construction/Destruction
///////////////////////////////////////////////////////////////////////////////

CBattle::CBattle()
{
	
}

CBattle::~CBattle()
{
	
}

///////////////////////////////////////////////////////////////////////////////
// Public Method
///////////////////////////////////////////////////////////////////////////////

void CBattle::EffectLocal(MAGICLIST* pMagic, DWORD dwNow)
{ // 咯矾俺甫 免仿窍绰 捞棋飘 屈怕
	LPCHARACTER pCaster = pMagic->lpChar_Own;
	LPCHARACTER pTarget = pMagic->lpChar_Target;
	if (pCaster == NULL || pTarget == NULL) 	return;
	
	for (int i = 0; i < 29; i++)
	{
		::InsertMagic(pCaster, pTarget,
			pMagic->next_Effect, 
			9,
			pMagic->x,
			pMagic->y,
			pMagic->tarx + (s_aCircle[i].x<<CELL), 
			pMagic->tary + (s_aCircle[i].y<<CELL),
			false, 0, false, 
			dwNow + 100*(i + 1));
	}
}

void CBattle::EffectRound(MAGICLIST* pMagic, DWORD dwNow)
{ // 矫傈磊甫 皑轿绰 捞棋飘 屈怕               
	LPCHARACTER pCaster = pMagic->lpChar_Own;
	LPCHARACTER pTarget = pMagic->lpChar_Target;
	if (pCaster == NULL || pTarget == NULL) 	return;
	
	for (int i = 0; i < 8; ++i)
	{
		::InsertMagic(pCaster, pTarget,
			pMagic->next_Effect,
			pMagic->magicSubNum,
			pMagic->x,
			pMagic->y,
			s_aRound[i].x<<5, 
			s_aRound[i].y<<5,
			false, 0, false, 
			dwNow + 100*(i + 1));
	}
}

void CBattle::EffectStorm(MAGICLIST* pMagic, DWORD dwNow)
{ // 窍疵俊辑 咯矾俺啊 冻绢瘤绰 捞棋飘 屈怕   
	LPCHARACTER pCaster = pMagic->lpChar_Own;
	LPCHARACTER pTarget = pMagic->lpChar_Target;
	if (pCaster == NULL || pTarget == NULL) 	return;
	
	int nRandX = 0, nRandY = 0;
	
	for (int i = 0; i < 9; i++)
	{
		nRandX = s_aPoint[i].x<<5;
		nRandY = s_aPoint[i].y<<5;
		::InsertMagic(pCaster, pTarget,
			pMagic->next_Effect,
			pMagic->magicSubNum,
			pMagic->x + nRandX,
			pMagic->y + nRandY,
			pMagic->tarx + nRandX, 
			pMagic->tary + nRandY,
			false, 0, false, 
			dwNow + 100*(i + 1));
	}
}

void CBattle::EffectSpread(MAGICLIST* pMagic)
{ // 8规氢栏肺 唱啊绰 捞棋飘 屈怕
	const double dUnit = 0.785398; // PI甫 4殿盒
	LPCHARACTER pCaster = pMagic->lpChar_Own;
	LPCHARACTER pTarget = pMagic->lpChar_Target;
	if (pCaster == NULL || pTarget == NULL) 	return;  
	
	EFFECT_INFO infEffect;
	int nDir = 0, nOffX = 0, nOffY = 0;
	double dAngle = 0.0;
	
	for (int i = 0; i < 8; i++)
	{
		nDir = s_aAngle8[i];
		nOffX = 100;
		nOffY = 100;
		dAngle = dUnit*nDir;
		Coordinates(dAngle, nOffX, nOffY);
		//
		memset(&infEffect, 0, sizeof(EFFECT_INFO));
		infEffect.pCaster = pCaster;
		infEffect.pTarget = pTarget;
		infEffect.nType = pCaster->excute_MagicNum;
		infEffect.nEffect = pMagic->next_Effect;
		infEffect.nSub = pMagic->magicSubNum;
		infEffect.nDir = nDir;
		infEffect.nSrcX = pMagic->x;
		infEffect.nSrcY = pMagic->y;
		infEffect.nDstX = pMagic->x + nOffX;
		infEffect.nDstY = pMagic->y + nOffY;
		AddEffect(&infEffect);
	}
}

void CBattle::EffectShoot(MAGICLIST* pMagic, int nCount)
{ // 矫傈磊甫 吝缴栏肺 欺廉唱啊绰 捞棋飘 屈怕
	const double dUnit = 0.392699; // PI甫 8殿盒
	LPCHARACTER pCaster = pMagic->lpChar_Own;
	LPCHARACTER pTarget = pMagic->lpChar_Target;
	if (pCaster == NULL || pTarget == NULL) 	return;  
	
	EFFECT_INFO infEffect;
	int nDir = 0, nOffX = 0, nOffY = 0;
	double dAngle = 0.0;
	
	for (int i = 0; i < nCount; i++)
	{
		nDir = s_aOffset[pCaster->direction][i];
		nOffX = 100;
		nOffY = 100;
		dAngle = dUnit*s_aAngle16[nDir];
		Coordinates(dAngle, nOffX, nOffY);
		//
		memset(&infEffect, 0, sizeof(EFFECT_INFO));
		infEffect.pCaster = pCaster;
		infEffect.pTarget = pTarget;
		infEffect.nType = pCaster->excute_MagicNum;
		infEffect.nEffect = pMagic->next_Effect;
		infEffect.nSub = pMagic->magicSubNum;
		infEffect.nDir = nDir;
		infEffect.nSrcX = pMagic->x;
		infEffect.nSrcY = pMagic->y;
		infEffect.nDstX = pMagic->x + nOffX;
		infEffect.nDstY = pMagic->y + nOffY;
		AddEffect(&infEffect);
	}
}

void CBattle::EffectMulti(MAGICLIST* pMagic, int nCount)
{ // 老沥 埃拜栏肺 咯矾俺 唱啊绰 捞棋飘 屈怕
	LPCHARACTER pCaster = pMagic->lpChar_Own;
	LPCHARACTER pTarget = pMagic->lpChar_Target;
	if (pCaster == NULL || pTarget == NULL) 	return;  
	
	EFFECT_INFO infEffect;
	POINT ptDistance;
	
	for (int i = 0; i < nCount; i++)
	{   
		ptDistance = s_aDistance[pCaster->direction][i];
		//
		memset(&infEffect, 0, sizeof(EFFECT_INFO));
		infEffect.pCaster = pCaster;
		infEffect.pTarget = pTarget;
		infEffect.nType = pCaster->excute_MagicNum;
		infEffect.nEffect = pMagic->next_Effect;
		infEffect.nSub = pMagic->magicSubNum;
		infEffect.nDir = pCaster->direction;
		infEffect.nSrcX = pMagic->x + ptDistance.x;
		infEffect.nSrcY = pMagic->y + ptDistance.y;
		infEffect.nDstX = pMagic->tarx + ptDistance.x;
		infEffect.nDstY = pMagic->tary + ptDistance.y;
		AddEffect(&infEffect);
	}
}

void CBattle::EffectBreath(MAGICLIST* pMagic, int nX, int nY)
{ // 宏饭胶 捞棋飘 屈怕
	LPCHARACTER pCaster = pMagic->lpChar_Own;
	LPCHARACTER pTarget = pMagic->lpChar_Target;
	if (pCaster == NULL || pTarget == NULL) 	return;  
	
	const int nDir = s_aOffset[pCaster->direction][0];
	const double dAngle = 3.141592/4.0*s_aAngle8[nDir];
	Coordinates(dAngle, nX, nY);
	
	::InsertMagic(pCaster, pTarget,
		pMagic->next_Effect,
		pMagic->magicSubNum,
		pMagic->x + nX,
		pMagic->y - nY,
		pMagic->tarx + nX, 
		pMagic->tary - nY,
		false, 0, false, 

⌨️ 快捷键说明

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