?? gameproc.cpp
字號:
if( temp_Dist_X < 32 ) temp_Dist_X=32;
if( temp_Dist_Y < 32 ) temp_Dist_Y=32;
distance_X = (temp_Dist_X*2) + ( ( rand() % temp_Dist_X / 2 ) - (temp_Dist_X/4) );
distance_Y = (temp_Dist_Y*2) + ( ( rand() % temp_Dist_Y / 2 ) - (temp_Dist_Y/4) );
switch(rand()%4)
{
case 0: //x 措莫
if(Hero->x > Mox)
Mox += distance_X;
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 DoRBut
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -