Если вам нужно переписать lua/cleo, то просто берете таблицу опкодов:
wiki.blast.hk
Ищите опкод, и если он является GTA-шным, а не добавляется SAMPFUNCS-ом (а setGameKeyState как раз таки является), то подключаете plugin-sdk в свой проект и вызываешь его при помощи функций псдк:
1.Ваш вопрос: Как в dll / asi добавить wait, который идет с GTA SA опкодом 0001 ? Еще вариант используя plugin sdk #include #include "extensions/ScriptCommands.h" // Тут находится весь список опкодов -> extenstions/scripting/ScriptCommandNames.h plugin::Command( 1000 );
www.blast.hk
Единственное, в том примере не указано то, как получать возвращаемое значение - надо лишь после всех аргументов, передать указатель на переменную, в которую должен записаться результат.
По поводу опкодов SF и setGameKeyState в частности, то тут нужно самому реверсить sampfuncs.asi и смотреть реализацию этих опкодов. Проще всего это сделать в IDA через: Search -> Sequence of bytes -> Ввести нужный опкод и выставить настройки, как на скрине
Посмотреть вложение 284576
-> Найти строку, где будет push ваш_опкодh и далее перейти в каллбек функцию.
Посмотреть вложение 284578
Чтобы тебе не тратить время, сам нашел реализацию клавиши:
int __stdcall sub_10082582(CScriptThread *a1)
{
unsigned int Int; // esi
Int = CScriptThread::GetInt(a1);
*(_WORD *)(2 * Int + 0xB73458) = CScriptThread::GetInt(a1);
return 0;
}