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

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


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

редко выпадпают части их тел,

\gamedata\config\creatures\m_boar.ltx:

 

Spawn_Inventory_Item_Section = mutant_boar_leg

Spawn_Inventory_Item_Probability = 1.0
 
ну и так далее для остальных. 1.0 - стопудовая вероятность выпадения
Изменено пользователем Space.Marine
Ссылка на комментарий

Напомните, кто-нибудь плиз, как прикрутить логику к заспавненному скриптом мобу или НПС. Видел конструкцию раньше, буквально пять строк, но совершенно не помню, как это сделать. Буквально, как к заспавненному скрипто мобу прикрутить смарт-террейн.

Сталкер - наше всё!

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

@AndrewMor,

Пример вызова

script.add_npc("bar_leha", x, y, z, lv, gv, "[logic]\ncfg = scripts\\foto\\bar\\leha.ltx", 30334)

function add_npc(section, pos_x, pos_y, pos_z, lvid, gvid, custom, sid)
    local sim = alife()
    local sobj = sim:create(section, vector():set(pos_x,pos_y,pos_z), lvid, gvid)
    if sobj and (custom or sid) then
        local pk = get_netpk(sobj,1)
        if pk:isOk() then
            local data = pk:get()
            if custom then data.custom_data:setString(custom) end
            if sid then
                dct.store_sid(sid,sobj.id)    -- сохраним сид
            end
            pk:set(data)
        end
    end
    --printd("create %s ID = %d",section,sobj.id)
    return sobj
end
  • Спасибо 1
  • Полезно 1
Ссылка на комментарий

naxac, а примерчиком не поделитесь? Нужно именно прикрутить смарт-террейн.

 

_Val_, дело в том, что секция [smart_terrains], прописанная в файл логики, оттуда не читается.

 

Я пробовал прикрутить логику, вроде получилось. А вот со смартом - беда..

Сталкер - наше всё!

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

Решил добавить в игру некоторые новые ранги по инструкции

http://stalkerin.gameru.net/wiki/index.php?title=SOC._Новый_ранг

 

при загрузке игры теперь получаю такой

FATAL ERROR

[error]Expression : fatal error
[error]Function : CScriptEngine::lua_error
[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
[error]Line : 73
[error]Description :
[error]Arguments : LUA error: ...a.l.k.e.r\gamedata\scripts\task_manager.script:142: attempt to index global 'se_respawn' (a nil value)

 

 

В файле se_respawn.script надо было добавить новые ранги в таблицу для ограничения респавна, я добавил, на ошибки проверил, от чего это непонятно. Может быть эти ранги надо ещё и в allspawn прописывать?

Если кто-знает чем это вероятнее всего вызвано дайте знать.

Ссылка на комментарий
@AndrewMor, проще и надежнее всего в секции непися указать файл с custom_data. А в этом файле уже писать все, что нужно. Так, как было показано выше, smart_terrains прописать проблематично. У себя я наблюдал ситуации, когда немедленно после выполнения :create() смарт террейн уже был назначен. А это значит, что последующее переписывание нетпакета уже никакого смысла не имеет.
Ссылка на комментарий

 

 

проще и надежнее всего в секции непися указать файл с custom_data. А в этом файле уже писать все, что нужно.

А как конкретно? Ну или где такое подсмотреть?

 

А если придется много разных НПС заспавнить с разными смартами - для каждого свою секцию создавать нужно, так выходит?

Сталкер - наше всё!

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

В свете прочитанного выше...

А он вообще нужен именно для этой кучи неписей - смарт-террейн? Они все будут путешествовать между локациями?

Не легче им прописать логику без смартов и гулагов, провались они в тартарары?

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

Уже не раз отвечали, что это настраивается в SDK.

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

Уже не раз отвечали, что это настраивается в SDK.

 

Что "это"? Как настраивается?

 

Вот именно такие ответы - это и есть "шевеление бровями".

---------------------------------

www.amk-zone.de

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

 

 

А если придется много разных НПС заспавнить с разными смартами - для каждого свою секцию создавать нужно, так выходит?

 

Да, нужны будут разные секции. Т.к. ты не программист, это будет самое лучшее решение. Что бы через нетпакет указать смарт, нужно "врезаться" в se_monster или se_stalker.script, в 

function se_monster:on_before_register()

И там уже либо вызывать что-то свое, либо генерировать сигнал, если используется сигнальная система. На этот этапе еще можно переписать нетпакет и указать там свою custom_data. Оно будет прочитано позже.

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

 

 

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

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

 

Сорри за оффтоп.


naxac, dsh: огромное вам спасибо за участие, камрады, всё получилось!!! Вроде мелочь, а приятно, что что-то смог, пусть и с вашей помощью.

 

Модераторы, не сочтите за сильный оффтоп, но даже с read-only я согласен.

  • Спасибо 1

Сталкер - наше всё!

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

Решил вспомнить молодость. Установил АМК 1.4.1, запустил и при первом же разговоре с НПС увидел это:

c7efe2489d49d9100bad73e4031b2001b07d6c24

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

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

 

 

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

В чистой игре

В state_mgr.script

--' Если мы переключаемся из идущего положения в стоящее - надо задизаблить перемещение
if state_lib.states[self.target_state].movement ~= move.stand and
  state_lib.states[state_name].movement == move.stand
then
self.npc:movement_enabled(false)
end
Сделать вот так
--' Если мы переключаемся из идущего положения в стоящее - надо задизаблить перемещение
 if state_lib.states[self.target_state].movement ~= move.stand and
 state_lib.states[self.target_state].animation ~= nil and
 state_lib.states[state_name].movement == move.stand
 then
 self.npc:movement_enabled(false)
 end

 

т.е добавить

state_lib.states[self.target_state].animation ~= nil and

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

@monk, оффтоп...

Ну от тебя я подобного не ожидал.

Вот такой скрин был-бы в тему...

4fe280dad89499e95e9d58862bc09e66d5578a24

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

Опять прошу помощи. Появляюсь на локации, запрашиваю xr_gulag.getGulagPopulation("pred_flesh_plant") - выдает 0. Подхожу ближе к смарту, опять запрашиваю - выдает 5, как и должно быть.

 

Собственно, вопрос: как, появившись на локации, узнать количество населения смарта, даже если он далеко и находится в оффлайне?

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

Сталкер - наше всё!

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

Такой вот вопрос: в чем разница между if not has_info(....) then и if dont_has_info(....) then ?

Первый вариант повсеместно использован в оригинальных скриптах от ПЫСа, а второй вариант в оригинале кажись вообще не используется. В чем подвох\смысл ?

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

@AndrewMor, попробуй вот так:

local strn = alife():object( "pred_flesh_plant" )
if strn then
  strn:initialize_if_needed()
  local population = strn.gulag:get_population_comed()
end

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

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

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

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

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

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

Войти

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

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

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