Перейти к контенту

Рекомендуемые сообщения

https://yadi.sk/d/4EUvTWhzdnAve

https://yadi.sk/d/wzSTaTNVh8Eeb

 

Документация Lua от Nazgool. Какая из версий актуальная - не знаю.

 

З.Ы. когда же люди научатся оформлять и правильно выкладывать свои работы, а не только писать их?..

Изменено пользователем RayTwitty
  • Полезно 1
Ссылка на комментарий

 

 

  naxac писал(а):
Внесу и свои три копейки)

 

не уверен, что требуются такие сложности (свои классы и т.д. и т.п.), в реальной жизни все, как правило, намного проще...

К примеру, имеем таблицу соответствия кодов символов разных раскладок, типа

tbl_code = {
[097] = 244, -- a --> ф
[098] = 232, -- b --> и
...
}

имеем языковой флаг режима ввода текста, типа
mode_lang = true -- false - Eng; true - Рус

и дале просто при вводе проверяем и добавляем в строку либо английский, либо русский символ

if mode_lang then str = str.. string.char(tbl_code[csim])
else str = str.. string.char(csim) end

при переключении режима ввода (варианты самые различные: от кнопок до "горячих" клавиш), просто переключаем флаг
mode_lang = not mode_lang

  • Спасибо 1
  • Согласен 1
Ссылка на комментарий
  RayTwitty писал(а):

З.Ы. когда же люди научатся оформлять и правильно выкладывать свои работы, а не только писать их?..

http://www.amk-team.ru/forum/index.php?showtopic=11584

Куда уж правильней :)

Ссылка на комментарий

Почему идея? Я таким пользуюсь.

Чтобы не творить велосипед, вот полная таблица перекодировки.

А остальное? Вы же все профи.

 

Все вопросы по ограничению к DS.

 

  table (Показать)
  • Спасибо 1
  • Полезно 1
Ссылка на комментарий
  naxac писал(а):

...если это не CUIEditBox из Сталкера.

нет, это именно оттуда
  naxac писал(а):

...если это не CUIEditBox из Сталкера.

а, если это не это, то и вообще проблем нет.

 

т.к. уже прозвучали намёки на флуд с моей стороны, то привожу полный код скрипта,
который реализует всё о чём я сказал в сообщении #55.

Код таблицы перекодировки я уже приводил раньше. В скрипте она подключается из внешнего файла (мне так удобнее).

  Ввод кириллицы в ТЧ (Показать)
Изменено пользователем Black Hawk
Ссылка на комментарий

 

  naxac писал(а):
Функция string.lower с поддержкой кириллицы
Поскольку Сталкер работает с кодировкой ANSI, и последовательность символов в этой кодировке вполне линейна (кроме символов 'Ё' - 'ё'), то функции 'lower' и 'upper' можно записать альтернативно :
  Показать
local _lower = string.lower
local _upper = string.upper

function string.lower(s)
    return _lower(s:gsub("([А-Я])",function(c) return string.char(c:byte()+32) end):gsub("Ё", "ё"))
end

function string.upper(s)
    return _upper(s:gsub("([а-я])",function(c) return string.char(c:byte()-32) end):gsub("ё", "Ё"))
end

 

 

 

  Zander_driver писал(а):
Господа, я все понимаю, мы тут все программисты и сами себе все пишем.
Ну например так :
  Показать
--[[ ----------------------------------------------------------------------------------------------
 File       : lua_xml.lua
 Copyright  : 2015 © Prosectors Mod
 Author     : Gerald Franz, www.viremo.de Copyright (C) 2007-2010 
 Editors    : Nazgool, nazgool@ukr.net
              Charsi
              OGSE Team
 Description: Набор функций для работы с xml-файлами. В таблицу _G добавляется пространство _G.xml
                           (edition by Nazgool)
              Из оригинальной библиотеки удалена LuaXml_lib.dll.
              Функции из неё (за иключением registerCode) переписаны на lua.
--]] ----------------------------------------------------------------------------------------------

module '_G'

xml = {}

-- symbolic name for tag index, this allows accessing the tag by var[xml.TAG]
xml.TAG = 0

local symbols = {
    ['\000'] = '\000',
    ['\001'] = '\001',
    ['\002'] = '\002',
    ['\003'] = '\003',
    ['\004'] = '\004',
    ['\005'] = '\005',
    ['\006'] = '\006',
    ['\007'] = '\007',
    ['\008'] = '\008',
    ['\009'] = '\009',
    ['\010'] = '\010',
    ['\011'] = '\011',
    ['\012'] = '\012',
    ['\013'] = '\013',
    ['\014'] = '\014',
    ['\015'] = '\015',
    ['\016'] = '\016',
    ['\017'] = '\017',
    ['\018'] = '\018',
    ['\019'] = '\019',
    ['\020'] = '\020',
    ['\021'] = '\021',
    ['\022'] = '\022',
    ['\023'] = '\023',
    ['\024'] = '\024',
    ['\025'] = '\025',
    ['\026'] = '\026',
    ['\027'] = '\027',
    ['\028'] = '\028',
    ['\029'] = '\029',
    ['\030'] = '\030',
    ['\031'] = '\031',
    ['\032'] = '\032',
    ['\033'] = '\033',
    ['\034'] = '"', -- кавычка "
    ['\035'] = '\035',
    ['\036'] = '\036',
    ['\037'] = '\037',
    ['\038'] = '&', -- амперсанд &
    ['\039'] = '\039',
    ['\040'] = '\040',
    ['\041'] = '\041',
    ['\042'] = '\042',
    ['\043'] = '\043',
    ['\044'] = '\044',
    ['\045'] = '\045',
    ['\046'] = '\046',
    ['\047'] = '\047',
    ['\048'] = '\048',
    ['\049'] = '\049',
    ['\050'] = '\050',
    ['\051'] = '\051',
    ['\052'] = '\052',
    ['\053'] = '\053',
    ['\054'] = '\054',
    ['\055'] = '\055',
    ['\056'] = '\056',
    ['\057'] = '\057',
    ['\058'] = '\058',
    ['\059'] = '\059',
    ['\060'] = '<', -- левая угловая скобка <
    ['\061'] = '\061',
    ['\062'] = '>', -- правая угловая скобка  >
    ['\063'] = '\063',
    ['\064'] = '\064',
    ['\065'] = '\065',
    ['\066'] = '\066',
    ['\067'] = '\067',
    ['\068'] = '\068',
    ['\069'] = '\069',
    ['\070'] = '\070',
    ['\071'] = '\071',
    ['\072'] = '\072',
    ['\073'] = '\073',
    ['\074'] = '\074',
    ['\075'] = '\075',
    ['\076'] = '\076',
    ['\077'] = '\077',
    ['\078'] = '\078',
    ['\079'] = '\079',
    ['\080'] = '\080',
    ['\081'] = '\081',
    ['\082'] = '\082',
    ['\083'] = '\083',
    ['\084'] = '\084',
    ['\085'] = '\085',
    ['\086'] = '\086',
    ['\087'] = '\087',
    ['\088'] = '\088',
    ['\089'] = '\089',
    ['\090'] = '\090',
    ['\091'] = '\091',
    ['\092'] = '\092',
    ['\093'] = '\093',
    ['\094'] = '\094',
    ['\095'] = '\095',
    ['\096'] = '\096',
    ['\097'] = '\097',
    ['\098'] = '\098',
    ['\099'] = '\099',
    ['\100'] = '\100',
    ['\101'] = '\101',
    ['\102'] = '\102',
    ['\103'] = '\103',
    ['\104'] = '\104',
    ['\105'] = '\105',
    ['\106'] = '\106',
    ['\107'] = '\107',
    ['\108'] = '\108',
    ['\109'] = '\109',
    ['\110'] = '\110',
    ['\111'] = '\111',
    ['\112'] = '\112',
    ['\113'] = '\113',
    ['\114'] = '\114',
    ['\115'] = '\115',
    ['\116'] = '\116',
    ['\117'] = '\117',
    ['\118'] = '\118',
    ['\119'] = '\119',
    ['\120'] = '\120',
    ['\121'] = '\121',
    ['\122'] = '\122',
    ['\123'] = '\123',
    ['\124'] = '\124',
    ['\125'] = '\125',
    ['\126'] = '\126',
    ['\127'] = '\127',
    ['\128'] = '\128',
    ['\129'] = '\129',
    ['\130'] = '\130',
    ['\131'] = '\131',
    ['\132'] = '\132',
    ['\133'] = '\133',
    ['\134'] = '\134',
    ['\135'] = '\135',
    ['\136'] = '\136',
    ['\137'] = '\137',
    ['\138'] = '\138',
    ['\139'] = '\139',
    ['\140'] = '\140',
    ['\141'] = '\141',
    ['\142'] = '\142',
    ['\143'] = '\143',
    ['\144'] = '\144',
    ['\145'] = '\145',
    ['\146'] = '\146',
    ['\147'] = '\147',
    ['\148'] = '\148',
    ['\149'] = '\149',
    ['\150'] = '\150',
    ['\151'] = '\151',
    ['\152'] = '\152',
    ['\153'] = '\153',
    ['\154'] = '\154',
    ['\155'] = '\155',
    ['\156'] = '\156',
    ['\157'] = '\157',
    ['\158'] = '\158',
    ['\159'] = '\159',
    ['\160'] = ' '  , -- неразрывный пробел
    ['\161'] = '¡' , -- перевернутый восклицательный знак
    ['\162'] = '¢'  , -- цент
    ['\163'] = '£' , -- фунт стерлингов
    ['\164'] = '¤', -- знак денежной единицы ¤
    ['\165'] = '¥'   , -- йена
    ['\166'] = '¦', -- вертикальная черта ¦
    ['\167'] = '§'  , -- параграф §
    ['\168'] = '¨'   , -- диереза
    ['\169'] = '©'  , -- знак авторского права ©
    ['\170'] = 'ª'  , -- показатель женского рода
    ['\171'] = '«' , -- открывающая двойная угловая кавычка «
    ['\172'] = '¬'   , -- знак отрицания ¬
    ['\173'] = '­'   , -- мягкий перенос
    ['\174'] = '®'   , -- охраняемый знак ®
    ['\175'] = '¯'  , -- надчеркивание
    ['\176'] = '°'   , -- градус °
    ['\177'] = '±', -- плюс-минус ±
    ['\178'] = '²'  , -- вторая степень
    ['\179'] = '³'  , -- третья степень
    ['\180'] = '´' , -- острое ударение
    ['\181'] = 'µ' , -- знак микро µ
    ['\182'] = '¶'  , -- конец абзаца ¶
    ['\183'] = '·', -- средняя точка ·
    ['\184'] = '¸' , -- седиль
    ['\185'] = '¹'  , -- единица в верхнем индексе
    ['\186'] = 'º'  , -- показатель мужского рода
    ['\187'] = '»' , -- закрывающая двойная угловая кавычка »
    ['\188'] = '¼', -- одна четвертая
    ['\189'] = '½', -- одна вторая
    ['\190'] = '¾', -- три четверти
    ['\191'] = '¿', -- перевернутый вопросительный знак
    ['\192'] = '\192',
    ['\193'] = '\193',
    ['\194'] = '\194',
    ['\195'] = '\195',
    ['\196'] = '\196',
    ['\197'] = '\197',
    ['\198'] = '\198',
    ['\199'] = '\199',
    ['\200'] = '\200',
    ['\201'] = '\201',
    ['\202'] = '\202',
    ['\203'] = '\203',
    ['\204'] = '\204',
    ['\205'] = '\205',
    ['\206'] = '\206',
    ['\207'] = '\207',
    ['\208'] = '\208',
    ['\209'] = '\209',
    ['\210'] = '\210',
    ['\211'] = '\211',
    ['\212'] = '\212',
    ['\213'] = '\213',
    ['\214'] = '\214',
    ['\215'] = '\215',
    ['\216'] = '\216',
    ['\217'] = '\217',
    ['\218'] = '\218',
    ['\219'] = '\219',
    ['\220'] = '\220',
    ['\221'] = '\221',
    ['\222'] = '\222',
    ['\223'] = '\223',
    ['\224'] = '\224',
    ['\225'] = '\225',
    ['\226'] = '\226',
    ['\227'] = '\227',
    ['\228'] = '\228',
    ['\229'] = '\229',
    ['\230'] = '\230',
    ['\231'] = '\231',
    ['\232'] = '\232',
    ['\233'] = '\233',
    ['\234'] = '\234',
    ['\235'] = '\235',
    ['\236'] = '\236',
    ['\237'] = '\237',
    ['\238'] = '\238',
    ['\239'] = '\239',
    ['\240'] = '\240',
    ['\241'] = '\241',
    ['\242'] = '\242',
    ['\243'] = '\243',
    ['\244'] = '\244',
    ['\245'] = '\245',
    ['\246'] = '\246',
    ['\247'] = '\247',
    ['\248'] = '\248',
    ['\249'] = '\249',
    ['\250'] = '\250',
    ['\251'] = '\251',
    ['\252'] = '\252',
    ['\253'] = '\253',
    ['\254'] = '\254',
    ['\255'] = '\255',
}

function xml.encode(str)
    if type(str)~="string" then return end
    return str:gsub('.', symbols)
end

function xml.eval (str)
    if type(str)~="string" then return end
    local data = {}
    str = str:gsub('%s-<!%-%-.-%-%->', '') -- убрать комментарии
    str = str:gsub('%s-<%?xml.-%?>'  , '') -- убрать заголовок если есть
    
    local function parse_str(str, parent)
        local tag, prop, rest = str:match("<%s-([%w_]+)%s*(.-)>(.-)$")
        
        if tag then
            local child = {[0] = tag}
            table.insert(parent, child)
            
            for key, value in prop:gmatch('(%S+)="(%S+)"') do
                child[key] = value
            end
            
            if prop:match('/$') then -- самозакрывающийся тег
                parse_str(rest, parent)
            else                     -- закрывающий тег
                str, rest = rest:match('^%s*(.-)%s-</%s-'..tag..'%s->(.-)$')
                child[1] = str:match('^%s-<') and parse_str(str, child) or str
                parse_str(rest, parent)
            end
            
            return child
        end
    end
    
    parse_str(str, data)
    
    return setmetatable(data[1],{__index=xml, __tostring=xml.str}) or nil
end

function xml.load (root_alias, local_path)
    local fs   = getFS()
    local path = fs:update_path(root_alias, local_path)
    local file = io.open(path)
    
    if file then -- файл в распакованном виде на диске
        local str = file:read('*a')
        file:close()
        return xml.eval(str)
    elseif fs:exist(path) then -- файл  в архиве
        file = fs:r_open(path)
        local chars = {}
        local index = 1
        local _char = string.char
        
        while not file:r_eof() do
            chars[index] = _char(file:r_u8())
            index = index + 1
        end
        
        return xml.eval(table.concat(chars))
    end
    
    return nil
end

-- sets or returns tag of a LuaXML object
function xml.tag(var,tag)
    if type(var) ~= "table" then return end
    if not tag then 
        return var[0]
    end
    var[0] = tag
end

-- creates a new LuaXML object either by setting the metatable of an existing Lua table or by setting its tag
function xml.new(arg)
    local tag = (type(arg)=="string" and arg)
    local var = (type(arg)=="table"  and arg) or {[0]=tag}

    return setmetatable(var, {__index=xml, __tostring=xml.str})
end

-- appends a new subordinate LuaXML object to an existing one, optionally sets tag
function xml.append(var,tag)
    if type(var)~="table" then return end
    local arg = xml.new(tag)
    var[#var+1] = arg
    return arg
end

-- converts any Lua var into an XML string
function xml.str(var,indent,tagValue)
    if not var then return end
    local indent = indent or 0
    local indentStr = ""
    for i = 1,indent do indentStr = indentStr.."  " end
    local tableStr = ""
    
    if type(var)=="table" then
        local tag = var[0] or tagValue or type(var)
        local s = indentStr.."<"..tag
        for k,v in pairs(var) do -- attributes 
            if type(k)=="string" then
                if type(v)=="table" and k~="_M" then --  otherwise recursiveness imminent
                    tableStr = tableStr..xml.str(v,indent+1,k)
                else
                    s = s.." "..k.."=\""..encode(tostring(v)).."\""
                end
            end
        end
        if #var==0 and #tableStr==0 then
            s = s.." />\n"
        elseif #var==1 and type(var[1])~="table" and #tableStr==0 then -- single element
            s = s..">"..encode(tostring(var[1])).."</"..tag..">\n"
        else
            s = s..">\n"
            for k,v in ipairs(var) do -- elements
                if type(v)=="string" then
                    s = s..indentStr.."  "..encode(v).." \n"
                else
                    s = s..xml.str(v,indent+1)
                end
            end
            s=s..tableStr..indentStr.."</"..tag..">\n"
        end
        return s
    else
        local tag = type(var)
        return indentStr.."<"..tag.."> "..encode(tostring(var)).." </"..tag..">\n"
    end
end

-- saves a Lua var as xml file
function xml.save(var, filename)
    if var and filename and #filename ~= 0 then
        local file = io.open(filename, 'w')
        if file then
            file:write("<?xml version=\"1.0\" encoding=\"windows-1251\"?>\n\n")
            file:write(xml.str(var))
            file:close()
            return true
        else
            filename = filename:gsub('\\', '/')
            local dir, path, name = string.match(filename, '^([^/]+)(.-)([^/]+)$')
            local cur_dir = lfs.currentdir()
        
            for node in string.gmatch(path, "[^/]+") do
                dir = dir .. '/'.. node
                if not lfs.chdir(dir) then
                    lfs.mkdir(dir)
                end
            end
        
            lfs.chdir(cur_dir)
            xml.save(var, filename)
        end
    end
    return false
end

-- Function 'xml.find' ----------------------
local function is_value (obj, value)
    for _, v in pairs(obj) do
        if v == value then
            return true
        end
    end
    return false
end

local function is_key(obj,key,value)
    if value then
        return obj[key]==value
    end
    return obj[key] ~= nil
end

local function is_tag(obj,tag,key,value)
    if obj[0]==tag then
        if key then
            return is_key(obj,key,value)
        elseif value then
            return is_value(obj,value)
        end
        return true
    end
    return false
end

local function check(obj, tag, key, value) 
    if tag then 
        return is_tag(obj,tag,key,value)
    elseif key then
        return is_key(obj,key,value)
    elseif value then
        return is_value(obj,value)
    end
    
    return true
end

local function parse(obj, tag, key, value, index, parent)
    if check(obj, tag, key, value) then
        setmetatable(obj,{__index=xml, __tostring=xml.str})
        coroutine.yield(obj, index, parent)
    end
    -- recursively parse subtags:
    for k,v in ipairs(obj) do
        if type(v)=="table" then
            parse(v, tag, key, value, k, obj)
        end
    end
end

local thread = nil

function xml.find (obj, tag, key, val)
    -- check input:
    if type(obj)~="table" then return nil end
    tag = (type(tag)=="string") and #tag>0 and tag
    key = (type(key)=="string") and #key>0 and key
    val = (type(val)=="string") and #val>0 and val
    
    if tag then
        local tag1,tag2 = tag:match("(.-).+)")
        if tag1 then
            local res = xml.find(obj, tag1) or {}
            setmetatable(res,{__index=xml, __tostring=xml.str})
            return xml.find(res, tag2, key, val)
        end
    end
    
    thread = coroutine.create(parse)
    return select(2,coroutine.resume(thread, obj, tag, key, val))
end

function xml.next()
    if coroutine.status(thread)=='dead' then return end
    return select(2,coroutine.resume(thread))
end

function xml.remove(obj, tag, key, val)
    if type(obj)~="table" then return nil end
    if type(tag)=="string" and #tag==0 then tag=nil end
    local _,index = obj:find(tag, key, val)
    if not index then return end
    return table.remove(obj,index)
end

 
Ну а подключать можно по-разноному. Как *script, или как *.lua, или ... да мало ли кому как нужно.

 

  RayTwitty писал(а):
Какая из версий актуальная - не знаю.
Что значит какая?
Первая ссылка это учебник по lua 5.1 плюс некоторые моменты про lua 5.2
А вторая - справочник по lua 5.1 взятый из руссифицированной сборки LuaForWindows.
Обе пока актуальны.

 

  RayTwitty писал(а):
когда же люди научатся оформлять и правильно выкладывать свои работы, а не только писать их?..
Не, ну это уже ... сами назовите как-нибудь.
Написать выходит ерунда. Главное правильно презентовапть.
Да-а-а. Напиши, отдай, а теперь ещё разжуй и вообще "сделай всё за меня". Так что-ли?
Изменено пользователем Nazgool
  • Полезно 1
Ссылка на комментарий

Снова перезалил архив, ссылка та же. Указал необходимость удаления/закомменчивания xr_statistic и sr_psy_antenna в оригинальных методах сохранения в bind_stalker, т.к. они сохраняются в чанках

  • Нравится 2

Шаман - СисАдмин

Всяко-разно: для ЧН

Ссылка на комментарий

Класс "Список_Значений" а-ля 1С.

Все описания и инструкции в коде, поэтому длинновато.

 

  Показать

 

Если подобное кому-то надо, то оформю в соответствии с правилами форума аналогичный "Таблица_Значений".У него функционал поболее.

Изменено пользователем Murarius
Ссылка на комментарий

Обнаружена и исправлена критическая ошибка в модуле универсального хранилища se_stor, приводившая к периодической невозможности сохранить в чанках данные всех подключённых внешних модулей.

Ссылки те же (обновлены комплект se_stor и общий комплект).

За помощь в тестировании спасибо @Romz.

Изменено пользователем Kirgudu
  • Спасибо 1

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

Ссылка на комментарий

@Zander_driver, если чувствуется, что это может кому-нибудь пригодиться, почему бы и нет? Хотя могут и помидорами закидать...

 

Раз уж так вышло, что я недавно взял на себя посильную доводку модулей Артоса, позволю себе слегка прокомментировать обновлённую шапку.

  Zander_driver писал(а):
Тут не просто установка модулей на ЗП, а, во-первых, сами модули (самая свежая их версия, с исправленными ошибками), во-вторых, модули полностью адаптированы ко всем платформам (естественно, для чистой игры) и в-третьих, некоторые кроссмодульные функции приведены к единому стилю, то есть сочетать модули между собой можно как угодно. Следует рекомендовать их скачивать именно из этого поста.

  Zander_driver писал(а):
А вот тут как раз лежат устаревшие модули Артоса, с одной стороны более приближённые к оригиналу автора, но с другой - с ошибками. Именно поэтому я бы их не рекомендовал, если кто-то не готов доработать самостоятельно.

  Zander_driver писал(а):
В этом общем комплекте от @Romz также использовался устаревший se_stor, неправильно работающий с чанками на платформах ЧН/ЗП.

  Zander_driver писал(а):
Для своего времени штука была хорошая, но сейчас уже сильно устарела, да и не без ошибок. Разве только кому-то позарез нужна именно старая версия... Изменено пользователем Kirgudu
  • Полезно 2

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

Ссылка на комментарий

 

 

  Zander_driver писал(а):
набор инструментов управляемого массового спавна/респавна надо кому?...

< пропущено > ... Хотя с другой стороны это же банальщина которую наверняка каждый сам сделал.

Если смотреть со стороны вас - профи, то, как было отмечено, они "могут и помидорами закидать". А, если смотреть с другой стороны, тех которые только начинают в этом разбирать, то это очень даже хорошо и полезно. На чём же они еще могут учиться? Я думаю, что эта ветка форума в основном и должна быть сориентирована именно на эту категорию. Выкладывайте, кому-то обязательно пригодится.

  • Спасибо 1
Ссылка на комментарий

-- функция возвращает название части тела по номеру кости. Часто используется в хит-колбеках НПС.

function get_body_part_by_bone_index(bone_index)

if bone_index then

if bone_index < 5 then

return "left_foot"

elseif bone_index < 9 then

return "right_foot"

elseif bone_index < 11 then

return "torso"

elseif bone_index < 18 then

return "head"

elseif bone_index < 31 then

return "left_hand"

elseif bone_index < 40 then

return "right_hand"

end

end

end

-- сравнивает два угла в радианах с погрешностью второго угла

function radians_cmp(angle1, angle2, range_min, range_max)

range_min = angle2 - range_min

range_max = angle2 + range_max

if range_max > 1.57 then

range_max = -4.71 + (range_max - 1.57)

end

if range_min < -4.71 then

range_min = 1.57 - (range_min - 4.71)

end

return angle1 > range_min and angle1 < range_max

end

На счет последнего не знаю, использовал давно, возможно есть стандартный аналог или можно лучше написать. Но по крайней мере, все работало. Изменено пользователем RayTwitty
Ссылка на комментарий

Расширение базовой библиотеки Lua string.

Наверное такое будет полезно начинающим и тем кто не очень себя уверенно чувствует в применении шаблонов. Остальные могут пропустить. Если требуется подробное описание и примеры применения, то (они у меня есть, но это занимает значительный объем) могу добавить и это.

 

  Код (Показать)
Изменено пользователем Zander_driver
  • Полезно 3
Ссылка на комментарий

Расширение функционала ранее выложенного модуля assembly_dialogs.

Добавлено удобное автоматическое формирование "разных ответов нпс" на вопрос ГГ.

 

Берем тот же самый assembly_dialogs.script, в конец файла добавляем следующий код:

 

  тык (Показать)
  • Спасибо 2
  • Полезно 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий

https://yadi.sk/d/dZNjgRAtinEjU

Вер. 1.14

Скрипт для тайминга скриптов имеющий апдейт. Для ТЧ(1.000*), ЧН(1.5.*), ЗП(1.6.*). Для ТЧ возможно может работать и в предрелизных билдах, на лост альфе не тестировался.

Для определения общей загрузки скриптами ЦП, используется алгоритм следующий: в начале фрейма  самый первый скрипт (апдейт актора) запускает общий таймер и каждый следующий скрипт отработав, запоминает время, и если в тайминг включён скрипт который выполнился самым последним (как правило это сам апдейт этого скрипта) , то фиксируем общее время выполнения скриптовой части движка. Время обычно это не мало, 40-60%, а на пустом уровне 12%(ТЧ), не зря разработчики жаловались на движок XRay, что слишком за скриптован.

Замеченные проблемы, может конфликтовать с некоторыми скриптами отрабатывающие эффекты поедание съедобных предметов.

 

https://yadi.sk/d/sdLew6XKqLuzF

Вер. 1.15

Тайминг скриптов.

Устранил вылет из-за отсутствия функции round в моде OGSE 0693, заменена на math.floor. Немного возросло быстродействия скрипта.
Изменено пользователем НаноБот
объединил посты
  • Спасибо 1
  • Нравится 1

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
  • Куратор(ы) темы:

×
×
  • Создать...