Advertisement
RyDeR_

Talking Characters [Text-To-Speech] [0.3d]

Sep 13th, 2011
2,710
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 2.91 KB | None | 0 0
  1. /*
  2.     SA-MP Voice Chat Filterscript (0.3d)
  3.     Copyright © 2011 RyDeR`
  4. */
  5.  
  6. #include <a_samp>
  7.  
  8. #define MAX_VOICE_RANGE (100.0)
  9.  
  10. new
  11.     g_aLangData[][][] =
  12.     {
  13.         { "<!> Disable", "" },
  14.         { "English", "en" },
  15.         { "Turkish", "tr" },
  16.         { "Croatian", "hr" },
  17.         { "African", "af" },
  18.         { "Albanian", "sq" },
  19.         { "Armenian", "hy" },
  20.         { "Azerbaijani", "az" },
  21.         { "Catalonian", "ca" },
  22.         { "Traditional Chinese", "zh-TW" },
  23.         { "Simplified Chinese", "zh-CN" },
  24.         { "Danish", "da" },
  25.         { "German", "de" },
  26.         { "Finnish", "fi" },
  27.         { "French", "fr" },
  28.         { "Greek", "el" },
  29.         { "Haitian Creole", "ht" },
  30.         { "Hindu", "hi" },
  31.         { "Hungarian", "hu" },
  32.         { "Icelandic", "is" },
  33.         { "Indonesian", "id" },
  34.         { "Italian", "it" },
  35.         { "Latvian", "lv" },
  36.         { "Macedonian", "mk" },
  37.         { "Dutch", "nl" },
  38.         { "Norwegian", "no" },
  39.         { "Polish", "pl" },
  40.         { "Portuguese", "pt" },
  41.         { "Romanian", "ro" },
  42.         { "Russian", "ru" },
  43.         { "Serbian", "sr" },
  44.         { "Slovak", "sk" },
  45.         { "Spannish", "es" },
  46.         { "Swahili", "sw" },
  47.         { "Czech", "cs" },
  48.         { "Vietnamese", "vi" },
  49.         { "Welsh", "cy" },
  50.         { "Swedisch", "sv" }
  51.     },
  52.     g_szLangList[768]
  53. ;
  54.  
  55. public OnFilterScriptInit()
  56. {
  57.     for(new i; i < sizeof(g_aLangData); ++i)
  58.     {
  59.         strcat(g_szLangList, g_aLangData[i][0]);
  60.         strcat(g_szLangList, "\n");
  61.     }
  62.    
  63.     printf("\n » SA:MP [0.3d] Voice Chat Filterscript (by RyDeR`) has been loaded! \n");  
  64.     return 1;
  65. }
  66.  
  67. public OnPlayerText(playerid, text[])
  68. {
  69.     SendVoiceMessage(playerid, text, g_aLangData[GetPVarInt(playerid, "iLangIdx")][1]);
  70.     return 1;
  71. }
  72.  
  73. public OnPlayerCommandText(playerid, cmdtext[])
  74. {
  75.     if(!strcmp(cmdtext, "/language", true))
  76.     {
  77.         ShowPlayerDialog(playerid, 1024, DIALOG_STYLE_LIST, "Choose your language", g_szLangList, "Select", "");
  78.         return 1;
  79.     }
  80.     return 0;
  81. }
  82.  
  83. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  84. {
  85.     if(response)
  86.     {
  87.         switch(dialogid)
  88.         {
  89.             case 1024:
  90.             {
  91.                 if(0 <= listitem < sizeof(g_aLangData))
  92.                 {
  93.                     SetPVarInt(playerid, "iLangIdx", listitem);
  94.                    
  95.                     static
  96.                         szStr[128]
  97.                     ;
  98.                     if(!listitem)
  99.                         SendClientMessage(playerid, 0xFF0000FF, "[INFO] Voice chat has been disabled!");
  100.                     else
  101.                         format(szStr, sizeof(szStr), "[INFO] Voice chat language has been set to %s", g_aLangData[listitem][0]),
  102.                         SendClientMessage(playerid, 0xFFFFFFFF, szStr);
  103.                 }
  104.             }
  105.         }
  106.     }
  107.     return 1;
  108. }
  109.  
  110. stock SendVoiceMessage(playerid, szMsg[], const szLang[])
  111. {
  112.     new
  113.         Float: fPos[3]
  114.     ;
  115.     if(GetPlayerPos(playerid, fPos[0], fPos[1], fPos[2]) && szLang[0] != EOS)
  116.     {
  117.         static
  118.             szUrl[60 + 128]
  119.         ;
  120.         format(szUrl, sizeof(szUrl), "http://translate.google.com/translate_tts?tl=%s&q=%s", szLang, szMsg);
  121.        
  122.         for(new i, j = GetMaxPlayers(); i < j; ++i)
  123.         {
  124.             if(PlayAudioStreamForPlayer(i, szUrl, fPos[0], fPos[1], fPos[2], MAX_VOICE_RANGE, true))
  125.             {
  126.                 continue;
  127.             }
  128.         }
  129.         return 1;
  130.     }
  131.     return 0;
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement