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

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


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

@Hind возможно нет каких-то скриптовых функций в движке.

ищу человека, который смог бы заняться разработкой погоды на OGSR.
кто может помочь - пишите в ЛС.

Ссылка на комментарий
16 часов назад, Hind сказал:

attempt to index global 'self'

Насколько я понимаю - self это ссылка на переменную/функцию внутри собственно скрипта в котором он, селф, вызывается. Соответственно вылет скорее всего идет по строке "local obj  = self.object", скорее всего у тебя в скрипте(до выше показанной функции) не задано, что\кто именно выступает в роли self.objectа.

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

Pz_3.gif

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

Параметр, указывающий на собственный объект.  

@Hind , ты дёрнул кусок кода? Попробуй вызвать это дело в bind_monster.

 

На апдейте код работает, как есть. Но можно и ссылку, а self.object - аргументом:

    local self_obj = self.object
    script_file.cats(self_obj)

 

И это 

Скрытый текст

if rnd == 1 then 
    level.add_pp_effector("agr_u_fade.ppe", 2007, false)
    level.add_pp_effector("total_recall.ppe", 2008, false)
    db.actor:stop_talk()
    db.actor.power =-0.05
end
if rnd == 2 then 
    --level.add_pp_effector("agr_u_fade.ppe", 2007, false)
    --level.add_pp_effector("total_recall.ppe", 2008, false)
    --db.actor:stop_talk()
    --db.actor.power =-0.05
end
if rnd == 3 then 
    --level.add_pp_effector("agr_u_fade.ppe", 2007, false)
    --level.add_pp_effector("total_recall.ppe", 2008, false)
    --db.actor:stop_talk()
    --db.actor.power =-0.05
    --soundtrack.actor_need_sleep()
end

лучше бы смотрелось, как

Скрытый текст

if rnd == 1 then 
    level.add_pp_effector("agr_u_fade.ppe", 2007, false)
    level.add_pp_effector("total_recall.ppe", 2008, false)
    db.actor:stop_talk()
    db.actor.power =-0.05
elseif rnd == 2 then 
    --level.add_pp_effector("agr_u_fade.ppe", 2007, false)
    --level.add_pp_effector("total_recall.ppe", 2008, false)
    --db.actor:stop_talk()
    --db.actor.power =-0.05
elseif rnd == 3 then 
    --level.add_pp_effector("agr_u_fade.ppe", 2007, false)
    --level.add_pp_effector("total_recall.ppe", 2008, false)
    --db.actor:stop_talk()
    --db.actor.power =-0.05
    --soundtrack.actor_need_sleep()
end

Вообще, зачем задавать 10, из них обрабатывать 3, из которых ещё 2 - пустышки?

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

Здесь могла быть ваша реклама.

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

@mole venomousне знаю, мне просто страшно было менять что то из исходника ... Сейчас попробуем.

@mole venomousкуда вставлять ссылку на cats() в bind.monster? После какой строчки, имею ввиду?

Ссылка на комментарий
2 минуты назад, Hind сказал:

куда вставлять ссылку на cats() в bind.monster?

В биндере generic_object_binder:update(delta)

v7XkWeP9.jpg?download=1&name=%D0%A1%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82%2014-01-2023%2018:55:30.jpg

Здесь могла быть ваша реклама.

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

@mole venomous

В HUM.script накалякал:
 

Скрытый текст


function cats(self_obj)
local obj  = self.object
local id = get_clsid(obj)
if (id == clsid.cat_s and self.object:alive() and self.object:see(db.actor)) then
local posit = self.object:position()
    if posit:distance_to(db.actor:position()) < 10 then
            cat_sleep()
    end
end
end

function cat_sleep()
rnd = math.random(1, 10)
if rnd == 1 then 
    level.add_pp_effector("agr_u_fade.ppe", 2007, false)
    level.add_pp_effector("total_recall.ppe", 2008, false)
    db.actor:stop_talk()
    db.actor.power =-0.05
end
if rnd == 2 then 
    --level.add_pp_effector("agr_u_fade.ppe", 2007, false)
    --level.add_pp_effector("total_recall.ppe", 2008, false)
    --db.actor:stop_talk()
    --db.actor.power =-0.05
end
if rnd == 3 then 
    --level.add_pp_effector("agr_u_fade.ppe", 2007, false)
    --level.add_pp_effector("total_recall.ppe", 2008, false)
    --db.actor:stop_talk()
    --db.actor.power =-0.05
    --soundtrack.actor_need_sleep()
end
end

 



  

Скрытый текст

 if self.object:alive() then
    local self_obj = self.object
       HUM.cats(self_obj)
        if self.object:is_talk_enabled() then
            self.object:set_tip_text("character_use")
        else
            self.object:set_tip_text("")
        end

Внизу ещё прочие апдейты, поэтому не достаёт энд, но там всё работает.


Ошибка таже, правда уже не вылетает на загрузке, а просто выбивает лог - и мутанты просто стоят на местах.

Ссылка на комментарий
11 часов назад, mole venomous сказал:

ты дёрнул кусок кода? Попробуй вызвать это дело в bind_monster

 

21 минуту назад, Hind сказал:

Просто впихнул функцию в bind_monster

 

:az1000106:

21 минуту назад, Hind сказал:

как отследить убийство актором?

См. xr_conditions.script

Изменено пользователем mole venomous
  • Жуть! 1

Здесь могла быть ваша реклама.

Ссылка на комментарий
35 minutes ago, mole venomous said:

См. xr_conditions.script

Это если пострадавший уже известен.

 

@Hind [bind_monster.script] и [xr_motivator.script]

…binder:death(obj, who)

if who:id() == db.actor:id() then

 

  • Спасибо 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

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

@mole venomousХочу сделать штучку, когда обшариваешь конкретно ТРУПЫ - гг говорит типо "подонок" и т.д. В xr_motivator, я походу слепой, но я не вижу зацепок - где можно впендюрить свою строчку кода..

И ещё вопрос.. Как отследить отношение мёртвого к ГГ?

Ссылка на комментарий
26 минут назад, Hind сказал:

не вижу зацепок

Как выдаётся тайник? Вот точно так же...

use_callback

26 минут назад, Hind сказал:

Как отследить отношение мёртвого к ГГ?

Так же, как и живого. Код из аналов тьмы амк мода (там всегда можно что-нибудь "подсмотреть", там есть заготовки), блин

Скрытый текст

--узнаем отношение одного непися к другому
function get_npc_relation(obj,target)
  local rel = obj:relation(target)
  local relation
  if rel==game_object.neutral then
    relation="neutral"
  elseif rel==game_object.friend then
    relation="friend"
  elseif rel==game_object.enemy then
    relation="enemy"
  else
    return false
  end
  return relation
end

 

Код жутковатый, но работает.

И, следуя логике, всё в том же xr_motivator

Скрытый текст

if get_npc_relation(obj,db.actor)=="enemy" then 

    "бла-бла-бла"

 

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

Здесь могла быть ваша реклама.

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

@mole venomousвсё прикрутил, всё работает, но есть проблема - гг не говорит когда лутаем нейтральных сталкеров. 

 

Скрытый текст

 

function get_npc_relation(obj,target)
  local rel = obj:relation(target)
  local relation
  if rel==game_object.neutral then
    relation="neutral"
  elseif rel==game_object.friend then
    relation="friend"
  elseif rel==game_object.enemy then
    relation="enemy"
  else
    return false
  end
  return relation
end

function motivator_binder:use_callback(obj, who)

    if self.object:alive() then
        xr_use.notify_on_use(obj, who)
        if self.st.active_section then
            xr_logic.issue_event(self.object, self.st[self.st.active_scheme], "use_callback", obj, who)
        end
        
      
    else
    
        if self.treasure_processed == false then
        
            treasure_manager:get_treasure_manager():use(self.object)
            self.treasure_processed = true
        end
        if get_npc_relation(obj,db.actor)=="enemy" then  -- моё
HUM_marader.marader_enemy()
elseif get_npc_relation(obj,db.actor)=="friend" then
HUM_marader.marader_friend()
elseif get_npc_relation(obj,db.actor)=="netural" then
HUM_marader.marader_netural()
end
        -- Затычка на всякий случай, чтоб Волкодав при обыске давал инфо о наемниках
        if self.object:name() == "bar_freedom_attacker_commander" then
            db.actor:give_info_portion("encyclopedy_social_stalker-clans_killers")
        end
    end
end

 

 

Разобрался.

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

Как отследить ношение артефакта на поясе?

И..  Как называется сытость актора в луа? 
Выносливость - db.actor.power
Здоровье - db.actor.health
Сытость - db.actor.?????

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

db.actor.satiety - сытость

37 минут назад, Hind сказал:

Как отследить ношение артефакта на поясе?

ОГСР https://www.amk-team.ru/forum/topic/14288-soc-kovyryaemsya-v-faylah/?do=findComment&comment=1438769

Ваниль https://www.amk-team.ru/forum/topic/14288-soc-kovyryaemsya-v-faylah/?do=findComment&comment=1438796

Здесь могла быть ваша реклама.

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

Люди, помогите. Пропал сидорович. Просто взял, и пропал.

Начал новую игру - а сидрыча на стуле нет. Кто знает, чем может быть вызвано? Лог чистый абсолютно.

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

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

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

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

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

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

Войти

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

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

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