int KScene::LuaUpdateSceneObjectObstacle(Lua_State* L) { BOOL bResult = false; BOOL bRetCode = false; int nTopIndex = 0; DWORD dwSceneObjectID = ERROR_ID; BOOL bApply = false; KSceneObject* pSceneObject = NULL; nTopIndex = Lua_GetTopIndex(L); KGLOG_PROCESS_ERROR(nTopIndex == 2); dwSceneObjectID = (DWORD)Lua_ValueToNumber(L, 1); bApply = (BOOL)Lua_ValueToNumber(L, 2); pSceneObject = GetSceneObjByID(dwSceneObjectID); KGLOG_PROCESS_ERROR(pSceneObject); ApplyObstacle(pSceneObject, bApply); bResult = true; Exit0: Lua_PushBoolean(L, bResult); return 1; }
int KItem::LuaCanEquip(Lua_State* L) { assert(L); int nCanEquipPos = -1; int nCanEquip = false; KPlayer* pPlayer = g_pSO3World->m_PlayerSet.GetObj(g_pSO3World->m_dwClientPlayerID); KGLOG_PROCESS_ERROR(pPlayer); KG_PROCESS_ERROR(getGenre() == igEquipment); for (int i = 0; i < eitTotal; ++i) { if (pPlayer->m_ItemList.CanEquip(this, i) == ircSuccess) { nCanEquipPos = i; if (i == eitLeftRing) if (pPlayer->m_ItemList.GetItem(igEquipment, eitLeftRing)) if (pPlayer->m_ItemList.CanEquip(this, eitRightRing) == ircSuccess) nCanEquipPos = eitRightRing; goto Exit1; } } goto Exit0; Exit1: nCanEquip = true; Exit0: Lua_PushBoolean(L, nCanEquip); Lua_PushNumber(L, nCanEquipPos); return 2; }
int KScene::LuaSetBattleTotalFrame(Lua_State* L) { BOOL bResult = false; BOOL bRetCode = false; int nTopIndex = 0; int nTotalFrame = 0; BOOL bReTiming = false; nTopIndex = Lua_GetTopIndex(L); KGLOG_PROCESS_ERROR(nTopIndex == 1 || nTopIndex == 2); nTotalFrame = (int)Lua_ValueToNumber(L, 1); KGLOG_PROCESS_ERROR(nTotalFrame > 0); if (nTopIndex == 2) bReTiming = (BOOL)Lua_ValueToBoolean(L, 2); bRetCode = m_Battle.SetBattleTotalFrame(nTotalFrame, bReTiming); KGLOG_PROCESS_ERROR(bRetCode); bResult = true; Exit0: Lua_PushBoolean(L, bResult); return 1; }
int LuaRefreshMapCopy(Lua_State* L) { BOOL bResult = false; BOOL bRetCode = false; int nTopIndex = 0; DWORD dwMapID = 0; int nMapCopyIndex = 0; KMapCopy* pMapCopy = NULL; nTopIndex = Lua_GetTopIndex(L); KGLOG_PROCESS_ERROR(nTopIndex == 2); dwMapID = (DWORD)Lua_ValueToNumber(L, 1); nMapCopyIndex = (int)Lua_ValueToNumber(L, 2); pMapCopy = g_pSO3GameCenter->m_MapManager.GetMapCopy(dwMapID, nMapCopyIndex); KGLOG_PROCESS_ERROR(pMapCopy); KGLOG_PROCESS_ERROR(pMapCopy->m_nConnIndex); bRetCode = g_pSO3GameCenter->m_GameServer.DoMapCopyDoClearPlayerPrepare( pMapCopy->m_nConnIndex, dwMapID, nMapCopyIndex, bpcMapRefresh, BANISH_PLAYER_WAIT_SECONDS ); KGLOG_PROCESS_ERROR(bRetCode); pMapCopy->m_eState = eMapStateRefreshing; pMapCopy->m_nRefreshTime = g_pSO3GameCenter->m_nTimeNow + BANISH_PLAYER_WAIT_SECONDS; Exit0: Lua_PushBoolean(L, bResult); return 1; }
int LuaCreateTong(Lua_State* L) { int nResult = 0; BOOL bRetCode = false; int nTopIndex = 0; DWORD dwPlayerID = 0; const char* pszTongName = 0; int nTemplateID = 0; nTopIndex = Lua_GetTopIndex(L); KGLOG_PROCESS_ERROR(nTopIndex == 3); dwPlayerID = (DWORD)Lua_ValueToNumber(L, 1); pszTongName = Lua_ValueToString(L, 2); KGLOG_PROCESS_ERROR(pszTongName); nTemplateID = (int)Lua_ValueToNumber(L, 3); bRetCode = g_pSO3GameCenter->m_TongManager.CreateTong(dwPlayerID, pszTongName, nTemplateID); Lua_PushBoolean(L, bRetCode); nResult = 1; Exit0: return nResult; }
int KHero::LuaIsTakingBall(Lua_State* L) { BOOL bResult = false; bResult = HasFollowerWithStateAndType(mosToken, sotBall); Lua_PushBoolean(L, bResult); return 1; }
int KScene::LuaFixObj(Lua_State* L) { BOOL bResult = false; BOOL bRetCode = false; int nTopIndex = 0; int nObjID = 0; KSceneObject* pSceneObj = NULL; KMovableObject* pMoveObj = NULL; KPOSITION pos; nTopIndex = Lua_GetTopIndex(L); KGLOG_PROCESS_ERROR(nTopIndex == 4); nObjID = (DWORD)Lua_ValueToNumber(L, 1); pos.nX = (int)Lua_ValueToNumber(L, 2); pos.nY = (int)Lua_ValueToNumber(L, 3); pos.nZ = (int)Lua_ValueToNumber(L, 4); pSceneObj = GetSceneObjByID(nObjID); KGLOG_PROCESS_ERROR(pSceneObj); pMoveObj = dynamic_cast<KMovableObject*>(pSceneObj); KGLOG_PROCESS_ERROR(pMoveObj); pMoveObj->FixTo(pos); g_PlayerServer.DoSyncSceneObject(pMoveObj, -1); bResult = true; Exit0: Lua_PushBoolean(L, bResult); return 1; }
int KHero::LuaAimAt(Lua_State* L) { BOOL bResult = false; BOOL bRetCode = false; int nTopIndex = 0; BOOL bAimAt = false; int nDirection = 0; KDoodad* pDoodad = NULL; nTopIndex = Lua_GetTopIndex(L); KGLOG_PROCESS_ERROR(nTopIndex == 2); bAimAt = (BOOL)Lua_ValueToNumber(L, 1); nDirection = (int)Lua_ValueToNumber(L, 2); pDoodad = GetHoldingDoodad(); KGLOG_PROCESS_ERROR(pDoodad); bRetCode = AimAt(bAimAt, nDirection, pDoodad->m_dwID, true); KGLOG_PROCESS_ERROR(bRetCode); bResult = true; Exit0: Lua_PushBoolean(L, bResult); return 1; }
int KTeamClient::LuaCanSetTeamFormationLeader(Lua_State* L) { BOOL bResult = false; BOOL bRetCode = false; KPlayer* pClientPlayer = NULL; pClientPlayer = g_pSO3World->m_PlayerSet.GetObj(g_pSO3World->m_dwClientPlayerID); KGLOG_PROCESS_ERROR(pClientPlayer); KGLOG_PROCESS_ERROR(m_dwTeamID != ERROR_ID); KG_PROCESS_ERROR(pClientPlayer->m_dwID == m_dwAuthority[tatLeader]); for (int i = 0; i < m_nGroupNum; i++) { if (pClientPlayer->m_dwID == m_TeamGroup[i].dwFormationLeader) { bResult = true; goto Exit0; } } Exit0: Lua_PushBoolean(L, bResult); return 1; }
int KSystemScriptTable::LuaIsMouseButtonSwaped(Lua_State* L) { ASSERT(L); BOOL bSwapped = ::GetSystemMetrics(SM_SWAPBUTTON); Lua_PushBoolean(L, bSwapped); return 1; }
int KItem::LuaHasScript(Lua_State* L) { BOOL bResult = false; bResult = (m_dwScriptID != 0); Lua_PushBoolean(L, bResult); return 1; }
int KScene::LuaAddCandyBagOnBasket(Lua_State* L) { BOOL bResult = false; BOOL bRetCode = false; int nTopIndex = 0; DWORD dwCandyTemplateID = ERROR_ID; int nSide = 0; int nBasketFloor = 0; KSceneObjectTemplate* pTemplate = NULL; KSceneObject* pObj = NULL; KCandyBag* pCandyBag = NULL; KBasket* pBasket = NULL; nTopIndex = Lua_GetTopIndex(L); KGLOG_PROCESS_ERROR(nTopIndex == 3); dwCandyTemplateID = (DWORD)Lua_ValueToNumber(L, 1); nSide = (int)Lua_ValueToNumber(L, 2); nBasketFloor = (int)Lua_ValueToNumber(L, 3); pTemplate = g_pSO3World->m_Settings.m_ObjTemplate.GetTemplate(dwCandyTemplateID); KGLOG_PROCESS_ERROR(pTemplate); KGLOG_PROCESS_ERROR(pTemplate->m_nType == sotCandyBag); KGLOG_PROCESS_ERROR(nSide == sidLeft || nSide == sidRight); KGLOG_PROCESS_ERROR(nBasketFloor >= bfFirst && nBasketFloor <= bfSixth); pBasket = GetBasket(nSide, nBasketFloor); KGLOG_PROCESS_ERROR(pBasket); pObj = m_pSceneObjMgr->AddByTemplate(dwCandyTemplateID); KGLOG_PROCESS_ERROR(pObj); KGLOG_PROCESS_ERROR(pObj->Is(sotCandyBag)); pCandyBag = (KCandyBag*)pObj; pCandyBag->FixTo(pBasket->GetPosition()); g_PlayerServer.DoSyncSceneObject(pCandyBag, -1); bResult = true; Exit0: if (!bResult) { if (pCandyBag) { pCandyBag->SetDeleteFlag(); pCandyBag = NULL; } } Lua_PushBoolean(L, bResult); return 1; }
int KHero::LuaAISay(Lua_State* L) { BOOL bResult = false; BOOL bRetCode = false; int nTopIndex = 0; int nTalkChannel = 0; int nMsgType = trRoom; const char* szMessage = NULL; DWORD dwTalkID = ERROR_ID; char* szTalkerName = m_szName; nTopIndex = Lua_GetTopIndex(L); KGLOG_PROCESS_ERROR(nTopIndex == 2); nTalkChannel = (int)Lua_ValueToNumber(L, 1); KGLOG_PROCESS_ERROR(nTalkChannel == KAI_TALK_CHANNEL_MAP || nTalkChannel == KAI_TALK_CHANNEL_TEAM); szMessage = Lua_ValueToString(L, 2); KGLOG_PROCESS_ERROR(szMessage); if (nTalkChannel == KAI_TALK_CHANNEL_TEAM) nMsgType = trTeam; if (m_pOwner) { dwTalkID = m_pOwner->m_dwID; szTalkerName = m_pOwner->m_szName; } for (KObjEnumerator it = m_pScene->GetObjEnumerator(); it.HasElement(); it.MoveToNext()) { KSceneObject* pObj = it.GetValue(); if (!pObj->Is(sotHero)) continue; KHero* pHero = (KHero*)pObj; KPlayer* pOwner = pHero->GetOwner(); if (!pOwner) continue; if (pOwner->m_pFightingHero != pHero) continue; if (nTalkChannel == KAI_TALK_CHANNEL_TEAM && pHero->m_nSide != m_nSide) continue; g_PlayerServer.DoTalkMessage(nMsgType, dwTalkID, szTalkerName, m_dwID, ERROR_ID, pOwner->m_dwID, pOwner->m_szName, strlen(szMessage), szMessage); } bResult = true; Exit0: Lua_PushBoolean(L, bResult); return 1; }
int KSystemScriptTable::LuaIsUnpakFileExist(Lua_State* L) { int nRetCode = false; const char * pcszFile = NULL; KGLOG_PROCESS_ERROR(Lua_GetTopIndex(L) == 1); pcszFile = Lua_ValueToString(L, 1); KGLOG_PROCESS_ERROR(pcszFile); nRetCode = ::PathFileExistsA(pcszFile); Exit0: Lua_PushBoolean(L, nRetCode); return 1; }
int KItem::LuaIsRepairable(Lua_State* L) { BOOL bResult = false; BOOL bRetCode = false; KGLOG_PROCESS_ERROR(Lua_GetTopIndex(L) == 0); bRetCode = IsRepairable(); KG_PROCESS_ERROR(bRetCode); bResult = true; Exit0: Lua_PushBoolean(L, bResult); return 1; }
int KHero::LuaSwitchAIMode(Lua_State* L) { BOOL bSuccess = false; BOOL bAiMode = false; int nTopIndex = 0; nTopIndex = Lua_GetTopIndex(L); KG_PROCESS_ERROR(nTopIndex == 1); bAiMode = Lua_ValueToBoolean(L, 1); bSuccess = bAiMode ? TurnOnAI() : TurnOffAI(); Exit0: Lua_PushBoolean(L, bSuccess); return 1; }
int KScene::LuaStartDrama(Lua_State* L) { BOOL bResult = false; BOOL bRetCode = false; int nTopIndex = 0; int nDramaID = 0; nTopIndex = Lua_GetTopIndex(L); KGLOG_PROCESS_ERROR(nTopIndex == 1); nDramaID = (DWORD)Lua_ValueToNumber(L, 1); bRetCode = m_DramaPlayer.StartDrama(nDramaID); KGLOG_PROCESS_ERROR(bRetCode); bResult = true; Exit0: Lua_PushBoolean(L, bResult); return 1; }
int KTeamClient::LuaIsPlayerInTeam(Lua_State* L) { BOOL bResult = false; int nTopIndex = 0; DWORD dwPlayerID = 0; KTEAM_MEMBER_INFO* pMemberinfo = NULL; nTopIndex = Lua_GetTopIndex(L); KGLOG_PROCESS_ERROR(nTopIndex == 1); dwPlayerID = (DWORD)Lua_ValueToNumber(L, 1); pMemberinfo = GetMemberInfo(dwPlayerID); KG_PROCESS_ERROR(pMemberinfo); bResult = true; Exit0: Lua_PushBoolean(L, bResult); return 1; }
int LuaDeleteGlobalMail(Lua_State* L) { BOOL bResult = false; BOOL bRetCode = false; int nTopIndex = 0; DWORD dwMailID = 0; nTopIndex = Lua_GetTopIndex(L); KGLOG_PROCESS_ERROR(nTopIndex == 1); dwMailID = (DWORD)Lua_ValueToNumber(L, 1); bRetCode = g_pSO3GameCenter->m_MailManager.DeleteGlobalMail(dwMailID); KG_PROCESS_ERROR(bRetCode); bResult = true; Exit0: Lua_PushBoolean(L, bResult); return 1; }
int KHero::LuaPassBall(Lua_State* L) { BOOL bResult = false; BOOL bRetCode = false; KHero* pReceiver = NULL; bRetCode = HasFollowerWithStateAndType(mosToken, sotBall); KG_PROCESS_ERROR(bRetCode); pReceiver = GetOneTeammate(); KG_PROCESS_ERROR(pReceiver); bRetCode = PassBallTo(pReceiver, false); KG_PROCESS_ERROR(bRetCode); bResult = true; Exit0: Lua_PushBoolean(L, bResult); return 1; }
int KScene::LuaRemoveTimer(Lua_State* L) { BOOL bResult = false; BOOL bRetCode = false; int nParamCount = 0; DWORD dwTimerID = 0; nParamCount = Lua_GetTopIndex(L); KGLOG_PROCESS_ERROR(nParamCount == 1); dwTimerID = (DWORD)Lua_ValueToNumber(L, 1); bRetCode = m_ScriptTimerList.RemoveTimer(dwTimerID); KG_PROCESS_ERROR(bRetCode); bResult = true; Exit0: Lua_PushBoolean(L, bResult); return 1; }
int KHero::LuaShootBall(Lua_State* L) { BOOL bResult = false; BOOL bRetCode = false; DWORD dwInterferenceHeroID = ERROR_ID; int nAimLoop = 0; bRetCode = HasFollowerWithStateAndType(mosToken, sotBall); KGLOG_PROCESS_ERROR(bRetCode); dwInterferenceHeroID = GetInterferenceID(); nAimLoop = m_nVirtualFrame - m_nLastAimTime; bRetCode = NormalShootBall(nAimLoop, dwInterferenceHeroID); KGLOG_PROCESS_ERROR(bRetCode); bResult = true; Exit0: Lua_PushBoolean(L, bResult); return 1; }
int KHero::LuaSetAIMode(Lua_State* L) { BOOL bResult = false; BOOL bRetCode = false; BOOL bAIMode = false; int nTopIndex = Lua_GetTopIndex(L); KGLOG_PROCESS_ERROR(nTopIndex == 1); bAIMode = (BOOL)Lua_ValueToNumber(L, 1); if (bAIMode) TurnOnAI(); else TurnOffAI(); bResult = true; Exit0: Lua_PushBoolean(L, bResult); return 1; }
int KScene::LuaSetBattleTemplate(Lua_State* L) { BOOL bResult = false; BOOL bRetCode = false; int nTopIndex = 0; int nBattleTemplateID = 0; nTopIndex = Lua_GetTopIndex(L); KGLOG_PROCESS_ERROR(nTopIndex == 1); nBattleTemplateID = (DWORD)Lua_ValueToNumber(L, 1); m_Battle.ApplyTemplate(nBattleTemplateID); g_PlayerServer.DoSetBattleTemplate(this); bResult = true; Exit0: Lua_PushBoolean(L, bResult); return 1; }
int KTeamClient::LuaCanSetTeamDistributeMan(Lua_State* L) { BOOL bResult = false; BOOL bRetCode = false; KPlayer* pClientPlayer = NULL; pClientPlayer = g_pSO3World->m_PlayerSet.GetObj(g_pSO3World->m_dwClientPlayerID); KGLOG_PROCESS_ERROR(pClientPlayer); KGLOG_PROCESS_ERROR(m_dwTeamID != ERROR_ID); bRetCode = ( pClientPlayer->m_dwID == m_dwAuthority[tatDistribute] || pClientPlayer->m_dwID == m_dwAuthority[tatLeader] ); KG_PROCESS_ERROR(bRetCode); bResult = true; Exit0: Lua_PushBoolean(L, bResult); return 1; }
int KTeamClient::LuaGetClientTeamMemberOnlineFlag(Lua_State* L) { int nResult = 0; int nRetCode = 0; DWORD dwMemberID = 0; KTEAM_MEMBER_INFO* pMemberInfo = NULL; nRetCode = Lua_GetTopIndex(L); KGLOG_PROCESS_ERROR(nRetCode == 1); dwMemberID = (DWORD)Lua_ValueToNumber(L, 1); KG_PROCESS_ERROR(m_dwTeamID != ERROR_ID); pMemberInfo = GetMemberInfo(dwMemberID); KGLOG_PROCESS_ERROR(pMemberInfo); Lua_PushBoolean(L, pMemberInfo->bOnlineFlag); nResult = 1; Exit0: return nResult; }
int KHero::LuaAutoMove(Lua_State* L) { BOOL bResult = false; BOOL bRetCode = false; int nTopIndex = 0; BOOL bWalk = false; int nAroundX = 0; int nAroundY = 0; int nDestX = 0; int nDestY = 0; nTopIndex = Lua_GetTopIndex(L); KGLOG_PROCESS_ERROR(nTopIndex == 5); bWalk = (int)Lua_ValueToNumber(L, 1); nAroundX = (int)Lua_ValueToNumber(L, 2); nAroundY = (int)Lua_ValueToNumber(L, 3); nDestX = (int)Lua_ValueToNumber(L, 4); nDestY = (int)Lua_ValueToNumber(L, 5); m_AIData.eTargetType = KTARGET_POSITION; m_AIData.nTargetX = nDestX; m_AIData.nTargetY = nDestY; m_AIData.nTargetZ = 0; bRetCode = UpdateAutoMoveParam(nAroundX, nAroundY, bWalk); KGLOG_PROCESS_ERROR(bRetCode); bRetCode = DirectlyMoveToDest(); KGLOG_PROCESS_ERROR(bRetCode); bResult = true; Exit0: Lua_PushBoolean(L, bResult); return 1; }
int KTeamClient::LuaSetTeamMark(Lua_State* L) { BOOL bResult = false; int nTopIndex = 0; int nMarkType = 0; DWORD dwTargetID = 0; nTopIndex = Lua_GetTopIndex(L); KGLOG_PROCESS_ERROR(nTopIndex == 2); nMarkType = (int)Lua_ValueToNumber(L, 1); dwTargetID = (DWORD)Lua_ValueToNumber(L, 2); KGLOG_PROCESS_ERROR(nMarkType >= 0 && nMarkType <= PARTY_MARK_COUNT); KG_PROCESS_ERROR(m_dwTeamID != ERROR_ID); g_PlayerClient.DoTeamSetMarkRequest(nMarkType, dwTargetID); bResult = true; Exit0: Lua_PushBoolean(L, bResult); return 1; }
int KHero::LuaIsNpc(Lua_State* L) { BOOL bResult = IsNpc(); Lua_PushBoolean(L, bResult); return 1; }
int LuaGetChargeFlag(Lua_State* L) { Lua_PushBoolean(L, g_GatewayClient.m_bChargeFlag); return 1; }