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

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

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

for i=1,65535 do

local obj = alife():object(i)

if obj then

if IsStalker(obj) or IsMonster(obj) then

get_console():execute("NAME_IS_"..obj:name())

end

end

end

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

local bolt=db.actor:object("bolt")
if bolt then db.actor:drop_item_and_teleport(bolt,vector():set(0,0,0)) end

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

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

Может кто-нибудь выложить оригинальный аллспавн ТЧ 1.0004? То я свой кажется "Засрал"..

 

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

Как заспавнить вёртолет? Причём не в начале игры, а после диалога

Попробуй через скрипт)

 

вылетает с логом

[error]Expression : motion_ID.valid()

[error]Function : CKinematicsAnimated::ID_Cycle

[error]File : E:\stalker\patch_1_0004\xr_3da\SkeletonAnimated.cpp

[error]Line : 136

[error]Description : ! MODEL: can't find cycle:

[error]Arguments : $editor

 

вылетает с логом

[error]Expression : motion_ID.valid()

[error]Function : CKinematicsAnimated::ID_Cycle

[error]File : E:\stalker\patch_1_0004\xr_3da\SkeletonAnimated.cpp

[error]Line : 136

[error]Description : ! MODEL: can't find cycle:

[error]Arguments : $editor

А ты как спавнил? Напиши функцию. И у тебя есть аи вертолета?

 

strelok200, При спавне вертолёта через скрипт, обязательно требуется перепаковка net_packet, с переназначением параметров:

 

skeleton_name     = idle
startup_animation = idle

 

Заспавни вертолёт через all.spawn, и напиши ему в логике чтобы до определённого момента он сидел за картой и не шумел (engine_sound = false)

Так в GSC делали, иначе придётся познать чудесный мир lua-скриптов.

Мне кажется лучше установить АИ вертолётов и не парится, как по мне лучший выбор.

И ещё, ребята, дайте пожалуйста ссылку(и) на учебник(и) по LUA, только что бы нормальные были, так что бы от самого начала и по возможности до конца, а то надоело собирать по кускам.

strelok200, Юзай net_utils.script из Симбиона (наиболее полная версия менеджера net_packet объектов игры)

Перепаковка, в данном случае будет занимать минимальное количество строк:

local sobj = alife():create("helicopter", ...
if sobj then
    local tbl = net_utils.Get_Data_Helicopter(sobj)  --//считываем данные net_packet объекта
    tbl.skeleton_name     = "idle"                        --//переопределяем требуемые параметры
    tbl.startup_animation = "idle"
    net_utils.Set_Data_Helicopter(tbl, sobj)            --//перезаписываем net_packet объекта
end

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

Ulman

http://www.lua.ru/doc/5.6.html

Функции сталкера смотри в соответствующей теме на этом форуме, там их очень хорошо разобрали.

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

Господа у меня вот такой вопрос.

Вопрос скорее по логике задания.

Я собираюсь отправить ГГ в забег по телепортам. Телепорты помимо того еще и перебрасывают ГГ на другии локации.

Все места необетованные в обычной игре ГГ туда некогда не пройдет.

На каждой локации два этапа в последнем телепорте(через рестриктор) он отправляется на следующую локу и т.д.

Вот возник вопрос как заселить эти места.

Идея такая в конце каждого этапа(на локе из двух подэтапов) есть спейс_рестриктор который и активирует переход на другую локацию.

Хочу его использовать и для заселения локации на которую отправится гг и подчищистки (удаления) все го того что было наспавненно на первой локе. Если ГГ пробежит в телепорт и оставит кого нибуть в живых чтоб потом небыло вопросов.

Все сделано скриптами.

 

Как лучше реализовать поэтапное заселение чтоб перед телепортацией заселить ту локу куда отправимся и удалить то что осталось на первом этапе?

Самый простой вариант, т.к заселение скриптами, просто сделай свои секции персонажей (тока в ltx, профили менять не надо)

и к началу\концу каждой секции припиши какой нибудь "ключь", например sim_default_stalker_0_portal_npc

 

А дальше в момент телепортации просто делай перебор по iD\ или по db.storage и ищи через string.finde() те секции персонажей, у которых есть в названии _portal_npc и удаляй их :)

 

Ну и ещё в АМК-скрипте есть возможность сохранять в сейв таблицы. Можешь взять от туда функцию и записывать ID каждого заспавненного тобой НПС, а потом просто перебор этой таблицы и удаление по ID

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

Юзал поиск, но ничего не нашёл...Подскажите как заспавнить ранненого НПС, а точнее какую ему логику писать? Я вот написал но она не работает, нпс просто стоит под гулагом, но ранненого никак не изображает...

[smart_terrains]

none = true

[logic] active = walker

[walker]

path_walk = vano_help_walk

path_look = vano_help_look

wounded = wounded

meet = no_meet

on_info = {+agr_wounded_stalker_heal} walker@2

[walker@2]

path_walk = vano_way

[wounded]

hp_state = 30|help_me@help|29|wounded_heavy@help_heavy

hp_state_see = 30|wounded@help_see|29|wounded_heavy@help_heavy

psy_state = 50|{=best_pistol}psy_armed,psy_pain@wounded_psy|20| {=best_pistol}psy_shoot,psy_pain@{=best_pistol}wounded_psy_shoot,wounded_psy

hp_victim = 30|nil|10|nil

hp_cover = 30|true|29|false

hp_fight = 30|true|29|false

syndata = wounded@help

help_dialog = vano_help_dialog

 

Изменено пользователем Виталкер
...какую ему логику писать?

Если делаешь на ЗП, то попробуй воспользоваться моим методом:

 

[logic] 
active = remark

[remark] 
wounded = wounded
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
gather_items_enabled = false
help_wounded_enabled = false
corpse_detection_enabled = false
meet = no_meet

[wounded]
hp_state = 101|wounded_heavy@nil
hp_state_see = 101|wounded_heavy@nil
hp_victim = 101|actor
hp_cover = 101|false
hp_fight = 101|false
autoheal = false
not_for_help = false

P.S. Вот, самое основное. Дальше сам допиливай...

Хотел спросить, вот есть три вида спавна, all.spawn,скрипт и level.spawn. Короче я через алл.спавн заспавнил разбитую машину, но она "дерётся" - тоесть когда гг к ней прикосается она наносит ему удар и тот умирает...А если в неё стрильнуть, а потом подойти, то всё нормально...Так вот скажите если я через level.spawn заспавню туже машину она будет стоять как "вкопаная"?

Изменено пользователем Виталкер

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

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

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

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

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

Войти

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

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

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