Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.
Модераторы: Subb98, liFe iS GoOD
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.
В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.
Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.
Den41k593 » 01 ноя 2018, 11:19
Всем Привет! У меня плагин хук с временем,например много нельзя использовать раз в 3 сек.Я хочу чтобы вы сделали, чтобы когда летишь на хуке,то он в воздухе сам отключался после 3 сек использования.Я просто делал,делал но походу не туда вставлял.Научите или покажите.Спасибо заранее!
- Код: Выделить всё
enum color {normal = 1, green, team}
enum {HOOK_OFF, HOOK_RELEASE, HOOK_ON}
new szTime[33]
new is_plr_connected[33]
new bool:g_bCanUseHook[33]
new g_bIsHooked[33]
new g_iHookOrigin[33][3]
new g_bPlayerIsAdmin[33]
new g_SpriteBeam
new g_SpriteLaser
new g_SayText
new g_iMaxPlayers
new g_kz_tag
new bool:has_used_hook[33]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_forward(FM_Think, "fw_ThinkEnt")
register_clcmd("+hook", "HookOn", KZ_ACCESS)
register_clcmd("-hook", "HookOff", KZ_ACCESS)
register_clcmd("kz_hook", "cmd_give_hook", KZ_ACCESS ,"<name|#userid|steamid|@ALL> <on/off>")
register_dictionary("prokreedz_v2.3.txt")
g_kz_tag = register_cvar("kz_tag", "[ProKreedz]")
new iEnt = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString , "info_target"))
set_pev(iEnt, pev_classname, "hook_think")
set_pev(iEnt, pev_nextthink, get_gametime() + 0.1)
g_SayText = get_user_msgid("SayText")
g_iMaxPlayers = get_maxplayers()
}
public plugin_precache()
{
precache_sound("hook_sound.wav")
g_SpriteBeam = engfunc(EngFunc_PrecacheModel, "sprites/hook_spr.spr")
g_SpriteLaser = engfunc(EngFunc_PrecacheModel,"sprites/hook_spr.spr")
}
public client_putinserver(id)
{
is_plr_connected[id] = true
g_bIsHooked[id] = HOOK_OFF
if(get_user_flags(id) & KZ_ACCESS)
g_bPlayerIsAdmin[id] = true
has_used_hook[id] = false
}
public client_disconnect(id)
{
is_plr_connected[id] = false
g_bIsHooked[id] = HOOK_OFF
if(g_bPlayerIsAdmin[id])
g_bPlayerIsAdmin[id] = false
has_used_hook[id] = false
}
public kz_prize_hook(id, status[])
{
switch(status[0])
{
case '0': g_bCanUseHook[id] = false
case '1':
{
g_bCanUseHook[id] = true
kz_colorchat(id, green, "%L", id, "PKU_PRIZE_HOOK")
}
}
}
public cmd_give_hook(id,level,cid)
{
if(!cmd_access(id,level,cid,3))
return PLUGIN_HANDLED
new name[32]
get_user_name(id,name,31)
new szarg1[32], szarg2[8], bool:mode
read_argv(1,szarg1,31)
read_argv(2,szarg2,7)
if(equal(szarg2,"on"))
mode = true
if(equal(szarg1,"@ALL"))
{
for(new i = 1; i <= g_iMaxPlayers; i++)
{
if(is_plr_connected[i] && is_user_alive(i))
{
g_bCanUseHook[i] = mode
if(mode)
kz_colorchat(i, green, "%L", i, "PKU_HOOK_AT_ALL", name)
else
kz_colorchat(i, green, "%L", i, "PKU_HOOK_TAKE_ALL", name)
}
}
}
else
{
new pid = cmd_target(id,szarg1,2)
if(pid > 0)
{
g_bCanUseHook[pid] = mode
if(mode)
kz_colorchat(pid, green, "%L", pid, "PKU_HOOK_AT_TARGET", name)
else
kz_colorchat(pid, green, "%L", pid, "PKU_HOOK_TAKE_TARGET", name)
}
}
return PLUGIN_HANDLED
}
public HookOn(id)
{
if(!has_used_hook[id])
{
if(!g_bCanUseHook[id] && !g_bPlayerIsAdmin[id])
return PLUGIN_HANDLED
if(is_plr_connected[id] && is_user_alive(id))
{
get_user_origin(id, g_iHookOrigin[id], 3)
if(callfunc_begin("DetectCheat","ProKreedz_v2.3.amxx") == 1)
{
callfunc_push_int(id)
callfunc_push_str("Hook")
callfunc_end()
}
g_bIsHooked[id] = HOOK_ON
emit_sound(id, CHAN_STATIC, "hook_sound.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
if(task_exists(id))
{
remove_task(id)
}
szTime[id] = 3
set_task(1.0, "show_second_timer", id, _, _, "b")
has_used_hook[id] = true
}
return PLUGIN_HANDLED
}
}
public show_second_timer(id)
{
if(szTime[id] >= 1)
{
szTime[id] --
set_hudmessage(255, 0, 0, 0.01, 0.92, 0, 3.0, 12.0)
show_hudmessage(id, "Перезарядка Паутины %d сек", szTime[id])
}
else
{
remove_task(id)
set_task(1.0, "activate", id)
}
}
public activate(id)
{
has_used_hook[id] = false
set_hudmessage(255, 0, 0, 0.01, 0.92, 1, 3.0, 12.0)
show_hudmessage(id, "Перезарядка Паутины Завершена")
}
public HookOff(id)
{
g_bIsHooked[id] = HOOK_RELEASE
return PLUGIN_HANDLED
}
public fw_ThinkEnt(iEnt)
{
if (pev_valid(iEnt))
{
static ClassName[33]
pev(iEnt, pev_classname, ClassName, 32)
if(equal(ClassName, "hook_think"))
{
fw_HookThink()
set_pev(iEnt, pev_nextthink, get_gametime() + 0.1)
}
}
}
public fw_HookThink()
{
static id, origin[3], Float:velocity[3], distance
for(id = 1; id <= g_iMaxPlayers; id++)
{
if(g_bIsHooked[id] == HOOK_ON)
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(1) write_short(id) write_coord(g_iHookOrigin[id][0]) write_coord(g_iHookOrigin[id][1]) write_coord(g_iHookOrigin[id][2]) if(g_bPlayerIsAdmin[id])
{
write_short(g_SpriteBeam) write_byte(0) write_byte(0) write_byte(2) write_byte(30) write_byte(0)
write_byte(RANDOM_NUM) write_byte(RANDOM_NUM) write_byte(RANDOM_NUM) }
else
{
write_short(g_SpriteLaser) write_byte(0) write_byte(0) write_byte(2) write_byte(30) write_byte(0)
write_byte(RED) write_byte(GREEN) write_byte(BLUE) }
write_byte(500) write_byte(0) message_end()
get_user_origin(id, origin)
distance = get_distance(g_iHookOrigin[id], origin)
if(distance > 25)
{
velocity[0] = (g_iHookOrigin[id][0] - origin[0]) * (2.0 * 350 / distance)
velocity[1] = (g_iHookOrigin[id][1] - origin[1]) * (2.0 * 350 / distance)
velocity[2] = (g_iHookOrigin[id][2] - origin[2]) * (2.0 * 350 / distance)
set_pev(id, pev_velocity, velocity)
}
}
else if(g_bIsHooked[id] == HOOK_RELEASE)
{
g_bIsHooked[id] = HOOK_OFF
}
}
}
kz_colorchat(id, color:type, const msg[], {Float,Sql,Result,_}:...) {
static message[256], pkmsg[180], changed[8], argscount,j
argscount = numargs()
switch(type)
{
case normal: message[0] = 0x01
case green: message[0] = 0x04
default: message[0] = 0x03
}
new pktag[32]
get_pcvar_string(g_kz_tag, pktag, 31)
if(id)
{
if(is_plr_connected[id])
{
vformat(pkmsg, 179, msg, 4)
formatex(message[1], 255, "%s %s", pktag, pkmsg)
message[192] = '^0'
replace_all(message, 191, "!g", "^x04")
replace_all(message, 191, "!n", "^x01")
replace_all(message, 191, "!t", "^x03")
kz_print_msg(id, message)
}
}
else
{
for(new i = 1; i <= g_iMaxPlayers; i++)
{
if(is_plr_connected[i])
{
new changedcount = 0
for(j = 2; j < argscount; j++)
{
if(getarg(j) == LANG_PLAYER)
{
setarg(j, 0, i);
changed[changedcount++] = j;
}
}
vformat(pkmsg, 179, msg, 4)
formatex(message[1], 255, "%s %s", pktag, pkmsg)
message[192] = '^0'
replace_all(message, 191, "!g", "^x04")
replace_all(message, 191, "!n", "^x01")
replace_all(message, 191, "!t", "^x03")
kz_print_msg(i, message)
for(j = 0; j < changedcount; j++)
{
setarg(changed[j], 0, LANG_PLAYER)
}
}
}
}
}
stock kz_print_msg(id, const msg[])
{
message_begin(MSG_ONE_UNRELIABLE, g_SayText, _, id)
write_byte(id)
write_string(msg)
message_end()
}
-
Den41k593
-
- Сообщения: 5
- Зарегистрирован: 01 ноя 2018, 11:15
- Благодарил (а): 0 раз.
- Поблагодарили: 0 раз.
- Опыт программирования: Меньше недели
- Языки программирования: Pawn
Вернуться в Скриптинг
Кто сейчас на конференции
Сейчас этот форум просматривают: Yandex [Bot] и гости: 4