Скриптование - Страница 35 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

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

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

 
 

Stalkerin. Там есть много хороших статей касательно данной темы.
Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения.

 

Справочное руководство по языку Lua 5.1
https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ru
Справочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены.

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

 

Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу.

 

Вопросы которые будут удалятся, следовательно их задавать не нужно:
-- Где находится та или иная функция?
Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;
-- Как сделать что-то/то-то?
С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;
-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.
-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.
Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов?
В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос.

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий
https://www.amk-team.ru/forum/topic/6185-skriptovanie/

Мм..

в xr_motivator.script (death_callback) добавил:

alife():release(alife():object(victim:id()), true)

и вылетел с

Expression : fatal error

Function : CScriptEngine::lua_error

File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

Line : 73

Description : <no expression>

Arguments : LUA error: ...\s.t.a.l.k.e.r\gamedata\scripts\smart_terrain.script:1137: attempt to index local 'obj' (a nil value)

 

 

Поправил smart_terrain.script:

local obj = sim:object(npc.id)

local strn_id = obj:smart_terrain_id()

 

if strn_id ~= 65535 then

sim:object( strn_id ).gulag:clear_dead(obj_id)

end

 

local obj = sim:object( obj_id )

if obj ~= nil then

local strn_id = obj:smart_terrain_id()

 

if strn_id ~= 65535 then

sim:object( strn_id ).gulag:clear_dead(obj_id)

end

else

return

end

 

 

 

Но вылетел с

Expression : fatal error

Function : CScriptEngine::lua_error

File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

Line : 73

Description : <no expression>

Arguments : LUA error: ...\s.t.a.l.k.e.r\gamedata\scripts\death_manager.script:116: attempt to index local 'se_obj' (a nil value)

 

Собсно,что делать? :mellow:

 

Министр

Ок,спасибо.

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

Влад, не удаляй труп сталкера сразу после его смерти, остальные схемы (в частности death_manager) не успевают сделать свои дела, ибо объекта уже нет и везде передается nil (можно было и по логу догадаться в чем косяк).

 

P.S. Юзай таймеры или флаги.

Изменено пользователем Министр

меченый(стрелок)

не угадал :P не для гитары...=)

найти эту схему... вот в этом проблема=)

в папке со скриптами скриптов много, а который из них тот самый? С реакциями НПСов?=)

SkyLoader

 

СПАСибо =)

как всегда про файл знал, а вот заглянуть в него не заглянул=)

Изменено пользователем ФеНиКс
ФеНиКс, реакции на раздражители находятся в xr_reactions.script. Изменено пользователем SkyLoader

ФеНиКс, у меня , как уже не раз писал, нету ни сталкера(ни в каком виде) ни модов.Исходя из этого я не могу сказать что там делать, я лишь направил на "путь истинный" ;).

А вообще ,посмотри на саму главную функцию в скрипте, binder по моему(ну или что-то связанно с bind ;)).

Вот смотрите, есть функция:

local stope = false
function testych()
    local npc = level.object_by_id(id)
    local PosActor = db.actor:position()
     if npc and IsStalker(npc) and npc:alive() and npc.health > 0.1 then
         if npc:position():distance_to(PosActor) < 4 then 
             if not stope then 
                 news_manager.send_tip(db.actor, "Эй, чоё встал!?.", 0, "stalker", 7000) 
              stope = true 
                end 
             else 
          stope = false 
        end
    end
end

 

Тоесть, если расстояние НПС'а до ГГ меньше 4 метров, то должно сработать действие.Это действие срабатывает, но только при загрузке игры, а правильно функция работать не хочет(ни чего не происходит, если к НПС подойти) ...Не подскажете, где я мог допустить ошибку?

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

Я так понял что функция у тебя работает только один раз а потом не работает? Если да то вот готовый вариант:

local stope = false
function testych()
    local npc = level.object_by_id(id)
    local PosActor = db.actor:position()
     if npc and IsStalker(npc) and npc:alive() and npc.health > 0.1 then
         if npc:position():distance_to(PosActor) < 4 then
             if not stope then
                 news_manager.send_tip(db.actor, "Эй, чоё встал!?.", 0, "stalker", 7000)
              stope = true
                end
             else
          stope = false
               if npc:position():distance_to(PosActor) > 4 and stope then
        stope = false
            end
        end
    end
end

Неуверен что работает но думаю что ты понял фишку

Изменено пользователем _Призрак_

_Призрак_

Функция работает один раз, но только тогда, когда игра только загрузилась, то есть идет Кlиент:Синхроризация, и как только игра загрузилась - сразу действие срабатывает.А если к неписям подходить, то ни чоё не происходит.

На счет твоего кода:Зачем второй раз восстанавливать флаг?Ведь у меня в функции уже это есть:

local stope = false
local npc = level.object_by_id(id)
function testych()
    local PosActor = db.actor:position()
     if npc and IsStalker(npc) and npc:alive() and npc.health > 0.1 then
         if npc:position():distance_to(PosActor) < 4 then 
             if not stope then 
                 news_manager.send_tip(db.actor, "Эй, чоё встал!?.", 0, "stalker", 7000) 
              stope = true --флаг-триггер(чтоб действие выполнилось только 1 раз)
                end 
             else 
          stope = false --восстановления флага, чтоб при каждом подходе к НПС срабатывало действие
        end
    end
end

 

 

Ни кто не знает, в чем проблема? :unsure:

 

max_max_08

Функцию ставлю на апдейт в actor_binder:update(delta).А вот почему функция срабатывает при запуске - не пойму, очень странно :blink:

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

Мужики помогите! Как можно сделать смену файла описания к примеру оружия прямо во время игры!

Смотря для какой игры. Если для ЗП, то там iо функции форэва. А если к ТЧ, то только заменой секции итема на такой же, но с другим описанием.

gamedatavec,

удаляешь предмет со старым описанием, спавнишь такойже предмет но с новым описанием

кровоSTALKER,

Т.е. предлагаешь изменять описание сразу всем "стволам" данного типа?

Изменено пользователем меченый(стрелок)
Stalk15, вот я вижу строчку local npc = level.object_by_id(id). Хорошо. А вот откуда берется сам id мне не ясно. Вот это плохо. Изменено пользователем Министр

кровоSTALKER а можешь по подробнее про тот способ который ты предложил геймдатовцу?

Я пробовал удалять и тут же спавнить через скрипт прямо во время игры (скрипт работает при определенных условия через биндер) но эт не выход ведь если играть с снимаемым прицелом то он не спавнить на калаше к примеру!

 

Тогда по другому вопрос поставлю если на этот нет ответа:

как заспавнить к примеру калаш с надетым но снимаемым прицелом через скрипт в руках или в инвентарь к ГГ?

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

Byurrer

А что не понятного?Если надо заменить описание итема, например, ак-74, просто удали его и сразу же заспавни такой же, но с другим своим описанием, зарание создав второй ак-74 с новым описанием. ;)

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

Stalk15 нет нет с этим мне все понятно, пробовал получилось (спасибо что откликнулся) я не знаю как заспавнитьь ак с снимаемым но одетым прцелом, вот что меня интересует!!!

Народ!Кто может подробно расписать примеры работы с нет-пакетами стволов/НПЦ ? С меня +,и другим тоже пригодилось бы..

 

malandrinus

Спасибо,гляну.

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

Влад,

В acdc есть вся нужная информация. Достаточно иметь нескомпилированную версию acdc (сырец на Perl-е), знать серверный класс объекта и иметь любой рабочий пример с нетпакетами (например создание аномалии или вертолёта от Бардака).

 

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

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

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

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

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

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

Войти

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

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

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