PDA

View Full Version : |Suporte| Desativar BattleZone 1.04D



Odisk
05/08/2020, 12:45 AM
Oi pessoal, o verdd já escapou de um parafuso tentando consertar o mapa BattleZone no 1.04D

Eu tenho o seguinte problema ao ativar as gens que o battleMap é ativado no Emu. Eu sei que eles conseguiram corrigir esse problema, mas no zteam ou exteam é um problema que ainda persiste. Não sei quem pode me ajudar.
Por exemplo, Denis Alves conseguiu dar para remover do soucer para remover a linha da zona de batalha do Main

mas ainda temos o problema em movimento pelos Gs

exemplo do que eu quero explicar

[Only registered and activated users can see links]

genssystem.cfg

// Description: Gens system settings
// ----------------------------------------------------------------------------------
// Revision: 18:45 23:35 15.12.2013
//================================================== =================================

//=====================================
// Main
//=====================================
0
// ----------------------------------------------------------------------------------------------------------------
// Point ReqLvl ReqRes GuildCreate GuildEnter PartyEnter AllianceEnter AllowPK ChatPrice
// ----------------------------------------------------------------------------------------------------------------
1 80 0 1 1 1 1 0 0
end

//=====================================
// Battle Zone List
//=====================================
1
// ----------------------------------------------------------------------------------
// Index Description
// ----------------------------------------------------------------------------------
// 7 // Atlans
// 33 // Aida
// 37 // Kanturu 1-2
// 56 // Swamp Of Calmness
// 63 // Vulcanus
end

//=====================================
// Battle Map List (Teleport)
//=====================================
2
// ----------------------------------------------------------------------------------
// Index Description
// ----------------------------------------------------------------------------------
// 10 // Atlans 1
// 11 // Atlans 1
// 12 // Atlans 2
// 13 // Atlans 3
// 25 // Aida 1
// 27 // Aida 2
// 28 // Kanturu 1
// 29 // Kanturu 2
// 33 // Swamp Of Calmness
// 42 // Vulcanus
// 45 // Kanturu Island (Crywolf)
end

//=====================================
// Reward Table
//=====================================
3
// ----------------------------------------------------------------------------------
// Rank iIndex iID iLevel iCount Description
// ----------------------------------------------------------------------------------
1 14 141 0 30 // Grand Duke
2 14 141 0 20 // Duke
3 14 142 0 20 // Marquis
4 14 142 0 10 // Count
5 14 143 0 10 // Viscount
6 14 143 0 5 // Baron
7 14 144 0 5 // Knight Commander
8 14 144 0 3 // Super Knight
end

SRC

gensSystem.cpp
[Only registered and activated users can see links]
GensSystem.h
[Only registered and activated users can see links]

Eu espero que alguém possa me ajudar com isso
Obrigado cumprimentando EQUIPE.!

LorenStudio
05/08/2020, 02:13 AM
Olá ^^ bom no mapmanager existe algo chamado gensBattle apenas deixe todos com 0 que vai funcionar 100% eu utilizo dessa forma e não tenho dor de cabeça :)

Denis Alves
05/08/2020, 02:33 AM
Odisk, te mandei privado. Eu ainda não verifiquei essa situação, mas acredito que tenha algo do lado do Main tambem.

Abraço!

Odisk
06/08/2020, 03:11 AM
Olá ^^ bom no mapmanager existe algo chamado gensBattle apenas deixe todos com 0 que vai funcionar 100% eu utilizo dessa forma e não tenho dor de cabeça :)

ola então eu tenho isso no código, não consigo encontrar gensbattle

Obrigado pela ajuda.


MapServerManager.cpp



//GS-CS 1.00.90 finished
#include "stdafx.h"
#include "MapServerManager.h"
#include "MapClass.h"
#include "..\include\readscript.h"
#include "GameMain.h"
#include "LogProc.h"
#include "user.h"

_MAPSVR_DATA::_MAPSVR_DATA()
{
this->Clear(1);
}

_MAPSVR_DATA::~_MAPSVR_DATA()
{
return;
}

void _MAPSVR_DATA::Clear(int iInitSetVal)
{
this->m_bIN_USE = FALSE;
this->m_btMAPSVR_GROUP = -1;
this->m_sSVR_CODE = -1;
memset(this->m_cIPADDR, 0, sizeof(this->m_cIPADDR));
this->m_wPORT = 0;

for ( int iMAP_COUNT =0;iMAP_COUNT<MAX_NUMBER_MAP;iMAP_COUNT++)
{
switch ( iInitSetVal )
{
case -1:
this->m_sMAP_MOVE[iMAP_COUNT] = -2;
break;
case 0:
this->m_sMAP_MOVE[iMAP_COUNT] = -1;
break;
default:
this->m_sMAP_MOVE[iMAP_COUNT] = -3;
}
}
}

CMapServerManager::CMapServerManager()
{
srand(time(NULL));
this->m_bMapDataLoadOk=FALSE;
this->m_lpThisMapSvrData = NULL;

InitializeCriticalSection(&this->m_critSVRCODE_MAP);
}

CMapServerManager::~CMapServerManager()
{
DeleteCriticalSection(&this->m_critSVRCODE_MAP);
}

void CMapServerManager::Clear()
{
this->m_bMapDataLoadOk = FALSE;

for ( int iGROUP_COUNT=0;iGROUP_COUNT<MAX_MAP_GROUPS;iGROUP_COUNT++)
{
this->m_iMAPSVR_GROUP_COUNT[iGROUP_COUNT] = 0;

for ( int iSUB_GROUP_COUNT=0;iSUB_GROUP_COUNT<MAX_MAP_SUBGROUPS;iSUB_GROUP_COUNT++)
{
this->m_MAPSVR_DATA[iGROUP_COUNT][iSUB_GROUP_COUNT].Clear(1);
}
}

this->m_mapSVRCODE_MAP.clear();
}

BOOL CMapServerManager::LoadData(char* lpszFileName)
{
if ( (lpszFileName == NULL) || ( strcmp(lpszFileName, "")== 0 ) )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : File Name Error");
return FALSE;
}

EnterCriticalSection(&this->m_critSVRCODE_MAP);

__try
{
this->Clear();

SMDFile = fopen(lpszFileName, "r"); //ok

if ( SMDFile == NULL )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : fopen() : %s",
lpszFileName);

return FALSE;
}

int type = -1;
SMDToken Token;

while ( true )
{
Token = GetToken();

if ( Token == END )
break;

type = TokenNumber;

while ( true )
{
if ( type == 0 )
{
short sSVR_CODE = -1;
short sMAPSVR_GROUP = -1;
int iInitSetVal = 1;
char szIpAddr[16]={0};
WORD wPortNum = 0;

Token = GetToken();

if ( !strcmp("end", TokenString))
break;

sSVR_CODE = TokenNumber;

Token = GetToken();
sMAPSVR_GROUP = TokenNumber;

Token = GetToken();
iInitSetVal = TokenNumber;

Token = GetToken();
memcpy(szIpAddr, &TokenString[1], 16);
szIpAddr[15] =0;

Token = GetToken();
wPortNum = TokenNumber;

if ( sSVR_CODE < 0 )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : sSVR_CODE < 0 (SVR:%d) - 1",
sSVR_CODE);

return FALSE;
}

if ( iInitSetVal != -1 && iInitSetVal != 0 && iInitSetVal != 1 )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : iInitSetting Value:%d (SVR:%d) - 1",
iInitSetVal, sSVR_CODE);

return FALSE;
}

if ( !strcmp(szIpAddr, ""))
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : No IpAddress (SVR:%d)",
sSVR_CODE);

return FALSE;
}

if ( CHECK_LIMIT(sMAPSVR_GROUP, MAX_MAP_GROUPS) == FALSE )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : Map Server Group Index (IDX:%d)",
sMAPSVR_GROUP);

return FALSE;
}

if ( this->m_iMAPSVR_GROUP_COUNT[sMAPSVR_GROUP] >= MAX_MAP_SUBGROUPS )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : No Space to Save SvrInfo (SVR:%d)",
sSVR_CODE);

return FALSE;
}

_MAPSVR_DATA * lpMapSvrData = NULL;

lpMapSvrData= &this->m_MAPSVR_DATA[sMAPSVR_GROUP][this->m_iMAPSVR_GROUP_COUNT[sMAPSVR_GROUP]];

lpMapSvrData->Clear(iInitSetVal);
lpMapSvrData->m_bIN_USE = TRUE;
lpMapSvrData->m_sSVR_CODE = sSVR_CODE;
lpMapSvrData->m_btMAPSVR_GROUP = sMAPSVR_GROUP;
lpMapSvrData->m_wPORT = wPortNum;
memcpy(lpMapSvrData->m_cIPADDR, szIpAddr, 16);
lpMapSvrData->m_cIPADDR[15] = 0;

this->m_mapSVRCODE_MAP.insert(std::pair<int,_MAPSVR_DATA *>(sSVR_CODE, lpMapSvrData));
this->m_iMAPSVR_GROUP_COUNT[sMAPSVR_GROUP]++;
}
else if ( type == 1 )
{
short sSVR_CODE = -1;
BYTE btNotMoveOption = 0;
WORD wMapNum = 0;
short sDEST_SVR_CODE = -1;
_MAPSVR_DATA * lpMapSvrData = NULL;

Token = GetToken();

if ( !strcmp("end", TokenString))
break;

sSVR_CODE = TokenNumber;

Token = GetToken();
btNotMoveOption = TokenNumber;

Token = GetToken();
wMapNum = TokenNumber;

Token = GetToken();
sDEST_SVR_CODE = TokenNumber;

if ( sSVR_CODE < 0 )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : sSVR_CODE < 0 (SVR:%d) - 2",
sSVR_CODE);

return FALSE;
}

if ( sDEST_SVR_CODE < -2 )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : sDEST_SVR_CODE < -1 (SVR:%d, DEST_SVR:%d) - 2",
sSVR_CODE, sDEST_SVR_CODE);

return FALSE;
}

std::map<int ,_MAPSVR_DATA *>::iterator it = this->m_mapSVRCODE_MAP.find(sSVR_CODE);

if ( it == this->m_mapSVRCODE_MAP.end() )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : sSVR_CODE wasn't registered (SVR:%d)",
sSVR_CODE);

return FALSE;
}

lpMapSvrData = it->second;

if ( lpMapSvrData == NULL )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : lpMapSvrData == NULL (SVR:%d)",
sSVR_CODE);

return FALSE;
}

if ( lpMapSvrData->m_bIN_USE == FALSE )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : lpMapSvrData->m_bIN_USE == FALSE (SVR:%d)",
sSVR_CODE);

return FALSE;
}

if ( lpMapSvrData->m_sSVR_CODE != sSVR_CODE )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : lpMapSvrData->m_sSVR_CODE != sSVR_CODE (SVR:%d)",
sSVR_CODE);

return FALSE;
}

if ( btNotMoveOption != 0 && btNotMoveOption != 1 )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : lpMapSvrData->m_sSVR_CODE != sSVR_CODE (SVR:%d, OPT:%d)",
sSVR_CODE, btNotMoveOption);

return FALSE;
}

if ( CHECK_LIMIT(wMapNum, MAX_NUMBER_MAP) == FALSE )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : Map Number is out of bound (SVR:%d, MAP:%d)",
sSVR_CODE, wMapNum);

return FALSE;
}

switch ( btNotMoveOption )
{
case 0:
lpMapSvrData->m_sMAP_MOVE[wMapNum] = sDEST_SVR_CODE;
break;
case 1:
lpMapSvrData->m_sMAP_MOVE[wMapNum] = -3;
break;
default:
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : lpMapSvrData->m_sSVR_CODE != sSVR_CODE (SVR:%d, OPT:%d)",
sSVR_CODE, btNotMoveOption);
break;
}
} // if type
} // while ( true )
} // while ( true )

fclose(SMDFile);

std::map<int ,_MAPSVR_DATA *>::iterator it = this->m_mapSVRCODE_MAP.find(gGameServerCode);

if ( it != this->m_mapSVRCODE_MAP.end() )
{
this->m_lpThisMapSvrData = it->second;
}
else
{
this->m_lpThisMapSvrData = NULL;
}

if ( this->m_lpThisMapSvrData == NULL )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : This GameServerCode (%d) doesn't Exist at file '%s' != sSVR_CODE",
gGameServerCode, lpszFileName);

return FALSE;
}

this->m_bMapDataLoadOk = TRUE;
}
__finally
{
LeaveCriticalSection(&this->m_critSVRCODE_MAP);
}

return TRUE;
}

BOOL CMapServerManager::CheckMapCanMove(int iMAP_NUM)
{
if ( MapNumberCheck(iMAP_NUM) == 0 )
{
return FALSE;
}

_MAPSVR_DATA * lpMapSvrData = this->m_lpThisMapSvrData;

if ( lpMapSvrData == NULL )
{
return FALSE;
}

if ( lpMapSvrData->m_bIN_USE == FALSE )
{
return FALSE;
}

short sMAP_MOVE_INFO = lpMapSvrData->m_sMAP_MOVE[iMAP_NUM];

if ( sMAP_MOVE_INFO != -3 )
{
return FALSE;
}

return TRUE;
}

short CMapServerManager::CheckMoveMapSvr(int iIndex, int iMAP_NUM, short sSVR_CODE_BEFORE)
{
if ( this->m_bMapDataLoadOk == FALSE )
return gGameServerCode;

if ( !gObjIsConnected(iIndex))
return gGameServerCode;

if ( !MapNumberCheck(iMAP_NUM))
{
LogAddC(2, "[MapServerMng] CheckMoveMapSvr() - Map Index doesn't exist [%s][%s] : %d",
gObj[iIndex].AccountID, gObj[iIndex].Name, iMAP_NUM);

return gGameServerCode;
}

_MAPSVR_DATA * lpMapSvrData = this->m_lpThisMapSvrData;

if ( lpMapSvrData == NULL )
{
LogAddC(2, "[MapServerMng] CheckMoveMapSvr() - m_lpThisMapSvrData == NULL [%s][%s] : %d",
gObj[iIndex].AccountID, gObj[iIndex].Name, iMAP_NUM);

return gGameServerCode;
}

if ( lpMapSvrData->m_bIN_USE == FALSE )
{
LogAddC(2, "[MapServerMng] CheckMoveMapSvr() - lpMapSvrData->m_bIN_USE == FALSE [%s][%s] : %d",
gObj[iIndex].AccountID, gObj[iIndex].Name, iMAP_NUM);

return gGameServerCode;
}

short sMAP_MOVE_INFO = lpMapSvrData->m_sMAP_MOVE[iMAP_NUM];

switch ( sMAP_MOVE_INFO )
{
case -1:
{
_MAPSVR_DATA * lpDestMapSvrData = NULL;

if ( sSVR_CODE_BEFORE != -1 )
{
EnterCriticalSection(&this->m_critSVRCODE_MAP);

std::map<int, _MAPSVR_DATA *>::iterator it = this->m_mapSVRCODE_MAP.find(sSVR_CODE_BEFORE);

if ( it != this->m_mapSVRCODE_MAP.end() )
{
lpDestMapSvrData = it->second;
}

LeaveCriticalSection(&this->m_critSVRCODE_MAP);

if ( lpDestMapSvrData != NULL )
{
if ( lpDestMapSvrData->m_sMAP_MOVE[iMAP_NUM] == -3 )
{
return sSVR_CODE_BEFORE;
}
}
}

std::vector<_MAPSVR_DATA *> vtMapSvrData;

EnterCriticalSection(&this->m_critSVRCODE_MAP);

for ( std::map<int ,_MAPSVR_DATA *>::iterator it = this->m_mapSVRCODE_MAP.begin() ; it != this->m_mapSVRCODE_MAP.end() ;it++)
{
_MAPSVR_DATA * lpTempMapSvrData = it->second;

if ( lpTempMapSvrData != NULL &&
lpTempMapSvrData->m_bIN_USE == TRUE &&
lpTempMapSvrData->m_sMAP_MOVE[iMAP_NUM] == -3)
{
vtMapSvrData.push_back(it->second);
}
}

LeaveCriticalSection(&this->m_critSVRCODE_MAP);

short sDestServerCode = -1;

if ( vtMapSvrData.empty() == 0 )
{
sDestServerCode = vtMapSvrData[rand()%vtMapSvrData.size()]->m_sSVR_CODE;
}

if ( sDestServerCode != -1 )
{
LogAddTD("[MapServerMng] CheckMoveMapSvr() - MapServer Check OK [%s][%s] : MAP-%d / SVR-%d(State Map:%d X:%d Y:%d)",
gObj[iIndex].AccountID, gObj[iIndex].Name, iMAP_NUM, sDestServerCode,
gObj[iIndex].MapNumber, gObj[iIndex].X, gObj[iIndex].Y);

return sDestServerCode;
}
}
break;

case -2:
{
_MAPSVR_DATA * lpDestMapSvrData = NULL;

if ( sSVR_CODE_BEFORE != -1 )
{
EnterCriticalSection(&this->m_critSVRCODE_MAP);

std::map<int, _MAPSVR_DATA *>::iterator it = this->m_mapSVRCODE_MAP.find(sSVR_CODE_BEFORE);

if ( it != this->m_mapSVRCODE_MAP.end() )
{
lpDestMapSvrData = it->second;
}

LeaveCriticalSection(&this->m_critSVRCODE_MAP);

if ( lpDestMapSvrData != NULL )
{
if ( lpDestMapSvrData->m_sMAP_MOVE[iMAP_NUM] == -3 )
{
return sSVR_CODE_BEFORE;
}
}
}

short sDestServerCode = -1;

EnterCriticalSection(&this->m_critSVRCODE_MAP);

for ( std::map<int ,_MAPSVR_DATA *>::iterator it = this->m_mapSVRCODE_MAP.begin() ; it != this->m_mapSVRCODE_MAP.end() ;it++)
{
_MAPSVR_DATA * lpTempMapSvrData = it->second;

if ( lpTempMapSvrData != NULL &&
lpTempMapSvrData->m_bIN_USE == TRUE &&
lpTempMapSvrData->m_sMAP_MOVE[iMAP_NUM] == -3)
{
sDestServerCode = lpTempMapSvrData->m_sSVR_CODE;
}
}

LeaveCriticalSection(&this->m_critSVRCODE_MAP);

if ( sDestServerCode != -1 )
{
LogAddTD("[MapServerMng] CheckMoveMapSvr() - MapServer Check OK [%s][%s] : MAP-%d / SVR-%d(State Map:%d X:%d Y:%d)",
gObj[iIndex].AccountID, gObj[iIndex].Name, iMAP_NUM, sDestServerCode,
gObj[iIndex].MapNumber, gObj[iIndex].X, gObj[iIndex].Y);

return sDestServerCode;
}
}
break;

case -3:
LogAddTD("[MapServerMng] CheckMoveMapSvr() - MapServer Check OK [%s][%s] : MAP-%d / SVR-%d (State Map:%d X:%d Y:%d)",
gObj[iIndex].AccountID, gObj[iIndex].Name, iMAP_NUM, gGameServerCode,
gObj[iIndex].MapNumber, gObj[iIndex].X, gObj[iIndex].Y);

return gGameServerCode;
break;

default:
if ( sMAP_MOVE_INFO > -1 )
{
_MAPSVR_DATA * lpDestMapSvrData = NULL;

EnterCriticalSection(&this->m_critSVRCODE_MAP);

std::map<int, _MAPSVR_DATA *>::iterator it = this->m_mapSVRCODE_MAP.find(sMAP_MOVE_INFO);

if ( it != this->m_mapSVRCODE_MAP.end() )
{
lpDestMapSvrData = it->second;
}

LeaveCriticalSection(&this->m_critSVRCODE_MAP);

if ( lpDestMapSvrData != NULL &&
lpDestMapSvrData->m_bIN_USE == TRUE &&
lpDestMapSvrData->m_sMAP_MOVE[iMAP_NUM] == -3)
{
return sMAP_MOVE_INFO;
}

short sDestServerCode = -1;

EnterCriticalSection(&this->m_critSVRCODE_MAP);

for ( it = this->m_mapSVRCODE_MAP.begin() ; it != this->m_mapSVRCODE_MAP.end() ;it++)
{
_MAPSVR_DATA * lpTempMapSvrData = it->second;

if ( lpTempMapSvrData != NULL &&
lpTempMapSvrData->m_bIN_USE == TRUE &&
lpTempMapSvrData->m_sMAP_MOVE[iMAP_NUM] == -3)
{
sDestServerCode = lpTempMapSvrData->m_sSVR_CODE;
}
}

LeaveCriticalSection(&this->m_critSVRCODE_MAP);

if ( sDestServerCode != -1 )
{
LogAddTD("[MapServerMng] CheckMoveMapSvr() - MapServer Check OK [%s][%s] : MAP-%d / SVR-%d(State Map:%d X:%d Y:%d)",
gObj[iIndex].AccountID, gObj[iIndex].Name, iMAP_NUM, sDestServerCode,
gObj[iIndex].MapNumber, gObj[iIndex].X, gObj[iIndex].Y);

return sDestServerCode;
}
}
else
{
LogAddC(2, "[MapServerMng] CheckMoveMapSvr() - Unknown MapMove Info [%s][%s] : MAP-%d / INFO-%d",
gObj[iIndex].AccountID, gObj[iIndex].Name, iMAP_NUM, sMAP_MOVE_INFO);

return gGameServerCode;
}
}

return gGameServerCode;
}


BOOL CMapServerManager::GetSvrCodeData(WORD wServerCode, char* lpszIpAddress, WORD * lpwPort)
{
if ( !lpszIpAddress || !lpwPort )
return FALSE;

_MAPSVR_DATA * lpMapSvrData = NULL;

EnterCriticalSection(&this->m_critSVRCODE_MAP);

std::map<int, _MAPSVR_DATA *>::iterator it = this->m_mapSVRCODE_MAP.find(wServerCode);

if ( it != this->m_mapSVRCODE_MAP.end() )
{
lpMapSvrData = it->second;
}

LeaveCriticalSection(&this->m_critSVRCODE_MAP);

if ( lpMapSvrData == NULL )
return FALSE;

strcpy(lpszIpAddress, lpMapSvrData->m_cIPADDR);
*lpwPort = lpMapSvrData->m_wPORT;

return TRUE;
}





CMapServerManager g_MapServerManager

LorenStudio
06/08/2020, 11:49 AM
ola então eu tenho isso no código, não consigo encontrar gensbattle

Obrigado pela ajuda.


MapServerManager.cpp



//GS-CS 1.00.90 finished
#include "stdafx.h"
#include "MapServerManager.h"
#include "MapClass.h"
#include "..\include\readscript.h"
#include "GameMain.h"
#include "LogProc.h"
#include "user.h"

_MAPSVR_DATA::_MAPSVR_DATA()
{
this->Clear(1);
}

_MAPSVR_DATA::~_MAPSVR_DATA()
{
return;
}

void _MAPSVR_DATA::Clear(int iInitSetVal)
{
this->m_bIN_USE = FALSE;
this->m_btMAPSVR_GROUP = -1;
this->m_sSVR_CODE = -1;
memset(this->m_cIPADDR, 0, sizeof(this->m_cIPADDR));
this->m_wPORT = 0;

for ( int iMAP_COUNT =0;iMAP_COUNT<MAX_NUMBER_MAP;iMAP_COUNT++)
{
switch ( iInitSetVal )
{
case -1:
this->m_sMAP_MOVE[iMAP_COUNT] = -2;
break;
case 0:
this->m_sMAP_MOVE[iMAP_COUNT] = -1;
break;
default:
this->m_sMAP_MOVE[iMAP_COUNT] = -3;
}
}
}

CMapServerManager::CMapServerManager()
{
srand(time(NULL));
this->m_bMapDataLoadOk=FALSE;
this->m_lpThisMapSvrData = NULL;

InitializeCriticalSection(&this->m_critSVRCODE_MAP);
}

CMapServerManager::~CMapServerManager()
{
DeleteCriticalSection(&this->m_critSVRCODE_MAP);
}

void CMapServerManager::Clear()
{
this->m_bMapDataLoadOk = FALSE;

for ( int iGROUP_COUNT=0;iGROUP_COUNT<MAX_MAP_GROUPS;iGROUP_COUNT++)
{
this->m_iMAPSVR_GROUP_COUNT[iGROUP_COUNT] = 0;

for ( int iSUB_GROUP_COUNT=0;iSUB_GROUP_COUNT<MAX_MAP_SUBGROUPS;iSUB_GROUP_COUNT++)
{
this->m_MAPSVR_DATA[iGROUP_COUNT][iSUB_GROUP_COUNT].Clear(1);
}
}

this->m_mapSVRCODE_MAP.clear();
}

BOOL CMapServerManager::LoadData(char* lpszFileName)
{
if ( (lpszFileName == NULL) || ( strcmp(lpszFileName, "")== 0 ) )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : File Name Error");
return FALSE;
}

EnterCriticalSection(&this->m_critSVRCODE_MAP);

__try
{
this->Clear();

SMDFile = fopen(lpszFileName, "r"); //ok

if ( SMDFile == NULL )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : fopen() : %s",
lpszFileName);

return FALSE;
}

int type = -1;
SMDToken Token;

while ( true )
{
Token = GetToken();

if ( Token == END )
break;

type = TokenNumber;

while ( true )
{
if ( type == 0 )
{
short sSVR_CODE = -1;
short sMAPSVR_GROUP = -1;
int iInitSetVal = 1;
char szIpAddr[16]={0};
WORD wPortNum = 0;

Token = GetToken();

if ( !strcmp("end", TokenString))
break;

sSVR_CODE = TokenNumber;

Token = GetToken();
sMAPSVR_GROUP = TokenNumber;

Token = GetToken();
iInitSetVal = TokenNumber;

Token = GetToken();
memcpy(szIpAddr, &TokenString[1], 16);
szIpAddr[15] =0;

Token = GetToken();
wPortNum = TokenNumber;

if ( sSVR_CODE < 0 )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : sSVR_CODE < 0 (SVR:%d) - 1",
sSVR_CODE);

return FALSE;
}

if ( iInitSetVal != -1 && iInitSetVal != 0 && iInitSetVal != 1 )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : iInitSetting Value:%d (SVR:%d) - 1",
iInitSetVal, sSVR_CODE);

return FALSE;
}

if ( !strcmp(szIpAddr, ""))
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : No IpAddress (SVR:%d)",
sSVR_CODE);

return FALSE;
}

if ( CHECK_LIMIT(sMAPSVR_GROUP, MAX_MAP_GROUPS) == FALSE )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : Map Server Group Index (IDX:%d)",
sMAPSVR_GROUP);

return FALSE;
}

if ( this->m_iMAPSVR_GROUP_COUNT[sMAPSVR_GROUP] >= MAX_MAP_SUBGROUPS )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : No Space to Save SvrInfo (SVR:%d)",
sSVR_CODE);

return FALSE;
}

_MAPSVR_DATA * lpMapSvrData = NULL;

lpMapSvrData= &this->m_MAPSVR_DATA[sMAPSVR_GROUP][this->m_iMAPSVR_GROUP_COUNT[sMAPSVR_GROUP]];

lpMapSvrData->Clear(iInitSetVal);
lpMapSvrData->m_bIN_USE = TRUE;
lpMapSvrData->m_sSVR_CODE = sSVR_CODE;
lpMapSvrData->m_btMAPSVR_GROUP = sMAPSVR_GROUP;
lpMapSvrData->m_wPORT = wPortNum;
memcpy(lpMapSvrData->m_cIPADDR, szIpAddr, 16);
lpMapSvrData->m_cIPADDR[15] = 0;

this->m_mapSVRCODE_MAP.insert(std::pair<int,_MAPSVR_DATA *>(sSVR_CODE, lpMapSvrData));
this->m_iMAPSVR_GROUP_COUNT[sMAPSVR_GROUP]++;
}
else if ( type == 1 )
{
short sSVR_CODE = -1;
BYTE btNotMoveOption = 0;
WORD wMapNum = 0;
short sDEST_SVR_CODE = -1;
_MAPSVR_DATA * lpMapSvrData = NULL;

Token = GetToken();

if ( !strcmp("end", TokenString))
break;

sSVR_CODE = TokenNumber;

Token = GetToken();
btNotMoveOption = TokenNumber;

Token = GetToken();
wMapNum = TokenNumber;

Token = GetToken();
sDEST_SVR_CODE = TokenNumber;

if ( sSVR_CODE < 0 )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : sSVR_CODE < 0 (SVR:%d) - 2",
sSVR_CODE);

return FALSE;
}

if ( sDEST_SVR_CODE < -2 )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : sDEST_SVR_CODE < -1 (SVR:%d, DEST_SVR:%d) - 2",
sSVR_CODE, sDEST_SVR_CODE);

return FALSE;
}

std::map<int ,_MAPSVR_DATA *>::iterator it = this->m_mapSVRCODE_MAP.find(sSVR_CODE);

if ( it == this->m_mapSVRCODE_MAP.end() )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : sSVR_CODE wasn't registered (SVR:%d)",
sSVR_CODE);

return FALSE;
}

lpMapSvrData = it->second;

if ( lpMapSvrData == NULL )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : lpMapSvrData == NULL (SVR:%d)",
sSVR_CODE);

return FALSE;
}

if ( lpMapSvrData->m_bIN_USE == FALSE )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : lpMapSvrData->m_bIN_USE == FALSE (SVR:%d)",
sSVR_CODE);

return FALSE;
}

if ( lpMapSvrData->m_sSVR_CODE != sSVR_CODE )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : lpMapSvrData->m_sSVR_CODE != sSVR_CODE (SVR:%d)",
sSVR_CODE);

return FALSE;
}

if ( btNotMoveOption != 0 && btNotMoveOption != 1 )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : lpMapSvrData->m_sSVR_CODE != sSVR_CODE (SVR:%d, OPT:%d)",
sSVR_CODE, btNotMoveOption);

return FALSE;
}

if ( CHECK_LIMIT(wMapNum, MAX_NUMBER_MAP) == FALSE )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : Map Number is out of bound (SVR:%d, MAP:%d)",
sSVR_CODE, wMapNum);

return FALSE;
}

switch ( btNotMoveOption )
{
case 0:
lpMapSvrData->m_sMAP_MOVE[wMapNum] = sDEST_SVR_CODE;
break;
case 1:
lpMapSvrData->m_sMAP_MOVE[wMapNum] = -3;
break;
default:
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : lpMapSvrData->m_sSVR_CODE != sSVR_CODE (SVR:%d, OPT:%d)",
sSVR_CODE, btNotMoveOption);
break;
}
} // if type
} // while ( true )
} // while ( true )

fclose(SMDFile);

std::map<int ,_MAPSVR_DATA *>::iterator it = this->m_mapSVRCODE_MAP.find(gGameServerCode);

if ( it != this->m_mapSVRCODE_MAP.end() )
{
this->m_lpThisMapSvrData = it->second;
}
else
{
this->m_lpThisMapSvrData = NULL;
}

if ( this->m_lpThisMapSvrData == NULL )
{
MsgBox("[MapServerMng] CMapServerManager::LoadData() - file load error : This GameServerCode (%d) doesn't Exist at file '%s' != sSVR_CODE",
gGameServerCode, lpszFileName);

return FALSE;
}

this->m_bMapDataLoadOk = TRUE;
}
__finally
{
LeaveCriticalSection(&this->m_critSVRCODE_MAP);
}

return TRUE;
}

BOOL CMapServerManager::CheckMapCanMove(int iMAP_NUM)
{
if ( MapNumberCheck(iMAP_NUM) == 0 )
{
return FALSE;
}

_MAPSVR_DATA * lpMapSvrData = this->m_lpThisMapSvrData;

if ( lpMapSvrData == NULL )
{
return FALSE;
}

if ( lpMapSvrData->m_bIN_USE == FALSE )
{
return FALSE;
}

short sMAP_MOVE_INFO = lpMapSvrData->m_sMAP_MOVE[iMAP_NUM];

if ( sMAP_MOVE_INFO != -3 )
{
return FALSE;
}

return TRUE;
}

short CMapServerManager::CheckMoveMapSvr(int iIndex, int iMAP_NUM, short sSVR_CODE_BEFORE)
{
if ( this->m_bMapDataLoadOk == FALSE )
return gGameServerCode;

if ( !gObjIsConnected(iIndex))
return gGameServerCode;

if ( !MapNumberCheck(iMAP_NUM))
{
LogAddC(2, "[MapServerMng] CheckMoveMapSvr() - Map Index doesn't exist [%s][%s] : %d",
gObj[iIndex].AccountID, gObj[iIndex].Name, iMAP_NUM);

return gGameServerCode;
}

_MAPSVR_DATA * lpMapSvrData = this->m_lpThisMapSvrData;

if ( lpMapSvrData == NULL )
{
LogAddC(2, "[MapServerMng] CheckMoveMapSvr() - m_lpThisMapSvrData == NULL [%s][%s] : %d",
gObj[iIndex].AccountID, gObj[iIndex].Name, iMAP_NUM);

return gGameServerCode;
}

if ( lpMapSvrData->m_bIN_USE == FALSE )
{
LogAddC(2, "[MapServerMng] CheckMoveMapSvr() - lpMapSvrData->m_bIN_USE == FALSE [%s][%s] : %d",
gObj[iIndex].AccountID, gObj[iIndex].Name, iMAP_NUM);

return gGameServerCode;
}

short sMAP_MOVE_INFO = lpMapSvrData->m_sMAP_MOVE[iMAP_NUM];

switch ( sMAP_MOVE_INFO )
{
case -1:
{
_MAPSVR_DATA * lpDestMapSvrData = NULL;

if ( sSVR_CODE_BEFORE != -1 )
{
EnterCriticalSection(&this->m_critSVRCODE_MAP);

std::map<int, _MAPSVR_DATA *>::iterator it = this->m_mapSVRCODE_MAP.find(sSVR_CODE_BEFORE);

if ( it != this->m_mapSVRCODE_MAP.end() )
{
lpDestMapSvrData = it->second;
}

LeaveCriticalSection(&this->m_critSVRCODE_MAP);

if ( lpDestMapSvrData != NULL )
{
if ( lpDestMapSvrData->m_sMAP_MOVE[iMAP_NUM] == -3 )
{
return sSVR_CODE_BEFORE;
}
}
}

std::vector<_MAPSVR_DATA *> vtMapSvrData;

EnterCriticalSection(&this->m_critSVRCODE_MAP);

for ( std::map<int ,_MAPSVR_DATA *>::iterator it = this->m_mapSVRCODE_MAP.begin() ; it != this->m_mapSVRCODE_MAP.end() ;it++)
{
_MAPSVR_DATA * lpTempMapSvrData = it->second;

if ( lpTempMapSvrData != NULL &&
lpTempMapSvrData->m_bIN_USE == TRUE &&
lpTempMapSvrData->m_sMAP_MOVE[iMAP_NUM] == -3)
{
vtMapSvrData.push_back(it->second);
}
}

LeaveCriticalSection(&this->m_critSVRCODE_MAP);

short sDestServerCode = -1;

if ( vtMapSvrData.empty() == 0 )
{
sDestServerCode = vtMapSvrData[rand()%vtMapSvrData.size()]->m_sSVR_CODE;
}

if ( sDestServerCode != -1 )
{
LogAddTD("[MapServerMng] CheckMoveMapSvr() - MapServer Check OK [%s][%s] : MAP-%d / SVR-%d(State Map:%d X:%d Y:%d)",
gObj[iIndex].AccountID, gObj[iIndex].Name, iMAP_NUM, sDestServerCode,
gObj[iIndex].MapNumber, gObj[iIndex].X, gObj[iIndex].Y);

return sDestServerCode;
}
}
break;

case -2:
{
_MAPSVR_DATA * lpDestMapSvrData = NULL;

if ( sSVR_CODE_BEFORE != -1 )
{
EnterCriticalSection(&this->m_critSVRCODE_MAP);

std::map<int, _MAPSVR_DATA *>::iterator it = this->m_mapSVRCODE_MAP.find(sSVR_CODE_BEFORE);

if ( it != this->m_mapSVRCODE_MAP.end() )
{
lpDestMapSvrData = it->second;
}

LeaveCriticalSection(&this->m_critSVRCODE_MAP);

if ( lpDestMapSvrData != NULL )
{
if ( lpDestMapSvrData->m_sMAP_MOVE[iMAP_NUM] == -3 )
{
return sSVR_CODE_BEFORE;
}
}
}

short sDestServerCode = -1;

EnterCriticalSection(&this->m_critSVRCODE_MAP);

for ( std::map<int ,_MAPSVR_DATA *>::iterator it = this->m_mapSVRCODE_MAP.begin() ; it != this->m_mapSVRCODE_MAP.end() ;it++)
{
_MAPSVR_DATA * lpTempMapSvrData = it->second;

if ( lpTempMapSvrData != NULL &&
lpTempMapSvrData->m_bIN_USE == TRUE &&
lpTempMapSvrData->m_sMAP_MOVE[iMAP_NUM] == -3)
{
sDestServerCode = lpTempMapSvrData->m_sSVR_CODE;
}
}

LeaveCriticalSection(&this->m_critSVRCODE_MAP);

if ( sDestServerCode != -1 )
{
LogAddTD("[MapServerMng] CheckMoveMapSvr() - MapServer Check OK [%s][%s] : MAP-%d / SVR-%d(State Map:%d X:%d Y:%d)",
gObj[iIndex].AccountID, gObj[iIndex].Name, iMAP_NUM, sDestServerCode,
gObj[iIndex].MapNumber, gObj[iIndex].X, gObj[iIndex].Y);

return sDestServerCode;
}
}
break;

case -3:
LogAddTD("[MapServerMng] CheckMoveMapSvr() - MapServer Check OK [%s][%s] : MAP-%d / SVR-%d (State Map:%d X:%d Y:%d)",
gObj[iIndex].AccountID, gObj[iIndex].Name, iMAP_NUM, gGameServerCode,
gObj[iIndex].MapNumber, gObj[iIndex].X, gObj[iIndex].Y);

return gGameServerCode;
break;

default:
if ( sMAP_MOVE_INFO > -1 )
{
_MAPSVR_DATA * lpDestMapSvrData = NULL;

EnterCriticalSection(&this->m_critSVRCODE_MAP);

std::map<int, _MAPSVR_DATA *>::iterator it = this->m_mapSVRCODE_MAP.find(sMAP_MOVE_INFO);

if ( it != this->m_mapSVRCODE_MAP.end() )
{
lpDestMapSvrData = it->second;
}

LeaveCriticalSection(&this->m_critSVRCODE_MAP);

if ( lpDestMapSvrData != NULL &&
lpDestMapSvrData->m_bIN_USE == TRUE &&
lpDestMapSvrData->m_sMAP_MOVE[iMAP_NUM] == -3)
{
return sMAP_MOVE_INFO;
}

short sDestServerCode = -1;

EnterCriticalSection(&this->m_critSVRCODE_MAP);

for ( it = this->m_mapSVRCODE_MAP.begin() ; it != this->m_mapSVRCODE_MAP.end() ;it++)
{
_MAPSVR_DATA * lpTempMapSvrData = it->second;

if ( lpTempMapSvrData != NULL &&
lpTempMapSvrData->m_bIN_USE == TRUE &&
lpTempMapSvrData->m_sMAP_MOVE[iMAP_NUM] == -3)
{
sDestServerCode = lpTempMapSvrData->m_sSVR_CODE;
}
}

LeaveCriticalSection(&this->m_critSVRCODE_MAP);

if ( sDestServerCode != -1 )
{
LogAddTD("[MapServerMng] CheckMoveMapSvr() - MapServer Check OK [%s][%s] : MAP-%d / SVR-%d(State Map:%d X:%d Y:%d)",
gObj[iIndex].AccountID, gObj[iIndex].Name, iMAP_NUM, sDestServerCode,
gObj[iIndex].MapNumber, gObj[iIndex].X, gObj[iIndex].Y);

return sDestServerCode;
}
}
else
{
LogAddC(2, "[MapServerMng] CheckMoveMapSvr() - Unknown MapMove Info [%s][%s] : MAP-%d / INFO-%d",
gObj[iIndex].AccountID, gObj[iIndex].Name, iMAP_NUM, sMAP_MOVE_INFO);

return gGameServerCode;
}
}

return gGameServerCode;
}


BOOL CMapServerManager::GetSvrCodeData(WORD wServerCode, char* lpszIpAddress, WORD * lpwPort)
{
if ( !lpszIpAddress || !lpwPort )
return FALSE;

_MAPSVR_DATA * lpMapSvrData = NULL;

EnterCriticalSection(&this->m_critSVRCODE_MAP);

std::map<int, _MAPSVR_DATA *>::iterator it = this->m_mapSVRCODE_MAP.find(wServerCode);

if ( it != this->m_mapSVRCODE_MAP.end() )
{
lpMapSvrData = it->second;
}

LeaveCriticalSection(&this->m_critSVRCODE_MAP);

if ( lpMapSvrData == NULL )
return FALSE;

strcpy(lpszIpAddress, lpMapSvrData->m_cIPADDR);
*lpwPort = lpMapSvrData->m_wPORT;

return TRUE;
}





CMapServerManager g_MapServerManager


Não amigo isso seria na pasta data

Odisk
06/08/2020, 11:54 AM
Não amigo isso seria na pasta data

não é um problema nos dados. é um problema no src amigo.

Denis Alves
06/08/2020, 12:17 PM
não é um problema nos dados. é um problema no src amigo.

I understood what you want, remove the Battle Zone from the maps and use it without the need for Gens, is that it?


If so, I have this idea for future updates on my files but I believe that, seeing your codes, I saw some points that, at least in my opinion, I consider important to note, which is where BATTLE_ZONE_BLOCK is, anything talks to me in private that I will always be available there. Hugs Odisk!

Odisk
07/08/2020, 11:44 PM
up up post