|
skamonkey@3293
|
1 |
#include <sourcemod> |
|
skamonkey@3293
|
2 |
#include <sdktools> |
|
skamonkey@3293
|
3 |
|
|
skamonkey@3293
|
4 |
// Coverage: |
|
skamonkey@3293
|
5 |
// GetEntPropArraySize - PropSend/PropData |
|
skamonkey@3293
|
6 |
|
|
skamonkey@3293
|
7 |
// GetEntPropString - PropData |
|
skamonkey@3293
|
8 |
|
|
skamonkey@3293
|
9 |
// GetEntProp - PropSend/PropData |
|
skamonkey@3293
|
10 |
// GetEntPropEnt - PropSend/PropData |
|
skamonkey@3293
|
11 |
|
|
skamonkey@3293
|
12 |
// SetEntProp - PropSend/PropData |
|
skamonkey@3293
|
13 |
|
|
skamonkey@3293
|
14 |
public OnPluginStart() |
|
skamonkey@3293
|
15 |
{ |
|
skamonkey@3293
|
16 |
RegConsoleCmd("sm_listammo", sm_listammo, "sm_listammo <send|data> [target] - Lists current ammo for self or specified player"); |
|
skamonkey@3293
|
17 |
RegConsoleCmd("sm_listweapons", sm_listweapons, "sm_listweapons <send|data> [target] - Lists current weapons for self or specified player"); |
|
skamonkey@3293
|
18 |
RegConsoleCmd("sm_setammo", sm_setammo, "sm_setammo <ammotype> <amount> <send|data> [target]"); |
|
skamonkey@3293
|
19 |
RegConsoleCmd("sm_teststrings", sm_teststrings); |
|
skamonkey@3293
|
20 |
} |
|
skamonkey@3293
|
21 |
|
|
skamonkey@3293
|
22 |
public Action:sm_listammo(client, argc) |
|
skamonkey@3293
|
23 |
{ |
|
skamonkey@3293
|
24 |
decl String:buffer[64]; |
|
skamonkey@3293
|
25 |
new target = client; |
|
skamonkey@3293
|
26 |
if (argc >= 2) |
|
skamonkey@3293
|
27 |
{ |
|
skamonkey@3293
|
28 |
GetCmdArg(2, buffer, sizeof(buffer)); |
|
skamonkey@3293
|
29 |
target = FindTarget(client, buffer, false, false); |
|
skamonkey@3293
|
30 |
if (target <= 0) |
|
skamonkey@3293
|
31 |
{ |
|
skamonkey@3293
|
32 |
ReplyToCommand(client, "Bad client"); |
|
skamonkey@3293
|
33 |
return Plugin_Handled; |
|
skamonkey@3293
|
34 |
} |
|
skamonkey@3293
|
35 |
} |
|
skamonkey@3293
|
36 |
else if (client == 0) |
|
skamonkey@3293
|
37 |
{ |
|
skamonkey@3293
|
38 |
ReplyToCommand(client, "Dillweed"); |
|
skamonkey@3293
|
39 |
return Plugin_Handled; |
|
skamonkey@3293
|
40 |
} |
|
skamonkey@3293
|
41 |
|
|
skamonkey@3293
|
42 |
new PropType:proptype = PropType:-1; |
|
skamonkey@3293
|
43 |
GetCmdArg(1, buffer, sizeof(buffer)); |
|
skamonkey@3293
|
44 |
if (!strcmp(buffer, "send")) |
|
skamonkey@3293
|
45 |
proptype = Prop_Send; |
|
skamonkey@3293
|
46 |
else if (!strcmp(buffer, "data")) |
|
skamonkey@3293
|
47 |
proptype = Prop_Data; |
|
skamonkey@3293
|
48 |
|
|
skamonkey@3293
|
49 |
new ammo; |
|
skamonkey@3293
|
50 |
new max = GetEntPropArraySize(target, proptype, "m_iAmmo"); |
|
skamonkey@3293
|
51 |
for (new i = 0; i < max; i++) |
|
skamonkey@3293
|
52 |
{ |
|
skamonkey@3293
|
53 |
if ((ammo = GetEntProp(target, proptype, "m_iAmmo", _, i)) > 0) |
|
skamonkey@3293
|
54 |
ReplyToCommand(client, "Slot %d, Ammo %d", i, ammo); |
|
skamonkey@3293
|
55 |
} |
|
skamonkey@3293
|
56 |
|
|
skamonkey@3293
|
57 |
return Plugin_Handled; |
|
skamonkey@3293
|
58 |
} |
|
skamonkey@3293
|
59 |
|
|
skamonkey@3293
|
60 |
public Action:sm_listweapons(client, argc) |
|
skamonkey@3293
|
61 |
{ |
|
skamonkey@3293
|
62 |
decl String:buffer[64]; |
|
skamonkey@3293
|
63 |
new target = client; |
|
skamonkey@3293
|
64 |
if (argc >= 2) |
|
skamonkey@3293
|
65 |
{ |
|
skamonkey@3293
|
66 |
GetCmdArg(2, buffer, sizeof(buffer)); |
|
skamonkey@3293
|
67 |
target = FindTarget(client, buffer, false, false); |
|
skamonkey@3293
|
68 |
if (target <= 0) |
|
skamonkey@3293
|
69 |
{ |
|
skamonkey@3293
|
70 |
ReplyToCommand(client, "Bad client"); |
|
skamonkey@3293
|
71 |
return Plugin_Handled; |
|
skamonkey@3293
|
72 |
} |
|
skamonkey@3293
|
73 |
} |
|
skamonkey@3293
|
74 |
else if (client == 0) |
|
skamonkey@3293
|
75 |
{ |
|
skamonkey@3293
|
76 |
ReplyToCommand(client, "Dillweed"); |
|
skamonkey@3293
|
77 |
return Plugin_Handled; |
|
skamonkey@3293
|
78 |
} |
|
skamonkey@3293
|
79 |
|
|
skamonkey@3293
|
80 |
new PropType:proptype = PropType:-1; |
|
skamonkey@3293
|
81 |
GetCmdArg(1, buffer, sizeof(buffer)); |
|
skamonkey@3293
|
82 |
if (!strcmp(buffer, "send")) |
|
skamonkey@3293
|
83 |
proptype = Prop_Send; |
|
skamonkey@3293
|
84 |
else if (!strcmp(buffer, "data")) |
|
skamonkey@3293
|
85 |
proptype = Prop_Data; |
|
skamonkey@3293
|
86 |
|
|
skamonkey@3293
|
87 |
new weapon, String:classname[64]; |
|
skamonkey@3293
|
88 |
new max = GetEntPropArraySize(target, proptype, "m_hMyWeapons"); |
|
skamonkey@3293
|
89 |
for (new i = 0; i < max; i++) |
|
skamonkey@3293
|
90 |
{ |
|
skamonkey@3293
|
91 |
if ((weapon = GetEntPropEnt(target, proptype, "m_hMyWeapons", i)) == -1) |
|
skamonkey@3293
|
92 |
continue; |
|
skamonkey@3293
|
93 |
|
|
skamonkey@3293
|
94 |
GetEdictClassname(weapon, classname, sizeof(classname)); |
|
skamonkey@3293
|
95 |
ReplyToCommand(client, "Slot %d - \"%s\"", i, classname); |
|
skamonkey@3293
|
96 |
} |
|
skamonkey@3293
|
97 |
|
|
skamonkey@3293
|
98 |
return Plugin_Handled; |
|
skamonkey@3293
|
99 |
} |
|
skamonkey@3293
|
100 |
|
|
skamonkey@3293
|
101 |
public Action:sm_setammo(client, argc) |
|
skamonkey@3293
|
102 |
{ |
|
skamonkey@3293
|
103 |
decl String:buffer[64]; |
|
skamonkey@3293
|
104 |
new target = client; |
|
skamonkey@3293
|
105 |
if (argc >= 4) |
|
skamonkey@3293
|
106 |
{ |
|
skamonkey@3293
|
107 |
GetCmdArg(4, buffer, sizeof(buffer)); |
|
skamonkey@3293
|
108 |
target = FindTarget(client, buffer, false, false); |
|
skamonkey@3293
|
109 |
if (target <= 0) |
|
skamonkey@3293
|
110 |
{ |
|
skamonkey@3293
|
111 |
ReplyToCommand(client, "Bad client"); |
|
skamonkey@3293
|
112 |
return Plugin_Handled; |
|
skamonkey@3293
|
113 |
} |
|
skamonkey@3293
|
114 |
} |
|
skamonkey@3293
|
115 |
else if (client == 0) |
|
skamonkey@3293
|
116 |
{ |
|
skamonkey@3293
|
117 |
ReplyToCommand(client, "Dillweed"); |
|
skamonkey@3293
|
118 |
return Plugin_Handled; |
|
skamonkey@3293
|
119 |
} |
|
skamonkey@3293
|
120 |
|
|
skamonkey@3293
|
121 |
new PropType:proptype = PropType:-1; |
|
skamonkey@3293
|
122 |
GetCmdArg(3, buffer, sizeof(buffer)); |
|
skamonkey@3293
|
123 |
if (!strcmp(buffer, "send")) |
|
skamonkey@3293
|
124 |
proptype = Prop_Send; |
|
skamonkey@3293
|
125 |
else if (!strcmp(buffer, "data")) |
|
skamonkey@3293
|
126 |
proptype = Prop_Data; |
|
skamonkey@3293
|
127 |
|
|
skamonkey@3293
|
128 |
new max = GetEntPropArraySize(target, proptype, "m_iAmmo"); |
|
skamonkey@3293
|
129 |
|
|
skamonkey@3293
|
130 |
GetCmdArg(1, buffer, sizeof(buffer)); |
|
skamonkey@3293
|
131 |
new ammotype = StringToInt(buffer); |
|
skamonkey@3293
|
132 |
|
|
skamonkey@3293
|
133 |
if (ammotype >= max) |
|
skamonkey@3293
|
134 |
{ |
|
skamonkey@3293
|
135 |
ReplyToCommand(client, "Ammotype out of bounds"); |
|
skamonkey@3293
|
136 |
return Plugin_Handled; |
|
skamonkey@3293
|
137 |
} |
|
skamonkey@3293
|
138 |
|
|
skamonkey@3293
|
139 |
GetCmdArg(2, buffer, sizeof(buffer)); |
|
skamonkey@3293
|
140 |
new amount = StringToInt(buffer); |
|
skamonkey@3293
|
141 |
|
|
skamonkey@3293
|
142 |
SetEntProp(target, proptype, "m_iAmmo", amount, _, ammotype); |
|
skamonkey@3293
|
143 |
|
|
skamonkey@3293
|
144 |
return Plugin_Handled; |
|
skamonkey@3293
|
145 |
} |
|
skamonkey@3293
|
146 |
|
|
skamonkey@3293
|
147 |
public Action:sm_teststrings(client, argc) |
|
skamonkey@3293
|
148 |
{ |
|
skamonkey@3293
|
149 |
new gpe = CreateEntityByName("game_player_equip"); |
|
skamonkey@3293
|
150 |
DispatchKeyValue(gpe, "tf_weapon_rocketlauncher", "2"); |
|
skamonkey@3293
|
151 |
DispatchKeyValue(gpe, "tf_weapon_pistol", "1"); |
|
skamonkey@3293
|
152 |
|
|
skamonkey@3293
|
153 |
decl String:value[64]; |
|
skamonkey@3293
|
154 |
for (new i = 0; i < 2; i++) |
|
skamonkey@3293
|
155 |
{ |
|
skamonkey@3293
|
156 |
GetEntPropString(gpe, Prop_Data, "m_weaponNames", value, sizeof(value), i); |
|
skamonkey@3293
|
157 |
ReplyToCommand(client, "At %d, I see a \"%s\"", i, value); |
|
skamonkey@3293
|
158 |
} |
|
skamonkey@3293
|
159 |
|
|
skamonkey@3293
|
160 |
AcceptEntityInput(gpe, "Kill"); |
|
skamonkey@3293
|
161 |
|
|
skamonkey@3293
|
162 |
return Plugin_Handled; |
|
skamonkey@3293
|
163 |
} |