Dani Minch

Тот парень. Что-то пишу, когда не лень.

Модуль Orpheu (v2.5.1)

 Counter-Strike 1.6, Модули, Статьи/гайды  Комментарии к записи Модуль Orpheu (v2.5.1) отключены
Май 302013
 

Автор: joaquimandrade

Модуль Orpheu дает скриптеру возможность использовать функции, которые было бы невозможно использовать без него (включая функции от других плагинов MetaMod).Модуль работает, как на Windows, так и на Linux.
Начиная с версии 2.1 ( 29 января 2010 г.), Orpheu также поддерживает прямой доступ к памяти.

Суть работы заключается в следующем:
Модуль использует преобразования между типами С++ и Pawn, и позволяет вызывать функции, указав ее адрес в памяти, а также используемые ею аргументы. Этот метод включает в себя общие принципы работы со структурами С++.

Например, предположим, что вы хотите использовать эту функцию:
void PM_Move( struct playermove_s *ppmove, qboolean server)

Она получает один аргумент типа «playermove_s» и другой типа «qboolean». Значения эта функция не возвращает.

Пока типы, необходимые функции, используются в модуле, вы можете использовать ее. Если один из типов не используется, то Вы можете подключить его напрямую, и все равно продолжать работать с функцией, к примеру подключать ее, так как при подключении функции Вам не надо заботиться обо всех ее аргументах.
Читать далее »

Orpheu: Поиск функций в библиотеках

 Counter-Strike 1.6, Статьи/гайды  Комментарии к записи Orpheu: Поиск функций в библиотеках отключены
Май 182013
 

Автор: joaquimandrade

Библиотека это набор байтов. Миллионов байтов. Они могут представлять числа, функции (в машинном коде), массивы и строки. Эта статья попытается объяснить вам, как найти функции в библиотеках и как их использовать.

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

В библиотеках, откомпилированных GCC (Linux), оффсеты помечены символьными именами, с помощью которых Вы можете легко распознать, что находится по данному оффсету.

В библиотеках, откомпилированных VC++, оффсеты, в целом, не имеют никаких меток, так что приходиться обращаться к таким методам, как поиск строки в библиотеке. Это происходит потому, что Вы можете легко связать строки в события, например, если Вы видите надпись “Terrorists Win”, то Вы знаете, что имеете дело с функцией, связанной с концом раунда.
Читать далее »