removed teen_packet

This commit is contained in:
savis
2025-09-01 19:19:42 +02:00
parent 759b64e466
commit 286439aada
12 changed files with 1 additions and 385 deletions

View File

@@ -665,16 +665,6 @@ enum SPECIAL_EFFECT
SE_EQUIP_LOVE_PENDANT, // 발렌타인 사랑의 팬던트(71145) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님)
} ;
enum ETeenFlags
{
TEENFLAG_NONE = 0,
TEENFLAG_1HOUR,
TEENFLAG_2HOUR,
TEENFLAG_3HOUR,
TEENFLAG_4HOUR,
TEENFLAG_5HOUR,
};
#include "item_length.h"
// inventory의 position을 나타내는 구조체

View File

@@ -1,20 +0,0 @@
/*********************************************************************
* date : 2007.06.07
* file : teen_packet.h
* author : mhh
* description :
*/
#ifndef _teen_packet_h_
#define _teen_packet_h_
#define HEADER_GT_LOGIN 0x10
#define HEADER_GT_LOGOUT 0x11
#define HEADER_TG_TEEN_NOTICE 0x12
#define HEADER_TG_FORCE_LOGOUT 0x13
#define HEADER_TG_LOGIN_NOTICE 0x14
#endif /* _teen_packet_h_ */

View File

@@ -1,6 +1,5 @@
#include "stdafx.h"
#include "common/teen_packet.h"
#include "common/VnumHelper.h"
#include "char.h"
@@ -1388,24 +1387,6 @@ void CHARACTER::Disconnect(const char * c_pszReason)
MessengerManager::instance().Logout(GetName());
if (g_TeenDesc)
{
int offset = 0;
char buf[245] = {0};
buf[0] = HEADER_GT_LOGOUT;
offset += 1;
memset(buf+offset, 0x00, 2);
offset += 2;
TAccountTable &acc_table = GetDesc()->GetAccountTable();
memcpy(buf+offset, &acc_table.id, 4);
offset += 4;
g_TeenDesc->Packet(buf, offset);
}
if (GetDesc())
{
GetDesc()->BindCharacter(NULL);

View File

@@ -93,9 +93,6 @@ string g_stBlockDate = "30000705";
extern string g_stLocale;
char teen_addr[ADDRESS_MAX_LEN + 1] = {0};
WORD teen_port = 0;
int SPEEDHACK_LIMIT_COUNT = 50;
int SPEEDHACK_LIMIT_BONUS = 80;
int g_iSyncHackLimitCount = 20; // 10 -> 20 2013 09 11 CYH
@@ -687,24 +684,6 @@ void config_init(const string& st_localeServiceName)
}
}
TOKEN("teen_addr")
{
strlcpy(teen_addr, value_string, sizeof(teen_addr));
for (int n = 0; n < ADDRESS_MAX_LEN; ++n)
{
if (teen_addr[n] == ' ')
teen_addr[n] = '\0';
}
continue;
}
TOKEN("teen_port")
{
str_to_number(teen_port, value_string);
}
TOKEN("synchack_limit_count")
{
str_to_number(g_iSyncHackLimitCount, value_string);

View File

@@ -17,9 +17,6 @@ extern WORD p2p_port;
extern char db_addr[ADDRESS_MAX_LEN + 1];
extern WORD db_port;
extern char teen_addr[ADDRESS_MAX_LEN + 1];
extern WORD teen_port;
extern char passpod_addr[ADDRESS_MAX_LEN + 1];
extern WORD passpod_port;

View File

@@ -17,7 +17,6 @@ extern LPFDWATCH main_fdw;
LPCLIENT_DESC db_clientdesc = NULL;
LPCLIENT_DESC g_pkAuthMasterDesc = NULL;
LPCLIENT_DESC g_NetmarbleDBDesc = NULL;
LPCLIENT_DESC g_TeenDesc = NULL;
LPCLIENT_DESC g_PasspodDesc = NULL;
static const char* GetKnownClientDescName(LPCLIENT_DESC desc) {
@@ -27,8 +26,6 @@ static const char* GetKnownClientDescName(LPCLIENT_DESC desc) {
return "g_pkAuthMasterDesc";
} else if (desc == g_NetmarbleDBDesc) {
return "g_NetmarbleDBDesc";
} else if (desc == g_TeenDesc) {
return "g_TeenDesc";
} else if (desc == g_PasspodDesc) {
return "g_PasspodDesc";
}
@@ -238,11 +235,6 @@ void CLIENT_DESC::SetPhase(int iPhase)
m_pInputProcessor = NULL;
break;
case PHASE_TEEN:
m_inputTeen.SetStep(0);
m_pInputProcessor = &m_inputTeen;
break;
}
m_iPhase = iPhase;

View File

@@ -40,14 +40,12 @@ class CLIENT_DESC : public DESC
CInputDB m_inputDB;
CInputP2P m_inputP2P;
CInputTeen m_inputTeen;
};
extern LPCLIENT_DESC db_clientdesc;
extern LPCLIENT_DESC g_pkAuthMasterDesc;
extern LPCLIENT_DESC g_NetmarbleDBDesc;
extern LPCLIENT_DESC g_TeenDesc;
extern LPCLIENT_DESC g_PasspodDesc;
#endif

View File

@@ -14,7 +14,6 @@ enum
INPROC_UDP,
INPROC_P2P,
INPROC_AUTH,
INPROC_TEEN,
};
void LoginFailure(LPDESC d, const char * c_pszStatus);
@@ -371,23 +370,5 @@ class CInputAuth : public CInputProcessor
};
class CInputTeen : public CInputProcessor
{
public :
virtual BYTE GetType() { return INPROC_TEEN; }
void SetStep(int step);
protected :
virtual bool Process(LPDESC lpDesc, const void * c_pvOrig, int iBytes, int & r_iBytesProceed);
virtual int Analyze(LPDESC d, BYTE bHeader, const char * c_pData) { return 0; };
private:
int m_step;
bool ProcessHandshake(LPDESC lpDesc, const void * c_pvOrig, size_t uiBytes, int & r_iBytesProceed);
bool ProcessMain(LPDESC lpDesc, const void * c_pvOrig, size_t uiBytes, int & r_iBytesProceed);
};
#endif /* __INC_METIN_II_GAME_INPUT_PROCESSOR__ */

View File

@@ -1,6 +1,5 @@
#include "stdafx.h"
#include "constants.h"
#include "common/teen_packet.h"
#include "config.h"
#include "utils.h"
#include "input.h"
@@ -774,19 +773,6 @@ void CInputLogin::Entergame(LPDESC d, const char * data)
}
}
// 청소년 보호
if (g_TeenDesc) // BufferedPacket 사용 금지
{
TPacketGTLogin p;
p.header = HEADER_GT_LOGIN;
p.empty = 0;
p.id = d->GetAccountTable().id;
g_TeenDesc->Packet(&p, sizeof(p));
sys_log(0, "TEEN_SEND: (%u, %s)", d->GetAccountTable().id, ch->GetName());
}
if (ch->GetHorseLevel() > 0)
{
DWORD pid = ch->GetPlayerID();

View File

@@ -1,248 +0,0 @@
/*********************************************************************
* date : 2007.06.07
* file : input_teen.cpp
* author : mhh
* description :
*/
#define _input_teen_cpp_
#include "stdafx.h"
#include "constants.h"
#include "common/teen_packet.h"
#include "input.h"
#include "desc.h"
#include "desc_manager.h"
#include "db.h"
#include "protocol.h"
#include "char.h"
#include "dev_log.h"
#define HANDSHAKE_XOR 0x6AB3D224
void CInputTeen::SetStep(int step)
{
m_step = step;
}
bool CInputTeen::Process(LPDESC lpDesc, const void * c_pvOrig, int iBytes, int & r_iBytesProceed)
{
switch (m_step)
{
case 0:
return this->ProcessHandshake(lpDesc, c_pvOrig, iBytes, r_iBytesProceed);
break;
case 1:
return this->ProcessMain(lpDesc, c_pvOrig, iBytes, r_iBytesProceed);
break;
}
return false;
} /* end of CInputTeen::Process() */
bool CInputTeen::ProcessHandshake(LPDESC lpDesc, const void * c_pvOrig, size_t uiBytes, int & r_iBytesProceed)
{
const char *c_pData = (const char*) c_pvOrig;
size_t packet_len = sizeof(DWORD);
if (uiBytes < packet_len)
return false;
DWORD handshake = decode_4bytes(c_pData);
c_pData += packet_len;
m_iBufferLeft -= packet_len;
r_iBytesProceed += packet_len;
this->SetStep(1);
char buf[256];
*((DWORD *) buf) = handshake ^ HANDSHAKE_XOR;
lpDesc->Packet(buf, sizeof(DWORD));
return true;
}
static int __packet_len(BYTE header)
{
const int header_size = sizeof(BYTE) + sizeof(WORD);
switch (header)
{
case HEADER_TG_TEEN_NOTICE: return (header_size + LOGIN_MAX_LEN + 4);
case HEADER_TG_FORCE_LOGOUT: return (header_size + LOGIN_MAX_LEN);
case HEADER_TG_LOGIN_NOTICE: return (header_size + LOGIN_MAX_LEN + 4 + 4);
}
return 0;
}
static void __proc_teen_notice(char *login, int hour)
{
LPDESC desc = DESC_MANAGER::instance().FindByLoginName(login);
if (NULL==desc) return;
LPCHARACTER ch = desc->GetCharacter();
if (NULL==ch) return;
switch (hour)
{
case 0:
{
SET_OVER_TIME(ch, OT_NONE);
return;
}
break;
case 1:
case 2:
{
ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("당신의 누적 온라인 시간이 이미 %d시간이 지났습니다."), hour);
SET_OVER_TIME(ch, OT_NONE);
}
break;
case 3:
{
ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("당신의 누적 온라인 시간이 이미 %d시간이 되었습니다,"), hour);
ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("조속히 접속을 종료하신 후 건강을 위해 휴식을 취해주시기바랍니다."));
SET_OVER_TIME(ch, OT_3HOUR);
}
break;
case 4:
{
ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("당신은 이미 게임 피로 상태에 들어섰으며,"));
ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("게임 내의 수익이 정상치의 50%로 하향됩니다."));
ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("당신의 건강을 위해 조속히 접속을 종료하시고"));
ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("휴식 및 학업에 열중해주십시오."));
SET_OVER_TIME(ch, OT_3HOUR);
}
break;
default:
{
ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("당신은 이미 온전하지 못한 게임 시간에 들어섰습니다."));
ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("건강을 위해 조속히 접속을 종료하신 후 휴식을 취해주십시오,"));
ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("그렇지 않으면 건강 상에 피해를 입을 수 있으며 게임 내의 수치는 0이 됩니다."));
ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("누적 오프라인 시간이 5시간이 되면 정상으로 돌아옵니다."));
SET_OVER_TIME(ch, OT_5HOUR);
}
break;
}
}
static inline void __sec_to_timestring(int sec, char *buf, size_t buflen)
{
int hour = (sec/60)/60;
int min = (sec/60);
if (hour>0)
snprintf(buf, buflen, LC_TEXT("%d시간"), hour);
else
snprintf(buf, buflen, LC_TEXT("%d분"), min);
}
static void __proc_login_notice(char *login, int on_time, int off_time)
{
//{ check player's name
LPDESC desc = DESC_MANAGER::instance().FindByLoginName(login);
if (NULL==desc) return;
LPCHARACTER ch = desc->GetCharacter();
if (NULL==ch) return;
//} check player's name
char on_time_string[64];
char off_time_string[64];
__sec_to_timestring(on_time, on_time_string, sizeof(on_time_string));
__sec_to_timestring(off_time, off_time_string, sizeof(off_time_string));
if (0==on_time)
{
ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("당신의 누적 오프라인 시간은 %s입니다."), off_time_string);
ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("당신의 누적 온라인 시간은 0이 되었습니다. 100% 효과를 얻으실 수 있습니다."));
return;
}
else
{
ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("당신의 누적 오프라인 시간은 %s이며, 누적 온라인 시간은 %s입니다."),
off_time_string, on_time_string);
}
}
static void __input_teen(BYTE header, WORD desc_num, char *body)
{
switch (header)
{
case HEADER_TG_FORCE_LOGOUT:
{
char *data = body;
char login[LOGIN_MAX_LEN+1] = {0};
memcpy(login, data, LOGIN_MAX_LEN);
data += LOGIN_MAX_LEN;
LPDESC d = DESC_MANAGER::instance().FindByLoginName(login);
if (NULL==d)
return;
d->SetPhase(PHASE_CLOSE);
}
break;
case HEADER_TG_TEEN_NOTICE:
{
char *data = body;
char login[LOGIN_MAX_LEN+1] = {0};
memcpy(login, data, LOGIN_MAX_LEN);
data += LOGIN_MAX_LEN;
int hour = decode_4bytes(data);
data += 4;
__proc_teen_notice(login, hour);
}
break;
case HEADER_TG_LOGIN_NOTICE:
{
char *data = body;
char login[LOGIN_MAX_LEN+1] = {0};
memcpy(login, data, LOGIN_MAX_LEN);
data += LOGIN_MAX_LEN;
int on_time = decode_4bytes(data);
data += 4;
int off_time = decode_4bytes(data);
data += 4;
__proc_login_notice(login, on_time, off_time);
}
break;
}
}
bool CInputTeen::ProcessMain(LPDESC lpDesc, const void * c_pvOrig, size_t uiBytes, int & r_iBytesProceed)
{
const char *c_pData = (const char*) c_pvOrig;
const size_t header_size = sizeof(BYTE) + sizeof(WORD);
if (uiBytes < header_size)
return false;
for (m_iBufferLeft = uiBytes; m_iBufferLeft > 0;)
{
BYTE header = decode_byte(c_pData);
WORD desc_num = decode_2bytes(c_pData+sizeof(BYTE));
char *body = (char*) c_pData + header_size;
int packet_len = __packet_len(header);
if (m_iBufferLeft < packet_len)
return true;
c_pData += packet_len;
m_iBufferLeft -= packet_len;
r_iBytesProceed += packet_len;
__input_teen(header, desc_num, body);
}
return true;
}

View File

@@ -797,18 +797,14 @@ int start(int argc, char **argv)
fprintf(stderr, "MasterAuth %d", LC_GetLocalType());
}
}
/* game server to teen server */
else
{
if (teen_addr[0] && teen_port)
g_TeenDesc = DESC_MANAGER::instance().CreateConnectionDesc(main_fdw, teen_addr, teen_port, PHASE_TEEN, true);
extern unsigned int g_uiSpamBlockDuration;
extern unsigned int g_uiSpamBlockScore;
extern unsigned int g_uiSpamReloadCycle;
sys_log(0, "SPAM_CONFIG: duration %u score %u reload cycle %u\n",
g_uiSpamBlockDuration, g_uiSpamBlockScore, g_uiSpamReloadCycle);
g_uiSpamBlockDuration, g_uiSpamBlockScore, g_uiSpamReloadCycle);
extern void LoadSpamDB();
LoadSpamDB();
@@ -1026,21 +1022,6 @@ int io_loop(LPFDWATCH fdw)
{
d->SetPhase(PHASE_CLOSE);
}
else if (g_TeenDesc==d)
{
int buf_size = buffer_size(d->GetOutputBuffer());
int sock_buf_size = fdwatch_get_buffer_size(fdw, d->GetSocket());
int ret = d->ProcessOutput();
if (ret < 0)
{
d->SetPhase(PHASE_CLOSE);
}
if (buf_size)
sys_log(0, "TEEN::Send(size %d sock_buf %d ret %d)", buf_size, sock_buf_size, ret);
}
break;
case FDW_EOF:

View File

@@ -843,7 +843,6 @@ enum EPhase
PHASE_DBCLIENT,
PHASE_P2P,
PHASE_AUTH,
PHASE_TEEN,
PHASE_PASSPOD,
};