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

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

способ отследить продажу

В биндере актера каллбэк trade_sell_buy_item (функция on_trade).

item: предмет,

sell_bye: true - продали, false - купили,

money: деньги.

  • Спасибо 2

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

 

 

который в поиске гугл по сталкеру и не попадается "bad argument #2 to 'find' (string expected, got table)"

А перевести не пробовали? оно хочет строку, а вы ему пихаете таблицу.

 

local ignore = {"wpn_beretta","wpn_colt1911","wpn_desert_eagle","wpn_fort","wpn_hpsa"}
local function transfer_object_item(item)
   local f = true
   local s = item:section()
   for k, v in pairs(ignore) do
      if s == v then
         f = false
         break
      end
   end
   if f then
      db.actor:transfer_item(item, inv_box_1)
   end
end

 

 

  • Спасибо 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.

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

Добрый вечер. Такой вопрос - имеем таблицу с предметами

 

 

  local item_list = { "medkit",

"bread",

"vodka" } 

 

Как рандомно выбрать 3 предмета из этой таблицы, и, допустим, заспавнить их ГГ? Знаю что через math.random работать надо, но как - не знаю.

Не соответствует правилам.

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

 

 

Как рандомно выбрать 3 предмета из этой таблицы, и, допустим, заспавнить их ГГ?
local item_list =
{"medkit",
"bread",
"vodka"}

function spawn_random_item()
local a = item_list[math.random(table.getn(item_list))]
alife():create(a, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
  • Спасибо 1

Ранее был известен под ником BoBaH_671.

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

Дополню:

function spawn_random_item()
    local item_list = {"medkit","bread","vodka"}
    for i = 1, 3 do
        local a = item_list[math.random(table.getn(item_list))]
        alife():create(a, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
    end
end
  • Спасибо 1
  • Согласен 1
  • Полезно 2
Ссылка на комментарий

Как отформатировать строку таким образом, чтобы число с плавающей запятой состояло из 5 чисел: (0.0001, 0.0010 и т.п), но без точки? (Т.е. 00001, 00010 и т.п.)?

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

Сама функция работает, но наемники нейтралами не становяться.

Где может быть проблема?

P.S Смс-ка выдаеться

 

 

function rel_hack()

relation_registry.change_community_goodwill ("killer", db.actor:id(), (5000))
news_manager.send_tip(db.actor, "relation 0", nil, nil, 20000) 
end

Не соответствует правилам.

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

Добрый вечер!

Подскажите где в папке gamedata можно найти сие если можно конечно и какие еще бывают партиклы?

 

[sr_particle]
name = anomaly2\teleport_out_00 - вот это???
path = gar_osoznanie_path
mode = 2
looped = false
 
Спасибо!!!

Жизнь следует измерять поступками, а не временем...

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

@losiara, particles.xr. Посмотреть какие есть партиклы и как они выглядят можно в СДК.

 

@Kondr48, str:gsub("%.", "")

Изменено пользователем naxac
  • Спасибо 2
  • Нравится 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

@Kondr48, так как точка в строке одна, то для gsub можно указать количество замен - str:gsub("%.", "", 1).

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

Украл из ЗП две функции (xr_effects.scripts)

function teleport_npc(actor, npc, p)
local patrol_point = p[1]
local patrol_point_index = p[2] or 0
if patrol_point == nil then
abort("Wrong parameters in 'teleport_npc' function!!!")
end
local position = patrol(patrol_point):point(patrol_point_index)
reset_animation(npc)

npc:set_npc_position(position)
end

function teleport_npc_by_story_id(actor, npc, p)
local story_id = p[1]
local patrol_point = p[2]
local patrol_point_index = p[3] or 0
if story_id == nil or patrol_point == nil then
abort("Wrong parameters in 'teleport_npc_by_story_id' function!!!")
end
local position = patrol(tostring(patrol_point)):point(patrol_point_index)
local npc_id = get_story_object_id(story_id)
if npc_id == nil then
abort("There is no story object with id [%s]", story_id)
end
local cl_object = level.object_by_id(npc_id)
if cl_object then
reset_animation(cl_object)
cl_object:set_npc_position(position)
else
alife():object(npc_id).position = position
end
end

 

Вставил в аналогичный файл ТЧ и пробую через логику на секции on_hit - их применить, но вот ничего не происходит, почему так??? Предполагается что НПС телепортируется на место указанное в путях way..., но он остается на месте.

Делал примерно так:

[hit]
on_info = %=teleport_npc(esc_prov)% ;профильное имя НПС.
и по другому:
[hit]
on_info = %=teleport_npc_by_story_id(5494:stalker_propusk_esc_walk1)% ;sid:название путей в way...
Может что то не так вставил в параметры???
Изменено пользователем losiara

Жизнь следует измерять поступками, а не временем...

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

Подскажите, с чем может быть связан вылет?

 

 

 

[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...adow of chernobyl\gamedata\scripts\se_respawn.script:449: attempt to compare nil with userdata

Не соответствует правилам.

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

Приветствую. А есть ли возможность подменить один объект (не живой) на другой, по старым координатам? То есть спавнится 1 предмет, он имеет определенные координаты, затем он тут же удаляется, а на его место (Учитывая не только xyz, но и наклон) спавнится другой. Объясню зачем это нужно. Для объектов на классе SCRPTOBJ не учитывается коллизия, и объект спавнится в прямой плоскости, не учитывая неровности террейна. Хотелось бы сперва спавнить "осязаемый" клон на любом классе, например II_ANTIR, а затем на его место подменивать уже объект с логикой.

Хотя может можно как-то намного проще, напрямую с объектом работать, сделать его "осязаемым", реально ли..? :unsure: А к объекту на том же II_ANTIR я не смог прикрутить логику, объект можно только подобрать, логика не считывается, может его можно принудительно после спавна заставить читать логику?

 

UPD: нашел одно из решений. Спавню предмет на классе II_ANTIR, и в эту же точку спавню невидимый бокс размером чуть больше на классе SCRPTOBJ. Итого и объект ложится учитывая террейн, и сквозь него нельзя пройти, в тоже время можно его использовать. В общем такой вот костыль..

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

Добрый день!!!

Полазил по форумам и нарыл несколько вариантов функций удаления объектов из игры, не перевода в оффлайн, а именно удаления по типу:

 

function del_tele_dva()
for a=10,65634,1 do
local obj=alife():object(a)
if obj and string.find(obj:name(),"fan_tel") then ---имя секции обьекта
alife():release(obj,true)
end
end
end

или такая:

function remove_freaks()
remove_obj("object")
end

 

Якобы должны работать из логики объекта, но нет не работают не в какой секции. При активации например через диалог тоже не работает. Почему так может быть??? Код кривой или причина в другом???

На самом деле функций гораздо больше, но они все не рабочие, и вылета нет и действия также нет...

 

Надо было удалить секцию в игре "zone_teleport", созданную через скрипт. Это такой визуальный эффект типа телепорта как воронка.

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

Жизнь следует измерять поступками, а не временем...

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

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

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

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

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

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

Войти

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

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

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