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

📄 skilltool.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
				case IDC_NPCNO_UP:			//NPC惯积荐
						if(g_MapSkillTable.skillno == 6)
						{
							g_MapSkillTable.tile_Range++;
							//if(g_MapSkillTable.tile_Range>10)	g_MapSkillTable.tile_Range=10;
							sprintf (temp, "%d", g_MapSkillTable.tile_Range);
							Edit_SetText (GetDlgItem(hDlg, IDC_GENER_NO ), temp);
						}
						return TRUE;
				case IDC_NPCNO_DOWN:		//NPC惯积荐
						if(g_MapSkillTable.skillno == 6)
						{
							g_MapSkillTable.tile_Range--;
							if(g_MapSkillTable.tile_Range<1)	g_MapSkillTable.tile_Range=1;
							sprintf (temp, "%d", g_MapSkillTable.tile_Range);
							Edit_SetText (GetDlgItem(hDlg, IDC_GENER_NO ), temp);
						}
						return TRUE;

				case IDC_RADIO_ALL:		radio_Statue=0;	return TRUE;
				case IDC_RADIO_FARM:	radio_Statue=1;	return TRUE;
				case IDC_RADIO_MINE:	radio_Statue=2;	return TRUE;
				case IDC_RADIO_FISH:	radio_Statue=3;	return TRUE;
				case IDC_RADIO_CHOPPING:radio_Statue=4;	return TRUE;
				case IDC_RADIO_HUB:		radio_Statue=5;	return TRUE;
				case IDC_RADIO_NPC:		radio_Statue=6;	return TRUE;
				case IDC_RADIO_HOUSE:	radio_Statue=7;	return TRUE;

				case IDC_DELETE_UP:
						delete_Type++;
						if(delete_Type>8)	delete_Type=8;
						
						switch(delete_Type)
						{
						case 1:
							sprintf(temp, lan->OutputMessage(4,151));//lsw
							break;
						case 2:
							sprintf(temp, lan->OutputMessage(4,152));
							break;
						case 3:
							sprintf(temp, lan->OutputMessage(4,153));
							break;
						case 4:
							sprintf(temp, lan->OutputMessage(4,154));
							break;
						case 5:
							sprintf(temp, lan->OutputMessage(4,155));
							break;
						case 6:
							sprintf(temp, lan->OutputMessage(4,156));
							break;
						case 7:
							sprintf(temp, lan->OutputMessage(4,157));
							break;
						case 8:
							sprintf(temp, lan->OutputMessage(4,158));//lsw
							break;
						}
						Edit_SetText (GetDlgItem(hDlg, IDC_DELETE_TYPE ), temp);
						return TRUE;

				case IDC_DELETE_DOWN:
						delete_Type--;
						if(delete_Type<1)	delete_Type=1;
						
						switch(delete_Type)
						{
						case 1:
							sprintf(temp, lan->OutputMessage(4,151));	break;
						case 2:
							sprintf(temp, lan->OutputMessage(4,152));	break;
						case 3:
							sprintf(temp, lan->OutputMessage(4,153));	break;
						case 4:
							sprintf(temp, lan->OutputMessage(4,154));	break;
						case 5:
							sprintf(temp, lan->OutputMessage(4,155));	break;
						case 6:
							sprintf(temp, lan->OutputMessage(4,156));	break;
						case 7:
							sprintf(temp, lan->OutputMessage(4,157));	break;
						case 8:
							sprintf(temp, lan->OutputMessage(4,158));	break;
						}
						Edit_SetText (GetDlgItem(hDlg, IDC_DELETE_TYPE ), temp);
						return TRUE;

				case IDC_DELETE_BUTTON:
					if(YesOrNo( "Select Tile infomation delete?", "warning" ) == IDYES )//lsw
						DeleteAllType(delete_Type);
					return TRUE;

			}			
			break;		
	}				
					
	return FALSE;	
}



void tool_MyHouseLBU( WPARAM wParam, LPARAM lParam )
{
	RECT	rect,grect;
////////////////////////////////// 捞痹绕 1124 郴笼 矫胶袍 Tool ///////////////////////////////
		if(tool_ID_INPUT_MYHOUSE==1 && g_DragMouse.sx!=0 && g_MyhouseDlgOpen==0)
		{
			InputMyhouseHdlg = CreateDialog( g_hInstance, MAKEINTRESOURCE( IDD_INPUT_MYHOUSE ), g_hwndMain, (DLGPROC)MyhouseToolproc );
			ShowWindow( InputMyhouseHdlg, SW_HIDE);
			int ScreenX = GetSystemMetrics(SM_CXSCREEN);
			GetWindowRect( InputMyhouseHdlg, &rect );// 拳搁 坷弗率捞 嘿绢唱坷霸 窍妨绊 茄扒单 ... 绢痘霸 秦具 且瘤..
			GetWindowRect( g_hwndMain, &grect );// 拳搁 坷弗率捞 嘿绢唱坷霸 窍妨绊 茄扒单 ... 绢痘霸 秦具 且瘤..
			ShowWindow( InputMyhouseHdlg, SW_SHOW);
			g_MyhouseDlgOpen=1;
		}
///////////////////////////////////////////////////////////////////////////////////////////////
}



void tool_MyHouseLBD( WPARAM wParam, LPARAM lParam )
{
	g_DragMouse.sx=LOWORD(lParam)+Mapx;
	g_DragMouse.ex=LOWORD(lParam)+Mapx;
	g_DragMouse.sy=HIWORD(lParam)+Mapy;
	g_DragMouse.ey=HIWORD(lParam)+Mapy;

	SetCapture( g_hwndMain);
	if(tool_ID_OUTPUT_MYHOUSE)
		PutMyhouse((LOWORD(lParam)+Mapx)/TILE_SIZE, (HIWORD(lParam)+Mapy)/TILE_SIZE);
}











void CheckHouseObjectEdit ( HWND hwnd, HINSTANCE hInstance)
{	
	//HINSTANCE  hinst;		//error?
	hInstance = LoadLibrary("riched32.dll");
	DialogBox( hInstance, MAKEINTRESOURCE( IDD_INPUT_MYHOUSE ), NULL, (DLGPROC)MyhouseToolproc );
	FreeLibrary( hInstance /*hinst*/ );
}

BOOL CALLBACK MyhouseToolproc( HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam )
{
	char			temp[FILENAME_MAX];
	static int		map_X, map_Y;
	RECT rect, grect;
	static bool lButtonDown=false;
	int a,b;

	switch(Message)
	{
	case WM_INITDIALOG:
		/*
		map_X=Mox/32;
		map_Y=Moy/32;

		sprintf (temp, "%d", g_MyhouseTool.sx);
		Edit_SetText (GetDlgItem(hDlg, IDC_VIEW_SX ), temp);
		sprintf (temp, "%d", g_MyhouseTool.sy);
		Edit_SetText (GetDlgItem(hDlg, IDC_VIEW_SY ), temp);
		sprintf (temp, "%d", g_MyhouseTool.ex);
		Edit_SetText (GetDlgItem(hDlg, IDC_VIEW_EX ), temp);
		sprintf (temp, "%d", g_MyhouseTool.ey);
		Edit_SetText (GetDlgItem(hDlg, IDC_VIEW_EY ), temp);
		*/

		//CheckHouseObjectEdit = GetDlgItem(hDlg, IDC_OBJECT_EDIT );

		GetWindowRect( hDlg, &rect );// 拳搁 坷弗率捞 嘿绢唱坷霸 窍妨绊 茄扒单 ... 绢痘霸 秦具 且瘤..
		GetWindowRect( g_hwndMain, &grect );// 拳搁 坷弗率捞 嘿绢唱坷霸 窍妨绊 茄扒单 ... 绢痘霸 秦具 且瘤..
		MoveWindow( hDlg, grect.right+1, 0, rect.right, rect.bottom, true);
		return TRUE;

	case WM_CLOSE:
		tool_ID_INPUT_MYHOUSE=0;
		g_MyhouseDlgOpen=0;
		memset(&g_DragMouse, 0 , sizeof(DRAGMOUSE));
		break;

	case WM_COMMAND:
		switch( LOWORD( wParam ))
		{
			case IDOK:
				EndDialog(hDlg, LOWORD(wParam));
				tool_ID_INPUT_MYHOUSE=0;
				g_MyhouseDlgOpen=0;
				
				memset(&g_DragMouse, 0 , sizeof(DRAGMOUSE));
				return TRUE;
			case IDCANCEL:	
				EndDialog(hDlg, LOWORD(wParam));
				tool_ID_INPUT_MYHOUSE=0;
				g_MyhouseDlgOpen=0;
				memset(&g_DragMouse, 0 , sizeof(DRAGMOUSE));
				return TRUE;
			case IDC_SAVE:
				if(YesOrNo( "郴笼 矫胶袍 鸥老(捞固瘤) Table阑 历厘钦聪促. ", "犬牢" ) == IDYES )
				{
					FILE*		fp;
					TILE*		temp_Tile;
					int			object_Count=0;
//					MYHOUSETOOL Myhouse; //TileMap

					sprintf( temp, "./map/%s.mhb", MapName );	//犬厘磊->My House Binery
					fp = Fopen( temp, "wb" );
					if(fp)
					{
						/////////////////////////// 庆歹何盒 /////////////////////////
						int length_X=g_MyhouseTool.ex-g_MyhouseTool.sx;	//伎泛飘窍咯 磊弗 汗荐鸥老狼 辆鸥老 辨捞
						fwrite(&length_X, sizeof(int), 1, fp);
						int length_Y=g_MyhouseTool.ey-g_MyhouseTool.sy; //伎泛飘窍咯 磊弗 汗荐鸥老狼 染鸥老 辨捞
						fwrite(&length_Y, sizeof(int), 1, fp);
						int tile_Num=length_X*length_Y;					//伎泛飘等 鸥老狼 醚肮荐
						fwrite(&tile_Num, sizeof(int), 1, fp);
						
						//if(fgetpos(fp, temp_fp)==0)	
						//	;							//付瘤阜俊 坷宏璃飘狼 醚 肮荐甫 眉农茄饶 促矫 悸泼窍扁 困秦
						fwrite(&object_Count, sizeof(int), 1, fp);		//伎泛飘等 鸥老 困俊 困摹茄 醚 坷宏璃飘荐 
						///////////////////////////////////////////////////////////////

						//////////////////////////// 鸥老狼 沥焊 悸泼 //////////////////////////
						for( a=g_MyhouseTool.sx; a<=g_MyhouseTool.ex; a++)
							for( b=g_MyhouseTool.sy; b<=g_MyhouseTool.ey; b++)
							{
								temp_Tile=&TileMap[a][b];
								fwrite(temp_Tile, sizeof(TILE), 1, fp);
							}
						////////////////////////////////////////////////////////////////////////

						/////////////////////////// 坷宏璃飘狼 沥焊 悸泼 ///////////////////////////
						for(int i = 0 ; i < TotalMapObject ; i++ )
						{
							if( g_MyhouseTool.sx <= (Mo[i].x/TILE_SIZE) && g_MyhouseTool.ex >= (Mo[i].x/TILE_SIZE) &&
								g_MyhouseTool.sy <= (Mo[i].y/TILE_SIZE) && g_MyhouseTool.ey >= (Mo[i].y/TILE_SIZE) )
							{
								int temp_Mox=Mo[i].x;
								int temp_Moy=Mo[i].y;
								Mo[i].x -= (g_MyhouseTool.sx*TILE_SIZE);	//肋赴 鸥老狼 惑措 谅钎肺 傈券
								Mo[i].y -= (g_MyhouseTool.sy*TILE_SIZE);
								
								fwrite( &Mo[i], sizeof( MAPOBJECT ), 1, fp );
								Mo[i].x = temp_Mox;
								Mo[i].y = temp_Moy;
								object_Count++;
							}
						}
						///////////////////////////////////////////////////////////////////////////
						
						/*
						/////////////////////////// 瘤贺 鸥老 沥焊 悸泼 ///////////////////////////
						for(a=g_MyhouseTool.sx; a<=g_MyhouseTool.ex; a++)
							for(b=g_MyhouseTool.sy; b<=g_MyhouseTool.ey; b++)
							{
								temp_Tile=&TileMap[a][b];
								temp_Tile->attr_room;

									if ( TileMap[ a ][ b ].attr_room == 1 )		//瘤贺加己狼 鸥老捞哥 瘤贺捞 劝己拳(瘤贺捞 啊府绊 乐绰 版快)
									{
										LPEVENTLIST		lpEventList;
										LPROOFGROUP		lpRoofGroup;
										LPROOF			lpRoof;

										lpEventList = FindEventList( &g_EventListHeaderRoom, ( WORD )a, ( WORD )b );
										if ( lpEventList != NULL )
										{
											lpRoofGroup = FindRoofGroup( &g_RoofHeader, lpEventList->index );	//瘤贺 府胶飘俊辑 find
											if ( lpRoofGroup != NULL )
											{
												lpRoof = lpRoofGroup->lpFirst;
												while ( lpRoof )
												{
													TileMap[ lpRoof->x ][ lpRoof->y ].show_roof = 1;
													lpRoof = lpRoof->lpNext;
												}
											}
										}
									}
									else					//瘤贺加己 鸥老捞哥 瘤贺捞 厚劝己拳登绢 乐绰 版快(堆脖捞 凯妨乐绰 版快)
									{
										LPEVENTLIST		lpEventList;
										LPROOFGROUP		lpRoofGroup;
										LPROOF			lpRoof;

										lpEventList = FindEventList( &g_EventListHeaderRoom, ( WORD )a, ( WORD )b );
										if ( lpEventList != NULL )
										{
											lpRoofGroup = FindRoofGroup( &g_RoofHeader, lpEventList->index );
											if ( lpRoofGroup != NULL )
											{
												lpRoof = lpRoofGroup->lpFirst;
												while ( lpRoof )
												{
													TileMap[ lpRoof->x ][ lpRoof->y ].show_roof = 0;

													lpRoof = lpRoof->lpNext;
												}
											}
										}
									}
								
							}
							*/
						///////////////////////////////////////////////////////////////////////////

						fseek(fp, 3*sizeof(int), SEEK_SET);
						fwrite(&object_Count, sizeof(int), 1, fp);
						fseek(fp, 0, SEEK_END);
						fclose(fp);
						g_MyhouseTool.object_Num=object_Count;
						sprintf (temp, "%d", g_MyhouseTool.object_Num);
						Edit_SetText (GetDlgItem(InputMyhouseHdlg, IDC_VIEW_TILENUM ), temp);
					}
				}
				return TRUE;
			
			//case IDC_OBJECT_EDIT:		richEdit 皋矫瘤 贸府
			//	return TRUE;
		}				
	}				
					
	return FALSE;	
}

void PutMyhouse(int x, int y)		// 窜 牢磊 x,y绰 例措 鸥老谅钎拌肺 逞绢客具 窃
{
	char			temp[FILENAME_MAX];
	static int		map_X, map_Y;
///	RECT			rect, grect;
	static bool		lButtonDown=false;
	int				a,b;
	FILE*			fp;
	TILE			temp_Tile;
	int				object_Count=0;
//	MYHOUSETOOL		Myhouse; //TileMap
	MAPOBJECT		temp_Object;

	sprintf( temp, "./map/%s.mhb", MapName );	//犬厘磊->My House Binery
	fp = Fopen( temp, "rb" );
	if(fp)
	{
		//////////////////////////////// 庆歹何盒 //////////////////////////////
		int length_X;//=g_MyhouseTool.ex-g_MyhouseTool.sx;	//伎泛飘窍咯 磊弗 汗荐鸥老狼 辆鸥老 辨捞
		fread(&length_X, sizeof(int), 1, fp);
		int length_Y;//=g_MyhouseTool.ey-g_MyhouseTool.sy; //伎泛飘窍咯 磊弗 汗荐鸥老狼 染鸥老 辨捞
		fread(&length_Y, sizeof(int), 1, fp);
		int tile_Num;//=length_X*length_Y;					//伎泛飘等 鸥老狼 醚肮荐
		fread(&tile_Num, sizeof(int), 1, fp);
				
		fread(&object_Count, sizeof(int), 1, fp);		//伎泛飘等 鸥老 困俊 困摹茄 醚 坷宏璃飘荐 
		////////////////////////////////////////////////////////////////////////

		//////////////////////////// 鸥老狼 沥焊 悸泼 //////////////////////////
		for( a=x; a<=x+length_X; a++)
			for( b=y; b<=y+length_Y; b++)
			{
				fread(&temp_Tile, sizeof(TILE), 1, fp);
				TileMap[a][b]=temp_Tile;
			}
		////////////////////////////////////////////////////////////////////////

		/////////////////////////// 坷宏璃飘狼 沥焊 悸泼 ///////////////////////////
		for(int i = 0 ; i < object_Count ; i++ )
		{
			fread(&temp_Object, sizeof(MAPOBJECT), 1, fp);
			temp_Object.x += x;		//offset 谅钎 冻备扁->32(TILE_SIZE)甫 蚌秦具瘤
			temp_Object.x *= TILE_SIZE;
			temp_Object.y += y;
			temp_Object.y *= TILE_SIZE;
			//temp_Object.id += MapObjectLevel;			//秦寸 饭骇狼 坷宏璃飘 绊蜡锅龋 可悸父怒 歹窃(1000窜困)
			Mo[TotalMapObject+i]=temp_Object;
		}
	}
}
//------------------------------------------------




void GetEffect2Pix(void)
{
	// EffectDataLoad...
	
	int j=0;
	char filename[141][30];

	FILE* file;
	int temp = 0;
	int buff = 0;
	char buf[30];

//	buf = (char*) calloc(30, sizeof(char));
//	filename = (char*) calloc( 141, sizeof(char)*30);

	char  DataPath[MAX_PATH]="./effect/list.txt";
	
	file = Fopen( DataPath, "rt" );			//read only+text file
	
	if(file)
	{
		for(int i=0; i<141; i++)
		{
			fscanf( file, "%s\n", buf);
//			strcpy(filename[i], buf);
			sprintf(filename[i], "./effect/%s",buf);
		}
		fclose( file );
	}

	for(int i=1; i<142;i++)
	{
		if(LoadEffectSprite(i, filename[i-1]))
		{
			for(int j=0; j<Effspr[i].Count; j++)
			{
				g_DestBackBuf = GetSurfacePointer( g_DirectDrawInfo.lpDirectDrawSurfaceBack );
				EraseScreen( &g_DirectDrawInfo, RGB( 0x00, 0x00, 0x00 ) );

				PutCompressedImage( 320, 240, &Effspr[i].EffSpr[j] );

				FlipScreen( &g_DirectDrawInfo );
				CaptureScreen();
			}
		}
	}
}


//--------------------------------------------------
		
void DeleteAllType(int delete_Type)
{
	lpMAPSKILLTABLE	temp;
	for( int i=0; i<8; i++)
	{
		for( int j=0; j<8; j++)
		{
			lpMAPSKILLTABLE temp_Table=Header[i][j];
			while(temp_Table!=NULL)
			{
				if(temp_Table->skillno == delete_Type)
				{
					TileMap[i][j].attr_skill=0;
					//temp_Skill = FindSkill(g_MapSkillTable, mx, my);
					temp=temp_Table->next;
					DeleteSkill( &Header[i][j], temp_Table);
					temp_Table = temp;
				}
				else temp_Table = temp_Table->next;

			}
		}
	}
}

⌨️ 快捷键说明

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