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

Скачай xrSpawner последней версии. Это для ТЧ. Там уже все машины описаны как секции для алл.спауна.

Вот есть скрипт спавна рабочей аномалии.

Есть скрипт спавна рестриктора.

А есть скрипт спавна источника света(вместе с моделью)?

Повесил выполнение ф-ции на кнопку:

Expression : fatal error

Function : CScriptEngine::lua_error

File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

Line : 73

Description : <no expression>

Arguments : LUA error: ...s\s.t.a.l.k.e.r\gamedata\scripts\ui_main_menu.script:315: attempt to call method 'kill' (a nil value)

 

ob = alife():create(section,pos,db.actor:level_vertex_id(),db.actor:game_vertex_id())
ob:kill(ob)

 

Кто знает,в чём трабла?

 

malandrinus

Спасибо!

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

Влад,

 

После создания объекта ты получаешь серверный объект, ему ещё надо перейти в онлайн. только после перехода в онлайн появится клиентский. Клиентский ты сможешь найти с помощью функции level.object_by_id(). Вот для него и вызывай kill

 

добавлено.

 

Если задачей стоит заспавнить дохлую тушку, то это можно сделать не дожидаясь перехода в онлайн. Можно вызвать для серверного объекта метод on_death(). Это обсуждалось здесь.

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

Работаю с юи-элементами:

Кнопка:

self.W = xml:Init3tButton("test", self)
self:Register(self.W,"test")
self.W:Enable(true)

 

Ф-ция,которая срабатывает при нажатии на эту кнопку:

function ui_test:testButton()
...
self.W:Enable(false)
...
end

Только вот при нажатии на кнопку,она не исчезает.Как быть?

 

 

malandrinus

Спасибо!Снова помог)

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

Хотел выести текст в мессаг-боксе,

local xml = CUIScriptWnd()
xml:GetMessageBox("ТЕСТ")

но ничего не произошло..

 

Или такой вариант не катит?

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

Такой вариант не катит.

То что написал ты, используется по-другому

local xml = CUIScriptWnd()

--...
--здесь нужно создать и зарегистрировать MessageBox под именем "TECT"
--...

-- здесь ты получаешь ранее созданный MessageBox
local message_box = xml:GetMessageBox("ТЕСТ")

-- и здесь можешь с ним что-нибудь сделать, например, показать

Почему бы не посмотреть, как уже сделано в оригинале. MesssageBox`ы, например, выводятся в главном меню.

Вот как сделано в ЗП(файл ui_main_menu.script):

  local message_box = CUIMessageBoxEx()
  message_box:InitMessageBox("message_box_quit_windows")
  message_box:ShowDialog(true)

Можно найти пример и в ТЧ

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

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

в чем может быть проблема? :russian_ru:

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

Эм... Ты про пунктик "Что можешь интересного рассказать"? Эти диалоги ДАЛЕКО, не динамические... Прописаны в gamedata\config\gameplay\character_dialogs.xml.

 

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

Возник вопрос: можно ли использовать такую конструкцию?

--Локальная переменная содержащая монстров которые спаунятся на локации где попало.

local spawned_mutants = {

"pseudodog",

"bloodsucker",

"zombie_strong"}

 

--Функция спаунющая мутантов где попало.

function spawn_m()

alife():create(spawned_mutants[math.random(3)], vector():set(x,y,z),lv,gv)

end

 

local x = {

"190"

"453"

"532"}

 

local y = {

"10"

"15"

"2"}

 

local z = {

"867"

"564"

"345"}

 

local lv = {

"100"

"143"

"200"}

 

local gv = {

"432"

"564"

"246"}

Или я в очередной раз извращаюсь как могу? Если да, то как мне сделать рандомный выбор координат из предложенных?

Изменено пользователем кровоSTALKER
кровоSTALKER, ну во первых: переменные нужно объявлять до их использования, во вторых у тебя нет выбора разных координат, а вместо них берется таблица, вылет будет однако, в третьих, левел вертекс и гейм вертекс лучше вычислять для координат, а лучше вообще брать координаты со случайного левел вертекса, посмотри в AMK как там вычисляли координаты для спавна аномалия, на мой взгляд идеальная реализация, сам ей пользуюсь когда надо.

Ещё создал

--Локальная переменная содержащая в себе имена профилей сталкеров подлежащих удалению.

local deleted_stalkers = {"gar_seriy", "gar_hellcar", "gar_bandit_leader"}

 

--Функция берущая имена профилей НПС из локальной переменной и удаляющая их.

function delete_s()

alife():release(deleted_stalkers)

end

вызываемую

level_tasks.add_lchanger_location()

 

self.bCheckStart = false

end

if level.name() == "l02_garbage" then

pioners.delete_s()

end

end

end

но вылетает с таким

FATAL ERROR

 

[error]Expression : fatal error

[error]Function : CScriptEngine::lua_error

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

[error]Line : 73

[error]Description : <no expression>

[error]Arguments : LUA error: ... publishing\s.t.a.l.k.e.r\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)

 

 

stack trace:

В чём проблема?

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

Хм... А как id получить?

 

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

Тоесть, примерно

local deleted_stalkers = {"gar_seriy", "gar_hellcar", "gar_bandit_leader"}

 

function delete_s()

local se_obj = alife():object(deleted_stalkers)

if se_obj then

alife():release(se_obj, true)

end

end

функция? Но и она не работает...

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

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

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

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

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

Войти

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

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

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