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

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

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

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

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Отброс снежка от стены

Статус пользователя DRIVE37
сообщение 4.11.2014, 16:36
Сообщение #1


Стаж: 11 лет

Сообщений: 146
Благодарностей: 14
Полезность: 69

Привет ребята можете помочь как сделать снежки чтобы они отлетали от стен на 15,10 секунд?
помогите ребята буду очень благодарен :-)

Код:
#include <amxmodx>
#include <cstrike>
#include <engine>
#include <hamsandwich>
#include <fakemeta_stocks>
#include <fakemeta_util>
#include <fun>
#include < deathrun_mode >

#define get_gun_owner(%1) get_pdata_cbase(%1, 41, 4)
#define SnowballVModel "models/bs_deathrun/snowball/v_snowball.mdl"
#define SnowballPModel "models/bs_deathrun/snowball/p_snowball.mdl"
#define SnowballWModel "models/bs_deathrun/snowball/w_snowball.mdl"
#define g_wSmoke "models/w_smokegrenade.mdl"

#define SoundHit "bs_deathrun/snowball/impalehit.wav"
#define SoundLaunch "bs_deathrun/snowball/impalelaunch1.wav"
#define SoundSplash "weapons/grenade_hit2.wav"
#define GLASS "models/glassgibs.mdl"
#define RING "sprites/shockwave.spr"
#define TRAIL "sprites/laserbeam.spr"

#define SNOWDAMAGE 50.0
#define FREEZETIME 3.0
#define CHILLTIME 8.0
#define TERHEALTH 300.0
#define SNOWBALLSPEED 2000.0

#define FROST_R 0
#define FROST_G 206
#define FROST_B 209

#define TASK_REMOVE 1337

new ModeId, in_snowman
new g_frozen[33]
new g_glassSpr ,g_Spr, trailSpr
new bool:g_ModeEnabled ;

public plugin_precache()
{
precache_model(SnowballVModel)
precache_model(SnowballPModel)
precache_model(SnowballWModel)
precache_model(g_wSmoke)

precache_sound(SoundHit)
precache_sound(SoundLaunch)
precache_sound(SoundSplash)

g_glassSpr = precache_model(GLASS)
g_Spr = precache_model(RING)
trailSpr = precache_model(TRAIL)
}

public plugin_init()
{

ModeId = dm_register_mode("Снежки", 3, true, "Играем в снежкии :)" )

register_forward(FM_Touch, "fw_Touch", 1)
register_forward(FM_SetModel, "fw_SetModel")
register_forward(FM_EmitSound, "fw_EmitSound")
register_forward(FM_PlayerPreThink, "fw_think")
register_logevent("NewRound", 2, "1=Round_Start")
RegisterHam(Ham_Spawn, "player", "hook_spawn_post", 1)
RegisterHam(Ham_Item_Deploy,"weapon_smokegrenade","CurWeapon", 1)
RegisterHam(Ham_Use,"func_button","UseButton",0)
RegisterHam(Ham_Touch, "weapon_hegrenade", "player_touchweapon"); // Косание.
RegisterHam(Ham_Touch, "weaponbox", "player_touchweapon"); // Косание.
RegisterHam(Ham_Touch, "armoury_entity", "player_touchweapon"); // Косание.

register_message(get_user_msgid("TextMsg"), "block_message")
register_message(get_user_msgid("SendAudio"), "block_sound")
}

public client_connect(id)
g_frozen[id] = false

public n21_dr_new_terr(id, mode)
{
if(mode == ModeId)
{
in_snowman = id

fm_strip_user_weapons(id)
fm_give_item(id, "weapon_smokegrenade")
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 999)
client_cmd(id, "weapon_smokegrenade")
set_pev(id, pev_viewmodel2, SnowballVModel)
set_pev(id, pev_weaponmodel2, SnowballPModel)
set_pev(id, pev_health, TERHEALTH)
message_begin(MSG_ONE, get_user_msgid("HideWeapon"), _, id)
write_byte((1<<0))
message_end()
}
}

public NewRound()
{
g_ModeEnabled = false ;
in_snowman = 0 ;
}


public CurWeapon(gun)
{
new id = get_gun_owner(gun)

if(g_ModeEnabled && cs_get_user_team(id) == CS_TEAM_T)
{
set_pev(id, pev_viewmodel2, SnowballVModel)
set_pev(id, pev_weaponmodel2, SnowballPModel)
}
}

public fw_think(id)
{
if(!is_user_connected(id))
return PLUGIN_CONTINUE

if(!is_user_alive(id) || !g_ModeEnabled || !g_frozen[id])
return PLUGIN_CONTINUE

set_pev(id, pev_velocity, Float:{ 0.0, 0.0, 0.0 })

return PLUGIN_CONTINUE
}

public fw_SetModel(entity, model[])
{
if (!g_ModeEnabled)
return FMRES_IGNORED

if (!equali(model, g_wSmoke))
return FMRES_IGNORED

new className[33]
pev(entity, pev_classname, className, 32)

if(equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade"))
{
entity_set_float(entity, EV_FL_nextthink, get_gametime() + 4000.0)
new Float:Sonic[3]
pev(entity, pev_velocity, Sonic)
xs_vec_normalize(Sonic, Sonic)
xs_vec_mul_scalar(Sonic, SNOWBALLSPEED, Sonic)
set_pev(entity, pev_velocity, Sonic)
set_pev(entity, pev_gravity, 0.5)
set_pev(entity, pev_friction, 0.0)
set_beamfollow(entity,10,10,Float:{0.0, 212.0, 255.0},170)
engfunc(EngFunc_SetModel, entity, SnowballWModel)

//set_pev(entity, pev_movetype, MOVETYPE_NOCLIP)
set_task(0.1, "change_solid", entity)

return FMRES_SUPERCEDE

}

return FMRES_IGNORED
}

public change_solid(ent)
{
if(is_valid_ent(ent))
set_pev(ent, pev_movetype, MOVETYPE_BOUNCE)
}

public fw_EmitSound(ent, channel, sample[], Float:volume, Float:attn, flags, pitch)
{
if(equal(sample, "weapons/grenade_hit1.wav") || equal(sample, "weapons/grenade_hit2.wav") || equal(sample, "weapons/grenade_hit3.wav"))
{
set_pev(ent, pev_velocity, {0.0, 0.0, 0.0})
set_pev(ent,pev_movetype,MOVETYPE_NONE)
set_rendering(ent)
emit_sound(ent, channel, SoundSplash, volume, attn, flags, pitch)
if(!task_exists(ent+TASK_REMOVE))
set_task(20.0,"Remove_Snowball",ent+TASK_REMOVE)

return FMRES_SUPERCEDE
}
return PLUGIN_CONTINUE
}

public player_touchweapon(id)
{
if(g_ModeEnabled)
return HAM_SUPERCEDE ;

return HAM_IGNORED;
}

public hook_spawn_post(id)
{
if(g_frozen[id])
{
set_pev(id, pev_renderfx, kRenderFxGlowShell)
set_pev(id, pev_rendercolor, Float:{ 0.0, 0.0, 0.0 })
set_pev(id, pev_rendermode, kRenderNormal)
set_pev(id, pev_renderamt, 25.0)
g_frozen[id] = false
}
}

public Remove_Snowball(lol)
{
new ent = lol - TASK_REMOVE

if(ent && g_ModeEnabled)
if(is_valid_ent(ent))
remove_entity(ent)
}

public dm_selected_mode(id, mode)
if(mode == ModeId)
{
g_ModeEnabled = true ;
set_cvar_string( "deathrun_mode", "SNOWBALLS" ) ;
in_snowman = id
fm_strip_user_weapons(id)
fm_give_item(id, "weapon_smokegrenade")
cs_set_user_bpammo(id, CSW_SMOKEGRENADE, 999)
client_cmd(id, "weapon_smokegrenade")
set_pev(id, pev_viewmodel2, SnowballVModel)
set_pev(id, pev_weaponmodel2, SnowballPModel)
set_pev(id, pev_health, TERHEALTH)
message_begin(MSG_ONE, get_user_msgid("HideWeapon"), _, id)
write_byte((1<<0))
message_end()

new Players[32]
new Count, i

get_players(Players, Count, "ahe","CT")

for (i=0; i<Count; i++)
ham_strip_weapon(Players[i],"weapon_usp")
}

public UseButton(ent, id, idactivator, use_type, Float:value)
{
if(!is_user_connected(id))
return HAM_SUPERCEDE

if(in_snowman == id)
return HAM_SUPERCEDE

return HAM_IGNORED
}

public fw_Touch(Toucher, Touched)
{
if(!g_ModeEnabled)
return FMRES_IGNORED

if(!is_user_connected(Touched) || !is_valid_ent(Toucher))
return FMRES_IGNORED

new classname[64]
entity_get_string(Toucher, EV_SZ_classname, classname, 63)
if(!equali(classname, "grenade"))
return FMRES_IGNORED

entity_get_string(Touched, EV_SZ_classname, classname, 63)
if(!equali(classname, "player"))
return FMRES_IGNORED

if(g_frozen[Touched] || cs_get_user_team(Touched) != CS_TEAM_CT)
return FMRES_SUPERCEDE

remove_entity(Toucher)

new Float:originF[3]
entity_get_vector(Touched, EV_VEC_origin, originF)

emit_sound(Touched, CHAN_BODY, SoundHit, 1.0, ATTN_NORM, 0, PITCH_NORM)

if(pev(Touched, pev_health) > SNOWDAMAGE)
{
//new attacker = pev(Toucher,pev_owner)

//ExecuteHam(Ham_TakeDamage, Touched, 0, attacker, SNOWDAMAGE, DMG_ALWAYSGIB | DMG_BULLET)
set_pev(Touched, pev_health, pev(Touched, pev_health) - SNOWDAMAGE)

engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_BEAMCYLINDER)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2])
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2]+385.0)
write_short(g_Spr)
write_byte(0)
write_byte(0)
write_byte(4)
write_byte(60)
write_byte(0)
write_byte(0)
write_byte(100)
write_byte(200)
write_byte(200)
write_byte(0)
message_end()

engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_BEAMCYLINDER)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2])
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2]+470.0)
write_short(g_Spr)
write_byte(0)
write_byte(0)
write_byte(4)
write_byte(60)
write_byte(0)
write_byte(0)
write_byte(100)
write_byte(200)
write_byte(200)
write_byte(0)
message_end()

engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, originF, 0)
write_byte(TE_BEAMCYLINDER)
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2])
engfunc(EngFunc_WriteCoord, originF[0])
engfunc(EngFunc_WriteCoord, originF[1])
engfunc(EngFunc_WriteCoord, originF[2]+555.0)
write_short(g_Spr)
write_byte(0)
write_byte(0)
write_byte(4)
write_byte(60)
write_byte(0)
write_byte(0)
write_byte(100)
write_byte(200)
write_byte(200)
write_byte(0)
message_end()
}
else
{
unfrozen(Touched)
ExecuteHam(Ham_Killed, Touched, Touched, 0)
return FMRES_IGNORED
}

g_frozen[Touched] = true
if(pev(Touched, pev_flags) & FL_ONGROUND)
set_pev(Touched, pev_gravity, 999999.9)
else
set_pev(Touched, pev_gravity, 0.000001)

set_pev(Touched, pev_flags, pev(Touched, pev_flags) | FL_FROZEN)
//entity_set_int(Touched, EV_INT_solid, SOLID_NOT)
message_begin(MSG_ONE, get_user_msgid("ScreenFade"), _, Touched)
write_short(0)
write_short(0)
write_short(0x0004)
write_byte(0)
write_byte(50)
write_byte(200)
write_byte(100)
message_end()

message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("Damage"), _, Touched)
write_byte(0)
write_byte(0)
write_long(DMG_DROWN)
write_coord(0)
write_coord(0)
write_coord(0)
message_end()

set_pev(Touched, pev_renderfx, kRenderFxGlowShell)
set_pev(Touched, pev_rendercolor, Float:{ 0.0, 100.0, 200.0 })
set_pev(Touched, pev_rendermode, kRenderNormal)
set_pev(Touched, pev_renderamt, 25.0)
set_task(FREEZETIME, "unfrozen", Touched)

return FMRES_IGNORED
}

public unfrozen(Touched)
{
if(!is_user_alive(Touched))
return PLUGIN_CONTINUE

//entity_set_int(Touched, EV_INT_solid, SOLID_SLIDEBOX)
set_pev(Touched, pev_flags, pev(Touched, pev_flags) & ~FL_FROZEN)
g_frozen[Touched] = false
set_pev(Touched, pev_gravity, 1.0)
set_pev(Touched, pev_renderfx, kRenderFxGlowShell)
set_pev(Touched, pev_rendercolor, Float:{ 0.0, 0.0, 0.0 })
set_pev(Touched, pev_rendermode, kRenderNormal)
set_pev(Touched, pev_renderamt, 25.0)

message_begin(MSG_ONE, get_user_msgid("ScreenFade"), _, Touched)
write_short((1<<12))
write_short(0)
write_short(0x0000)
write_byte(0)
write_byte(50)
write_byte(200)
write_byte(100)
message_end()

emit_sound(Touched, CHAN_BODY, SoundLaunch, 1.0, ATTN_NORM, 0, PITCH_NORM)

new origin[3]
get_user_origin(Touched, origin)

message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
write_byte(TE_BREAKMODEL)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2] + 24)
write_coord(16)
write_coord(16)
write_coord(16)
write_coord(random_num(-50, 50))
write_coord(random_num(-50, 50))
write_coord(25)
write_byte(10)
write_short(g_glassSpr)
write_byte(10)
write_byte(25)
write_byte(0x01)
message_end()

return PLUGIN_CONTINUE
}

set_beamfollow(ent,life,width,Float:rgb[3],brightness)
{
//clear_beamfollow(ent);

message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(TE_BEAMFOLLOW);
write_short(ent); // entity
write_short(trailSpr); // sprite
write_byte(life); // life
write_byte(width); // width
write_byte(floatround(rgb[0])); // red
write_byte(floatround(rgb[1])); // green
write_byte(floatround(rgb[2])); // blue
write_byte(brightness); // brightness
message_end();
}

public block_message()
{
if(!g_ModeEnabled)
return PLUGIN_CONTINUE

if(get_msg_args() != 5 || get_msg_argtype(5) != ARG_STRING)
{
return PLUGIN_CONTINUE
}

new arg5[20]
get_msg_arg_string(5, arg5, 19)
if(equal(arg5, "#Fire_in_the_hole"))
{
return PLUGIN_HANDLED
}

return PLUGIN_CONTINUE
}

public block_sound(msgid, msg_dest, msg_entity)
{
if(!g_ModeEnabled)
return PLUGIN_CONTINUE

if(get_msg_args() != 3 || get_msg_argtype(2) != ARG_STRING)
{
return PLUGIN_HANDLED
}

new arg2[20]
get_msg_arg_string(2,arg2,19)
if(equal(arg2[1], "!MRAD_FIREINHOLE"))
{
return PLUGIN_HANDLED
}

return PLUGIN_CONTINUE
}

stock ham_strip_weapon(id,weapon[])
{
if(!equal(weapon,"weapon_",7)) return 0

new wId = get_weaponid(weapon)
if(!wId) return 0

new wEnt
while((wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
if(!wEnt) return 0

if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt)

if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0
ExecuteHamB(Ham_Item_Kill,wEnt)

set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId))

return 1
}


Отредактировал: XyLiGaN, - 6.11.2014, 12:47
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя csnet
сообщение 4.11.2014, 16:53
Сообщение #2
Стаж: 12 лет

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

set_pev(entity, pev_movetype, MOVETYPE_NOCLIP)

>>

set_pev(entity, pev_movetype, MOVETYPE_BOUNCE)



Отредактировал: csnet, - 4.11.2014, 16:55


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: