Initial commit

This commit is contained in:
2026-03-15 14:54:49 +03:00
commit 64f8029c06
4027 changed files with 254888 additions and 0 deletions

View File

@@ -0,0 +1,90 @@
-- ┏━┓┏━┳━━━┳━━━┓───────────────────────
-- ┃┃┗┛┃┃┏━┓┣┓┏┓┃───────────────────────
-- ┃┏┓┏┓┃┗━━┓┃┃┃┃──By MacTavish <3──────
-- ┃┃┃┃┃┣━━┓┃┃┃┃┃───────────────────────
-- ┃┃┃┃┃┃┗━┛┣┛┗┛┃───────────────────────
-- ┗┛┗┛┗┻━━━┻━━━┛───────────────────────
-- MIT License
-- Copyright (c) 2021 Ayden Mactavish
-- Permission is hereby granted, free of charge, to any person obtaining a copy
-- of this software and associated documentation files (the "Software"), to deal
-- in the Software without restriction, including without limitation the rights
-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-- copies of the Software, and to permit persons to whom the Software is
-- furnished to do so, subject to the following conditions:
-- The above copyright notice and this permission notice shall be included in all
-- copies or substantial portions of the Software.
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-- SOFTWARE.
if MSD and MSD.Version ~= "1.0.3" then MsgC( Color(255, 8, 0), "[MSD] Another version of MSD detacted\n" ) return end
MSD = {}
MSD.Version = "1.0.3"
MSD.Config = {}
MSD.Modules = {}
MSD.ModuleIds = {}
MSD.Language = {}
if SERVER then
util.AddNetworkString( "MSD.GetConfigData" )
util.AddNetworkString( "MSD.SaveConfig" )
end
function MSD.Load()
MsgC( Color(174, 0, 255), "[MSD] Initialization started\n" )
if !file.Exists("msd_data", "DATA") then
file.CreateDir("msd_data")
MsgC( Color(174, 0, 255), "[MSD] Server DATA Dir created \n" )
end
MsgC( Color(174, 0, 255), "[MSD] Initialization started\n" )
if SERVER then
include("msd/sh_config.lua")
include("msd/sh_language.lua")
AddCSLuaFile("msd/sh_config.lua")
AddCSLuaFile("msd/sh_language.lua")
local f = file.Find( "msd/ui/*", "LUA" )
for k,v in ipairs( f ) do
AddCSLuaFile( "msd/ui/" .. v )
end
else
include("msd/sh_config.lua")
include("msd/sh_language.lua")
local f = file.Find( "msd/ui/*", "LUA" )
for k,v in ipairs( f ) do
include( "msd/ui/" .. v )
end
list.Set( "DesktopWindows", "MSDModulesSetup", {
title = "Setup Menu",
icon = "msd/macnco.png",
width = 960,
height = 700,
onewindow = true,
init = function( icon, window )
window:Close()
icon.Window = MSD.OpenMenuManager(g_ContextMenu)
end
} )
end
MsgC( Color(174, 0, 255), "[MSD] Initialization done\n" )
end
MSD.Load()

View File

@@ -0,0 +1,369 @@
MSD.Language["de"] = {
-- UI
lang_name = "Deutsch",
ok = "OK",
map = "Karte",
off = "Aus",
on = "An",
time_add = "Zeit zum Hinzufügen",
type = "Typ",
delay = "Verzögerung",
cancel = "Abbrechen",
enable = "Aktivieren",
model = "Model",
name = "Name",
settings = "Einstellungen",
editor = "Editor",
red = "Rot",
green = "Grün",
blue = "Blau",
admin_menu = "Administrationsmenü",
ui_settings = "UI Einstellungen",
active = "Aktiv",
inactive = "Inaktiv",
disabled = "Deaktiviert",
warning = "Warnung!",
remove = "Entfernen",
theme = "Theme",
dark_theme = "Dunkles Theme",
payment = "Zahlung",
load_autosave = "Letzte automatische Speicherung laden?",
load_save = "Speicherung laden",
create_new = "Neu erstellen",
enable_option = "Option aktivieren",
main_opt = "Hauptoptionen",
copy_data = "Kopiere Daten",
save_chng = "Speichere Änderungen",
enter_name = "Gib den Namen ein",
enter_id = "Gib die ID ein",
confirm_action = "Bitte bestätige deine Aktion",
check_fpr_errors = "Auf Fehler prüfen",
enter_description = "Gib die Beschreibung ein",
cooldown_ok = "Abklingzeit bei Erfolg",
cooldown_fail = "Abklingzeit bei Fehlschlag",
s_team_whitelist = "Team-Whitelist einrichten",
whitelist_blacklist = "Die Whitelist als Blacklist benutzen",
custom_val = "Setze spezifischen Wert",
set_hp_full = "Setze volle HP",
dist_to_close = "Distanz zum nächsten",
e_text = "Text eingeben",
e_number = "Nummer eingeben",
e_class = "Klasse eingeben",
e_value = "Wert eingeben",
e_blank_dis = "Leer lassen, um es zu deaktiveren",
e_blank_default = "Leer lassen, um Standard zu benutzen",
e_url = "URL eingeben",
e_model = "Modelpfad eingeben",
e_material = "Materialpfad eingeben",
e_wep_class = "Waffenklasse eingeben",
e_ent_class = "Entityklasse eingeben",
e_veh_class = "Fahrzeugklasse eingeben",
e_npc_class = "NPC-Klasse eingeben",
select_ammo = "Ausgewählte Munition",
amount_ammo = "Munitionsmenge",
disable_phys = "Physik deaktivieren",
none = "Nichts",
custom_icon = "Setzte eigenes Icon",
weapon_name = "Waffenname",
moveup = "Aufwärts bewegen",
movedown = "Abwärts bewegen",
movepoint = "Punkt bewegen",
swap = "Tauschen",
swapmod = "Tausch-Modus aktiviert. Klicke zum Deaktivieren",
copy_from_ent = "Kopiere vom Entity",
set_pos_self = "Zu deiner Position setzen",
set_pos_aim = "Zu anvisiertem Punkt setzen",
spawn_point = "Spawnpunkt",
spawn_ang = "Spawnwinkel",
mark_area = "Markiere Bereich",
time_wait = "Zeit zum Warten",
map_marker = "Wähle Map-Makierung aus",
in_sec = "in Sekunden",
def_units = "Standard %s Einheiten", -- "Default 350 units" leave %s as is
def_seconds = "Standard %s Sekunden", -- "Default 10 seconds" leave %s as is
ent_show_pointer = "Zeiger über dem Entity anzeigen",
ent_arcade_style = "Erscheinungsbild des Entitys im Arcade-Stil",
ent_stnd_style = "Standard Entity Erscheinungsbild",
custom_color = "Aktiviere eigene Farbe",
mat_default = "Leer lassen für Standardmaterial",
set_ui = "UI Einstellungen",
set_hud = "HUD Einstellungen",
set_hud_pos = "Quest HUD Position",
set_hud_themes = "HUD Themes",
set_server = "Server Einstellungen",
set_ui_blur = "Unscharfer Hintergrund",
set_ui_mono = "Einfarbiger Hintergrund",
set_ui_vignette = "Vignetteneffekt für den Hintergrund",
set_ui_brightness = "Helligkeit des Hintergrunds",
set_ui_color = "Wähle die Hauptfarbe",
set_ui_align_left = "Horizontale Ausrichtung nach links",
set_ui_align_right = "Horizontale Ausrichtung nach rechts",
set_ui_align_top = "Vertikale Ausrichtung nach oben",
set_ui_align_bottom = "Vertikale Ausrichtung nach unten",
set_ui_offset_h = "Horizontaler Versatz",
set_ui_offset_v = "Vertikaler Versatz",
upl_changes = "Änderungen auf den Server hochladen",
res_changes = "Änderungen wiederherstellen",
-- Player
dead = "Du bist tot",
time_ex = "Zeit abgelaufen",
vehicle_bum = "Dein Fahrzeug wurde zerstört",
left_area = "Du hast den Bereich verlassen",
m_blew = "Du hast die Mission gesprengt",
m_failed = "Mission fehlgeschlagen",
m_success = "Mission erfolgreich",
m_loop = "Mission aktualisieren",
-- Errors
inv_quest = "Ungültige Quest",
team_bl = "Dein Team ist auf der Blacklist",
no_players = "Der Server benötigt mehr Spieler, die gleichzeitig online sind, bevor du fortfahren kannst.",
no_players_team = "Der Server benötigt mehr Spieler, die gleichzeitig in spezifischen Teams online sind, bevor du fortfahren kannst.",
need_admin = "Nur Admins können diese Aktion durchführen",
-- Quests
active_quest = "Du hast eine aktive Quest",
inactive_quest = "Du kannst diese Quest nicht spielen",
quest_editor = "Quest Editor",
quest_list = "Quest Liste",
quests = "Quests",
leave_pnt = "Punkt zum Verlassen",
q_editobj = "Objekte bearbeiten",
q_incvobj = "Ungültige Objekte",
q_setobj = "Objekt Einstellungen",
q_newobj = "Neues Objekt hinzufügen",
q_editrwd = "Belohnungen bearbeiten",
q_rwdeditor = "Belohnungs Editor",
q_rwdlist = "Belohnungsliste",
q_rwdsets = "Belohnungseinstellungen",
q_findmap = "Quests aus anderen Maps suchen",
q_obj_des = "Objekt Beschreibung",
q_dist_point = "Distanz zum Punkt",
q_dist_from_point = "Distanz vom Punkt",
q_ignore_veh = "Quest Fahrzeug ignorieren",
q_timer_show = "Dem Spieler einen Timer anzeigen",
q_area_stay = "Der Spieler muss im Bereich bleiben",
q_start = "Quest starten",
q_new = "Neue Quest",
q_submit = "Quest abschicken",
q_addnew = "Neue Quest hinzufügen",
q_remove = "Quest entfernen",
q_id_unique = "Die ID muss für jede Quest einzigartig sein",
q_complete_msg = "Nachricht für fertiggestellte Quest",
q_dotime = "Nachricht für fertiggestellte Quest",
q_dotime_ok = "Schließe die Quest am Ende der Zeit ab",
q_dotime_fail = "Scheitere an der Quest am Ende der Zeit",
q_death_fail = "Scheitere die Quest beim Tod des Spielers",
q_loop = "Schleifenaufgaben Quest",
q_loop_reward = "Belohne Spieler bei jeder Wiederholung",
q_enable = "Aktiviere Quest",
q_events = "Events",
q_eventadd = "Event hinzufügen",
q_eventedit = "Event bearbeiten",
q_eventremove = "Event entfernen",
q_in_progress = "Quest in Bearbeitung",
q_time_left = "Verbleibende Zeit",
q_ply_limit = "Spielerlimit für die Quest",
q_ply_team_limit = "Teamlimit einrichten",
q_ply_team_need = "Benötigte Spieler im Team",
q_ply_need = "Zum Starten benötigte Anzahl der Spieler",
q_play_limit = "Es gibt ein Limit wie viele Spieler diese Quest spielen können",
q_must_stay_area = "Du musst in diesem Bereich bleiben, oder die Quest wird fehlgeschlagen",
q_time_wait = "Du musst warten bevor du die Quest wiederholen kannst",
q_dotime_reset = "Zeit für die Quest zurücksetzen",
q_dotime_add = "Zeit zur Quest hinzufügen",
q_noreplay = "Du kannst diese Quest nicht wiederholen",
q_dis_replay = "Wiederholung der Quest deaktivieren",
q_needquest = "Du musst zuerst eine andere Quest abschließen",
q_needquest_menu = "Benötigt abgeschlossene Quest",
q_enterror = "Quest Entities sind nicht gespawnt, überprüfe die Einrichtung der Quest",
q_get = "Du kannst eine Quest von diesen NPCs erhalten",
q_noquests = "Es gibt noch keine Möglichkeit Quests zu spielen :(",
q_ent_draw = "Quest Entity Drawdistanz",
q_loop_stop_key = "Schleifenquest Stoptaste",
q_hold_key_stop = "Um die Quest zu stoppen, halte [%s]", -- To stop quest hold [P]
q_enter_veh = "Steig in dein Fahrzeug ein",
q_npc_link = "Verlinke Quest zu einem NPC",
q_icon68 = "Gib eine URL zu einem .PNG Bild mit 68x68px ein",
q_ent_pos_show = "Zeige dem Spieler die Positionen der Entities",
q_area_size = "Größe des Bereichs",
q_area_pos = "Position des Bereichs",
q_s_area_size = "Suche Größe des Bereichs",
q_s_area_pos = "Suche Position des Bereichs",
q_npc_answer_ok = "Positive Antwort des Spielers",
q_npc_answer_no = "Negative Antwort des Spielers",
q_npc_answer_noq = "Antwort des Spielers bei keiner Quest",
q_npc_quest_no = "NPC Sprache bei keiner Quest",
q_money_give = "Geld zum Geben",
-- Simple NPCs
npc_editor = "NPC ",
npc_new = "Neuer NPC",
npc_select = "Wähle einen NPC",
npc_e_speech = "Gib NPC Sprache ein",
npc_submit = "Bestätige NPC Erstellung",
npc_update = "Aktualisiere NPC",
npc_remove = "Entferne NPC",
npc_q_enable = "Aktiviere Quest NPCs",
npc_did_open = "Dialog ID zum Öffnen",
npc_q_target = "NPC ist ein objektives Ziel",
npc_hostile = "Feindlicher NPC",
-- Update 1.1.0
cam_start = "Startparameter der Kamera",
cam_end = "Kamera-Endparameter",
cam_pos = "Kamera Position",
cam_ang = "Kamera Winkel",
cam_fov = "Kamera-Sichtfeld",
cam_effect = "Kameraverschluss-Effekt",
q_open_target = "Erlaubt anderen Spielern NPCs zu töten",
q_npc_mind = "Mindest Distanz zu NPCs",
not_spawned = "nicht gespawnt",
dis_text = "Angezeigter Text",
cam_speed = "Kamerabewegungsgeschwindigkeit (niedrigere Zahl - langsamere Bewegung)",
fov_speed = "FOV-Wechselgeschwindigkeit (niedrigere Zahl - langsamere Bewegung)",
category_des = "Questkategorie, wird verwendet, um Quests zu sortieren",
sortquests_cat = "Quests nach Kategorie sortieren",
search_q = "Suche nach Quests",
quest_tools = "Quest Tools",
set_anim = "Animation einstellen",
s_quest_blacklist = "Quest-Blacklist einrichten",
s_quest_blacklist_desc = "Wählen Sie Quests aus, die diese Quest blockieren, wenn Sie sie gespielt haben",
hold_use = "Halten sie [%s] gedrückt",
duplicate = "Duplizieren",
unsorted = "Unsortiert",
search = "Suche",
duration = "Dauer",
category = "Kategorie",
blacklist = "Blacklist",
-- Update 1.2.0
restore_wep = "Stellen Sie Waffen am Questende wieder her",
e_cmd = "Geben sie eine Konsolen Kommand ein",
e_args = "Enter command arguments",
hint_cmd = "Verknüpfungen zum automatischen Ausfüllen: \n$uid - UserID, \n$sid - SteamID, \n$s64 - SteamID 64, \n$n - Spielername",
youaretracked = "Deine Positon ist nun für alle Sichtbar.",
border_rounded = "Abgerundetes Border desgin",
border_square = "Quadrat border design",
access_settings = "Menüzugriff",
compact_obj = "Kompakte Zielliste für Quests",
e_usergroup = "Benutzergruppe eingeben",
ug_isanadmin = "Diese Benutzergruppe hat bereits vollen Zugriff",
find_player_id32 = "Finde Spielerdaten nach SteamID 32",
user_data = "Benutzerdaten-Editor",
access_editors = "Zugriff für Quest-Editoren festlegen",
access_admins = "Vollzugriff einstellen",
add_usergroup = "Benutzergruppe hinzufügen",
edit_objmod = "Zielreihenfolge bearbeiten",
editmod = "Bearbeitungsmodus",
move = "Bewegen",
q_errorloop = "Quest in einer Endlosschleife eingegeben",
q_cooldow_perply = "Öffentlicher Cooldown-Timer",
q_cooldow_publick = "Abklingzeit pro Spieler",
q_stop_anytime = "Erlaube, die Quest manuell abzubrechen",
quest_abandon = "Du hast die Quest abgebrochen",
q_dotime_set = "Quest-Erledigungszeit einstellen",
-- Ranks
enter_path_or_url = "Geben sie einen Pfad oder eine URL ein",
rank_edit = "Rang einstellen",
rank_list = "Rang Liste",
group_list = "Gruppen Liste",
group_addnew = "Eine neue Gruppe hinzufügen",
blank = "Leer",
mrs_show_all = "Ränge allen Spielern anzeigen",
mrs_show_team = "Ränge nur der Gruppe anzeigen",
mrs_use_sn = "Kurze Rangnamen anzeigen",
use_url = "URL verwenden",
enter_srt_name = "Kurznamen eingeben",
srt_name = "Kurzbezeichnung",
mrs_prom_demote = "Die nächsten 2 Optionen betreffen nur niedrigere Ränge. Spieler mit diesem Rang können keine anderen Spieler auf höhere Ränge oder den gleichen Rang befördern.",
mrs_whilelist = "Wenn Sie eine Ranganforderung für einen Job auswählen, kann der Spieler diesen Job nur spielen, wenn sein Rang dem gewählten Rang entspricht oder höher ist.",
can_promote = "Kann den Spielerrang erhöhen",
can_demote = "Kann den Spielerrang zurückstufen",
edit_player_model = "Benutzerdefiniertes Spielermodell bearbeiten",
enable_player_model = "Benutzerdefiniertes Spielermodell aktivieren",
disable_player_model = "Benutzerdefiniertes Spielermodell deaktivieren",
edit_custom_stats = "Benutzerdefinierte Spielerstatistiken bearbeiten",
autoprom = "Automatische Beförderung zum nächsten Rang",
in_min = "in Minuten",
mrs_promoted = "Sie sind befördert worden",
mrs_demoted = "Sie sind degradiert worden",
mrs_job_smallrank = "Du musst %s oder höher sein, um als %s zu spielen", -- You must be Sergeant II or higher to play as Watch Commander
show_group = "Ranggruppenname anzeigen",
hide_rank = "Nur Rangsymbol anzeigen",
mrs_hud_follow = "Drehen der Benutzeroberfläche um den Spieler je nach Blickwinkel",
set_overhead = "Spieler-Info UI",
offline_users = "Offline-Benutzer",
mrs_noranks = "Ihr derzeitiger Arbeitsplatz hat keine Dienstgrade",
mrs_nopower = "Ihr aktueller Rang hat keine zusätzlichen Berechtigungen",
promotion = "Beförderung",
on_duty = "Im Dienst",
other_players = "Andere Spieler",
mrs_change_jobname = "Jobname in den Rangnamen ändern",
mrs_set_prefix = "Fügen Sie den Namen des Dienstgrads als Präfix zum Jobnamen hinzu.",
copy_all_data = "Alle Daten kopieren",
copy_only_stats = "Nur Statistiken und Spielermodell kopieren",
}
-- Other phrases
local lng = "de"
MSD.Language[lng]["Move to point"] = "Zum Punkt bewegen"
MSD.Language[lng]["Leave area"] = "Verlasse Bereich"
MSD.Language[lng]["Kill NPC"] = "Töte NPC"
MSD.Language[lng]["Collect quest ents"] = "Sammle Quest Gegenstände"
MSD.Language[lng]["Talk to NPC"] = "Spreche mit dem NPC"
MSD.Language[lng]["There is no quests avalible"] = "Es sind keine Quests verfügbar"
MSD.Language[lng]["Give weapon"] = "Gebe Waffe"
MSD.Language[lng]["Give ammo"] = "Gebe Munition"
MSD.Language[lng]["Strip Weapon"] = "Nehme Waffe weg"
MSD.Language[lng]["Spawn quest entity"] = "Spawne Quest Gegenstand"
MSD.Language[lng]["Spawn entity"] = "Spawne Gegenstand"
MSD.Language[lng]["Spawn npc"] = "Spawne NPC"
MSD.Language[lng]["Manage do time"] = "Verwalte Do-Zeit"
MSD.Language[lng]["Spawn vehicle"] = "Spawne Fahrzeug"
MSD.Language[lng]["Remove vehicle"] = "Entferne Fahrzeug"
MSD.Language[lng]["Remove all entites"] = "Entferne alle Gegenstände"
MSD.Language[lng]["Set HP"] = "Setze HP"
MSD.Language[lng]["Set Armor"] = "Setze Rüstung"
MSD.Language[lng]["DarkRP Money"] = "DarkRP Geld"
MSD.Language[lng]["Quest NPCs are disabled"] = "Quest NPCs sind deaktiviert"
MSD.Language[lng]["You can enable them in settings"] = "Du kannst sie in den Einstellungen aktivieren"
MSD.Language[lng]["Wait time"] = "Wartezeit"

View File

@@ -0,0 +1,390 @@
MSD.Language["en"] = {
lang_name = "English",
ok = "OK",
map = "Map",
off = "Off",
on = "On",
time_add = "Time to add",
type = "Type",
delay = "Delay",
cancel = "Cancel",
enable = "Enable",
model = "Model",
name = "Name",
settings = "Settings",
editor = "Editor",
red = "Red",
green = "Green",
blue = "Blue",
admin_menu = "Administration menu",
ui_settings = "UI Settings",
active = "Active",
inactive = "Inactive",
disabled = "Disabled",
warning = "Warning!",
remove = "Remove",
theme = "Theme",
dark_theme = "Dark theme",
payment = "Payment",
load_autosave = "Load last autosave?",
load_save = "Load save",
create_new = "Create new",
enable_option = "Enable option",
main_opt = "Main options",
copy_data = "Copy data",
save_chng = "Save changes",
enter_name = "Enter the name",
enter_id = "Enter the ID",
confirm_action = "Please confirm your actions",
check_fpr_errors = "Check for errors",
enter_description = "Enter description",
cooldown_ok = "Cooldown on success",
cooldown_fail = "Cooldown on fail",
s_team_whitelist = "Setup team whitelist",
whitelist_blacklist = "The whitelist is a blacklist",
custom_val = "Set custom value",
set_hp_full = "Set full HP",
dist_to_close = "Distance to closest",
e_text = "Enter text",
e_number = "Enter number",
e_class = "Enter class",
e_value = "Enter value",
e_blank_dis = "Leave blank to disable",
e_blank_default = "Leave blank to use default",
e_url = "Enter URL",
e_model = "Enter model path",
e_material = "Enter material path",
e_wep_class = "Enter weapon class",
e_ent_class = "Enter entity class",
e_veh_class = "Enter vehicle class",
e_npc_class = "Enter NPC class",
select_ammo = "Selected ammo",
amount_ammo = "Ammo amount",
disable_phys = "Disable physics",
none = "None",
custom_icon = "Set custom icon",
weapon_name = "Weapon name",
moveup = "Move up",
movedown = "Move down",
movepoint = "Move point",
swap = "Swap",
swapmod = "Swap mod enabled. Click to disable",
copy_from_ent = "Copy from looking entity",
set_pos_self = "Set to your position",
set_pos_aim = "Set to looking poit",
spawn_point = "Spawn point",
spawn_ang = "Spawn angle",
mark_area = "Mark area",
time_wait = "Time to wait",
map_marker = "Select map marker",
in_sec = "in seconds",
def_units = "Default %s units", -- "Default 350 units" leave %s as is
def_seconds = "Default %s seconds", -- "Default 10 seconds" leave %s as is
ent_show_pointer = "Show pointer above the entity",
ent_arcade_style = "Arcade-style entity appearance",
ent_stnd_style = "Standart entity appearance",
custom_color = "Enable custom color",
mat_default = "Leave blank for default material",
set_ui = "UI settings",
set_hud = "HUD settings",
set_hud_pos = "Quest HUD position",
set_hud_themes = "HUD Themes",
set_server = "Server settings",
set_ui_blur = "Blur background",
set_ui_mono = "Monochrome background",
set_ui_vignette = "Vignette effect for background",
set_ui_brightness = "Background brightness",
set_ui_color = "Select the main color",
set_ui_align_left = "Horizontal alignment to the left",
set_ui_align_right = "Horizontal alignment to the right",
set_ui_align_top = "Vertical alignment to the top",
set_ui_align_bottom = "Vertical alignment to the bottom",
set_ui_offset_h = "Horizontal Offset",
set_ui_offset_v = "Vertical Offset",
upl_changes = "Upload changes to server",
res_changes = "Restore changes",
-- Player
dead = "You are dead",
time_ex = "Time expired",
vehicle_bum = "Your vehicle is destroyed",
left_area = "You left the area",
m_blew = "You blew up the mission",
m_failed = "Mission failed",
m_success = "Mission success",
m_loop = "Mission update",
-- Errors
inv_quest = "Invalid quest",
team_bl = "Your team is blacklisted",
no_players = "Server needs more players to be online before you can do this",
no_players_team = "Server needs more players for specific team(s) to be online before you can do this",
need_admin = "Only admins can do this action",
-- Quests
active_quest = "You have an active quest",
inactive_quest = "You can't play this quest",
quest_editor = "Quest Editor",
quest_list = "Quest List",
quests = "Quests",
leave_pnt = "Leave point",
q_editobj = "Edit objectives",
q_incvobj = "Invalid objective",
q_setobj = "Objective settings",
q_newobj = "Add new objective",
q_editrwd = "Edit rewards",
q_rwdeditor = "Reward Editor",
q_rwdlist = "Reward List",
q_rwdsets = "Reward Settings",
q_findmap = "Find quest from other maps",
q_obj_des = "Objecive description",
q_dist_point = "Distance to point",
q_dist_from_point = "Distance from point",
q_ignore_veh = "Ignore quest vehicle",
q_timer_show = "Show the timer to player",
q_area_stay = "Player must stay in area",
q_start = "Start Quest",
q_new = "New quest",
q_submit = "Submit quest",
q_addnew = "Add new quest",
q_remove = "Remove quest",
q_id_unique = "ID must be unique for each quest",
q_complete_msg = "Quest complete message",
q_dotime = "Quest do time",
q_dotime_ok = "Succeed quest on time end",
q_dotime_fail = "Fail quest on time end",
q_death_fail = "Fail quest on player death",
q_loop = "Loop quest tasks",
q_loop_reward = "Reward player on each loop",
q_enable = "Enable quest",
q_events = "Events",
q_eventadd = "Add Event",
q_eventedit = "event edit",
q_eventremove = "Remove event",
q_in_progress = "Quest in progress",
q_time_left = "Time left",
q_ply_limit = "Player limit for the quest",
q_ply_team_limit = "Setup team limits",
q_ply_team_need = "Needed team players",
q_ply_need = "Player amount needed to start",
q_play_limit = "There is a limit on how much players can play this quest",
q_must_stay_area = "You must stay inside this area, or quest will be failed",
q_time_wait = "You need to wait before replaying this quest",
q_dotime_reset = "Reset quest do time",
q_dotime_add = "Add quest do time",
q_noreplay = "You can't replay this quest",
q_dis_replay = "Disable quest replay",
q_needquest = "You need to finish another quest first",
q_needquest_menu = "Require completed quest",
q_enterror = "Quest entities didn't spawn, check quest setup",
q_get = "You can get a quest from these NPCs",
q_noquests = "There is no way to play quests yet :(",
q_ent_draw = "Quest entity draw distance",
q_loop_stop_key = "Looped quest stop key",
q_hold_key_stop = "To stop quest hold [%s]", -- To stop quest hold [P]
q_enter_veh = "Enter your vehicle",
q_npc_link = "Link quest to an NPC",
q_icon68 = "Enter url to .PNG icon 68x68 px",
q_ent_pos_show = "Show entities location to the player",
q_area_size = "Area size",
q_area_pos = "Area postition",
q_s_area_size = "Search area size",
q_s_area_pos = "Search area postition",
q_npc_answer_ok = "Player's positive answer",
q_npc_answer_no = "Player's negative answer",
q_npc_answer_noq = "Player's answer if no quests",
q_npc_quest_no = "NPC speech if no quests",
q_money_give = "Money to give",
-- Simple NPCs
npc_editor = "NPC Editor",
npc_new = "New NPC",
npc_select = "Select an NPC",
npc_e_speech = "Enter NPC speech",
npc_submit = "Confirm NPC creation",
npc_update = "Update NPC",
npc_remove = "Remove NPC",
npc_q_enable = "Enable quest NPCs",
npc_did_open = "Dialog ID to open",
npc_q_target = "NPC is an objective target",
npc_hostile = "Hostile NPC",
-- Update 1.1.0
cam_start = "Camera start parameters",
cam_end = "Camera end parameters",
cam_pos = "Camera position",
cam_ang = "Camera angle",
cam_fov = "Camera FOV",
cam_effect = "Camera shutter effect",
q_open_target = "Allow other players to kill NPCs",
q_npc_mind = "Min. distance to NPCs",
not_spawned = "not spawned",
dis_text = "Displayed text",
cam_speed = "Camera movement speed (lower number - slower movement)",
fov_speed = "FOV change speed (lower number - slower movement)",
category_des = "Quest category, used to sort quests",
sortquests_cat = "Sort quests by category",
search_q = "Search quests",
quest_tools = "Quest tools",
set_anim = "Set Animation",
s_quest_blacklist = "Setup quest blacklist",
s_quest_blacklist_desc = "Select quests that will block this quest if you played them",
hold_use = "Hold [%s] key",
duplicate = "Duplicate",
unsorted = "Unsorted",
search = "Search",
duration = "Duration",
category = "Category",
blacklist = "Blacklist",
-- Update 1.2.0
restore_wep = "Restore weapons on quest end",
e_cmd = "Enter console command",
e_args = "Enter command arguments",
hint_cmd = "Autofill shortcuts: \n$uid - UserID, \n$sid - SteamID, \n$s64 - SteamID 64, \n$n - Player name",
youaretracked = "Your position is now compromised to other players!",
border_rounded = "Rounded border design",
border_square = "Square border design",
access_settings = "Menu access",
compact_obj = "Compact objective list for quests",
e_usergroup = "Enter user group",
ug_isanadmin = "This user group already has full access",
find_player_id32 = "Find player data by SteamID 32",
user_data = "User data editor",
access_editors = "Set quest editors access",
access_admins = "Set full access",
add_usergroup = "Add user group",
edit_objmod = "Edit objective order",
editmod = "Edit mode",
move = "Move",
q_errorloop = "Quest entered in an endless loop",
q_cooldow_perply = "Public cooldown timer",
q_cooldow_publick = "Per-Player cooldown timer",
q_stop_anytime = "Allow to abandon quest manually",
quest_abandon = "You abandoned the quest",
q_dotime_set = "Set quest do time",
-- Ranks
enter_path_or_url = "Enter path or url",
rank_edit = "Ranks setup",
rank_list = "Ranks list",
group_list = "Group list",
group_addnew = "Add new group",
blank = "Blank",
mrs_show_all = "Show ranks to all players",
mrs_show_team = "Show ranks only to the group",
mrs_use_sn = "Display short rank names",
use_url = "Use URL",
enter_srt_name = "Enter short name",
srt_name = "Short name",
mrs_prom_demote = "The next 2 options affect only lower ranks. Players with this rank will not be able to promote other players to higher ranks or the same rank.",
mrs_whilelist = "If you select rank requirement for a job, the player will be able to play this job only if his rank matches the chosen one or higher.",
can_promote = "Can promote player rank",
can_demote = "Can demote player rank",
edit_player_model = "Edit custom player model",
enable_player_model = "Enable custom player model",
disable_player_model = "Disable custom player model",
edit_custom_stats = "Edit custom player stats",
autoprom = "Auto promote to next rank",
in_min = "in minutes",
mrs_promoted = "You have been promoted",
mrs_demoted = "You have been demoted",
mrs_job_smallrank = "You must be %s or higher to play as %s", -- You must be Sergeant II or higher to play as Watch Commander
show_group = "Display rank group name",
hide_rank = "Display only rank icon",
mrs_hud_follow = "Rotate UI around player depending on view angle",
set_overhead = "Player info UI",
offline_users = "Offline users",
mrs_noranks = "Your current job has no ranks",
mrs_nopower = "Your current rank has no extra permissions",
promotion = "Promotion",
on_duty = "On Duty",
other_players = "Other players",
mrs_change_jobname = "Change job name to the rank name",
mrs_set_prefix = "Add the rank name as a prefix to the job name",
copy_all_data = "Copy all data",
copy_only_stats = "Copy only stats and player model",
mrs_change_plyname = "Change player name to the rank name",
mrs_set_prefix_ply = "Add the rank name as a prefix to the player name",
promote_limit = "Promotion limitationn",
demote_limit = "Demotion limitation",
salary_value = "Salary value",
salary_set = "Set given value as a salary",
salary_add = "Add given value on top of salary",
salary_multiply = "Multiply salary by given value",
force_team = "Force change team to",
mrs_hud_3d2d = "Use 3D2D hud for players",
mrs_chat_command = "Chat command to open the Rank menu",
mrs_promote_command = "Chat command to promote a player",
mrs_demote_command = "Chat command to demote a player",
mqs_fix_cam = "Fix Cinematic Camera event (toggle only if needed)",
add_new_spawn = "Add new spawn point",
remove_all_spawn = "Remove all spawn point",
nolongertracked = "You are no longer tracked by other players",
target = "Target",
kill_player = "Kill Player",
kill_amount = "Amount of targets to kill",
into_quest = "Introduction quest",
into_quest_auto = "Force player to play introduction quest",
into_quest_start = "To strat quest hold [%s]",
set_ui_align_center = "Horizontal alignment to the center",
icon_size = "Icon size",
icon_right = "Icon alignment to the right",
font_size = "Font size",
rank_hide = "Do not display this rank on the HUD",
action_select = "Select an action",
action_set_rank = "Set rank to selected, only if current rank is lower",
action_set_rank_force = "Set rank to selected, anyway",
action_promote_rank = "Promote only by one rank, selected rank is maximum",
action_demote_rank = "Demote by one rank, selected rank is minimum",
rank = "Rank",
format = "Format",
file_list = "File list",
file_exist = "This save file is already exist",
show_team = "Display team name",
use_team_colors = "Use team colors"
}
-- Other phrases
local lng = "en"
MSD.Language[lng]["Move to point"] = "Move to point"
MSD.Language[lng]["Leave area"] = "Leave area"
MSD.Language[lng]["Kill NPC"] = "Kill NPC"
MSD.Language[lng]["Collect quest ents"] = "Collect quest ents"
MSD.Language[lng]["Talk to NPC"] = "Talk to NPC"
MSD.Language[lng]["There is no quests available"] = "There is no quests available"
MSD.Language[lng]["Give weapon"] = "Give weapon"
MSD.Language[lng]["Give ammo"] = "Give ammo"
MSD.Language[lng]["Strip Weapon"] = "Strip Weapon"
MSD.Language[lng]["Spawn quest entity"] = "Spawn quest entity"
MSD.Language[lng]["Spawn entity"] = "Spawn entity"
MSD.Language[lng]["Spawn npc"] = "Spawn npc"
MSD.Language[lng]["Manage do time"] = "Manage do time"
MSD.Language[lng]["Spawn vehicle"] = "Spawn vehicle"
MSD.Language[lng]["Remove vehicle"] = "Remove vehicle"
MSD.Language[lng]["Remove all entites"] = "Remove all entites"
MSD.Language[lng]["Set HP"] = "Set HP"
MSD.Language[lng]["Set Armor"] = "Set Armor"
MSD.Language[lng]["DarkRP Money"] = "DarkRP Money"
MSD.Language[lng]["Quest NPCs are disabled"] = "Quest NPCs are disabled"
MSD.Language[lng]["You can enable them in settings"] = "You can enable them in settings"

View File

@@ -0,0 +1,255 @@
MSD.Language["es"] = {
-- UI
lang_name = "Spanish",
ok = "OK",
map = "Mapa",
off = "Apagado",
on = "Encendido",
time_add = "Tiempo para agregar",
type = "Tipo",
delay = "Retraso",
cancel = "Cancelar",
enable = "Permitir",
model = "Modelo",
name = "Nombre",
settings = "Ajustes",
editor = "Editor",
red = "Rojo",
green = "Verde",
blue = "Azul",
admin_menu = "Menú de admin",
ui_settings = "Ajustes de interfaz",
active = "Activo",
inactive = "Inactivo",
disabled = "Deshabilitado",
warning = "Peligro",
remove = "Eliminar",
theme = "Tema",
dark_theme = "Tema oscuro",
payment = "Pago",
load_autosave = "Cargar el ultimo autoguardado?",
load_save = "Cargar guardado",
create_new = "Crear nuevo",
enable_option = "Permitir opción",
main_opt = "Opciones principales",
copy_data = "Copiar datos",
save_chng = "Guardar cambios",
enter_name = "Ingresar el nombre",
enter_id = "Ingresar el ID",
confirm_action = "Por favor confirma tus acciones",
check_fpr_errors = "Chequear errores",
enter_description = "Ingresar descripción",
cooldown_ok = "Enfriamiento en el éxito",
cooldown_fail = "Enfriamiento en caso de falla",
s_team_whitelist = "Configurar la lista blanca del equipo",
whitelist_blacklist = "La lista blanca es una lista negra",
custom_val = "Colocar valor personalizado",
set_hp_full = "Colocar todo el HP",
dist_to_close = "Distancia al más cercano",
e_text = "Ingresar texto",
e_number = "Ingresar número",
e_class = "Ingresar clase",
e_value = "Ingresar valor",
e_blank_dis = "Dejar en blanco para deshabilitar",
e_blank_default = "Dejar en blanco para usar por defecto",
e_url = "Ingresar URL",
e_model = "Ingresar ruta del modelo",
e_material = "Ingresar ruta del material",
e_wep_class = "Ingresar ruta de la arma",
e_ent_class = "Ingresar ruta de la entidad",
e_veh_class = "Ingresar ruta del vehículo",
e_npc_class = "Ingresar clase del NPC",
select_ammo = "Munición seleccionada",
amount_ammo = " Cantidad munición",
disable_phys = "Deshabilitar la física",
none = "Ninguno",
custom_icon = "Seleccionar icono personalizado",
weapon_name = "Nombre del arma",
moveup = "Mover hacia arriba",
movedown = "Mover hacia abajo",
movepoint = "Mover punto",
swap = "Intercambiar",
swapmod = "Intercambiar mod habilitado. Click para deshabilitar",
copy_from_ent = "Copiar de la entidad que mira",
set_pos_self = "Establecer en su posición",
set_pos_aim = "Establecer en el punto de mira",
spawn_point = "Spawnear punto",
spawn_ang = "Spawnear ángulo",
mark_area = "Marcar área",
time_wait = "Tiempo de espera",
map_marker = "Seleccionar punto del mapa",
in_sec = "En segundos",
def_units = "Default %s unidades", -- "350 unidades por defecto" leave %s as is
def_seconds = "Default %s segundos", -- "10 segundos por defecto" leave %s as is
ent_show_pointer = "Mostrar puntero sobre la entidad",
ent_arcade_style = "Apariencia de entidad de estilo arcade",
ent_stnd_style = "Apariencia de la entidad estándar",
custom_color = "Habilitar color personalizado",
mat_default = "Dejar en blanco para material por defecto",
set_ui = "Ajustes de la interfaz de usuario",
set_hud = "Ajustes del HUD",
set_hud_pos = "Posición HUD de las misiones",
set_hud_themes = "Temas del HUD",
set_server = "Ajustes de servidor",
set_ui_blur = "Desenfoque del fondo",
set_ui_mono = "Fondo monocromático",
set_ui_vignette = "Efecto de viñeta para el fondo",
set_ui_brightness = "Brillo de fondo",
set_ui_color = "Seleccionar el color principal",
set_ui_align_left = "Alineación vertical hacia la izquierda",
set_ui_align_right = "Alineación vertical hacia la derecha",
set_ui_align_top = "Alineación vertical hacia arriba",
set_ui_align_bottom = "Alineación vertical hasta la parte inferior",
set_ui_offset_h = "Compensación horizontal",
set_ui_offset_v = "Compensación vertical",
upl_changes = "Subir cambios al servidor",
res_changes = "Restablecer cambios",
-- Jugador
dead = "Estas muerto",
time_ex = "Tiempo expirado",
vehicle_bum = "Tu Vehículo esta destruido",
left_area = "Dejaste la zona",
m_blew = "You blew up the mission",
m_failed = "Misión fallida",
m_success = "Misión exitosa",
m_loop = "Actualización de la misión",
-- Errores
inv_quest = "Misión Invalida",
team_bl = "Tu equipo está en lista negra",
no_players = "El servidor necesita más jugadores conectados antes que puedas hacer esto",
no_players_team = "El servidor necesita más jugadores conectados para equipo(s) especifico(s)antes que puedas hacer esto",
need_admin = "Solo los administradores pueden realizar esta accion",
-- Misiones
active_quest = "Tienes una misión activa",
inactive_quest = "No puedes jugar esta misión",
quest_editor = "Editor de misiones",
quest_list = "Lista de misiones",
quests = "Misiones",
leave_pnt = "Dejar punto",
q_editobj = "Editar objetivos",
q_incvobj = "Objetivo invalido",
q_setobj = "Ajustes de objetivo",
q_newobj = "Añadir nuevo objetivo",
q_editrwd = "Editar recompensas",
q_rwdeditor = "Editor de recompensas",
q_rwdlist = "Lista de recompensas",
q_rwdsets = "Ajustes de recompensas",
q_findmap = "Encontrar misiones de otros mapas",
q_obj_des = "Descripción de objetivo",
q_dist_point = "Distancia al punto",
q_dist_from_point = "Distancia desde el punto",
q_ignore_veh = "Ignorar vehículo de misión",
q_timer_show = "Mostrar el temporizador al jugador",
q_area_stay = "El jugador debe quedarse en el area",
q_start = "Empezar Misión",
q_new = "Nueva misión",
q_submit = "Enviar misión",
q_addnew = "Añadir nueva misión",
q_remove = "Eliminar misión",
q_id_unique = "La ID debe ser única para cada misión",
q_complete_msg = "Mensaje de misión completada",
q_dotime = "Tiempo para hacer la misión",
q_dotime_ok = "Misión exitosa al finalizar el tiempo",
q_dotime_fail = "Falla la misión al finalizar el tiempo",
q_death_fail = "Falló la misión al morir el jugador",
q_loop = "Tareas de misiones en bucle",
q_loop_reward = "Recompensa al jugador en cada bucle",
q_enable = "Habilitar misión",
q_events = "Eventos",
q_eventadd = "Añadir Evento",
q_eventedit = "Editor de evento",
q_eventremove = "Eliminar evento",
q_in_progress = "Misión en progreso",
q_time_left = "Tiempo restante",
q_ply_limit = "Limite de jugadores para la misión",
q_ply_team_limit = "Configurar equipos limitados",
q_ply_team_need = "Jugadores de equipo necesarios",
q_ply_need = "Cantidad de jugadores necesarios para comenzar",
q_play_limit = "Hay un límite en cuantos jugadores pueden jugar esta misión",
q_must_stay_area = "Debes permanecer dentro de esta área, o la misión fallara",
q_time_wait = "Debes esperar antes de repetir esta misión",
q_dotime_reset = "Restablecer el tiempo de realización de la misión",
q_dotime_add = "Añadir tiempo para hacer la misión",
q_noreplay = "No puedes re jugar esta misión",
q_dis_replay = "Des habilitar repetición de la misión",
q_needquest = "Debes completar otra misión primero",
q_needquest_menu = "Requiere misión completada",
q_enterror = "Entidades de misión no spawnean, chequear configuración de misión",
q_get = "Puedes obtener una misión de estos NPCS",
q_noquests = "Todavía no hay forma de jugar las misiones :(",
q_ent_draw = "Distancia del dibujo de la entidad",
q_loop_stop_key = "Tecla para detener misión en bucle",
q_hold_key_stop = "Para detener la misión, mantenga [%s]", -- Para detener la mision mantenga apretado [P]
q_enter_veh = "Entrar a tu vehículo",
q_npc_link = "Linquear misión a un NPC",
q_icon68 = "Ingresar url a un icono .PNG de 68x68 px",
q_ent_pos_show = "Mostrar locación de entidades al jugador",
q_area_size = "Tamaño de área",
q_area_pos = "Posición de área",
q_s_area_size = "Buscar tamaño de área",
q_s_area_pos = "Buscar posición de área",
q_npc_answer_ok = "Respuesta positiva del jugador",
q_npc_answer_no = "Respuesta negativa del jugador",
q_npc_answer_noq = "Respuesta del jugador si no hay misiones",
q_npc_quest_no = "Discurso del NPC si no hay misiones",
q_money_give = "Dinero para dar",
-- Simple NPCs
npc_editor = "Editor de NPC",
npc_new = "Nuevo NPC",
npc_select = "Seleccionar un NPC",
npc_e_speech = " Ingresar el discurso del NPC",
npc_submit = "Confirmar creación del NPC",
npc_update = "Actualizar NPC",
npc_remove = "Eliminar NPC",
npc_q_enable = "Habilitar misiones de NPCs",
npc_did_open = "ID de dialogo para abrir",
npc_q_target = "NPC is an objective target",
npc_hostile = "NPC Hostil",
}
-- Otras frases
local es = "es"
MSD.Language[es]["Move to point"] = "Mover al punto"
MSD.Language[es]["Leave area"] = "Dejar área"
MSD.Language[es]["Kill NPC"] = "Matar NPC"
MSD.Language[es]["Collect quest ents"] = "Recoger misiones"
MSD.Language[es]["Talk to NPC"] = "Hablar al NPC"
MSD.Language[es]["No hay misiones disponibles"] = "No hay misiones disponibles"
MSD.Language[es]["Give weapon"] = "Dar arma"
MSD.Language[es]["Give ammo"] = "Dar munición"
MSD.Language[es]["Strip Weapon"] = "Extraer arma"
MSD.Language[es]["Spawn quest entity"] = "Spawnear entidad de misión"
MSD.Language[es]["Spawn entity"] = "Spawnear entidad"
MSD.Language[es]["Spawn npc"] = "Spawnear npc"
MSD.Language[es]["Manage do time"] = "Administrar el tiempo"
MSD.Language[es]["Spawn vehicle"] = "Spawnear vehículo"
MSD.Language[es]["Remove vehicle"] = "Elminar vehículo"
MSD.Language[es]["Remove all entites"] = "Remover todas las entidades"
MSD.Language[es]["Set HP"] = "Configurar HP"
MSD.Language[es]["Set Armor"] = "Configurar armadura"
MSD.Language[es]["DarkRP Money"] = " Dinero DarkRP"
MSD.Language[es]["Quest NPCs are disabled"] = "Los NPCs de las misiones están deshabilitados"
MSD.Language[es]["You can enable them in settings"] = "Puedes habilitarlos en las configuraciones"
MSD.Language[es]["Wait time"] = "Tiempo de espera"

View File

@@ -0,0 +1,353 @@
MSD.Language["fr"] = {
-- UI
lang_name = "French",
ok = "OK",
map = "Map",
off = "Off",
on = "On",
time_add = "Il est temps d'ajouter",
type = "Taper",
delay = "Retard",
cancel = "Annuler",
enable = "Activé",
model = "Model",
name = "Nom",
settings = "Paramètre",
editor = "Éditeur",
red = "Rouge",
green = "Vert",
blue = "Bleu",
admin_menu = "Menu d'administration",
ui_settings = "Paramètres de l'interface",
active = "Actif",
inactive = "Inactif",
disabled = "Désactivée",
warning = "Avertissement!",
remove = "Supprimer",
theme = "Thème",
dark_theme = "Thème sombre",
payment = "Paiement",
load_autosave = "Charger la dernière sauvegarde automatique?",
load_save = "Chargement de la sauvegarde",
create_new = "Créer un nouveau",
enable_option = "Activer l'option",
main_opt = "Options principales",
copy_data = "Copier des données",
save_chng = "Sauvegarder les modifications",
enter_name = "Entrez le nom",
enter_id = "Entrez l'ID",
confirm_action = "Veuillez confirmer vos actions",
check_fpr_errors = "Rechercher les erreurs",
enter_description = "Entrez la description",
cooldown_ok = "Temps de recharge en cas de succès",
cooldown_fail = "Temps de recharge en cas d'échec",
s_team_whitelist = "Configuration de la TEAM Whitelist",
whitelist_blacklist = "La liste blanche est une liste noire",
custom_val = "Définir une valeur personnalisée",
set_hp_full = "Définir les HP complets",
dist_to_close = "Distance au plus proche",
e_text = "Entrez du texte",
e_number = "Entrez un nombre",
e_class = "Entrer une classe",
e_value = "Entrez une valeur",
e_blank_dis = "Laisser vide pour désactiver",
e_blank_default = "Laissez le noir pour utiliser la valeur par défaut",
e_url = "Entrer une URL",
e_model = "Entrez le chemin du modèle",
e_material = "Entrez le chemin du matériau",
e_wep_class = "Entrez la classe d'une arme",
e_ent_class = "Entrez la classe de l'entité",
e_veh_class = "Entrez la classe du véhicule",
e_npc_class = "Entrez la classe du NPC",
select_ammo = "Munitions sélectionnées",
amount_ammo = "Montant des munitions",
disable_phys = "Désactiver la physique",
none = "Rien",
custom_icon = "Définir une icône personnalisée",
weapon_name = "Nom de l'arme",
moveup = "déplacer vers le haut",
movedown = "déplacer vers le bas",
movepoint = "Déplacer le point",
swap = "Échanger",
swapmod = "Swap mod activé. Cliquez pour désactiver",
copy_from_ent = "Copier de l'entité recherchée",
set_pos_self = "Réglez votre position",
set_pos_aim = "Définir le point de recherche",
spawn_point = "Point d'apparition",
spawn_ang = "Angle d'apparition",
mark_area = "Marquer la zone",
time_wait = "Il est temps d'attendre",
map_marker = "Sélectionnez un marqueur de map",
in_sec = "en secondes",
def_units = "Défaut %s unités", -- "350 unités par défaut" laisser %s tel quel
def_seconds = "Défaut %s secondes", -- "Par défaut, 10 secondes" laisser %s comme si
ent_show_pointer = "Montrer poiter au-dessus de l'entité",
ent_arcade_style = "Apparence d'entité de style arcade",
ent_stnd_style = "Apparence d'entité standard",
custom_color = "Activer la couleur personnalisée",
mat_default = "Laisser vide pour le matériau par défaut",
set_ui = "Paramètres de l'interface utilisateur",
set_hud = "Paramètres du HUD",
set_hud_pos = "Position du HUD de quête",
set_hud_themes = "Thèmes HUD",
set_server = "Paramètres du serveur",
set_ui_blur = "Arrière-plan flou",
set_ui_mono = "Fond monochrome",
set_ui_vignette = "Effet de vignette pour l'arrière-plan",
set_ui_brightness = "Luminosité d'arrière-plan",
set_ui_color = "Sélectionnez la couleur principale",
set_ui_align_left = "Alignement horizontal vers la gauche",
set_ui_align_right = "Alignement horizontal vers la droite",
set_ui_align_top = "Alignement vertical vers le haut",
set_ui_align_bottom = "Alignement vertical vers le bas",
set_ui_offset_h = "Décalage horizontal",
set_ui_offset_v = "Décalage vertical",
upl_changes = "Télécharger les modifications sur le serveur",
res_changes = "Restaurer les modifications",
-- Joueur
dead = "Restaurer les modifications",
time_ex = "Le temps est écoulé",
vehicle_bum = "Votre véhicule est détruit",
left_area = "Vous avez quitté la zone",
m_blew = "Vous avez fait sauter la mission",
m_failed = "Mission échouée",
m_success = "Succès de la mission",
m_loop = "Mise à jour de la mission",
-- Erreurs
inv_quest = "Quête invalide",
team_bl = "Votre équipe est sur liste noire",
no_players = "Le serveur a besoin de plus de joueurs pour être en ligne avant de pouvoir le faire",
no_players_team = "Le serveur a besoin de plus de joueurs pour que des TEAM spécifiques soient en ligne avant que vous puissiez le faire",
need_admin = "Seuls les administrateurs peuvent effectuer cette action",
-- Quête
active_quest = "Vous avez une quête active",
inactive_quest = "Vous ne pouvez pas jouer à cette quête",
quest_editor = "Éditeur de quête",
quest_list = "Liste des quêtes",
quests = "Quêtes",
leave_pnt = "Quitter le point",
q_editobj = "Modifier les objectifs",
q_incvobj = "Objectif invalide",
q_setobj = "Paramètres d'objectifs",
q_newobj = "Ajouter un nouvel objectif",
q_editrwd = "Modifier les récompenses",
q_rwdeditor = "Éditeur de récompenses",
q_rwdlist = "Liste de récompenses",
q_rwdsets = "Paramètres de récompense",
q_findmap = "Trouver une quête sur d'autres cartes",
q_obj_des = "Description de l'objectif",
q_dist_point = "Distance au point",
q_dist_from_point = "Distance du point",
q_ignore_veh = "Ignorer le véhicule de quête",
q_timer_show = "Montrez le chronomètre au joueur",
q_area_stay = "Le joueur doit rester dans la zone",
q_start = "Démarrer la quête",
q_new = "Nouvelle quête",
q_submit = "Soumettre la quête",
q_addnew = "Ajouter une nouvelle quête",
q_remove = "Supprimer la quête",
q_id_unique = "L'ID doit être unique pour chaque quête",
q_complete_msg = "Message complet de la quête",
q_dotime = "Message complet de la quête",
q_dotime_ok = "Réussir la quête à la fin du temps",
q_dotime_fail = "Échec de la quête à la fin du temps",
q_death_fail = "Échec de la quête à la mort du joueur",
q_loop = "Tâches de quête en boucle",
q_loop_reward = "Récompensez le joueur sur chaque boucle",
q_enable = "Activer la quête",
q_events = "Événements",
q_eventadd = "Ajouter un évènement",
q_eventedit = "Modification d'événement",
q_eventremove = "Supprimer l'événement",
q_in_progress = "Quête en cours",
q_time_left = "Temps restant",
q_ply_limit = "Limite de joueurs pour la quête",
q_ply_team_limit = "Limites de l'équipe de configuration",
q_ply_team_need = "Joueurs d'équipe nécessaires",
q_ply_need = "Quantité de joueur nécessaire pour commencer",
q_play_limit = "Il y a une limite au nombre de joueurs pouvant jouer à cette quête",
q_must_stay_area = "Vous devez rester dans cette zone, sinon la quête échouera",
q_time_wait = "Vous devez attendre avant de rejouer cette quête",
q_dotime_reset = "Réinitialiser le temps de la quête",
q_dotime_add = "Ajouter une quête à faire",
q_noreplay = "Vous ne pouvez pas rejouer cette quête",
q_dis_replay = "Désactiver la relecture de quête",
q_needquest = "Vous devez d'abord terminer une autre quête",
q_needquest_menu = "Requiert une quête terminée",
q_enterror = "Les entités de quête ne sont pas apparues, vérifiez la configuration de la quête",
q_get = "Vous pouvez obtenir une quête de ces PNJ",
q_noquests = "Il n'y a pas encore moyen de jouer des quêtes :(",
q_ent_draw = "Distance de tirage de l'entité de quête",
q_loop_stop_key = "Clé d'arrêt de quête en boucle",
q_hold_key_stop = "Pour arrêter la suspension de quête [%s] ", -- Pour arrêter la suspension de quête [P]
q_enter_veh = "Entrez votre véhicule",
q_npc_link = "Lier la quête à un PNJ",
q_icon68 = "Entrez l'URL de l'icône .PNG 68 x 68 px",
q_ent_pos_show = "Afficher l'emplacement des entités au joueur",
q_area_size = "Taille de la zone",
q_area_pos = "Position de la zone",
q_s_area_size = "Taille de la zone de recherche",
q_s_area_pos = "Position de la zone de recherche",
q_npc_answer_ok = "Réponse positive du joueur",
q_npc_answer_no = "Réponse négative du joueur",
q_npc_answer_noq = "Réponse du joueur si aucune quête",
q_npc_quest_no = "Discours des PNJ si aucune quête",
q_money_give = "De l'argent à donner",
-- Simple NPCs
npc_editor = "Éditeur de PNJ",
npc_new = "Nouveau PNJ",
npc_select = "Sélectionnez un PNJ",
npc_e_speech = "Entrez le discours du PNJ",
npc_submit = "Confirmer la création du PNJ",
npc_update = "Mettre à jour le PNJ",
npc_remove = "Supprimer un PNJ",
npc_q_enable = "Activer les PNJ de quête",
npc_did_open = "ID de boîte de dialogue à ouvrir",
npc_q_target = "NPC est une cible objective",
npc_hostile = "PNJ hostile",
-- Update 1.1.0
cam_start = "Paramètres de départ de la caméra",
cam_end = "Paramètres de fin de la caméra",
cam_pos = "Position de la caméra",
cam_ang = "Angle de caméra",
cam_fov = "FOV de caméra",
cam_effect = "Effet d'obturateur de caméra",
q_open_target = "Autoriser les joueurs à tuer les autres NPC",
q_npc_mind = "Distance min. au NPC",
not_spawned = "non apparu",
dis_text = "Texte affiché",
cam_speed = "Vitesse de mouvement de la caméra (nombre bas - mouvement lent)",
fov_speed = "Vitesse du FOV de la caméra (nombre bas - mouvement lent)",
category_des = "Catégorie de quêtes, utilisé pour trier les quêtes",
sortquests_cat = "Trier les quêtes par catégorie",
search_q = "Rechercher des quêtes",
quest_tools = "Outils de quête",
set_anim = "Mettre une animation",
s_quest_blacklist = "Configurer une liste noire de quête", -- In France, we can say blacklist too
s_quest_blacklist_desc = "Sélectionnez les quêtes qui vont se bloquer si elles sont jouées",
hold_use = "Maintener la touche [%s]",
duplicate = "Duplicé",
unsorted = "Non-trié",
search = "Recherche",
duration = "Durée",
category = "Catégorie",
blacklist = "Liste noire",
-- Update 1.2.0
restore_wep = "Restorer les armes à la fin de la quête",
e_cmd = "Entrer une commande console",
e_args = "Entrer des commandes d'arguments",
hint_cmd = "Autoremplissage de raccourcis : \n$uid - IDJoueur, \n$sid - SteamID, \n$s64 - SteamID 64, \n$n - No du joueur",
youaretracked = "Votre position est compromise par d'autres joueurs !",
border_rounded = "Design de bordure ronde",
border_square = "Design de bordure carrée",
access_settings = "Accès au menu",
compact_obj = "Compacter la liste des objectifs pour les quêtes",
e_usergroup = "Entrer un groupe d'utilisateurs",
ug_isanadmin = "Ce groupe d'utilisateur à déjà des pleins accès",
find_player_id32 = "Trouver un joueur par le SteamID 32",
user_data = "Éditeur de données",
access_editors = "Accès à configurer l'éditeur de quêtes",
access_admins = "Mettre des accès complets",
add_usergroup = "Ajouter un utilisateur au groupe",
edit_objmod = "Éditer les objectifs du mode",
editmod = "Éditer des modes",
move = "Déplacer",
q_errorloop = "Quête dans une loupe infinie",
q_cooldow_perply = "Compteur de temps public",
q_cooldow_publick = "Compteur de temps par joueur",
q_stop_anytime = "Autoriser manuellement l'abandon de quêtes",
quest_abandon = "Vous avez abandonné la quête",
q_dotime_set = "Configurer la fin de quête à la fin d'un temps",
-- Ranks
enter_path_or_url = "Entrer l'emplacement ou l'URL",
rank_edit = "Configuration des grades",
rank_list = "Liste de grades",
group_list = "Liste des groupes",
group_addnew = "Ajouter un nouveau groupe",
blank = "Blanc",
mrs_show_all = "Montrer les grades à tous les joueurs",
mrs_show_team = "Montrer les grades uniquement au groupe",
mrs_use_sn = "Afficher des noms de grade courts",
use_url = "Utiliser une URL",
enter_srt_name = "Entrer un nom court",
srt_name = "Nom court",
mrs_prom_demote = "Les prochaines 2 options affectent uniquement les grades les plus bas. Les joueurs ne pourront pas promotionner les autres joueurs les hauts grades ou le même grade.",
mrs_whilelist = "Si vous sélectionnez un grade requis pour un job, le joueur pourra jouer avec le job que si il a le grade défini ou plus.",
can_promote = "Peut promotionner le grade d'un joueur",
can_demote = "Peut rétrograder le grade d'un joueur",
edit_player_model = "Éditer le playermodel personnalisé",
enable_player_model = "Activer le playermodel personnalisé",
disable_player_model = "Désactiver le playermodel personnalisé",
edit_custom_stats = "Éditer les stats personnalisés du joueur",
autoprom = "Auto-promotionner au prochain grade",
in_min = "en minutes",
mrs_promoted = "Vous avez été promotionné",
mrs_demoted = "Vous avez été rétrogradé",
mrs_job_smallrank = "Vous devez être %s ou plus pour jouer en tant que %s",
show_group = "Montrer uniquement le nom du grade",
hide_rank = "Montrer uniquement l'icone du grade",
mrs_hud_follow = "Rotatationner l'UI autour du joueur dépendant de la vue de l'angle",
set_overhead = "UI de l'information du joueur",
offline_users = "Utilisateurs hors-ligne",
mrs_noranks = "Votre métier actuel n'a pas de grades",
mrs_nopower = "Votre grade actuel n'a pas plus de permissions",
promotion = "Promotion",
on_duty = "En service",
other_players = "Autres joueurs",
mrs_change_jobname = "Changer le job au nom du grade",
mrs_set_prefix = "Ajouter le nom du grade au préfix du nom du métier",
}
-- Other phrases
local lng = "fr"
MSD.Language[lng]["Move to point"] = "Déplacer vers le point"
MSD.Language[lng]["Leave area"] = "Quitter la zone"
MSD.Language[lng]["Kill NPC"] = "Tuer un NPC"
MSD.Language[lng]["Collect quest ents"] = "Collecter les ents de quête"
MSD.Language[lng]["Talk to NPC"] = "Parler à NPC"
MSD.Language[lng]["Wait time"] = "Temps d'attente"
MSD.Language[lng]["There is no quests avalible"] = "Il n'y a pas de quêtes disponibles"
MSD.Language[lng]["Give weapon"] = "Donner une arme"
MSD.Language[lng]["Give ammo"] = "Donner des munitions"
MSD.Language[lng]["Strip Weapon"] = "Arme de bande"
MSD.Language[lng]["Spawn quest entity"] = "Entité de quête d'apparition"
MSD.Language[lng]["Spawn entity"] = "Entité d'apparition"
MSD.Language[lng]["Spawn npc"] = "Apparition du npc"
MSD.Language[lng]["Manage do time"] = "Gérer le temps de travail"
MSD.Language[lng]["Spawn vehicle"] = "Apparition du véhicule"
MSD.Language[lng]["Remove vehicle"] = "Retirer le véhicule"
MSD.Language[lng]["Remove all entites"] = "Supprimer toutes les entités"
MSD.Language[lng]["Set HP"] = "Définir HP"
MSD.Language[lng]["Set Armor"] = "Définir l'armure"
MSD.Language[lng]["DarkRP Money"] = "Argent DarkRP"
MSD.Language[lng]["Quest NPCs are disabled"] = "Les PNJ de quête sont désactivés"
MSD.Language[lng]["You can enable them in settings"] = "Vous pouvez les activer dans les paramètres"

View File

@@ -0,0 +1,349 @@
MSD.Language["nl"] = {
lang_name = "Netherlands",
ok = "OKE",
map = "Kaart",
off = "Uit",
on = "Op",
time_add = "Tijd om toe te voegen",
type = "Type",
delay = "Vertraging",
cancel = "Annuleren",
enable = "Inschakelen",
model = "Model",
name = "Naam",
settings = "Instellingen",
editor = "Editor",
red = "Rood",
green = "Groente",
blue = "Blauw",
admin_menu = "Administratie menu",
ui_settings = "UI instellingen",
active = "Actief",
inactive = "Inactief",
disabled = "Gehandicapt",
warning = "Waarschuwing!",
remove = "Verwijderen",
theme = "Thema",
dark_theme = "Donker thema",
payment = "Betaling",
load_autosave = "Laad laatste autosave?",
load_save = "Laad gegevens",
create_new = "Maak nieuw",
enable_option = "Optie inschakelen",
main_opt = "Belangrijkste opties",
copy_data = "Gegevens kopiëren",
save_chng = "Wijzigingen opslaan",
enter_name = "Voer de naam in",
enter_id = "Voer de ID in",
confirm_action = "Bevestig uw acties a.u.b.",
check_fpr_errors = "Controleer op fouten",
enter_description = "Voer beschrijving in",
cooldown_ok = "Cooldown bij succes",
cooldown_fail = "Afkoelen bij mislukt",
s_team_whitelist = "Witte lijst voor team instellen",
whitelist_blacklist = "De witte lijst is een zwarte lijst",
custom_val = "Aangepaste waarde instellen",
set_hp_full = "Zet volledige HP",
dist_to_close = "Afstand tot dichtstbijzijnde",
e_text = "Tekst invoeren",
e_number = "Voer nummer in",
e_class = "Ga naar de klas",
e_value = "Voer waarde in",
e_blank_dis = "Laat leeg om uit te schakelen",
e_blank_default = "Laat leeg om standaard te gebruiken",
e_url = "Binnenkomen URL",
e_model = "Voer modelpad in", -- voorbeeld: model/alyx.mdl
e_material = "Voer materiaalpad in",
e_wep_class = "Voer wapenklasse in",
e_ent_class = "Entiteitsklasse invoeren",
e_veh_class = "Voer voertuigklasse in",
e_npc_class = "Voer NPC-klasse in",
select_ammo = "geselecteerde munitie",
amount_ammo = "Munitie hoeveelheid",
disable_phys = "Schakel natuurkunde uit",
none = "Geen",
custom_icon = "Aangepast pictogram instellen",
weapon_name = "wapen naam",
moveup = "Omhoog gaan",
movedown = "Naar beneden verplaatsen",
movepoint = "Punt verplaatsen",
swap = "Ruil",
swapmod = "Swap-mod ingeschakeld. Klik om uit te schakelen",
copy_from_ent = "Kopiëren van kijkende entiteit",
set_pos_self = "Instellen op uw positie",
set_pos_aim = "Ingesteld op kijkpunt",
spawn_point = "spawn punt",
spawn_ang = "Spawn hoek",
mark_area = "Markeer gebied",
time_wait = "Tijd om te wachten",
map_marker = "Selecteer kaartmarkering",
in_sec = "in seconden",
def_units = "Standaard %s eenheden", -- "Standaard 350 units" het verlof %s zoals het is
def_seconds = "Standaard %s seconden", -- "Standaard 10 seconds" het verlof %s zoals het is
ent_show_pointer = "Toon aanwijzer boven de entiteit",
ent_arcade_style = "Uiterlijk van entiteit in arcadestijl",
ent_stnd_style = "Standaard uiterlijk van entiteit",
custom_color = "Aangepaste kleur inschakelen",
mat_default = "Leeg laten voor standaard materiaal",
set_ui = "UI instellingen",
set_hud = "HUD instellingen",
set_hud_pos = "Quest HUD positie",
set_hud_themes = "HUD Thema's",
set_server = "Server instellingen",
set_ui_blur = "Blur achtergrond",
set_ui_mono = "Monochrome achtergrond",
set_ui_vignette = "Vigneteffect voor achtergrond",
set_ui_brightness = "Achtergrondhelderheid",
set_ui_color = "Selecteer de hoofdkleur",
set_ui_align_left = "Horizontale uitlijning naar links",
set_ui_align_right = "Horizontale uitlijning naar rechts",
set_ui_align_top = "Verticale uitlijning naar boven",
set_ui_align_bottom = "Verticale uitlijning naar beneden",
set_ui_offset_h = "Horizontale verschuiving",
set_ui_offset_v = "Verticale verschuiving",
upl_changes = "Wijzigingen uploaden naar server",
res_changes = "Wijzigingen herstellen",
-- Player
dead = "Je bent dood",
time_ex = "Tijd verlopen",
vehicle_bum = "Uw voertuig is vernietigd",
left_area = "Je hebt het gebied verlaten",
m_blew = "You blew up the mission",
m_failed = "Missie gefaald",
m_success = "Missie geslaagd",
m_loop = "Missie update",
-- Errors
inv_quest = "Ongeldige zoektocht",
team_bl = "Uw team staat op de zwarte lijst",
no_players = "Server heeft meer spelers nodig om online te zijn voordat je dit kunt doen",
no_players_team = "Server heeft meer spelers nodig voor specifieke team(s) om online te zijn voordat je dit kunt doen",
need_admin = "Alleen beheerders kunnen deze actie uitvoeren",
-- Quests
active_quest = "Je hebt een actieve zoektocht",
inactive_quest = "Je kunt deze zoektocht niet spelen",
quest_editor = "Speurtocht Editor",
quest_list = "Speurtocht List",
quests = "Speurtochts",
leave_pnt = "Het verlof point",
q_editobj = "Doelstellingen bewerken",
q_incvobj = "Ongeldige doelstelling",
q_setobj = "Ongeldige instellingen",
q_newobj = "Nieuwe doelstelling toevoegen",
q_editrwd = "Bewerk beloningen",
q_rwdeditor = "Belonings editor",
q_rwdlist = "Reward list",
q_rwdsets = "Belonings lijst",
q_findmap = "Zoek een zoektocht van andere kaarten",
q_obj_des = "Objectieve beschrijving",
q_dist_point = "Afstand tot punt",
q_dist_from_point = "Afstand vanaf punt",
q_ignore_veh = "Negeer zoektocht voertuig",
q_timer_show = "Toon de timer aan speler",
q_area_stay = "Speler moet in het gebied blijven",
q_start = "Zoektocht starten",
q_new = "Nieuwe zoektocht",
q_submit = "Zoekopdracht indienen",
q_addnew = "Nieuwe zoektocht toevoegen",
q_remove = "Zoektocht verwijderen",
q_id_unique = "ID moet uniek zijn voor elke zoektocht",
q_complete_msg = "Quest voltooid bericht",
q_dotime = "Quest doe tijd",
q_dotime_ok = "Slaag de zoektocht op tijd einde",
q_dotime_fail = "Mislukte zoektocht op tijd einde",
q_death_fail = "Mislukte zoektocht bij dood van speler",
q_loop = "Loop-queeste genomen",
q_loop_reward = "Beloon speler bij elke lus",
q_enable = "Zoektocht inschakelen",
q_events = "Evenementen",
q_eventadd = "Toevoegen Evenementen",
q_eventedit = "Evenementen edit",
q_eventremove = "Evenement verwijderen",
q_in_progress = "Quest in uitvoering",
q_time_left = "Tijd over",
q_ply_limit = "Spelerslimiet voor de zoektocht",
q_ply_team_limit = "Teamlimieten instellen",
q_ply_team_need = "benodigde teamspelers",
q_ply_need = "Spelersbedrag nodig om te starten",
q_play_limit = "Er is een limiet aan hoeveel spelers deze zoektocht kunnen spelen",
q_must_stay_area = "Je moet binnen dit gebied blijven, anders mislukt de zoektocht",
q_time_wait = "Je moet wachten voordat je deze quest opnieuw kunt spelen",
q_dotime_reset = "Reset quest do time",
q_dotime_add = "Quest do time toevoegen",
q_noreplay = "Je kunt deze zoektocht niet opnieuw spelen",
q_dis_replay = "Disable quest replay",
q_needquest = "You need to finish another quest first",
q_needquest_menu = "Voltooide zoektocht vereisen",
q_enterror = "Quest-entiteiten zijn niet voortgekomen, controleer de setup van de missie",
q_get = "Je kunt een quest krijgen van deze NPC's",
q_noquests = "Er is nog geen manier om speurtochten te spelen :(",
q_ent_draw = "Trekafstand van de queeste-entiteit",
q_loop_stop_key = "Stop-toets voor doorlopende zoektocht",
q_hold_key_stop = "Om quest hold te stoppen [%s]", -- To stop quest hold [P]
q_enter_veh = "Voer uw voertuig in",
q_npc_link = "Zoektocht koppelen aan een NPC",
q_icon68 = "Voer url in naar .PNG pictogram 68x68 px",
q_ent_pos_show = "Locatie van entiteiten aan speler tonen",
q_area_size = "Oppervlakte",
q_area_pos = "Gebiedspositie",
q_s_area_size = "Grootte van het zoekgebied",
q_s_area_pos = "Zoekgebied positie",
q_npc_answer_ok = "Positief antwoord van de speler",
q_npc_answer_no = "Negatief antwoord van de speler",
q_npc_answer_noq = "Het antwoord van de speler als er geen speurtochten zijn",
q_npc_quest_no = "NPC spraak als er geen speurtochten zijn",
q_money_give = "Geld om te geven",
-- Simple NPCs
npc_editor = "NPC-editor",
npc_new = "Nieuwe NPC",
npc_select = "Selecteer een NPC",
npc_e_speech = "Voer NPC-spraak in",
npc_submit = "Aanmaak van NPC bevestigen",
npc_update = "NPC bijwerken",
npc_remove = "NPC verwijderen",
npc_q_enable = "Zoek-NPC's inschakelen",
npc_did_open = "Dialoogvenster-ID om te openen",
npc_q_target = "NPC is een objectief doelwit",
npc_hostile = "Vijandige NPC",
-- Update 1.1.0
cam_start = "Startparameters camera",
cam_end = "Camera einde parameters",
cam_pos = "Camera positie",
cam_ang = "Camera hoek",
cam_fov = "Camerabeeldhoek",
cam_effect = "Camerasluitereffect",
q_open_target = "Sta andere spelers toe om NPC's te doden",
q_npc_mind = "Min. afstand tot NPC's",
not_spawned = "niet voortgebracht",
dis_text = "Weergegeven tekst",
cam_speed = "Bewegingssnelheid camera (langzamer getal - langzamere beweging)",
fov_speed = "FOV-veranderingssnelheid (lager getal - langzamere beweging)",
category_des = "Missiecategorie, gebruikt om missies te sorteren",
sortquests_cat = "Sorteer missies op categorie",
search_q = "Zoekopdrachten",
quest_tools = "Quest-tools",
set_anim = "Animatieset",
s_quest_blacklist = "Zwarte lijst voor missies instellen",
s_quest_blacklist_desc = "Selecteer missies die deze missie blokkeren als je ze hebt gespeeld",
hold_use = "Houden [%s] key",
duplicate = "Duplicaat",
unsorted = "ongesorteerd",
search = "Zoekopdracht",
duration = "Looptijd",
category = "Categorie",
blacklist = "Zwarte lijst",
-- Update 1.2.0
restore_wep = "Wapens herstellen aan het einde van de zoektocht",
e_cmd = "Voer consoleopdracht in",
e_args = "Voer opdrachtargumenten in",
hint_cmd = "Sneltoetsen aanvullen: \n$uid - UserID, \n$sid - SteamID, \n$s64 - SteamID 64, \n$n - Plaag naam",
youaretracked = "Your position is now compromised to other players!",
border_rounded = "Rounded border design",
border_square = "Vierkant randontwerp",
access_settings = "Toegang tot menu",
compact_obj = "Compacte doelstellingenlijst voor speurtochten",
e_usergroup = "Gebruikersgroep invoeren",
ug_isanadmin = "Deze gebruikersgroep heeft al volledige toegang",
find_player_id32 = "Vind spelergegevens op SteamID 32",
user_data = "Editor voor gebruikersgegevens",
access_editors = "Toegang voor quest-editors instellen",
access_admins = "Volledige toegang instellen",
add_usergroup = "Gebruikersgroep toevoegen",
edit_objmod = "Objectvolgorde bewerken",
editmod = "Mode bewerken",
move = "Beweging",
q_errorloop = "Quest ingevoerd in een eindeloze lus",
q_cooldow_perply = "Openbare afkoeltimer",
q_cooldow_publick = "Afkoeltimer per speler",
q_stop_anytime = "Toestaan om de zoektocht handmatig te verlaten",
quest_abandon = "Je hebt de zoektocht opgegeven",
q_dotime_set = "Tijd voor quest instellen",
-- Ranks
enter_path_or_url = "Voer pad of url in",
rank_edit = "Rangen instellen",
rank_list = "Ranglijst",
group_list = "Groepslijst",
group_addnew = "Nieuwe groep toevoegen",
blank = "Blanco",
mrs_show_all = "Toon rangen aan alle spelers",
mrs_show_team = "Toon rangen alleen aan de groep",
mrs_use_sn = "Korte rangnamen weergeven",
use_url = "Gebruik URL",
enter_srt_name = "Voer korte naam in",
srt_name = "Korte naam",
mrs_prom_demote = "De volgende 2 opties zijn alleen van invloed op lagere rangen. Spelers met deze rang kunnen andere spelers niet promoveren naar hogere rangen of dezelfde rang.",
mrs_whilelist = "Als je een rangvereiste voor een baan selecteert, kan de speler deze baan alleen spelen als zijn rang overeenkomt met de gekozen of hoger.",
can_promote = "Kan de spelersrang bevorderen",
can_demote = "Kan spelerrang degraderen",
edit_player_model = "Aangepast spelersmodel bewerken",
enable_player_model = "Aangepast spelermodel inschakelen",
disable_player_model = "Aangepast spelermodel uitschakelen",
edit_custom_stats = "Aangepaste spelerstatistieken bewerken",
autoprom = "Automatisch promoveren naar de volgende rang",
in_min = "in minuten",
mrs_promoted = "Je bent gepromoveerd",
mrs_demoted = "Je bent gedegradeerd",
mrs_job_smallrank = "Je moet %s of hoger zijn om als %s. te spelen", -- You must be Sergeant II or higher to play as Watch Commander
show_group = "Naam ranggroep weergeven",
hide_rank = "Toon alleen rang icoon",
mrs_hud_follow = "Draai de gebruikersinterface rond de speler, afhankelijk van de kijkhoek",
set_overhead = "Spelers info UI",
offline_users = "Offline gebruikers",
mrs_noranks = "Je huidige baan heeft geen rangen",
mrs_nopower = "Je huidige rang heeft geen extra rechten",
promotion = "Promotie",
on_duty = "In functie",
other_players = "andere spelers",
mrs_change_jobname = "Wijzig de taaknaam in de rangnaam",
mrs_set_prefix = "Voeg de rangnaam toe als voorvoegsel aan de taaknaam",
copy_all_data = "Kopieer alle gegevens",
copy_only_stats = "Kopieer alleen statistieken en spelersmodel",
}
-- Other phrases
local lng = "nl"
MSD.Language[lng]["Move to point"] = "Verplaatsen naar punt"
MSD.Language[lng]["Leave area"] = "Verlaat gebied"
MSD.Language[lng]["Kill NPC"] = "Dood NPC"
MSD.Language[lng]["Collect quest ents"] = "Verzamel zoektochten"
MSD.Language[lng]["Talk to NPC"] = "Praat met NPC"
MSD.Language[lng]["There is no quests available"] = "Er zijn geen speurtochten beschikbaar"
MSD.Language[lng]["Give weapon"] = "Geef wapen"
MSD.Language[lng]["Give ammo"] = "Geef munitie"
MSD.Language[lng]["Strip Weapon"] = "Stripwapen"
MSD.Language[lng]["Spawn quest entity"] = "Spawn Quest-entiteit"
MSD.Language[lng]["Spawn entity"] = "Spawn entiteit"
MSD.Language[lng]["Spawn npc"] = "spawn npc"
MSD.Language[lng]["Manage do time"] = "Beheer doe tijd"
MSD.Language[lng]["Spawn vehicle"] = "Spawn voertuig"
MSD.Language[lng]["Remove vehicle"] = "Voertuig verwijderen"
MSD.Language[lng]["Remove all entites"] = "Alle entiteiten verwijderen"
MSD.Language[lng]["Set HP"] = "Stel HP"
MSD.Language[lng]["Set Armor"] = "Pantser instellen"
MSD.Language[lng]["DarkRP Money"] = "DarkRP Geld"
MSD.Language[lng]["Quest NPCs are disabled"] = "Quest-NPC's zijn uitgeschakeld"
MSD.Language[lng]["You can enable them in settings"] = "Je kunt ze inschakelen in instellingen"

View File

@@ -0,0 +1,366 @@
MSD.Language["ru"] = {
-- UI
lang_name = "Русский",
ok = "ОК",
map = "Карта",
off = "Выкл",
on = "Вкл",
time_add = "Добавить время",
type = "Тип",
delay = "Задержка",
cancel = "Отменить",
enable = "Активировать",
model = "Модель",
name = "Название",
settings = "Настройки",
editor = "Редактор",
red = "Красный",
green = "Зеленый",
blue = "Синий",
admin_menu = "Админ меню",
ui_settings = "Настройки интерфейса",
active = "Активно",
inactive = "Неактивно",
disabled = "Отключено",
warning = "Внимание!",
remove = "Удалить",
theme = "Тема",
dark_theme = "Темная тема",
payment = "Оплата",
load_autosave = "Загрузить последнее автосохранение?",
load_save = "Загрузить сохранение",
create_new = "Создать новый",
enable_option = "Включить опцию",
main_opt = "Главные опции",
copy_data = "Копировать данные",
save_chng = "Сохранить изменения",
enter_name = "Ввести название",
enter_id = "Ввести ID",
confirm_action = "Подтвердите пожалуйста действия",
check_fpr_errors = "Проверить на ошибки",
enter_description = "Ввести описание",
cooldown_ok = "Задержка при успехе",
cooldown_fail = "Задержка при провале",
s_team_whitelist = "Настроить командный вайтлист",
whitelist_blacklist = "Вайтлист=блэклист",
custom_val = "Установить собственное значение",
set_hp_full = "сделать полное ХП",
dist_to_close = "Дистанция к ближайшему",
e_text = "Введите текст",
e_number = "Введите номер",
e_class = "Введите класс",
e_value = "Введите значение",
e_blank_dis = "Оставьте пустым чтобы отключить",
e_blank_default = "Оставьте пустым чтобы использовать по-умолчанию",
e_url = "Введите URL",
e_model = "Введите путь модели",
e_material = "Введите путь материала",
e_wep_class = "Введите класс оружия",
e_ent_class = "Введите класс энтити",
e_veh_class = "Введите класс транспорта",
e_npc_class = "Введите класс НПС",
select_ammo = "Выбранные патроны",
amount_ammo = "Количество патронов",
disable_phys = "Отключить физику",
none = "Нет",
custom_icon = "Выбрать кастомную иконку",
weapon_name = "Название оружия",
moveup = "Передвинуть вверх",
movedown = "Передвинуть вниз",
movepoint = "Передвинуть точку",
swap = "Поменять",
swapmod = "Мод замены включен. Нажмите чтобы отключить",
copy_from_ent = "Коп. с предмета",
set_pos_self = "Выставить свою поз.",
set_pos_aim = "Выставить по взгляду",
spawn_point = "Точка спавна",
spawn_ang = "Угол спавна",
mark_area = "Обозначить территорию",
time_wait = "Время ожидания",
map_marker = "Выберите маркер карты",
in_sec = "В секундах",
def_units = "единицы по-умолчанию", -- "По-умолчанию 350 единиц" оставьте %s без изменений
def_seconds = "Секунды по-умолчанию", -- "По-умолчанию 10 секунд" оставьте %s без изменений
ent_show_pointer = "Показать маркер над энтити",
ent_arcade_style = "Аркадный стиль появления энтити",
ent_stnd_style = "Стандартное появление энтити",
custom_color = "Включить кастомный цвет",
mat_default = "Оставьте пустым для материала по-умолчанию",
set_ui = "UI настройки",
set_hud = "HUD настройки",
set_hud_pos = "Позиция интерфейса квеста",
set_hud_themes = "Темы интерфейса",
set_server = "Настройки сервера",
set_ui_blur = "Размытие заднего фона",
set_ui_mono = "Монохром заднего фона",
set_ui_vignette = "Эффект виньетки заднего фона",
set_ui_brightness = "Яркость заднего фона",
set_ui_color = "Выберите главный цвет",
set_ui_align_left = "Горизонтальное выравнивание влево",
set_ui_align_right = "Горизонтальное выравнивание вправо",
set_ui_align_top = "Вертикальное выравнивание вверх",
set_ui_align_bottom = "Вертикальное выравнивание вниз",
set_ui_offset_h = "Горизонтальное смещение",
set_ui_offset_v = "Вертикальное смещение",
upl_changes = "Загрузить изменения на сервер",
res_changes = "Восстановить изменения",
-- Player
dead = "Вы мертвы",
time_ex = "Время вышло",
vehicle_bum = "Ваш транспорт уничтожен",
left_area = "Вы покинули территорию",
m_blew = "Ваша миссия раскрыта",
m_failed = "Миссия провалена",
m_success = "Миссия выполнена",
m_loop = "Обновление миссии",
-- Errors
inv_quest = "Неправильный квест",
team_bl = "Ваша команда в блэклисте",
no_players = "Нужно больше игроков онлайн для данного действия",
no_players_team = "Нужно больше игроков онлайн в определенных командах для данного действия",
need_admin = "Только администратор может это сделать",
-- Quests
active_quest = "У Вас есть активный квест",
inactive_quest = "Вы не можете взять этот квест",
quest_editor = "Редактор квеста",
quest_list = "Список квестов",
quests = "Квесты",
leave_pnt = "Покинуть точку",
q_editobj = "Редактировать задачи",
q_incvobj = "Неправильная задача",
q_setobj = "Настройки задачи",
q_newobj = "Добавить задачу",
q_editrwd = "Редактировать награду",
q_rwdeditor = "Редактор награды",
q_rwdlist = "Список наград",
q_rwdsets = "Настройка наград",
q_findmap = "Найти квесты с других карт",
q_obj_des = "Описание задачи",
q_dist_point = "Расстояние до точки",
q_dist_from_point = "Расстояние от точки",
q_ignore_veh = "Игнорировать квестовый транспорт",
q_timer_show = "Показывать таймер игроку",
q_area_stay = "Игрок должен находиться в зоне",
q_start = "Начать квест",
q_new = "Новый квест",
q_submit = "Опубликовать квест",
q_addnew = "Добавить новый квест",
q_remove = "Удалить квест",
q_id_unique = "ID должен быть уникален для каждого квеста",
q_complete_msg = "Сообщение при выполнение квеста",
q_dotime = "Время квеста",
q_dotime_ok = "Засчитать выполнение квеста по истечению таймера",
q_dotime_fail = "Засчитать провал квеста по истечению таймера",
q_death_fail = "Засчитать провал квеста при смерти игрока",
q_loop = "Зациклить задачи квеста",
q_loop_reward = "Награждать игрока при выполнении цикла",
q_enable = "Включить квест",
q_events = "Эвенты",
q_eventadd = "Добавить эвент",
q_eventedit = "редактировать эвент",
q_eventremove = "убрать эвент",
q_in_progress = "Квест в работе",
q_time_left = "Оставшееся время",
q_ply_limit = "Лимит игроков для квеста",
q_ply_team_limit = "Установить лимит команд",
q_ply_team_need = "Требование к игрокам в команде",
q_ply_need = "Требование к кол-ву игроков для старта",
q_play_limit = "Установлен лимит на кол-во игроков для квеста",
q_must_stay_area = "Вы должны находится в этой зоне или квест будет провален",
q_time_wait = "Вы должны подождать прежде чем начинать квест снова",
q_dotime_reset = "Сбросить время выполнения квеста",
q_dotime_add = "Добавить время выполнения квеста",
q_noreplay = "Вы не можете повторить этот квест",
q_dis_replay = "Выключить повтор квеста",
q_needquest = "Сначала Вы должны закончить другой квест",
q_needquest_menu = "Необходим выполненный квест",
q_enterror = "Энтити квеста не заспавнились, проверьте настройки квеста",
q_get = "Вы можете взять квест у этих НПС",
q_noquests = "Пока что нет способа начать квесты :(",
q_ent_draw = "Дистанция прорисовки квестового энтити",
q_loop_stop_key = "Кнопка остановки повторяемого квеста",
q_hold_key_stop = "Чтобы остановить квест удерживайте [%s]", -- Чтобы остановить квест удерживайте [P]
q_enter_veh = "Садитесь в свое транспортное средство",
q_npc_link = "Привязать квест к НПС",
q_icon68 = "Введите url для .PNG иконки 68x68 пикс.",
q_ent_pos_show = "Показывать локацию энтити игроку",
q_area_size = "Размер зоны",
q_area_pos = "Позиция зоны",
q_s_area_size = "Поиск размера зоны",
q_s_area_pos = "Поиск позиции зоны",
q_npc_answer_ok = "Положительный ответ игрока",
q_npc_answer_no = "Отрицательный ответ игрока",
q_npc_answer_noq = "Ответ игрока при отсутствии квестов",
q_npc_quest_no = "Реплика НПСа при отсутствии квестов",
q_money_give = "Деньги для выдачи",
-- Simple NPCs
npc_editor = "Редактор НПС",
npc_new = "Новый НПС",
npc_select = "Выберите НПС",
npc_e_speech = "Введите реплику НПС",
npc_submit = "Подтвердите создание НПС",
npc_update = "Обновить НПС",
npc_remove = "Убрать НПС",
npc_q_enable = "Включить квестовых НПС",
npc_did_open = "ID диалога для открытия",
npc_q_target = "Цель задачи - НПС",
npc_hostile = "Врадждебный НПС",
-- Update 1.1.0
duration = "Продолжительность",
dis_text = "Отображаемый текст",
cam_speed = "Скорость движения камеры (меньше число - медленнее движение)",
fov_speed = "Скорость изменения поля зрения (меньше число - медленнее движение)",
cam_start = "Параметры запуска камеры",
cam_end = "Параметры конца камеры",
cam_pos = "Позиция камеры",
cam_ang = "Угол камеры",
cam_fov = "Поля зрения камеры",
cam_effect = "Эффект затвора камеры",
not_spawned = "не создан",
q_open_target = "Разрешить другим игрокам убивать NPC",
q_npc_mind = "Мин. расстояние до NPC",
duplicate = "Дублировать",
hold_use = "Удерживайте кнопку [%s]",
category = "Категория",
category_des = "Категория квестов, используемая для сортировки квестов",
sortquests_cat = "Сортировать квесты по категориям",
unsorted = "Без Категория",
search = "Поиск",
search_q = "Искать квесты",
quest_tools = "Инструменты",
set_anim = "Установить анимацию",
s_quest_blacklist = "Установить черный список квестов",
blacklist = "Черный список",
s_quest_blacklist_desc = "Выберите квесты, которые заблокируют этот квест, если вы их сыграли",
-- Update 1.2.0
restore_wep = "Восстановить оружие по окончании квеста",
e_cmd = "Введите консольную команду",
e_args = "Введите аргументы команды",
hint_cmd = "Параметры для автозаполнение: \n$uid - UserID, \n$sid - SteamID, \n$s64 - SteamID 64, \n$n - Имя игрока",
youaretracked = "Ваше местоположение теперь видно другим игрокам!",
border_rounded = "Дизайн с закругленными краями",
border_square = "Дизайн с квадратными краями",
access_settings = "Доступ к меню",
compact_obj = "Компактный список задач для квестов",
e_usergroup = "Введите группу пользователей",
ug_isanadmin = "Эта группа пользователей уже имеет полный доступ",
find_player_id32 = "Найти данные игрока по SteamID 32",
user_data = "Редактор данных игрока",
access_editors = "Установить доступ для редакторов квестов",
access_admins = "Установить полный доступ",
add_usergroup = "Добавить группу пользователей",
edit_objmod = "Изменить порядок задач",
editmod = "Режим редактирования",
move = "Передвинуть",
q_errorloop = "Квест вошел в бесконечный цикл",
q_cooldow_perply = "Публичный таймер",
q_cooldow_publick = "Индивидуальный таймер",
q_stop_anytime = "Разрешить отказаться от квеста вручную",
quest_abandon = "Вы отказались от квеста",
q_dotime_set = "Установить время выполнения квеста",
-- Ranks
enter_path_or_url = "Введите путь или веб адрес",
rank_edit = "Настройка рангов",
rank_list = "Список рангов",
group_list = "Список групп",
group_addnew = "Добавить новую группу",
blank = "Пустой",
mrs_show_all = "Показывать ранги всем игрокам",
mrs_show_team = "Показывать ранги только группе",
mrs_use_sn = "Отображать короткие названия рангов",
use_url = "Использовать веб адрес",
enter_srt_name = "Введите короткое имя",
srt_name = "Короткое имя",
mrs_prom_demote = "Следующие 2 параметра влияют только на более низкие ранги. Игроки с этим рангом не смогут повышать других игроков до более высоких рангов или того же ранга.",
mrs_whilelist = "Если вы выберете требование ранга для профессии, игрок сможет играть за эту профессию, только если его ранг соответсвует выбранному или выше.",
can_promote = "Может повышать ранг игрока",
can_demote = "Может понижать ранг игрока",
edit_player_model = "Настроить модель игрока",
enable_player_model = "Включить уникальную модель игрока",
disable_player_model = "Выключить уникальную модель игрока",
edit_custom_stats = "Настроить параметры игрока",
autoprom = "Автоматическое повышение до следующего ранга",
in_min = "в минутах",
mrs_promoted = "Вы получили повышение",
mrs_demoted = "Вы были понижены",
mrs_job_smallrank = "Вы должны быть %s или выше что бы играть за %s",
show_group = "Отображение названия группы рангов",
hide_rank = "Отображать только значок ранга",
mrs_hud_follow = "Интерфейс игрока следует за камерой",
set_overhead = "Интерфейс информации об игроке",
offline_users = "Офлайн-пользователи",
mrs_noranks = "Ваша текущая работа не имеет званий",
mrs_nopower = "У вашего текущего ранга нет дополнительных разрешений",
promotion = "Повышение",
on_duty = "На службе",
other_players = "Другие игроки",
mrs_change_jobname = "Поменять название профессии на название ранга",
mrs_set_prefix = "Добавьте ранг в качестве префикса к названию профессии",
mrs_change_plyname = "Поменять имя игрока на название ранга",
mrs_set_prefix_ply = "Добавьте ранг в качестве префикса к имени игрока",
promote_limit = "Ограничение повышения",
demote_limit = "Ограничение понижения",
salary_value = "Заработная плата",
salary_set = "Установить данное значение в качестве зарплаты",
salary_add = "Добавить указанное значение к зарплате",
salary_multiply = "Умножить зарплату на заданное значение",
force_team = "Принудительно cменить команду на",
mrs_hud_3d2d = "Использовать 3D2D интерфейс",
mrs_chat_command = "Чат-команда для открытия меню рангов",
mrs_promote_command = "Чат-команда для повышения игрока",
mrs_demote_command = "Чат-команда для понижения игрока",
}
-- Other phrases
local lng = "ru"
MSD.Language[lng]["Move to point"] = "Выдвигайтесь к точке"
MSD.Language[lng]["Leave area"] = "Покиньте территорию"
MSD.Language[lng]["Kill NPC"] = "Убейте НПС"
MSD.Language[lng]["Collect quest ents"] = "Соберите квестовые энтити"
MSD.Language[lng]["Talk to NPC"] = "Поговорите с НПС"
MSD.Language[lng]["Wait time"] = "Ожидать время"
MSD.Language[lng]["There is no quests avalible"] = "На данный момент квесты отсутствуют"
MSD.Language[lng]["Give weapon"] = "Дать оружие"
MSD.Language[lng]["Give ammo"] = "Дать патроны"
MSD.Language[lng]["Strip Weapon"] = "Забрать оружие"
MSD.Language[lng]["Spawn quest entity"] = "Заспавнить квестовый энтити"
MSD.Language[lng]["Spawn entity"] = "Заспавнить энтити"
MSD.Language[lng]["Spawn npc"] = "Заспавнить НПС"
MSD.Language[lng]["Manage do time"] = "Управление временем для квеста"
MSD.Language[lng]["Spawn vehicle"] = "Заспавнить транспорт"
MSD.Language[lng]["Remove vehicle"] = "Убрать транспорт"
MSD.Language[lng]["Remove all entites"] = "Убрать все энтити"
MSD.Language[lng]["Set HP"] = "Установить ХП"
MSD.Language[lng]["Set Armor"] = "Установить броню"
MSD.Language[lng]["DarkRP money"] = "DarkRP Валюта"
MSD.Language[lng]["Quest NPCs are disabled"] = "Квестовые НПС выключены"
MSD.Language[lng]["You can enable them in settings"] = "Вы можете включить их в настройках"

View File

@@ -0,0 +1,351 @@
MSD.Language["tr"] = {
lang_name = "Türkçe",
ok = "Tamam",
map = "Harita",
off = "Kapalı",
on = "ık",
time_add = "Eklenecek zaman",
type = "Tür",
delay = "Gecikme",
cancel = "İptal",
enable = "Aktif Et",
model = "Model",
name = "İsim",
settings = "Ayarlar",
editor = "Düzenleyici",
red = "Kırmızı",
green = "Yeşil",
blue = "Mavi",
admin_menu = "Yetkili Menüsü",
ui_settings = "Arayüz Ayarları",
active = "Aktif",
inactive = "Deaktif",
disabled = "Devre Dışı",
warning = "Uyarı!",
remove = "Kaldır",
theme = "Tema",
dark_theme = "Karanlık Tema",
payment = "Ödeme",
load_autosave = "Son kaydı yükleyecek misin?",
load_save = "Kaydı yükle",
create_new = "Yeni oluştur",
enable_option = "Ayarı aktif et",
main_opt = "Ana ayarlar",
copy_data = "Veriyi kopyala",
save_chng = "Değişiklikleri kaydet",
enter_name = "İsimi giriniz",
enter_id = "ID giriniz",
confirm_action = "Eylemlerinizi lütfen onaylayınız",
check_fpr_errors = "Hataları kontrol et",
enter_description = "ıklama gir",
cooldown_ok = "Başarı sonucu bekleme süresi",
cooldown_fail = "Hata sonucu bekleme süresi",
s_team_whitelist = "Takım beyaz listesini ayarla",
whitelist_blacklist = "Beyaz liste kara liste",
custom_val = "Özel değer ayarla",
set_hp_full = "Sağlık değerini fulle",
dist_to_close = "En yakınına mesafe",
e_text = "Yazı giriniz",
e_number = "Sayı giriniz",
e_class = "Sınıf giriniz",
e_value = "Değer giriniz",
e_blank_dis = "Devre dışı bırakmak için boş bırakın",
e_blank_default = "Varsayılan ayarlar için boş bırakın",
e_url = "Bağlantı giriniz",
e_model = "Model uzantısını giriniz",
e_material = "Materyal uzantısını giriniz",
e_wep_class = "Silah sınıfını giriniz",
e_ent_class = "Varlık sınıfını giriniz",
e_veh_class = "Araç sınıfını giriniz",
e_npc_class = "NPC sınıfını giriniz",
select_ammo = "Seçili mermi",
amount_ammo = "Mermi asyısı",
disable_phys = "Fiziği devre dışı bırak",
none = "Hiç",
custom_icon = "Özel ikon ayarla",
weapon_name = "Silah isim",
moveup = "Yukarı git",
movedown = "Aşağıya git",
movepoint = "Noktayı hareket ettir",
swap = "Değiş",
swapmod = "Değişim modu aktif. Tıklayarak devre dışı bırak",
copy_from_ent = "Baktığın varlıktan kopyala",
set_pos_self = "Pozisyonunu ayarla",
set_pos_aim = "Baktığın noktaya ayarla",
spawn_point = "Nokta oluştur",
spawn_ang = "ı oluştur",
mark_area = "Alanı işaretle",
time_wait = "Bekleme süresi",
map_marker = "Harita işaretçisini ayarla",
in_sec = "saniye olarak",
def_units = "Varsayılan %s ünit", -- "Default 350 units" leave %s as is
def_seconds = "Varasyılan %s saniye", -- "Default 10 seconds" leave %s as is
ent_show_pointer = "İaşretçiyi varlığın üstünde göstr",
ent_arcade_style = "Arcade-tarzında entitiy görünüşü",
ent_stnd_style = "Standart varlık görünüşü",
custom_color = "Özel rengi aktif et",
mat_default = "Varsayılan materyal için boş bırak",
set_ui = "Kullanıcı Arayüzü ayarları",
set_hud = "HUD ayarları",
set_hud_pos = "Görev HUD'u ayarları",
set_hud_themes = "HUD Temaları",
set_server = "Sunucu ayarları",
set_ui_blur = "Arkaplanı bulanıklaştır",
set_ui_mono = "Monokrom arkaplan",
set_ui_vignette = "Arka plan için vignette efekti",
set_ui_brightness = "Arkaplan parlaklığı",
set_ui_color = "Ana rengi seç",
set_ui_align_left = "Sola yatay hizalama",
set_ui_align_right = "Sağa yatay hizalama",
set_ui_align_top = "Yukarıya dikey hizalama",
set_ui_align_bottom = "Aşağıya dikey hizalama",
set_ui_offset_h = "Yatay Ofset",
set_ui_offset_v = "Dikey Ofset",
upl_changes = "Değişiklikleri sunucuya yükle",
res_changes = "Değişimleri eski haline getir",
-- Player
dead = "Öldün",
time_ex = "Zaman doldu",
vehicle_bum = "Aracın yok oldu",
left_area = "Bölgeyi terk ettin",
m_blew = "Görevi batırdın",
m_failed = "Görev başarısız",
m_success = "Görev başarılı",
m_loop = "Görev güncellemesi",
-- Errors
inv_quest = "Geçersiz görev",
team_bl = "Takımın karalistede",
no_players = "Bunu yapman için sunucuda daha fazla oyuncu olması gerekmekte",
no_players_team = "Bunu yapman için belirli takımlarda daha fazla oyuncu olması gerekmekte",
need_admin = "Sadece adminler bu eylemi gerçekleştirebilir",
-- Quests
active_quest = "Aktif bir görevin var",
inactive_quest = "Bu görevi oynayamazsın",
quest_editor = "Görev Düzenleyicisi",
quest_list = "Görev Listesi",
quests = "Görevler",
leave_pnt = "Noktadan ayrıl",
q_editobj = "hedefleri düzenle",
q_incvobj = "Geçersiz hedef",
q_setobj = "Hedef ayarları",
q_newobj = "Yeni bir hedef oluştur",
q_editrwd = "Ödülleri düzenle",
q_rwdeditor = "Ödül Düzenleyicisir",
q_rwdlist = "Ödül Listesi",
q_rwdsets = "Ödül Ayarları",
q_findmap = "Diğer haritalardan görev bul",
q_obj_des = "Hedef açıklaması",
q_dist_point = "Noktaya olan uzaklık",
q_dist_from_point = "Noktadan olan uzaklık",
q_ignore_veh = "Görev aracını görmezden gel",
q_timer_show = "Oyuncuya zamanlayıcıyı göster",
q_area_stay = "Oyuncu bölgede kalmalı",
q_start = "Görevi başlat",
q_new = "Yeni görev",
q_submit = "Görevi sun",
q_addnew = "Yeni görev ekle",
q_remove = "Görevi kaldır",
q_id_unique = "Her bir görevin ID'si kendine özel olmalı",
q_complete_msg = "Görevi bitirme mesajı",
q_dotime = "Görev süresi",
q_dotime_ok = "Süre bitince görev başarıyla tamamlansın",
q_dotime_fail = "Süre bitince görev başarısız olsun",
q_death_fail = "Oyuncu öldüğünde görevi iptal et",
q_loop = "Görevleri tekrara al",
q_loop_reward = "Her bir tekrarda oyuncuyu ödüllendir",
q_enable = "Görevi aktif et",
q_events = "Etkinlikler",
q_eventadd = "Etkinlik Ekle",
q_eventedit = "etkinlik düzenle",
q_eventremove = "Etkinlik kaldır",
q_in_progress = "Görev işlem sürecinde",
q_time_left = "Kalan süre",
q_ply_limit = "Görev için azami oyuncu sayısı",
q_ply_team_limit = "Takım limitlerini ayarla",
q_ply_team_need = "Gerekli takım oyuncuları",
q_ply_need = "Başlamak için gereken oyuncu sayısı",
q_play_limit = "Görevi kaç oyuncunun oynayabileceğinin limiti",
q_must_stay_area = "Bu bölgenin içinde kalman gerekiyor yoksa görev başarısız olur",
q_time_wait = "Bu görevi tekrarlaman için beklemen lazım",
q_dotime_reset = "Görevin süresini sıfırla",
q_dotime_add = "Göreve yapma süresi ekle",
q_noreplay = "Bu görevi tekrar yapamazsın",
q_dis_replay = "Görev tekrarını iptal et",
q_needquest = "İlk başka bir görevi yapman gerekmekte",
q_needquest_menu = "Bitirilmiş görev gerekmektedir",
q_enterror = "Görev varlıkları oluşmamakta, görev kurulumunu kontrol et",
q_get = "Bu NPC'lerden görev alabilirsin",
q_noquests = "Görev yapabileceğin herhangi bir yol bulunmamakta :(",
q_ent_draw = "Görev varlığı çizim mesafesi",
q_loop_stop_key = "Görev tekrarlama durdurma tuşu",
q_hold_key_stop = "görevi durdurmak için [%s] tuşuna basılı tutun", -- To stop quest hold [P]
q_enter_veh = "Aracına bin",
q_npc_link = "Görevi bir NPC'ye bağla",
q_icon68 = ".PNG ve 68x68 pixel olucak şekilde bir bağlantı giriniz",
q_ent_pos_show = "Varlık lokasyonlarını oyunculara göster",
q_area_size = "Bölge boyutu",
q_area_pos = "Bölge pozisyonu",
q_s_area_size = "Bölge boyutunu ara",
q_s_area_pos = "Bölge pozisyonunu ara",
q_npc_answer_ok = "Oyuncunun pozitif cevabı",
q_npc_answer_no = "Oyuncunun negatif cevabı",
q_npc_answer_noq = "Görev yoksa oyuncunun cevabı",
q_npc_quest_no = "Görev yoksa NPC'nin konuşması",
q_money_give = "Verilecek para",
-- Simple NPCs
npc_editor = "NPC Düzenleyicisi",
npc_new = "Yeni NPC",
npc_select = "Bir NPC seçin",
npc_e_speech = "NPC konuşması giriniz",
npc_submit = "NPC oluşumunu onayla",
npc_update = "NPC'yi güncelle",
npc_remove = "NPC'yi kaldır",
npc_q_enable = "Görev NPC'lerini aktif et",
npc_did_open = "Dialog ID'si açılırken gereksin",
npc_q_target = "NPC objektif bir hedef",
npc_hostile = "Düşman NPC",
-- Update 1.1.0
cam_start = "Kamera başlama parametreleri",
cam_end = "Kamera parametrelerini bitir",
cam_pos = "Kamera pozisyonu",
cam_ang = "Kamera açısı",
cam_fov = "Kamera FOV'u",
cam_effect = "Kamera kapanma efekti",
q_open_target = "Diğer oyuncuların NPCleri öldürmelerine izin ver",
q_npc_mind = "NPClere olan Min. uzaklık",
not_spawned = "spawnlanmamış",
dis_text = "Sergilenen Yazı",
cam_speed = "Kamera hızı (düşük sayı - düşük hız)",
fov_speed = "FOV değişme hızı (düşük sayı - düşük hız)",
category_des = "Görev kategorisi, görevleri sınıflamak için kullanılır",
sortquests_cat = "Görevleri kategoriye göre düzenle",
search_q = "Görev ara",
quest_tools = "Görev araçları",
set_anim = "Animasyon ayarla",
s_quest_blacklist = "Görev karalistesi oluştur",
s_quest_blacklist_desc = "Bitirildiğinde bu görevi engelleyecek görevleri seçin",
hold_use = "Basılı Tut [%s]",
duplicate = "Çiftle",
unsorted = "Sınıflandırılmamış",
search = "Ara",
duration = "Süre",
category = "Kategori",
blacklist = "Karaliste",
-- Update 1.2.0
restore_wep = "Görev sonunda silahları geri yükle",
e_cmd = "Konsol komutunu girin",
e_args = "Komut bağımsız değişkenlerini girin",
hint_cmd = "Otomatik doldurma kısayolları: \n$uid - Kullanıcı Kimliği, \n$sid - SteamID, \n$s64 - SteamID 64, \n$n - Oyuncu adı",
youaretracked = "Konumunuzu artık diğer oyuncular da görebiliyor!",
border_rounded = "Yuvarlak kenarlık tasarımı",
border_square = "Kare kenarlık tasarımı",
access_settings = "Menü erişimi",
compact_obj = "Görevler için kompakt hedef listesi",
e_usergroup = "Kullanıcı grubu girin",
ug_isanadmin = "Bu kullanıcı grubu zaten tam erişime sahip",
find_player_id32 = "SteamID 32 ile oyuncu verilerini bulun",
user_data = "Kullanıcı verileri düzenleyicisi",
access_editors = "Görev düzenleyicilerinin erişimini ayarla",
access_admins = "Tam erişimi ayarla",
add_usergroup = "Kullanıcı grubu ekle",
edit_objmod = "Objektif sırasını düzenle",
editmod = "Düzenleme modu",
move = "Taşı",
q_errorloop = "Görev sonsuz bir döngüye girdi",
q_cooldow_perply = "Genel bekleme süresi sayacı",
q_cooldow_publick = "Oyuncu Başına bekleme süresi sayacı",
q_stop_anytime = "Görevi manuel olarak bırakmaya izin ver",
quest_abandon = "Görevi terk ettin",
q_dotime_set = "Görev yapma zamanını ayarla",
-- Ranks
enter_path_or_url = "Klasör yolu ya da url girin",
rank_edit = "Rütbe Ayarla",
rank_list = "Rütbe Listesi",
group_list = "Grup Listesi",
group_addnew = "Yeni grup ekle",
blank = "Boş",
mrs_show_all = "Tüm oyunculara rütbeleri göster",
mrs_show_team = "Sadece gruplara rütbeleri göster",
mrs_use_sn = "Rütbe kısaltmalarını göster",
use_url = "URL kullan",
enter_srt_name = "Kısaltma gir",
srt_name = "Kısaltma",
mrs_prom_demote = "Sıradaki 2 ayar sadece düşük rütbeleri etkileyecek. Bu rütbeye sahip oyuncular, diğer oyuncuları daha yüksek rütbelere veya aynı rütbeye terfi ettiremezler.",
mrs_whilelist = "Bir iş için rütbe gereksinimini seçerseniz, oyuncu bu işi ancak rütbesi seçilen veya daha yüksek olanla eşleşirse oynayabilir.",
can_promote = "Oyuncuları terfi ettirebilir",
can_demote = "Oyuncuların rütbesini düşürebilir",
edit_player_model = "Özel oyuncu modelini düzenle",
enable_player_model = "Özel oyuncu modelini aktifleştir",
disable_player_model = "Özel oyuncu modelini deaktif et",
edit_custom_stats = "Özel oyuncu istatistiklerini düzenle",
autoprom = "Sonraki rütbeye otomatik yükselt",
in_min = "dakika içinde",
mrs_promoted = "Terfi aldın",
mrs_demoted = "Rütben düşürüldü",
mrs_job_smallrank = "%s ya da daha üst bir rütbeye değilsen %s olarak oynayamazsın", -- You must be Sergeant II or higher to play as Watch Commander
show_group = "Rütbe grup ismini göster",
hide_rank = "Sadece rütbe ikonunu göster",
mrs_hud_follow = "Arayüzü oyuncunun bakış açısına göre döndür",
set_overhead = "Oyuncu bilgisi arayüzü",
offline_users = "Çevrimdışı oyuncular",
mrs_noranks = "Şu anki mesleğinin rütbesi yok",
mrs_nopower = "Şu anki rütbenin ekstra izini yok",
promotion = "Terfi",
on_duty = "Görevde",
other_players = "Diğer oyuncular",
mrs_change_jobname = "Meslek ismini rütbe ismi olarak değiştir",
mrs_set_prefix = "Rütbe ismini mesleğin başına ekle",
copy_all_data = "Bütün verileri kopyala",
copy_only_stats = "Sadece istatistikleri ve oyuncu modelini kopyala",
mrs_change_plyname = "Oyuncunun ismini rütbe ismi yap",
mrs_set_prefix_ply = "Rütbe ismini önek gibi oyuncunun isminin önüne koy",
}
-- Other phrases
local lng = "tr"
MSD.Language[lng]["Move to point"] = "Noktaya git"
MSD.Language[lng]["Leave area"] = "Bölgeden ayrıl"
MSD.Language[lng]["Kill NPC"] = "NPC'yi öldür"
MSD.Language[lng]["Collect quest ents"] = "Görev varlıklarını topla"
MSD.Language[lng]["Talk to NPC"] = "NPC ile konuş"
MSD.Language[lng]["There is no quests available"] = "Mevcut görev bulunmamakta"
MSD.Language[lng]["Give weapon"] = "Silah ver"
MSD.Language[lng]["Give ammo"] = "Mermi ver"
MSD.Language[lng]["Strip Weapon"] = "Silaha el koy"
MSD.Language[lng]["Spawn quest entity"] = "Görev varlığı oluştur"
MSD.Language[lng]["Spawn entity"] = "Varlık oluştur"
MSD.Language[lng]["Spawn npc"] = "NPC oluştur"
MSD.Language[lng]["Manage do time"] = "Yapım süresini yönet"
MSD.Language[lng]["Spawn vehicle"] = "Araç oluştur"
MSD.Language[lng]["Remove vehicle"] = "Aracı kaldır"
MSD.Language[lng]["Remove all entites"] = "Tüm varlıkları kaldır"
MSD.Language[lng]["Set HP"] = "Can Ayarla"
MSD.Language[lng]["Set Armor"] = "Zırh Ayarla"
MSD.Language[lng]["DarkRP Money"] = "DarkRP Parası"
MSD.Language[lng]["Quest NPCs are disabled"] = "Görev NPC'leri devre dışı"
MSD.Language[lng]["You can enable them in settings"] = "Ayarlardan aktif edebilirsin"

View File

@@ -0,0 +1,150 @@
-- ┏━┓┏━┳━━━┳━━━┓───────────────────────
-- ┃┃┗┛┃┃┏━┓┣┓┏┓┃───────────────────────
-- ┃┏┓┏┓┃┗━━┓┃┃┃┃──By MacTavish <3──────
-- ┃┃┃┃┃┣━━┓┃┃┃┃┃───────────────────────
-- ┃┃┃┃┃┃┗━┛┣┛┗┛┃───────────────────────
-- ┗┛┗┛┗┻━━━┻━━━┛───────────────────────
-- MIT License
-- Copyright (c) 2021 Ayden Mactavish
-- Permission is hereby granted, free of charge, to any person obtaining a copy
-- of this software and associated documentation files (the "Software"), to deal
-- in the Software without restriction, including without limitation the rights
-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-- copies of the Software, and to permit persons to whom the Software is
-- furnished to do so, subject to the following conditions:
-- The above copyright notice and this permission notice shall be included in all
-- copies or substantial portions of the Software.
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-- SOFTWARE.
MSD.Config.Language = "en"
MSD.Config.Rounded = 8
MSD.Config.Blur = false
MSD.Config.Vignette = false
MSD.Config.BgrColor = Color(45, 45, 45)
MSD.Config.MainColor = {
["p"] = Color(0, 155, 255),
["r"] = Color(255, 0, 0),
["rd"] = Color(220, 0, 0),
}
MSD.Config.HUD = {
ShowIcon = false,
Icon = "https://i.imgur.com/ND3b6Do.png",
Text = "MacNCo",
X = 0.5,
Y = 0.5,
AlignX = 0,
IconRight = false,
IconSize = 48,
FontSize = 28,
ShowGroup = true,
TeamColor = false,
Follow = true,
Dist = 200,
}
function MSD.AddModule(name, menu, icon)
local mod = {
name = name,
icon = icon,
menu = menu
}
local id = MSD.ModuleIds[name]
if id then
MSD.Modules[id] = mod
else
id = table.insert(MSD.Modules, mod)
MSD.ModuleIds[name] = id
end
return id
end
--──────────────────────────────────--
------------- CFG Saving -------------
--──────────────────────────────────--
net.Receive("MSD.GetConfigData", function(l, ply)
if CLIENT then
MSD.Config = net.ReadTable()
else
net.Start("MSD.GetConfigData")
net.WriteTable(MSD.Config)
net.Send(ply)
end
end)
MSD.SaveConfig = function()
if CLIENT then
local json_data = util.TableToJSON(MSD.Config, false)
local cd = util.Compress(json_data)
local bn = string.len(cd)
net.Start("MSD.SaveConfig")
net.WriteInt(bn, 32)
net.WriteData(cd, bn)
net.SendToServer()
else
net.Start("MSD.GetConfigData")
net.WriteTable(MSD.Config)
net.Broadcast()
file.Write("msd_data/config.txt", util.TableToJSON(MSD.Config, true))
end
end
function MSD.LoadConfig()
if CLIENT then
net.Start("MSD.GetConfigData")
net.SendToServer()
else
net.Receive("MSD.SaveConfig", function(l, ply)
if MSD.cfgLastChange and MSD.cfgLastChange > CurTime() then return end
MSD.cfgLastChange = CurTime() + 1
if not ply:IsSuperAdmin() then return end
local bytes_number = net.ReadInt(32)
local compressed_data = net.ReadData(bytes_number)
local json_data = util.Decompress(compressed_data)
local config = util.JSONToTable(json_data)
MSD.Config = config
MSD.SaveConfig()
end)
if not file.Exists("msd_data/config.txt", "DATA") then
file.Write("msd_data/config.txt", util.TableToJSON(MSD.Config, true))
else
local config = util.JSONToTable(file.Read("msd_data/config.txt", "DATA"))
for k, v in pairs(config) do
if MSD.Config[k] ~= nil then
MSD.Config[k] = v
end
end
if #player.GetAll() > 0 then
net.Start("MSD.GetConfigData")
net.WriteTable(MSD.Config)
net.Broadcast()
end
end
end
end
if SERVER then
hook.Add("PostGamemodeLoaded", "MQMSDS.Load.SV", function()
MSD.LoadConfig()
end)
else
hook.Add("InitPostEntity", "MSD.Load.CL", function()
MSD.LoadConfig()
end)
end
if GAMEMODE then
MSD.LoadConfig()
end

View File

@@ -0,0 +1,30 @@
-- ┏━┓┏━┳━━━┳━━━┓───────────────────────
-- ┃┃┗┛┃┃┏━┓┣┓┏┓┃───────────────────────
-- ┃┏┓┏┓┃┗━━┓┃┃┃┃──By MacTavish <3──────
-- ┃┃┃┃┃┣━━┓┃┃┃┃┃───────────────────────
-- ┃┃┃┃┃┃┗━┛┣┛┗┛┃───────────────────────
-- ┗┛┗┛┗┻━━━┻━━━┛───────────────────────
local files = file.Find("msd/language/*", "LUA")
for k, v in ipairs(files) do
if (SERVER) then
include("msd/language/" .. v)
AddCSLuaFile("msd/language/" .. v)
MsgC(Color(174, 0, 255), "[MSD] " .. v .. " language found\n")
else
include("msd/language/" .. v)
end
end
function MSD.GetPhrase(name, ...)
local lang = MSD.Language[MSD.Config.Language] or MSD.Language["en"]
local prase = lang[name]
if not prase then
prase = MSD.Language["en"][name]
end
if not prase then return name end
return string.format(prase, ...)
end

View File

@@ -0,0 +1,423 @@
MSD.Icons48 = {
cross = Material("msd/icons/cross.png", "smooth"),
cog = Material("msd/icons/cog.png", "smooth"),
eye = Material("msd/icons/eye.png", "smooth"),
box = Material("mqs/map_markers/b5.png", "smooth"),
box_open = Material("mqs/icons/box_open.png", "smooth"),
layers = Material("msd/icons/layers.png", "smooth"),
layers_plus = Material("msd/icons/layers-plus.png", "smooth"),
layers_remove = Material("msd/icons/layers-remove.png", "smooth"),
briefcase = Material("msd/icons/briefcase.png", "smooth"),
account = Material("msd/icons/account.png", "smooth"),
account_plus = Material("msd/icons/account-plus.png", "smooth"),
account_edit = Material("msd/icons/account-edit.png", "smooth"),
account_multiple = Material("msd/icons/account-multiple.png", "smooth"),
account_convert = Material("msd/icons/account-convert.png", "smooth"),
arrow_up = Material("msd/icons/arrow_up.png", "smooth"),
arrow_down = Material("msd/icons/arrow_down.png", "smooth"),
folder_open = Material("msd/icons/folder-open.png", "smooth"),
file_document = Material("msd/icons/file-document.png", "smooth"),
menu = Material("msd/icons/menu.png", "smooth"),
dot = Material("msd/icons/dot.png", "smooth"),
pencil = Material("msd/icons/pencil.png", "smooth"),
play = Material("msd/icons/play.png", "smooth"),
plus = Material("msd/icons/plus.png", "smooth"),
back = Material("msd/icons/back.png", "smooth"),
calendar_check = Material("msd/icons/calendar-check.png", "smooth"),
playlist_edit = Material("msd/icons/playlist-edit.png", "smooth"),
seal = Material("msd/icons/seal.png", "smooth"),
save = Material("msd/icons/content-save.png", "smooth"),
copy = Material("msd/icons/content-copy.png", "smooth"),
submit = Material("msd/icons/check-decagram.png", "smooth"),
alert = Material("msd/icons/alert-circle.png", "smooth"),
arrow_down_color = Material("msd/icons/arrow_down_color.png", "smooth"),
face_agent = Material("msd/icons/face-agent.png", "smooth"),
swap = Material("msd/icons/swap.png", "smooth"),
search = Material("mqs/map_markers/c4.png", "smooth"),
tools = Material("mqs/map_markers/t1.png", "smooth"),
human_female = Material("msd/icons/human-female.png", "smooth"),
human_male = Material("msd/icons/human-male.png", "smooth"),
human_female_dance = Material("msd/icons/human-female-dance.png", "smooth"),
hand_peace_variant = Material("msd/icons/hand-peace-variant.png", "smooth"),
key = Material("msd/icons/key-variant.png", "smooth"),
key_arrow_right = Material("msd/icons/key-arrow-right.png", "smooth"),
key_link = Material("msd/icons/key-link.png", "smooth"),
key_plus = Material("msd/icons/key-plus.png", "smooth"),
key_remove = Material("msd/icons/key-remove.png", "smooth"),
key_star = Material("msd/icons/key-star.png", "smooth"),
door = Material("msd/icons/door.png", "smooth"),
car = Material("mqs/map_markers/v1.png", "smooth"),
cancel = Material("msd/icons/cancel.png", "smooth"),
reload = Material("msd/icons/reload.png", "smooth"),
reload_alert = Material("msd/icons/reload-alert.png", "smooth"),
heart = Material("msd/icons/cards-heart.png", "smooth"),
heart_outline = Material("msd/icons/cards-heart-outline.png", "smooth"),
heart_broken = Material("msd/icons/heart-broken.png", "smooth"),
heart_flash = Material("msd/icons/heart-flash.png", "smooth"),
skip_to = Material("msd/icons/debug-step-over.png", "smooth"),
food = Material("msd/icons/food.png", "smooth"),
food_off = Material("msd/icons/food-off-outline.png", "smooth"),
food_outline = Material("msd/icons/food-outline.png", "smooth"),
cash = Material("msd/icons/cash.png", "smooth"),
magazine = Material("msd/icons/magazine-pistol.png", "smooth"),
ammo = Material("mqs/icons/ammo.png", "smooth"),
armor = Material("mqs/map_markers/a1.png", "smooth"),
armor_outline = Material("mqs/map_markers/a2.png", "smooth"),
armor_broken = Material("mqs/map_markers/a4.png", "smooth"),
armor_flash = Material("mqs/map_markers/a5.png", "smooth")
}
MSD.Materials = {
vignette = Material("msd/vignette.png", "smooth"),
gradient = Material("gui/gradient", "smooth"),
gradient_right = Material("msd/gradient_right.png", "smooth"),
}
MSD.PinPoints = {
[0] = Material("mqs/icons/pin.png", "smooth"),
}
local files = file.Find("materials/mqs/map_markers/*", "GAME")
for k, v in pairs(files) do
MSD.PinPoints[k] = Material("mqs/map_markers/" .. v, "smooth")
end
MSD.ColorPresets = {Color(255, 20, 20), Color(255, 115, 0), Color(210, 255, 0), Color(0, 170, 25), Color(0, 155, 255), Color(0, 100, 200), Color(135, 0, 255), Color(255, 0, 100),}
MSD.Theme = {
["d_na"] = Color(25, 25, 26),
["d"] = Color(0, 5, 10, 165),
["m"] = Color(0, 5, 10, 120),
["l"] = Color(0, 5, 10, 85),
}
MSD.Text = {
["a"] = Color(150, 150, 150, 200),
["n"] = Color(150, 150, 150),
["d"] = Color(220, 220, 220),
["s"] = Color(235, 235, 235),
["m"] = Color(245, 245, 245),
["l"] = Color(255, 255, 255),
}
local NewFont = surface.CreateFont
for i = 0, 40 do
NewFont("MSDFont." .. 12 + i, {
font = "AdihausDIN",
extended = true,
size = 12 + i,
weight = 500
})
end
for i = 0, 20 do
NewFont("MSDFontB." .. 16 + i, {
font = "AdihausDIN",
extended = true,
size = 16 + i,
weight = 800
})
end
NewFont("MSDFont.Big", {
font = "AdihausDIN",
extended = true,
size = 45,
weight = 500
})
NewFont("MSDFont.Biger", {
font = "AdihausDIN",
extended = true,
size = 55,
weight = 500
})
function MSD.DrawBG(panel, w, h)
if MSD.Config.Blur then
MSD.Blur(panel, 1, 3, 255, 250 - MSD.Config.BgrColor.r, w, h)
else
draw.RoundedBox(MSD.Config.Rounded, 0, 0, w, h, MSD.Config.BgrColor)
end
end
function MSD.DrawTexturedOutlined(x, y, w, h, mat, color, outlinewidth, ocolor)
if isstring(mat) then
mat = Material(mat)
end
surface.SetMaterial(mat)
surface.SetDrawColor(ocolor)
local steps = ( outlinewidth * 2 ) / 3
if ( steps < 1 ) then steps = 1 end
for _x = -outlinewidth, outlinewidth, steps do
for _y = -outlinewidth, outlinewidth, steps do
surface.DrawTexturedRect(x + _x, y + _y, w, h)
end
end
surface.SetDrawColor(color)
surface.DrawTexturedRect(x, y, w, h)
end
local cached_mat = {}
function MSD.DrawTexturedRect(x, y, w, h, mat, color)
if isstring(mat) then
local crc = util.CRC(mat)
if not cached_mat[crc] then
cached_mat[crc] = Material(mat, "smooth")
end
mat = cached_mat[crc]
end
surface.SetDrawColor(color)
surface.SetMaterial(mat)
surface.DrawTexturedRect(x, y, w, h)
end
function MSD.DrawTexturedRectRotated(rot, x, y, w, h, mat, color)
if isstring(mat) then
local crc = util.CRC(mat)
if not cached_mat[crc] then
cached_mat[crc] = Material(mat, "smooth")
end
mat = cached_mat[crc]
end
surface.SetDrawColor(color)
surface.SetMaterial(mat)
surface.DrawTexturedRectRotated(x, y, w, h, rot)
end
function MSD.ColorAlpha(cl, al)
local new_cl = table.Copy(cl)
new_cl.a = al
return new_cl
end
local blur = Material("pp/blurscreen")
function MSD.Blur(panel, inn, density, alpha, back_alpha, w, h)
local x, y = panel:LocalToScreen(0, 0)
surface.SetDrawColor(255, 255, 255, alpha)
surface.SetMaterial(blur)
for i = 1, 3 do
blur:SetFloat("$blur", (i / inn) * density)
blur:Recompute()
render.UpdateScreenEffectTexture()
if w and h then
render.SetScissorRect(-x, -y, x + w, y + h, true)
surface.DrawTexturedRect(-x, -y, ScrW(), ScrH())
render.SetScissorRect(0, 0, 0, 0, false)
else
surface.DrawTexturedRect(-x, -y, ScrW(), ScrH())
end
end
if back_alpha and back_alpha > 0 then
draw.RoundedBox(MSD.Config.Rounded, 0, 0, w, h, MSD.ColorAlpha(color_black, back_alpha))
end
end
-- subUTF8 functions
local function SubStringGetByteCount(str, index)
local curByte = string.byte(str, index)
local byteCount = 1
if curByte == nil then
byteCount = 0
elseif curByte > 0 and curByte <= 127 then
byteCount = 1
elseif curByte >= 192 and curByte <= 223 then
byteCount = 2
elseif curByte >= 224 and curByte <= 239 then
byteCount = 3
elseif curByte >= 240 and curByte <= 247 then
byteCount = 4
end
return byteCount
end
local function SubStringGetTotalIndex(str)
local curIndex = 0
local i = 1
local lastCount = 1
repeat
lastCount = SubStringGetByteCount(str, i)
i = i + lastCount
curIndex = curIndex + 1
until (lastCount == 0)
return curIndex - 1
end
local function SubStringGetTrueIndex(str, index)
local curIndex = 0
local i = 1
local lastCount = 1
repeat
lastCount = SubStringGetByteCount(str, i)
i = i + lastCount
curIndex = curIndex + 1
until (curIndex >= index)
return i - lastCount
end
function string.subUTF8(str, startIndex, endIndex)
if startIndex < 0 then
startIndex = SubStringGetTotalIndex(str) + startIndex + 1
end
if endIndex ~= nil and endIndex < 0 then
endIndex = SubStringGetTotalIndex(str) + endIndex + 1
end
if endIndex == nil then
return string.sub(str, SubStringGetTrueIndex(str, startIndex))
else
return string.sub(str, SubStringGetTrueIndex(str, startIndex), SubStringGetTrueIndex(str, endIndex + 1) - 1)
end
end
-- Same used in DarkRP, used it here so we can use it with any gamemodes
local function CharWrap(t, w)
local a = 0
t = t:gsub(".", function(c)
a = a + surface.GetTextSize(c)
if a >= w then
a = 0
return "\n" .. c
end
return c
end)
return t, a
end
function MSD.TextWrap(text, font, w)
local total = 0
surface.SetFont(font)
local spaceSize = surface.GetTextSize(' ')
text = text:gsub("(%s?[%S]+)", function(word)
local char = string.subUTF8(word, 1, 1)
if char == "\n" or char == "\t" then
total = 0
end
local wordlen = surface.GetTextSize(word)
total = total + wordlen
if wordlen >= w then
local splitWord, splitPoint = CharWrap(word, w - (total - wordlen))
total = splitPoint
return splitWord
elseif total < w then
return word
end
if char == ' ' then
total = wordlen - spaceSize
return '\n' .. string.subUTF8(word, 2)
end
total = wordlen
return '\n' .. word
end)
local w_end, h_end = surface.GetTextSize(text)
return text, w_end, h_end
end
-- Image Lib
MSD.ImgLib = {}
MSD.ImgLib.Images = {}
MSD.ImgLib.PreCacheStarted = {}
MSD.ImgLib.Avatars = {}
MSD.ImgLib.NoMaterial = Material("msd/icons/file-hidden.png", "smooth noclamp")
function MSD.ImgLib.GetMaterial(url, jpg)
if url == "" then
return MSD.ImgLib.NoMaterial
end
local crc = util.CRC(url) .. ".png"
if jpg then
crc = util.CRC(url) .. ".jpg"
end
if MSD.ImgLib.Images[crc] then return MSD.ImgLib.Images[crc] end
if (file.Exists("msd_imgs/" .. crc, "DATA")) then
MSD.ImgLib.Images[crc] = Material("data/msd_imgs/" .. crc, "smooth noclamp")
return MSD.ImgLib.Images[crc]
else
return MSD.ImgLib.PreCacheMaterial(url, crc, jpg)
end
end
function MSD.ImgLib.PreCacheMaterial(url, crc, jpg)
if not crc then
crc = util.CRC(url) .. ".png"
end
if not file.Exists("msd_imgs", "DATA") then
file.CreateDir("msd_imgs")
end
if not MSD.ImgLib.PreCacheStarted[crc] then
MSD.ImgLib.PreCacheStarted[crc] = true
http.Fetch(url, function(body, size, headers, code)
if not jpg and (body:find("^.PNG")) then
file.Write("msd_imgs/" .. crc, body)
MSD.ImgLib.Images[crc] = Material("data/msd_imgs/" .. crc, "smooth noclamp")
return MSD.ImgLib.Images[crc]
elseif jpg then
file.Write("msd_imgs/" .. crc, body)
MSD.ImgLib.Images[crc] = Material("data/msd_imgs/" .. crc, "smooth noclamp")
else
print("Image is not a PNG, url - " .. url)
end
end, function()
print("Failed to get image, url - " .. url)
end)
end
return MSD.ImgLib.NoMaterial
end
function MSD.ImgLib.GetAvatar(crc)
crc = tostring(crc)
if not MSD.ImgLib.Avatars[crc] then
MSD.ImgLib.Avatars[crc] = ""
http.Fetch("https://macnco.one/steamid/avatar.php?input=" .. crc, function(body, size, headers, code)
MSD.ImgLib.Avatars[crc] = body
end, function()
print("Failed to get link, url - " .. url)
end)
end
return MSD.ImgLib.Avatars[crc] or ""
end

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,338 @@
local ScrW, ScrH = ScrW, ScrH
local Ln = MSD.GetPhrase
local logo = Material("msd/macnco.png", "smooth")
CreateClientConVar("mmd_lastscr", 0, true, false)
function MSD.AdminAccess(ply)
if MQS then
return MQS.IsEditor(ply)
end
if MRS then
return MRS.IsAdministrator(ply)
end
return ply:IsSuperAdmin()
end
function MSD.OpenMenuManager(parrent, mod_open)
if not MSD.AdminAccess(LocalPlayer()) then return end
if IsValid(MSD.SetupMenu) then
if not MSD.SetupMenu:IsVisible() then
MSD.SetupMenu:AlphaTo(255, 0.4)
MSD.SetupMenu:Show()
MSD.SetupMenu:Center()
return
end
if parrent then
MSD.SetupMenu:Center()
return
else
MSD.SetupMenu:Close()
end
end
local pnl_w, pnl_h = ScrW(), ScrH()
pnl_w, pnl_h = pnl_w - pnl_w / 4, pnl_h - pnl_h / 6
local panel, setbut
if parrent then
panel = parrent:Add("MSDSimpleFrame")
else
panel = vgui.Create("MSDSimpleFrame")
panel:MakePopup()
end
panel:SetSize(pnl_w, pnl_h)
panel:Center()
panel:SetAlpha(0)
panel:AlphaTo(255, 0.3)
panel.Paint = function(self, w, h)
MSD.DrawBG(self, w, h)
draw.RoundedBox(MSD.Config.Rounded, 0, 0, w, 50, MSD.Theme["d"])
draw.RoundedBox(MSD.Config.Rounded, 0, 52, w, h - 52, MSD.Theme["l"])
end
panel.clsBut = MSD.IconButton(panel, MSD.Icons48.cross, panel:GetWide() - 34, 10, 25, nil, MSD.Config.MainColor.p, function()
if panel.OnPress then
panel.OnPress()
return
end
panel:AlphaTo(0, 0.4, 0, function()
panel:Close()
end)
end)
function panel:OnClose()
if panel.ModuleSwitch then panel.ModuleSwitch() panel.ModuleSwitch = nil end
MSD.SetupMenu = nil
end
if not parrent then
panel.clsHide = MSD.IconButton(panel, MSD.Icons48.dot, panel:GetWide() - 64, 10, 25, nil, MSD.Config.MainColor.p, function()
if panel.OnPress then
panel.OnPress()
return
end
panel:AlphaTo(0, .4, 0, function()
MSD.SetupMenu:Hide()
end)
end)
end
panel.Menu = vgui.Create("MSDPanelList", panel)
panel.Menu:SetSize(panel:GetWide() / 2, 50)
panel.Menu:SetPos(0, 0)
--panel.Menu:EnableVerticalScrollbar()
panel.Menu:EnableHorizontal(true)
panel.Menu:SetSpacing(2)
panel.Menu.IgnoreVbar = true
panel.Menu.Paint = function() end
panel.Menu.Deselect = function(but)
if not but then return end
but.hovered = true
for k, v in pairs(panel.Menu:GetItems()) do
if v and v:IsValid() and v ~= but then
v.hovered = false
end
end
end
function panel.ReOpenCanvas()
if IsValid(panel.Canvas) then panel.Canvas:Remove() end
panel.Canvas = vgui.Create("DPanel", panel)
panel.Canvas:SetSize(panel:GetWide(), panel:GetTall() - 52)
panel.Canvas:SetPos(0, 52)
panel.Canvas.Paint = function() end
end
local cnv = GetConVar("mmd_lastscr")
function panel.OpenSettings()
cnv:SetInt(-1)
panel.ReOpenCanvas()
panel.Menu.Deselect(setbut)
MSD.OpenSettingsMenu(panel.Canvas, panel)
end
for id, mod in ipairs(MSD.Modules) do
local button = MSD.MenuButtonTop(panel.Menu, mod.icon, nil, nil, "auto", 50, mod.name, function(self)
if panel.ModuleSwitch then panel.ModuleSwitch() panel.ModuleSwitch = nil end
cnv:SetInt(id)
panel.ReOpenCanvas()
panel.Menu.Deselect(self)
mod.menu(panel.Canvas, panel)
end)
if (mod_open and id == mod_open) or (cnv:GetInt() == 0 and id == 1) or cnv:GetInt() == id then
panel.ReOpenCanvas()
panel.Menu.Deselect(button)
mod.menu(panel.Canvas, panel)
end
end
setbut = MSD.MenuButtonTop(panel.Menu, MSD.Icons48.cog, nil, nil, "auto", 50, "", function(self)
panel.OpenSettings()
end)
if cnv:GetInt() == -1 and not mod_open then
panel.OpenSettings()
end
MSD.SetupMenu = panel
return panel
end
function MSD.OpenSettingsMenu(panel)
oldcfg = MSD.Config
panel.Canvas = vgui.Create("MSDPanelList", panel)
panel.Canvas:SetSize(panel:GetWide() / 2 - 5, panel:GetTall())
panel.Canvas:SetPos(panel:GetWide() / 2 + 5, 0)
panel.Canvas:EnableVerticalScrollbar()
panel.Canvas:EnableHorizontal(true)
panel.Canvas:SetSpacing(2)
panel.Canvas.IgnoreVbar = true
panel.Canvas.Paint = function() end
panel.Settings = vgui.Create("MSDPanelList", panel)
panel.Settings:SetSize(panel:GetWide() / 2, panel:GetTall() - 80)
panel.Settings:SetPos(0, 0)
panel.Settings:EnableVerticalScrollbar()
panel.Settings:EnableHorizontal(true)
panel.Settings:SetSpacing(2)
panel.Settings.IgnoreVbar = true
panel.Settings.Paint = function() end
panel.Settings.Update = function()
panel.Settings:Clear()
MSD.Header(panel.Settings, Ln("set_ui"))
local combo = MSD.ComboBox(panel.Settings, "static", nil, 1, 50, "Language:", Ln("none"))
combo.OnSelect = function(self, index, text, data)
MSD.Config.Language = data
panel.Settings.Update()
end
for k, v in pairs(MSD.Language) do
combo:AddChoice(v.lang_name, k)
end
combo:SetValue(Ln("lang_name"))
local sld1
local function sliderCL(cl)
local c = math.Clamp(math.Round(cl * 255), 30, 250)
MSD.Config.BgrColor = Color(c, c, c)
end
MSD.DTextSlider(panel.Settings, "static", nil, 1, 50, Ln("set_ui_blur"), Ln("set_ui_mono"), MSD.Config.Blur, function(self, value)
MSD.Config.Blur = value
if value then
sld1.value = 1
sliderCL(sld1.value)
else
sld1.value = 0.18
sliderCL(sld1.value)
end
end)
sld1 = MSD.VolumeSlider(panel.Settings, "static", nil, 1, 50, Ln("set_ui_brightness"), MSD.Config.BgrColor.r / 255, function(self, var)
sliderCL(var)
end)
MSD.ColorSelector(panel.Settings, "static", nil, 1, 50, Ln("set_ui_color"), MSD.Config.MainColor.p, function(self, color)
MSD.Config.MainColor.p = color
end)
MSD.DTextSlider(panel.Settings, "static", nil, 1, 50, Ln("border_rounded"), Ln("border_square"), MSD.Config.Rounded == 8, function(self, value)
if value then
MSD.Config.Rounded = 8
else
MSD.Config.Rounded = 0
end
end)
if not MSD.HUD then return end
MSD.Header(panel.Settings, Ln("set_hud"))
MSD.BoolSlider(panel.Settings, "static", nil, 1, 50, Ln("custom_icon"), MSD.Config.HUD.ShowIcon, function(self, value)
MSD.Config.HUD.ShowIcon = value
end)
MSD.TextEntry(panel.Settings, "static", nil, 1, 50, Ln("q_icon68"), Ln("e_url") .. ":", MSD.Config.HUD.Icon, function(self, value)
MSD.Config.HUD.Icon = value
end)
MSD.TextEntry(panel.Settings, "static", nil, 1, 50, Ln("e_text"), Ln("e_text") .. ":", MSD.Config.HUD.Text, function(self, value)
MSD.Config.HUD.Text = value
end)
local acombo = MSD.ComboBox(panel.Settings, "static", nil, 1, 50, "", "")
local algm = {
Ln("set_ui_align_left"),
Ln("set_ui_align_center"),
Ln("set_ui_align_right")
}
for i,t in pairs(algm) do
acombo:AddChoice(t, i - 1)
acombo:SetValue(t)
end
acombo.OnSelect = function(self, index, text, data)
MSD.Config.HUD.AlignX = data
end
local sld0, txt1, sld2, txt2
sld0 = MSD.VolumeSlider(panel.Settings, "static", nil, 1.2, 50, Ln("set_ui_offset_h"), MSD.Config.HUD.X, function(self, var)
var = math.Round(var, 3)
MSD.Config.HUD.X = var
txt1:SetText(var * 100)
end)
txt1 = MSD.TextEntry(panel.Settings, "static", nil, 6, 50, "", "", MSD.Config.HUD.X * 100, function(self, value)
value = math.Clamp((tonumber(value) or 0) / 100,0,1)
sld0.value = value
MSD.Config.HUD.X = value
end, true, nil, nil, true)
sld2 = MSD.VolumeSlider(panel.Settings, "static", nil, 1.2, 50, Ln("set_ui_offset_v"), MSD.Config.HUD.Y, function(self, var)
var = math.Round(var, 3)
MSD.Config.HUD.Y = var
txt2:SetText(var * 100)
end)
txt2 = MSD.TextEntry(panel.Settings, "static", nil, 6, 50, "", "", MSD.Config.HUD.Y * 100, function(self, value)
value = math.Clamp((tonumber(value) or 0) / 100,0,1)
sld2.value = value
MSD.Config.HUD.Y = value
end, true, nil, nil, true)
MSD.BoolSlider(panel.Settings, "static", nil, 1, 50, Ln("show_team"), MSD.Config.HUD.ShowGroup, function(self, value)
MSD.Config.HUD.ShowGroup = value
end)
MSD.BoolSlider(panel.Settings, "static", nil, 1, 50, Ln("mrs_hud_follow"), MSD.Config.HUD.Follow, function(self, value)
MSD.Config.HUD.Follow = value
end)
MSD.BoolSlider(panel.Settings, "static", nil, 1, 50, Ln("use_team_colors"), MSD.Config.HUD.TeamColor, function(self, value)
MSD.Config.TeamColor = value
end)
MSD.BoolSlider(panel.Settings, "static", nil, 1, 50, Ln("icon_right"), MSD.Config.HUD.IconRight, function(self, value)
MSD.Config.HUD.IconRight = value
end)
MSD.VolumeSlider(panel.Settings, "static", nil, 1, 50, Ln("icon_size"), (MSD.Config.HUD.IconSize - 24) / 40, function(self, var)
var = math.Round(var, 3)
MSD.Config.HUD.IconSize = math.Clamp(24 + math.Round(var * 40), 24, 64)
end)
MSD.VolumeSlider(panel.Settings, "static", nil, 1, 50, Ln("font_size"), (MSD.Config.HUD.FontSize - 16) / 30, function(self, var)
var = math.Round(var, 3)
MSD.Config.HUD.FontSize = math.Clamp(16 + math.Round(var * 30), 16, 46)
end)
end
panel.Settings.Update()
if LocalPlayer():IsSuperAdmin() then
MSD.BigButton(panel, 0, panel:GetTall() - 80, panel:GetWide() / 4, 80, Ln("upl_changes"), MSD.Icons48.save, function()
MSD.SaveConfig()
panel.Settings.Update()
end)
MSD.BigButton(panel, panel:GetWide() / 4, panel:GetTall() - 80, panel:GetWide() / 4, 80, Ln("res_changes"), MSD.Icons48.cross, function()
MSD.Config = oldcfg
panel.Settings.Update()
end)
end
local pnl = vgui.Create("DPanel")
pnl.StaticScale = {
w = 1,
h = 1,
minw = 150,
minh = 150
}
pnl.Paint = function(self, w, h)
MSD.DrawTexturedRect(w / 2 - 128, h / 2 - 128, 256, 236, logo, MSD.Text["l"])
draw.DrawText("MSD UI version - " .. MSD.Version, "MSDFont.25", w / 2, h / 2 + 130, MSD.Text["l"], TEXT_ALIGN_CENTER)
end
panel.Canvas:AddItem(pnl)
end

View File

@@ -0,0 +1,187 @@
local PANEL = {}
AccessorFunc(PANEL, "m_bIsMenuComponent", "IsMenu", FORCE_BOOL)
AccessorFunc(PANEL, "m_bDraggable", "Draggable", FORCE_BOOL)
AccessorFunc(PANEL, "m_bSizable", "Sizable", FORCE_BOOL)
AccessorFunc(PANEL, "m_bScreenLock", "ScreenLock", FORCE_BOOL)
AccessorFunc(PANEL, "m_bDeleteOnClose", "DeleteOnClose", FORCE_BOOL)
AccessorFunc(PANEL, "m_bPaintShadow", "PaintShadow", FORCE_BOOL)
AccessorFunc(PANEL, "m_iMinWidth", "MinWidth", FORCE_NUMBER)
AccessorFunc(PANEL, "m_iMinHeight", "MinHeight", FORCE_NUMBER)
function PANEL:Init()
self:SetFocusTopLevel(true)
self:SetPaintShadow(true)
self:SetDraggable(true)
self:SetSizable(false)
self:SetScreenLock(false)
self:SetDeleteOnClose(true)
self:SetMinWidth(50)
self:SetMinHeight(50)
self:SetPaintBackgroundEnabled(false)
self:SetPaintBorderEnabled(false)
self.m_fCreateTime = SysTime()
self.WorkSpace = {
x = 0,
y = 52,
w = 0,
h = 0
}
self.WorkComponents = {}
end
function PANEL:Close()
self:SetVisible(false)
if (self:GetDeleteOnClose()) then
self:Remove()
end
self:OnClose()
end
function PANEL:OnClose()
end
function PANEL:Center()
self:InvalidateLayout(true)
self:CenterVertical()
self:CenterHorizontal()
end
function PANEL:IsActive()
if (self:HasFocus()) then return true end
if (vgui.FocusedHasParent(self)) then return true end
return false
end
function PANEL:Think()
local mousex = math.Clamp(gui.MouseX(), 1, ScrW() - 1)
local mousey = math.Clamp(gui.MouseY(), 1, ScrH() - 1)
if (self.Dragging) then
local x = mousex - self.Dragging[1]
local y = mousey - self.Dragging[2]
-- Lock to screen bounds if screenlock is enabled
if (self:GetScreenLock()) then
x = math.Clamp(x, 0, ScrW() - self:GetWide())
y = math.Clamp(y, 0, ScrH() - self:GetTall())
end
self:SetPos(x, y)
end
if (self.Sizing) then
local x = mousex - self.Sizing[1]
local y = mousey - self.Sizing[2]
local px, py = self:GetPos()
if (x < self.m_iMinWidth) then
x = self.m_iMinWidth
elseif (x > ScrW() - px and self:GetScreenLock()) then
x = ScrW() - px
end
if (y < self.m_iMinHeight) then
y = self.m_iMinHeight
elseif (y > ScrH() - py and self:GetScreenLock()) then
y = ScrH() - py
end
self:SetSize(x, y)
self:SetCursor("sizenwse")
return
end
local screenX, screenY = self:LocalToScreen(0, 0)
if (self.Hovered and self.m_bSizable and mousex > (screenX + self:GetWide() - 20) and mousey > (screenY + self:GetTall() - 20)) then
self:SetCursor("sizenwse")
return
end
if (self.Hovered and self:GetDraggable() and mousey < (screenY + 24)) then
self:SetCursor("sizeall")
return
end
self:SetCursor("arrow")
-- Don't allow the frame to go higher than 0
if (self.y < 0) then
self:SetPos(self.x, 0)
end
end
function PANEL:AddToWorkSpace(panel)
panel:SetParent(self)
panel:SetSize(self.WorkSpace.w, self.WorkSpace.h)
panel:SetPos(self.WorkSpace.x, self.WorkSpace.y)
local id = table.insert(self.WorkComponents, panel)
panel.OnRemove = function()
self.WorkComponents[id] = nil
end
end
function PANEL:Paint(w, h)
return true
end
function PANEL:OnMousePressed()
local screenX, screenY = self:LocalToScreen(0, 0)
if (self.m_bSizable and gui.MouseX() > (screenX + self:GetWide() - 20) and gui.MouseY() > (screenY + self:GetTall() - 20)) then
self.Sizing = {gui.MouseX() - self:GetWide(), gui.MouseY() - self:GetTall()}
self:MouseCapture(true)
return
end
if (self:GetDraggable() and gui.MouseY() < (screenY + 24)) then
self.Dragging = {gui.MouseX() - self.x, gui.MouseY() - self.y}
self:MouseCapture(true)
return
end
end
function PANEL:OnMouseReleased()
self.Dragging = nil
self.Sizing = nil
self:MouseCapture(false)
end
function PANEL:PerformLayout()
local Wide = self:GetWide()
local Tall = self:GetTall()
self.WorkSpace = {
x = 0,
y = 52,
w = Wide,
h = Tall - 52
}
if self.WorkComponents and #self.WorkComponents > 0 then
for i = 1, #self.WorkComponents do
local panel = self.WorkComponents[i]
if panel and IsValid(panel) then
panel:SetSize(self.WorkSpace.w, self.WorkSpace.h)
panel:SetPos(self.WorkSpace.x, self.WorkSpace.y)
panel:InvalidateLayout()
end
end
end
end
derma.DefineControl("MSDSimpleFrame", "A simple window for msd", PANEL, "EditablePanel")

View File

@@ -0,0 +1,234 @@
local PANEL = {}
AccessorFunc( PANEL, "m_fAnimSpeed", "AnimSpeed" )
AccessorFunc( PANEL, "Entity", "Entity" )
AccessorFunc( PANEL, "vCamPos", "CamPos" )
AccessorFunc( PANEL, "fFOV", "FOV" )
AccessorFunc( PANEL, "vLookatPos", "LookAt" )
AccessorFunc( PANEL, "aLookAngle", "LookAng" )
AccessorFunc( PANEL, "colAmbientLight", "AmbientLight" )
AccessorFunc( PANEL, "colColor", "Color" )
AccessorFunc( PANEL, "bAnimated", "Animated" )
function PANEL:Init()
self.Entity = nil
self.SubEntitys = {}
self.LastPaint = 0
self.DirectionalLight = {}
self.FarZ = 4096
self.Angles = Angle(0, 0, 0)
self:SetCamPos( Vector(0, 0, 0) )
self:SetLookAt( Vector(-100, 0, -22) )
self:SetFOV( 50 )
self:SetText( "" )
self:SetAnimSpeed( 0.5 )
self:SetAnimated( true )
self:SetAmbientLight( Color( 50, 50, 50 ) )
self:SetDirectionalLight( BOX_TOP, Color( 255, 255, 255 ) )
self:SetDirectionalLight( BOX_FRONT, Color( 255, 255, 255 ) )
self:SetDirectionalLight(BOX_RIGHT, Color(255, 160, 80, 255))
self:SetDirectionalLight(BOX_LEFT, Color(80, 160, 255, 255))
self:SetColor( Color( 255, 255, 255, 255 ) )
end
function PANEL:SetDirectionalLight( iDirection, color )
self.DirectionalLight[ iDirection ] = color
end
function PANEL:SetModel( strModelName )
if ( IsValid( self.Entity ) ) then
self.Entity:Remove()
self.Entity = nil
end
if ( !ClientsideModel ) then return end
self.Entity = ClientsideModel( strModelName, RENDERGROUP_OTHER )
if ( !IsValid( self.Entity ) ) then return end
self.Entity:SetNoDraw( true )
self.Entity:SetIK( false )
local iSeq = self.Entity:LookupSequence( "walk_all" )
if ( iSeq <= 0 ) then iSeq = self.Entity:LookupSequence( "WalkUnarmed_all" ) end
if ( iSeq <= 0 ) then iSeq = self.Entity:LookupSequence( "walk_all_moderate" ) end
if ( iSeq > 0 ) then self.Entity:ResetSequence( iSeq ) end
end
function PANEL:GetModel()
if ( !IsValid( self.Entity ) ) then return end
return self.Entity:GetModel()
end
function PANEL:DrawModel()
local curparent = self
local leftx, topy = self:LocalToScreen( 0, 0 )
local rightx, bottomy = self:LocalToScreen( self:GetWide(), self:GetTall() )
while ( curparent:GetParent() != nil ) do
curparent = curparent:GetParent()
local x1, y1 = curparent:LocalToScreen( 0, 0 )
local x2, y2 = curparent:LocalToScreen( curparent:GetWide(), curparent:GetTall() )
leftx = math.max( leftx, x1 )
topy = math.max( topy, y1 )
rightx = math.min( rightx, x2 )
bottomy = math.min( bottomy, y2 )
previous = curparent
end
render.SetScissorRect( leftx, topy, rightx, bottomy, true )
local ret = self:PreDrawModel( self.Entity )
if ( ret != false ) then
self.Entity:DrawModel()
for k,v in pairs(self.SubEntitys) do
if IsValid(v) then
v:DrawModel()
if v.bone and isnumber(v.bone) then
local pos, ang = MCS.GetBoneOrientation(self.Entity, v.bone, v.pos, v.ang)
ang:RotateAroundAxis(ang:Up(), v.ang.y)
ang:RotateAroundAxis(ang:Right(), v.ang.p)
ang:RotateAroundAxis(ang:Forward(), v.ang.r)
v:SetPos(pos + ang:Forward() * v.pos.x + ang:Right() * v.pos.y + ang:Up() * v.pos.z)
v:SetAngles(ang)
end
end
end
self:PostDrawModel( self.Entity )
end
render.SetScissorRect( 0, 0, 0, 0, false )
end
function PANEL:PreDrawModel( ent )
return true
end
function PANEL:PostDrawModel( ent )
end
function PANEL:DragMousePress()
self.PressX, self.PressY = gui.MousePos()
self.Pressed = true
end
function PANEL:DoDoubleClick()
if self:GetFOV() < 10 then
self:SetFOV(50)
else
self:SetFOV(self:GetFOV() - 5)
end
end
function PANEL:DragMouseRelease()
self.Pressed = false
end
function PANEL:Paint( w, h )
if ( !IsValid( self.Entity ) ) then return end
local x, y = self:LocalToScreen( 0, 0 )
self:LayoutEntity( self.Entity )
local ang = self.aLookAngle
if ( !ang ) then
ang = ( self.vLookatPos - self.vCamPos ):Angle()
end
cam.Start3D( self.vCamPos, ang, self.fFOV, x, y, w, h, 5, self.FarZ )
render.SuppressEngineLighting( true )
render.SetLightingOrigin( self.Entity:GetPos() )
render.ResetModelLighting( self.colAmbientLight.r / 255, self.colAmbientLight.g / 255, self.colAmbientLight.b / 255 )
render.SetColorModulation( self.colColor.r / 255, self.colColor.g / 255, self.colColor.b / 255 )
render.SetBlend( ( self:GetAlpha() / 255 ) * ( self.colColor.a / 255 ) ) -- * surface.GetAlphaMultiplier()
for i = 0, 6 do
local col = self.DirectionalLight[ i ]
if ( col ) then
render.SetModelLighting( i, col.r / 255, col.g / 255, col.b / 255 )
end
end
self:DrawModel()
render.SuppressEngineLighting( false )
cam.End3D()
self.LastPaint = RealTime()
end
function PANEL:RunAnimation()
self.Entity:FrameAdvance( ( RealTime() - self.LastPaint ) * self.m_fAnimSpeed )
end
function PANEL:StartScene( name )
if ( IsValid( self.Scene ) ) then
self.Scene:Remove()
end
self.Scene = ClientsideScene( name, self.Entity )
end
function PANEL:LayoutEntity(ent)
if (self.bAnimated) then
self:RunAnimation()
end
if (self.Pressed) then
local mx = gui.MousePos()
self.Angles = self.Angles - Angle(0, (self.PressX or mx) - mx, 0)
self.PressX, self.PressY = gui.MousePos()
end
ent:SetAngles(self.Angles)
end
function PANEL:OnRemove()
if ( IsValid( self.Entity ) ) then
self.Entity:Remove()
end
for k,v in pairs(self.SubEntitys) do
if IsValid(v) then
v:Remove()
end
end
end
function PANEL:GenerateExample( ClassName, PropertySheet, Width, Height )
local ctrl = vgui.Create( ClassName )
ctrl:SetSize( 300, 300 )
ctrl:SetModel( "models/props_junk/PlasticCrate01a.mdl" )
ctrl:GetEntity():SetSkin( 2 )
PropertySheet:AddSheet( ClassName, ctrl, nil, true, true )
end
derma.DefineControl( "MSDModelPanel", "A panel containing a model but more epic", PANEL, "DButton" )

View File

@@ -0,0 +1,186 @@
if SERVER then return end
local tblOpenMenus = {}
function RegisterDermaMenuForClose(dmenu)
table.insert(tblOpenMenus, dmenu)
end
function MSD.MenuOpen(parentmenu, parent, bg)
if (not parentmenu) then
CloseDermaMenus()
end
local dmenu = vgui.Create("MSD.DMenu", parent)
dmenu.ShadowStatic = 0
dmenu.ShadowInt = 1
dmenu.Paint = function(self, w, h)
if bg then
draw.RoundedBox(MSD.Config.Rounded, 0, 0, w, h, MSD.Theme["d_na"])
else
MSD.Blur(self, 1, 2, 255, 55, w, h)
draw.RoundedBox(MSD.Config.Rounded, 0, 0, w, h, MSD.Theme["d"])
end
end
return dmenu
end
function CloseDermaMenus()
for k, dmenu in pairs(tblOpenMenus) do
if (IsValid(dmenu)) then
dmenu:SetVisible(false)
if (dmenu:GetDeleteSelf()) then
dmenu:Remove()
end
end
end
tblOpenMenus = {}
hook.Run("CloseDermaMenus")
end
local function DermaDetectMenuFocus(panel, mousecode)
if (IsValid(panel)) then
if (panel.m_bIsMenuComponent) then return end
return DermaDetectMenuFocus(panel:GetParent(), mousecode)
end
CloseDermaMenus()
end
hook.Add("VGUIMousePressed", "MatDMenuDetectMenuFocus", DermaDetectMenuFocus)
local PANEL = {}
AccessorFunc(PANEL, "m_bBorder", "DrawBorder")
AccessorFunc(PANEL, "m_bDeleteSelf", "DeleteSelf")
AccessorFunc(PANEL, "m_iMinimumWidth", "MinimumWidth")
AccessorFunc(PANEL, "m_bDrawColumn", "DrawColumn")
AccessorFunc(PANEL, "m_iMaxHeight", "MaxHeight")
AccessorFunc(PANEL, "m_pOpenSubMenu", "OpenSubMenu")
function PANEL:Init()
self:SetIsMenu(true)
self:SetDrawBorder(true)
self:SetPaintBackground(true)
self:SetMinimumWidth(100)
self:SetDrawOnTop(true)
self:SetMaxHeight(ScrH() * 0.9)
self:SetDeleteSelf(true)
self:SetPadding(0)
RegisterDermaMenuForClose(self)
end
function PANEL:AddOption(strText, funcFunction, icon, check)
if check and not check() then return end
local pnl = vgui.Create("MSD.DMenuOption", self)
pnl:SetMenu(self)
pnl:SetText(strText)
if icon then
pnl.icon = icon
pnl:SetTextInset(38, 0)
end
if (funcFunction) then
pnl.DoClick = funcFunction
end
self:AddPanel(pnl)
return pnl
end
function PANEL:AddSubMenu(strText, funcFunction)
local pnl = vgui.Create("MSD.DMenuOption", self)
local SubMenu = pnl:AddSubMenu(strText, funcFunction)
pnl:SetText(strText)
if (funcFunction) then
pnl.DoClick = funcFunction
end
self:AddPanel(pnl)
return SubMenu, pnl
end
derma.DefineControl("MSD.DMenu", "A Menu 2", PANEL, "DMenu")
PANEL = {}
AccessorFunc(PANEL, "m_pMenu", "Menu")
AccessorFunc(PANEL, "m_bChecked", "Checked")
AccessorFunc(PANEL, "m_bCheckable", "IsCheckable")
function PANEL:Init()
self:SetContentAlignment(4)
self:SetTextInset(10, 0)
self:SetFont("MSDFont.16")
self:SetTextColor(MSD.Text["s"])
self:SetChecked(false)
self.ChangeCC = true
self.ColorText = MSD.Text["s"]
end
function PANEL:OnCursorEntered()
self.ColorText = MSD.Config.MainColor["p"]
self.ChangeCC = true
if (IsValid(self.ParentMenu)) then
self.ParentMenu:OpenSubMenu(self, self.SubMenu)
return
end
self:GetParent():OpenSubMenu(self, self.SubMenu)
end
function PANEL:OnCursorExited()
self.ColorText = MSD.Text["l"]
self.ChangeCC = true
end
function PANEL:AddSubMenu()
local SubMenu = MSD.MenuOpen(true, self)
SubMenu:SetVisible(false)
SubMenu:SetParent(self)
self:SetSubMenu(SubMenu)
return SubMenu
end
function PANEL:Paint(w, h)
if self.ChangeCC then
self:SetTextColor(self.ColorText)
self.ChangeCC = nil
end
if self.icon then
local ih = h - 6
MSD.DrawTexturedRect(5, 3, ih, ih, self.icon, self.ColorText)
end
end
function PANEL:PerformLayout( w, h )
self:SizeToContents()
self:SetWide( self:GetWide() + 30 )
w = math.max( self:GetParent():GetWide(), self:GetWide() )
self:SetSize( w, self.icon and 30 or 22 )
if ( IsValid( self.SubMenuArrow ) ) then
self.SubMenuArrow:SetSize( 15, 15 )
self.SubMenuArrow:CenterVertical()
self.SubMenuArrow:AlignRight( 4 )
end
DButton.PerformLayout( self, w, h )
end
derma.DefineControl("MSD.DMenuOption", "Menu Option Line 2", PANEL, "DMenuOption")

View File

@@ -0,0 +1,413 @@
local PANEL = {}
AccessorFunc(PANEL, "m_bSizeToContents", "AutoSize")
AccessorFunc(PANEL, "m_bStretchHorizontally", "StretchHorizontally")
AccessorFunc(PANEL, "m_bNoSizing", "NoSizing")
AccessorFunc(PANEL, "m_bSortable", "Sortable")
AccessorFunc(PANEL, "m_fAnimTime", "AnimTime")
AccessorFunc(PANEL, "m_fAnimEase", "AnimEase")
AccessorFunc(PANEL, "m_strDraggableName", "DraggableName")
AccessorFunc(PANEL, "Spacing", "Spacing")
AccessorFunc(PANEL, "Padding", "Padding")
function PANEL:Init()
self:SetDraggableName("GlobalDPanel")
self.pnlCanvas = vgui.Create("DPanel", self)
self.pnlCanvas:SetPaintBackground(false)
self.pnlCanvas.OnMousePressed = function(s, code)
s:GetParent():OnMousePressed(code)
end
self.pnlCanvas.OnChildRemoved = function()
self:OnChildRemoved()
end
self.pnlCanvas:SetMouseInputEnabled(true)
self.pnlCanvas.InvalidateLayout = function()
self:InvalidateLayout()
end
self.pnlCanvas.MasterPanel = self
self.Items = {}
self.YOffset = 0
self.m_fAnimTime = 0
self.m_fAnimEase = -1
self.m_iBuilds = 0
self.IgnoreVbar = true
self:SetSpacing(0)
self:SetPadding(0)
self:EnableHorizontal(false)
self:SetAutoSize(false)
self:SetPaintBackground(true)
self:SetNoSizing(false)
self:SetMouseInputEnabled(true)
self:SetPaintBackgroundEnabled(false)
self:SetPaintBorderEnabled(false)
end
function PANEL:OnModified()
-- Override me
end
function PANEL:SizeToContents()
self:SetSize(self.pnlCanvas:GetSize())
end
function PANEL:GetItems()
return self.Items
end
function PANEL:EnableHorizontal(bHoriz)
self.Horizontal = bHoriz
end
local sdw = Color(0, 0, 0, 70)
function PANEL:EnableVerticalScrollbar()
if (self.VBar) then return end
self.VBar = vgui.Create("DVScrollBar", self)
self.VBar.Paint = function(s, w, h)
draw.RoundedBox(4, 3, 13, 8, h - 24, sdw)
end
self.VBar.btnUp.Paint = function(s, w, h) end
self.VBar.btnDown.Paint = function(s, w, h) end
self.VBar.btnGrip.Paint = function(s, w, h)
draw.RoundedBox(4, 5, 0, 4, h + 22, sdw)
end
end
function PANEL:GetCanvas()
return self.pnlCanvas
end
function PANEL:Clear(nDelete)
for k, panel in pairs(self.Items) do
if (not IsValid(panel)) then continue end
panel:Remove()
if (nDelete) then
panel:SetVisible(false)
end
end
self.Items = {}
end
function PANEL:ClearEX(ex_panel)
if (not IsValid(ex_panel)) then return end
for k, panel in pairs(self.Items) do
if (not IsValid(panel)) then continue end
if (panel ~= ex_panel) then
panel:Remove()
end
end
self.Items = {}
table.insert(self.Items, ex_panel)
end
function PANEL:AddItem(item, strLineState)
if (not IsValid(item)) then return end
item:SetVisible(true)
item:SetParent(self:GetCanvas())
item.m_strLineState = strLineState or item.m_strLineState
table.insert(self.Items, item)
item:SetSelectable(self.m_bSelectionCanvas)
self:InvalidateLayout()
end
function PANEL:InsertBefore(before, insert, strLineState)
table.RemoveByValue(self.Items, insert)
self:AddItem(insert, strLineState)
local key = table.KeyFromValue(self.Items, before)
if (key) then
table.RemoveByValue(self.Items, insert)
table.insert(self.Items, key, insert)
end
end
function PANEL:InsertAfter(before, insert, strLineState)
table.RemoveByValue(self.Items, insert)
self:AddItem(insert, strLineState)
local key = table.KeyFromValue(self.Items, before)
if (key) then
table.RemoveByValue(self.Items, insert)
table.insert(self.Items, key + 1, insert)
end
end
function PANEL:InsertAtTop(insert, strLineState)
table.RemoveByValue(self.Items, insert)
self:AddItem(insert, strLineState)
local key = 1
if (key) then
table.RemoveByValue(self.Items, insert)
table.insert(self.Items, key, insert)
end
end
function PANEL.DropAction(Slot, RcvSlot)
local PanelToMove = Slot.Panel
if (dragndrop.m_MenuData == "copy") then
if (PanelToMove.Copy) then
PanelToMove = Slot.Panel:Copy()
PanelToMove.m_strLineState = Slot.Panel.m_strLineState
else
return
end
end
PanelToMove:SetPos(RcvSlot.Data.pnlCanvas:ScreenToLocal(gui.MouseX() - dragndrop.m_MouseLocalX, gui.MouseY() - dragndrop.m_MouseLocalY))
if (dragndrop.DropPos == 4 or dragndrop.DropPos == 8) then
RcvSlot.Data:InsertBefore(RcvSlot.Panel, PanelToMove)
else
RcvSlot.Data:InsertAfter(RcvSlot.Panel, PanelToMove)
end
end
function PANEL:RemoveItem(item, bDontDelete)
for k, panel in pairs(self.Items) do
if (panel == item) then
self.Items[k] = nil
if (not bDontDelete) then
panel:Remove()
end
self:InvalidateLayout()
end
end
end
function PANEL:CleanList()
for k, panel in pairs(self.Items) do
if (not IsValid(panel) or panel:GetParent() ~= self.pnlCanvas) then
self.Items[k] = nil
end
end
end
function PANEL:HorizontalRebuild(Offset)
local x, y = self.Padding, self.Padding
local l_highest = 0
for k, panel in pairs(self.Items) do
if (panel:IsVisible()) then
if panel.StaticScale then
local w, h
if isstring(panel.StaticScale.w) then
w = tonumber(panel.StaticScale.w)
w = (self.pnlCanvas:GetWide() - (self.pnlCanvas:GetWide() / w)) - (self.Spacing + self.Padding)
elseif panel.StaticScale.w == 1 then
w = self.pnlCanvas:GetWide() / panel.StaticScale.w - (self.Spacing + self.Padding)
else
w = self.pnlCanvas:GetWide() / panel.StaticScale.w - (self.Spacing + self.Padding) / 1.5
end
if panel.StaticScale.fixed_h then
h = panel.StaticScale.fixed_h
elseif panel.StaticScale.h_w then
h = w
elseif panel.StaticScale.h then
if isstring(panel.StaticScale.h) then
h = tonumber(panel.StaticScale.h)
h = (self:GetTall() - (self:GetTall() / h)) - (self.Spacing + self.Spacing / h + self.Padding)
elseif panel.StaticScale.h == 1 then
h = self:GetTall() / panel.StaticScale.h - (self.Spacing + self.Padding)
else
h = self:GetTall() / panel.StaticScale.h - (self.Spacing + self.Padding)
end
end
if panel.StaticScale.minw > w then
w = panel.StaticScale.minw
end
if panel.StaticScale.h and panel.StaticScale.minh > h then
h = panel.StaticScale.minh
end
panel:SetSize(w, h)
end
local OwnLine = (panel.m_strLineState and panel.m_strLineState == "ownline")
local w = panel:GetWide()
local h = panel:GetTall()
local vbar = 0
if (self.VBar and self.VBar.Enabled and not self.IgnoreVbar) then
vbar = 13
end
if (x > self.Padding and (x + w > (self:GetWide() - vbar) or OwnLine)) then
x = self.Padding
y = y + l_highest + self.Spacing
l_highest = h
end
if h > l_highest then
l_highest = h
end
if (self.m_fAnimTime > 0 and self.m_iBuilds > 1) then
panel:MoveTo(x, y, self.m_fAnimTime, 0, self.m_fAnimEase)
else
panel:SetPos(x, y)
end
x = x + w + self.Spacing
Offset = y + l_highest + self.Spacing
if (OwnLine) then
x = self.Padding
y = y + h + self.Spacing
end
end
end
return Offset
end
function PANEL:NormalRebuild(Offset)
for k, panel in pairs(self.Items) do
if (panel:IsVisible()) then
if (self.m_bNoSizing) then
panel:SizeToContents()
if (self.m_fAnimTime > 0 and self.m_iBuilds > 1) then
panel:MoveTo((self:GetCanvas():GetWide() - panel:GetWide()) * 0.5, self.Padding + Offset, self.m_fAnimTime, 0, self.m_fAnimEase)
else
panel:SetPos((self:GetCanvas():GetWide() - panel:GetWide()) * 0.5, self.Padding + Offset)
end
else
panel:SetWide(self:GetCanvas():GetWide() - self.Padding * 2)
if (self.m_fAnimTime > 0 and self.m_iBuilds > 1) then
panel:MoveTo(self.Padding, self.Padding + Offset, self.m_fAnimTime, self.m_fAnimEase)
else
panel:SetPos(self.Padding, self.Padding + Offset)
end
end
panel:InvalidateLayout(true)
Offset = Offset + panel:GetTall() + self.Spacing
end
end
Offset = Offset + self.Padding
return Offset
end
function PANEL:Rebuild()
local Offset = 0
self.m_iBuilds = self.m_iBuilds + 1
self:CleanList()
if (self.Horizontal) then
Offset = self:HorizontalRebuild(Offset)
else
Offset = self:NormalRebuild(Offset)
end
self:GetCanvas():SetTall(Offset + self.Padding - self.Spacing)
if (self.m_bNoSizing and self:GetCanvas():GetTall() < self:GetTall()) then
self:GetCanvas():SetPos(0, (self:GetTall() - self:GetCanvas():GetTall()) * 0.5)
end
end
function PANEL:OnMouseWheeled(dlta)
if (self.VBar) then return self.VBar:OnMouseWheeled(dlta) end
end
function PANEL:Paint(w, h)
derma.SkinHook("Paint", "PanelList", self, w, h)
return true
end
function PANEL:OnVScroll(iOffset)
self.pnlCanvas:SetPos(0, iOffset)
end
function PANEL:PerformLayout()
local Wide = self:GetWide()
local Tall = self.pnlCanvas:GetTall()
local YPos = 0
if (not self.Rebuild) then
debug.Trace()
end
self:Rebuild()
if (self.VBar) then
self.VBar:SetPos(self:GetWide() - 13, 0)
self.VBar:SetSize(13, self:GetTall())
self.VBar:SetUp(self:GetTall(), self.pnlCanvas:GetTall())
YPos = self.VBar:GetOffset()
if not self.IgnoreVbar then
Wide = Wide - 13
end
end
self.pnlCanvas:SetPos(0, YPos)
self.pnlCanvas:SetWide(Wide)
if (self:GetAutoSize()) then
self:SetTall(self.pnlCanvas:GetTall())
self.pnlCanvas:SetPos(0, 0)
end
if (self.VBar and not self:GetAutoSize() and Tall ~= self.pnlCanvas:GetTall()) then
self.VBar:SetScroll(self.VBar:GetScroll())
end
end
function PANEL:OnChildRemoved()
self:CleanList()
self:InvalidateLayout()
end
function PANEL:ScrollToChild(panel)
local _, y = self.pnlCanvas:GetChildPosition(panel)
local _, h = panel:GetSize()
y = y + h * 0.5
y = y - self:GetTall() * 0.5
self.VBar:AnimateTo(y, 0.5, 0, 0.5)
end
function PANEL:SortByMember(key, desc)
desc = desc or true
table.sort(self.Items, function(a, b)
if (desc) then
local ta = a
local tb = b
a = tb
b = ta
end
if (a[key] == nil) then return false end
if (b[key] == nil) then return true end
return a[key] > b[key]
end)
end
derma.DefineControl("MSDPanelList", "Fancy DpanelList", PANEL, "DPanel")