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

Статус
В этой теме нельзя размещать новые ответы.

Dreizehnt

Доминик
Сообщения
1,160
Реакции
798
Не знаю как добавить файл перевода в плагин (интересуют 535, 536 и 540, 541 строчки плагина - отображены в виде меню SourceMOD), как я понимаю, нужно вместо слов вписать "ключи", по которым файл перевода будет выставлять слова в зависимости языка, задать глобальную настройку по плагину - тёмный лес вообщем. Или будет достаточно написать по-английски в плагине, потом в файле перевода точно написать предложение и дать ему переводы на языки? Если так можно, то как-то так выглядит или нет:
C-подобный:
public void OnPluginStart()
{
LoadTranslations("skins_chooser.phrases");
}

А файл перевода такой:
C-подобный:
"Phrases"
{
    "Выберите персонажа:"
    {
        "en"            "Choose skin:"
        "ru"            "Выберите персонажа:"
    }

    "Случайный"
    {
        "en"            "Random"
        "ru"            "Случайный"
    }
}

Если это само по себе не трудоёмко помогите пожалуйста.
 

Вложения

  • Skins_Chooser.sp
    17.3 КБ · Просмотры: 7

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #2
тебе немного не так нужно. Из-за того что меню создаются 1 раз для всех нужно сделать так:
  1. Замени это
    PHP:
    t_skins_menu  = CreateMenu(MenuHandler_ChooseSkin, MenuAction_Select);
    ct_skins_menu = CreateMenu(MenuHandler_ChooseSkin, MenuAction_Select);
    на
    PHP:
    ct_skins_menu = CreateMenu(MenuHandler_ChooseSkin, MenuAction_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:menu, MenuAction:action, client, param)
    на
    PHP:
    public MenuHandler_ChooseSkin(Handle:menu, MenuAction:action, client, param)
    {
    	switch(action)
    	{
    		case MenuAction_Display:
    		{
    			decl String:sBuffer[64];
    			FormatEx(sTitle, sizeof(sTitle), "%T\n ", "Choose_skin", iClient);
    			SetPanelTitle(Handle:param, sBuffer);
    		}
    		case MenuAction_DisplayItem:
    		{
    			decl String:skin_id[10];
    			GetMenuItem(menu, param, skin_id, sizeof(skin_id));
    			if (StrEqual(skin_id, "random"))
    			{
    				decl String:sBuffer[64];
    				FormatEx(sTitle, sizeof(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(menu, param, skin_id, sizeof(skin_id));
    
    			// Make sure we havent selected random skin
    			if (!StrEqual(skin_id, "random"))
    			{
    				// Get skin number
    				new skin = StringToInt(skin_id, sizeof(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(client, TerrorSkin[skin]);
    							SetEntPropString(client, Prop_Send, "m_szArmsModel", TerrorArms[skin]);
    							
    							if (IsClientInGame(client) && ! IsFakeClient(client))
    							{
    								CreateTimer(0.15, RemoveItemTimer, EntIndexToEntRef(client), TIMER_FLAG_NO_MAPCHANGE);
    							}
    						}
    						case CS_TEAM_CT:
    						{
    							SetEntityModel(client, CTerrorSkin[skin]);
    							SetEntPropString(client, Prop_Send, "m_szArmsModel", CTerrorArms[skin]);
    							
    							if (IsClientInGame(client) && ! IsFakeClient(client))
    							{
    								CreateTimer(0.15, RemoveItemTimer, EntIndexToEntRef(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");
    }
 

Dreizehnt

Доминик
Сообщения
1,160
Реакции
798
@R1KO, cпасибо за помощь, только не у меня ошибки при компиляции, пытался sTitle прописать или заменить чет не вышло XD
C-подобный:
//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 ...
 

Вложения

  • Skins_Chooser.sp
    18.7 КБ · Просмотры: 4

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #4
@Dreizehnt, держи :ab:
C-подобный:
//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 ...
 

Вложения

  • Skins_Chooser.sp
    18.6 КБ · Просмотры: 7

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #6
@AlmazON, недоглядел, да(
Поправил в посте. Спасибо за наводку.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #8
@AlmazON, не знаю, не проверял, но на wiki именно панель
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу