Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Kicked/Banned reasonА 100 это какой вариант отключения?
Kicked/Banned reasonА 100 это какой вариант отключения?
[13:05:04.571] < [RPC Send] RPC_DamageVehicle[106](length: 12 bytes, 96 bits, priority: 1, reliability: 8, orderingChannel: 0)
< dump:
0000 2B 05 10 00 20 00 00 00 00 00 04 08 +... .......
Как считывать RPC_DamageVehicle ?
Либо альтернативный вариант получение ID / ника игрока, который нанёс урон по транспорту локального игрока?Код:[13:05:04.571] < [RPC Send] RPC_DamageVehicle[106](length: 12 bytes, 96 bits, priority: 1, reliability: 8, orderingChannel: 0) < dump: 0000 2B 05 10 00 20 00 00 00 00 00 04 08 +... .......
bool CALLBACK rpc(stRakNetHookParams *params)
{
if (params->packetId == RPCEnumeration::RPC_DamageVehicle)
{
BitStream *bs = params->bitStream;
int vehicleId, panelDmg, doorDmg;
int8 lights, tires;
bs->Read(vehicleId);
bs->Read(panelDmg);
bs->Read(doorDmg);
bs->Read(lights);
bs->Read(tires);
SF->getSAMP()->getChat()->AddChatMessage(-1, "vId: %d; panel: %d; door: %d; lights: %d; tires: %d", vehicleId, panelDmg, doorDmg, lights, tires);
};
return true;
};
SF->getRakNet()->registerRakNetCallback(RakNetScriptHookType::RAKHOOK_TYPE_OUTCOMING_RPC, rpc);
C, C++(https://blast.hk/forums/7/?prefix_id=39)Нужен курс для написания .sf
Можно ли как-то узнать кто выстрелил по транспорту локального перса?только этот рпц триггерится, когда ты в машине и наносишь ей урон(столкновение и т.п), и id игрока в этом рпц нет.
Привязка по ip, серьезно ?Как получить IP пользователя и сделать условие? Типо, если ип не тот который нужен, то крашит игру
Нечайно ошибся с вопросом, как сделать условие на айпи сервера .. И если он не совпадет - крашА если у меня он динамический?
if (!strcmp("127.0.0.1", SF->getSAMP()->getInfo()->szIP))Нечайно ошибся с вопросом, как сделать условие на айпи сервера .. И если он не совпадет - краш
Подниму, может кто знающий не заметил.Можно ли как-то узнать кто выстрелил по транспорту локального перса?
hmm, can you give me an example?You can`t do it from SF API CLEO Caller Engine as far as i know but why you so need it if exist so pretty analogue Sleep(ms); Just do not use it in a commands and hooks cuz will be problem (Solution: Creating a new thread for execution).
hmm, can you give me an example?
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>
#include <thread>
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
using namespace std;
#pragma warning (disable:4700)
#pragma warning (disable:4244)
#pragma warning (disable:4018)
#pragma comment(lib,"User32.lib")
SAMPFUNCS *SF = new SAMPFUNCS();
DWORD ThreadID; HANDLE hThread;
volatile bool Activated = false;
typedef struct
{
int delay;
} ThreadParams;
void __stdcall ThreadBody(void *prm)
{
ThreadParams *param = (ThreadParams*)prm;
do
{
Sleep(param->delay); // like a wait opcode from cleo`s
// Your code, for example we show a message when time from sleep ago.
SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(204, 255, 51),
"{ff751a}Thread Executed!");
}
while (Activated);
}
void __stdcall CmdBody(string arg) // example call from the command body
{
if (!Activated)
{
if (arg.empty())
{
SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(204, 255, 51),
"{ff751a}Type: /sleep {ffff00}[milliseconds]");
return;
}
Activated = true;
static ThreadParams prm;
prm.delay = stoi(arg);
hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&ThreadBody,
(void*)&prm, 0, &ThreadID);
SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(148, 112, 255),
"{FF144C}Plugin {8c66ff}Enabled!");
}
else
{
SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(148, 112, 255), "Disabled.");
Activated = false;
if (hThread != 0) TerminateThread(hThread, 0); // in some times thread can not ended cuz probally sleep function was not ended yet.
}
}
void __stdcall Destr()
{
// For a special situations when game exit was been before than our thread was executed, so if that - we must stop it;
// This problem caused from Sleep(ms); function in the threads wich waiting their end.
if (hThread != 0) TerminateThread(hThread, 0);
}
void __stdcall mainloop(void)
{
static bool init = false;
if (!init)
{
if (GAME == nullptr) return;
if (!SF->getSAMP()->IsInitialized()) return;
SF->getSAMP()->registerChatCommand("sleep", CmdBody);
SF->getGame()->registerGameDestructorCallback(Destr);
init = true;
}
}
bool __stdcall DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
switch (dwReasonForCall)
{
case DLL_PROCESS_ATTACH:
SF->initPlugin(mainloop, hModule);
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH: break;
}
return true;
}
while (true) // Бесконечный цикл
{
Sleep(1);
if (GetAsyncKeyState(VK_NUMPAD1)) // Проверка на нажатие клавиши
{
while (GetAsyncKeyState(VK_NUMPAD1))// Если клавиша
{
Sleep(1);
}
SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "SAMPFUNCS Plugin loaded.");
// вывод в чат
}
}
#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1
#include <windows.h>
#include <string>
#include <assert.h>
#include <process.h>
#include "SAMPFUNCS_API.h"
#include "game_api\game_api.h"
SAMPFUNCS *SF = new SAMPFUNCS();
void CALLBACK mainloop()
{
static bool init = false;
if (!init)
{
if (GAME == nullptr)
return;
if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME)
return;
if (!SF->getSAMP()->IsInitialized())
return;
while (true) // Бесконечный цикл
{
Sleep(1);
if (GetAsyncKeyState(VK_NUMPAD1)) // Проверка на нажатие клавиши
{
while (GetAsyncKeyState(VK_NUMPAD1))// Если клавиша
{
Sleep(1);
}
SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "SAMPFUNCS Plugin loaded.");
// вывод в чат
}
}
init = true;
}
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved)
{
switch (dwReasonForCall)
{
case DLL_PROCESS_ATTACH:
SF->initPlugin(mainloop, hModule);
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
Серьезность Код Описание Строка Состояние подавления
Ошибка LNK2019 ссылка на неразрешенный внешний символ __imp__GetAsyncKeyState@4 в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ) 1
Серьезность Код Описание Строка Состояние подавления
Ошибка LNK1120 неразрешенных внешних элементов: 1 1
#pragma comment(lib, "User32.lib")Наткнулся на очень плохие и никчемные ошибки. Покажите, где я написал не то, что нужно, пожалуйста.
Ошибка из-за этих строк.
C++:while (true) // Бесконечный цикл { Sleep(1); if (GetAsyncKeyState(VK_NUMPAD1)) // Проверка на нажатие клавиши { while (GetAsyncKeyState(VK_NUMPAD1))// Если клавиша { Sleep(1); } SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "SAMPFUNCS Plugin loaded."); // вывод в чат } }
C++:#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1 #include <windows.h> #include <string> #include <assert.h> #include <process.h> #include "SAMPFUNCS_API.h" #include "game_api\game_api.h" SAMPFUNCS *SF = new SAMPFUNCS(); void CALLBACK mainloop() { static bool init = false; if (!init) { if (GAME == nullptr) return; if (GAME->GetSystemState() != eSystemState::GS_PLAYING_GAME) return; if (!SF->getSAMP()->IsInitialized()) return; while (true) // Бесконечный цикл { Sleep(1); if (GetAsyncKeyState(VK_NUMPAD1)) // Проверка на нажатие клавиши { while (GetAsyncKeyState(VK_NUMPAD1))// Если клавиша { Sleep(1); } SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "SAMPFUNCS Plugin loaded."); // вывод в чат } } init = true; } } BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved) { switch (dwReasonForCall) { case DLL_PROCESS_ATTACH: SF->initPlugin(mainloop, hModule); break; case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; }
Ошибки:
Код:Серьезность Код Описание Строка Состояние подавления Ошибка LNK2019 ссылка на неразрешенный внешний символ __imp__GetAsyncKeyState@4 в функции "void __stdcall mainloop(void)" (?mainloop@@YGXXZ) 1 Серьезность Код Описание Строка Состояние подавления Ошибка LNK1120 неразрешенных внешних элементов: 1 1