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

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

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

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

  • Полезно 2

Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD

Полезное: модули Артоса, XML парсер

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

Жить стало лучше, жить стало веселей. А когда веселей живётся, то работа скорится.

img.php?nick=Balavnik&sert=2&text=t6

Консольные команды должны поддерживаться движком, поэтому только через его редактирование.
Но если всё, что требуется вывести, доступно в скриптах, совсем не обязательно лезть в движок. Можно, например, прикрутить кейлоггер (легко находится поиском по форуму) и повесить вывод в лог на какую-либо незадействованную клавишу.

  • Согласен 1
  • Полезно 1

Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD

Полезное: модули Артоса, XML парсер

Хочу уменьшить на 1 количество патронов в пачке, находящейся в инвентаре актора.

Делаю так:  

netpacket:modify(sobj, "ammo_left", n-1) --sobj - серверный объект пачки патронов

Но ничего не меняется. Подозреваю, что нужно менять в клиентском объекте, но как?

(стрелять не предлагать :hunter::biggrin:)

Параметр с условным наименованием "ammo_left" есть как в state, так и в update части нет-пакета пачки патронов. В таком модуле управления нет-пакетами, как m_netpk от Артоса, это предусмотрено.

Что за функционал скрывается под капотом netpacket:modify, мне не известно, но я бы посмотрел в вышеупомянутую сторону.

Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD

Полезное: модули Артоса, XML парсер

2 часа назад, Kirgudu сказал:

Параметр с условным наименованием "ammo_left" есть как в state, так и в update части нет-пакета пачки патронов.

 

Увы, так тоже не работает:  (причём в update-части параметра nammo_left вообще нет, читал пакет так m_netpk.get(sobj,2)) 

local id = ammo_from:id()
local sobj = server_object(id)
local pk = m_netpk.get(sobj)
local data = pk:get()
data.ammo_left = n-1              
pk:set(data)

Тут видимо нужно с клиентским объектом как-то работать...

Тогда в голову приходит только пересоздание пачки с новым количеством патронов через alife():create_ammo().

Честно говоря, не уделял никогда внимания патронам. Вполне возможно, что управлять ими на лету и нельзя.
Коллеги-старожилы, поправьте.

 

Цитата

причём в update-части параметра nammo_left вообще нет, читал пакет так m_netpk.get(sobj,2)

При чтении полного пакета есть: data.ammo_left и data.upd.ammo_left. Но ни на что не влияет.

Изменено пользователем Kirgudu
  • Нравится 1
  • Полезно 1

Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD

Полезное: модули Артоса, XML парсер

Кто-нибудь адаптировал для себя отдельно в таск_менеджер награду инфой из АМК? У меня лыжи что-то не едут.

Обнаружил странное в файле treasure_manager.script... 

        local community    = parse_names(utils.cfg_get_string(self.ini, id, "community", nil, false, "", "stalker, bandit, dolg, freedom"))

А как же группировки "Монолит" и наёмники? Не говоря уже о зомбированных.

[utils.script]

function cfg_get_string(char_ini, section, field, object, mandatory, gulag_name, default_val) – значение применяется, если группировка не указана

  • Нравится 1
  • Полезно 1

Мини-моды: ТЧ ЧН ЗП

Шпаргалка

[OGSR]

 

Как скриптово получить информацию об объекте и координатах, на которые наведён прицел?

 

В каком колбеке актора обновлять эту информацию? Неужели в update?

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

Жить стало лучше, жить стало веселей. А когда веселей живётся, то работа скорится.

img.php?nick=Balavnik&sert=2&text=t6

53 минуты назад, Balavnik сказал:

координатах, на которые наведён прицел?

Что-то вроде device().cam_pos:add( device().cam_dir:mul( level.get_target_dist() ) )

Но это неточно, в векторах не силён)

  • Нравится 2
  • Полезно 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub/Тема на AP-PRO

naxac.gif

4 часа назад, naxac сказал:

Но это неточно

Но это точно :) и правильно :)

 

  • Спасибо 1
  • Нравится 1

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

Я понял что моя старая подпись что-то нарушает. Удалил все ссылки.

@Balavnik К слову, этот метод работает и с демо-рекордом.

  • Согласен 1
  • Полезно 2

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

Я понял что моя старая подпись что-то нарушает. Удалил все ссылки.

У меня такой вопрос. Все мы знаем, что для различных уровней сложности прописаны свои значения в actor.ltx. 

Вопрос такой, можно ли как-то получить скриптово эти значения? Например: я хочу сделать некую систему достижений, и допустим там будет достижение "читер", которое выдастся, если эти параметры были изменены игроком. (то есть на сложности новичок у меня параметр burn_immunity = 0.3

[actor_immunities_gd_novice]
burn_immunity           = 0.3

но если игрок, играя на сложности новичок залет в файл и поставит значение, отличное от 0.3, то я хочу это отследить.)

 

Вопрос в том - как и возможно ли вообще. 

Спасибо!

God save Hatsune Miku!

2 минуты назад, Labadal сказал:

Вопрос в том - как и возможно ли вообще. 

system_ltx позволяет читать любые параметры из конфигов подключенных к system.ltx. Actor тоже.

  • Спасибо 1
  • Полезно 1

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

Я понял что моя старая подпись что-то нарушает. Удалил все ссылки.

@Zander_driver А есть какая-то документация по этому поводу? Понять бы как работает

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

God save Hatsune Miku!

@Labadal в _g.script например делаешь такую функцию

sys_ini = system_ini()

function get_string( section, param, def_val, ini_file )
  local ini = ini_file or sys_ini
  if ini:line_exist( section, param ) then
    return ini:r_string( section, param )
  else
    return def_val
  end
end

 

потом в нужном тебе скрипте в любой функции вызываешь

get_string( "секция", "значение", "дефолт значение" ) --- это будет строчка из системного конфиг файла, для игры он делится на секции, а не на файлы, на файлы разделяют люди для удобства, потому тебе надо найти секцию с иммунитетами актора это [actor_immunities_gd_novice] если тебе новичок нужен и в ней значение burn_immunity

то есть чтоб играла прочитала это значение надо задать get_string( "actor_immunities_gd_noviceve", "burn_immunity", "0,3" )

  • Спасибо 1

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

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

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

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

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

Войти

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

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

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