Скриптование - Страница 100 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

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

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

KD87, да, он на той странице, просто я функцию переименовал, сейчас он выглядит так, в конце дописал ещё 2 end`aи вылета теперь нет:

local outfits={

"stalker_gas_outfit",

"military_stalker_commander_outfit"

}

 

local snd = sound_object([[alexmx\helicopter]])

 

function sound_update()

if db.actor and db.actor:alive() then

local outfit = db.actor:item_in_slot(6)

if outfit and outfit:section() and outfits[outfit:section()] then

if not snd:playing() then

snd:play_at_pos(db.actor, vector ():set (0, 0, 0), 0, sound_object.s2d)

end

end

end

end

 

Вызываю так, как написал ранее. Но он так и не работает...

ZeeK, не обязательно. Ошибка в скрипте может быть от отсутствия/присутствия запятой вплоть до неправильного написания кода.

Ulman, ЛС.

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

Помогите пожалуйста с такой задачкой:

Мне нужно из монстра сделать манекена. То есть чтобы тот все игнорировал и стоял на одном месте.

gruber ты говорил в ТТ2 глянуть. Не подскажите имя той зверюшки? Под каким именем она заспавнена?

Мой архив

Сталкером не занимаюсь.

amik, Напиши ему такую логику:

[logic]

active = mob_remark@hold

 

[mob_remark@hold]

anim = stand_idle_0

time = 50000

on_signal = action_end | mob_remark@hold

 

 

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

Можно взять из ТТ2

Смоти логику: doc_pseudodog, doc_bloodsucker, dog_cat...

Создаю глобальный мод с новыми локациямЭ

Ребята, с огромной помощью, всё таки мой скрипт заработал, но со звуком появился глюк. Вот ссылка, которая демонстрирует собственно проблему. Кто то с таким сталкивался?

 

P.S. Сам по себе звук нормальный, в звуковом файли один цикл дыхания.

Такое чувство, что звук у тебя запускается каждый апдейт, независимо от того, доиграл он предыдущий цикл или нет...

Попробуй сохранять время запуска звука в переменной, и запускать снова только если прошло времени больше, чем длина звука.

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

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Я знаю, что я надоел, извините. Я вот хочу попробовать написать скрипт для ТЧ, что бы когда ГГ был голоден, проигрывался звук, желательно рандомный, я примерно что то написал, но вот незнаю как сделать, что бы функция вызывалась каждые 2-3 минуты нормального времени, то есть что бы звук проигрывался при условии голода через определённый промежуток времени. Можете пожалуйсто рассказать на примере. Заранее спасибо. :)

Ulman, отслеживать голод ГГ вроде бы нельзя... Так что никак...

Хотя можно попробовать сделать по статику на экране (иконка голода)... Если только она именно статиком сделана, а не движком...

 

По звуку:

function sound_update()

if db.actor and db.actor:alive() then

local outfit = db.actor:item_in_slot(6)

if outfit and outfit:section() and outfits[outfit:section()] then

if not snd:playing() then

snd:play_at_pos(db.actor, vector ():set (0, 0, 0), 0, sound_object.s2d)

else

if snd:playing() then snd:stop() end

end

end

end

end

 

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

То что подчеркнуто вообще не нужно.

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

Telegram-канал RayTwitty Space

Shadows, да со скриптом мне уже помогли, но спасибо и за такой способ, буду теперь знать.

А вот на счёт голода, вроде бы в моём случае надо ковырять от _g.script да и какая то более чем странная функция там есть:

function on_actor_satiety()

end

Что то мне кажется, что она и была задумана для чего то подобного.

Здравствуйте)

Как в Сталкере с io в скриптах?

    local fl = assert(io.open(".\\test.txt", "a+"))  
    fl:write("test")  
    fl:close()

Получится?

Или разработчики отрубили все расширения?

Пространство имен io доступно начиная с ЧН. В ТЧ нужно извращаться.

Подскажите, пожалуйста, как можно скриптом вывести текстуру на экран, которая записана в maingame.xml? Например, если здоровье гг меньше такого-то значения, то вывести такую текстуру. Я просто в скриптах не силен, а поиск мне не помог.

Жду ли я Сталкер 2? Хм...

Возможно ли заставить мутанта постоянно охотиться только за Гг??

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

Не соответствует. N6260

Ребята, я был прав, функция:

function on_actor_satiety()
end

отвечает за голод. Я переделал её вот так:

snd = sound_object([[ambient\underground\rnd_giant]])
function on_actor_satiety()
        if not snd:playing() then 
            snd:play_at_pos(db.actor, vector():set(0,0,0), 0, sound_object.s2d)
        end
end

И звук проигрывался, но к сожалению только один раз за всю игру. Можно ли как то исправить это недоразумение?

Изменено пользователем Ulman
Ulman, дело в том, что эта и ей подобные функции (рядышком находятся) отвечают за появление туториалов при начале игры (справа вверху вылезает текст про репутацию, голод, бег и т.д.). Сейчас нет при себе распакованной игры, попробуй во всех скриптах поискать вызов этой функции, а затем уже можно изменить так, чтобы она включалась не один раз.

К сожалению больше ни в каком скритпе функция "on_actor_satiety" нигде не вызывается и нигде больше даже такое название не встречается, получается движком вызывается... А вообще с этим что то можно сделать?

Хотя я тут наткнулся на скрипт game_stats.script и он как раз ссылается на "satiety".

Собственно вот такие функции:

function shutdown ()

printf ("GAME STATS START AT LEVEL [%s]", level.name ())

local l_name = level.name ()

for a = 1, table.getn (stats), 1 do

if stats[a].id == actor_position then

printf ("[stats][%s][%s][%d][%f,%f,%f][%f, %f, %f]", l_name, stats[a].time, stats[a].id, stats[a].position.x, stats[a].position.y, stats[a].position.z, stats[a].health, stats[a].radiation, stats[a].satiety)

elseif stats[a].id == actor_item_take then

printf ("[stats][%s][%s][%d][%f,%f,%f][%s]", l_name, stats[a].time, stats[a].id, stats[a].position.x, stats[a].position.y, stats[a].position.z, stats[a].item_name)

elseif stats[a].id == actor_item_drop then

printf ("[stats][%s][%s][%d][%f,%f,%f][%s]", l_name, stats[a].time, stats[a].id, stats[a].position.x, stats[a].position.y, stats[a].position.z, stats[a].item_name)

elseif stats[a].id == actor_money_trade or stats[a].id == actor_money_quest or stats[a].id == actor_money_total then

printf ("[stats][%s][%s][%d][%f,%f,%f][%d]", l_name, stats[a].time, stats[a].id, stats[a].position.x, stats[a].position.y, stats[a].position.z, stats[a].money)

end

end

stats = {}

end

 

и такая:

function update (delta, actor)

additional_time = additional_time + delta

if additional_time < filter_time then

return

end

additional_time = 0

local t = {

time = game.get_game_time ():timeToString (game.CTime.TimeToSeconds),

id = actor_position,

position = actor:position (),

health = actor.health,

radiation = actor.radiation,

satiety = actor.satiety

}

table.insert (stats, t)

end

 

Может это как то использовать можно?

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

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

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

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

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

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

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

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

Войти

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

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

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