#include <amxmodx>
#include <hamsandwich>
#include <fun>
#include <fakemeta>
#include <colorchat>
#define PLUGIN "Knife Menu"
#define VERSION "2.0"
#define AUTHOR "DeRoiD"
new FajlUt[] = "addons/amxmodx/configs/kesmenu/kesek.ini"
new KesNeve[128], Kes[33], Float:KesDmg[33], KesRegeneracio[33], Float:RegeneracioIdo[33]
new KesNeveValaszt[20][64]
new cvar_KesReg, cvar_KesRegIdo, cvar_KesGomb
public plugin_precache() {
new Fajl[256]
format(Fajl, charsmax(Fajl), FajlUt)
if(file_exists(Fajl))
{
new KesBuff[256], Sor, SorBuff[32]
new vKesMdlOlvas[64], vKesMdl[64]
new pKesMdlOlvas[64], pKesMdl[64]
for(new i; i < file_size(Fajl, 1) ; i++)
{
read_file(Fajl, i, KesBuff, 63, Sor)
format(SorBuff, 1, "%s", KesBuff)
if(equal(SorBuff, ";"))
continue
parse(KesBuff, vKesMdlOlvas, 63, pKesMdlOlvas, 63)
remove_quotes(vKesMdlOlvas)
remove_quotes(pKesMdlOlvas)
format(vKesMdl, charsmax(vKesMdl), "models/%s.mdl", vKesMdlOlvas)
format(pKesMdl, charsmax(pKesMdl), "models/%s.mdl", pKesMdlOlvas)
if(!equal(vKesMdl, "models/.mdl") && !equal(pKesMdl, "models/.mdl"))
{
precache_model(vKesMdl)
precache_model(pKesMdl)
}
else if(!equal(vKesMdl, "models/.mdl"))
{
precache_model(vKesMdl)
}
else if(!equal(pKesMdl, "models/.mdl"))
{
precache_model(pKesMdl)
}
}
}
}
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_dictionary("kesmenu.txt")
register_clcmd("say /knife", "KesMenu")
register_clcmd("say /kes", "KesMenu")
register_clcmd("say /knifemenu", "KesMenu")
register_clcmd("say /skin", "KesMenu")
register_clcmd("drop", "KesMenuGomb")
set_task(120.0, "KesMenuUzenet", 0, _, _, "b")
register_event("CurWeapon","KesModel","be","1=1")
RegisterHam(Ham_Player_PreThink, "player", "RegThink")
RegisterHam(Ham_TakeDamage, "player", "KesSebzes", 0)
cvar_KesReg = register_cvar("KesReg", "5")
cvar_KesGomb = register_cvar("KesGomb", "0")
cvar_KesRegIdo = register_cvar("KesRegIdo", "5.0")
}
public KesMenuUzenet() {
client_print(0, print_chat, "%L", LANG_PLAYER, "UZENET", KesNeve)
}
public KesSebzes(victim, inflictor, attacker, Float:damage)
{
if(is_user_alive(attacker) && is_user_alive(victim))
{
new Fegyver = get_user_weapon(attacker)
if(Fegyver == CSW_KNIFE)
SetHamParamFloat(4, damage * KesDmg[attacker])
}
}
public KesMenuGomb(id) {
if(get_pcvar_num(cvar_KesGomb) == 1){
KesMenu(id)
return PLUGIN_HANDLED
}
else
{
return PLUGIN_CONTINUE
}
return PLUGIN_HANDLED
}
public RegThink(id)
{
new Fegyver = get_user_weapon(id)
if(get_gametime() > RegeneracioIdo[id] && Fegyver == CSW_KNIFE
&& KesRegeneracio[id] == 1 && get_user_health(id) < 100)
{
RegeneracioIdo[id] = get_gametime() + get_pcvar_float(cvar_KesRegIdo)
if(get_user_health(id) > 100-get_pcvar_num(cvar_KesReg))
set_user_health(id, 100)
else
set_user_health(id, get_user_health(id)+get_pcvar_num(cvar_KesReg))
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(10)
write_byte(200)
write_byte(10)
write_byte(75)
message_end()
}
}
public KesKepessegNullazas(id) {
KesRegeneracio[id] = 0
set_user_maxspeed(id, 250.0)
set_user_gravity(id, 1.0)
KesDmg[id] = 1.0
set_user_footsteps(id, 0)
}
public KesModel(id) {
new Fegyver = get_user_weapon(id)
if(!is_user_alive(id) || !is_user_connected(id) || Fegyver != CSW_KNIFE)
{
KesKepessegNullazas(id)
return
}
new Fajl[256]
format(Fajl, charsmax(Fajl), FajlUt)
if(file_exists(Fajl))
{
new KesBuff[256], Sor, Szam
new vKesMdlOlvas[256], vKesMdl[256]
new pKesMdlOlvas[256], pKesMdl[256]
new StringKesMod[256], KesMod, StringKesFloat[64], Float:KesFloat
for(new i; i < file_size(Fajl, 1) ; i++)
{
Szam++
read_file(Fajl, i, KesBuff, 256, Sor)
parse(KesBuff, vKesMdlOlvas, 256, pKesMdlOlvas, 256, KesNeve, 256, StringKesMod,
256, StringKesFloat, 256)
KesMod = str_to_num(StringKesMod)
if(!equal(StringKesFloat, ""))
KesFloat = str_to_float(StringKesFloat)
log_amx("dmg: %3.2f", KesFloat)
remove_quotes(vKesMdlOlvas)
remove_quotes(pKesMdlOlvas)
format(vKesMdl, charsmax(vKesMdl), "models/%s.mdl", vKesMdlOlvas)
if(!equal(pKesMdlOlvas, ""))
format(pKesMdl, charsmax(pKesMdl), "models/%s.mdl", pKesMdlOlvas)
if(Kes[id] == Szam){
if(KesMod == 1){
set_user_gravity(id, KesFloat)
KesRegeneracio[id] = 0
set_user_maxspeed(id, 250.0)
KesDmg[id] = 1.0
set_user_footsteps(id, 0)
}
else if(KesMod == 2){
set_user_maxspeed(id, KesFloat)
KesRegeneracio[id] = 0
set_user_gravity(id, 1.0)
KesDmg[id] = 1.0
set_user_footsteps(id, 0)
}
else if(KesMod == 3){
KesDmg[id] = KesFloat
KesRegeneracio[id] = 0
set_user_maxspeed(id, 250.0)
set_user_gravity(id, 1.0)
set_user_footsteps(id, 0)
}
else if(KesMod == 4){
set_user_footsteps(id, 1)
KesRegeneracio[id] = 0
set_user_maxspeed(id, 250.0)
set_user_gravity(id, 1.0)
KesDmg[id] = 1.0
}
else if(KesMod == 5){
KesRegeneracio[id] = 1
set_user_maxspeed(id, 250.0)
set_user_gravity(id, 1.0)
KesDmg[id] = 1.0
set_user_footsteps(id, 0)
}
else
{
KesKepessegNullazas(id)
}
set_pev(id, pev_viewmodel2, vKesMdl)
if(!equal(pKesMdlOlvas, ""))
set_pev(id, pev_weaponmodel2, pKesMdl)
}
}
}
}
public KesMenu(id) {
new Fajl[256]
format(Fajl, charsmax(Fajl), FajlUt)
if(file_exists(Fajl))
{
new KesString[256]
format(KesString, 255, "[*W-T-F* #2] Kés skin menü")
new menu = menu_create(KesString, "KesMenuValasztas")
new KesBuff[256], Sor, Szam, SorBuff[32]
new KesMenuPont, StringKesMenuPont[32]
for(new i; i < file_size(Fajl, 1) ; i++)
{
KesMenuPont++
Szam++
new vKesMdl[64], pKesMdl[64]
read_file(Fajl, i, KesBuff, 255, Sor)
format(SorBuff, 1, "%s", KesBuff)
if(equal(SorBuff, ";"))
continue
parse(KesBuff, vKesMdl, 63, pKesMdl, 63, KesNeve, 63)
format(KesString, sizeof(KesString) - 1, KesNeve)
replace_all(KesNeve, 127, "[f]", "\w")
replace_all(KesNeve, 127, "[s]", "\y")
replace_all(KesNeve, 127, "[sz]", "\d")
replace_all(KesNeve, 127, "[p]", "\r")
format(StringKesMenuPont, charsmax(StringKesMenuPont), "%d", KesMenuPont)
menu_additem(menu, KesNeve, StringKesMenuPont)
format(KesNeveValaszt[Szam], 63, "%s", KesNeve)
}
menu_display(id, menu)
}
}
public KesMenuValasztas(id, menu, item){
if(item == MENU_EXIT)
{
menu_destroy(menu)
return
}
new data[9], name[64], eKes = Kes[id]
new access, callback
menu_item_getinfo(menu, item, access, data,charsmax(data),
name, charsmax(name), callback)
Kes[id] = str_to_num(data)
if(eKes != Kes[id])
KesModel(id)
replace_all(KesNeveValaszt[Kes[id]], 63, "\w", " ")
replace_all(KesNeveValaszt[Kes[id]], 63, "\y", " ")
replace_all(KesNeveValaszt[Kes[id]], 63, "\d", " ")
replace_all(KesNeveValaszt[Kes[id]], 63, "\r", " ")
client_print(id, print_chat, "%L", LANG_PLAYER, "VALASZTAS", KesNeveValaszt[Kes[id]])
}
stock print_color(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!t", "^3")
replace_all(msg, 190, "á", "á")
replace_all(msg, 190, "é", "Ă©")
replace_all(msg, 190, "í", "Ă")
replace_all(msg, 190, "ó", "Ăł")
replace_all(msg, 190, "ö", "ö")
replace_all(msg, 190, "ő", "Ĺ‘")
replace_all(msg, 190, "ú", "Ăş")
replace_all(msg, 190, "ü", "ĂĽ")
replace_all(msg, 190, "ű", "ű")
replace_all(msg, 190, "Á", "Ă")
replace_all(msg, 190, "É", "É")
replace_all(msg, 190, "Í", "ĂŤ")
replace_all(msg, 190, "Ó", "Ă“")
replace_all(msg, 190, "Ö", "Ă–")
replace_all(msg, 190, "Ő", "Ĺ")
replace_all(msg, 190, "Ú", "Ăš")
replace_all(msg, 190, "Ü", "Ăś")
replace_all(msg, 190, "Ű", "Ĺ°")
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}
return PLUGIN_HANDLED
}