-
Posts
81 -
Joined
-
Last visited
-
Days Won
6 -
Feedback
0%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Posts posted by Zeke
-
-
Wrong username on dicord ^^. btw node.js is a runtime. here you can run servers(expressjs) or other things. to compile/build your website for production are other packages (vue/react/svelte etc) that are using webpack anyways if you really want a website build using node technologies then add me ^^ Ryuzeke#3984
-
4 hours ago, Heathcliff™ said:
Client still inform you that you have icon problems with xy item, and your client won't crash bcs of this small "error". This correction is just for not flooding it every second if you have missing icon. It will inform you once, and set a default image for it as I mentioned before.
Its good idea to help someone like that. on my project tho that i want everything under control i would like a logic bug (logic because you can't have an item with out an image) to crash. so i would throw an errror there ^^ its just different point of view. your idea is good tho for the other ones than me
- 1
-
Better let a bug crash your client than fixing it with that "fixing" lines. can item been with blank image? logic says no. let it crash to find where you missing files ^^
-
#Up
- 1
-
1 hour ago, Erebus said:
It sounds neat, but the design still needs some work to it.
Other than that it looks cool!Yeah there will be a skin system per server for custom designs thats just for a starting version. for the start i dont point at the view but on the code. skins will be better with time
-
Hello community long time no see.
Some weeks ago i started a project for metin2wiki and i started made it as platform(Im not selling/giving code) that someone will can login/register pay a price per month(not yet) upload all the needed files(item.proto.txt etc etc) and our platform make the wiki for you(we have the hosting and it will be like: www.wiki.com/servername but you can take it as iframe on your site or make your domain point on this). i dont want to be in details for now the reason i made this post is that in some weeks from now i will need some online servers to test my wiki(of course completly free). i dont need access to your database or something like this just .txt files and some dumps from sql files(like refine_proto.sql) here is 1 picture(2 to show the multilanguage).
1 picture 1000 words
This is not a shitty php site. for that one i used JS/NODE/VUE/VEUX/QUASAR. you dont have seen a faster wiki site in your life of course no need for a single reload of page ^^. if a server with 50+ online want to join you can add me on discord: Zeke#3984
- 1
-
I could make this one with nodejs & electron if u Interesting send me a message ^^
-
3 hours ago, Fleon said:
from this i understood that you know nothing about it, pdo is a php extension/driver and MySQL is a database so this must be some ripoff that i won't even look at.
It always have been a PHP problem, since PHP pre 7 lacks a lot on security.Please check them out to learn more:
You are totally right but pdo its more paramatized from mysql (not mysqli cause mysqli is updated to) so i can me something like "more secure"
the thing i want to say is that 80% metin2 public sites now are with old code(mysql) and you can find some backdoors- 2
-
Screen:
SpoilerVideo:
https://metin2.download/picture/7qv2nIP9i5lgOj6R72ca6EztdGrd2CIL/.gif
Why is this feature good?
Cause every yang goes on this little window and players can see the chat log with out the yang spamming when the farm ^^
Download:- 121
- 1
- 1
- 2
- 4
- 31
- 6
- 80
-
11 minutes ago, WeedHex said:
I'm looking for the c++ change for make pickup function more faster.
It already exist. Can someone share it for us?
Go on client source PythonPlayer and search for this:
void CPythonPlayer::SendClickItemPacket(DWORD dwIID)
if you do s_dwNextTCPTime = 0 and comment the s_dwNextTCPTime=dwCurTime + 500; down there it will have no delay. example code:
void CPythonPlayer::SendClickItemPacket(DWORD dwIID) { if (IsObserverMode()) return; static DWORD s_dwNextTCPTime = 0; DWORD dwCurTime=ELTimer_GetMSec(); if (dwCurTime >= s_dwNextTCPTime) { // s_dwNextTCPTime=dwCurTime + 500; const char * c_szOwnerName; if (!CPythonItem::Instance().GetOwnership(dwIID, &c_szOwnerName)) return; if (strlen(c_szOwnerName) > 0) if (0 != strcmp(c_szOwnerName, GetName())) { CItemData * pItemData; if (!CItemManager::Instance().GetItemDataPointer(CPythonItem::Instance().GetVirtualNumberOfGroundItem(dwIID), &pItemData)) { Tracenf("CPythonPlayer::SendClickItemPacket(dwIID=%d) : Non-exist item.", dwIID); return; } if (!IsPartyMemberByName(c_szOwnerName) || pItemData->IsAntiFlag(CItemData::ITEM_ANTIFLAG_DROP | CItemData::ITEM_ANTIFLAG_GIVE)) { PyCallClassMemberFunc(m_ppyGameWindow, "OnCannotPickItem", Py_BuildValue("()")); return; } } CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance(); rkNetStream.SendItemPickUpPacket(dwIID); } }
- 2
-
21 minutes ago, dawnofthedead15 said:
pack it
WOW xD
-
11 minutes ago, DeYaN. said:
Hello there , i have lag on my server because the log.log register too many comands ( aprox 4.000.000 every 3 days ) and i want to disable it ..
I try to comment with // at Query but i don`t think it`s perfect...
please take a look !
#include "stdafx.h"
#include "constants.h"
#include "config.h"
#include "log.h"#include "char.h"
#include "desc.h"
#include "item.h"
#include "locale_service.h"static char __escape_hint[1024];
LogManager::LogManager() : m_bIsConnect(false)
{
}LogManager::~LogManager()
{
}bool LogManager::Connect(const char * host, const int port, const char * user, const char * pwd, const char * db)
{
if (m_sql.Setup(host, user, pwd, db, g_stLocale.c_str(), false, port))
m_bIsConnect = true;return m_bIsConnect;
}void LogManager::Query(const char * c_pszFormat, ...)
{
char szQuery[4096];
va_list args;va_start(args, c_pszFormat);
vsnprintf(szQuery, sizeof(szQuery), c_pszFormat, args);
va_end(args);if (test_server)
sys_log(0, "LOG: %s", szQuery);m_sql.AsyncQuery(szQuery);
}bool LogManager::IsConnected()
{
return m_bIsConnect;
}void LogManager::ItemLog(DWORD dwPID, DWORD x, DWORD y, DWORD dwItemID, const char * c_pszText, const char * c_pszHint, const char * c_pszIP, DWORD dwVnum)
{
m_sql.EscapeString(__escape_hint, sizeof(__escape_hint), c_pszHint, strlen(c_pszHint));//Query("INSERT DELAYED INTO log%s (type, time, who, x, y, what, how, hint, ip, vnum) VALUES('ITEM', NOW(), %u, %u, %u, %u, '%s', '%s', '%s', %u)",
//get_table_postfix(), dwPID, x, y, dwItemID, c_pszText, __escape_hint, c_pszIP, dwVnum);
}void LogManager::ItemLog(LPCHARACTER ch, LPITEM item, const char * c_pszText, const char * c_pszHint)
{
if (NULL == ch || NULL == item)
{
sys_err("character or item nil (ch %p item %p text %s)", get_pointer(ch), get_pointer(item), c_pszText);
return;
}ItemLog(ch->GetPlayerID(), ch->GetX(), ch->GetY(), item->GetID(),
NULL == c_pszText ? "" : c_pszText,
c_pszHint, ch->GetDesc() ? ch->GetDesc()->GetHostName() : "",
item->GetOriginalVnum());
}void LogManager::ItemLog(LPCHARACTER ch, int itemID, int itemVnum, const char * c_pszText, const char * c_pszHint)
{
ItemLog(ch->GetPlayerID(), ch->GetX(), ch->GetY(), itemID, c_pszText, c_pszHint, ch->GetDesc() ? ch->GetDesc()->GetHostName() : "", itemVnum);
}void LogManager::CharLog(DWORD dwPID, DWORD x, DWORD y, DWORD dwValue, const char * c_pszText, const char * c_pszHint, const char * c_pszIP)
{
m_sql.EscapeString(__escape_hint, sizeof(__escape_hint), c_pszHint, strlen(c_pszHint));//Query("INSERT DELAYED INTO log%s (type, time, who, x, y, what, how, hint, ip) VALUES('CHARACTER', NOW(), %u, %u, %u, %u, '%s', '%s', '%s')",
//get_table_postfix(), dwPID, x, y, dwValue, c_pszText, __escape_hint, c_pszIP);
}void LogManager::CharLog(LPCHARACTER ch, DWORD dw, const char * c_pszText, const char * c_pszHint)
{
if (ch)
CharLog(ch->GetPlayerID(), ch->GetX(), ch->GetY(), dw, c_pszText, c_pszHint, ch->GetDesc() ? ch->GetDesc()->GetHostName() : "");
else
CharLog(0, 0, 0, dw, c_pszText, c_pszHint, "");
}void LogManager::LoginLog(bool isLogin, DWORD dwAccountID, DWORD dwPID, BYTE bLevel, BYTE bJob, DWORD dwPlayTime)
{
Query("INSERT DELAYED INTO loginlog%s (type, time, channel, account_id, pid, level, job, playtime) VALUES (%s, NOW(), %d, %u, %u, %d, %d, %u)",
get_table_postfix(), isLogin ? "'LOGIN'" : "'LOGOUT'", g_bChannel, dwAccountID, dwPID, bLevel, bJob, dwPlayTime);
}void LogManager::MoneyLog(BYTE type, DWORD vnum, int gold)
{
if (type == MONEY_LOG_RESERVED || type >= MONEY_LOG_TYPE_MAX_NUM)
{
sys_err("TYPE ERROR: type %d vnum %u gold %d", type, vnum, gold);
return;
}//Query("INSERT DELAYED INTO money_log%s VALUES (NOW(), %d, %d, %d)", get_table_postfix(), type, vnum, gold);
}void LogManager::HackLog(const char * c_pszHackName, const char * c_pszLogin, const char * c_pszName, const char * c_pszIP)
{
m_sql.EscapeString(__escape_hint, sizeof(__escape_hint), c_pszHackName, strlen(c_pszHackName));Query("INSERT INTO hack_log (time, login, name, ip, server, why) VALUES(NOW(), '%s', '%s', '%s', '%s', '%s')", c_pszLogin, c_pszName, c_pszIP, g_stHostname.c_str(), __escape_hint);
}void LogManager::HackLog(const char * c_pszHackName, LPCHARACTER ch)
{
if (ch->GetDesc())
{
HackLog(c_pszHackName,
ch->GetDesc()->GetAccountTable().login,
ch->GetName(),
ch->GetDesc()->GetHostName());
}
}void LogManager::HackCRCLog(const char * c_pszHackName, const char * c_pszLogin, const char * c_pszName, const char * c_pszIP, DWORD dwCRC)
{
Query("INSERT INTO hack_crc_log (time, login, name, ip, server, why, crc) VALUES(NOW(), '%s', '%s', '%s', '%s', '%s', %u)", c_pszLogin, c_pszName, c_pszIP, g_stHostname.c_str(), c_pszHackName, dwCRC);
}void LogManager::PCBangLoginLog(DWORD dwPCBangID, const char* c_szPCBangIP, DWORD dwPlayerID, DWORD dwPlayTime)
{
Query("INSERT INTO pcbang_loginlog (time, pcbang_id, ip, pid, play_time) VALUES (NOW(), %u, '%s', %u, %u)",
dwPCBangID, c_szPCBangIP, dwPlayerID, dwPlayTime);
}void LogManager::GoldBarLog(DWORD dwPID, DWORD dwItemID, GOLDBAR_HOW eHow, const char* c_pszHint)
{
char szHow[32+1];
switch (eHow)
{
case PERSONAL_SHOP_BUY:
snprintf(szHow, sizeof(szHow), "'BUY'");
break;
case PERSONAL_SHOP_SELL:
snprintf(szHow, sizeof(szHow), "'SELL'");
break;
case SHOP_BUY:
snprintf(szHow, sizeof(szHow), "'SHOP_BUY'");
break;
case SHOP_SELL:
snprintf(szHow, sizeof(szHow), "'SHOP_SELL'");
break;
case EXCHANGE_TAKE:
snprintf(szHow, sizeof(szHow), "'EXCHANGE_TAKE'");
break;
case EXCHANGE_GIVE:
snprintf(szHow, sizeof(szHow), "'EXCHANGE_GIVE'");
break;case QUEST:
snprintf(szHow, sizeof(szHow), "'QUEST'");
break;default:
snprintf(szHow, sizeof(szHow), "''");
break;
}
//Query("INSERT DELAYED INTO goldlog%s (date, time, pid, what, how, hint) VALUES(CURDATE(), CURTIME(), %u, %u, %s, '%s')",
//get_table_postfix(), dwPID, dwItemID, szHow, c_pszHint);
}void LogManager::CubeLog(DWORD dwPID, DWORD x, DWORD y, DWORD item_vnum, DWORD item_uid, int item_count, bool success)
{
//Query("INSERT DELAYED INTO cube%s (pid, time, x, y, item_vnum, item_uid, item_count, success) "
//"VALUES(%u, NOW(), %u, %u, %u, %u, %d, %d)",
//get_table_postfix(), dwPID, x, y, item_vnum, item_uid, item_count, success?1:0);
}void LogManager::SpeedHackLog(DWORD pid, DWORD x, DWORD y, int hack_count)
{
Query("INSERT INTO speed_hack%s (pid, time, x, y, hack_count) "
"VALUES(%u, NOW(), %u, %u, %d)",
get_table_postfix(), pid, x, y, hack_count);
}void LogManager::ChangeNameLog(DWORD pid, const char *old_name, const char *new_name, const char *ip)
{
//Query("INSERT DELAYED INTO change_name%s (pid, old_name, new_name, time, ip) "
//"VALUES(%u, '%s', '%s', NOW(), '%s') ",
//get_table_postfix(), pid, old_name, new_name, ip);
}void LogManager::GMCommandLog(DWORD dwPID, const char* szName, const char* szIP, BYTE byChannel, const char* szCommand)
{
m_sql.EscapeString(__escape_hint, sizeof(__escape_hint), szCommand, strlen(szCommand));Query("INSERT DELAYED INTO command_log%s (userid, server, ip, port, username, command, date ) "
"VALUES(%u, 999, '%s', %u, '%s', '%s', NOW()) ",
get_table_postfix(), dwPID, szIP, byChannel, szName, __escape_hint);
}void LogManager::RefineLog(DWORD pid, const char* item_name, DWORD item_id, int item_refine_level, int is_success, const char* how)
{
m_sql.EscapeString(__escape_hint, sizeof(__escape_hint), item_name, strlen(item_name));//Query("INSERT INTO refinelog%s (pid, item_name, item_id, step, time, is_success, setType) VALUES(%u, '%s', %u, %d, NOW(), %d, '%s')",
//get_table_postfix(), pid, __escape_hint, item_id, item_refine_level, is_success, how);
}
void LogManager::ShoutLog(BYTE bChannel, BYTE bEmpire, const char * pszText)
{
m_sql.EscapeString(__escape_hint, sizeof(__escape_hint), pszText, strlen(pszText));//Query("INSERT INTO shout_log%s VALUES(NOW(), %d, %d,'%s')", get_table_postfix(), bChannel, bEmpire, __escape_hint);
}void LogManager::LevelLog(LPCHARACTER pChar, unsigned int level, unsigned int playhour)
{
if (true == LC_IsEurope())
{
DWORD aid = 0;if (NULL != pChar->GetDesc())
{
aid = pChar->GetDesc()->GetAccountTable().id;
}//Query("REPLACE INTO levellog%s (name, level, time, account_id, pid, playtime) VALUES('%s', %u, NOW(), %u, %u, %d)",
//get_table_postfix(), pChar->GetName(), level, aid, pChar->GetPlayerID(), playhour);
}
else
{
//Query("REPLACE INTO levellog%s (name, level, time, playtime) VALUES('%s', %u, NOW(), %d)",
//get_table_postfix(), pChar->GetName(), level, playhour);
}
}void LogManager::BootLog(const char * c_pszHostName, BYTE bChannel)
{
//Query("INSERT INTO bootlog (time, hostname, channel) VALUES(NOW(), '%s', %d)",
//c_pszHostName, bChannel);
}void LogManager::VCardLog(DWORD vcard_id, DWORD x, DWORD y, const char * hostname, const char * giver_name, const char * giver_ip, const char * taker_name, const char * taker_ip)
{
//Query("INSERT DELAYED INTO vcard_log (vcard_id, x, y, hostname, giver_name, giver_ip, taker_name, taker_ip) VALUES(%u, %u, %u, '%s', '%s', '%s', '%s', '%s')",
//vcard_id, x, y, hostname, giver_name, giver_ip, taker_name, taker_ip);
}void LogManager::FishLog(DWORD dwPID, int prob_idx, int fish_id, int fish_level, DWORD dwMiliseconds, DWORD dwVnum, DWORD dwValue)
{
//Query("INSERT INTO fish_log%s VALUES(NOW(), %u, %d, %u, %d, %u, %u, %u)",
//get_table_postfix(),
//dwPID,
//prob_idx,
//fish_id,
//fish_level,
//dwMiliseconds,
//dwVnum,
//dwValue);
}void LogManager::QuestRewardLog(const char * c_pszQuestName, DWORD dwPID, DWORD dwLevel, int iValue1, int iValue2)
{
Query("INSERT INTO quest_reward_log%s VALUES('%s',%u,%u,2,%u,%u,NOW())",
get_table_postfix(),
c_pszQuestName,
dwPID,
dwLevel,
iValue1,
iValue2);
}void LogManager::DetailLoginLog(bool isLogin, LPCHARACTER ch)
{
if (NULL == ch->GetDesc())
return;if (true == isLogin)
{
Query("INSERT INTO loginlog2(type, is_gm, login_time, channel, account_id, pid, ip, client_version) "
"VALUES('INVALID', %s, NOW(), %d, %u, %u, inet_aton('%s'), '%s')",
ch->IsGM() == true ? "'Y'" : "'N'",
g_bChannel,
ch->GetDesc()->GetAccountTable().id,
ch->GetPlayerID(),
ch->GetDesc()->GetHostName(),
ch->GetDesc()->GetClientVersion());
}
else
{
Query("SET @i = (SELECT MAX(id) FROM loginlog2 WHERE account_id=%u AND pid=%u)",
ch->GetDesc()->GetAccountTable().id,
ch->GetPlayerID());Query("UPDATE loginlog2 SET type='VALID', logout_time=NOW(), playtime=TIMEDIFF(logout_time,login_time) WHERE id=@i");
}
}void LogManager::DragonSlayLog(DWORD dwGuildID, DWORD dwDragonVnum, DWORD dwStartTime, DWORD dwEndTime)
{
//Query( "INSERT INTO dragon_slay_log%s VALUES( %d, %d, FROM_UNIXTIME(%d), FROM_UNIXTIME(%d) )",
//get_table_postfix(),
//dwGuildID, dwDragonVnum, dwStartTime, dwEndTime);
}void LogManager::HackShieldLog(unsigned long ErrorCode, LPCHARACTER ch)
{
struct in_addr st_addr;#ifndef __WIN32__
if (0 == inet_aton(ch->GetDesc()->GetHostName(), &st_addr))
#else
unsigned long in_address;
in_address = inet_addr(ch->GetDesc()->GetHostName());
st_addr.s_addr = in_address;
if (INADDR_NONE == in_address)
#endif
{
Query( "INSERT INTO hackshield_log(time, account_id, login, pid, name, reason, ip) "
"VALUES(NOW(), %u, '%s', %u, '%s', %u, 0)",
ch->GetDesc()->GetAccountTable().id, ch->GetDesc()->GetAccountTable().login,
ch->GetPlayerID(), ch->GetName(),
ErrorCode);
}
else
{
Query( "INSERT INTO hackshield_log(time, account_id, login, pid, name, reason, ip) "
"VALUES(NOW(), %u, '%s', %u, '%s', %u, inet_aton('%s'))",
ch->GetDesc()->GetAccountTable().id, ch->GetDesc()->GetAccountTable().login,
ch->GetPlayerID(), ch->GetName(),
ErrorCode,
ch->GetDesc()->GetHostName());
}
}Thats a way xD but the better way its to search where this log functions you dont want called on your source and comment this or make it with defines if you want someday to open them again
-
7 minutes ago, bumxd said:
i need what can see empire flag on VIP too, now i have this bug: https://metin2.download/picture/4BDVzzIuFLXS3y2qgBS3SAMT7El4lI85/.png i see myself empire flag, when i change costume, effect empire flag is off, and all good will, but after teleport again will empire flag myself.. and other player can empire flag remove(if change costume in costume slot)
my instancebase.cpp function:
BOOL CInstanceBase::IsSameEmpire(CInstanceBase& rkInstDst)
{
if (0 == rkInstDst.m_dwEmpireID)
return TRUE;
if (IsGameMaster())
return TRUE;
// #ifdef __ONEX_VIP__
// if (IsVIP())
// return TRUE;
// #endif
if (rkInstDst.IsGameMaster())
return TRUE;
// #ifdef __ONEX_VIP__
// if (rkInstDst.IsVIP())
// return TRUE;
// #endif
if (rkInstDst.m_dwEmpireID==m_dwEmpireID)
return TRUE;
return FALSE;
}
instancebaseeffect.cpp function:
void CInstanceBase::__AttachEmpireEffect(DWORD eEmpire)
{
if (!__IsExistMainInstance())
return;
CInstanceBase* pkInstMain=__GetMainInstancePtr();
if (IsWarp())
return;
if (IsObject())
return;
if (IsFlag())
return;
if (IsResource())
return;
if (pkInstMain->IsGameMaster())
{
}
#ifdef __ONEX_VIP__
else if (pkInstMain->IsVIP())
{
}
#endif
else
{
if (pkInstMain->IsSameEmpire(*this))
return;
// HIDE_OTHER_EMPIRE_EUNHYEONG_ASSASSIN
if (IsAffect(AFFECT_EUNHYEONG))
return;
// END_OF_HIDE_OTHER_EMPIRE_EUNHYEONG_ASSASSIN
}
if (IsGameMaster())
return;
// #ifdef __ONEX_VIP__
// if (IsVIP())
// return;
// #endif
__EffectContainer_AttachEffect(EFFECT_EMPIRE+eEmpire);
}
You dont need to show the flag when player is vip?
instancebaseeffect.cpp
replace this:
else if (pkInstMain->IsVIP()) { }
with:
if (pkInstMain->IsVIP()) return;
-
1 hour ago, lexy337 said:
Hello, I am new to MT2 server creating stuff and i am really into it, but I wasn't able to find anything else but simple tutorials using already made servers files, so I would like to find out more about theory behind it. I have been searching for hours, but I haven't found any articles yet regarding how are server files actually created? Are they whole programmed by authors, is it about reverse engineering, cracking the official ones, how to get the official server file..? If you knew the answers or some articles, guides, resources I would be really glad.
Have a nice day.
Lexy337
Mt2 serverfiles was leaked i think on 2007. i think new versions/updates are fanmade (not surely about all that )
-
1 hour ago, charparodar said:
I didn't tell the contrary, I just said that the topic is a complete copy past, because of the text background (is gray)
I think we aren't supposed to do so much spam, maybe some mod can clean the topic...
Yeah i copy paste it from the other forum that i post it cause i was bored to write it again.
yes. if is possible some mod delete this spam -
1 hour ago, charparodar said:
I'm talking about the post not the script, I didn't even downloaded it, the post is 100% copy past from another forum...
I post this on one more forum (can't tell name here) and in the other forum i have a different name but im the same person
-
5 hours ago, charparodar said:
Nice copy paste...
Copy paste what? i take the login form from boostrap and made the php script by my self.
-
Hello community. i had some free time so and i did this. is not something special but someone might want to use it.
SpoilerDownload:
You put your database information on include/dbconfig.You put your client download link on index.php variable: $DownloadLink
IF something not work good just report it here and i will fix it.
- 102
- 6
- 2
- 1
- 1
- 4
- 1
- 65
- 13
- 69
-
6 hours ago, Mali61 said:
Thanks for your nice comment dude, but I don't share another system on this forum. Because some people know everything and Hard Level Coding. So do you create anything or just criticize others ha Tasho? Please show us your Hard Level Coding Style.
Man criticize sometimes is good think. it will make you better everytime someone criticize you like this "your coding is bad" this would be something that i would take it as a test to make my programming skills better.
- 1
-
Best clean files + source you could take is Ira's . i have bought from this guy. its expensive but this files/source is truly awesome.
-
Hello guys i have a problem. on my server i have a boss that he need 40-50 players to be killed and this boss have 120 items on drop.
the problem is that items are dropped but all items are dropped for 1 or 2 players from all this items. what i mean?
SpoilerAs you can see on the icon all items are in name House... i want all players to get drop from all this items...
My mob_drop_item:
SpoilerGroup Zeron_epic { Mob 6091 Type drop 1 30192 1 90 ---Γαλακτώδης χυμός 2 30194 1 90 ---Ρόπαλο Ορκ 3 50135 1 100 ---Κουτι με αξεσουαρ 4 50727 30 99 ---Ρόδο των Βουνών 5 50725 30 99 ---Πασχαλιά 6 50724 30 99 ---Σελινόριζα 7 50722 30 99 ---Καμπανούλα 8 50723 30 99 ---Άνθος Μανόλιας 9 50728 30 99 ---Μουριά 10 50721 30 99 ---Άνθος Ροδακινιάς 11 50726 30 99 ---Μανιτάρι Τούε 12 71015 1 90 ---Δαχτυλίδι Εμπειρίας 13 71016 1 90 ---Γάντια του Κλέφτη 14 27992 1 100 ---Άσπρο Μαργαριτάρι 15 27993 1 100 ---Μπλε Μαργαριτάρι 16 27994 1 100 ---Ματωμένο Μαργαριτάρι 17 71129 1 100 ---Νύχι δράκου 18 71123 1 100 ---Λέπι δράκου 19 12260 1 80 ---Μάσκα τρόμου+0 20 12280 1 90 ---Κράνος πολεμιστή+0 21 12390 1 80 ---Κουκούλα Ορκ+0 22 12400 1 90 ---Κουκούλα αράχνης+0 23 12530 1 80 ---Κράνος με κέρατα+0 24 12540 1 90 ---Μαγικό κράνος+0 25 12670 1 80 ---Καπέλο καρδινάλιου+0 26 12680 1 90 ---Καπέλο ψυχής+0 27 50301 1 99 ---Τέχνη Πολέμου του Sun Zi 28 50302 1 99 ---Τέχνη Πολέμου του Wu Ζi 29 50303 1 99 ---WeiLiao Zi 30 50304 1 90 ---Κυριαρχία των Συνδυασμών 31 50305 1 90 ---Αρχείο Κύριων Συνδυασμών 32 50314 1 99 ---Βιβλίο Μεταμορφώσεων 33 50315 1 99 ---Ανώτερες Μεταμορφώσεις 34 50316 1 99 ---Ανώτατες Μεταμορφώσεις 35 50600 1 99 ---Εγχειρίδιο Εξόρυξης 36 31007 1 90 ---Ηφαιστειακή γη 37 30019 1 90 ---Φλεγόμενη Χαίτη 38 70253 1 90 ---Πράσινο Βότανο 39 70254 1 90 ---Μωβ Βότανο 40 70251 1 90 ---Κόκκινο Βότανο 41 70252 1 90 ---Μπλε Βότανο 42 31076 1 90 ---Βότανα ήλιου 43 31089 1 90 ---Κύβος Λήθης 44 31069 1 90 ---Ουρί του Παραδείσου 45 85011 1 50 ---Μαστορική Κορδέλα (απλή) 46 50135 1 50 ---Κουτι με αξεσουαρ 47 50135 1 25 ---Κουτι με αξεσουαρ 48 50135 1 5 ---Κουτι με αξεσουαρ 49 50512 1 25 ---Λίθος Ουράνιου Τόξου 50 50512 1 25 ---Λίθος Ουράνιου Τόξου 51 71138 1 25 ---Epic mount 1 52 71139 1 25 ---Epic mount 2 53 30192 1 90 ---Γαλακτώδης χυμός 54 30194 1 90 ---Ρόπαλο Ορκ 55 50135 1 100 ---Κουτι με αξεσουαρ 56 50727 30 99 ---Ρόδο των Βουνών 57 50725 30 99 ---Πασχαλιά 58 50724 30 99 ---Σελινόριζα 59 50722 30 99 ---Καμπανούλα 60 50723 30 99 ---Άνθος Μανόλιας 61 50728 30 99 ---Μουριά 62 50721 30 99 ---Άνθος Ροδακινιάς 63 50726 30 99 ---Μανιτάρι Τούε 64 71015 1 90 ---Δαχτυλίδι Εμπειρίας 65 71016 1 90 ---Γάντια του Κλέφτη 66 27992 1 100 ---Άσπρο Μαργαριτάρι 67 27993 1 100 ---Μπλε Μαργαριτάρι 68 27994 1 100 ---Ματωμένο Μαργαριτάρι 69 71129 1 100 ---Νύχι δράκου 70 71123 1 100 ---Λέπι δράκου 71 12260 1 80 ---Μάσκα τρόμου+0 72 12280 1 90 ---Κράνος πολεμιστή+0 73 12390 1 80 ---Κουκούλα Ορκ+0 74 12400 1 90 ---Κουκούλα αράχνης+0 75 12530 1 80 ---Κράνος με κέρατα+0 76 12540 1 90 ---Μαγικό κράνος+0 77 12670 1 80 ---Καπέλο καρδινάλιου+0 78 12680 1 90 ---Καπέλο ψυχής+0 79 50301 1 99 ---Τέχνη Πολέμου του Sun Zi 80 50302 1 99 ---Τέχνη Πολέμου του Wu Ζi 81 50303 1 99 ---WeiLiao Zi 82 50304 1 90 ---Κυριαρχία των Συνδυασμών 83 50305 1 90 ---Αρχείο Κύριων Συνδυασμών 84 50314 1 99 ---Βιβλίο Μεταμορφώσεων 85 50315 1 99 ---Ανώτερες Μεταμορφώσεις 86 50316 1 99 ---Ανώτατες Μεταμορφώσεις 87 50600 1 99 ---Εγχειρίδιο Εξόρυξης 88 31007 1 90 ---Ηφαιστειακή γη 89 30019 1 90 ---Φλεγόμενη Χαίτη 90 70253 1 90 ---Πράσινο Βότανο 91 70254 1 90 ---Μωβ Βότανο 92 70251 1 90 ---Κόκκινο Βότανο 93 70252 1 90 ---Μπλε Βότανο 94 31076 1 90 ---Βότανα ήλιου 95 31089 1 90 ---Κύβος Λήθης 96 31069 1 90 ---Ουρί του Παραδείσου 97 85011 1 50 ---Μαστορική Κορδέλα (απλή) 98 50135 1 50 ---Κουτι με αξεσουαρ 99 50135 1 25 ---Κουτι με αξεσουαρ 100 50135 1 5 ---Κουτι με αξεσουαρ 101 50512 1 25 ---Λίθος Ουράνιου Τόξου 102 50512 1 25 ---Λίθος Ουράνιου Τόξου 103 71138 1 25 ---Epic mount 1 104 71139 1 25 ---Epic mount 2 105 31007 1 90 ---Ηφαιστειακή γη 106 30019 1 90 ---Φλεγόμενη Χαίτη 107 70253 1 90 ---Πράσινο Βότανο 108 70254 1 90 ---Μωβ Βότανο 109 70251 1 90 ---Κόκκινο Βότανο 110 70252 1 90 ---Μπλε Βότανο 111 31076 1 90 ---Βότανα ήλιου 112 31089 1 90 ---Κύβος Λήθης 113 31069 1 90 ---Ουρί του Παραδείσου }
If someone know the solution plese tell me ty
-
Hello im Looking for profsional to fix all my server SEQUENCE mismatch and Packet mismatch send messege here on devs
-
Hello. some players are losing yang on my server after teleport.. i search syslog and sysser but nothing related on this found... maybe someone knows why is this happening? thanks!
-
12 minutes ago, Optimus said:
check if you have column passlost_token
Yeah i didn't have it now its working perfect thanks bro
Looking for a developer to create a few new packets
in Paid Support / Searching / Recruiting
Posted · Edited by Metin2 Dev
Core X - External 2 Internal
Everything related to real time packets trade have that thing(ping/pong) as the metin source too.