Русификация плагина Noblock Trigger v1.01

Тема в разделе "Программирование / Скриптинг", создана пользователем legend2360, 25 апр 2012.

  1. legend2360

    legend2360

    Сообщения:
    16
    Симпатии:
    1
    Здравствуйте! Я решил перевести плагин с помощью .phrases .
    Плагин который я хотел русифицировать: http://hlmod.ru/forum/showthread.php?t=8330
    _______________
    Вот что я сделал в исходнике:
    PHP:
    #include <sourcemod>
    #include <sdktools>

    #define PLUGIN_VERSION "1.01"
    #define SM "\x04[SM]\x01"

    public Plugin:myinfo =
    {
        
    name "Noblock Trigger",
        
    author "Heartless",
        
    description "Allows players to enable noblock on everyone in the server for x seconds",
        
    version PLUGIN_VERSION,
        
    url "http://www.badnetwork.net/"
    };

    new 
    g_CollisionOffset;
    new 
    TimerActive;
    new 
    Handle:sm_noblock_time INVALID_HANDLE;

    public 
    OnPluginStart()
    {
        
    RegConsoleCmd("sm_noblock"Command_NoBlock);
        
    g_CollisionOffset FindSendPropInfo("CBaseEntity""m_CollisionGroup");
        
    sm_noblock_time CreateConVar("sm_noblock_time""5""Sets the noblock timer value");
        
    AutoExecConfig(true"sm_noblock");
        
    LoadTranslations("noblocktrigger.phrases");
    }

    public 
    Action:Command_NoBlock(clientargs)
    {
        if (
    IsClientInGame(client) && IsPlayerAlive(client) && TimerActive == 0)
        {
            new 
    Float:Time;
            
    Time GetConVarFloat(sm_noblock_time);
            
    PrintToChatAll("%t""Enable"SMTime);    
            
    TimerActive 1;
            
    CreateTimer(TimeTimer_UnBlockPlayerclient);
            
            
    // enable noblock on every client in the server
            
    for (new 1<= MaxClientsi++)
            {    
                if (
    IsClientInGame(i) && IsPlayerAlive(i))
                {
                    
    EnableNoBlock(i);
                }
            }
        }
        else if (
    TimerActive == 1)
        {
            
    PrintToChat(client"%t""Arleady"SM);
        }
        else
        {
            
    PrintToChat(client"%t""Alive"SM);
        }
        
        return 
    Plugin_Handled;
        
    }

    public 
    Action:Timer_UnBlockPlayer(Handle:timerany:client)
    {
        
    TimerActive 0;
        
    PrintToChatAll("%t""Disable"SM);
        
        
    // enable block on every client in the server
        
    for (new 1<= MaxClientsi++)
        {    
            if (
    IsClientInGame(i) && IsPlayerAlive(i))
            {
                
    EnableBlock(i);
            }
        }
        
        return 
    Plugin_Continue;
        
    }

    EnableBlock(client)
    {
        
    // CAN NOT PASS THRU ie: Players can jump on each other
        
    SetEntData(clientg_CollisionOffset54true);
    }

    EnableNoBlock(client)
    {
        
    // Noblock active ie: Players can walk thru each other
        
    SetEntData(clientg_CollisionOffset24true);
    }
    А в noblocktrigger.phrases.txt:
    PHP:
    "Phrases"
    {
        
    "Enable"
        
    {
            
    "#format"  "{1:s},{2:s}"
            "en"    "{1} Noblock enabled for {2} seconds"
        
    }
        
    "Arleady"
        
    {
            
    "#format"    "{1:s}"
            "en"    "{1} Command is already in use"
        
    }
        
    "Alive"
        
    {
            
    "#format"    "{1:s}"
            "en"    "{1} You must be alive to use this command"
        
    }
        
    "Disable"
        
    {
            
    "#format"    "{1:s}"
            "en"    "{1} Noblock is Disabled"
        
    }
    }

    В /ru/noblocktrigger.phrases.txt:
    PHP:
    "Phrases"
    {
        
    "Enable"
        
    {
            
    "ru"    "{1} NoBlock включен на {2} секунд."
        
    }
        
    "Arleady"
        
    {
            
    "ru"    "{1} Команда уже используется!"
        
    }
        
    "Alive"
        
    {
            
    "ru"    "{1} Ты должен быть живым, чтобы использовать эту команду!"
        
    }
        
    "Disable"
        
    {
            
    "ru"    "{1} Noblock отключен."
        
    }
    }
    Но {2} (секунды) не пишутся.
    Получается на сервере так:
    [SM] NoBlock включен на секунд.

    Может я что-то неправильно сделал? Помогите, пожалуйста.
     
    Последнее редактирование модератором: 25 апр 2012
  2. White Wolf

    White Wolf [] (int _n) -> double { return (_n % 2) == 0;}); Супер-модератор

    Сообщения:
    1.194
    Симпатии:
    427
    Re: Русификация плагина

    Забыл про "#format" "{1:s},{2:s}"
     
  3. Игорь Охремчук

    Игорь Охремчук Админ uaplayer.com

    Сообщения:
    243
    Симпатии:
    366
    Re: Русификация плагина

    Float:Time и {2:s} говорят о себе. Зачем же число с плавающей точкой пихать туда, где должна быть строка?)
    Измените {2:s} на {2:f}
     
    legend2360 нравится это.
  4. legend2360

    legend2360

    Сообщения:
    16
    Симпатии:
    1
    Re: Русификация плагина

    Сейчас попробую.

    Кокраз так и должно быть, потому что если я вставлю в 1 prahses "#format, ru и en", то в error логи будет выводить ошибку, что "языка #format нету, игнорируем", а этот спам мне не нужен ^_^

    Добавлено через 10 минут
    Спасибо. Помогло.
     
    Последнее редактирование: 25 апр 2012
  5. semjef

    semjef semjef.ru

    Сообщения:
    1.031
    Симпатии:
    473
    для красивости можно сделать так...

    PHP:
    #include <sourcemod>
    #include <sdktools>

    #define PLUGIN_VERSION "1.01"
    #define SM "\x04[SM]\x01"

    public Plugin:myinfo =
    {
        
    name "Noblock Trigger",
        
    author "Heartless",
        
    description "Allows players to enable noblock on everyone in the server for x seconds",
        
    version PLUGIN_VERSION,
        
    url "http://www.badnetwork.net/"
    };

    new 
    g_CollisionOffset;
    new 
    TimerActive;
    new 
    Handle:sm_noblock_time INVALID_HANDLE;

    public 
    OnPluginStart()
    {
        
    RegConsoleCmd("sm_noblock"Command_NoBlock);
        
    g_CollisionOffset FindSendPropInfo("CBaseEntity""m_CollisionGroup");
        
    sm_noblock_time CreateConVar("sm_noblock_time""5""Sets the noblock timer value");
        
    AutoExecConfig(true"sm_noblock");
        
    LoadTranslations("noblocktrigger.phrases");
    }

    public 
    Action:Command_NoBlock(clientargs)
    {
        if (
    IsClientInGame(client) && IsPlayerAlive(client) && TimerActive == 0)
        {
            new 
    Float:Time;
            
    Time GetConVarFloat(sm_noblock_time);
            new 
    timeint GetConVarInt(sm_noblock_time);
            
    PrintToChatAll("%t""Enable"SMtimeint);    
            
    TimerActive 1;
            
    CreateTimer(TimeTimer_UnBlockPlayerclient);
            
            
    // enable noblock on every client in the server
            
    for (new 1<= MaxClientsi++)
            {    
                if (
    IsClientInGame(i) && IsPlayerAlive(i))
                {
                    
    EnableNoBlock(i);
                }
            }
        }
        else if (
    TimerActive == 1)
        {
            
    PrintToChat(client"%t""Arleady"SM);
        }
        else
        {
            
    PrintToChat(client"%t""Alive"SM);
        }
        
        return 
    Plugin_Handled;
        
    }

    public 
    Action:Timer_UnBlockPlayer(Handle:timerany:client)
    {
        
    TimerActive 0;
        
    PrintToChatAll("%t""Disable"SM);
        
        
    // enable block on every client in the server
        
    for (new 1<= MaxClientsi++)
        {    
            if (
    IsClientInGame(i) && IsPlayerAlive(i))
            {
                
    EnableBlock(i);
            }
        }
        
        return 
    Plugin_Continue;
        
    }

    EnableBlock(client)
    {
        
    // CAN NOT PASS THRU ie: Players can jump on each other
        
    SetEntData(clientg_CollisionOffset54true);
    }

    EnableNoBlock(client)
    {
        
    // Noblock active ie: Players can walk thru each other
        
    SetEntData(clientg_CollisionOffset24true);

    И измени {2:f} на {2:d} просто это немного красивее:D
     
  6. Dark of Kings

    Dark of Kings

    Сообщения:
    17
    Симпатии:
    6
    Если нужен еще
     

    Вложения: