[CS: GO] Добавление перевода на примере Skins_Chooser 1.2.3 (1.2.4) от root

Тема в разделе "Требуется", создана пользователем Dreizehnt, 2 окт 2016.

  1. Dreizehnt

    Dreizehnt Unteroffizier

    Сообщения:
    622
    Симпатии:
    203
    Не знаю как добавить файл перевода в плагин (интересуют 535, 536 и 540, 541 строчки плагина - отображены в виде меню SourceMOD), как я понимаю, нужно вместо слов вписать "ключи", по которым файл перевода будет выставлять слова в зависимости языка, задать глобальную настройку по плагину - тёмный лес вообщем. Или будет достаточно написать по-английски в плагине, потом в файле перевода точно написать предложение и дать ему переводы на языки? Если так можно, то как-то так выглядит или нет:
    Код:
    public void OnPluginStart()
    {
    LoadTranslations("skins_chooser.phrases");
    }
    А файл перевода такой:
    Код:
    "Phrases"
    {
        "Выберите персонажа:"
        {
            "en"            "Choose skin:"
            "ru"            "Выберите персонажа:"
        }
    
        "Случайный"
        {
            "en"            "Random"
            "ru"            "Случайный"
        }
    }
    Если это само по себе не трудоёмко помогите пожалуйста.
     

    Вложения:

  2. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.985
    Симпатии:
    2.983
    тебе немного не так нужно. Из-за того что меню создаются 1 раз для всех нужно сделать так:
    1. Замени это
      PHP:
      t_skins_menu  CreateMenu(MenuHandler_ChooseSkinMenuAction_Select);
      ct_skins_menu CreateMenu(MenuHandler_ChooseSkinMenuAction_Select);
      на
      PHP:
      ct_skins_menu CreateMenu(MenuHandler_ChooseSkinMenuAction_Select|MenuAction_Display|MenuAction_DisplayItem);
    2. Это
      PHP:
      AddMenuItem(t_skins_menu,  "Случайный""Случайный");
      AddMenuItem(ct_skins_menu"Случайный""Случайный");
      на это
      PHP:
      AddMenuItem(t_skins_menu,  "random""Случайный");
      AddMenuItem(ct_skins_menu"random""Случайный");
    3. потом весь
      PHP:
      public MenuHandler_ChooseSkin(Handle:menuMenuAction:actionclientparam)
      на
      PHP:
      public MenuHandler_ChooseSkin(Handle:menuMenuAction:actionclientparam)
      {
          switch(
      action)
          {
              case 
      MenuAction_Display:
              {
                  
      decl String:sBuffer[64];
                  
      FormatEx(sTitlesizeof(sTitle), "%T\n ""Choose_skin"iClient);
                  
      SetPanelTitle(Handle:paramsBuffer);
              }
              case 
      MenuAction_DisplayItem:
              {
                  
      decl String:skin_id[10];
                  
      GetMenuItem(menuparamskin_idsizeof(skin_id));
                  if (
      StrEqual(skin_id"random"))
                  {
                      
      decl String:sBuffer[64];
                      
      FormatEx(sTitlesizeof(sTitle), "%T\n ""Random"iClient);
                      return 
      RedrawMenuItem(sTitle);
                  }
              }
              case 
      MenuAction_Select:
              {
                  
      // Don't use any other value than 10, otherwise you may crash clients and a server
                  
      decl String:skin_id[10];
                  
      GetMenuItem(menuparamskin_idsizeof(skin_id));

                  
      // Make sure we havent selected random skin
                  
      if (!StrEqual(skin_id"random"))
                  {
                      
      // Get skin number
                      
      new skin StringToInt(skin_idsizeof(skin_id));

                      
      // Correct. So lets save the selected skin
                      
      Selected[client] = skin;

                      
      // Set player model and arms immediately
                      
      if (GetConVarBool(sc_changetype))
                      {
                          
      // Depends on client team obviously
                          
      switch (GetClientTeam(client))
                          {
                              case 
      CS_TEAM_T:
                              {
                                  
      SetEntityModel(clientTerrorSkin[skin]);
                                  
      SetEntPropString(clientProp_Send"m_szArmsModel"TerrorArms[skin]);
                                  
                                  if (
      IsClientInGame(client) && ! IsFakeClient(client))
                                  {
                                      
      CreateTimer(0.15RemoveItemTimerEntIndexToEntRef(client), TIMER_FLAG_NO_MAPCHANGE);
                                  }
                              }
                              case 
      CS_TEAM_CT:
                              {
                                  
      SetEntityModel(clientCTerrorSkin[skin]);
                                  
      SetEntPropString(clientProp_Send"m_szArmsModel"CTerrorArms[skin]);
                                  
                                  if (
      IsClientInGame(client) && ! IsFakeClient(client))
                                  {
                                      
      CreateTimer(0.15RemoveItemTimerEntIndexToEntRef(client), TIMER_FLAG_NO_MAPCHANGE);
                                  }
                              }
                          }
                      }
                  }
                  else 
      Selected[client] = RANDOM_SKIN;
              }
          }
          
          return 
      0;
      }
    4. В файле перевода:
      PHP:
      "Phrases"
      {
          
      "Choose_skin"
          
      {
              
      "en"            "Choose skin:"
              "ru"            "Выберите персонажа:"
          
      }

          
      "Random"
          
      {
              
      "en"            "Random"
              "ru"            "Случайный"
          
      }
      }
    5. Ну и
      PHP:
      public void OnPluginStart()
      {
          
      LoadTranslations("skins_chooser.phrases");
      }
     
  3. Dreizehnt

    Dreizehnt Unteroffizier

    Сообщения:
    622
    Симпатии:
    203
    @R1KO, cпасибо за помощь, только не у меня ошибки при компиляции, пытался sTitle прописать или заменить чет не вышло XD
    Код:
    //SourceMod Batch Compiler
    // by the SourceMod Dev Team
    
    
    //// Skins_Chooser.sp
    //
    // D:\5930_win\addons\sourcemod\scripting\Skins_Chooser.sp(58) : warning 234: symbol "FCVAR_PLUGIN" is marked as deprecated: No logic using this flag ever existed in a released game. It only ever appeared in the first hl2sdk.
    //
    //
    // D:\5930_win\addons\sourcemod\scripting\Skins_Chooser.sp(59) : warning 234: symbol "FCVAR_PLUGIN" is marked as deprecated: No logic using this flag ever existed in a released game. It only ever appeared in the first hl2sdk.
    //
    //
    // D:\5930_win\addons\sourcemod\scripting\Skins_Chooser.sp(60) : warning 234: symbol "FCVAR_PLUGIN" is marked as deprecated: No logic using this flag ever existed in a released game. It only ever appeared in the first hl2sdk.
    //
    //
    // D:\5930_win\addons\sourcemod\scripting\Skins_Chooser.sp(61) : warning 234: symbol "FCVAR_PLUGIN" is marked as deprecated: No logic using this flag ever existed in a released game. It only ever appeared in the first hl2sdk.
    //
    //
    // D:\5930_win\addons\sourcemod\scripting\Skins_Chooser.sp(62) : warning 234: symbol "FCVAR_PLUGIN" is marked as deprecated: No logic using this flag ever existed in a released game. It only ever appeared in the first hl2sdk.
    //
    //
    // D:\5930_win\addons\sourcemod\scripting\Skins_Chooser.sp(333) : error 017: undefined symbol "sTitle"
    // D:\5930_win\addons\sourcemod\scripting\Skins_Chooser.sp(333) : error 017: undefined symbol "sTitle"
    // D:\5930_win\addons\sourcemod\scripting\Skins_Chooser.sp(333) : error 029: invalid expression, assumed zero
    // D:\5930_win\addons\sourcemod\scripting\Skins_Chooser.sp(333) : fatal error 190: too many error messages on one line
    //
    // Compilation aborted.
    // 4 Errors.
    //
    // Compilation Time: 0,19 sec
    // ----------------------------------------
    
    Press enter to exit ...
     

    Вложения:

  4. CrazyHackGUT

    CrazyHackGUT Меня здесь нет

    Сообщения:
    840
    Симпатии:
    529
    @Dreizehnt, держи :ab:
    Код:
    //SourceMod Batch Compiler
    // by the SourceMod Dev Team
    
    
    //// Skins_Chooser.sp
    //
    // Code size:  12796 bytes
    // Data size:  110076 bytes
    // Stack/heap size:  16384 bytes
    // Total requirements:  139256 bytes
    //
    // Compilation Time: 1,29 sec
    // ----------------------------------------
    
    Press enter to exit ...
     

    Вложения:

  5. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.521
    Симпатии:
    1.972
    Скоро будет жаловаться на ошибки в логах.
     
    CrazyHackGUT нравится это.
  6. CrazyHackGUT

    CrazyHackGUT Меня здесь нет

    Сообщения:
    840
    Симпатии:
    529
    @AlmazON, недоглядел, да(
    Поправил в посте. Спасибо за наводку.
     
  7. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.521
    Симпатии:
    1.972
    Не критично, но, чтобы тоже не забывалось: SetMenuTitle сам умеет форматировать строку, поэтому 2 строки выше - лишние.
     
  8. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.985
    Симпатии:
    2.983
    @AlmazON, не знаю, не проверял, но на wiki именно панель
     
  9. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.521
    Симпатии:
    1.972
    Странно. Не пробовал с:
    Но просто использовать "напрямую" - получить ошибку.