diff --git a/enhanced_playermodel_selector.psd b/enhanced_playermodel_selector.psd new file mode 100644 index 0000000..01c9fff Binary files /dev/null and b/enhanced_playermodel_selector.psd differ diff --git a/enhanced_playermodel_selector_localization.jpg b/enhanced_playermodel_selector_localization.jpg new file mode 100644 index 0000000..ef87836 Binary files /dev/null and b/enhanced_playermodel_selector_localization.jpg differ diff --git a/lua/autorun/enhanced_playermodel_selector/default_playermodels.lua b/lua/autorun/enhanced_playermodel_selector/default_playermodels.lua new file mode 100644 index 0000000..91ca8ed --- /dev/null +++ b/lua/autorun/enhanced_playermodel_selector/default_playermodels.lua @@ -0,0 +1,101 @@ + +AddCSLuaFile() + +DefaultPlayerModels = { + ["models/player/alyx.mdl"] = true, + ["models/player/barney.mdl"] = true, + ["models/player/breen.mdl"] = true, + ["models/player/charple.mdl"] = true, + ["models/player/p2_chell.mdl"] = true, + ["models/player/corpse1.mdl"] = true, + ["models/player/combine_soldier.mdl"] = true, + ["models/player/combine_soldier_prisonguard.mdl"] = true, + ["models/player/combine_super_soldier.mdl"] = true, + ["models/player/eli.mdl"] = true, + ["models/player/gman_high.mdl"] = true, + ["models/player/kleiner.mdl"] = true, + ["models/player/monk.mdl"] = true, + ["models/player/mossman.mdl"] = true, + ["models/player/mossman_arctic.mdl"] = true, + ["models/player/odessa.mdl"] = true, + ["models/player/police.mdl"] = true, + ["models/player/police_fem.mdl"] = true, + ["models/player/magnusson.mdl"] = true, + ["models/player/soldier_stripped.mdl"] = true, + ["models/player/zombie_classic.mdl"] = true, + ["models/player/zombie_fast.mdl"] = true, + + -- Citizens + ["models/player/Group01/male_01.mdl"] = true, + ["models/player/Group01/male_02.mdl"] = true, + ["models/player/Group01/male_03.mdl"] = true, + ["models/player/Group01/male_04.mdl"] = true, + ["models/player/Group01/male_05.mdl"] = true, + ["models/player/Group01/male_06.mdl"] = true, + ["models/player/Group01/male_07.mdl"] = true, + ["models/player/Group01/male_08.mdl"] = true, + ["models/player/Group01/male_09.mdl"] = true, + ["models/player/Group01/female_01.mdl"] = true, + ["models/player/Group01/female_02.mdl"] = true, + ["models/player/Group01/female_03.mdl"] = true, + ["models/player/Group01/female_04.mdl"] = true, + ["models/player/Group01/female_05.mdl"] = true, + ["models/player/Group01/female_06.mdl"] = true, + + -- Refugees + ["models/player/Group03/male_01.mdl"] = true, + ["models/player/Group03/male_02.mdl"] = true, + ["models/player/Group03/male_03.mdl"] = true, + ["models/player/Group03/male_04.mdl"] = true, + ["models/player/Group03/male_05.mdl"] = true, + ["models/player/Group03/male_06.mdl"] = true, + ["models/player/Group03/male_07.mdl"] = true, + ["models/player/Group03/male_08.mdl"] = true, + ["models/player/Group03/male_09.mdl"] = true, + ["models/player/Group03/female_01.mdl"] = true, + ["models/player/Group03/female_02.mdl"] = true, + ["models/player/Group03/female_03.mdl"] = true, + ["models/player/Group03/female_04.mdl"] = true, + ["models/player/Group03/female_05.mdl"] = true, + ["models/player/Group03/female_06.mdl"] = true, + + ["models/player/Group02/male_02.mdl"] = true, + ["models/player/Group02/male_04.mdl"] = true, + ["models/player/Group02/male_06.mdl"] = true, + ["models/player/Group02/male_08.mdl"] = true, + + -- Medics + ["models/player/Group03m/male_01.mdl"] = true, + ["models/player/Group03m/male_02.mdl"] = true, + ["models/player/Group03m/male_03.mdl"] = true, + ["models/player/Group03m/male_04.mdl"] = true, + ["models/player/Group03m/male_05.mdl"] = true, + ["models/player/Group03m/male_06.mdl"] = true, + ["models/player/Group03m/male_07.mdl"] = true, + ["models/player/Group03m/male_08.mdl"] = true, + ["models/player/Group03m/male_09.mdl"] = true, + ["models/player/Group03m/female_01.mdl"] = true, + ["models/player/Group03m/female_02.mdl"] = true, + ["models/player/Group03m/female_03.mdl"] = true, + ["models/player/Group03m/female_04.mdl"] = true, + ["models/player/Group03m/female_05.mdl"] = true, + ["models/player/Group03m/female_06.mdl"] = true, + + ["models/player/skeleton.mdl"] = true, + ["models/player/zombie_soldier.mdl"] = true, + ["models/player/hostage/hostage_01.mdl"] = true, + ["models/player/hostage/hostage_02.mdl"] = true, + ["models/player/hostage/hostage_03.mdl"] = true, + ["models/player/hostage/hostage_04.mdl"] = true, + ["models/player/arctic.mdl"] = true, + ["models/player/gasmask.mdl"] = true, + ["models/player/guerilla.mdl"] = true, + ["models/player/leet.mdl"] = true, + ["models/player/phoenix.mdl"] = true, + ["models/player/riot.mdl"] = true, + ["models/player/swat.mdl"] = true, + ["models/player/urban.mdl"] = true, + ["models/player/dod_german.mdl"] = true, + ["models/player/dod_american.mdl"] = true + +} \ No newline at end of file diff --git a/lua/autorun/lf_playermodel_selector.lua b/lua/autorun/lf_playermodel_selector.lua index 2651033..0fb44ae 100644 --- a/lua/autorun/lf_playermodel_selector.lua +++ b/lua/autorun/lf_playermodel_selector.lua @@ -1,7 +1,8 @@ -- Enhanced PlayerModel Selector --- Upgraded code by LibertyForce http://steamcommunity.com/id/libertyforce +-- Upgraded code by LibertyForce https://steamcommunity.com/id/libertyforce -- Based on: https://github.com/garrynewman/garrysmod/blob/1a2c317eeeef691e923453018236cf9f66ee74b4/garrysmod/gamemodes/sandbox/gamemode/editor_player.lua +include("enhanced_playermodel_selector/default_playermodels.lua") local flag = { FCVAR_REPLICATED } if SERVER then flag = { FCVAR_ARCHIVE, FCVAR_REPLICATED } end @@ -17,10 +18,8 @@ for cvar, def in pairs( convars ) do end flag = nil - if SERVER then - AddCSLuaFile() --util.AddNetworkString("lf_playermodel_client_sync") @@ -211,42 +210,42 @@ local function UpdatePlayerModel( ply ) timer.Simple( 0.1, function() if ply.SetupHands and isfunction( ply.SetupHands ) then ply:SetupHands() end end ) timer.Simple( 0.2, function() if ply:GetInfo( "cl_playerhands" ) != "" then mdlname = ply:GetInfo( "cl_playerhands" ) end - local mdlhands = player_manager.TranslatePlayerHands( mdlname ) + local HandsModel = player_manager.TranslatePlayerHands( mdlname ) - local hands_ent = ply:GetHands() - if hands_ent and mdlhands and istable( mdlhands ) then - if hands_ent:GetModel() != mdlhands.model then + local HandsEntity = ply:GetHands() + if HandsEntity and HandsModel and istable( HandsModel ) then + if HandsEntity:GetModel() != HandsModel.model then if debugmode then print( "LF_PMS: SetupHands failed. Gamemode doesn't implement this function correctly. Trying workaround..." ) end - if ( IsValid( hands_ent ) ) then - hands_ent:SetModel( mdlhands.model ) - hands_ent:SetSkin( mdlhands.skin ) - hands_ent:SetBodyGroups( mdlhands.body ) + if ( IsValid( HandsEntity ) ) then + HandsEntity:SetModel( HandsModel.model ) + HandsEntity:SetSkin( HandsModel.skin ) + HandsEntity:SetBodyGroups( HandsModel.body ) local skin = ply:GetInfoNum( "cl_playerhandsskin", 0 ) - hands_ent:SetSkin( skin ) + HandsEntity:SetSkin( skin ) if debugmode then print( "LF_PMS: Set hands model skin to no.: "..tostring( skin ) ) end local groups = ply:GetInfo( "cl_playerhandsbodygroups" ) if ( groups == nil ) then groups = "" end local groups = string.Explode( " ", groups ) - for k = 0, hands_ent:GetNumBodyGroups() - 1 do + for k = 0, HandsEntity:GetNumBodyGroups() - 1 do local v = tonumber( groups[ k + 1 ] ) or 0 - hands_ent:SetBodygroup( k, v ) + HandsEntity:SetBodygroup( k, v ) if debugmode then print( "LF_PMS: Set hands bodygroup no. "..tostring( k ).." to: "..tostring( v ) ) end end if debugmode then timer.Simple( 0.2, function() - if hands_ent:GetModel() != mdlhands.model then + if HandsEntity:GetModel() != HandsModel.model then print( "LF_PMS: Workaround failed. Unable to setup viewmodel hands. Please check for incompatible addons." ) else - print( "LF_PMS: Workaround successful. Hands set to: "..mdlhands.model ) + print( "LF_PMS: Workaround successful. Hands set to: "..HandsModel.model ) end end ) end end else - if debugmode then print( "LF_PMS: SetupHands successful. Hands set to: "..tostring( mdlhands.model ) ) end + if debugmode then print( "LF_PMS: SetupHands successful. Hands set to: "..tostring( HandsModel.model ) ) end end else if debugmode then print( "LF_PMS: ERROR - SetupHands failed. player_manager.TranslatePlayerHands didn't return valid data. Please check for incompatible addons." ) end @@ -380,10 +379,11 @@ end if CLIENT then -local Version = "3.3, Fesiug's Edit" +local Version = "4.2" local Menu = { } -local Frame -local default_animations = { "idle_all_01", "menu_walk", "pose_standing_02", "pose_standing_03", "idle_fist" } +local MainWindow +local default_animations = { "idle_all_01", "menu_walk", "menu_combine", "pose_standing_02", "pose_standing_03", "idle_fist", "menu_gman", "idle_all_scared", "menu_zombie_01", "idle_magic", "walk_ar2" } +local currentanim = 0 local Favorites = { } --local addon_vox = false @@ -406,17 +406,30 @@ if file.Exists( "lf_playermodel_selector/cl_favorites.txt", "DATA" ) then end end +local function RRRotateAroundPoint(pos, ang, point, offset_ang) + local mat = Matrix() + mat:SetTranslation(pos) + mat:SetAngles(ang) + mat:Translate(point) + + local rot_mat = Matrix() + rot_mat:SetAngles(offset_ang) + rot_mat:Invert() + + mat:Mul(rot_mat) + + mat:Translate(-point) + + return mat:GetTranslation(), mat:GetAngles() +end CreateClientConVar( "cl_playermodel_selector_force", "1", true, true ) +CreateClientConVar( "cl_playermodel_selector_translate_bodygroup", "1", true, true ) +CreateClientConVar( "cl_playermodel_selector_hide_defaults", "0", true, true ) CreateClientConVar( "cl_playermodel_selector_unlockflexes", "0", false, true ) CreateClientConVar( "cl_playermodel_selector_bgcolor_custom", "1", true, true ) CreateClientConVar( "cl_playermodel_selector_bgcolor_trans", "1", true, true ) - ---net.Start("lf_playermodel_client_sync") ---net.SendToServer() ---net.Receive("lf_playermodel_client_sync", function() --- addon_vox = net.ReadBool() ---end ) +CreateClientConVar( "cl_playermodel_selector_ignorehands", "1", true, true ) hook.Add( "PostGamemodeLoaded", "lf_playermodel_sboxcvars", function() CreateConVar( "cl_playercolor", "0.24 0.34 0.41", { FCVAR_ARCHIVE, FCVAR_USERINFO, FCVAR_DONTRECORD }, "The value is a Vector - so between 0-1 - not between 0-255" ) @@ -431,14 +444,14 @@ end ) local function KeyboardOn( pnl ) - if ( IsValid( Frame ) and IsValid( pnl ) and pnl:HasParent( Frame ) ) then - Frame:SetKeyboardInputEnabled( true ) + if ( IsValid( MainWindow ) and IsValid( pnl ) and pnl:HasParent( MainWindow ) ) then + MainWindow:SetKeyboardInputEnabled( true ) end end hook.Add( "OnTextEntryGetFocus", "lf_playermodel_keyboard_on", KeyboardOn ) local function KeyboardOff( pnl ) - if ( IsValid( Frame ) and IsValid( pnl ) and pnl:HasParent( Frame ) ) then - Frame:SetKeyboardInputEnabled( false ) + if ( IsValid( MainWindow ) and IsValid( pnl ) and pnl:HasParent( MainWindow ) ) then + MainWindow:SetKeyboardInputEnabled( false ) end end hook.Add( "OnTextEntryLoseFocus", "lf_playermodel_keyboard_off", KeyboardOff ) @@ -466,19 +479,34 @@ end concommand.Add( "playermodel_loadfav", LoadFavorite ) +-- Horrible. I hate Garry's Mod +local HandIconGenerator = GetRenderTarget("HandIconGenerator", 512, 512) +local myMat2 = CreateMaterial( "HandIconGenerator_RTMat", "UnlitGeneric", { + ["$basetexture"] = HandIconGenerator:GetName(), -- Make the material use our render target texture + ["$translucent"] = 1, + ["$vertexcolor"] = 1, + ["$vertexalpha"] = 1, +} ) +local matshiny = Material("models/shiny") +local hasbgs = Material("eps/hasbgs4.png", "mips smooth") -- or hasbgs3 idk which better + + +function Menu.UpdateFromConvars() + -- wah wah dont error ples +end function Menu.Setup() - Frame = vgui.Create( "DFrame" ) + MainWindow = vgui.Create( "DFrame" ) local fw, fh = math.min( ScrW() - 16, 960 ), math.min( ScrH() - 16, 700 ) - Frame:SetSize( fw, fh ) - Frame:SetTitle( "Enhanced PlayerModel Selector "..Version ) - Frame:SetVisible( true ) - Frame:SetDraggable( true ) - Frame:SetScreenLock( false ) - Frame:ShowCloseButton( true ) - Frame:Center() - Frame:MakePopup() - Frame:SetKeyboardInputEnabled( false ) + MainWindow:SetSize( fw, fh ) + MainWindow:SetTitle( string.format(language.GetPhrase("EPS.Title"),Version) ) + MainWindow:SetVisible( true ) + MainWindow:SetDraggable( true ) + MainWindow:SetScreenLock( false ) + MainWindow:ShowCloseButton( true ) + MainWindow:Center() + MainWindow:MakePopup() + MainWindow:SetKeyboardInputEnabled( false ) local r, g, b = 97, 100, 102 if GetConVar( "cl_playermodel_selector_bgcolor_custom" ):GetBool() then local bgcolor = string.Explode( " ", GetConVar( "cl_playercolor" ):GetString() ) @@ -492,74 +520,84 @@ function Menu.Setup() end end local a = GetConVar( "cl_playermodel_selector_bgcolor_trans" ):GetBool() == true and 127 or 255 - Frame.Paint = function( self, w, h ) + MainWindow.Paint = function( self, w, h ) draw.RoundedBox( 10, 0, 0, w, h, Color( r, g, b, a ) ) return true end - Frame.lblTitle:SetTextColor( Color( 0, 0, 0, 255 ) ) - Frame.lblTitle.Paint = function ( self, w, h ) - draw.SimpleTextOutlined( Frame.lblTitle:GetText(), "DermaDefaultBold", 1, 2, Color( 255, 255, 255, 255), 0, 0, 1, Color( 0, 0, 0, 255) ) return true + MainWindow.lblTitle:SetTextColor( Color( 0, 0, 0, 255 ) ) + MainWindow.lblTitle.Paint = function ( self, w, h ) + draw.SimpleTextOutlined( MainWindow.lblTitle:GetText(), "DermaDefaultBold", 1, 2, Color( 255, 255, 255, 255), 0, 0, 1, Color( 0, 0, 0, 255) ) return true end - Frame.btnMinim:SetEnabled( true ) - Frame.btnMinim.DoClick = function() - Frame:SetVisible( false ) + MainWindow.btnMinim:SetEnabled( true ) + MainWindow.btnMinim.DoClick = function() + MainWindow:SetVisible( false ) end - --Frame.btnMaxim.Paint = function( panel, w, h ) derma.SkinHook( "Paint", "WindowMinimizeButton", panel, w, h ) end + --MainWindow.btnMaxim.Paint = function( panel, w, h ) derma.SkinHook( "Paint", "WindowMinimizeButton", panel, w, h ) end local maxi_allowed = false local maxi_mode = 0 if ScrW() > fw and ScrH() > fh then maxi_allowed = true end - Frame.btnMaxim:SetEnabled( maxi_allowed ) - Frame.btnMaxim.DoClick = function() + MainWindow.btnMaxim:SetEnabled( maxi_allowed ) + MainWindow.btnMaxim.DoClick = function() + local WorkshopButtonWidth, WorkshopButtonHeight = Menu.WorkshopButton:GetTextSize() + local ApplyButtonWidth, ApplyButtonHeight = Menu.ApplyButton:GetTextSize() + local ResetButtonWidth, ResetButtonHeight = Menu.ResetButton:GetTextSize() + local AnimButtonWidth, AnimButtonHeight = Menu.AnimButton:GetTextSize() if maxi_allowed and maxi_mode == 0 then - Frame:SetSize( ScrW(), ScrH() ) - Frame:Center() - Frame:SetDraggable( false ) - Menu.ApplyButton:SetPos( ScrW() - 560, 30 ) - Menu.ResetButton:SetPos( 5, ScrH() - 25 ) - Menu.AdvButton:SetPos( ScrW() - 200, 3 ) + MainWindow:SetSize( ScrW(), ScrH() ) + MainWindow:Center() + MainWindow:SetDraggable( false ) + Menu.ApplyButton:SetPos( ScrW() - (ApplyButtonWidth + 480), 0 ) + Menu.WorkshopButton:SetPos( ScrW() - (WorkshopButtonWidth + 110), 6 ) + + Menu.ResetButton:SetPos( 5, ScrH() - 60 ) + Menu.AnimButton:SetPos( 20 + ResetButtonWidth, ScrH() - 60 ) maxi_mode = 1 elseif maxi_allowed and maxi_mode == 1 then Menu.ApplyButton:SetVisible( false ) Menu.ResetButton:SetVisible( false ) - Menu.AdvButton:SetVisible( false ) + Menu.AnimButton:SetVisible( false ) + Menu.WorkshopButton:SetVisible( false ) Menu.Right:SetVisible( false ) - Frame:InvalidateLayout( false ) + MainWindow:InvalidateLayout( false ) maxi_mode = 2 else - Frame:SetSize( fw, fh ) - Frame:Center() - Frame:SetDraggable( true ) - Menu.ApplyButton:SetPos( fw - 560, 30 ) + MainWindow:SetSize( fw, fh ) + MainWindow:Center() + MainWindow:SetDraggable( true ) + + Menu.ApplyButton:SetPos( fw - (ApplyButtonWidth + 480), 0 ) Menu.ApplyButton:SetVisible( true ) - Menu.ResetButton:SetPos( 5, fh - 25 ) + Menu.ResetButton:SetPos( 5, fh - 60 ) + Menu.AnimButton:SetPos( 20 + ResetButtonWidth, fh - 60 ) Menu.ResetButton:SetVisible( true ) - Menu.AdvButton:SetPos( fw - 200, 3 ) - Menu.AdvButton:SetVisible( true ) + Menu.AnimButton:SetVisible( true ) + Menu.WorkshopButton:SetPos( fw - (WorkshopButtonWidth + 110), 6 ) + Menu.WorkshopButton:SetVisible( true ) Menu.Right:SetVisible( true ) maxi_mode = 0 end end - local mdl = Frame:Add( "DModelPanel" ) - mdl:Dock( FILL ) - --mdl:SetSize( 520, 0 ) - mdl:SetFOV( 36 ) - mdl:SetCamPos( Vector( 0, 0, 0 ) ) - mdl:SetDirectionalLight( BOX_RIGHT, Color( 255, 160, 80, 255 ) ) - mdl:SetDirectionalLight( BOX_LEFT, Color( 80, 160, 255, 255 ) ) - mdl:SetAmbientLight( Vector( -64, -64, -64 ) ) - mdl:SetAnimated( true ) - mdl:SetLookAt( Vector( -100, 0, -22 ) ) - function mdl.DefaultPos() + local ModelPreview = MainWindow:Add( "DModelPanel" ) + ModelPreview:Dock( FILL ) + ModelPreview:SetFOV( 36 ) -- PM FOV + ModelPreview:SetCamPos( Vector( 0, 0, 0 ) ) + ModelPreview:SetDirectionalLight( BOX_RIGHT, Color( 255, 160, 80, 255 ) ) + ModelPreview:SetDirectionalLight( BOX_LEFT, Color( 80, 160, 255, 255 ) ) + ModelPreview:SetAmbientLight( Vector( -64, -64, -64 ) ) + ModelPreview:SetAnimated( true ) + ModelPreview:SetLookAt( Vector( -100, 0, -22 ) ) + function ModelPreview.DefaultPos() if ( Menu.IsHandsTabActive() ) then return end - mdl.Angles = Angle( 0, 0, 0 ) - mdl.Pos = Vector( -100, 0, -61 ) + ModelPreview.Angles = Angle( 0, 0, 0 ) + ModelPreview.Pos = Vector( -100, 0, -61 ) + ModelPreview.AngleOffset = Angle( 0, 0, 0 ) end - mdl.DefaultPos() + ModelPreview.DefaultPos() - function mdl:PreDrawModel( mdlEnt ) + function ModelPreview:PreDrawModel( mdlEnt ) if ( IsValid( self.EntityHands ) and Menu.IsHandsTabActive() ) then if ( not self.EntityHands:IsEffectActive( EF_BONEMERGE ) ) then self.EntityHands:AddEffects( EF_BONEMERGE ) @@ -572,53 +610,62 @@ function Menu.Setup() end end - Menu.AdvButton = Frame:Add( "DButton" ) - Menu.AdvButton:SetSize( 100, 18 ) - Menu.AdvButton:SetPos( fw - 200, 3 ) - Menu.AdvButton:SetText( "Visit Addon Page" ) - Menu.AdvButton.DoClick = function() - gui.OpenURL( "http://steamcommunity.com/sharedfiles/filedetails/?id=2257795841" ) - SetClipboardText( "http://steamcommunity.com/sharedfiles/filedetails/?id=2257795841" ) + Menu.WorkshopButton = MainWindow:Add( "DButton" ) + Menu.WorkshopButton:SetText( "#EPS.VisitAddonPage" ) + local Width, Height = Menu.WorkshopButton:GetTextSize() + Menu.WorkshopButton:SetSize( Width + 15, 18 ) + Menu.WorkshopButton:SetPos( fw - (Width + 120), 3 ) + Menu.WorkshopButton.DoClick = function() + gui.OpenURL( "https://steamcommunity.com/sharedfiles/filedetails/?id=2247755443" ) + SetClipboardText( "https://steamcommunity.com/sharedfiles/filedetails/?id=2247755443" ) end - Menu.ApplyButton = Frame:Add( "DButton" ) - Menu.ApplyButton:SetSize( 120, 30 ) - Menu.ApplyButton:SetPos( fw - 560, 30 ) - Menu.ApplyButton:SetText( "Apply playermodel" ) + Menu.ApplyButton = ModelPreview:Add( "DButton" ) + Menu.ApplyButton:SetText( "#EPS.ApplyPM" ) + local ApplyButtonWidth, ApplyButtonHeight = Menu.ApplyButton:GetTextSize() + Menu.ApplyButton:SetPos( fw - (ApplyButtonWidth + 480), 0 ) + Menu.ApplyButton:SetSize( ApplyButtonWidth + 30, 30 ) Menu.ApplyButton:SetEnabled( LocalPlayer():IsAdmin() or GetConVar( "sv_playermodel_selector_instantly" ):GetBool() ) Menu.ApplyButton.DoClick = LoadPlayerModel - Menu.ResetButton = Frame:Add( "DButton" ) - Menu.ResetButton:SetSize( 40, 20 ) - Menu.ResetButton:SetPos( 5, fh - 25 ) - Menu.ResetButton:SetText( "Reset" ) - Menu.ResetButton.DoClick = mdl.DefaultPos + Menu.ResetButton = ModelPreview:Add( "DButton" ) + Menu.ResetButton:SetText( "#EPS.Reset" ) + local ResetButtonWidth, ResetButtonHeight = Menu.ResetButton:GetTextSize() + Menu.ResetButton:SetSize( ResetButtonWidth + 15, 20 ) + Menu.ResetButton:SetPos( 5, fh - 60 ) + Menu.ResetButton.DoClick = ModelPreview.DefaultPos + Menu.AnimButton = ModelPreview:Add( "DButton" ) + Menu.AnimButton:SetText( "#EPS.NextAnim" ) + local AnimButtonWidth, AnimButtonHeight = Menu.AnimButton:GetTextSize() + Menu.AnimButton:SetSize( AnimButtonWidth + 15, 20 ) + Menu.AnimButton:SetPos( 25 + ResetButtonWidth, fh - 60 ) + Menu.AnimButton.DoClick = function() + currentanim = (currentanim + 1) % (#default_animations) + Menu.PlayPreviewAnimation( ModelPreview, LocalPlayer():GetInfo( "cl_playermodel" ) ) + end - Menu.Right = Frame:Add( "DPropertySheet" ) + Menu.Right = MainWindow:Add( "DPropertySheet" ) Menu.Right:Dock( RIGHT ) Menu.Right:SetSize( 430, 0 ) Menu.Right.OnActiveTabChanged = function( self, oldTab, newTab ) - timer.Simple( 0, function() Menu.UpdateFromConvars() end ) + timer.Simple( 0.1, function() Menu.UpdateFromConvars() end ) end local modeltab = Menu.Right:Add( "DPropertySheet" ) - Menu.Right:AddSheet( "Model", modeltab, "icon16/user.png" ) + Menu.Right:AddSheet( "#EPS.Model", modeltab, "icon16/user.png" ) - local t = modeltab:Add( "DLabel" ) - t:SetPos( 129, 1 ) - --t:SetSize( 100, 20 ) - t:SetText( "Search:" ) - - Menu.ModelFilter = modeltab:Add( "DTextEntry" ) - Menu.ModelFilter:SetPos( 168, 1 ) - Menu.ModelFilter:SetSize( 246, 20 ) - Menu.ModelFilter:SetUpdateOnType( true ) - Menu.ModelFilter.OnValueChange = function() Menu.ModelPopulate() end + Menu.ModelFilter = modeltab:Add( "DTextEntry" ) + Menu.ModelFilter:SetPlaceholderText( "#EPS.Search" ) + Menu.ModelFilter:DockMargin( 8, 0, 8, 8 ) + Menu.ModelFilter:Dock( TOP ) + + Menu.ModelFilter:SetUpdateOnType( true ) + Menu.ModelFilter.OnValueChange = function() Menu.ModelPopulate() end local ModelScroll = modeltab:Add( "DScrollPanel" ) - modeltab:AddSheet( "Icons", ModelScroll, "icon16/application_view_tile.png" ) + modeltab:AddSheet( "#EPS.Model.Icons", ModelScroll, "icon16/application_view_tile.png" ) ModelScroll:DockMargin( 2, 0, 2, 2 ) ModelScroll:Dock( FILL ) @@ -631,12 +678,12 @@ function Menu.Setup() local ModelList = modeltab:Add( "DListView" ) - modeltab:AddSheet( "Table", ModelList, "icon16/application_view_list.png" ) + modeltab:AddSheet( "#EPS.Model.Table", ModelList, "icon16/application_view_list.png" ) ModelList:DockMargin( 5, 0, 5, 5 ) ModelList:Dock( FILL ) ModelList:SetMultiSelect( false ) - ModelList:AddColumn( "Model" ) - ModelList:AddColumn( "Path" ) + ModelList:AddColumn( "#EPS.Model.Table.Model" ) + ModelList:AddColumn( "#EPS.Model.Table.Path" ) ModelList.OnRowSelected = function() local sel = ModelList:GetSelected() if !sel[1] then return end @@ -648,7 +695,7 @@ function Menu.Setup() -- RunConsoleCommand( "cl_playerhands", "" ) RunConsoleCommand( "cl_playerhandsbodygroups", "0" ) RunConsoleCommand( "cl_playerhandsskin", "0" ) - timer.Simple( 0.1, function() Menu.UpdateFromConvars() end ) + timer.Simple( 0.3, function() Menu.UpdateFromConvars() end ) end local AllModels = player_manager.AllValidModels() @@ -675,9 +722,10 @@ function Menu.Setup() end for name, model in SortedPairs( AllModels ) do - + if IsInFilter( name ) then - + if GetConVar( "cl_playermodel_selector_hide_defaults" ):GetBool() and DefaultPlayerModels[model] then continue end -- Testing, may have bugs. + if GetConVar( "cl_playermodel_selector_ignorehands" ):GetBool() and player_manager.TranslatePlayerHands(name).model == model then continue end -- No local icon = ModelIconLayout:Add( "SpawnIcon" ) icon:SetSize( 64, 64 ) --icon:InvalidateLayout( true ) @@ -692,11 +740,11 @@ function Menu.Setup() -- RunConsoleCommand( "cl_playerhands", "" ) RunConsoleCommand( "cl_playerhandsbodygroups", "0" ) RunConsoleCommand( "cl_playerhandsskin", "0" ) - timer.Simple( 0.1, function() Menu.UpdateFromConvars() end ) + timer.Simple( 0.3, function() Menu.UpdateFromConvars() end ) end - + ModelList:AddLine( name, model ) - + end end @@ -707,23 +755,19 @@ function Menu.Setup() ------------------------------------------------------------- local handtab = Menu.Right:Add( "DPropertySheet" ) - local htb = Menu.Right:AddSheet( "Hands", handtab, "icon16/attach.png" ) + local htb = Menu.Right:AddSheet( "#EPS.Hands", handtab, "icon16/attach.png" ) htb.Tab.IsHandsTab = true - local t = handtab:Add( "DLabel" ) - t:SetPos( 129, 1 ) - --t:SetSize( 100, 20 ) - t:SetText( "Search:" ) - Menu.HandsFilter = handtab:Add( "DTextEntry" ) - Menu.HandsFilter:SetPos( 168, 1 ) - Menu.HandsFilter:SetSize( 246, 20 ) + Menu.HandsFilter:SetPlaceholderText( "#EPS.Search" ) + Menu.HandsFilter:DockMargin( 8, 0, 8, 4 ) + Menu.HandsFilter:Dock( TOP ) Menu.HandsFilter:SetUpdateOnType( true ) Menu.HandsFilter.OnValueChange = function() Menu.HandsPopulate() end local ModelScroll = handtab:Add( "DScrollPanel" ) - handtab:AddSheet( "Icons", ModelScroll, "icon16/application_view_tile.png" ) + handtab:AddSheet( "#EPS.Hands.Icons", ModelScroll, "icon16/application_view_tile.png" ) ModelScroll:DockMargin( 2, 0, 2, 2 ) ModelScroll:Dock( FILL ) @@ -732,16 +776,16 @@ function Menu.Setup() ModelIconLayout:SetSpaceY( 2 ) ModelIconLayout:Dock( FILL ) - local modelicons = { } + local modelicons_forhands = { } local ModelList = handtab:Add( "DListView" ) - handtab:AddSheet( "Table", ModelList, "icon16/application_view_list.png" ) + handtab:AddSheet( "#EPS.Hands.Table", ModelList, "icon16/application_view_list.png" ) ModelList:DockMargin( 5, 0, 5, 5 ) ModelList:Dock( FILL ) ModelList:SetMultiSelect( false ) - ModelList:AddColumn( "Model" ) - ModelList:AddColumn( "Path" ) + ModelList:AddColumn( "#EPS.Hands.Table.Model" ) + ModelList:AddColumn( "#EPS.Hands.Table.Path" ) ModelList.OnRowSelected = function() local sel = ModelList:GetSelected() if !sel[1] then return end @@ -777,60 +821,213 @@ function Menu.Setup() end end - local icon = ModelIconLayout:Add( "SpawnIcon" ) - icon:SetSize( 64, 64 ) - icon:SetSpawnIcon( "icon64/playermodel.png" ) - --icon:SetModel( model ) - icon:SetTooltip( "Use playermodel" ) - table.insert( modelicons, icon ) - icon.DoClick = function() - RunConsoleCommand( "cl_playerhands", "" ) - RunConsoleCommand( "cl_playerhandsbodygroups", "0" ) - RunConsoleCommand( "cl_playerhandsskin", "0" ) - timer.Simple( 0.1, function() Menu.UpdateFromConvars() end ) - end + local icon = ModelIconLayout:Add( "SpawnIcon" ) + icon:SetSize( 64, 64 ) + icon:SetSpawnIcon( "icon64/playermodel.png" ) + icon:SetTooltip( "#EPS.Hands.UsePM" ) + icon.DoClick = function() + RunConsoleCommand( "cl_playerhands", "" ) + RunConsoleCommand( "cl_playerhandsbodygroups", "0" ) + RunConsoleCommand( "cl_playerhandsskin", "0" ) + timer.Simple( 0.1, function() Menu.UpdateFromConvars() end ) + end - ModelList:AddLine( name, model ) + local exister = {} for name, model in SortedPairs( AllModels ) do if IsInFilter( name ) then - + local result = player_manager.TranslatePlayerHands( name ) + if exister[result.model:lower()] then + continue + else + exister[result.model:lower()] = true + end local icon = ModelIconLayout:Add( "SpawnIcon" ) icon:SetSize( 64, 64 ) --icon:InvalidateLayout( true ) - icon:SetModel( model ) - icon:SetTooltip( name ) - table.insert( modelicons, icon ) + icon:SetModel( "models/kleiner_animations.mdl" ) + icon:SetTooltip( name .. "\n" .. result.model ) + icon.ResultList = result + + function icon:Paint( w, h ) + return true + end + table.insert( modelicons_forhands, icon ) + + function icon:MakeHandIcon() + if !self.ResultList then print("EPS Hands: Result list missing.") return end + + local CL_FISTS = ClientsideModel("models/weapons/c_arms.mdl") + local CL_REALHANDS = ClientsideModel( self.ResultList.model, RENDERGROUP_BOTH ) + + CL_FISTS:SetNoDraw( true ) + CL_FISTS:SetPos( vector_origin ) + CL_FISTS:SetAngles( angle_zero ) + CL_REALHANDS:SetNoDraw( true ) + + CL_FISTS:ResetSequence( CL_FISTS:LookupSequence( "fists_idle_01" ) ) + + CL_REALHANDS:AddEffects( EF_BONEMERGE ) + CL_REALHANDS:SetBodyGroups(result.body or 0) + CL_REALHANDS:SetSkin(isnumber(result.skin) and result.skin or 0) + + CL_REALHANDS:SetParent( CL_FISTS ) + + local cam_pos = Vector( 0, 0, 0 ) + local cam_ang = Angle( 6, -16.9, 0 ) + local cam_fov = 17 + + render.PushRenderTarget( HandIconGenerator ) + render.OverrideDepthEnable( true, true ) + render.SetWriteDepthToDestAlpha( false ) + render.SuppressEngineLighting( true ) + + local CL_SHIRT = { + { + type = MATERIAL_LIGHT_POINT, + color = Vector( 1, 1, 1 )*1, + pos = Vector( 0, -48, 32 ), + }, + { + type = MATERIAL_LIGHT_POINT, + color = Vector( -1, -1, -1 )*1, + pos = Vector( 0, 32, -64 ), + }, + } + + render.SetLocalModelLights(CL_SHIRT) + -- render.Clear(0, 0, 0, 0, true, true) + render.Clear(0, 0, 0, 0) + render.ClearDepth( true ) + render.OverrideAlphaWriteEnable( true, true ) + + + -- rendering twice to get good alpha + render.SetBlend(1) + render.SetColorModulation(1, 1, 1) + render.MaterialOverride(matshiny) + render.OverrideColorWriteEnable(true, false) + + cam.Start3D( cam_pos, cam_ang, cam_fov, 0, 0, 64, 64, 0.1, 1000 ) + CL_FISTS:SetupBones() + CL_REALHANDS:SetupBones() + CL_REALHANDS:DrawModel( STUDIO_TWOPASS ) + cam.End3D() + + render.OverrideColorWriteEnable(false, false) + render.MaterialOverride() + + + render.SetWriteDepthToDestAlpha( true ) + render.OverrideBlend( true, BLEND_ONE, BLEND_ZERO, BLENDFUNC_ADD, BLEND_ZERO, BLEND_ONE, BLENDFUNC_ADD ) + cam.Start3D( cam_pos, cam_ang, cam_fov, 0, 0, 64, 64, 0.1, 1000 ) + CL_FISTS:SetupBones() + CL_REALHANDS:SetupBones() + CL_REALHANDS:DrawModel( STUDIO_TWOPASS ) + cam.End3D() + + render.MaterialOverride() + render.SetWriteDepthToDestAlpha( false ) + + render.OverrideBlend( false ) + render.SuppressEngineLighting(false) + + local HandBodygroups = CL_REALHANDS:GetBodyGroups() + for i = 0, #HandBodygroups - 1 do + if CL_REALHANDS:GetBodygroupCount(i) < 2 then continue end + cam.Start2D() + surface.SetDrawColor( 255, 255, 255, 255 ) + surface.SetMaterial(hasbgs) + surface.DrawTexturedRect(0, 0, 64, 64) + cam.End2D() + break + end + print( "Generating " .. result.model:StripExtension() ) + local data = render.Capture( { + format = "png", + x = 0, + y = 0, + w = 64, + h = 64 + } ) + + if !file.Exists("eps_hands", "DATA") then + file.CreateDir("eps_hands") + end + + local EXPLOSION = string.Explode( "/", result.model:StripExtension(), false ) + EXPLOSION[#EXPLOSION] = nil + EXPLOSION = table.concat( EXPLOSION, "/" ) + file.CreateDir( "eps_hands/" .. EXPLOSION ) + local fullpath = "eps_hands/" .. result.model:StripExtension() .. ".png" + file.Write( fullpath, data ) + + render.OverrideAlphaWriteEnable( false ) + render.SuppressEngineLighting( false ) + render.OverrideDepthEnable( false ) + render.PopRenderTarget() + --icon:SetModel("models/kleiner_animations.mdl") + icon:SetIcon( "data/eps_hands/" .. result.model:StripExtension() .. ".png" ) + --icon:SetTooltip( name .. "\n" .. result.model ) + + --local tab = {} + --tab.ent = CL_REALHANDS + --tab.cam_pos = Vector( 0, 0, 0 ) + --tab.cam_ang = Angle( 4, -18, 0 ) + --tab.cam_fov = 20 + + --self:RebuildSpawnIconEx( tab ) + + CL_FISTS:Remove() + CL_REALHANDS:Remove() + end + + -- Make a pretty ass icon + if !file.Exists( "eps_hands/" .. result.model:StripExtension() .. ".png", "DATA" ) then + print("IT DOESN'T EXIST", "eps_hands/" .. result.model:StripExtension() .. ".png") + if IsValid(icon) then + icon:MakeHandIcon() + end + else + --icon:SetModel("models/kleiner_animations.mdl") + icon:SetIcon( "data/eps_hands/" .. result.model:StripExtension() .. ".png" ) + --icon:SetTooltip( name .. "\n" .. result.model ) + end icon.DoClick = function() RunConsoleCommand( "cl_playerhands", name ) RunConsoleCommand( "cl_playerhandsbodygroups", "0" ) RunConsoleCommand( "cl_playerhandsskin", "0" ) timer.Simple( 0.1, function() Menu.UpdateFromConvars() end ) end - + icon.DoRightClick = function() + if IsValid(icon) then + icon:MakeHandIcon() + end + end + ModelList:AddLine( name, model ) end end - + end Menu.HandsPopulate() -------------------------------------------------------- local favorites = Menu.Right:Add( "DPanel" ) - Menu.Right:AddSheet( "Favorites", favorites, "icon16/star.png" ) + Menu.Right:AddSheet( "#EPS.Favorites", favorites, "icon16/star.png" ) favorites:DockPadding( 8, 8, 8, 8 ) local FavList = favorites:Add( "DListView" ) FavList:Dock( FILL ) FavList:SetMultiSelect( true ) - FavList:AddColumn( "Favorites" ) - FavList:AddColumn( "Model" ) - FavList:AddColumn( "Skin" ):SetFixedWidth( 25 ) - FavList:AddColumn( "Bodygroups" ) + FavList:AddColumn( "#EPS.Favorites" ) + FavList:AddColumn( "#EPS.Favorites.Model" ) + FavList:AddColumn( "#EPS.Favorites.Skin" ):SetFixedWidth( 40 ) + FavList:AddColumn( "#EPS.Favorites.Bodygroups" ) FavList.DoDoubleClick = function( id, sel ) local name = tostring( FavList:GetLine( sel ):GetValue( 1 ) ) if istable( Favorites[name] ) then @@ -855,8 +1052,8 @@ function Menu.Setup() local b = favorites:Add( "DButton" ) b:Dock( TOP ) b:SetHeight( 25 ) - b:DockMargin( 0, 0, 200, 10 ) - b:SetText( "Load selected Favorite" ) + b:DockMargin( 0, 0, 0, 10 ) + b:SetText( "#EPS.Favorites.LoadFavorite" ) b.DoClick = function() local sel = FavList:GetSelected() if !sel[1] then return end @@ -865,7 +1062,7 @@ function Menu.Setup() RunConsoleCommand( "cl_playermodel", Favorites[name].model ) RunConsoleCommand( "cl_playerbodygroups", Favorites[name].bodygroups ) RunConsoleCommand( "cl_playerskin", Favorites[name].skin ) - timer.Simple( 0.1, function() + timer.Simple( 0.3, function() Menu.UpdateFromConvars() end ) end @@ -874,7 +1071,7 @@ function Menu.Setup() local t = favorites:Add( "DLabel" ) t:Dock( BOTTOM ) t:SetAutoStretchVertical( true ) - t:SetText( "Here you can save your favorite playermodel combinations. To do this:\n1. Select a model and setup the skin and bodygroups as you wish.\n2. Enter a unique name into the textfield and click \"Add new favorite\".\n3. Load your favorite by selecting it in the list below and clicking \"Load selected\".\nYou can also apply existing favorites by console command:\nplayermodel_loadfav \"the favorite's name\"" ) + t:SetText( "#EPS.Favorites.Desc" ) t:SetDark( true ) t:SetWrap( true ) @@ -900,7 +1097,7 @@ function Menu.Setup() local b = control:Add( "DButton" ) b:SetPos( 0, 30 ) b:SetSize( 125, 20 ) - b:SetText( "Add new favorite" ) + b:SetText( "#EPS.Favorites.AddNewFavorite" ) b.DoClick = function() local name = FavEntry:GetValue() if name == "" then return end @@ -910,7 +1107,7 @@ function Menu.Setup() local b = control:Add( "DButton" ) b:SetPos( 135, 30 ) b:SetSize( 125, 20 ) - b:SetText( "Replace selected" ) + b:SetText( "#EPS.Favorites.ReplaceSelected" ) b.DoClick = function() local sel = FavList:GetSelected() if sel[2] then return end @@ -922,7 +1119,7 @@ function Menu.Setup() local b = control:Add( "DButton" ) b:SetPos( 270, 30 ) b:SetSize( 125, 20 ) - b:SetText( "Delete all selected" ) + b:SetText( "#EPS.Favorites.DeleteAllSelected" ) b.DoClick = function() local sel = FavList:GetSelected() for k, v in pairs( sel ) do @@ -935,7 +1132,7 @@ function Menu.Setup() local bdcontrols = Menu.Right:Add( "DPanel" ) - local bgtab = Menu.Right:AddSheet( "Bodygroups", bdcontrols, "icon16/group.png" ) + local bgtab = Menu.Right:AddSheet( "#EPS.Bodygroups", bdcontrols, "icon16/group.png" ) bdcontrols:DockPadding( 8, 8, 8, 8 ) local bdcontrolspanel = bdcontrols:Add( "DPanelList" ) @@ -944,7 +1141,7 @@ function Menu.Setup() -- Hands local h__bdcontrols = Menu.Right:Add( "DPanel" ) - local h__bgtab = Menu.Right:AddSheet( "Handgroups", h__bdcontrols, "icon16/group_link.png" ) + local h__bgtab = Menu.Right:AddSheet( "#EPS.Handgroups", h__bdcontrols, "icon16/group_link.png" ) h__bdcontrols:DockPadding( 8, 8, 8, 8 ) h__bgtab.Tab.IsHandsTab = true @@ -955,7 +1152,7 @@ function Menu.Setup() local flexcontrols = Menu.Right:Add( "DPanel" ) - local flextab = Menu.Right:AddSheet( "Flexes", flexcontrols, "icon16/emoticon_wink.png" ) + local flextab = Menu.Right:AddSheet( "#EPS.Flexes", flexcontrols, "icon16/emoticon_wink.png" ) flexcontrols:DockPadding( 8, 8, 8, 8 ) local flexcontrolspanel = flexcontrols:Add( "DPanelList" ) @@ -964,11 +1161,11 @@ function Menu.Setup() local controls = Menu.Right:Add( "DPanel" ) - Menu.Right:AddSheet( "Colors", controls, "icon16/color_wheel.png" ) + Menu.Right:AddSheet( "#EPS.Colors", controls, "icon16/color_wheel.png" ) controls:DockPadding( 8, 8, 8, 8 ) local lbl = controls:Add( "DLabel" ) - lbl:SetText( "Player color" ) + lbl:SetText( "#EPS.Colors.PlayerColor" ) lbl:SetTextColor( Color( 0, 0, 0, 255 ) ) lbl:Dock( TOP ) @@ -979,7 +1176,7 @@ function Menu.Setup() plycol:SetSize( 200, ( fh - 160) / 2 ) local lbl = controls:Add( "DLabel" ) - lbl:SetText( "Physgun color" ) + lbl:SetText( "#EPS.Colors.PhysgunColor" ) lbl:SetTextColor( Color( 0, 0, 0, 255 ) ) lbl:DockMargin( 0, 8, 0, 0 ) lbl:Dock( TOP ) @@ -995,7 +1192,7 @@ function Menu.Setup() b:DockMargin( 0, 8, 0, 0 ) b:Dock( TOP ) b:SetSize( 150, 20 ) - b:SetText( "Reset to default values" ) + b:SetText( "#EPS.Colors.ResetToDefault" ) b.DoClick = function() plycol:SetVector( Vector( 0.24, 0.34, 0.41 ) ) wepcol:SetVector( Vector( 0.30, 1.80, 2.10 ) ) @@ -1005,11 +1202,11 @@ function Menu.Setup() local moretab = Menu.Right:Add( "DPropertySheet" ) - Menu.Right:AddSheet( "Settings", moretab, "icon16/key.png" ) + Menu.Right:AddSheet( "#EPS.Settings", moretab, "icon16/key.png" ) local panel = moretab:Add( "DPanel" ) - moretab:AddSheet( "Client", panel, "icon16/status_online.png" ) + moretab:AddSheet( "#EPS.Settings.Client", panel, "icon16/status_online.png" ) panel:DockPadding( 10, 10, 10, 10 ) local panel = panel:Add( "DScrollPanel" ) @@ -1020,7 +1217,7 @@ function Menu.Setup() c:Dock( TOP ) c:DockMargin( 0, 0, 0, 5 ) c:SetValue( GetConVar(c.cvar):GetBool() ) - c:SetText( "Enforce your playermodel" ) + c:SetText( "#EPS.Settings.Client.EnforcePM" ) c:SetDark( true ) c.OnChange = function( p, v ) RunConsoleCommand( c.cvar, v == true and "1" or "0" ) @@ -1030,7 +1227,26 @@ function Menu.Setup() t:Dock( TOP ) t:DockMargin( 0, 0, 0, 20 ) t:SetAutoStretchVertical( true ) - t:SetText( "If enabled, your selected playermodel will be protected. No other function will be able to change your playermodel anymore." ) + t:SetText( "#EPS.Settings.Client.EnforcePM.Desc" ) + t:SetDark( true ) + t:SetWrap( true ) + + local c = panel:Add( "DCheckBoxLabel" ) + c.cvar = "cl_playermodel_selector_translate_bodygroup" + c:Dock( TOP ) + c:DockMargin( 0, 0, 0, 5 ) + c:SetValue( GetConVar(c.cvar):GetBool() ) + c:SetText( "#EPS.Settings.Client.TranslateBodygroup" ) + c:SetDark( true ) + c.OnChange = function( p, v ) + RunConsoleCommand( c.cvar, v == true and "1" or "0" ) + end + + local t = panel:Add( "DLabel" ) + t:Dock( TOP ) + t:DockMargin( 0, 0, 0, 20 ) + t:SetAutoStretchVertical( true ) + t:SetText( "#EPS.Settings.Client.TranslateBodygroup.Desc" ) t:SetDark( true ) t:SetWrap( true ) @@ -1039,7 +1255,7 @@ function Menu.Setup() c:Dock( TOP ) c:DockMargin( 0, 0, 0, 5 ) c:SetValue( GetConVar(c.cvar):GetBool() ) - c:SetText( "Use Player color as background" ) + c:SetText( "#EPS.Settings.Client.PlayerColorBG" ) c:SetDark( true ) c:SizeToContents() c.OnChange = function( p, v ) @@ -1050,7 +1266,7 @@ function Menu.Setup() t:Dock( TOP ) t:DockMargin( 0, 0, 0, 20 ) t:SetAutoStretchVertical( true ) - t:SetText( "If enabled, your selected player color will be used as the menu background. If disabled, the background will be grey." ) + t:SetText( "#EPS.Settings.Client.PlayerColorBG.Desc" ) t:SetDark( true ) t:SetWrap( true ) @@ -1059,7 +1275,7 @@ function Menu.Setup() c:Dock( TOP ) c:DockMargin( 0, 0, 0, 5 ) c:SetValue( GetConVar(c.cvar):GetBool() ) - c:SetText( "Transparent background" ) + c:SetText( "#EPS.Settings.Client.TransparentBG" ) c:SetDark( true ) c:SizeToContents() c.OnChange = function( p, v ) @@ -1070,7 +1286,48 @@ function Menu.Setup() t:Dock( TOP ) t:DockMargin( 0, 0, 0, 20 ) t:SetAutoStretchVertical( true ) - t:SetText( "If enabled, the menu backgroup will be transparent. If disabled, the background will be opaque." ) + t:SetText( "#EPS.Settings.Client.TransparentBG.Desc" ) + t:SetDark( true ) + t:SetWrap( true ) + + local c = panel:Add( "DCheckBoxLabel" ) + c.cvar = "cl_playermodel_selector_hide_defaults" + c:Dock( TOP ) + c:DockMargin( 0, 0, 0, 5 ) + c:SetValue( GetConVar(c.cvar):GetBool() ) + c:SetText( "#EPS.Settings.Client.HideDefaultPMs" ) + c:SetDark( true ) + c:SizeToContents() + c.OnChange = function( p, v ) + RunConsoleCommand( c.cvar, v == true and "1" or "0" ) + end + + local t = panel:Add( "DLabel" ) + t:Dock( TOP ) + t:DockMargin( 0, 0, 0, 20 ) + t:SetAutoStretchVertical( true ) + t:SetText( "#EPS.Settings.Client.HideDefaultPMs.Desc" ) + t:SetDark( true ) + t:SetWrap( true ) + + local c = panel:Add( "DCheckBoxLabel" ) + c.cvar = "cl_playermodel_selector_ignorehands" + c:Dock( TOP ) + c:DockMargin( 0, 0, 0, 5 ) + c:SetValue( GetConVar(c.cvar):GetBool() ) + c:SetText( "#EPS.Settings.Client.IgnoreC_ArmsOnlyPMs" ) + c:SetDark( true ) + c:SizeToContents() + c.OnChange = function( p, v ) + RunConsoleCommand( c.cvar, v == true and "1" or "0" ) + Menu.ModelPopulate() + end + + local t = panel:Add( "DLabel" ) + t:Dock( TOP ) + t:DockMargin( 0, 0, 0, 20 ) + t:SetAutoStretchVertical( true ) + t:SetText( "#EPS.Settings.Client.IgnoreC_ArmsOnlyPMs.Desc" ) t:SetDark( true ) t:SetWrap( true ) @@ -1079,7 +1336,7 @@ function Menu.Setup() c:Dock( TOP ) c:DockMargin( 0, 0, 0, 5 ) c:SetValue( GetConVar(c.cvar):GetBool() ) - c:SetText( "Show flexes tab" ) + c:SetText( "#EPS.Settings.Client.ShowFlexes" ) c:SetDark( true ) c:SizeToContents() c.OnChange = function( p, v ) @@ -1091,26 +1348,32 @@ function Menu.Setup() t:Dock( TOP ) t:DockMargin( 0, 0, 0, 20 ) t:SetAutoStretchVertical( true ) - t:SetText( "This allows you to manipulate flexes on your playermodel. However, flex manipulation is not really made for playermodels and will cause issues. This includes the following:\n- Eye blinking no longer working.\n- Faces might be distorted unless the flexes are corrected manually.\n- Might break the faces of incompatible playermodels completely.\n- Even if you put all flexes to default value, the engine still considers them as manipulated. Models with problems won't be fixed.\nYou must switch your model once, for the tab to appear!" ) + t:SetText( "#EPS.Settings.Client.ShowFlexes.Desc" ) t:SetDark( true ) t:SetWrap( true ) local b = panel:Add( "DButton" ) b:Dock( TOP ) - b:DockMargin( 0, 0, 270, 5 ) - b:SetHeight( 15 ) - b:SetText( "Rebuild spawn icons" ) + b:DockMargin( 0, 0, 10, 5 ) + b:SetText( "#EPS.Settings.Client.RebuildIcon" ) b.DoClick = function() for _, icon in pairs( modelicons ) do icon:RebuildSpawnIcon() end + + -- local thecount = 0 + for _, icon in pairs( modelicons_forhands ) do + if IsValid(icon) then + icon:MakeHandIcon() + end + end end local t = panel:Add( "DLabel" ) t:Dock( TOP ) t:DockMargin( 0, 0, 0, 20 ) t:SetAutoStretchVertical( true ) - t:SetText( "Forces all playermodel icons to be re-rendered. Useful if the icons are outdated after custom models changed their appearance. This may take a while, depending on the number of models and your PC's speed." ) + t:SetText( "#EPS.Settings.Client.RebuildIcon.Desc" ) t:SetDark( true ) t:SetWrap( true ) @@ -1118,7 +1381,7 @@ function Menu.Setup() if LocalPlayer():IsAdmin() then local panel = moretab:Add( "DPanel" ) - moretab:AddSheet( "Server", panel, "icon16/world.png" ) + moretab:AddSheet( "#EPS.Settings.Server", panel, "icon16/world.png" ) panel:DockPadding( 10, 10, 10, 10 ) local panel = panel:Add( "DScrollPanel" ) @@ -1136,7 +1399,7 @@ function Menu.Setup() c:Dock( TOP ) c:DockMargin( 0, 0, 0, 5 ) c:SetValue( GetConVar(c.cvar):GetBool() ) - c:SetText( "Enable playermodel enforcement" ) + c:SetText( "#EPS.Settings.Server.EnablePMEnforcement" ) c:SetDark( true ) c.OnChange = ChangeCVar @@ -1144,7 +1407,7 @@ function Menu.Setup() t:Dock( TOP ) t:DockMargin( 0, 0, 0, 20 ) t:SetAutoStretchVertical( true ) - t:SetText( "If enabled, selected playermodels will be enforced and protected. No gamemodes, maps or addons can overwrite them anymore. Players can toggle this function individually, using the checkbox on top of the menu.\nIf disabled, only the manual button works outside of Sandbox." ) + t:SetText( "#EPS.Settings.Server.EnablePMEnforcement.Desc" ) t:SetDark( true ) t:SetWrap( true ) @@ -1153,7 +1416,7 @@ function Menu.Setup() c:Dock( TOP ) c:DockMargin( 0, 0, 0, 5 ) c:SetValue( GetConVar(c.cvar):GetBool() ) - c:SetText( "Allow instant changes" ) + c:SetText( "#EPS.Settings.Server.AllowInstantChanges" ) c:SetDark( true ) c.OnChange = ChangeCVar @@ -1161,7 +1424,7 @@ function Menu.Setup() t:Dock( TOP ) t:DockMargin( 0, 0, 0, 20 ) t:SetAutoStretchVertical( true ) - t:SetText( "If enabled, players can apply their changes instantly instead of having to respawn." ) + t:SetText( "#EPS.Settings.Server.AllowInstantChanges.Desc" ) t:SetDark( true ) t:SetWrap( true ) @@ -1170,7 +1433,7 @@ function Menu.Setup() c:Dock( TOP ) c:DockMargin( 0, 0, 0, 5 ) c:SetValue( GetConVar(c.cvar):GetBool() ) - c:SetText( "Allow players to change flexes" ) + c:SetText( "#EPS.Settings.Server.AllowFlexes" ) c:SetDark( true ) c.OnChange = ChangeCVar @@ -1178,7 +1441,7 @@ function Menu.Setup() t:Dock( TOP ) t:DockMargin( 0, 0, 0, 20 ) t:SetAutoStretchVertical( true ) - t:SetText( "If enabled, players can change the flexes for their playermodels. This will break player blinking and may cause other issues. Enable at own risk. Players can only reset their flexes by disconnecting." ) + t:SetText( "#EPS.Settings.Server.AllowFlexes.Desc" ) t:SetDark( true ) t:SetWrap( true ) @@ -1187,7 +1450,7 @@ function Menu.Setup() c:Dock( TOP ) c:DockMargin( 0, 0, 0, 5 ) c:SetValue( GetConVar(c.cvar):GetBool() ) - c:SetText( "Enable in all gamemodes" ) + c:SetText( "#EPS.Settings.Server.EnableInAllGM" ) c:SetDark( true ) c.OnChange = ChangeCVar @@ -1195,7 +1458,7 @@ function Menu.Setup() t:Dock( TOP ) t:DockMargin( 0, 0, 0, 20 ) t:SetAutoStretchVertical( true ) - t:SetText( "If enabled, the PlayerModel Selector will be available for all players in every gamemode. If disabled, only Admins can use it outside of Sandbox." ) + t:SetText( "#EPS.Settings.Server.EnableInAllGM.Desc" ) t:SetDark( true ) t:SetWrap( true ) @@ -1203,7 +1466,7 @@ function Menu.Setup() s.cvar = "sv_playermodel_selector_limit" s:Dock( TOP ) s:DockMargin( 0, 0, 0, 5 ) - s:SetText( "Request limit" ) + s:SetText( "#EPS.Settings.Server.RequestLimit" ) s:SetDark( true ) s:SetDecimals( 0 ) s:SetMax( 900 ) @@ -1219,13 +1482,13 @@ function Menu.Setup() t:Dock( TOP ) t:DockMargin( 0, 0, 0, 20 ) t:SetAutoStretchVertical( true ) - t:SetText( "Timelimit in seconds that players have to wait, before they can use the instant change function again. Set to 0 to disable." ) + t:SetText( "#EPS.Settings.Server.RequestLimit.Desc" ) t:SetDark( true ) t:SetWrap( true ) local panel = moretab:Add( "DPanel" ) - moretab:AddSheet( "GM Blacklist", panel, "icon16/delete.png" ) + moretab:AddSheet( "#EPS.Settings.GM_Blacklist", panel, "icon16/delete.png" ) panel:DockPadding( 10, 10, 10, 10 ) local Blacklist = panel:Add( "DListView" ) @@ -1233,7 +1496,7 @@ function Menu.Setup() Blacklist:DockMargin( 0, 0, 20, 0 ) Blacklist:SetWidth( 150 ) Blacklist:SetMultiSelect( true ) - Blacklist:AddColumn( "Blacklisted gamemodes" ) + Blacklist:AddColumn( "#EPS.Settings.GM_Blacklist.ExistedGM" ) net.Receive("lf_playermodel_blacklist", function() local tbl = net.ReadTable() @@ -1255,7 +1518,7 @@ function Menu.Setup() t:Dock( TOP ) t:DockMargin( 0, 0, 0, 20 ) t:SetAutoStretchVertical( true ) - t:SetText( "Here you can blacklist incompatible gamemodes.\n\nPlayers (including Admins) can't change their playermodels in those gamemodes, regardless of other settings." ) + t:SetText( "#EPS.Settings.GM_Blacklist.Desc" ) t:SetDark( true ) t:SetWrap( true ) @@ -1263,7 +1526,7 @@ function Menu.Setup() b:Dock( TOP ) b:DockMargin( 0, 0, 0, 20 ) b:SetHeight( 25 ) - b:SetText( "Add current gamemode to Blacklist" ) + b:SetText( "#EPS.Settings.GM_Blacklist.AddCurrent" ) b.DoClick = function() if GAMEMODE_NAME == "sandbox" then return end net.Start( "lf_playermodel_blacklist" ) @@ -1281,7 +1544,7 @@ function Menu.Setup() b:Dock( TOP ) b:DockMargin( 0, 0, 0, 20 ) b:SetHeight( 20 ) - b:SetText( "Manually add gamemode" ) + b:SetText( "#EPS.Settings.GM_Blacklist.ManuallyAddGM" ) b.DoClick = function() local name = TextEntry:GetValue() if name == "" or name == "sandbox" then return end @@ -1295,7 +1558,7 @@ function Menu.Setup() b:Dock( TOP ) b:DockMargin( 0, 0, 0, 0 ) b:SetHeight( 25 ) - b:SetText( "Remove selected gamemodes" ) + b:SetText( "#EPS.Settings.GM_Blacklist.RemoveSelected" ) b.DoClick = function() local tbl = { } local sel = Blacklist:GetSelected() @@ -1313,7 +1576,7 @@ function Menu.Setup() if TFAVOX_Models then local panel = moretab:Add( "DPanel" ) - moretab:AddSheet( "VOX", panel, "icon16/sound.png" ) + moretab:AddSheet( "#EPS.Settings.VOX", panel, "icon16/sound.png" ) panel:DockPadding( 10, 10, 10, 10 ) local VOXlist = panel:Add( "DListView" ) @@ -1321,8 +1584,8 @@ function Menu.Setup() VOXlist:DockMargin( 0, 0, 0, 10 ) VOXlist:SetHeight( ( fh - 126 - 44 ) / 2 ) -- 260 VOXlist:SetMultiSelect( true ) - VOXlist:AddColumn( "PlayerModel" ) - VOXlist:AddColumn( "assigned VOX pack" ) + VOXlist:AddColumn( "#EPS.Settings.VOX.PlayerModel" ) + VOXlist:AddColumn( "#EPS.Settings.VOX.Assigned" ) net.Receive("lf_playermodel_voxlist", function() local tbl = net.ReadTable() @@ -1351,7 +1614,7 @@ function Menu.Setup() VOXinstalled:DockMargin( 0, 10, 0, 0 ) VOXinstalled:SetHeight( ( fh - 126 - 44 ) / 2 ) VOXinstalled:SetMultiSelect( false ) - VOXinstalled:AddColumn( "Available VOX packs" ) + VOXinstalled:AddColumn( "#EPS.Settings.VOX.AvailableVOX" ) if istable( TFAVOX_Models ) then for k, v in pairs( TFAVOX_Models ) do @@ -1364,7 +1627,7 @@ function Menu.Setup() b:Dock( LEFT ) --b:DockPadding( 100, 0, 100, 0 ) b:SetWidth( 200 ) - b:SetText( "Assign VOX pack to current PlayerModel" ) + b:SetText( "#EPS.Settings.VOX.AssignToCurrent" ) b.DoClick = function() local sel = VOXinstalled:GetSelected() if !sel[1] then return end @@ -1381,7 +1644,7 @@ function Menu.Setup() b:Dock( RIGHT ) --b:DockPadding( 100, 0, 100, 0 ) b:SetWidth( 170 ) - b:SetText( "Remove selected assignment" ) + b:SetText( "#EPS.Settings.VOX.RemoveSelected" ) b.DoClick = function() local tbl = { } local sel = VOXlist:GetSelected() @@ -1401,7 +1664,7 @@ function Menu.Setup() local panel = moretab:Add( "DPanel" ) - moretab:AddSheet( "Info", panel, "icon16/information.png" ) + moretab:AddSheet( "#EPS.Settings.Info", panel, "icon16/information.png" ) panel:DockPadding( 0, 0, 0, 0 ) local t = panel:Add( "DHTML" ) @@ -1412,9 +1675,12 @@ function Menu.Setup() t:AddFunction( "url", "open", function( str ) gui.OpenURL( str ) end ) t:AddFunction( "url", "copy", function( str ) SetClipboardText( str ) end ) + local title = string.format(language.GetPhrase("EPS.Title"),Version) + local intro = [[Created by LibertyForce.
Thank you for installing this addon! Enjoying it?
Modified by Fesiug. You can now customize your hands!
Modified by YuRaNnNzZZ. You can see your selected hands!
+ Modified by Insane Black Rock Shooter. Localization Support!
Please leave a LIKE on the workshop page.]] if !game.SinglePlayer() and !LocalPlayer():IsSuperAdmin() then intro = [[This server is running Enhanced PlayerModel Selector by LibertyForce. Enjoying it?
@@ -1435,6 +1701,12 @@ function Menu.Setup() font-size: 15px; color: #5aa9d6; font-weight: bold; + margin: 0; + padding: 0px 0px 4px 0px; + } + h3, h4, h5, h6 { + margin: 0; + padding: 2px 0px 6px 0px; } h1 { font-size: 20px; @@ -1464,24 +1736,56 @@ function Menu.Setup() -

Enhanced Playermodel Selector ]]..Version..[[

-

]]..intro..[[

+

]]..title..[[

+

]]..intro..[[

Compatible Addons

Enhanced Playermodel Selector provides additional functionality with those addons installed:

More addons

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Translators:

Language:

Insane Black Rock Shooter Simplified Chinese
Berry Russian
Stann Polish
憨憨羊の宇航鸽鸽 Traditional Chinese
Tora Turkish
GermanMaKo German
Hana Spanish
Machine Translation Korean
Machine Translation Czech

Left click: Open in Steam Overlay.
Right click: Copy URL to clipboard for use in browser.

@@ -1494,6 +1798,7 @@ function Menu.Setup() function Menu.MakeNiceName( str ) local newname = {} + if string.find(str, ".smd") then str = string.sub(str, 0, -5) end for _, s in pairs( string.Explode( "_", str ) ) do if ( string.len( s ) == 1 ) then table.insert( newname, string.upper( s ) ) continue end @@ -1504,7 +1809,7 @@ function Menu.Setup() end function Menu.PlayHandsPreviewAnimation( panel, playermodel ) - local iSeq = panel.EntityHandsAnim:LookupSequence( "seq_admire" ) + local iSeq = panel.EntityHandsAnim:LookupSequence( "idle" ) if ( iSeq > 0 ) then panel.EntityHandsAnim:ResetSequence( iSeq ) end end @@ -1513,13 +1818,13 @@ function Menu.Setup() if ( !panel or !IsValid( panel.Entity ) ) then return end - local anims = list.Get( "PlayerOptionsAnimations" ) + -- local anims = list.Get( "PlayerOptionsAnimations" ) - local anim = default_animations[ math.random( 1, #default_animations ) ] - if ( anims[ playermodel ] ) then - anims = anims[ playermodel ] - anim = anims[ math.random( 1, #anims ) ] - end + local anim = default_animations[ currentanim+1 ] + -- if ( anims[ playermodel ] ) then + -- anims = anims[ playermodel ] + -- anim = anims[ math.random( 1, #anims ) ] + -- end local iSeq = panel.Entity:LookupSequence( anim ) if ( iSeq > 0 ) then panel.Entity:ResetSequence( iSeq ) end @@ -1533,7 +1838,7 @@ function Menu.Setup() if ( pnl.type == "bgroup" ) then - if ( not handsTabActive ) then mdl.Entity:SetBodygroup( pnl.typenum, math.Round( val ) ) end + if ( not handsTabActive ) then ModelPreview.Entity:SetBodygroup( pnl.typenum, math.Round( val ) ) end local str = string.Explode( " ", GetConVar( "cl_playerbodygroups" ):GetString() ) if ( #str < pnl.typenum + 1 ) then for i = 1, pnl.typenum + 1 do str[ i ] = str[ i ] or 0 end end @@ -1542,7 +1847,7 @@ function Menu.Setup() elseif ( pnl.type == "flex" ) then - if ( not handsTabActive ) then mdl.Entity:SetFlexWeight( pnl.typenum, math.Round( val, 2 ) ) end + if ( not handsTabActive ) then ModelPreview.Entity:SetFlexWeight( pnl.typenum, math.Round( val, 2 ) ) end local str = string.Explode( " ", GetConVar( "cl_playerflexes" ):GetString() ) if ( #str < pnl.typenum + 1 ) then for i = 1, pnl.typenum + 1 do str[ i ] = str[ i ] or 0 end end @@ -1551,12 +1856,12 @@ function Menu.Setup() elseif ( pnl.type == "skin" ) then - if ( not handsTabActive ) then mdl.Entity:SetSkin( math.Round( val ) ) end + if ( not handsTabActive ) then ModelPreview.Entity:SetSkin( math.Round( val ) ) end RunConsoleCommand( "cl_playerskin", math.Round( val ) ) elseif ( pnl.type == "h__bgroup" ) then - if true or ( handsTabActive ) then mdl.EntityHands:SetBodygroup( pnl.typenum, math.Round( val ) ) end + if true or ( handsTabActive ) then ModelPreview.EntityHands:SetBodygroup( pnl.typenum, math.Round( val ) ) end local str = string.Explode( " ", GetConVar( "cl_playerhandsbodygroups" ):GetString() ) if ( #str < pnl.typenum + 1 ) then for i = 1, pnl.typenum + 1 do str[ i ] = str[ i ] or 0 end end @@ -1565,7 +1870,7 @@ function Menu.Setup() elseif ( pnl.type == "h__skin" ) then - if true or ( handsTabActive ) then mdl.EntityHands:SetSkin( math.Round( val ) ) end + if true or ( handsTabActive ) then ModelPreview.EntityHands:SetSkin( math.Round( val ) ) end RunConsoleCommand( "cl_playerhandsskin", math.Round( val ) ) end @@ -1580,11 +1885,11 @@ function Menu.Setup() h__bgtab.Tab:SetVisible( false ) flextab.Tab:SetVisible( false ) - local nskins = mdl.Entity:SkinCount() - 1 + local nskins = ModelPreview.Entity:SkinCount() - 1 if ( nskins > 0 ) then local skins = vgui.Create( "DNumSlider" ) skins:Dock( TOP ) - skins:SetText( "Skin" ) + skins:SetText( "#EPS.Skin" ) skins:SetDark( true ) skins:SetTall( 50 ) skins:SetDecimals( 0 ) @@ -1595,41 +1900,74 @@ function Menu.Setup() bdcontrolspanel:AddItem( skins ) - mdl.Entity:SetSkin( GetConVar( "cl_playerskin" ):GetInt() ) + ModelPreview.Entity:SetSkin( GetConVar( "cl_playerskin" ):GetInt() ) bgtab.Tab:SetVisible( true ) end local groups = string.Explode( " ", GetConVar( "cl_playerbodygroups" ):GetString() ) - for k = 0, mdl.Entity:GetNumBodyGroups() - 1 do - if ( mdl.Entity:GetBodygroupCount( k ) <= 1 ) then continue end + for k = 0, ModelPreview.Entity:GetNumBodyGroups() - 1 do + if ( ModelPreview.Entity:GetBodygroupCount( k ) <= 1 ) then continue end local bgroup = vgui.Create( "DNumSlider" ) bgroup:Dock( TOP ) - bgroup:SetText( Menu.MakeNiceName( mdl.Entity:GetBodygroupName( k ) ) ) + if !GetConVar("cl_playermodel_selector_translate_bodygroup"):GetBool() or language.GetPhrase( "eps.model_bg."..string.lower(ModelPreview.Entity:GetBodygroupName( k )) ) == "eps.model_bg."..string.lower(ModelPreview.Entity:GetBodygroupName( k )) then bgroup:SetText( Menu.MakeNiceName( ModelPreview.Entity:GetBodygroupName( k ) ) ) else bgroup:SetText( language.GetPhrase( "eps.model_bg."..string.lower(ModelPreview.Entity:GetBodygroupName( k )) ) ) end bgroup:SetDark( true ) bgroup:SetTall( 50 ) bgroup:SetDecimals( 0 ) bgroup.type = "bgroup" bgroup.typenum = k - bgroup:SetMax( mdl.Entity:GetBodygroupCount( k ) - 1 ) + bgroup:SetMax( ModelPreview.Entity:GetBodygroupCount( k ) - 1 ) bgroup:SetValue( groups[ k + 1 ] or 0 ) - bgroup.OnValueChanged = Menu.UpdateBodyGroups + -- bgroup.OnValueChanged = Menu.UpdateBodyGroups bdcontrolspanel:AddItem( bgroup ) + + local tgroup + local submdls = ModelPreview.Entity:GetBodyGroups()[k+1].submodels + if istable(submdls) then + local mdl = submdls[tonumber(groups[ k + 1 ] or 0)] or "idk" + tgroup = vgui.Create( "DLabel" ) + tgroup:Dock( TOP ) + tgroup:DockMargin(10, -15, 0, 0) + mdl = string.Trim( mdl, "." ) + mdl = string.Trim( mdl, "/" ) + mdl = string.Trim( mdl, "\\" ) + mdl = string.StripExtension( mdl ) + mdl = string.GetFileFromFilename( mdl ) + + if !GetConVar("cl_playermodel_selector_translate_bodygroup"):GetBool() or language.GetPhrase( "eps.model_bg."..string.lower(mdl) ) == "eps.model_bg."..string.lower(mdl) then tgroup:SetText( Menu.MakeNiceName( mdl )) else tgroup:SetText( language.GetPhrase( "eps.model_bg."..mdl ) ) end + if GetConVar("sv_playermodel_selector_debug"):GetBool() and language.GetPhrase( "eps.model_bg."..string.lower(mdl) ) == "eps.model_bg."..string.lower(mdl) then print("eps.model_bg."..string.lower(mdl).."=") end + bdcontrolspanel:AddItem( tgroup ) + end - mdl.Entity:SetBodygroup( k, groups[ k + 1 ] or 0 ) + bgroup.OnValueChanged = function(something1, val) + local submdls = ModelPreview.Entity:GetBodyGroups()[k+1].submodels + if istable(submdls) then + local model = submdls[math.Round(val)] + model = string.Trim( model, "." ) + model = string.Trim( model, "/" ) + model = string.Trim( model, "\\" ) + model = string.StripExtension( model ) + model = string.GetFileFromFilename( model ) + if !GetConVar("cl_playermodel_selector_translate_bodygroup"):GetBool() or language.GetPhrase( "eps.model_bg."..string.lower(model) ) == "eps.model_bg."..string.lower(model) then tgroup:SetText(Menu.MakeNiceName(model) or "idk") else tgroup:SetText(language.GetPhrase( "eps.model_bg."..string.lower(model)) or "idk") end + end + + Menu.UpdateBodyGroups(something1, val) + end + + ModelPreview.Entity:SetBodygroup( k, groups[ k + 1 ] or 0 ) bgtab.Tab:SetVisible( true ) end -- Hands - if GetConVar( "cl_playerhands" ):GetString() and GetConVar( "cl_playerhands" ):GetString() != "" and ( IsValid( mdl.EntityHands ) ) then - local nskins = mdl.EntityHands:SkinCount() - 1 + if GetConVar( "cl_playerhands" ):GetString() and GetConVar( "cl_playerhands" ):GetString() != "" and ( IsValid( ModelPreview.EntityHands ) ) then + local nskins = ModelPreview.EntityHands:SkinCount() - 1 if ( nskins > 0 ) then local skins = vgui.Create( "DNumSlider" ) skins:Dock( TOP ) - skins:SetText( "Skin" ) + skins:SetText( "#EPS.Skin" ) skins:SetDark( true ) skins:SetTall( 50 ) skins:SetDecimals( 0 ) @@ -1640,30 +1978,50 @@ function Menu.Setup() h__bdcontrolspanel:AddItem( skins ) - mdl.EntityHands:SetSkin( GetConVar( "cl_playerhandsskin" ):GetInt() ) + ModelPreview.EntityHands:SetSkin( GetConVar( "cl_playerhandsskin" ):GetInt() ) h__bgtab.Tab:SetVisible( true ) end local groups = string.Explode( " ", GetConVar( "cl_playerhandsbodygroups" ):GetString() ) - for k = 0, mdl.EntityHands:GetNumBodyGroups() - 1 do - if ( mdl.EntityHands:GetBodygroupCount( k ) <= 1 ) then continue end + for k = 0, ModelPreview.EntityHands:GetNumBodyGroups() - 1 do + if ( ModelPreview.EntityHands:GetBodygroupCount( k ) <= 1 ) then continue end local bgroup = vgui.Create( "DNumSlider" ) bgroup:Dock( TOP ) - bgroup:SetText( Menu.MakeNiceName( mdl.EntityHands:GetBodygroupName( k ) ) ) + bgroup:SetText( Menu.MakeNiceName( ModelPreview.EntityHands:GetBodygroupName( k ) ) ) bgroup:SetDark( true ) bgroup:SetTall( 50 ) bgroup:SetDecimals( 0 ) bgroup.type = "h__bgroup" bgroup.typenum = k - bgroup:SetMax( mdl.EntityHands:GetBodygroupCount( k ) - 1 ) + bgroup:SetMax( ModelPreview.EntityHands:GetBodygroupCount( k ) - 1 ) bgroup:SetValue( groups[ k + 1 ] or 0 ) bgroup.OnValueChanged = Menu.UpdateBodyGroups h__bdcontrolspanel:AddItem( bgroup ) - mdl.EntityHands:SetBodygroup( k, groups[ k + 1 ] or 0 ) + local tgroup + local submdls = ModelPreview.EntityHands:GetBodyGroups()[k+1].submodels + if istable(submdls) then + local mdl = submdls[tonumber(groups[ k + 1 ] or 0)] or "idk" + tgroup = vgui.Create( "DLabel" ) + tgroup:Dock( TOP ) + tgroup:DockMargin(10, -15, 0, 0) + tgroup:SetText( Menu.MakeNiceName( mdl )) + + h__bdcontrolspanel:AddItem( tgroup ) + end + + bgroup.OnValueChanged = function(something1, val) + local submdls = ModelPreview.EntityHands:GetBodyGroups()[k+1].submodels + if istable(submdls) then + tgroup:SetText(Menu.MakeNiceName(submdls[math.Round(val)]) or "idk") + end + + Menu.UpdateBodyGroups(something1, val) + end + ModelPreview.EntityHands:SetBodygroup( k, groups[ k + 1 ] or 0 ) h__bgtab.Tab:SetVisible( true ) end @@ -1674,21 +2032,21 @@ function Menu.Setup() local t = vgui.Create( "DLabel" ) t:Dock( TOP ) t:SetTall( 70 ) - t:SetText( "Notes:\n-The model preview for flexes doesn't work correctly. However, they will be visible on your playermodel when you apply them.\n- The default values provided might not be correct and cause distorted faces.\n- There is no way to reset (or fix) flex manipulation besides disconnecting." ) + t:SetText( "#EPS.Notes" ) t:SetDark( true ) t:SetWrap( true ) flexcontrolspanel:AddItem( t ) local flexes = string.Explode( " ", GetConVar( "cl_playerflexes" ):GetString() ) - for k = 0, mdl.Entity:GetFlexNum() - 1 do - if ( mdl.Entity:GetFlexNum( k ) <= 1 ) then continue end + for k = 0, ModelPreview.Entity:GetFlexNum() - 1 do + if ( ModelPreview.Entity:GetFlexNum( k ) <= 1 ) then continue end local flex = vgui.Create( "DNumSlider" ) - local vmin, vmax = mdl.Entity:GetFlexBounds( k ) + local vmin, vmax = ModelPreview.Entity:GetFlexBounds( k ) local default = 0 if vmin == -1 and vmax == 1 then default = 0.5 end flex:Dock( TOP ) - flex:SetText( Menu.MakeNiceName( mdl.Entity:GetFlexName( k ) ) ) + flex:SetText( Menu.MakeNiceName( ModelPreview.Entity:GetFlexName( k ) ) ) flex:SetDark( true ) flex:SetTall( 30 ) flex:SetDecimals( 2 ) @@ -1701,7 +2059,7 @@ function Menu.Setup() flexcontrolspanel:AddItem( flex ) - mdl.Entity:SetFlexWeight( k, flexes[ k + 1 ] or default ) + ModelPreview.Entity:SetFlexWeight( k, flexes[ k + 1 ] or default ) flextab.Tab:SetVisible( true ) end @@ -1711,45 +2069,45 @@ function Menu.Setup() Menu.Right:InvalidateLayout( true ) end - local handsAnimModel = Model( "models/weapons/c_arms_combine.mdl" ) + local handsAnimModel = Model( "models/weapons/chand_checker.mdl" ) function Menu.UpdateFromConvars() - if ( IsValid( mdl.EntityHands ) ) then - mdl.EntityHands:Remove() + if ( IsValid( ModelPreview.EntityHands ) ) then + ModelPreview.EntityHands:Remove() end - if ( IsValid( mdl.EntityHandsAnim ) ) then - mdl.EntityHandsAnim:Remove() + if ( IsValid( ModelPreview.EntityHandsAnim ) ) then + ModelPreview.EntityHandsAnim:Remove() end - mdl.EntityHandsAnim = ClientsideModel( handsAnimModel, RENDERGROUP_OTHER ) - mdl.EntityHandsAnim:SetNoDraw( true ) - mdl.EntityHandsAnim:SetPos( Vector( -100, 0, -61 ) ) + ModelPreview.EntityHandsAnim = ClientsideModel( handsAnimModel, RENDERGROUP_OTHER ) + ModelPreview.EntityHandsAnim:SetNoDraw( true ) + ModelPreview.EntityHandsAnim:SetPos( Vector( 0, 0, 0 ) ) if true or ( Menu.IsHandsTabActive() ) then - mdl:SetModel( handsAnimModel ) + ModelPreview:SetModel( handsAnimModel ) local model = LocalPlayer():GetInfo( "cl_playerhands" ) if ( model == "" ) then model = LocalPlayer():GetInfo( "cl_playermodel" ) end - local mdlhands = player_manager.TranslatePlayerHands( model ) + local HandsModel = player_manager.TranslatePlayerHands( model ) - util.PrecacheModel( mdlhands.model ) + util.PrecacheModel( HandsModel.model ) - mdl.EntityHands = ClientsideModel( mdlhands.model, RENDERGROUP_OTHER ) - mdl.EntityHands:SetParent( mdl.EntityHandsAnim ) - mdl.EntityHands:SetNoDraw( true ) + ModelPreview.EntityHands = ClientsideModel( HandsModel.model, RENDERGROUP_OTHER ) + ModelPreview.EntityHands:SetParent( ModelPreview.EntityHandsAnim ) + ModelPreview.EntityHands:SetNoDraw( true ) - local dumbassproof = mdlhands.skin + local dumbassproof = HandsModel.skin if !isnumber( dumbassproof ) then dumbassproof = 0 end - mdl.EntityHands:SetSkin( dumbassproof ) - mdl.EntityHands:SetBodyGroups( mdlhands.body ) - mdl.EntityHands.GetPlayerColor = function() return Vector( GetConVar( "cl_playercolor" ):GetString() ) end + ModelPreview.EntityHands:SetSkin( dumbassproof ) + ModelPreview.EntityHands:SetBodyGroups( HandsModel.body ) + ModelPreview.EntityHands.GetPlayerColor = function() return Vector( GetConVar( "cl_playercolor" ):GetString() ) end - Menu.PlayHandsPreviewAnimation( mdl, model ) + Menu.PlayHandsPreviewAnimation( ModelPreview, model ) --Menu.RebuildBodygroupTab() --return end @@ -1758,14 +2116,14 @@ function Menu.Setup() local model = LocalPlayer():GetInfo( "cl_playermodel" ) local modelname = player_manager.TranslatePlayerModel( model ) util.PrecacheModel( modelname ) - mdl:SetModel( modelname ) - mdl.Entity.GetPlayerColor = function() return Vector( GetConVar( "cl_playercolor" ):GetString() ) end - mdl.Entity:SetPos( Vector( -100, 0, -61 ) ) + ModelPreview:SetModel( modelname ) + ModelPreview.Entity.GetPlayerColor = function() return Vector( GetConVar( "cl_playercolor" ):GetString() ) end + ModelPreview.Entity:SetPos( Vector( -100, 0, -61 ) ) plycol:SetVector( Vector( GetConVar( "cl_playercolor" ):GetString() ) ) wepcol:SetVector( Vector( GetConVar( "cl_weaponcolor" ):GetString() ) ) - Menu.PlayPreviewAnimation( mdl, model ) + Menu.PlayPreviewAnimation( ModelPreview, model ) Menu.RebuildBodygroupTab() end @@ -1785,19 +2143,19 @@ function Menu.Setup() -- Hold to rotate - function mdl:DragMousePress( button ) + function ModelPreview:DragMousePress( button ) self.PressX, self.PressY = gui.MousePos() self.Pressed = button end - function mdl:OnMouseWheeled( delta ) - self.WheelD = delta * -10 + function ModelPreview:OnMouseWheeled( delta ) + self.WheelD = delta * -5 self.Wheeled = true end - function mdl:DragMouseRelease() self.Pressed = false end + function ModelPreview:DragMouseRelease() self.Pressed = false end - function mdl:RunAnimation() -- override to restart hands animation + function ModelPreview:RunAnimation() -- override to restart hands animation if ( Menu.IsHandsTabActive() and self.Entity:GetCycle() > 0.99 ) then self.Entity:SetCycle( 0 ) end @@ -1806,31 +2164,33 @@ function Menu.Setup() end local handsang = Angle( 0, 180, 0 ) + local handspos = Vector( -2, 0, -2 ) - function mdl:LayoutEntity( Entity ) + function ModelPreview:LayoutEntity( Entity ) if ( self.bAnimated ) then self:RunAnimation() end if ( Menu.IsHandsTabActive() ) then self.WasHandsTab = true - self:SetFOV( 65 ) + self:SetFOV( 45 ) -- Hands FOV self.Angles = handsang - self.Pos = vector_origin + self.Pos = handspos self.EntityHandsAnim:SetAngles( self.Angles ) self.EntityHandsAnim:SetPos( self.Pos ) - self.EntityHandsAnim:SetCycle( math.Remap((CurTime()/3) % 1, 0, 1, 0.05, 0.95) ) + self.EntityHandsAnim:SetCycle( math.Remap((CurTime()/8) % 1, 0, 1, 0.01, 0.99) ) return elseif ( self.WasHandsTab ) then -- reset position on tab switch self.WasHandsTab = false - self:SetFOV( 36 ) + self:SetFOV( 36 ) -- PM FOV after switching back from Hands Tab self.Pos = Vector( -100, 0, -61 ) self.Angles = Angle( 0, 0, 0 ) + self.AngleOffset = Angle( 0, 0, 0 ) end if ( self.Pressed == MOUSE_LEFT ) then @@ -1842,14 +2202,14 @@ function Menu.Setup() if ( self.Pressed == MOUSE_RIGHT ) then local mx, my = gui.MousePos() - self.Angles = self.Angles - Angle( ( self.PressY*(0.5) or my*(0.5) ) - my*(0.5), 0, ( self.PressX*(-0.5) or mx*(-0.5) ) - mx*(-0.5) ) - + self.AngleOffset = Angle( ( self.PressY*(0.15) or my*(0.15) ) - my*(0.15), 0, ( self.PressX*(-0.15) or mx*(-0.15) ) - mx*(-0.15) ) + self.Pos, self.Angles = RRRotateAroundPoint(self.Pos, self.Angles, Vector(0, 0, self.Pos.z * -0.5), self.AngleOffset) self.PressX, self.PressY = gui.MousePos() end if ( self.Pressed == MOUSE_MIDDLE ) then local mx, my = gui.MousePos() - self.Pos = self.Pos - Vector( 0, ( self.PressX*(0.5) or mx*(0.5) ) - mx*(0.5), ( self.PressY*(-0.5) or my*(-0.5) ) - my*(-0.5) ) + self.Pos = self.Pos - Vector( 0, ( self.PressX*(0.15) or mx*(0.15) ) - mx*(0.15), ( self.PressY*(-0.15) or my*(-0.15) ) - my*(-0.15) ) self.PressX, self.PressY = gui.MousePos() end @@ -1874,13 +2234,13 @@ end function Menu.Toggle() if LocalPlayer():IsAdmin() or GAMEMODE_NAME == "sandbox" or GetConVar( "sv_playermodel_selector_gamemodes" ):GetBool() then - if IsValid( Frame ) then - Frame:ToggleVisible() + if IsValid( MainWindow ) then + MainWindow:ToggleVisible() else Menu.Setup() end else - if IsValid( Frame ) then Frame:Close() end + if IsValid( MainWindow ) then MainWindow:Close() end end end diff --git a/materials/eps/hasbgs2.png b/materials/eps/hasbgs2.png new file mode 100644 index 0000000..2e637fc Binary files /dev/null and b/materials/eps/hasbgs2.png differ diff --git a/materials/eps/hasbgs3.png b/materials/eps/hasbgs3.png new file mode 100644 index 0000000..57dc8ec Binary files /dev/null and b/materials/eps/hasbgs3.png differ diff --git a/materials/eps/hasbgs4.png b/materials/eps/hasbgs4.png new file mode 100644 index 0000000..87eea1b Binary files /dev/null and b/materials/eps/hasbgs4.png differ diff --git a/models/weapons/chand_checker.dx80.vtx b/models/weapons/chand_checker.dx80.vtx new file mode 100644 index 0000000..e8b8d12 Binary files /dev/null and b/models/weapons/chand_checker.dx80.vtx differ diff --git a/models/weapons/chand_checker.dx90.vtx b/models/weapons/chand_checker.dx90.vtx new file mode 100644 index 0000000..21d8d63 Binary files /dev/null and b/models/weapons/chand_checker.dx90.vtx differ diff --git a/models/weapons/chand_checker.mdl b/models/weapons/chand_checker.mdl new file mode 100644 index 0000000..a7b421a Binary files /dev/null and b/models/weapons/chand_checker.mdl differ diff --git a/models/weapons/chand_checker.vvd b/models/weapons/chand_checker.vvd new file mode 100644 index 0000000..708abae Binary files /dev/null and b/models/weapons/chand_checker.vvd differ diff --git a/resource/localization/cs/enhanced_playermodel_selector.properties b/resource/localization/cs/enhanced_playermodel_selector.properties new file mode 100644 index 0000000..57c4f71 --- /dev/null +++ b/resource/localization/cs/enhanced_playermodel_selector.properties @@ -0,0 +1,99 @@ + +EPS.Title=Vylepšený výběr modelu hráče %s, Fesiugova úprava + +# Main Buttons +EPS.Reset=Resetování +EPS.NextAnim=Další animace +EPS.ApplyPM=Použít playermodel +EPS.VisitAddonPage=Navštívit stránku doplňku + +EPS.Search=Vyhledávání... + +# Model Sheet +EPS.Model=Model +EPS.Model.Icons=Ikony +EPS.Model.Table=Stůl +EPS.Model.Table.Model=Model +EPS.Model.Table.Path=Cesta + +# Hands Sheet +EPS.Hands=Paže +EPS.Hands.Icons=Ikony +EPS.Hands.Table=Stůl +EPS.Hands.Table.Model=Model +EPS.Hands.Table.Path=Cesta +EPS.Hands.UsePM=Použít playermodel + +# Favorites Sheet +EPS.Favorites=Oblíbené +EPS.Favorites.Model=Model +EPS.Favorites.Skin=Vzhled +EPS.Favorites.Bodygroups=Části těla +EPS.Favorites.LoadFavorite=Načíst vybrané oblíbené +EPS.Favorites.Desc=Zde si můžete uložit své oblíbené kombinace modelů her. Postup:\n1. Vyberte model a nastavte kůži a skupiny těl, jak si přejete.\n2. Do textového pole zadejte jedinečný název a klikněte na „Přidat nové oblíbené“.\n3. Načtěte své oblíbené položky tak, že je vyberete v seznamu níže a kliknete na „Načíst vybrané“.\nStávající oblíbené položky můžete také použít příkazem konzole:\nplayermodel_loadfav "jméno favorita" +EPS.Favorites.AddNewFavorite=Přidat nového favorita +EPS.Favorites.ReplaceSelected=Nahradit vybrané +EPS.Favorites.DeleteAllSelected=Smazat všechny vybrané + +# Bodygroups Sheet +EPS.Bodygroups=Části těla + +EPS.Handgroups=Handgroups + +EPS.Skin=Vzhled + +EPS.Flexes=Flexes +EPS.Notes=Poznámky:\n- Náhled modelu pro ohyby nefunguje správně. Budou však viditelné na vašem modelu hry, když je použijete.\n- Poskytnuté výchozí hodnoty nemusí být správné a mohou způsobit zkreslení obličejů.\n- Kromě odpojení neexistuje žádný způsob, jak resetovat (nebo opravit) manipulaci s flexem. + +# Colors Sheet +EPS.Colors=Barvy +EPS.Colors.PlayerColor=Barva přehrávače +EPS.Colors.PhysgunColor=Barva Physgun +EPS.Colors.ResetToDefault=Obnovit výchozí hodnoty + +# Settings Sheet +EPS.Settings=Nastavení +EPS.Settings.Client=Klient +EPS.Settings.Client.EnforcePM=Vynutit váš playermodel +EPS.Settings.Client.EnforcePM.Desc=Pokud je povoleno, bude vybraný model hry chráněn. Žádná jiná funkce již nebude moci změnit váš playermodel. +EPS.Settings.Client.PlayerColorBG=Použít barvu přehrávače jako pozadí +EPS.Settings.Client.PlayerColorBG.Desc=Pokud je povoleno, bude zvolená barva přehrávače použita jako pozadí nabídky. Pokud je zakázáno, pozadí bude šedé. +EPS.Settings.Client.TransparentBG=Průhledné pozadí +EPS.Settings.Client.TransparentBG.Desc=Pokud je povoleno, bude backgroup nabídky transparentní. Pokud je deaktivováno, pozadí bude neprůhledné. +EPS.Settings.Client.HideDefaultPMs=Skrýt výchozí Playermodely +EPS.Settings.Client.HideDefaultPMs.Desc=Pokud je povoleno, výchozí modely přehrávání budou skryty. Vyžaduje opětovné otevření okna. +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs=V hlavním seznamu ignorujte pouze „playermodelky“ c_hands +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs.Desc=Pokud je povoleno, „playermodely“, které nejsou nic jiného než plovoucí pár rukou, se nezobrazí v seznamu dostupných playermodelů. Zakázat zobrazení všech registrovaných playermodelů. +EPS.Settings.Client.ShowFlexes=Zobrazit kartu ohyby +EPS.Settings.Client.ShowFlexes.Desc=To vám umožní manipulovat s ohyby na vašem playermodelu. Flex manipulace však není ve skutečnosti určena pro modelky a způsobí problémy. Patří sem následující:\n- Blikání očí již nefunguje.\n- Obličeje mohou být zkreslené, pokud nejsou ohyby korigovány ručně.\n- Může zcela rozbít tváře nekompatibilních modelek.\n- I když nastavíte všechny ohyby na výchozí hodnotu, motor je stále považuje za zmanipulované. Modely s problémy nebudou opraveny.\nAby se karta zobrazila, musíte svůj model jednou přepnout! +EPS.Settings.Client.RebuildIcon=Znovu vytvořit ikony rozmnožování +EPS.Settings.Client.RebuildIcon.Desc=Vynutí opětovné vykreslení všech ikon playermodelu. Užitečné, pokud jsou ikony zastaralé poté, co vlastní modely změnily svůj vzhled. V závislosti na počtu modelů a rychlosti počítače to může chvíli trvat. + +EPS.Settings.Server=Servery +EPS.Settings.Server.EnablePMEnforcement=Povolit vynucení playermodelu +EPS.Settings.Server.EnablePMEnforcement.Desc=Pokud je povoleno, vybrané modely budou vynuceny a chráněny. Žádné gamemody, mapy nebo doplňky je již nemohou přepsat. Hráči mohou tuto funkci přepínat jednotlivě pomocí zaškrtávacího políčka v horní části nabídky.\nPokud je deaktivováno, funguje pouze ruční tlačítko mimo Sandbox. +EPS.Settings.Server.AllowInstantChanges=Povolit okamžité změny +EPS.Settings.Server.AllowInstantChanges.Desc=Pokud je povoleno, hráči mohou své změny použít okamžitě, místo aby se museli znovu objevit. +EPS.Settings.Server.AllowFlexes=Umožnit hráčům měnit ohyby +EPS.Settings.Server.AllowFlexes.Desc=Pokud je povoleno, hráči mohou změnit ohyby svých playermodelů. To přeruší blikání přehrávače a může způsobit další problémy. Povolit na vlastní nebezpečí. Hráči mohou resetovat své pohyby pouze odpojením. +EPS.Settings.Server.EnableInAllGM=Povolit ve všech herních režimech +EPS.Settings.Server.EnableInAllGM.Desc=Pokud je povoleno, bude volič PlayerModel k dispozici pro všechny hráče v každém herním režimu. Pokud je zakázána, mohou ji používat pouze správci mimo Sandbox. +EPS.Settings.Server.RequestLimit=Limit žádosti +EPS.Settings.Server.RequestLimit.Desc=Časový limit v sekundách, na který musí hráči počkat, než budou moci znovu použít funkci okamžité změny. Configurar a 0 para desactivarlo. + +EPS.Settings.GM_Blacklist=GM Blacklist +EPS.Settings.GM_Blacklist.ExistedGM=Režimy her na černé listině +EPS.Settings.GM_Blacklist.Desc=Zde můžete zakázat nekompatibilní herní režimy.\n\nHráči (včetně administrátorů) nemohou měnit své playermodely v těchto herních režimech, bez ohledu na jiná nastavení. +EPS.Settings.GM_Blacklist.AddCurrent=Přidat aktuální herní režim na černou listinu +EPS.Settings.GM_Blacklist.ManuallyAddGM=Ručně přidat gamemode +EPS.Settings.GM_Blacklist.RemoveSelected=Odebrat vybrané herní režimy + +EPS.Settings.VOX=VOX +EPS.Settings.VOX.PlayerModel=PlayerModel +EPS.Settings.VOX.Assigned=přiřazené balení VOX +EPS.Settings.VOX.AvailableVOX=Dostupné balíčky VOX +EPS.Settings.VOX.AssignToCurrent=Přiřadit balíček VOX aktuálnímu modelu PlayerModel +EPS.Settings.VOX.RemoveSelected=Odebrat vybraný úkol + +EPS.Settings.Info=Info +EPS.Settings.Info.CreateBy=Vytvořil/a %s diff --git a/resource/localization/de/enhanced_playermodel_selector.properties b/resource/localization/de/enhanced_playermodel_selector.properties new file mode 100644 index 0000000..41e8fa6 --- /dev/null +++ b/resource/localization/de/enhanced_playermodel_selector.properties @@ -0,0 +1,99 @@ + +EPS.Title=Enhanced PlayerModel Selector %s, Fesiug's Edit + +# Main Buttons +EPS.Reset=Zurücksetzen +EPS.NextAnim=Nächste Animation +EPS.ApplyPM=Spielermodell anwenden +EPS.VisitAddonPage=Addon Seite besuchen + +EPS.Search=Suche... + +# Model Sheet +EPS.Model=Modell +EPS.Model.Icons=Symbole +EPS.Model.Table=Tabelle +EPS.Model.Table.Model=Modell +EPS.Model.Table.Path=Weg + +# Hands Sheet +EPS.Hands=Hände +EPS.Hands.Icons=Symbole +EPS.Hands.Table=Tabelle +EPS.Hands.Table.Model=Modell +EPS.Hands.Table.Path=Weg +EPS.Hands.UsePM=Playermodel benutzen + +# Favorites Sheet +EPS.Favorites=Favoriten +EPS.Favorites.Model=Modell +EPS.Favorites.Skin=Skin +EPS.Favorites.Bodygroups=Körper-Gruppen +EPS.Favorites.LoadFavorite=Ausgewähltes Favorit auswählen +EPS.Favorites.Desc=Hier können Sie Ihre bevorzugten Spielermodellkombinationen speichern. Um dies zu tun:\n1. Wählen Sie ein Modell aus und richten Sie die Körpergruppen und Skin nach Ihren Wunsch ein.\n2. Geben Sie einen eindeutigen Namen in das Textfeld ein und klicken Sie auf „Neuen Favoriten hinzufügen“.\n3. Laden Sie Ihren Favoriten, indem Sie ihn in der Liste unten auswählen und auf „Ausgewählte laden“ klicken.\nSie können vorhandene Favoriten auch mit dem Konsolenbefehl anwenden:\nplayermodel_loadfav „Name des Favoriten“ +EPS.Favorites.AddNewFavorite=Neuen Favouriten hinzufügen +EPS.Favorites.ReplaceSelected=Ausgewähltes ersetzen +EPS.Favorites.DeleteAllSelected=Alles ausgewählte löschen + +# Bodygroups Sheet +EPS.Bodygroups=Körpergruppen + +EPS.Handgroups=Handgruppen + +EPS.Skin=Skin + +EPS.Flexes=Flexes +EPS.Notes=Zusatz:\n-Die Modellvorschau für Flexes funktioniert nicht richtig. Sie sind jedoch auf Ihrem Spielermodell sichtbar, wenn Sie sie anwenden.\n- Die bereitgestellten Standardwerte sind möglicherweise nicht korrekt und führen zu verzerrten Gesichtern.\n- Es gibt keine Möglichkeit, die Flex-Manipulation zurückzusetzen (oder zu reparieren), außer die Verbindung zu trennen. + +# Colors Sheet +EPS.Colors=Farben +EPS.Colors.PlayerColor=Spieler Farbe +EPS.Colors.PhysgunColor=Physgun Farbe +EPS.Colors.ResetToDefault=Auf Standardwerte zurücksetzen + +# Settings Sheet +EPS.Settings=Einstellungen +EPS.Settings.Client=Klient +EPS.Settings.Client.EnforcePM=Spielermodell durchsetzen +EPS.Settings.Client.EnforcePM.Desc=Falls aktiviert, wird Ihr ausgewähltes Spielermodell geschützt. Keine andere Funktion kann Ihr Spielermodell mehr ändern. +EPS.Settings.Client.PlayerColorBG=Spielerfarbe als Hintergrund benutzen +EPS.Settings.Client.PlayerColorBG.Desc=Falls aktiviert, wird die von Ihnen ausgewählte Spielerfarbe als Menühintergrund verwendet. Falls deaktiviert, ist der Hintergrund grau. +EPS.Settings.Client.TransparentBG=Durchsichtiger Hintergrund +EPS.Settings.Client.TransparentBG.Desc=Falls aktiviert, ist der Menühintergrund durchsichtig. Falls deaktiviert, ist der Hintergrund undurchsichtig. +EPS.Settings.Client.HideDefaultPMs=Standard Spielermodell ausblenden +EPS.Settings.Client.HideDefaultPMs.Desc=Falls aktiviert, werden die Standard Spielermodelle ausgeblendet. Dieses Fenster muss erneut geöffnet werden. +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs=Ignore c_hands only "playermodels" in main list +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs.Desc=If enabled, "playermodels" that are nothing but floating pair of hands will be not shown in list of available playermodels. Disable to see all registered playermodels. +EPS.Settings.Client.ShowFlexes=Flexes-Tab anzeigen +EPS.Settings.Client.ShowFlexes.Desc=Dadurch können Sie die Flexes Ihres Spielermodells manipulieren. Allerdings ist die Flex-Manipulation nicht wirklich für Spielermodelle geeignet und wird Probleme verursachen. Dazu gehört Folgendes:\n- Das Augenzwinkern funktioniert nicht mehr.\n- Gesichter könnten verzerrt sein, es sei denn, die Flexen werden manuell korrigiert.\n- Könnte die Gesichter inkompatibler Spielermodelle vollständig beschädigen.\n- Auch wenn Sie alle Flexen zu Standardwert zurückstellen, die Engine betrachtet sie immer noch als manipuliert. Modelle mit Problemen werden nicht repariert.\nSie müssen Ihr Modell einmal wechseln, damit die Tab angezeigt wird! +EPS.Settings.Client.RebuildIcon=Spawn-Symbole neu erstellen +EPS.Settings.Client.RebuildIcon.Desc=Setzt durch, dass alle Spielermodellsymbole neu gerendert werden. Nützlich, wenn die Symbole veraltet sind, nachdem benutzerdefinierte Modelle ihr Aussehen geändert haben. Dies kann je nach Anzahl der Modelle und der Geschwindigkeit Ihres PCs eine Weile dauern. + +EPS.Settings.Server=Server +EPS.Settings.Server.EnablePMEnforcement=Durchsetzung des Spielermodells aktivieren +EPS.Settings.Server.EnablePMEnforcement.Desc=Fals aktiviert, werden ausgewählte Spielermodelle durchgesetzt und geschützt. Keine Spielmodi, Karten oder Add-ons können diese mehr überschreiben. Spieler können diese Funktion individuell umschalten, indem sie das Kontrollkästchen oben im Menü verwenden.\nFalls deaktiviert, funktioniert nur die manuelle Schaltfläche außerhalb von Sandbox. +EPS.Settings.Server.AllowInstantChanges=Sofortige Änderungen erlauben +EPS.Settings.Server.AllowInstantChanges.Desc=Falls aktiviert, können Spieler ihre Änderungen sofort anwenden, anstatt respawnen zu müssen. +EPS.Settings.Server.AllowFlexes=Spielern erlauben, Flexes zu ändern +EPS.Settings.Server.AllowFlexes.Desc=Falls aktiviert, können Spieler die Flexes für ihre Spielermodelle ändern. Dadurch wird das Blinken des Players unterbrochen und es können andere Probleme auftreten. Aktivierung auf eigene Gefahr. Spieler können ihre Flexes nur zurücksetzen, indem sie die Verbindung trennen. +EPS.Settings.Server.EnableInAllGM=In allen Spielmodi aktivieren +EPS.Settings.Server.EnableInAllGM.Desc=Falls aktiviert, ist der PlayerModel Selector für alle Spieler in jedem Spielmodus verfügbar. Falls deaktiviert, können nur Administratoren es außerhalb von Sandbox verwenden. +EPS.Settings.Server.RequestLimit=Anforderungslimit +EPS.Settings.Server.RequestLimit.Desc=Zeitlimit in Sekunden, die die Spieler warten müssen, bevor sie die Sofortwechselfunktion erneut nutzen können. Zum Deaktivieren auf 0 setzen. + +EPS.Settings.GM_Blacklist=GM Blacklist +EPS.Settings.GM_Blacklist.ExistedGM=Geblacklistete Spielmodi +EPS.Settings.GM_Blacklist.Desc=Hier können Sie inkompatible Spielmodi auf die Blacklist setzen.\n\nSpieler (einschließlich Admins) können ihre Spielermodelle in diesen Spielmodi nicht ändern, unabhängig von anderen Einstellungen. +EPS.Settings.GM_Blacklist.AddCurrent=Jetziges Spielmodus zu Blacklist hinzufügen +EPS.Settings.GM_Blacklist.ManuallyAddGM=Spielmodus manuell hinzufügen +EPS.Settings.GM_Blacklist.RemoveSelected=Ausgewählte Spielmodi entfernen + +EPS.Settings.VOX=VOX +EPS.Settings.VOX.PlayerModel=Spielermodell +EPS.Settings.VOX.Assigned=Zugewiesenes VOX-Paket +EPS.Settings.VOX.AvailableVOX=Verfügbare VOX-Pakette +EPS.Settings.VOX.AssignToCurrent=VOX-Paket dem aktuellen PlayerModel zuweisen +EPS.Settings.VOX.RemoveSelected=Ausgewählte Zuordnung entfernen + +EPS.Settings.Info=Info +EPS.Settings.Info.CreateBy=Von %s hergestellt \ No newline at end of file diff --git a/resource/localization/en/enhanced_playermodel_selector.properties b/resource/localization/en/enhanced_playermodel_selector.properties new file mode 100644 index 0000000..e412de1 --- /dev/null +++ b/resource/localization/en/enhanced_playermodel_selector.properties @@ -0,0 +1,101 @@ + +EPS.Title=Enhanced Player Model Selector %s, Fesiug's Edit + +# Main Buttons +EPS.Reset=Reset +EPS.NextAnim=Next animation +EPS.ApplyPM=Apply player model +EPS.VisitAddonPage=Visit addon page + +EPS.Search=Search... + +# Model Sheet +EPS.Model=Model +EPS.Model.Icons=Icons +EPS.Model.Table=Table +EPS.Model.Table.Model=Model +EPS.Model.Table.Path=Path + +# Hands Sheet +EPS.Hands=Hands +EPS.Hands.Icons=Icons +EPS.Hands.Table=Table +EPS.Hands.Table.Model=Model +EPS.Hands.Table.Path=Path +EPS.Hands.UsePM=Use player model + +# Favorites Sheet +EPS.Favorites=Favorites +EPS.Favorites.Model=Model +EPS.Favorites.Skin=Skin +EPS.Favorites.Bodygroups=Bodygroups +EPS.Favorites.LoadFavorite=Load selected +EPS.Favorites.Desc=Here you can save your favorite player model combinations. To do this:\n1. Select a model and set up the skin and bodygroups as you wish.\n2. Enter a unique name into the text field and click "Add a new favorite".\n3. Load your favorite by selecting it in the list and clicking "Load selected".\nYou can also apply existing favorites by console command:\nplayermodel_loadfav "the favorite's name" +EPS.Favorites.AddNewFavorite=Add a new favorite +EPS.Favorites.ReplaceSelected=Replace selected +EPS.Favorites.DeleteAllSelected=Delete all selected + +# Bodygroups Sheet +EPS.Bodygroups=Bodygroups + +EPS.Handgroups=Handgroups + +EPS.Skin=Skin + +EPS.Flexes=Flexes +EPS.Notes=Notes:\n- The model preview for flexes doesn't work correctly. However, they will be visible on your player model when you apply them.\n- The default values provided might not be correct and cause distorted faces.\n- There is no way to reset (or fix) flex manipulation besides disconnecting. + +# Colors Sheet +EPS.Colors=Colors +EPS.Colors.PlayerColor=Player color +EPS.Colors.PhysgunColor=Physgun color +EPS.Colors.ResetToDefault=Reset to default values + +# Settings Sheet +EPS.Settings=Settings +EPS.Settings.Client=Client +EPS.Settings.Client.EnforcePM=Enforce your player model +EPS.Settings.Client.EnforcePM.Desc=If enabled, your selected player model will be protected. No other function will be able to change your player model anymore. +EPS.Settings.Client.TranslateBodygroup=Translate Bodygroups +EPS.Settings.Client.TranslateBodygroup.Desc=If enabled, supported bodygroup's name will be translated into supported language. +EPS.Settings.Client.PlayerColorBG=Use player color as background +EPS.Settings.Client.PlayerColorBG.Desc=If enabled, your selected player color will be used as the menu background. If disabled, the background will be grey. +EPS.Settings.Client.TransparentBG=Transparent background +EPS.Settings.Client.TransparentBG.Desc=If enabled, the menu backgroup will be transparent. If disabled, the background will be opaque. +EPS.Settings.Client.HideDefaultPMs=Hide default player models +EPS.Settings.Client.HideDefaultPMs.Desc=If enabled, the default player models will be hidden. Requires reopening the window. +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs=Ignore c_hands only "player models" in main list +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs.Desc=If enabled, "player models" that are nothing but floating pair of hands will be not shown in list of available player models. Disable to see all registered player models. +EPS.Settings.Client.ShowFlexes=Show flexes tab +EPS.Settings.Client.ShowFlexes.Desc=This allows you to manipulate flexes on your player model. However, flex manipulation is not really made for player models and will cause issues. This includes the following:\n- Eye blinking no longer working.\n- Faces might be distorted unless the flexes are corrected manually.\n- Might break the faces of incompatible player models completely.\n- Even if you set all flexes to default value, the engine still considers them as manipulated. Models with problems won't be fixed.\nYou must switch your model once, for the tab to appear! +EPS.Settings.Client.RebuildIcon=Rebuild spawn icons +EPS.Settings.Client.RebuildIcon.Desc=Forces all player model icons to be re-rendered. Useful if the icons are outdated after custom models changed their appearance. This may take a while, depending on the number of models and your PC's speed. + +EPS.Settings.Server=Server +EPS.Settings.Server.EnablePMEnforcement=Enable player model enforcement +EPS.Settings.Server.EnablePMEnforcement.Desc=If enabled, selected player models will be enforced and protected. No gamemodes, maps or addons can overwrite them anymore. Players can toggle this function individually, using the related setting the "Client" tab.\nIf disabled, only the manual button works outside of Sandbox. +EPS.Settings.Server.AllowInstantChanges=Allow instant changes +EPS.Settings.Server.AllowInstantChanges.Desc=If enabled, players can apply their changes instantly instead of having to respawn. +EPS.Settings.Server.AllowFlexes=Allow players to change flexes +EPS.Settings.Server.AllowFlexes.Desc=If enabled, players can change the flexes for their player models. This will break player blinking and may cause other issues. Enable at own risk. Players can only reset their flexes by disconnecting. +EPS.Settings.Server.EnableInAllGM=Enable in all gamemodes +EPS.Settings.Server.EnableInAllGM.Desc=If enabled, the Player Model Selector will be available for all players in every gamemode. If disabled, only Admins can use it outside of Sandbox. +EPS.Settings.Server.RequestLimit=Request limit +EPS.Settings.Server.RequestLimit.Desc=Time limit in seconds that players have to wait, before they can use the instant change function again. Set to 0 to disable. + +EPS.Settings.GM_Blacklist=GM Blacklist +EPS.Settings.GM_Blacklist.ExistedGM=Blacklisted gamemodes +EPS.Settings.GM_Blacklist.Desc=Here you can blacklist incompatible gamemodes.\n\nPlayers (including Admins) can't change their player models in those gamemodes, regardless of other settings. +EPS.Settings.GM_Blacklist.AddCurrent=Add current gamemode to Blacklist +EPS.Settings.GM_Blacklist.ManuallyAddGM=Manually add gamemode +EPS.Settings.GM_Blacklist.RemoveSelected=Remove selected gamemodes + +EPS.Settings.VOX=VOX +EPS.Settings.VOX.PlayerModel=Player Model +EPS.Settings.VOX.Assigned=assigned VOX pack +EPS.Settings.VOX.AvailableVOX=Available VOX packs +EPS.Settings.VOX.AssignToCurrent=Assign VOX pack to current player model +EPS.Settings.VOX.RemoveSelected=Remove selected assignment + +EPS.Settings.Info=Info +EPS.Settings.Info.CreateBy=Created by %s diff --git a/resource/localization/en/enhanced_playermodel_selector_bodygroups.properties b/resource/localization/en/enhanced_playermodel_selector_bodygroups.properties new file mode 100644 index 0000000..1f0a007 --- /dev/null +++ b/resource/localization/en/enhanced_playermodel_selector_bodygroups.properties @@ -0,0 +1,369 @@ + +# Bodygroup Names +eps.model_bg.empty=Empty +eps.model_bg.pants=Pants +eps.model_bg.jeans=Jeans +eps.model_bg.tshirt=T-shirt +eps.model_bg.shirt=Shirt +eps.model_bg.blouse=Blouse +eps.model_bg.jacket=Jacket +eps.model_bg.coat=Coat +eps.model_bg.sweater=Sweater +eps.model_bg.hoodie=Hoodie +eps.model_bg.nightshirt=Nightshirt +eps.model_bg.hoodcloth=Hood +eps.model_bg.blouson=Blouson +eps.model_bg.brooch=Brooch +eps.model_bg.jewelry=Jewelry +eps.model_bg.cufflink=Cufflink +eps.model_bg.pendant=Pendant +eps.model_bg.tanktop=Tanktop +eps.model_bg.leatherjacket=Leather Jacket +eps.model_bg.shorts=Shorts +eps.model_bg.pantsu=Pantsu +eps.model_bg.mask=Mask +eps.model_bg.stockings=Stockings +eps.model_bg.stocking=Stocking +eps.model_bg.hose=Hose +eps.model_bg.skirt=Skirt +eps.model_bg.dress=Dress +eps.model_bg.cloak=Cloak +eps.model_bg.suit=Suit +eps.model_bg.badges=Badges +eps.model_bg.blazer=Blazer +eps.model_bg.aodai=Áo dài +eps.model_bg.beret=Beret +eps.model_bg.fedora=Fedora +eps.model_bg.cowboyboots=Cowboy Boots +eps.model_bg.seashell=Seashell +eps.model_bg.bathingsuit=Bathing Suit +eps.model_bg.swimwear=Swimwear +eps.model_bg.boafur=Boa +eps.model_bg.wallet=Wallet +eps.model_bg.piercing=Piercing +eps.model_bg.earpiercing=Ear Piercing +eps.model_bg.nosepiercing=Nose Piercing +eps.model_bg.bathingattire=Bathing Attire +eps.model_bg.cowboyhat=Cowboy Hat +eps.model_bg.cravat=Cravat +eps.model_bg.clothingbutton=Button +eps.model_bg.academicdress=Academic Dress +eps.model_bg.kaftan=Kaftan +eps.model_bg.caftan=Caftan +eps.model_bg.corset=Corset +eps.model_bg.vest=Vest +eps.model_bg.hookeye=Hook & Eye +eps.model_bg.garb=Garb +eps.model_bg.bead=Bead +eps.model_bg.prayerbeads=Prayer Beads +eps.model_bg.crown=Crown +eps.model_bg.brassiere=Brassiere +eps.model_bg.fez=Fez +eps.model_bg.leggings=Leggings +eps.model_bg.trousers=Trousers +eps.model_bg.worrybeads=Worry Beads +eps.model_bg.slacks=Slacks +eps.model_bg.overalls=Overalls +eps.model_bg.scarf=Scarf +eps.model_bg.gloves=Gloves +eps.model_bg.stuffedtoy=Stuffed Toy +eps.model_bg.stuffedanimal=Stuffed Animal +eps.model_bg.toydoll=Toy Doll +eps.model_bg.toy=Toy +eps.model_bg.wing=Wing +eps.model_bg.wristband=Wrist Band +eps.model_bg.wristribbon=Wrist Ribbon +eps.model_bg.rag.doll=Rag Doll +eps.model_bg.sewingneedle=Sewing Needle +eps.model_bg.needle=Needle +eps.model_bg.plushie=Plushie +eps.model_bg.hat=Hat +eps.model_bg.bonnet=Bonnet +eps.model_bg.outfit=Outfit +eps.model_bg.tiara=Tiara +eps.model_bg.sunhat=Sun Hat +eps.model_bg.parka=Parka +eps.model_bg.cap=Cap +eps.model_bg.tights=Tights +eps.model_bg.blacktieattire=Black Tie (Attire) +eps.model_bg.whitetieattire=White Tie (Attire) +eps.model_bg.fulleveningd=Full Evening Dress +eps.model_bg.tux=Tux +eps.model_bg.tuxedo=Tuxedo +eps.model_bg.dinnersuit=Dinner Suit +eps.model_bg.sash=Sash +eps.model_bg.beanie=Beanie +eps.model_bg.socks=Socks +eps.model_bg.shoes=Shoes +eps.model_bg.sneakers=Sneakers +eps.model_bg.boots=Boots +eps.model_bg.sandals=Sandals +eps.model_bg.diaper=Diaper +eps.model_bg.flipflops=Flipflops +eps.model_bg.underwear=Underwear +eps.model_bg.boxers=Boxers +eps.model_bg.briefs=Briefs +eps.model_bg.bra=Bra +eps.model_bg.quiltedjacket=Quilted Jacket +eps.model_bg.hairtie=Hair Tie +eps.model_bg.bangshair=Bangs +eps.model_bg.fringehair=Fringe +eps.model_bg.lingerie=Lingerie +eps.model_bg.badge=Badge +eps.model_bg.visor=Visor +eps.model_bg.panties=Panties +eps.model_bg.cape=Cape +eps.model_bg.pantyhose=Pantyhose +eps.model_bg.accessoryshort=Acc +eps.model_bg.accessory=Accessory +eps.model_bg.halo=Halo +eps.model_bg.pen=Pen +eps.model_bg.pencil=Pencil +eps.model_bg.backpack=Backpack +eps.model_bg.paintbrush=Paintbrush +eps.model_bg.nightgown=Nightgown +eps.model_bg.cardigan=Cardigan +eps.model_bg.pajamas=Pajamas +eps.model_bg.cummerbund=Cummerbund +eps.model_bg.robe=Robe +eps.model_bg.veil=Veil +eps.model_bg.umbrella=Umbrella +eps.model_bg.bandanna=Bandanna +eps.model_bg.bandana=Bandana +eps.model_bg.kerchief=Kerchief +eps.model_bg.sweatshirt=Sweatshirt +eps.model_bg.tunic=Tunic +eps.model_bg.apron=Apron +eps.model_bg.swimsuit=Swimsuit +eps.model_bg.waistcoat=Waistcoat +eps.model_bg.toga=Toga +eps.model_bg.bikini=Bikini +eps.model_bg.trunks=Trunks +eps.model_bg.activewear=Activewear +eps.model_bg.sportswear=Sportswear +eps.model_bg.gilet=Gilet +eps.model_bg.uniform=Uniform +eps.model_bg.tracksuit=Tracksuit +eps.model_bg.yogapants=Yoga Pants +eps.model_bg.wig=Wig +eps.model_bg.raincoat=Raincoat +eps.model_bg.wegown=Wedding Gown +eps.model_bg.mittens=Mittens +eps.model_bg.horns=Horns +eps.model_bg.horn=Horn +eps.model_bg.demonhorn=Demon Horn +eps.model_bg.demonhorns=Demon Horns +eps.model_bg.demontail=Demon Tail +eps.model_bg.hairtails=Hair Tails + +# All possibilities for ear category (Do not think it as only plural/singular difference when translating) + +eps.model_bg.catears=Cat Ears +eps.model_bg.foxears=Fox Ears +eps.model_bg.bunnyears=Bunny Ears +eps.model_bg.dogears=Dog Ears +eps.model_bg.nekoears=Neko Ears + +eps.model_bg.catear=Cat Ear +eps.model_bg.foxear=Fox Ear +eps.model_bg.bunnyear=Bunny Ear +eps.model_bg.dogear=Dog Ear +eps.model_bg.nekoear=Neko Ear + +eps.model_bg.cat_ear=Cat Ear +eps.model_bg.fox_ear=Fox Ear +eps.model_bg.bunny_ear=Bunny Ear +eps.model_bg.dog_ear=Dog Ear +eps.model_bg.neko_ear=Neko Ear + +eps.model_bg.cat_ears=Cat Ears +eps.model_bg.fox_ears=Fox Ears +eps.model_bg.bunny_ears=Bunny Ears +eps.model_bg.dog_ears=Dog Ears +eps.model_bg.neko_ears=Neko Ears + +eps.model_bg.earmuffs=Earmuffs +eps.model_bg.poloshirt=Polo Shirt +eps.model_bg.collarribbon=Collar Ribbon +eps.model_bg.clothesflower=Clothes Flower +eps.model_bg.clothesribbon=Clothes Ribbon +eps.model_bg.dressflower=Dress Flower +eps.model_bg.kasaya=Kasaya +eps.model_bg.belt=Belt +eps.model_bg.tie=Tie +eps.model_bg.bustier=Bustier +eps.model_bg.camisole=Camisole +eps.model_bg.sleeve=Sleeve +eps.model_bg.bowtie=Bowtie +eps.model_bg.choker=Choker +eps.model_bg.bow_cloth=Bow +eps.model_bg.hairshadow=Hair Shadow +eps.model_bg.hairshadows=Hair Shadows +eps.model_bg.claws=Claws +eps.model_bg.coatfur=Coat Fur +eps.model_bg.headphones=Headphones +eps.model_bg.jacketfur=Jacket Fur +eps.model_bg.ponytailhair=Ponytail +eps.model_bg.eyebrows=Eyebrows +eps.model_bg.legbelt=Leg Belt +eps.model_bg.flower=Flower +eps.model_bg.flowers=Flowers +eps.model_bg.rabbit_plushie=Rabbit +eps.model_bg.rabbit=Rabbit +eps.model_bg.bunny_plushie=Bunny +eps.model_bg.cat_plushie=Cat +eps.model_bg.shark_plushie=Shark +eps.model_bg.dog_plushie=Dog +eps.model_bg.mouth=Mouth +eps.model_bg.tongue=Tongue +eps.model_bg.fox_plushie=Fox +eps.model_bg.watch=Watch +eps.model_bg.bracelet=Bracelet +eps.model_bg.collar=Collar +eps.model_bg.necklace=Necklace +eps.model_bg.ring=Ring +eps.model_bg.glasses=Glasses +eps.model_bg.blush=Blush +eps.model_bg.sunglasses=Sunglasses +eps.model_bg.innerwear=Innerwear +eps.model_bg.knapsack=Knapsack +eps.model_bg.schoolbag=Schoolbag +eps.model_bg.rucksack=Rucksack +eps.model_bg.pack=Pack +eps.model_bg.topclothbralevel=Top +eps.model_bg.booksack=Booksack +eps.model_bg.bookbag=Bookbag +eps.model_bg.hairclip=Clip +eps.model_bg.hairclip2=Hair Clip +eps.model_bg.hairstyle=Hair Style +eps.model_bg.pouches=Pouches +eps.model_bg.hairbuns=Hair Buns +eps.model_bg.hairbun=Hair Bun +eps.model_bg.hairbun2=Bun +eps.model_bg.tag=Tag +eps.model_bg.hair=Hair +eps.model_bg.eyes=Eyes +eps.model_bg.ear=Ear +eps.model_bg.ears=Ears +eps.model_bg.nose=Nose +eps.model_bg.tail=Tail + +eps.model_bg.wings=Wings +eps.model_bg.ribbon=Ribbon +eps.model_bg.armband=Armband +eps.model_bg.armbands=Armbands +eps.model_bg.top=Top +eps.model_bg.shoe=Shoe +eps.model_bg.right_shoe=Right Shoe +eps.model_bg.left_shoe=Left Shoe + +eps.model_bg.dragon_horns=Dragon Horns +eps.model_bg.dragon_tails=Dragon Tails +eps.model_bg.dragon_wings=Dragon Wings + +eps.model_bg.dragon_horn=Dragon Horn +eps.model_bg.dragon_tail=Dragon Tail +eps.model_bg.dragon_wing=Dragon Wing +eps.model_bg.rat=Rat + +eps.model_bg.top_acc=Top Acc +eps.model_bg.emotions=Emotions +eps.model_bg.emotion=Emotion + +eps.model_bg.body_outline=Body Outline +eps.model_bg.body.outline=Body Outline +eps.model_bg.bodyoutline=Body Outline + +eps.model_bg.hood=Hood +eps.model_bg.bag=Bag +eps.model_bg.headband=Headband +eps.model_bg.hairband=Hairband +eps.model_bg.glove=Glove +eps.model_bg.cloth=Cloth +eps.model_bg.clothes=Clothes + +eps.model_bg.ear_right=Right Ear +eps.model_bg.ear_left=Left Ear +eps.model_bg.face=Face + +# Emotions + +eps.model_bg.anger=Anger +eps.model_bg.sweat=Sweat +eps.model_bg.tired=Tired +eps.model_bg.shocked=Shocked +eps.model_bg.happy=Happy +eps.model_bg.sad=Sad +eps.model_bg.scared=Scared +eps.model_bg.surprised=Surprised +eps.model_bg.excited=Excited +eps.model_bg.jealous=Jealous +eps.model_bg.curious=Curious +eps.model_bg.smirk=Smirk +eps.model_bg.smile=Smile + +# Weapons +# Yes, weapons can be used and are used as bodygroups. Even HL2 weapons in some cases. + +eps.model_bg.sword=Sword +eps.model_bg.longsword=Long Sword +eps.model_bg.claymore=Claymore +eps.model_bg.shield=Shield +eps.model_bg.spear=Spear +eps.model_bg.gun=Gun +eps.model_bg.weapon=Weapon +eps.model_bg.shamshir=Shamshir +eps.model_bg.saber=Saber +eps.model_bg.yatagan=Yatagan +eps.model_bg.dagger=Dagger +eps.model_bg.knife=Knife +eps.model_bg.trident=Trident + +eps.model_bg.357=.357 Magnum +eps.model_bg.alyxgun=Alyx's Gun +eps.model_bg.annabelle=Annabelle +eps.model_bg.ar2=Pulse-Rifle +eps.model_bg.bugbait=Bugbait +eps.model_bg.citizenpackage=Food Ration +eps.model_bg.citizensuitcase=Suitcase +eps.model_bg.crossbow=Crossbow +eps.model_bg.crowbar=Crowbar +eps.model_bg.frag=Frag Grenade +eps.model_bg.physcannon=Gravity Gun +eps.model_bg.pistol=9mm Pistol +eps.model_bg.rpg=RPG Launcher +eps.model_bg.shotgun=Shotgun +eps.model_bg.slam=S.L.A.M. +eps.model_bg.smg1=SMG +eps.model_bg.stunstick=Stunstick +eps.model_bg.oldmanharpoon=Harpoon +eps.model_bg.gmod_camera=Camera +eps.model_bg.gmod_tool=Tool Gun +eps.model_bg.manhack_welder=Manhack Gun +eps.model_bg.fists=Fists +eps.model_bg.flechettegun=Flechette Gun +eps.model_bg.medkit=Medkit +eps.model_bg.physgun=Physics Gun + +eps.model_bg.weapon_357=.357 Magnum +eps.model_bg.weapon_alyxgun=Alyx's Gun +eps.model_bg.weapon_annabelle=Annabelle +eps.model_bg.weapon_ar2=Pulse-Rifle +eps.model_bg.weapon_bugbait=Bugbait +eps.model_bg.weapon_citizenpackage=Food Ration +eps.model_bg.weapon_citizensuitcase=Suitcase +eps.model_bg.weapon_crossbow=Crossbow +eps.model_bg.weapon_crowbar=Crowbar +eps.model_bg.weapon_frag=Frag Grenade +eps.model_bg.weapon_physcannon=Gravity Gun +eps.model_bg.weapon_pistol=9mm Pistol +eps.model_bg.weapon_rpg=RPG Launcher +eps.model_bg.weapon_shotgun=Shotgun +eps.model_bg.weapon_slam=S.L.A.M. +eps.model_bg.weapon_smg1=SMG +eps.model_bg.weapon_stunstick=Stunstick +eps.model_bg.weapon_oldmanharpoon=Harpoon +eps.model_bg.weapon_fists=Fists +eps.model_bg.weapon_flechettegun=Flechette Gun +eps.model_bg.weapon_medkit=Medkit +eps.model_bg.weapon_physgun=Physics Gun diff --git a/resource/localization/es-es/enhanced_playermodel_selector.properties b/resource/localization/es-es/enhanced_playermodel_selector.properties new file mode 100644 index 0000000..bcc2071 --- /dev/null +++ b/resource/localization/es-es/enhanced_playermodel_selector.properties @@ -0,0 +1,98 @@ +EPS.Title=Selector de Modelo de Jugador Improvisado, editado por Fesiug + +# Main Buttons +EPS.Reset=Resetear +EPS.NextAnim=Siguiente animación +EPS.ApplyPM=Aplicar modelo +EPS.VisitAddonPage=Visitar pagina del addon + +EPS.Search=Buscar... + +# Model Sheet +EPS.Model=Modelo +EPS.Model.Icons=Iconos +EPS.Model.Table=Tabla +EPS.Model.Table.Model=Modelo +EPS.Model.Table.Path=Ubicación + +# Hands Sheet +EPS.Hands=Manos +EPS.Hands.Icons=Iconos +EPS.Hands.Table=Tabla +EPS.Hands.Table.Model=Modelo +EPS.Hands.Table.Path=Ubicación +EPS.Hands.UsePM=Usar modelo + +# Favorites Sheet +EPS.Favorites=Favoritos +EPS.Favorites.Model=Modelo +EPS.Favorites.Skin=Skin +EPS.Favorites.Bodygroups=Grupos de cuerpo +EPS.Favorites.LoadFavorite=Cargar favorito seleccionado +EPS.Favorites.Desc=Aquí puedes guardar tus favoritas combinaciones de modelos. Para hacerlo:\n1. Selecciona un modelo, su skin y grupos de cuerpo a tu gusto.\n2. Introduce un nombre en el campo de texto y clickea "Añadir nuevo favorito".\n3. Carga tu favorito seleccionándolo en la lista y clickeando "Cargar seleccionado".\nTambién puedes aplicar favoritos usando el comando:\nplayermodel_loadfav "nombre del favorito" +EPS.Favorites.AddNewFavorite=Añadir nuevo favorito +EPS.Favorites.ReplaceSelected=Reemplazar seleccionado +EPS.Favorites.DeleteAllSelected=Eliminar los seleccionados + +# Bodygroups Sheet +EPS.Bodygroups=Grupos de cuerpo + +EPS.Handgroups=Grupos de mano + +EPS.Skin=Skin + +EPS.Flexes=Flexes +EPS.Notes=Notas:\n-La preview no funciona correctamente. Aun así, flexes modificados serán visibles en tu modelo cuando los apliques.\n- Los valores por defecto pueden no ser correctos y causar caras desfiguradas.\n- No puedes resetear la manipulación de flexes sin desconectarte. + +# Colors Sheet +EPS.Colors=Colores +EPS.Colors.PlayerColor=Color de jugador +EPS.Colors.PhysgunColor=Color de physgun +EPS.Colors.ResetToDefault=Resetear a valores por defecto + +# Settings Sheet +EPS.Settings=Opciones +EPS.Settings.Client=Cliente +EPS.Settings.Client.EnforcePM=Forzar tu modelo +EPS.Settings.Client.EnforcePM.Desc=Al habilitarse, tu modelo seleccionado estará protegido. Ninguna función podrá cambiar tu modelo. +EPS.Settings.Client.PlayerColorBG=Usar color de jugador como fondo +EPS.Settings.Client.PlayerColorBG.Desc=Al habilitarse, el color de jugador seleccionado sera utilizado como fondo. Si se deshabilita, el fondo se volverá gris. +EPS.Settings.Client.TransparentBG=Fondo transparente +EPS.Settings.Client.TransparentBG.Desc=Al habilitarse, el fondo se volverá transparente. Si se deshabilita, el fondo se volverá opaco. +EPS.Settings.Client.HideDefaultPMs=Esconder modelos por defecto +EPS.Settings.Client.HideDefaultPMs.Desc=Al habilitarse, los modelos incluidos con el juego se ocultarán. Requiere reabrir la ventana. +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs=Ignorar "modelos" de solo manos (c_hands) +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs.Desc=Al habilitarse, "modelos" que solo son manos flotantes no se verán en la lista de modelos. Si se deshabilita, se verán todos los modelos en la lista. +EPS.Settings.Client.ShowFlexes=Mostrar pestaña de flexes +EPS.Settings.Client.ShowFlexes.Desc=Esto habilita la manipulación de flexes en tu modelo. La manipulación de flexes no esta realmente hecha para modelos de jugador y causara problemas. Esto incluye:\n- Parpadeo de ojo no funcional.\n- Las caras podrían desfigurarse hasta que los flexes se corrijan manualmente.\n- Puede completamente romper las caras de modelos incompatibles.\n- Incluso si dejas los flexes en sus valores por defecto, el motor los considera manipulados. Los modelos con problemas no serán arreglados.\nDebes cambiar tu modelo una vez para que la pestaña aparezca! +EPS.Settings.Client.RebuildIcon=Rerenderizar iconos +EPS.Settings.Client.RebuildIcon.Desc=Fuerza a que todos los iconos de spawn sean re-renderizados. Útil si los el modelo ha sido cambiado y su icono quedo desactualizado. Esto puede tardar, dependiendo de la cantidad de modelos y la velocidad de tu PC. + +EPS.Settings.Server=Servidor +EPS.Settings.Server.EnablePMEnforcement=Habilitar control forzado de modelos +EPS.Settings.Server.EnablePMEnforcement.Desc=Al habilitarse, los modelos seleccionados serán forzados y protegidos. Ningún modo de juego, addon o mapa puede cambiarlos. Los jugadores pueden cambiar esta función individualmente, tickeando la caja en el menú.\nSi se deshabilita, solo el botón manual funcionara fuera de Sandbox. +EPS.Settings.Server.AllowInstantChanges=Habilitar cambio instantáneo +EPS.Settings.Server.AllowInstantChanges.Desc=Al habilitarse, los jugadores podrán aplicar sus cambios instantáneamente sin necesidad de reaparecer. +EPS.Settings.Server.AllowFlexes=Habilitar manipulación de flexes +EPS.Settings.Server.AllowFlexes.Desc=Al habilitarse, los jugadores podrán manipular los flexes de sus modelos. Esto rompe el parpadeo de ojos y causa otros problemas. Habilítalo a tu propio riesgo. Los jugadores solo pueden resetear sus flexes al desconectarse. +EPS.Settings.Server.EnableInAllGM=Habilitar en todos los modos de juego +EPS.Settings.Server.EnableInAllGM.Desc=Al habilitarse, el Selector de Modelos estará disponible en todos los modos. Si se deshabilita, solo los administradores podrán usarlo fuera de Sandbox. +EPS.Settings.Server.RequestLimit=Limite de demanda +EPS.Settings.Server.RequestLimit.Desc=Aplica un limite de tiempo que los jugadores deben esperar antes de poder usar la habilidad de cambio instantáneo. El valor 0 deshabilita esta función. + +EPS.Settings.GM_Blacklist=Lista negra de modos +EPS.Settings.GM_Blacklist.ExistedGM=Lista negra +EPS.Settings.GM_Blacklist.Desc=Aqui puedes poner modos incompatibles en una lista negra.\n\Jugadores (incluyendo administradores) no podrán cambiar su modelo en esos juegos, ignorando otras opciones. +EPS.Settings.GM_Blacklist.AddCurrent=Añade el modo actual a la lista negra +EPS.Settings.GM_Blacklist.ManuallyAddGM=Añade un modo manualmente +EPS.Settings.GM_Blacklist.RemoveSelected=Elimina los modos seleccionados + +EPS.Settings.VOX=VOX +EPS.Settings.VOX.PlayerModel=Modelo +EPS.Settings.VOX.Assigned=Paquete VOX asignado +EPS.Settings.VOX.AvailableVOX=Paquetes VOX disponibles +EPS.Settings.VOX.AssignToCurrent=Asignar paquete VOX al modelo actual +EPS.Settings.VOX.RemoveSelected=Eliminar asignacion seleccionada + +EPS.Settings.Info=Información +EPS.Settings.Info.CreateBy=Creado por %s \ No newline at end of file diff --git a/resource/localization/ko/enhanced_playermodel_selector.properties b/resource/localization/ko/enhanced_playermodel_selector.properties new file mode 100644 index 0000000..0090bfc --- /dev/null +++ b/resource/localization/ko/enhanced_playermodel_selector.properties @@ -0,0 +1,99 @@ + +EPS.Title=향상된 PlayerModel 선택기 %s, Fesiug의 편집 + +# Main Buttons +EPS.Reset=재설정 +EPS.NextAnim=다음 ANIM +EPS.ApplyPM=Playermodel 적용 +EPS.VisitAddonPage=애드온 페이지 방문 + +EPS.Search=검색... + +# Model Sheet +EPS.Model=모델 +EPS.Model.Icons=아이콘 +EPS.Model.Table=좌석 +EPS.Model.Table.Model=모델 +EPS.Model.Table.Path=경로 + +# Hands Sheet +EPS.Hands=손 +EPS.Hands.Icons=아이콘 +EPS.Hands.Table=좌석 +EPS.Hands.Table.Model=모델 +EPS.Hands.Table.Path=경로 +EPS.Hands.UsePM=플레이어 모델 사용 + +# Favorites Sheet +EPS.Favorites=즐겨찾기 +EPS.Favorites.Model=모델 +EPS.Favorites.Skin=피부 +EPS.Favorites.Bodygroups=신체 그룹 +EPS.Favorites.LoadFavorite=선택한 즐겨찾기 로드 +EPS.Favorites.Desc=여기에서 좋아하는 플레이 모델 조합을 저장할 수 있습니다. 방법은 다음과 같습니다.\n1. 모델을 선택하고 원하는 대로 스킨과 바디 그룹을 설정합니다.\n2. 텍스트 필드에 고유한 이름을 입력하고 '새 즐겨찾기 추가' 를 클릭합니다.\n3. 아래 목록에서 즐겨찾기를 선택하고 '선택 항목 로드' 를 클릭합니다.\n콘솔 명령으로 기존 즐겨찾기를 적용할 수도\n있습니다. playermodel_loadfav "즐겨찾기 이름" +EPS.Favorites.AddNewFavorite=새로운 즐겨찾기 추가 +EPS.Favorites.ReplaceSelected=선택한 항목 바꾸기 +EPS.Favorites.DeleteAllSelected=선택한 항목 모두 삭제 + +# Bodygroups Sheet +EPS.Bodygroups=신체 그룹 + +EPS.Handgroups=핸드그룹 + +EPS.Skin=피부 + +EPS.Flexes=구부림 +EPS.Notes=참고:\n-플렉스의 모델 미리보기가 올바르게 작동하지 않습니다. 그러나 이를 적용하면 플레이어 모델에 표시됩니다.\n- 제공된 기본값이 올바르지 않아 얼굴이 왜곡될 수 있습니다.\n- 연결 해제 외에 플렉스 조작을 재설정 (또는 수정) 할 수 있는 방법은 없습니다. + +# Colors Sheet +EPS.Colors=색상 +EPS.Colors.PlayerColor=플레이어 색상 +EPS.Colors.PhysgunColor=중력건색상 +EPS.Colors.ResetToDefault=기본값 재설정 + +# Settings Sheet +EPS.Settings=설정 +EPS.Settings.Client=클라이언트 +EPS.Settings.Client.EnforcePM=PM 적용 +EPS.Settings.Client.EnforcePM.Desc=활성화되면 선택한 플레이 모델이 보호됩니다. 더 이상 다른 함수가 플레이어 모델을 변경할 수 없습니다. +EPS.Settings.Client.PlayerColorBG=플레이어 색상을 배경으로 사용 +EPS.Settings.Client.PlayerColorBG.Desc=활성화되면 선택한 플레이어 색상이 메뉴 배경으로 사용됩니다. 비활성화하면 배경이 회색으로 표시됩니다. +EPS.Settings.Client.TransparentBG=투명 배경 +EPS.Settings.Client.TransparentBG.Desc=활성화되면 메뉴 백그룹이 투명해집니다. 비활성화하면 배경이 불투명해집니다. +EPS.Settings.Client.HideDefaultPMs=기본 Playermodels 숨기기 +EPS.Settings.Client.HideDefaultPMs.Desc=활성화되면 기본 플레이 모델이 숨겨집니다. 창을 다시 열어야 합니다. +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs=기본 목록에서 "playermodels" 만 c_hands 무시 +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs.Desc=활성화된 경우, 부동 쌍의 핸드에 불과한 "플레이어모델" 은 사용 가능한 플레이어모델 목록에 표시되지 않습니다. 등록된 모든 플레이모델을 보려면 비활성화하십시오. +EPS.Settings.Client.ShowFlexes=플렉스 탭 표시 +EPS.Settings.Client.ShowFlexes.Desc=이를 통해 플레이어 모델에서 플렉스를 조작할 수 있습니다. 그러나 플렉스 조작은 실제로 플레이 모델용으로 만들어지지 않으며 문제를 일으킬 수 있습니다. 여기에는 다음이 포함됩니다.\n- 눈 깜박임이 더 이상 작동하지 않습니다.\n- 굴곡을 수동으로 수정하지 않으면 얼굴이 왜곡될 수 있습니다.\n- 호환되지 않는 플레이 모델의 얼굴을 완전히 깨뜨릴 수 있습니다.\n- 모든 플렉스를 기본값으로 두더라도 엔진은 여전히 이를 조작된 것으로 간주합니다. 문제가 있는 모델은 수정되지 않습니다.\n탭이 나타나려면 모델을 한 번 전환해야 합니다! +EPS.Settings.Client.RebuildIcon=스폰 아이콘 재구성 +EPS.Settings.Client.RebuildIcon.Desc=모든 재생 모델 아이콘을 강제로 다시 렌더링합니다. 사용자 정의 모델이 모양을 변경한 후 아이콘이 오래된 경우 유용합니다. 모델 수와 PC 속도에 따라 다소 시간이 걸릴 수 있습니다. + +EPS.Settings.Server=서버 +EPS.Settings.Server.EnablePMEnforcement=플레이어 모델 적용 활성화 +EPS.Settings.Server.EnablePMEnforcement.Desc=활성화되면 선택한 플레이 모델이 적용되고 보호됩니다. 더 이상 게임모드, 맵 또는 애드온을 덮어쓸 수 없습니다. 플레이어는 메뉴 상단의 확인란을 사용하여 이 기능을 개별적으로 전환할 수 있습니다.\n비활성화된 경우 수동 버튼만 샌드박스 외부에서 작동합니다. +EPS.Settings.Server.AllowInstantChanges=즉시 변경 허용 +EPS.Settings.Server.AllowInstantChanges.Desc=활성화된 경우, 플레이어는 부활할 필요 없이 즉시 변경 사항을 적용할 수 있습니다. +EPS.Settings.Server.AllowFlexes=플레이어가 플렉스를 변경할 수 있도록 허용 +EPS.Settings.Server.AllowFlexes.Desc=활성화된 경우, 플레이어는 자신의 플레이 모델에 대한 플렉스를 변경할 수 있습니다. 이렇게 하면 플레이어의 깜박임이 깨지고 다른 문제가 발생할 수 있습니다. 위험을 감수하고 사용하도록 설정합니다. 플레이어는 연결을 해제해야만 플렉스를 재설정할 수 있습니다. +EPS.Settings.Server.EnableInAllGM=모든 게임모드에서 활성화 +EPS.Settings.Server.EnableInAllGM.Desc=활성화되면 모든 게임 모드의 모든 플레이어가 PlayerModel Selector를 사용할 수 있습니다. 비활성화된 경우 관리자만 샌드박스 외부에서 사용할 수 있습니다. +EPS.Settings.Server.RequestLimit=요청 한도 +EPS.Settings.Server.RequestLimit.Desc=플레이어가 즉시 변경 기능을 다시 사용하기 전에 기다려야 하는 시간 제한 (초). 비활성화하려면 0으로 설정하십시오. + +EPS.Settings.GM_Blacklist=GM 블랙리스트 +EPS.Settings.GM_Blacklist.ExistedGM=블랙리스트 게임모드 +EPS.Settings.GM_Blacklist.Desc=여기에서 호환되지 않는 게임 모드를 차단할 수 있습니다.\n\n플레이어 (관리자 포함) 는 다른 설정에 관계없이 해당 게임 모드에서 자신의 플레이 모델을 변경할 수 없습니다. +EPS.Settings.GM_Blacklist.AddCurrent=블랙리스트에 현재 게임모드 추가 +EPS.Settings.GM_Blacklist.ManuallyAddGM=게임 모드 수동 추가 +EPS.Settings.GM_Blacklist.RemoveSelected=선택한 게임모드 제거 + +EPS.Settings.VOX=목소리 +EPS.Settings.VOX.PlayerModel=플레이어 모델 +EPS.Settings.VOX.Assigned=할당된 복스 팩 +EPS.Settings.VOX.AvailableVOX=사용 가능한 복스 팩 +EPS.Settings.VOX.AssignToCurrent=현재 PlayerModel에 VOX 팩 할당 +EPS.Settings.VOX.RemoveSelected=선택한 과제 제거 + +EPS.Settings.Info=정보 +EPS.Settings.Info.CreateBy=작성자 %s diff --git a/resource/localization/pl/enhanced_playermodel_selector.properties b/resource/localization/pl/enhanced_playermodel_selector.properties new file mode 100644 index 0000000..f23e55d --- /dev/null +++ b/resource/localization/pl/enhanced_playermodel_selector.properties @@ -0,0 +1,98 @@ + +EPS.Title=Enhanced PlayerModel Selector %s, Fesiug's Edit + +# Main Buttons +EPS.Reset=Reset +EPS.NextAnim=Następna Animacja +EPS.ApplyPM=Zatwierdź Model +EPS.VisitAddonPage=Odwiedź stronę addon'u + +EPS.Search=Szukaj... + +# Model Sheet +EPS.Model=Model +EPS.Model.Icons=Ikony +EPS.Model.Table=Lista +EPS.Model.Table.Model=Model +EPS.Model.Table.Path=Ścieżka + +# Hands Sheet +EPS.Hands=Dłonie +EPS.Hands.Icons=Ikony +EPS.Hands.Table=Lista +EPS.Hands.Table.Model=Model +EPS.Hands.Table.Path=Ścieżka +EPS.Hands.UsePM=Użyj Modelu + +# Favorites Sheet +EPS.Favorites=Ulubione +EPS.Favorites.Model=Model +EPS.Favorites.Skin=Skin +EPS.Favorites.Bodygroups=Bodygroups +EPS.Favorites.LoadFavorite=Załaduj konfigurację +EPS.Favorites.Desc=Tutaj możesz zapisać swoje preferowane ustawienia modeli. Aby to zrobić:\n1. Wybierz model i skonfiguruj skin'y oraz bodygroup'y zgodnie z własnymi preferencjami.\n2. Wprowadź unikalną nazwę w polu tekstowym i kliknij "Dodaj nową konfigurację".\n3. Załaduj ulubione, wybierając je z poniższej listy i klikając "Załaduj wybrane".\nMożesz również zastosować istniejące ulubione za pomocą polecenia konsoli: \nplayermodel_loadfav "nazwa konfiguracji". +EPS.Favorites.AddNewFavorite=Dodaj nową konfigurację +EPS.Favorites.ReplaceSelected=Nadpisz zaznaczone +EPS.Favorites.DeleteAllSelected=Usuń wszystkie zaznaczone + +# Bodygroups Sheet +EPS.Bodygroups=Bodygroups + +EPS.Handgroups=Handgroups + +EPS.Skin=Skin + +EPS.Flexes=Flexey +EPS.Notes=Uwagi:\n-Podgląd modelu dla flex'ów nie działa poprawnie. Będą one jednak widoczne na modelu gracza po ich zastosowaniu.\n- Dostarczone wartości domyślne mogą być nieprawidłowe i powodować zniekształcone twarze.\n- Nie ma sposobu na zresetowanie (lub naprawienie) manipulacji flex'em poza rozłączeniem. + +# Colors Sheet +EPS.Colors=Kolory +EPS.Colors.PlayerColor=Kolor gracza +EPS.Colors.PhysgunColor=Kolor physgun'a +EPS.Colors.ResetToDefault=Przywróć domyślne + +# Settings Sheet +EPS.Settings=Ustawienia +EPS.Settings.Client=Klient +EPS.Settings.Client.EnforcePM=Zabezpiecz model +EPS.Settings.Client.EnforcePM.Desc=Jeżeli ta opcja jest włączona, wybrany model gracza będzie chroniony. Żadna inna funkcja nie będzie już mogła go zmienić +EPS.Settings.Client.PlayerColorBG=Uzyj koloru gracza na kolor tła +EPS.Settings.Client.PlayerColorBG.Desc=Jeżeli ta opcja jest włączona, wybrany kolor gracza będzie używany jako tło menu. Jeżeli opcja ta jest wyłączona, tło będzie szare. +EPS.Settings.Client.TransparentBG=Przezroczyste Tło +EPS.Settings.Client.TransparentBG.Desc=Jeżeli ta opcja jest włączona, tło menu będzie przezroczyste. Jeżeli jest wyłączona, tło będzie nieprzezroczyste. +EPS.Settings.Client.HideDefaultPMs=Ukryj Domyślne Playermodels +EPS.Settings.Client.HideDefaultPMs.Desc=Jeżeli aktywowane, domyślny Model Gracza zostanie ukryty. Wymagany restart okna. +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs=Ignore c_hands only "playermodels" in main list +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs.Desc=If enabled, "playermodels" that are nothing but floating pair of hands will be not shown in list of available playermodels. Disable to see all registered playermodels. +EPS.Settings.Client.ShowFlexes=Pokaż flexy +EPS.Settings.Client.ShowFlexes.Desc=Pozwala to na manipulowanie flex'ami na modelu. Manipulowanie flex'ami nie jest jednak przeznaczone dla modeli i może powodować problemy. Obejmuje to następujące problemy:\n- Mruganie oczami przestaje działać.\n- Twarze mogą być zniekształcone, chyba że flex'y zostaną skorygowane ręcznie.\n- Może całkowicie zepsuć twarze niekompatybilnych modeli.\n- Nawet jeśli ustawisz wszystkie flexy na wartości domyślne, silnik nadal uważa je za zmanipulowane. Modele z problemami nie zostaną naprawione.\nMusisz raz przełączyć model, aby pojawiła się zakładka! +EPS.Settings.Client.RebuildIcon=Wygeneruj ponownie ikony +EPS.Settings.Client.RebuildIcon.Desc=Wymusza ponowne renderowanie wszystkich ikon modeli. Przydatne jeżeli ikony są nieaktualne po zmianie wyglądu własnych modeli. Może to trochę potrwać w zależności od liczby modeli i szybkości komputera. + +EPS.Settings.Server=Serwer +EPS.Settings.Server.EnablePMEnforcement=Zabezpiecz model +EPS.Settings.Server.EnablePMEnforcement.Desc=Jeżeli ta opcja jest włączona, wybrane modele będą wymuszane i chronione. Żadne tryby gry, mapy ani addon'y nie będą już mogły ich nadpisać. Gracze mogą przełączać tę funkcję indywidualnie, korzystając z pola wyboru w górnej części menu.\nJeżeli jest wyłączona, poza piaskownicą działa tylko przycisk ręczny. +EPS.Settings.Server.AllowInstantChanges=Zezwalaj na natychmiastowe zmiany +EPS.Settings.Server.AllowInstantChanges.Desc=Jeżeli opcja ta jest włączona, gracze mogą natychmiast zastosować wprowadzone zmiany bez konieczności odradzania się. +EPS.Settings.Server.AllowFlexes=Umożlw na modyfikację flex'ów +EPS.Settings.Server.AllowFlexes.Desc=Jeżeli ta opcja jest włączona, gracze mogą zmieniać flexy swoich modeli. Spowoduje to przerwanie mrugania gracza i może spowodować inne problemy. Włączasz na własne ryzyko. Gracze mogą zresetować swoje flexy tylko poprzez rozłączenie się. +EPS.Settings.Server.EnableInAllGM=Włącz we wszystkich trybach gry +EPS.Settings.Server.EnableInAllGM.Desc=Jeżeli opcja ta jest włączona, selektor modelu będzie dostępny dla wszystkich graczy w każdym trybie gry. Jeśli jest wyłączony, tylko administratorzy mogą z niego korzystać pozatrybem "Sandbox". +EPS.Settings.Server.RequestLimit=Limit żądań +EPS.Settings.Server.RequestLimit.Desc=Limit czasu w sekundach, który gracze muszą odczekać, zanim będą mogli ponownie użyć funkcji natychmiastowej zmiany. Ustaw na 0, aby wyłączyć. + +EPS.Settings.GM_Blacklist=Czarna lista +EPS.Settings.GM_Blacklist.ExistedGM=Tryby na czarnej liście +EPS.Settings.GM_Blacklist.Desc=Tutaj możesz umieścić na czarnej liście niekompatybilne tryby gry. Gracze (w tym administratorzy) nie mogą zmieniać swoich modeli w tych trybach gry, niezależnie od innych ustawień. +EPS.Settings.GM_Blacklist.AddCurrent=Dodaj bieżacy tryb do listy +EPS.Settings.GM_Blacklist.ManuallyAddGM=Manualnie dodaj tryb +EPS.Settings.GM_Blacklist.RemoveSelected=Usuń wybrane tryby + +EPS.Settings.VOX=VOX +EPS.Settings.VOX.PlayerModel=Model +EPS.Settings.VOX.Assigned=Przypisany pakiet VOX +EPS.Settings.VOX.AvailableVOX=Dostępne pakiety VOX +EPS.Settings.VOX.AssignToCurrent=Przypisz pakiet VOX do bieżącego Modelu gracza +EPS.Settings.VOX.RemoveSelected=Usuń wybrane przypisania + +EPS.Settings.Info=Info diff --git a/resource/localization/ru/enhanced_playermodel_selector.properties b/resource/localization/ru/enhanced_playermodel_selector.properties new file mode 100644 index 0000000..fe60f68 --- /dev/null +++ b/resource/localization/ru/enhanced_playermodel_selector.properties @@ -0,0 +1,101 @@ + +EPS.Title=Enhanced Player Model Selector %s, изменённая версия от Fesiug + +# Main Buttons +EPS.Reset=Сбросить +EPS.NextAnim=Следующая анимация +EPS.ApplyPM=Применить модель игрока +EPS.VisitAddonPage=Страница дополнения + +EPS.Search=Поиск... + +# Model Sheet +EPS.Model=Модель +EPS.Model.Icons=Иконки +EPS.Model.Table=Таблица +EPS.Model.Table.Model=Модель +EPS.Model.Table.Path=Путь + +# Hands Sheet +EPS.Hands=Руки +EPS.Hands.Icons=Иконки +EPS.Hands.Table=Таблица +EPS.Hands.Table.Model=Модель +EPS.Hands.Table.Path=Путь +EPS.Hands.UsePM=Использовать модель игрока + +# Favorites Sheet +EPS.Favorites=Избранное +EPS.Favorites.Model=Модель +EPS.Favorites.Skin=Скин +EPS.Favorites.Bodygroups=Группы тела +EPS.Favorites.LoadFavorite=Загрузить выбранное +EPS.Favorites.Desc=Здесь вы можете сохранить свои любимые комбинации моделей игрока. Чтобы сделать это:\n1. Выберите модель и настройте скин и группы тел по своему усмотрению.\n2. Введите уникальное название в текстовое поле и нажмите на кнопку «Добавить в избранное».\n3. Загрузите избранное, выбрав его в списке и нажав «Загрузить выбранное».\nТакже можно применить существующие избранные консольной командой:\nplayermodel_loadfav «название избранного» +EPS.Favorites.AddNewFavorite=Добавить в избранное +EPS.Favorites.ReplaceSelected=Заменить выбранное +EPS.Favorites.DeleteAllSelected=Удалить выбранное + +# Bodygroups Sheet +EPS.Bodygroups=Группы тела + +EPS.Handgroups=Группы рук + +EPS.Skin=Скин + +EPS.Flexes=Выражение лица +EPS.Notes=Примечания:\n- Предпросмотр лиц на модели работает неправильно, но выражение лица будет видно на ней после применения.\n- Стандартные значения могут приводить к искажению лиц.\n- Сбросить (или исправить) выражение лица можно только отключившись. + +# Colors Sheet +EPS.Colors=Цвета +EPS.Colors.PlayerColor=Цвет игрока +EPS.Colors.PhysgunColor=Цвет физической пушки +EPS.Colors.ResetToDefault=Восстановить значения по умолчанию + +# Settings Sheet +EPS.Settings=Настройки +EPS.Settings.Client=Клиент +EPS.Settings.Client.EnforcePM=Принудительно использовать выбранную модель +EPS.Settings.Client.EnforcePM.Desc=Если включено, выбранная вами модель игрока будет защищена: ни одна другая функция больше не сможет изменить её. +EPS.Settings.Client.TranslateBodygroup=Перевод групп тел +EPS.Settings.Client.TranslateBodygroup.Desc=Если включено, поддерживаемые названия групп тел будут переведены на поддерживаемый язык. +EPS.Settings.Client.PlayerColorBG=Использовать цвет игрока как фон +EPS.Settings.Client.PlayerColorBG.Desc=Если включено, в качестве фона меню будет использоваться выбранный вами цвет игрока. Если выключено, фон будет серым. +EPS.Settings.Client.TransparentBG=Прозрачный фон +EPS.Settings.Client.TransparentBG.Desc=Если включено, фон меню будет прозрачным. Если выключено, фон будет непрозрачным. +EPS.Settings.Client.HideDefaultPMs=Скрыть стандартные модели игрока +EPS.Settings.Client.HideDefaultPMs.Desc=Если включено, стандартные модели игрока будут скрыты. Потребуется снова открыть окно. +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs=Игнорировать c_hands в основном списке моделей +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs.Desc=Если включено, «модели игрока», которые представляют собой только плавающую пару рук, не будут отображаться в списке доступных моделей игрока. Отключите, чтобы увидеть все зарегистрированные модели. +EPS.Settings.Client.ShowFlexes=Вкладка выражений лиц +EPS.Settings.Client.ShowFlexes.Desc=Позволяет манипулировать лицом вашей модели игрока. Однако работа с лицом не предназначена для моделей игрока и может вызвать проблемы. К ним относятся следующие:\n- моргание глаз может перестать работать;\n- искажение лиц, если не скорректировать выражение вручную;\n- полная поломка лица на несовместимых моделях игрока;\n- даже при установке стандартных значений лиц движок всё равно будет считать их изменёнными. Модели с проблемами не будут исправлены.\nПотребуется один раз переключить свою модель, чтобы появилась вкладка! +EPS.Settings.Client.RebuildIcon=Перерисовать иконки моделей +EPS.Settings.Client.RebuildIcon.Desc=Заставляет все иконки модели игроков перерисоваться. Полезно, если иконки устарели после изменения внешнего вида пользовательских моделей. Это может занять некоторое время: зависит от количества моделей и скорости работы компьютера. + +EPS.Settings.Server=Сервер +EPS.Settings.Server.EnablePMEnforcement=Включить принудительное использование модели +EPS.Settings.Server.EnablePMEnforcement.Desc=Если включено, выбранная модель игрока будет защищена после применения: никакие режимы игры, карты или дополнения больше не смогут их перезаписать. Игроки могут переключать эту функцию для себя, используя соответствующую настройку во вкладке «Клиент».\nЕсли выключено, за пределами режима песочницы будет работать только кнопка ручного управления. +EPS.Settings.Server.AllowInstantChanges=Разрешить мгновенные изменения +EPS.Settings.Server.AllowInstantChanges.Desc=Если включено, игроки могут применять свои изменения мгновенно, не прибегая к возрождению. +EPS.Settings.Server.AllowFlexes=Разрешить игрокам изменять выражения лиц +EPS.Settings.Server.AllowFlexes.Desc=Если включено, игроки могут изменять выражение лица для своей модели игрока. Это приведёт к нарушению моргания модели и может привести к другим проблемам. Включайте на свой страх и риск. Игроки могут сбросить выражение, только отключившись от сервера. +EPS.Settings.Server.EnableInAllGM=Включить во всех режимах игры +EPS.Settings.Server.EnableInAllGM.Desc=Если включено, выбор моделей игрока будет доступен всем игрокам во всех режимах игры. Если выключено, только администраторы смогут использовать его вне режима песочницы. +EPS.Settings.Server.RequestLimit=Лимит запросов +EPS.Settings.Server.RequestLimit.Desc=Временной лимит в секундах, который игроки должны подождать перед повторным использованием функции мгновенного изменения. Установите 0, чтобы выключить. + +EPS.Settings.GM_Blacklist=Чёрный список РИ +EPS.Settings.GM_Blacklist.ExistedGM=Режимы в чёрном списке +EPS.Settings.GM_Blacklist.Desc=Здесь вы можете внести в чёрный список несовместимые режимы игры.\n\nИгроки (включая администраторов) не смогут менять свою модель игрока в этих режимах, независимо от других настроек. +EPS.Settings.GM_Blacklist.AddCurrent=Добавить текущий режим в список +EPS.Settings.GM_Blacklist.ManuallyAddGM=Вручную добавить игровой режим +EPS.Settings.GM_Blacklist.RemoveSelected=Удалить выбранные режимы игры + +EPS.Settings.VOX=Голос +EPS.Settings.VOX.PlayerModel=Модель игрока +EPS.Settings.VOX.Assigned=назначенный пакет +EPS.Settings.VOX.AvailableVOX=Доступные голосовые пакеты +EPS.Settings.VOX.AssignToCurrent=Назначить пакет текущей модели +EPS.Settings.VOX.RemoveSelected=Удалить выбранное + +EPS.Settings.Info=Информация +EPS.Settings.Info.CreateBy=Создатель: %s diff --git a/resource/localization/ru/enhanced_playermodel_selector_bodygroups.properties b/resource/localization/ru/enhanced_playermodel_selector_bodygroups.properties new file mode 100644 index 0000000..1b37608 --- /dev/null +++ b/resource/localization/ru/enhanced_playermodel_selector_bodygroups.properties @@ -0,0 +1,226 @@ + +# Bodygroup Names +eps.model_bg.empty=Пусто +eps.model_bg.pants=Штаны +eps.model_bg.jeans=Джинсы +eps.model_bg.tshirt=Футболка +eps.model_bg.shirt=Рубашка +eps.model_bg.blouse=Блузка +eps.model_bg.jacket=Куртка +eps.model_bg.coat=Пальто +eps.model_bg.sweater=Свитер +eps.model_bg.hoodie=Толстовка +eps.model_bg.nightshirt=Сорочка +eps.model_bg.hoodcloth=Капюшон +eps.model_bg.blouson=Блузон +eps.model_bg.brooch=Брошь +eps.model_bg.jewelry=Украшение +eps.model_bg.cufflink=Запонка +eps.model_bg.pendant=Подвеска +eps.model_bg.tanktop=Майка +eps.model_bg.leatherjacket=Кожаная куртка +eps.model_bg.shorts=Шорты +eps.model_bg.pantsu=Панцу +eps.model_bg.mask=Маска +eps.model_bg.stockings=Чулки +eps.model_bg.stocking=Чулок +eps.model_bg.hose=Шланг +eps.model_bg.skirt=Юбка +eps.model_bg.dress=Платье +eps.model_bg.cloak=Плащ +eps.model_bg.suit=Костюм +eps.model_bg.badges=Значки +eps.model_bg.blazer=Блейзер +eps.model_bg.aodai=Аозай +eps.model_bg.beret=Берет +eps.model_bg.fedora=Фетровая шляпа +eps.model_bg.cowboyboots=Ковбойские сапоги +eps.model_bg.seashell=Ракушка +eps.model_bg.bathingsuit=Купальный костюм +eps.model_bg.swimwear=Купальник +eps.model_bg.boafur=Боа +eps.model_bg.wallet=Кошелёк +eps.model_bg.piercing=Пирсинг +eps.model_bg.earpiercing=Пирсинг ушей +eps.model_bg.nosepiercing=Пирсинг носа +eps.model_bg.bathingattire=Купальный наряд +eps.model_bg.cowboyhat=Ковбойская шляпа +eps.model_bg.cravat=Шейный платок +eps.model_bg.clothingbutton=Пуговица +eps.model_bg.academicdress=Академическое платье +eps.model_bg.kaftan=Кафтан +eps.model_bg.caftan=Кафтан +eps.model_bg.corset=Корсет +eps.model_bg.vest=Жилет +eps.model_bg.hookeye=Крючок и ушко +eps.model_bg.garb=Наряд +eps.model_bg.bead=Бусина +eps.model_bg.prayerbeads=Чётки +eps.model_bg.crown=Корона +eps.model_bg.brassiere=Бюстгальтер +eps.model_bg.fez=Феска +eps.model_bg.leggings=Леггинсы +eps.model_bg.trousers=Брюки +eps.model_bg.worrybeads=Комболои +eps.model_bg.slacks=Слаксы +eps.model_bg.overalls=Рабочий комбинезон +eps.model_bg.scarf=Шарф +eps.model_bg.gloves=Перчатки +eps.model_bg.stuffedtoy=Мягкая игрушка +eps.model_bg.stuffedanimal=Мягкое животное +eps.model_bg.toydoll=Игрушечная кукла +eps.model_bg.toy=Игрушка +eps.model_bg.wing=Крыло +eps.model_bg.wristband=Повязка на запястье +eps.model_bg.wristribbon=Лента +eps.model_bg.rag.doll=Тряпичная кукла +eps.model_bg.sewingneedle=Швейная игла +eps.model_bg.needle=Игла +eps.model_bg.plushie=Плюшевая игрушка +eps.model_bg.hat=Шляпа +eps.model_bg.bonnet=Чепец +eps.model_bg.outfit=Наряд +eps.model_bg.tiara=Тиара +eps.model_bg.sunhat=Шляпа от солнца +eps.model_bg.parka=Парка +eps.model_bg.cap=Кепка +eps.model_bg.tights=Колготки +eps.model_bg.blacktieattire=Чёрный галстук (костюм) +eps.model_bg.whitetieattire=Белый галстук (костюм) +eps.model_bg.fulleveningd=Полное вечернее платье +eps.model_bg.tux=Смокинг +eps.model_bg.tuxedo=Смокинг +eps.model_bg.dinnersuit=Вечерний костюм +eps.model_bg.sash=Пояс +eps.model_bg.beanie=Шапка +eps.model_bg.socks=Носки +eps.model_bg.shoes=Туфли +eps.model_bg.sneakers=Сникеры +eps.model_bg.boots=Сапоги +eps.model_bg.sandals=Сандалии +eps.model_bg.diaper=Подгузник +eps.model_bg.flipflops=Шлепанцы +eps.model_bg.underwear=Нижнее белье +eps.model_bg.boxers=Трусы-боксёры +eps.model_bg.briefs=Брифы +eps.model_bg.bra=Бюстгальтер +eps.model_bg.quiltedjacket=Стеганая куртка +eps.model_bg.hairtie=Резинка для волос +eps.model_bg.bangshair=Чёлка +eps.model_bg.fringehair=Бахрома +eps.model_bg.lingerie=Нижнее бельё +eps.model_bg.badge=Значок +eps.model_bg.visor=Козырёк +eps.model_bg.panties=Трусы +eps.model_bg.cape=Кейп +eps.model_bg.pantyhose=Колготки +eps.model_bg.accessoryshort=Акс. +eps.model_bg.accessory=Аксессуар +eps.model_bg.halo=Нимб +eps.model_bg.pen=ручка +eps.model_bg.pencil=карандаш +eps.model_bg.backpack=Рюкзак +eps.model_bg.paintbrush=Кисть для рисования +eps.model_bg.nightgown=Ночная рубашка +eps.model_bg.cardigan=Кардиган +eps.model_bg.pajamas=Пижама +eps.model_bg.cummerbund=Камербанд +eps.model_bg.robe=Халат +eps.model_bg.veil=Вуаль +eps.model_bg.umbrella=Зонтик +eps.model_bg.bandanna=Бандана +eps.model_bg.bandana=Бандана +eps.model_bg.kerchief=Косынка +eps.model_bg.sweatshirt=Толстовка +eps.model_bg.tunic=Туника +eps.model_bg.apron=Фартук +eps.model_bg.swimsuit=Купальник +eps.model_bg.waistcoat=Жилет +eps.model_bg.toga=Мантия +eps.model_bg.bikini=Бикини +eps.model_bg.trunks=Плавки +eps.model_bg.activewear=Спортивная одежда +eps.model_bg.sportswear=Спортивная одежда +eps.model_bg.gilet=Жилет +eps.model_bg.uniform=Униформа +eps.model_bg.tracksuit=Спортивный костюм +eps.model_bg.yogapants=Штаны для йоги +eps.model_bg.wig=Парик +eps.model_bg.raincoat=Дождевик +eps.model_bg.wegown=Свадебное платье +eps.model_bg.mittens=Рукавицы +eps.model_bg.horns=Рога +eps.model_bg.horn=Рог +eps.model_bg.demonhorn=Демонический рог +eps.model_bg.demonhorns=Демонические рога +eps.model_bg.demontail=Демонический хвост +eps.model_bg.hairtails=Хвостики (волосы) +eps.model_bg.catears=Кошачьи уши +eps.model_bg.foxears=Лисьи уши +eps.model_bg.bunnyears=Кроличьи уши +eps.model_bg.dogears=Собачьи уши +eps.model_bg.nekoears=Неко-уши +eps.model_bg.earmuffs=Наушники +eps.model_bg.poloshirt=Рубашка-поло +eps.model_bg.collarribbon=Лента для воротника +eps.model_bg.clothesflower=Цветок (одежда) +eps.model_bg.clothesribbon=Лента (одежда) +eps.model_bg.dressflower=Цветок (платье) +eps.model_bg.kasaya=Кашая +eps.model_bg.belt=Пояс +eps.model_bg.tie=Галстук +eps.model_bg.bustier=Бюстье +eps.model_bg.camisole=Камисоль +eps.model_bg.sleeve=Рукав +eps.model_bg.bowtie=Галстук-бабочка +eps.model_bg.choker=Чокер +eps.model_bg.bow_cloth=Бант +eps.model_bg.hairshadow=Тень (волосы) +eps.model_bg.claws=Когти +eps.model_bg.coatfur=Пальто из меха +eps.model_bg.headphones=Наушники +eps.model_bg.jacketfur=Жилет из меха +eps.model_bg.ponytailhair=Конский хвост +eps.model_bg.eyebrows=Брови +eps.model_bg.legbelt=Ремень для ног +eps.model_bg.flower=Цветок +eps.model_bg.flowers=Цветки +eps.model_bg.rabbit_plushie=Заяц +eps.model_bg.rabbit=Заяц +eps.model_bg.bunny_plushie=Кролик +eps.model_bg.cat_plushie=Кошка +eps.model_bg.shark_plushie=Акула +eps.model_bg.dog_plushie=Собака +eps.model_bg.mouth=Рот +eps.model_bg.tongue=Язык +eps.model_bg.fox_plushie=Лиса +eps.model_bg.watch=Часы +eps.model_bg.bracelet=Браслет +eps.model_bg.collar=Ошейник +eps.model_bg.necklace=Ожерелье +eps.model_bg.ring=Кольцо +eps.model_bg.glasses=Очки +eps.model_bg.blush=Румянец +eps.model_bg.sunglasses=Солнцезащитные очки +eps.model_bg.innerwear=Нательное бельё +eps.model_bg.knapsack=Рюкзак +eps.model_bg.schoolbag=Школьный рюкзак +eps.model_bg.rucksack=Рюкзак +eps.model_bg.pack=Пакет +eps.model_bg.topclothbralevel=Верх +eps.model_bg.booksack=Сумка для книг +eps.model_bg.bookbag=Рюкзак для книг +eps.model_bg.hairclip=Заколка +eps.model_bg.hairclip2=Заколка для волос +eps.model_bg.hairstyle=Причёска +eps.model_bg.pouches=Кисеты +eps.model_bg.hairbuns=Пучки (волосы) +eps.model_bg.hairbun=Пучок (волосы) +eps.model_bg.hairbun2=Пучок +eps.model_bg.tag=Бирка +eps.model_bg.hair=Волосы +eps.model_bg.eyes=Глаза +eps.model_bg.ear=Ухо +eps.model_bg.ears=Уши +eps.model_bg.nose=Нос +eps.model_bg.tail=Хвост diff --git a/resource/localization/tr/enhanced_playermodel_selector.properties b/resource/localization/tr/enhanced_playermodel_selector.properties new file mode 100644 index 0000000..45f0827 --- /dev/null +++ b/resource/localization/tr/enhanced_playermodel_selector.properties @@ -0,0 +1,101 @@ + +EPS.Title=Gelişmiş Oyuncu Modeli Seçici %s, Fesiug'un Düzenlemesi + +# Main Buttons +EPS.Reset=Sıfırla +EPS.ApplyPM=Modeli uygula +EPS.NextAnim=Sonraki anim +EPS.VisitAddonPage=Eklenti Sayfasını Ziyaret Et + +EPS.Search=Ara... + +# Model +EPS.Model=Model +EPS.Model.Icons=Simgeler +EPS.Model.Table=Liste +EPS.Model.Table.Model=Model +EPS.Model.Table.Path=Yol + +# Hands +EPS.Hands=Eller +EPS.Hands.Icons=Simgeler +EPS.Hands.Table=Liste +EPS.Hands.Table.Model=Model +EPS.Hands.Table.Path=Yol +EPS.Hands.UsePM=Oyuncu modelini kullan + +# Favorites +EPS.Favorites=Favoriler +EPS.Favorites.Model=Model +EPS.Favorites.Skin=Görünüm +EPS.Favorites.Bodygroups=Vücut Grupları +EPS.Favorites.LoadFavorite=Seçilen Favoriyi Yükle +EPS.Favorites.Desc=Burada en sevdiğiniz oyuncu modeli kombinasyonlarını kaydedebilirsiniz. Bunu yapmak için:\n1. Bir model seçip görünüm ve vücut gruplarını istediğiniz gibi ayarlayın.\n2. Metin alanına benzersiz bir ad girin ve "Yeni favori ekle"ye tıklayın.\n3. Favorinizi yukarıdaki listeden seçip "Seçilen Favoriyi Yükle"ye tıklayarak yükleyin.\nMevcut favorileri konsol komutuyla da uygulayabilirsiniz:\nplayermodel_loadfav "favorinin adı" +EPS.Favorites.AddNewFavorite=Yeni favori ekle +EPS.Favorites.ReplaceSelected=Seçileni değiştir +EPS.Favorites.DeleteAllSelected=Seçilenlerin tümünü sil + +# Bodygroups +EPS.Bodygroups=Vücut Grupları + +EPS.Handgroups=El Grupları + +EPS.Skin=Görünüm + +EPS.Flexes=Pozucu +EPS.Notes=Notlar:-\nPozucu için model önizlemesi düzgün çalışmıyor. Ancak, bunları uyguladığınızda oyuncu modelinizde görüneceklerdir.\n- Sağlanan varsayılan değerler doğru olmayabilir ve yüzlerin bozulmasına neden olabilir.\n- Bağlantıyı kesmekten başka pozucu manipülasyonunu sıfırlamanın (veya düzeltmenin) bir yolu yoktur. + +# Colors +EPS.Colors=Renkler +EPS.Colors.PlayerColor=Oyuncu Rengi +EPS.Colors.PhysgunColor=Fizik Silahı rengi +EPS.Colors.ResetToDefault=Varsayılan değerlere sıfırla + +# Settings +EPS.Settings=Ayarlar +EPS.Settings.Client=Kullanıcı +EPS.Settings.Client.EnforcePM=Oyuncu modelini zorla +EPS.Settings.Client.EnforcePM.Desc=Etkinleştirilirse, seçtiğiniz oyuncu modeli korunacaktır. Başka hiçbir işlev artık oyuncu modelinizi değiştiremez. +EPS.Settings.Client.TranslateBodygroup=Vücut Gruplarını Çevir +EPS.Settings.Client.TranslateBodygroup.Desc=Etkinleştirilirse, desteklenen vücut grubunun adı desteklenen dile çevrilecektir. +EPS.Settings.Client.PlayerColorBG=Oyuncu rengini arka plan olarak kullan +EPS.Settings.Client.PlayerColorBG.Desc=Etkinleştirilirse, seçtiğiniz oyuncu rengi menü arka planı olarak kullanılacaktır. Devre dışı bırakılırsa, arka plan gri olacaktır. +EPS.Settings.Client.TransparentBG=Saydam arka plan +EPS.Settings.Client.TransparentBG.Desc=Etkinleştirilirse, menü arka planı saydam olacaktır. Devre dışı bırakılırsa, arka plan opak olacaktır. +EPS.Settings.Client.HideDefaultPMs=Varsayılan Oyuncu Modellerini Gizle +EPS.Settings.Client.HideDefaultPMs.Desc=Etkinleştirilirse, varsayılan oyuncu modelleri gizlenecektir. Pencereyi yeniden açmanız gerekiyor. +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs=Ana listede sadece c_hands olarak gözüken "oyuncu modelleri"ni yoksay +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs.Desc=Etkinleştirilirse, havada asılı kalan el çiftinden başka bir şey olmayan "oyuncu modelleri" mevcut oyuncu modelleri listesinde gösterilmez. Kayıtlı tüm oyuncu modellerini görmek için devre dışı bırakın. +EPS.Settings.Client.ShowFlexes=Pozucu sekmesini göster +EPS.Settings.Client.ShowFlexes.Desc=Bu, oyuncu modelinizdeki pozları manipüle etmenizi sağlar. Ancak pozucu manipülasyonu oyuncu modelleri için yapılmadığı için sorunlara neden olur. Buna aşağıdakiler dahildir:\n- Göz kırpmanın artık çalışmaması.\n- Pozlar manuel olarak düzeltilmezse yüzler bozulabilir.\n- Uyumsuz oyuncu modellerinin yüzlerini tamamen bozabilir.\n- Tüm pozları varsayılan değere getirseniz bile, oyun motoru yine de bunları manipüle edilmiş olarak kabul eder. Sorunları olan modeller düzeltilmeyecektir.\nSekmenin görünmesi için modelinizi bir kez değiştirmelisiniz! +EPS.Settings.Client.RebuildIcon=Oluşum simgelerini yeniden oluştur +EPS.Settings.Client.RebuildIcon.Desc=Tüm oyuncu modeli simgelerinin yeniden oluşturulmasını zorlar. Özel modeller görünümlerini değiştirdikten sonra simgeleri eskiyse kullanışlıdır. Bu, model sayısına ve bilgisayarınızın hızına bağlı olarak biraz zaman alabilir. + +EPS.Settings.Server=Sunucu +EPS.Settings.Server.EnablePMEnforcement=Oyuncu modeli zorlamasını etkinleştir +EPS.Settings.Server.EnablePMEnforcement.Desc=Etkinleştirilirse, seçilen oyuncu modelleri zorla uygulanacak ve korunacaktır. Artık hiçbir oyun modu, harita veya eklenti bunların üzerine yazamaz. Oyuncular, menünün üstündeki onay kutusunu kullanarak bu işlevi tek tek değiştirebilirler.\nDevre dışı bırakılırsa, Sandbox dışında yalnızca manuel düğmesi çalışır. +EPS.Settings.Server.AllowInstantChanges=Anlık değişikliklere izin ver +EPS.Settings.Server.AllowInstantChanges.Desc=Etkinleştirilirse, oyuncular yeniden canlanmadan değişikliklerini anında uygulayabilirler. +EPS.Settings.Server.AllowFlexes=Oyuncuların pozlarını değiştirmesine izin ver +EPS.Settings.Server.AllowFlexes.Desc=Etkinleştirilirse, oyuncular oyuncu modellerinin pozlarını değiştirebilirler. Bu, oyuncunun göz kırpmasını bozabilir ve başka sorunlara neden olabilir. Riski göze alarak etkinleştirin. Oyuncular pozlarını yalnızca bağlantıyı keserek sıfırlayabilirler. +EPS.Settings.Server.EnableInAllGM=Tüm oyun modlarında etkinleştir +EPS.Settings.Server.EnableInAllGM.Desc=Etkinleştirilirse, Oyuncu Modeli Seçici her oyun modundaki tüm oyuncular için kullanılabilir olacaktır. Devre dışı bırakılırsa, yalnızca yöneticiler Sandbox dışında kullanabilir. +EPS.Settings.Server.RequestLimit=İstek sınırı +EPS.Settings.Server.RequestLimit.Desc=Anlık değişiklik işlevini tekrar kullanabilmeleri için oyuncuların beklemeleri gereken süreyi saniyeler içinde sınırlayın. Devre dışı bırakmak için 0 olarak ayarlayın. + +EPS.Settings.GM_Blacklist=OM Kara Listesi +EPS.Settings.GM_Blacklist.ExistedGM=Kara listeye alınmış oyun modları +EPS.Settings.GM_Blacklist.Desc=Burada uyumsuz oyun modlarını kara listeye alabilirsiniz.\n\nOyuncular (Yöneticiler dahil), diğer ayarlara bakmaksızın bu oyun modlarındaki oyuncu modellerini değiştiremez. +EPS.Settings.GM_Blacklist.AddCurrent=Mevcut oyun modunu Kara Listeye ekle +EPS.Settings.GM_Blacklist.ManuallyAddGM=Oyun modunu manuel olarak ekleyin +EPS.Settings.GM_Blacklist.RemoveSelected=Seçili oyun modlarını kaldır + +EPS.Settings.VOX=SES (VOX) +EPS.Settings.VOX.PlayerModel=Oyuncu Modeli +EPS.Settings.VOX.Assigned=atanmış ses paketi +EPS.Settings.VOX.AvailableVOX=Mevcut ses paketleri +EPS.Settings.VOX.AssignToCurrent=Geçerli oyuncu modeline ses paketi ata +EPS.Settings.VOX.RemoveSelected=Seçili atamayı kaldır + +EPS.Settings.Info=Bilgi +EPS.Settings.Info.CreateBy=Oluşturan: %s diff --git a/resource/localization/tr/enhanced_playermodel_selector_bodygroups.properties b/resource/localization/tr/enhanced_playermodel_selector_bodygroups.properties new file mode 100644 index 0000000..fdbd79a --- /dev/null +++ b/resource/localization/tr/enhanced_playermodel_selector_bodygroups.properties @@ -0,0 +1,369 @@ + +# Bodygroup Names +eps.model_bg.empty=Boş +eps.model_bg.pants=Pantolon +eps.model_bg.jeans=Kot +eps.model_bg.tshirt=Tişört +eps.model_bg.shirt=Gömlek/Bluz +eps.model_bg.blouse=Bluz +eps.model_bg.jacket=Ceket +eps.model_bg.coat=Kaban +eps.model_bg.sweater=Kazak +eps.model_bg.hoodie=Kapüşon +eps.model_bg.nightshirt=Gecelik +eps.model_bg.hoodcloth=Başlık +eps.model_bg.blouson=Mont +eps.model_bg.brooch=Broş +eps.model_bg.jewelry=Takı +eps.model_bg.cufflink=Kol düğmesi +eps.model_bg.pendant=Kolye +eps.model_bg.tanktop=Yelek Kazak +eps.model_bg.leatherjacket=Deri Ceket +eps.model_bg.shorts=Şort +eps.model_bg.pantsu=Pantsu (İç Çamaşırı) +eps.model_bg.mask=Maske +eps.model_bg.stockings=Naylon Çorap +eps.model_bg.stocking=Naylon Çorap +eps.model_bg.hose=Tayt +eps.model_bg.skirt=Etek +eps.model_bg.dress=Elbise +eps.model_bg.cloak=Pelerin +eps.model_bg.suit=Kıyafet +eps.model_bg.badges=Rozetler +eps.model_bg.blazer=Blazer +eps.model_bg.aodai=Áo dài +eps.model_bg.beret=Bere +eps.model_bg.fedora=Fötr +eps.model_bg.cowboyboots=Kovboy Çizmesi +eps.model_bg.seashell=Deniz Kabuğu +eps.model_bg.bathingsuit=Mayo +eps.model_bg.swimwear=Mayo +eps.model_bg.boafur=Sarar Atkı +eps.model_bg.wallet=Cüzdan +eps.model_bg.piercing=Pirsing +eps.model_bg.earpiercing=Kulak Pirsingi +eps.model_bg.nosepiercing=Burun Pirsingi +eps.model_bg.bathingattire=Mayo +eps.model_bg.cowboyhat=Kovboy Şapkası +eps.model_bg.cravat=Kravat +eps.model_bg.clothingbutton=Düğme +eps.model_bg.academicdress=Akademik Kıyafet +eps.model_bg.kaftan=Kaftan +eps.model_bg.caftan=Kaftan +eps.model_bg.corset=Korse +eps.model_bg.vest=Yelek +eps.model_bg.hookeye=Kopça +eps.model_bg.garb=Orta Çağ Kıyafeti +eps.model_bg.bead=Boncuk +eps.model_bg.prayerbeads=Tespih +eps.model_bg.crown=Taç +eps.model_bg.brassiere=Sütyen +eps.model_bg.fez=Fes +eps.model_bg.leggings=Tayt +eps.model_bg.trousers=Pantolon +eps.model_bg.worrybeads=Sallama Tespihi +eps.model_bg.slacks=Pantolon +eps.model_bg.overalls=Tulum +eps.model_bg.scarf=Atkı +eps.model_bg.gloves=Eldivenler +eps.model_bg.stuffedtoy=Peluş Oyuncak +eps.model_bg.stuffedanimal=Peluş Hayvan +eps.model_bg.toydoll=Oyuncak Bebek +eps.model_bg.toy=Oyuncak +eps.model_bg.wing=Kanat +eps.model_bg.wristband=Bilek Bandı +eps.model_bg.wristribbon=Bilek Şeridi +eps.model_bg.rag.doll=Bez Bebek +eps.model_bg.sewingneedle=Dikiş İğnesi +eps.model_bg.needle=İğne +eps.model_bg.plushie=Peluş Oyuncak +eps.model_bg.hat=Şapka +eps.model_bg.bonnet=Bone +eps.model_bg.outfit=Takım +eps.model_bg.tiara=Tiara +eps.model_bg.sunhat=Güneş Şapkası +eps.model_bg.parka=Parka +eps.model_bg.cap=Kasket +eps.model_bg.tights=Külotlu Çorap +eps.model_bg.blacktieattire=Smokin +eps.model_bg.whitetieattire=Frak +eps.model_bg.fulleveningd=Frak +eps.model_bg.tux=Smokin +eps.model_bg.tuxedo=Smokin +eps.model_bg.dinnersuit=Smokin +eps.model_bg.sash=Kuşak +eps.model_bg.beanie=Örgülü Şapka +eps.model_bg.socks=Çorap +eps.model_bg.shoes=Ayakkabılar +eps.model_bg.sneakers=Spor Ayakkabı +eps.model_bg.boots=Bot +eps.model_bg.sandals=Sandalet +eps.model_bg.diaper=Bebek Bezi +eps.model_bg.flipflops=Parmak Arası Terlik +eps.model_bg.underwear=İç Çamaşırı +eps.model_bg.boxers=Boxer Şort +eps.model_bg.briefs=Slip +eps.model_bg.bra=Sütyen +eps.model_bg.quiltedjacket=Kapitone Ceket +eps.model_bg.hairtie=Saç Tokası +eps.model_bg.bangshair=Kâkül +eps.model_bg.fringehair=Kâkül +eps.model_bg.lingerie=Lingerie +eps.model_bg.badge=Rozet +eps.model_bg.visor=Vizör +eps.model_bg.panties=Külot +eps.model_bg.cape=Pelerin +eps.model_bg.pantyhose=Külotlu Çorap +eps.model_bg.accessoryshort=Aksesuar +eps.model_bg.accessory=Aksesuar +eps.model_bg.halo=Hale +eps.model_bg.pen=Kalem +eps.model_bg.pencil=Kalem +eps.model_bg.backpack=Sırt Çantası +eps.model_bg.paintbrush=Boya Fırçası +eps.model_bg.nightgown=Gece Kıyafeti +eps.model_bg.cardigan=Hırka +eps.model_bg.pajamas=Pijama +eps.model_bg.cummerbund=Kuşak +eps.model_bg.robe=Cübbe +eps.model_bg.veil=Peçe +eps.model_bg.umbrella=Şemsiye +eps.model_bg.bandanna=Bandana +eps.model_bg.bandana=Bandana +eps.model_bg.kerchief=Fular +eps.model_bg.sweatshirt=Kazak +eps.model_bg.tunic=Tünik +eps.model_bg.apron=Önlük +eps.model_bg.swimsuit=Mayo +eps.model_bg.waistcoat=Yelek +eps.model_bg.toga=Toga +eps.model_bg.bikini=Bikini +eps.model_bg.trunks=Şört Mayo +eps.model_bg.activewear=Spor Giyim +eps.model_bg.sportswear=Spor Giyim +eps.model_bg.gilet=Jile +eps.model_bg.uniform=Üniforma +eps.model_bg.tracksuit=Eşofman +eps.model_bg.yogapants=Yoga Pantolonu +eps.model_bg.wig=Peruk +eps.model_bg.raincoat=Yağmurluk +eps.model_bg.wegown=Gelinlik +eps.model_bg.mittens=Tek Parmaklı Eldiven +eps.model_bg.horns=Boynuzlar +eps.model_bg.horn=Boynuz +eps.model_bg.demonhorn=Şeytan Boynuzu +eps.model_bg.demonhorns=Şeytan Boynuzları +eps.model_bg.demontail=Şeytan Kuyruğu +eps.model_bg.hairtails=Kuyruklar + +# All possibilities for ear category (Do not think it as only plural/singular difference when translating) + +eps.model_bg.catears=Kedi Kulakları +eps.model_bg.foxears=Tilki Kulakları +eps.model_bg.bunnyears=Tavşan Kulakları +eps.model_bg.dogears=Köpek Kulakları +eps.model_bg.nekoears=Neko Kulakları + +eps.model_bg.catear=Kedi Kulakları +eps.model_bg.foxear=Tilki Kulakları +eps.model_bg.bunnyear=Tavşan Kulakları +eps.model_bg.dogear=Köpek Kulakları +eps.model_bg.nekoear=Neko Kulakları + +eps.model_bg.cat_ear=Kedi Kulakları +eps.model_bg.fox_ear=Tilki Kulakları +eps.model_bg.bunny_ear=Tavşan Kulakları +eps.model_bg.dog_ear=Köpek Kulakları +eps.model_bg.neko_ear=Neko Kulakları + +eps.model_bg.cat_ears=Kedi Kulakları +eps.model_bg.fox_ears=Tilki Kulakları +eps.model_bg.bunny_ears=Tavşan Kulakları +eps.model_bg.dog_ears=Köpek Kulakları +eps.model_bg.neko_ears=Neko Kulakları + +eps.model_bg.earmuffs=Kulaklık +eps.model_bg.poloshirt=Polo Yaka Gömlek +eps.model_bg.collarribbon=Yaka Şeridi/Kurdelesi +eps.model_bg.clothesflower=Elbise Çiçeği +eps.model_bg.clothesribbon=Elbise Kurdelesi +eps.model_bg.dressflower=Elbise Çiçeği +eps.model_bg.kasaya=Kasaya +eps.model_bg.belt=Kemer +eps.model_bg.tie=Kravat +eps.model_bg.bustier=Büstiyer +eps.model_bg.camisole=Kaşkorse +eps.model_bg.sleeve=Elbise Kolu +eps.model_bg.bowtie=Papyon +eps.model_bg.choker=Gerdanlık +eps.model_bg.bow_cloth=Kurdele +eps.model_bg.hairshadow=Saç Gölgesi +eps.model_bg.hairshadows=Saç Gölgesi +eps.model_bg.claws=Pençeler +eps.model_bg.coatfur=Kürk +eps.model_bg.headphones=Kulaklık +eps.model_bg.jacketfur=Ceket Kürkü +eps.model_bg.ponytailhair=At Kuyruğu (Saç) +eps.model_bg.eyebrows=Kaşlar +eps.model_bg.legbelt=Bacak Kemeri +eps.model_bg.flower=Çiçek +eps.model_bg.flowers=Çiçekler +eps.model_bg.rabbit_plushie=Oyuncak Tavşan +eps.model_bg.rabbit=Tavşan +eps.model_bg.bunny_plushie=Oyuncak Tavşan +eps.model_bg.cat_plushie=Oyuncak Kedi +eps.model_bg.shark_plushie=Oyuncak Köpek Balığı +eps.model_bg.dog_plushie=Oyuncak Köpek +eps.model_bg.fox_plushie=Oyuncak Tilki +eps.model_bg.mouth=Ağız +eps.model_bg.tongue=Dil +eps.model_bg.watch=Saat +eps.model_bg.bracelet=Bileklik +eps.model_bg.collar=Yaka +eps.model_bg.necklace=Kolye +eps.model_bg.ring=Yüzük +eps.model_bg.glasses=Gözlük +eps.model_bg.blush=Kızarma +eps.model_bg.sunglasses=Güneş Gözlüğü +eps.model_bg.innerwear=İç Giyim +eps.model_bg.knapsack=Sırt Çantası +eps.model_bg.schoolbag=Okul Çantası +eps.model_bg.bookbag=Okul Çantası +eps.model_bg.booksack=Okul Çantası +eps.model_bg.rucksack=Sırt Çantası +eps.model_bg.pack=Sırt Çantası +eps.model_bg.topclothbralevel=Üst +eps.model_bg.hairclip=Toka +eps.model_bg.hairclip2=Toka +eps.model_bg.hairstyle=Saç Stili +eps.model_bg.pouches=Kese +eps.model_bg.hairbuns=Saç Topuzları +eps.model_bg.hairbun=Saç Topuzu +eps.model_bg.hairbun2=Topuz +eps.model_bg.tag=Etiket +eps.model_bg.hair=Saç +eps.model_bg.eyes=Göz +eps.model_bg.nose=Burun +eps.model_bg.ear=Kulak +eps.model_bg.ears=Kulak +eps.model_bg.tail=Kuyruk + +eps.model_bg.wings=Kanat +eps.model_bg.ribbon=Kurdele +eps.model_bg.armband=Kol Bandı +eps.model_bg.armbands=Kol Bantları +eps.model_bg.top=Üst/Krop +eps.model_bg.shoe=Ayakkabı +eps.model_bg.right_shoe=Sağ Ayakkabı +eps.model_bg.left_shoe=Sol Ayakkabı + +eps.model_bg.dragon_horns=Ejderha Boynuzu +eps.model_bg.dragon_tails=Ejderha Kuyruğu +eps.model_bg.dragon_wings=Ejderha Kanadı + +eps.model_bg.dragon_horn=Ejderha Boynuzu +eps.model_bg.dragon_tail=Ejderha Kuyruğu +eps.model_bg.dragon_wing=Ejderha Kanadı +eps.model_bg.rat=Fare + +eps.model_bg.top_acc=Üst Aksesuar +eps.model_bg.emotions=İfadeler +eps.model_bg.emotion=İfade + +eps.model_bg.body_outline=Dış Çizgi +eps.model_bg.body.outline=Dış Çizgi +eps.model_bg.bodyoutline=Dış Çizgi + +eps.model_bg.hood=Kapüşon +eps.model_bg.bag=Çanta +eps.model_bg.headband=Saç Bandı +eps.model_bg.hairband=Saç Bandı +eps.model_bg.glove=Eldiven +eps.model_bg.cloth=Kıyafet +eps.model_bg.clothes=Kıyafet + +eps.model_bg.ear_right=Sağ Kulak +eps.model_bg.ear_left=Sol Kulak +eps.model_bg.face=Yüz + +# Emotions + +eps.model_bg.anger=Kızgın +eps.model_bg.sweat=Ter +eps.model_bg.tired=Yorgun +eps.model_bg.shocked=Şok +eps.model_bg.happy=Mutlu +eps.model_bg.sad=Üzgün +eps.model_bg.scared=Korkmuş +eps.model_bg.surprised=Şaşkın +eps.model_bg.excited=Heyecanlı +eps.model_bg.jealous=Kıskanç +eps.model_bg.curious=Merak +eps.model_bg.smirk=Sırıtma +eps.model_bg.smile=Gülümseme + +# Weapons +# Yes, weapons can be used and are used as bodygroups. Even HL2 weapons in some cases. + +eps.model_bg.sword=Kılıç +eps.model_bg.longsword=Uzun Kılıç +eps.model_bg.claymore=İskoç Claymore Kılıcı +eps.model_bg.shield=Kalkan +eps.model_bg.spear=Mızrak +eps.model_bg.gun=Silah +eps.model_bg.weapon=Silah +eps.model_bg.shamshir=Şemşir +eps.model_bg.saber=Süvari Kılıcı +eps.model_bg.yatagan=Yatağan +eps.model_bg.dagger=Hançer +eps.model_bg.knife=Bıçak +eps.model_bg.trident=Üç Dişli Mızrak + +eps.model_bg.357=.357 Magnum +eps.model_bg.alyxgun=Alyx'in Silahı +eps.model_bg.annabelle=Annabelle +eps.model_bg.ar2=Enerji Tüfeği +eps.model_bg.bugbait=Böcek Yemi +eps.model_bg.citizenpackage=Gıda Payı +eps.model_bg.citizensuitcase=Çanta +eps.model_bg.crossbow=Arbalet +eps.model_bg.crowbar=Levye +eps.model_bg.frag=El Bombası +eps.model_bg.physcannon=Yer Çekimi Silahı +eps.model_bg.pistol=9mm Tabanca +eps.model_bg.rpg=Roketatar +eps.model_bg.shotgun=Av Tüfeği +eps.model_bg.slam=S.H.S.M. +eps.model_bg.smg1=HMS +eps.model_bg.stunstick=Elektrikli Cop +eps.model_bg.oldmanharpoon=Zıpkın +eps.model_bg.gmod_camera=Kamera +eps.model_bg.gmod_tool=Alet Silahı +eps.model_bg.manhack_welder=Sivilkeser Silahı +eps.model_bg.fists=Yumruklar +eps.model_bg.flechettegun=Flechette Silahı +eps.model_bg.medkit=İlk Yardım Kiti +eps.model_bg.physgun=Fizik Silahı + +eps.model_bg.weapon_357=.357 Magnum +eps.model_bg.weapon_alyxgun=Alyx'in Silahı +eps.model_bg.weapon_annabelle=Annabelle +eps.model_bg.weapon_ar2=Enerji Tüfeği +eps.model_bg.weapon_bugbait=Böcek Yemi +eps.model_bg.weapon_citizenpackage=Gıda Payı +eps.model_bg.weapon_citizensuitcase=Çanta +eps.model_bg.weapon_crossbow=Arbalet +eps.model_bg.weapon_crowbar=Levye +eps.model_bg.weapon_frag=El Bombası +eps.model_bg.weapon_physcannon=Yer Çekimi Silahı +eps.model_bg.weapon_pistol=9mm Tabanca +eps.model_bg.weapon_rpg=Roketatar +eps.model_bg.weapon_shotgun=Av Tüfeği +eps.model_bg.weapon_slam=S.H.S.M. +eps.model_bg.weapon_smg1=HMS +eps.model_bg.weapon_stunstick=Elektrikli Cop +eps.model_bg.weapon_oldmanharpoon=Zıpkın +eps.model_bg.weapon_fists=Yumruklar +eps.model_bg.weapon_flechettegun=Flechette Silahı +eps.model_bg.weapon_medkit=İlk Yardım Kiti +eps.model_bg.weapon_physgun=Fizik Silahı diff --git a/resource/localization/zh-cn/enhanced_playermodel_selector.properties b/resource/localization/zh-cn/enhanced_playermodel_selector.properties new file mode 100644 index 0000000..e1c882a --- /dev/null +++ b/resource/localization/zh-cn/enhanced_playermodel_selector.properties @@ -0,0 +1,100 @@ + +EPS.Title=增强版玩家模型选择器 %s(Fesiug 修改版)| 简体中文翻译:Insane Black Rock Shooter + +# Main Buttons +EPS.Reset=重置 +EPS.NextAnim=切换动作 +EPS.ApplyPM=应用玩家模型 +EPS.VisitAddonPage=查看创意工坊页面 + +EPS.Search=搜索... + +# Model Sheet +EPS.Model=模型 +EPS.Model.Icons=图标 +EPS.Model.Table=列表 +EPS.Model.Table.Model=模型 +EPS.Model.Table.Path=路径 + +# Hands Sheet +EPS.Hands=手臂 +EPS.Hands.Icons=图标 +EPS.Hands.Table=列表 +EPS.Hands.Table.Model=模型 +EPS.Hands.Table.Path=路径 +EPS.Hands.UsePM=跟随玩家模型 + +# Favorites Sheet +EPS.Favorites=预设 +EPS.Favorites.Model=模型 +EPS.Favorites.Skin=皮肤 +EPS.Favorites.Bodygroups=身体组件 +EPS.Favorites.LoadFavorite=载入选中的预设 +EPS.Favorites.Desc=在这里,你可以保存你的模型数据预设,首先,你需要:\n1. 选择一个模型,然后根据你的偏好设置皮肤和身体组件。\n2. 在文本框中输入一个与其他预设不相同的名称,然后单击“添加新的预设”。\n3. 在下面的列表中选择你的预设,然后单击“载入选中预设”。\n你也可以通过控制台命令应用现有预设:\nplayermodel_loadfav “预设名称” +EPS.Favorites.AddNewFavorite=添加新的预设 +EPS.Favorites.ReplaceSelected=覆盖选中的预设 +EPS.Favorites.DeleteAllSelected=删除所有选中的预设 + +# Bodygroups Sheet +EPS.Bodygroups=身体组件 + +EPS.Handgroups=手臂组件 + +EPS.Skin=皮肤 + +EPS.Flexes=表情 +EPS.Notes=注意:\n-表情在模型预览中无法正常显示。但是当你应用模型之后,表情在人物模型上是可见的。\n- 提供的默认值可能不正确,并导致面部扭曲。\n- 除了断开连接之外,没有办法重置(或修复)表情操作。 + +# Colors Sheet +EPS.Colors=颜色 +EPS.Colors.PlayerColor=玩家颜色 +EPS.Colors.PhysgunColor=物理枪颜色 +EPS.Colors.ResetToDefault=恢复至默认值 + +# Settings Sheet +EPS.Settings=设置 +EPS.Settings.Client=客户端 +EPS.Settings.Client.EnforcePM=强制使用选中模型 +EPS.Settings.Client.EnforcePM.Desc=如果启用,你选中的玩家模型将会被锁定。无法被其他插件更改。 +EPS.Settings.Client.TranslateBodygroup=翻译身体组件 +EPS.Settings.Client.TranslateBodygroup.Desc=如果启用,且当前语言支持,则自动翻译支持的身体组件。 +EPS.Settings.Client.PlayerColorBG=使用玩家颜色作为背景色 +EPS.Settings.Client.PlayerColorBG.Desc=如果启用,背景颜色将会使用你设定的玩家颜色。如果禁用,背景将会变成灰色。 +EPS.Settings.Client.TransparentBG=透明背景 +EPS.Settings.Client.TransparentBG.Desc=如果启用,菜单背景将会变得透明。如果禁用,背景将会变得不透明。 +EPS.Settings.Client.HideDefaultPMs=隐藏默认玩家模型 +EPS.Settings.Client.HideDefaultPMs.Desc=如果启用,将会隐藏游戏默认的玩家模型。需要重启窗口生效。 +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs=隐藏只有手臂模型的玩家模型 +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs.Desc=如果启用,那些只有手臂模型的玩家模型将不会显示在模型列表中。禁用此项则显示全部模型。 +EPS.Settings.Client.ShowFlexes=显示表情选项卡 +EPS.Settings.Client.ShowFlexes.Desc=这允许你更改玩家模型的表情。但是,表情系统并非专门为人物模型设计的,因此会产生问题。问题包括:\n- 眨眼功能将会失效\n- 除非手动更正面部表情,否则面部可能会扭曲。\n- 可能会彻底损坏不兼容的玩家模型的面部。\n- 即使将所有表情设置为默认值,引擎仍将表情设置为更改后的表情。有问题的模型不会被修复。\n你必须切换模型一次,才能显示选项卡! +EPS.Settings.Client.RebuildIcon=重新加载图标 +EPS.Settings.Client.RebuildIcon.Desc=强制重新渲染所有玩家模型图标。对于模型更新后的过期图标很有用。这可能需要一些时间,渲染速度取决于你的模型数量和电脑性能。 + +EPS.Settings.Server=服务端 +EPS.Settings.Server.EnablePMEnforcement=启用玩家模型锁定 +EPS.Settings.Server.EnablePMEnforcement.Desc=如果启用,将强制使用和保护选定的玩家模型。没有任何游戏模式、地图或插件可以更改它们。玩家可以使用菜单顶部的复选框单独切换此功能。\n如果禁用,则只有手动按钮在沙盒模式以外可用。 +EPS.Settings.Server.AllowInstantChanges=允许立即更改模型 +EPS.Settings.Server.AllowInstantChanges.Desc=如果启用,玩家不需要重生就可以立即更改模型。 +EPS.Settings.Server.AllowFlexes=允许玩家改变表情 +EPS.Settings.Server.AllowFlexes.Desc=如果启用,玩家可以更改其玩家模型的表情。这将破坏玩家眨眼功能,并可能导致其他问题。风险自负。玩家只能通过断开连接来重置表情。 +EPS.Settings.Server.EnableInAllGM=在所有游戏模式中启用模型选择器 +EPS.Settings.Server.EnableInAllGM.Desc=如果启用,玩家模型选择器将对任何游戏模式下的所有玩家可用。如果禁用,则只有管理员可以在沙盒之外的模式使用它。 +EPS.Settings.Server.RequestLimit=时间限制 +EPS.Settings.Server.RequestLimit.Desc=时间限制:玩家在再次使用即时更改功能之前必须等待的秒数。设置为 0 禁用。 + +EPS.Settings.GM_Blacklist=游戏模式黑名单 +EPS.Settings.GM_Blacklist.ExistedGM=已加入黑名单的游戏模式 +EPS.Settings.GM_Blacklist.Desc=在这里你可以把不兼容的游戏模式加入黑名单。\n\n无论其他设置如何,玩家(包括管理员)都不能在这些游戏模式下更改其玩家模型。 +EPS.Settings.GM_Blacklist.AddCurrent=添加当前游戏模式至黑名单 +EPS.Settings.GM_Blacklist.ManuallyAddGM=手动添加游戏模式 +EPS.Settings.GM_Blacklist.RemoveSelected=移除选中游戏模式 + +EPS.Settings.VOX=语音包 +EPS.Settings.VOX.PlayerModel=玩家模型 +EPS.Settings.VOX.Assigned=设置的语音包 +EPS.Settings.VOX.AvailableVOX=可用的语音包 +EPS.Settings.VOX.AssignToCurrent=为选中的玩家模型设置语音包 +EPS.Settings.VOX.RemoveSelected=移除选中的设置 + +EPS.Settings.Info=信息 diff --git a/resource/localization/zh-cn/enhanced_playermodel_selector_bodygroups.properties b/resource/localization/zh-cn/enhanced_playermodel_selector_bodygroups.properties new file mode 100644 index 0000000..7d7620d --- /dev/null +++ b/resource/localization/zh-cn/enhanced_playermodel_selector_bodygroups.properties @@ -0,0 +1,222 @@ + +# Bodygroup Names +eps.model_bg.empty=隐藏 +eps.model_bg.pants=内裤 +eps.model_bg.jeans=Jeans +eps.model_bg.tshirt=T-shirt +eps.model_bg.shirt=Shirt +eps.model_bg.blouse=Blouse +eps.model_bg.jacket=夹克 +eps.model_bg.coat=Coat +eps.model_bg.sweater=Sweater +eps.model_bg.hoodie=Hoodie +eps.model_bg.nightshirt=Nightshirt +eps.model_bg.hoodcloth=Hood +eps.model_bg.blouson=Blouson +eps.model_bg.brooch=Brooch +eps.model_bg.jewelry=Jewelry +eps.model_bg.cufflink=Cufflink +eps.model_bg.pendant=Pendant +eps.model_bg.tanktop=背心 +eps.model_bg.leatherjacket=Leather Jacket +eps.model_bg.shorts=短裤 +eps.model_bg.pantsu=内裤 +eps.model_bg.mask=Mask +eps.model_bg.stockings=长袜 +eps.model_bg.stocking=长袜 +eps.model_bg.hose=Hose +eps.model_bg.skirt=短裙 +eps.model_bg.dress=Dress +eps.model_bg.cloak=斗篷 +eps.model_bg.suit=Suit +eps.model_bg.badges=Badges +eps.model_bg.blazer=Blazer +eps.model_bg.aodai=Áo dài +eps.model_bg.beret=Beret +eps.model_bg.fedora=Fedora +eps.model_bg.cowboyboots=Cowboy Boots +eps.model_bg.seashell=Seashell +eps.model_bg.bathingsuit=Bathing Suit +eps.model_bg.swimwear=Swimwear +eps.model_bg.boafur=Boa +eps.model_bg.wallet=Wallet +eps.model_bg.piercing=Piercing +eps.model_bg.earpiercing=Ear Piercing +eps.model_bg.nosepiercing=Nose Piercing +eps.model_bg.bathingattire=Bathing Attire +eps.model_bg.cowboyhat=Cowboy Hat +eps.model_bg.cravat=Cravat +eps.model_bg.clothingbutton=Button +eps.model_bg.academicdress=Academic Dress +eps.model_bg.kaftan=Kaftan +eps.model_bg.caftan=Caftan +eps.model_bg.corset=Corset +eps.model_bg.vest=Vest +eps.model_bg.hookeye=Hook & Eye +eps.model_bg.garb=Garb +eps.model_bg.bead=Bead +eps.model_bg.prayerbeads=Prayer Beads +eps.model_bg.crown=Crown +eps.model_bg.brassiere=Brassiere +eps.model_bg.fez=Fez +eps.model_bg.leggings=Leggings +eps.model_bg.trousers=Trousers +eps.model_bg.worrybeads=Worry Beads +eps.model_bg.slacks=Slacks +eps.model_bg.overalls=Overalls +eps.model_bg.scarf=Scarf +eps.model_bg.gloves=Gloves +eps.model_bg.stuffedtoy=Stuffed Toy +eps.model_bg.stuffedanimal=Stuffed Animal +eps.model_bg.toydoll=Toy Doll +eps.model_bg.toy=Toy +eps.model_bg.wing=Wing +eps.model_bg.wristband=Wrist Band +eps.model_bg.wristribbon=Wrist Ribbon +eps.model_bg.rag.doll=Rag Doll +eps.model_bg.sewingneedle=Sewing Needle +eps.model_bg.needle=Needle +eps.model_bg.plushie=Plushie +eps.model_bg.hat=帽子 +eps.model_bg.bonnet=Bonnet +eps.model_bg.outfit=Outfit +eps.model_bg.tiara=Tiara +eps.model_bg.sunhat=Sun Hat +eps.model_bg.parka=Parka +eps.model_bg.cap=Cap +eps.model_bg.tights=Tights +eps.model_bg.blacktieattire=Black Tie (Attire) +eps.model_bg.whitetieattire=White Tie (Attire) +eps.model_bg.fulleveningd=Full Evening Dress +eps.model_bg.tux=Tux +eps.model_bg.tuxedo=Tuxedo +eps.model_bg.dinnersuit=Dinner Suit +eps.model_bg.sash=Sash +eps.model_bg.beanie=Beanie +eps.model_bg.socks=袜子 +eps.model_bg.shoes=鞋子 +eps.model_bg.sneakers=运动鞋 +eps.model_bg.boots=靴子 +eps.model_bg.sandals=凉鞋 +eps.model_bg.diaper=Diaper +eps.model_bg.flipflops=Flipflops +eps.model_bg.underwear=Underwear +eps.model_bg.boxers=Boxers +eps.model_bg.briefs=Briefs +eps.model_bg.bra=胸罩 +eps.model_bg.quiltedjacket=Quilted Jacket +eps.model_bg.hairtie=Hair Tie +eps.model_bg.bangshair=Bangs +eps.model_bg.fringehair=Fringe +eps.model_bg.lingerie=Lingerie +eps.model_bg.badge=Badge +eps.model_bg.visor=Visor +eps.model_bg.panties=Panties +eps.model_bg.cape=Cape +eps.model_bg.pantyhose=Pantyhose +eps.model_bg.accessoryshort=Acc +eps.model_bg.accessory=Accessory +eps.model_bg.halo=Halo +eps.model_bg.pen=pen +eps.model_bg.pencil=pencil +eps.model_bg.backpack=背包 +eps.model_bg.paintbrush=Paintbrush +eps.model_bg.nightgown=Nightgown +eps.model_bg.cardigan=Cardigan +eps.model_bg.pajamas=Pajamas +eps.model_bg.cummerbund=Cummerbund +eps.model_bg.robe=Robe +eps.model_bg.veil=Veil +eps.model_bg.umbrella=Umbrella +eps.model_bg.bandanna=Bandanna +eps.model_bg.bandana=Bandana +eps.model_bg.kerchief=Kerchief +eps.model_bg.sweatshirt=Sweatshirt +eps.model_bg.tunic=Tunic +eps.model_bg.apron=Apron +eps.model_bg.swimsuit=Swimsuit +eps.model_bg.waistcoat=Waistcoat +eps.model_bg.toga=Toga +eps.model_bg.bikini=比基尼 +eps.model_bg.trunks=Trunks +eps.model_bg.activewear=Activewear +eps.model_bg.sportswear=Sportswear +eps.model_bg.gilet=Gilet +eps.model_bg.uniform=Uniform +eps.model_bg.tracksuit=Tracksuit +eps.model_bg.yogapants=Yoga Pants +eps.model_bg.wig=Wig +eps.model_bg.raincoat=Raincoat +eps.model_bg.wegown=Wedding Gown +eps.model_bg.mittens=Mittens +eps.model_bg.horns=角 +eps.model_bg.horn=角 +eps.model_bg.demonhorn=恶魔角 +eps.model_bg.demonhorns=恶魔角 +eps.model_bg.demontail=恶魔尾巴 +eps.model_bg.hairtails=Hair Tails +eps.model_bg.catears=猫耳 +eps.model_bg.foxears=狐狸耳 +eps.model_bg.bunnyears=兔耳 +eps.model_bg.dogears=狗耳 +eps.model_bg.nekoears=Neko Ears +eps.model_bg.earmuffs=Earmuffs +eps.model_bg.poloshirt=Polo Shirt +eps.model_bg.collarribbon=Collar Ribbon +eps.model_bg.clothesflower=Clothes Flower +eps.model_bg.clothesribbon=Clothes Ribbon +eps.model_bg.dressflower=Dress Flower +eps.model_bg.kasaya=Kasaya +eps.model_bg.belt=Belt +eps.model_bg.tie=领带 +eps.model_bg.bustier=Bustier +eps.model_bg.camisole=Camisole +eps.model_bg.sleeve=袖子 +eps.model_bg.bowtie=Bowtie +eps.model_bg.choker=Choker +eps.model_bg.bow_cloth=Bow +eps.model_bg.hairshadow=Hair Shadow +eps.model_bg.claws=爪子 +eps.model_bg.coatfur=Coat Fur +eps.model_bg.headphones=Headphones +eps.model_bg.jacketfur=Jacket Fur +eps.model_bg.ponytailhair=Ponytail +eps.model_bg.eyebrows=Eyebrows +eps.model_bg.legbelt=腿带 +eps.model_bg.flower=Flower +eps.model_bg.flowers=Flowers +eps.model_bg.rabbit_plushie=Rabbit +eps.model_bg.rabbit=Rabbit +eps.model_bg.bunny_plushie=Bunny +eps.model_bg.cat_plushie=Cat +eps.model_bg.shark_plushie=Shark +eps.model_bg.dog_plushie=Dog +eps.model_bg.mouth=Mouth +eps.model_bg.tongue=Tongue +eps.model_bg.fox_plushie=Fox +eps.model_bg.watch=手表 +eps.model_bg.bracelet=手镯 +eps.model_bg.collar=衣领 +eps.model_bg.necklace=项链 +eps.model_bg.ring=戒指 +eps.model_bg.glasses=Glasses +eps.model_bg.blush=Blush +eps.model_bg.sunglasses=Sunglasses +eps.model_bg.innerwear=Innerwear +eps.model_bg.knapsack=Knapsack +eps.model_bg.schoolbag=Schoolbag +eps.model_bg.rucksack=Rucksack +eps.model_bg.pack=Pack +eps.model_bg.topclothbralevel=Top +eps.model_bg.booksack=Booksack +eps.model_bg.bookbag=Bookbag +eps.model_bg.hairclip=Clip +eps.model_bg.hairclip2=Hair Clip +eps.model_bg.hairstyle=Hair Style +eps.model_bg.pouches=袋子 +eps.model_bg.hairbuns=Hair Buns +eps.model_bg.hairbun=Hair Bun +eps.model_bg.hairbun2=Bun +eps.model_bg.tag=标签 +eps.model_bg.feet=双脚 +eps.model_bg.hair=头发/毛发 diff --git a/resource/localization/zh-tw/enhanced_playermodel_selector.properties b/resource/localization/zh-tw/enhanced_playermodel_selector.properties new file mode 100644 index 0000000..5d2a617 --- /dev/null +++ b/resource/localization/zh-tw/enhanced_playermodel_selector.properties @@ -0,0 +1,98 @@ + +EPS.Title=增強版玩家模型選擇器 %s(Fesiug 修改版)| 繁體中文翻译基於 Insane Black Rock Shooter 的簡體中文修改 + +# Main Buttons +EPS.Reset=重置 +EPS.NextAnim=Next anim +EPS.ApplyPM=套用玩家模型 +EPS.VisitAddonPage=查看工作坊頁面 + +EPS.Search=搜索... + +# Model Sheet +EPS.Model=模型 +EPS.Model.Icons=圖標 +EPS.Model.Table=列表 +EPS.Model.Table.Model=模型 +EPS.Model.Table.Path=路徑 + +# Hands Sheet +EPS.Hands=手臂 +EPS.Hands.Icons=圖標 +EPS.Hands.Table=列表 +EPS.Hands.Table.Model=模型 +EPS.Hands.Table.Path=路徑 +EPS.Hands.UsePM=跟隨玩家模型 + +# Favorites Sheet +EPS.Favorites=預設 +EPS.Favorites.Model=模型 +EPS.Favorites.Skin=皮膚 +EPS.Favorites.Bodygroups=身體組件 +EPS.Favorites.LoadFavorite=載入選中的預設 +EPS.Favorites.Desc=在這裏,你可以保存你的模型數據預設,首先,你需要:\n1. 選擇一個模型,然後根據你的偏好設定皮膚和身體組件。\n2. 在文本框中輸入一個與其他預設不相同的名稱,然後單擊“添加新的預設”。\n3. 在下面的列表中選擇你的預設,然後單擊“載入選中預設”。\n你也可以通過控制檯命令套用現有預設:\nplayermodel_loadfav “預設名稱” +EPS.Favorites.AddNewFavorite=添加新的預設 +EPS.Favorites.ReplaceSelected=覆蓋選中的預設 +EPS.Favorites.DeleteAllSelected=刪除所有選中的預設 + +# Bodygroups Sheet +EPS.Bodygroups=身體組件 + +EPS.Handgroups=手臂組件 + +EPS.Skin=皮膚 + +EPS.Flexes=表情 +EPS.Notes=注意:\n-表情在模型預覽中無法正常顯示。但是當你套用模型之後,表情在人物模型上是可見的。\n- 提供的預設值可能不正確,並導致面部扭曲。\n- 除了斷開連接之外,沒有辦法重置(或修復)表情操作。 + +# Colors Sheet +EPS.Colors=顏色 +EPS.Colors.PlayerColor=玩家顏色 +EPS.Colors.PhysgunColor=物理槍顏色 +EPS.Colors.ResetToDefault=恢復至預設值 + +# Settings Sheet +EPS.Settings=設定 +EPS.Settings.Client=用戶端 +EPS.Settings.Client.EnforcePM=強制使用選中模型 +EPS.Settings.Client.EnforcePM.Desc=如果啟用,你選中的玩家模型將會被鎖定。無法被其他插件更改。 +EPS.Settings.Client.PlayerColorBG=使用玩家顏色作爲背景色 +EPS.Settings.Client.PlayerColorBG.Desc=如果啟用,背景顏色將會使用你設定的玩家顏色。如果禁用,背景將會變成灰色。 +EPS.Settings.Client.TransparentBG=透明背景 +EPS.Settings.Client.TransparentBG.Desc=如果啟用,菜單背景將會變得透明。如果禁用,背景將會變得不透明。 +EPS.Settings.Client.HideDefaultPMs=Hide Default Playermodels +EPS.Settings.Client.HideDefaultPMs.Desc=If enabled, the default playermodels will be hidden. Requires reopening the window. +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs=Ignore c_hands only "playermodels" in main list +EPS.Settings.Client.IgnoreC_ArmsOnlyPMs.Desc=If enabled, "playermodels" that are nothing but floating pair of hands will be not shown in list of available playermodels. Disable to see all registered playermodels. +EPS.Settings.Client.ShowFlexes=顯示錶情選項卡 +EPS.Settings.Client.ShowFlexes.Desc=這允許你更改玩家模型的表情。但是,表情系統並非專門爲人物模型設計的,因此會產生問題。問題包括:\n- 眨眼功能將會失效\n- 除非手動更正面部表情,否則面部可能會扭曲。\n- 可能會徹底損壞不兼容的玩家模型的面部。\n- 即使將所有表情設定爲預設值,引擎仍將表情設定爲更改後的表情。有問題的模型不會被修復。\n你必須切換模型一次,才能顯示選項卡! +EPS.Settings.Client.RebuildIcon=重新加載圖標 +EPS.Settings.Client.RebuildIcon.Desc=強制重新渲染所有玩家模型圖標。對於模型更新後的過期圖標很有用。這可能需要一些時間,渲染速度取決於你的模型數量和電腦性能。 + +EPS.Settings.Server=伺服器端 +EPS.Settings.Server.EnablePMEnforcement=啟用玩家模型鎖定 +EPS.Settings.Server.EnablePMEnforcement.Desc=如果啟用,將強制使用和保護選定的玩家模型。沒有任何遊戲模式、地圖或插件可以更改它們。玩家可以使用菜單頂部的複選框單獨切換此功能。\n如果禁用,則只有手動按鈕在沙盒模式以外可用。 +EPS.Settings.Server.AllowInstantChanges=允許立即更改模型 +EPS.Settings.Server.AllowInstantChanges.Desc=如果啟用,玩家不需要重生就可以立即更改模型。 +EPS.Settings.Server.AllowFlexes=允許玩家改變表情 +EPS.Settings.Server.AllowFlexes.Desc=如果啟用,玩家可以更改其玩家模型的表情。這將破壞玩家眨眼功能,並可能導致其他問題。風險自負。玩家只能通過斷開連接來重置表情。 +EPS.Settings.Server.EnableInAllGM=在所有遊戲模式中啟用模型選擇器 +EPS.Settings.Server.EnableInAllGM.Desc=如果啟用,玩家模型選擇器將對任何遊戲模式下的所有玩家可用。如果禁用,則只有管理員可以在沙盒之外的模式使用它。 +EPS.Settings.Server.RequestLimit=時間限制 +EPS.Settings.Server.RequestLimit.Desc=時間限制:玩家在再次使用即時更改功能之前必須等待的秒數。設定爲 0 禁用。 + +EPS.Settings.GM_Blacklist=遊戲模式黑名單 +EPS.Settings.GM_Blacklist.ExistedGM=已加入黑名單的遊戲模式 +EPS.Settings.GM_Blacklist.Desc=在這裏你可以把不兼容的遊戲模式加入黑名單。\n\n無論其他設定如何,玩家(包括管理員)都不能在這些遊戲模式下更改其玩家模型。 +EPS.Settings.GM_Blacklist.AddCurrent=添加當前遊戲模式至黑名單 +EPS.Settings.GM_Blacklist.ManuallyAddGM=手動添加遊戲模式 +EPS.Settings.GM_Blacklist.RemoveSelected=移除選中游戲模式 + +EPS.Settings.VOX=語音包 +EPS.Settings.VOX.PlayerModel=玩家模型 +EPS.Settings.VOX.Assigned=設定的語音包 +EPS.Settings.VOX.AvailableVOX=可用的語音包 +EPS.Settings.VOX.AssignToCurrent=爲選中的玩家模型設定語音包 +EPS.Settings.VOX.RemoveSelected=移除選中的設定 + +EPS.Settings.Info=訊息