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

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

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

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

2 страниц V   1 2

bazooka_india на базе awp_india

, Раунд на базуках
yukish
сообщение 22.3.2014, 19:26
Сообщение #1
Стаж: 12 лет

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

Есть идея!
Создать карту с перестрелкой на базуках - назовём её bazooka_india,
так как для этого отлично подойдёт карта awp_india.
Существует амхх-плагин, который убирает с карты awp_india оружие AWP и выдаёт то, что указано в плагине.
Теперь сам плагин:
Код:

#include <amxmodx>
#include <fun>
#include <cstrike>
#include <engine>
#include <hamsandwich>

new ent1, ent2

public plugin_init()
{
register_plugin("AWP_INDIA Weapon Giver", "0.3", "S0m3Th1nG_AwFul!")

new mapname[32]
get_mapname(mapname,31)
if(equali(mapname,"awp_india"))
{
ents_removing()
RegisterHam(Ham_Spawn, "player", "Player_Spawn", 1)
}
}

public ents_removing()
{
while((ent1 = find_ent_by_class(ent1,"game_player_equip") != 0) || (ent2 = find_ent_by_class(ent2, "player_weaponstrip") != 0))
{
remove_entity(find_ent_by_class(ent1, "game_player_equip"))
remove_entity(find_ent_by_class(ent2, "player_weaponstrip"))
}
}

public Player_Spawn(id)
{
if(is_user_alive(id))
{
strip_user_weapons(id)
give_item(id, "item_assaultsuit")
give_item(id, "weapon_knife")
cs_set_weapon_ammo(give_item(id, "weapon_awp"), 10)
cs_set_user_bpammo(id, CSW_AWP, 30)
}
}


Оружие выдаётся в приведённых строчках, выдаётся AWP, но можно выдавать ЛЮБОЕ!
Код:

give_item(id, "weapon_knife") // Выдаётся нож
cs_set_weapon_ammo(give_item(id, "weapon_awp"), 10) // Выдаётся АВП и 10 патронов
cs_set_user_bpammo(id, CSW_AWP, 30) // Выдаются дополнительные патроны к АВП (30 шт.)


Дальше, есть плагин базуки - вот он:
bazooka.rar (61.7 КБ) http://rghost.ru/53266188

Нужно разобраться, что написать в строчках выдаваемого оружия, чтобы всем игрокам,
в начале каждого раунда вместо AWP выдавались базуки.
Какие есть мысли?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя csnet
сообщение 22.3.2014, 20:33
Сообщение #2
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

плагин уг написан
Event_PlayerSpawn менять модель там извращение

чтобы всем выдавать базуку в Event_PlayerSpawn Has_Bazooka[id] = true поставь или просто вызови функцию выдачи ее оттуда

Отредактировал: csnet, - 22.3.2014, 20:36


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 22.3.2014, 21:00
Сообщение #3
Стаж: 12 лет

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

Код:
// Player Spawn
public Event_PlayerSpawn (id) {

// Reset Bazooka's Ammo
Bazooka_Ammo1[id] = get_pcvar_num(cvar_bazooka_ammo1)
Bazooka_Ammo2[id] = get_pcvar_num(cvar_bazooka_ammo2)
Bazooka_Ammo3[id] = get_pcvar_num(cvar_bazooka_ammo3)

// Gibs - Unhide Players
set_user_rendering(id,kRenderFxNone,0,0,0,kRenderTransAlpha,255)

// Removed any rockets in world.
new Rocket = find_ent_by_class(-1, "rpgrocket")
while (Rocket > 0) {

remove_entity(Rocket)
Rocket = find_ent_by_class(Rocket, "rpgrocket")

}

// Removed any rpglancher in world.
new RPG = find_ent_by_class(-1, "rpglancher")
while (RPG > 0) {

remove_entity(RPG)

RPG = find_ent_by_class(RPG, "rpglancher")

}

new v_oldmodel[64], p_oldmodel[64]

entity_get_string(id, EV_SZ_viewmodel, v_oldmodel, 63)
entity_get_string(id, EV_SZ_weaponmodel, p_oldmodel, 63)

if (equal(v_oldmodel, "models/v_rpg.mdl") || equal(p_oldmodel, "models/p_rpg.mdl")) {

// ВОТ СЮДА НАПИСАТЬ???
Has_Bazooka[id] = true
if (!Has_Bazooka[id]) {

new weaponid, clip, ammo
weaponid = get_user_weapon(id, clip, ammo)

new weaponname[64]
get_weaponname(weaponid, weaponname, 63)

new v_model[64], p_model[64]
format(v_model, 63, "%s", weaponname)
format(p_model, 63, "%s", weaponname)

replace(v_model, 63, "weapon_", "v_")
format(v_model, 63, "models/%s.mdl", v_model)
entity_set_string(id, EV_SZ_viewmodel, v_model)

replace(p_model, 63, "weapon_", "p_")
format(p_model, 63, "models/%s.mdl", p_model)
entity_set_string(id, EV_SZ_weaponmodel, p_model)

}
}

return PLUGIN_CONTINUE

}


Как cопрячь плагин базуки с плагином выдачи оружия?

Отредактировал: yukish, - 23.3.2014, 11:46
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 23.3.2014, 19:16
Сообщение #4
Стаж: 12 лет

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

Кстати, как сделать для игроков СТ и Т чтобы давало разное оружие?
типа if (user = CT) то выдать это оружие, а если юзер = Т то выдать это.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 29.3.2014, 16:10
Сообщение #5
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

new const team = 114
#define Team(%0) (get_pdata_int(%0, team,5))

switch(Team(id))
{
case 1: // terr team
case 2: // ct team
}


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
yukish
сообщение 1.4.2014, 23:27
Сообщение #6
Стаж: 12 лет

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

Понял.
А как вышеприведённую базуку прикрутить?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 3.4.2014, 21:45
Сообщение #7
Стаж: 12 лет

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

Как базуку прикрутить к плагину выдачи оружия??
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 9.5.2014, 14:34
Сообщение #8
Стаж: 12 лет

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

Модератор меня забанил.
Вопрос актуален - Как cопрячь плагин базуки с плагином выдачи оружия?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
serfreeman1337
сообщение 9.5.2014, 14:42
Сообщение #9
Стаж: 13 лет

Сообщений: 912
Благодарности: выкл.

Дай исходник базуки.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 12.5.2014, 15:12
Сообщение #10
Стаж: 12 лет

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

Цитата(serfreeman1337 @ 9.5.2014, 15:42) *
Дай исходник базуки.


Вот он:
http://rghost.net/55107834
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
serfreeman1337
сообщение 12.5.2014, 15:19
Сообщение #11
Стаж: 13 лет

Сообщений: 912
Благодарности: выкл.

В код базуки вставь вот это:
Код:
public setPlayerBazooka(id){
give_item(id, "weapon_knife")

Has_Bazooka[id] = true
Allow_Shooting[id] = true

Bazooka_Ammo1[id] = get_pcvar_num(cvar_bazooka_ammo1)
Bazooka_Ammo2[id] = get_pcvar_num(cvar_bazooka_ammo2)
Bazooka_Ammo3[id] = get_pcvar_num(cvar_bazooka_ammo3)

new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])

if(weaponID == CSW_KNIFE) {
Bazooka_Active[id] = true
Event_CurWeapon(id)
entity_set_int(id, EV_INT_weaponanim, SEQ_FIDGET)
} else {
Bazooka_Active[id] = true
client_cmd(id, "weapon_knife")
}

emit_sound(id, CHAN_WEAPON, "items/gunpickup2.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

return 1
}


И в плагине выдачи оружие заместо:
Код:
give_item(id, "weapon_knife")
cs_set_weapon_ammo(give_item(id, "weapon_awp"), 10)
cs_set_user_bpammo(id, CSW_AWP, 30)

Вставь:
Код:
callfunc_begin("setPlayerBazooka","bazooka_2_Slot3.amxx")
callfunc_push_int(id)
callfunc_end()
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 12.5.2014, 15:31
Сообщение #12
Стаж: 12 лет

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

Спасибо. Счас буду пробовать.
А ещё... можете уменьшить "зону автонаведения".
Когда стреляешь в режиме "Heat-Seeking", то можно хоть в воздух выстрелить, а ракета всё одно попадёт в игрока.
Можно ли уменьшить зону до 3-5 метром, если попал в круг 3-5 метров от игрока, значит самонаведение на цель попадёт в игрока. Если за пределами 3-5 метров то автонаведение не включается.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 12.5.2014, 15:38
Сообщение #13
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

public find_and_follow (info[]) {

new RocketEnt = info[0]
new Float:shortestDist = 10000.0
new nearestPlayer = 0


скорее всего там уменьшить надо

Отредактировал: csnet, - 12.5.2014, 15:38


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 12.5.2014, 16:13
Сообщение #14
Стаж: 12 лет

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

new Float:shortestDist = 10000.0
в каких единицах это задано, сколько нужно написать чтоб было 3-5 метров?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 13.5.2014, 13:20
Сообщение #15
Стаж: 12 лет

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

Хочу запретить другие режимы стрельбы, оставив только режим обычной стрельбы - Normal.

bazooka_restrict // Resrict Certain Modes: a = Normal | b = Heat-Seeking | c = User-Guided | d = None
cvar_bazooka_restrict = register_cvar("bazooka_restrict","d",FCVAR_SERVER) - все режимы включены
cvar_bazooka_restrict = register_cvar("bazooka_restrict","с",FCVAR_SERVER) - отключено ручное управление

Можно как-то сделать чтобы отключались оба, типа такого
cvar_bazooka_restrict = register_cvar("bazooka_restrict","bc",FCVAR_SERVER) - сработает ли тако вариант
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 13.5.2014, 13:26
Сообщение #16
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

просто найди кнопки в коде где IN_ATTACK2 переключает режимы и смени например на IN_RELOAD ;)


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя CH0CAPIC
сообщение 13.5.2014, 14:30
Сообщение #17


Стаж: 12 лет

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

возьми вот этот bazooka вчера нашел. простой, нету лишних добавок, толка есть zoom как у awp

Код:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <cstrike>

#define PLUGIN "[aBc JB] Bazooka Duel"
#define VERSION "1.0"
#define AUTHOR "Dias/ Editet By CH0CaPIC For JB"

#define weapon_at4cs "weapon_m249"
#define CSW_AT4CS CSW_M249

#define TASK_CHECKRELOAD 111112
#define TASK_RELOAD 111113

new g_at4cs
new g_had_at4cs[33], Float:g_lastfire[33], Float:g_lastaim[33], g_aiming[33],
g_smoke_id, g_spr_trail, g_spr_exp, is_reloading[33],
cvar_radius, cvar_maxdamage

new const v_model[] = "models/aBcJB_SNK1/v_at4ex.mdl"
new const p_model[] = "models/aBcJB_SNK1/p_at4ex.mdl"
new const w_model[] = "models/aBcJB_SNK1/w_at4ex.mdl"
new const s_model[] = "models/aBcJB_SNK1/s_rocket.mdl"

new const at4cs_sound[5][] = {
"weapons/at4-1.wav", // Fire Sound
"weapons/at4_clipin1.wav", // Clip in 1
"weapons/at4_clipin2.wav", // Clip in 2
"weapons/at4_clipin3.wav", // Clip in 3
"weapons/at4_draw.wav" // Draw
}

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

register_event("CurWeapon", "event_curweapon", "be", "1=1")
register_event("HLTV", "event_newround", "a", "1=0", "2=0")

register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
register_forward(FM_CmdStart, "fw_CmdStart")
register_forward(FM_SetModel, "fw_SetModel")

register_think("at4ex_rocket", "fw_rocket_think")
register_touch("at4ex_rocket", "*", "fw_rocket_touch")

RegisterHam(Ham_Weapon_Reload, weapon_at4cs, "fw_WeaponReload")
RegisterHam(Ham_Item_AddToPlayer, weapon_at4cs, "fw_AddToPlayer", 1)

cvar_radius = register_cvar("zp_at4cs_radius", "300.0")
cvar_maxdamage = register_cvar("zp_at4cs_maxdamage", "650.0")

register_clcmd("weapon_at4cs", "hook_weapon")
register_clcmd("say /bz", "give_bazooka")
}

public hook_weapon(id)
{
engclient_cmd(id, weapon_at4cs)
return PLUGIN_HANDLED
}

public plugin_precache()
{
engfunc(EngFunc_PrecacheModel, v_model)
engfunc(EngFunc_PrecacheModel, p_model)
engfunc(EngFunc_PrecacheModel, w_model)
engfunc(EngFunc_PrecacheModel, s_model)

engfunc(EngFunc_PrecacheGeneric, "sprites/weapon_at4cs.txt")
engfunc(EngFunc_PrecacheGeneric, "sprites/at4cs.spr")

g_smoke_id = engfunc(EngFunc_PrecacheModel, "sprites/effects/rainsplash.spr")
g_spr_trail = engfunc(EngFunc_PrecacheModel,"sprites/xbeam3.spr")
g_spr_exp = engfunc(EngFunc_PrecacheModel,"sprites/zerogxplode.spr")

for(new i = 0; i < sizeof(at4cs_sound); i++)
engfunc(EngFunc_PrecacheSound, at4cs_sound[i])
}

public give_bazooka(id, itemid)
{
if(itemid != g_at4cs)
return PLUGIN_HANDLED

g_had_at4cs[id] = 1
is_reloading[id] = 0
g_aiming[id] = 0

fm_give_item(id, weapon_at4cs)

static at4cs
at4cs = fm_get_user_weapon_entity(id, CSW_AT4CS)

cs_set_weapon_ammo(at4cs, 1)
cs_set_user_bpammo(id, CSW_AT4CS, 10)

return PLUGIN_CONTINUE
}

public plugin_natives() register_native("give_bazooka", "give_bazooka", 1)

public zp_user_infected_post(id)
{
g_had_at4cs[id] = 0
is_reloading[id] = 0
g_aiming[id] = 0

remove_task(id+TASK_CHECKRELOAD)
remove_task(id+TASK_RELOAD)
}

public zp_user_humanized_post(id)
{
g_had_at4cs[id] = 0
is_reloading[id] = 0
g_aiming[id] = 0

remove_task(id+TASK_CHECKRELOAD)
remove_task(id+TASK_RELOAD)
}

public event_newround()
{
remove_entity_name("at4ex_rocket")

for(new i = 0; i < get_maxplayers(); i++)
{
if(is_user_alive(i) && is_user_connected(i))
{
remove_task(i+TASK_CHECKRELOAD)
remove_task(i+TASK_RELOAD)
}
}
}

public event_curweapon(id)
{
if(!is_user_alive(id) || !is_user_connected(id))
return PLUGIN_HANDLED

if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
return PLUGIN_HANDLED

set_pev(id, pev_viewmodel2, v_model)
set_pev(id, pev_weaponmodel2, p_model)

return PLUGIN_CONTINUE
}

public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
{
if(!is_user_alive(id) || !is_user_connected(id))
return FMRES_IGNORED

if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
return FMRES_IGNORED

set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001)

return FMRES_HANDLED
}

public fw_AddToPlayer(ent, id)
{
if(!is_valid_ent(ent) || !is_user_alive(id))
return HAM_IGNORED

if(entity_get_int(ent, EV_INT_impulse) == 61296)
{
g_had_at4cs[id] = 1
entity_set_int(id, EV_INT_impulse, 0)

return HAM_HANDLED
}

if(g_had_at4cs[id])
{
message_begin(MSG_ONE, get_user_msgid("WeaponList"), _, id)
write_string("weapon_at4cs"); // WeaponName
write_byte(3) // PrimaryAmmoID
write_byte(1) // PrimaryAmmoMaxAmount
write_byte(-1) // SecondaryAmmoID
write_byte(-1) // SecondaryAmmoMaxAmount
write_byte(0) // SlotID (0...N)
write_byte(4) // NumberInSlot (1...N)
write_byte(CSW_AT4CS) // WeaponID
write_byte(0) // Flags
message_end()
}

return HAM_HANDLED
}

public fw_CmdStart(id, uc_handle, seed)
{
if(!is_user_alive(id) || !is_user_connected(id))
return FMRES_IGNORED

if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
return FMRES_IGNORED

static CurButton
CurButton = get_uc(uc_handle, UC_Buttons)

if(CurButton & IN_ATTACK)
{
static Float:CurTime
CurTime = get_gametime()

static at4cs
at4cs = fm_find_ent_by_owner(-1, weapon_at4cs, id)

if(cs_get_weapon_ammo(at4cs) > 0 && !is_reloading[id])
{
if(CurTime - 4.5 > g_lastfire[id])
{
set_weapon_anim(id, 1)
emit_sound(id, CHAN_WEAPON, at4cs_sound[0], 1.0, ATTN_NORM, 0, PITCH_NORM)

create_rocket(id)

static Float:Punch_Angles[3]

Punch_Angles[0] = -20.0
Punch_Angles[1] = 0.0
Punch_Angles[2] = 0.0

set_pev(id, pev_punchangle, Punch_Angles)
cs_set_weapon_ammo(at4cs, cs_get_weapon_ammo(at4cs) - 1)

if(cs_get_weapon_ammo(at4cs) <= 0 && !is_reloading[id])
{
if(cs_get_user_bpammo(id, CSW_AT4CS) > 0)
{
set_task(1.0, "at4cs_reload", id)
}
}

if(cs_get_user_zoom(id))
cs_set_user_zoom(id, CS_RESET_ZOOM, 1)

g_lastfire[id] = CurTime
}
} else {
if(!is_reloading[id])
{
if(cs_get_user_bpammo(id, CSW_AT4CS) > 0)
{
if(CurTime - 1.0 > g_lastfire[id])
{
at4cs_reload(id)
g_lastfire[id] = CurTime
}
}
}
}
}

if(CurButton & IN_ATTACK2)
{
static Float:CurTime
CurTime = get_gametime()

if((CurTime - 0.5 > g_lastaim[id]) && !is_reloading[id])
{
if(!g_aiming[id])
{
cs_set_user_zoom(id, CS_SET_FIRST_ZOOM, 1)
g_aiming[id] = 1
} else {
cs_set_user_zoom(id, CS_RESET_ZOOM, 1)
g_aiming[id] = 0
}

g_lastaim[id] = CurTime
}
}

CurButton &= ~IN_ATTACK
set_uc(uc_handle, UC_Buttons, CurButton)

CurButton &= ~IN_RELOAD
set_uc(uc_handle, UC_Buttons, CurButton)

return FMRES_HANDLED
}

public fw_SetModel(ent, const model[])
{
if(!is_valid_ent(ent))
return FMRES_IGNORED

static szClassName[33]
entity_get_string(ent, EV_SZ_classname, szClassName, charsmax(szClassName))

if(!equal(szClassName, "weaponbox"))
return FMRES_IGNORED

static iOwner
iOwner = entity_get_edict(ent, EV_ENT_owner)

if(equal(model, "models/w_m249.mdl"))
{
static at4cs
at4cs = find_ent_by_owner(-1, "weapon_m249", ent)

if(!is_valid_ent(at4cs))
return FMRES_IGNORED;

if(g_had_at4cs[iOwner])
{
entity_set_int(at4cs, EV_INT_impulse, 61296)
g_had_at4cs[iOwner] = 0
entity_set_model(ent, w_model)

return FMRES_SUPERCEDE
}
}

return FMRES_IGNORED
}

public at4cs_reload(id)
{
if(is_reloading[id])
return

is_reloading[id] = 1
set_weapon_anim(id, 3)

set_task(0.1, "checking_reload", id+TASK_CHECKRELOAD, _, _, "b")
set_task(4.0, "reload_complete", id+TASK_RELOAD)
}

public checking_reload(id)
{
id -= TASK_CHECKRELOAD

if(cs_get_user_zoom(id))
cs_set_user_zoom(id, CS_RESET_ZOOM, 1)

if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
{
remove_task(id+TASK_CHECKRELOAD)
remove_task(id+TASK_RELOAD)

is_reloading[id] = 0
}
}

public reload_complete(id)
{
id -= TASK_RELOAD

if(!is_reloading[id])
return

remove_task(id+TASK_CHECKRELOAD)

static at4cs
at4cs = fm_find_ent_by_owner(-1, weapon_at4cs, id)

cs_set_weapon_ammo(at4cs, 1)
cs_set_user_bpammo(id, CSW_AT4CS, cs_get_user_bpammo(id, CSW_AT4CS) - 1)
is_reloading[id] = 0
}

public fw_WeaponReload(ent)
{
static id
id = pev(ent, pev_owner)

if(!is_user_alive(id) || !is_user_connected(id))
return HAM_IGNORED

if(get_user_weapon(id) != CSW_AT4CS || !g_had_at4cs[id])
return HAM_IGNORED

static Float:CurTime
CurTime = get_gametime()

if(!is_reloading[id])
{
if(cs_get_user_bpammo(id, CSW_AT4CS) > 0)
{
if(CurTime - 1.0 > g_lastfire[id])
{
at4cs_reload(id)
g_lastfire[id] = CurTime
}
}
}

return HAM_SUPERCEDE
}

public create_rocket(id)
{
new ent, Float:Origin[3], Float:Angles[3], Float:Velocity[3]

ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
engfunc(EngFunc_GetAttachment, id, 0, Origin, Angles)
pev(id, pev_angles, Angles)

set_pev(ent, pev_origin, Origin)
set_pev(ent, pev_angles, Angles)
set_pev(ent, pev_solid, 2)
set_pev(ent, pev_movetype, 5)
set_pev(ent, pev_classname, "at4ex_rocket")
set_pev(ent, pev_owner, id)
engfunc(EngFunc_SetModel, ent, s_model)

set_pev(ent, pev_mins, {-1.0, -1.0, -1.0})
set_pev(ent, pev_maxs, {1.0, 1.0, 1.0})

velocity_by_aim(id, 1750, Velocity)
set_pev(ent, pev_velocity, Velocity)

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMFOLLOW) // TE id
write_short(ent) // entity:attachment to follow
write_short(g_spr_trail) // sprite index
write_byte(25) // life in 0.1's
write_byte(2) // line width in 0.1's
write_byte(255) // r
write_byte(255) // g
write_byte(255) // b
write_byte(200) // brightness
message_end()

set_pev(ent, pev_iuser4, 0)
set_pev(ent, pev_nextthink, halflife_time() + 0.1)
}

public fw_rocket_think(ent)
{
if(!pev_valid(ent))
return

static Float:Origin[3]
pev(ent, pev_origin, Origin)

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_SPRITE)
engfunc(EngFunc_WriteCoord, Origin[0])
engfunc(EngFunc_WriteCoord, Origin[1])
engfunc(EngFunc_WriteCoord, Origin[2])
write_short(g_smoke_id)
write_byte(2)
write_byte(200)
message_end()

if(pev(ent, pev_iuser4) == 0)
{
static Victim
Victim = FindClosesEnemy(ent)

if(is_user_alive(Victim))
{
set_pev(ent, pev_iuser4, Victim)
}
} else {
static Victim
Victim = pev(ent, pev_iuser4)

if(is_user_alive(Victim))
{
static Float:VicOrigin[3]
pev(Victim, pev_origin, VicOrigin)

turn_to_target(ent, Origin, Victim, VicOrigin)
hook_ent(ent, Victim, 500.0)
} else {
set_pev(ent, pev_iuser4, 0)
}
}

set_pev(ent, pev_nextthink, halflife_time() + 0.075)
}

public fw_rocket_touch(rocket, touch)
{
if(!pev_valid(rocket))
return

if(is_user_alive(touch) && pev(rocket, pev_owner) == touch)
return

static Float:Origin[3]
pev(rocket, pev_origin, Origin)

message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoord, Origin[0])
engfunc(EngFunc_WriteCoord, Origin[1])
engfunc(EngFunc_WriteCoord, Origin[2])
write_short(g_spr_exp) // sprite index
write_byte(20) // scale in 0.1's
write_byte(30) // framerate
write_byte(0) // flags
message_end()

static owner, iVictim

iVictim = -1
owner = pev(rocket, pev_owner)

while((iVictim = find_ent_in_sphere(iVictim, Origin, get_pcvar_float(cvar_radius))) != 0)
{
if((0 < iVictim < 32) && is_user_alive(iVictim))
{
new Float:MaxDamage, Float:Damage

MaxDamage = get_pcvar_float(cvar_maxdamage)
Damage = random_float(MaxDamage - random_float(0.0, 100.0), MaxDamage + random_float(0.0, 100.0))

ExecuteHam(Ham_TakeDamage, iVictim, 0, owner, 0, DMG_BULLET)

static health
health = get_user_health(iVictim)

if(health - Damage >= 1)
{
fm_set_user_health(iVictim, health - floatround(Damage))
}
else
{
death_message(owner, iVictim, 1)
}
}
}

engfunc(EngFunc_RemoveEntity, rocket)
}

stock set_weapon_anim(id, anim)
{
set_pev(id, pev_weaponanim, anim)

message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id)
write_byte(anim)
write_byte(pev(id,pev_body))
message_end()
}

stock death_message(Killer, Victim, ScoreBoard)
{
// Block death msg
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET)
ExecuteHamB(Ham_Killed, Victim, Killer, 2)
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT)

// Death
make_deathmsg(Killer, Victim, 0, "")

// Update score board
if (ScoreBoard)
{
message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"))
write_byte(Killer) // id
write_short(pev(Killer, pev_frags)) // frags
write_short(cs_get_user_deaths(Killer)) // deaths
write_short(0) // class?
write_short(get_user_team(Killer)) // team
message_end()

message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"))
write_byte(Victim) // id
write_short(pev(Victim, pev_frags)) // frags
write_short(cs_get_user_deaths(Victim)) // deaths
write_short(0) // class?
write_short(get_user_team(Victim)) // team
message_end()
}
}

stock FindClosesEnemy(entid)
{
new Float:Dist
new Float:maxdistance=300.0
new indexid=0
for(new i=1;i<=get_maxplayers();i++){
if(is_user_alive(i) && is_valid_ent(i) && can_see_fm(entid, i)
&& pev(entid, pev_owner) != i && cs_get_user_team(pev(entid, pev_owner)) != cs_get_user_team(i))
{
Dist = entity_range(entid, i)
if(Dist <= maxdistance)
{
maxdistance=Dist
indexid=i

return indexid
}
}
}
return 0
}

stock bool:can_see_fm(entindex1, entindex2)
{
if (!entindex1 || !entindex2)
return false

if (pev_valid(entindex1) && pev_valid(entindex1))
{
new flags = pev(entindex1, pev_flags)
if (flags & EF_NODRAW || flags & FL_NOTARGET)
{
return false
}

new Float:lookerOrig[3]
new Float:targetBaseOrig[3]
new Float:targetOrig[3]
new Float:temp[3]

pev(entindex1, pev_origin, lookerOrig)
pev(entindex1, pev_view_ofs, temp)
lookerOrig[0] += temp[0]
lookerOrig[1] += temp[1]
lookerOrig[2] += temp[2]

pev(entindex2, pev_origin, targetBaseOrig)
pev(entindex2, pev_view_ofs, temp)
targetOrig[0] = targetBaseOrig [0] + temp[0]
targetOrig[1] = targetBaseOrig [1] + temp[1]
targetOrig[2] = targetBaseOrig [2] + temp[2]

engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) // checks the had of seen player
if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater))
{
return false
}
else
{
new Float:flFraction
get_tr2(0, TraceResult:TR_flFraction, flFraction)
if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
{
return true
}
else
{
targetOrig[0] = targetBaseOrig [0]
targetOrig[1] = targetBaseOrig [1]
targetOrig[2] = targetBaseOrig [2]
engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) // checks the body of seen player
get_tr2(0, TraceResult:TR_flFraction, flFraction)
if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
{
return true
}
else
{
targetOrig[0] = targetBaseOrig [0]
targetOrig[1] = targetBaseOrig [1]
targetOrig[2] = targetBaseOrig [2] - 17.0
engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) // checks the legs of seen player
get_tr2(0, TraceResult:TR_flFraction, flFraction)
if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2))
{
return true
}
}
}
}
}
return false
}

stock turn_to_target(ent, Float:Ent_Origin[3], target, Float:Vic_Origin[3])
{
if(target)
{
new Float:newAngle[3]
entity_get_vector(ent, EV_VEC_angles, newAngle)
new Float:x = Vic_Origin[0] - Ent_Origin[0]
new Float:z = Vic_Origin[1] - Ent_Origin[1]

new Float:radians = floatatan(z/x, radian)
newAngle[1] = radians * (180 / 3.14)
if (Vic_Origin[0] < Ent_Origin[0])
newAngle[1] -= 180.0

entity_set_vector(ent, EV_VEC_angles, newAngle)
}
}

stock hook_ent(ent, victim, Float:speed)
{
static Float:fl_Velocity[3]
static Float:VicOrigin[3], Float:EntOrigin[3]

pev(ent, pev_origin, EntOrigin)
pev(victim, pev_origin, VicOrigin)

static Float:distance_f
distance_f = get_distance_f(EntOrigin, VicOrigin)

if (distance_f > 10.0)
{
new Float:fl_Time = distance_f / speed

fl_Velocity[0] = (VicOrigin[0] - EntOrigin[0]) / fl_Time
fl_Velocity[1] = (VicOrigin[1] - EntOrigin[1]) / fl_Time
fl_Velocity[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time
} else
{
fl_Velocity[0] = 0.0
fl_Velocity[1] = 0.0
fl_Velocity[2] = 0.0
}

entity_set_vector(ent, EV_VEC_velocity, fl_Velocity)
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1066\\ f0\\ fs16 \n\\ par }
*/
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя CH0CAPIC
сообщение 13.5.2014, 14:37
Сообщение #18


Стаж: 12 лет

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

простой способ думаю должен работать
Код:
#include <amxmodx>
#include <fun>
#include <cstrike>
#include <engine>
#include <hamsandwich>

native give_bazooka(id)

new ent1, ent2

public plugin_init()
{
register_plugin("AWP_INDIA Weapon Giver", "0.3", "S0m3Th1nG_AwFul!")

new mapname[32]
get_mapname(mapname,31)
if(equali(mapname,"awp_india"))
{
ents_removing()
RegisterHam(Ham_Spawn, "player", "Player_Spawn", 1)
}
}

public ents_removing()
{
while((ent1 = find_ent_by_class(ent1,"game_player_equip") != 0) || (ent2 = find_ent_by_class(ent2, "player_weaponstrip") != 0))
{
remove_entity(find_ent_by_class(ent1, "game_player_equip"))
remove_entity(find_ent_by_class(ent2, "player_weaponstrip"))
}
}

public Player_Spawn(id)
{
if(is_user_alive(id))
{
strip_user_weapons(id)
give_bazooka(id)
give_item(id, "weapon_knife")
}
}


Отредактировал: CH0CAPIC, - 13.5.2014, 14:40
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя CH0CAPIC
сообщение 13.5.2014, 14:53
Сообщение #19


Стаж: 12 лет

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

идея очень понравился, как добавить cvar чтобы он отключал плагин, если админ захочет чтобы он отключал.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
yukish
сообщение 13.5.2014, 17:22
Сообщение #20
Стаж: 12 лет

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

Цитата(CH0CAPIC @ 13.5.2014, 15:37) *
простой способ думаю должен работать
Код:
#include <amxmodx>
#include <fun>
#include <cstrike>
#include <engine>
#include <hamsandwich>

native give_bazooka(id)

new ent1, ent2

public plugin_init()
{
register_plugin("AWP_INDIA Weapon Giver", "0.3", "S0m3Th1nG_AwFul!")

new mapname[32]
get_mapname(mapname,31)
if(equali(mapname,"awp_india"))
{
ents_removing()
RegisterHam(Ham_Spawn, "player", "Player_Spawn", 1)
}
}

public ents_removing()
{
while((ent1 = find_ent_by_class(ent1,"game_player_equip") != 0) || (ent2 = find_ent_by_class(ent2, "player_weaponstrip") != 0))
{
remove_entity(find_ent_by_class(ent1, "game_player_equip"))
remove_entity(find_ent_by_class(ent2, "player_weaponstrip"))
}
}

public Player_Spawn(id)
{
if(is_user_alive(id))
{
strip_user_weapons(id)
give_bazooka(id)
give_item(id, "weapon_knife")
}
}


Спасибо за ответ.
А откуда ваш плагин узнает что оружие базука находится в стороннем амхх плагине,
ведь ссылки на bazooka.amxx у вас вообще нет.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: