Raised This Month: $51 Target: $400
 12% 

Amx google translator


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Yassinec
Member
Join Date: May 2017
Old 05-03-2017 , 11:43   Amx google translator
Reply With Quote #1

Hello pls i can not compile it

translator12.sma (77): error 017: undefined symbol "socket_open_non_blocking"
translator12 .sma (96): error 017: undefined symbol "socket_is_writable"

Code:
#define VERSION "1.2"

#include <amxmodx>
#include <amxmisc>
#include <sockets>
#include <regex>

#define TASKID_SOCKET_CLOSE 9637

new const HOSTNAME[ ] = "translate.google.com"
new const REQUEST[ ] = "GET /translate_a/t?client=t&sl=%s&tl=%s&hl=%s&sc=2&ie=UTF-8&oe=UTF-8&pc=1&oc=1&otf=1&ssel=0&tsel=0&q=%s HTTP/1.1^r^nHost: translate.google.com^r^n^r^n"

#define MAX_PLAYERS 32
new sockets[ MAX_PLAYERS + 1 ]

new Regex:regex

public plugin_init( ) 
{
	register_plugin( "AMXX Translator", VERSION, "Milashkasiya" )

	register_concmd( "amx_translator", "concmd_translator", _, "<sl> <tl> <text>" )
	prepare_regex( )
}

public concmd_translator( id, level, cid )
{
	// check params
	if( !cmd_access(id, level, cid, 4) )
		return PLUGIN_HANDLED
	
	if( sockets[id] )
	{
		console_print( id, "Tiene una traduccion en proceso, intente en unos momentos..." )
		return PLUGIN_HANDLED
	}
	
	new szSL[ 5 ]
	new szTL[ 3 ]
	new iLenSL = read_argv( 1, szSL, charsmax(szSL) )
	new iLenTL = read_argv( 2, szTL, charsmax(szTL) )
	
	// validation
	if( iLenTL != 2 || (iLenSL == 2 && szSL[0] == szTL[0] && szSL[1] == szTL[1]) )
	{
		console_print( id, "No se puede procesar la traduccion, verifique los parametros e intente de nuevo..." )
		return PLUGIN_HANDLED
	}
	
	if( !iLenSL || !equali(szSL, "auto") )
	{
		copy( szSL, charsmax(szSL), "auto" )
	}

	// invalid socket
	if( !prepare_socket(id) )
		return PLUGIN_HANDLED
	
	// text to translate
	static szText[ 128 ]
	read_argv( 3, szText, charsmax(szText) )
	
	// full request
	static szEncodedText[ 128 ]
	static szFullRequest[ 300 ]
	StringURLEncode( szText, szEncodedText, charsmax(szEncodedText) )
	iLenSL = formatex( szFullRequest, charsmax(szFullRequest), REQUEST, szSL, szTL, szTL, szEncodedText )
	
	make_request( id, sockets[id], szFullRequest, iLenSL )
	return PLUGIN_HANDLED
}

prepare_socket( id )
{
	new error
	new socket = socket_open_non_blocking( HOSTNAME, 80, SOCKET_TCP, error )

	if( socket <= 0 )
	{
		switch( error )
		{
			case 1: log_amx( "Error while creating socket" )
			case 2: log_amx( "Couldn't resolve hostname" )
			case 3: log_amx( "Couldn't connect to given hostname:port" )
		}
		return 0
	}
	
	sockets[ id ] = socket
	return socket
}

make_request( id, socket, const request[], len )
{
	if( socket_is_writable(socket, 3000000)  )
	{				
		socket_send( socket, request, len )
			
		set_task( 0.2, "task_recv_data", id, _, _, "a", 15 )
		set_task( 3.1, "task_socket_close", id + TASKID_SOCKET_CLOSE )
	}
}

public task_recv_data( id )
{
	new iSocket = sockets[ id ]	
	if( socket_change(iSocket) )
	{
		static szData[ 512 ]
		socket_recv( iSocket, szData, charsmax(szData) )
		if( szData[0] )
		{
			new iRet
			if( regex_match_c(szData, regex, iRet) > 0 )
			{
				regex_substr( regex, 1, szData, charsmax(szData) )
				
				remove_task( id )
				remove_task( id + TASKID_SOCKET_CLOSE )
				socket_close( iSocket )	
				
				console_print( id, "[AMXX TRANSLATOR] %s", szData )
				
				sockets[ id ] = 0
			}
		}
	}
}

public task_socket_close( id )
{
	id -= TASKID_SOCKET_CLOSE
	console_print( id, "Ha ocurrido un error con la traduccion, intente nuevo..." )
	socket_close( sockets[id] )
	
	sockets[ id ] = 0
}

public client_disconnect( id )
{
	if( task_exists(id) || task_exists(id + TASKID_SOCKET_CLOSE) )
	{
		remove_task( id )
		remove_task( id + TASKID_SOCKET_CLOSE )
		socket_close( sockets[id] )
		
		sockets[ id ] = 0
	}
}

prepare_regex( )
{
	new ret, error[ 32 ]
	if( (regex = regex_compile( "\[^"([^^^"]*)^",", ret, error, charsmax(error))) < REGEX_OK )
	{
		log_amx( "REGEX ERROR: (%i)%s", ret, error )
		pause( "ad" )
	}
}

// https://forums.alliedmods.net/showthread.php?t=117744
stock StringURLEncode( const szInput[ ], szOutput[ ], const iLen )
{
	static const HEXCHARS[ 16 ] = {
		0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
		0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66
	};
    
	new iPos, cChar, iFLen;
	while( ( cChar = szInput[ iPos ] ) && iFLen < iLen )
	{
		if( cChar == 0x20 )
		{
			szOutput[ iFLen++ ] = 0x2B;
		}
		else if( !( 0x41 <= cChar <= 0x5A )
		&& !( 0x61 <= cChar <= 0x7A )
		&& !( 0x30 <= cChar <= 0x39 )
		&& cChar != 0x2D
		&& cChar != 0x2E
		&& cChar != 0x5F )
		{
			if( ( iFLen + 3 ) > iLen )
			{
				break;
			}
			else if( cChar > 0xFF
			|| cChar < 0x00 )
			{
				cChar = 0x2A;
			}
            
			szOutput[ iFLen++ ] = 0x25;
			szOutput[ iFLen++ ] = HEXCHARS[ cChar >> 4 ];
			szOutput[ iFLen++ ] = HEXCHARS[ cChar & 15 ];
		}
		else
		{
			szOutput[ iFLen++ ] = cChar;
		}
        
		iPos++;
	}
    
	szOutput[ iFLen ] = 0;
	return iFLen;
}
__________________
Steam:Yassinec
Yassinec is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 05-03-2017 , 12:18   Re: Amx google translator
Reply With Quote #2

That plugin is not usable anymore.
__________________
OciXCrom is offline
Send a message via Skype™ to OciXCrom
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 05:29.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode