Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server
You last visited: Today at 01:42

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



locale_find: LOCALE_ERROR:

Discussion on locale_find: LOCALE_ERROR: within the Metin2 Private Server forum part of the Metin2 category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Dec 2015
Posts: 21
Received Thanks: 0
locale_find: LOCALE_ERROR:

Hello all

i'am changed some words in server source

when i test the system
channel stop !!
in syserr
PHP Code:
SYSERRDec 17 12:58:00 :: pid_init
Start of pid766

SYSERR
Dec 17 13:01:53 :: ForAttrRegionFreeAngleSECTREE_MANAGER::ForAttrRegion Unhandled exceptionMapIndex21
SYSERR
Dec 17 13:02:06 :: LoadSkillMotionMotionSkill exist but no motion data for index 0 mob 3596 skill 257
SYSERR
Dec 17 13:02:06 :: LoadSkillMotionMotionSkill exist but no motion data for index 1 mob 3596 skill 258
SYSERR
Dec 17 13:02:09 :: heart_idlelosing 244 seconds. (lag occured)
SYSERRDec 17 13:03:27 :: Analyzelogin phase does not handle this packetheader 66
SYSERR
Dec 17 13:03:27 :: Analyzelogin phase does not handle this packetheader 66
SYSERR
Dec 17 13:03:27 :: Analyzelogin phase does not handle this packetheader 66
SYSERR
Dec 17 13:03:27 :: Analyzelogin phase does not handle this packetheader 66
SYSERR
Dec 17 13:04:28 :: locale_findLOCALE_ERROR" Pvp will start after %d secunde with player %s "

system Pvp 1.2.3.4.5 Go
Pvp.cpp

PHP Code:
#include "stdafx.h"
#include "constants.h"
#include "pvp.h"
#include "crc32.h"
#include "packet.h"
#include "desc.h"
#include "desc_manager.h"
#include "char.h"
#include "char_manager.h"
#include "config.h"
#include "packet.h"
#include "sectree_manager.h"
#include "buffer_manager.h"
#include "locale_service.h"

using namespace std;

CPVP::CPVP(DWORD dwPID1DWORD dwPID2)
{
    if (
dwPID1 dwPID2)
    {
        
m_players[0].dwPID dwPID1;
        
m_players[1].dwPID dwPID2;
        
m_players[0].bAgree true;
    }
    else
    {
        
m_players[0].dwPID dwPID2;
        
m_players[1].dwPID dwPID1;
        
m_players[1].bAgree true;
    }

    
DWORD adwID[2];
    
adwID[0] = m_players[0].dwPID;
    
adwID[1] = m_players[1].dwPID;
    
m_dwCRC GetFastHash((const char *) &adwID8);
    
m_bRevenge false;

    
SetLastFightTime();
}

CPVP::CPVP(CPVP k)
{
    
m_players[0] = k.m_players[0];
    
m_players[1] = k.m_players[1];

    
m_dwCRC k.m_dwCRC;
    
m_bRevenge k.m_bRevenge;

    
SetLastFightTime();
}

CPVP::~CPVP()
{
}

void CPVP::Packet(bool bDelete)
{
    if (!
m_players[0].dwVID || !m_players[1].dwVID)
    {
        if (
bDelete)
            
sys_err("null vid when removing %u %u"m_players[0].dwVIDm_players[0].dwVID);

        return;
    }

    
TPacketGCPVP pack;

    
pack.bHeader HEADER_GC_PVP;

    if (
bDelete)
    {
        
pack.bMode PVP_MODE_NONE;
        
pack.dwVIDSrc m_players[0].dwVID;
        
pack.dwVIDDst m_players[1].dwVID;
    }
    else if (
IsFight())
    {
        
pack.bMode PVP_MODE_FIGHT;
        
pack.dwVIDSrc m_players[0].dwVID;
        
pack.dwVIDDst m_players[1].dwVID;
    }
    else
    {
        
pack.bMode m_bRevenge PVP_MODE_REVENGE PVP_MODE_AGREE;

        if (
m_players[0].bAgree)
        {
            
pack.dwVIDSrc m_players[0].dwVID;
            
pack.dwVIDDst m_players[1].dwVID;
        }
        else
        {
            
pack.dwVIDSrc m_players[1].dwVID;
            
pack.dwVIDDst m_players[0].dwVID;
        }
    }

    const 
DESC_MANAGER::DESC_SET c_rSet DESC_MANAGER::instance().GetClientSet();
    
DESC_MANAGER::DESC_SET::const_iterator it c_rSet.begin();

    while (
it != c_rSet.end())
    {
        
LPDESC d = *it++;

        if (
d->IsPhase(PHASE_GAME) || d->IsPhase(PHASE_DEAD))
            
d->Packet(&packsizeof(pack));
    }
}

bool CPVP::Agree(DWORD dwPID)
{
    
m_players[m_players[0].dwPID != dwPID 0].bAgree true;

    if (
IsFight())
    {
        
Packet();
        return 
true;
    }

    return 
false;
}

bool CPVP::IsFight()
{
    return (
m_players[0].bAgree == m_players[1].bAgree) && m_players[0].bAgree;
}

void CPVP::Win(DWORD dwPID)
{
    
int iSlot m_players[0].dwPID != dwPID 0;

    
m_bRevenge true;

    
m_players[iSlot].bAgree true// 자동으로 동의
    
m_players[!iSlot].bCanRevenge true;
    
m_players[!iSlot].bAgree false;

    
Packet();
}

bool CPVP::CanRevenge(DWORD dwPID)
{
    return 
m_players[m_players[0].dwPID != dwPID 0].bCanRevenge;
}

void CPVP::SetVID(DWORD dwPIDDWORD dwVID)
{
    if (
m_players[0].dwPID == dwPID)
        
m_players[0].dwVID dwVID;
    else
        
m_players[1].dwVID dwVID;
}

void CPVP::SetLastFightTime()
{
    
m_dwLastFightTime get_dword_time();
}

DWORD CPVP::GetLastFightTime()
{
    return 
m_dwLastFightTime;
}

CPVPManager::CPVPManager()
{
}

CPVPManager::~CPVPManager()
{
}

EVENTINFO(TimedPvPEventInfo)
{
        
DynamicCharacterPtr eChr;
        
DynamicCharacterPtr eVictim;
        
BYTE    time_second;
 
        
TimedPvPEventInfo()
        : 
eChr()
        , 
eVictim()
        , 
time_second(0)
        {
        }
};
 
EVENTFUNC(timed_event_pvp)
{
        
TimedPvPEventInfo info dynamic_cast<TimedPvPEventInfo *>( event->info );
       
        if ( 
info == NULL )
        {
                
sys_err"timed_event_pvp> <Factor> Null pointer" );
                return 
0;
        }
 
        
LPCHARACTER     pvpChr info->eChr;
        
LPCHARACTER     pvpVictim info->eVictim;
 
        if (
pvpChr == NULL) {
                return 
0;
        }
 
        if (
info->time_second <= 0)
        {
                
pvpVictim->m_pkTimedEventPvP NULL;           
                
pvpVictim->m_TimeStartPvP true;
                
CPVPManager::instance().Insert(pvpChrpvpVictim);
 
                return 
0;
        }
        else
        {
        if (
info->time_second == 5)
            
pvpChr->EffectPacket(SE_DUEL_5);
        else if (
info->time_second == 4)
            
pvpChr->EffectPacket(SE_DUEL_4);
        else if (
info->time_second == 3)
            
pvpChr->EffectPacket(SE_DUEL_3);
        else if (
info->time_second == 2)
            
pvpChr->EffectPacket(SE_DUEL_2);
        else if (
info->time_second == 1)
            
pvpChr->EffectPacket(SE_DUEL_1);
        if (
info->time_second == 5)
            
pvpVictim->EffectPacket(SE_DUEL_5);
        else if (
info->time_second == 4)
            
pvpVictim->EffectPacket(SE_DUEL_4);
        else if (
info->time_second == 3)
            
pvpVictim->EffectPacket(SE_DUEL_3);
        else if (
info->time_second == 2)
            
pvpVictim->EffectPacket(SE_DUEL_2);
        else if (
info->time_second == 1)
            
pvpVictim->EffectPacket(SE_DUEL_1);
        
                
pvpChr->ChatPacket(CHAT_TYPE_INFOLC_TEXT(" Pvp will start after %d secunde with player %s "), pvpVictim->GetName(), info->time_second);
                
pvpVictim->ChatPacket(CHAT_TYPE_INFOLC_TEXT(" Pvp will start after %d secunde with player %s "), pvpChr->GetName(), info->time_second);
                --
info->time_second;
        }
 
        return 
PASSES_PER_SEC(1);
}

void CPVPManager::Insert(LPCHARACTER pkChrLPCHARACTER pkVictim)
{
    if (
pkChr->IsDead() || pkVictim->IsDead())
        return;

    
CPVP kPVP(pkChr->GetPlayerID(), pkVictim->GetPlayerID());

    
CPVP pkPVP;

    if ((
pkPVP Find(kPVP.m_dwCRC)))
    {
        if (
pkVictim->m_TimeStartPvP == false)
        {
            
TimedPvPEventInfoinfo AllocEventInfo<TimedPvPEventInfo>();
            
info->eChr pkChr;
            
info->eVictim pkVictim;
            
info->time_second gTimeToStartPvP;
            
pkVictim->m_pkTimedEventPvP event_create(timed_event_pvpinfo1);
        }
        if (
pkVictim->m_TimeStartPvP == true && pkPVP->Agree(pkChr->GetPlayerID()))
        {
            
pkVictim->EffectPacket(SE_DUEL_0);
            
pkChr->EffectPacket(SE_DUEL_0);
            
pkVictim->ChatPacket(CHAT_TYPE_INFOLC_TEXT(" Pvp start with %s "), pkChr->GetName());
            
pkChr->ChatPacket(CHAT_TYPE_INFOLC_TEXT(" Pvp start with %s "), pkVictim->GetName());
            
pkVictim->m_TimeStartPvP 0;
        }
        return;
    }
        
    
pkPVP M2_NEW CPVP(kPVP);

    
pkPVP->SetVID(pkChr->GetPlayerID(), pkChr->GetVID());
    
pkPVP->SetVID(pkVictim->GetPlayerID(), pkVictim->GetVID());

    
m_map_pkPVP.insert(map<DWORDCPVP *>::value_type(pkPVP->m_dwCRCpkPVP));

    
m_map_pkPVPSetByID[pkChr->GetPlayerID()].insert(pkPVP);
    
m_map_pkPVPSetByID[pkVictim->GetPlayerID()].insert(pkPVP);

    
pkPVP->Packet();

    
char msg[CHAT_MAX_LEN 1];
    
snprintf(msgsizeof(msg), LC_TEXT("%s님이 대결신청을 했습니다. 승낙하려면 대결동의를 하세요."), pkChr->GetName());

    
pkVictim->ChatPacket(CHAT_TYPE_INFOmsg);
    
pkChr->ChatPacket(CHAT_TYPE_INFOLC_TEXT("%s에게 대결신청을 했습니다."), pkVictim->GetName());
    
    
pkChr->EffectPacket(SE_DUEL_SENDER);
    
pkVictim->EffectPacket(SE_DUEL_RECEIVER);

    
// NOTIFY_PVP_MESSAGE
    
LPDESC pkVictimDesc pkVictim->GetDesc();
    if (
pkVictimDesc)
    {
        
TPacketGCWhisper pack;

        
int len MIN(CHAT_MAX_LENstrlen(msg) + 1);

        
pack.bHeader HEADER_GC_WHISPER;
        
pack.wSize sizeof(TPacketGCWhisper) + len;
        
pack.bType WHISPER_TYPE_SYSTEM;
        
strlcpy(pack.szNameFrompkChr->GetName(), sizeof(pack.szNameFrom));

        
TEMP_BUFFER buf;

        
buf.write(&packsizeof(TPacketGCWhisper));
        
buf.write(msglen);

        
pkVictimDesc->Packet(buf.read_peek(), buf.size());
    }    
    
// END_OF_NOTIFY_PVP_MESSAGE
}

void CPVPManager::ConnectEx(LPCHARACTER pkChrbool bDisconnect)
{
    
CPVPSetMap::iterator it m_map_pkPVPSetByID.find(pkChr->GetPlayerID());

    if (
it == m_map_pkPVPSetByID.end())
        return;

    
DWORD dwVID bDisconnect pkChr->GetVID();

    
TR1_NS::unordered_set<CPVP*>::iterator it2 it->second.begin();

    while (
it2 != it->second.end())
    {
        
CPVP pkPVP = *it2++;
        
pkPVP->SetVID(pkChr->GetPlayerID(), dwVID);
    }
}

void CPVPManager::Connect(LPCHARACTER pkChr)
{
    
ConnectEx(pkChrfalse);
}

void CPVPManager::Disconnect(LPCHARACTER pkChr)
{
    
//ConnectEx(pkChr, true);
}

void CPVPManager::GiveUp(LPCHARACTER pkChrDWORD dwKillerPID// This method is calling from no where yet.
{
    
CPVPSetMap::iterator it m_map_pkPVPSetByID.find(pkChr->GetPlayerID());

    if (
it == m_map_pkPVPSetByID.end())
        return;

    
sys_log(1"PVPManager::Dead %d"pkChr->GetPlayerID());
    
TR1_NS::unordered_set<CPVP*>::iterator it2 it->second.begin();

    while (
it2 != it->second.end())
    {
        
CPVP pkPVP = *it2++;

        
DWORD dwCompanionPID;

        if (
pkPVP->m_players[0].dwPID == pkChr->GetPlayerID())
            
dwCompanionPID pkPVP->m_players[1].dwPID;
        else
            
dwCompanionPID pkPVP->m_players[0].dwPID;

        if (
dwCompanionPID != dwKillerPID)
            continue;

        
pkPVP->SetVID(pkChr->GetPlayerID(), 0);

        
m_map_pkPVPSetByID.erase(dwCompanionPID);

        
it->second.erase(pkPVP);

        if (
it->second.empty())
            
m_map_pkPVPSetByID.erase(it);

        
m_map_pkPVP.erase(pkPVP->m_dwCRC);

        
pkPVP->Packet(true);
        
M2_DELETE(pkPVP);
        break;
    }
}

// 리턴값: 0 = PK, 1 = PVP
// PVP를 리턴하면 경험치나 아이템을 떨구고 PK면 떨구지 않는다.
bool CPVPManager::Dead(LPCHARACTER pkChrDWORD dwKillerPID)
{
    
CPVPSetMap::iterator it m_map_pkPVPSetByID.find(pkChr->GetPlayerID());

    if (
it == m_map_pkPVPSetByID.end())
        return 
false;

    
bool found false;
    
sys_log(1"PVPManager::Dead %d"pkChr->GetPlayerID());
    
TR1_NS::unordered_set<CPVP*>::iterator it2 it->second.begin();
    

    while (
it2 != it->second.end())
    {
        
CPVP pkPVP = *it2++;

        
DWORD dwCompanionPID;

        if (
pkPVP->m_players[0].dwPID == pkChr->GetPlayerID())
            
dwCompanionPID pkPVP->m_players[1].dwPID;
        else
            
dwCompanionPID pkPVP->m_players[0].dwPID;

        if (
dwCompanionPID == dwKillerPID)
        {
            if (
pkPVP->IsFight())
            {
                
pkPVP->SetLastFightTime();
                
pkPVP->Win(dwKillerPID);
                
pkChr->EffectPacket(SE_DUEL_VICTIM_EFFECT);                                    
                
                
LPCHARACTER tch CHARACTER_MANAGER::instance().FindByPID(dwKillerPID);
                if (
tch)
                    
tch->EffectPacket(SE_DUEL_KILLER_EFFECT);
                
                
found true;
                break;
            }    
            else if (
get_dword_time() - pkPVP->GetLastFightTime() <= 15000)
            {
                
found true;
                break;
            }
        }
    }

    return 
found;
}

bool CPVPManager::CanAttack(LPCHARACTER pkChrLPCHARACTER pkVictim)
{
    switch (
pkVictim->GetCharType())
    {
        case 
CHAR_TYPE_NPC:
        case 
CHAR_TYPE_WARP:
        case 
CHAR_TYPE_GOTO:
            return 
false;
    }

    if (
pkChr == pkVictim)  // 내가 날 칠라고 하네 -_-
        
return false;

    if (
pkVictim->IsNPC() && pkChr->IsNPC() && !pkChr->IsGuardNPC())
        return 
false;

    if( 
true == pkChr->IsHorseRiding() )
    {
        if( 
pkChr->GetHorseLevel() > && == pkChr->GetHorseGrade() ) 
            return 
false;
    }
    else
    {
        switch( 
pkChr->GetMountVnum() )
        {
            case 
0:
            case 
20030:
            case 
20110:
            case 
20111:
            case 
20112:
            case 
20113:
            case 
20114:
            case 
20115:
            case 
20116:
            case 
20117:
            case 
20118:
                
//신규 탈것 고급
            
case 20205:
            case 
20206:
            case 
20207:
            case 
20208:
            case 
20209:
            case 
20210:
            case 
20211:
            case 
20212:
            case 
20119:        // 라마단 흑마
            
case 20219:        // 라마단 흑마 클론 (할로윈용)
            
case 20220:        // 크리스마스 탈것
            
case 20221:        // 전갑 백웅
            
case 20222:        // 전갑 팬더
            
case 20120:
            case 
20121:
            case 
20122:
            case 
20123:
            case 
20124:
            case 
20125:
            case 
20214:        // 난폭한 전갑순순록    
            
case 20215:        // 용맹한 전갑순순록    
            
case 20217:        // 난폭한 전갑암순록    
            
case 20218:        // 용맹한 전갑암순록
            
case 20224:        // 난폭한 전갑석룡자
            
case 20225:        // 용맹한 전갑석룡자
            
case 20226:        //    유니콘
            
case 20227:
            case 
20229:
            case 
20230:
            case 
20231:
            case 
20232:
            case 
20233:
            case 
20234:
            case 
20235:
                break;

            default:
                return 
false;
        }
    }

    if (
pkVictim->IsNPC() || pkChr->IsNPC())
    {
        return 
true;
    }

    if (
pkVictim->IsObserverMode() || pkChr->IsObserverMode())
        return 
false;

    {
        
BYTE bMapEmpire SECTREE_MANAGER::instance().GetEmpireFromMapIndex(pkChr->GetMapIndex());

        if ( 
pkChr->GetPKMode() == PK_MODE_PROTECT && pkChr->GetEmpire() == bMapEmpire ||
                
pkVictim->GetPKMode() == PK_MODE_PROTECT && pkVictim->GetEmpire() == bMapEmpire )
        {
            return 
false;
        }
    }

    if (
pkChr->GetEmpire() != pkVictim->GetEmpire())
    {
        if ( 
LC_IsYMIR() == true || LC_IsKorea() == true )
        {
            if ( 
pkChr->GetPKMode() == PK_MODE_PROTECT || pkVictim->GetPKMode() == PK_MODE_PROTECT )
            {
                return 
false;
            }
        }

        return 
true;
    }

    
bool beKillerMode false;

    if (
pkVictim->GetParty() && pkVictim->GetParty() == pkChr->GetParty())
    {
        return 
false;
        
// Cannot attack same party on any pvp model
    
}
    else
    {
        if (
pkVictim->IsKillerMode())
        {
            return 
true;
        }

        if (
pkChr->GetAlignment() < && pkVictim->GetAlignment() >= 0)
        {
            if (
g_protectNormalPlayer)
            {
            
// 범법자는 평화모드인 착한사람을 공격할 수 없다.
            
if (PK_MODE_PEACE == pkVictim->GetPKMode())
                return 
false;
            }
        }


        switch (
pkChr->GetPKMode())
        {
            case 
PK_MODE_PEACE:
            case 
PK_MODE_REVENGE:
                
// Cannot attack same guild
                
if (pkVictim->GetGuild() && pkVictim->GetGuild() == pkChr->GetGuild())
                    break;

                if (
pkChr->GetPKMode() == PK_MODE_REVENGE)
                {
                    
//if (!g_iUseLocale)
                    
if (1)
                    {
                        if (
pkChr->GetAlignment() < && pkVictim->GetAlignment() >= 0)
                        {
                            
pkChr->SetKillerMode(true);
                            return 
true;
                        }
                        else if (
pkChr->GetAlignment() >= && pkVictim->GetAlignment() < 0)
                            return 
true;
                    }
                    else
                    {
                        if (
pkChr->GetAlignment() < && pkVictim->GetAlignment() < 0)
                            break;
                        else if (
pkChr->GetAlignment() >= && pkVictim->GetAlignment() >= 0)
                            break;

                        
beKillerMode true;
                    }
                }
                break;

            case 
PK_MODE_GUILD:
                
// Same implementation from PK_MODE_FREE except for attacking same guild
                
if (!pkChr->GetGuild() || (pkVictim->GetGuild() != pkChr->GetGuild()))
                {
                    if (
1)
                    
//if (!g_iUseLocale)
                    
{
                        if (
pkVictim->GetAlignment() >= 0)
                            
pkChr->SetKillerMode(true);
                        else if (
pkChr->GetAlignment() < && pkVictim->GetAlignment() < 0)
                            
pkChr->SetKillerMode(true);

                        return 
true;
                    }
                    else
                        
beKillerMode true;
                }
                break;

            case 
PK_MODE_FREE:
                
//if (!g_iUseLocale)
                
if (1)
                {
                    if (
pkVictim->GetAlignment() >= 0)
                        
pkChr->SetKillerMode(true);
                    else if (
pkChr->GetAlignment() < && pkVictim->GetAlignment() < 0)
                        
pkChr->SetKillerMode(true);

                    return 
true;
                }
                else
                    
beKillerMode true;
                break;
        }
    }

    
CPVP kPVP(pkChr->GetPlayerID(), pkVictim->GetPlayerID());
    
CPVP pkPVP Find(kPVP.m_dwCRC);

    if (!
pkPVP || !pkPVP->IsFight())
    {
        if (
beKillerMode)
            
pkChr->SetKillerMode(true);

        return (
beKillerMode);
    }

    
pkPVP->SetLastFightTime();
    return 
true;
}

CPVP CPVPManager::Find(DWORD dwCRC)
{
    
map<DWORDCPVP *>::iterator it m_map_pkPVP.find(dwCRC);

    if (
it == m_map_pkPVP.end())
        return 
NULL;

    return 
it->second;
}

void CPVPManager::Delete(CPVP pkPVP)
{
    
map<DWORDCPVP *>::iterator it m_map_pkPVP.find(pkPVP->m_dwCRC);

    if (
it == m_map_pkPVP.end())
        return;

    
m_map_pkPVP.erase(it);
    
m_map_pkPVPSetByID[pkPVP->m_players[0].dwPID].erase(pkPVP);
    
m_map_pkPVPSetByID[pkPVP->m_players[1].dwPID].erase(pkPVP);

    
M2_DELETE(pkPVP);
}

void CPVPManager::SendList(LPDESC d)
{
    
map<DWORDCPVP *>::iterator it m_map_pkPVP.begin();

    
DWORD dwVID d->GetCharacter()->GetVID();

    
TPacketGCPVP pack;

    
pack.bHeader HEADER_GC_PVP;

    while (
it != m_map_pkPVP.end())
    {
        
CPVP pkPVP = (it++)->second;

        if (!
pkPVP->m_players[0].dwVID || !pkPVP->m_players[1].dwVID)
            continue;

        
// VID가 둘다 있을 경우에만 보낸다.
        
if (pkPVP->IsFight())
        {
            
pack.bMode PVP_MODE_FIGHT;
            
pack.dwVIDSrc pkPVP->m_players[0].dwVID;
            
pack.dwVIDDst pkPVP->m_players[1].dwVID;
        }
        else
        {
            
pack.bMode pkPVP->m_bRevenge PVP_MODE_REVENGE PVP_MODE_AGREE;

            if (
pkPVP->m_players[0].bAgree)
            {
                
pack.dwVIDSrc pkPVP->m_players[0].dwVID;
                
pack.dwVIDDst pkPVP->m_players[1].dwVID;
            }
            else
            {
                
pack.dwVIDSrc pkPVP->m_players[1].dwVID;
                
pack.dwVIDDst pkPVP->m_players[0].dwVID;
            }
        }

        
d->Packet(&packsizeof(pack));
        
sys_log(1"PVPManager::SendList %d %d"pack.dwVIDSrcpack.dwVIDDst);

        if (
pkPVP->m_players[0].dwVID == dwVID)
        {
            
LPCHARACTER ch CHARACTER_MANAGER::instance().Find(pkPVP->m_players[1].dwVID);
            if (
ch && ch->GetDesc())
            {
                
LPDESC d ch->GetDesc();
                
d->Packet(&packsizeof(pack));
            }
        }
        else if (
pkPVP->m_players[1].dwVID == dwVID)
        {
            
LPCHARACTER ch CHARACTER_MANAGER::instance().Find(pkPVP->m_players[0].dwVID);
            if (
ch && ch->GetDesc())
            {
                
LPDESC d ch->GetDesc();
                
d->Packet(&packsizeof(pack));
            }
        }
    }
}

void CPVPManager::Process()
{
    
map<DWORDCPVP *>::iterator it m_map_pkPVP.begin();

    while (
it != m_map_pkPVP.end())
    {
        
CPVP pvp = (it++)->second;

        if (
get_dword_time() - pvp->GetLastFightTime() > 600000// 10분 이상 싸움이 없었으면
        
{
            
pvp->Packet(true);
            
Delete(pvp);
        }
    }
}

bool CPVPManager::DuelInDesfasurare(LPCHARACTER pkChar) {
    
CPVPSetMap::iterator it m_map_pkPVPSetByID.find(pkChar->GetPlayerID());
     
    if (
it != m_map_pkPVPSetByID.end()) {
        
itertype(it->secondit2 it->second.begin();
         
        while (
it2 != it->second.end()) {
            
CPVP pvp = *it2++;
            if (
pvp->IsFight())
                return 
true;
        }
    }
    return 
false;


thank you all
xsonicx201888 is offline  
Old 12/22/2016, 06:15   #2
wild wild son




 
Nick's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 5,996
Received Thanks: 3,391
LC_TEXT(str) will use locale_string.txt to not hard-code the message, it's dynamic and can be modified easily to support different languages. Add it to the file or just make it static by removing the function call, that means:

Code:
pvpChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Pvp will start after %d secunde with player %s "), pvpVictim->GetName(), info->time_second);
to

Code:
pvpChr->ChatPacket(CHAT_TYPE_INFO, " Pvp will start after %d secunde with player %s ", pvpVictim->GetName(), info->time_second);
Nick is offline  
Old 12/22/2016, 19:13   #3
 
elite*gold: 0
Join Date: Dec 2015
Posts: 21
Received Thanks: 0
Thank you
.i will try it now

no .. it's wrong
it's same problem but now syserr is empty
xsonicx201888 is offline  
Reply


Similar Threads Similar Threads
Locale_error
04/25/2012 - Metin2 Private Server - 3 Replies
hallo epvp, habe folgendes problem was bedeutet das? SYSERR: Apr 24 21:44:30 :: locale_find: LOCALE_ERROR: "°æÇèÄ¡ ¹èÀ²"; SYSERR: Apr 24 21:44:30 :: locale_find: LOCALE_ERROR: "ÀüÁ¦±¹"; SYSERR: Apr 24 21:44:30 :: locale_find: LOCALE_ERROR: "%sÀÇ %sÀÌ %d%% Áõ°¡Çß½À´Ï´Ù!"; SYSERR: Apr 24 21:44:40 :: locale_find: LOCALE_ERROR: "µ·ÀÌ ³ª¿Ã È®·ü"; SYSERR: Apr 24 21:44:40 :: locale_find: LOCALE_ERROR: "ÀüÁ¦±¹"; SYSERR: Apr 24 21:44:40 :: locale_find: LOCALE_ERROR: "%sÀÇ %sÀÌ %d%%...



All times are GMT +1. The time now is 01:44.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.