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

[SoC] Ковыряемся в файлах


Halford

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

Собственно делая условно чит-мод а-ля The Darkness. Собственно есть спавн дружеских кабанов с группировкой arena_monstr. Переделывал отношения арена-монстров с эктором. они все-равно атакуют. В чем дело?

https://www.youtube.com/embed/U0no-6tCxhU

Канал на "Трубе"

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


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

Не весь

[monster_relations]
; [1] друг, [0] нейтрал, [-1] враг, [-2] злейший враг
;                actor,human,arena_monstr, boar, bloodsucker, flesh,  dog, pseudodog, cat, chimera, giant, zombie,  burer, controller, poltergeist, snork, fracture, bird,   rat, tushkano
;===============================================================================
=================================================================================
==========
actor        =     1,         1,       2,        -1,        -1,            -1,        -1,        -1,        -1,        -1,        -1,        -1,        -1,        -1,            -1,            -1,        -1,        0,         0,        -1
human        =      0          1,        0,        -1,        -1,            -1,        -1,        -1,        -1,        -1,        -1,        -1,        -1,        -1,            -1,            -1,        -1,        0,         0,        -1
arena_monstr    =    0,         3,        -3,         0,         0,             0,         0,         0,         0,         0,         0,         0,         0,         0,             0,             0,         0,        0,         0,         0
boar        =    -2,        -2,        0,         1,        -1,             0,        -1,        -1,         0,         0,        -1,         0,         0,        -1,            -1,             0,         0,        0,         0,         0
bloodsucker    =    -2,        -2,        0,        -1,         1,            -1,         0,         0,         0,         0,         0,         0,         0,         0,             0,             0,         0,        0,         0,         0
flesh        =    -2,        -1,        0,         0,        -1,             1,        -1,        -1,         0,         0,        -1,         0,         0,        -1,            -1,             0,         0,        0,         0,         0
dog            =    -2,        -1,        0,        -1,         0,            -1,         1,         0,         0,         0,        -1,         0,        -1,        -1,            -1,             0,         0,        0,         0,         0
pseudodog    =    -2,        -1,        0,        -1,         0,            -1,         0,         1,         0,         0,        -1,         0,        -1,         0,            -1,             0,         0,        0,         0,         0
cat            =    -2,        -1,        0,         0,         0,             0,         0,         0,      1,         0,         0,         0,         0,         0,             0,             0,         0,        0,         0,         0
chimera        =    -2,        -1,        0,         0,         0,             0,         0,         0,         0,      1,         0,         0,         0,         0,             0,             0,         0,        0,         0,         0
giant        =    -2,        -1,        0,        -1,         0,            -1,        -1,        -1,         0,         0,         1,         0,         0,         0,             0,             0,         0,        0,         0,         0
zombie        =    -2,        -1,        0,         0,         0,             0,         0,         0,         0,         0,         0,         1,         0,         0,             0,             0,         0,        0,         0,         0
burer        =    -2,        -2,        0,         0,         0,            -1,        -1,        -1,         0,         0,         0,         0,         1,         0,             0,             0,         0,        0,         0,         0
controller    =    -2,        -2,        0,        -1,         0,            -1,        -1,         0,         0,         0,         0,         0,         0,         1,             0,            -1,         0,        0,         0,         0
poltergeist    =    -2,        -1,        0,        -1,         0,            -1,        -1,        -1,         0,         0,         0,         0,         0,         0,             1,             0,         0,        0,         0,         0
snork        =    -2,        -1,        0,         0,         0,             0,         0,         0,         0,         0,         0,         0,         0,        -1,             0,             1,         0,        0,         0,         0
fracture    =    -2,        -1,        0,         0,         0,             0,         0,         0,         0,         0,         0,         0,         0,         0,             0,             0,         1,        0,         0,         0
bird        =     0,         0,        0,         0,         0,             0,         0,         0,         0,         0,         0,         0,         0,         0,             0,             0,         0,        1,         0,         0
rat            =    -2,        -1,        0,         0,         0,             0,         0,         0,         0,         0,         0,         0,         0,         0,             0,             0,         0,     0,         1,         0
tushkano    =    -2,        -1,        0,         0,         0,             0,         0,         0,         0,         0,         0,         0,         0,         0,             0,             0,         0,        0,         0,         1

https://www.youtube.com/embed/U0no-6tCxhU

Канал на "Трубе"

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


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

Есть вот такой диалог.

<dialog id="wookie_barter_quest">
<phrase_list>
    <phrase id="0">
        <text>wookie_barter_quest_0</text>
        <next>1</next>
    </phrase>
    <phrase id="1">
        <text>wookie_barter_quest_1</text>
        <next>2</next>>
    </phrase>
    <phrase id="2">
        <text>wookie_barter_quest_2</text>
        <next>5</next>
    </phrase>
    <phrase id="5">
        <text>wookie_barter_quest_5</text>
        <next>7</next>
        <next>8</next>
        <next>9</next>
        <next>10</next>
    </phrase>
    <phrase id="7">
        <text>wookie_barter_quest_7</text>
        <precondition>wookie_trader_status.if_give_art4</precondition>
        <action>wookie_trader_status.gave_art1</action>
    </phrase>
    <phrase id="8">
        <text>wookie_barter_quest_8</text>
        <precondition>wookie_trader_status.if_give_art4</precondition>
        <action>wookie_trader_status.gave_art2</action>
    </phrase>
    <phrase id="9">
        <text>wookie_barter_quest_9</text>
        <precondition>wookie_trader_status.if_give_art4</precondition>
        <action>wookie_trader_status.gave_art3</action>
    </phrase>
    <phrase id="10">
        <text>wookie_barter_quest_10</text>
        <precondition>wookie_trader_status.if_give_art4</precondition>
        <action>wookie_trader_status.gave_art4</action>
    </phrase>
</phrase_list>
</dialog>

 

 

При его активации а точнее когда доходишь до phrase=2 происходит вылет -

 

Expression : !phrase_dialog->m_PhraseVector.empty()

Function : CPhraseDialog::SayPhrase

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

Line : 140

Description : No available phrase to say, dialog[wookie_barter_quest]

 

 

https://www.youtube.com/embed/U0no-6tCxhU

Канал на "Трубе"

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


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

Это из-за прекондишнов, они не активируются (а > я заметил и удалил, все-равно вылетало)

https://www.youtube.com/embed/U0no-6tCxhU

Канал на "Трубе"

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


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

Valerich, я хотел сделать проверку на арты у ГГ (На каждую ветку по арту - Медуза, Кровь камня, Выверт и Ломоть мяса). Как я понял, вылетало из-за отсутсвия вариантов диалога.

-- Проверки на арты у Сидора
function if_give_art1(task, objective) 
if db.actor ~= nil then
return db.actor:object("af_medusa") ~= nil
end
return false
end

function if_give_art2(task, objective) 
if db.actor ~= nil then
return db.actor:object("af_blood") ~= nil
end
return false
end

function if_give_art3(task, objective) 
if db.actor ~= nil then
return db.actor:object("af_mincer_meat") ~= nil
end
return false
end

function if_give_art4(task, objective) 
if db.actor ~= nil then
return db.actor:object("af_vyvert") ~= nil
end
return false
end

-- Проверки на части монстров у Сидора
function if_give_booty1()
return booty_task_sidor=="mutant_flesh_eye" and db.actor:object("mutant_flesh_eye")
end

function if_give_booty2()
return booty_task_sidor=="mutant_boar_leg" and db.actor:object("mutant_boar_leg")
end

function if_give_booty3()
return booty_task_sidor=="mutant_dog_tail" and db.actor:object("mutant_dog_tail")
end

-- Убор артов у ГГ и добавление к личной сумме нужных УЕ
function gave_art1(actor, npc)
dialogs.relocate_item_section(npc, "af_medusa", "out")
art_task_sidor = nil
this.add_money(500, sidor)
end

function gave_art2(actor, npc)
dialogs.relocate_item_section(npc, "af_blood", "out")
art_task_sidor = nil
this.add_money(300, sidor)
end

function gave_art3(actor, npc)
dialogs.relocate_item_section(npc, "af_mincer_meat", "out")
art_task_sidor = nil
this.add_money(800, sidor)
end

function gave_art4(actor, npc)
dialogs.relocate_item_section(npc, "af_vyvert", "out")
art_task_sidor = nil
this.add_money(600, sidor)
end

 

Добавил еще один вариант ответа (ничего не достал, пойду опять искать) вылетать перестало, но арты не проверяются. Точнее - хоть есть, хоть нет арта - диалога нет.

https://www.youtube.com/embed/U0no-6tCxhU

Канал на "Трубе"

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


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

Кстати в чем ошибка этой ф-ии?

function add_money(trader_money, trader)
trader = trader + trader_money
end

function hate_money(trader_money, trader)
trader = trader - trader_money
end
-- Применение
function add_mon()
this.add_money(600, sidor)
end
-- Local (в начале скрипта)
local sidor = 0
-- Что делает функция - у нас есть условный счет у Сидора, и мы добавляем деньги - сначала пишем сколько надо, потом название торговца (ссылка на переменную с баблом у сидора)

 

 

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

Galil, это я делал для теста, т.к. выдавал себе "ломоть мяса" в начале.

https://www.youtube.com/embed/U0no-6tCxhU

Канал на "Трубе"

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


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

Desertir, art_task_sidor и booty_task это квесты соответственно на арты и на части монстров, но они не отображаются в инвентаре. Идет все так - выбирается один из случайных артов\конечностей, записанных в таблицу, потом идет проверка на соответствующий арт и выдача через amk.send_tip нового сообщения.

Вот весь скрипт -

-------------------------------------
--- Статусы торговцев
--- copyright © Wookie, 2011
-------------------------------------
local sidor = 0 -- Стартовое кол-во денег за квесты у Сидора
local barman = 0 -- Стартовое кол-во денег за квесты у Бармена
-- Остальных оставим, так как Артем Кулинар бармен, Сахаров ученый а не барыга, с Вороном думаю

-- Переменные квестов
local art_task_sidor
local art_task_barmen
local booty_task_sidor
local booty_task_barmen
-- Переменные квестов

-- Артефакты которые нужны Сидору (Подогнаны под Кордон)
local sidor_arts={
"af_medusa",
"af_blood",
"af_mincer_meat",
"af_vyvert"
}

-- Артефакты нужные Бармену (Подогнаны под Бар и окрестности)
local barmen_arts={
"af_fireball",
"af_electra_moonlight",
"af_cristall_flower",
"af_soul",
"af_ameba_slug"
}

-- Части монстров нужные Сидору (Подогнаны под Кордон)
local sidor_booty={
"mutant_flesh_eye",
"mutant_boar_leg",
"mutant_dog_tail"
}

-- Части монстров нужные Бармену (Подогнаны под Бар и окрестности)
local barmen_booty={
"mutant_psevdodog_tail",
"mutant_krovosos_jaw",
"mutant_burer_hand",
"mutant_snork_leg",
"mutant_chimera_cogot"
}

function add_money(trader_money, trader)
trader = trader + trader_money
end

function hate_money(trader_money, trader)
trader = trader - trader_money
end

function give_sidor_task_arts()
art_task_sidor = sidor_arts[math.random(4)]
if art_task_sidor=="af_medusa" then
amk.send_tip("Твоя цель - артефакт Медуза, найдешь и принесешь - запишу 500 рублей на твой счет", "Сидорович")
end
if art_task_sidor=="af_blood" then
amk.send_tip("Твоя цель - артефакт Кровь камня, найдешь и принесешь - запишу 300 рублей на твой счет", "Сидорович")
end
if art_task_sidor=="af_mincer_meat" then
amk.send_tip("Твоя цель - артефакт Ломоть Мяса, найдешь и принесешь - запишу 800 рублей на твой счет", "Сидорович")
end
if art_task_sidor=="af_vyvert" then
amk.send_tip("Твоя цель - артефакт Выверт, найдешь и принесешь - запишу 600 рублей на твой счет", "Сидорович")
end
end

function give_sidor_task_booty()
booty_task_sidor = sidor_booty[math.random(3)]
if booty_task_sidor=="mutant_flesh_eye" then
amk.send_tip("Твоя цель - глаз плоти, найдешь и принесешь - запишу 200 рублей на твой счет", "Сидорович")
end
if booty_task_sidor=="mutant_boar_leg" then
amk.send_tip("Твоя цель - копыто кабана, найдешь и принесешь - запишу 600 рублей на твой счет", "Сидорович")
end
if booty_task_sidor=="mutant_dog_tail" then
amk.send_tip("Твоя цель - хвост слепого пса, найдешь и принесешь - запишу 100 рублей на твой счет", "Сидорович")
end
end

function sidor_private_count()
  news_manager.send_tip(db.actor, "Сидорович:\\nТвой счет: " ..(sidor), nil, nil, 3000)
end

-------------------------------------------------------------------------------------------------------------------------------------------
--                             Диалоги                                         --
-------------------------------------------------------------------------------------------------------------------------------------------
-- Проверки на арты у Сидора
function if_give_art1(task, objective) 
if db.actor ~= nil then
return db.actor:object("af_medusa") ~= nil
end
return false
end

function if_give_art2(task, objective) 
if db.actor ~= nil then
return db.actor:object("af_blood") ~= nil
end
return false
end

function if_give_art3(task, objective) 
if db.actor ~= nil then
return db.actor:object("af_mincer_meat") ~= nil
end
return false
end

function if_give_art4(task, objective) 
if db.actor ~= nil then
return db.actor:object("af_vyvert") ~= nil
end
return false
end

-- Проверки на части монстров у Сидора
function if_give_booty1()
return booty_task_sidor=="mutant_flesh_eye" and db.actor:object("mutant_flesh_eye")
end

function if_give_booty2()
return booty_task_sidor=="mutant_boar_leg" and db.actor:object("mutant_boar_leg")
end

function if_give_booty3()
return booty_task_sidor=="mutant_dog_tail" and db.actor:object("mutant_dog_tail")
end

-- Убор артов у ГГ и добавление к личной сумме нужных УЕ
function gave_art1(actor, npc)
dialogs.relocate_item_section(npc, "af_medusa", "out")
art_task_sidor = nil
this.add_money(500, sidor)
end

function gave_art2(actor, npc)
dialogs.relocate_item_section(npc, "af_blood", "out")
art_task_sidor = nil
this.add_money(300, sidor)
end

function gave_art3(actor, npc)
dialogs.relocate_item_section(npc, "af_mincer_meat", "out")
art_task_sidor = nil
this.add_money(800, sidor)
end

function gave_art4(actor, npc)
dialogs.relocate_item_section(npc, "af_vyvert", "out")
art_task_sidor = nil
this.add_money(600, sidor)
end

-- Торговля
-- Проверки на бабло
function if_give_800_money()
return sidor >= 800
end

 

 

Ну после выдачи сообщения надо искать арт, потом отдавать его сидору (проблему решил кстати) хотел в прекондишне ставить -

return db.actor:object("af_medusa") and art_task_sidor=="af_medusa"

, но не знаю, будет так работать или нет.

Ну и если все условия прекондишна выполнены - отдаем арт сидору, тот записывает нам на счет *** денег (не обычных).

https://www.youtube.com/embed/U0no-6tCxhU

Канал на "Трубе"

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


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

подскажите, как изменить силу гравипушки Malandrius'a и Kirag'a?

Сообщение от модератора ColR_iT
А почему бы не спросить у них самих?
Изменено пользователем ColR_iT

https://www.youtube.com/embed/U0no-6tCxhU

Канал на "Трубе"

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


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

Подскажите, в чем дело?

Сделал такой скрипт дин. новостей -

local freedom_list = {
"%c[255,0,255,0]\"Свобода\"\\n%c[default]Да здравствует \"Свобода\"! Сделаем мир при помощи Зоны лучше!",
"%c[255,0,255,0]\"Свобода\"\\n%c[default]Вступайте в \"Свободу\"! Сделаем Зону по-настоящему свободной!",
"%c[255,0,255,0]\"Свобода\"\\n%c[default]Нужны опытные сталкеры для рейда за хабаром. С нас причитается.",
"%c[255,0,255,0]\"Свобода\"\\n%c[default]Чуваки, подсобите! Мы тут еле справляемся!",
"%c[255,0,255,0]\"Свобода\"\\n%c[default]Что-то слишком тихо. Ушами чую, не к добру это...",
"%c[255,0,255,0]\"Свобода\"\\n%c[default]Тааак! Опять по общей связи базарим! Щас Чехову скажу, будете знать! И на этот раз ящиком водяры не отделаться!",
"%c[255,0,255,0]\"Свобода\"\\n%c[default]Народ! В Темной Долине замечено большое скопление монстров! Всем быть начеку!",
"%c[255,0,255,0]\"Свобода\"\\n%c[default]Чуваки! Прикинь, трава, шо возле Трамплина - торкает нехило! Ха-ха-ха!!!\nСовсем сдурел? Какая трава?",
"%c[255,0,255,0]\"Свобода\"\\n%c[default]Океюшки, вас понял.",
"%c[255,0,255,0]\"Свобода\"\\n%c[default]Эх возьму я шашку в руки...",
"%c[255,0,255,0]\"Свобода\"\\n%c[default]Пацаны, где этот зеленый, по имени Макс?",
"%c[255,0,255,0]\"Свобода\"\\n%c[default]Блин, пиплы, занесите на блокпост нашим батарейки для рации, они что-то долго не отвечают..."
}

local stalker_list = {
"%c[255,160,160,160]СТАЛКЕРЫ:\\n%c[default]Сучья Зона...",
"%c[255,160,160,160]СТАЛКЕРЫ:\\n%c[default]Мужики, помогите!Мутанты прут со всех сторон! бля, да есть тут кто нибудь!!!! мы тут ща все поляжем!!",
"%c[255,160,160,160]СТАЛКЕРЫ:\\n%c[default]Че то воронье раскаркалось. Не к добру это...",
"%c[255,160,160,160]СТАЛКЕРЫ:\\n%c[default]Куплю артефакт \"Душа\", предложения - в личку.",
"%c[255,160,160,160]СТАЛКЕРЫ:\\n%c[default]Мужики, я слышал, что Сидорович цены сбросил, вроде как на большой Земле, это... как ево.. кризис, во! Надо будет заглянуть.",
"%c[255,160,160,160]СТАЛКЕРЫ:\\n%c[default]Ребят, кто с нами за хабаром? Мы тут группу собираем.",
"%c[255,160,160,160]СТАЛКЕРЫ:\\n%c[default]Сталкеры! Заходите к нам в бар, поговорим, пообщаемся!",
"%c[255,160,160,160]СТАЛКЕРЫ:\\n%c[default]Я где то слышал, что сталкер один нашелся, Стрелок кличка. Вроде как к центру Зоны собирается. Кто информацию про него какую знает, скиньте в личку."
}

local dolg_list = {
"%c[255,0,255,0]\"Долг\"\\n%c[default]Пятый квад, отзовитесь! Хмурый, для вас есть задание - нужно сопроводить ученых на Янтарь.",
"%c[255,0,255,0]\"Долг\"\\n%c[default]Всем постам на Свалке! Появилась информация, что бандюки готовят рейд! Всем быть на готове!",
"%c[255,0,255,0]\"Долг\"\\n%c[default]Сталкеры, вступайте в \"Долг\". Защитим планету от заразы Зоны!",
"%c[255,0,255,0]\"Долг\"\\n%c[default]Сталкеры! нужна помощь на Янтаре! Зомби прут со всех сторон, мы не справляемся! Быстрей!.",
"%c[255,0,255,0]\"Долг\"\\n%c[default]Черт, ну что за день сегодня такой, ни хабара, ни какого придатка, только пуль чуть в лоб не схлопотал....",
"%c[255,0,255,0]\"Долг\"\\n%c[default]Нужны опытные сталкеры для рейда на мутантское отродье. С нас хабар.",
"%c[255,0,0,0]\"Долг\"\\n%c[default]Петренко, а ну отвечай, мать твою! Что у вас с приватным каналом?! Опять упал?"
}

local time_res ={
10000,
20000,
30000,
40000,
50000,
60000,
70000,
80000,
90000 
}

time_news = 0

function show_news()
local time = time_global()
if db.actor:has_info("din_news_active") then
if time_news < time then
time_news = time + time_res[math.random(9)]
update()
end
end
end

function update()
local communites = math.random(1,3)
local texture = "ui_icons_obsh_chanel"
if communites==1 then
freedom()
end
if communites==2 then
duty()
end
if communites==3 then
stalker()
end
end

function freedom()
db.actor:give_game_news("Сообщение", freedom_list[math.random(12)], texture, 15*1000, 15*1000)
communites = math.random(1,3)
end

function duty()
db.actor:give_game_news("Сообщение", dolg_list[math.random(7)], texture, 15*1000, 15*1000)
communites = math.random(1,3)
end

function stalker()
db.actor:give_game_news("Сообщение", dolg_list[math.random(8)], texture, 15*1000, 15*1000)
communites = math.random(1,3)
end

 

поставил на апдейт в бинд_сталкер функцию show_news() .

Вылетает с логом -

Expression : fatal error

Function : CScriptEngine::lua_error

File : E:\priquel\sources\engine\xrServerEntities\script_engine.cpp

Line : 180

Description : <no expression>

Arguments : LUA error: .... - Shadow of Chernobyl\gamedata\scripts\bind_stalker.script:527: attempt to concatenate field '?' (a nil value)

 

 

 

https://www.youtube.com/embed/U0no-6tCxhU

Канал на "Трубе"

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


Ссылка на сообщение
Можно поверх иконки "выведенной движком" выводить свою скриптово. По каким вздумается условиям, хотите такую же, хотите - другую.

В помощь - любой мод где производятся скриптовые манипуляции с текстурами на худе.

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

 

А у меня такой вопрос - как пользоваться едитбоксом?

Что я хочу сделать - некое подобие отсыла сообщений по алгоритму - нажимаешь на ТАВ, появляется окошко, вводишь надпись, нажимаешь "отправить" - с помощью сенд_тип выводиться сообщение с нашим набранным текстом.

https://www.youtube.com/embed/U0no-6tCxhU

Канал на "Трубе"

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


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

Можете подсказать, как увеличить радиус при котором можно говорить с НПС?

Просто я сделал такой скрипт -

--[[
Свистоперделки.
Скрипт: Wookie
Спасибо: AMK, Stalk15
]]

-- Общаемся с Волком на расстоянии
-- Прикольно, но работает только прямо перед Волком
function wookie_radio_talk()
    local npc = level_object_by_sid(006) 
    db.actor:run_talk_dialog(npc)
end

function use(obj)
local obj_sect = obj:section()
if obj_sect == "racia" then
this.wookie_radio_talk() 
this.create_item("racia")
end
end

function create_item(spawn_item, npc)
  if npc==nil then 
    npc=db.actor 
  end
  return alife():create(spawn_item, 
      npc:position(),
      npc:level_vertex_id(),  
      npc:game_vertex_id(),
      npc:id())
end

function give_racia()
this.create_item("racia")
end

 

Сделал биндер юзанья в bind_stalker. Когда просто используешь рацию - ничего не происходит, а когда в зоне диалога - отлично работает.

https://www.youtube.com/embed/U0no-6tCxhU

Канал на "Трубе"

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


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

Какой рестриктор отвечает за сообщение от Кепа на Милитари?

 

О каком конкретно сообщении идёт речь?

ColR_iT

 

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

Когда подходишь к переходу на Радар.

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

https://www.youtube.com/embed/U0no-6tCxhU

Канал на "Трубе"

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


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

Делаю функцию смены часа.

Был такой код -

local hour = level.get_time_hours()
function time()
hour = 5
end

Функция конечно не рабочая.

Возможно ли сделать смену часа по скрипту?

Нет, сменить скриптом время(час) в игре невозможно, только "перемотать". --/Artos

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

https://www.youtube.com/embed/U0no-6tCxhU

Канал на "Трубе"

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


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

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