GM with two languages
#1

Hi all, i've got a little problem with the scripting of my gm. I want to made it with two languages, but i want to find the best way to do this.
I've used something like this:
pawn Код:
switch(language[playerid]) {
            case 0: {
            SendClientMessage(playerid,COLOR_GREEN,"*** Ciao!"); }
            case 1: {
            SendClientMessage(playerid,COLOR_GREEN,"*** Hello!"); } }
But i've got a problem with return, because i think it will cause a lot of lag 'cause i have to repeat the same script twice or three times in each command :
pawn Код:
COMMAND:fix(playerid,params[])
{
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "*** Non sei in un veicolo!");
    if(cookies[playerid] <= 0) return SendClientMessage(playerid,COLOR_RED, "*** Sei senza soldi!");
    new vehicleid = GetPlayerVehicleID(playerid);
    SetVehicleHealth(vehicleid, 1000.0);
    RepairVehicle(vehicleid);
    PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
    GivePlayerMoney(playerid,-100);
    SendClientMessage(playerid, COLOR_GREEN, "*** Il tuo veicolo и stato riparato pagando 100$!");
    return 1;
}
Do you know a better way? Thanks
Reply
#2

Do it like this
pawn Код:
switch(language[playerid]) {
            case 0: {
            SendClientMessage(playerid,COLOR_GREEN,"*** Ciao!"); }
            case 1: {
            SendClientMessage(playerid,COLOR_GREEN,"*** Hello!"); }
            default: { {
            SendClientMessage(playerid,COLOR_GREEN,"*** Default Language"); } }
Reply
#3

What? I only want to find a better way to make 2 different cases for each return
Because, if i use my code the script will be this:
pawn Код:
COMMAND:fix(playerid,params[])
{
    if(!IsPlayerInAnyVehicle(playerid))
    {
            switch(language[playerid]) {
            case 0: {
            SendClientMessage(playerid, COLOR_RED, "*** In ITA"); }
            case 1: {
            SendClientMessage(playerid, COLOR_RED, "*** In ENG"); } }
    }
    if(GetPlayerMoney(playerid) < 100)
    {
            switch(language[playerid]) {
            case 0: {
            SendClientMessage(playerid, COLOR_RED, "*** In ITA"); }
            case 1: {
            SendClientMessage(playerid, COLOR_RED, "*** In ENG"); } }
    }
    new vehicleid = GetPlayerVehicleID(playerid);
    SetVehicleHealth(vehicleid, 1000.0);
    RepairVehicle(vehicleid);
    PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
    GivePlayerMoney(playerid,-100);
    switch(language[playerid]) {
    case 0: {
    SendClientMessage(playerid, COLOR_RED, "*** In ITA"); }
    case 1: {
    SendClientMessage(playerid, COLOR_RED, "*** In ENG"); } }
    return 1;
}
Is this the only way?
Reply
#4

You could use y_languages.

https://sampforum.blast.hk/showthread.php?tid=295580
Reply
#5

Quote:
Originally Posted by ReshiramZekrom
Посмотреть сообщение
What? I only want to find a better way to make 2 different cases for each return
Because, if i use my code the script will be this:
[pawn]
COMMAND:fix(playerid,params[])
{
if(!IsPlayerInAnyVehicle(playerid))
{
switch(language[playerid]) {
case 0: {
SendClientMessage(playerid, COLOR_RED, "*** In ITA"); }
case 1: {
SendClientMessage(playerid, COLOR_RED, "*** In ENG"); } }
}
if(GetPlayerMoney(playerid) < 100)
{
switch(language[playerid]) {
case 0: {
SendClientMessage(playerid, COLOR_RED, "*** In ITA"); }
case 1: {
SendClientMessage(playerid, COLOR_RED, "*** In ENG"); } }
}
new vehicleid = GetPlayerVehicleID(playerid);
SetVehicleHealth(vehicleid, 1000.0);
RepairVehicle(vehicleid);
PlayerPlaySound(playerid, 1133, 0.0, 0.0, 0.0);
Use a function like this:

pawn Код:
stock SendLanguageMessage(playerid,color,lang1[128],lang2[128])
{
    switch(pLanguage[playerid])
    {
        case 0: SendClientMessage(playerid,color,lang1);
        case 1: SendClientMessage(playerid,color,lang2);
        default: SendClientMessage(playerid,-1,"an error has occured.");
    }
    return 1;
}
Reply
#6

Thanks!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)