//==============================================================================
// Név: NYELVKEZELÕ
// Verzió: 0.2
// Frissítve: 2010/MÁRCUIS/*
// Készítõ: Gamestar
//==============================================================================
#tryinclude \"a_samp\"
#define TELEPORT_VERSION \"0.9\"
//==============================================================================
// Többszöri beágyazás elleni védelem
//==============================================================================
#if defined _language_included
#endinput
#endif
#define _language_included
//==============================================================================
// Konfiguráció
//==============================================================================
// Ha engedélyezni szeretnéd a párbeszédpanel módot, hagyd definiálva
#define LANGUAGE_DIALOG
// Csak akkor van rá szükség, ha párbeszédpanel mód engedélyezve van,
// az azonosítószámát pedig írd át, ha már használva van valahol
#define LANGUAGE_DIALOG_ID 3232
//==============================================================================
// Prototípusok létrehozása
//==============================================================================
forward OnPlayerChangeLanguage(playerid, newlanguageid);
forward OnServerChangeLanguage(newlanguageid);
//==============================================================================
// Direktívák
//==============================================================================
#define MAX_LANGUAGES (4)
#define MAX_LANGUAGE_SHORT_LEN (32)
#define MAX_LANGUAGE_STRINGS (300)
#define MAX_LANGUAGE_STRING_LEN (128)
#define NO_LANGUAGE (0xFFFF)
//==============================================================================
// Változók, tárolók létrehozása
//==============================================================================
enum (<<= 1)
{
LANGUAGE_FLAG_NONE,
LANGUAGE_FLAG_ACTIVE = 1,
LANGUAGE_FLAG_CHATMODE1,
LANGUAGE_FLAG_CHATMODE2
};
static
GL_g_LanguageServerFlag,
GL_g_LanguageFlag[ MAX_LANGUAGES ],
GL_g_LanguageShort[ MAX_LANGUAGES ][ MAX_LANGUAGE_SHORT_LEN ],
GL_g_LanguageStringIdent[ MAX_LANGUAGES ][ MAX_LANGUAGE_STRINGS ][ MAX_LANGUAGE_SHORT_LEN ],
GL_g_LanguageString[ MAX_LANGUAGES ][ MAX_LANGUAGE_STRINGS ][ MAX_LANGUAGE_STRING_LEN ],
GL_g_LanguageStringCount[ MAX_LANGUAGES ],
GL_g_ServerLanguage,
GL_g_PlayerLanguage[ MAX_PLAYERS ];
/*----------------------------------------------------------------------------*-
Függvény:
Language_IsActive
Paraméterek:
languageid - a nyelv azonosítószáma
Visszatérés:
GL_g_LanguageFlag[ languageid ] & LANGUAGE_FLAG_ACTIVE; ( az azonosító aktivitása )
Megjegyzés:
-
-*----------------------------------------------------------------------------*/
stock Language_IsActive( languageid )
{
// Visszatérünk az értékkel
return GL_g_LanguageFlag[ languageid ] & LANGUAGE_FLAG_ACTIVE;
}
/*----------------------------------------------------------------------------*-
Függvény:
Language_SetActive (helyi)
Paraméterek:
languageid - a nyelv azonosítószáma
set - logikai érték
Visszatérés:
true
Megjegyzés:
Ez csak a függvénykönyvtáron belül használható, mert kavarodáshoz vezethet
-*----------------------------------------------------------------------------*/
static stock Language_SetActive( languageid, set )
{
// Ha igaz érték
if( set )
// Aktívra állítjuk
GL_g_LanguageFlag[ languageid ] |= LANGUAGE_FLAG_ACTIVE;
// Másképpen pedig inaktívra állítjuk
else GL_g_LanguageFlag[ languageid ] &= ~LANGUAGE_FLAG_ACTIVE;
// Visszatérés
return true;
}
/*----------------------------------------------------------------------------*-
Függvény:
Language_LoadFormFile
Paraméterek:
languageid - a nyelv azonosítószáma
file - a fájl elérése
Visszatérés:
true - ha sikeres
NO_LANGUAGE - ha sikertelen
Megjegyzés:
-
-*----------------------------------------------------------------------------*/
stock Language_LoadFormFile( languageid, file[ ] )
{
// Ha a nyelv nem aktív
if( !Language_IsActive( languageid ) )
{
// Sikertelen visszatérés
return NO_LANGUAGE;
}
// Megnézzük létezik-e a fájl
if( fexist( file ) )
{
// Segédváltozók, megnyitjuk a fájlt, olvasási szándékkal
new File:myfile = fopen( file, filemode:io_read ),
myline[256];
// Addig olvassuk a fájlt, amíg lehet
while( fread( myfile, myline, sizeof( myline ) ) )
{
// Ha van beolvasott szöveg
if( myline[ 0 ] )
{
// Ha csak bejegyzés, akkor kihagyjuk
if( myline[ 0 ] == \'#\') continue;
// Különválasztjuk a 2 \"szöveget\"
new delim = strfind( myline, \"=\" );
// Ha van elválasztó
if( delim != -1 )
{
// Segédtároló létrehozása
new string_ident[ MAX_LANGUAGE_SHORT_LEN ];
// Eltárolás
for( new j = 0; j < delim; j++ )
string_ident[ j ] = myline[ j ];
// Hozzáadunk egy rövidítést és egy hozzá tartozó szöveget
Language_AddString( languageid, string_ident, myline[ delim + 1 ] );
}
}
}
}
return true;
}
/*----------------------------------------------------------------------------*-
Függvény:
Language_AddString
Paraméterek:
languageid - a nyelv azonosítószáma
ident - a szöveg rövidítése
string - a szöveg
Visszatérés:
true - ha sikeres
NO_LANGUAGE - ha sikertelen
Megjegyzés:
-
-*----------------------------------------------------------------------------*/
stock Language_AddString( languageid, ident[ ], string[ ] )
{
// Ha a nyelv nem aktív
if( !Language_IsActive( languageid ) )
{
// Sikertelen visszatérés
return NO_LANGUAGE;
}
// Ha már nem fér el több szöveg
if( GL_g_LanguageStringCount[ languageid ] == MAX_LANGUAGE_STRINGS )
{
// Jelezzük
printf(\"#%i nyelvhez már nem fér el a \'%s\' szöveg!\", languageid, ident );
// Sikertelen visszatérés
return NO_LANGUAGE;
}
// Létrehozunk egy változót a könnyebb kezelhetõség érdekében
new entry = GL_g_LanguageStringCount[ languageid ];
// Tároljuk a rövidítést
strmid( GL_g_LanguageStringIdent[ languageid ][ entry ], ident, 0, MAX_LANGUAGE_SHORT_LEN, MAX_LANGUAGE_SHORT_LEN );
// Tároljuk a szöveget
strmid( GL_g_LanguageString[ languageid ][ entry ], string, 0, MAX_LANGUAGE_STRING_LEN, MAX_LANGUAGE_STRING_LEN );
// Növeljük a betöltött szövegek számát
GL_g_LanguageStringCount[ languageid ]++;
// Visszatérés
return true;
}
/*----------------------------------------------------------------------------*-
Függvény:
Language_SendMessage
Paraméterek:
playerid - játékos azonosítószáma
color - szín
ident - szöveg rövidítése
{Float,_}:... - értékek
Visszatérés:
INVALID_PLAYER_ID - ha sikertelen
true
Megjegyzés:
-
-*----------------------------------------------------------------------------*/
stock Language_SendMessage( playerid, color, ident[ ],{Float,_}:...)
{
// Ha a játékos nincs csatlakozva
if( !IsPlayerConnected( playerid ) )
{
// Sikertlen visszatérés
return INVALID_PLAYER_ID;
}
// Tároló létrehozása
new myString[ 128 ] = \'\\0\';
// Szöveg lekérdezése
Language_GetString( Language_GetPlayerLanguageID( playerid ), ident, myString, sizeof( myString ) );
// Formációnak a forrása: http://pastebin.com/f75c37149
new len = strlen(myString),d=0,posArg = 3,dest[512];
for( new i = 0; i < len; i++)
{
if(myString == \'%\')
{
switch (myString[i+1])
{
case \'s\':
{
new pos, arg, tmppos, str[ 128 ];
while(getarg(posArg,pos)!=\'\\0\')
{
arg=getarg(posArg,pos++);
str[tmppos]=arg;
tmppos++;
}
strins(dest,str,d,strlen(str));
d+=strlen(str);
posArg++;
i++;
}
case \'i\', \'d\':
{
new str[128];
format(str,sizeof(str),\"%d\",getarg(posArg));
strins(dest,str,d,strlen(str));
d+=strlen(str);
posArg++;
i++;
}
case \'f\':
{
new str[128];
format(str,sizeof(str),\"%f\",getarg(posArg));
strins(dest,str,d,strlen(str));
d+=strlen(str);
posArg++;
i++;
}
case \'.\':
{
new len2 = myString[i+2];
if(len2 == 0)
{
dest[d] = myString;
d++;
}
else
{
new str[32],formatting[5];
formatting[0] = \'%\';
formatting[1] = \'.\';
formatting[2] = len2;
formatting[3] = \'f\';
format(str,sizeof(str),formatting,getarg(posArg));
strins(dest,str,d,len2);
d+=len;
posArg++;
i+= 2;
}
}
default:
{
dest[d] = myString;
d++;
}
}
}
else
{
dest[d] = myString;
d++;
}
}
SendClientMessage(playerid, color, dest);
// Visszatérés
return true;
}
/*----------------------------------------------------------------------------*-
Függvény:
Language_SendMessage
Paraméterek:
color - szín
ident - szöveg rövidítése
{Float,_}:... - értékek
Visszatérés:
true
Megjegyzés:
-
-*----------------------------------------------------------------------------*/
stock Language_SendMessageToAll( color, ident[ ],{Float,_}:...)
{
// Tároló létrehozása
new myString[ 128 ] = \'\\0\';
// Szöveg lekérdezése
Language_GetString( Language_GetDefaultLanguage( ), ident, myString, sizeof( myString ) );
// Formációnak a forrása: http://pastebin.com/f75c37149
new len = strlen(myString),d=0,posArg = 2,dest[512];
for(new i=0;i<len;i++)
{
if(myString == \'%\')
{
switch (myString[i+1])
{
case \'s\':
{
new pos,arg,tmppos;
new str[128];
while(getarg(posArg,pos)!=\'\\0\')
{
arg=getarg(posArg,pos++);
str[tmppos]=arg;
tmppos++;
}
strins(dest,str,d,strlen(str));
d+=strlen(str);
posArg++;
i++;
}
case \'i\', \'d\':
{
new str[128];
format(str,sizeof(str),\"%d\",getarg(posArg));
strins(dest,str,d,strlen(str));
d+=strlen(str);
posArg++;
i++;
}
case \'f\':
{
new str[128];
format(str,sizeof(str),\"%f\",getarg(posArg));
strins(dest,str,d,strlen(str));
d+=strlen(str);
posArg++;
i++;
}
case \'.\':
{
new len2 = myString[i+2];
if(len2 == 0)
{
dest[d] = myString;
d++;
}
else
{
new str[32],formatting[5];
formatting[0] = \'%\';
formatting[1] = \'.\';
formatting[2] = len2;
formatting[3] = \'f\';
format(str,sizeof(str),formatting,getarg(posArg));
strins(dest,str,d,len2);
d+=len;
posArg++;
i+= 2;
}
}
default:
{
dest[d] = myString;
d++;
}
}
}
else
{
dest[d] = myString;
d++;
}
}
SendClientMessageToAll(color,dest);
// Visszatérés
return true;
}
/*----------------------------------------------------------------------------*-
Függvény:
Language_GetString
Paraméterek:
languageid - a nyelv azonosítószáma
ident - a szöveg rövidítése
dest - célkarakterlánc
len - célkarakterlánc mérete
Visszatérés:
g_Language_Active[ languageid ] ( az azonosító aktivitása )
Megjegyzés:
-
-*----------------------------------------------------------------------------*/
stock Language_GetString( languageid, ident[ ], dest[ ], len )
{
// Ha a nyelv nem aktív
if( !Language_IsActive( languageid ) )
{
// Sikertelen visszatérés
return NO_LANGUAGE;
}
// Segédváltozó
new j;
// Megkeressük a rövidítést
for( j = 0; j < MAX_LANGUAGE_STRINGS; j++ )
if( !strcmp( GL_g_LanguageStringIdent[ languageid ][ j ], ident ))
break;
// Ha nem lett meg
if( j == MAX_LANGUAGE_STRINGS )
{
// Sikertelen visszatérés
return NO_LANGUAGE;
}
// Beírjuk a célkarakterláncba
strmid( dest, GL_g_LanguageString[ languageid ][ j ], 0, strlen( GL_g_LanguageString[ languageid ][ j ] ), len );
// Visszatérés
return true;
}
/*----------------------------------------------------------------------------*-
Függvény:
Language_Add
Paraméterek:
languageshort - nyelv rövidítése (pl. English - ENG, German - GER)
Visszatérés:
true - ha sikeres
NO_LANGUAGE - ha sikertelen
Megjegyzés:
-
-*----------------------------------------------------------------------------*/
stock Language_Add( languageshort[ ] )
{
// Segédváltozó
new languageid;
// Ciklus segítségével a legközelebbi szabad azonosító megkeresése
for( languageid = 0; languageid < MAX_LANGUAGES; languageid++ )
if( !Language_IsActive( languageid ) )
break;
// Ha túllépi a korlátozást, akkor sikertelen
if( languageid == MAX_LANGUAGES )
return NO_LANGUAGE;
// Megjegyezzük, hogy aktív
Language_SetActive( languageid, 1 );
// Megadjuk a nyelv rövidítését
Language_SetShort( languageid, languageshort );
// Visszatérés
return languageid;
}
/*----------------------------------------------------------------------------*-
Függvény:
Language_SetShort
Paraméterek:
languageid - a nyelv azonosítószáma
languageshort - a nyelv új rövidítése
Visszatérés:
NO_LANGUAGE - ha sikertelen
true
Megjegyzés:
-
-*----------------------------------------------------------------------------*/
stock Language_SetShort( languageid, languageshort[ ] )
{
// Ha a nyelv nem aktív
if( !Language_IsActive( languageid ) )
{
// Sikertelen visszatérés
return NO_LANGUAGE;
}
// Rövidítés módosítása
strmid( GL_g_LanguageShort[ languageid ], languageshort, 0, MAX_LANGUAGE_SHORT_LEN, MAX_LANGUAGE_SHORT_LEN );
// Visszatérés
return true;
}
/*----------------------------------------------------------------------------*-
Függvény:
Language_GetShort
Paraméterek:
languageid - a nyelv azonosítószáma
dest - cél
len - hossz
Visszatérés:
NO_LANGUAGE - ha sikertelen
true
Megjegyzés:
-
-*----------------------------------------------------------------------------*/
stock Language_GetShort( languageid, dest[ ], len )
{
// Ha a nyelv nem aktív
if( !Language_IsActive( languageid ) )
{
// Sikertelen visszatérés
return NO_LANGUAGE;
}
// Rövidítés tárolása
strmid( dest, GL_g_LanguageShort[ languageid ], 0, MAX_LANGUAGE_SHORT_LEN, len );
// Visszatérés
return true;
}
/*----------------------------------------------------------------------------*-
Függvény:
Language_GetCount
Paraméterek:
-
Visszatérés:
count
Megjegyzés:
-
-*----------------------------------------------------------------------------*/
stock Language_GetCount( )
{
// Segédváltozó
new count;
// Ciklus indítása, és a változó értékének növelése az aktívoknál
for( new j = 0; j < MAX_LANGUAGES; j++ ) if( Language_IsActive( j ) ) count++;
// Visszatérés
return count;
}
/*----------------------------------------------------------------------------*-
Függvény:
Language_SetDefaultLanguage
Paraméterek:
languageid - a nyelv azonosítószáma
Visszatérés:
NO_LANGUAGE - ha sikertelen
true
Megjegyzés:
-
-*----------------------------------------------------------------------------*/
stock Language_SetDefaultLanguage( languageid )
{
// Ha a nyelv nem aktív
if( !Language_IsActive( languageid ) )
{
// Sikertelen visszatérés
return NO_LANGUAGE;
}
// Átállítjuk a nyelvet
GL_g_ServerLanguage = languageid;
// Meghívás
if(funcidx(\"OnServerChangeLanguage\"))
{
CallLocalFunction(\"OnServerChangeLanguage\",\"i\",languageid);
}
// Visszatérés
return true;
}
/*----------------------------------------------------------------------------*-
Függvény:
Language_GetDefaultLanguage
Paraméterek:
-
Visszatérés:
GL_g_ServerLanguage
Megjegyzés:
-
-*----------------------------------------------------------------------------*/
stock Language_GetDefaultLanguage( )
{
// Visszatérés
return GL_g_ServerLanguage;
}
/*----------------------------------------------------------------------------*-
Függvény:
Language_SetPlayerLanguage
Paraméterek:
playerid - a játékos azonosítószáma
languageid - a nyelv azonosítószáma
Visszatérés:
NO_LANGUAGE - ha sikertelen
true
Megjegyzés:
-
-*----------------------------------------------------------------------------*/
stock Language_SetPlayerLanguage( playerid, languageid )
{
// Ha a játékos/nyelv nem aktív vagy nincs elég nyelv
if( !IsPlayerConnected( playerid ) || !Language_IsActive( languageid ) )
{
// Sikertelen visszatérés
return NO_LANGUAGE;
}
// Modosítjuk a nyelvét
GL_g_PlayerLanguage[ playerid ] = languageid;
// Meghívás
if(funcidx(\"OnPlayerChangeLanguage\"))
{
CallLocalFunction(\"OnPlayerChangeLanguage\",\"ii\",playerid,languageid);
}
// Visszatérés
return true;
}
/*----------------------------------------------------------------------------*-
Függvény:
Language_GetPlayerLanguageID
Paraméterek:
playerid - a játékos azonosítószáma
Visszatérés:
NO_LANGUAGE - ha sikertelen
GL_g_PlayerLanguage[ playerid ]
Megjegyzés:
-
-*----------------------------------------------------------------------------*/
stock Language_GetPlayerLanguageID( playerid )
{
// Ha a játékos nem aktív
if( !IsPlayerConnected( playerid ) )
{
// Sikertelen visszatérés
return NO_LANGUAGE;
}
// Visszatérés
return GL_g_PlayerLanguage[ playerid ];
}
/*----------------------------------------------------------------------------*-
Függvény:
Language_ToggleChatLanguageTag
Paraméterek:
toggle - logikai érték
Visszatérés:
true
Megjegyzés:
-
-*----------------------------------------------------------------------------*/
stock Language_ToggleChatLanguageTag( toggle )
{
// Ha igaz érték
if( toggle )
// Aktívra állítjuk
GL_g_LanguageServerFlag |= LANGUAGE_FLAG_CHATMODE1;
// Másképpen pedig inaktívra állítjuk
else GL_g_LanguageServerFlag &= ~LANGUAGE_FLAG_CHATMODE1;
// Visszatérés
return true;
}
/*----------------------------------------------------------------------------*-
Függvény:
Language_IsChatLanguageTag
Paraméterek:
-
Visszatérés:
GL_g_LanguageServerFlag & LANGUAGE_FLAG_CHATMODE1
Megjegyzés:
-
-*----------------------------------------------------------------------------*/
stock Language_IsChatLanguageTag( )
{
// Visszatérés
return GL_g_LanguageServerFlag & LANGUAGE_FLAG_CHATMODE1;
}
/*----------------------------------------------------------------------------*-
Függvény:
Language_ToggleLanguageChat
Paraméterek:
toggle - logikai érték
Visszatérés:
true
Megjegyzés:
-
-*----------------------------------------------------------------------------*/
stock Language_ToggleLanguageChat( toggle )
{
// Ha igaz érték
if( toggle )
// Aktívra állítjuk
GL_g_LanguageServerFlag |= LANGUAGE_FLAG_CHATMODE2;
// Másképpen pedig inaktívra állítjuk
else GL_g_LanguageServerFlag &= ~LANGUAGE_FLAG_CHATMODE2;
// Visszatérés
return 1;
}
/*----------------------------------------------------------------------------*-
Függvény:
Language_IsLanguageChat
Paraméterek:
-
Visszatérés:
GL_g_LanguageServerFlag & LANGUAGE_FLAG_CHATMODE2
Megjegyzés:
-
-*----------------------------------------------------------------------------*/
stock Language_IsLanguageChat( )
{
// Visszatérés
return GL_g_LanguageServerFlag & LANGUAGE_FLAG_CHATMODE2;
}
public OnPlayerConnect( playerid )
{
// Kiírjuk, hogy válthat nyelvet
SendClientMessage( playerid, 0xFF3DF8AA, \"To change the language use \'/language\' command.\" );
// Beállítjuk a nyelvét az alapméretezettre
Language_SetPlayerLanguage( playerid, Language_GetDefaultLanguage( ) );
// Ha megindexelhetõ
if (funcidx(\"Language_OnPlayerConnect\") != -1)
{
// Visszatérés
return CallLocalFunction(\"Language_OnPlayerConnect\", \"i\", playerid);
}
return 1;
}
public OnPlayerText( playerid, text[ ] )
{
// Ha a nyelvi beszélgetõ ablak (1 mód) engedélyezve van
if( Language_IsChatLanguageTag( ) )
{
// Tárolók létrehozása
new myString[ 128 ],
myShort[ MAX_LANGUAGE_SHORT_LEN ];
// Rövidítés tárolása
Language_GetShort( Language_GetPlayerLanguageID( playerid ), myShort, sizeof( myShort ) );
// Formázás
format( myString, sizeof( myString ), \"[%s]: %s\", myShort, text );
// Ha a 2. beszélgetõablak mód engedélyezve van, azaz, csak
// az azonos nyelvûek látják egymás üzeneteit
if( Language_IsLanguageChat( ) )
{
// Ciklus
for( new j = 0; j < GetMaxPlayers( ); j++ )
{
// Ha a 2 nyelv egyezik
if( Language_GetPlayerLanguageID( playerid ) == Language_GetPlayerLanguageID( j ) )
{
// Elküldés
SendPlayerMessageToPlayer( j, playerid, myString );
// Visszatérés
return 0;
}
}
}
// Üzenet elküldése mindenkinek
SendPlayerMessageToAll( playerid, myString );
// Visszatérés
return 0;
}
// Ha megindexelhetõ
if (funcidx(\"Language_OnPlayerText\") != -1)
{
// Visszatérés
return CallLocalFunction(\"Language_OnPlayerText\", \"is\", playerid, text);
}
return 1;
}
public OnFilterScriptInit( )
{
// 2 mód letiltása
Language_ToggleChatLanguageTag( 0 );
Language_ToggleLanguageChat( 0 );
// Kijelzés
print(\"*** Nyelvkezelõ 0.1 by Gamestar betöltve ***\");
// Ha megindexelhetõ
if (funcidx(\"Language_OnFilterScriptInit\") != -1)
{
// Visszatérés
return CallLocalFunction(\"Language_OnFilterScriptInit\", \"\");
}
return 1;
}
public OnGameModeInit( )
{
// 2 mód letiltása
Language_ToggleChatLanguageTag( 0 );
Language_ToggleLanguageChat( 0 );
// Kijelzés
print(\"*** Nyelvkezelõ 0.1 by Gamestar betöltve ***\");
// Ha megindexelhetõ
if (funcidx(\"Language_OnGameModeInit\") != -1)
{
// Visszatérés
return CallLocalFunction(\"Language_OnGameModeInit\", \"\");
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
// Ha a párbeszédpanelazonosító egyezik
if( dialogid == LANGUAGE_DIALOG_ID )
{
// Ha igennel válaszolt
if( response == 1 )
{
// Tárolók létrehozása
new GL_l_Short[ MAX_LANGUAGE_SHORT_LEN ], myString[ 128 ];
// Tároljuk a rövidítését
Language_GetShort( listitem, GL_l_Short, sizeof( GL_l_Short ) );
// Formázás
format( myString, sizeof( myString ), \"Language succesfull changed to (short): %s\", GL_l_Short );
// Üzenet
SendClientMessage( playerid, 0xFFFFFFAA, myString );
// Módosítjuk a nyelvét
Language_SetPlayerLanguage( playerid, listitem );
}
// Ha nem igennel válaszolt
else
{
// Nem teszünk semmit
}
}
// Ha megindexelhetõ
if (funcidx(\"Language_OnDialogResponse\") != -1)
{
// Visszatérés
return CallLocalFunction(\"Language_OnDialogResponse\", \"iiiis\", playerid, dialogid, response, listitem, inputtext );
}
return 0;
}
#define language_dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, \"\")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
public OnPlayerCommandText( playerid, cmdtext[ ] )
{
// Parancs
language_dcmd(language,strlen(\"language\"),cmdtext);
// Ha megindexelhetõ
if (funcidx(\"Language_OnPlayerCommandText\") != -1)
{
// Visszatérés
return CallLocalFunction(\"Language_OnPlayerCommandText\", \"is\", playerid, cmdtext );
}
return 0;
}
dcmd_language( playerid, params[ ] )
{
#if defined LANGUAGE_DIALOG
#pragma unused params
// Tárolók létrehozása
new GL_l_Short[ MAX_LANGUAGE_SHORT_LEN ],myString[ 256 ];
// Ciklust indítunk
for( new j = 0; j < MAX_LANGUAGES; j++ )
{
// Ha aktív
if( Language_IsActive( j ) )
{
// Tároljuk a rövidítését
Language_GetShort( j, GL_l_Short, sizeof( GL_l_Short ) );
// Formázás
format( myString, sizeof( myString ), \"%s\\n%s\", myString, GL_l_Short );
}
}
ShowPlayerDialog( playerid, LANGUAGE_DIALOG_ID, DIALOG_STYLE_LIST, \"MI - Select Language\", myString, \"Apply\", \"Cancel\" );
#else
// Ha nem adott meg paramétert
if( !params[ 0 ] )
{
// Tárolók létrehozása
new
GL_l_Short[ MAX_LANGUAGE_SHORT_LEN ],
myString[ 32 ],
counter = 1;
// Üzenet
SendClientMessage( playerid, 0xFFFF00AA, \"Language list:\" );
// Ciklust indítunk
for( new j = 0; j < MAX_LANGUAGES; j++ )
{
// Ha aktív
if( Language_IsActive( j ) )
{
// Tároljuk a rövidítését
Language_GetShort( j, GL_l_Short, sizeof( GL_l_Short ) );
// Formázás
format( myString, sizeof( myString ), \"%d.) %s\", counter, GL_l_Short);
// Elküldjük üzenetként
SendClientMessage( playerid, 0xAFAFAFAA, myString );
// Növeljük a számlálót
counter++;
}
}
// Üzenet
SendClientMessage( playerid, 0xFFFF00AA, \"Usage: /language [short(form list)]\" );
}
// Ha van paraméter
else
{
// Tárolók létrehozása
new
GL_l_Short[ MAX_LANGUAGE_SHORT_LEN ],
myString[ 128 ],
j;
// Ciklust indítunk
for( j = 0; j < MAX_LANGUAGES; j++ )
{
// Ha aktív
if( Language_IsActive( j ) )
{
// Tároljuk a rövidítését
Language_GetShort( j, GL_l_Short, sizeof( GL_l_Short ) );
// Ha a rövidítés egyezik, megállunk
if( !strcmp( GL_l_Short, params, true ) ) break;
}
}
// Ha nem találtuk meg
if( j == MAX_LANGUAGES )
{
SendClientMessage( playerid, 0xAA3333AA, \"Invalid language short,sorry!\" );
// Sikertelen visszatérés
return 1;
}
// Formázás
format( myString, sizeof( myString ), \"Language succesfull changed to (short): %s\", GL_l_Short );
// Üzenet
SendClientMessage( playerid, 0xFFFFFFAA, myString );
// Módosítás
Language_SetPlayerLanguage( playerid, j );
}
#endif
// Visszatérés
return 1;
}
#undef language_dcmd
#if defined _ALS_OnDialogResponse
#undef OnDialogResponse
#else
#define _ALS_OnDialogResponse
#endif
#define OnDialogResponse Language_OnDialogResponse
forward Language_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
#if defined _ALS_OnFilterScriptInit
#undef OnFilterScriptInit
#else
#define _ALS_OnFilterScriptInit
#endif
#define OnFilterScriptInit Language_OnFilterScriptInit
forward Language_OnFilterScriptInit();
#if defined _ALS_OnGameModeInit
#undef OnGameModeInit
#else
#define _ALS_OnGameModeInit
#endif
#define OnGameModeInit Language_OnGameModeInit
forward Language_OnGameModeInit();
#if defined _ALS_OnPlayerConnect
#undef OnPlayerConnect
#else
#define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect Language_OnPlayerConnect
forward Language_OnPlayerConnect(playerid);
#if defined _ALS_OnPlayerText
#undef OnPlayerText
#else
#define _ALS_OnPlayerText
#endif
#define OnPlayerText Language_OnPlayerText
forward Language_OnPlayerText(playerid, text[]);
#if defined _ALS_OnPlayerCommandText
#undef OnPlayerCommandText
#else
#define _ALS_OnPlayerCommandText
#endif
#define OnPlayerCommandText Language_OnPlayerCommandText
forward Language_OnPlayerCommandText(playerid, cmdtext[ ] );