Цитата(miRror @ 24.12.2013, 15:41)

Держи
Код:
#include <amxmodx>
#include <engine>
#include <vault>
#include <fun>
new knife_model[33]
new CVAR_HIGHSPEED
new CVAR_HEALTH_ADD
new CVAR_HEALTH_MAX
new const lang[][] =
{
"<< !!Глотая таблетки, регеню ХП!! >>",
"[Выбор ножа] Для выбора другого ножа возьмите в руки сам нож.",
"[Выбор ножа] Пиши /knife что бы выбрать модель ножа"
}
new const vModels[][] =
{
"models/v_toporik.mdl",
"models/v_knife.mdl"
}
new const pModels[][] =
{
"models/p_knife.mdl",
"models/p_knife.mdl"
}
new const knifes[][][] =
{
{"Топорик", "Быстрый бег"}, // knife_model[id] = 0
{"Мед.Нож", "Регенерация ХП"} // knife_model[id] = 1
}
public plugin_init()
{
register_plugin("Knife Mod", "1.1", "Bloodnbly & miRror")
register_event("CurWeapon","CurWeapon","be","1=1")
register_clcmd("drop", "display_menu")
CVAR_HIGHSPEED = register_cvar("km_highspeed","350") // максимальная скорость у топорика
CVAR_HEALTH_ADD = register_cvar("km_addhealth", "3") // прибавление хп
CVAR_HEALTH_MAX = register_cvar("km_maxhealth", "104") // максимальное кол-во хп
set_task(480.0, "kmodmsg", 0, _, _, "b") // реклама
}
public plugin_precache()
{
for(new i=0;i<sizeof(vModels);i++)
precache_model(vModels[i])
for(new i=0;i<sizeof(pModels);i++)
precache_model(pModels[i])
}
public client_disconnect(id)
if(task_exists(id))
remove_task(id)
public client_authorized(id)
LoadData(id)
public kmodmsg()
client_print(0,print_chat,lang[2])
public display_menu(id)
{
new FormatItem[64], numclick[10];
new i_Menu = menu_create("\rМеню Ножей\w", "menu_handler")
for(new i=0;i<sizeof(knifes);i++)
{
formatex(FormatItem, 63, "%s \y(%s)\w", knifes[i][0], knifes[i][1])
num_to_str(i, numclick, 9);
menu_additem(i_Menu, FormatItem, numclick, 0)
}
menu_setprop(i_Menu,MPROP_EXITNAME,"Выход")
menu_setprop(i_Menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, i_Menu, 0)
return PLUGIN_HANDLED
}
public menu_handler(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new i_Key = str_to_num(s_Data)
new count = sizeof(knifes)
if(i_Key < count)
{
knife_model[id] = i_Key
SaveData(id)
SetKnife(id, i_Key)
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public SetKnife(id , Knife)
{
new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo)
if ( Weapon != CSW_KNIFE )
return PLUGIN_HANDLED
entity_set_string(id, EV_SZ_viewmodel, vModels[Knife])
entity_set_string(id, EV_SZ_weaponmodel, pModels[Knife])
return PLUGIN_HANDLED;
}
public CurWeapon(id)
{
new Weapon = read_data(2)
SetKnife(id, knife_model[id])
if(knife_model[id] == 1 && !task_exists(id) && Weapon == CSW_KNIFE)
set_task(4.0 , "task_healing",id,_,_,"b")
else if(task_exists(id))
remove_task(id)
if(Weapon != CSW_KNIFE)
return PLUGIN_CONTINUE
new Float:Speed
if(knife_model[id] == 0)
Speed = get_pcvar_float(CVAR_HIGHSPEED)
else
Speed = 250.0
set_user_maxspeed(id, Speed)
return PLUGIN_HANDLED
}
public task_healing(id)
{
new addhealth = get_pcvar_num(CVAR_HEALTH_ADD)
new maxhealth = get_pcvar_num(CVAR_HEALTH_MAX)
new health = get_user_health(id)
new newhealth = health + addhealth
if(newhealth > maxhealth && health != maxhealth)
newhealth = maxhealth
if (is_user_alive(id) && (newhealth <= maxhealth) && (newhealth > health))
{
set_user_health(id, newhealth)
set_hudmessage(0, 255, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.1, 4)
show_hudmessage(id,lang[0])
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()
}
}
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)
}
L 12/28/2013 - 18:00:49: [AMXX] Run time error 4: index out of bounds
L 12/28/2013 - 18:00:49: [AMXX] [0] text3Ckgnu.sma::SetKnife (line 116)
L 12/28/2013 - 18:00:49: [AMXX] [1] text3Ckgnu.sma::CurWeapon (line 125)
L 12/28/2013 - 18:01:28: [AMXX] Displaying debug trace (plugin "knife_mod_edit.amxx")
L 12/28/2013 - 18:01:28: [AMXX] Run time error 4: index out of bounds
L 12/28/2013 - 18:01:28: [AMXX] [0] text3Ckgnu.sma::SetKnife (line 116)
L 12/28/2013 - 18:01:28: [AMXX] [1] text3Ckgnu.sma::CurWeapon (line 125)
L 12/28/2013 - 18:02:11: [AMXX] Displaying debug trace (plugin "knife_mod_edit.amxx")
L 12/28/2013 - 18:02:11: [AMXX] Run time error 4: index out of bounds
L 12/28/2013 - 18:02:11: [AMXX] [0] text3Ckgnu.sma::SetKnife (line 116)
L 12/28/2013 - 18:02:11: [AMXX] [1] text3Ckgnu.sma::CurWeapon (line 125)
L 12/28/2013 - 18:02:42: [AMXX] Displaying debug trace (plugin "knife_mod_edit.amxx")
L 12/28/2013 - 18:02:42: [AMXX] Run time error 4: index out of bounds
L 12/28/2013 - 18:02:42: [AMXX] [0] text3Ckgnu.sma::SetKnife (line 116)
L 12/28/2013 - 18:02:42: [AMXX] [1] text3Ckgnu.sma::CurWeapon (line 125)
Вот такое пишет. И так все повторяется и повторяется.