RU
RU
UA
EN
PL
ГЛАВНАЯ
УСЛУГИ
ПЛАГИНЫ
КАРТЫ
REBUY
SCANMON
CASSA
SALE
ФОРУМ
МОНИТОР
HELP
КОНТАКТ
Главная
/
Plugins
/
Smoke Grenade Modes 0.0.3
Smoke Grenade Modes 0.0.3
Теги:
Скачать плагины cs
Серверные
Думаю вы все слышали про Teleport Smoke Grenade от VEN'a. Его плагин полностью заменил дымовуху.
Но убрать дым - это преступление, и вот тут появилась идея сделать его с переключением, т.е, чтобы можно было сменить режимы нажав ПКМ.
Компилятор: 1.8.2
907
Команды:
Кваров и команд нет
.sma / .sp
// Copyright © 2016 Vaqtincha /**************************************************** * Credits: to * * VEN - "Teleport Smoke Grenade" * ConnorMcLeod - Cstrike Pdatas * KORD_12.7 - "Change Glock Slot" * *****************************************************/ //================= CONFIG START ====================// #define SMOKE_MAX 5 #define SMOKE_COST 50 new const TELEPORT_SOUND[]= "player/pl_step4.wav" //================== CONFIG END =====================// #include
#include
#include
#define MAX_PLAYERS 32 #define get_weapon_owner(%1) get_pdata_cbase(%1, m_pPlayer, XO_WEAPON) #define fm_get_user_money(%1) get_pdata_int(%1, m_iAccount) #define fm_get_user_buyzone(%1) (get_pdata_int(%1, m_fClientMapZone) & MAPZONE_BUYZONE) const AMMOID_SMOKE = 13 const SMOKE_GROUND_OFFSET = 6 const MAPZONE_BUYZONE = 1<<0 const SMOKE_EVENT = 1<<1 // offsets #if AMXX_VERSION_NUM < 183 const m_bHasShield = 1<<24 const m_iUserPrefs = 510 #define HasShield(%1) (get_pdata_int(%1, m_iUserPrefs) & m_bHasShield) #else const m_bHasShield = 2043 #define HasShield(%1) get_pdata_bool(%1, m_bHasShield) #endif const m_iAccount = 115 const m_pPlayer = 41 const m_fClientMapZone = 235 const m_flNextSecondaryAttack = 47 const m_usEvent = 114 const m_rgAmmo_player = 376 + AMMOID_SMOKE const XO_WEAPON = 4 new const Float:gflSign[4][2] = {{1.0, 1.0}, {1.0, -1.0}, {-1.0, -1.0}, {-1.0, 1.0}} new const class[] = "weapon_smokegrenade" new bool:gbMode[MAX_PLAYERS + 1] new gMsgIdAmmoPickup, gMsgIdMoney, gMsgIdBlinkAcct, giszItem new Float:gflBuytime, Float:gflGameTime public plugin_precache() { register_message(78, "Hook_WeaponList") // get_user_msgid("WeaponList") not work precache_sound(TELEPORT_SOUND) // for custom sounds } public plugin_init() { register_plugin("Smoke Grenade Modes", "0.0.3", "Vaqtincha") register_clcmd("sgren", "ClCmd_Buy")//vgui menu & alias cmd register_menucmd(register_menuid("BuyItem"), MENU_KEY_5, "ClCmd_Buy")//old-style menu register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0") register_forward(FM_EmitSound, "FM_EmitSound_Pre", false) RegisterHam(Ham_Weapon_SecondaryAttack, class, "Ham_SecAttack_Post", true) RegisterHam(Ham_Item_Deploy, class, "Ham_ItemDeploy_Post", true) gflBuytime = get_cvar_float("mp_buytime") * 60.0 gMsgIdAmmoPickup = get_user_msgid("AmmoPickup") gMsgIdMoney = get_user_msgid("Money") gMsgIdBlinkAcct = get_user_msgid("BlinkAcct") giszItem = engfunc(EngFunc_AllocString, class) } public Hook_WeaponList(msg_id, msg_dest, msg_entity) { const WEAPON_ID = 8 const WEAPON_AMMO = 3 if(get_msg_arg_int(WEAPON_ID) == CSW_SMOKEGRENADE) set_msg_arg_int(WEAPON_AMMO, ARG_BYTE, SMOKE_MAX) } public Event_NewRound() gflGameTime = get_gametime() public client_putinserver(id) gbMode[id] = false // default smoke mode: true|false (teleport|smoke) public ClCmd_Buy(id) { if(!is_user_alive(id) || !fm_get_user_buyzone(id)) // player dead or not in buyzone return PLUGIN_HANDLED new Float:TimePassed = get_gametime() - gflGameTime if(floatcmp(TimePassed, gflBuytime) == 1) // time passed { client_print(id, print_center, "%0.f seconds have passed.^r^nYou can't buy anything now!", gflBuytime) return PLUGIN_HANDLED } if(fm_get_user_money(id) < SMOKE_COST) // no money { client_print(id, print_center, "You have insufficient funds!") message_begin(MSG_ONE_UNRELIABLE, gMsgIdBlinkAcct, .player=id) write_byte(2) message_end() return PLUGIN_HANDLED } new amount = get_pdata_int(id, m_rgAmmo_player) if(amount == SMOKE_MAX) // max ammo reached { client_print(id, print_center, "You cannot carry anymore!") return PLUGIN_HANDLED } amount < 1 ? give_grenade(id) : give_ammo(id, amount + 1) emit_sound(id, CHAN_ITEM, amount < 1 ? "items/gunpickup2.wav" : "items/9mmclip1.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM) fm_set_user_money(id, fm_get_user_money(id) - SMOKE_COST) return PLUGIN_HANDLED // block command } public Ham_ItemDeploy_Post(ent) { new id = get_weapon_owner(ent) if(id > 0) client_print(id, print_center, gbMode[id] ? "Teleport grenade" : "Smoke grenade") } public Ham_SecAttack_Post(ent) { new id = get_weapon_owner(ent) if(id > 0 && !HasShield(id)) { if(gbMode[id]) { client_print(id, print_center, "Smoke grenade") gbMode[id] = false }else{ client_print(id, print_center, "Teleport grenade") gbMode[id] = true } set_pdata_float(ent, m_flNextSecondaryAttack, 0.3, XO_WEAPON) } } public FM_EmitSound_Pre(ent, channel, const sound[]) { if(/* !pev_valid(ent) || */ !equal(sound, "weapons/sg_explode.wav")) return FMRES_IGNORED if(~get_pdata_int(ent, m_usEvent) & SMOKE_EVENT) return FMRES_IGNORED static owner; owner = pev(ent, pev_owner) if(gbMode[owner]) { static Float:p_origin[3] pev(owner, pev_origin, p_origin) p_origin[2] -= 30 teleport_sprite_effect(p_origin) static Float:origin[3] pev(ent, pev_origin, origin) origin[2] += SMOKE_GROUND_OFFSET teleport_sprite_effect(origin) // safe remove engfunc(EngFunc_SetOrigin, ent, Float:{-8191.0, -8191.0, -8191.0}) // engfunc(EngFunc_RemoveEntity, ent) static Float:mins[3], hull pev(owner, pev_mins, mins) origin[2] -= mins[2] + SMOKE_GROUND_OFFSET hull = pev(owner, pev_flags) & FL_DUCKING ? HULL_HEAD : HULL_HUMAN if(!is_user_alive(owner)) // owner killed return FMRES_IGNORED if(is_hull_vacant(origin, hull)) engfunc(EngFunc_SetOrigin, owner, origin) else{ static Float:vec[3] vec[2] = origin[2] for(new i; i < sizeof(gflSign); ++i) { vec[0] = origin[0] - mins[0] * gflSign[i][0] vec[1] = origin[1] - mins[1] * gflSign[i][1] if(is_hull_vacant(vec, hull)) { engfunc(EngFunc_SetOrigin, owner, vec) break } } } emit_sound(owner, CHAN_BODY, TELEPORT_SOUND, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) } return FMRES_IGNORED } stock teleport_sprite_effect(const Float:origin[3]) { message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_TELEPORT) write_coord(floatround(origin[0])) // position x write_coord(floatround(origin[1])) // position y write_coord(floatround(origin[2])+30) // position z message_end() } stock fm_set_user_money(client, money, flash=1) { set_pdata_int(client, m_iAccount, money) // show money emessage_begin(MSG_ONE_UNRELIABLE, gMsgIdMoney, _, client) ewrite_long(money) ewrite_byte(flash ? 1 : 0) emessage_end() } // by VEN stock bool:is_hull_vacant(const Float:origin[3], hull) { new tr = 0 engfunc(EngFunc_TraceHull, origin, origin, 0, hull, 0, tr) if(!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen)) return true return false } stock give_ammo(client, amount, bool:icon=true) { set_pdata_int(client, m_rgAmmo_player, amount) if(icon) {// show pickup ammo emessage_begin(MSG_ONE_UNRELIABLE, gMsgIdAmmoPickup, _, client) ewrite_byte(AMMOID_SMOKE) ewrite_byte(1/* amount */) emessage_end() } } // ham_give_weapon by Avalanche stock give_grenade(index) { new wEnt = engfunc(EngFunc_CreateNamedEntity, giszItem) if(wEnt<=0 || !pev_valid(wEnt)) return 0 set_pev(wEnt, pev_spawnflags, pev(wEnt, pev_spawnflags) | SF_NORESPAWN) dllfunc(DLLFunc_Spawn, wEnt) if(ExecuteHamB(Ham_AddPlayerItem, index, wEnt)) { ExecuteHamB(Ham_Item_AttachToPlayer, wEnt, index) return wEnt } if(pev_valid(wEnt)) set_pev(wEnt, pev_flags, pev(wEnt, pev_flags) | FL_KILLME) return -1 }
Отправить
Загрузил
ADEPT
2020-02-23 19:44:19
0
28
Установить на сервер
Скачать
Нет оплаченых серверов
Купить сервер CS 1.6
Купить сервер CS:GO
Купить сервер CSS v34
Подключить свой VDS к панели
УКРАЇНСЬКИЙ - ПАТРІОТ [ 2013 - 2024 ] © 18+
195.211.60.213:27015
УКРАЇНА - Б А Н Д Е Р Ш Т А Т - [2000 FPS] 18+
195.211.60.213:27018
В І Л Ь Н А - У К Р А Ї Н А [ RYZEN 9 - 5.7 GHZ ]
195.211.60.213:27016
(Д) (І) (В) (О) (Ч) (А) - (В) (Л) (А) (Д) (А) | 18+
195.211.60.213:27017
Данная иконка означает, что плагин был проверен администрацией хостинга на тестовом сервере, и проблем с ним не было выявлено. Рекомендуем ставить исключительно проверенные плагины.
Плагин загружен на сервер, но проверка еще не была проведена.
CSHOST.COM.UA 2012-2024 Хостинг игровых серверов