LUA пару вопросов технического характера.

Banana

Участник
Сообщения
892
Реакции
113
Господа дайте ответ на несколько вопросов:
1) LUA - язык программирования схожий с..? если pawn схож с C (C++\C#) то с чем схож этот?
2) LUA - кто-то говорил мне что в Gary's mod скрипт который запущен на сервере может скачать (посмотреть\украсть) любой школьник который подключится к серверу - это правда или я что-то не так понял?
3) Кто знает PAWN и LUA ... - знаю что возможно это не корректный вопрос однако какой язык сложнее? сложнее научиться писать скрипты на PAWN на CSGO или LUA для Garry's mod? скажите ваше субьективное мнение.
5) Если для PAWN есть sourcemod то для LUA что?
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
1. Паскале-подобный.
2. Нет, там есть возможность писать клиентские скрипты. Только они загружаются на клиент. Нет смысла даже передавать серверный скрипт.
3. Все на самом деле простое, но для освоения всего нужны усилия.
5. Пропустил вопрос 4. Для lua есть много чего))) Смысл гаррис мода состоит в пользовательских модах. И они выбрали lue в качестве скриптового языка для более простой и быстрой реализации модов.
 

Reiko1231

AlexTheRegent
Сообщения
508
Реакции
1,336
Я пожалуй тоже оставлю своё мнение.

1. Мне кажется что Lua больше похож на python/javascript.
2. Не знаю, но по тому, что мне говорили, @gibs сказал правильно - есть клиентские скрипты (загружаются клиенту), есть серверные (не загружаются клиенту).
3. С Lua знаком заочно, точно сказать не могу, однако ниже напишу свои мысли по этому поводу. Хотя один из плюсов Lua - он является динамически типизированным языком, что делает его освоение чуточку проще.
4. Нет вопроса.
5. Ответ ниже.

Моё личное мнение. Pawn постепенно себя изживает (моё личное мнение, основанное на политике валв, которая по моему мнению направлена на снижение количества серверов сообщества), в то время как Lua расширяется. Если стоит выбор, какой язык изучать (из этих двух), я однозначно скажу Lua. Это связано с тем, что Pawn это только движок сурс. Lua это полноценный язык. На нём написано множество игр (среди которых Payday 2, Don't Starve и многие другие), программ (косвенно могу сказать, что движок сурс использует фреймворк SDL2, который, в свою очередь, так же портирован и на Lua) и прочих вещей (так, например, в Dota 2 скрипты для пользовательских игр (кастомки) пишутся на Lua). Осваивать Lua просто перспективнее.
 

Banana

Участник
Сообщения
892
Реакции
113
Спасибо большое.. pawn я уже знаю на досточно высоком уровне.. давно удмал заняться Garry's mod и GTA а там на сколько мне известно есть только LUA
 

Rustgame

Ленивая кошатина!
Сообщения
254
Реакции
151
Спасибо большое.. pawn я уже знаю на досточно высоком уровне.. давно удмал заняться Garry's mod и GTA а там на сколько мне известно есть только LUA
Я знаю как можно украсть аддон, но, я опираюсь на серверную часть,
Тоесть как работает hookaddons(dll который Якобы крадет) когда ты на сервере
И допустим видишь Hud он записывается у тебя в папке с игрой - Cache
А dll только переделывает для работы,

Коротко говоря, Он ворует только клиентскую часть, а серверную не сможет, допустим настройки mysql
 

Banana

Участник
Сообщения
892
Реакции
113
Я знаю как можно украсть аддон, но, я опираюсь на серверную часть,
Тоесть как работает hookaddons(dll который Якобы крадет) когда ты на сервере
И допустим видишь Hud он записывается у тебя в папке с игрой - Cache
А dll только переделывает для работы,

Коротко говоря, Он ворует только клиентскую часть, а серверную не сможет, допустим настройки mysql
другими словами я могу не переживать что мой уникальный плагин украдут?)
 

Rustgame

Ленивая кошатина!
Сообщения
254
Реакции
151
другими словами я могу не переживать что мой уникальный плагин украдут?)
Если большую половину делать не опираясь на клиент часть, меню, панели,
Все что клиент слышит видит обрабатывает, что происходит только на сервере
Пароли и тд не найдут, если даже украдут то врятли заработает без sv части

А так легкий язык программирования:

C-подобный:
--[ Владелец - Rustgame ]-- --[ Wiki.Garrysmod.com ]--
------------------------------------------------------

local draw = draw
local surface = surface
local cam = cam
local math = math
local team = team
local ply = LocalPlayer()

local eyepos
local Page = Material("icon64/tool.png")

------------------------------------------------------

surface.CreateFont ("PlayerOrg1", {     
        size = 55,
        weight = 800,
        antialias = true,
        additive = false,       
        font = "Tahoma"})
        
------------------------------------------------------

hook.Add("RenderScene", "3D2DNicksPosAng",function(pos)
    eyepos = pos
end)


hook.Add("PostPlayerDraw", "3D2DNicks", function(ply)
    local dist = ply:GetPos():Distance(eyepos)
    if dist > 350 or !ply:Alive() then return end
    local bone = ply:LookupAttachment("eyes")
    if bone == 0 then return end
            
    local attach = ply:GetAttachment(bone)
    local alpha = 255 * (1 - math.Clamp((dist - 255) / 100, 0, 1))
    local color = team.GetColor(ply:Team())
    local jobcolor = Color(color.r, color.g, color.b, alpha)
    local nickcolor = Color(255,255,255,255)

    if ply:GetNWBool("PlayerNickColored", false) then
        local col = ply:GetNWVector("PlayerNickColor")
        nickcolor = Color(col.x, col.y, col.z, alpha)
    end

    local team = ply:GetUserGroup()
    local name = ply:Nick()


    if team == "superadmin" then team = "Основатель" end
    if team == "admin" then team = "Администратор" end
    if team == "user" then team = "Игрок" end
    if team == "root" then team = "Root" end
    if team == "vip" then team = "VIP" end
    if team == "youtube" then team = "Стример/YouTube" end
    if team == "moderator" then team = "Смотритель" end
    
    local Page = Material("icon16/user.png")
    local metal = MyMoney
    
    local hpplayer = ply:Health()
    local armorplayer = ply:Armor()
    
    local orrg=ply:GetNWString("orgName")
    cam.Start3D2D(attach.Pos + Vector(0, 0, 25), Angle(0, (attach.Pos - eyepos):Angle().y - 90, 90), 0.05)
        if
        (ply:IsSpeaking()) then
        draw.SimpleText("Говорит", "PlayerOrg1", 202, 365, Color(255, 255, 255, 257), TEXT_ALIGN_LEFT)
        elseif
        (ply:GetNW2Bool('ti_istyping')) then
        draw.SimpleText("Пишет", "PlayerOrg1", 202, 365, Color(255, 255, 255, 257), TEXT_ALIGN_LEFT)
        end
        draw.SimpleText("Ник", "PlayerOrg1", 202, 400, Color(255, 255, 255, 257), TEXT_ALIGN_LEFT)
        draw.SimpleText(" | "..name, "PlayerOrg1", 400, 400, Color(255, 255, 255, 257), TEXT_ALIGN_LEFT)
        draw.SimpleText("Ранг", "PlayerOrg1", 202, 435, Color(255, 255, 255, 257), TEXT_ALIGN_LEFT)
        draw.SimpleText(" | "..team, "PlayerOrg1", 400, 435, Color(255, 255, 255, 257), TEXT_ALIGN_LEFT)
        if
        (LocalPlayer():GetUserGroup() == "root")             or
        (LocalPlayer():GetUserGroup() == "superadmin")        or
        (LocalPlayer():GetUserGroup() == "admin")             or
        (LocalPlayer():GetUserGroup() == "moderator")         or
        (LocalPlayer():GetUserGroup() == "youtube")         or
        (LocalPlayer():GetUserGroup() == "vip")             then
        draw.SimpleText("HP", "PlayerOrg1", 202, 470, Color(255, 255, 255, 257), TEXT_ALIGN_LEFT)
        draw.SimpleText(" | "..hpplayer, "PlayerOrg1", 400, 470, Color(255, 255, 255, 257), TEXT_ALIGN_LEFT)
        draw.SimpleText("Бронь", "PlayerOrg1", 202, 505, Color(255, 255, 255, 257), TEXT_ALIGN_LEFT)
        draw.SimpleText(" | "..armorplayer, "PlayerOrg1", 400, 505, Color(255, 255, 255, 257), TEXT_ALIGN_LEFT)
        end
    cam.End3D2D()
end)
 
Сверху Снизу