Jump to content

VegaS™

Forum Moderator
  • Posts

    656
  • Joined

  • Last visited

  • Days Won

    187
  • Feedback

    100%

Posts posted by VegaS™

  1. This feature already was there since beginning, but just for Japan.

    PythonSystem.cpp, just remove the preprocessor directive and set the bWindowed to true.

    This is the hidden content, please

    For the music just change the music_volume to 0.0f, you don't have to mute the voice volume.

    	m_Config.music_volume		= 1.0f;

    Also, maybe I'm wrong, but why you're doing this:

    Spoiler
    Quote
    
    
    
    
    		if (!stricmp(command, "WIDTH")) {
    			if(atoi(value) < 800)
    				m_Config.width = 800;
    			else
    				m_Config.width = atoi(value);
    		}
    		else if (!stricmp(command, "HEIGHT")) {
    			if (atoi(value) < 600)
    				m_Config.height = 600;
    			else
    				m_Config.height = atoi(value);
    		}

    When you can simply change:

    void CPythonSystem::SetDefaultConfig()
    {
    	[...]
    	m_Config.width				= 1024;
    	m_Config.height				= 768;
    }

    To:

    	m_Config.width				= 800;
    	m_Config.height				= 600;

     

    • Metin2 Dev 17
    • Think 1
    • Confused 2
    • Good 5
    • Love 10
  2. I've a question for you, wouldn't be better to add all of your resources into a single thread, instead of making unlimited threads for a simple resource? 

    Would be better for you to update it and for users to find many things faster.

    We can talk here, the topic isn't approved yet, just you and the staff can see the messages.

    • Metin2 Dev 2
    • Lmao 1
  3. On 6/20/2020 at 8:49 PM, Denis said:

    You are just wasting your time, he wont be able to do it.

    On 6/20/2020 at 9:00 PM, Denis said:

    Common, if he had some knowledge of these stuff he would be able to debug it by himself without asking for help. But since he posted such a simple bug im guessing he cant do the stuff you told him.

    On 6/21/2020 at 7:58 PM, Denis said:

    Gia tetoia bugs den tha ebena kan sto kopo na kano post, einai apta pio eukola fixes efoson kseris pos dulevoun ta system pou exis. Alla na fantasto auta pou exeis einai kapoio leaked version. Oso gia to clean, den einai apo tin stigmi pou exis auta ta bugs. Kali tixi

    On 6/21/2020 at 9:00 PM, Denis said:

    pia 2020 bug ?

    22 hours ago, Denis said:

    Asteri eisai bravo ekanes fix to 2020 bug ??

    22 hours ago, Denis said:

    ela vre pitsirko isixase mia plaka se kaname thimoses, an isoun toso kalos den tha zituses edo voithia ?.

    boris na pistevis oti thelis, den me kses apo xtes na les tetia pragmata gia mena, isos kseris ta sourgela tou ellinikou metin2 emena den me kses aha

    22 hours ago, Denis said:

    klew

    @Denis

    If you think that your reactions as a former staff, are fine just because this:

    • he's greek
    • he's using a public system
    • he doesn't know english
    • he's new on this forum
    • he isn't a 'dev' and don't know anything about coding

    then, you're the bad person, not him, go and solve your problems in other parts and let'me show you the rules.

    Edit: Apparently Denis didn't understand what I wanted to say with the "bad person, so he take it wrong. I apologize.

     

    Rules

    (1.1) Language

    The language in this board is english. If you want to post something in your own language always add an english translation. The only exception for this rule is this section: Private Servers

    (1.2) Behaviour

    Don't flame at other users. We want this board to be the best possible experience. You maybe want help and everybody started with no or little knowledge. So help and don't flame! Also we don't want to see any racism or sexism.

    (1.3) Spamming

    Do not spam in this board. Posting a topic or a question once is enough. If you don't get an answer maybe your question needs more description. Or nobody is able to help you there. Double post aswell as double threads will be punished with an infraction.

     

    @perfect

    ^+

    (2.2) Bumping

    Allowed bumping times: Q&A - 48 hours

    (2.5) Questions & Answers specific rules

    Don't modify your thread (or reply to it) to mark it solved, and not explain the solution to the issue.

     

    @Denis +2 infractions

    @perfect +3 infractions

     

    Topic closed.

    • Sad 1
    • Love 2
  4. On 6/6/2020 at 2:02 AM, CristianDragan said:

    I tried your method few minutes ago, and I get " need more than 1 value to unpack " at " (accountName, accountPassword) = content.split(':') ". Thank you in advance.

    Shouldn't be like (accountName, accountPassword) = content.split('Value1', 'Value2'') 

    This is the hidden content, please

    Fixed, the function didn't allowed you to login with the normal method, just with the saved account from acp.py, now will work both of them.

    • Metin2 Dev 15
    • Confused 1
    • Good 6
    • Love 12
  5. On 6/5/2020 at 5:48 PM, CristianDragan said:

    @VegaS™ 

    Hi! I have a small problem. Hope that you can help me.

    Everything works, but if I'm not selecting any account from the list and I use the login button instead of enter, I get https://pastebin.com/raw/XSv9k8Fz in syserr.

    intrologin.py: https://pastebin.com/kKuYbCJd

    Thank you!

    
        def __OnClickLoginAutoButton(self):
            file_object = open("LIB//acp.pyc", "r")
            credentials = file_object.readline()
            credentials = credentials.split(";")
            file_object.close()
            self.Connect("{}".format(credentials[0]), "{}".format(self.decode(self.__ReadSavedPassword(),credentials[1])))
            return

     

    Change the function __OnClickLoginAutoButton with:

    This is the hidden content, please

     

    • Metin2 Dev 18
    • Good 5
    • Love 21
  6. Quote

    (2.4) Content

    • No posting (whether to sell or give away for free) anything that involves cheating or stealing from people's clients or servers. 

      You got the information related about what programs you should use, but what you want is just to put users to unpack files from another client, we don't support this, don't try to fool people again, thanks.

      • Good 1
    • 24 minutes ago, Sevence™ said:

      Please, close this topic, fucking fraud. 

      The author have the report button, he can report it and give us proofs that's his system.

      We can't close a topic just because we see this:

      Quote

      uiSwitchbot.py line 14: import cPickle as pickle

      Until there's no report from the seller, we could consider this as a normal topic, how can we know that's a public system or a sale system?

      • component.py
      • game.py

      Search for:

      Spoiler
      
      	def __ProcessPreservedServerCommand(self):
      		def __WarBoard(self, input):
      			constInfo.wndWarBoard.Handle(input)
      				
      		def CanOpenWarBoard(self):
      			constInfo.CanOpen = 1
      			
      		def CantOpenWarBoard(self):
      			constInfo.CanOpen = 0
      		try:
      			command = net.GetPreservedServerCommand()
      			while command:
      				print " __ProcessPreservedServerCommand", command
      				self.serverCommander.Run(command)
      				command = net.GetPreservedServerCommand()
      		except RuntimeError, msg:
      			dbg.TraceError(msg)
      			return 0

      Replace with:

      This is the hidden content, please

       

      • Metin2 Dev 29
      • Smile Tear 1
      • Good 3
      • Love 13
    • Thanks for the remark, but I never used this command in game as a player, this should be active just for debug as GM's, no sense for players.

      About the fix, could be done directly from here too:

      File: cmd_general.cpp

      • costume

      Search for:

      				snprintf(buf, bufferSize, FN_point_string(attr.bType), attr.sValue);

      Replace it with:

      This is the hidden content, please

      • hair

      Search for:

      	offset = snprintf(buf, bufsiz, FN_point_string(aff->bApplyOn), aff->lApplyValue);

      Replace it with:

      	const char * cPointString = FN_point_string(aff->bApplyOn);
      	if (!*cPointString)
      		return false;
      
      	offset = snprintf(buf, bufsiz, cPointString, aff->lApplyValue);

       

      There's no sense for showing to a player 'UNK... 23%' since he don't know what it's..

      I think it's better just to ignore the type if doesn't exist and don't show it in the chat.

      If you really want to do something like this, you can add a sys_log as an error to see the bonus missing and add it into the function.

      • Metin2 Dev 19
      • Good 5
      • Love 37
    • Good idea, the part of GetCompareIndex could be improved for better customization, by that people can add easily new types/subtypes.

       

      Quote
      
      def SetCompareItem(self, itemVnum):
      	item.SelectItem(itemVnum)
      	if not self.CompareTooltip:
      		self.CompareTooltip = ItemToolTip()
      		self.CompareTooltip.IsCompare = True
      	self.CompareTooltip.Hide()
      	idx = item.GetCompareIndex()
      	if idx:
      		self.CompareTooltip.SetInventoryItem(idx, player.INVENTORY, False)
      		self.CompareTooltip.AutoAppendTextLine("{}Equipped".format("|cffADFF2F"))
      		self.CompareTooltip.ResizeToolTip()

       

      To:

       

      This is the hidden content, please

       

      Quote
      
      #if defined(__COMPARE_TOOLTIP__)
      PyObject* itemGetCompareIndex(PyObject* poSelf, PyObject* poArgs)
      {
      	CItemData* pItemData = CItemManager::Instance().GetSelectedItemDataPointer();
      	if (!pItemData)
      		return Py_BuildException("no selected item data");
      
      	DWORD idx = 0;
      	const BYTE Type = pItemData->GetType();
      	const BYTE SubType = pItemData->GetSubType();
      
      	if (Type == CItemData::ITEM_TYPE_ARMOR) {
      		switch (SubType) {
      		case CItemData::ARMOR_BODY:	idx = c_Equipment_Body; break;
      		case CItemData::ARMOR_HEAD:	idx = c_Equipment_Head; break;
      		case CItemData::ARMOR_SHIELD:	idx = c_Equipment_Shield; break;
      		case CItemData::ARMOR_WRIST:	idx = c_Equipment_Wrist; break;
      		case CItemData::ARMOR_FOOTS:	idx = c_Equipment_Shoes; break;
      		case CItemData::ARMOR_NECK:	idx = c_Equipment_Neck; break;
      		case CItemData::ARMOR_EAR:	idx = c_Equipment_Ear; break;
      		}
      	}
      	else if (Type == CItemData::ITEM_TYPE_WEAPON) {
      		idx = c_Equipment_Weapon;
      	}
      	else if (Type == CItemData::ITEM_TYPE_COSTUME) {
      		switch (SubType) {
      		case CItemData::COSTUME_BODY:	idx = c_Costume_Slot_Body; break;
      		case CItemData::COSTUME_HAIR:	idx = c_Costume_Slot_Hair; break;
      #if defined(ENABLE_SASH_SYSTEM)
      		case CItemData::COSTUME_SASH:	idx = c_Costume_Slot_Sash; break;
      #endif
      		}
      	}
      #if defined(ENABLE_NEW_EQUIPMENT_SYSTEM)
      	else if (Type == CItemData::ITEM_TYPE_BELT) {
      		idx = c_Equipment_Belt;
      	}
      #endif
      
      	return Py_BuildValue("i", idx);
      }
      #endif

       

      To:

       

      This is the hidden content, please

       

      • Metin2 Dev 21
      • Eyes 1
      • Think 1
      • Good 9
      • Love 1
      • Love 26
    • Search for:

      		if (!kTextFileLoader.SplitLineByTab(i, &kTokenVector))
      			continue;

      Add after:

      		if (kTokenVector.size() != MONSTER_CARD_MAX_NUM)
      		{
      			Tracef("CPythonPlayer::LoadMonsterCard(%s) - Strange Token Count [Line:%d / TokenCount:%d]\n", c_szFileName, i, kTokenVector.size());
      			continue;
      		}
      		
      		for (auto & token : kTokenVector)
      			token.erase(std::remove_if(token.begin(), token.end(), isspace), token.end());

       

      Search for:

      		int pkGroup = std::stoi(kTokenVector[MONSTER_CARD_GROUP]);
      		int pkIndex = std::stoi(kTokenVector[MONSTER_CARD_INDEX]);
      		int pkVnum = std::stoi(kTokenVector[MONSTER_CARD_VNUM]);
      		int pkType = std::stoi(kTokenVector[MONSTER_CARD_TYPE]);
      		int pkMap1 = std::stoi(kTokenVector[MONSTER_CARD_MAP1]);
      		pkMap2 = std::stoi(kTokenVector[MONSTER_CARD_MAP2]);
      		pkMap3 = std::stoi(kTokenVector[MONSTER_CARD_MAP3]);

      Replace with:

      This is the hidden content, please

      And change # to ## from .txt file or delete them.

      • Metin2 Dev 2
      • Good 1
      • Love 3
    • Quote

      Edited 1 hour ago by xHeaven
      fixed speed hack detection, added simpler python solution and fast cloud fix (see edit history)

      There's no 'fast cloud' related about increasing fps.

      So, are useless those modifications and if we talk about fix clipping what @Nirray release, that's another subject.

      About speed hack fix detection you didn't mentioned the source of fix. ?

      • Love 2
    • On 4/9/2020 at 2:40 AM, xHeaven said:
      Spoiler

      Client\pack\root\ui.py

       

      Find:

      def SetDelay(self, delay):

      
      
      def SetDelay(self, delay):

       

      Replace with:

      def SetDelay(self, delay = 13):

      
      
      def SetDelay(self, delay = 13):

       

      If you did this tutorial before, then in Client\pack\root\uitaskbar.py replace all .SetDelay(13) with .SetDelay().

      If you did not, then simply write .SetDelay() instead of .SetDelay(13).

       

      Btw, instead of adding a .SetDelay() to all objects, you could do do a simple change. for all visual ani_image from screen.

      • root/ui.py

      Search for:

      		if True == value.has_key("delay"):
      			window.SetDelay(value["delay"])

      Replace with:

      This is the hidden content, please

      So, you don't have to any part of python from tutorial, just this.

       

      • Metin2 Dev 101
      • Eyes 2
      • Angry 3
      • Sad 1
      • Smile Tear 2
      • Think 1
      • Confused 1
      • Scream 2
      • Good 34
      • Love 4
      • Love 85
    ×
    ×
    • 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.