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

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

Тема для обсуждения скриптов всего и всех в серии игр 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
Ссылка на комментарий

Добрый день.

У меня такой вопрос:

Как в зове припяти заставить нпц исчезнуть на глазах? В тенях чернобыля так срабатывал [spawner]. Но в зове он почемуто не сработал. Заранее спасибо.


Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу.

 

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

Приветствую всех.

Такой вопрос:

Можно ли заставить скриптово динамический обьект, допустим ведро, менять свои координаты вместе с ГГ и при этом иметь синхронизированый угол поворота?

Если можно, то как?

Заранее спасибо.


Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу.

 

Ссылка на комментарий
strelok200, просто верни их в изначальную логику по какому то сигналу(скажем инфо на смерть всех мобов,так к примеру сделана атака на блокпост долга,но там это сделано через состояние гулага,а у тебя просто они как я понял всегда должны находится в этом состоянии).Да они и так при любом входе в онлайн(заход на локу или загрузка сохранки) будут возвращатся в изначальную логику
Ссылка на комментарий

У меня вот какая проблемма , сделал квест по наподению сталкеров на бандитов , и не могу сделать так чтобы когда нпс бежит то он игнор гг ну то есть не входил с ним в диолог. Помогите пожалуйста !

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

korshyn-3, укажи в логике, в конкретной секции NPC (walker или кто он у тебя) параметр meet = no_meet.

strelok200, в диалоге получай инфопоршн, который будет условием переключения логики NPC на другую секцию, например:

on_info = {+infoportion} walker@go_to_new_location.

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

Desertir,

Такой вопрос, а как работает функция start_stop_menu класса CDialogHolder, т.е. прошу объяснить ее точное назначение. Как я понимаю она нужна для закрытия и открытия окон, но по конкретней пожалуйста. Да и вообще класс CDialogHolder для чего он нужен, для чего используется.

Не полное описание, но минимальный набор приёмов использования есть в этом посте справочника.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

Несколько вопросов накопилось :)

1. Где-то видел, что можно на последней точке пути НПС выдать поршень или что-то другое? Может кто сказать, как примеру поршень выдать?

2. Немного нубский вопрос, но как изменить поворот камеры в начале игры? direction меняю и ничего вообще не происходит (менял все 3 значения). :(

 

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

Disord, сам инфопоршн на "последней" точке пути NPC выдать не сможет. Но. В путях на последней точке можно установить так называемый сигнал:

[walk]
points = p0
p0:name = wp01|a=walk|sig=arrif
...

а в логической схеме NPC прописать реакцию на этот сигнал, в том числе и получение инфопоршна, примерно так:

[walker@tra_la_la]
...
on_signal = arrif | walker@tro_lo_lo %+infoportion%
...

По второму вопросу - менять нужно у ГГ не только direction, но и параметр upd:o_torso.

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

Народ, всем привет.

Как удалить предмет из инвентаря у ГГ - (название - val_zapis_n)

Черкните функцию, а я её через экшон вставлю в диалог.

Заранее спасибо.

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

Можно воспользоваться функцией amk.remove_item_from_inventory_by_name("val_zapis_n",db.actor)

Но ты сначала проверь, есть она у тебя или нет

Freedom

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

В АМК главная функция тянет за собой сервисную. Вот готовая, удаляет предмет из инвентаря ГГ по имени. Только не пытайтесь удалять болт ;):

function del_from_player_inventory(item_name)
local obj = db.actor:object(item_name)
  if obj then
   alife():release(alife():object(obj:id()), true)
  end
end

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

=VENOM= Я в скриптах не соображаю. Так ?

function del_from_player_inventory(item_val_zapis_n)
local obj = db.actor:object(item_val_zapis_n)
  if obj then
   alife():release(alife():object(obj:id()), true)
  end
end

А кавычки не надо "..." в скобках ?

А в диалог такой экшон ставить ?

<action>valerich_dialog.del_from_player_inventory(item_val_zapis_n)</action>

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

нет, не правильно

Нужно сделать функцию:

Если функция, которую кинул тебе =VENOM= лежит допустим в скрипте test1 то

function my_megatest()

test1.del_from_player_inventory("item_val_zapis_n")

end

 

<action>valerich_dialog.my_megatest</action>

Freedom

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

Valerich, не, не так :) Данную функцию суёшь в любой скрипт (чтобы потом вызвать):

function del_from_player_inventory(item_name)
local obj = db.actor:object(item_name)
  if obj then
   alife():release(alife():object(obj:id()), true)
  end
end

Затем создавай ещё одну функцию, вот такую:

function del_val_zapis()
   название_скрипта.del_from_player_inventory("val_zapis_n")
end

А в диалоге вызывай так:

<action>файл_с_функцией.del_val_zapis</action>

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

 

Какая функция заставляет НПСа ударить ГГ по лицу?

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

Disord

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

При попытке модмейкера удалить подобным образом пары (и более) однотипных предметов (да и порою разных) 'за раз', т.е. вызвав подряд в одном цикле (или даже в смежных) функцию удаления из инвентаря, можно получить вылеты.

 

Обоснование: Проверка происходит по по клиентскому объекту актора, а удаление - у серверного объекта. Уже удаленный(!) предмет будет обнаружен и при следующей 'проверке наличия', если делается в одном и том же цикле, т.к. на синхронизацию серверного и клиентских объектов требуется время (несколько циклов апдейта актора).

Т.о. упрощенные функции имеют область ограничений на применение.

 

Более безопасный вариант может выглядеть так:

function del_from_player_inventory(item_name)
  local obj = db.actor:object(item_name)
  if obj then
    local se_obj = alife():object(obj:id() --/ получаем серверный объект искомого предмета
    if se_obj then --/ проверка наличия объекта в игре
      alife():release(se_obj, true)
    end
  end
end

При этом варианте повторное удаление (однотипного предмета) скорее всего не сработает, но все же не вызовет фатальной ошибки выполнения кода.

 

Или же можно использовать методы выставления флагов 'исключения' для предметов, типа:

function del_from_player_inventory(item_name)
  local obj = db.actor:object(item_name)
  if obj and not db.actor:marked_dropped(obj) then --/ и отсутствует метка 'исключения'
    db.actor:mark_item_dropped(obj) --/ ставим метку 'исключения'
    alife():release(alife():object(obj:id()), true)
  end
end

Более надежный способ 'множественного удаления' все же предполагает итерацию по инвентарю с запоминанием требуемых идентификаторои с последующим удалением по запомненным идентификаторам.

 

---

Готовых функций 'удара по лицу' не существует, вероятно ты имеешь ввиду схему 'abuse'. Требуется вызывать соответствующие состояния/анимации (или использовать подходящее из схемы 'abuse' или самописное). Есть моды, в которых имеется схема 'мордобоя'.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

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

Ситуация такая , скриптер аддона "Коллекционер" Charsi (для него это дело плевое) - пока отсутствует, а люди спросили , как запустить аддон ещё раз , но он уже установлен. Я в скриптах - "нуб" .

У меня завязано все на инфопоршнях. При нахождении в тайнике записки - предыдущая записка удаляется (скриптом) и вот так до последней . Последняя остаётся ,как бы на память. Вот её и надо удалить, чтоб начать заново. Инфопоршен изменяем и погнали по новой, но чтоб не было косяка - нужно удалить последнюю записку, чтоб скрипт не путался.

Этот экшен я повешу всего ОДИН раз в диалоге, который больше не появиться.

 

Добавлено через 23 мин.:

П.С. Может этим спутал народ val_zapis_n , а n - это конкретный номер записки (просто я его забыл когда писал тот пост, толи 18 или 17)

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

Я прописал НПСу логику и при диалоге вылет

[logic]

active = remark@lesnik

danger = danger_condition

 

[remark@lesnik]

target = actor

meet = meet

combat_ignore_cond = always

danger = danger_ignore

on_info = {+infoportion} walker@walker1

 

[danger_condition]

ignore_distance = 3

 

[walker@walker1]

path_walk = esc_bridge_kamp_way2

 

 

Создаю глобальный мод с новыми локациямЭ

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

А сам инфопоршн зарегистрировал в каком-нибудь файле с инфопоршнами? Если нет, то вот это и причина для вылета. Вторая возможная причина - отсутствие path_look в секции [walker@walker1].

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

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

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

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

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

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

Войти

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

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

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