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

Скриптование


Svoboда

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

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

Значит придется ручками спавн чистить..

  • Не нравится 1

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

Поделиться этим сообщением


Ссылка на сообщение

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

 

Работает она в main_menu:InitControls().

Я задаю флаг

 

local flag = 0 -- оптимизация кода

 

Потом проверяю его равенство 0, выполняю свой код и выставляю его равным 1 для того, чтобы каждый раз при открытии меню не происходила проверка.

Но она происходит. Значит флаг не сохраняеться. Как его сохранить? Через нет-пакет?

 

P.S Изыскания про методы вызова прошу опустить... Потом всё будет переписываться, переноситься...

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

Поделиться этим сообщением


Ссылка на сообщение

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

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

Поделиться этим сообщением


Ссылка на сообщение

Как отрисовать линию от точки A до точки B? Имееться ввиду линия в 3d пронстранстве, проекцируемая на наш 2d монитор. Не прибугая к средствам DirectX, используя сугубо LUA. Наверняка в движке подобные ф-ии заложенны.

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

Поделиться этим сообщением


Ссылка на сообщение

@Kober(BRUC), не изобретай велосипед...

Вот готовый код, пользуйся :) .

 

 

local tbl_dekoder_red={
{
position={x=70.637008666992,y=16.557912826538,z=18.104104995728},
lv=253116,
gv=371

--position={x=44.793453216553,y=0.91162407398224,z=243.92503356934},
--lv=218601,
--gv=359

},
{
position={x=-58.544227600098,y=23.022161483765,z=-102.28317260742},
lv=158711,
gv=296
},
{
position={x=-66.466384887695,y=20.586454391479,z=111.6127166748},
lv=107654,
gv=336
}
}
local a = tbl_dekoder_red[math.random(table.getn(tbl_dekoder_red))]

function spawn()
alife():create("af_cristall", vector():set(a.position.x,a.position.y,a.position.z), a.lv, a.gv)

end

 

 

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

Поделиться этим сообщением


Ссылка на сообщение

 

 

Скажите у меня в скриптах есть скрипт dar_polter_grand_holder кто не знает это за полтергейстом бежит много мутантов типо парада. Как активировать этот скрипт чтобы этот парад был в тёмной долине?

 

Знаешь, вот не знаем что ты там подразумеваешь под dar_polter_grand_holder. Откуда это, из какого мода? Что это за объект? Давай подробности в студию, ибо из того, что ты написал, понятно чуть меньше чем ничего... 

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

Поделиться этим сообщением


Ссылка на сообщение

@Kober(BRUC), ну как показывает мне опыт - заведи буфер, и пиши туда состояние true\false попутно его сохраняя, только вот куда сказать не могу - опыта мало(

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

Поделиться этим сообщением


Ссылка на сообщение

По поводу сообщения о смерти сталкеров... Вот для себя делал модифицированный вариант, с наворотами. В скрипте пояснения есть, всё довольно просто.

 

Можно и дальше его переделывать, если есть фантазия :) .

 

 

-- ========================

-- Сообщения о смерти сталкеров - модификация скрипта. Есть учет плохой радиосвязи в Зоне, и дополнительные сообщения сочувствия...
-- Мишаня_Лютый & Weanchester & AntdiabloN 2011-2016
-- Old Episodes. Epilogue
-- =======================

local level_name = {
["l01_escape"] = "Кордон",
["l02_garbage"] = "Свалка",
["l03_agroprom"] = "НИИ Агропром",
["l03u_agr_undergroun"] = "Подземелье НИИ Агропром",
["l04_darkvalley"] = "Тёмная долина",
["l04u_labx18"] = "Лаборатория X-18",
["l05_bar"] = "Бар",
["l06_rostok"] = "Дикая территория",
["l07_military"] = "Арм.склады",
["l08_yantar"] = "Янтарь",
["l08u_brainlab"] = "Лаборатория X-16",
["l10u_bunker"] = "Лаборатория X-10",
["l10_radar"] = "Радар",
["l11_pripyat"] = "Припять",
["l12_stancia"] = "ЧАЭС",
["l12_stancia_2"] = "ЧАЭС",
["l12u_sarcofag"] = "Саркофаг",
["l12u_control_monolith"] = "Управление Монолитом"
}

local community = {
["stalker"] = "Сталкер",
["monolith"] = "Монолит",
["military"] = "Военные",
["bandit"] = "Бандит",
["killer"] = "Наемник",
["ecolog"] = "Эколог",
["dolg"] = "Долг",
["freedom"] = "Свобода",
["zombied"] = "Зомбированный",
["actor_dolg"] = "Неизвестно",
["actor_freedom"] = "Неизвестно",
["arena_enemy"] = "Фарш",
["tushkano"] = "Неизвестно",
["trader"] = "Торговец"
}
-- Таблица бонусных сообщений
local bonus = {
"Жаль человека...",
"Эхх.. Хороший был парень",
"Ну а что поделать.."
}

function kill_npc(victim, who)

local view_location = math.random(1,2) -- коэффициент замусоренности радиоэфира. При 1 видим локацию "смертника", 2-не видим
local message_time = math.random(20,40) -- время задержки СМС
local bonus=bonus[math.random(table.getn(bonus))]

if victim and IsStalker(victim) then
local news = "Имя: "..victim:character_name().."\\nГруппировка : "..community[victim:character_community()].."\\nЛокация: "..level_name[level.name()].."\\n"..bonus..""
local news_2 = "Имя: "..victim:character_name().."\\nГруппировка : "..community[victim:character_community()].."\\nЛокация: ???\\n"..bonus..""
if view_location == 1 then
news_manager.send_tip(db.actor, news, message_time, nil, nil, 20000) -- отладка
news_manager.send_tip(db.actor, " loction "..view_location.." time "..message_time.." ", 1, nil, nil, 20000)
return 0
end
if view_location == 2 then
news_manager.send_tip(db.actor, news_2, message_time, nil, nil, 20000) -- отладка
news_manager.send_tip(db.actor, " loction "..view_location.." time "..message_time.." ", 1, nil, nil, 20000)
return 0
end
end
end

 

 

  • Полезно 1

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

Поделиться этим сообщением


Ссылка на сообщение

 

 

if db.actor:object("bread") then k_bandits = true elseif db.actor:object("conserva") then

 

 

 

на кардоне

 

:D  :D  :D

  • Не нравится 1

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

Поделиться этим сообщением


Ссылка на сообщение

Ребят, нужна консультация.

Использую расширение для "ума" НПЦ от xStream (xrs_ai ну думаю знакомо всем)

 

Так вот, нужно отключить такую фишку - НПЦ перетаскивают трупы подальше от костров.

В скриптах ничего похожего не нашел, ну понятное дело плохо искал, но беда в том что это не отдельная схема.

Кто знает - отпишитесь...


 

 

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

Кость - параметр для hit(). Так что нельзя, только по одной.

  • Спасибо 1

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

Поделиться этим сообщением


Ссылка на сообщение

Отслеживаю наличие пушки в слоте 2(автоматы)

Скрипт вот такой, работает через bind_stalker.update()

Ну как работает, проблема в том что СМС о том что пушка в слоте - не выдаеться...

Где я не доглядел?

Сам скрипт:

 

local active_slot=db.actor:active_slot()
local active_item=db.actor:active_item()
local rifle_in_slot=db.actor:item_in_slot(2)
local rifle_contain

function check_barret()
if rifle_in_slot~=nil and rifle_contain==rifle_in_slot:section() and actor:object("wpn_vintorez") then
db.actor:give_info_portion("barret_on")
news_manager.send_tip(db.actor, "%c[25,240,25,25]wpn_vintorez ON", nil, nil, 20000)
else
db.actor:disable_info_portion("barret_on")
news_manager.send_tip(db.actor, "%c[25,240,25,25]wpn_vintorez OFF", nil, nil, 20000)
end
end

 

 

UPD1. Переписал скрипт - толку 0. Где я ошибся?)

 

local tbl_wpn = {
["wpn_vintorez"] = true
}

function check_barret()
if rifle_in_slot and tbl_wpn[rifle_in_slot:section()] then
db.actor:give_info_portion("barret_on")
news_manager.send_tip(db.actor, "%c[25,240,25,25]wpn_vintorez ON", nil, nil, 20000)
else
db.actor:disable_info_portion("barret_on")
news_manager.send_tip(db.actor, "%c[25,240,25,25]wpn_vintorez OFF", nil, nil, 20000)
end
end

 

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

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

Поделиться этим сообщением


Ссылка на сообщение

@Nazgool, ммм да. Я прекрасно понял, что мне тут сказали. Готовый вариант действительно работает, за что отдельное спасибо я уже сказал...

 

Теперь вопрос новый - по какой причине диалоги у всех НПЦ могут так сказать зависнуть - т.е нажимаешь допустим "до встречи" но просто ничего не происходит. И так со всеми. Кнопка Торговать работает...

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

Поделиться этим сообщением


Ссылка на сообщение

@Zander_driver, не поверишь. Стоило выключить вот это - всё заработало...

 

 

function check_barret()
local rifle_in_slot=db.actor:item_in_slot(2)
if rifle_in_slot and rifle_in_slot:section() == "wpn_vintorez" then
db.actor:give_info_portion("barret_on")
news_manager.send_tip(db.actor, "%c[25,240,25,25]wpn_vintorez ON", nil, nil, 20000)
else
db.actor:disable_info_portion("barret_on")
news_manager.send_tip(db.actor, "%c[25,240,25,25]wpn_vintorez OFF", nil, nil, 20000)
end
end

 

 

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

Изменено пользователем CRAZY_STALKER666
  • Не нравится 1

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

Поделиться этим сообщением


Ссылка на сообщение

Очень интересно...

Поставил функцию на условия ( по инфопоршням) чуть побегал по локации - включил её, а диалоги работают... Чудеса. Ну благо общими стараниями я почти закончил этот сложный квест.

 

Всем спасибо за терпение и понимание! Я поддержку действительно очень ценю, куда без вас дедов модостроя я бы делся...

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

Поделиться этим сообщением


Ссылка на сообщение

Такой вопрос - пользуюсь функцией телепортации ( на свалке ) но вот что интересно - какие бы координаты не вписал, всё равно телепортирует в ОДНУ точку, координаты которой видимо из воздуха беруться... Хоть так делай -

 

 

function faza_func()

local a = vector(277.31616210938,-8.4802932739258,-130.72814941406)
level.add_pp_effector ("teleport.ppe", 2009, false)
db.actor:set_actor_position(a)
end

 

 

Хоть так - 

 

 

function faza_func()
local a = vector(0,0,0)
level.add_pp_effector ("teleport.ppe", 2009, false)
db.actor:set_actor_position(a)
end

 

 

Где я ошибся? На других локациях все прекрасно работает...

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

Поделиться этим сообщением


Ссылка на сообщение

Спавню НПЦ вот так

 

 

local obj=alife():create("gar_nano",db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id())
local params=netpack_write.read_stalker_params(obj)
params.custom="[logic]\ncfg = scripts\\ep\\gar\\gar_nano.ltx"
params.sid=30198
netpack_write.write_stalker_params(params,obj)

 

 

Потом пытаюсь удалить(через диалог с другим НПЦ)

 

function del()
local sim = alife()
local se_obj = sim:story_object(30198)
if se_obj then
sim:release(se_obj, true)
end
end

 

 

Но ничего не происходит... Где я ошибаюсь?

 

P.S Выводил при спавне SID - через новости на ПДА - всё хорошо. При удалении поставил брейкпойнтый вот так

 

local sim = alife()
local se_obj = alife():story_object(30198)
news_manager.send_tip(db.actor, "stage 1", 0, "default", 10000)
if se_obj then
news_manager.send_tip(db.actor, "stage 2", 0, "default", 10000)
sim:release(se_obj, true)
end

 

 

Доходит лишь до первого...

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

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

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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