304 lines
6.6 KiB
C++
304 lines
6.6 KiB
C++
#include "stdafx.h"
|
|
|
|
#include <Object/WiseCharacter.h>
|
|
#include <Sessions/UserSessionMgr.h>
|
|
|
|
//
|
|
#include <SinTable.h>
|
|
#include <SCPlayer.h>
|
|
//
|
|
//
|
|
|
|
|
|
LF_ACTIVE_HANDLER_IMPL(S_001800_START_MARK_LF)
|
|
{
|
|
DEBUGGING_CODE_L3("");
|
|
|
|
return LFRET_SUCCESS_DEFAULT;
|
|
}
|
|
|
|
LF_ACTIVE_HANDLER_IMPL(S_001810_MOVING_LF)
|
|
{
|
|
DEBUGGING_CODE_L3("");
|
|
|
|
return LFRET_SUCCESS_DEFAULT;
|
|
}
|
|
|
|
LF_ACTIVE_HANDLER_IMPL(S_001820_MOVING_CONTROL_LF)
|
|
{
|
|
DEBUGGING_CODE_L3("");
|
|
|
|
return LFRET_SUCCESS_DEFAULT;
|
|
}
|
|
|
|
LF_ACTIVE_HANDLER_IMPL(S_001830_KBMOVING_LF)
|
|
{
|
|
DEBUGGING_CODE_L3("");
|
|
|
|
WiseUser* pUser = pDelegator->GetWiseUser();
|
|
UserSessionMgr& rMGR = pUser->GetSessionMgr();
|
|
SEND_MESSAGE_BLOCK& rSENDMSG = pUser->SEND_MSG();
|
|
ZoneControl& rZONE = pUser->ZoneController();
|
|
WiseCharacter* pCHAR = pUser->GetSelectedCharacter();
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
static BOOL bINIT_GM = FALSE;
|
|
if(!bINIT_GM)
|
|
{
|
|
MSG_CG_GM_STRING_CMD_SYN& rMsgSYN = rSENDMSG.InstanceOf<MSG_CG_GM_STRING_CMD_SYN>();
|
|
//strncpy(rMsgSYN.m_szStringCmd, "부활" ,sizeof(rMsgSYN.m_szStringCmd));
|
|
//rMGR.SendPacket(AGENT_SESSION, &rMsgSYN, sizeof(rMsgSYN));
|
|
strncpy(rMsgSYN.m_szStringCmd, "회복" ,sizeof(rMsgSYN.m_szStringCmd));
|
|
rMGR.SendPacket(AGENT_SESSION, &rMsgSYN, sizeof(rMsgSYN));
|
|
}
|
|
|
|
static float rVec[3] =
|
|
{
|
|
-37.32f, 59.3f, -25.14f
|
|
};
|
|
static float rVecSrc[3] =
|
|
{
|
|
-37.32f, 59.3f, -25.14f
|
|
};
|
|
|
|
static BOOL bINIT_WARP = FALSE;
|
|
static DWORD dwTeleport = 0;
|
|
|
|
// ---TEST---
|
|
if(!bINIT_WARP)
|
|
// ---TEST---
|
|
//if((dwTeleport % 20) == 0)
|
|
// ---TEST---
|
|
{
|
|
do
|
|
{
|
|
MSG_CG_MAP_TELEPORT_SYN& rMsgSYN = rSENDMSG.InstanceOf<MSG_CG_MAP_TELEPORT_SYN>();
|
|
|
|
static BOOL bFalse = FALSE;
|
|
static DWORD dwCC = 0;
|
|
|
|
dwCC = 0x109391*(dwCC>>23) + (0x62999384+dwCC);
|
|
CHAR cRndCC1 = (CHAR)(dwCC>>24);
|
|
dwCC = 0x109631*(dwCC>>24) + (0x32999384+dwCC);
|
|
CHAR cRndCC2 = (CHAR)(dwCC>>24);
|
|
cRndCC1 %= 10;
|
|
cRndCC2 %= 10;
|
|
|
|
if(bFalse)
|
|
{
|
|
rVec[0] += 1.0f+cRndCC1;
|
|
rVec[1] += 1.0f+cRndCC2;
|
|
//rVec[2] += 4.0f;
|
|
}
|
|
else
|
|
{
|
|
//Sleep(1000);
|
|
rVec[0] -= 1.0f+cRndCC1;
|
|
rVec[1] += 1.0f+cRndCC2;
|
|
////rVec[2] -= 4.0f;
|
|
}
|
|
bFalse = !bFalse;
|
|
|
|
CopyMemory(&rMsgSYN.vPos, &rVec, sizeof(rVec));
|
|
rMGR.SendPacket(AGENT_SESSION, &rMsgSYN, sizeof(rMsgSYN));
|
|
|
|
//if((++dwCC % 5) == 0)
|
|
{
|
|
//dwCC = (dwCC+1)%10;
|
|
CopyMemory(rVec, rVecSrc, sizeof(rVec));
|
|
++dwTeleport;
|
|
//return LFRET_SUCCESS_LOOP;
|
|
}
|
|
} while(0);
|
|
// ---TEST---
|
|
bINIT_WARP = TRUE;
|
|
// ---TEST---
|
|
}
|
|
++dwTeleport;
|
|
|
|
//static DWORD mod = 0;
|
|
// MSG_CG_BATTLE_PLAYER_ATTACK_SYN pATK_SYN[1];
|
|
// //memcpy(&msgBASE[0].m_byCategory, protocols, sizeof(WORD));
|
|
// pATK_SYN->dwClientSerial = mod;
|
|
// pATK_SYN->byAttackType = mod%3;
|
|
// pATK_SYN->dwTargetKey = 50001;
|
|
// CopyMemory(&pATK_SYN->wvCurPos, rVec, sizeof(rVec));
|
|
// CopyMemory(&pATK_SYN->wvDestPos, rVec, sizeof(rVec));
|
|
// pATK_SYN->Encode();
|
|
// rMGR.SendPacket(AGENT_SESSION, pATK_SYN, sizeof(MSG_CG_BATTLE_PLAYER_ATTACK_SYN));
|
|
//++mod;
|
|
|
|
// ---TEST---
|
|
//return LFRET_SUCCESS_LOOP;
|
|
// ---TEST---
|
|
return LFRET_SUCCESS_DEFAULT;
|
|
// ---TEST---
|
|
|
|
|
|
static DWORD dwPOS_CNT = 0;
|
|
static WORD wDIR = 1;
|
|
if(dwPOS_CNT % 10 == 0)
|
|
wDIR = wDIR==1 ? 0 : 1;
|
|
dwPOS_CNT++;
|
|
|
|
do
|
|
{
|
|
static DWORD dwCC = 0;
|
|
static WORD wAA = 0;
|
|
static WORD dwI = 0;
|
|
static BYTE bystate = 1;
|
|
|
|
dwCC = 0x109391*(dwCC>>23) + (0x62999384+dwCC);
|
|
CHAR cRndCC1 = (CHAR)(dwCC>>24);
|
|
dwCC = 0x109631*(dwCC>>24) + (0x32999384+dwCC);
|
|
CHAR cRndCC2 = (CHAR)(dwCC>>24);
|
|
cRndCC1 %= 360;
|
|
cRndCC2 %= 10;
|
|
|
|
BYTE byMoveState = 1;
|
|
|
|
static BYTE stateIDs[4] =
|
|
{
|
|
KEYBOARDMOVE_FOWARD,
|
|
KEYBOARDMOVE_BACKWARD,
|
|
KEYBOARDMOVE_LEFTSTEP,
|
|
KEYBOARDMOVE_RIGHTSTEP,
|
|
};
|
|
bystate = stateIDs[dwCC%4];
|
|
|
|
MSG_CG_SYNC_KBMOVE_SYN& rMsgSYN = rSENDMSG.InstanceOf<MSG_CG_SYNC_KBMOVE_SYN>();
|
|
rMsgSYN.m_byMoveState = (BYTE)byMoveState;
|
|
CopyMemory(&rMsgSYN.wvCurPos, rVec, sizeof(rVec));
|
|
rMsgSYN.m_wAngle = (WORD) ((60+cRndCC1) * 180.0f / WZ_PI);
|
|
rMsgSYN.m_wTileIndex = 100+dwI; // g_pHero->GetPathExplorer()->GetTile();
|
|
++dwI;
|
|
|
|
WORD wAngle = rMsgSYN.m_wAngle;
|
|
BOOL bFastMove = FALSE;
|
|
WzVector vFinalDir;
|
|
wAngle = wAngle % 360;
|
|
vFinalDir.x = g_SinTable.FSIN(wAngle); vFinalDir.y = -g_SinTable.FCOS(wAngle); vFinalDir.z = 0.0f;
|
|
|
|
WzVector wvDir1, wvDir2;
|
|
|
|
//SetVector(&vFinalDir, 0.0f, 0.0f, 0.0f);
|
|
SetVector(&wvDir1, 0.0f, 0.0f, 0.0f); // 전후진 벡터
|
|
SetVector(&wvDir2, 0.0f, 0.0f, 0.0f); // 좌우 벡터
|
|
|
|
if(bFastMove)
|
|
{
|
|
if(byMoveState == CMS_TUMBLING_RIGHT)
|
|
{
|
|
wvDir2.x = vFinalDir.y;
|
|
wvDir2.y = -vFinalDir.x;
|
|
}
|
|
else if(byMoveState == CMS_TUMBLING_LEFT)
|
|
{
|
|
wvDir2.x = -vFinalDir.y;
|
|
wvDir2.y = vFinalDir.x;
|
|
}
|
|
else if(byMoveState == CMS_TUMBLING_BACK)
|
|
{
|
|
wvDir1 = -vFinalDir;
|
|
}
|
|
// 전진 숏대시
|
|
else
|
|
{
|
|
wvDir1 = vFinalDir;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// 전후진 벡터중 선택
|
|
if(byMoveState & KEYBOARDMOVE_FOWARD)
|
|
{
|
|
// 전진
|
|
wvDir1 = vFinalDir;
|
|
}
|
|
else if(byMoveState & KEYBOARDMOVE_BACKWARD)
|
|
{
|
|
// 후진
|
|
wvDir1 = -vFinalDir;
|
|
}
|
|
|
|
// 좌게걸음, 우게걸음 벡터중 선택
|
|
if(byMoveState & KEYBOARDMOVE_RIGHTSTEP)
|
|
{
|
|
wvDir2.x = vFinalDir.y; // sin(a - 90) = -cos(a) = wvDir.y;
|
|
wvDir2.y = -vFinalDir.x; // -cos(a - 90) = -sin(a) = -wvDir.x;
|
|
}
|
|
else if(byMoveState & KEYBOARDMOVE_LEFTSTEP)
|
|
{
|
|
wvDir2.x = -vFinalDir.y; // sin(a + 90) = cos(a) = -wvDir.y;
|
|
wvDir2.y = vFinalDir.x; // -cos(a + 90) = sin(a) = wvDir.x;
|
|
}
|
|
}
|
|
|
|
// 전후진 벡터와 좌우 벡터를 더한 벡터를 노멀라이즈 한 것이 최종 방향
|
|
WzVector addVec = wvDir1 + wvDir2;
|
|
VectorNormalize(&vFinalDir, &addVec);
|
|
|
|
//(*(WzVector*)&rVec) += vFinalDir;
|
|
(*(WzVector*)&rVec) += addVec;
|
|
//CopyMemory(rVec, &vFinalDir, sizeof(rVec));
|
|
|
|
|
|
rMsgSYN.Encode();
|
|
|
|
rMGR.SendPacket(AGENT_SESSION, &rMsgSYN, sizeof(rMsgSYN));
|
|
|
|
//if((++dwCC % 10) == 0)
|
|
//{
|
|
// wAA += 10;
|
|
//}
|
|
|
|
} while(0);
|
|
|
|
//DWORD* pD = (DWORD*)&rVec;
|
|
//static DWORD vTime = GetTickCount();
|
|
//if(vTime + 2000 > GetTickCount())
|
|
//{
|
|
// static DWORD vRnd = GetTickCount();
|
|
// vRnd = 0x440392*vRnd + (0x29133849+(vRnd>>8));
|
|
// for(DWORD i=0 ; i<3 ; ++i, ++pD)
|
|
// {
|
|
// *pD = vRnd;
|
|
// vRnd = 0x440392*vRnd + (0x29133849+(vRnd>>8));
|
|
// }
|
|
// rMsgSYN.vPos = rVec;
|
|
// rMGR.SendPacket(AGENT_SESSION, &rMsgSYN, sizeof(rMsgSYN));
|
|
//}
|
|
|
|
return LFRET_SUCCESS_LOOP;
|
|
}
|
|
|
|
LF_ACTIVE_HANDLER_IMPL(S_001840_KBMOVING_CONTROL_LF)
|
|
{
|
|
DEBUGGING_CODE_L3("");
|
|
|
|
return LFRET_SUCCESS_DEFAULT;
|
|
}
|
|
|
|
|
|
|
|
LF_ACTIVE_HANDLER_IMPL(S_001900_EOL_FLOW_CONTROL_LF)
|
|
{
|
|
//DEBUGGING_CODE_L3("");
|
|
|
|
// 현재 존 상태, 그리고 새롭게 이동할 경우에 대한 처리를 담당하자.
|
|
// 그외의 상태는 현재 존 상태를 유지하면서 필요한 부분을 처리하자.
|
|
|
|
return LFRET_SUCCESS_LOOP;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|