Скриптование - Страница 445 - Скрипты / конфиги / движок - 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/
Цитата

[walker@1]

path_walk = test_walk 

path_look = look

on_info = {+test} nil %=killme%

Где killme:

Цитата

function killme(npc)
    npc:kill(npc)
end

Требуется убить НПЦ, после поршня test. Умирает ГГ:489:. Где я ошибся?

Не соответствует правилам.

@CRAZY_STALKER666 стесняюсь спросить: зачем изобретать велосипед? В оригинале всех трёх частей игры есть соответствующие функции, доступные в том числе из логики - xr_effects.kill(actor, npc) для SoC и чуть более универсальная xr_effects.kill_npc(actor, npc, p) для CS и CoP.

  • Спасибо 1
  • Согласен 2

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

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

Подскажите, можно ли заспавнить скриптом предмет который бы освещал пространство, лампа, фонарь и тд., и как настроить что бы они светили?

@Graff46 это вопрос, пожалуй, для другой темы. Вот пример, сейчас уже не используется, но раньше я его использовал:

https://github.com/dsh2dsh/op2ogse/blob/8f94729861b177b039eb58db4ca93e48b69bdb1c/gamedata/scripts/dsh/dsh.script#L2426

 

  • Спасибо 1

@Kirgudu Ну, не то чтобы мне очень хотелось сочинять велосиеды, но об этих функциях я просто не знал...

А за копирование последних постов при ответе, преды скоро пойдут по полной программе. dc

 

А за искомой лез в amk.script.

Но, благодаря вам, вопрос решен. Большое спасибо:biggrin: 

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

Не соответствует правилам.

(ТЧ)Помогите с удалением предметов из инвентаря по секции. Использовал это:

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

function remove_item_from_inventory_by_name(remove_item_name,npc)
	if npc==nil then npc=db.actor end
	return remove_item_from_inventory(npc:object(remove_item_name),npc)
end

--удаляем предмет из инвентаря
function remove_item_from_inventory(remove_item,npc)
  if npc==nil then npc=db.actor end
  if remove_item~=nil then
--      npc:mark_item_dropped(remove_item)
    alife():release(alife():object(remove_item:id()), true)
    return true
  end
  return false
end

 

но это вылетает...

Всем привет.

Как в логике НПС прописать его исчезновение(Стоит НПС, отходим на пару метров, получаем инфопоршень, НПС исчезает)

"Люди — животные, не имеющие ни страха, ни уважения, ни сочувствия. Лишь только блеск выгоды в глазах" © Алексей Шевцов

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

OC: Windows 10 Home, Видеокарта: NVIDIA GeForce GTX 1050 TI 4ГБ, Процессор: Intel Core i3 7100 3900 МГц 2 ядра, RAM(ОЗУ): 8ГБ DDR4, ROM(ПЗУ): 1ТБ

 

@Metro_Rus исчезновение или удаление? Это несколько разные вещи. Вот логика непися, который стоит на месте, куда поставили, после инфопоршня "dragunov_aks_done" дожидается, когда актор отойдет на 50 метров и самоудаляется:

https://github.com/dsh2dsh/op2ogse/blob/master/gamedata/config/dsh/logic/l11_pripyat/dragunof_npc.ltx

Вот та самая функция, которая вызывается из этой логики для удаления:

https://github.com/dsh2dsh/op2ogse/blob/8f94729861b177b039eb58db4ca93e48b69bdb1c/gamedata/scripts/dsh/dsh.script#L2331

 

Все это, естественно, для осмысления, а не для тупого копирования.

 

Изменено пользователем dsh
  • Спасибо 1
Только что, Metro_Rus сказал:

Как в логике НПС прописать

[logic]
active = <<schema>>

[<<schema>>]
...
on_actor_dist_ge_nvis = 2| %+info_porshen =del%

;--// в xr_effects.script

-- удаление. у меня работает
function del (actor, npc) 
    alife():release(alife():object(npc:id()), true) 
end

 

  • Спасибо 1

Народ, к вам такой вопрос по поводу алайфа из АМК и новостей оттуда же. В общем, я скопировал связанные с ними и еще парочку скриптов(на починку оружия и на обшаривание НПС трупов и тайников) в патч 1.0007. Все норм работает, стволы чинятся, сталкеры забирают все, что плохо лежит(в том числе и из ящиков в деревне новичков и т.д.). Так вот, мне кто-то может сказать, когда должна заработать эта симуляция жизни с новостями? А то я уже вернулся с флешкой Шустрого, но пока что никаких новостей в игре нету.

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

Для чего в ф-ции pick_section_from_condlist из xr_logic.script такая конструкция?

if infop.prob then
                if not rval then
                    rval = math.random(100)
                end
                if infop.prob < rval then
                    infop_conditions_met = false -- инфопоршен есть, но он не должен присутствовать
                    break
                end
          ...

Это какая-то ф-ция для рандомного перехода между секциями?

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

скопировал связанные с ними и еще парочку скриптов

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

 

@Graff46 "Вах ! Ты знал !" (C)

Что не так с функцией: 

function spawn_monstr_1()
if db.actor and level_id.l02_garbage then
alife():create("m_bloodsucker_e",vector():set(145.85691833496,-2.7371287345886,253.02215576172),302432,368)
end
end

Вылет: [error]Arguments     : LUA error: ...\s.t.a.l.k.e.r\gamedata\scripts\spawn_new.script:2: attempt to index global 'level_id' (a nil value)
 

Важнейшая задача цивилизации - научить человека мыслить.

@Fenrir02 Вот так попробуй: if level.name() == "l02_garbage" then

 

Изменено пользователем TIGER_VLAD
  • Согласен 1

@Dennis_Chikin скинул файлы, которые мне подсказали: amk_death_lists.scripts, amk_names_lists.scripts, amk_news_lists.scripts, amk_unique_news_lists.scripts, amk.scripts, amk_mod.scripts и amk_offline_alife.script. Скрипты с алкоголизмом, ремонтом и обшариванием тайников НПС еще, но мне лень искать имена этих файлов(где-то записаны, а где - не знаю).

Все зовут меня Пришедший из Ниоткуда...Почему?Потому что я пришел из ниоткуда и иду в никуда...

Только что, Fenrir02 сказал:

Что не так с функцией: 

Я может быть чего-то не знаю, но меня смущает это:

level_id.l02_garbage

 

  • Согласен 1
20 минут назад, TIGER_VLAD сказал:

@Fenrir02 Вот так попробуй: if level.name() == "l02_garbage" then

 

Да работает)

Важнейшая задача цивилизации - научить человека мыслить.

@Fenrir02 

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

if level.name()=="predbannik" and not has_alife_info("info") then db.actor:give_info_portion("info")

Выдаешь поршень. А из поршня спавнишь все что душе угодно. Хоть сто монстров, хоть пятьсот рестрикторов.

 

Блин... 

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

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

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

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

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

Войти

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

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

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