HLFX.Ru Forum
Показать все 23 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Xash3D (https://hlfx.ru/forum/forumdisplay.php?forumid=14)
-- Xash3D and libraries (https://hlfx.ru/forum/showthread.php?threadid=3291)


Отправлено qpAHToMAS 09-03-2012 в 18:52:

Xash3D and libraries

Я конечно ламер, но не могу полностью понять архитектуру Xash3D и модов для него. Сам Xash3D это исполняемый файл и три библиотеки, все это дело подгружает мод ввиде других DLL файлов (та же Half-life со своей папкой VALVe).
Еще помню что-то вроде "xash_extras", где был еще и небольшой "каркас" поверх движка, но не суть.
Так вот, могу ли я использовать сторонний ЯП (который умеет создавать библиотеки конечно же) для создания мода, который будет "кушать" Xash3D точно так же как он "кушает" Half-life?


Отправлено XaeroX 09-03-2012 в 18:59:

qpAHToMAS
Да, если язык поддерживает calling-conventions _cdecl и _stdcall, а также все стандартные типы данных С.
Из того, что я знаю, это язык ассемблера и, после определенных плясок с бубном, паскаль.

__________________

xaerox on Vivino


Отправлено Дядя Миша 09-03-2012 в 19:19:

Ежли сторонний линекер не сумеет явно вывести GiveFnptrsToDll первым экспортом, то хренвам а не паскаль.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено qpAHToMAS 09-03-2012 в 19:43:

Как бы мне это проверить? Может на болванке какой? Что надо сделать для теста? Библиотеку с какой функцией?

Я могу подключить xash.dll в программу и посмотреть кол-во функций в библиотеке. Показывает, что у xash.dll их 297 .


Отправлено XaeroX 09-03-2012 в 19:49:

qpAHToMAS
Не было у бабы заботы - купила баба порося?

__________________

xaerox on Vivino


Отправлено qpAHToMAS 09-03-2012 в 21:07:

XaeroX, ну, а что? Не на месте же сидеть, без порося темболее.

Добавлено 10-03-2012 в 01:07:

Как оказалось, _cdecl и _stdcall присутствуют, это вообще ходовые функции при работе с DLL.


Отправлено marikcool 09-03-2012 в 21:27:

а зачем это все? возьми hl библиотеки да вырежи себе все в них.


Отправлено qpAHToMAS 10-03-2012 в 11:54:

Цитата:
marikcool писал:
а зачем это все? возьми hl библиотеки да вырежи себе все в них.

Это те, которые из украденного в прошлом веке SDK? Они ведь на CPP.
Мне бы кто архитектуру объяснил, что есть в xash.dll (и других его библиотеках) и что есть в модовых (dlls/cl_dlls если я не ошибаюсь) и как они между собой взаимодействуют.


Отправлено Дядя Миша 10-03-2012 в 14:29:

Цитата:
qpAHToMAS писал:
Мне бы кто архитектуру объяснил, что есть в xash.dll (и других его библиотеках)

в xash.dll есть весь движок. В mainui.dll есть меню, в vgui.dll есть VGUI.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено qpAHToMAS 10-03-2012 в 15:28:

Вытащил названия функций из xash.dll, это нормально, что они с какими-то левыми символами? Только последние две адекватные.
http://paste.org.ru/?nne7zh


Отправлено XaeroX 10-03-2012 в 15:41:

qpAHToMAS
Это задекорированные имена. Погугли инфу о том, как декорирует инфу о функциях компилятор MSVC.
В других компиляторах, кстати, декорирование может быть другим, а ксаш приучен именно к такому.
И да, я не уверен, что паскаль позволяет экспортировать из длл функции-члены классов, а это обязательное условие для ксаша.

__________________

xaerox on Vivino


Отправлено Дядя Миша 10-03-2012 в 16:09:

Цитата:
qpAHToMAS писал:
Только последние две адекватные.

если бы не VGUI, там только последние два и были бы.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 10-03-2012 в 16:26:

Дядя Миша
В клиенте - да, а в сервере тчинки же всякие.

__________________

xaerox on Vivino


Отправлено marikcool 10-03-2012 в 16:56:

это нормально.


Отправлено Дядя Миша 10-03-2012 в 17:10:

Цитата:
XaeroX писал:
В клиенте - да, а в сервере тчинки же всякие.

мы про xash.dll говорим.
Я в ксаш иксти хочу воще всю эту пакость спрятать, чёб не торчало.
Очень меня эти экспорты раздражают. Да и портировать с ними непросто.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 10-03-2012 в 17:22:

Цитата:
Дядя Миша писал:
Да и портировать с ними непросто.

Непросто, да - но интересно. Я вот под линуксом волатилу гыцыцой собирал - и пришлось переделывать код под его стиль декорирования.

__________________

xaerox on Vivino


Отправлено pRoxxx 12-03-2012 в 16:15:

Цитата:
qpAHToMAS писал:
Вытащил названия функций из xash.dll, это нормально, что они с какими-то левыми символами? Только последние две адекватные.
http://paste.org.ru/?nne7zh

В IDA 6.1 это как то более адекватно выглядит http://paste.org.ru/?2fjp6c О_о


Отправлено qpAHToMAS 12-03-2012 в 21:10:

pRoxxx, ну наверное она понимает эти "задекорированные имена" и преобразует в читабельный вид, может что-то типа условных обозначений.


Отправлено KiQ 06-12-2012 в 16:59:

убрал все вызовы VGUI из движка, ксашмод вылетает с

C++ Source Code:
Sys_Crash: call 10031020 at address C0000005


При компиляции
C++ Source Code:
1
c:\games\thecastle\sdk\src\xash\engine\client\cl_game.c(662) : warning C4761: integral size mismatch in argument; conversion supplied
2
c:\games\thecastle\sdk\src\xash\engine\client\cl_game.c(1404) : warning C4761: integral size mismatch in argument; conversion supplied
3
c:\games\thecastle\sdk\src\xash\engine\client\cl_game.c(1404) : warning C4761: integral size mismatch in argument; conversion supplied
4
c:\games\thecastle\sdk\src\xash\engine\client\cl_game.c(1404) : warning C4761: integral size mismatch in argument; conversion supplied
5
c:\games\thecastle\sdk\src\xash\engine\client\cl_game.c(1404) : warning C4761: integral size mismatch in argument; conversion supplied
6
c:\games\thecastle\sdk\src\xash\engine\client\cl_game.c(2851) : warning C4761: integral size mismatch in argument; conversion supplied
7
c:\games\thecastle\sdk\src\xash\engine\client\cl_game.c(2851) : warning C4761: integral size mismatch in argument; conversion supplied
8
c:\games\thecastle\sdk\src\xash\engine\client\cl_game.c(2851) : warning C4761: integral size mismatch in argument; conversion supplied
9
c:\games\thecastle\sdk\src\xash\engine\client\cl_game.c(2851) : warning C4761: integral size mismatch in argument; conversion supplied


И я бы вот честно хотел сам разобраться, но толкового объяснения в тырнете что за варнинг и по какой причине возникает не нашел

__________________
-Brain is dead-


Отправлено Дядя Миша 06-12-2012 в 17:03:

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено KiQ 06-12-2012 в 17:38:

Ой, случайно не в то окно запостил. Но в принципе тоже про библиотеку вышло.

Добавлено 06-12-2012 в 21:38:

Так, выяснил, что запуску мешала

C++ Source Code:
// run anti (_-=ZhekA=-_) system for Xash3D engine

спасибо за подсказку
Теперь нормально грузится меню, но при запуске новой игры выбивает

__________________
-Brain is dead-


Отправлено fire64 06-12-2012 в 18:02:

Цитата:
KiQ писал:
Теперь нормально грузится меню, но при запуске новой игры выбивает

Поищи, может там еще есть

C++ Source Code:
// run anti KiQ system for Xash3D engine

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено Дядя Миша 06-12-2012 в 18:35:

Взял кучу повредил. Да есть же у тебя совесть или где?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Временная зона GMT. Текущее время 20:47.
Показать все 23 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024