Контент Garry_Galler - Страница 3 - AMK Team
Перейти к контенту

Garry_Galler

Опытные
  • Число публикаций

    272
  • Регистрация

  • Последнее посещение

  • AMKoin

    10 [Подарить AMKoin]

Весь контент пользователя Garry_Galler

  1. Насчет move_to()-метод работает, хотя не со всеми партиклами корректно. Некоторые не перемещал вообще, либо перемещал, но весьма криво - например часть партикла(если это pg) остается на месте - другая движется, либо вместо движения - создается несколько визуальных объектов, которые никуда не движутся.
  2. Garry_Galler

    Худ

    Shader Закрывать не нужно. Почистить - да. -------------------------------- Полезный батник(так, на всякий случай добавлю - лично мой) для тех, кто захочет создавать .seq анимации с более чем двумя десятками кадров: меняет расширение png на dds(если у вас изначально кадры в этом формате) и пишет все имена кадров(если у вас уже есть готовая и пронумерованная секвенция кадров ) в текстовый файл с расширением .seq. Батник должен находиться в папке с текстурами. Файл со списком кадров будет создан автоматически. @echo off rem изменим расширение у файлов for %%i in (*.png) do ren %%i *.dds rem запишем в файл все имена файлов из текущей папки без расширения и с нужным префиксом - в данном случае ui\ for %%i in (*.dds) do echo ui\%%~ni>>file.seq @echo Files have been successfully renamed and written down in a file pause
  3. Garry_Galler

    Худ

    Serafim12 Причем тут вики? Тебе влом признаться, что ступил с написанием термина и теперь пытаешься как то сохранить лицо? Дело твое - каждый грамотный человек за пару минут ковыряния в инете поймет кто из нас прав. У меня другой материал был - и кол-во кадров проекта я рассчитывал экспериментально: ниже 100 там было уже дерганно и некрасиво. Вот здесь не спорю - поэтому тоже не выкладывал.(Только по личным просьбам в личку). Твои знания уже несколько устарели. Когда то действительно твоя тема была новой и мало кто в ней разбирался. Но прошло время и пришли новые люди(себя не имею ввиду - я вообще то скриптер и анимации с нуля умею создавать только процедурным языком, ну или через ParticleIllusion - из готового так как сказать материала), которые знают столько - сколько тебе и не снилось. Отвечаю на выпад в свою сторону - и не более.
  4. Garry_Galler

    Худ

    stalker.odinochk... Тут как бы все просто и... сложно. Просто - если умеешь создавать текстуры (я вот не умею - только разве что подредактировать). Или знаешь откуда их можно взять Нужно создать определенную последовательность текстур которые будут кадрами анимации. Каждый кадр- одна картинка с одним изображением, каждая картинка должна отличаться от другой, чтобы при их прокрутке создавалось динамически меняющееся изображение - анимация. Кадры\текстуры должны называться так: name01, name02, name03 и т.д - смотря сколько у нас кадров(основное имя кадра может быть любым - главное нумерация, причем нумерация может быть и такой 0001,0002, 0003 и т.д ). Далее вписываем все имена кадров в текстовый файл с указанием пути нахождения текстур относительно папки textures\ui - то есть так например так: 25 ui\radar\radar0001 ui\radar\radar0002 ui\radar\radar0003 ui\radar\radar0004 ui\radar\radar0005 ui\radar\radar0006 ui\radar\radar0007 (у меня крутится 120 текстур - чем их больше, тем динамичнее выглядит картинка ) Как нибудь называем файл и сохраняем с расширением seq и не забываем добавить в самое начало файла скорость прокрутки - например 25. Это значит, что текстуры будут крутиться со скоростью 25 кадров в сек. Скорость ставим на свое усмотрение. Теперь осталось вписать куда нибудь имя файла file.seq (без расширения) - которое будет у нас как бы файлом текстуры. Теперь при выводе изображения на худ у нас будет динамическая картинка из наших кадров. Вывести ее можно(я так думаю) и как обычный статик. Я пока выводил заместо миникарты - вписав свой файл вместо текстуры миникарты в файле zone_map.xml. Еще раз повторюсь - создавать текстуры я не умею, поэтому воспользовался такой замечательной программой как ParticleIllusion к которой можно найти в инете кучу библиотек с готовыми эффектами. Прога предназначена для создания динамических визуальных эффектов - например тех же партиклов. Правда как конвертировать из ее формата созданные в ней партиклы в формат партиклов сталкера я не знаю. Поэтому просто сконвертировал понравившийся мне эффект (динамический радар) в секвенцию(последовательность ) кадров в формате png (с сохранением альфа канала). Сконвертировал в самой программе - так как она умеет переводить проекты в разные графические форматы. Может и в видео превратить (в формат avi - затем его несложно в ogm сконвертить), но в формате avi она не сохраняет альфа канал, без которого картинка не будет иметь свойства полупрозрачности. Разве что использовать опцию uncompressed - несжатое видео, но получается очень плохо и картинка все равно непрозрачная. Вариант с видео (полученным в ParticleIllusion) подойдет только для вывода картинки\видео в скриптовое окно, где прозрачность фона не требуется. А на худ - лучше использовать секвенцию png. У текстур формата png нужно не забыть сменить расширение на dds (я это батником провернул). После этого они готовы к использованию в сталкере.
  5. stalker.odinochk... Закрыть то таким способом окно можно, а вот открыть не получится. Окна инвентаря, пда, торговли, обыска создаются движком в ответ на нажатие клавиш, которые к ним прибиндены, доступа к конструктору этих окон из скриптов нет, а сымитровать нажатие клавиши можно разве что через WinAPI, что к скриптам отношения не имеет и весьма сложно к реализации.
  6. Garry_Galler

    Худ

    TRAMP14 Можно. Я вывел анимированный динамический радар вместо миникарты - сделал из имевшегося визуального эффекта секвенцию из 120 кадров в формате dds(точнее png переименованые затем батником в dds) и все это теперь красуется на худе.
  7. @"StreloK" Кавычки поставь в пути до звука. У тебя ошибка при чтении файла так как он невалидный. lua checker используй для проверки синтаксиса - он бы тебе сразу сказал, что ошибка в такой то строке.
  8. malandrinus Значит просто с тебя заказчики сей вещи не требуют У меня знакомый программист все свои проекты только с английскими комментариями отправляет заказчикам, так как это - обязательное условие рассмотрения его проекта. Иначе не принимают.
  9. TRAMP14 Свойство это часть структуры класса. У класс могут быть как методы (функции), так и свойства(они же переменные), которые хранят определенные данные об экземпляре класса. Для того, чтобы получить текущее значение свойства определенного экземпляра класса используется запись имя_класса.свойство или экземпляр_класса. свойство . В общем объяснять можно долго - для понимания всего этого нужно изучить основы ООП - объектно-ориентированного программирования. ------------------------------- По радиации - для того, чтобы уменьшить нужно по-моему минуснуть. То есть не db.actor.radiation =0.5, а db.actor.radiation = -0.5 . Тогда из текущего значения радиации ГГ будет вычтено ровно столько же и получиться что радиация равна 0. По крайней мере для здоровья именно так и делается. Чтобы его уменьшить пишут db.actor.health = - 0.1 -- уменьшаем(вычитаем из текущего значения) на 10% Чтобы поднять db.actor.health = 0.1 -- увеличить(прибавить к текущему значению) на 10%
  10. mma БТР не знает что такое npc, stalker. Поэтому указывать бесполезно. БТР может стрелять только в ГГ или только в объект по его sid. То есть указывается сид объекта target = 6 (значит цель - Волк). Если это не устраивает - переписывай схему ph_car.script. _Призрак_ А вот и нет. Для подсказок ковыряльщикам кодов, которые скрипты читать не умеют. Нам самим(скриптерам) и так понятно, что у нас скрипт делает. А если серьезно - то это международная практика(и даже больше - требование заказчиков к программисту) - сопровождать свой код комментарием. Только принято это делать на аглицком языке. TRAMP14 Опять неверно написал. При обращении к свойству объекта скобки не указываются. Главный источник радиации в игре - это аномальная зона (zone_radioactive) при вхождении в которую у ГГ увеличивается свойство radiation. Зону можно заспавнить. И если заспавнить объект и по его позиции маленькую зону радиации(радиусом 0.1 метра ) - получится как бы радиационный объект. Ну или сделать объект на классе арта - и в свойствах объекта указать нужное действие радиации.
  11. Вот так я закрывал окно торговли --// поставить вызов OnTrade(info_id) в начало функции actor_binder:info_callback(npc, info_id) - файл bind_stalker.script local UITradeWnd function OnTrade(info_id) if info_id =="ui_trade" then UITradeWnd = level.main_input_receiver() elseif info_id == "ui_trade_hide" then UITradeWnd = nil end end --// вызов функции закрывает окно торговли - можно ставить куда угодно -хоть на апдейт function HideTradeWnd() if UITradeWnd then UITradeWnd:GetHolder():start_stop_menu(UITradeWnd, true) end end Если вместо инфопоршней на открытие\закрытие окна торговли указать инфопоршни на открытие\закрытие пда -"ui_pda" и "ui_pda_hide - или окна инвентаря - ui_inventory\ui_inventory_hide - будет тоже самое. TRAMP14 Движком - но вполне поддается редактированию в конфиге. Например можно сделать, чтобы шкала заполнялась\убывала не горизонтально, а вертикально, размеры поменять, координаты, и т.д . Вот с цветом вроде никак.
  12. TRAMP14 Примеров таких нет. Вот список (возможно неполный) из lua help движковых функций которые возвращают шрифты
  13. TRAMP14 И чего изобретать велосипед?
  14. ФеНиКс Со всем кодом не разбирался - но сразу в глаза бросается ошибка: local Item= {baton_b,conserva,vodka} правильно так local Item= {baton_b = true,conserva=true,vodka=true} иначе у тебя в таблице вместо предметов - одни nil. Ты делаешь проверку по ключу - но в твоем же варианте - ключи не строки, а цифры(таблицы lua по умолчанию индексируются цифрам - 1,2,3 и т.д). То есть у тебя получается: {[1]=baton_b,[2]=conserva, [3]=vodka} - при этом значения ключей равны nil. А нужно чтобы ключами были строки соответствующие названиям предметов по секции.
  15. Jurok Разумеется можно - но зачем апдейтить то? Можно ведь обойтись и более подходящим для данного случая методом эктор биндера. ФеНиКс Это одно из перечислений класса callback - полный список можешь найти в lua help. callback.inventory_info срабатывает на открытие инвентарных окон.
  16. И будет его ждать армия клонов merc_zasada_01 - (каждую секунду по сотне) - как только он возьмет нужный ПДА Уж не апдейт, а на take нужно ставить: найти в bind_stalker этот код function actor_binder:on_item_take (obj) level_tasks.proceed(self.object) --game_stats.update_take_item (obj, self.object) --******************************************* и сюда вписать вызов test_proverka.proverka_pda_tryp() --******************************************* end или даже так лучше - вписать вот это: if obj and obj:section()=="pda_tryp" then имя_файла.spawn_zasada_merc() end А еще не помешает добавить проверку на инфопоршень перед спавном NPC - а после спавна инфопоршень выдать. А то NPC будут спавниться каждый раз когда данный пда будет в инвентарь браться.
  17. malandrinus В стандартной реализации однопоточный. Но ведь выполнение операций можно распараллелить в нестандартной реализации lua(а в сталке как раз оно и есть) - вот цитата разработчиков: "Учтите, что скрипты могут существенно тормозить всю игру, поэтому в скриптах, работающих как отдельные скриптовые потоки, после каждого блока операций, который может забрать на себя хоть чуть-чуть процессорного времени, необходимо вызывать описанные выше модификации функции wait(…)"
  18. malandrinus В точку. Спасибо за подсказку. Я свои прочие статики сохранял во внешней локальной таблице(но не для того, чтобы вылета избежать - о возможности которого даже не подозревал- просто нужно было доступ к ним иметь постоянный), а на этот статик ссылка была внутри функции. Вынес ссылку во внешку - все появилось(использовал для теста видео из игры). Теперь еще осталось разобраться с моим видео, которое сталкер воспроизводить не хочет - конвертил из avi в ogv прогой ffmpeg2theora, расширение сменил на ogm - но вылетает зараза - видимо что то с форматом не то. [spoiler=вот лог -думаю мало кому знакомый ]stack trace: 001B:004AF4B9 XR_3DA.exe, CPerlinNoise3D::Get() 001B:0047BE38 XR_3DA.exe, CTheoraSurface::Update() 001B:0048CB15 XR_3DA.exe, CTexture::apply_theora() PS: Да, вот еще - для расширения так как сказать кругозора - почему игра(компилятор) не видит уже скомпилированный скриптовый файл? Ради теста решил скомпилировать свой игровой скрипт в SCITE - положил потом в в папку script, расширение .script - так не видит в упор, как будто его там и нет вовсе.
  19. Хотел уточнить: класс CUIStatic действительно не поддерживает вывод анимированных текстур (в формате ogm) ? Попробовал создать экземпляр статика с ogm и вывести на худ (через AddDialogToRender()) свою видеоанимацию - вылетел(ругалась какая то движковая функция связанная с кодеком theora ). Решил попробовать тоже самое сделать с дефолтным ogm - ui\ui_mm_fire (вдруг мое видео нечитабельным было для сталка) - тоже вылетел, правда лог другой был (малоинформативный поэтому не привожу). Насчет CUIStatic я был неправ- он то как раз позволяет использовать анимированные текстуры\видео. Но если вывести их в скриптовое окно проблем нет, то вот на худ - непонятно как - использование AddDialogToRender() приводит к вылету.
  20. Garry_Galler

    Выбрасываемый рюкзак

    Леня Баньши Тебе сюда: function Bag:Init(Wnd,info_id) (файл xr_bag.script) local iPosX, iPosY=200, 236 -- позиция по X, Y статика для открытого окна инвентаря ГГ if info_id=="ui_car_body" then --// позиция если открыто окна инвентаря трупа iPosY=iPosY+27 iPosX=iPosX-7 --// позиция если открыто окно торговли elseif info_id=="ui_trade" then iPosY=iPosY+14 iPosX=iPosX-7 end тебе нужно сместить влево - значит уменьшить значение по X для окна инвентаря ГГ на 5- 10 пискелей. Для остальных окон смотри сам. А для кнопки сброса - сюда:ui_new_slots.script function UISlotWnd:InitControls() ............... self.btn_drop:Init("ui\\ui_btn_01_h", 230,735, 120, 30) -- опять же координаты по X, Y
  21. SkyLoader tostring() при выводе в консоль примени(кто ж в консоль значение переменной выводит без всякого форматирования и конвертации). Булевы значения нужно конвертировать в строку.
  22. antreg В общем сделал обновленный вариант - там можно самому настроить вывод статиков как по горизонтали, так и по вертикали просто поменяв логические значения двух параметров. Также заменил шрифт на более подходящий. И добавил вывод водки и бинтов скрин
  23. antreg Тут все просто: добавляешь в мой файл эту таблицу local tPosYItems ={ medkit =25, medkit_scientic =50, medkit_army =75, antirad =100 } затем в строчке for k, v in pairs(tPosXItems) do заменяешь имя таблицы на tPosYItems затем строчку st:Init(v, 725, 30, 25) комментируешь или удаляешь и вместо нее пишешь st:Init(990, v, 30, 25) (кстати размеры - ширина\высота - иконок определяют параметры 30, 25 - их можно увеличить\уменьшить - только пропорции стоит соблюдать, что иконка не сильно искажалась) теперь статики будут строиться по вертикали в правом верхнем углу - точка отсчета по x- 990 - можешь ее подкорректировать под себя. Шаг между статиками 25 пикселей - как и был - но это тоже можешь подправить в таблице tPosYItems - верхний статик будет рисоваться по координате Y равной 25, последующие по указанным - друг под другом. В итоге получается так:
  24. function IsWeaponActive() local item = db.actor:active_item() return item and isWeapon(item ) end ------------------------------------------------------------------------------------------------------------- Кому нужно: аптечки на худе (универсальный скрипт под любую версию игры ТЧ или мод на ТЧ (состоит всего из одного файла), причем скрипт легко можно дополнить своими предметами)
  25. Garry_Galler

    Выбрасываемый рюкзак

    7.9 Если бы еще знать как это реализовать - рюкзаки для NPC
×
×
  • Создать...