2022-08-27 17:16:44 +00:00
|
|
|
#include "callbacks.h"
|
|
|
|
#include "a_samp.h"
|
|
|
|
#include "Mono.h"
|
2022-08-27 17:10:32 +00:00
|
|
|
|
|
|
|
typedef void (*logprintf_t)(char* format, ...);
|
|
|
|
logprintf_t logprintf;
|
|
|
|
extern void *pAMXFunctions;
|
|
|
|
|
2022-08-27 17:16:44 +00:00
|
|
|
void fnlogprintf(char *message) {
|
2022-08-27 17:10:32 +00:00
|
|
|
logprintf(message);
|
|
|
|
}
|
|
|
|
|
2022-08-27 17:16:44 +00:00
|
|
|
PLUGIN_EXPORT unsigned int PLUGIN_CALL Supports() {
|
2022-08-27 17:10:32 +00:00
|
|
|
return SUPPORTS_VERSION | SUPPORTS_AMX_NATIVES;
|
|
|
|
}
|
|
|
|
|
2022-08-27 17:16:44 +00:00
|
|
|
PLUGIN_EXPORT bool PLUGIN_CALL Load(void** ppData) {
|
2022-08-27 17:10:32 +00:00
|
|
|
// Set variables
|
|
|
|
pAMXFunctions = ppData[PLUGIN_DATA_AMX_EXPORTS];
|
|
|
|
logprintf = (logprintf_t) ppData[PLUGIN_DATA_LOGPRINTF];
|
2022-08-27 17:16:44 +00:00
|
|
|
|
2022-08-27 17:10:32 +00:00
|
|
|
// Instantiate classes
|
|
|
|
g_Invoke = new Invoke;
|
|
|
|
g_Mono = new Mono;
|
2022-08-27 17:16:44 +00:00
|
|
|
|
2022-08-27 17:10:32 +00:00
|
|
|
// Initialize the Mono instance and load the Script library
|
|
|
|
g_Mono->init();
|
2022-08-27 17:16:44 +00:00
|
|
|
|
2022-08-27 17:10:32 +00:00
|
|
|
// Output status
|
2022-08-27 17:16:44 +00:00
|
|
|
logprintf(" sampdotnethook v0.1 is OK.");
|
2022-08-27 17:10:32 +00:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2022-08-27 17:16:44 +00:00
|
|
|
PLUGIN_EXPORT void PLUGIN_CALL Unload() {
|
|
|
|
logprintf(" sampdotnethook v0.1 unloaded.");
|
2022-08-27 17:10:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
AMX_NATIVE_INFO PluginNatives[] = {
|
|
|
|
{ "CBOnGameModeInit", CBOnGameModeInit },
|
|
|
|
{ "CBOnGameModeExit", CBOnGameModeExit },
|
|
|
|
{ "CBOnPlayerConnect", CBOnPlayerConnect },
|
|
|
|
{ "CBOnPlayerDisconnect", CBOnPlayerDisconnect },
|
|
|
|
{ "CBOnPlayerSpawn", CBOnPlayerSpawn },
|
|
|
|
{ "CBOnPlayerDeath", CBOnPlayerDeath },
|
|
|
|
{ "CBOnVehicleSpawn", CBOnVehicleSpawn },
|
|
|
|
{ "CBOnVehicleDeath", CBOnVehicleDeath },
|
|
|
|
{ "CBOnPlayerText", CBOnPlayerText },
|
|
|
|
{ "CBOnPlayerCommandText", CBOnPlayerCommandText },
|
|
|
|
{ "CBOnPlayerRequestClass", CBOnPlayerRequestClass },
|
|
|
|
{ "CBOnPlayerEnterVehicle", CBOnPlayerEnterVehicle },
|
|
|
|
{ "CBOnPlayerExitVehicle", CBOnPlayerExitVehicle },
|
|
|
|
{ "CBOnPlayerStateChange", CBOnPlayerStateChange },
|
|
|
|
{ "CBOnPlayerEnterCheckpoint", CBOnPlayerEnterCheckpoint },
|
|
|
|
{ "CBOnPlayerLeaveCheckpoint", CBOnPlayerLeaveCheckpoint },
|
|
|
|
{ "CBOnPlayerEnterRaceCheckpoint", CBOnPlayerEnterRaceCheckpoint },
|
|
|
|
{ "CBOnPlayerLeaveRaceCheckpoint", CBOnPlayerLeaveRaceCheckpoint },
|
|
|
|
{ "CBOnRconCommand", CBOnRconCommand },
|
|
|
|
{ "CBOnPlayerRequestSpawn", CBOnPlayerRequestSpawn },
|
|
|
|
{ "CBOnObjectMoved", CBOnObjectMoved },
|
|
|
|
{ "CBOnPlayerObjectMoved", CBOnPlayerObjectMoved },
|
|
|
|
{ "CBOnPlayerPickUpPickup", CBOnPlayerPickUpPickup },
|
|
|
|
{ "CBOnVehicleMod", CBOnVehicleMod },
|
|
|
|
{ "CBOnEnterExitModShop", CBOnEnterExitModShop },
|
|
|
|
{ "CBOnVehiclePaintjob", CBOnVehiclePaintjob },
|
|
|
|
{ "CBOnVehicleRespray", CBOnVehicleRespray },
|
|
|
|
{ "CBOnVehicleDamageStatusUpdate", CBOnVehicleDamageStatusUpdate },
|
|
|
|
{ "CBOnUnoccupiedVehicleUpdate", CBOnUnoccupiedVehicleUpdate },
|
|
|
|
{ "CBOnPlayerSelectedMenuRow", CBOnPlayerSelectedMenuRow },
|
|
|
|
{ "CBOnPlayerExitedMenu", CBOnPlayerExitedMenu },
|
|
|
|
{ "CBOnPlayerInteriorChange", CBOnPlayerInteriorChange },
|
|
|
|
{ "CBOnPlayerKeyStateChange", CBOnPlayerKeyStateChange },
|
|
|
|
{ "CBOnRconLoginAttempt", CBOnRconLoginAttempt },
|
|
|
|
{ "CBOnPlayerUpdate", CBOnPlayerUpdate },
|
|
|
|
{ "CBOnPlayerStreamIn", CBOnPlayerStreamIn },
|
|
|
|
{ "CBOnPlayerStreamOut", CBOnPlayerStreamOut },
|
|
|
|
{ "CBOnVehicleStreamIn", CBOnVehicleStreamIn },
|
|
|
|
{ "CBOnVehicleStreamOut", CBOnVehicleStreamOut },
|
|
|
|
{ "CBOnDialogResponse", CBOnDialogResponse },
|
|
|
|
{ "CBOnPlayerTakeDamage", CBOnPlayerTakeDamage },
|
|
|
|
{ "CBOnPlayerGiveDamage", CBOnPlayerGiveDamage },
|
|
|
|
{ "CBOnPlayerClickMap", CBOnPlayerClickMap },
|
|
|
|
{ "CBOnPlayerClickTextDraw", CBOnPlayerClickTextDraw },
|
|
|
|
{ "CBOnPlayerClickPlayerTextDraw", CBOnPlayerClickPlayerTextDraw },
|
|
|
|
{ "CBOnPlayerClickPlayer", CBOnPlayerClickPlayer },
|
|
|
|
{ "CBOnPlayerEditObject", CBOnPlayerEditObject },
|
|
|
|
{ "CBOnPlayerEditAttachedObject", CBOnPlayerEditAttachedObject },
|
|
|
|
{ "CBOnPlayerSelectObject", CBOnPlayerSelectObject },
|
|
|
|
|
|
|
|
{ 0, 0 }
|
|
|
|
};
|
|
|
|
|
2022-08-27 17:16:44 +00:00
|
|
|
PLUGIN_EXPORT int PLUGIN_CALL AmxLoad( AMX* amx ) {
|
2022-08-27 17:10:32 +00:00
|
|
|
g_Invoke->amx_list.push_back(amx);
|
|
|
|
g_Invoke->getAddresses();
|
|
|
|
return amx_Register(amx, PluginNatives, -1);
|
|
|
|
}
|
|
|
|
|
2022-08-27 17:16:44 +00:00
|
|
|
PLUGIN_EXPORT int PLUGIN_CALL AmxUnload( AMX* amx ) {
|
|
|
|
for(std::list<AMX *>::iterator i = g_Invoke->amx_list.begin(); i != g_Invoke->amx_list.end(); ++i) {
|
2022-08-27 17:10:32 +00:00
|
|
|
if(*i == amx) {
|
|
|
|
g_Invoke->amx_list.erase(i);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return AMX_ERR_NONE;
|
2022-08-27 17:16:44 +00:00
|
|
|
}
|