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.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362. | #include <amxmodx>
#include <amxmisc>
#include <engine>
#include <vault>
#include <fun>
#define PLUGIN "Knife Mod"
#define VERSION "1.0"
#define AUTHOR "spunko"
#define TASK_INTERVAL 4.0
#define MAX_HEALTH 255
new knife_model[33]
new g_Menu
// g_Menu2
new g_Menu3
new CVAR_HIGHSPEED
new CVAR_LOWSPEED
new CVAR_LOWGRAV
new CVAR_NORMGRAV
new CVAR_HEALTH_ADD
new CVAR_HEALTH_MAX
new CVAR_DAMAGE
new CVAR_NORMSPEED
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event( "Damage", "event_damage", "be" )
register_event("CurWeapon","CurWeapon","be","1=1")
g_Menu = register_menuid("knifemenu")
//g_Menu2 = register_menuid("rodzaj")
g_Menu3 = register_menuid("vipknifemenu")
register_menucmd(g_Menu, 1023, "knifemenu")
//register_menucmd(g_Menu2, 1023, "rodzaj")
register_menucmd(g_Menu3, 1023, "vipknifemenu")
register_clcmd("say /knife", "wybierz")
CVAR_HIGHSPEED = register_cvar("km_highspeed","340")
CVAR_LOWSPEED = register_cvar("km_lowspeed","170")
CVAR_NORMSPEED = register_cvar("km_normspeed","300")
CVAR_HEALTH_ADD = register_cvar("km_addhealth", "3")
CVAR_HEALTH_MAX = register_cvar("km_maxhealth", "75")
CVAR_DAMAGE = register_cvar("km_damage", "2.0")
CVAR_LOWGRAV = register_cvar("km_lowgravity" , "400")
CVAR_NORMGRAV = get_cvar_pointer("sv_gravity")
//set_task(480.0, "kmodmsg", 685200, _, _, "b")
}
public plugin_precache() {
precache_model("models/knife-mod/v_machete.mdl")
precache_model("models/knife-mod/p_machete.mdl")
precache_model("models/knife-mod/v_butcher.mdl")
precache_model("models/knife-mod/p_butcher.mdl")
precache_model("models/knife-mod/v_bak.mdl")
precache_model("models/knife-mod/p_bak.mdl")
precache_model("models/knife-mod/v_pocket.mdl")
precache_model("models/knife-mod/p_pocket.mdl")
precache_model("models/knife-mod/v_sztylet.mdl")
precache_model("models/knife-mod/p_sztylet.mdl")
precache_model("models/knife-mod/v_boski.mdl")
precache_model("models/knife-mod/p_boski.mdl")
precache_model("models/knife-mod/v_miecz.mdl")
precache_model("models/knife-mod/p_miecz.mdl")
precache_model("models/knife-mod/v_lecz.mdl")
precache_model("models/knife-mod/p_lecz.mdl")
}
public wybierz(id)
{
new menu = menu_create("\yMenu Nozy", "wybierz_handler");
new cb = menu_makecallback("cb_display_knife");
menu_additem(menu, "Zwykle Knifes", "", 0, cb);
menu_additem(menu, "VIP Knifes", "", 0, cb);
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_display(id, menu);
}
public wybierz_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
switch(item)
{
case 0: display_knife(id)
case 1: vipknife(id)
}
return PLUGIN_CONTINUE;
}
public cb_display_knife(id, menu, item)
{
if(item == 1 && !(get_user_flags(id) & ADMIN_LEVEL_H))
return ITEM_DISABLED;
return ITEM_ENABLED;
}
public display_knife(id) {
new menuBody = menu_create("Wybierz Noz", "knifemenu")
menu_additem(menuBody, "Maczeta \y(Wiecej Damage\Mniejsza Szybkosc)", "1", 0)
menu_additem(menuBody, "Cichy Noz \y(Ciche Chodzenie)", "2", 0)
menu_additem(menuBody, "Maly Noz \y(Wieksza Szybkosc)", "3", 0)
menu_additem(menuBody, "Lekki Noz \y(Mniejsza Grawitacja)", "4", 0)
menu_additem(menuBody, "Leczniczy Noz \y(Regeneracja HP)", "5", 0)
menu_setprop(menuBody, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menuBody, 0)
menu_display(id, menuBody)
}
public knifemenu(id, menu, key) {
switch(key)
{
case 0: SetKnife(id , 4)
case 1: SetKnife(id , 2)
case 2: SetKnife(id , 3)
case 3: SetKnife(id , 1)
case 4: SetKnife(id , 7)
default: return PLUGIN_HANDLED
}
SaveData(id)
return PLUGIN_HANDLED
}
public vipknife(id) {
new menuBody = menu_create("Wybierz Noz", "vipknifemenu")
menu_additem(menuBody, "\r[VIP]\w Ostry Sztylet \y(Speed + Grawitacja)", "1", ADMIN_LEVEL_H)
menu_additem(menuBody, "\r[VIP]\w Boski Noz \y(Ciche Chodzenie + Reg. HP)", "2", ADMIN_LEVEL_H)
menu_additem(menuBody, "\r[VIP]\w Zabojczy Miecz \y(Wieksze Damage)", "3", ADMIN_LEVEL_H)
menu_setprop(menuBody, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menuBody, 0)
menu_display(id, menuBody)
}
public vipknifemenu(id, menu, key) {
switch(key)
{
case 0: SetKnife(id , 5)
case 1: SetKnife(id , 6)
case 2: SetKnife(id , 0)
default: return PLUGIN_HANDLED
}
SaveData(id)
return PLUGIN_HANDLED
}
public SetKnife(id , Knife) {
knife_model[id] = Knife
new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo)
if ( Weapon != CSW_KNIFE )
return PLUGIN_HANDLED
new vModel[56],pModel[56]
switch(Knife)
{
case 0: {
format(vModel,55,"models/knife-mod/v_miecz.mdl")
format(pModel,55,"models/knife-mod/p_miecz.mdl")
}
case 1: {
format(vModel,55,"models/knife-mod/v_butcher.mdl")
format(pModel,55,"models/knife-mod/p_butcher.mdl")
}
case 2: {
format(vModel,55,"models/knife-mod/v_bak.mdl")
format(pModel,55,"models/knife-mod/p_bak.mdl")
}
case 3: {
format(vModel,55,"models/knife-mod/v_pocket.mdl")
format(pModel,55,"models/knife-mod/p_pocket.mdl")
}
case 4: {
format(vModel,55,"models/knife-mod/v_machete.mdl")
format(pModel,55,"models/knife-mod/p_machete.mdl")
}
case 5: {
format(vModel,55,"models/knife-mod/v_sztylet.mdl")
format(pModel,55,"models/knife-mod/p_sztylet.mdl")
}
case 6: {
format(vModel,55,"models/knife-mod/v_boski.mdl")
format(pModel,55,"models/knife-mod/p_boski.mdl")
}
case 7: {
format(vModel,55,"models/knife-mod/v_lecz.mdl")
format(pModel,55,"models/knife-mod/p_lecz.mdl")
}
}
entity_set_string(id, EV_SZ_viewmodel, vModel)
entity_set_string(id, EV_SZ_weaponmodel, pModel)
return PLUGIN_HANDLED;
}
public event_damage( id ) {
new victim_id = id;
if( !is_user_connected( victim_id ) ) return PLUGIN_CONTINUE
new dmg_take = read_data( 2 );
new dmgtype = read_data( 3 );
new Float:multiplier = get_pcvar_float(CVAR_DAMAGE);
new Float:damage = dmg_take * multiplier;
new health = get_user_health( victim_id );
new iWeapID, attacker_id = get_user_attacker( victim_id, iWeapID );
if( !is_user_connected( attacker_id ) || !is_user_alive( victim_id ) ) {
return PLUGIN_HANDLED
}
if( iWeapID == CSW_KNIFE && knife_model[attacker_id] == 4 || iWeapID == CSW_KNIFE && knife_model[attacker_id] == 0 ) {
if( floatround(damage) >= health ) {
if( victim_id == attacker_id ) {
return PLUGIN_CONTINUE
}else{
log_kill( attacker_id, victim_id, "knife", 0 );
}
return PLUGIN_CONTINUE
}else {
if( victim_id == attacker_id ) return PLUGIN_CONTINUE
fakedamage( victim_id, "weapon_knife", damage, dmgtype );
}
}
return PLUGIN_CONTINUE
}
public CurWeapon(id)
{
new Weapon = read_data(2)
// Set Knife Model
SetKnife(id, knife_model[id])
// Task Options
if(knife_model[id] == 7 && !task_exists(id) && Weapon == CSW_KNIFE || knife_model[id] == 6 && !task_exists(id) && Weapon == CSW_KNIFE)
set_task(TASK_INTERVAL , "task_healing",id,_,_,"b")
else if(task_exists(id))
remove_task(id)
// Abilities
set_user_footsteps(id , ( (knife_model[id] == 2 && Weapon == CSW_KNIFE || knife_model[id] == 6 && Weapon == CSW_KNIFE) ? 1 : 0) )
new Float:Gravity = ((knife_model[id] == 1 && Weapon == CSW_KNIFE || knife_model[id] == 5 && Weapon == CSW_KNIFE)? get_pcvar_float(CVAR_LOWGRAV) : get_pcvar_float(CVAR_NORMGRAV)) / 800.0
set_user_gravity(id , Gravity)
// Speed
new Float:Speed
if(Weapon != CSW_KNIFE)
return PLUGIN_CONTINUE
else if(knife_model[id] == 0 || knife_model[id] == 1 || knife_model[id] == 2 || knife_model[id] == 6 || knife_model[id] == 7)
Speed = get_pcvar_float(CVAR_NORMSPEED)
else if(knife_model[id] == 3 || knife_model[id] == 5)
Speed = get_pcvar_float(CVAR_HIGHSPEED)
else if(knife_model[id] == 4)
Speed = get_pcvar_float(CVAR_LOWSPEED)
set_user_maxspeed(id, Speed)
return PLUGIN_HANDLED
}
stock log_kill(killer, victim, weapon[],headshot) {
user_silentkill( victim );
message_begin( MSG_ALL, get_user_msgid( "DeathMsg" ), {0,0,0}, 0 );
write_byte( killer );
write_byte( victim );
write_byte( headshot );
write_string( weapon );
message_end();
new kfrags = get_user_frags( killer );
set_user_frags( killer, kfrags++ );
new vfrags = get_user_frags( victim );
set_user_frags( victim, vfrags++ );
return PLUGIN_CONTINUE
}
public task_healing(id) {
new addhealth = get_pcvar_num(CVAR_HEALTH_ADD)
if (!addhealth)
return
new maxhealth = get_pcvar_num(CVAR_HEALTH_MAX)
if (maxhealth > MAX_HEALTH) {
set_pcvar_num(CVAR_HEALTH_MAX, MAX_HEALTH)
maxhealth = MAX_HEALTH
}
new health = get_user_health(id)
if (is_user_alive(id) && (health < maxhealth)) {
set_user_health(id, health + addhealth)
set_hudmessage(0, 255, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.1, 4)
show_hudmessage(id,"<< !!Leczenie: +3HP!! >>")
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(0)
write_byte(200)
write_byte(0)
write_byte(75)
message_end()
}
else {
if (is_user_alive(id) && (health > maxhealth))
remove_task(id)
}
}
public client_disconnect(id) {
if(task_exists(id)) remove_task(id)
}
public client_authorized(id)
{
LoadData(id)
}
SaveData(id) {
new authid[32]
get_user_authid(id, authid, 31)
new vaultkey[64]
new vaultdata[64]
format(vaultkey, 63, "KMOD_%s", authid)
format(vaultdata, 63, "%d", knife_model[id])
set_vaultdata(vaultkey, vaultdata)
}
LoadData(id) {
new authid[32]
get_user_authid(id,authid,31)
new vaultkey[64], vaultdata[64]
format(vaultkey, 63, "KMOD_%s", authid)
get_vaultdata(vaultkey, vaultdata, 63)
knife_model[id] = str_to_num(vaultdata)
} |