#1 06-03-2016 17:37

snappy96
Registered: 05-03-2016
Posts: 2

[Delphi]Вызов функции по нажатию кнопки на форме

Как вызвать функцию в GTA SA, используя окошко, созданное на Delphi, при этом зная её адрес, количество и тип параметров? Знаю, что это делается в SB одним опкодом, но меня интересует именно такая реализация. smile

Offline

#2 07-03-2016 00:45

НикИТОС
Registered: 05-06-2013
Posts: 133
Website

Re: [Delphi]Вызов функции по нажатию кнопки на форме

Какую функцию ты так хочешь вызвать? Покажи хоть код скрипта, который ты хочешь привязать к кнопке.

Offline

#3 07-03-2016 10:28

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: [Delphi]Вызов функции по нажатию кнопки на форме

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

Offline

#4 07-03-2016 13:32

snappy96
Registered: 05-03-2016
Posts: 2

Re: [Delphi]Вызов функции по нажатию кнопки на форме

На gtabuilder.ru есть урок на спавн транспорта через asi. Код ниже. Мне нужно сделать, чтобы это выполнялось по нажатию кнопки на форме, а не как asi

#include "stdafx.h"
 
//Объявляем прототип спавна
auto _spawnCarAtPlayerLocation = (void (__cdecl*)(signed int modelIndex))0x04AE8F0;
 
//Для клавиши      
bool isPress = false;
 
//Код обработки нажатия M
void Update() {
 
if (!GetKeyState(0x4D) > 0 )
     isPress = false;
 
   if ( (GetKeyState(0x4D) > 0 ) && (isPress == false) )
      {
        isPress = true;
       _spawnCarAtPlayerLocation(162);
      } 
 
};
 
BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
 
        //Тут установим таймер
        SetTimer(0,0, 16, (TIMERPROC)Update);
 
        break;
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

Offline

Board footer

Powered by FluxBB