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

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

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

Не вру. Ты апдейт куда записывал? Так как у меня? chimera_mod.din_scope()? Да и какой мне смысл врать? Я же заинтересованное лицо.)))

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

кровоSTALKER

в bind_stalker.script, function actor_binder:update(delta)

...
        self.bCheckStart = false        
    end        
test.active_weapon()
end
...

 

и как у тебя может не работать,если я у себя изменял только название кастом статика,скрипт не трогал?

function active_weapon()

local hud = get_hud()

local custom_static = hud:GetCustomStatic("ait")

local active_item=db.actor:active_item()

if active_item then

if active_item:section() == "wpn_vintorez" or active_item:section() == "wpn_svu" or active_item:section() == "wpn_svd" then

if math.ceil(db.actor:accuracy()*1000) == 1 then

if custom_static == nil then

hud:AddCustomStatic("ait", true)

end

end

end

end

 

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

Renson

function check_level()

local current_level = ""

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

current_level = "esc"

end

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

current_level = "gar"

end

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

current_level = "dv"

end

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

current_level = "bar"

end

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

current_level = "rost"

end

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

current_level = "mil"

end

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

current_level = "yan"

end

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

current_level = "rad"

end

if level.name() == "l11_pripyat then

current_level = "pri"

end

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

current_level = "stan"

end

if level.name() == "l11_pripyat then

current_level = "pri"

end

return current_level

end

 

для добавления уровня делай так:

if level.name() == "название_локи" then
    current_level = "любой_текст"
end

Не бойтесь совершенства. Вам его не достичь.
C. Дали
Ссылка на комментарий
Влад, а ты на ТЧ тестил? Я ведь речь о ЗП веду. Изменено пользователем кровоSTALKER
Ссылка на комментарий

кровоSTALKER

Так я не экстрасенс.Не могу я знать,что тебе на ЗП надо.

сейчас попробую на ЗП,потом отпишусь.

----upd.

ну вот,проверил на ЗП.Всё работает.

только строчку

if math.ceil(db.actor:accuracy()*1000) == 1 then

измени так

if math.ceil(db.actor:accuracy()*1000) == 0 then

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

Влад, а мне поможеш? Как заспавнить в инвертать пару итемов, потом в опред. момент сработает функция и нужно эти самые 2 итема переместить на локу в определенные кооринаты. (актор находится на той же локи).

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

max_max_08

на,держи ;)

function spawn()

alife():create("item1", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())

alife():create("item2", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())

end

 

function update()

local tim = game.time()

local timer = 100000

if (game.time() - tim) >= timer and db.actor:object("item1") and db.actor:object("item2") then

alife():release(alife():object(db.actor:object("item1"):id()), true)

alife():release(alife():object(db.actor:object("item2"):id()), true)

tim = game.time()

timer = 100000

end

alife():create("item1", vector():set(x,y,z),level_vertex_id,game_vertex_id)

alife():create("item2", vector():set(x,y,z),level_vertex_id,game_vertex_id)

end

 

функцию update() пихай в bind_stalker.script, function actor_binder:update(delta).

my.update()

----------

функцию spawn() пихай в bind_stalker.script, function actor_binder:update(delta),между

level_tasks.add_lchanger_location()

и

self.bCheckStart = false

т.е. так:

level_tasks.add_lchanger_location()

my.spawn()

self.bCheckStart = false

 

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

Вопрос вроде-бы простой... Как заспавнить изношенное оружие в инвентарь ГГ ?

спавним

 

sp_weap = alife():create(spawn_item, actor:position(), actor:level_vertex_id(), actor:game_vertex_id(), actor:id())

 

дальше пытался сразу установить состояние ...

 

sp_weap:set_condition(0.1)

 

не срабатывало ... (нарыл, что вроде как для установки износа небходимо некоторое время и объект стал "клиентским")

 

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

 

пришлось поставить в actor_binder:update фукцию по установке нужной "кондиции"... работает, но может быть это можно сделать как-то иначе... проще?

 

 

Событие это разовое, квестовое...

Изменено пользователем Kris
Ссылка на комментарий

Помогите пожалуйста:

function test()
local obj = "scaner_anm"
if obj:position():distance_to(db.actor:position()) == 10 then
    level.add_pp_effector ("proba.ppe", 1974, false)
end
end

Где ошибка? А то вылет получаю.

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

TREWKO, а разве на строку можно применять функцию position()? Для начала нужно получить объект, а потом уже узнавать его положение, и лог вылета тоже не мешало бы писать.

-----------------------------------------------

про лог я сказал на будущее, а как получить объект смотри в файле lua.script, и в других скриптах как оригинальной игры так и модов, так ты не только найдешь ответ на свой вопрос но и узнаешь много нового и полезного.

Изменено пользователем 8push5
Возможно всё, ну или почти всё.
Ссылка на комментарий

А как получить объект?

Это типа: if obj ~= nil then ...?

Вот лог:

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: ....l.k.e.r.chernobyl\gamedata\scripts\divaresix.script:56: attempt to call method 'position' (a nil value)

 

 

stack trace:

 

 

Lua.script нет. Есть lua_help.script

Изменено пользователем TREWKO
Ссылка на комментарий

кровоSTALKER

:blink: не знаю..у себя раза 2-3 точно проверял - работало.как ты всё это делал - не знаю.в ПМ стучи.Расскажешь.

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

Народ, хелп :russian_ru: . Така трабла - надо отключить отображение определённых свойств артов и добавить статью в энциклопедию по определённому инфопоршню. як это сделать? :russian_ru:


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

 

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

Чёт я всё равно не понял:

function test()
local obj = "scaner_anm"
local z = level.object_by_id("scaner_anm")
if z then
    if obj:distance_to(db.actor) == 10 then
    level.add_pp_effector ("proba.ppe", 1974, false)
end
end
end

Где ошибка?

divaresix.script:55: attempt to call method 'distance_to' (a nil value)

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

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

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

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

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

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

Войти

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

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

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