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

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

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

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

Harry Potter Палка "прицел"

Статус пользователя soneekk
сообщение 14.1.2015, 21:42
Сообщение #1


Стаж: 13 лет

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

Здравствуйте, как сделать прицел на оружие а именно на "Harry Potter Палка", эта возможна через плагин или надо модельку переделать ? может кто то поможет ?

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

#define PLUGIN "Magic stick"
#define VERSION "1.0"
#define AUTHOR "Unknown"

#define FIRERATE 1.8
#define HITSD 0.7
#define DAMAGE 30.0
#define DAMAGE_MULTI 3.0

#define CSW_WPN CSW_KNIFE
#define weapon "weapon_knife"

new const snd_hit[][] = { "knife_hit1.wav" }
new const snd_fire[][] = { "chill.wav" }

new const MAGIC_MODEL[][] =
{
"models/SuperJBMod/v_palka.mdl",
"models/SuperJBMod/p_palka.mdl"
}

new Float:g_flLastFireTime[33], g_HasRifle[33]

new g_sprBeam, g_sprExp, g_sprBlood, sprite_ability

const ANIM_FIRE = 1
const ANIM_DRAW = 3
const WPNKEY = 2816

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

//Event
register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0")
register_event("CurWeapon", "event_CurWeapon", "b", "1=1")

//Message
//register_message(get_user_msgid("WeapPickup"), "message_weappickup")

//Fm (Forward)
register_forward(FM_CmdStart, "fw_CmdStart")
register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)

//Ham
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
RegisterHam(Ham_Item_Deploy, weapon, "fw_Deploy_Post", 1)
RegisterHam(Ham_Item_AddToPlayer, weapon, "fw_AddToPlayer")
RegisterHam(Ham_Weapon_SecondaryAttack, weapon, "SecondaryAttack_Pre", 0)

register_clcmd("giv_gar", "give_rifle")
}

public plugin_precache()
{
static i

for(i = 0; i < sizeof MAGIC_MODEL; i++)
precache_model(MAGIC_MODEL[i])

g_sprBlood = precache_model("sprites/blood.spr")
g_sprBeam = precache_model("sprites/lgtning.spr")
g_sprExp = precache_model("sprites/deimosexp.spr")

sprite_ability = precache_model("sprites/green.spr")
// precache_generic("sprites/js_jb_magic_stick.txt")
// precache_generic("sprites/js_shop_item.spr")

for(i = 0; i < sizeof snd_fire; i++)
precache_sound(snd_fire[i])

for(i = 0; i < sizeof snd_hit; i++)
precache_sound(snd_hit[i])

// register_clcmd("js_jb_magic_stick", "clcmd_justserver")
}
/*
public clcmd_justserver(id)
{
engclient_cmd(id, "weapon_knife")
return PLUGIN_HANDLED
}

public message_weappickup(msg_id, msg_dest, id)
{
if(!is_user_connected(id))
return

if(get_msg_arg_int(1) == CSW_KNIFE)
{
message_begin(MSG_ONE, get_user_msgid("WeaponList"), {0,0,0}, id)
if(g_HasRifle[id])
write_string("js_jb_magic_stick")
else
write_string("weapon_knife")
write_byte(-1)
write_byte(-1)
write_byte(-1)
write_byte(-1)
write_byte(2)
write_byte(1)
write_byte(CSW_KNIFE)
write_byte(0)
message_end()
}
}
*/
public event_CurWeapon(id)
{
if(!is_user_alive(id))
return

if(!g_HasRifle[id] || get_user_weapon(id) != CSW_WPN)
return

set_pev(id, pev_viewmodel2, "models/SuperJBMod/v_palka.mdl")
set_pev(id, pev_weaponmodel2, "models/SuperJBMod/p_palka.mdl")
}

public fw_PlayerKilled(victim, attacker, shouldgib)
{
if(!is_user_connected(victim))
return HAM_IGNORED

g_HasRifle[victim] = false

return HAM_HANDLED
}

public Event_NewRound()
{
for (new i = 1; i <= get_maxplayers(); i++)
{
if(!is_user_connected(i))
continue

g_HasRifle[i] = false
}
}

public SecondaryAttack_Pre(Weapon)
{
new Player = get_pdata_cbase(Weapon, 41, 4)

if(!is_user_alive(Player))
return HAM_IGNORED

if(g_HasRifle[Player])
return HAM_SUPERCEDE

return HAM_HANDLED;
}

public give_rifle(id)
{
if(!is_user_alive(id))
return

g_HasRifle[id] = true
fm_give_item(id, weapon)
engclient_cmd(id, weapon)

if(get_user_weapon(id) == CSW_KNIFE)
{
set_pev(id, pev_viewmodel2, "models/SuperJBMod/v_palka.mdl")
set_pev(id, pev_weaponmodel2, "models/SuperJBMod/p_palka.mdl")
set_wpnanim(id, ANIM_DRAW)
}
}

public fw_CmdStart(id, handle, seed)
{
if(!is_user_alive(id))
return FMRES_IGNORED

if(!g_HasRifle[id])
return FMRES_IGNORED

if(get_user_weapon(id) != CSW_WPN)
return FMRES_IGNORED

static iButton
iButton = get_uc(handle, UC_Buttons)

if(iButton & IN_ATTACK)
{
set_uc(handle, UC_Buttons, iButton & ~IN_ATTACK)

static Float:flCurTime
flCurTime = halflife_time()

if(flCurTime - g_flLastFireTime[id] < FIRERATE)
return FMRES_IGNORED

static iWpnID
iWpnID = get_pdata_cbase(id, 373, 5)

set_pdata_float(iWpnID, 46, FIRERATE, 4)
set_pdata_float(iWpnID, 47, FIRERATE, 4)
set_pdata_float(iWpnID, 48, FIRERATE, 4)

g_flLastFireTime[id] = flCurTime
primary_attack(id)
make_punch(id, 50)

return FMRES_IGNORED
}
return FMRES_IGNORED
}

public fw_UpdateClientData_Post(id, sendweapons, handle)
{
if(!is_user_alive(id))
return FMRES_IGNORED

if(!g_HasRifle[id])
return FMRES_IGNORED

if(get_user_weapon(id) != CSW_WPN)
return FMRES_IGNORED

set_cd(handle, CD_flNextAttack, halflife_time() + 0.001)
return FMRES_HANDLED
}

public fw_Deploy_Post(wpn)
{
static id
id = fm_cs_get_weapon_ent_owner(wpn)

if(is_user_connected(id) && g_HasRifle[id])
{
set_pev(id, pev_viewmodel2, "models/SuperJBMod/v_palka.mdl")
set_pev(id, pev_weaponmodel2, "models/SuperJBMod/p_palka.mdl")
set_wpnanim(id, ANIM_DRAW)
}
return HAM_IGNORED
}

public fw_AddToPlayer(wpn, id)
{
if(!is_valid_ent(wpn) || is_user_connected(id) || entity_get_int(wpn, EV_INT_impulse) != WPNKEY)
return HAM_IGNORED

g_HasRifle[id] = true
entity_set_int(wpn, EV_INT_impulse, 0)

return HAM_IGNORED
}

public primary_attack(id)
{
set_wpnanim(id, ANIM_FIRE)
entity_set_vector(id, EV_VEC_punchangle, Float:{ -1.5, 0.0, 0.0 })
emit_sound(id, CHAN_WEAPON, snd_fire[random_num(0, sizeof snd_fire - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

static iTarget, iBody, iEndOrigin[3]
get_user_origin(id, iEndOrigin, 3)

fire_effects(id, iEndOrigin)
get_user_aiming(id, iTarget, iBody)

new iEnt = create_entity("info_target")

static Float:flOrigin[3]
IVecFVec(iEndOrigin, flOrigin)
entity_set_origin(iEnt, flOrigin)

remove_entity(iEnt)

if(is_user_alive(iTarget) && (cs_get_user_team(iTarget) != cs_get_user_team(id)))
{
if(HITSD > 0.0)
{
static Float:flVelocity[3]
get_user_velocity(iTarget, flVelocity)
xs_vec_mul_scalar(flVelocity, HITSD, flVelocity)
set_user_velocity(iTarget, flVelocity)

new iHp = pev(iTarget, pev_health)
new Float:iDamage, iBloodScale
if(iBody == HIT_HEAD)
{
iDamage = DAMAGE
iBloodScale = 10
}
else
{
iDamage = DAMAGE*DAMAGE_MULTI
iBloodScale = 25
}
if(iHp > iDamage)
{
make_blood(iTarget, iBloodScale)
set_pev(iTarget, pev_health, iHp-iDamage)
damage_effects(iTarget)
}
else if(iHp <= iDamage)
{
balls_effects(iTarget)
ExecuteHamB(Ham_Killed, iTarget, id, 2)
}
}
}
else emit_sound(id, CHAN_WEAPON, snd_hit[random_num(0, sizeof snd_hit - 1)], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}

public client_putinserver(id) g_HasRifle[id] = false
public client_disconnect(id) g_HasRifle[id] = false
public plugin_natives() register_native("give_rifle", "give_rifle", 1)

stock fire_effects(id, iEndOrigin[3])
{
UTIL_PlayWeaponAnimation(id, 5)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte (TE_BEAMENTPOINT)
write_short(id | 0x1000)
write_coord(iEndOrigin[0]) // Конец луча: x
write_coord(iEndOrigin[1]) // Конец луча: y
write_coord(iEndOrigin[2]) // Конец луча: z
write_short(g_sprBeam)
write_byte(0)
write_byte(5)
write_byte(1)
write_byte(30)
write_byte(40)
write_byte(255)
write_byte(0)
write_byte(0)
write_byte(1000)
write_byte(0)
message_end()

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(3)
write_coord(iEndOrigin[0])
write_coord(iEndOrigin[1])
write_coord(iEndOrigin[2])
write_short(g_sprExp)
write_byte(10)
write_byte(15)
write_byte(4)
message_end()
}

stock balls_effects(index)
{
static Float:flOrigin[3]
pev(index, pev_origin, flOrigin)

message_begin (MSG_BROADCAST,SVC_TEMPENTITY)
write_byte( TE_SPRITETRAIL ) // Throws a shower of sprites or models
engfunc(EngFunc_WriteCoord, flOrigin[ 0 ]) // start pos
engfunc(EngFunc_WriteCoord, flOrigin[ 1 ])
engfunc(EngFunc_WriteCoord, flOrigin[ 2 ] + 200.0)
engfunc(EngFunc_WriteCoord, flOrigin[ 0 ]) // velocity
engfunc(EngFunc_WriteCoord, flOrigin[ 1 ])
engfunc(EngFunc_WriteCoord, flOrigin[ 2 ] + 20.0)
write_short(sprite_ability) // spr
write_byte(15) // (count)
write_byte(random_num(27,30)) // (life in 0.1's)
write_byte(2) // byte (scale in 0.1's)
write_byte(random_num(30,70)) // (velocity along vector in 10's)
write_byte(40) // (randomness of velocity in 10's)
message_end()
}

stock damage_effects(id)
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("Damage"), _, id)
write_byte(0)
write_byte(0)
write_long(DMG_NERVEGAS)
write_coord(0)
write_coord(0)
write_coord(0)
message_end()

message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), {0,0,0}, id)
write_short(1<<13)
write_short(1<<14)
write_short(0x0000)
write_byte(0)
write_byte(255)
write_byte(0)
write_byte(100)
message_end()

message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, id)
write_short(0xFFFF)
write_short(1<<13)
write_short(0xFFFF)
message_end()

static Float:flOrigin[3]
pev(id, pev_origin, flOrigin)

message_begin (MSG_BROADCAST,SVC_TEMPENTITY)
write_byte( TE_SPRITETRAIL ) // Throws a shower of sprites or models
engfunc(EngFunc_WriteCoord, flOrigin[ 0 ]) // start pos
engfunc(EngFunc_WriteCoord, flOrigin[ 1 ])
engfunc(EngFunc_WriteCoord, flOrigin[ 2 ] + 200.0)
engfunc(EngFunc_WriteCoord, flOrigin[ 0 ]) // velocity
engfunc(EngFunc_WriteCoord, flOrigin[ 1 ])
engfunc(EngFunc_WriteCoord, flOrigin[ 2 ] + 20.0)
write_short(sprite_ability) // spr
write_byte(15) // (count)
write_byte(random_num(27,30)) // (life in 0.1's)
write_byte(2) // byte (scale in 0.1's)
write_byte(random_num(30,70)) // (velocity along vector in 10's)
write_byte(40) // (randomness of velocity in 10's)
message_end()
}

stock make_blood(id, scale)
{
new Float:iVictimOrigin[3]
pev(id, pev_origin, iVictimOrigin)

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(115)
write_coord(floatround(iVictimOrigin[0]+random_num(-20,20)))
write_coord(floatround(iVictimOrigin[1]+random_num(-20,20)))
write_coord(floatround(iVictimOrigin[2]+random_num(-20,20)))
write_short(g_sprBlood)
write_short(g_sprBlood)
write_byte(248)
write_byte(scale)
message_end()
}

stock set_wpnanim(id, anim)
{
entity_set_int(id, EV_INT_weaponanim, anim)
message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, id)
write_byte(anim)
write_byte(entity_get_int(id, EV_INT_body))
message_end()
}

stock UTIL_PlayWeaponAnimation(const Player, const Sequence)
{
set_pev(Player, pev_weaponanim, Sequence)

message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
write_byte(Sequence)
write_byte(0)
message_end()
}

stock make_punch(id, velamount)
{
static Float:flNewVelocity[3], Float:flCurrentVelocity[3]
velocity_by_aim(id, -velamount, flNewVelocity)
get_user_velocity(id, flCurrentVelocity)
xs_vec_add(flNewVelocity, flCurrentVelocity, flNewVelocity)
set_user_velocity(id, flNewVelocity)
}

stock fm_give_item(index, const item[])
{
if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
return 0

new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item))

if (!pev_valid(ent))
return 0

new Float:origin[3];
pev(index, pev_origin, origin)
set_pev(ent, pev_origin, origin)
set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
dllfunc(DLLFunc_Spawn, ent)

new save = pev(ent, pev_solid)

dllfunc(DLLFunc_Touch, ent, index)
if(pev(ent, pev_solid) != save)
return ent

engfunc(EngFunc_RemoveEntity, ent)

return -1
}

stock fm_cs_get_weapon_ent_owner(ent)
{
if (pev_valid(ent) != 2)
return -1

return get_pdata_cbase(ent, 41, 4)
}


Отредактировал: soneekk, - 14.1.2015, 21:46
Прикрепленные файлы:
Прикрепленный файл  magic_palka.rar ( 217,9 килобайт ) Кол-во скачиваний: 15
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Bloo
сообщение 14.1.2015, 21:43
Сообщение #2


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

soneekk, палка то плагином у вас стоит? Нужно ее исходник смотреть.
Пока писал, уже выложил)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя soneekk
сообщение 16.1.2015, 14:14
Сообщение #3


Стаж: 13 лет

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

никто не хочет помочь ? :S
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя bapstop
сообщение 16.1.2015, 16:53
Сообщение #4


Стаж: 12 лет

Сообщений: 206
Благодарностей: 100
Полезность: 686

soneekk, здесь точно помогут.
Скрытый текст
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя soneekk
сообщение 16.1.2015, 22:23
Сообщение #5


Стаж: 13 лет

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

Цитата(bapstop @ 16.1.2015, 17:53) *
soneekk, здесь точно помогут.
Скрытый текст



я по английски не знаю как объяснить что мне надо,.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя bapstop
сообщение 16.1.2015, 22:40
Сообщение #6


Стаж: 12 лет

Сообщений: 206
Благодарностей: 100
Полезность: 686

soneekk, google translate
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: