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

[SoC] Ковыряемся в файлах


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

ты не понел, нуно удалить этот рестриктор чтобы вылета небыло, на него повешана проверка находения в нем непися со стори_ид 24, а раз такого нету - нате вам вылет :ny_biggrin:

Строгое предупреждение от модератора n6260
Пишите без ошибок.
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий

Какой максимальный обьем переменной в ЛУА сталкеровском можно сделать?Если у меня таблица,допустим,килобайт 300 будет - это нормально?

 

====

 

И еще: вот у меня есть обьект.Как мне определить клиентский он или серверный?

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

Krevedko, както так...

class "ggg"
-- вызывать из bind_stalker.actor_binder:update(delta)
function ggg:init()
for i = 0,65535,0 do
local obj = level.object_by_id(i)
if obj:id() and obj:id() == db.actor:id() then
obj = db.actor
end
end
if obj.health >0.1 then
self:gg_bessmerten(obj)
else
self:gg_bessmerten(obj)
end
end
function ggg:gg_bessmerten(obj)
for i = 1,(3-math.floor(16-225/15)-1) do
if obj.health <0.1 then
obj.health = obj.health+1
end
if obj.health >0.1 then
obj.health = obj.health+1
end
if obj.health =0.1 then
obj.health = obj.health+1
end
end
end

 

в bind_stalker.actor_binder:update(delta) (=скрипт bind_stalker, функция actor_binder:update(delta)) пишешь твое_название_скрипта.ggg:init() где название скрипта - тот скрипт,куда ты написанное мной допишешь :)

Лучше создай новый скрипт.

n6260,ахахаха :)

 

gamedata\scripts\bind_stalker.script ('это я продолжил твой путь :) )

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

я вобще ничего в этом не фурычу поэтому напиши в какой файл залесть и т.д

 

Строгое предупреждение от модератора n6260
Пишите грамотно.

 

Добавлено через 6 мин.:

дай путь на файл! пример:D:\STALKER GOLD\STALKER SHADOW OF CHERNOBYL

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

Моннорох, ты изверг, зачем апдейтер так мучать, да еще класс вешать?!

Достаточно в апдейтере написать

db.actor.health = 1

и все в шоколаде :ny_megalol:

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий

Krevedko

Всё что тебе надо, это gamedata\scripts\bind_stalker.script и в этой же папке свой файл с расширением .script.

Если ты конечно собрался использовать такую систему :lol:

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

Darien, Не сметь порочить мою систему!Она рабочая на все 100! :D

Gonarh, на самом деле все еще проще - можно почитать шапку темы :)

Изменено пользователем Monnoroch
Ссылка на комментарий
Какой максимальный обьем переменной в ЛУА сталкеровском можно сделать?Если у меня таблица,допустим,килобайт 300 будет - это нормально?
Это зависит от типа хранимых в этой таблице объектов. Если чисто объекты Lua, то количество ограничено только объёмом свободной памяти. Хотя разумеется, если занять всю память, то это косвенно может сказаться и на хост-программе (на игре то бишь).

Если вдруг в таблице хранятся пользовательские объекты, т.е. объекты игры, то здесь всё зависит от способа хранения конкретных объектов. Сдаётся мне, что для некоторых объектов для хранения выделяется ограниченный пул в памяти.

И еще: вот у меня есть обьект.Как мне определить клиентский он или серверный?
По составу методов и свойств.

К примеру. У всех серверных type(<имя_объекта>.id) вернёт строку "number", а для game_object вернёт соответственно "function"

 

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

Monnoroch,

Если ты имеешь в виду разбор в стиле АМК, то чаще всего это обычные данные Lua - строки, числа и т.п. Но вот например vector - уже пользовательский тип. А он вроде как там встречается. Если его на запчасти разобрать, то никаких проблем быть не должно. А может и так не будет, кто его знает...

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

Я составляю таблицу полных нетпакетов НПС в онлайне которые.

Тут проблема просто - зависают они иногда.Причину обыскалисть - не нашли.

Теперь вот решили сделать как: переписываем пстор и нетпакет.Для этого нужна таблица нетпакетов.Вот я и думаю если в онлайне 60 НПС будет игра не рухнет?

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

Вот функция которая у меня должна возвращать случайное имя итемса из списка и число вероятности

список обычного вида

[generic_list]

ammo_9x18_fmj = 0.9

ammo_9x18_pmm = 0.9

ammo_9x19_pbp = 0.9

и т.д. сто с лишним строчек

Сама функция все вроде отлично возвращает - (проверял через вывод всех значений функции в консоль)

function test()
    local ini = ini_file("misc\\items_link.ltx")
    if not ini then ini=system_ini() end
    if ini:section_exist("generic_list") then
           local n = ini:line_count("generic_list")
               local key = math.random(n)
                    local result, item, val = ini:r_line("generic_list",key,"","")
  --решил добавить еще этот метод -  так как числа то в списке не целые - но толку никакого
            local num = ini:r_float("generic_list", item) 
        return item, num  
    end
end

(если вместо num вернуть val - то в основном скрипте получал вылет - попытка сравнить число с nil - а в консоли все норм. выводится)

 

но стоит ее вызвать в другом коде - и начинается какая то фигня - то

то вместо чиcла передается nil, то строка, то игра ругается что не может найти переменную в списке... это вот в последний раз.

в списке все имена итемсов игры.

 

function all_secrets()
    local id, pos, lvid, gvid, count
    local n=4999 
    for col=1, 481 do
        local obj = alife():story_object(n+col)
        if obj then
            id = obj.id
                pos = obj.position
                    lvid = obj.m_level_vertex_id
                        gvid = obj.m_game_vertex_id
                           count = math.random(30)
            for i=1, count do
                local item, num = this.test()
                    item =tostring(item)
                        num = tonumber(num)
                if math.random() < num then
                    alife():create(item, pos, lvid, gvid, id)
                end
            end
         end
    end
end

 

В общем пришел к выводу что вылет из-за цикла - сделал вывод в консоль с циклом - и получил тот же вылет - Can't find variable in [generic_list]

а без цикла - то есть когда вызов функции test одноразовый - все норм. Никто не подскажет в чем тут дело?

 

Уфф проблему решил - надо же было парсить списoк от 0 и до n-1 а не от 1 и до n :lol3: пол дня ушло чтобы понять что вылет именно из-за этого был.

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

Простите немного глупый вопрос но все же: КАК убрать этот ....баный новый ремонт из народной солянки и сделать чтоб все было по старому.

Сообщение от модератора n6260
Взять и сравнить как было "по старому" и как теперь "по новому". Или просто сделать своего личного НПСа-ремонтника.

 

Строгое предупреждение от модератора n6260
Еще раз будете выражаться подобным образом - пожалеете.
Ссылка на комментарий
Для этого нужна таблица нетпакетов.Вот я и думаю если в онлайне 60 НПС будет игра не рухнет?

Нетпакет имеет размер 8 кб и чаще всего используется не полностью. 8*60 = 480 кб - примерно полмегабайта. Добавь ещё служебную информацию: расходы на организацию блоков динамической памяти и ключи таблиц Lua - пусть будет условно столько-же. Итого, в районе мегабайта - сущие копейки.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

уж извените что постю на темах но никто мне почему то не хочет отвечать. :( дело вот в чем:

знающие люди подскажите пожалуйста как исправить этот очень досадный баг?

Expression : fatal error

Function : CScriptEngine::lua_error

File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

Line : 73

Description : <no expression>

Arguments : LUA error: ....r. - shadow of chernobyl\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)

 

Я догадываюсь что ошибка в логике нового нпс. я хотел создать торговца и логику взял из тутора вот:

[smart_terrains]

none = true

 

[logic]

active = walker

trade = misc\trade_kntrader.ltx

trader_flags = 0

inv_max_weight = 10000

on_death = death

 

[walker]

path_walk = esc_sin_kntrader_walk

path_look = esc_sin_kntrader_look

meet = meet

 

[meet]

use = true

use_wpn = true

meet_talk_enabled = true

 

. но с этой логикой вылеты! что делать? я все правильно писал и перепроверял. стоит только убрать trade = ... и все нормально. помогите дорогие ветераны

убийство гарика и жорика главный стимул дойти до бара

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

походу не находит секции death

on_death = death

ты её определил но не описал

 

проверь наличие файла trade_kntrader.ltx в папке gamedata\config\misc

если он там есть, показывай его сюда

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий

Всех с Наступающим.

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

Проблема такая - я функцией выдаю актору случайное однотипное задание из таблицы. А проблема в том, что когда я записываю в таблицу названия однотипных тасков(например tm_eliminate_camp_1) из task_manager.ltx, то при старте ф-ии выскакивает такой баг:

Expression    : start_node && path
Function      : CXml::NavigateToNode
File          : E:\stalker\patch_1_0004\xrXMLParser\xrXMLParser.cpp
Line          : 97
Description   : NavigateToNode failed in XML file 
Arguments     : gameplay\game_tasks.xml

Раньше успешно тестил на вырезанных задания(типа 'sar_warlab'), и вот перед самым релизом такой досадный баг :ny_sad:

Помогите пожалуйста.

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

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

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

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

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

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

Войти

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

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

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