Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Ножи по уровням !

Статус пользователя default67
сообщение 12.11.2015, 16:31
Сообщение #1


Стаж: 11 лет

Сообщений: 121
Благодарностей: 11
Полезность: < 0

Всем Привет.
Подскажите пожалуйста, как правильно запретить использовать нож, для игроков у которых нет определенного уровня, плагин army_ranks, изменил звания, на уровни/
Инклуд с нативами от плагина арму_ранкс подключаю к плагину с ножами, и делаю проверку на каждый нож через: get_user_lvl(id) < 2), т.е если игрок не достиг 2-го уровня, то ему нож не будет доступен, но в моем случае они все доступны, хоть проверка и стоит, но после того как сделать всё это, появилась новая проблема, из меню с ножами пропал последний пункт Админский нож, и кнопка Выход, я подумал что это из за размера массива, и из 600 изменил на 1024, но толку ноль.
НОЖИ:
Код:
// [DR] Knifes By BiZoN
// Спасибо Eriurias за качественную регенерацию
// Плагин менее затратен в плане нагрузки, в отличие от своих аналогов, использующих CurWeapon вместо Ham_Item_deploy
// Снята затрата двойного прыжка в плане использования события прыжка, а не форвардов, вызывающихся по десятку раз каждую секунду
// Способности работают только тогда, когда в руках нож
// Ну и многое другое, что вы можете увидеть во время работы плагина
// Огромная просьба: если найдете баги или недочеты, пишите, пожалуйста, мне в скайп: vitya12345629 или в ВК: vk.com/6u3oh
// [DR] Knifes By BiZoN

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <fun>
#include <ranks>

#define PLUGIN "[DR] Knifes"
#define VERSION "1.0"
#define AUTHOR "BiZoN"

#define ADMIN_FLAG ADMIN_BAN // Флаг Админа

#define REGENERATION_DELAY 2.0 // Время до регенерации
#define REGENERATION_STEP 1 // Насколько увеличивать HP
#define REGENERATION_MAX 100 // Максимальное кол-во HP

new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MEN
U_KEY_8|MENU_KEY_0
new szTwoJump[33]
new szTwoJumpNum[33]
new szDoTwoJump[33]
new KnifeId[33]

public plugin_precache()
{
precache_model("models/v_knife.mdl")
precache_model("models/knifes/v_ferrane.mdl")
precache_model("models/knifes/v_terari.mdl")
precache_model("models/knifes/v_ibuki.mdl")
precache_model("models/knifes/v_katana.mdl")
precache_model("models/knifes/v_blink.mdl")

precache_model("models/p_knife.mdl")
precache_model("models/knifes/p_ferrane.mdl")
precache_model("models/knifes/p_terari.mdl")
precache_model("models/knifes/p_ibuki.mdl")
precache_model("models/knifes/p_katana.mdl")
precache_model("models/knifes/p_blink.mdl")

precache_sound("knifes/health.wav")
precache_sound("knifes/blink_hitwall1.wav")
precache_sound("knifes/katana_hitwall1.wav")
precache_sound("knifes/ibuki_hitwall1.wav")
precache_sound("knifes/ibuki_slash1.wav")
precache_sound("knifes/ibuki_deploy1.wav")
precache_sound("knifes/terari_hitwall1.wav")
precache_sound("knifes/ferrane_hitwall1.wav")
}

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_menu("Menu 1", keys, "menu_knife")
register_clcmd("say /knife", "knife_menu")
register_clcmd("say_team /knife", "knife_menu")
register_clcmd("knife", "knife_menu")
register_clcmd("knifes", "knife_menu")
RegisterHam(Ham_Item_Deploy, "weapon_knife", "SetKnife", 1)
register_event("CurWeapon", "SetKnife" ,"be" ,"1=1")
RegisterHam(Ham_Item_Holster, "weapon_knife", "KnifeSet", 1)
RegisterHam(Ham_TakeDamage, "player", "EventDamage", 0)
RegisterHam(Ham_TakeDamage, "player", "TakeDamage", .Post = true)
RegisterHam(Ham_Killed, "player", "KilledPost", .Post = true)
RegisterHam(Ham_Player_Jump, "player", "PreTwoJump")
register_forward(FM_EmitSound, "EmitSound")
}

public client_connect(id)
{
KnifeId[id] = 1
}

public client_disconnect(nClientIndex)
{
remove_task(nClientIndex)
}

public knife_menu(id)
{
static menu[1024], iLen
iLen = 0
iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\r[\yKnifeMenu\r] \wВыберите нож^n^n")

if(!is_user_connected(id))
return PLUGIN_CONTINUE

if(KnifeId[id] == 1)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \dСтандартный \d(\r1 LVL\d)^n")
keys &= ~MENU_KEY_1
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \wСтандартный \d(\r1 LVL\d)^n")
keys |= MENU_KEY_1
}

if(get_user_exp(id) < 21)
{
if(KnifeId[id] == 2)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \dКатана \d(\rДвойной прыжок\d) \d(\r22 LVL\d)^n")
keys &= ~MENU_KEY_2
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \wКатана \d(\rДвойной прыжок\d) \d(\r22 LVL\d)^n")
keys |= MENU_KEY_2
}
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \dКатана \d(\rДвойной прыжок\d) \d(\r22 LVL\d)^n")
keys &= ~MENU_KEY_2
}

if(get_user_lvl(id) < 26)
{
if(KnifeId[id] == 3)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \dСильный \d(\rБольшой урон\d) \d(\r27 LVL\d)^n")
keys &= ~MENU_KEY_3
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \wСильный \d(\rБольшой урон\d) \d(\r27 LVL\d)^n")
keys |= MENU_KEY_3
}
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \dСильный \d(\rБольшой урон\d) \d(\r27 LVL\d)^n")
keys &= ~MENU_KEY_3
}

if(get_user_lvl(id) < 17)
{
if(KnifeId[id] == 4)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \dСтронг \d(\rСкорость\d) \d(\r18 LVL\d)^n")
keys &= ~MENU_KEY_4
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \wСтронг \d(\rСкорость\d) \d(\r18 LVL\d)^n")
keys |= MENU_KEY_4
}
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \dСтронг \d(\rСкорость\d) \d(\r18 LVL\d)^n")
keys &= ~MENU_KEY_4
}

if(get_user_lvl(id) < 11)
{
if(KnifeId[id] == 5)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \dАптечка \d(\rВосстановление здоровья\d) \d(\r12 LVL\d)^n")
keys &= ~MENU_KEY_5
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \wАптечка \d(\rВосстановление здоровья\d) \d(\r12 LVL\d)^n")
keys |= MENU_KEY_5
}
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \dАптечка \d(\rВосстановление здоровья\d) \d(\r12 LVL\d)^n")
keys &= ~MENU_KEY_5
}

if(get_user_lvl(id) < 14)
{
if(KnifeId[id] == 6)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r6. \dКомбат \d(\rГравитация\d) \d(\r15 LVL\d)^n")
keys &= ~MENU_KEY_6
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r6. \wКомбат \d(\rГравитация\d) \d(\r15 LVL\d)^n")
keys |= MENU_KEY_6
}
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r6. \dКомбат \d(\rГравитация\d) \d(\r15 LVL\d)^n")
keys &= ~MENU_KEY_6
}

if(KnifeId[id] == 7)
{
if(get_user_lvl(id) < 24)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r7. \dДарк \d(\rНевидимость\d) \d(\r25 LVL\d)^n^n")
keys &= ~MENU_KEY_7
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r7. \wДарк \d(\rНевидимость\d) \d(\r25 LVL\d)^n^n")
keys |= MENU_KEY_7
}
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r7. \dДарк \d(\rНевидимость\d) \d(\r25 LVL\d)^n^n")
keys &= ~MENU_KEY_7
}

if(get_user_flags(id) & ADMIN_FLAG)
{
if(KnifeId[id] == 0)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r8. \dАдминский нож \d(\rВсё включено\d)^n^n")
keys &= ~MENU_KEY_8
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r8. \wАдминский нож \d(\rВсё включено\d)^n^n")
keys |= MENU_KEY_8
}
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r8. \dАдминский нож \d(\rВсё включено\d)^n^n")
keys &= ~MENU_KEY_8
}
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r0. \wВыход^n")
keys |= MENU_KEY_0

show_menu(id, keys, menu, -1, "Menu 1")
return PLUGIN_HANDLED
}

public menu_knife(id, key)
{
switch(key)
{
case 0:
{
KnifeId[id] = 1
SetKnife(id)
}
case 1:
{
KnifeId[id] = 2
SetKnife(id)
}
case 2:
{
KnifeId[id] = 3
SetKnife(id)
}
case 3:
{
KnifeId[id] = 4
SetKnife(id)
}
case 4:
{
KnifeId[id] = 5
SetKnife(id)
}
case 5:
{
KnifeId[id] = 6
SetKnife(id)
}
case 6:
{
KnifeId[id] = 7
SetKnife(id)
}
case 7:
{
if(get_user_flags(id) & ADMIN_FLAG)
{
KnifeId[id] = 0
SetKnife(id)
}
}
}
return PLUGIN_HANDLED
}

public SetKnife(id)
{
if(!is_user_connected(id))
return PLUGIN_CONTINUE

if(KnifeId[id] == 1)
{
set_pev(id, pev_viewmodel2, "models/v_knife.mdl")
set_pev(id, pev_weaponmodel2, "models/p_knife.mdl")
set_pev(id, pev_maxspeed, 250.0)
set_pev(id, pev_gravity, 1.0)
szTwoJump[id] = false
}
if(KnifeId[id] == 2)
{
set_pev(id, pev_viewmodel2, "models/knifes/v_katana.mdl")
set_pev(id, pev_weaponmodel2, "models/knifes/p_katana.mdl")
set_pev(id, pev_maxspeed, 250.0)
set_pev(id, pev_gravity, 1.0)
szTwoJump[id] = true
}
if(KnifeId[id] == 3)
{
set_pev(id, pev_viewmodel2, "models/knifes/v_ibuki.mdl")
set_pev(id, pev_weaponmodel2, "models/knifes/p_ibuki.mdl")
set_pev(id, pev_maxspeed, 220.0)
set_pev(id, pev_gravity, 1.0)
szTwoJump[id] = false
}
if(KnifeId[id] == 4)
{
set_pev(id, pev_viewmodel2, "models/knifes/v_terari.mdl")
set_pev(id, pev_weaponmodel2, "models/knifes/p_terari.mdl")
set_pev(id, pev_maxspeed, 320.0)
set_pev(id, pev_gravity, 1.0)
szTwoJump[id] = false
}
if(KnifeId[id] == 5)
{
set_pev(id, pev_viewmodel2, "models/v_knife.mdl")
set_pev(id, pev_weaponmodel2, "models/p_knife.mdl")
set_pev(id, pev_maxspeed, 250.0)
set_pev(id, pev_gravity, 1.0)
szTwoJump[id] = false
}
if(KnifeId[id] == 6)
{
set_pev(id, pev_viewmodel2, "models/knifes/v_ferrane.mdl")
set_pev(id, pev_weaponmodel2, "models/knifes/p_ferrane.mdl")
set_pev(id, pev_maxspeed, 250.0)
set_pev(id, pev_gravity, 0.6)
szTwoJump[id] = false
}
if(KnifeId[id] == 7)
{
set_pev(id, pev_viewmodel2, "models/v_knife.mdl")
set_pev(id, pev_weaponmodel2, "models/p_knife.mdl")
set_pev(id, pev_maxspeed, 250.0)
set_pev(id, pev_gravity, 1.0)
set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,20)
szTwoJump[id] = false
}
if(KnifeId[id] == 0)
{
set_pev(id, pev_viewmodel2, "models/knifes/v_blink.mdl")
set_pev(id, pev_weaponmodel2, "models/knifes/p_blink.mdl")
set_pev(id, pev_maxspeed, 320.0)
set_pev(id, pev_gravity, 0.6)
szTwoJump[id] = true
}
return PLUGIN_HANDLED
}

public KnifeSet(ent)
{
set_pev(get_pdata_cbase(ent, 41, 4), pev_gravity, 1.0)
}

public TakeDamage(nClientIndex)
{
if(is_user_alive(nClientIndex))
{
if (!task_exists(nClientIndex))
set_task(REGENERATION_DELAY, "StartRegeneration" , nClientIndex, _, _, "b")
}
}

public KilledPost(nClientIndex)
{
remove_task(nClientIndex)
}

public StartRegeneration(nClientIndex)
{
static Float:g_iHealthPoint; pev(nClientIndex, pev_health, g_iHealthPoint);

if (g_iHealthPoint >= REGENERATION_MAX)
{
remove_task(nClientIndex);
return PLUGIN_HANDLED;
}

if(get_user_weapon(nClientIndex) == CSW_KNIFE && (KnifeId[nClientIndex] == 0 || KnifeId[nClientIndex] == 5))
{
set_pev(nClientIndex, pev_health, g_iHealthPoint + REGENERATION_STEP);
}
return PLUGIN_CONTINUE;
}

public EventDamage(victim, inflicator, attacker, Float:damage)
{
if(!is_user_connected(attacker))
return PLUGIN_HANDLED;

if(victim == attacker || !victim)
return PLUGIN_HANDLED;

if(get_user_team(attacker) != get_user_team (victim) && attacker != victim && get_user_weapon(attacker) == CSW_KNIFE && (KnifeId[attacker] == 0 || KnifeId[attacker] == 2))
SetHamParamFloat(4, damage * 2.0)
return PLUGIN_HANDLED;
}

public PreTwoJump(id)
{
if(szTwoJump[id] && get_user_weapon(id) == CSW_KNIFE)
{
new szButton = pev(id, pev_button)
new szOldButton = pev(id, pev_oldbuttons)

if((szButton & IN_JUMP) && !(pev(id, pev_flags) & FL_ONGROUND) && !(szOldButton & IN_JUMP))
{
if(szTwoJumpNum[id] < 1)
{
szDoTwoJump[id] = true
szTwoJumpNum[id]++

PostTwoJump(id)

return PLUGIN_CONTINUE
}
}
if((szButton & IN_JUMP) && (pev(id, pev_flags) & FL_ONGROUND))
{
szTwoJumpNum[id] = 0
}
}
return PLUGIN_CONTINUE
}

public PostTwoJump(id)
{
if(szTwoJump[id])
{
if(!is_user_alive(id))
return PLUGIN_CONTINUE

if(szDoTwoJump[id])
{
new Float:szVelocity[3]
pev(id, pev_velocity, szVelocity)

szVelocity[2] = random_float(295.0,305.0)
set_pev(id, pev_velocity, szVelocity)

szDoTwoJump[id] = false

return PLUGIN_CONTINUE
}
}
return PLUGIN_CONTINUE
}

public EmitSound(id, channel, const sound[])
{
if(equal(sound, "weapons/knife_hitwall1.wav"))
{
if(KnifeId[id] == 0)
{
emit_sound(id, channel, "knifes/blink_hitwall1.wav", 1.0, 1.0, 0, 100)
return FMRES_SUPERCEDE
}
else if(KnifeId[id] == 1)
{
emit_sound(id, channel, "knifes/katana_hitwall1.wav", 1.0, 1.0, 0, 100)
return FMRES_SUPERCEDE
}
else if(KnifeId[id] == 2)
{
emit_sound(id, channel, "knifes/ibuki_hitwall1.wav", 1.0, 1.0, 0, 100)
return FMRES_SUPERCEDE
}
else if(KnifeId[id] == 3)
{
emit_sound(id, channel, "knifes/terari_hitwall1.wav", 1.0, 1.0, 0, 100)
return FMRES_SUPERCEDE
}
else if(KnifeId[id] == 4)
{
emit_sound(id, channel, "knifes/ferrane_hitwall1.wav", 1.0, 1.0, 0, 100)
return FMRES_SUPERCEDE
}else{
return HAM_IGNORED
}
}
if(equal(sound, "weapons/knife_slash1.wav") || equal(sound, "weapons/knife_slash2.wav"))
{
if(KnifeId[id] == 2)
{
emit_sound(id, channel, "knifes/ibuki_slash1.wav", 1.0, 1.0, 0, 100)
return FMRES_SUPERCEDE
}else{
return HAM_IGNORED
}
}
if(equal(sound, "weapons/knife_deploy1.wav"))
{
if(KnifeId[id] == 2)
{
emit_sound(id, channel, "knifes/ibuki_deploy1.wav", 1.0, 1.0, 0, 100)
return FMRES_SUPERCEDE
}else{
return HAM_IGNORED
}
}
return HAM_IGNORED
}

ИНКЛУД:
Код:
#if defined _ranks_included
#endinput
#endif
#define _ranks_included

native get_user_exp(id);
native get_user_lvl(id);

Что я не правильно делаю? :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Vaqtincha
сообщение 13.11.2015, 14:32
Сообщение #2
Стаж: 11 лет

Сообщений: 981
Благодарностей: 352
Полезность: < 0

эмм.. что это за...
Код:
if(get_user_lvl(id) < 11)
{
if(KnifeId[id] == 5)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \dАптечка \d(\rВосстановление
здоровья\d) \d(\r12 LVL\d)^n" ) keys &= ~MENU_KEY_5
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \wАптечка \d(\rВосстановление
здоровья\d) \d(\r12 LVL\d)^n" ) keys |= MENU_KEY_5
}
}
else
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \dАптечка \d(\rВосстановление
здоровья\d) \d(\r12 LVL\d)^n" ) keys &= ~MENU_KEY_5
}


сразу так нельзя?

Код:
if(KnifeId[id] == 5 && get_user_lvl(id) < 11)

и еще ты уверен что не путаешь символы ">" "<"

Отредактировал: Vaqtincha, - 13.11.2015, 15:02
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя default67
сообщение 16.11.2015, 14:03
Сообщение #3


Стаж: 11 лет

Сообщений: 121
Благодарностей: 11
Полезность: < 0

Сделал как ты написал, но функции 8, и кнопки Выход нет.

Cкрытый текст


Код:
// [DR] Knifes By BiZoN
// Спасибо Eriurias за качественную регенерацию
// Плагин менее затратен в плане нагрузки, в отличие от своих аналогов, использующих CurWeapon вместо Ham_Item_deploy
// Снята затрата двойного прыжка в плане использования события прыжка, а не форвардов, вызывающихся по десятку раз каждую секунду
// Способности работают только тогда, когда в руках нож
// Ну и многое другое, что вы можете увидеть во время работы плагина
// Огромная просьба: если найдете баги или недочеты, пишите, пожалуйста, мне в скайп: vitya12345629 или в ВК: vk.com/6u3oh
// [DR] Knifes By BiZoN

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <fun>
#include <ranks>

#define PLUGIN "[DR] Knifes"
#define VERSION "1.0"
#define AUTHOR "BiZoN"

#define ADMIN_FLAG ADMIN_BAN // Флаг Админа

#define REGENERATION_DELAY 2.0 // Время до регенерации
#define REGENERATION_STEP 1 // Насколько увеличивать HP
#define REGENERATION_MAX 100 // Максимальное кол-во HP

new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MEN
U_KEY_8|MENU_KEY_0
new szTwoJump[33]
new szTwoJumpNum[33]
new szDoTwoJump[33]
new KnifeId[33]

public plugin_precache()
{
precache_model("models/v_knife.mdl")
precache_model("models/knifes/v_ferrane.mdl")
precache_model("models/knifes/v_terari.mdl")
precache_model("models/knifes/v_ibuki.mdl")
precache_model("models/knifes/v_katana.mdl")
precache_model("models/knifes/v_blink.mdl")

precache_model("models/p_knife.mdl")
precache_model("models/knifes/p_ferrane.mdl")
precache_model("models/knifes/p_terari.mdl")
precache_model("models/knifes/p_ibuki.mdl")
precache_model("models/knifes/p_katana.mdl")
precache_model("models/knifes/p_blink.mdl")

precache_sound("knifes/health.wav")
precache_sound("knifes/blink_hitwall1.wav")
precache_sound("knifes/katana_hitwall1.wav")
precache_sound("knifes/ibuki_hitwall1.wav")
precache_sound("knifes/ibuki_slash1.wav")
precache_sound("knifes/ibuki_deploy1.wav")
precache_sound("knifes/terari_hitwall1.wav")
precache_sound("knifes/ferrane_hitwall1.wav")
}

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_menu("Menu 1", keys, "menu_knife")
register_clcmd("say /knife", "knife_menu")
register_clcmd("say_team /knife", "knife_menu")
register_clcmd("knife", "knife_menu")
register_clcmd("knifes", "knife_menu")
RegisterHam(Ham_Item_Deploy, "weapon_knife", "SetKnife", 1)
register_event("CurWeapon", "SetKnife" ,"be" ,"1=1")
RegisterHam(Ham_Item_Holster, "weapon_knife", "KnifeSet", 1)
RegisterHam(Ham_TakeDamage, "player", "EventDamage", 0)
RegisterHam(Ham_TakeDamage, "player", "TakeDamage", .Post = true)
RegisterHam(Ham_Killed, "player", "KilledPost", .Post = true)
RegisterHam(Ham_Player_Jump, "player", "PreTwoJump")
register_forward(FM_EmitSound, "EmitSound")
}

public client_connect(id)
{
KnifeId[id] = 1
}

public client_disconnect(nClientIndex)
{
remove_task(nClientIndex)
}

public knife_menu(id)
{
static menu[650], iLen
iLen = 0
iLen = formatex(menu[iLen], charsmax(menu) - iLen, "\r[\yKnifeMenu\r] \wВыберите нож^n^n")

if(!is_user_connected(id))
return PLUGIN_CONTINUE

if(KnifeId[id] == 1)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \dСтандартный \d(\r1 LVL\d)^n")
keys &= ~MENU_KEY_1
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r1. \wСтандартный \d(\r1 LVL\d)^n")
keys |= MENU_KEY_1
}

if(KnifeId[id] == 2 && get_user_lvl(id) <= 22)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \wКатана \d(\rДвойной прыжок\d) \d(\r22 LVL\d)^n")
keys |= MENU_KEY_2
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r2. \dКатана \d(\rДвойной прыжок\d) \d(\r22 LVL\d)^n")
keys &= ~MENU_KEY_2
}
if(KnifeId[id] == 3 && get_user_lvl(id) <= 27)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \wСильный \d(\rБольшой урон\d) \d(\r27 LVL\d)^n")
keys |= MENU_KEY_3
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r3. \dСильный \d(\rБольшой урон\d) \d(\r27 LVL\d)^n")
keys &= ~MENU_KEY_3
}
if(KnifeId[id] == 4 && get_user_lvl(id) <= 18)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \wСтронг \d(\rСкорость\d) \d(\r18 LVL\d)^n")
keys |= MENU_KEY_4
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r4. \dСтронг \d(\rСкорость\d) \d(\r18 LVL\d)^n")
keys &= ~MENU_KEY_4
}

if(KnifeId[id] == 5 && get_user_lvl(id) <= 12)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \wАптечка \d(\rВосстановление здоровья\d) \d(\r12 LVL\d)^n")
keys |= MENU_KEY_5
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r5. \dАптечка \d(\rВосстановление здоровья\d) \d(\r12 LVL\d)^n")
keys &= ~MENU_KEY_5
}

if(KnifeId[id] == 6 && get_user_lvl(id) <= 15)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r6. \wКомбат \d(\rГравитация\d) \d(\r15 LVL\d)^n")
keys |= MENU_KEY_6
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r6. \dКомбат \d(\rГравитация\d) \d(\r15 LVL\d)^n")
keys &= ~MENU_KEY_6
}

if(KnifeId[id] == 7 && get_user_lvl(id) <= 25)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r7. \wДарк \d(\rНевидимость\d) \d(\r25 LVL\d)^n^n")
keys |= MENU_KEY_7
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r7. \dДарк \d(\rНевидимость\d) \d(\r25 LVL\d)^n^n")
keys &= ~MENU_KEY_7
}

if(get_user_flags(id) & ADMIN_FLAG)
{
if(KnifeId[id] == 0)
{
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r8. \dАдминский нож \d(\rВсё включено\d)^n^n")
keys &= ~MENU_KEY_8
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r8. \wАдминский нож \d(\rВсё включено\d)^n^n")
keys |= MENU_KEY_8
}
} else {
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r8. \dАдминский нож \d(\rВсё включено\d)^n^n")
keys &= ~MENU_KEY_8
}
iLen += formatex(menu[iLen], charsmax(menu) - iLen, "\r0. \wВыход^n")
keys |= MENU_KEY_0

show_menu(id, keys, menu, -1, "Menu 1")
return PLUGIN_HANDLED
}

public menu_knife(id, key)
{
switch(key)
{
case 0:
{
KnifeId[id] = 1
SetKnife(id)
}
case 1:
{
KnifeId[id] = 2
SetKnife(id)
}
case 2:
{
KnifeId[id] = 3
SetKnife(id)
}
case 3:
{
KnifeId[id] = 4
SetKnife(id)
}
case 4:
{
KnifeId[id] = 5
SetKnife(id)
}
case 5:
{
KnifeId[id] = 6
SetKnife(id)
}
case 6:
{
KnifeId[id] = 7
SetKnife(id)
}
case 7:
{
if(get_user_flags(id) & ADMIN_FLAG)
{
KnifeId[id] = 0
SetKnife(id)
}
}
}
return PLUGIN_HANDLED
}

public SetKnife(id)
{
if(!is_user_connected(id))
return PLUGIN_CONTINUE

if(KnifeId[id] == 1)
{
set_pev(id, pev_viewmodel2, "models/v_knife.mdl")
set_pev(id, pev_weaponmodel2, "models/p_knife.mdl")
set_pev(id, pev_maxspeed, 250.0)
set_pev(id, pev_gravity, 1.0)
szTwoJump[id] = false
}
if(KnifeId[id] == 2)
{
set_pev(id, pev_viewmodel2, "models/knifes/v_katana.mdl")
set_pev(id, pev_weaponmodel2, "models/knifes/p_katana.mdl")
set_pev(id, pev_maxspeed, 250.0)
set_pev(id, pev_gravity, 1.0)
szTwoJump[id] = true
}
if(KnifeId[id] == 3)
{
set_pev(id, pev_viewmodel2, "models/knifes/v_ibuki.mdl")
set_pev(id, pev_weaponmodel2, "models/knifes/p_ibuki.mdl")
set_pev(id, pev_maxspeed, 220.0)
set_pev(id, pev_gravity, 1.0)
szTwoJump[id] = false
}
if(KnifeId[id] == 4)
{
set_pev(id, pev_viewmodel2, "models/knifes/v_terari.mdl")
set_pev(id, pev_weaponmodel2, "models/knifes/p_terari.mdl")
set_pev(id, pev_maxspeed, 320.0)
set_pev(id, pev_gravity, 1.0)
szTwoJump[id] = false
}
if(KnifeId[id] == 5)
{
set_pev(id, pev_viewmodel2, "models/v_knife.mdl")
set_pev(id, pev_weaponmodel2, "models/p_knife.mdl")
set_pev(id, pev_maxspeed, 250.0)
set_pev(id, pev_gravity, 1.0)
szTwoJump[id] = false
}
if(KnifeId[id] == 6)
{
set_pev(id, pev_viewmodel2, "models/knifes/v_ferrane.mdl")
set_pev(id, pev_weaponmodel2, "models/knifes/p_ferrane.mdl")
set_pev(id, pev_maxspeed, 250.0)
set_pev(id, pev_gravity, 0.6)
szTwoJump[id] = false
}
if(KnifeId[id] == 7)
{
set_pev(id, pev_viewmodel2, "models/v_knife.mdl")
set_pev(id, pev_weaponmodel2, "models/p_knife.mdl")
set_pev(id, pev_maxspeed, 250.0)
set_pev(id, pev_gravity, 1.0)
set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,20)
szTwoJump[id] = false
}
if(KnifeId[id] == 0)
{
set_pev(id, pev_viewmodel2, "models/knifes/v_blink.mdl")
set_pev(id, pev_weaponmodel2, "models/knifes/p_blink.mdl")
set_pev(id, pev_maxspeed, 320.0)
set_pev(id, pev_gravity, 0.6)
set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,20)
szTwoJump[id] = true
}
return PLUGIN_HANDLED
}

public KnifeSet(ent)
{
set_pev(get_pdata_cbase(ent, 41, 4), pev_gravity, 1.0)
}

public TakeDamage(nClientIndex)
{
if(is_user_alive(nClientIndex))
{
if (!task_exists(nClientIndex))
set_task(REGENERATION_DELAY, "StartRegeneration" , nClientIndex, _, _, "b")
}
}

public KilledPost(nClientIndex)
{
remove_task(nClientIndex)
}

public StartRegeneration(nClientIndex)
{
static Float:g_iHealthPoint; pev(nClientIndex, pev_health, g_iHealthPoint);

if (g_iHealthPoint >= REGENERATION_MAX)
{
remove_task(nClientIndex);
return PLUGIN_HANDLED;
}

if(get_user_weapon(nClientIndex) == CSW_KNIFE && (KnifeId[nClientIndex] == 0 || KnifeId[nClientIndex] == 5))
{
set_pev(nClientIndex, pev_health, g_iHealthPoint + REGENERATION_STEP);
}
return PLUGIN_CONTINUE;
}

public EventDamage(victim, inflicator, attacker, Float:damage)
{
if(!is_user_connected(attacker))
return PLUGIN_HANDLED;

if(victim == attacker || !victim)
return PLUGIN_HANDLED;

if(get_user_team(attacker) != get_user_team (victim) && attacker != victim && get_user_weapon(attacker) == CSW_KNIFE && (KnifeId[attacker] == 0 || KnifeId[attacker] == 2))
SetHamParamFloat(4, damage * 2.0)
return PLUGIN_HANDLED;
}

public PreTwoJump(id)
{
if(szTwoJump[id] && get_user_weapon(id) == CSW_KNIFE)
{
new szButton = pev(id, pev_button)
new szOldButton = pev(id, pev_oldbuttons)

if((szButton & IN_JUMP) && !(pev(id, pev_flags) & FL_ONGROUND) && !(szOldButton & IN_JUMP))
{
if(szTwoJumpNum[id] < 1)
{
szDoTwoJump[id] = true
szTwoJumpNum[id]++

PostTwoJump(id)

return PLUGIN_CONTINUE
}
}
if((szButton & IN_JUMP) && (pev(id, pev_flags) & FL_ONGROUND))
{
szTwoJumpNum[id] = 0
}
}
return PLUGIN_CONTINUE
}

public PostTwoJump(id)
{
if(szTwoJump[id])
{
if(!is_user_alive(id))
return PLUGIN_CONTINUE

if(szDoTwoJump[id])
{
new Float:szVelocity[3]
pev(id, pev_velocity, szVelocity)

szVelocity[2] = random_float(295.0,305.0)
set_pev(id, pev_velocity, szVelocity)

szDoTwoJump[id] = false

return PLUGIN_CONTINUE
}
}
return PLUGIN_CONTINUE
}

public EmitSound(id, channel, const sound[])
{
if(equal(sound, "weapons/knife_hitwall1.wav"))
{
if(KnifeId[id] == 0)
{
emit_sound(id, channel, "knifes/blink_hitwall1.wav", 1.0, 1.0, 0, 100)
return FMRES_SUPERCEDE
}
else if(KnifeId[id] == 1)
{
emit_sound(id, channel, "knifes/health.wav", 1.0, 1.0, 0, 100)
return FMRES_SUPERCEDE
}
else if(KnifeId[id] == 2)
{
emit_sound(id, channel, "knifes/ibuki_hitwall1.wav", 1.0, 1.0, 0, 100)
return FMRES_SUPERCEDE
}
else if(KnifeId[id] == 3)
{
emit_sound(id, channel, "knifes/terari_hitwall1.wav", 1.0, 1.0, 0, 100)
return FMRES_SUPERCEDE
}
else if(KnifeId[id] == 4)
{
emit_sound(id, channel, "knifes/ferrane_hitwall1.wav", 1.0, 1.0, 0, 100)
return FMRES_SUPERCEDE
}else{
return HAM_IGNORED
}
}
if(equal(sound, "weapons/knife_slash1.wav") || equal(sound, "weapons/knife_slash2.wav"))
{
if(KnifeId[id] == 2)
{
emit_sound(id, channel, "knifes/ibuki_slash1.wav", 1.0, 1.0, 0, 100)
return FMRES_SUPERCEDE
}else{
return HAM_IGNORED
}
}
if(equal(sound, "weapons/knife_deploy1.wav"))
{
if(KnifeId[id] == 2)
{
emit_sound(id, channel, "knifes/ibuki_deploy1.wav", 1.0, 1.0, 0, 100)
return FMRES_SUPERCEDE
}else{
return HAM_IGNORED
}
}
return HAM_IGNORED
}


Нет, символы точно не путаю, так как "<" если уровень меньше, а если ">" то больше.

Отредактировал: Bloo, - 16.11.2015, 16:52
Причина: Выдано устное предупреждение!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Vaqtincha
сообщение 16.11.2015, 14:10
Сообщение #4
Стаж: 11 лет

Сообщений: 981
Благодарностей: 352
Полезность: < 0

ну концо концов проблема решено или нет
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя default67
сообщение 16.11.2015, 14:16
Сообщение #5


Стаж: 11 лет

Сообщений: 121
Благодарностей: 11
Полезность: < 0

Цитата(Vaqtincha @ 16.11.2015, 15:06) *
ну концо концов проблема решено или нет

На счёт уровней то да, проблема решена, а вот на счет меню - нет.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: