-
Posts
258 -
Joined
-
Last visited
-
Days Won
4 -
Feedback
0%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Posts posted by [007]DawisHU
-
-
On 4/1/2019 at 4:52 AM, Tallywa said:
Hello, what is the fix
This is the fix ( Now tested)
UpgradeitemSpoiler#if defined DENIE_EVERY_INSERT_TO_SPECIAL_STORAGE
if (DestCell.window_type == UPGRADE_INVENTORY)
if (!item->IsUpgradeItem())
return false;
#endif
BookItemSpoiler#if defined DENIE_EVERY_INSERT_TO_SPECIAL_STORAGE
if (DestCell.window_type == BOOK_INVENTORY)
if (!item->IsBook())
return false;
#endif
StoneItem
Spoiler#if defined DENIE_EVERY_INSERT_TO_SPECIAL_STORAGE
if (DestCell.window_type == STONE_INVENTORY)
if (!item->IsStone())
return false;
#endif
ChestItemSpoiler#if defined DENIE_EVERY_INSERT_TO_SPECIAL_STORAGE
if (DestCell.window_type == CHEST_INVENTORY)
if (!item->IsChest())
return false;
#endif
Don't forget to define it
(Char_item.cpp -> CHARACTER::MoveItem func)
Enjoy
If helped, Just drop LIKE to this. -
Hi
SpoilerJust type this in the browser :
Spoilermetin2.download
after, type this :
Spoiler"maze"
-
Hi,
Yes it is avaliable (Check by yourself)
Spawn the mob :
from 11000 to 11117 and see, the NPC will attack each other. -
hi.
I have a suggestion.
But first i wanna see your char.cpp file.
Can u show me? -
Hi.
Maybe this one.
Spoiler -
Hi, From @ Rakancito Premium offline shop +- @ Mali shop search system combination
-
-
My repli was deleted??? for why??
Hi @Trial
BIG THANK for share it.
I have a Premium Offline Shop by @ Rakancito.
But sadly this system is total bugged,and have a lot core crash.
Finally fixed. Thank again!
-
Hi guyz and @ Rakancito !
I have some system from you, Rakancito.
But first system is total bugged from you, i start developing and rewritting the whole bugged code.
Shop is can't reupdate itself when server closed/restarted, problem start in char.cpp ->
void CHARACTER::LoadPremiumPrivateShop(int iItemCount, TPlayerItem* pItems) function.
And in db side, the example ( your files ) totally useless for me.
Example:
your code :
Spoiler#ifdef ENABLE_PREMIUM_PRIVATE_SHOP
if(pi->bIsPrivateShop)
{
snprintf(szQuery, sizeof(szQuery),
"INSERT INTO item%s (id, owner_id, window, pos, vnum, count, socket0, socket1, socket2) "
"VALUES(%u, %u, '%s', %d, %u, %u, %u, %u, %u)",
GetTablePostfix(),
GainItemID(),
pi->player_id,
pi->ip[0] == 0 ? "PRIVATE_SHOP" : "PRIVATE_SHOP",
iPos,
pItemAward->dwVnum, pItemAward->dwCount, pItemAward->dwSocket0, pItemAward->dwSocket1, dwSocket2);
}
........My code :
Spoilersnprintf(szQuery, sizeof(szQuery),
"INSERT INTO item%s (id, owner_id, window, pos, vnum, count, socket0, socket1, socket2) "
"VALUES(%u, %u, '%s', %d, %u, %u, %u, %u, %u)",
GetTablePostfix(),
GainItemID(),
#ifdef ENABLE_PREMIUM_PRIVATE_SHOP
pi->ip[0] == 2 ? pi->player_id :
#endif
pi->account_id,
#ifdef ENABLE_PREMIUM_PRIVATE_SHOP
//pi->bIsPrivateShop == true ? "PRIVATE_SHOP" : pi->ip[0] == 0 ? "SAFEBOX" : "MALL",
pi->ip[0] == 2 ? "PRIVATE_SHOP" : pi->ip[0] == 0 ? "SAFEBOX" : "MALL",
#else
pi->ip[0] == 0 ? "SAFEBOX" : "MALL",
#endif
iPos,
pItemAward->dwVnum, pItemAward->dwCount, pItemAward->dwSocket0, pItemAward->dwSocket1, dwSocket2);
}
No need useless + lines just work smart
if i fixed the items load, and other things in shop, and need this, i will paste it to here.
Excuse me for bad eng.
Best regard !
#Update
Finally fixed
- 1
- 1
-
Hi, nice thank for release.
But is this system have update problem in python.
When you switching channel, under minimap not refreshed.
(Reference SF by TMP4)
if somebody want this "little text" update, just writte
Sry for bad eng
-
Hi.
You are need source for it.
Dump_proto/srcSpoilerItemCSVReader.cpp
Search:
int get_Item_WearFlag_Value(string inputString)In this func.:
"WEAR_RING2",
after add:
"WEAR_RING3",
Looks like this:
string arWearrFlag[] = {
"WEAR_BODY",
"WEAR_HEAD",
"WEAR_FOOTS",
"WEAR_WRIST",
"WEAR_WEAPON",
"WEAR_NECK",
"WEAR_EAR",
"WEAR_SHIELD",
"WEAR_UNIQUE",
"WEAR_ARROW",
"WEAR_HAIR",
"WEAR_ABILITY",
"WEAR_COSTUME_BODY",
"WEAR_COSTUME_HAIR",
#ifdef __SASH_SYSTEM__
"WEAR_COSTUME_SASH",
#endif
#ifdef __WING_SYSTEM__
"WEAR_COSTUME_WING",
#endif
#ifdef __COSTUME_WEAPON_SYSTEM__
"WEAR_COSTUME_WEAPON",
#endif
"WEAR_RING1",
"WEAR_RING2",
"WEAR_RING3",
"WEAR_BELT"
};
Szerver SRC/ Common
SpoilerLength.h
Search EWearPosition enums:
After WEAR_RING2, add:
WEAR_RING3,
Looks like:
enum EWearPositions
{
WEAR_BODY,
WEAR_HEAD,
WEAR_FOOTS,
WEAR_WRIST,
WEAR_WEAPON,
WEAR_NECK,
WEAR_EAR,
WEAR_UNIQUE1,
WEAR_UNIQUE2,
WEAR_ARROW,
WEAR_SHIELD,
WEAR_ABILITY1,
WEAR_ABILITY2,
WEAR_ABILITY3,
WEAR_ABILITY4,
WEAR_ABILITY5,
WEAR_ABILITY6,
WEAR_ABILITY7,
WEAR_ABILITY8,
WEAR_COSTUME_BODY,
WEAR_COSTUME_HAIR,
#ifdef __SASH_SYSTEM__
WEAR_COSTUME_SASH,
#endif
#ifdef __WING_SYSTEM__
WEAR_COSTUME_WING,
#endif
#ifdef __COSTUME_WEAPON_SYSTEM__
WEAR_COSTUME_WEAPON,
#endif
WEAR_RING1,
WEAR_RING2,
WEAR_RING3,
WEAR_BELT,WEAR_MAX = 32 //
};
Szerver/DB/SRC
SpoilerProtoReader.cpp
Search:
int get_Item_WearFlag_Value(string inputString)In this func.:
"WEAR_RING2",
after add:
"WEAR_RING3",
Looks like this:
string arWearrFlag[] = {
"WEAR_BODY",
"WEAR_HEAD",
"WEAR_FOOTS",
"WEAR_WRIST",
"WEAR_WEAPON",
"WEAR_NECK",
"WEAR_EAR",
"WEAR_SHIELD",
"WEAR_UNIQUE",
"WEAR_ARROW",
"WEAR_HAIR",
"WEAR_ABILITY",
"WEAR_COSTUME_BODY",
"WEAR_COSTUME_HAIR",
#ifdef __SASH_SYSTEM__
"WEAR_COSTUME_SASH",
#endif
#ifdef __WING_SYSTEM__
"WEAR_COSTUME_WING",
#endif
#ifdef __COSTUME_WEAPON_SYSTEM__
"WEAR_COSTUME_WEAPON",
#endif
"WEAR_RING1",
"WEAR_RING2",
"WEAR_RING3",
"WEAR_BELT"
};
Szerver/GAME/SRC
Spoileritem.cpp
search:
int CItem::FindEquipCell(LPCHARACTER ch, int iCandidateCell)
in this func:
in this" else if (GetType() == ITEM_RING)"
change like this:
if (ch->GetWear(WEAR_RING1) && ch->GetWear(WEAR_RING2))
return WEAR_RING3;
else if (ch->GetWear(WEAR_RING1) && ch->GetWear(WEAR_RING3))
return WEAR_RING2;
else if (ch->GetWear(WEAR_RING2) && ch->GetWear(WEAR_RING3))
return WEAR_RING1;
Client/userintergface
SpoilerGameType.h
Search #ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
In this :
const DWORD c_New_Equipment_Ring2 = c_New_Equipment_Start + 1;
after add this:
const DWORD c_New_Equipment_Ring3 = c_New_Equipment_Start + 2;
Looks like:
#ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
const DWORD c_New_Equipment_Start = c_Costume_Slot_End;
const DWORD c_New_Equipment_Count = 3;
const DWORD c_New_Equipment_Ring1 = c_New_Equipment_Start + 0;
const DWORD c_New_Equipment_Ring2 = c_New_Equipment_Start + 1;
const DWORD c_New_Equipment_Ring3 = c_New_Equipment_Start + 2;
const DWORD c_New_Equipment_Belt = c_New_Equipment_Start + 3;
const DWORD c_Equipment_Slot_Count = 4;
const DWORD c_New_Equipment_Slot_End = c_New_Equipment_Start + c_Equipment_Slot_Count;
#endifSpoilerPythonItemModule.cpp
search #ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
and
PyModule_AddIntConstant(poModule, "EQUIPMENT_RING2", c_New_Equipment_Ring2);
after add:
PyModule_AddIntConstant(poModule, "EQUIPMENT_RING3", c_New_Equipment_Ring3);
looks like:
#ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
PyModule_AddIntConstant(poModule, "EQUIPMENT_RING1", c_New_Equipment_Ring1);
PyModule_AddIntConstant(poModule, "EQUIPMENT_RING2", c_New_Equipment_Ring2);
PyModule_AddIntConstant(poModule, "EQUIPMENT_RING3", c_New_Equipment_Ring3);
PyModule_AddIntConstant(poModule, "EQUIPMENT_BELT", c_New_Equipment_Belt);
#endif
It is just quick searching in source, maybe i forget something?
(Don't forget to add in python too)
Sorry for my bad english!
-
Hi.
If u want from config (Player can enable it)
original:
Metin2.cfg ->SHADOW_LEVEL number
it is enum:
SHADOW_NONE = 0
SHADOW_GROUND = 1
SHADOW_GROUND_AND_SOLO = 2
SHADOW_ALL = 3
SHADOW_ALL_HIGH = 4
SHADOW_ALL_MAX = 5
if u want to disable in source, go to :
UserInterface/PythonBackground.cpp
In this file search:
bool CPythonBackground::SetShadowLevel(int eLevel)
{
if (!m_pkMap)
return false;if (m_eShadowLevel == eLevel)
return true;CMapOutdoor& rkMap = GetMapOutdoorRef();
After add this:
eLevel = 0;
looks like:
bool CPythonBackground::SetShadowLevel(int eLevel)
{
if (!m_pkMap)
return false;if (m_eShadowLevel == eLevel)
return true;CMapOutdoor& rkMap = GetMapOutdoorRef();
eLevel = SHADOW_NONE;
m_eShadowLevel = eLevel;
switch (m_eShadowLevel)
Excuse me for bad english.- 1
-
Huh!?
I tested it, and it is work perfectly!!!!!!
Image
- 1
-
Spoiler
Hi.
Possible..., try this.
UserInterFace/InstanceBase.cpp
Search this :
void CInstanceBase::MovementProcess()
In this void search this:
if (__IsInDustRange())
Upper add it:
if (IsAffect(AFFECT_EUNHYEONG) || IsAffect(AFFECT_INVISIBILITY))
return;
I don't tested.
If work, this- 1
-
Inprogress........
Thank you!
- 2
-
Are you sure? hidden?
From virgin source, if not same, the hidden user name are found
DB side,
QuoteQuotemain.cpp
Search:
int Start()
In this , search:
if (CConfig::instance().GetValue("SQL_PLAYER", line, 256))
Original looks like:
Quoteif (!CDBManager::instance().Connect(SQL_PLAYER, "localhost", 0, "player", "mt2", "mt2!@#"))
{
if (CConfig::instance().GetValue("SQL_PLAYER", line, 256))
{
sscanf(line, " %s %s %s %s %d ", szAddr, szDB, szUser, szPassword, &iPort);
sys_log(0, "connecting to MySQL server (player)");int iRetry = 5;
do
{
if (CDBManager::instance().Connect(SQL_PLAYER, szAddr, iPort, szDB, szUser, szPassword))
{
sys_log(0, " OK");
break;
}sys_log(0, " failed, retrying in 5 seconds");
fprintf(stderr, " failed, retrying in 5 seconds");
sleep(5);
} while (iRetry--);
//fprintf(stderr, "Success PLAYER\n");
SetPlayerDBName(szDB);
}
else
{
sys_err("SQL_PLAYER not configured");
return false;
}
}Next is:
if (CConfig::instance().GetValue("SQL_ACCOUNT", line, 256))
Original looks like:
Quoteif (CConfig::instance().GetValue("SQL_ACCOUNT", line, 256))
{
sscanf(line, " %s %s %s %s %d ", szAddr, szDB, szUser, szPassword, &iPort);
sys_log(0, "connecting to MySQL server (account)");int iRetry = 5;
do
{
if (CDBManager::instance().Connect(SQL_ACCOUNT, szAddr, iPort, szDB, szUser, szPassword))
{
sys_log(0, " OK");
break;
}sys_log(0, " failed, retrying in 5 seconds");
fprintf(stderr, " failed, retrying in 5 seconds");
sleep(5);
} while (iRetry--);
fprintf(stderr, "Success ACCOUNT\n");
}
else
{
sys_err("SQL_ACCOUNT not configured");
return false;
}Next is:
if (CConfig::instance().GetValue("SQL_COMMON", line, 256))
Original looks like:
Quoteif (CConfig::instance().GetValue("SQL_COMMON", line, 256))
{
sscanf(line, " %s %s %s %s %d ", szAddr, szDB, szUser, szPassword, &iPort);
sys_log(0, "connecting to MySQL server (common)");int iRetry = 5;
do
{
if (CDBManager::instance().Connect(SQL_COMMON, szAddr, iPort, szDB, szUser, szPassword))
{
sys_log(0, " OK");
break;
}sys_log(0, " failed, retrying in 5 seconds");
fprintf(stderr, " failed, retrying in 5 seconds");
sleep(5);
} while (iRetry--);
fprintf(stderr, "Success COMMON\n");
}
else
{
sys_err("SQL_COMMON not configured");
return false;
}Next is:
if (CConfig::instance().GetValue("SQL_HOTBACKUP", line, 256))
Original looks like :
Quoteif (CConfig::instance().GetValue("SQL_HOTBACKUP", line, 256))
{
sscanf(line, " %s %s %s %s %d ", szAddr, szDB, szUser, szPassword, &iPort);
sys_log(0, "connecting to MySQL server (hotbackup)");int iRetry = 5;
do
{
if (CDBManager::instance().Connect(SQL_HOTBACKUP, szAddr, iPort, szDB, szUser, szPassword))
{
sys_log(0, " OK");
break;
}sys_log(0, " failed, retrying in 5 seconds");
fprintf(stderr, " failed, retrying in 5 seconds");
sleep(5);
}
while (iRetry--);fprintf(stderr, "Success HOTBACKUP\n");
}
else
{
sys_err("SQL_HOTBACKUP not configured");
return false;
}
Game side:
QuoteConfig.cpp
Search this:
void config_init(const string& st_localeServiceName)
in this void, search this:
TOKEN("player_sql")
Original looks like:
QuoteTOKEN("player_sql")
{
const char * line = two_arguments(value_string, db_host[0], sizeof(db_host[0]), db_user[0], sizeof(db_user[0]));
line = two_arguments(line, db_pwd[0], sizeof(db_pwd[0]), db_db[0], sizeof(db_db[0]));if (NULL != line[0])
{
char buf[256];
one_argument(line, buf, sizeof(buf));
str_to_number(mysql_db_port[0], buf);
}if (!*db_host[0] || !*db_user[0] || !*db_pwd[0] || !*db_db[0])
{
fprintf(stderr, "PLAYER_SQL syntax: logsql <host user password db>\n");
exit(1);
}char buf[1024];
snprintf(buf, sizeof(buf), "PLAYER_SQL: %s %s %s %s %d", db_host[0], db_user[0], db_pwd[0], db_db[0], mysql_db_port[0]);
isPlayerSQL = true;
continue;
}Next is:
TOKEN("common_sql")
Original looks like:
QuoteTOKEN("common_sql")
{
const char * line = two_arguments(value_string, db_host[1], sizeof(db_host[1]), db_user[1], sizeof(db_user[1]));
line = two_arguments(line, db_pwd[1], sizeof(db_pwd[1]), db_db[1], sizeof(db_db[1]));if (NULL != line[0])
{
char buf[256];
one_argument(line, buf, sizeof(buf));
str_to_number(mysql_db_port[1], buf);
}if (!*db_host[1] || !*db_user[1] || !*db_pwd[1] || !*db_db[1])
{
fprintf(stderr, "COMMON_SQL syntax: logsql <host user password db>\n");
exit(1);
}char buf[1024];
snprintf(buf, sizeof(buf), "COMMON_SQL: %s %s %s %s %d", db_host[1], db_user[1], db_pwd[1], db_db[1], mysql_db_port[1]);
isCommonSQL = true;
continue;
}Next is:
TOKEN("log_sql")
Original looks like:
QuoteTOKEN("log_sql")
{
const char * line = two_arguments(value_string, log_host, sizeof(log_host), log_user, sizeof(log_user));
line = two_arguments(line, log_pwd, sizeof(log_pwd), log_db, sizeof(log_db));if (NULL != line[0])
{
char buf[256];
one_argument(line, buf, sizeof(buf));
str_to_number(log_port, buf);
}if (!*log_host || !*log_user || !*log_pwd || !*log_db)
{
fprintf(stderr, "LOG_SQL syntax: logsql <host user password db>\n");
exit(1);
}char buf[1024];
snprintf(buf, sizeof(buf), "LOG_SQL: %s %s %s %s %d", log_host, log_user, log_pwd, log_db, log_port);
continue;
}
And check last one:
if (!isPlayerSQL)
{
puts("LOAD_PLAYER_SQL_INFO_FAILURE:");
puts("");
puts("CONFIG:");
puts("------------------------------------------------");
puts("PLAYER_SQL: HOST USER PASSWORD DATABASE");
puts("");
exit(1);
}
after this :
AccountDB::instance().Connect(db_host[1], mysql_db_port[1], db_user[1], db_pwd[1], db_db[1]);
these things is same, with originals? -
Hi.
After deleting from tables.
You are restarted mysql server on freebsd?
If no, use this command.
Quote1. /usr/local/etc/rc.d/mysql-server stop
2. /usr/local/etc/rc.d/mysql-server start -
Maybe tracelog every moving ?
Maybe some values return as false;
But not implement logbox, and silently closing the client.
What you modified? Remember back. -
Hmm, looks like worked. Mark this questions as solved.
-
Well.
Here you goSpoilerIn my chase, this map insert looks like:
Spoilerhttps://metin2.download/picture/f6XXrMNyNyiMhpJp96W4HcnwrG5r3Zw0/.png
Adatbázis -> DB
Patch szerver -> Patch server
Beléptető rendszer -> Auth
Csatorna 1~ 9 and 99 -> CH 1~4 - 9
Futamok -> Runs
Céhek -> Guild wars
i'lli created more cores for solo work...
Looks like Only Runs (Solo/Duo)
Only Guild wars...But your chase need to looks like:
SpoilerYou are need to put every CH*_1 except 99,
or u are have a special server side, like Jade dyna*** From CH1 -> login on to -> CH 10 -> CH 8 -> ch 999 -> reaching map (5-6x teleport = each core)
Put only one config file
CONFIG file -> MAP_ALLOW: end of line (space)and serverside map index.
Example:
/usr/servername/share/locale/language/map/
index (Open with notepad)
Metin2_Map_Milgyo -> 66
So Map_allow in ch1_1 CONFIG file:
looks like
MAP_ALLOW: 61 62 63 64 65 67 68 69 70 112 301 302 303 304 66 <- here
Now, go to:
/usr/servername/share/locale/language/map/mapname
Settings.txt open with notepad or other program...
You are found MapSize (Default is : 4 4 )
BasePosition (default is : 537600 512000)
Or your values.
NOW Memo THIS !!!!
Go to client side:
In my chase Atlasinfo is in root folder
Search metin2_map_milgyo or add new line looks like
metin2_map_milgyo(tab)537600(tab)51200(tab)4(tab)4
restart server.
Pack client -> try new map.
If error/warning still same, use Koordinator exe...
Usage:
Copy atlasinfo.txt next to *.exe file
Open Koordinator, replace your map, save and put back to the client.
Excuse me for horrible english...
- 1
- 1
-
Hi.
You have error in SQL syntax... (I think in invisible)
It is not joke, or not trolling.
Open your PHP file and use try Catch or
Top side of PHP insert it.
Quote<?PHP
error_reporting(9999);
?>
This is showing you(r) every errors. -
Hi, You have client side error.
Client tried loading map, but it failed...
Replace your client side coordinate with KingSora M2Coordinator, (i too using it). -
Hi, modified in mysql too?
-
Hi!
Tried start in visual studio ? (F5 in debug mod)
And enable, break when errors occured.
[buy]1000-3000euro buy werewolf and elf!
in Paid Support / Searching / Recruiting
Posted
+1