Правила сайта FAQ Мини-чат
Для добавления необходима авторизация!
10.08.2026, Понедельник, 15:01


Разборочная комната ТЧ
Сообщение #1
Вы задаёте интересующий вас вопрос и тот, кто может вам на него ответить, пишет свой ответ. Правила темы:

1. Прежде чем задать вопрос, желательно прочитать все предыдущие страницы темы. Даже если вы не найдете там нужного ответа - я уверен, вы узнаете много нового. Второй вариант - воспользоваться поиском по ключевому слову.

2. Вы можете задавать вопросы, только непосредственно касающиеся создания модификаций и редактирования файлов игры

3. Личные вопросы не допускаются

4. Отвечать на вопросы желательно достаточно развернуто, задевая все аспекты касающиеся конкретного вопроса

5. Отвечать вы можете только в том случае если уверены в правильности ответа, если не знаете - просто не отвечайте. Авторы неправильных, вводящих в заблуждение ответов будут наказываться.

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

Основная цель темы - помочь новичкам-модостроителям, второстепенная - свести на нет тенденцию создания новых тем по каждому интересующему новичков вопросу.

Уважение: 133
Награды: 32
Сообщение #421
Цитата (Graff46)
Подскажите как можно вызвать ф-ию при старте новой игры?

Вариантов - море. Как пример в bind_stalker.script в тело функции actor_binder:update(delta) пишите:
Код
if not has_alife_info("info") then
......
db.actor:give_info_portion("info")  
end

Вместо многоточия вставляете что нужно. Поршень info надо не забыть зарегистрировать в info_***.xml
Цитата (Graff46)
где лежит модель ноутбука

\gamedata\meshes\equipments\item_notebook.ogf

Уважение: 670
Награды: 98
Облучение: 0%
Сообщение #422
Получилось только так
Код
if not has_alife_info("trifon") then   
            local alc = db.actor:object("vodka")   
             if alc then   
             db.actor:eat(alc)
            local alc = db.actor:object("vodka")   
                if alc then   
                db.actor:eat(alc)   
            db.actor:give_info_portion("trifon")    
            end
            end
            end

и две водки актору в аллСпавне;
db.actor:alcohol - не работает

Сообщение отредактировал Graff46 - Воскресенье, 05.05.2013, 14:57


Уважение: 4
Награды: 0
Облучение: 0%
Сообщение #423
Graff46, А зачем вы объявляете 2 раза одну и ту же переменную alc? Достаточно 1 раза. Да и не понятна конструкция if-a внутри if-a, у вас одно и тоже действие.
Сделайте цикл for i=1, 2 do и туда впихните db.actor:eat. Будет и быстрее.
Код
if not has_alife_info("trifon") then       
local alc = db.actor:object("vodka")
        if alc then
           for i=1, 2 do
              db.actor:eat(alc)
           end
        end
     db.actor:give_info_portion("trifon")              
end

Уважение: 670
Награды: 98
Облучение: 0%
Сообщение #424
Цитата (volazar)
А зачем вы объявляете 2 раза одну и ту же переменную alc

Я не программист и в этих тонкостях пока не разбираюсь))

Добавлено (05.05.2013, 16:22)
---------------------------------------------
Помогите составить ф-цию.
есть вот

Код
"Наносим хит предмету"
   
Код
Код:
function hit_nanesti()
     for a=1,65635,1 do
         local obj=level.object_by_id(a)
         if obj and string.find(obj:name(),"ПРЕДМЕТ") then  
             local h = hit ();
             h.power = 10000;
             h.direction = vector():set (0, 0, 0);
             h.impulse = 0;
             h.draftsman = obj;
             h.type = hit.explosion;
             obj:hit (h);
         end
     end
end

и вот
Код
function habar_fan_1 ()  
alife():create("wpn_mp5_m2",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58)
нужно их как то объединить что бы хит мп5 выдавался только той что спауниться

Добавлено (05.05.2013, 16:45)
---------------------------------------------
хит выдать хочу чтобы убавить здоровье мп5


Уважение: 4
Награды: 0
Облучение: 0%
Сообщение #425
Graff46,
Код
function hit_nanesti()
alife():create("wpn_mp5_m2",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58)
      for a=1,65635,1 do  
          local obj=level.object_by_id(a)  
          if obj and string.find(obj:name(),"wpn_mp5_m2") then   
              local h = hit();  
              h.power = 10000;  
              h.direction = vector():set(0,0,0);  
              h.impulse = 0;  
              h.draftsman = obj;  
              h.type = hit.explosion;  
              obj:hit(h);  
          end  
      end  
end

Уважение: 670
Награды: 98
Облучение: 0%
Сообщение #426
Не работает, я похоже так же делал. Ну её в пень! Я потом через аллСпавн сделаю.
Проверте пожалуйста ф-цию - она должна переводить нпс в оффлайн, выдавать инф.поршень
Код
fan_1
и если нпс на армейских складах то тогда переводит его в онлайн:
Код
function fan_v_off(actor, npc)            
  local npc = alife():story_object(022)     
   if npc then     
    alife():set_switch_online (npc:id (), false)         
    alife():set_switch_offline (npc:id (), true)
   end
   if npc and level.name() == "alife_l07_military" then
    alife():set_switch_online (npc:id (), true)         
    alife():set_switch_offline (npc:id (), false)
   end
  db.actor:give_info_portion("fan_1")
end
и проверте правельно ли я энды поставил, а то у меня с ними проблемы вечно.

Уважение: 4
Награды: 0
Облучение: 0%
Сообщение #427
Код
level.name() == "alife_l07_military"

Проверка действует только на актора. НПС-у до фени, где он. Если вам надо отловить НПС-а в определенной точке - ставьте рестриктор с логикой on_npc_in_zone и выполняйте ф-ию из него же.
ЗЫ: Пример рестриктора, который сработает при входе в него определенного НПС-а:
Код
function create_restr()  
local obj = alife():create("space_restrictor",vector():set(x,y,z),lv,gv)  
local custom = [[
[logic]  
active = sr_idle  
[sr_idle]  
on_npc_in_zone = 022|]]..obj:name()..[[|nil %+info =func%]]  
rewrite_restrictor(obj, custom, 1.0)  
end

022 - сид, info - имя вашего поршня, func - имя функции.
ЗЗЫ: Не сработает, если вы будете в оффлайне.
ЗЗЗЫ: Ф-ия, которую вызываете из рестриктора должна обязательно находится в файле xr_effects.script
ЗЗЗЗЫ: На АМК моде работаете? Или на чистом сталкере? Если на чистом - то там не получится без правок спавнить через скрипт рестриктор.
ЗЗЗЗЗЫ: С ендами все нормально.

Уважение: 670
Награды: 98
Облучение: 0%
Сообщение #428
Цитата (volazar)
Проверка действует только на актора

Разве??o_O Первоначальная ф-ция была такая:
Код

"Проверяет, находится ли, например, Волк на локации Кордон"
   
Код
Код:
function rest()
     local npc = level_object_by_sid(006) --волк
     if npc and level.name() == "l01_escape" then
         return true
     else
         return false
     end
end

Уважение: 4
Награды: 0
Облучение: 0%
Сообщение #429
Graff46, Действительно, не посмотрел на story_object. Извиняюсь.
Но все остальное - про нахождение ф-ии - надо соблюсти.

Уважение: 670
Награды: 98
Облучение: 0%
Сообщение #430
Ещё вопрос. Если сделать так:
Код
[smart_terrains]
esc_lager = {-fan_1}
mil_lager = {+fan_1}
, то нпс при наличии "fan_1" даже в онлайне пойдет на "мил лагерь"(а это на другую локацию) пешком! o_O проверял.
А если нпс перевести в оффлайн, а потом уже дать поршень на перемещение, то он "мгновенно" туда переместиться или будет также "идти"??

Сообщение отредактировал Graff46 - Воскресенье, 05.05.2013, 18:54


Уважение: 4
Награды: 0
Облучение: 0%
Сообщение #431
Graff46, Будет идти. Только в оффлайне. Что вас в этом смущает? Вы думаете, что уходя с локации - жизнь замирает? НПС-ы/монстры воюют, умирают, попадают в аномалии, путешествуют по локациям и т.д

Уважение: 670
Награды: 98
Облучение: 0%
Сообщение #432
Ясно, в той ф-ции, что я писал ранее нужно одно условие: инфопоршень должен выдаться уже после того как нпс переведется в оффлайн, а у меня там происходит вроде все одновременно?

Уважение: 4
Награды: 0
Облучение: 0%
Сообщение #433
Graff46, Поставьте выдачу после if npc then. Будет после перевода в оффлайн.

Уважение: 670
Награды: 98
Облучение: 0%
Сообщение #434
Как можно привязать нпс к смартеррейну, если нпс заспавнен скриптом
Код

function pda_killer_spawn()
     local obj= alife():create("pda_merc_killer_glav",vector():set(-223.700,-7.678,-129.688),17000,281)

Уважение: 4
Награды: 0
Облучение: 0%
Сообщение #435
Прописать в логике нужный смарт. Ну и естественно, чтобы в смарте было свободное место.

Уважение: 670
Награды: 98
Облучение: 0%
Сообщение #436
[smart_terrain]
smart_terrain = true

Где smart_terrain - имя нужного смарта.

Уважение: 670
Награды: 98
Облучение: 0%
Сообщение #437
Сталкеры. Возможно ли, и как правельно прописать в продажу или получить за выполнение задания. Автомат с питью подствольными гранатами. в игре: НАРОДНАЯ СОЛЯНКА версия1.0004 МОД 1.3.5.


Perez

Уважение: 0
Награды: 0
Облучение: 0%
Сообщение #438
Проверте ф-цию пожалуйста:
Код
function fun_1 ()
    if escape_dialog.fan_have == true then
    return false
    else
    true
    end
end

Эта ф-ция должна быть истинна если функция
Код
fan_have
из скрипта escape_dialog будет ложна

Добавлено (10.05.2013, 18:00)
---------------------------------------------

Цитата (volazar)
[smart_terrain]
smart_terrain = true

Где smart_terrain - имя нужного смарта.

Я знаю так можно писать в кастом дате, когда через аллСпавн делаешь, а если логика НПС'а в *.ltx записана (в папке миск)?

Уважение: 4
Награды: 0
Облучение: 0%
Сообщение #439
Сталкеры. Возможно ли, и как правельно прописать в продажу или получить за выполнение задания. Автомат с пятью подствольными гранатам"XM-29OICW"вроде так обозначается в игре: НАРОДНАЯ СОЛЯНКА версия1.0004 МОД 1.3.5. Зарание блогадарю за беспокойствр. ДаОтремонтировать никто не бирётся.


Perez

Уважение: 0
Награды: 0
Облучение: 0%
Сообщение #440
perez, можно даже легче. Заходим в ui_main_menu.script. Там ищем строки
Код
if dik == DIK_keys.DIK_Q then   
                self:OnMessageQuitWin()

Ниже дописываем:
Код
elseif db.actor~=nil and dik==DIK_keys.DIK_F6 then   
                alife():create("wpn_oicw",db.actor:position(),db.actor:level_vertex_id(),db.actor:game_vertex_id(),db.actor:id())

Сообщение отредактировал FantomICW - Пятница, 10.05.2013, 20:44


Уважение: 17
Награды: 1
Облучение: 0%
Поиск: