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

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

Тема для обсуждения скриптов всего и всех в серии игр 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
Ссылка на комментарий
Gektor, открываешь db.script, там есть функция add_actor, в ней и даешь инфопоршн.

По статистике, 98% системных ошибок находится в полуметре от монитора

«- Александр Григорьевич, доколе же вы будете президентом?

- До Коли, до Коли...»

Ссылка на комментарий

Скачай 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

Спасибо!

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали
Ссылка на комментарий

Влад,

 

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

 

добавлено.

 

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

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

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

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

Кнопка:

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

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

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали
Ссылка на комментарий

Влад,

используй метод Show(true/false).

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

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

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

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

 

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

Изменено пользователем Влад
Не бойтесь совершенства. Вам его не достичь.
C. Дали
Ссылка на комментарий

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

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

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:


Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу.

 

Ссылка на комментарий

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

Ссылка на комментарий

Эм... Ты про пунктик "Что можешь интересного рассказать"? Эти диалоги ДАЛЕКО, не динамические... Прописаны в 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 пользователей

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