Помогите пожалуста.На стандартной игре у меня получалось спавнить вертольот,ну вот только я попробовал на моей военной базе(моей локации которую я сам сделал, локация которою я создал в SDK.) , получил лог вот такого плана
Ето спавн через скрипт
! Unknown command: ERROR:object
* Log file has been saved successfully!
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 :
[error]Arguments : LUA error: ....r. - shadow of chernobyl\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value)
И ето только с вертольотом такие проблемы ,при спавне через all.spawn лог такой
БТР спавниться и через all.spawn и через скрипт нормально а вертоль мучает меня.
1. Вы сейчас в интернете
2. Вы на сайте stalker-portal
3. Вы читаете
5. Вы не заметили, что отсутствует пункт 4
6. Вы это проверили
7. Вы улыбаетесь
8. Поставь себе в подпись и нас будет больше
Приветствую всех! У меня вопрос насчет логики или подобного пока не понял. Что нужно прописать новому неписю из группировки (военные), чтобы он также как и вояки под мостом, не стреляли в меня?Подскажите пожалуйста.
Помниться кто та писал как заспавнить предметы (НПС\анамалии и т.д).Только что разобрался со спавном Анамалий,могу написать подробный тутор по этому делу.
Не удаляйте копирайты, указывайте настоящего
автора(ов) и не выдавайте чужие идеи и их реализацию за свои. Ведь это элементарная
этика модостроителей! Спасибо за понимание.
[esc_stalker_squad_5_11] - это название сквада (отряда) сталкеров
faction = stalker - это фракция к которой они принадлежат
npc = ПНС,НПС,НПС - это неписи из которых состоит сквад
target_smart = - а вот тут указывается смарт для этого сквада, подробнее:
esc_smart_terrain_5_11 - Лагерь на холме (начальный смарт)
esc_smart_terrain_7_11 - АТП (новый_смарт)
теперь смотрим как это делается:
target_smart = {инфопоршен} "АТП", "Лагерь на холме"
по умолчанию смарт этого сквада "Лагерь на холме"
после выдачи инфопоршена {+esc_support_squad_attack} сквад меняет свой смарт на "АТП"
Не удаляйте копирайты, указывайте настоящего
автора(ов) и не выдавайте чужие идеи и их реализацию за свои. Ведь это элементарная
этика модостроителей! Спасибо за понимание.
Zmey1989
1. Я не даю подробных разяснений тому, что расписано в множестве статей/ФАК'ов и топиках по модмейкерству.
2. Кудай тут подробнее???
Указал файлы (и путь к ним). Открываешь их и смотришь размеры ячеек.
Для рюкзака - "dragdrop_bag', для поясв - 'dragdrop_belt' и т.д. ...
Видишь, что для обычного монитора размеры ячеек (например для рюкзака: cell_width = "41" cell_height="41"), т.е. 1:1 - иконка будет выводиться как есть ('cell' - растянет иконку на этот размер!).
Для широкоформатника: cell_width = "45" cell_height="60", т.е. сжата и на широкоформатнике, точнее на широкоформатном разрешении, растягивающем в ширину, иконка будет выводиться близко к 1!:1.
Вот и правь по аналогии все те места/файлы, где у тебя растянуты вширь иконки.
Если файлов с суффиксом '_16' нет - копируй и переименовывай файл для обычных моников, игра сама выбирает (как правило) нужный в зависимости от установленного разрешения.
Artos
Поразбирался с диалогами(скриптовыми) - выяснил (для себя) их неприятную особенность (писать то про это писали - тот же malandrinus указывал на это, но пока сам не сделаешь и не увидишь - реально не очень понимаешь) - а именно - одноразовая инициализация при старте игры - никакие перезагрузки(без выхода из игры) к обновлению графа диалога не ведут. Таким образом не происходит обновления фраз, пока не выйдешь из игры и заново не зайдешь.
Отсюда направление мысли - а как бы вручную - принудительно так сказать - переинициализировать диалог? Если конечно это вообще возможно...Тут главная проблема - где взять объект диалога, если он передается как аргумент в функцию, которая инициализирует диалог,а инициализация происходит один раз и в течение игры этот объект оттуда уже не получишь. А если его записывать в переменную(это я делал - для тестового добавления в диалог фразы из внешней функции. Без сейв\лоадов все работало), сохранять и затем использовать (после лоада игры) для передачи в функцию инициации - то есть сомнение, что этот объект будет неприменим к использованию.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Понятно...
Попробую, мож что и получится.
Еще одна фигня, БТР от туда втянул в свой мод, садиться можно, ездить можно, но не стреляет.
В моде ogse БТр сам наводится на цели и по ним лупит если нажать таб, в моем моде он не наводится ни на что ну и огонь тем более не открывает даже если таб нажать, что надо такого скопировать, не знаю, подскажите плиз.
С Н А Й П Е РТутор по спавну , если чё та будет не понятно могу другой выложить , или в лс пиши
Автор: DOC_VENOM (1 октября 2010 года)
ICQ автора мода: 405806080
****************************************************
Спаун через xrSpawner_v0.13.1Beta.
****************************************************
1.1Для начала в папку "xrSpawner_v0.13.1Beta" кинем файл "all.spawn"(находится он,
допустим игра у вас установлена D:\\GAMES\S.T.A.L.K.E.R\gamedata\spawns\all.spawn).
1.2Запускаем xrSpawner_1000*(есть для 3го 4го патча,у меня 4ый) находящийся в папке с "xrSpawner_v0.13.1Beta"
----Жмём в верхнем левом углу "Файл\Открыть "all.spawn".Если поля запонились то всё в порядке,идём дальше.
----В данном туторе речь будет идти о "Спавне Анамалий"
----Ищем в поиске(Entiny) zone_xxx (х - название аномалии,их можно найти в gamedata\config\misc\zone_xxx),
к прмеру zone_gravi, в табле ниже м ыувидим zone_gravi_zone_weak, добавляем в базу(Как это сделать? Легко,в верхней строке жмем "Редактирование\Добавить объект в базу" . Появляется табличка "Добавление объета в базу" В строке "Название группы"пишем к примеру "Anomaly" а в строке "Название предмета" "gar_zone_gravi_zone"названия можно найти в конфигах с анамалиями)
1.3В общем думаю понятно,затем как вы это проделали заспавним её около бункера Сидорыча.
Жмём в правом верхнем углу "Добавить объект\Anomaly\gar_zone_gravi_zone" , жмём добавить "в нижнем правом углу"Видим что наша анамалия появилась в левом окне.
1.4Тперь поработаенм с координатами "Коорд.Х\Коорд.Y\Коорд.Z" впишем в них наши -239,8912/ -19,43/ -123,0998 жмём "Принять изменения" далее "Файл\Сохранить"
1.5Всё теперь берем нашь "all.spawn" находиться он в папке с "xrSpawner_v0.13.1Beta" Запускаем игру и види нашу заспавненную анамалию
P.s - в Level_ID(0\I01_escape)Story -1
Не удаляйте копирайты, указывайте настоящего
автора(ов) и не выдавайте чужие идеи и их реализацию за свои. Ведь это элементарная
этика модостроителей! Спасибо за понимание.
С Н А Й П Е Р а зачем ты вообще спавнишь через XrSpawner Beta 0.13 ведь есть хорошая прога для распаковки all.spawn файла АСДС, очень хорошая да и удобная, сложного то нечего нету, разве что только все в ручную приходиться писать, но со временен привыкаешь.:-)
erlik
Готовых ответов нет, сам копаюсь с некоторыми непонятками и не хочу навешивать шоры.
Дам пока наводки:
1. Не зря разрабы сделали в '_g.script' при запуске игры (function start_game_callback() ), а это и запуск новой/сэйвовой и(!) при переходе и(!) при запуске без выходи из игры, сброс некоторых буферов/кешей (task_manager.clear_task_manager(), treasure_manager.clear_treasure_manager(), ... , dialog_manager.fill_phrase_table()). Не исключено, что в твоем случае (не)сбрасывается буфер созданных графов диалогов.
2. Объект диалога НЕВОЗМОЖНО запомнить в стораджи иль еще куда (т.е. засэйвить), как впрочем и звуковые, партикловые и пр. подобные объекты.
Упрощенно говоря, объекты, не имеющие секции НЕ существуют на старте игры и не могут быть восстановлены из сэйва! Они существуют только в сеансе начатой игры с момента создания до момента уничтожения или до 'закрытия' игры.
Но функция зависает (сбрасывается в nil) при открытии файла. Причём файл то создаётся, естественно пустой. Но на этом всё заканчивается. Дальнейшее чтение кода не происходит. Устанавливал метки после каждой строки. И метки показали, что последняя читаемая строчка в данном коде именно строка открытия файла. На ней зависон и происходит. Пытался менять расширение файла. Результат, тот же.
Может мне ктонибудь объяснить причину данного случая?
добавлено спустя 23 минут
А теперь самое интересное. При использовании кода чтения:
[code]local fs = getFS()
local op = fs:r_open("$game_saves$", "testes.txt")
local data = op:r_stringZ()
fs:r_close(op)[/code]
Чтение данных происходит без проблем. Естественно предварительно записав в тело файла пару данных.
отредактировал(а) singapur22: 01-10-2010 18:48 GMT3 час. Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Artos
Окей, будем в этом направлении искать способ.
А вот насчет невозможности сохранения объектов не имеющих секции не знал.
--------------------------------------------------
Вот такой лог как можно расшифровать?
Expression : assertion failed
Function : CUILine::GetLength_inclusiveWord_1
File : E:\stalker\patch_1_0004\xr_3da\xrGame\ui\UILine.cpp
Line : 410
Description : pos.word_1.exist()
В своей схеме скриптового диалога исправил (думал что исправил :-)) один недочет - временная табличка с данными для фраз у меня нигде не сохранялась - а без этого был мелкий глюк в диалоге после лоада сейва.
Сделал для нее функции сохранения и загрузки.
Прописал их в свой бин
отредактировал(а) erlik: 01-10-2010 21:23 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Подскажите дураку зачем нужно вот такое действие:
1. Есть предмет нотепад который наследует класс матраса
в ogsm.скрипте (который оказался почти точной копией амк.скрипта) есть такие строчки
-- Колбэк на потерю предмета из инвентаря ГГ
function on_item_drop(obj)
local section = obj:section()
local stype = nil
if section == "notepad" then
stype = "npd"
end
if stype ~= nil then start_timer(stype, 0.1, obj:id()) end
end
далее в function __do_timer_action(select_string,params_string) такие строчки
if select_string=="npd" then
ogsm_items.use_notepad(params_string)
end
То есть здесь при дропе предмета запускается таймер на один апгрейд. А зачем, собственно этот апгрейд нужен?
ОТИСui_mm_main.xml КОД:
ставиш всё на 100 и вот тебе белый цвет:-)
Не удаляйте копирайты, указывайте настоящего
автора(ов) и не выдавайте чужие идеи и их реализацию за свои. Ведь это элементарная
этика модостроителей! Спасибо за понимание.
Ma$ter
Подозреваю, что все это - древний способ проверки использования предмета\ов (древний, потому что через drop делать уже несовременно, когда у ГГ есть прекрасно работающий каллбек на юзание любого предмета имеющего свойство использования).
А таймер на одну десятую долю секунды обычно бывает нужен для того, чтобы серверный объект успел стать клиентским - то есть появиться в онлайне. Для чего он здесь нужен - из приведенного контекста не совсем ясно.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik
Ошибка с 'pos.word_1.exist()' - ошибка парсинга строки вывода на экран иль КПК.
Подобное встречается когда расцвечивается текст строки (типа символами: '%c[255,128,255,128]').
Замечено, что символы ''%c[...]' в конце строки при переводе на следующую (или даже иногда при конкатенации/слиянии стрингов) - приводят именно к этой ошибке. Банальное добавление в конец после 'цветных' символов еще какого-нить (не пробела!) убирает эту ошибку.
singapur22
Поправлю немного: a="255" - аргумент яркости и собственно на цвет не влияет. Конечно, если не считать, что 'чем менее яркий - тем менее белый'. При a="0" - белого можно и не заметить. :-)
Насчет 'r_open' и вообще 'fs' - не зря уже в ЧН разрабы наконец добавили класс 'io', чтоьы можно было бы самим не чертыхвться. В ТЧ все это работает зачастую как Б.. на душу положит.
В своих ковырялках понял - лучше напрямую все это не использовать, а только через буферы (к чему собственно ты и сам пришел). Даже взять из полученного массива списка-файлов в директории и то ... 1-ый берется, а перебор файлов - тупит.
P.S.erlik
Не думаю, что 'это' древний способ. Ведь юзание - это и в том числе 'поедание/выпивание'. Немало можно встретить кодов, в которых несъедобные предметы делаются на классах антирадов иль водки. Т.о.. коллбэк на юзание покажет, что объект юзился, но для подобных случаев (как ноутбук) важно именно НЕ исчезновение, т.е. 'потеря без исчезновения из игры'.
В приведенном контексте тайм-аут именно нужен, чтобы определить - исчезнувший у актора предмет остался ли в игре, т.е. появился ли в он-лайне уже НЕ у актора.
Да и др. неудобства при коллбэках можно поиметь, так что приходится рулить разными вариантами.
Второй вариант - как раз видимо мой.
Видимо с какой то строчкой, где у меня происходит конкатенация(а их много - но в основном это вывод в лог) и была связана ошибка.
Возможно из-за моих попыток грузить сейв после правок в скрипте(добавление функций сохранок) - получилось, что какая то строчка не получила должного значения, и, судя по названию функции из лога, GetLength_inclusiveWord_1 попытка получить ее длину не увенчалась успехом.:-)
Да, надо избавляться от привычки конкатенировать все подряд - string.format() в этом плане куда надежнее. Да и работает побыстрее - как мне malandrinus пояснял - при конкатенации сначала вычисляется длина каждого слова и только потом формируется строка.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
В данном случае никакого цвета вообще не будет. Прозрачность 100 процентная.
Кстати, для справки незнайкам. Альфаканал, в отличии от r,g,b имеет значение по умолчанию. А точнее, значение ему устанавливается при инициализации. И равняется оно 255. В последствии, если в аргументах имеется другое значение, то производится замена. В r,g,b изначально значения не назначаются вообще. И только при чтении кода, если аргументов для них нет, устанавливается цвет по умолчанию. Причём цвет берётся не по "r,g,b", а по аргументу "color". Посему можно сделать вывод. Аргумент "a" не связан с аргументами "r,g,b". Изза чего, их можно использовать раздельно. Тобишь, или только "a", или только "r,g,b", ну и естественно "a,r,g,b". Когда "r,g,b" разделять уже нельзя. Только вместе, или никак.
Насчет 'r_open'
Я имел ввиду w_open. Тоесть, метод записи. С r_open проблем не было.
отредактировал(а) singapur22: 02-10-2010 10:51 GMT3 час. Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.