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

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

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

А не проще на яндекс-диск какой-нибудь положить файл, нет ?

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

А не проще на яндекс-диск какой-нибудь положить файл, нет ?

Вот

Добавлено Kirgudu,

Пункт 2.6 правил форума, предупреждение.
Рекомендую изучить правила цитирования.

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

 

 

может это из-за новых скриптов?

Нет, не из-за них. Я давно это заметил вообще. Но на всякий проверил со старыми скриптами - да, та же картина, выходят за пределы ограничивающего рестриктора.

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

@dsh, да обычный шейп к которому аттачится флажок space_restrictor. Все в СДК делаю. Потом назначаю его (уникальное имя) в профиль моба в том же СДК, там есть параметры in/out space restrictor. Раньше все работало, когда был на ОГСЕ так точно.

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

@HellRatz, а в all.spawn это как выглядит, вот так?

dynamic_out_restrictions = 
dynamic_in_restrictions = 

Только у тебя что-то указано в dynamic_out_restrictor?

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

@dsh, в олл.спаун это пишется так:
Соответственно, секция мутанта, и там 

; cse_alife_monster_abstract properties
base_out_restrictors = restr_name

(ну или будет base_in_restrictors), dynamic_* тоже есть, но они пустые (т.е после = ничего нет)

 

UPD: упоминание base_out_restrictors я нашел только в xs_netpk, который достался мне от ОГСЕ и, возможно, не работает должным образом, быть может в этом дело.

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

@HellRatz, в качестве бреда, попробуй выполнить такой код

local obj = level.object_by_id( 1879 )
if obj then
  local base_out = obj:base_out_restrictions()
  if base_out then
    log2( "dsh: found %s = %s", obj:name(), base_out )
    for _, name in ipairs( parse_names( base_out ) ) do
      local sobj = alife():object( name )
      if sobj then
        log2( "dsh:  restrictor sobj = %s", sobj:name() )
        local obj = level.object_by_id( sobj.id )
        if obj then
        log2( "dsh:  restrictor  obj = %s",  obj:name() )
        end
      end
    end
  end
end

Вместо 1879 укажи id своего моба. Если у тебя нет функций log2() и parse_names(), то посмотри их в моем репозитории, в _g.script.

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

Здравствуйте. Такой вот вопрос возник, можно ли заспавнить спейс рестриктор скриптом. Знаю что лучше делать через сдк, но нужно именно так. Заранее спасибо.

Ссылка на комментарий
@vampirnik77, можно. А в чем проблема-то? Создаешь "space_restrictor", далее​ используешь любой модуль для работы с нетпакетами и добавляешь ему шейп и кастомную дату с логикой. Пример кода позже покажу.
  • Спасибо 1
Ссылка на комментарий

лучше делать через сдк,

Лучше как раз не через СДК, а создать ровно тогда, когда нужен, и убрать сразу, как только станет ненужным.

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

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

@vampirnik77, вот смотри, пример

local sobj = alife():create( "space_restrictor", pos, lv, gv )
local pk = get_netpk( sobj, 1 )
ASSERT( ( pk and pk:isOk() ), "can't read netpacket of %s", sobj:name() )
local data = pk:get()
data.shapes:addSphere( radius, vector():set( 0, 0, 0 ) )
data.custom_data:setString(
  "[logic]\ncfg = scripts\\my_super_sr.ltx\n"
)
pk:set( data )
Этот пример использует модуль для работы с нетпакетами от Артоса. Изменено пользователем Kirgudu
Добавлено Kirgudu,

Добавил забытые кавычки.

И надо иметь в виду, что "ASSERT" даст вылет (в случае ошибки чтения нет-пакета), а если вылет не нужен, лучше использовать "if pk and pk:isOk() then ... end"

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

Такой немного странный вопрос: можно ли обнулять/отнимать деньги у ГГ (можно и НПС) после купли/продажи? Или без правки движка никак?

Нашел что-то типа db.actor:money, может с этим можно работать.

 

На секунду представил невидимую функцию передачи денег НПСу при каждой сделке, но само действие при нажатии "Торговать" ведь  никак не перехватывается и работает чисто внутри движка?

 

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

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

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

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

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

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

Войти

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

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

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