Jump to content

127.0.0.1

Banned
  • Posts

    51
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by 127.0.0.1

  1. 9 hours ago, Creo said:

    how to do that?

    cmd_emotion.cpp

    	if(IS_SET(emotion_types[i].flag, WOMAN_ONLY) && SEX_MALE == GET_SEX(ch))
    	{
    		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("여자만 할 수 있습니다."));
    		return;
    	}

    Delete this part of code.

    A question, perhaps you want to make a server for a gay community?  If you need help to remove female characters , open a topic,  i will try to help you.

     

    :lol: This question made my day

    • Love 1
  2. 11 minutes ago, DeYaN. said:

     

    Thx you Ramy , yes .. i didn`t use the mysql dump , all other steps i do.

    But i don`t think  the backup archive is the problem , i did that for 4 years and no problem by now... But ok,  i will try with mysql dump.

     

     

    What i see strange :

    In syserr database : " AsyncSQL: query failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (61) (query: UPDATE monarch set money=19085862 where empire=3 errno: 2002) "     - i dont have anything in player.monnarch  , what he want to update ?

    in sysser/syslog channel who are crash every time the FIRST error provide from the offlineshop " query: UPDATE offline_shop_npc SET time = 27540 WHERE owner_id = 282380 "

     

    Let me explain, let's say that you did a database backup with MySQL 5.5 ,  and now you have installed MySQL 5.6

    If you have the database on MySQL 5.5 and MySQL 5.6 installed, this means that you overwrite database .. This is not good.  All versions are different, and once this thing could cost you your entire database.  Each MySQL version has a different structure, more or less.

    Never overwrite folder var/db/mysql/mysql this folder should be never overwrite. :)

     

    No one can know what is in your server, follow the steps above .. and come back with an answer if this problem appears. I'm pretty sure the problem is only mysql server. And to make sure that the tables are optimized for MySQL version/MariaDB that you use to run this command too.   After installing the database as I said above, run this command.

    // Mysql 5.6
    mysql_upgrade
    // mysql 5.7
    mysql_upgrade -u root -p

    After reboot you server. Then wait for a new crash.

  3. Why always you guys overwrite MySQL database?   :facepalm: How hard can it be to install some mysql tables correct?

    Can't connect to local MySQL server through socket '/tmp/mysql.sock'

    This means that MySQL server is dead.

    I noticed that most people who work in Metin2 scene, just make a backup archive and unpack in /var/db/  :lol: This is fucking wrong guys.  You guys do not know to install a MySQL database and you want to make servers.

    I suggest you to do so:

    • Stop the metin server
    • Repair all the tables to make sure they are functional.
    • Create a .sql dump to all databases belonging to metin.
    • Stop the MySQL server. ( service mysql-server stop)
    • Delete the folder / var / db / mysql
    • Now start again mysql server
    • Now configure your mysql server again (The user " root " )
    GRANT ALL PRIVILEGES ON *.* TO root@"%"
    IDENTIFIED BY 'password' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    • Now install metin tables from .sql dump

     

     

    Regards, Ramy

    • Love 1
  4. On 14.12.2016 at 5:22 AM, Fleon said:

    So this basically just hide xteas and magic ?
    So the scriptkiddie cant easily get them to decrypt right?
    Thanks tho for the relase man, really appreciated.

     

    Yes , just hide (Not encryption). 

  5. 4 minutes ago, mk8 said:

    Thanks for the info! :) kinda weird, that the one who created the source didn't changed that much tbh.

    Now I get this error:

    Compile Database...
    compile Config.cpp
    In file included from Config.cpp:1:
    stdafx.h:19:25: error: unordered_map: No such file or directory
    stdafx.h:20:25: error: unordered_set: No such file or directory
    Makefile:56: recipe for target '.obj/Config.o' failed
    gmake: *** [.obj/Config.o] Error 1
     

    Damn, I forgot that they were added when it was implemented in C ++ 11.

    Then, make files as they were before. and run only gmake dep command.

    To work as I told you above, you compiler need to support C ++ 11.

    • Love 1
  6. 4 minutes ago, mk8 said:
    
    Compile Database...
    compile Config.cpp
    compile NetBase.cpp
    In file included from NetBase.cpp:4:
    ClientManager.h:5:35: error: boost/unordered_map.hpp: No such file or directory
    ClientManager.h:6:35: error: boost/unordered_set.hpp: No such file or directory
    In file included from NetBase.cpp:4:
    ClientManager.h:35: error: 'boost' has not been declared
    ClientManager.h:35: error: ISO C++ forbids declaration of 'unordered_map' with no type
    ClientManager.h:35: error: typedef name may not be a nested-name-specifier
    ClientManager.h:35: error: expected ';' before '<' token
    ClientManager.h:36: error: 'boost' has not been declared
    ClientManager.h:36: error: ISO C++ forbids declaration of 'unordered_map' with no type
    ClientManager.h:36: error: typedef name may not be a nested-name-specifier
    ClientManager.h:36: error: expected ';' before '<' token
    ClientManager.h:37: error: 'boost' has not been declared
    ClientManager.h:37: error: ISO C++ forbids declaration of 'unordered_set' with no type
    ClientManager.h:37: error: typedef name may not be a nested-name-specifier
    ClientManager.h:37: error: expected ';' before '<' token
    ClientManager.h:38: error: 'boost' has not been declared
    ClientManager.h:38: error: ISO C++ forbids declaration of 'unordered_map' with no type
    ClientManager.h:38: error: typedef name may not be a nested-name-specifier
    ClientManager.h:38: error: expected ';' before '<' token
    ClientManager.h:39: error: 'boost' has not been declared
    ClientManager.h:39: error: ISO C++ forbids declaration of 'unordered_map' with no type
    ClientManager.h:39: error: typedef name may not be a nested-name-specifier
    ClientManager.h:39: error: expected ';' before '<' token
    ClientManager.h:40: error: 'boost' has not been declared
    ClientManager.h:40: error: ISO C++ forbids declaration of 'unordered_map' with no type
    ClientManager.h:40: error: typedef name may not be a nested-name-specifier
    ClientManager.h:40: error: expected ';' before '<' token
    ClientManager.h:120: error: ISO C++ forbids declaration of 'TItemCacheSet' with no type
    ClientManager.h:120: error: expected ';' before '*' token
    ClientManager.h:397: error: 'boost' has not been declared
    ClientManager.h:397: error: ISO C++ forbids declaration of 'unordered_map' with no type
    ClientManager.h:397: error: typedef name may not be a nested-name-specifier
    ClientManager.h:397: error: expected ';' before '<' token
    ClientManager.h:398: error: 'TLoginDataByLoginKey' does not name a type
    ClientManager.h:401: error: 'boost' has not been declared
    ClientManager.h:401: error: ISO C++ forbids declaration of 'unordered_map' with no type
    ClientManager.h:401: error: typedef name may not be a nested-name-specifier
    ClientManager.h:401: error: expected ';' before '<' token
    ClientManager.h:402: error: 'TLoginDataByLogin' does not name a type
    ClientManager.h:405: error: 'boost' has not been declared
    ClientManager.h:405: error: ISO C++ forbids declaration of 'unordered_map' with no type
    ClientManager.h:405: error: typedef name may not be a nested-name-specifier
    ClientManager.h:405: error: expected ';' before '<' token
    ClientManager.h:406: error: 'TLoginDataByAID' does not name a type
    ClientManager.h:409: error: 'boost' has not been declared
    ClientManager.h:409: error: ISO C++ forbids declaration of 'unordered_map' with no type
    ClientManager.h:409: error: typedef name may not be a nested-name-specifier
    ClientManager.h:409: error: expected ';' before '<' token
    ClientManager.h:410: error: 'TLogonAccountMap' does not name a type
    ClientManager.h:440: error: 'TPlayerTableCacheMap' does not name a type
    ClientManager.h:442: error: 'TItemCacheMap' does not name a type
    ClientManager.h:443: error: 'TItemCacheSetPtrMap' does not name a type
    ClientManager.h:447: error: 'TItemPriceListCacheMap' does not name a type
    ClientManager.h:450: error: 'TChannelStatusMap' does not name a type
    ClientManager.h:519: error: 'boost' has not been declared
    ClientManager.h:519: error: ISO C++ forbids declaration of 'unordered_map' with no type
    ClientManager.h:519: error: typedef name may not be a nested-name-specifier
    ClientManager.h:519: error: expected ';' before '<' token
    ClientManager.h:520: error: 'TLogoutPlayerMap' does not name a type
    Makefile:56: recipe for target '.obj/NetBase.o' failed
    gmake: *** [.obj/NetBase.o] Error 1
    Build Done.

     

    Open db/src/stdafx.h and add :

    #include <unordered_map>
    #include <unordered_set>

    Then open ClientManager.h and replace all

    boost::unordered_map
    boost::unordered_set

    with

    std::unordered_map
    std::unordered_set

    Then go to db/src directory and run this command 

    gmake dep

     

    Then compile again :)

     

    Back intro the past ,  STL was too immature and bloated. But that was >10 years ago.  Now we should use STL where is possile , also STL is now much faster than boost :)

    • Metin2 Dev 1
  7. 10 minutes ago, ReFresh said:

    Hi guys,

    I want to ask you if the kraizy sources (mainline, novaline, etc.) are glitchy and what client these sources using?

    Thanks for answers!

    Sincerely,

    ReFresh

    I, personally I checked. All are identical, only a few functions are different, that are unimportant. You can use mainline_released ->mainline_relesed

  8. 16 minutes ago, inamata001 said:

    i have only 1 kingdom, how can i make 2? i add the line what is need in files from up answer, and when i press click on create caracter, my game self-exit

    Tell me you're joking.

     

    On 30.10.2014 at 1:24 AM, HellBoy said:

    Well imma do it for you how to make 1 kingdom for this dont need sv side just client since they wont be able to create more:

     

    first in " introempire.py seek for this

    
    	EMPIRE_DESCRIPTION_TEXT_FILE_NAME = {	
    		net.EMPIRE_A : uiScriptLocale.EMPIREDESC_A,
    		net.EMPIRE_B : uiScriptLocale.EMPIREDESC_B,
    		net.EMPIRE_C : uiScriptLocale.EMPIREDESC_C, }

    and remove the lines and keep the kingdom you want i will pick A [ RED ]

    
    	EMPIRE_DESCRIPTION_TEXT_FILE_NAME = {	
    		net.EMPIRE_A : uiScriptLocale.EMPIREDESC_A, }

    then seek for

    
    self.empireAreaCurAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 }
    self.empireAreaDestAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 }
    self.empireAreaFlagCurAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 }
    self.empireAreaFlagDestAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 }
    self.empireFlagCurAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 }
    self.empireFlagDestAlpha = { net.EMPIRE_A:0.0, net.EMPIRE_B:0.0, net.EMPIRE_C:0.0 }

    and replace with this

    
    self.empireAreaCurAlpha = { net.EMPIRE_A:0.0 }
    self.empireAreaDestAlpha = { net.EMPIRE_A:0.0 }
    self.empireAreaFlagCurAlpha = { net.EMPIRE_A:0.0 }
    self.empireAreaFlagDestAlpha = { net.EMPIRE_A:0.0 }
    self.empireFlagCurAlpha = { net.EMPIRE_A:0.0 }
    self.empireFlagDestAlpha = { net.EMPIRE_A:0.0 }

    then seek for this

    
    self.empireArea[net.EMPIRE_A]	= GetObject("EmpireArea_A")
    self.empireArea[net.EMPIRE_B]	= GetObject("EmpireArea_B")
    self.empireArea[net.EMPIRE_C]	= GetObject("EmpireArea_C")
    self.empireAreaFlag[net.EMPIRE_A]	= GetObject("EmpireAreaFlag_A")
    self.empireAreaFlag[net.EMPIRE_B]	= GetObject("EmpireAreaFlag_B")
    self.empireAreaFlag[net.EMPIRE_C]	= GetObject("EmpireAreaFlag_C")
    self.empireFlag[net.EMPIRE_A]	= GetObject("EmpireFlag_A")
    self.empireFlag[net.EMPIRE_B]	= GetObject("EmpireFlag_B")
    self.empireFlag[net.EMPIRE_C]	= GetObject("EmpireFlag_C")

    replace with this

    
    self.empireArea[net.EMPIRE_A]	= GetObject("EmpireArea_A")
    self.empireAreaFlag[net.EMPIRE_A]	= GetObject("EmpireAreaFlag_A")
    self.empireFlag[net.EMPIRE_A]	= GetObject("EmpireFlag_A")

    then seek for this

    
    def ClickLeftButton(self):
    		self.empireID-=1
    		if self.empireID<1:
    			self.empireID=3
    
    		self.OnSelectEmpire(self.empireID)
    
    def ClickRightButton(self):
    		self.empireID+=1
    		if self.empireID>3:
    			self.empireID=1

    replace with this

    
    def ClickLeftButton(self):
    		self.empireID-=1
    		if self.empireID<1:
    			self.empireID=1
    
    		self.OnSelectEmpire(self.empireID)
    
    def ClickRightButton(self):
    		self.empireID+=1
    		if self.empireID>1:
    			self.empireID=1

    then seek for this

    
    self.empireID=app.GetRandom(1, 3)

    and replace with this

    
    self.empireID=app.GetRandom(1, 1)

    that was with root now we goo to uiscript at " selectempirewindow.py "

     

    and we seek for this

    
    						## Empire Flag
    						{
    							"name" : "EmpireFlag_A",
    							"type" : "expanded_image",
    
    							"x" : 0,
    							"y" : 0,
    							"horizontal_align" : "center",
    							"vertical_align" : "center",
    
    							"image" : "d:/ymir work/ui/intro/empire/empireflag_a.sub"
    						},
    						{
    							"name" : "EmpireFlag_B",
    							"type" : "expanded_image",
    
    							"x" : 0,
    							"y" : 0,
    							"horizontal_align" : "center",
    							"vertical_align" : "center",
    
    							"image" : "d:/ymir work/ui/intro/empire/empireflag_b.sub"
    						},
    						{
    							"name" : "EmpireFlag_C",
    							"type" : "expanded_image",
    
    							"x" : 0,
    							"y" : 0,
    							"horizontal_align" : "center",
    							"vertical_align" : "center",
    
    							"image" : "d:/ymir work/ui/intro/empire/empireflag_c.sub"
    						},

    and we remove last 2 kingdoms should look this 

    
    ## Empire Flag
    						{
    							"name" : "EmpireFlag_A",
    							"type" : "expanded_image",
    
    							"x" : 0,
    							"y" : 0,
    							"horizontal_align" : "center",
    							"vertical_align" : "center",
    
    							"image" : "d:/ymir work/ui/intro/empire/empireflag_a.sub"
    						},

    watch it with the " } " or you will end up f****** it xD

     

    This will alow players to pick one of  the kingdoms the one you want so there is no need of any sv side modifications!

    Hope will work xD  i have 2 Kingdoms and work like a charm!

     

  9. 12 hours ago, Kunoji said:

    Thanks you man <3
    Now, i need answer for problem number 2.

    sysser: 

    1214 22:12:25664 :: CMapOutdoor::Load - LoadMonsterAreaInfo ERROR
     

    As I know, this function is used only in World Editor. It is a mistake for those at Ymir, because they did not put it with #ifdef WORLD_EDITOR

    You can ignore it, or you can delete from source this function. Or, if you really want to fix it. Create a file named monsterareainfo.txt intro each folder of evry map.

  10. My name is ramy, I'm a junior programmer with experience of about two years in (STL , boost .. and soo on ) I live Netherlands since 10 years, but i was born in USA :) Now I'll show you how you can protect your tea-keys against hackers. I love very much c ++ 11 / c ++ 17, so the codes will only work with Visual Studio 2013 or higher.

    I saw someone selling it, so I thought to give you something better, I think.

    I came to this forum because someone hired me to work on his server and he recommended me to come here if I need help, ever.

    Firstly include those two STL headers  intro EterPack.h

    #include <cstdint>
    #include <array>

    EterPack.h

    struct TeaKey
    {
    // Date: 01 . 12 . 2016
    // Author: Ramy overflow
    	TeaKey(std::array<DWORD, 4>src): data_(src), copy(src) {}
    
    	operator const std::uint8_t *()const
    	{
    		return reinterpret_cast<const std::uint8_t *>(data_.data());
    	}
    
    	operator const DWORD *()const
    	{
    		return data_.data();
    	}
    
    	operator DWORD *()const
    	{
    		return copy.data();
    	}
    
    private:
    	std::array<DWORD, 4>data_;
    	mutable std::array<DWORD, 4>copy;
    };

     

    EterPack.cpp

    const TeaKey &s_adwEterPackKey()
    {
    // Date: 01 . 12 . 2016
    // Author: Ramy overflow
    	static const TeaKey key
    	{
    		std::array < DWORD, 4 > {{
    				45129401UL,
    				92367215UL,
    				681285731UL,
    				1710201UL,
    			}
    		}
    	};
    	return key;
    }
    
    const TeaKey &s_adwEterPackSecurityKey()
    {
    // Date: 01 . 12 . 2016
    // Author: Ramy overflow
    	static const TeaKey key
    	{
    		std::array < DWORD, 4 > {{
    				78952482UL,
    				527348324UL,
    				1632942UL,
    				486274726UL,
    			}
    		}
    	};
    	return key;
    }

    And now search for all  s_adwEterPackKey / s_adwEterPackSecurityKey and replace with  s_adwEterPackKey() / s_adwEterPackSecurityKey() so just add an ()  because it's a function :)

     

    Sincerely , Ramy overfow :)

    • Love 3
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.