Jump to content

callmax

Inactive Member
  • Posts

    66
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by callmax

  1. 		case ITEM_SKILLBOOK:
    			{
    				if (IsPolymorphed())
    				{
    					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("º¯½ÅÁß¿¡´Â Ã¥À» ÀÐÀ»¼ö ¾ø½À´Ï´Ù."));
    					return false;
    				}
    
    				DWORD dwVnum = 0;
    
    				if (item->GetVnum() == 50300)
    				{
    					dwVnum = item->GetSocket(0);
    				}
    				else
    				{
    					// »õ·Î¿î ¼ö·Ã¼­´Â value 0 ¿¡ ½ºÅ³ ¹øÈ£°¡ ÀÖÀ¸¹Ç·Î ±×°ÍÀ» »ç¿ë.
    					dwVnum = item->GetValue(0);
    				}
    
    				if (0 == dwVnum)
    				{
    					ITEM_MANAGER::instance().RemoveItem(item);
    
    					return false;
    				}
    
    				if (true == LearnSkillByBook(dwVnum))
    				{
    					ITEM_MANAGER::instance().RemoveItem1(item);
    
    					int iReadDelay = number(SKILLBOOK_DELAY_MIN, SKILLBOOK_DELAY_MAX);
    
    					if (distribution_test_server)
    						iReadDelay /= 3;
    
    					//Çѱ¹ º»¼·ÀÇ °æ¿ì¿¡´Â ½Ã°£À» 24½Ã°£ °íÁ¤
    					if (LC_IsKorea())
    						iReadDelay = 86400;
    
    					SetSkillNextReadTime(dwVnum, get_global_time() + iReadDelay);
    				}
    			}
    			break;

    This is for the skillbooks, but when i stack the skillbooks and i click on a 200er stack, not one book disappear, all books disappear, i'm trying to fix this since 4 hours, the only result i had is, that i think NOTHING sucks more than c++

     

    here the RemoveItem1 Funktion (i copied the RemoveFunction cause i want only to use it for the skillbooks)

    void ITEM_MANAGER::RemoveItem1(LPITEM item, const char * c_pszReason)
    {
    	LPCHARACTER o;
    
    	if ((o = item->GetOwner()))
    	{
    		char szHint[64];
    		snprintf(szHint, sizeof(szHint), "%s %u ", item->GetName(), item->GetCount());
    		LogManager::instance().ItemLog(o, item, c_pszReason ? c_pszReason : "REMOVE", szHint);
    
    		// SAFEBOX_TIME_LIMIT_ITEM_BUG_FIX
    		if (item->GetWindow() == MALL || item->GetWindow() == SAFEBOX)
    		{
    			// 20050613.ipkn.½Ã°£Á¦ ¾ÆÀÌÅÛÀÌ »óÁ¡¿¡ ÀÖÀ» °æ¿ì ½Ã°£¸¸·á½Ã ¼­¹ö°¡ ´Ù¿îµÈ´Ù.
    			CSafebox* pSafebox = item->GetWindow() == MALL ? o->GetMall() : o->GetSafebox();
    			if (pSafebox)
    			{
    				pSafebox->Remove(item->GetCell());
    			}
    		}
    		// END_OF_SAFEBOX_TIME_LIMIT_ITEM_BUG_FIX
    		else
    		{
    			o->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 255);
    			item->RemoveFromCharacter();
    		}
    	}
    
    	M2_DESTROY_ITEM(item);
    }

    I hope I could get help here, I'm really fucked up with this -.-

  2. Hey guys, i don't really know much about c++, but i can see that in this file, a IP gets called, this IP is hosted in peking. Does anybody know what this script especially does?

    #include "stdafx.h"
    #include "constants.h"
    #include "passpod.h"
    
    extern BOOL g_test_server;
    extern int test_server;
    const char ERR_STRINGS[6][32] = 
    {
    	"AUTH_SUCCESS" ,
    	"AUTH_FAILURE:PASSPOD_ERROR" ,
    	"AUTH_FAILURE:USER_NOT_FOUND" ,
    	"AUTH_FAILURE:SYSTEM_NOT_FOUND" ,
    	"AUTH_FAILURE:TOKEN_DISABLED" ,
    	"AUTH_FAILURE:EMPTY",
    };
    
    const char ERR_MESSAGE[6][64] =
    {
    	"SUCCESS",
    	"PASERR1",
    	"PASERR2",
    	"PASERR3",
    	"PASERR4",
    	"PASERR5"
    };
    
    CPasspod::CPasspod()
    	: m_sock(INVALID_SOCKET), m_lpFDW(NULL)
    {
    }
    
    
    CPasspod::~CPasspod()
    {
    }
    
    int CPasspod::ConfirmPasspod( const char * account, const char * passpod )
    {
    	const char * servername = "1001";
    	const char * algname = "plaintext";
    	const char * posspod_server = "/passpod-server";
    	const char * auth = "/auth.s";
    
    
    	char szRequest[1024];
    	char szResult[1024];
    	char szTmp[128];
    
    	int ret_code = 1; // 0 ÀÌ ¼º°ø 
    
    	snprintf( szRequest, sizeof(szRequest), "username=%s&systemname=%s&passpod=%s&algname=%s", account, servername, passpod, algname );
    	snprintf( szResult, sizeof(szResult), "POST %s%s HTTP/1.0rn", posspod_server, auth );
    	snprintf( szTmp, sizeof(szTmp), "Host: %srn", "218.99.6.103" );
    	strlcat( szResult, szTmp, sizeof(szResult) );
    	strlcat( szResult, "Content-type: application/x-www-form-urlencodedrn", sizeof(szResult) ); 
    	snprintf( szTmp, sizeof(szTmp), "Content-length: %drn", strlen(szRequest));
    	strlcat( szResult, szTmp, sizeof(szResult) );
    	strlcat( szResult, "Connection: Closernrn", sizeof(szResult) );
    	strlcat( szResult, szRequest, sizeof(szResult) );
    
    	if ( !Connect( NULL ) )
    	{
    		sys_log( 0, "PASSPOD : Can not connect to passpod server" );
    		Disconnect();
    		return ret_code; 
    	}
    	
    	int ret = socket_write( m_sock, (const char *)szResult, strlen(szResult));
    
    	sys_log( 0, "PASSPOD : Write End %s %s", account, passpod );
    	if ( test_server )
    	{
    		sys_log( 0, "PASSPOD : %s", szResult );
    		
    	}
    	char Read[1024];
    	int nCount = 5;
    	while (--nCount)
    	{
    		ret = recv(m_sock, Read, 1024, 0);
    
    		if ( ret > 0 )
    		{
    			if ( test_server )
    			{
    				sys_log( 0, "PASSPOD : %d", ret );
    			}
    			break;
    		}
    		else
    		{	
    			if ( test_server )
    			{
    				sys_log( 0, "PASSPOD : %d", ret );
    			}
    			Disconnect();
    			return ret_code;
    		}
    	}
    	sys_log( 0, "PASSPOD : Read End %s %s n %sn", account, passpod, Read );
    	
    	char * pos = Read;
    	nCount = 15;
    	while ( --nCount )
    	{
    		int n = 0;
    
    		//¶óÀγѱâ±â
    		for (; pos[n]!='n'; ++n  ) {}
    	
    		//n¿¡¼­ ¸ØÃß±â Çϳª´õ ³²°ÜÁÖÀÚ 	
    		pos = pos+n+1;
    
    		
    		//Return Value ¸¦ ºñ±³ 
    		if ( 0 == strncmp( pos, "AUTH_SUCCESS", strlen(ERR_STRINGS[0]) ) )
    		{
    			ret_code = E_PASSPOD_SUCCESS;
    			break;
    		}
    		if ( 0 == strncmp( pos, "AUTH_FAILURE:PASSPOD_ERROR", strlen(ERR_STRINGS[1]) ) )
    		{
    			ret_code = E_PASSPOD_FAILED_PASSPOD_ERROR;
    			break;
    		}
    		if ( 0 == strncmp( pos, "AUTH_FAILURE:USER_NOT_FOUND", strlen(ERR_STRINGS[2] ) ) )
    		{
    			ret_code = E_PASSPOD_FAILED_USER_NOT_FOUND;
    			break;
    		}
    		if ( 0 == strncmp( pos, "AUTH_FAILURE:SYSTEM_NOT_FOUND", strlen(ERR_STRINGS[3] ) ) )
    		{
    			ret_code = E_PASSPOD_FAILED_SYSTEM_NOT_FOUND;
    			break;
    		}
    		if ( 0 == strncmp( pos, "AUTH_FAILURE:TOKEN_DISABLED", strlen(ERR_STRINGS[4] ) ) )
    		{
    			ret_code = E_PASSPOD_FAILED_TOKEN_DISABLED;
    			break;
    		}
    		if ( 0 == strncmp( pos, "AUTH_FAILURE:EMPTY", strlen(ERR_STRINGS[5] )  ) )
    		{
    			ret_code = E_PASSPOD_FAILED_EMPTY;
    			break;
    		}
    
    	}
    
    	sys_log(0, "PASSPOD Ret Value = %s ", ERR_STRINGS[ret_code] );
    	
    
    	this->Disconnect();
    	return ret_code;
    	
    }
    
    bool CPasspod::Connect( LPFDWATCH fdw )
    {
    
    //	m_lpFDW = fdw;
    
    	if ( m_sock != INVALID_SOCKET )
    	{
    		sys_err( "Sock != INVALID_SOCKET " );
    		return false;
    	}
    		
    	m_sock = socket_connect( "218.99.6.103", 8080 );
    
    	if ( m_sock == INVALID_SOCKET )
    	{
    		sys_err( "Sock == INVALID_SOCKET " );
    		return false;
    	}
    
    
    
    	//fdwatch_add_fd( m_lpFDW, m_sock, this, FDW_READ, false );
    	//fdwatch_add_fd( m_lpFDW, m_sock, this, FDW_WRITE, false );
    	
    	
    	return true;
    }
    
    bool CPasspod::Disconnect()
    {
    	//fdwatch_del_fd( m_lpFDW, m_sock );
    	socket_close(m_sock);
    	m_sock = INVALID_SOCKET;
    	return true;
    }
    
    bool CPasspod::IConv( const char * src, char * desc )
    {
    	return true;
    }
    
  3.  

    pass in on $ext_if proto {tcp,udp} to any port $game_ports flags S/SA keep state

            (max-src-conn 30, max-src-conn-rate 15/5, overload <abusive_hosts> flush)

    i think to know that the rule had to be like this

    pass in on $ext_if proto {tcp,udp} to any port $game_ports flags S/SA keep state 
            (source-track rule, max-src-conn 30, max-src-conn-rate 15/5, overload <abusive_hosts> flush)

    I'm not completly sure, but i think "max-src-conn" and "conn-rate" can't take affect without sourcetrackrule

  4. i tested the protection, low dos/ddos they dont block, (by my server the low ddos/dos get blocked by my packetfilter) but the hard ddos above at 10GB/s they get blocked by ovh. My problem everytime was that attacks about at 9,5 GB/s crashed my packetfilter. Now by kimsufi i found the optimal solution, the great attacks where blocked directly by ovh and the low attacks who aim the login server or other ports get's blocked by my packetfiler

  5. Its also nice for beginner servers with no good protection to have more than one login core and make it chooseable at the login interface. Cause many try to flood your Login port with ess-syn attack which can be hitting really hard. Even the syncookie installation doesnt grant 100% reliability as most of them will spoof their ip

     

    I use server from kimsufi (OVH DDoS Protection) with a packetfilter who manage the traffic (packetsize, connections, how muck packets/connections per IP and the connections time out) for my loginport, cause clown was shooting on my loginport with ess-syns, and yes the hit really hard, but it was nice to see pfctl -e loginport was free. pfctl -d loginport was immediately down.

     tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.64935 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.64593 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.63974 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.62760 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.61666 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.61505 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.60694 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.60592 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.60178 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.59479 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.58656 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.58267 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.56958 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.55735 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.55339 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.54133 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.53442 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.52788 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.52311 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.51040 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.50948 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.49528 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.64526 LAST_ACK
    tcp4       0     15 5.135.28.16.10002      erfurt-s12-i01.c.63597 LAST_ACK
    • Love 1
  6. Thanks, but this is also not working for me. :S

    I write it like this: BIND_IP: 85.165.89.161 still the same Error.

    Everytime when i restart my host i get a new ip so it is possible to make this to localhost like it is with the database?

    Thanks for your help :)

     

    I had the same problem, its cause your IP start's with 10.

    #endif
    
    		char * netip = inet_ntoa(sai->sin_addr);
    
    		if (!strncmp(netip, "192.168", 7)) // ignore if address is starting with 192
    		{
    			strlcpy(g_szInternalIP, netip, sizeof(g_szInternalIP));
    #ifndef __WIN32__
    			fprintf(stderr, "INTERNAL_IP: %s interface %sn", netip, ifap->ifa_name);
    #else
    			fprintf(stderr, "INTERNAL_IP: %sn", netip);
    #endif
    		}
    		else if (!strncmp(netip, "10.", 3))
    		{
    			strlcpy(g_szInternalIP, netip, sizeof(g_szInternalIP));
    

    i changed the "10" to a "99", recompiled, and all works fine

     

    To the poster over me, it looks like if you are using a 64 bit system, i had at the beginning similar errors, i considerd 64 bit and now i compile on 32 bit and it works fine, if you want to use more than 4 GB Ram on your server, do it like we did it in the golden times, using 64 bit and put the libs from our 32 bit server under 64 bit in "/usr/lib32"

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