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

Редактирование движка X-Ray


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

@!SkIF!, a ты как начинаешь компиляцию? Наводи курсор на папку или проект и правой кнопкой мыши выбирай rebuild (не советую делать build).

Изменено пользователем Дизель
  • Спасибо 1

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

Дизель, до меня кажись дошло - директы то я скачал и установил, а вот в студии их не добавил как на скринах. Теперь добавил - прогресс, уже меньше ошибок - всего один error остался. Вот лог

 

 

  Показать

 

Ссылка на комментарий

@!SkIF!, LINK : fatal error LNK1181: cannot open input file '..\..\..\libraries\xrsound.lib'

 

Теперь жми на xrsound ребилд, так как ты не собрал библиотеку.

  • Спасибо 1

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

Дизель, я так понял, там некоторые проекты взаимосвязаны - пока не сблидишь один, не сбилдишь другой. С xrSound там же беда - отсылается к xrCore - его компилю, нет

8>LINK : fatal error LNK1104: cannot open file 'dxerr.lib'

пробовал 3rd party - ту же библиотеку найти не может. Пробовал весь проект сразу ребилднуть - тоже куча ошибок.


Так все, собрал! С подключением директов немного накосячил. Дизель, огромнейшее спасибо за помощь!!! Очень выручил!!!

Ссылка на комментарий

Всем привет! ЗП. Такой вопрос: в файле UIActorMenu.cpp есть такой код:

if(weapon)
	{
		m_InvSlot2Highlight->Show(true);
		m_InvSlot3Highlight->Show(true);
		return;
	}

Сделал отдельный слот для ножа - m_KnifeSlotHighlight И вот в это коде нужно проверить, что если weapon и класс не CWeaponKnife, тогда {} И по аналогии с этим написать код где проверяется что weapon и класс CWeaponKnife, тогда идет подсветка слота ножа. Так вот: как в С++ получить класс объекта, что-то вроде get_clsid? Зараннее спасибо!

Ссылка на комментарий

@!SkIF!, я просто слот проверяю, по клсидам не совсем правильно на мой взгляд, так как в теории такие проверки могут разбухать, что крайне не желательно, например, если у тебя слот будет не только для ножа, но еще и для бинокля, etc., где подсвечивать это тоже не правильно (попробуй на досуге, еще, возможно, поймаешь пару ошибок над которыми можно поразмышлять, и поймешь о чем я говорю). По ЗП не подскажу, я на ТЧ код писал, но не думаю что там что-то отличается. Если детей CWeapon на отдельные слоты мало, то можешь сразу закастовать что нужно и все, куда лучше чем эти клсиды.

Ссылка на комментарий

Карлан, вот нужно что-то типа такого, только вот я неправильно проверяю, что это нож - билд валится

if(weapon != smart_cast<CWeaponKnife*>(item))
	{
		m_InvSlot2Highlight->Show(true);
		m_InvSlot3Highlight->Show(true);
		//m_KnifeSlotHighlight->Show(true);
		return;
	}
	if(weapon == smart_cast<CWeaponKnife*>(item))
	{
		m_KnifeSlotHighlight->Show(true);
		return;
	}

Как правильно проверить?


Все, проблема решена!

Ссылка на комментарий

Всем привет! ЗП. Решил расширить слоты для артефактов: в движке поправил
в UIActorMenu.h



enum {e_af_count = 10};

и в UIActorMenuInventory.cpp



VERIFY( 0 <= af_count && af_count <= 10 );

Естественно и в system.ltx max_belt = 10. Прописал комбезу 10 слотов, но работают только пять. Где еще количество слотов указано? Уже везде пересмотрел, поиском весь движок перерыл. Зараннее спасибо!

Изменено пользователем !SkIF!
Ссылка на комментарий

Такой вопрос: в InventiryOwner.cpp есть такой код

if (use_bolts())
Level().spawn_item ("bolt",game_object->Position(),game_object->ai_location().level_vertex_id(),game_object->ID());

а как удалить болт, а не заспавнить? Как вобще в движке удалять предметы? Зараннее спасибо!

Ссылка на комментарий

Доброго времени суток.

Хотелось бы узнать по поводу обхода ошибки 'invalid face'

Достаточно закомментировать строчки.

 

  Показать

 

Или тут кроется 'подводные камни'

Изменено пользователем Кельвин
Ссылка на комментарий

Уважаемые, каким образом заставить движок перечитать некий скрипт с диска? 

Передается на выполнение таким образом:

ai().script_engine().script_process(ScriptEngine::eScriptProcessorLevel)->add_script("test.testfunc()",true,true);

единственное, что заставило перечитать содержимое test.script - это вызов из скриптов _G.test=nil. Но это уж как то через левое плечо. Как именно с движка сделать аналог _G.test=nil?

Благодарю!

Ссылка на комментарий
  Winsor писал(а):

Но это уж как то через левое плечо.

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

  • Спасибо 1
Ссылка на комментарий
  19.09.2016 в 11:49, Карлан сказал:

Никак не пойму зачем это делать в движке, код в принципе будет идентичен, тебе надо (необязательно, но рекомендую) будет написать что в скриптах что в движке функцию для перегрузки файлов в целом (для луа, хотя необязательно), а не только тех, с которым работает движок, причем что этот функционал можно и расширить на предмет выгрузки/загрузки несуществующих модулей. А так у тебя код некорректный, script_process здесь не нужен, тебе надо либо выставить флаг, либо грохнуть поле на стеке. Я бы пошел вторым вариантом.

пытаюсь придумать некую стандартную функцию для обновления скрипта с диска. делаю в движке - чтобы не зависеть от скриптовой реализации. например - я могу иметь два скрипта, в test2.script делать G._test=nil и иметь test.script с постоянно "свежим" содержимым.на лицо - избыточность, как по мне. вот вопрос о такой функции именно движковой. если в скрипте я понимаю что делать что надо , то со стороны движка - даже не представляю. 

А почему код не корректный? я таким образом отправляю на выполнение кусок кода. 

Ссылка на комментарий

@Winsor, так прямо в test.script и сделать его перезагрузку, какие проблемы? В движке тебе можно с флагом вызвать process_file. Что-то вроде process_file(module, true), если верно помню, но так и не понимаю зачем. У меня функция перезагрузки модуля автоматически формируется для каждого нужного модуля и по хот-кею модуль моментально перезагружается в любой момент игры, довольно удобно. Не изменяется работа только зависимых функций, что понятно. Для полного удобства можно соорудить GUI, в котором будет список скриптов и кнопка перезагрузить, выбираем скрипт из листа, жмем кнопку и ву-а-ля.

 

 

 

  Winsor писал(а):
я таким образом отправляю на выполнение кусок кода.

Твой код дергает модуль (как-раз с флагом перезагрузки) и запускает конкретную функцию, то есть простой перезагрузки ты этим не добьешься, все время будет оверхед.

 

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

Ссылка на комментарий

В том то и дело - пробовал process_file(module, true) - не перегружается.

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

 

 

  Карлан писал(а):
Можешь себе выковырять из моего проекта, когда он выйдет.
- это Prosectors Project? Желаю Вам выпуститься , и не только для того чтобы выковырять :) а просто потому что годные вещи должны увидеть свет.
Ссылка на комментарий
  Winsor писал(а):

В том то и дело - пробовал process_file(module, true) - не перегружается.

Тогда попробуй убить на стеке. Добавь простенькую функцию прямо в script_engine_script.cpp (вроде так файл называется), и протестируй, но так уже полная идентичность скрипту выйдет :). К сожалению в движке я таким не занимался, нужно посмотреть куда там эти скрипты оседают, и написать что-нибудь для их перезагрузки, можешь поставить логи и размотать стек, process_file могу сказать точно, что вызывается, так как у меня эта функция с (пере)загружающим скриптом работает.

 

  Winsor писал(а):

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

В порядке лирического отступления, расскажи где необходимо перезагружать целый модуль, чтобы поменять набор инструкций, что такое кстати набор инструкций в твоем понимании? В моем понимании это данные, в крайнем случае функции, и все их можно с легкостью менять в модуле не перезагружая его. Или это что-то вроде античита? К сожалению я немного не понимаю зачем тебе это надо, если не секрет, то расскажи конечную цель, и лучше наверное в ЛС, так как это здесь уже оффтоп.

 

По проекту - да, сейчас дотестируемся и выйдем.

 

Ссылка на комментарий

Доброго времени суток! Можете подсказать в чём может быть проблема и как её можно решить - у меня сборка очень часто валится с таким вот логом:

  Показать

Сборка open xray, master branch. Вылет абсолютно рандомный. Правки в основном связаны только с инвентарём + несколько новых итемов, менять что-то более серьёзное я пока не умею)

Изменено пользователем mortan
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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