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

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

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

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

История благодарностей участнику NightFury406 ::: Спасибо сказали: 4
Дата поста: В теме: За сообщение: Спасибо сказали:
2.10.2018, 13:11 [ReAPI] GunDrop
Плагин меняет физику выброса оружия на более реалистичное и добавляет подсветку модели как из CSO
Cкриншот

Код:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <reapi>

#define PDATA_VALID 2
#define is_entity(%0) (pev_valid(%0) == PDATA_VALID)
#define is_user(%0) (1 <= %0 <= MaxClients)
#define MODEL_GUNDROP "models/406/gundrop.mdl"
#define SOUND_GUNDROP "406/weapondrop.wav"

public plugin_precache()
{
engfunc(EngFunc_PrecacheModel, MODEL_GUNDROP)
engfunc(EngFunc_PrecacheSound, SOUND_GUNDROP)
}

public plugin_init()
{
register_plugin("GunDrop", "1.0", "406")
RegisterHam(Ham_Item_Kill, "weaponbox", "fw_ItemKillPost", 1)
RegisterHam(Ham_Touch, "weaponbox", "fw_TouchPost", 1)
RegisterHookChain(RG_CBasePlayer_DropPlayerItem, "rg_CBasePlayerDropPlayerItemPost", 1)
}

public rg_CBasePlayerDropPlayerItemPost(player, szName[])
{
new entity = GetHookChainReturn(ATYPE_INTEGER)
if(!is_entity(entity)) return HC_CONTINUE
set_pev(entity, pev_movetype, MOVETYPE_BOUNCE)
set_pev(entity, pev_gravity, 1.0)
set_pev(entity, pev_friction, 0.8)
new Float:vOrigin[3]
vOrigin[1] = random_float(-360.0, 360.0)
set_pev(entity, pev_angles, vOrigin)
vOrigin[1] = random_float(-200.0, 200.0)
set_pev(entity, pev_avelocity, vOrigin)
pev(player, pev_v_angle, vOrigin)
angle_vector(vOrigin, ANGLEVECTOR_FORWARD, vOrigin)
vOrigin[0] *= 300.0; vOrigin[1] *= 300.0; vOrigin[2] *= 300.0
set_pev(entity, pev_velocity, vOrigin)
return HC_CONTINUE
}

public fw_TouchPost(entity, victim)
{
if(pev(entity, pev_flags) & FL_KILLME)
{
new gundrop = pev(entity, pev_iuser1)
if(is_entity(gundrop)) set_pev(gundrop, pev_flags, FL_KILLME)
return HAM_IGNORED
}
if(is_user(victim)) return HAM_IGNORED
new Float:vOrigin[3]
pev(entity, pev_velocity, vOrigin)
vOrigin[0] *= 0.7; vOrigin[1] *= 0.7; vOrigin[2] *= 0.7
set_pev(entity, pev_velocity, vOrigin)
if(ExecuteHam(Ham_IsBSPModel, victim)) engfunc(EngFunc_EmitSound, entity, CHAN_VOICE, SOUND_GUNDROP, VOL_NORM, ATTN_NORM, 0, random_num(90, 120))
new gundrop = pev(entity, pev_iuser1)
if(is_entity(gundrop)) return HAM_IGNORED
gundrop = rg_create_entity("info_target")
set_pev(gundrop, pev_aiment, entity)
set_pev(gundrop, pev_movetype, MOVETYPE_FOLLOW)
engfunc(EngFunc_SetModel, gundrop, MODEL_GUNDROP)
set_pev(gundrop, pev_framerate, 1.0)
set_pev(entity, pev_iuser1, gundrop)
return HAM_IGNORED
}

public fw_ItemKillPost(entity)
{
new gundrop = pev(entity, pev_iuser1)
if(is_entity(gundrop)) set_pev(gundrop, pev_flags, FL_KILLME)
}
Izmayl7
28.2.2018, 16:14 [2018] LaserMine
Автор: 406
Версия: 1.0
Требуется: ReAPI, AMXModx 1.8.3

Описание: Модель в хорошем качестве с боди группой для 2 уровня.
Луч сделан при помощи entity, создается один раз (игрок не перекроет)
Луч наносит повреждения всем игрокам, пересекающим его, даже если игроков несколько (кроме своей команды)
Разрушить мину может только враг или хозяин мины.
Мины нельзя ставить на разрушаемые объекты, движущие и двери.
Игрок не сможет застрять на мине (активируется если игрок не мешает)
Есть ограничение по расстоянию мин между ними.
Все написано на одном синке (без синка игрока).

"Includes"

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <reapi>

"Настройки"

#define LASER_TIME_DATA 0.1 // Время обновления информации о мине
#define LASER_HEALTH 500.0 // Здоровье мины
#define LASER_HEALTH_LEVEL 300.0 // Добавление HP на 2 уровне
#define LASER_REWARD 1200 // Награда за убийства мины
#define LASER_MAX 3 // Максимальное количество мин у игрока
#define LASER_DISTANCE_INFO 500.0 // Дистанция показа информации лазера
#define LASER_PRICE 1500 // Цена мины
#define LASER_PRICE_LEVEL 1000 // Цена на улучшения до 2 уровня
#define LASER_MODEL "models/406/lasermine.mdl" // Модель мины
#define LASER_EXPLOS "sprites/zerogxplode.spr" // Спрайт взрыва
#define LASER_REWARD_ATTACKER 150 // Награда за убийство миной
#define LASER_REWARD_ATTACKER_LEVEL 150 // Награда игроку за мину 2 уровня
#define LASER_DAMAGE 10.0 // Урон мины 1 уровня
#define LASER_DAMAGE_LEVEL 20.0 // Урон мины 2 уровня

"Скрины"



[attachment=47722:lasermine.7z]
JIuXeP, Safety1st