Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: Source RoxGaming Main 5.2 - 60 FPS UPDATE  (Visto 20094 veces)

0 Miembros and 1 Guest are viewing this topic.

Offline KhongGianOL #80 Posteado: June 25, 2025, 10:09:42 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 245
  • Gracias recibida: 701
  • vn
hi, do you know how to animate the HP/MP interface?

Như thế này à
https://ibb.co/4nQkZPDf

sao tui làm đủ mọi cách mà chạy Main.exe vẫn xuất hiện hộp thoại Lua_Gerneric_Call error....ta

Be kind, for everyone you meet is fighting their hard battle

Offline samsunggon #81 Posteado: June 26, 2025, 02:40:40 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 470
  • Gracias recibida: 2461
  • ph
hi, do you know how to animate the HP/MP interface?

Như thế này à
https://ibb.co/4nQkZPDf

sao tui làm đủ mọi cách mà chạy Main.exe vẫn xuất hiện hộp thoại Lua_Gerneric_Call error....ta

main info

OnlyCryptedLua         = 0


DISCORD: valentino1515


Offline KhongGianOL #82 Posteado: June 27, 2025, 03:06:17 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 245
  • Gracias recibida: 701
  • vn
Help, please add MuHelper ongame....

Be kind, for everyone you meet is fighting their hard battle

Offline KhongGianOL #83 Posteado: June 27, 2025, 10:41:19 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 245
  • Gracias recibida: 701
  • vn

 

Please share it ? CNewUICheckBox

CNewUICheckBox* cbox = new CNewUICheckBox;

Be kind, for everyone you meet is fighting their hard battle

Gracias:


Offline dakosmu #84 Posteado: June 27, 2025, 03:47:18 PM

  • Colaborador
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 779
  • Gracias recibida: 11645
  • ve
Dakosmu Colaborador

Offline KhongGianOL #85 Posteado: June 28, 2025, 11:26:03 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 245
  • Gracias recibida: 701
  • vn
         IMAGE_MACROUI_HELPER_RAGEMINUS = BITMAP_INTERFACE_MACROUI_BEGIN,      // newui_position02.tga         (70, 25)   
         IMAGE_MACROUI_HELPER_OPTIONBUTTON = BITMAP_INTERFACE_MACROUI_BEGIN + 1,      // newui_position02.tga         (70, 25)   
         IMAGE_MACROUI_HELPER_INPUTNUMBER = BITMAP_INTERFACE_MACROUI_BEGIN + 2,
         IMAGE_MACROUI_HELPER_INPUTSTRING = BITMAP_INTERFACE_MACROUI_BEGIN + 3,


Help, Error search how this @dakosmu

Be kind, for everyone you meet is fighting their hard battle

Offline ledemkhoc #86 Posteado: June 28, 2025, 12:36:54 PM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 50
  • Gracias recibida: 27
  • vn
thêm xong có sài được đâu bác

Gracias:


Offline KhongGianOL #87 Posteado: June 28, 2025, 01:39:07 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 245
  • Gracias recibida: 701
  • vn
thêm xong có sài được đâu bác


         IMAGE_MACROUI_HELPER_RAGEMINUS = BITMAP_INTERFACE_MACROUI_BEGIN,      // newui_position02.tga         (70, 25)   
         IMAGE_MACROUI_HELPER_OPTIONBUTTON = BITMAP_INTERFACE_MACROUI_BEGIN + 1,      // newui_position02.tga         (70, 25)   
         IMAGE_MACROUI_HELPER_INPUTNUMBER = BITMAP_INTERFACE_MACROUI_BEGIN + 2,
         IMAGE_MACROUI_HELPER_INPUTSTRING = BITMAP_INTERFACE_MACROUI_BEGIN + 3,

Lỗi ở đây, cậu fix ntn mà hiện đc thế ?

Be kind, for everyone you meet is fighting their hard battle

Offline Malkom99 #88 Posteado: June 29, 2025, 12:06:59 AM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 17
  • Gracias recibida: 3
  • br
fix bug custom raven to reload character dont attack any more, need reload gameserver.. any solution for this bug?


Offline ledemkhoc #89 Posteado: June 29, 2025, 12:50:04 AM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 50
  • Gracias recibida: 27
  • vn
bác tìm _TextureIndex.h thêm cái
BITMAP_INTERFACE_MACROUI_BEGIN,
BITMAP_INTERFACE_MACROUI_END = BITMAP_INTERFACE_MACROUI_BEGIN + 4,

muhelp này phải thêm helpdate mới sài dc mà rối não quá


Offline KhongGianOL #90 Posteado: June 29, 2025, 11:36:37 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 245
  • Gracias recibida: 701
  • vn
bác tìm _TextureIndex.h thêm cái
BITMAP_INTERFACE_MACROUI_BEGIN,
BITMAP_INTERFACE_MACROUI_END = BITMAP_INTERFACE_MACROUI_BEGIN + 4,

muhelp này phải thêm helpdate mới sài dc mà rối não quá
Cho xin cái source main của cậu đc ko ? tui thêm vào r, nhấn phím Z cái nó hiện cái bảng kỳ cục lắm...k phải bản MuHelper

Be kind, for everyone you meet is fighting their hard battle

Offline phuongcuongmsqm #91 Posteado: June 30, 2025, 04:37:11 AM

  • 0 puntos por ventas
  • *
  • Rank: Sup. destacado
  • Posts: 101
  • Gracias recibida: 30
  • vn
bác tìm _TextureIndex.h thêm cái
BITMAP_INTERFACE_MACROUI_BEGIN,
BITMAP_INTERFACE_MACROUI_END = BITMAP_INTERFACE_MACROUI_BEGIN + 4,

muhelp này phải thêm helpdate mới sài dc mà rối não quá
Cho xin cái source main của cậu đc ko ? tui thêm vào r, nhấn phím Z cái nó hiện cái bảng kỳ cục lắm...k phải bản MuHelper
BÁC ADD ĐƯỢC HELPER CHƯA ?CHO E XIN MẤY FILE THIẾU VỚI Ạ


Offline tiagozika #92 Posteado: July 02, 2025, 09:41:22 AM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 5
  • Gracias recibida: 1
  • br
alguem consegiu usar olua do cliente e muserver aqui esta dando erro de call sempre se alguem poder ajudar me chama no whatsapp 48992218971


Offline SPK #93 Posteado: July 02, 2025, 10:40:28 AM

  • 0 puntos por ventas
  • *
  • Rank: Avanzado
  • Posts: 141
  • Gracias recibida: 1372
  • vn
thêm xong có sài được đâu bác

Xài được cái đầu cc =)) chúng nó share cái Form thôi. còn Code Controller nó đéo có Share... Mai t rảnh ta tách ra tao share luôn =))

Gracias:


Offline phuongcuongmsqm #94 Posteado: July 02, 2025, 08:38:55 PM

  • 0 puntos por ventas
  • *
  • Rank: Sup. destacado
  • Posts: 101
  • Gracias recibida: 30
  • vn
thêm xong có sài được đâu bác

Xài được cái đầu cc =)) chúng nó share cái Form thôi. còn Code Controller nó đéo có Share... Mai t rảnh ta tách ra tao share luôn =))
THANK BÁC NHIỀU


Offline spartacus #95 Posteado: July 05, 2025, 08:50:00 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 260
  • Gracias recibida: 120
  • cl
BUG:
chat not working
and
custom jewels need to switch character to apply


use em ZzzScene.cpp

if(ChatTime > 0) ChatTime--;
      if(MacroTime > 0) MacroTime--;

where exactly do i add this in the cpp?


Offline caminhada #96 Posteado: July 05, 2025, 09:19:45 PM | Modificado: July 10, 2025, 03:39:37 AM by ZabiinoOo

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 12
  • Gracias recibida: 6
  • br
Code: [Select]
//FIX CHAT TO FOR ZzzScene.cpp

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "UIManager.h"
#include "GuildCache.h"
#include "ZzzOpenglUtil.h"
#include "ZzzBMD.h"
#include "ZzzInfomation.h"
#include "ZzzObject.h"
#include "ZzzCharacter.h"
#include "ZzzLodTerrain.h"
#include "ZzzInterface.h"
#include "ZzzInventory.h"
#include "ZzzTexture.h"
#include "ZzzOpenData.h"
#include "ZzzScene.h"
#include "ZzzEffect.h"
#include "ZzzAI.h"
#include "DSPlaySound.h"
#include "wsclientinline.h"
#include "SMD.h"
#include "Local.h"
#include "MatchEvent.h"
#include "PhysicsManager.h"
#include "./Utilities/Log/ErrorReport.h"
#include "CSQuest.h"
#include "PersonalShopTitleImp.h"
#include "uicontrols.h"
#include "GOBoid.h"
#include "GMHellas.h"
#include "CSItemOption.h"
#include "GMBattleCastle.h"
#include "GMHuntingGround.h"
#include "GMAida.h"
#include "GMCrywolf1st.h"
#include "npcBreeder.h"
#include "CSPetSystem.h"
#include "GIPetManager.h"
#include "CComGem.h"
#include "UIMapName.h" // rozy
#include "./Time/Timer.h"
#include "Input.h"
#include "UIMng.h"
#include "LoadingScene.h"
#include "CDirection.h"
#include "GM_Kanturu_3rd.h"
#ifdef MOVIE_DIRECTSHOW
#include <dshow.h>
#include "MovieScene.h"
#endif // MOVIE_DIRECTSHOW
#include "Event.h"
#include "./Utilities/Log/muConsoleDebug.h"
#include "MixMgr.h"
#include "GameCensorship.h"
#include "GM3rdChangeUp.h"
#include "NewUISystem.h"
#include "NewUICommonMessageBox.h"
#include "PartyManager.h"
#include "w_CursedTemple.h"
#include "CameraMove.h"
#include "w_MapHeaders.h"
#include "w_PetProcess.h"
#include "PortalMgr.h"
#include "ServerListManager.h"
#include "ProtocolSend.h"
#include "MapManager.h"
#include <thread>
#include <chrono>
#include "Interfaces.h"
#include "Camera3D.h"
#include "CharacterList.h"
#ifdef NEW_MUHELPER_ON
#include "CAIController.h"
#endif
#include "WindowTray.h"

extern CUITextInputBox * g_pSingleTextInputBox;
extern CUITextInputBox * g_pSinglePasswdInputBox;
extern int g_iChatInputType;
extern BOOL g_bUseChatListBox;
extern DWORD g_dwMouseUseUIID;
extern DWORD g_dwActiveUIID;
extern DWORD g_dwKeyFocusUIID;
extern CUIMapName* g_pUIMapName;
extern bool HighLight;
extern CTimer* g_pTimer;

#ifdef MOVIE_DIRECTSHOW
extern CMovieScene* g_pMovieScene;
#endif // MOVIE_DIRECTSHOW


bool g_bTimeCheck = false;
int g_iBackupTime = 0;

float g_fMULogoAlpha = 0;

   // extern CGuildCache g_GuildCache;

extern float g_fSpecialHeight;

short   g_shCameraLevel = 0;


/*#ifdef _DEBUG
bool EnableEdit    = true;
#else
bool EnableEdit    = false;
#endif*/

int g_iLengthAuthorityCode = 20;

char *szServerIpAddress;
//char *szServerIpAddress = "210.181.89.215";
WORD g_ServerPort = 44405;

#ifdef MOVIE_DIRECTSHOW
int  SceneFlag = MOVIE_SCENE;
#else // MOVIE_DIRECTSHOW
int  SceneFlag = WEBZEN_SCENE;
#endif // MOVIE_DIRECTSHOW

int  MoveSceneFrame = 0;

extern int g_iKeyPadEnable;


CPhysicsManager g_PhysicsManager;


char *g_lpszMp3[NUM_MUSIC] =
{
"data\\music\\Pub.mp3",
"data\\music\\Mutheme.mp3",
"data\\music\\Church.mp3",
"data\\music\\Devias.mp3",
"data\\music\\Noria.mp3",
"data\\music\\Dungeon.mp3",
"data\\music\\atlans.mp3",
"data\\music\\icarus.mp3",
"data\\music\\tarkan.mp3",
"data\\music\\lost_tower_a.mp3",
"data\\music\\lost_tower_b.mp3",
"data\\music\\kalima.mp3",
    "data\\music\\castle.mp3",
    "data\\music\\charge.mp3",
    "data\\music\\lastend.mp3",
"data\\music\\huntingground.mp3",
"data\\music\\Aida.mp3",
"data\\music\\crywolf1st.mp3",
"data\\music\\crywolf_ready-02.ogg",
"data\\music\\crywolf_before-01.ogg",
"data\\music\\crywolf_back-03.ogg",
"data\\music\\main_theme.mp3",
"data\\music\\kanturu_1st.mp3",
"data\\music\\kanturu_2nd.mp3",
"data\\music\\KanturuMayaBattle.mp3",
"data\\music\\KanturuNightmareBattle.mp3",
"data\\music\\KanturuTower.mp3",
"data\\music\\BalgasBarrack.mp3",
"data\\music\\BalgasRefuge.mp3",
"data\\music\\cursedtemplewait.mp3",
"data\\music\\cursedtempleplay.mp3",
"data\\music\\elbeland.mp3",
"data\\music\\login_theme.mp3",
"data\\music\\SwampOfCalmness.mp3",
"data\\music\\Raklion.mp3",
"data\\music\\Raklion_Hatchery.mp3",
"data\\music\\Santa_Village.mp3",
"data\\music\\DuelArena.mp3",
"data\\music\\PK_Field.mp3",
"data\\music\\ImperialGuardianFort.mp3",
"data\\music\\ImperialGuardianFort.mp3",
"data\\music\\ImperialGuardianFort.mp3",
"data\\music\\ImperialGuardianFort.mp3",
"data\\music\\iDoppelganger.mp3",
"data\\music\\iDoppelganger.mp3",
#ifdef ASG_ADD_MAP_KARUTAN
"data\\music\\Karutan_A.mp3",
"data\\music\\Karutan_B.mp3",
#endif // ASG_ADD_MAP_KARUTAN
};

extern char Mp3FileName[256];

#define MAX_LENGTH_CMB ( 38)

DWORD   g_dwWaitingStartTick;
int     g_iRequestCount;

int     g_iMessageTextStart     = 0;
char    g_cMessageTextCurrNum   = 0;
char    g_cMessageTextNum       = 0;
int     g_iNumLineMessageBoxCustom;
char    g_lpszMessageBoxCustom[NUM_LINE_CMB][MAX_LENGTH_CMB];
int     g_iCustomMessageBoxButton[NUM_BUTTON_CMB][NUM_PAR_BUTTON_CMB];

int     g_iCustomMessageBoxButton_Cancel[NUM_PAR_BUTTON_CMB];

int g_iCancelSkillTarget = 0;

#define NUM_LINE_DA ( 1)
int g_iCurrentDialogScript = -1;
int g_iNumAnswer = 0;
char g_lpszDialogAnswer[MAX_ANSWER_FOR_DIALOG][NUM_LINE_DA][MAX_LENGTH_CMB];

DWORD GenerateCheckSum2( BYTE *pbyBuffer, DWORD dwSize, WORD wKey);

void StopMusic()
{
for ( int i = 0; i < NUM_MUSIC; ++i)
{
StopMp3( g_lpszMp3[i]);
}
}

bool CheckAbuseFilter(char *Text, bool bCheckSlash)
{
if (bCheckSlash == true)
{
if ( Text[0] == '/')
{
return false;
}
}

int icntText = 0;
char TmpText[2048];
for( int i=0; i<(int)strlen(Text); ++i )
{
if ( Text[i]!=32 )
{
TmpText[icntText] = Text[i];
icntText++;
}
}
TmpText[icntText] = 0;

for(int i=0;i<AbuseFilterNumber;i++)
{
        if(FindText(TmpText,AbuseFilter[i]))
{
return true;
}
}
return false;
}

bool CheckAbuseNameFilter(char *Text)
{
int icntText = 0;
char TmpText[256];
for( int i=0; i<(int)strlen(Text); ++i )
{
if ( Text[i]!=32 )
{
TmpText[icntText] = Text[i];
icntText++;
}
}
TmpText[icntText] = 0;

for(int i=0;i<AbuseNameFilterNumber;i++)
{
if(FindText(TmpText,AbuseNameFilter[i]))
{
return true;
}
}
return false;
}

bool CheckName()
{
    if( CheckAbuseNameFilter(InputText[0]) || CheckAbuseFilter(InputText[0]) ||
FindText(InputText[0]," ") || FindText(InputText[0],"¡¡") ||
FindText(InputText[0],".") || FindText(InputText[0],"¡¤") || FindText(InputText[0],"¡­") ||
FindText(InputText[0],"Webzen") || FindText(InputText[0],"WebZen") || FindText(InputText[0],"webzen") ||  FindText(InputText[0],"WEBZEN") ||
FindText(InputText[0],GlobalText[457]) || FindText(InputText[0],GlobalText[458]))
return true;
return false;
}

#ifdef MOVIE_DIRECTSHOW
void MovieScene(HDC hDC)
{
if(g_pMovieScene->GetPlayNum() == 0)
{
g_pMovieScene->InitOpenGLClear(hDC);

g_pMovieScene->Initialize_DirectShow(g_hWnd, MOVIE_FILE_WMV);

if(g_pMovieScene->IsFile() == FALSE || g_pMovieScene->IsFailDirectShow() == TRUE)
{
g_pMovieScene->Destroy();
SAFE_DELETE(g_pMovieScene);
SceneFlag = WEBZEN_SCENE;
return;
}

g_pMovieScene->PlayMovie();

if(g_pMovieScene->IsEndMovie())
{
g_pMovieScene->Destroy();
SAFE_DELETE(g_pMovieScene);
SceneFlag = WEBZEN_SCENE;
return;
}
else
{
if(HIBYTE(GetAsyncKeyState(VK_ESCAPE))==128 || HIBYTE(GetAsyncKeyState(VK_RETURN))==128)
{
g_pMovieScene->Destroy();
SAFE_DELETE(g_pMovieScene);
SceneFlag = WEBZEN_SCENE;
return;
}
}
}
else
{
g_pMovieScene->Destroy();
SAFE_DELETE(g_pMovieScene);
SceneFlag = WEBZEN_SCENE;
return;
}
}
#endif // MOVIE_DIRECTSHOW

bool EnableMainRender = false;
extern int HeroKey;

void WebzenScene(HDC hDC)
{
CUIMng& rUIMng = CUIMng::Instance();

OpenFont();
ClearInput();

LoadBitmap("Interface\\New_lo_back_01.jpg", BITMAP_TITLE, GL_LINEAR);
LoadBitmap("Interface\\New_lo_back_02.jpg", BITMAP_TITLE+1, GL_LINEAR);
LoadBitmap("Interface\\MU_TITLE.tga", BITMAP_TITLE+2, GL_LINEAR);
LoadBitmap("Interface\\lo_121518.tga", BITMAP_TITLE+3, GL_LINEAR);
LoadBitmap("Interface\\New_lo_webzen_logo.tga", BITMAP_TITLE+4, GL_LINEAR);
LoadBitmap("Interface\\lo_lo.jpg", BITMAP_TITLE+5, GL_LINEAR, GL_REPEAT);
LoadBitmap("Interface\\lo_back_s5_03.jpg", BITMAP_TITLE+6, GL_LINEAR);
LoadBitmap("Interface\\lo_back_s5_04.jpg", BITMAP_TITLE+7, GL_LINEAR);
if(rand()%100 <= 70)
{
LoadBitmap("Interface\\lo_back_im01.jpg", BITMAP_TITLE+8, GL_LINEAR);
LoadBitmap("Interface\\lo_back_im02.jpg", BITMAP_TITLE+9, GL_LINEAR);
LoadBitmap("Interface\\lo_back_im03.jpg", BITMAP_TITLE+10, GL_LINEAR);
LoadBitmap("Interface\\lo_back_im04.jpg", BITMAP_TITLE+11, GL_LINEAR);
LoadBitmap("Interface\\lo_back_im05.jpg", BITMAP_TITLE+12, GL_LINEAR);
LoadBitmap("Interface\\lo_back_im06.jpg", BITMAP_TITLE+13, GL_LINEAR);
}
else
{
LoadBitmap("Interface\\lo_back_s5_im01.jpg", BITMAP_TITLE+8, GL_LINEAR);
LoadBitmap("Interface\\lo_back_s5_im02.jpg", BITMAP_TITLE+9, GL_LINEAR);
LoadBitmap("Interface\\lo_back_s5_im03.jpg", BITMAP_TITLE+10, GL_LINEAR);
LoadBitmap("Interface\\lo_back_s5_im04.jpg", BITMAP_TITLE+11, GL_LINEAR);
LoadBitmap("Interface\\lo_back_s5_im05.jpg", BITMAP_TITLE+12, GL_LINEAR);
LoadBitmap("Interface\\lo_back_s5_im06.jpg", BITMAP_TITLE+13, GL_LINEAR);
}

rUIMng.CreateTitleSceneUI();

FogEnable = false;

::EnableAlphaTest();
OpenBasicData(hDC);

g_pNewUISystem->LoadMainSceneInterface();

CUIMng::Instance().RenderTitleSceneUI(hDC, 11, 11);

rUIMng.ReleaseTitleSceneUI();
DeleteBitmap(BITMAP_TITLE);
    DeleteBitmap(BITMAP_TITLE+1);
DeleteBitmap(BITMAP_TITLE+2);
    DeleteBitmap(BITMAP_TITLE+3);
DeleteBitmap(BITMAP_TITLE+4);
    DeleteBitmap(BITMAP_TITLE+5);

for(int i=6; i<14; ++i)
DeleteBitmap(BITMAP_TITLE+i);

g_ErrorReport.Write( "> Loading ok.\r\n");

SceneFlag = LOG_IN_SCENE; //

gInterface.hdc = hDC;

gInterface.m_Lua.Generic_Call("FinalBoot", ">");
}

int MenuStateCurrent = MENU_SERVER_LIST;
int MenuStateNext    = MENU_SERVER_LIST;
int DeleteGuildIndex = -1;

void DeleteCharacter()
{
SelectedHero = -1;
if (g_iChatInputType == 1)
{
g_pSinglePasswdInputBox->GetText(InputText[0]);
g_pSinglePasswdInputBox->SetText(NULL);
g_pSinglePasswdInputBox->SetState(UISTATE_HIDE);
}
SendRequestDeleteCharacter(CharactersClient[SelectedHero].ID,InputText[0]);

MenuStateCurrent = MENU_DELETE_LEFT;
MenuStateNext    = MENU_NEW_DOWN;
PlayBuffer(SOUND_MENU01);

ClearInput();
InputEnable = false;
}
int  ErrorMessage = NULL;
int ErrorMessageNext = NULL;
extern bool g_bEnterPressed;

bool IsEnterPressed() {
return g_bEnterPressed;
}

void SetEnterPressed( bool enterpressed ) {
g_bEnterPressed = enterpressed;
}

BOOL CheckOptionMouseClick(int iOptionPos_y, BOOL bPlayClickSound = TRUE)
{
if (CheckMouseIn((640-120)/2, 30+iOptionPos_y, 120, 22) && MouseLButtonPush)
{
MouseLButtonPush = false;
MouseUpdateTime = 0;
MouseUpdateTimeMax = 6;
if (bPlayClickSound == TRUE) PlayBuffer(SOUND_CLICK01);
return TRUE;
}
return FALSE;
}

int SeparateTextIntoLines( const char *lpszText, char *lpszSeparated, int iMaxLine, int iLineSize)
{
int iLine = 0;
const char *lpLineStart = lpszText;
char *lpDst = lpszSeparated;
const char *lpSpace = NULL;
int iMbclen = 0;
for ( const char* lpSeek = lpszText; *lpSeek; lpSeek += iMbclen, lpDst += iMbclen)
{
iMbclen = _mbclen( ( unsigned char*)lpSeek);
if ( iMbclen + ( int)( lpSeek - lpLineStart) >= iLineSize)
{
if ( lpSpace && ( int)( lpSeek - lpSpace) < min( 10, iLineSize / 2))
{
lpDst -= ( lpSeek - lpSpace - 1);
lpSeek = lpSpace + 1;
}

lpLineStart = lpSeek;
*lpDst = '\0';
if ( iLine >= iMaxLine - 1)
{
break;
}
++iLine;
lpDst = lpszSeparated + iLine * iLineSize;
lpSpace = NULL;
}

memcpy( lpDst, lpSeek, iMbclen);
if ( *lpSeek == ' ')
{
lpSpace = lpSeek;
}
}
*lpDst = '\0';

return ( iLine + 1);
}

void SetEffectVolumeLevel ( int level )
{
if(level > 9)
level = 9;
if(level < 0)
level = 0;

if(level == 0)
{
SetMasterVolume(-10000);
}
else
{
long vol = -2000*log10(10.f/float(level));
SetMasterVolume(vol);
}
}

void SetViewPortLevel ( int Wheel )
{
    if ( (HIBYTE( GetAsyncKeyState(VK_CONTROL))==128) )
    {
        if ( Wheel>0 )
            g_shCameraLevel--;
        else if ( Wheel<0 )
            g_shCameraLevel++;

        MouseWheel = 0;

    if ( g_shCameraLevel>4 )
    g_shCameraLevel = 4;
    if ( g_shCameraLevel<0 )
    g_shCameraLevel = 0;
    }
}

void RenderInfomation3D()
{
bool Success = false;

if ( ( ( ErrorMessage==MESSAGE_TRADE_CHECK || ErrorMessage==MESSAGE_CHECK ) && AskYesOrNo==1 )
|| ErrorMessage==MESSAGE_USE_STATE
|| ErrorMessage==MESSAGE_USE_STATE2)
{
Success = true;
}

    if ( ErrorMessage==MESSAGE_TRADE_CHECK && AskYesOrNo==5 )
{
Success = true;
}
if ( ErrorMessage==MESSAGE_PERSONALSHOP_WARNING )
{
Success = true;
}

if ( Success )
    {
        glMatrixMode(GL_PROJECTION);
        glPushMatrix();
        glLoadIdentity();
        glViewport2(0,0,WindowWidth,WindowHeight);
        gluPerspective2(1.f,(float)(WindowWidth)/(float)(WindowHeight),CameraViewNear,CameraViewFar);
        glMatrixMode(GL_MODELVIEW);
        glPushMatrix();
        glLoadIdentity();
        GetOpenGLMatrix(CameraMatrix);
        EnableDepthTest();
        EnableDepthMask();

        float Width, Height;
        float x = (640-150)/2;
        float y;
        if ( ErrorMessage==MESSAGE_TRADE_CHECK )
        {
            y = 60+55;
        }
        else
        {
            y = 60+55;
        }

    Width=40.f;Height=60.f;
int iRenderType = ErrorMessage;
if(AskYesOrNo == 5)
iRenderType = MESSAGE_USE_STATE;
switch( iRenderType )
{
case MESSAGE_USE_STATE :
case MESSAGE_USE_STATE2 :
        case MESSAGE_PERSONALSHOP_WARNING :
            RenderItem3D(x,y,Width,Height,TargetItem.Type,TargetItem.Level,TargetItem.Option1,TargetItem.ExtOption,true);
break;

default :
            RenderItem3D(x,y,Width,Height,PickItem.Type,PickItem.Level,PickItem.Option1,PickItem.ExtOption,true);
break;
}

glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
UpdateMousePositionn();
    }
}

void RenderInfomation()
{
if (SceneFlag == MAIN_SCENE)
{
gInterface.m_Lua.Generic_Call("MainProc", ">");
}

gCharacterList.RenderCharacterList();

RenderNotices();
   
CUIMng::Instance().Render();

if(SceneFlag == LOG_IN_SCENE || SceneFlag == CHARACTER_SCENE)
{
RenderCursor();
}

    RenderInfomation3D();
}

BOOL ShowCheckBox( int num, int index, int message )
{
if ( message==MESSAGE_USE_STATE || message==MESSAGE_USE_STATE2)
    {
        char Name[50] = { 0, };
        if ( TargetItem.Type==ITEM_HELPER+15 )
        {
            switch ( (TargetItem.Level>>3)&15 )
            {
            case 0:sprintf(Name,"%s", GlobalText[168] );break;
            case 1:sprintf(Name,"%s", GlobalText[169] );break;
            case 2:sprintf(Name,"%s", GlobalText[167] );break;
            case 3:sprintf(Name,"%s", GlobalText[166] );break;
case 4:sprintf(Name,"%s", GlobalText[1900] );break;
            }
        }

if (message==MESSAGE_USE_STATE2)
sprintf ( g_lpszMessageBoxCustom[0], "( %s%s )", Name, GlobalText[1901] );
else
sprintf ( g_lpszMessageBoxCustom[0], "( %s )", Name );

        num++;
        for ( int i=1; i<num; ++i )
        {
        sprintf ( g_lpszMessageBoxCustom[i], GlobalText[index] );
        }
        g_iNumLineMessageBoxCustom = num;
    }
else if ( message==MESSAGE_PERSONALSHOP_WARNING )
{
char szGold[256];
ConvertGold(InputGold,szGold);
    sprintf ( g_lpszMessageBoxCustom[0], GlobalText[index], szGold );

        for ( int i=1; i<num; ++i )
        {
        sprintf ( g_lpszMessageBoxCustom[i], GlobalText[index+i] );
        }
        g_iNumLineMessageBoxCustom = num;
}
    else if ( message==MESSAGE_CHAOS_CASTLE_CHECK )
    {
    g_iNumLineMessageBoxCustom = 0;
        for ( int i=0; i<num; ++i )
        {
        g_iNumLineMessageBoxCustom += SeparateTextIntoLines( GlobalText[index+i], g_lpszMessageBoxCustom[g_iNumLineMessageBoxCustom], NUM_LINE_CMB, MAX_LENGTH_CMB);
        }
    }
else if ( message==MESSAGE_GEM_INTEGRATION3)
{
char tBuf[MAX_GLOBAL_TEXT_STRING];
char tLines[2][30];
for(int t = 0; t < 2; ++t) memset(tLines[t], 0, 20);
g_iNumLineMessageBoxCustom = 0;
if(COMGEM::isComMode())
{
if(COMGEM::m_cGemType == 0) sprintf(tBuf, GlobalText[1809], GlobalText[1806], COMGEM::m_cCount);
else sprintf(tBuf, GlobalText[1809], GlobalText[1807], COMGEM::m_cCount);

g_iNumLineMessageBoxCustom += SeparateTextIntoLines( tBuf,
tLines[g_iNumLineMessageBoxCustom], 2, 30);

for(int t = 0; t < 2; ++t) strcpy(g_lpszMessageBoxCustom[t], tLines[t]);

sprintf(g_lpszMessageBoxCustom[g_iNumLineMessageBoxCustom], GlobalText[1810], COMGEM::m_iValue);
++g_iNumLineMessageBoxCustom;

}
else
{
int t_GemLevel = COMGEM::GetUnMixGemLevel()+1;
if(COMGEM::m_cGemType == 0) sprintf(tBuf, GlobalText[1813], GlobalText[1806], t_GemLevel);
else sprintf(tBuf, GlobalText[1813], GlobalText[1807], t_GemLevel);

g_iNumLineMessageBoxCustom += SeparateTextIntoLines( tBuf,
tLines[g_iNumLineMessageBoxCustom], 2, 30);

for(int t = 0; t < 2; ++t) strcpy(g_lpszMessageBoxCustom[t], tLines[t]);

sprintf(g_lpszMessageBoxCustom[g_iNumLineMessageBoxCustom], GlobalText[1814], COMGEM::m_iValue);
++g_iNumLineMessageBoxCustom;
}
}
else if(message == MESSAGE_CANCEL_SKILL)
{
char tBuf[MAX_GLOBAL_TEXT_STRING];
sprintf(tBuf, "%s%s", SkillAttribute[index].Name, GlobalText[2046]);
g_iNumLineMessageBoxCustom = SeparateTextIntoLines(tBuf, g_lpszMessageBoxCustom[0], 2, MAX_LENGTH_CMB);
g_iCancelSkillTarget = index;
}
    else
    {
        for ( int i=0; i<num; ++i )
        {
        strcpy ( g_lpszMessageBoxCustom[i], GlobalText[index+i]);
        }
        g_iNumLineMessageBoxCustom = num;
    }

ZeroMemory( g_iCustomMessageBoxButton, NUM_BUTTON_CMB * NUM_PAR_BUTTON_CMB * sizeof ( int) );

    int iOkButton[5]     = { 1,  21, 90, 70, 21};
    int iCancelButton[5] = { 3, 120, 90, 70, 21};

if(message == MESSAGE_USE_STATE2)
{
iOkButton[1] = 22;
iOkButton[2] = 92; // y
iOkButton[3]     = 49;
iOkButton[4]     = 16;

iCancelButton[1] = 82;
iCancelButton[2] = 92; // y
iCancelButton[3] = 49;
iCancelButton[4] = 16;

g_iCustomMessageBoxButton_Cancel[0] = 5;
g_iCustomMessageBoxButton_Cancel[1] = 142; // x
g_iCustomMessageBoxButton_Cancel[2] = 92; // y
g_iCustomMessageBoxButton_Cancel[3] = 49; // width
g_iCustomMessageBoxButton_Cancel[4] = 16; // height
}

    if ( message==MESSAGE_CHAOS_CASTLE_CHECK )
    {
        iOkButton[2]     = 120;
        iCancelButton[2] = 120;
    }

    memcpy( g_iCustomMessageBoxButton[0], iOkButton, 5 * sizeof ( int));
    memcpy( g_iCustomMessageBoxButton[1], iCancelButton, 5 * sizeof ( int));

return true;
}

int    CameraWalkCut;
int    CurrentCameraCount    = -1;
int    CurrentCameraWalkType = 0;
int    CurrentCameraNumber   = 0;
vec3_t CurrentCameraPosition;
vec3_t CurrentCameraAngle;
float  CurrentCameraWalkDelta[6];
float  CameraWalk[] =
{
0.f,-1000.f,500.f,-80.f,0.f, 0.f,
0.f,-1100.f,500.f,-80.f,0.f, 0.f,
0.f,-1100.f,500.f,-80.f,0.f, 0.f,
     0.f,-1100.f,500.f,-80.f,0.f, 0.f,
0.f,-1100.f,500.f,-80.f,0.f, 0.f,
200.f,-800.f,250.f,-87.f,0.f, -10.f,
};

void MoveCharacterCamera(vec3_t Origin,vec3_t Position,vec3_t Angle)
{
vec3_t TransformPosition;
CameraAngle[0] = 0.f;
CameraAngle[1] = 0.f;
CameraAngle[2] = Angle[2];
float Matrix[3][4];
AngleMatrix(CameraAngle,Matrix);
VectorIRotate(Position,Matrix,TransformPosition);
VectorAdd(Origin,TransformPosition,CameraPosition);
CameraAngle[0] = Angle[0];
}

void MoveCamera()
{
if (CCameraMove::GetInstancePtr()->IsTourMode())
{
return;
}

    if(CurrentCameraCount == -1)
{
for(int i=0;i<3;i++)
{
CurrentCameraPosition[i] = CameraWalk[i  ];
CurrentCameraAngle   [i] = CameraWalk[i+3];
}
CurrentCameraNumber = 1;
CurrentCameraWalkType = 1;

for(int i=0;i<3;i++)
{
CurrentCameraWalkDelta[i  ] = (CameraWalk[CurrentCameraNumber*6+i  ]-CurrentCameraPosition[i])/128;
CurrentCameraWalkDelta[i+3] = (CameraWalk[CurrentCameraNumber*6+i+3]-CurrentCameraAngle   [i])/128;
}
}
CurrentCameraCount++;
    if((CameraWalkCut==0 && CurrentCameraCount>=40) || (CameraWalkCut>0 && CurrentCameraCount>=128))
{
        CurrentCameraCount = 0;
if(CameraWalkCut==0)
{
CameraWalkCut = 1;
}
else
{
            if(SceneFlag == LOG_IN_SCENE)
{
CurrentCameraNumber = rand()%4+1;
CurrentCameraWalkType = rand()%2;
}
else
{
      CurrentCameraNumber = 5;
CurrentCameraWalkType = 0;
}
}
for(int i=0;i<3;i++)
{
CurrentCameraWalkDelta[i  ] = (CameraWalk[CurrentCameraNumber*6+i  ]-CurrentCameraPosition[i])/128;
CurrentCameraWalkDelta[i+3] = (CameraWalk[CurrentCameraNumber*6+i+3]-CurrentCameraAngle   [i])/128;
}
}
if(CurrentCameraWalkType==0)
{
    for(int i=0;i<3;i++)
{
CurrentCameraPosition[i] += (CameraWalk[CurrentCameraNumber*6+i  ]-CurrentCameraPosition[i])/6;
CurrentCameraAngle   [i] += (CameraWalk[CurrentCameraNumber*6+i+3]-CurrentCameraAngle   [i])/6;
}
}
else
{
    for(int i=0;i<2;i++)
{
CurrentCameraPosition[i] += CurrentCameraWalkDelta[i  ];
}
}
    CameraFOV = 45.f;
vec3_t Position;
Vector(0.f,0.f,0.f,Position);
    MoveCharacterCamera(Position,CurrentCameraPosition,CurrentCameraAngle);
}

bool MenuCancel         = true;
bool EnableSocket       = false;
bool InitLogIn          = false;
bool InitLoading        = false;
bool InitCharacterScene = false;
bool InitMainScene      = false;
int  MenuY = 480;
int  MenuX = -200;
extern char LogInID[MAX_ID_SIZE+1];
extern char m_ExeVersion[11];

BOOL Util_CheckOption( char *lpszCommandLine, unsigned char cOption, char *lpszString);

extern DWORD g_dwBKConv;
extern DWORD g_dwBKSent;
extern BOOL g_bIMEBlock;

int SelectedHero = -1;
bool MoveMainCamera();

void StartGame()
{
{
if (CTLCODE_01BLOCKCHAR & CharactersClient[SelectedHero].CtlCode)
CUIMng::Instance().PopUpMsgWin(MESSAGE_BLOCKED_CHARACTER);
else
{
CharacterAttribute->Level = CharactersClient[SelectedHero].Level;
CharacterAttribute->Class = CharactersClient[SelectedHero].Class;
CharacterAttribute->Skin  = CharactersClient[SelectedHero].Skin;
::strcpy(CharacterAttribute->Name, CharactersClient[SelectedHero].ID);

::ReleaseCharacterSceneData();
InitLoading = false;
SceneFlag = LOADING_SCENE;
}
}
}

void CreateCharacterScene()
{
g_pNewUIMng->ResetActiveUIObj();

EnableMainRender = true;
MouseOnWindow = false;
ErrorMessage = NULL;

#ifdef PJH_NEW_SERVER_SELECT_MAP
gMapManager.WorldActive = WD_74NEW_CHARACTER_SCENE;
#else //PJH_NEW_SERVER_SELECT_MAP
gMapManager.WorldActive = WD_78NEW_CHARACTER_SCENE;
#endif //PJH_NEW_SERVER_SELECT_MAP

gMapManager.LoadWorld(gMapManager.WorldActive);
    OpenCharacterSceneData();

    CreateCharacterPointer(&CharacterView,MODEL_FACE+1,0,0);
CharacterView.Class = 1;
CharacterView.Object.Kind = 0;

SelectedHero = -1;
CUIMng::Instance().CreateCharacterScene();

    ClearInventory();
    CharacterAttribute->SkillNumber = 0;

for(int i=0;i<MAX_MAGIC;i++)
CharacterAttribute->Skill[i] = 0;

for(int i=EQUIPMENT_WEAPON_RIGHT;i<EQUIPMENT_HELPER;i++)
CharacterMachine->Equipment[i].Level = 0;

g_pNewUISystem->HideAll();

g_iKeyPadEnable = 0;
GuildInputEnable = false;
TabInputEnable   = false;
GoldInputEnable  = false;
InputEnable      = true;
    ClearInput();
InputIndex = 0;
    InputTextWidth = 90;
    InputNumber = 1;

for(int i=0;i<MAX_WHISPER;i++)
{
g_pChatListBox->AddText("", "", SEASON3B::TYPE_WHISPER_MESSAGE);
}

HIMC hIMC = ImmGetContext(g_hWnd);
    DWORD Conversion, Sentence;

Conversion = IME_CMODE_NATIVE;
Sentence = IME_SMODE_NONE;

g_bIMEBlock = FALSE;
RestoreIMEStatus();
ImmSetConversionStatus(hIMC, Conversion, Sentence);
ImmGetConversionStatus(hIMC, &g_dwBKConv, &g_dwBKSent);
SaveIMEStatus();
ImmReleaseContext(g_hWnd, hIMC);
g_bIMEBlock = TRUE;

    g_ErrorReport.Write( "> Character scene init success.\r\n");
}

void NewMoveCharacterScene()
{
if (CurrentProtocolState < RECEIVE_CHARACTERS_LIST)
{
return;
}


if (!InitCharacterScene)
{
InitCharacterScene = true;
CreateCharacterScene();
}

gCharacterList.MoveCharacterList();

    InitTerrainLight();
    MoveObjects();
MoveBugs();
    MoveCharactersClient();
    MoveCharacterClient(&CharacterView);

MoveEffects();
    MoveJoints();
    MoveParticles();
MoveBoids();

ThePetProcess().UpdatePets();

    MoveCamera();

#if defined _DEBUG || defined FOR_WORK
char lpszTemp[256];
if (::Util_CheckOption(::GetCommandLine(), 'c', lpszTemp))
{
SelectedHero = ::atoi(lpszTemp);
::StartGame();
}
#endif

CInput& rInput = CInput::Instance();
CUIMng& rUIMng = CUIMng::Instance();

if (rInput.IsKeyDown(VK_RETURN))
{
if (!(rUIMng.m_MsgWin.IsShow() || rUIMng.m_CharMakeWin.IsShow()
|| rUIMng.m_SysMenuWin.IsShow() || rUIMng.m_OptionWin.IsShow())
&& SelectedHero > -1 && SelectedHero < gCharacterList.MaxCharacters)
{
::PlayBuffer(SOUND_CLICK01);

if(SelectedCharacter >= 0)
SelectedHero = SelectedCharacter;

::StartGame();
}
}
else if (rInput.IsKeyDown(VK_ESCAPE))
{
if (!(rUIMng.m_MsgWin.IsShow() || rUIMng.m_CharMakeWin.IsShow()
|| rUIMng.m_SysMenuWin.IsShow() || rUIMng.m_OptionWin.IsShow()
)
&& rUIMng.IsSysMenuWinShow() )
{
::PlayBuffer(SOUND_CLICK01);
rUIMng.ShowWin(&rUIMng.m_SysMenuWin);
}
}

if (rUIMng.IsCursorOnUI())
{
return;
}

if (rInput.IsLBtnDbl() && rUIMng.m_CharSelMainWin.IsShow())
{
if (SelectedCharacter < 0 || SelectedCharacter >(gCharacterList.MaxCharacters - 1))
{
return;
}

SelectedHero = SelectedCharacter;
::StartGame();
}
else if(rInput.IsLBtnDn())
{
if (SelectedCharacter < 0 || SelectedCharacter >(gCharacterList.MaxCharacters - 1))
SelectedHero = -1;
else
SelectedHero = SelectedCharacter;
rUIMng.m_CharSelMainWin.UpdateDisplay();
}

g_ConsoleDebug->UpdateMainScene();
}

bool NewRenderCharacterScene(HDC hDC)
{
if(!InitCharacterScene)
{
return false;
}
if(CurrentProtocolState < RECEIVE_CHARACTERS_LIST)
{
return false;
}

    FogEnable = false;
vec3_t pos;
Vector(9758.0f, 18913.0f, 675.0f, pos);

    GWidescreen.SceneLogin();

int Width,Height;

glColor3f(1.f,1.f,1.f);
#ifndef PJH_NEW_SERVER_SELECT_MAP
BeginBitmap();
Width = 320;
Height = 320;
RenderBitmap(BITMAP_LOG_IN+9,  (float)0,(float)25,(float)Width,(float)Height,0.f,0.f);
RenderBitmap(BITMAP_LOG_IN+10,(float)320,(float)25,(float)Width,(float)Height,0.f,0.f);
EndBitmap();
#endif //PJH_NEW_SERVER_SELECT_MAP
Height = 480;
Width = FrameBeginOpengl();
   
glClearColor(0.f,0.f,0.f,1.f);
BeginOpengl(0, 25, GetWindowsX, GetWindowsY - 50);

CreateFrustrum((float)Width/(float)640, pos);

OBJECT *o = &CharactersClient[SelectedHero].Object;

CreateScreenVector(MouseX,MouseY,MouseTarget);
for (int i = 0; i < gCharacterList.MaxCharacters; i++)
{
CharactersClient[i].Object.Position[2] = 163.0f;
Vector ( 0.0f, 0.0f, 0.0f, CharactersClient[i].Object.Light );
}

if(SelectedHero!=-1 && o->Live)
{
EnableAlphaBlend();
vec3_t Light;
Vector ( 1.0f, 1.0f, 1.0f, Light );
Vector ( 1.0f, 1.0f, 1.0f, o->Light );
AddTerrainLight(o->Position[0],o->Position[1],Light,1,PrimaryTerrainLight);
DisableAlphaBlend();
}

CHARACTER* pCha = NULL;
OBJECT* pObj = NULL;

for (int i = 0; i < gCharacterList.MaxCharacters; ++i)
{
pCha = &CharactersClient[i];
pObj = &pCha->Object;
if (pCha->Helper.Type == MODEL_HELPER + 3 || gHelperSystem.CheckHelperType(pCha->Helper.Type, 4) == 1)
{
#ifdef PJH_NEW_SERVER_SELECT_MAP
pObj->Position[2] = 194.5f;
#else //PJH_NEW_SERVER_SELECT_MAP
pObj->Position[2] = 55.0f;
#endif //PJH_NEW_SERVER_SELECT_MAP
}
else
{
#ifdef PJH_NEW_SERVER_SELECT_MAP
pObj->Position[2] = 169.5f;
#else //PJH_NEW_SERVER_SELECT_MAP
pObj->Position[2] = 30.0f;
#endif //PJH_NEW_SERVER_SELECT_MAP
}
}

RenderTerrain(false);
RenderObjects();
RenderCharactersClient();

if(!CUIMng::Instance().IsCursorOnUI())
SelectObjects();

RenderBugs();
RenderBlurs();
RenderJoints();
RenderEffects();
ThePetProcess().RenderPets();
RenderBoids();
RenderObjects_AfterCharacter();
CheckSprites();

if(SelectedHero!=-1 && o->Live)
{
vec3_t vLight;

Vector ( 1.0f, 1.0f, 1.f, vLight );
float fLumi = sinf ( WorldTime*0.0015f )*0.3f+0.5f;
Vector ( fLumi*vLight[0], fLumi*vLight[1], fLumi*vLight[2], vLight );

float Rotation = (int)WorldTime%3600/(float)10.f;
Vector ( 0.15f, 0.15f, 0.15f, o->Light );

EnableAlphaBlend();
Rotation = (int)WorldTime % 3600;
RenderCircle(BITMAP_MAGIC + 2, o->Position, 50.0, 70.0, 200.0, Rotation, 0.0, 0.0);
RenderCircle(BITMAP_MAGIC + 2, o->Position, 50.0, 70.0, 200.0, Rotation, 0.0, 0.0);

g_csMapServer.SetHeroID ( (char *)CharactersClient[SelectedHero].ID );
}

BeginSprite();
RenderSprites();
RenderParticles();
RenderPoints();
EndSprite();
BeginBitmap();
RenderInfomation();

if ((GetTickCount() - gTrayMode.LastPress) > 200) {
if (GetKeyState(VK_F12) & 0x8000) {
gTrayMode.SwitchState();
gTrayMode.LastPress = GetTickCount();
}
}

#ifdef ENABLE_EDIT
RenderDebugWindow();
#endif //ENABLE_EDIT

EndBitmap();

EndOpengl();

return true;
}

void CreateLogInScene()
{
EnableMainRender = true;
#ifdef PJH_NEW_SERVER_SELECT_MAP
gMapManager.WorldActive = 94;
#else
World = WD_77NEW_LOGIN_SCENE;
#endif //PJH_NEW_SERVER_SELECT_MAP
gMapManager.LoadWorld(gMapManager.WorldActive);

OpenLogoSceneData();

CUIMng::Instance().CreateLoginScene();

CurrentProtocolState = REQUEST_JOIN_SERVER;
    CreateSocket(szServerIpAddress,g_ServerPort);
    EnableSocket = true;

GuildInputEnable = false;
TabInputEnable   = false;
GoldInputEnable  = false;
InputEnable      = true;
ClearInput();

if (g_iChatInputType == 0)
{
strcpy(InputText[0],m_ID);
InputLength[0] = strlen(InputText[0]);
InputTextMax[0] = MAX_ID_SIZE;
if(InputLength[0] == 0) InputIndex = 0;
else InputIndex = 1;
}
InputNumber = 2;
    InputTextHide[1] = 1;

CCameraMove::GetInstancePtr()->PlayCameraWalk(Hero->Object.Position, 1000);
#ifdef PJH_NEW_SERVER_SELECT_MAP
CCameraMove::GetInstancePtr()->SetTourMode(TRUE, FALSE, 1);
#else //PJH_NEW_SERVER_SELECT_MAP
CCameraMove::GetInstancePtr()->SetTourMode(TRUE, TRUE);
#endif //PJH_NEW_SERVER_SELECT_MAP

GWidescreen.SceneLogin();

g_fMULogoAlpha = 0;

::PlayMp3(g_lpszMp3[MUSIC_LOGIN_THEME]);

g_ErrorReport.Write( "> Login Scene init success.\r\n");
}

void NewMoveLogInScene()
{
if(!InitLogIn)
{
InitLogIn = true;
CreateLogInScene();
}

#ifdef MOVIE_DIRECTSHOW
if(CUIMng::Instance().IsMoving() == true)
{
return;
}
#endif // MOVIE_DIRECTSHOW
if (!CUIMng::Instance().m_CreditWin.IsShow())
{
InitTerrainLight();
MoveObjects();
MoveBugs();
MoveLeaves();
MoveCharactersClient();
MoveEffects();
MoveJoints();
MoveParticles();
MoveBoids();
ThePetProcess().UpdatePets();
MoveCamera();
}

if (CInput::Instance().IsKeyDown(VK_ESCAPE))
{
CUIMng& rUIMng = CUIMng::Instance();
if (!(rUIMng.m_MsgWin.IsShow() || rUIMng.m_LoginWin.IsShow()
|| rUIMng.m_SysMenuWin.IsShow() || rUIMng.m_OptionWin.IsShow()
|| rUIMng.m_CreditWin.IsShow()
)
&& rUIMng.m_LoginMainWin.IsShow() && rUIMng.m_ServerSelWin.IsShow()
&& rUIMng.IsSysMenuWinShow())
{
::PlayBuffer(SOUND_CLICK01);
rUIMng.ShowWin(&rUIMng.m_SysMenuWin);
}
}
if (RECEIVE_LOG_IN_SUCCESS == CurrentProtocolState)
{
g_ErrorReport.Write( "> Request Character list\r\n");

CCameraMove::GetInstancePtr()->SetTourMode(FALSE);

SceneFlag = CHARACTER_SCENE;

#ifdef NEW_PROTOCOL_SYSTEM
gProtocolSend.SendRequestCharactersListNew();
#else
SendRequestCharactersList(g_pMultiLanguage->GetLanguage());
#endif

        ReleaseLogoSceneData();

ClearCharacters();
}

g_ConsoleDebug->UpdateMainScene();
}

bool NewRenderLogInScene(HDC hDC)
{
if(!InitLogIn) return false;


Console.Write(1, "CurrentProtocolState: %d / %d", CurrentProtocolState, InitLogIn);

FogEnable = false;
// extern GLfloat FogColor[4];
// FogColor[0] = 178.f/256.f; FogColor[1] = 178.f/256.f; FogColor[2] = 178.f/256.f; FogColor[3] = 0.f;
// glFogf(GL_FOG_START, 3700.0f);
// glFogf(GL_FOG_END, 4000.0f);

#ifdef MOVIE_DIRECTSHOW
if(CUIMng::Instance().IsMoving() == true)
{
g_pMovieScene->PlayMovie();

if(g_pMovieScene->IsEndMovie())
{
g_pMovieScene->Destroy();
SAFE_DELETE(g_pMovieScene);
CUIMng::Instance().SetMoving(false);
::PlayMp3(g_lpszMp3[MUSIC_MAIN_THEME]);
}
else
{
if(HIBYTE(GetAsyncKeyState(VK_ESCAPE))==128 || HIBYTE(GetAsyncKeyState(VK_RETURN))==128)
{
g_pMovieScene->Destroy();
SAFE_DELETE(g_pMovieScene);
CUIMng::Instance().SetMoving(false);
::PlayMp3(g_lpszMp3[MUSIC_MAIN_THEME]);
}
}
return true;
}
#endif // MOVIE_DIRECTSHOW

vec3_t pos;
if(CCameraMove::GetInstancePtr()->IsCameraMove())
{
VectorCopy(CameraPosition, pos);
}

GWidescreen.SceneLogin();

int Width,Height;

glColor3f(1.f,1.f,1.f);
#ifndef PJH_NEW_SERVER_SELECT_MAP
BeginBitmap();
Width = 320;
Height = 320;
RenderBitmap(BITMAP_LOG_IN+9,  (float)0,(float)25,(float)Width,(float)Height,0.f,0.f);
RenderBitmap(BITMAP_LOG_IN+10,(float)320,(float)25,(float)Width,(float)Height,0.f,0.f);
EndBitmap();
#endif //PJH_NEW_SERVER_SELECT_MAP

Height = 480;
    Width = FrameBeginOpengl();
glClearColor(0.f,0.f,0.f,1.f);

BeginOpengl(0, 0, GetWindowsX, GetWindowsY);
CreateFrustrum((float)Width/(float)640, pos);

if (!CUIMng::Instance().m_CreditWin.IsShow())
{
CameraViewFar = 330.f * CCameraMove::GetInstancePtr()->GetCurrentCameraDistanceLevel();
#ifndef PJH_NEW_SERVER_SELECT_MAP
BeginOpengl();
#endif //PJH_NEW_SERVER_SELECT_MAP
RenderTerrain(false);
CameraViewFar = 7000.f;
RenderCharactersClient();
RenderBugs();
RenderObjects();
RenderJoints();
RenderEffects();
CheckSprites();
RenderLeaves();
RenderBoids();
RenderObjects_AfterCharacter();
ThePetProcess().RenderPets();
}

BeginSprite();
RenderSprites();
RenderParticles();
EndSprite();
BeginBitmap();

if (CCameraMove::GetInstancePtr()->IsTourMode())
{
#ifndef PJH_NEW_SERVER_SELECT_MAP
// È­¸é È帮±â
EnableAlphaBlend4();
glColor4f(0.7f,0.7f,0.7f,1.0f);
float fScale = (sinf(WorldTime*0.0005f) + 1.f) * 0.00011f;
//RenderBitmap(BITMAP_CHROME+3, 0.0f,0.0f, 640.0f,480.0f, 800.f,600.f, (800.f)/1024.f,(600.f)/1024.f);
RenderBitmap(BITMAP_CHROME+3, 0.0f,0.0f, 640.0f,480.0f, 800.f*fScale,600.f*fScale, (800.f)/1024.f-800.f*fScale*2,(600.f)/1024.f-600.f*fScale*2);
float fAngle = WorldTime * 0.00018f;
float fLumi = 1.0f - (sinf(WorldTime*0.0015f) + 1.f) * 0.25f;
glColor4f(fLumi*0.3f,fLumi*0.3f,fLumi*0.7f,fLumi);
fScale = (sinf(WorldTime*0.0015f) + 1.f) * 0.00021f;
RenderBitmapLocalRotate(BITMAP_CHROME+4,320.0f,240.0f, 1150.0f, 1150.0f, fAngle, fScale*512.f,fScale*512.f, (512.f)/512.f-fScale*2*512.f,(512.f)/512.f-fScale*2*512.f);

// À§¾Æ·¡ ÀÚ¸£±â
EnableAlphaTest();
glColor4f(0.0f,0.0f,0.0f,1.0f);
RenderColor(0, 0, 640, 25);
RenderColor(0, 480-25, 640, 25);

// È­¸éÄ¥
glColor4f(0.0f,0.0f,0.0f,0.2f);
RenderColor(0, 25, 640, 430);
#endif //PJH_NEW_SERVER_SELECT_MAP
// ¹Â·Î°í
g_fMULogoAlpha += 0.02f;
if (g_fMULogoAlpha > 10.0f) g_fMULogoAlpha = 10.0f;

EnableAlphaBlend();
glColor4f(g_fMULogoAlpha-0.3f,g_fMULogoAlpha-0.3f,g_fMULogoAlpha-0.3f,g_fMULogoAlpha-0.3f);
#ifdef PBG_ADD_MUBLUE_LOGO
BITMAP_t *pImage =NULL;
pImage = &Bitmaps[BITMAP_LOG_IN+17];
RenderBitmap(BITMAP_LOG_IN+17, 320.0f-432*0.4f*0.5f,25.0f, 432*0.4f,384*0.4f,0,0,(432-0.5f)/pImage->Width,(384-0.5f)/pImage->Height);
#else //PBG_ADD_MUBLUE_LOGO
RenderBitmap(BITMAP_LOG_IN+17, setPosMidRight(320.0f-128.0f*0.8f),25.0f, 256.0f*0.8f,128.0f*0.8f);
#endif //PBG_ADD_MUBLUE_LOGO
EnableAlphaTest();
glColor4f(g_fMULogoAlpha,g_fMULogoAlpha,g_fMULogoAlpha,g_fMULogoAlpha);
#ifdef PBG_ADD_MUBLUE_LOGO
pImage = &Bitmaps[BITMAP_LOG_IN+16];
RenderBitmap(BITMAP_LOG_IN+16, 320.0f-432*0.4f*0.5f,25.0f, 432*0.4f,384*0.4f,0,0,432/pImage->Width,384/pImage->Height);
#else //PBG_ADD_MUBLUE_LOGO
RenderBitmap(BITMAP_LOG_IN+16, setPosMidRight(320.0f-128.0f*0.8f),25.0f, 256.0f*0.8f,128.0f*0.8f);
#endif //PBG_ADD_MUBLUE_LOGO
}

SIZE Size;
char Text[100];

int Y = 0;

// - Caixa de criação de conta (dev)

g_pRenderText->SetFont(g_hFont);

InputTextWidth = 256;
glColor3f(0.8f,0.7f,0.6f);
g_pRenderText->SetTextColor(255, 255, 255, 255);
g_pRenderText->SetBgColor(0, 0, 0, 128);

if (m_Resolution > 1)
{
sprintf(Text, "%s%s", GlobalText[454], GlobalText[455]);
}
else
{
sprintf(Text, "%s", GlobalText[454]);
}
g_pMultiLanguage->_GetTextExtentPoint32(g_pRenderText->GetFontDC(), Text, lstrlen(Text), &Size);
g_pRenderText->RenderText(setPosMidRight(335) - Size.cx * 640 / WindowWidth, GetWindowsY - Size.cy * 640 / WindowWidth - 1, Text);

if (m_Resolution < 2)
{
strcpy(Text, GlobalText[455]);

g_pMultiLanguage->_GetTextExtentPoint32(g_pRenderText->GetFontDC(), Text, lstrlen(Text), &Size);
g_pRenderText->RenderText(setPosMidRight(335), GetWindowsY - Size.cy * 640 / WindowWidth - 1, Text);
}

sprintf(Text,GlobalText[456],m_ExeVersion);

g_pMultiLanguage->_GetTextExtentPoint32(g_pRenderText->GetFontDC(), Text, lstrlen(Text), &Size);
g_pRenderText->RenderText(0, GetWindowsY - Size.cy * 640 / WindowWidth - 1, Text);

    RenderInfomation();

#ifdef ENABLE_EDIT
RenderDebugWindow();
#endif //ENABLE_EDIT

EndBitmap();

EndOpengl();

return true;
}

void RenderInterfaceEdge()
{
int Width,Height;
int WindowX,WindowY;
    EnableAlphaTest();
glColor3f(1.f,1.f,1.f);
//interface edge
Width = 192;Height = 37;WindowX = 448;WindowY = 0;
RenderBitmap(BITMAP_LOG_IN,(float)WindowX,(float)WindowY,(float)Width,(float)Height,0.f,0.f,Width/256.f,Height/64.f);
Width = 192;Height = 37;WindowX = 0;WindowY = 0;
RenderBitmap(BITMAP_LOG_IN,(float)WindowX,(float)WindowY,(float)Width,(float)Height,Width/256.f,0.f,-Width/256.f,Height/64.f);
Width = 106;Height = 256;WindowX = 534;WindowY = 3;
RenderBitmap(BITMAP_LOG_IN+1,(float)WindowX,(float)WindowY,(float)Width,(float)Height,0.f,0.f,Width/128.f,Height/256.f);
Width = 106;Height = 256;WindowX = 0;WindowY = 3;
RenderBitmap(BITMAP_LOG_IN+1,(float)WindowX,(float)WindowY,(float)Width,(float)Height,Width/128.f,0.f,-Width/128.f,Height/256.f);
Width = 106;Height = 222;WindowX = 534;WindowY = 259;
RenderBitmap(BITMAP_LOG_IN+2,(float)WindowX,(float)WindowY,(float)Width,(float)Height,0.f,0.f,Width/128.f,Height/256.f);
Width = 106;Height = 222;WindowX = 0;WindowY = 259;
RenderBitmap(BITMAP_LOG_IN+2,(float)WindowX,(float)WindowY,(float)Width,(float)Height,Width/128.f,0.f,-Width/128.f,Height/256.f);
Width = 256;Height = 70;WindowX = 192;WindowY = 0;
RenderBitmap(BITMAP_LOG_IN+3,(float)WindowX,(float)WindowY,(float)Width,(float)Height,0.f,0.f,Width/256.f,Height/128.f);
}

void LoadingScene(HDC hDC)
{
g_ConsoleDebug->Write(MCD_NORMAL, "LoadingScene_Start");

CUIMng& rUIMng = CUIMng::Instance();
if (!InitLoading)
{
LoadingWorld = 9999999;

InitLoading = true;

LoadBitmap("Interface\\LSBg01.JPG", BITMAP_TITLE, GL_LINEAR);
LoadBitmap("Interface\\LSBg02.JPG", BITMAP_TITLE+1, GL_LINEAR);
LoadBitmap("Interface\\LSBg03.JPG", BITMAP_TITLE+2, GL_LINEAR);
LoadBitmap("Interface\\LSBg04.JPG", BITMAP_TITLE+3, GL_LINEAR);

::StopMp3(g_lpszMp3[MUSIC_LOGIN_THEME]);

rUIMng.m_pLoadingScene = new CLoadingScene;
rUIMng.m_pLoadingScene->Create();
}

    FogEnable = false;
::BeginOpengl();
::glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
::BeginBitmap();

rUIMng.m_pLoadingScene->Render();

::EndBitmap();
::EndOpengl();
::glFlush();
::SwapBuffers(hDC);

SAFE_DELETE(rUIMng.m_pLoadingScene);

SceneFlag = MAIN_SCENE;
for (int i = 0; i < 4; ++i)
::DeleteBitmap(BITMAP_TITLE+i);

::ClearInput();

g_ConsoleDebug->Write(MCD_NORMAL, "LoadingScene_End");
}

float CameraDistanceTarget = 1000.f;
float CameraDistance = CameraDistanceTarget;

bool MoveMainCamera()
{
    bool bLockCamera = false;

if (
#ifdef PJH_NEW_SERVER_SELECT_MAP
gMapManager.WorldActive == 94
#else
gMapManager.WorldActive == WD_77NEW_LOGIN_SCENE
#endif //PJH_NEW_SERVER_SELECT_MAP
&& CCameraMove::GetInstancePtr()->IsTourMode())
{
#ifdef PJH_NEW_SERVER_SELECT_MAP
CameraFOV = 65.0f;
#else //PJH_NEW_SERVER_SELECT_MAP
CameraFOV = 61.0f;
#endif //PJH_NEW_SERVER_SELECT_MAP
}
else
{
if (gMapManager.WorldActive == WD_74NEW_CHARACTER_SCENE || gMapManager.WorldActive == WD_73NEW_LOGIN_SCENE) // Fix for opening scene and character selection
{
CameraZoom = 0;
AngleY3D = 0;
}
CameraFOV = 37.f + CameraZoom; //3D CAMERA

if (!g_pUIManager->IsInputEnable())
{
gCamera.Update();
}
}

#ifdef ENABLE_EDIT2
{
bool EditMove = false;
if( !g_pUIManager->IsInputEnable() )
{
if(HIBYTE(GetAsyncKeyState(VK_INSERT))==128)
CameraAngle[2] += 15;
if(HIBYTE(GetAsyncKeyState(VK_DELETE))==128)
CameraAngle[2] -= 15;

vec3_t p1,p2;
Vector(0.f,0.f,0.f,p1);
FLOAT Velocity = sqrtf(TERRAIN_SCALE*TERRAIN_SCALE)*1.25f;

if(HIBYTE(GetAsyncKeyState(VK_LEFT ))==128)// || (MouseX<=0 && MouseY>=100))
{
Vector(-Velocity, -Velocity, 0.f, p1);
EditMove = true;
}
if(HIBYTE(GetAsyncKeyState(VK_RIGHT))==128)// || (MouseX>=639 && MouseY>=100))
{
Vector(Velocity, Velocity, 0.f, p1);
EditMove = true;
}
if(HIBYTE(GetAsyncKeyState(VK_UP   ))==128)// || (MouseY<=0 && MouseX>=100 && MouseX<540))
{
Vector(-Velocity, Velocity, 0.f, p1);
EditMove = true;
}
if(HIBYTE(GetAsyncKeyState(VK_DOWN ))==128)// || (MouseY>=479))
{
Vector(Velocity, -Velocity, 0.f, p1);
EditMove = true;
}

glPushMatrix();
glLoadIdentity();
glRotatef(-CameraAngle[2],0.f,0.f,1.f);
float Matrix[3][4];
GetOpenGLMatrix(Matrix);
glPopMatrix();
VectorRotate(p1,Matrix,p2);
VectorAdd(Hero->Object.Position, p2, Hero->Object.Position);
}

        if ( gMapManager.InChaosCastle()==false || !Hero->Object.m_bActionStart )
        {
if(gMapManager.WorldActive == WD_39KANTURU_3RD && Hero->Object.m_bActionStart)
{}
else
            if ( gMapManager.WorldActive==-1 || Hero->Helper.Type != MODEL_HELPER+3 || Hero->SafeZone )
            {
Hero->Object.Position[2] = RequestTerrainHeight(Hero->Object.Position[0],Hero->Object.Position[1]);
            }
            else
            {
                if ( gMapManager.WorldActive==WD_8TARKAN || gMapManager.WorldActive==WD_10HEAVEN )
                    Hero->Object.Position[2] = RequestTerrainHeight(Hero->Object.Position[0],Hero->Object.Position[1])+90.f;
                else
                    Hero->Object.Position[2] = RequestTerrainHeight(Hero->Object.Position[0],Hero->Object.Position[1])+30.f;
            }
        }

if(EditMove)
{
BYTE PathX[1];
BYTE PathY[1];
PathX[0] = (BYTE)(Hero->Object.Position[0]/TERRAIN_SCALE);
PathY[0] = (BYTE)(Hero->Object.Position[1]/TERRAIN_SCALE);

#ifdef NEW_PROTOCOL_SYSTEM
gProtocolSend.SendCharacterMoveNew(Hero->Key,Hero->Object.Angle[2],1,PathX,PathY,PathX[0],PathY[0]);
#else
SendCharacterMove(Hero->Key,Hero->Object.Angle[2],1,PathX,PathY,PathX[0],PathY[0]);
#endif

            Hero->Path.PathNum = 0;
}
}
#endif //ENABLE_EDIT2

CameraAngle[0] = 0.f;
CameraAngle[1] = 0.f;

if(CameraTopViewEnable)
{
CameraViewFar = 3200.f;
//CameraViewFar = 60000.f;
CameraPosition[0] = Hero->Object.Position[0];
CameraPosition[1] = Hero->Object.Position[1];
CameraPosition[2] = CameraViewFar;
}
else
{
int iIndex = TERRAIN_INDEX((Hero->PositionX),(Hero->PositionY));
vec3_t Position,TransformPosition;
float Matrix[3][4];

        if ( battleCastle::InBattleCastle2( Hero->Object.Position ) )
        {
            CameraViewFar = 3000.f;
        }
        else if ( gMapManager.InBattleCastle() && SceneFlag == MAIN_SCENE)
        {
            CameraViewFar = 2500.f;
        }
else if (gMapManager.WorldActive == WD_51HOME_6TH_CHAR)
{
CameraViewFar = 2800.f * 1.15f;
}
  else if(gMapManager.IsPKField() || IsDoppelGanger2())
{
CameraViewFar = 3700.0f;
  }
        else
        {
            switch ( g_shCameraLevel )
            {
            case 0:
if(SceneFlag == LOG_IN_SCENE)
{
}
else if(SceneFlag == CHARACTER_SCENE)
{
#ifdef PJH_NEW_SERVER_SELECT_MAP
CameraViewFar = 3500.f;
#else //PJH_NEW_SERVER_SELECT_MAP
CameraViewFar = 10000.f;
#endif //PJH_NEW_SERVER_SELECT_MAP
}
else if (g_Direction.m_CKanturu.IsMayaScene())
{
CameraViewFar = 2000.f * 10.0f * 0.115f;
}
else
{
CameraViewFar = 2000.f;
}
break;
            case 1: CameraViewFar = 2500.f; break;
            case 2: CameraViewFar = 2600.f; break;
            case 3: CameraViewFar = 2950.f; break;
case 5:
            case 4: CameraViewFar = 3200.f; break;
            }
        }

Vector(0.f,-CameraDistance,0.f,Position);//-750
AngleMatrix(CameraAngle,Matrix);
VectorIRotate(Position,Matrix,TransformPosition);

if(SceneFlag == MAIN_SCENE)
{
g_pCatapultWindow->GetCameraPos(Position);
}
else if (CCameraMove::GetInstancePtr()->IsTourMode())
{
CCameraMove::GetInstancePtr()->UpdateTourWayPoint();
CCameraMove::GetInstancePtr()->GetCurrentCameraPos(Position);
CameraViewFar = 390.f * CCameraMove::GetInstancePtr()->GetCurrentCameraDistanceLevel();
}

if(g_Direction.IsDirection() && !g_Direction.m_bDownHero)
{
Hero->Object.Position[2] = 300.0f;
g_shCameraLevel = g_Direction.GetCameraPosition(Position);
}
  else if(gMapManager.IsPKField() || IsDoppelGanger2())
{
  g_shCameraLevel =5;
  }
else if (IsDoppelGanger1())
{
  g_shCameraLevel =5;
}
else g_shCameraLevel =0;

#ifdef PJH_NEW_SERVER_SELECT_MAP
if(CCameraMove::GetInstancePtr()->IsTourMode())
{
vec3_t temp = {0.0f,0.0f,-100.0f};
VectorAdd(TransformPosition, temp, TransformPosition);
}
#endif //PJH_NEW_SERVER_SELECT_MAP

VectorAdd ( Position,TransformPosition,CameraPosition);

        if ( gMapManager.InBattleCastle()==true )
        {
            CameraPosition[2] = 255.f;//700
        }
else if (CCameraMove::GetInstancePtr()->IsTourMode());
        else
        {
            CameraPosition[2] = Hero->Object.Position[2];//700
        }

if ( (TerrainWall[iIndex]&TW_HEIGHT)==TW_HEIGHT )
{
CameraPosition[2] = g_fSpecialHeight = 1200.f+1;
}           
CameraPosition[2] += CameraDistance-150.f;//700

if (CCameraMove::GetInstancePtr()->IsTourMode())
{
#ifdef PJH_NEW_SERVER_SELECT_MAP
CCameraMove::GetInstancePtr()->SetAngleFrustum(-112.5f);
CameraAngle[0] = CCameraMove::GetInstancePtr()->GetAngleFrustum();
#else // PJH_NEW_SERVER_SELECT_MAP
CameraAngle[0] = -78.5f;
#endif // PJH_NEW_SERVER_SELECT_MAP
CameraAngle[1] = 0.0f;
CameraAngle[2] = CCameraMove::GetInstancePtr()->GetCameraAngle();
}
else if(SceneFlag == CHARACTER_SCENE)
{
#ifdef PJH_NEW_SERVER_SELECT_MAP
CameraAngle[0] = -84.5f;
CameraAngle[1] = 0.0f;
CameraAngle[2] = -75.0f;
  CameraPosition[0] = 9758.93f;
  CameraPosition[1] = 18913.11f;
  CameraPosition[2] = 675.5f;
#else //PJH_NEW_SERVER_SELECT_MAP
CameraAngle[0] = -84.5f;
CameraAngle[1] = 0.0f;
CameraAngle[2] = -30.0f;
CameraPosition[0] = 23566.75f;
CameraPosition[1] = 14085.51f;
CameraPosition[2] = 395.0f;
#endif //PJH_NEW_SERVER_SELECT_MAP
}
else
{
CameraAngle[0] = -48.5f;
CameraAngle[0] += AngleY3D;
CameraPosition[2] += AngleZ3D;
}

CameraAngle[0] += EarthQuake;

        if ( ( TerrainWall[iIndex]&TW_CAMERA_UP )==TW_CAMERA_UP )
        {
            if ( g_fCameraCustomDistance<=CUSTOM_CAMERA_DISTANCE1 )
            {
                g_fCameraCustomDistance+=10;
            }
        }
        else
        {
            if ( g_fCameraCustomDistance>0 )
            {
                g_fCameraCustomDistance-=10;
            }
        }

        if ( g_fCameraCustomDistance>0 )
        {
            vec3_t angle = { 0.f, 0.f, -45.f };
    Vector ( 0.f, g_fCameraCustomDistance, 0.f, Position );
    AngleMatrix ( angle, Matrix );
    VectorIRotate ( Position, Matrix, TransformPosition );
    VectorAdd ( CameraPosition, TransformPosition, CameraPosition );
        }
        else if ( g_fCameraCustomDistance<0 )
        {
            vec3_t angle = { 0.f, 0.f, -45.f };
    Vector ( 0.f, g_fCameraCustomDistance, 0.f, Position );
    AngleMatrix ( angle, Matrix );
    VectorIRotate ( Position, Matrix, TransformPosition );
    VectorAdd ( CameraPosition, TransformPosition, CameraPosition );
        }
}
if(gMapManager.WorldActive==5)
{
CameraAngle[0] += sinf(WorldTime*0.0005f)*2.f;
CameraAngle[1] += sinf(WorldTime*0.0008f)*2.5f;
}
    else if (CCameraMove::GetInstancePtr()->IsTourMode())
{
CameraDistanceTarget = 1100.f * CCameraMove::GetInstancePtr()->GetCurrentCameraDistanceLevel() * 0.1f;
CameraDistance = CameraDistanceTarget;
}
else
    {
        if ( gMapManager.InBattleCastle() )
        {
            CameraDistanceTarget = 1100.f;
            CameraDistance = CameraDistanceTarget;
        }
        else
        {
            switch ( g_shCameraLevel )
            {
            case 0: CameraDistanceTarget = 1000.f; CameraDistance += (CameraDistanceTarget-CameraDistance)/3; break;
            case 1: CameraDistanceTarget = 1100.f; CameraDistance += (CameraDistanceTarget-CameraDistance)/3; break;
            case 2: CameraDistanceTarget = 1200.f; CameraDistance += (CameraDistanceTarget-CameraDistance)/3; break;
            case 3: CameraDistanceTarget = 1300.f; CameraDistance += (CameraDistanceTarget-CameraDistance)/3; break;
            case 4: CameraDistanceTarget = 1400.f; CameraDistance += (CameraDistanceTarget-CameraDistance)/3; break;
case 5: CameraDistanceTarget = g_Direction.m_fCameraViewFar; CameraDistance += (CameraDistanceTarget-CameraDistance)/3; break;
            }
        }
    }
// 3d camera
// Field of vision

if (CameraZoom > 0)
CameraViewFar += 458.33f + (458.33f * CameraZoom);
else
CameraViewFar += 1458.33f;

    return bLockCamera;
}

void MoveMainScene()
{
if(!InitMainScene)
{
g_pMainFrame->ResetSkillHotKey();

g_ConsoleDebug->Write( MCD_NORMAL, "Join the game with the following character: %s", CharactersClient[SelectedHero].ID);

g_ErrorReport.Write( "> Character selected <%d> \"%s\"\r\n", SelectedHero+1, CharactersClient[SelectedHero].ID);

        InitMainScene = true;

g_ConsoleDebug->Write( MCD_SEND, "SendRequestJoinMapServer");

    SendRequestJoinMapServer(CharactersClient[SelectedHero].ID);

CUIMng::Instance().CreateMainScene();

CameraAngle[2] = -45.f;

ClearInput();
InputEnable     = false;
TabInputEnable  = false;
InputTextWidth  = 256;
InputTextMax[0] = 42;
InputTextMax[1] = 10;
InputNumber     = 2;
for(int i=0;i<MAX_WHISPER;i++)
{
g_pChatListBox->AddText("", "", SEASON3B::TYPE_WHISPER_MESSAGE);
}

g_GuildNotice[0][0] = '\0';
g_GuildNotice[1][0] = '\0';

g_pPartyManager->Create();

g_pChatListBox->ClearAll();

g_pSlideHelpMgr->Init();
g_pUIMapName->Init();

g_GuildCache.Reset();

g_PortalMgr.Reset();

ClearAllObjectBlurs();

SetFocus(g_hWnd);

g_ErrorReport.Write( "> Main Scene init success. ");
g_ErrorReport.WriteCurrentTime();

g_ConsoleDebug->Write(MCD_NORMAL, "MainScene Init Success");
}

if(CurrentProtocolState == RECEIVE_JOIN_MAP_SERVER)
{
EnableMainRender = true;
}
if(EnableMainRender == false)
{
return;
}
//init
EarthQuake *= 0.2f;

InitTerrainLight();

#ifdef NEW_MUHELPER_ON
if (pAIController->IsRunning())
{
pAIController->WhatToDoNext();
}
#endif

CheckInventory = NULL;
CheckSkill = -1;
MouseOnWindow = false;


if(!CameraTopViewEnable && LoadingWorld < 30 )
{
if(MouseY>=(int)(GetWindowsY - 51))
MouseOnWindow = true;

g_pPartyManager->Update();
g_pNewUISystem->Update();

if (MouseLButton == true && false == g_pNewUISystem->CheckMouseUse() && g_dwMouseUseUIID == 0 && g_pNewUISystem->IsVisible(SEASON3B::INTERFACE_CHATINPUTBOX) == false )
{
g_pWindowMgr->SetWindowsEnable(FALSE);
g_pFriendMenu->HideMenu();
g_dwKeyFocusUIID = 0;
if(GetFocus() != g_hWnd)
{
SaveIMEStatus();
SetFocus(g_hWnd);
}
}
MoveInterface();
MoveTournamentInterface();
if( ErrorMessage != MESSAGE_LOG_OUT )
g_pUIManager->UpdateInput();
}

if(ErrorMessage != NULL)
MouseOnWindow = true;

    MoveObjects();
    if(!CameraTopViewEnable)
    MoveItems();
if ( ( gMapManager.WorldActive==WD_0LORENCIA && HeroTile!=4 ) ||
         ( gMapManager.WorldActive==WD_2DEVIAS && HeroTile!=3 && HeroTile<10 )
|| gMapManager.WorldActive==WD_3NORIA
|| gMapManager.WorldActive==WD_7ATLANSE
|| gMapManager.InDevilSquare() == true
|| gMapManager.WorldActive==WD_10HEAVEN
         || gMapManager.InChaosCastle()==true
         || gMapManager.InBattleCastle()==true
|| M31HuntingGround::IsInHuntingGround()==true
|| M33Aida::IsInAida()==true
|| M34CryWolf1st::IsCyrWolf1st()==true
|| gMapManager.WorldActive == WD_42CHANGEUP3RD_2ND
|| IsIceCity()
|| IsSantaTown()
|| gMapManager.IsPKField()
|| IsDoppelGanger2()
|| gMapManager.IsEmpireGuardian1()
|| gMapManager.IsEmpireGuardian2()
|| gMapManager.IsEmpireGuardian3()
|| gMapManager.IsEmpireGuardian4()
|| IsUnitedMarketPlace()
)
{
        MoveLeaves();
}

MoveBoids();
    MoveFishs();
MoveBugs();
MoveChat();
UpdatePersonalShopTitleImp();
MoveHero();
    MoveCharactersClient();
ThePetProcess().UpdatePets();
    MovePoints();
MovePlanes();
MoveEffects();
    MoveJoints();
    MoveParticles();
    MovePointers();

g_Direction.CheckDirection();
   
#ifdef ENABLE_EDIT
    EditObjects();
#endif //ENABLE_EDIT

g_GameCensorship->Update();

g_ConsoleDebug->UpdateMainScene();
}

bool RenderMainScene()
{
if(EnableMainRender == false) 
{
return false;
}

    if(( LoadingWorld) > 30)
{
return false;
}

    FogEnable = false;

    vec3_t pos;

    if(MoveMainCamera() == true)
    {
        VectorCopy ( Hero->Object.StartPosition, pos );
    }
    else
    {
g_pCatapultWindow->GetCameraPos(pos);

if(g_Direction.IsDirection() && g_Direction.m_bDownHero == false)
{
g_Direction.GetCameraPosition(pos);
}
    }

int Width,Height;

    BYTE byWaterMap = 0;

if(CameraTopViewEnable == false)
{
Height = 480; //480-48;
}
else
{
Height = 480;
}

    Width = FrameBeginOpengl();
    if(gMapManager.WorldActive == WD_0LORENCIA)     
{
glClearColor(10/256.f,20/256.f,14/256.f,1.f);
}
    else if(gMapManager.WorldActive == WD_2DEVIAS)
{
glClearColor(0.f/256.f,0.f/256.f,10.f/256.f,1.f);
}
    else if(gMapManager.WorldActive == WD_10HEAVEN)
{
glClearColor(3.f/256.f,25.f/256.f,44.f/256.f,1.f);
}
    else if(gMapManager.InChaosCastle() == true)
{
glClearColor(0/256.f,0/256.f,0/256.f,1.f);
}
else if(gMapManager.WorldActive >= WD_45CURSEDTEMPLE_LV1 && gMapManager.WorldActive <= WD_45CURSEDTEMPLE_LV6)
{
glClearColor(9.f/256.f,8.f/256.f,33.f/256.f,1.f);
}
    else if(gMapManager.InHellas() == true)
    {
        byWaterMap = 1;
        glClearColor(0.f/256.f,0.f/256.f,0.f/256.f,1.f);
    }
    else   
{
glClearColor(0/256.f,0/256.f,0/256.f,1.f);
}

BeginOpengl(0, 0, (m_Resolution > 2 ? GetWindowsX : Width), GetWindowsY);

CreateFrustrum((float)Width/(float)640, pos);

    if ( gMapManager.InBattleCastle() )
    {
        if ( battleCastle::InBattleCastle2( Hero->Object.Position ) )
        {
            vec3_t Color = { 0.f, 0.f, 0.f };
            battleCastle::StartFog ( Color );
        }
        else
        {
            glDisable ( GL_FOG );
        }
    }

CreateScreenVector(MouseX,MouseY,MouseTarget);

    if ( IsWaterTerrain()==false )
    {
if(gMapManager.WorldActive==WD_39KANTURU_3RD)
{
if(!g_Direction.m_CKanturu.IsMayaScene())
RenderTerrain(false);
}
else
        if(gMapManager.WorldActive!=WD_10HEAVEN && gMapManager.WorldActive != -1)
        {
if(gMapManager.IsPKField() || IsDoppelGanger2())
{
RenderObjects();
}
            RenderTerrain(false);
        }
    }

if(!gMapManager.IsPKField() && !IsDoppelGanger2())
RenderObjects();

RenderEffectShadows();
    RenderBoids();

RenderCharactersClient();

if(EditFlag!=EDIT_NONE)
{
RenderTerrain(true);
    }
    if(!CameraTopViewEnable)
      RenderItems();

    RenderFishs();
    RenderBugs();
    RenderLeaves();

if (!gMapManager.InChaosCastle())
ThePetProcess().RenderPets();

RenderBoids(true);
RenderObjects_AfterCharacter();

    RenderJoints(byWaterMap);
RenderEffects();
    RenderBlurs();
    CheckSprites();
    BeginSprite();

if ((gMapManager.WorldActive == WD_2DEVIAS && HeroTile != 3 && HeroTile < 10)
|| IsIceCity()
|| IsSantaTown()
|| gMapManager.IsPKField()
|| IsDoppelGanger2()
|| gMapManager.IsEmpireGuardian1()
|| gMapManager.IsEmpireGuardian2()
|| gMapManager.IsEmpireGuardian3()
|| gMapManager.IsEmpireGuardian4()
|| IsUnitedMarketPlace()
)
{
RenderLeaves();
}

RenderSprites();
RenderParticles();

    if ( IsWaterTerrain()==false )
    {
        RenderPoints ( byWaterMap );
    }

    EndSprite();

RenderAfterEffects();

    if(IsWaterTerrain() == true)
    {
        byWaterMap = 2;

EndOpengl();
if (gMapManager.InHellas(gMapManager.WorldActive))
{
BeginOpengl(0, 0, GetWindowsX, GetWindowsY);
}
else
{
BeginOpengl(0, 0, Width, Height);
}
        RenderWaterTerrain();
        RenderJoints(byWaterMap );
        RenderEffects( true );
        RenderBlurs();
        CheckSprites();
        BeginSprite();

        if(gMapManager.WorldActive==WD_2DEVIAS && HeroTile!=3 && HeroTile<10)
            RenderLeaves();

RenderSprites(byWaterMap);
RenderParticles(byWaterMap);
        RenderPoints ( byWaterMap );

        EndSprite();
EndOpengl();

BeginOpengl( 0, 0, Width, Height );
    }

    if(gMapManager.InBattleCastle())
    {
        if(battleCastle::InBattleCastle2(Hero->Object.Position))
        {
            battleCastle::EndFog();
        }
    }

    SelectObjects();
BeginBitmap();
    RenderObjectDescription();

if(CameraTopViewEnable == false)
{
        RenderInterface(true);
}
RenderTournamentInterface();
EndBitmap();

g_pPartyManager->Render();
g_pNewUISystem->Render();

BeginBitmap();

RenderInfomation();

#ifdef ENABLE_EDIT
RenderDebugWindow();
#endif //ENABLE_EDIT

EndBitmap();
BeginBitmap();

    RenderCursor();

EndBitmap();
    EndOpengl();

return true;
}

int TimeRemain = 40;
extern int ChatTime;
extern int WaterTextureNumber;

int TestTime = 0;
extern int  GrabScreen;

void MoveCharacter(CHARACTER *c,OBJECT *o);

int TimePrior = GetTickCount();

double target_fps = 60;
double ms_per_frame = 1000.0 / target_fps;

void SetTargetFps(double targetFps)
{
targetFps = -1;

target_fps = targetFps;
ms_per_frame = 1000.0 / target_fps;
}

double last_render_tick_count = 0;
double current_tick_count = 0;
double last_water_change = 0;

void UpdateSceneState()
{
g_pNewKeyInput->ScanAsyncKeyState();

g_dwMouseUseUIID = 0;

switch (SceneFlag)
{
case LOG_IN_SCENE:
NewMoveLogInScene();
break;

case CHARACTER_SCENE:
NewMoveCharacterScene();
break;

case MAIN_SCENE:
MoveMainScene();
break;
}

MoveNotices();

if (PressKey(VK_SNAPSHOT))
{
if (GrabEnable)
GrabEnable = false;
else
GrabEnable = true;
}
if (ChatTime > 0) ChatTime--;
if (MacroTime > 0) MacroTime--;


SYSTEMTIME st;
GetLocalTime(&st);
sprintf(GrabFileName, gProtect->m_MainInfo.ScreenShotPath, st.wMonth, st.wDay, st.wHour, st.wMinute, GrabScreen);
char Text[256];
sprintf(Text, GlobalText[459], GrabFileName);
char lpszTemp[64];
wsprintf(lpszTemp, " [%s / %s]", g_ServerListManager->GetSelectServerName(), Hero->ID);
strcat(Text, lpszTemp);
int iCaptureMode = 1;

if (GrabEnable)
{
SaveScreen();
}

if (GrabEnable && iCaptureMode == 1)
{
g_pChatListBox->AddText("", Text, SEASON3B::TYPE_SYSTEM_MESSAGE);
}

GrabEnable = false;
}

void MainScene(HDC hDC)
{
if (LOG_IN_SCENE == SceneFlag || CHARACTER_SCENE == SceneFlag)
{
double dDeltaTick = g_pTimer->GetTimeElapsed();
dDeltaTick = MIN(dDeltaTick, 200.0 * FPS_ANIMATION_FACTOR);
//g_pTimer->ResetTimer();

CInput::Instance().Update();
CUIMng::Instance().Update(dDeltaTick);
}

constexpr int NumberOfWaterTextures = 32;
constexpr double timePerFrame = 1000 / REFERENCE_FPS;
auto time_since_last_render = current_tick_count - last_water_change;
while (time_since_last_render > timePerFrame)
{
WaterTextureNumber++;
WaterTextureNumber %= NumberOfWaterTextures;
time_since_last_render -= timePerFrame;
last_water_change = current_tick_count;
}

if (Destroy)
{
return;
}

g_PhysicsManager.Move(0.025f * FPS_ANIMATION_FACTOR);

Bitmaps.Manage();

Set3DSoundPosition();

    if( gMapManager.WorldActive==WD_10HEAVEN )
    {
        glClearColor(3.f/256.f,25.f/256.f,44.f/256.f,1.f);
    }
#ifdef PJH_NEW_SERVER_SELECT_MAP
else if (gMapManager.WorldActive == WD_73NEW_LOGIN_SCENE|| gMapManager.WorldActive == WD_74NEW_CHARACTER_SCENE)
    {
        glClearColor(0.0f, 0.0f, 0.0f, 1.0f );
    }
#endif //PJH_NEW_SERVER_SELECT_MAP
    else if (gMapManager.InHellas(gMapManager.WorldActive))
    {
        glClearColor(30.f/256.f,40.f/256.f,40.f/256.f,1.f);
    }
    else if ( gMapManager.InChaosCastle()==true )
    {
        glClearColor ( 0.f, 0.f, 0.f, 1.f );
    }
    else if ( gMapManager.InBattleCastle() && battleCastle::InBattleCastle2( Hero->Object.Position ) )
    {
        glClearColor ( 0.f, 0.f, 0.f, 1.f );
    }
else if ( gMapManager.WorldActive >= WD_45CURSEDTEMPLE_LV1 && gMapManager.WorldActive <= WD_45CURSEDTEMPLE_LV6)
{
glClearColor(9.f/256.f,8.f/256.f,33.f/256.f,1.f);
}
else if ( gMapManager.WorldActive == WD_51HOME_6TH_CHAR
#ifndef PJH_NEW_SERVER_SELECT_MAP
|| World == WD_77NEW_LOGIN_SCENE
#endif //PJH_NEW_SERVER_SELECT_MAP
)
{
glClearColor(178.f/256.f,178.f/256.f,178.f/256.f,1.f);
}
#ifndef PJH_NEW_SERVER_SELECT_MAP
else if(World == WD_78NEW_CHARACTER_SCENE)
{
glClearColor(0.f,0.f,0.f,1.f);
}
#endif //PJH_NEW_SERVER_SELECT_MAP
else if(gMapManager.WorldActive == WD_65DOPPLEGANGER1)
{
glClearColor(148.f/256.f,179.f/256.f,223.f/256.f,1.f);
}
    else
    {
        glClearColor(0/256.f,0/256.f,0/256.f,1.f);
    }

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

int32_t DifTimer = 0;
uint32_t LastTimeCurrent = TimePrior;
TimePrior = GetTickCount();

bool Success = false;

try
{
if (SceneFlag == LOG_IN_SCENE)
{
Success = NewRenderLogInScene(hDC);
}
else if (SceneFlag == CHARACTER_SCENE)
{
Success = NewRenderCharacterScene(hDC);
}
else if (SceneFlag == MAIN_SCENE)
{
Success = RenderMainScene();
}

g_PhysicsManager.Render();

//#if defined(_DEBUG) || defined(LDS_FOR_DEVELOPMENT_TESTMODE) || defined(LDS_UNFIXED_FIXEDFRAME_FORDEBUG)
BeginBitmap();
unicode::t_char szDebugText[128];
unicode::_sprintf(szDebugText, "FPS : %.1f Connected: %d", FPS, g_bGameServerConnected);
unicode::t_char szMousePos[128];
unicode::_sprintf(szMousePos, "MousePos : %d %d %d", MouseX, MouseY, MouseLButtonPush);
g_pRenderText->SetFont(g_hFontBold);
g_pRenderText->SetBgColor(0, 0, 0, 100);
g_pRenderText->SetTextColor(255, 255, 255, 200);
g_pRenderText->RenderText(120, 26, szDebugText);
g_pRenderText->RenderText(120, 36, szMousePos);
g_pRenderText->SetFont(g_hFont);
EndBitmap();
//#endif // defined(_DEBUG) || defined(LDS_FOR_DEVELOPMENT_TESTMODE) || defined(LDS_UNFIXED_FIXEDFRAME_FORDEBUG)

if (Success)
{
SwapBuffers(hDC);
}

if (EnableSocket && SceneFlag == MAIN_SCENE)
{
#ifdef NEW_PROTOCOL_SYSTEM
if (!gProtocolSend.CheckConnected())
#else
if (SocketClient.GetSocket() == INVALID_SOCKET)
#endif
{
static BOOL s_bClosed = FALSE;
if (!s_bClosed)
{
s_bClosed = TRUE;
g_ErrorReport.Write("> Connection closed. ");
g_ErrorReport.WriteCurrentTime();
SEASON3B::CreateMessageBox(MSGBOX_LAYOUT_CLASS(SEASON3B::CServerLostMsgBoxLayout));
}
}
}

if (SceneFlag == MAIN_SCENE)
{
switch (gMapManager.WorldActive)
{
case WD_0LORENCIA:
if (HeroTile == 4)
{
StopBuffer(SOUND_WIND01, true);
StopBuffer(SOUND_RAIN01, true);
}
else
{
PlayBuffer(SOUND_WIND01, NULL, true);
if (RainCurrent > 0)
PlayBuffer(SOUND_RAIN01, NULL, true);
}
break;
case WD_1DUNGEON:
PlayBuffer(SOUND_DUNGEON01, NULL, true);
break;
case WD_2DEVIAS:
if (HeroTile == 3 || HeroTile >= 10)
StopBuffer(SOUND_WIND01, true);
else
PlayBuffer(SOUND_WIND01, NULL, true);
break;
case WD_3NORIA:
PlayBuffer(SOUND_WIND01, NULL, true);
if (rand() % 512 == 0)
PlayBuffer(SOUND_FOREST01);
break;
case WD_4LOSTTOWER:
PlayBuffer(SOUND_TOWER01, NULL, true);
break;
case WD_5UNKNOWN:
//PlayBuffer(SOUND_BOSS01,NULL,true);
break;
case WD_7ATLANSE:
PlayBuffer(SOUND_WATER01, NULL, true);
break;
case WD_8TARKAN:
PlayBuffer(SOUND_DESERT01, NULL, true);
break;
case WD_10HEAVEN:
PlayBuffer(SOUND_HEAVEN01, NULL, true);
if ((rand() % 100) == 0)
{
//                PlayBuffer(SOUND_HEAVEN01);
}
else if ((rand() % 10) == 0)
{
//                PlayBuffer(SOUND_THUNDERS02);
}
break;
case WD_58ICECITY_BOSS:
PlayBuffer(SOUND_WIND01, NULL, true);
break;
case WD_79UNITEDMARKETPLACE:
{
PlayBuffer(SOUND_WIND01, NULL, true);
PlayBuffer(SOUND_RAIN01, NULL, true);
}
break;
#ifdef ASG_ADD_MAP_KARUTAN
case WD_80KARUTAN1:
PlayBuffer(SOUND_KARUTAN_DESERT_ENV, NULL, true);
break;
case WD_81KARUTAN2:
if (HeroTile == 12)
{
StopBuffer(SOUND_KARUTAN_DESERT_ENV, true);
PlayBuffer(SOUND_KARUTAN_KARDAMAHAL_ENV, NULL, true);
}
else
{
StopBuffer(SOUND_KARUTAN_KARDAMAHAL_ENV, true);
PlayBuffer(SOUND_KARUTAN_DESERT_ENV, NULL, true);
}
break;
#endif // ASG_ADD_MAP_KARUTAN
}
if (gMapManager.WorldActive != WD_0LORENCIA && gMapManager.WorldActive != WD_2DEVIAS && gMapManager.WorldActive != WD_3NORIA && gMapManager.WorldActive != WD_58ICECITY_BOSS && gMapManager.WorldActive != WD_79UNITEDMARKETPLACE)
{
StopBuffer(SOUND_WIND01, true);
}
if (gMapManager.WorldActive != WD_0LORENCIA && gMapManager.InDevilSquare() == false && gMapManager.World

Gracias:


Offline spartacus #97 Posteado: July 06, 2025, 12:31:11 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 260
  • Gracias recibida: 120
  • cl
@caminhada I put your code and it gave a lot of errors when compiling.
SMD.h
GMHellas.h
CComGem.h
ZzzScene.cpp
Winmain.h
MapManager.h


Offline spartacus #98 Posteado: July 09, 2025, 09:18:46 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 260
  • Gracias recibida: 120
  • cl
BUG:
chat not working
and
custom jewels need to switch character to apply


use em ZzzScene.cpp

if(ChatTime > 0) ChatTime--;
      if(MacroTime > 0) MacroTime--;


 aplausos aplausos aplausos

Podrías enseñarme cómo solucionar este problema?


Offline dakosmu #99 Posteado: July 09, 2025, 09:22:14 PM | Modificado: August 13, 2025, 03:56:30 PM by dakosmu

  • Colaborador
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 779
  • Gracias recibida: 11645
  • ve
BUG:
chat not working
and
custom jewels need to switch character to apply


use em ZzzScene.cpp

if(ChatTime > 0) ChatTime--;
      if(MacroTime > 0) MacroTime--;


 aplausos aplausos aplausos

Podrías enseñarme cómo solucionar este problema?



void UpdateSceneState()



Dakosmu Colaborador

Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate


 

Related Topics

  Subject / Started by Replies Last post
15 Replies
5812 Views
Last post January 26, 2022, 12:29:29 PM
by victorrz17
2 Replies
3038 Views
Last post March 17, 2021, 01:23:36 AM
by matheusgom
125 Replies
33863 Views
Last post April 14, 2023, 05:11:07 PM
by esteban
7 Replies
2824 Views
Last post April 11, 2023, 08:53:28 PM
by bin9xhn2
106 Replies
19919 Views
Last post March 20, 2023, 04:59:50 AM
by samsunggon