и как сделать чтобы фраза допусти 13 (ответ для ГГ) не появи**5003c54314580bda8be6**ion has_money_for_informer_2(actor, npc)
return actor:money() >= 100
end[/code]
Если есть 100 то диалог появляется
Внимание! В подписи запрещены ссылки на любые внешние ресурсы! не смотри журнал
function search_weaponss_complete(actor, npc)
if db.actor ~= nil then
if (db.actor:object("wpn_pm") ~= nil or db.actor:object("wpn_vintorez") ~= nil or db.actor:object("wpn_fn2000") ~= nil) then
db.actor:give_info_portion("gy-gy")
return true
end
end
return false
end
Проверка на все стволы:
function search_weaponss_complete(actor, npc)
if db.actor ~= nil then
if (db.actor:object("wpn_pm") ~= nil and db.actor:object("wpn_vintorez") ~= nil and db.actor:object("wpn_fn2000") ~= nil) then
db.actor:give_info_portion("gy-gy")
return true
end
end
return false
end
Как прервать диалог? т.е. нажимаешь на диалог и выходишь из Базара с НПС.
добавлено спустя 2 минут
Mehanik Yar
ЦитатаЗатем, как сделать мутанта нейтральным и к сталерам и к ГГ?
Копайся в файле game_relations.ltx
Мне нужно только 2 мутанта нейтралы, а все остальные пусть вражеские остаются. И еще, я имею ввиду не 2 вида мутантов, а два индивидуальных мутанта. Ну как напрмиер в ЗП, там у ноя псевдособака. Она не атакует.
отредактировал(а) Mehanik Yar: 17-06-2010 19:48 GMT3 час.
Дело в том, что ему нужны теже самые анимации, но только с префиксом _r. Я их создавал в СДК, сначала перегнав ОГФ модель (какую ты выбрал для анимок - незнаю) через конвертёр бардака в .skls и копировав каждую с переименованием. В итоге получалось примерно так: idle
idle_r
reload
reload_r
holster
holster_r
и т.д.
Ну а затем компилишь .skl (или .skls, непомню) назад в ОГФ.
Но в конфиге пишешь без_r, т.е. idle, reload и т.п.
добавлено спустя 1 минуту Darien Fx А вот почему у меня чувство дэ жа вю я про это в теме про моздание модели худа видел. Только там не было лога ошибки вот поиск ничего и не дал. Спасибо.
добавлено спустя 1 минуту
Зы. skls это архив анимаций, т.е. все анимашки вместе. skl это одна анима. Они привязываются в сдк к модели и сразу вместе с ней компилятся в ogf отдельно с ними ничего делать не надо.
отредактировал(а) blackraven6: 17-06-2010 20:21 GMT3 час.
Журнал
- модель M79
- модель HK SL-8
- модель Milkor m32 WIP
Mehanik Yar
Вставь в нужную ветвь диалога тег скрипт.функция
Код:
function razgovor()
local snd = xr_sound.get_safe_sound_object( [[characters_voice\scenario\military\lukash\mil_lukash_to_actor]] )
snd:play_at_pos(db.actor, vector ():set (0, 0, 0), 0, sound_object.s2d)
end
скрипт.функция скрипт///////// это имя скрипта. функция... это имя функции. А сам этот скрипт где писапть? В папке скрипт в геймдате или в конфигах? И как оформить
function razgovor( Тут что то писать?)
local snd = xr_sound.get_safe_sound_object( [[characters_voice\scenario\military\lukash\mil_lukash_to_actor]] )
snd:play_at_pos(db.actor, vector ():set (0, 0, 0), 0, sound_object.s2d)
end
Я как бы все сделал но НПС не говорит ничего. Хотя игра не вылетает.
Незнает пчм при Разбивании Коробки вылет с логом ?
Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
Line : 73
Description :
Arguments : LUA error: ...lishing\s.t.a.l.k.e.r\gamedata\scripts\xr_box.script:112: attempt to index field '?' (a nil value)
Николай ФеНиКс
Ты как всегда ... не утруждаешь себя полнотою информации в своем вопросе ...
Ищи причину своего вылета по ошибке "pos.word_1.exist()" в форматировании текста самой 5-ой фразы. А точнее - убери 'под(ц)светку' шрифта ("%c[XXX,XXX,XXX,XXX]" или т.п.), если еще не научился пользоваться ею без ошибок.
Vin4ester
Или ты неудачно поковырял "misc/ph_box_generic.ltx" или "левая коробочка" у тебя возникла ... Ищи.
(И не коверкай русский язык в своих вопросах! Ответить могут и ... аналогично.)
Artos
По поводу виджета.
Вывести - вывел. Пример твоего скрипта помог понять как же надо было правильно "родителя" передавать. Благодарю от всей души :-)
Правда пришлось пойти все же своим путем. С динамическим вариантом возникли проблемы - координаты, имена кнопок еще можно динамически передавать, создавать, а вот каллбеки и методы - у меня же их восемь штук - по два на кнопку - вот тут я не понял как это можно сделать наподобие твоего варианта (а у тебя только один метод, один каллбек) - к тому же статик мне был все же нужен - для текста.
Поэтому также как и было в самом первом варианте инициировал статик, приаттачил к нему все кнопки и в самом конце функции InitControls() уже приаттачил статик к родительскому окну инвентаря self.owner:AttachChild(stat)
Вывелся нормально - как часть инвентаря. Кстати кнопки теперь**5001c54314580bda8be6**rn item and item:section() == WeaponGravi
end
-- стоит на апдейте эктора
function UpdateInventory()
if inventory_open then
news_manager.send_tip(db.actor, "Инвентарь открыт", 0, "trader", 10000)
if CheckWeaponInSlot() then
news_manager.send_tip(db.actor, "Ствол наш", 0, "trader", 10000)
if update then
news_manager.send_tip(db.actor, "Апдейт true", 0, "trader", 10000)
inventory = level.main_input_receiver() -- получаем родительское окно
if inventory then
wnd = Gravi(inventory) -- передаем родителя в созданный класс
update = false -- закрываем блок от апдейта
news_manager.send_tip(db.actor, "Апдейт false", 0, "trader", 10000)
end
end
else -- если ствол не наш а виджет например уже приаттачен
-- то тут надо как то деаттачить или спрятать кнопки
news_manager.send_tip(db.actor, "Ствол не наш", 0, "trader", 10000)
end
elseif not inventory_open then
update = true
inventory = nil
wnd = nil
news_manager.send_tip(db.actor, "Инвентарь закрыт", 0, "trader", 10000)
end
end[/code]
к тому же непонятно как убирать виджет из инвентаря, если условие - ствол не тот\ствола нет вообще в слоте - не выполняется.
Так то он исчезает сам - при закрытии инвентаря. Но аттачится он как я понял навсегда. То есть при повторном открытии инвентаря - даже если в слоте не тот ствол (условие для аттача не выполняется) виджет все равно присутствует.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik
Честно говоря думал, что пример 'как у меня' тебе бОльше поможет.
Начал я его конечно на 'своих' кодах, но под 'твою' задачу.
Элементарно сделал чек-боксовые кнопки (собственно они сами сразу сделались). Все три моих слота превратились в 'кнопки выбора' состояния.
Надпись тоже беспроблемно вывелась, даже оставил в своих кодах заремленные кусочки для твоей проверки. Не требуется тут никакой 'статик'!
Дальше не стал двигаться. Т.к. ты не дал достаточной информации о тм, что же кроме простейших действий должны выполнять кнопки.
Как я понял ты все же не разобрался ни с коллбеками, ни с передачей методов. Хотя метод смены текстуры на кнопке при выбрасывании предмета из слота - тебе должен был подсказать аналогию по использованию остальных методов.
Насчет коллбеков посложнее. Я подобные твоим не применял. В исходниках примеров не видел. Т.о. не уверен, что хотя и заявлены разрабами, вроде как есть, но ... рабочие ли они? ИМХО, можно обойтил тем, который применил я.
Ты ошибаешься в цифрах, у меня хоть и один коллбэк, но(!) один на каждую кнопку, т.е. их 3(!).
Было бы 4 кнопки - было бы соответственно их 4.
Если пояснишь (пред)назначение твоих коллбэков - попробую понять и предложить решение.
В общем имхо 'твою задачку' решить можно, но для этого требуется более подробное описание "а что же должно быть".
P.S. Виджет можно как аттачить, так и деатачить. Хотя и это можно не делать. При нужном условии можно убивать виджет или добавлять и внеся проверку в класс или его вызов - обходить вызовы "пустых" виджетов/кнопок.
что же кроме простейших действий должны выполнять кнопки.
в частности инвертировать булевы значения флагов.
А кнопки сохранять свое состояние включена\отключена - для визуальной информации - какая настройка включена, а какая нет.
Не требуется тут никакой 'статик'!
статик был был мне нужен для вывода одной надписи поверх кнопок
local stat= CUIStatic() --определяем класс виджета
stat:SetAutoDelete(true) --автоудоление виджета
stat:Init(391, 495, 300, 200) --устанавливаем координаты и размер виджета.
--stat:InitTexture("ui\\screen.dds")
--stat:ClipperOn()
stat:SetWindowName("gravi_static") --назначаем ему произвольное имя,
stat:SetFont(GetFontMedium()) --назначим шрифт выводимому тексту.
stat:SetTextX(60)
stat:SetTextY(150)
stat:SetTextColor(238,155,23,255)
stat:SetTextAlign(0)
local text = "Настройки гравипушки"
stat:SetText(text)
насчет каллбеков и методов - тут да действительно не понял как их динамически создавать - ну это посмотрю еще внимательнее так как в первую очередь обратил внимание на другое.
По поводу использования событий на клик (ui_events.BUTTON_CLICKED) - если они будут работать для класса CUICheckButton() то попробую.
При нужном условии можно убивать виджет или добавлять и внеся проверку в класс или его вызов
вот с этим пока не разобрался . пробовал DetachChild(CUIWindow*) но не вышло.
не знаю откуда его правильно вызывать.
---------------------------------------------------
А есть ли метод для проверки что к некоему окну уже приаттачен некий виджет?
Я так понял что мне аттач нужно сделать единожды и больше блок с аттачем не вызывать при открытии окна инвентаря - разве что тогда, когда виджет был деаттачен.
отредактировал(а) erlik: 17-06-2010 23:16 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Artos
я и с цветом работал... да=)
а что **5001c54314580bda8be6**руб; \n%c[255,1,255,255]попадание в ногу = 20руб; \n%c[255,1,255,255]попадание в руку = 60руб;%c[default]...[/code]
erlik
Перечисленные тобою действия полностью реализуются и в приведенном примере и давно использую в Симбионе в меню **5004c54314580bda8be6**)) --/ надпись на кнопке
self.btn:SetTextAlign(CGameFont.alCenter) --/положение надписи
self.btn:SetTextY(40) --/ смещение ...
--]]
[/code]
Если бы ты последовал бы совету "заменить класс CUIButton на CUICheckButton2, то получил бы готовый вариант. Осталось бы только написать установку состояний для кнопок, считывание состояний и сохранение.
Все это можно одним коллбэком "ui_events.BUTTON_CLICKED". Вель клик по чек-боксу - меняет состояние, которое нужно просто прочесть и соответственно просвоить флагу.
В общем сегодня не обещаю, но за завтрашний вечер попробую дать некий пример на базе твоей задачи/кода.
Николай ФеНиКс
Я же посоветовал - убери подцветку и ошибка пропадет! Это означает, что в возникновении ошибки "виноват" а) ты, б) движок в) оба.
Считай по варианту в).
Парсинг в Сталкере не безукоризен и порой 'давится' на неких кусках текста/символах.
Могу однозначно сказать, что присутствие в стоке вот такого куска:
"...%c[default]%c[0,250,45,45]..." приводит к "твоей ошибке'.
А вот если так:
"...%c[default]•%c[0,250,45,45]..." - то ошибка исчезает. Т.е. какой-либо символ 'между' (кроме пробела) не дает парсеру сбиваться.
В общем ищи комбинации текста/цвета, которые НЕ будут приводить к фатал-еррорам(!) или откажись использовать расцветку. P.S. Вспомнил еще, что после перевода строки 'ручками', т.е. '\n' - и использование после этого сразу же маски подцветки текста - критично!
Пробуй так:
"...\n•%c[0,250,45,45]твой текст ..."
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.