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

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

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

Редактировать движок игры.

 

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

2 часа назад, mr.vispd сказал:

 

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

Если так, лучше даже не берись и забудь про идею. Реализуй что попроще без ковыряния движка.

  • Согласен 2

Здрасьте.

 

[ТЧ 1.0006] В отношении класса CUIProgressBar() в файле [lua_help.script] пропущены, как минимум, методы InitProgressBar(str, CUIWindow), SetProgressPos(num) и GetProgressPos(). Существует ли в открытом виде точный список методов этого и других оконных классов?

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

Шпаргалка

2 часа назад, Norman Eisenherz сказал:

Существует ли в открытом виде

Да... Открыть исходники (вашего движка), и там посмотреть, что экспортировано в скрипты. Ничего программировать и ничего компилировать не надо, т.е. бояться (как этого обычно боятся) - нечего.

1 час назад, Norman Eisenherz сказал:

Чем-то определенным надо открыть

Исходник - текстовый файл. Открывается чем угодно, хоть блокнотом.

tHo2eKa.png

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

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

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

@Zander_driver IDA показывает ассемблерный код. Чем-то определенным надо открыть, чтобы увидеть названия классов и методов?

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

Шпаргалка

@Norman Eisenherz, зачем ida? Открывай обычным блокнотом или любым другим текстовым редактором. *.cpp и *.h - обычные текстовые файлы. Экспорт функций и классов с их методами, как правило, находится в файлах, в имени которых есть script.

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

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

naxac.gif

Подскажите, кто разбирается, есть ли функции для запрета вывода сообщений на экран (нужно только в пда)? Или это только движок ковырять?

@RusStriker, Это news_manager.script нужно править.

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

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

У меня вопрос: можно ли переносить предметы в инвентарь в оффлайне, когда нет возможности пользоваться методом transfer_item, а свойство parent_id серверных объектов работает только на чтение?

Изменено пользователем Graff46
23 часа назад, Zander_driver сказал:

@RusStriker, Это news_manager.script нужно править.

Что то не могу найти, где там координаты вывода задаются, не силен я в скриптах :unknw:.  Можно какой то пример кода для ЗП?

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

@RusStriker, координаты там и не задаются.

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

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

Имеем в переменной obj объект, например, бинт. Но не просто бинт, а застрявший в текстурах бинт.

Есть ли простой скриптовый способ извлечь его на свет божий? (например, поднять на 1 м вверх)

 

@phalcor, Можно нет-пакетом cse_abstract для этого рекомендую m_netpk.script он выложен в соседней теме. Либо если движок правленый, то скорее всего у класса алайф есть метод для телепортации объектов по их id.

  • Спасибо 1

@phalcor, чем этот бинт тебе так дорог, что непременно нужно именно его переместить? Просто удали его и создай новый по прошлым координатам + 1 метр.

 

  • Согласен 2

@dsh, да, с бинтом это меня устроит. А если это оружие с определённым состоянием, зарядом, обвесами и т.д.?   

Как-то же возможно изменить y-координату?

 

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

  • Спасибо 1

Я обозначил проблему в этой теме, однако есть основание полагать, что вопрос связан со скриптами. Смысл такой:

В задании "Защитить лагерь новичков от наёмников" (которое даёт Фанат на Кордоне) нужно убить 7 наёмников. После чего задание засчитывается (устанавливается инфопоршн escape_lager_killers_die). 

Если теперь сделать save и затем load - трупы наёмников пропадают!  При этом промежуточные save/load (когда убиты ещё не все наёмники) такого эффекта не вызывают - трупы не пропадают.

Если вручную толкнуть означенный выше поршень, то ещё живые наёмники исчезают. 

Вопрос: как сделать так, чтобы  трупы наёмников были как и обычные трупы - НЕ ИСЧЕЗАЛИ после save/load. Видимо, есть какой-то параметр/свойство..

Изменено пользователем phalcor
синтаксис

@dsh, знал бы точно, что и где искать? Вот в all.spawn есть семь секий (по числу наёмников), это оно?

Скрытый текст

 

[3118]
; cse_abstract properties
section_name = stalker
name = esc_killer1
position = -99.2369918823242,-4.79276275634766,-77.2306289672852
direction = 0.0865945741534233,-0.0213616397231817,0.147721081972122
unknown_id = 0
script_version = 7

; cse_alife_trader_abstract properties
money = 5000
character_profile = esc_killer_specnaz

; cse_alife_object properties
game_vertex_id = 75
distance = 8.39999961853027
level_vertex_id = 161287
object_flags = 0xffffffbf
custom_data = <<END
[spawner]
cond = {+escape_lager_spawn_killers}

[smart_terrains]
esc_killers = true
END

; cse_visual properties

 

 

@phalcor, Да, оно. Но в секции [spawner] тут только инфо escape_lager_spawn_killers на перевод наймов в онлайн.

 

Вот кусок из gulag_espace.script

Скрытый текст

 if type == "esc_killers" then
  return function(gulag)
   local actor = db.actor
   if not actor then
    return gulag.state
   end
   if not has_alife_info("escape_lager_spawn_killers") then
    return 0 -- offline
   elseif has_alife_info("escape_lager_spawn_killers") and not has_alife_info("esc_killers_raid") then
    return 3 -- wait
   elseif has_alife_info("esc_killers_raid") and not has_alife_info("esc_open_killer_fire") then
    return 4 -- raid
   elseif has_alife_info("esc_open_killer_fire") and xr_gulag.getGulagPopulationComed("esc_lager") > 0 then
    return 1 -- fight
   elseif has_alife_info("esc_open_killer_fire") and xr_gulag.getGulagPopulationComed("esc_lager") <= 0 then
    return 2 -- kamp
   end
   return gulag.state
  end
 end

Состояние 2 - это вот не для него случаем:

Скрытый текст

t = { section = "logic@esc_killer_kamp_offline",
   idle = 0,
   prior = 5, state = {0},
   online = false,
   in_rest = "", out_rest = ""
  }
  table.insert(sj, t)
  t = { section = "logic@esc_killer_kamp_offline",
   idle = 0,
   prior = 5, state = {0},
   online = false,
   in_rest = "", out_rest = ""
  }
  table.insert(sj, t)
  t = { section = "logic@esc_killer_kamp_offline",
   idle = 0,
   prior = 5, state = {0},
   online = false,
   in_rest = "", out_rest = ""
  }
  table.insert(sj, t)
  t = { section = "logic@esc_killer_kamp_offline",
   idle = 0,
   prior = 5, state = {0},
   online = false,
   in_rest = "", out_rest = ""
  }
  table.insert(sj, t)
  t = { section = "logic@esc_killer_kamp_offline",
   idle = 0,
   prior = 5, state = {0},
   online = false,
   in_rest = "", out_rest = ""
  }
  table.insert(sj, t)
  t = { section = "logic@esc_killer_kamp_offline",
   idle = 0,
   prior = 5, state = {0},
   online = false,
   in_rest = "", out_rest = ""
  }
  table.insert(sj, t)
  t = { section = "logic@esc_killer_kamp_offline",
   idle = 0,
   prior = 5, state = {0},
   online = false,
   position_threshold = 400,
   in_rest = "", out_rest = ""
  }
  table.insert(sj, t)
  t = { section = "logic@esc_killer_kamp_offline",
   idle = 0,
   prior = 5, state = {0},
   online = false,
   position_threshold = 400,
   in_rest = "", out_rest = ""
  }
  table.insert(sj, t)

Сама логика:

Скрытый текст

[logic@esc_killer_kamp_offline]
active = kamp@esc_killer_kamp_offline

[kamp@esc_killer_kamp_offline]
center_point = kamp_wait

 

Изменено пользователем AndrewMor
  • Нравится 2

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

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

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

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

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

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

Войти

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

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

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