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

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

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

В этой битве титанов ни на чью сторону вставать не буду, скажу что прав и тот, и тот, а вот почему - кто ответит, тому ачивка "желание монолиту". Сам это вкусил в процессе написания одного супер модуля ;).

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

 

 

Хотя можешь и не проверять, а открыть файл bind_smart_terrain.script и в методе net_spawn увидишь db.add_smart_terrain( self.se_smart_terrain ) Затем открой файл db.script. Дальше, надеюсь всё и так ясно.

Это забавно. А ничего, что тут совсем другое действие?)

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

@makdm@Zander_driver, спасиба, мужики! Обе схемы заработали. Назовём тогда "схема за 05.07.2015 от makdm с правками от Zander_driver". :D  В момент сейва глючные объекты удаляются не только на текущем уровне, но сразу на всех. Думаю, попробовать её же и при старте/загрузке игры включать, чтобы заранее грохала, особенно если попадется старый глючный сейв...

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

Как переместить сквад на другую локацию в ЗП? Имею в виду не мелкие, а Затон, Юпитер и т.д.

Да где же этот артефакт, едрить его в корень!

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

@MrGROX,  удаляешь на локации убытия и проспавниваешь на локации прибытия.

Именно так делали разрабы Сталкера в ЗП все переходы сквадов с локации на локацию.

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

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

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

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

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

Да где же этот артефакт, едрить его в корень!

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

 

 

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

Не в скрипте, а в конфиге(ltx-файл) логики для этого НПСа. Так что, с этим вопросом в ковырялку ЗП. 

  • Нравится 1
Ссылка на комментарий

 

 

А насчёт удаления и последующего спавна - нет, абсолютно не подойдёт такой вариант.

А собственно почему? Давно нет никаких проблем с тем чтобы сохранить все мыслимое, что интересует у тех нпс, и затем у новых заспавненных восстановить в том же виде.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

Доброго времени суток! Помогите разобраться со скриптами. Хочу сделать отдельный скрипт для внесения функций на точки переходов между локациями. Создаю пустой скрипт mapspots.script, вписываю его и функцию в bind_stalker.script так:

 

function actor_binder:info_callback(npc, info_id)
printf("*INFO*: npc='%s' id='%s'", npc:name(), info_id)
--' Сюжет
-- Отметки на карте
mapspots.add_lc_spot_to_map()
end


В скрипте mapspots.script пишу следующее:

 

function has_lc_to_marsh_1()
if db.actor:has_info("actor_teleport_to_marsh_1") then
local obj_id = get_story_object_id("esc_to_marsh_1")
--if(obj_id) then
level.map_add_object_spot_ser(obj_id, "level_changer_down_left", "lc_to_marsh_name")
end
end

function has_lc_to_escape_1()
if db.actor:has_info("actor_teleport_to_marsh_1") then
local obj_id = get_story_object_id("marsh_to_esc_1")
--if(obj_id) then
level.map_add_object_spot_ser(obj_id, "level_changer_up_right", "lc_to_esc_name")
end
end

function add_lc_spot_to_map()
if db.actor == nil then
return
end
-- перечислим функции, которые обрабатываем
has_lc_to_marsh_1()
has_lc_to_escape_1()
end

 

Всё сохраняю, запускаю игру и получаю вылет:

Expression : !m_error_code
Function : raii_guard::~raii_guard
File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line : 748
Description : ...call of pripyat\gamedata\scripts\bind_stalker.script:133: attempt to index global 'mapspots' (a nil value)

Но если я заношу все функции, напрямую в bind_stalker.script (или, например, в dialogs_локация.script), и вписываю в bind_stalker.script так

function actor_binder:info_callback(npc, info_id)
printf("*INFO*: npc='%s' id='%s'", npc:name(), info_id)
--' Сюжет
ui_clc_menu.level_changer_choise(info_id)
-- Отметки на карте
add_lc_spot_to_map()
end


то вылета нет, подскажите, что я делаю неправильно? (Прошу сильно не пинать, я со скриптами впервые работаю :) ).

Изменено пользователем Grif_on
Ссылка на комментарий
Description : ...call of pripyat\gamedata\scripts\bind_stalker.script:133: attempt to index global 'mapspots' (a nil value)

Такая строка говорит о том что у вас в mapspots.script синтаксическая ошибка. или, файл скрипта называется не так.

А судя по тому что при переносе ваших функций в другой файл, на этот другой файл ругань не идет - ошибка не в этих функциях.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

Знающие, подскажите. Мод FAE для ТЧ. Если запустить таймер из amk.script, как его возможно сбросить или отключить?

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

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

 

 

Если запустить таймер из amk.script, как его возможно сбросить или отключить?

Ну это уже не серьезно: если есть какая-то система таймеров, и Вы знаете ф-цию запуска, то что мешает посмотреть в том-же скриптовом модуле ф-цию остановки\сброса\перезапуска ?

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

@UnLoaded, Просто я еще в скрипте таймера еще не разбирался, а необходимость сброса/отмены таймера назрела.

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

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

 

 

если есть какая-то система таймеров, и Вы знаете ф-цию запуска, то что мешает посмотреть в том-же скриптовом модуле ф-цию остановки\сброса\перезапуска ?

между прочим, за последние несколько постов, самая полезная мысль. А тролльная перепалка, это конечно весело, но вряд ли полезно.

  • Согласен 2

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

 

 

вот хоть товарищу помоги, у него необходимость возникла. А я переживу.

Спасибо, но я уже сам разобрался. Ничего сложного там нету.

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

Ссылка на комментарий
Как прописать custom_data определенному объекту через скрипт?

Завалялась вот функция:

local obj=alife():create("esc_stalk",vector():set(-63.919,6.269,-36.914),283878,3051)
local params=amk.read_stalker_params(obj)
params.custom="[logic]\ncfg = scripts\\name.ltx" ---- путь к файлу логики.
params.sid=12547
amk.write_stalker_params(params,obj)

Работать будет только с АМК модом.

Изменено пользователем BoBaH_671
  • Полезно 1

Ранее был известен под ником BoBaH_671.

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

Снимаю/цепляю оптический прицел из скрипта. Сейчас делаю это, удаляя оружие и спауня новое, меняя нетпакет при спауне. Есть способы "синхронизировать" клиентский объект с серверным, что бы обойтись без удаления/спауна?

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

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

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

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

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

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

Войти

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

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

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