📄 skilltool.cpp
字号:
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 + -