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

📄 gameproc.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			else
				Mox -= distance_X;
			break;
		case 1:		//y 措莫
			if(Hero->y > Moy)
				Moy += distance_Y;
			else
				Moy -= distance_Y;
			break;
		case 2:		//x,y 措莫
			if(Hero->x > Mox)
				Mox += distance_X;
			else
				Mox -= distance_X;
			if(Hero->y > Moy)
				Moy += distance_Y;
			else
				Moy -= distance_Y;
			break;	
		case 3:		//random pattern
			Mox = rand()%distance_X-distance_X/2;
			Moy = rand()%distance_Y-distance_Y/2;
			break;
		}
	}
	
	
	*mx = Mox;
	*my = Moy;
}


#define MELEE				0
#define RANGE_BOW			1	
#define RANGE_DEFAULT		2

int GetItemKind(int itemno)
{
	int itemkind = GetItemAttr(itemno, ITEM_KIND);
	if (itemkind == 0) return -1;
  
	switch (itemkind)
	{
		case IK_LONG_BOW:    
		case IK_ARROW_POINT:
		case IK_HURL:
		case IK_SHORT_BOW:
		case IK_DUAL_BOW://030102 lsw
		case IK_TWO_ARROW:
		case IK_DUAL_ARROW://030102 lsw
		case IK_SNOW_BALL:   
		{ // 厘芭府 公扁
		  return RANGE_BOW;
		}
		case IK_WHIRL:       
		case IK_STAFE:
		case IK_SPEAR:
		case IK_FORK:        
		{ // 吝芭府 公扁
		  return RANGE_DEFAULT;
		}
	}

  return MELEE; // 窜芭府公扁
}

// mousebutton : 0 : LeftClick 
//				 1 : Left Double Click..
//////////////////////////// 0522 LKH 荐沥 //////////////////////////////
void HeroActionProc( int mousebutton, int mx, int my  )
{	//< CSD-030930
	if( g_StartMenuOn == TRUE )  return;
	if( IsMouseOnMenu() ) return;
	
	mx /= TILE_SIZE;	mx *= TILE_SIZE;	mx += (TILE_SIZE/ 2);
	my /= TILE_SIZE;	my *= TILE_SIZE;	my += (TILE_SIZE/ 2);
	
	if( Hero )
	{
		if( abs( mx - Hero->x)/TILE_SIZE > Hero->sight * 2  )	return;
		if( abs( my - Hero->y)/TILE_SIZE > Hero->sight * 2  )	return;
	}
	//< CSD-021021
	if (Hero->condition&CON_STONE)
	{ // 酒贰 惑怕俊辑绰 橇饭烙 沥瘤 棺 捞悼阂啊
		return;
	}
	// 促矫 惑怕 雀汗
	if (Hero->viewtype == VIEWTYPE_STONE_)   
	{
		Hero->viewtype = VIEWTYPE_NORMAL_;
	}
	//> CSD-021021
	switch (Hero->peacests)
	{											
	case PC_STATUS_PEACE:
		{
			switch (g_GameInfo.nSelectedSpriteType)
			{								
			case SPRITETYPE_NONE:  // 喘妨柳 惑怕俊辑 酒公巴档 Checking等巴捞 绝促搁.. 弊成 捞悼茄促.
				{
					Hero->nAttackedType = 0;
					Hero->lpAttacked = NULL;
					DoHeroMove(mousebutton, mx, my);
					break;
				}
			case SPRITETYPE_ON_THE_CEILING_CHAR:
			case SPRITETYPE_CHARACTER:
			case SPRITETYPE_MONSTER:
			case SPRITETYPE_NPC:
				{
					Hero->nAttackedType = g_GameInfo.nSelectedSpriteType;
					Hero->lpAttacked = (void*)g_GameInfo.lpcharacter;
					DoHeroEvent(mx, my);
					break;
				}
			}
			
			break;
		}
	case PC_STATUS_BATTLE:
		{
           	switch (g_GameInfo.nSelectedSpriteType)
			{								
			case SPRITETYPE_NONE :  
				{	// 喘妨柳 惑怕俊辑 酒公巴档 Checking等巴捞 绝促搁.. 弊成 捞悼茄促. 
					if (ACTION_ATTACK_BOW == Hero->nCurrentAction|| ACTION_THROW == Hero->nCurrentAction)
					{	//拳混筋扁唱 厚档 带瘤扁 悼累吝俊 鸥百阑 檬扁拳 窍瘤 臼配废 茄促.
						goto NEXT_PROCESS_;
					}	// 0303011 kyo

					Hero->nAttackedType = 0;
					Hero->lpAttacked = NULL;
					DoHeroMove(mousebutton, mx, my);
					break;
				}				
			case SPRITETYPE_ON_THE_CEILING_CHAR:
			case SPRITETYPE_CHARACTER:
			case SPRITETYPE_MONSTER:
			case SPRITETYPE_NPC:	
				{
					switch ((g_GameInfo.lpcharacter)->sprno)	//父距俊 郴啊 傍拜窍妨绰 歹固啊 漠俊 嘎瘤 臼栏搁....
					{	
					case 92: 
					case 93:	
						{	// 窜芭府 公扁 楷嚼侩 歹固
							if (GetItemKind(EquipItemAttr[ WT_WEAPON].item_no) != MELEE)
							{
								AddCurrentStatusMessage( 255,100,100, lan->OutputMessage(9,6) );//010215 lsw
								goto RET_;
							}

							goto NEXT_PROCESS_;
						}											
					case 94: 
						{	// 厘芭府 公扁 楷嚼侩	
							if( GetItemKind ( EquipItemAttr[ WT_WEAPON].item_no ) != RANGE_BOW )
							{
								AddCurrentStatusMessage( 255,100,100,lan->OutputMessage(9,7) );//010215 lsw
								goto RET_;
							}

							goto NEXT_PROCESS_;
						}
					case 95:
						{	// 吝芭府 公扁 楷嚼侩
							if( GetItemKind ( EquipItemAttr[ WT_WEAPON].item_no ) != RANGE_DEFAULT )
							{
								AddCurrentStatusMessage( 255,100,100, lan->OutputMessage(9,8) );//010215 lsw
								goto RET_;
							}

							goto NEXT_PROCESS_;
						}
					}
				}
			case SPRITETYPE_ITEM:
				{
NEXT_PROCESS_:
					DoHeroAttack( mx, my );
					break;
				}
			}			
			break;
		}
	}													

RET_:
	HeroActionProcChecked = true;	
}	//> CSD-030930

int g_CurrCharStatus;
#define CCS_NONE		0	
#define CCS_ATTACKING	1	// 傍拜吝捞菌促.
#define CCS_MOVING		2	// 叭绰吝捞菌促.


extern void MouseProcess( UINT message, WPARAM wParam, LPARAM lParam);
void DoLbuttonStill()
{
	//if( !GetSysInfo( SI_GAME_MAKE_MODE ) ) return;

	static bool flag = true;
	switch( g_CurrCharStatus )
	{
		case CCS_ATTACKING :
			{
				if( flag == false )
				{
					static ct = 1;
					if( !(ct%10) )		// 15锅寸 1锅
					{
						DWORD Param;
						Param = MAKELONG( g_pointMouseX, g_pointMouseY );
						MouseProcess( WM_LBUTTONDOWN, 0 , Param );
						DoLButtonDown( );
					}
					ct++;
				}
				else flag = false;
				break;
			}
		default : flag = true;
	}
}

void DoLButtonDown( void )	// LButton捞 促款登搁 角青登绢 瘤绰镑...
{
	int mx, my;						
	if( ViewTipsCheck()) return;
	if( MouseCursorOnOff == false ) return;// 扁贱矫傈吝.
	if( NotNeededMouseLButtonClick() ) return;
	if( CounselerSelectChar() ) return;
	if( CheckSkill() ) return;

	////////////// 捞痹绕 1112 //////////////////
	if( tool_ID_SKILL_INPUT)		//skill 加己 涝仿芒捞 劝己拳登绢 乐绰 版快
    {
		char temp[FILENAME_MAX];
		mx=Mox/32;
		my=Moy/32;
		g_MapSkillTable.x = mx;
		g_MapSkillTable.y = my;
		sprintf (temp, "%d", mx);
		Edit_SetText (GetDlgItem(InputSkillAttrHdlg, IDC_INPUT_TILE_X ), temp);	//急琶等 鸥老 辆谅钎
		sprintf (temp, "%d", my);
		Edit_SetText (GetDlgItem(InputSkillAttrHdlg, IDC_INPUT_TILE_Y ), temp);	//急琶等 鸥老 辆谅钎
		MapSkillTool_Attr( mx, my);
		return;
    }
	/////////////////////////////////////////////////

	if( tool_ID_INPUT_MYHOUSE )
		return;


	if( tool_mapobject_modify == 0  ) IDCheckedMapObject = -1;
	if( IDCheckedMapObject != -1 )
	{
		ViewMapObjectInfo();
		return;
	}
	if( tool_IDD_INPUT_MAPOBJECT )
	{
		InsertMapObject(  tool_CurMapObjectId, Mox, Moy );
		return;
	}

	if( YouCanHeroActionProc )
	{
		YouCanHeroActionProc = 0;
		MouseClickPosition( &mx, &my );
		if( CheckEventWith_Item() ) return;
		HeroActionProc( Lc_DefaultMoveType, mx, my  );
		g_CurrCharStatus = CCS_ATTACKING;
	}
	else return; 

	// 011210 YGI
	ClickCharacter();		//  努腐 
}										


extern	void	PutMouseItemCheck();
void DoLButtonUp( void )
{
	g_CurrCharStatus = CCS_NONE;
//	int mx, my;										
	if( ViewTipsCheck() )  return;								
												
	if( g_MouseItemType == 1 )//酒捞袍阑 甸绊 乐绊 绢凋啊俊 初绰促
	{												
		switch( g_GameInfo.nSelectedSpriteType )
		{
		case SPRITETYPE_ON_THE_CEILING_CHAR	 :
		case SPRITETYPE_MONSTER		:
		case SPRITETYPE_NPC			:	break;
		case SPRITETYPE_CHARACTER	:	//021030 lsw //弊 措惑捞 某腐磐扼搁
			{
				if( g_GameInfo.lpcharacter )		// 0131 YGI
				{
					if( g_MouseInMenu ) 
					{
						return;		// 0224 YGI
					}
					if( g_GameInfo.lpcharacter->id>=0 && g_GameInfo.lpcharacter->id<=10000 )
					{
						if( g_GameInfo.lpcharacter != Hero )//惑措啊 郴 某腐磐啊 酒聪扼搁
						{
							if(CheckPC && g_GameInfo.lpcharacter->viewtype != VIEWTYPE_GHOST_)//030127 lsw
							{
								LButtonDown = 0;
								MouseDrag	= 0;
								::PutMouseItemCheck();// 角力肺 酒捞袍阑 登倒妨 初绰促. ( 怖 捞磊府俊.. )
								::SendExchangeItemWithOtherCh( g_GameInfo.lpcharacter->id,EXCHANGE_TYPE_NORMAL);//021030 lsw
								g_DropOnHero = true;
							}
						}
					}
				}
			}break;
		}
		return;
	}	

	if( YouCanHeroActionProc ) 
	{
		int mx,my;
		YouCanHeroActionProc = 0;
		MouseClickPosition( &mx, &my );
		if( CheckEventWith_Item() ) return;
		HeroActionProc( Lc_DefaultMoveType, mx, my  );
	}
	else return; 

}		
		
		
		
void DoRButtonDown( void )
{			
	static int t;
		
	int x=0,y=0;
		
	if( MouseCursorOnOff == false ) return;// 扁贱矫傈吝.

	

	//////////////////// 0311 lkh 眠啊 ////////////////////
	switch( g_Operator_Function )
	{
	case OPERATOR_PLAYSOUND_EVENT1:
		SendCMD_CHARACTER_DEMAND(CCD_PLAYSOUND_EVENT1, Hero->id);
		g_Operator_Function = 0;
		break;
	case OPERATOR_PLAYSOUND_EVENT2:
		SendCMD_CHARACTER_DEMAND(CCD_PLAYSOUND_EVENT2, Hero->id);
		g_Operator_Function = 0;
		break;
	case OPERATOR_OUTPUT_CELEBRATE:
		if(g_GameInfo.lpcharacter == NULL)	
		{
			g_Operator_Function = 0;
			break;
		}
		if(g_GameInfo.lpcharacter->type == SPRITETYPE_CHARACTER || g_GameInfo.lpcharacter->type == SPRITETYPE_MONSTER)
		{	//< CSD-TW-030606
			g_mgrBattle.SendMagicExecute(OPERATOR_OUTPUT_CELEBRATE, g_GameInfo.lpcharacter, g_GameInfo.lpcharacter->x, g_GameInfo.lpcharacter->y);
			g_Operator_Function = 0;
		}	//> CSD-TW-030606
		break;
	}
	//////////////////// 咯扁鳖瘤 ////////////////////////

	SkillSettingClear();
		
	if( g_StartMenuOn ) return;
		
		
//	if( CursorCheckedItem != NULL ) { ViewItemInfo(); return; }
	
	// 011210 YGI
	if( tool_MultiChar|| ( IsReporterMode() && TileMap[Mox/TILE_SIZE][Moy/TILE_SIZE].attr_dont == 0 ) )
	{
		//Mox-=TILE_SIZE;
		Moy-=TILE_SIZE;
		TileMap[Hero->position.x][Hero->position.y].occupied = 0;
		Hero->x = Mox;
		Hero->y = Moy;
		Hero->gox = Mox;
		Hero->goy = Moy;
		Hero->position.x = Mox / TILE_SIZE;
		Hero->position.y = Moy / TILE_SIZE;
		SendMoveData( Hero );
		HeroActionProc( Lc_DefaultMoveType, Mox, Moy+TILE_SIZE);
		return;
	}
	
	////////////// 捞痹绕 1112 //////////////////
	if( tool_ID_SKILL_INPUT )		//skill 加己 涝仿芒捞 劝己拳登绢 乐绰 版快
    {		
		lpMAPSKILLTABLE	result;
		int	mx=Mox/32;
		int	my=Moy/32;
			
		char temp[FILENAME_MAX];
		sprintf (temp, "%d", mx);
		Edit_SetText (GetDlgItem(InputSkillAttrHdlg, IDC_INPUT_TILE_X ), temp);	//急琶等 鸥老 辆谅钎
		sprintf (temp, "%d", my);
		Edit_SetText (GetDlgItem(InputSkillAttrHdlg, IDC_INPUT_TILE_Y ), temp);	//急琶等 鸥老 辆谅钎
			
		// 010312 KHS
		int hx, hy;
		hx = (int)(mx/(int)((g_Map.file.wWidth+7)/8));
		hy = (int)(my/(int)((g_Map.file.wHeight+7)/8));
		
		// 0308 lkh
		result=FindSkill(&Header[hx][hy], mx, my);
		if( result )
		{	
			DeleteSkill(&Header[hx][hy], result);
			result=FindSkill(&Header[hx][hy], mx, my);
			if( result == NULL )
				TileMap[ mx][my].attr_skill=0;
		}	
		return;
    }		
	/////////////////////////////////////////////////
	
	if( tool_IDD_INPUT_MAPOBJECT )
	{
		DeleteMapObject( IDCheckedMapObject );
		return;
	}


	/////////////////////////// 0430 lkh 荐沥 //////////////////////////////
	if(!IsMenuActive())		// 劝己拳等 皋春救俊 付快胶啊 乐绰瘤甫 魄窜
	{
		if(g_AttackSkill_Trace1)
		{
			//InsertMagic( Hero, Hero, 8, 1, 0, 0, 0, 0, 0); // 030402 kyo //捞惑 瞒隆 泅惑
		}
		else if(g_AttackSkill_Trace2)
		{
			//InsertMagic( Hero, Hero, 8, 2, 0, 0, 0, 0, 0); // 030402 kyo
		}
		else
		{
			CheckDoingAppointMagic();
		}
	}

	if ( Hero->nCurrentAction==17)		// 011214 LTS // 旧篮 惑怕俊辑 规氢阑 官操绢 霖促.
	{
		switch(Hero->direction)
		{
		case DIRECTION_UP			: Hero->direction=DIRECTION_RIGHTUP;	break;
		case DIRECTION_RIGHTUP		: Hero->direction=DIRECTION_RIGHT;		break;
		case DIRECTION_RIGHT		: Hero->direction=DIRECTION_RIGHTDOWN;	break;
		case DIRECTION_RIGHTDOWN	: Hero->direction=DIRECTION_DOWN;		break;
		case DIRECTION_DOWN			: Hero->direction=DIRECTION_LEFTDOWN;	break;
		case DIRECTION_LEFTDOWN		: Hero->direction=DIRECTION_LEFT;		break;
		case DIRECTION_LEFT			: Hero->direction=DIRECTION_LEFTUP;		break;
		case DIRECTION_LEFTUP		: Hero->direction=DIRECTION_UP;			break;
		}
		t_packet p;
		p.h.header.type=CMD_SITDOWN_DIRECTION_CHANGED;
		p.u.LocalWar.SDChanged.Direction=Hero->direction;
		p.h.header.size=sizeof(t_SDChanged);
		QueuePacket(&p,1);
		return;	
	}

		
/*
	int magic_no;
	if( !tool_ID_EFFECT_TEST )
	{
		magic_no = 30;	
	}
	else
	{
		magic_no = Hero->excute_MagicNum;
	}
*/


}		


		
void DoRButtonUp( void )
{
}

void DoLDButtonDown( void )
{
	int mx, my;	

	return;

	if( NotNeededMouseLButtonClick() ) return;

	MouseClickPosition( &mx, &my );

	if( Lc_DefaultMoveType == 0 ) //  扁夯崔府扁肺 汲沥登绢乐促搁 DoubleClick 阑 利侩窍唱 弊犯瘤 臼栏搁 龋免窍瘤 臼绰

⌨️ 快捷键说明

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