-
Notifications
You must be signed in to change notification settings - Fork 0
/
callbacksPlugins.cpp
163 lines (138 loc) · 6.41 KB
/
callbacksPlugins.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
/*
This file is just an example, you have to define all these callbacks in any .cpp file of your project as shown here,
otherwise you will get some linking errors because they are called without being defined.
*/
#include "streamer.hpp"
#include "Functions.h"
#include <unordered_map>
extern std::unordered_map <std::string, int> Timers[MAX_PLAYERS];
PLUGIN_EXPORT bool PLUGIN_CALL OnPublicCall(AMX * amx, const char * name, cell * params, cell * retval)
{
std::string lName = std::string(name);
if (lName == "OnDynamicObjectMoved") { return OnDynamicObjectMoved(static_cast< int >(params[1])); } // ( int objectid )
else if (lName == "OnPlayerEditDynamicObject") { return OnPlayerEditDynamicObject(static_cast< int >(params[1]), static_cast< int >(params[2]), static_cast< int >(params[3]), amx_ctof(params[4]), amx_ctof(params[5]), amx_ctof(params[6]), amx_ctof(params[7]), amx_ctof(params[8]), amx_ctof(params[9])); } // ( int playerid, int objectid, int response, float x, float y, float z, float rx, float ry, float rz )
else if (lName == "OnPlayerSelectDynamicObject") { return OnPlayerSelectDynamicObject(static_cast< int >(params[1]), static_cast< int >(params[2]), static_cast< int >(params[3]), amx_ctof(params[4]), amx_ctof(params[5]), amx_ctof(params[6])); } // ( int playerid, int objectid, int modelid, float x, float y, float z )
else if (lName == "OnPlayerShootDynamicObject") { return OnPlayerShootDynamicObject(static_cast< int >(params[1]), static_cast< int >(params[2]), static_cast< int >(params[3]), amx_ctof(params[4]), amx_ctof(params[5]), amx_ctof(params[6])); } // ( int playerid, int weaponid, int objectid, float x, float y, float z )
else if (lName == "OnPlayerPickUpDynamicPickup") { return OnPlayerPickUpDynamicPickup(static_cast< int >(params[1]), static_cast< int >(params[2])); } // ( int playerid, int pickupid )
else if (lName == "OnPlayerEnterDynamicCP") { return OnPlayerEnterDynamicCP(static_cast< int >(params[1]), static_cast< int >(params[2])); } // ( int playerid, int checkpointid )
else if (lName == "OnPlayerLeaveDynamicCP") { return OnPlayerLeaveDynamicCP(static_cast< int >(params[1]), static_cast< int >(params[2])); } // ( int playerid, int checkpointid )
else if (lName == "OnPlayerEnterDynamicRaceCP") { return OnPlayerEnterDynamicRaceCP(static_cast< int >(params[1]), static_cast< int >(params[2])); } // ( int playerid, int checkpointid )
else if (lName == "OnPlayerLeaveDynamicRaceCP") { return OnPlayerLeaveDynamicRaceCP(static_cast< int >(params[1]), static_cast< int >(params[2])); } // ( int playerid, int checkpointid )
else if (lName == "OnPlayerEnterDynamicArea") { return OnPlayerEnterDynamicArea(static_cast< int >(params[1]), static_cast< int >(params[2])); } // ( int playerid, int areaid )
else if (lName == "OnPlayerLeaveDynamicArea") { return OnPlayerLeaveDynamicArea(static_cast< int >(params[1]), static_cast< int >(params[2])); } // ( int playerid, int areaid )
else if (lName == "OnPlayerGiveDamageDynamicActor") { return OnPlayerGiveDamageDynamicActor(static_cast< int >(params[1]), static_cast< int >(params[2]), amx_ctof(params[3]), static_cast< int >(params[4]), static_cast< int >(params[5])); } // ( playerid, int actorid, float amount, int weaponid, int bodypart );
else if (lName == "OnDynamicActorStreamIn") { return OnDynamicActorStreamIn(static_cast< int >(params[1]), static_cast< int >(params[2])); } // ( int actorid, int forplayerid );
else if (lName == "OnDynamicActorStreamOut") { return OnDynamicActorStreamOut(static_cast< int >(params[1]), static_cast< int >(params[2])); } // ( int actorid, int forplayerid );
else if (lName == "Streamer_OnItemStreamIn") { return Streamer_OnItemStreamIn(static_cast< int >(params[1]), static_cast< int >(params[2])); } // ( int type, int id );
else if (lName == "Streamer_OnItemStreamOut") { return Streamer_OnItemStreamOut(static_cast< int >(params[1]), static_cast< int >(params[2])); } // ( int type, int id );
else if (lName == "Streamer_OnPluginError") // ( const char error[ ] )
{
cell * lAddress = nullptr;
amx_GetAddr(amx, params[1], &lAddress);
int lLength = 0;
amx_StrLen(lAddress, &lLength);
std::string lString(lLength, ' ');
amx_GetString(&lString[0], lAddress, 0, lLength + 1);
return Streamer_OnPluginError(lString.c_str());
}
return 1;
}
bool OnDynamicObjectMoved( int objectid )
{
// your plugin's code
return 1;
}
bool OnPlayerEditDynamicObject( int playerid, int objectid, int response, float x, float y, float z, float rx, float ry, float rz )
{
// your plugin's code
return 1;
}
bool OnPlayerSelectDynamicObject( int playerid, int objectid, int modelid, float x, float y, float z )
{
// your plugin's code
return 1;
}
bool OnPlayerShootDynamicObject( int playerid, int weaponid, int objectid, float x, float y, float z )
{
// your plugin's code
return 1;
}
bool OnPlayerPickUpDynamicPickup( int playerid, int pickupid )
{
// your plugin's code
return 1;
}
bool OnPlayerEnterDynamicCP( int playerid, int checkpointid )
{
// your plugin's code
return 1;
}
bool OnPlayerLeaveDynamicCP( int playerid, int checkpointid )
{
// your plugin's code
return 1;
}
bool OnPlayerEnterDynamicRaceCP( int playerid, int checkpointid )
{
// your plugin's code
return 1;
}
bool OnPlayerLeaveDynamicRaceCP( int playerid, int checkpointid )
{
// your plugin's code
return 1;
}
extern int zone;
bool OnPlayerEnterDynamicArea( int playerid, int areaid )
{
if (areaid == zone)
{
std::string name = "dynamictimer";
Timers[playerid].emplace(name, SetTimer(1000, true, TestTimer, (void *)playerid));
}
return 1;
}
bool OnPlayerLeaveDynamicArea( int playerid, int areaid )
{
if (areaid == zone)
{
std::string name = "dynamictimer";
std::unordered_map<std::string, int>::const_iterator iter = Timers[playerid].find(name);
if (iter != Timers[playerid].end())
{
KillTimer(iter->second);
Timers[playerid].erase(iter);
}
}
return 1;
}
bool OnPlayerGiveDamageDynamicActor( int playerid, int actorid, float amount, int weaponid, int bodypart )
{
// your plugin's code
return 1;
}
bool OnDynamicActorStreamIn( int actorid, int forplayerid )
{
// your plugin's code
return 1;
}
bool OnDynamicActorStreamOut( int actorid, int forplayerid )
{
// your plugin's code
return 1;
}
bool Streamer_OnItemStreamIn( int type, int id )
{
// your plugin's code
return 1;
}
bool Streamer_OnItemStreamOut( int type, int id )
{
// your plugin's code
return 1;
}
bool Streamer_OnPluginError(const char error[])
{
// your plugin's code
return 1;
}