Jump to content

Draveniou1

Active Member
  • Posts

    252
  • Joined

  • Last visited

  • Days Won

    2
  • Feedback

    100%

Posts posted by Draveniou1

  1. 8 minutes ago, PetePeter said:

    Or maybe something like that instead no ?

     

    void CGuild::AddComment(LPCHARACTER ch, const std::string& str)
    {
        if (str.length() > GUILD_COMMENT_MAX_LEN || str.length() == 0) // Added string null verification
            return;
    
        char text[GUILD_COMMENT_MAX_LEN * 2 + 1];
        DBManager::instance().EscapeString(text, sizeof(text), str.c_str(), str.length());
    
        // Fetch the number of existing comments and delete the oldest one if there are 12 comments.
        DBManager::instance().FuncQuery(std::bind(&CGuild::HandleCommentCount, this, ch, text, std::placeholders::_1),
            "SELECT COUNT(*), MIN(time) FROM guild_comment%s WHERE guild_id = %u",
            get_table_postfix(), m_data.guild_id);
    }
    
    void CGuild::HandleCommentCount(LPCHARACTER ch, const char* text, MYSQL_RES* result)
    {
        MYSQL_ROW row = mysql_fetch_row(result);
    
        if (!row)
            return;
    
        int commentCount = 0;
        sscanf(row[0], "%d", &commentCount);
    
        if (commentCount >= 12) {
            // Delete the oldest comment
            DBManager::instance().Query("DELETE FROM guild_comment%s WHERE guild_id = %u AND time = '%s'",
                get_table_postfix(), m_data.guild_id, row[1]);
        }
    
        // Insert the new comment
        DBManager::instance().FuncAfterQuery(void_bind(std::bind1st(std::mem_fun(&CGuild::RefreshCommentForce), this), ch->GetPlayerID()),
            "INSERT INTO guild_comment%s(guild_id, name, notice, content, time) VALUES(%u, '%s', %d, '%s', NOW())",
            get_table_postfix(), m_data.guild_id, ch->GetName(), (text[0] == '!') ? 1 : 0, text);
    }

     

    I had thought about it too  

    the problem is that mysql will always answer the player's queries 

    and does not eat kick from the game

    it could be with mine version 1 

    better there should be a count as they mentioned @ Abel(Tiger) and @ TMP4

    • kekw 1
  2. 5 minutes ago, TMP4 said:

    With your "fix" abusers got +1 query to spam, even if it's just a delete query.

    Fixing the possibility of the flood and delete old unnecessary comments is 2 seperate things to do. @ Abel(Tiger) did the first, you did the second.

    And yes, Abel is right because you're not checking any permission, if someone sends a packet on his own (cheat), he can delete other's messages without the required guild permission.

    Also you did hella lot uneceserry work. If you want to delete older comments, why don't you just do it after the insert? Why do you need a seperate packet?

    -With your "fix" abusers got +1 query to spam, even if it's just a delete query.

    - We can easy add check query 

    -------------

    -Fixing the possibility of the flood and delete old unnecessary comments is 2 seperate things to do. @ Abel(Tiger) did the first, you did the second.

    - We can easily in the 2 failed attempts the player leaves the server

     

    ---------------

     

    -And yes, Abel is right because you're not checking any permission, if someone sends a packet on his own (cheat), he can delete other's messages without the required guild permission.

    you can easily check the player I will try to do them this

    • kekw 1
  3. 15 minutes ago, Abel(Tiger) said:

    ?

    1. The fix I posted is done because you can spam the database with queries.
    2. With your "fix" you can delete all coments from the guild with no permissions :)))
     

    They are automatically deleted  after 12 message you check

  4.  

    .png

     

    This is the hidden content, please

    Alternative download links →

    This is the hidden content, please
    or
    This is the hidden content, please
     or 
    This is the hidden content, please

     

    Changelogs

    Version 3.

    • Fix quest pick in quest 
    • Fix delayed desc kick
    • Now it works stable without problems in version 3

    Version 2. 

    • Now, the players cannot delete messange other people's 
    • In 4 failures the server kick you

    @ TMP4 @ Abel(Tiger)  

    Version 1.

    • Normal fix guild comment
    • Metin2 Dev 50
    • kekw 1
    • Lmao 1
    • Good 8
    • Love 18
  5. 1 hour ago, BYB said:

    With all honesty i am more familiar with python than source i can read a source but can write it from scratch so I guess python the short answer ahaha

    Edit : by source I mean C++ idk why i said source

    open cmd_general.cpp

      search:  int nExitLimitTime = 10;

    change: with your idea number

     

    new search 

                    if (ch->IsPosition (POS_FIGHTING))
                    {
                        info->left_second = 10;
                    }
                    else
                    {
                        info->left_second = 10;
                    }

     

    change 10 to your idea

     

     

     

  6. 12 minutes ago, LethalStrikeR said:
    	def __OnClickSelectServerButton(self):
    		if IsFullBackImage():
    			self.GetChild("bg1").Hide()
    			self.GetChild("bg2").Show()
    
    		regionID = self.__GetRegionID()
    		serverID = self.__GetServerID()
    		channelID = self.__GetChannelID()
    
    		if (not serverInfo.REGION_DICT.has_key(regionID)):
    			self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_REGION)
    			return
    
    		if (not serverInfo.REGION_DICT[regionID].has_key(serverID)):
    			self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_SERVER)
    			return
    
    		try:
    			channelDict = serverInfo.REGION_DICT[regionID][serverID]["channel"]
    		except KeyError:
    			return
    
    		try:
    			state = channelDict[channelID]["state"]
    		except KeyError:
    			self.PopupNotifyMessage(localeInfo.CHANNEL_SELECT_CHANNEL)
    			return
    
    		if state == serverInfo.STATE_DICT[3]:
    			self.PopupNotifyMessage(localeInfo.CHANNEL_NOTIFY_FULL)
    			return
    
    		self.__SaveChannelInfo()
    
    		try:
    			serverName = serverInfo.REGION_DICT[regionID][serverID]["name"]
    			channelName = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["name"]
    			addrKey = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["key"]
    
    		except:
    			print " ERROR __OnClickSelectServerButton(%d, %d, %d)" % (regionID, serverID, channelID)
    			serverName = localeInfo.CHANNEL_EMPTY_SERVER
    			channelName = localeInfo.CHANNEL_NORMAL % channelID
    
    		if app.BL_MOVE_CHANNEL:
    			net.ClearServerInfo()
    			channelMax = len(serverInfo.REGION_DICT[regionID][serverID]["channel"])
    			for i in xrange(1, channelMax+1):
    				_channelName = serverInfo.REGION_DICT[regionID][serverID]["channel"][i]["name"]
    				net.SetChannelName(i, _channelName.strip())
    				
    			net.SetChannelName(99, localeInfo.MOVE_CHANNEL_99)
    			
    			net.SetChannelName(channelID)
    			net.SetServerName(serverName)
    
    		self.__SetServerInfo("%s, %s " % (serverName, channelName))
    
    		try:
    			ip = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["ip"]
    			tcp_port = serverInfo.REGION_DICT[regionID][serverID]["channel"][channelID]["tcp_port"]
    		except:
    			import exception
    			exception.Abort("LoginWindow.__OnClickSelectServerButton - 서버 선택 실패")
    
    		try:
    			account_ip = serverInfo.REGION_AUTH_SERVER_DICT[regionID][serverID]["ip"]
    			account_port = serverInfo.REGION_AUTH_SERVER_DICT[regionID][serverID]["port"]
    		except:
    			account_ip = 0
    			account_port = 0
    
    		try:
    			markKey = regionID*1000 + serverID*10
    			markAddrValue=serverInfo.MARKADDR_DICT[markKey]
    			net.SetMarkServer(markAddrValue["ip"], markAddrValue["tcp_port"])
    			app.SetGuildMarkPath(markAddrValue["mark"])
    			# GUILD_SYMBOL
    			app.SetGuildSymbolPath(markAddrValue["symbol_path"])
    			# END_OF_GUILD_SYMBOL
    
    		except:
    			import exception
    			exception.Abort("LoginWindow.__OnClickSelectServerButton - 마크 정보 없음")
    
    
    		if app.USE_OPENID and not app.OPENID_TEST :
    			self.stream.SetConnectInfo(ip, tcp_port, account_ip, account_port)
    			self.Connect(0, 0)
    		else :
    			self.stream.SetConnectInfo(ip, tcp_port, account_ip, account_port)
    			self.__OpenLoginBoard()

    That's all function.

    reinstall system only in python and fix this 

    code you forgot to enter

    your problem will never be solved

     

    reinstall system

    • kekw 2
  7. Hello

    I fixed my packets for i to reactivate the sequence

    there is a problem

    Problem's
    
    CLIENT
    typedef struct packet_move
    {
    	BYTE		bHeader;
    	BYTE		bFunc;
    	BYTE		bArg;
    	BYTE		bRot;
    	DWORD		dwVID;
    	LONG		lX;
    	LONG		lY;
    	DWORD		dwTime;
    	DWORD		dwDuration;
    } TPacketGCMove;
    
    SERVER
    typedef struct packet_move
    {
    	BYTE		bHeader;
    	BYTE		bFunc;
    	BYTE		bArg;
    	BYTE		bRot;
    	DWORD		dwVID;
    	long		lX;
    	long		lY;
    	DWORD		dwTime;
    	DWORD		dwDuration;
    } TPacketGCMove;

     

    Why does the server package have long? 

    LONG = int 

    why ?

    shouldn't it be normally long?

    client

        LONG        lX; 
        LONG        lY;

    server

        long        lX;
        long        lY;

    • kekw 1
    • Smile Tear 1
  8. 18 hours ago, TMP4 said:

    Commands are working fine. You mean the downloadable packages are removed from the mirrors after it's reached EOL.
    By the way if someone have the package in the cache folder then pkg install will work. Ofc it's not the case here since he does not have it.

    Then be clear, in your topic you only said you're looking for FreeBSD11.4.

    Did installation from the ports fails too? That uses multiple mirrors.
    If it fails, it'll write the filename (and the hash if I remember) so you can look the file up on the internet and download yourself, place it to /usr/ports/distfiles and continue the installation.

    (If you don't know how to install from ports, please look it up on Google.)

      Hide contents

    So you just let him know you have it without uploading it? That's evil :kekw:

    I can't give it, you read the forum rules

    I'll have to get permission from freebsd.org to post otherwise I'm going for copyright 

    • Metin2 Dev 1
  9.  

     

    The sequence was successfully removed

    But there was a bug that I fixed

     

    The buffer was not stable players after 15 days open server  enough enough kick and problems with kick

     

    let's see what the solution is..............

     

    1. OPEN SERVER SOURCE
    2. OPEN DESC.CPP
    3. SEARCH:
    if (!packet_encode (m_lpOutputBuffer, c_pvData, iSize))
    			{
    				m_iPhase = PHASE_CLOSE; // PLAYER KICK WHY BUFFER IN FULL
    			}
    
    
    4. CHANGE WITH
      
    if (!packet_encode (m_lpOutputBuffer, c_pvData, iSize))
    			{
    				//m_iPhase = PHASE_CLOSE;  // NOW DISABLED KICK
      				//PLAYER REMOVE BUFFER AND NOT KICK WHY REMOVE BUFFER? FOR STOP GAME.CORE PLAYER
      				// the player must exit from game  if the player does not exit the game then the game will give game.core
      				// So we made the player clear the buffer and not exit the game
      				buffer_delete(m_lpOutputBuffer); // Player not phase_closed for exit game ;)  buffer has removed
    				buffer_reset(m_lpOutputBuffer); // Player not phase_closed for exit game ;)  buffer has removed
      
    			}
    
    5) OPEN PROTOCOL.H
      REMOVED
    
      	if (buffer_has_space (pbuf) < length)
    	{
    		sys_err ("buffer length exceeded buffer size: %d, encoding %d bytes (%s:%d)", buffer_size (pbuf), length, file, line);
    		return false;
    	}

     

    You should put in specific server files

    SAFE_BUFFER_DELETE(m_lpOutputBuffer);  and not                 buffer_delete(m_lpOutputBuffer);    buffer_reset(m_lpOutputBuffer);

     

    • Metin2 Dev 2
    • kekw 8
    • Facepalm 1
  10. 3 hours ago, Pseudabo said:

    My client randomly crash after teleport (no any error, syserr clean, I dont find any problem in game, all works perfect - effects, icons, skills, dmg, gm flag, horse, etc..)

    Using cython, anyone has similar problem or can know whats problem? Its only with teleport 1-5 teleports.. Game is clean, without any problem.

    It's not a full tutorial man You have to think and add your own effects/motion

    • kekw 1
    • Lmao 1
  11. 9 minutes ago, HeadHunter said:


    #0  0x20de42ad in strlen () from /lib/libc.so.7
    [Current thread is 1 (LWP 100092)]
    (gdb) bt
    #0  0x20de42ad in strlen () from /lib/libc.so.7
    #1  0x20d45865 in ?? () from /lib/libc.so.7
    #2  0x20d4e6f1 in vsnprintf () from /lib/libc.so.7
     

     

    i get this 

    reinstall system in game source

    • Love 1
  12. 1 minute ago, HeadHunter said:

    Hy i resolved this error but when i try to open a chest i get this 

    0321 11:18:24955 ::   File "ui.py", line 1479, in OnUnselectItemSlot

    0321 11:18:24957 ::   File "ui.py", line 87, in __call__

    0321 11:18:24957 ::   File "ui.py", line 78, in __call__

    0321 11:18:24957 ::   File "uiInventory.py", line 1106, in UseItemSlot

    0321 11:18:24957 ::   File "uiInventory.py", line 1126, in __UseItem

    0321 11:18:24957 :: AttributeError
    0321 11:18:24957 :: : 
    0321 11:18:24957 :: 'Interface' object has no attribute 'OpenChestDropInfo'
    0321 11:18:24957 :: 

    reinstall systems in python only

     

×
×
  • 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.