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

Скриптование


Svoboда

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

@drMiha 

self.task_ini:line_count

возвращает количество, если 0 ,то это пустая таблица. А у нас есть элемент с индексом  0.

поэтому

 

self.task_ini:line_count("random_"..random_level)-1

-1 приводит индексы в порядок..начиная с 0. Так что выпадал предмет с индексом 0.

Только нужно проверять countTreasures на предмет -1, а то может вызвать исключение дальше по коду.

А лучше просто использовать далее по коду конструкцию (countTreasures - 1)

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

....- "И не важно куда подует ветер..."

                                                   Freddie Mercury.

Поделиться этим сообщением


Ссылка на сообщение

@Colder тут  local List = rx_utils.collect_section(ini, "loadout_points_" ..num)

должно быть так  local List = rx_utils.collect_sections(ini, {"loadout_points_" ..num}) 

 

 

Вот эта функция работает у меня из main_menu

Рабочий код

function bb(num)
local ini1 =ini_file("misc\\proba.ltx")
--local itt
local List = rx_utils.collect_sections(ini1, {"loadout_points_" ..num})
    for k,v in pairs(List) do
--    itt.item_name:SetText(gts(axr_base.get_inv_name(v))) -- имя

--    itt.item_count:SetText(k) -- номер строки \ а нужно количество

--k = name

--v = count
sms("%c[sender]"..translate("name_obschaya_set")..":\\n%c[sms_red]"..k.." = "..v, nil, "nano", 30000)
 end

end

 

Изменено пользователем Blum
Форматирование(сохранено в названии файлов)
  • Спасибо 1

....- "И не важно куда подует ветер..."

                                                   Freddie Mercury.

Поделиться этим сообщением


Ссылка на сообщение

@Капрал Хикс Внутри функции ни один из аргументов не задействован, поэтому всё проходит без ошибки.:biggrin:

@Chypakabra Видимо disable_input_time всегда равен nil или вся функция целиком осталась для красоты:az1000106:

Изменено пользователем Blum

....- "И не важно куда подует ветер..."

                                                   Freddie Mercury.

Поделиться этим сообщением


Ссылка на сообщение

@Капрал Хикс а вот эта функция в escape_dialog.script

 

function bandits_die(actor,npc)
    if has_info("esc_kill_bandits_quest_kill") and not has_info("esc_kill_bandits_noquest_kill")
    then
        return true
    end
    return false
end

 

Ничего не напоминает?:crazy2:

  • Спасибо 1

....- "И не важно куда подует ветер..."

                                                   Freddie Mercury.

Поделиться этим сообщением


Ссылка на сообщение

@Colder Ну начнем с того,что смотря в "cycle_task" ...вижу "active_task_by_type" и понимаю что возвращает она таблицу.{}..Ну если хотите массив...Возможно в вашем коде это не так...?

А у вас local active =.....И начинаете перебирать таблицу.Но это у вас совсем не таблица, там скорее всего одна единственная запись..

Я так понимаю, что скрипт task_manager вашей разработки? Поэтому не могу ничего сказать ни про объект tm , ни про параметр p1.

Можно попробовать например вывести в лог p1...И не только p1..Возможно увидите ошибку...И вообще при написании скриптов надо иметь возможность вывода и просмотра в логе параметров...значений...и т.д. Полезно будет...потом можно удалить или закоментировать.

Изменено пользователем Blum

....- "И не важно куда подует ветер..."

                                                   Freddie Mercury.

Поделиться этим сообщением


Ссылка на сообщение

@Colder первый параметр вроде не должен быть npc..

===

-- список, что должно быть в продаже
        str = utils.cfg_get_string(ini_cfg, "trader", "buy_supplies", npc, false, "")
        if str then
            tt.buy_supplies = xr_logic.parse_condlist(str, npc, "trade_manager", "buy_supplies")
        else
            abort(npc:name() .. " invalid line: [buy_supplies] " .. cfg)
        end

Получилось что-то? из прошлого сообщения, непонятно..Что-то серьезное затеял?:az1000106:

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

....- "И не важно куда подует ветер..."

                                                   Freddie Mercury.

Поделиться этим сообщением


Ссылка на сообщение

@Colder  Посмотри саму функцию в xr_logic.script

function parse_condlist(src)
Предназначение:
  Распарсивает условия вида: {+infop1} section1 %-infop2%, {+infop3 -infop4} section2 ... в таблицу.

 

Там в функции есть строки printf(.....

Раскоментируй их прямо в xr_logic и получишь сообщения для поиска ошибки.

=

Кстати xr_logic.parse_condlist возвращает таблицу, а у тебя снова...local condlist

Может так надо ?  local condlist{} = ..

npc, "trader", "buy_supplies" только для сообщений об ошибках в ОП2.2 .В OGSR вообще один параметр только (src)..Обрабатывается вроде только str

Изменено пользователем Blum

....- "И не важно куда подует ветер..."

                                                   Freddie Mercury.

Поделиться этим сообщением


Ссылка на сообщение

@Colder 
str вида: {+infop1} section1 %-infop2%, {+infop3 -infop4} section2 ... в таблицу

Вот что у сидора должно быть. Это из ОП 2.2

 

[trader]
buy_condition = trader_generic_buy
sell_condition = {+esc_kill_bandits_quest_done} trader_after_fabric_sell, trader_start_sell
buy_supplies = {+esc_kill_bandits_quest_done} supplies_after_fabric, supplies_start
 

Изменено пользователем Blum

....- "И не важно куда подует ветер..."

                                                   Freddie Mercury.

Поделиться этим сообщением


Ссылка на сообщение

@Solditary а это тебе о чём говорит?

"attempt to index local 'obj' (a nil value)".

У тебя видимо в саму функцию передаётся nil, а не ссылка на структуру obj

ЗЫ..И еще...

LUA error: ... - shadow of chernobyl\gamedata\scripts\ranks.script:66: attempt to index local 'obj' (a nil value) ..в оригинале в 66 строке этого скрипта стоит end...Значит файл скрипта правленый..

Изменено пользователем Blum

....- "И не важно куда подует ветер..."

                                                   Freddie Mercury.

Поделиться этим сообщением


Ссылка на сообщение

@Solditary 

функция из чистого SOC 1.00006

-- возвращает название ранга заданного game_object (персонажа)
function get_obj_rank_name( obj )
    if not ranks_loaded then
        read_all_ranks()
    end

    local obj_rank

    -- HACK
    if obj.m_story_id ~= nil then                                     --это 66 строка
        obj_rank = obj:rank()
    else
        obj_rank = obj:character_rank()
    end

    if IsStalker(obj) then
        return get_rank_name( obj_rank, stalker_rank_intervals ) or stalker_max_rank_name
    else
        return get_rank_name( obj_rank, monster_rank_intervals ) or monster_max_rank_name
    end
end

 

....- "И не важно куда подует ветер..."

                                                   Freddie Mercury.

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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