Advertisement
LucasRed

Multilang System By Necrose - VCMP [Working]

Apr 1st, 2016
487
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.58 KB | None | 0 0
  1. /*
  2. Sistema Multilang para servidores Squirrel de VCMP, By Necrose.
  3. -- Script usado no Evolution DMS.
  4.  
  5. Obs: Esse script usa funções de um plugin chamado GeoIP que pode ser baixado aqui: https://bitbucket.org/crys/0.4-geoip
  6. */
  7.  
  8. MyLang <- {}; // Table de configuração de idioma...
  9. P_Lang <- []; // Variável para listar os players...
  10. Portuguese <- [ "Brazil", "Portugal", "Angola" ]; // Países que usam o Português (Há outros que não estão listados aqui)...
  11.  
  12. function onScriptLoad()
  13. {
  14.     SetJoinMessages( false ); // Desativar mensagem de quando um player se conecta ao servidor...
  15.     print( "Multilang System By Lavador" );
  16. }
  17.  
  18. function onPlayerJoin( player ) // Evento de entrada no servidor...
  19. {
  20.     local p_country = geoip_country_name_by_addr( player.IP );
  21.     if ( Portuguese.find( p_country ) != null ) MyLang.rawset( player.ID, 1 ); // Configurar idioma 1 (Português)...
  22.     else MyLang.rawset( player.ID, 2 );
  23.  
  24.     P_Lang.push( { Player = player } );
  25.  
  26.     _Message( "[#FFF68F]* [#FFFFFF]" + player.Name + " [#FFF68F]entrou no servidor.", "[#FFF68F]* [#FFFFFF]" + player.Name + " [#FFF68F]joined the server." );
  27. }
  28.  
  29. function onPlayerCommand( player, cmd, text )
  30. {
  31.     if ( cmd == "cmds" ) _PrivMessage( "Use o comando /test para ver uma mensagem de teste.", "Use command /test to see a test message.", player );
  32.  
  33.     else if ( cmd == "test" )
  34.     {
  35.         _Message( "Este script e um test.", "This script is a test." ); // Mensagem global...
  36.         _PrivMessage( player, "Este script e um test.", "This script is a test." ); // Mensagem privada...
  37.     }
  38.  
  39.     else if ( cmd == "lang" || cmd == "idioma" )
  40.     {
  41.         if ( !text ) _PrivMessage( player, "Sintaxe: /" + cmd + " <pt/en>", "Syntax: /" + cmd + " <en/pt>" );
  42.         else
  43.         {
  44.             if ( text == "pt" )
  45.             {
  46.                 if ( MyLang.rawget( player.ID ) == 1 ) PrivMessage( player, "Erro, esse idioma ja esta sendo usado." );
  47.                 else
  48.                 {
  49.                     MyLang.rawset( player.ID, 1 );
  50.                     PrivMessage( player, "Portugues selecionado." );
  51.                 }
  52.             }
  53.             else if ( text == "en" )
  54.             {
  55.                 if ( MyLang.rawget( player.ID ) == 2 ) PrivMessage( player, "Error, that language is already being used." );
  56.                 else
  57.                 {
  58.                     MyLang.rawset( player.ID, 2 );
  59.                     PrivMessage( player, "English selected." );
  60.                 }
  61.             }
  62.             else _PrivMessage( player, "Erro, use \"pt\" ou \"en\".", "Error, use \"en\" or \"pt\"." );
  63.         }
  64.     }
  65. }
  66.  
  67. function onPlayerPart( player, reason ) // Evento de saída do servidor...
  68. {
  69.     _Message( "[#FFF68F]* [#FFFFFF]" + player.Name + " [#FFF68F]saiu do servidor.", "[#FFF68F]* [#FFFFFF]" + player.Name + " [#FFF68F]left the server." );
  70.     for ( local i = P_Lang.len() - 1; i >= 0; i -- )
  71.     {
  72.         if ( P_Lang[ i ].Player.ID == player.ID )
  73.         {
  74.             MyLang.rawdelete( player.ID ); // Remover o ID do player de dentro do table MyLang...
  75.             P_Lang.remove( i ); // Eliminar o nome do player de dentro do array P_Lang...
  76.             break;
  77.         }
  78.     }
  79. }
  80.  
  81. function _PrivMessage( player, lang_1, lang_2 ) // Criar outras funções se necessário, por exemplo, MessagePlayer,  ClientMessage, Announce, etc.
  82. {
  83.     !( MyLang.rawget( player.ID ) == 2 ) ? PrivMessage( player, lang_1 ) : PrivMessage( player, lang_2 ); // Enviar umas mensagem privada para o usuário de acordo com o idoma...
  84. }
  85.  
  86. function _Message( lang_1, lang_2 ) // Criar outras funções se necessário, por exemplo, ClientMessageToAll, AnnounceAll, etc.
  87. {
  88.     foreach ( iLang in P_Lang ) // Enviar mensagens privadas para todos imitando uma mensagem global, porém cada um com seu respectivo idioma...
  89.     {
  90.         local player = iLang.Player;
  91.         !( MyLang.rawget( player.ID ) == 2 ) ? MessagePlayer( lang_1, player ) : MessagePlayer( lang_2, player );
  92.     }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement