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

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

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

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

Магазин шапок

Статус пользователя liroy
сообщение 15.12.2015, 13:25
Сообщение #1
Стаж: 10 лет

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

Добрый день господа. Надеюсь на помощь опытных с плагином.
Есть плагин Shop Hats
В нем все отлично работает как и следовало бы. с одним но.. Я ставлю его на ксдм
и при смерти шапка и эффекты не удаляются. видимо плагин ждет конца раунда.
В результате 1 раз купив шапку можно бесконечно с ней умирать и появляться.

помогите это исправить чтобы шапка и эффекты изчезали при смерти.

вот код плагина, очень надеюсь на вашу помощь

Код:
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <engine>

#define PLUGIN "Hats shop"
#define VERSION "1.1"
#define AUTHOR "R-2"

#define ypon 1.4 //На сколько умножать урон от атак. Если нанёс 50 то 50*1.4=70 урона

#define HATS1 8000 //цена шапки Скорость
#define HATS2 5000 //цена шапки Гравитация
#define HATS3 12000 //цена шапки скорость + грава
#define HATS4 10000 //цена шапки Дамаг
#define HATS5 15000 //VIP шапка Невидимость 50%
#define HATS6 16000 //Супер VIP шапка, все умелки

#define FLAG_VIP ADMIN_LEVEL_B //флаг доступа на покупку шапки 5 (вип)
#define FLAG_SVIP ADMIN_LEVEL_F //флаг доступа на покупку шапки 6 (Супер вип)

new Ent[33]
new OffSkill[33]
new g_speed[33]
new g_grava[33]
new g_damag[33]
new g_invis[33]

new const chebur[] = "models/ShopR2/cheburashka.mdl"
new const cow[ ] = "models/ShopR2/cow.mdl"
new const demon[ ] = "models/ShopR2/demon.mdl"
new const elf[ ] = "models/ShopR2/elf.mdl"
new const gena[ ] = "models/ShopR2/gena.mdl"
new const kotan[ ] = "models/ShopR2/kotan.mdl"

new const pristavka[ ] = "У-Ашотика"

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)

RegisterHam(Ham_Item_PreFrame, "player", "PreFrame_Post", 1)
RegisterHam(Ham_TakeDamage, "player", "Player_TakeDamage")

register_logevent("round_end", 2, "1=Round_End")
register_clcmd("say /hats","hats_menu")
}

public plugin_precache( )
{
precache_model(chebur)
precache_model(cow)
precache_model(demon)
precache_model(elf)
precache_model(gena)
precache_model(kotan)
}

public round_end()
{
for(new id = 1; id <= get_maxplayers(); id++)
{
if(OffSkill[id] > 0) OffSkill[id] -= 1


if(OffSkill[id] <= 0 && (g_grava[id] || g_speed[id] || g_damag[id] || g_invis[id])){
color_chat(id, "!y[!g%s!y] !tУ вас закончился срок шапки.", pristavka)
remove_hat(id)
g_speed[id] = false
g_damag[id] = false
g_invis[id] = false
g_grava[id] = false
set_user_rendering(id)
set_user_gravity(id, 1.0)
ExecuteHam(Ham_Item_PreFrame, id)
}
}
}

public client_disconnect(id){
remove_hat(id)
g_speed[id] = false
g_invis[id] = false
g_damag[id] = false
g_grava[id] = false
}

public client_connect(id){
g_speed[id] = false
g_invis[id] = false
g_damag[id] = false
g_grava[id] = false
}

public hats_menu(id)
{
if(get_user_team(id) == 3){
color_chat(id, "!tВыберите !gкоманду !tчтобы открыть Магазин")
return PLUGIN_HANDLED
}

if(!is_user_alive(id)){
color_chat(id, "!gТы же мёртв! !tНафига тебе шапка, ты !yПРО!t, я в тебя верю !g:D")
return PLUGIN_HANDLED
}


new szText[ 555 char ];
new money = cs_get_user_money(id)
formatex( szText, charsmax( szText ), "\yМагазин шапочек:^nВаш счёт: %d", money)
new i_Menuh = menu_create(szText, "menu_hats")


if(money >= HATS1 && is_user_alive(id))
formatex( szText, charsmax( szText ), "\yГена \d[\rСкорость\w+\d] \w| \y%d\r$", HATS1)
else if(money <= HATS1 && is_user_alive(id))
formatex( szText, charsmax( szText ), "\dГена | \y%d\r$", HATS1)
else if(!is_user_alive(id))
formatex( szText, charsmax( szText ), "\dГена \w[\rВы мертвы\w]")
menu_additem(i_Menuh, szText, "1", 0)

if(money >= HATS2 && is_user_alive(id))
formatex( szText, charsmax( szText ), "\yЧебурашка \d[\rГравитация\w+\d] \w| \y%d\r$", HATS2)
else if(money <= HATS2 && is_user_alive(id))
formatex( szText, charsmax( szText ), "\dЧебурашка | \y%d\r$", HATS2)
else if(!is_user_alive(id))
formatex( szText, charsmax( szText ), "\dЧебурашка \w[\rВы мертвы!\w]")
menu_additem(i_Menuh, szText, "2", 0)

if(money >= HATS3 && is_user_alive(id))
formatex( szText, charsmax( szText ), "\yКорова \d[\rСкор\w+ \rГрав\w+\d] \w| \y%d\r$", HATS3)
else if(money <= HATS3 && is_user_alive(id))
formatex( szText, charsmax( szText ), "\dКорова | \y%d\r$", HATS3)
else if(!is_user_alive(id))
formatex( szText, charsmax( szText ), "\dКорова \w[\rВы мертвы!\w]")
menu_additem(i_Menuh, szText, "3", 0)

if(money >= HATS4 && is_user_alive(id))
formatex( szText, charsmax( szText ), "\yДемон \d[\rУрон\w+\d] \w| \y%d\r$", HATS4)
else if(money <= HATS4 && is_user_alive(id))
formatex( szText, charsmax( szText ), "\dДемон | \y%d\r$", HATS4)
else if(!is_user_alive(id))
formatex( szText, charsmax( szText ), "\dДемон \w[\rВы мертвы!\w]")
menu_additem(i_Menuh, szText, "4", 0)

if(get_user_flags(id) & FLAG_VIP || get_user_flags(id) & FLAG_SVIP)
menu_addtext(i_Menuh,"^n\rVIP\w: ",0)
else
menu_addtext(i_Menuh,"^n\yVIP: \d[\rНет доступа\d]\w: ",0)

if(money >= HATS5 && is_user_alive(id) && get_user_flags(id) & FLAG_VIP)
formatex( szText, charsmax( szText ), "\yЭльф \d[\rНевидимость\d] \w| \y%d\r$", HATS5)
else if(!is_user_alive(id) && get_user_flags(id) & FLAG_VIP)
formatex( szText, charsmax( szText ), "\dЭльф \w[\rВы мертвы!\w]")
else if(money <= HATS5 && get_user_flags(id) & FLAG_VIP)
formatex( szText, charsmax( szText ), "\dЭльф \w| \y%d\r$", HATS5)
else if(!(get_user_flags(id) & FLAG_VIP))
formatex( szText, charsmax( szText ), "\dЭльф \w[\rНет доступа\w]")
menu_additem(i_Menuh, szText, "5", 0)

if(get_user_flags(id) & FLAG_VIP || get_user_flags(id) & FLAG_SVIP)
menu_addtext(i_Menuh,"^n\rСупер VIP\w: ",0)
else
menu_addtext(i_Menuh,"^n\yСупер VIP \d[\rНет доступа\d]\w: ",0)

if(money >= HATS5 && is_user_alive(id) && get_user_flags(id) & FLAG_SVIP)
formatex( szText, charsmax( szText ), "\yКотан \d[\rВесь комплект\d] \w| \y%d\r$", HATS6)
else if(!is_user_alive(id) && get_user_flags(id) & FLAG_SVIP)
formatex( szText, charsmax( szText ), "\dКотан \w[\rВы мертвы!\w]")
else if(money <= HATS6 && get_user_flags(id) & FLAG_SVIP)
formatex( szText, charsmax( szText ), "\dКотан \w| \y%d\r$", HATS6)
else if(!(get_user_flags(id) & FLAG_SVIP))
formatex( szText, charsmax( szText ), "\dКотан \w[\rНет доступа\w]")
menu_additem(i_Menuh, szText, "6", 0)

menu_setprop(i_Menuh, MPROP_EXITNAME, "Выход")
menu_setprop(i_Menuh, MPROP_EXIT, MEXIT_ALL)

menu_display(id, i_Menuh, 0)

return PLUGIN_HANDLED
}

public menu_hats(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 money = cs_get_user_money(id)


switch(i_Key)
{
case 2:
{

if(Ent[id] > 0)
{
color_chat(id, "!y[!g%s!y] !tВы и так в шапке", pristavka)
return PLUGIN_HANDLED
}

if(!is_user_alive(id))
{
color_chat(id, "!y[!g%s!y] !tТы мёртв!", pristavka)
return PLUGIN_HANDLED
}

if(money < HATS2)
{
color_chat(id, "!y[!g%s!y] !tВам не хватает денег!", pristavka)
return PLUGIN_HANDLED
}

if(Ent[id] < 1)
{
Ent[id] = create_entity("info_target")
if(is_valid_ent(id))
{
OffSkill[id] = 2
entity_set_model(Ent[id] , chebur)
entity_set_int(Ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
entity_set_edict(Ent[id], EV_ENT_aiment, id)
set_user_gravity(id, 0.5)
g_grava[id] = true
cs_set_user_money(id, money - HATS2)
color_chat(id, "!y[!g%s!y] !tВы одели шапку !gЧебурашки", pristavka)
color_chat(id, "!y[!g%s!y] !tВы получили способность !gГравитация!y+", pristavka)

}
}

}
case 1:
{
if(Ent[id] > 0)
{
color_chat(id, "!y[!g%s!y] !tВы и так в шапке", pristavka)
return PLUGIN_HANDLED
}

if(!is_user_alive(id))
{
color_chat(id, "!y[!g%s!y] !tТы мёртв!", pristavka)
return PLUGIN_HANDLED
}

if(money < HATS1)
{
color_chat(id, "!y[!g%s!y] !tВам не хватает денег!", pristavka)
return PLUGIN_HANDLED
}

if(Ent[id] < 1)
{
Ent[id] = create_entity("info_target")
if(is_valid_ent(id))
{
OffSkill[id] = 2
entity_set_model(Ent[id] , gena)
entity_set_int(Ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
entity_set_edict(Ent[id], EV_ENT_aiment, id)
g_speed[id] = true
set_user_maxspeed(id, 360.0)
cs_set_user_money(id, money - HATS1)

color_chat(id, "!y[!g%s!y] !tВы одели шапку !gГеныча", pristavka)
color_chat(id, "!y[!g%s!y] !tВы получили способность !gСкорость!y+", pristavka)
}
}
}
case 3:
{
if(Ent[id] > 0)
{
color_chat(id, "!y[!g%s!y] !tВы и так в шапке", pristavka)
return PLUGIN_HANDLED
}

if(!is_user_alive(id))
{
color_chat(id, "!y[!g%s!y] !tТы мёртв!", pristavka)
return PLUGIN_HANDLED
}

if(money < HATS3)
{
color_chat(id, "!y[!g%s!y] !tВам не хватает денег!", pristavka)
return PLUGIN_HANDLED
}

if(Ent[id] < 1)
{
Ent[id] = create_entity("info_target")
if(is_valid_ent(id))
{
OffSkill[id] = 2
entity_set_model(Ent[id] , cow)
entity_set_int(Ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
entity_set_edict(Ent[id], EV_ENT_aiment, id)
set_user_gravity(id, 0.5)
g_speed[id] = true
g_grava[id] = true
set_user_maxspeed(id, 360.0)
cs_set_user_money(id, money - HATS3)
color_chat(id, "!y[!g%s!y] !tВы одели шапку !gКоровы", pristavka)
color_chat(id, "!y[!g%s!y] !tВы получили способность !gГравитация!y+ !t| !gСкорость!y+", pristavka)
}
}
}
case 4:
{
if(Ent[id] > 0)
{
color_chat(id, "!y[!g%s!y] !tВы и так в шапке", pristavka)
return PLUGIN_HANDLED
}

if(!is_user_alive(id))
{
color_chat(id, "!y[!g%s!y] !tТы мёртв!", pristavka)
return PLUGIN_HANDLED
}

if(money < HATS4)
{
color_chat(id, "!y[!g%s!y] !tВам не хватает денег!", pristavka)
return PLUGIN_HANDLED
}


if(Ent[id] < 1)
{
Ent[id] = create_entity("info_target")
if(is_valid_ent(id))
{
OffSkill[id] = 2
entity_set_model(Ent[id] , demon)
entity_set_int(Ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
entity_set_edict(Ent[id], EV_ENT_aiment, id)
g_damag[id] = true
cs_set_user_money(id, money - HATS4)
color_chat(id, "!y[!g%s!y] !tВы одели шапку !gДемона", pristavka)
color_chat(id, "!y[!g%s!y] !tВы получили способность !gУрон!y+", pristavka)
}
}
}
case 5:
{
if(!(get_user_flags(id) & FLAG_VIP))
{
color_chat(id, "!y[!g%s!y] !gУ вас нет доступа на покупку данной шапки.", pristavka)
return PLUGIN_HANDLED

}

if(Ent[id] > 0)
{
color_chat(id, "!y[!g%s!y] !tВы и так в шапке", pristavka)

return PLUGIN_HANDLED
}

if(!is_user_alive(id))
{
color_chat(id, "!y[!g%s!y] !tТы мёртв!", pristavka)
return PLUGIN_HANDLED
}


if(money < HATS5){
color_chat(id, "!y[!g%s!y] !tВам не хватает денег!", pristavka)
return PLUGIN_HANDLED
}

if(Ent[id] < 1)
{
Ent[id] = create_entity("info_target")
if(is_valid_ent(id))
{
OffSkill[id] = 4
entity_set_model(Ent[id] , elf)
entity_set_int(Ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
entity_set_edict(Ent[id], EV_ENT_aiment, id)

set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 50)
g_invis[id] = true
cs_set_user_money(id, money - HATS5)

color_chat(id, "!y[!g%s!y] !tВы одели шапку !gЭльфа", pristavka)
color_chat(id, "!y[!g%s!y] !tВы получили способность !gНевидимость!y 50%", pristavka)
}
}
}
case 6:
{
if(!(get_user_flags(id) & FLAG_SVIP))
{
color_chat(id, "!y[!g%s!y] !gУ вас нет доступа на покупку данной шапки.", pristavka)
return PLUGIN_HANDLED

}


if(Ent[id] > 0)
{
color_chat(id, "!y[!g%s!y] !tВы и так в шапке", pristavka)
return PLUGIN_HANDLED
}


if(!is_user_alive(id))
{
color_chat(id, "!y[!g%s!y] !tТы мёртв!", pristavka)
return PLUGIN_HANDLED
}

if(money < HATS6){
color_chat(id, "!y[!g%s!y] !tВам не хватает денег!", pristavka)
return PLUGIN_HANDLED
}

if(Ent[id] < 1)
{
Ent[id] = create_entity("info_target")
if(is_valid_ent(id))
{
OffSkill[id] = 4
entity_set_model(Ent[id] , kotan)
entity_set_int(Ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
entity_set_edict(Ent[id], EV_ENT_aiment, id)
set_user_maxspeed(id, 360.0)
set_user_gravity(id, 0.5)
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 50)
g_speed[id] = true
g_grava[id] = true
g_invis[id] = true
g_damag[id] = true
cs_set_user_money(id, money - HATS6)

color_chat(id, "!y[!g%s!y] !tВы одели шапку !gКота", pristavka)
color_chat(id, "!y[!g%s!y] !tВы получили все способности !y[!gПолноценный комплект!y]", pristavka)

}
}
}
}

menu_destroy(menu)
return PLUGIN_HANDLED
}

public remove_hat(id)
{
if(Ent[id] > 0)
{
remove_entity(Ent[id])
Ent[id] = 0
}
}



public PreFrame_Post(id)
{
if(!is_user_connected(id) || !is_user_alive(id))
return

if(g_speed[id])
set_user_maxspeed(id, 360.0)

if(g_grava[id])
set_user_gravity(id, 0.5)


if(g_invis[id])
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 50)
}

public Player_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
if(!is_user_connected(victim) || !is_user_connected(attacker) || victim == attacker)
return HAM_IGNORED

if(!g_damag[attacker])
return HAM_IGNORED

SetHamParamFloat(4, damage * ypon)

return HAM_IGNORED
}

stock color_chat(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")

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();
}
}
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Vaqtincha
сообщение 15.12.2015, 13:58
Сообщение #2
Стаж: 11 лет

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

подключаем csdm.inc https://github.com/Arkshine/CSDM/blob/maste...nclude/csdm.inc
ловим килл удаляем Ent
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя liroy
сообщение 15.12.2015, 14:15
Сообщение #3
Стаж: 10 лет

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

я делаю первый в своей жизни сервер, только учусь
Пока научился только с горем пополам редактировать и то пока еще далеко не любой код.
не могли бы вы поподробней объяснить какой код и куда добавить
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Vaqtincha
сообщение 15.12.2015, 14:30
Сообщение #4
Стаж: 11 лет

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

liroy, можно и пробовать без ксдм
регим
Код:
register_event("DeathMsg", "death", "a", "1>0")

и добавим
Код:
public death(){
new vic = read_data(2)
remove_hat(vic)
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя liroy
сообщение 15.12.2015, 19:41
Сообщение #5
Стаж: 10 лет

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

спасибо за подсказку. вставил по примеру ваш код. - заработало!
правда удаляться стала только шапка а эффект который она давала оставался.
попробывать по аналогии сделать так, сработало :)

public death(){
new vic = read_data(2)
remove_hat(vic)
g_speed[vic] = false
g_damag[vic] = false
g_invis[vic] = false
g_grava[vic] = false
set_user_rendering(vic)
set_user_gravity(vic, 1.0)
ExecuteHam(Ham_Item_PreFrame, vic)
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: