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

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

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

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

11 страниц V  « 6 7 8 ... 9 10 »

Snowball (0.6 alpha)

, Снежки на сервере
Статус пользователя Bloo
сообщение 12.12.2014, 23:18
Сообщение #121


Стаж: 12 лет

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

staff2517, у меня то есть, но дать не могу) На дс он лежит) А так в любую разминку можно залепить, просто в функции разминки server_cmd "amxx unpause snowball.amxx" перед рестартом server_cmd "amxx pause snowball.amxx", где то была тема какую то разминку так же правили, попробуй найти, или попроси скриптеров добавить правильно строки в какой нибудь плагин разминки.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
ops244
сообщение 12.12.2014, 23:20
Сообщение #122
Стаж: 15 лет

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

чёт ща играл на сервере где снежки и прочая ерунда, за 5 мин соскучился по обычной yy.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 12.12.2014, 23:22
Сообщение #123


Стаж: 12 лет

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

ops244, у меня война началась с ними, одни орут что мешает на ноже, быстро не возьмешь, другие вообще говорят что нафиг они не нужны, третьи вопят оставьте, круто! :D В итоге сделал разминку на снежках)
Ну если на другой слот удастся перенести, возможно оставлю.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя qpi3ik
сообщение 12.12.2014, 23:30
Сообщение #124


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Цитата(Bloo @ 13.12.2014, 0:18) *
ops244, у меня война началась с ними, одни орут что мешает на ноже, быстро не возьмешь, другие вообще говорят что нафиг они не нужны, третьи вопят оставьте, круто! :D В итоге сделал разминку на снежках)
Ну если на другой слот удастся перенести, возможно оставлю.


Сможете сделать с этой розминки на розминку на снежках?

Скрытый текст
Код:
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <dhudmessage>

#define PLUGIN_NAME "Auto Restart KNIFE"
#define PLUGIN_VERSION "1.6"
#define PLUGIN_AUTHOR "Leo_[BH] & Fintok!"

const m_iMenu = 205
const m_iJoiningState = 121

const MENU_CHOOSEAPPEARANCE = 3
const JOIN_CHOOSEAPPEARANCE = 4

new Timer, SecondsCvar, szMapName[32]

public plugin_init()
{
register_plugin(PLUGIN_NAME , PLUGIN_VERSION, PLUGIN_AUTHOR)

register_dictionary("auto_rr.txt")

SecondsCvar = register_cvar("auto_rr_time", "45")

RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_Post", 1)

register_clcmd("menuselect", "clcmd_MenuSelect_JoinClass")
register_clcmd("joinclass", "clcmd_MenuSelect_JoinClass")

register_event("CurWeapon", "ev_CurWeapon", "be", "1=1", "2!29")

get_mapname(szMapName, charsmax(szMapName))

Timer = get_pcvar_num(SecondsCvar)

set_task(1.0, "start_rr_timer", .flags="a", .repeat=get_pcvar_num(SecondsCvar))

server_cmd("amx_pausecfg pause vampire.amxx") // Приостановить работу определенного плагина
}

public start_rr_timer()
{
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.08, 0, 0.0, 0.01)
show_dhudmessage(0, "%L", LANG_PLAYER, "RR_TIME", Timer)

if(Timer == 1)
{
server_cmd("sv_restartround 1")

set_task(3.0, "rr_end")

server_cmd("amx_pausecfg enable vampire.amxx") // Возобновить работу определенного плагина
}

Timer -= 1
}

public rr_end()
{
set_dhudmessage(0, 128, 0, -1.0, 0.78, 2, 6.0, 3.0, 0.1, 1.5, false)
show_dhudmessage(0, "%L", LANG_PLAYER, "RR_GG")
}

public fw_PlayerSpawn_Post(id)
{
if(!Timer || !is_user_alive(id))
return

if(!((containi(szMapName, "1hp") != -1) || (containi(szMapName, "35hp") != -1)))
set_user_health(id, 35)

cs_set_user_money(id, 0)
}

public fw_PlayerKilled_Post(id)
{
if(!Timer)
return

set_task(1.0, "playerRespawn", id)
}

public playerRespawn(id)
{
switch(cs_get_user_team(id))
{
case CS_TEAM_T, CS_TEAM_CT:
{
if(!is_user_alive(id))
ExecuteHam(Ham_CS_RoundRespawn, id)
}
}
}

public clcmd_MenuSelect_JoinClass(id)
{
if(!Timer)
return PLUGIN_CONTINUE

if(get_pdata_int(id, m_iMenu) == MENU_CHOOSEAPPEARANCE && get_pdata_int(id, m_iJoiningState) == JOIN_CHOOSEAPPEARANCE)
{
new command[11], arg[32]

read_argv(0, command, charsmax(command))
read_argv(1, arg, charsmax(arg))

engclient_cmd(id, command, arg)

ExecuteHam(Ham_Player_PreThink, id)

if(!is_user_alive(id))
ExecuteHamB(Ham_Spawn, id)

return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}

public ev_CurWeapon(id)
{
if(!Timer)
return

engclient_cmd(id, "weapon_knife")
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
staff2517
сообщение 13.12.2014, 0:17
Сообщение #125
Стаж: 12 лет

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

Цитата(Bloo @ 12.12.2014, 22:14) *
staff2517, у меня то есть, но дать не могу) На дс он лежит) А так в любую разминку можно залепить, просто в функции разминки server_cmd "amxx unpause snowball.amxx" перед рестартом server_cmd "amxx pause snowball.amxx", где то была тема какую то разминку так же правили, попробуй найти, или попроси скриптеров добавить правильно строки в какой нибудь плагин разминки.

А зачем перед рестартом делать "amxx unpause snowball.amxx" ??
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 13.12.2014, 0:25
Сообщение #126


Стаж: 12 лет

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

staff2517, он разве с предыдущей карты на паузе не останется?
Перед рестартом не снимать с паузы а сьавить на нее. Это если дальше в игре не нужны снежки. Если нужны делайте кваром только снежки, перед рестартом выключать его.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя s0h
сообщение 13.12.2014, 0:30
Сообщение #127


Стаж: 17 лет

Сообщений: 670
Благодарностей: 897
Полезность: 1164

Для тех кто хочет снежки поставить в разминочной раунде, возьму разминочный раунд от Safety1st.

Найти:
Код:
SetKnife(id) 
{
engclient_cmd( id, "weapon_knife" )

// update info about weapon
emessage_begin( MSG_ONE, gMsgCurWeapon, _, id )
ewrite_byte(1) // active
ewrite_byte(CSW_KNIFE) // weapon
ewrite_byte(-1) // clip
emessage_end()
}


Заменить на:
Код:
SetKnife(id) 
{
client_cmd( id, "weapon_snow" )

// update info about weapon
emessage_begin( MSG_ONE, gMsgCurWeapon, _, id )
ewrite_byte(1) // active
ewrite_byte(CSW_KNIFE) // weapon
ewrite_byte(-1) // clip
emessage_end()
}


Весь плагин разминки полностью
Код:
/* last update: 2/25/2014
*
* Attention: setting hp during knife round (if enabled) to bots are NOT supported!
*
* Credits:
* - Subb98 for the idea & prototype
* - ConnorMcLeod for code that forces spawning of newly connected players
* https://forums.alliedmods.net/showthread.ph...862#post1820862
*
* Thanks to eX-test from CS Support Community https://c-s.net.ua/ for testing
*/

#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "Simple WarmUp"
#define VERSION "0.50"
#define AUTHOR "Safety1st"

// *** customizable parameters
#define RESTART_AFTER // comment to disable restart round after warmup end
//#define KNIFE_ROUND_ONLY // uncomment to enable knife warmup round only
//#define _35HP_FOR_KNIFE_ROUND // uncomment to enable 35 hp during knife round
// *** end of customizable parameters

#define TT 1
#define CT 2

new giRoundCounter
new gMsgStatusIconReg, gMsgStatusIcon, gMsgCurWeapon
new HamHook:g_iHhCBasePlayerSpawn, HamHook:g_iHhCBasePlayerPreThink
new bool:gbWarmupActive

#if defined RESTART_AFTER
new bool:gbIgnoreRestart
#endif

// offsets
#define m_fClientMapZone 235
#define MAPZONE_BUYZONE ( 1<<0 )

enum {
ROUND_NONE,
ROUND_KNIFE,
ROUND_PISTOL
}

const m_iJoinedState = 121
const m_iMenu = 205

const MENU_CHOOSEAPPEARANCE = 3
const STATE_PICKINGCLASS = 4

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

register_event( "TextMsg", "EventNewGame", "a", "2=#Game_will_restart_in", "2=#Game_Commencing" )
register_event( "HLTV", "EventNewRound", "a", "1=0", "2=0" )
register_event( "CurWeapon", "EventCurWeapon", "be", "1=1", "2!29" ) // specified, call if is send to alive player only

register_logevent( "EventRoundEnd", 2, "1=Round_End" )

gMsgStatusIcon = get_user_msgid( "StatusIcon" )
gMsgCurWeapon = get_user_msgid( "CurWeapon" )

DisableHamForward( g_iHhCBasePlayerSpawn = RegisterHam( Ham_Spawn, "player", "OnCBasePlayer_Spawn_Post", 1 ) )

DisableHamForward( g_iHhCBasePlayerPreThink = RegisterHam( Ham_Player_PreThink, "player", "OnCBasePlayer_PreThink_Post", 1 ) )

register_clcmd( "menuselect", "ClCmd_MenuSelect_JoinClass" )
register_clcmd( "joinclass", "ClCmd_MenuSelect_JoinClass" )
}

public EventNewGame() {
#if defined RESTART_AFTER
if( gbIgnoreRestart ) {
// it is planned
gbIgnoreRestart = false
return
}
#endif

if( !gbWarmupActive ) {
// we don't have active 'hooks' for now
gMsgStatusIconReg = register_message( gMsgStatusIcon, "MessageStatusIcon" )
EnableHamForward( g_iHhCBasePlayerSpawn )
gbWarmupActive = true
}

giRoundCounter = ROUND_NONE
}

public EventNewRound() {
if( !gbWarmupActive )
return

giRoundCounter++
}

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

switch( giRoundCounter ) {
#if defined _35HP_FOR_KNIFE_ROUND
case ROUND_KNIFE : set_pev( id, pev_health, 35.0 )
#endif
case ROUND_PISTOL: {
switch( get_user_team(id) ) {
case TT: cs_set_user_bpammo( id, CSW_GLOCK18, 120 )
case CT: cs_set_user_bpammo( id, CSW_USP, 100 )
}
}
}
}

public EventCurWeapon(id) {
if( !gbWarmupActive )
return

switch( giRoundCounter ) {
case ROUND_KNIFE : {
if( read_data(2) /* weapon id */ != CSW_C4 )
SetKnife(id)
}
case ROUND_PISTOL: {
switch( read_data(2) ) {
case CSW_GLOCK18, CSW_USP, CSW_C4 : return
}
SetKnife(id)
}
}
}

SetKnife(id)
{
engclient_cmd( id, "weapon_knife" )

// update info about weapon
emessage_begin( MSG_ONE, gMsgCurWeapon, _, id )
ewrite_byte(1) // active
ewrite_byte(CSW_KNIFE) // weapon
ewrite_byte(-1) // clip
emessage_end()
}

public MessageStatusIcon( msgid, dest, receiver ) { // Exolent[jNr]'s code
// check if status is to be shown
if( get_msg_arg_int(1) ) {
static const buyzone[] = "buyzone"

// grab what icon is being shown
new icon[ sizeof( buyzone ) + 1 ]
get_msg_arg_string( 2, icon, charsmax(icon) )

// check if buyzone icon
if( !strcmp( icon, buyzone ) ) {
// remove player's buyzone bit for the map zones
set_pdata_int( receiver, m_fClientMapZone, get_pdata_int( receiver, m_fClientMapZone ) &~ MAPZONE_BUYZONE )
// block buyzone icon
return PLUGIN_HANDLED
}
}

return PLUGIN_CONTINUE
}

public EventRoundEnd() {
if( !gbWarmupActive )
return

// remember: Round_End is fired right after Game_Commencing too
switch( giRoundCounter ) {
case ROUND_NONE: return
#if !defined KNIFE_ROUND_ONLY
case ROUND_KNIFE : return
#endif
}

gbWarmupActive = false
unregister_message( gMsgStatusIcon, gMsgStatusIconReg )
DisableHamForward( g_iHhCBasePlayerSpawn )

#if defined RESTART_AFTER
gbIgnoreRestart = true
set_cvar_num( "sv_restart", 4 )
#endif
}

public ClCmd_MenuSelect_JoinClass(id) {
if( !gbWarmupActive )
return

if( get_pdata_int(id, m_iMenu) == MENU_CHOOSEAPPEARANCE && get_pdata_int(id, m_iJoinedState) == STATE_PICKINGCLASS )
EnableHamForward( g_iHhCBasePlayerPreThink )
}

public OnCBasePlayer_PreThink_Post(id) {
DisableHamForward( g_iHhCBasePlayerPreThink )
if( !is_user_alive(id) )
ExecuteHam( Ham_Spawn, id )
}


Отредактировал: s0h, - 13.12.2014, 0:32
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя s0h
сообщение 13.12.2014, 0:38
Сообщение #128


Стаж: 17 лет

Сообщений: 670
Благодарностей: 897
Полезность: 1164

Цитата(qpi3ik @ 12.12.2014, 22:26) *
Сможете сделать с этой розминки на розминку на снежках?


Ответ
Код:

//Замени эту строку
engclient_cmd(id, "weapon_knife")
//на
client_cmd(id, "weapon_snow")
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя strelok93
сообщение 13.12.2014, 0:44
Сообщение #129


Стаж: 12 лет

Сообщений: 905
Благодарностей: 392
Полезность: 576

Цитата(s0h @ 13.12.2014, 0:34) *
Ответ
Код:

//Замени эту строку
engclient_cmd(id, "weapon_knife")
//на
client_cmd(id, "weapon_snow")

там разминка именно раунд? У меня CSDM, как бы сделать разминку минутки 2)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
staff2517
сообщение 13.12.2014, 2:27
Сообщение #130
Стаж: 12 лет

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

Цитата(s0h @ 12.12.2014, 23:34) *
Ответ
Код:

//Замени эту строку
engclient_cmd(id, "weapon_knife")
//на
client_cmd(id, "weapon_snow")

Спасибо, но есть один баг, если раскомментировать "//#define SNOW_KNIFE" то когда заканчивается разминка нельзя достать ножик.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 13.12.2014, 9:47
Сообщение #131


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Цитата(staff2517 @ 13.12.2014, 1:23) *
Спасибо, но есть один баг, если раскомментировать "//#define SNOW_KNIFE" то когда заканчивается разминка нельзя достать ножик.

юзай кваровую версию и в конце тупо меняй кваром .


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 13.12.2014, 14:36
Сообщение #132


Стаж: 12 лет

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

как отправить одной строкой несколько команд через server_cmd?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя user.gameover.user
сообщение 13.12.2014, 14:37
Сообщение #133
Стаж: 15 лет

Сообщений: 1470
Благодарностей: 426
Полезность: 700

Цитата(Bloo @ 13.12.2014, 13:32) *
как отправить одной строкой несколько команд через server_cmd?

команда;команда;команда не рабоатет?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 13.12.2014, 14:47
Сообщение #134


Стаж: 12 лет

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

user.gameover.user, нет, пробовал не работает (проверял через rcon)
snowball_mode 0;amxx pause snowball.amxx
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя qpi3ik
сообщение 13.12.2014, 16:24
Сообщение #135


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

У кого есть рабочая версия розминки на снежках?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя qpi3ik
сообщение 14.12.2014, 2:32
Сообщение #136


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Переделал я плагин розминки, все работает но после розминки пропадает на кнопке 3 нож. Его не реально взять)
Как исправить баг?
Использовал квары снежек
Код:
//#define SNOW_MODE_ONLY			// режим только снежки
#define SNOW_KNIFE // сделать снежки на knife (если закомментировано, будет два режима ножа 1 - Обычный нож | 2 - Снежки)

Помогите сделать.

Вот исходник
Скрытый текст
Код:
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <dhudmessage>

#define PLUGIN_NAME "Auto Restart KNIFE"
#define PLUGIN_VERSION "1.6"
#define PLUGIN_AUTHOR "Leo_[BH] & Fintok!"

const m_iMenu = 205
const m_iJoiningState = 121

const MENU_CHOOSEAPPEARANCE = 3
const JOIN_CHOOSEAPPEARANCE = 4

new Timer, SecondsCvar, szMapName[32]

public plugin_init()
{
register_plugin(PLUGIN_NAME , PLUGIN_VERSION, PLUGIN_AUTHOR)

register_dictionary("auto_rr.txt")

SecondsCvar = register_cvar("auto_rr_time", "45")

RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_Post", 1)

register_clcmd("menuselect", "clcmd_MenuSelect_JoinClass")
register_clcmd("joinclass", "clcmd_MenuSelect_JoinClass")

register_event("CurWeapon", "ev_CurWeapon", "be", "1=1", "2!29")

get_mapname(szMapName, charsmax(szMapName))

Timer = get_pcvar_num(SecondsCvar)

set_task(1.0, "start_rr_timer", .flags="a", .repeat=get_pcvar_num(SecondsCvar))

server_cmd("amx_pausecfg pause vampire.amxx") // Приостановить работу определенного плагина

server_cmd("amx_pausecfg enable snezhki.amxx") // Возобновить работу определенного плагина
}

public start_rr_timer()
{
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.08, 0, 0.0, 0.01)
show_dhudmessage(0, "%L", LANG_PLAYER, "RR_TIME", Timer)

if(Timer == 1)
{
server_cmd("sv_restartround 1")

set_task(3.0, "rr_end")

server_cmd("amx_pausecfg enable vampire.amxx") // Возобновить работу определенного плагина

server_cmd("amx_pausecfg pause snezhki.amxx") // Приостановить работу определенного плагина
}

Timer -= 1
}

public rr_end()
{
set_dhudmessage(0, 128, 0, -1.0, 0.78, 2, 6.0, 3.0, 0.1, 1.5, false)
show_dhudmessage(0, "%L", LANG_PLAYER, "RR_GG")
}

public fw_PlayerSpawn_Post(id)
{
if(!Timer || !is_user_alive(id))
return

if(!((containi(szMapName, "1hp") != -1) || (containi(szMapName, "35hp") != -1)))
set_user_health(id, 35)

cs_set_user_money(id, 0)
}

public fw_PlayerKilled_Post(id)
{
if(!Timer)
return

set_task(1.0, "playerRespawn", id)
}

public playerRespawn(id)
{
switch(cs_get_user_team(id))
{
case CS_TEAM_T, CS_TEAM_CT:
{
if(!is_user_alive(id))
ExecuteHam(Ham_CS_RoundRespawn, id)
}
}
}

public clcmd_MenuSelect_JoinClass(id)
{
if(!Timer)
return PLUGIN_CONTINUE

if(get_pdata_int(id, m_iMenu) == MENU_CHOOSEAPPEARANCE && get_pdata_int(id, m_iJoiningState) == JOIN_CHOOSEAPPEARANCE)
{
new command[11], arg[32]

read_argv(0, command, charsmax(command))
read_argv(1, arg, charsmax(arg))

engclient_cmd(id, command, arg)

ExecuteHam(Ham_Player_PreThink, id)

if(!is_user_alive(id))
ExecuteHamB(Ham_Spawn, id)

return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}

public ev_CurWeapon(id)
{
if(!Timer)
return

engclient_cmd(id, "weapon_knife")
}


Снежки брал с 4 страници.

Отредактировал: qpi3ik, - 14.12.2014, 3:52
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 14.12.2014, 14:51
Сообщение #137


Стаж: 12 лет

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

qpi3ik, если у тебя разминка на ножах, то не нужно включать режим только снежки, ставь снежки на нож и после паузы все будет ок.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя qpi3ik
сообщение 14.12.2014, 15:13
Сообщение #138


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Цитата(Bloo @ 14.12.2014, 14:47) *
qpi3ik, если у тебя разминка на ножах, то не нужно включать режим только снежки, ставь снежки на нож и после паузы все будет ок.


Если я тебя понял то должно получиться так?

Скрытый текст
Код:
#include "amxmodx.inc"
#include "fakemeta.inc"
#include "hamsandwich.inc"

#pragma ctrlchar '\'

#define MAX_CLIENTS 32

// чем выше сила, тем дальше летит снежок, а также
// чем выше сила, тем сильнее урон

#define MAX_POWER 24 //макс. сила снежка (при зажатии ПКМ сила увеличивается не больше чем MAX_POWER)
#define MIN_POWER 12 //мин. сила снежка

#define MULTIPLY_POWER 3.0 //множитель силы
#define FREQUENCY_POWER 0.041 //частота прибавлении силы (как быстро прибавляется сила при зажатии ПКМ)

#define CSW_SNOW 2
#define ACT_RANGE_ATTACK1 28

#define WEAPON_NAME_PRIMARY "weapon_knife"
#define WEAPON_NAME_SECONDARY "weapon_snow"

#define KNIFE_P_MODEL "models/p_knife.mdl"
#define KNIFE_V_MODEL "models/v_knife.mdl"

#define SNOW_P_MODEL "models/p_snow.mdl"
#define SNOW_V_MODEL "models/v_snow.mdl"
#define SNOW_W_MODEL "models/w_snow.mdl"

#define SNOW_MODE_ONLY // режим только снежки
#define SNOW_KNIFE // сделать снежки на knife (если закомментировано, будет два режима ножа 1 - Обычный нож | 2 - Снежки)

#define TEAMMATES_KILL // разрешать ранить тиммейтов

#define PDATA_SAFE 2

#define m_pPlayer 41

#define m_rgpPlayerItems_CBasePlayer 367

#define m_Activity 73
#define m_IdealActivity 74

#define m_flNextAttack 83
#define m_flNextPrimaryAttack 46
#define m_flNextSecondaryAttack 47
#define m_szAnimExtention 492
#define m_flTimeWeaponIdle 48
#define m_flLastFire 63

#define m_fSequenceLoops 40
#define m_fSequenceFinished 39
#define m_flFrameRate 36
#define m_flGroundSpeed 37
#define m_flLastEventCheck 38
#define m_flLastAttackTime 220
#define m_LastHitGroup 75
#define m_fHasSurvivedLastRound 113

#define m_iNextAction 55

#define m_flStartThrow 30
#define m_flReleaseThrow 31

#define m_iTeam 114
#define m_pActiveItem 373
#define m_pLastItem 375

new g_iPower[MAX_CLIENTS + 1];

#if defined SNOW_MODE_ONLY
#include "fakemeta_util.inc"
#endif

#if !defined SNOW_KNIFE
new g_iLastWeapons[MAX_CLIENTS + 1];
#endif

new g_iSprBlood;
new g_iSprBloodSpray;

new g_msgidWeapPickup;
new g_msgidWeaponList;

#if !defined SNOW_KNIFE
enum (+=275282312)
{
UID_SNOW,
UID_SNOW_FLY,
UID_SNOW_MODE
}
#endif

// Anim sequence

enum PLAYER_ANIM
{
PLAYER_IDLE,
PLAYER_WALK,
PLAYER_JUMP,
PLAYER_SUPERJUMP,
PLAYER_DIE,
PLAYER_ATTACK1
};

enum WEAPON_ANIM
{
AS_IDLE,
AS_PULLPIN,
AS_THROW,
AS_DRAW
};

public plugin_precache()
{
engfunc(EngFunc_PrecacheModel,SNOW_P_MODEL);
engfunc(EngFunc_PrecacheModel,SNOW_V_MODEL);
engfunc(EngFunc_PrecacheModel,SNOW_W_MODEL);

engfunc(EngFunc_PrecacheGeneric,"sprites/weapon_snow.txt");
engfunc(EngFunc_PrecacheModel,"sprites/snowball.spr");

g_iSprBlood = engfunc(EngFunc_PrecacheModel,"sprites/blood.spr");
g_iSprBloodSpray = engfunc(EngFunc_PrecacheModel,"sprites/bloodspray.spr");
}
public plugin_init()
{
register_plugin("Knife Mode Snowball","0.2 alpha","s1lent");

#if !defined SNOW_KNIFE
register_clcmd("lastinv","Cmd_Lastinv");

register_clcmd(WEAPON_NAME_PRIMARY,"Cmd_WeaponSelect");
#endif
register_clcmd(WEAPON_NAME_SECONDARY,"Cmd_WeaponSelectEx");

#if defined SNOW_MODE_ONLY
RegisterHam(Ham_Spawn,"player","CBasePlayer__Spawn_Pre");
RegisterHam(Ham_Spawn,"player","CBasePlayer__Spawn_Post",1);
#endif

RegisterHam(Ham_Touch,"info_target","CBaseEntity__Touch",1);
RegisterHam(Ham_Item_PostFrame,WEAPON_NAME_PRIMARY,"CBasePlayerItem__PostFrame");
RegisterHam(Ham_Item_Deploy,WEAPON_NAME_PRIMARY,"CBasePlayerItem__Deploy",1);
RegisterHam(Ham_Item_AddToPlayer,WEAPON_NAME_PRIMARY,"CBasePlayerItem__AddToPlayer",1);

g_msgidWeaponList = get_user_msgid("WeaponList");
g_msgidWeapPickup = get_user_msgid("WeapPickup");
}

#if defined SNOW_MODE_ONLY
public CBasePlayer__Spawn_Pre(id)
{
if(pev_valid(id) != PDATA_SAFE)
{
return HAM_IGNORED;
}

set_pdata_int(id,m_fHasSurvivedLastRound,1);
return HAM_IGNORED;
}
public CBasePlayer__Spawn_Post(id)
{
if(!is_user_alive(id))
{
return HAM_IGNORED;
}

fm_give_item(id,"weapon_knife");
return HAM_IGNORED;
}
#endif

#if !defined SNOW_KNIFE
public client_command(id)
{
new szCmd[32];
read_argv(0,szCmd,charsmax(szCmd));

if(!equal(szCmd,"weapon_",7)
|| !strcmp(szCmd,WEAPON_NAME_PRIMARY)
|| !strcmp(szCmd,WEAPON_NAME_SECONDARY))
{
return 0;
}
return g_iLastWeapons[id] = 0;
}
#endif

public CBaseEntity__Touch(ent,id)
{
#if !defined SNOW_KNIFE
if(pev(ent,pev_impulse) != UID_SNOW_FLY)
{
return HAM_IGNORED;
}
#endif

if(pev_valid(id) != PDATA_SAFE || !is_user_alive(id))
{
util__EffectSnow(ent);
return HAM_IGNORED;
}

new Float:flDamage;
pev(ent,pev_dmg,flDamage);

new iAttacker = pev(ent,pev_owner);

if(flDamage <= 0.0 || iAttacker < 1)
{
return HAM_IGNORED;
}

#if !defined TEAMMATES_KILL
if(get_pdata_int(iAttacker,m_iTeam) != get_pdata_int(id,m_iTeam))
{
#endif
new iHitgroup;
new pTracehandle;

new Float:vecStart[3],Float:vecEnd[3],Float:vecVelocity[3],Float:vecForward[3],Float
:flFraction;

pev(ent,pev_origin,vecStart);
pev(ent,pev_velocity,vecVelocity);
global_get(glb_v_forward,vecForward);

vecEnd[0] = vecStart[0] + vecForward[0];
vecEnd[1] = vecStart[1] + vecForward[1];
vecEnd[2] = vecStart[2] + vecForward[2];

engfunc(EngFunc_TraceLine,vecStart,vecEnd,IGNORE_MISSILE|IGNORE_MONSTERS|IGNORE_
GLASS,iAttacker,pTracehandle);
get_tr2(pTracehandle,TR_flFraction,flFraction);

if(flFraction != 1.0)
{
iHitgroup = get_tr2(pTracehandle,TR_iHitgroup);

set_pdata_int(id,m_LastHitGroup,iHitgroup);
}
ExecuteHam(Ham_TakeDamage,id,ent,iAttacker,flDamage,DMG_DROWN);

#if !defined TEAMMATES_KILL
}
#endif

util__EffectSnow(ent);

return HAM_IGNORED;
}
#if !defined SNOW_KNIFE
public Cmd_Lastinv(id)
{
if(~g_iLastWeapons[id] & (CSW_KNIFE|CSW_SNOW))
{
return g_iLastWeapons[id] = 0;
}

new pItem = util__FindKnifeSlot(id);

if(!pItem
|| get_pdata_cbase(id,m_pActiveItem) != pItem
|| get_pdata_cbase(id,m_pLastItem) != pItem)
{
return g_iLastWeapons[id] = 0;
}

set_pev(pItem,pev_impulse,(pev(pItem,pev_impulse) == UID_SNOW_MODE) ? 0 : UID_SNOW_MODE);

ExecuteHamB(Ham_Item_Deploy,pItem);

return 1;
}
#endif
public CBasePlayerItem__AddToPlayer(ent,id)
{
if(pev_valid(id) != PDATA_SAFE)
{
return HAM_IGNORED;
}

#if !defined SNOW_KNIFE
set_pev(id,pev_weapons,pev(id,pev_weapons)|(1<<CSW_SNOW));

util__SendItemPickup(id,CSW_SNOW);
#endif

#if defined SNOW_MODE_ONLY
util__SendItemPickup(id,CSW_KNIFE);
#endif

#if !defined SNOW_KNIFE
util__SendWeaponList(id,WEAPON_NAME_PRIMARY,CSW_KNIFE);
util__SendWeaponList(id,WEAPON_NAME_SECONDARY,CSW_SNOW);
#else
util__SendWeaponList(id,WEAPON_NAME_SECONDARY,CSW_KNIFE);
#endif

return HAM_IGNORED;
}
#if !defined SNOW_KNIFE
public Cmd_WeaponSelect(id)
{
if(pev_valid(id) != PDATA_SAFE)
{
return 0;
}

new pItem = util__FindKnifeSlot(id);

if(!pItem
|| pev(pItem,pev_impulse) != UID_SNOW_MODE)
{
return 0;
}

set_pev(pItem,pev_impulse,0);

if(g_iLastWeapons[id] & CSW_SNOW)
set_pdata_cbase(id,m_pLastItem,pItem);

g_iLastWeapons[id] |= CSW_KNIFE;

set_pdata_cbase(id,m_pActiveItem,pItem);
ExecuteHamB(Ham_Item_Deploy,pItem);

return 0;
}
#endif
public Cmd_WeaponSelectEx(id)
{
if(pev_valid(id) != PDATA_SAFE)
{
return 0;
}

new pItem = util__FindKnifeSlot(id);

#if !defined SNOW_KNIFE
if(!pItem
|| (pev(pItem,pev_impulse) == UID_SNOW_MODE && get_pdata_cbase(id,m_pActiveItem) == pItem))
{
return 0;
}

set_pev(pItem,pev_impulse,UID_SNOW_MODE);

if(g_iLastWeapons[id] & CSW_KNIFE)
set_pdata_cbase(id,m_pLastItem,pItem);

g_iLastWeapons[id] |= CSW_SNOW;
#else
if(!pItem || get_pdata_cbase(id,m_pActiveItem) == pItem)
{
return 0;
}
#endif

set_pdata_cbase(id,m_pActiveItem,pItem);
ExecuteHamB(Ham_Item_Deploy,pItem);

return 0;
}
public CBasePlayerItem__PostFrame(ent)
{
#if !defined SNOW_KNIFE
if(pev(ent,pev_impulse) != UID_SNOW_MODE)
{
return HAM_IGNORED;
}
#endif

static Float:flWaitPower[MAX_CLIENTS + 1],Float:flCurrentTime,iButton,id;

id = get_pdata_cbase(ent,m_pPlayer,4);

if(pev_valid(id) != PDATA_SAFE)
{
return HAM_IGNORED;
}

iButton = pev(id,pev_button);

flCurrentTime = get_gametime();

if(((iButton & IN_ATTACK && get_pdata_float(ent,m_flNextPrimaryAttack,4) <= flCurrentTime)
|| (iButton & IN_ATTACK2 && get_pdata_float(ent,m_flNextSecondaryAttack,4) <= flCurrentTime)) && !get_pdata_float(ent,m_flStartThrow,4))
{
g_iPower[id] = 0;

util__SendAnim(id,AS_PULLPIN);

set_pdata_float(ent,m_flReleaseThrow,0.0,4);
set_pdata_float(ent,m_flStartThrow,get_gametime(),4);
set_pdata_float(ent,m_flTimeWeaponIdle,get_gametime() + 0.5,4);
}
else if(~iButton & IN_ATTACK2)
{
if(!get_pdata_float(ent,m_flReleaseThrow,4) && get_pdata_float(ent,m_flStartThrow,4))
set_pdata_float(ent,m_flReleaseThrow,get_gametime(),4);

if(get_pdata_float(ent,m_flTimeWeaponIdle,4) > get_gametime())
return HAM_SUPERCEDE;

if(get_pdata_float(ent,m_flStartThrow,4))
{
new Float:flVel;

new Float:vecStart[3];
new Float:vecThrow[3];
new Float:vecVAngle[3];

new Float:vecUp[3];
new Float:vecForward[3];

new Float:vecViewOfs[3];
new Float:vecAngThrow[3];
new Float:vecVelocity[3];
new Float:vecPunchangle[3];

pev(id,pev_origin,vecStart);
pev(id,pev_v_angle,vecVAngle);
pev(id,pev_view_ofs,vecViewOfs);
pev(id,pev_velocity,vecVelocity);
pev(id,pev_punchangle,vecPunchangle);

vecAngThrow[0] = vecVAngle[0] + vecPunchangle[0];
vecAngThrow[1] = vecVAngle[1] + vecPunchangle[1];
vecAngThrow[2] = vecVAngle[2] + vecPunchangle[2];

g_iPower[id] = clamp(g_iPower[id],MIN_POWER,MAX_POWER);

if(vecAngThrow[0] < 0.0)
vecAngThrow[0] = -10.0 + vecAngThrow[0] * ((90.0 - 10.0) / 90.0);

else vecAngThrow[0] = -10.0 + vecAngThrow[0] * ((90.0 + 10.0) / 90.0);

flVel = (90.0 - vecAngThrow[0]) * (g_iPower[id] / 2);

if(flVel > 750.0 && g_iPower[id] <= MIN_POWER)
flVel = 750.0;

engfunc(EngFunc_MakeVectors,vecAngThrow);

global_get(glb_v_up,vecUp);
global_get(glb_v_forward,vecForward);

vecStart[0] = vecStart[0] + vecViewOfs[0] + vecForward[0] * 16.0 + vecUp[0] * (g_iPower[id] > MIN_POWER ? 5.0 : 1.0);
vecStart[1] = vecStart[1] + vecViewOfs[1] + vecForward[1] * 16.0 + vecUp[1] * (g_iPower[id] > MIN_POWER ? 5.0 : 1.0);
vecStart[2] = vecStart[2] + vecViewOfs[2] + vecForward[2] * 16.0 + vecUp[2] * (g_iPower[id] > MIN_POWER ? 5.0 : 1.0);

vecThrow[0] = vecForward[0] * flVel - vecUp[0] * random_float(45.0,90.0) + vecVelocity[0];
vecThrow[1] = vecForward[1] * flVel - vecUp[1] * random_float(45.0,90.0) + vecVelocity[1];
vecThrow[2] = vecForward[2] * flVel - vecUp[2] * random_float(45.0,90.0) + vecVelocity[2];

util__SendAnim(id,AS_THROW);
util__SendAnimationShoot(id);
util__ShootContact(id,vecStart,vecThrow);

set_pdata_float(ent,m_flStartThrow,0.0,4);
set_pdata_float(ent,m_flNextPrimaryAttack,get_gametime() + 2.0,4);
set_pdata_float(ent,m_flNextSecondaryAttack,get_gametime() + 2.0,4);
set_pdata_float(ent,m_flTimeWeaponIdle,get_gametime() + 0.75,4);

return HAM_SUPERCEDE;
}
else if(get_pdata_float(ent,m_flReleaseThrow,4) > 0.0)
{
util__SendAnim(id,AS_DRAW);

set_pdata_float(ent,m_flReleaseThrow,-1.0,4);
set_pdata_float(ent,m_flTimeWeaponIdle,get_gametime() + random_float(10.0,15.0),4);

return HAM_SUPERCEDE;
}

util__SendAnim(id,AS_IDLE);

set_pdata_float(ent,m_flTimeWeaponIdle,get_gametime() + random_float(10.0,15.0),4);

return HAM_SUPERCEDE;
}

if(flCurrentTime > flWaitPower[id])
{
flWaitPower[id] = flCurrentTime + FREQUENCY_POWER;

if(iButton & IN_ATTACK2 && get_pdata_float(ent,m_flStartThrow,4))
g_iPower[id]++;
}

return HAM_SUPERCEDE;
}
public CBasePlayerItem__Deploy(ent)
{
new Float:flCurrentTime,id;

flCurrentTime = get_gametime();
id = get_pdata_cbase(ent,41,4);

set_pdata_float(ent,m_flNextAttack,flCurrentTime + 0.75,4);
set_pdata_float(ent,m_flTimeWeaponIdle,flCurrentTime + 1.5,4);

#if !defined SNOW_KNIFE
if(pev(ent,pev_impulse) == UID_SNOW_MODE)
{
#endif
set_pev(id,pev_viewmodel2,SNOW_V_MODEL);
set_pev(id,pev_weaponmodel2,SNOW_P_MODEL);

set_pdata_string(id,m_szAnimExtention * 4,"grenade",-1,5 * 4);

#if !defined SNOW_KNIFE
}
else
{
set_pdata_float(ent,m_flNextPrimaryAttack,-1.0,4);
set_pdata_float(ent,m_flNextSecondaryAttack,-1.0,4);
}
#endif
util__SendAnim(id,AS_DRAW);

return HAM_IGNORED;
}
stock util__FindKnifeSlot(id)
{
const iSlot = 3;

new pItem = get_pdata_cbase(id,m_rgpPlayerItems_CBasePlayer + iSlot);

if(pev_valid(pItem) != PDATA_SAFE)
{
return 0;
}

return pItem;
}
stock util__SendAnim(id,WEAPON_ANIM:anim)
{
set_pev(id,pev_weaponanim,anim);

engfunc(EngFunc_MessageBegin,MSG_ONE,SVC_WEAPONANIM,{0.0,0.0,0.0},id);

write_byte(_:anim);
write_byte(0);
message_end();
}
stock util__SendItemPickup(id,weapon)
{
engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgidWeapPickup,{0.0,0.0,0.0},
id);
write_byte(weapon);
message_end();
}
stock util__SendWeaponList(id,const szWeaponName[32],weaponID)
{
engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgidWeaponList,{0.0,0.0,0.0},
id);
write_string(szWeaponName);
write_byte(-1);
write_byte(-1);
write_byte(-1);
write_byte(-1);
write_byte(2);
write_byte((weaponID == CSW_SNOW) ? 20 : 1);
write_byte(weaponID);
write_byte(0);
message_end()
}
stock util__snowSpawn()
{
new ent;
static szAllocString;

if(szAllocString || (szAllocString = engfunc(EngFunc_AllocString,"info_target")))
{
ent = engfunc(EngFunc_CreateNamedEntity,szAllocString);
}

if(pev_valid(ent) != PDATA_SAFE)
{
return -1;
}

set_pev(ent,pev_classname,"snow");
set_pev(ent,pev_solid,SOLID_BBOX);

#if !defined SNOW_KNIFE
set_pev(ent,pev_impulse,UID_SNOW_FLY);
#endif

set_pev(ent,pev_movetype,MOVETYPE_TOSS);

engfunc(EngFunc_SetModel,ent,SNOW_W_MODEL);
engfunc(EngFunc_SetSize,ent,{0.0,0.0,0.0},{0.0,0.0,0.0});

return ent;
}
stock util__ShootContact(id,Float:vecStart[3],Float:vecVelocity[3])
{
new Float:flRet[3];
new ent = util__snowSpawn();

if(ent == -1)
{
return 0;
}

vector_to_angle(vecVelocity,flRet);

set_pev(ent,pev_owner,id);
set_pev(ent,pev_gravity,0.5);
set_pev(ent,pev_angles,flRet);
set_pev(ent,pev_dmg,g_iPower[id] * MULTIPLY_POWER);

set_pev(ent,pev_velocity,vecVelocity);
set_pev(ent,pev_nextthink,get_gametime() + 0.1);
set_pev(ent,pev_avelocity,random_float(-100.0,-500.0));
engfunc(EngFunc_SetOrigin,ent,vecStart);

return ent;
}
stock util__EffectSnow(ent)
{
new Float:vecStart[3];
pev(ent,pev_origin,vecStart);

message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(TE_BLOODSPRITE);

engfunc(EngFunc_WriteCoord,vecStart[0]);
engfunc(EngFunc_WriteCoord,vecStart[1]);
engfunc(EngFunc_WriteCoord,vecStart[2]);

write_short(g_iSprBloodSpray);
write_short(g_iSprBlood);
write_byte(9);
write_byte(15);
message_end();

set_pev(ent,pev_flags,FL_KILLME);
}

// thanks to KORD_12.7 | SetAnimation
// link: http://aghl.ru/forum/viewtopic.php?f=20&t=1493#p17852

stock util__SendAnimationShoot(id)
{
new iAnimDesired,Float:flFrameRate,Float:flGroundSpeed,bool:bLoops;

if((iAnimDesired = lookup_sequence(id,"ref_shoot_grenade",flFrameRate,bLoops,flGroundSpeed)) == -1)
{
iAnimDesired = 0;
}

new Float:flCurrentTime = get_gametime();

set_pev(id,pev_frame,0.0);
set_pev(id,pev_framerate,1.0);
set_pev(id,pev_animtime,flCurrentTime);
set_pev(id,pev_sequence,iAnimDesired);

set_pdata_int(id,m_fSequenceLoops,bLoops,4);
set_pdata_int(id,m_fSequenceFinished,0,4);

set_pdata_float(id,m_flFrameRate,flFrameRate,4);
set_pdata_float(id,m_flGroundSpeed,flGroundSpeed,4);
set_pdata_float(id,m_flLastEventCheck,flCurrentTime,4);

set_pdata_int(id,m_Activity,ACT_RANGE_ATTACK1);
set_pdata_int(id,m_IdealActivity,ACT_RANGE_ATTACK1);
set_pdata_float(id,m_flLastAttackTime,flCurrentTime);
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 14.12.2014, 15:27
Сообщение #139


Стаж: 12 лет

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

qpi3ik, нет, должно получится так
Скрытый текст
Код
#include "amxmodx.inc"
#include "fakemeta.inc"
#include "hamsandwich.inc"

#pragma ctrlchar '\'

#define MAX_CLIENTS            32

// чем выше сила, тем дальше летит снежок, а также
// чем выше сила, тем сильнее урон

#define MAX_POWER            24   //макс. сила снежка (при зажатии ПКМ сила увеличивается не больше чем MAX_POWER)
#define MIN_POWER            12   //мин. сила снежка

#define MULTIPLY_POWER            3.0   //множитель силы
#define FREQUENCY_POWER            0.041   //частота прибавлении силы (как быстро прибавляется сила при зажатии ПКМ)

#define CSW_SNOW            2
#define ACT_RANGE_ATTACK1         28

#define WEAPON_NAME_PRIMARY         "weapon_knife"
#define WEAPON_NAME_SECONDARY         "weapon_snow"

#define KNIFE_P_MODEL            "models/p_knife.mdl"
#define KNIFE_V_MODEL            "models/v_knife.mdl"

#define SNOW_P_MODEL            "models/p_snow.mdl"
#define SNOW_V_MODEL            "models/v_snow.mdl"
#define SNOW_W_MODEL            "models/w_snow.mdl"

//#define SNOW_MODE_ONLY         // режим только снежки
#define SNOW_KNIFE            // сделать снежки на knife (если закомментировано, будет два режима ножа 1 - Обычный нож | 2 - Снежки)

#define TEAMMATES_KILL            // разрешать ранить тиммейтов

#define PDATA_SAFE            2

#define m_pPlayer            41

#define m_rgpPlayerItems_CBasePlayer      367

#define m_Activity            73
#define m_IdealActivity            74

#define m_flNextAttack            83
#define m_flNextPrimaryAttack         46
#define m_flNextSecondaryAttack         47
#define m_szAnimExtention         492
#define m_flTimeWeaponIdle         48
#define m_flLastFire            63

#define m_fSequenceLoops         40
#define m_fSequenceFinished         39
#define m_flFrameRate            36
#define m_flGroundSpeed            37
#define m_flLastEventCheck         38
#define m_flLastAttackTime         220
#define m_LastHitGroup            75
#define m_fHasSurvivedLastRound         113

#define m_iNextAction            55

#define m_flStartThrow            30
#define m_flReleaseThrow          31

#define m_iTeam               114
#define m_pActiveItem            373
#define m_pLastItem            375

new g_iPower[MAX_CLIENTS + 1];

#if defined SNOW_MODE_ONLY
#include "fakemeta_util.inc"
#endif

#if !defined SNOW_KNIFE
new g_iLastWeapons[MAX_CLIENTS + 1];
#endif

new g_iSprBlood;
new g_iSprBloodSpray;

new g_msgidWeapPickup;
new g_msgidWeaponList;

#if !defined SNOW_KNIFE
enum (+=275282312)
{
   UID_SNOW,
   UID_SNOW_FLY,
   UID_SNOW_MODE
}
#endif

// Anim sequence

enum PLAYER_ANIM
{
   PLAYER_IDLE,
   PLAYER_WALK,
   PLAYER_JUMP,
   PLAYER_SUPERJUMP,
   PLAYER_DIE,
   PLAYER_ATTACK1
};

enum WEAPON_ANIM
{
   AS_IDLE,
   AS_PULLPIN,
   AS_THROW,
   AS_DRAW
};

public plugin_precache()
{
   engfunc(EngFunc_PrecacheModel,SNOW_P_MODEL);
   engfunc(EngFunc_PrecacheModel,SNOW_V_MODEL);
   engfunc(EngFunc_PrecacheModel,SNOW_W_MODEL);

   engfunc(EngFunc_PrecacheGeneric,"sprites/weapon_snow.txt");
   engfunc(EngFunc_PrecacheModel,"sprites/snowball.spr");

   g_iSprBlood = engfunc(EngFunc_PrecacheModel,"sprites/blood.spr");
   g_iSprBloodSpray = engfunc(EngFunc_PrecacheModel,"sprites/bloodspray.spr");
}
public plugin_init()
{
   register_plugin("Knife Mode Snowball","0.2 alpha","s1lent");

#if !defined SNOW_KNIFE
   register_clcmd("lastinv","Cmd_Lastinv");

   register_clcmd(WEAPON_NAME_PRIMARY,"Cmd_WeaponSelect");
#endif
   register_clcmd(WEAPON_NAME_SECONDARY,"Cmd_WeaponSelectEx");

#if defined SNOW_MODE_ONLY
   RegisterHam(Ham_Spawn,"player","CBasePlayer__Spawn_Pre");
   RegisterHam(Ham_Spawn,"player","CBasePlayer__Spawn_Post",1);
#endif

   RegisterHam(Ham_Touch,"info_target","CBaseEntity__Touch",1);
   RegisterHam(Ham_Item_PostFrame,WEAPON_NAME_PRIMARY,"CBasePlayerItem__PostFrame");
   RegisterHam(Ham_Item_Deploy,WEAPON_NAME_PRIMARY,"CBasePlayerItem__Deploy",1);
   RegisterHam(Ham_Item_AddToPlayer,WEAPON_NAME_PRIMARY,"CBasePlayerItem__AddToPlayer",1);

   g_msgidWeaponList = get_user_msgid("WeaponList");
   g_msgidWeapPickup = get_user_msgid("WeapPickup");
}

#if defined SNOW_MODE_ONLY
public CBasePlayer__Spawn_Pre(id)
{
   if(pev_valid(id) != PDATA_SAFE)
   {
      return HAM_IGNORED;
   }

   set_pdata_int(id,m_fHasSurvivedLastRound,1);
   return HAM_IGNORED;
}
public CBasePlayer__Spawn_Post(id)
{
   if(!is_user_alive(id))
   {
      return HAM_IGNORED;
   }

   fm_give_item(id,"weapon_knife");
   return HAM_IGNORED;
}
#endif

#if !defined SNOW_KNIFE
public client_command(id)
{
   new szCmd[32];
   read_argv(0,szCmd,charsmax(szCmd));

   if(!equal(szCmd,"weapon_",7)
      || !strcmp(szCmd,WEAPON_NAME_PRIMARY)
      || !strcmp(szCmd,WEAPON_NAME_SECONDARY))
   {
      return 0;
   }
   return g_iLastWeapons[id] = 0;
}
#endif

public CBaseEntity__Touch(ent,id)
{
#if !defined SNOW_KNIFE
   if(pev(ent,pev_impulse) != UID_SNOW_FLY)
   {
      return HAM_IGNORED;
   }
#endif

   if(pev_valid(id) != PDATA_SAFE || !is_user_alive(id))
   {
      util__EffectSnow(ent);
      return HAM_IGNORED;
   }

   new Float:flDamage;
   pev(ent,pev_dmg,flDamage);

   new iAttacker = pev(ent,pev_owner);

   if(flDamage <= 0.0 || iAttacker < 1)
   {
      return HAM_IGNORED;
   }

#if !defined TEAMMATES_KILL
   if(get_pdata_int(iAttacker,m_iTeam) != get_pdata_int(id,m_iTeam))
   {
#endif
      new iHitgroup;
      new pTracehandle;

      new Float:vecStart[3],Float:vecEnd[3],Float:vecVelocity[3],Float:vecForward[3],Float
:flFraction;

      pev(ent,pev_origin,vecStart);
      pev(ent,pev_velocity,vecVelocity);
      global_get(glb_v_forward,vecForward);

      vecEnd[0] = vecStart[0] + vecForward[0];
      vecEnd[1] = vecStart[1] + vecForward[1];
      vecEnd[2] = vecStart[2] + vecForward[2];

      engfunc(EngFunc_TraceLine,vecStart,vecEnd,IGNORE_MISSILE|IGNORE_MONSTERS|IGNORE_
GLASS,iAttacker,pTracehandle);
      get_tr2(pTracehandle,TR_flFraction,flFraction);

      if(flFraction != 1.0)
      {
         iHitgroup = get_tr2(pTracehandle,TR_iHitgroup);

         set_pdata_int(id,m_LastHitGroup,iHitgroup);
      }
      ExecuteHam(Ham_TakeDamage,id,ent,iAttacker,flDamage,DMG_DROWN);

#if !defined TEAMMATES_KILL
   }
#endif

   util__EffectSnow(ent);

   return HAM_IGNORED;
}
#if !defined SNOW_KNIFE
public Cmd_Lastinv(id)
{
   if(~g_iLastWeapons[id] & (CSW_KNIFE|CSW_SNOW))
   {
      return g_iLastWeapons[id] = 0;
   }

   new pItem = util__FindKnifeSlot(id);

   if(!pItem
      || get_pdata_cbase(id,m_pActiveItem) != pItem
      || get_pdata_cbase(id,m_pLastItem) != pItem)
   {
      return g_iLastWeapons[id] = 0;
   }

   set_pev(pItem,pev_impulse,(pev(pItem,pev_impulse) == UID_SNOW_MODE) ? 0 : UID_SNOW_MODE);

   ExecuteHamB(Ham_Item_Deploy,pItem);

   return 1;
}
#endif
public CBasePlayerItem__AddToPlayer(ent,id)
{
   if(pev_valid(id) != PDATA_SAFE)
   {
      return HAM_IGNORED;
   }

#if !defined SNOW_KNIFE
   set_pev(id,pev_weapons,pev(id,pev_weapons)|(1<<CSW_SNOW));

   util__SendItemPickup(id,CSW_SNOW);
#endif

#if defined SNOW_MODE_ONLY
   util__SendItemPickup(id,CSW_KNIFE);
#endif

#if !defined SNOW_KNIFE
   util__SendWeaponList(id,WEAPON_NAME_PRIMARY,CSW_KNIFE);
   util__SendWeaponList(id,WEAPON_NAME_SECONDARY,CSW_SNOW);
#else
   util__SendWeaponList(id,WEAPON_NAME_SECONDARY,CSW_KNIFE);
#endif

   return HAM_IGNORED;
}
#if !defined SNOW_KNIFE
public Cmd_WeaponSelect(id)
{
   if(pev_valid(id) != PDATA_SAFE)
   {
      return 0;
   }

   new pItem = util__FindKnifeSlot(id);

   if(!pItem
      || pev(pItem,pev_impulse) != UID_SNOW_MODE)
   {
      return 0;
   }

   set_pev(pItem,pev_impulse,0);

   if(g_iLastWeapons[id] & CSW_SNOW)
      set_pdata_cbase(id,m_pLastItem,pItem);

   g_iLastWeapons[id] |= CSW_KNIFE;

   set_pdata_cbase(id,m_pActiveItem,pItem);
   ExecuteHamB(Ham_Item_Deploy,pItem);

   return 0;
}
#endif
public Cmd_WeaponSelectEx(id)
{
   if(pev_valid(id) != PDATA_SAFE)
   {
      return 0;
   }

   new pItem = util__FindKnifeSlot(id);

#if !defined SNOW_KNIFE
   if(!pItem
      || (pev(pItem,pev_impulse) == UID_SNOW_MODE && get_pdata_cbase(id,m_pActiveItem) == pItem))
   {
      return 0;
   }

   set_pev(pItem,pev_impulse,UID_SNOW_MODE);

   if(g_iLastWeapons[id] & CSW_KNIFE)
      set_pdata_cbase(id,m_pLastItem,pItem);

   g_iLastWeapons[id] |= CSW_SNOW;
#else
   if(!pItem || get_pdata_cbase(id,m_pActiveItem) == pItem)
   {
      return 0;
   }
#endif

   set_pdata_cbase(id,m_pActiveItem,pItem);
   ExecuteHamB(Ham_Item_Deploy,pItem);

   return 0;
}
public CBasePlayerItem__PostFrame(ent)
{
#if !defined SNOW_KNIFE
   if(pev(ent,pev_impulse) != UID_SNOW_MODE)
   {
      return HAM_IGNORED;
   }
#endif

   static Float:flWaitPower[MAX_CLIENTS + 1],Float:flCurrentTime,iButton,id;

   id = get_pdata_cbase(ent,m_pPlayer,4);

   if(pev_valid(id) != PDATA_SAFE)
   {
      return HAM_IGNORED;
   }

   iButton = pev(id,pev_button);

   flCurrentTime = get_gametime();

   if(((iButton & IN_ATTACK && get_pdata_float(ent,m_flNextPrimaryAttack,4) <= flCurrentTime)
      || (iButton & IN_ATTACK2 && get_pdata_float(ent,m_flNextSecondaryAttack,4) <= flCurrentTime)) && !get_pdata_float(ent,m_flStartThrow,4))
   {
      g_iPower[id] = 0;

      util__SendAnim(id,AS_PULLPIN);

      set_pdata_float(ent,m_flReleaseThrow,0.0,4);
      set_pdata_float(ent,m_flStartThrow,get_gametime(),4);
      set_pdata_float(ent,m_flTimeWeaponIdle,get_gametime() + 0.5,4);
   }
   else if(~iButton & IN_ATTACK2)
   {
      if(!get_pdata_float(ent,m_flReleaseThrow,4) && get_pdata_float(ent,m_flStartThrow,4))
         set_pdata_float(ent,m_flReleaseThrow,get_gametime(),4);

      if(get_pdata_float(ent,m_flTimeWeaponIdle,4) > get_gametime())
         return HAM_SUPERCEDE;

      if(get_pdata_float(ent,m_flStartThrow,4))
      {
         new Float:flVel;

         new Float:vecStart[3];
         new Float:vecThrow[3];
         new Float:vecVAngle[3];

         new Float:vecUp[3];
         new Float:vecForward[3];

         new Float:vecViewOfs[3];
         new Float:vecAngThrow[3];
         new Float:vecVelocity[3];
         new Float:vecPunchangle[3];

         pev(id,pev_origin,vecStart);
         pev(id,pev_v_angle,vecVAngle);
         pev(id,pev_view_ofs,vecViewOfs);
         pev(id,pev_velocity,vecVelocity);
         pev(id,pev_punchangle,vecPunchangle);

         vecAngThrow[0] = vecVAngle[0] + vecPunchangle[0];
         vecAngThrow[1] = vecVAngle[1] + vecPunchangle[1];
         vecAngThrow[2] = vecVAngle[2] + vecPunchangle[2];

         g_iPower[id] = clamp(g_iPower[id],MIN_POWER,MAX_POWER);

         if(vecAngThrow[0] < 0.0)
            vecAngThrow[0] = -10.0 + vecAngThrow[0] * ((90.0 - 10.0) / 90.0);

         else vecAngThrow[0] = -10.0 + vecAngThrow[0] * ((90.0 + 10.0) / 90.0);

         flVel = (90.0 - vecAngThrow[0]) * (g_iPower[id] / 2);

         if(flVel > 750.0 && g_iPower[id] <= MIN_POWER)
            flVel = 750.0;

         engfunc(EngFunc_MakeVectors,vecAngThrow);

         global_get(glb_v_up,vecUp);
         global_get(glb_v_forward,vecForward);

         vecStart[0] = vecStart[0] + vecViewOfs[0] + vecForward[0] * 16.0 + vecUp[0] * (g_iPower[id] > MIN_POWER ? 5.0 : 1.0);
         vecStart[1] = vecStart[1] + vecViewOfs[1] + vecForward[1] * 16.0 + vecUp[1] * (g_iPower[id] > MIN_POWER ? 5.0 : 1.0);
         vecStart[2] = vecStart[2] + vecViewOfs[2] + vecForward[2] * 16.0 + vecUp[2] * (g_iPower[id] > MIN_POWER ? 5.0 : 1.0);

         vecThrow[0] = vecForward[0] * flVel - vecUp[0] * random_float(45.0,90.0) + vecVelocity[0];
         vecThrow[1] = vecForward[1] * flVel - vecUp[1] * random_float(45.0,90.0) + vecVelocity[1];
         vecThrow[2] = vecForward[2] * flVel - vecUp[2] * random_float(45.0,90.0) + vecVelocity[2];

         util__SendAnim(id,AS_THROW);
         util__SendAnimationShoot(id);
         util__ShootContact(id,vecStart,vecThrow);

         set_pdata_float(ent,m_flStartThrow,0.0,4);
         set_pdata_float(ent,m_flNextPrimaryAttack,get_gametime() + 2.0,4);
         set_pdata_float(ent,m_flNextSecondaryAttack,get_gametime() + 2.0,4);
         set_pdata_float(ent,m_flTimeWeaponIdle,get_gametime() + 0.75,4);

         return HAM_SUPERCEDE;
      }
      else if(get_pdata_float(ent,m_flReleaseThrow,4) > 0.0)
      {
         util__SendAnim(id,AS_DRAW);

         set_pdata_float(ent,m_flReleaseThrow,-1.0,4);
         set_pdata_float(ent,m_flTimeWeaponIdle,get_gametime() + random_float(10.0,15.0),4);

         return HAM_SUPERCEDE;
      }

      util__SendAnim(id,AS_IDLE);

      set_pdata_float(ent,m_flTimeWeaponIdle,get_gametime() + random_float(10.0,15.0),4);

      return HAM_SUPERCEDE;
   }

   if(flCurrentTime > flWaitPower[id])
   {
      flWaitPower[id] = flCurrentTime + FREQUENCY_POWER;

      if(iButton & IN_ATTACK2 && get_pdata_float(ent,m_flStartThrow,4))
         g_iPower[id]++;
   }

   return HAM_SUPERCEDE;
}
public CBasePlayerItem__Deploy(ent)
{
   new Float:flCurrentTime,id;

   flCurrentTime = get_gametime();
   id = get_pdata_cbase(ent,41,4);

   set_pdata_float(ent,m_flNextAttack,flCurrentTime + 0.75,4);
   set_pdata_float(ent,m_flTimeWeaponIdle,flCurrentTime + 1.5,4);

#if !defined SNOW_KNIFE
   if(pev(ent,pev_impulse) == UID_SNOW_MODE)
   {
#endif
      set_pev(id,pev_viewmodel2,SNOW_V_MODEL);
      set_pev(id,pev_weaponmodel2,SNOW_P_MODEL);

      set_pdata_string(id,m_szAnimExtention * 4,"grenade",-1,5 * 4);

#if !defined SNOW_KNIFE
   }
   else
   {
      set_pdata_float(ent,m_flNextPrimaryAttack,-1.0,4);
      set_pdata_float(ent,m_flNextSecondaryAttack,-1.0,4);
   }
#endif
   util__SendAnim(id,AS_DRAW);

   return HAM_IGNORED;
}
stock util__FindKnifeSlot(id)
{
   const iSlot = 3;

   new pItem = get_pdata_cbase(id,m_rgpPlayerItems_CBasePlayer + iSlot);

   if(pev_valid(pItem) != PDATA_SAFE)
   {
      return 0;
   }

   return pItem;
}
stock util__SendAnim(id,WEAPON_ANIM:anim)
{
   set_pev(id,pev_weaponanim,anim);

   engfunc(EngFunc_MessageBegin,MSG_ONE,SVC_WEAPONANIM,{0.0,0.0,0.0},id);

   write_byte(_:anim);
   write_byte(0);
   message_end();
}
stock util__SendItemPickup(id,weapon)
{
   engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgidWeapPickup,{0.0,0.0,0.0},
id);
   write_byte(weapon);
   message_end();
}
stock util__SendWeaponList(id,const szWeaponName[32],weaponID)
{
   engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgidWeaponList,{0.0,0.0,0.0},
id);
   write_string(szWeaponName);
   write_byte(-1);
   write_byte(-1);
   write_byte(-1);
   write_byte(-1);
   write_byte(2);
   write_byte((weaponID == CSW_SNOW) ? 20 : 1);
   write_byte(weaponID);
   write_byte(0);
   message_end()
}
stock util__snowSpawn()
{
   new ent;
   static szAllocString;

   if(szAllocString || (szAllocString = engfunc(EngFunc_AllocString,"info_target")))
   {
      ent = engfunc(EngFunc_CreateNamedEntity,szAllocString);
   }

   if(pev_valid(ent) != PDATA_SAFE)
   {
      return -1;
   }

   set_pev(ent,pev_classname,"snow");
   set_pev(ent,pev_solid,SOLID_BBOX);

#if !defined SNOW_KNIFE
   set_pev(ent,pev_impulse,UID_SNOW_FLY);
#endif

   set_pev(ent,pev_movetype,MOVETYPE_TOSS);

   engfunc(EngFunc_SetModel,ent,SNOW_W_MODEL);
   engfunc(EngFunc_SetSize,ent,{0.0,0.0,0.0},{0.0,0.0,0.0});

   return ent;
}
stock util__ShootContact(id,Float:vecStart[3],Float:vecVelocity[3])
{
   new Float:flRet[3];
   new ent = util__snowSpawn();

   if(ent == -1)
   {
      return 0;
   }

   vector_to_angle(vecVelocity,flRet);

   set_pev(ent,pev_owner,id);
   set_pev(ent,pev_gravity,0.5);
   set_pev(ent,pev_angles,flRet);
   set_pev(ent,pev_dmg,g_iPower[id] * MULTIPLY_POWER);

   set_pev(ent,pev_velocity,vecVelocity);
   set_pev(ent,pev_nextthink,get_gametime() + 0.1);
   set_pev(ent,pev_avelocity,random_float(-100.0,-500.0));
   engfunc(EngFunc_SetOrigin,ent,vecStart);

   return ent;
}
stock util__EffectSnow(ent)
{
   new Float:vecStart[3];
   pev(ent,pev_origin,vecStart);

   message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
   write_byte(TE_BLOODSPRITE);

   engfunc(EngFunc_WriteCoord,vecStart[0]);
   engfunc(EngFunc_WriteCoord,vecStart[1]);
   engfunc(EngFunc_WriteCoord,vecStart[2]);

   write_short(g_iSprBloodSpray);
   write_short(g_iSprBlood);
   write_byte(9);
   write_byte(15);
   message_end();

   set_pev(ent,pev_flags,FL_KILLME);
}

// thanks to KORD_12.7 | SetAnimation
// link: <noindex><a rel="nofollow" href="http://c-s.net.ua/url?u=http%3A%2F%2Faghl.ru%2Fforum%2Fviewtopic.php%3Ff%3D20%26amp%3Bt%3D1493%23p17852" target="_blank">http://aghl.ru/forum/viewtopic.php?f=20&t=1493#p17852</a></noindex>

stock util__SendAnimationShoot(id)
{
   new iAnimDesired,Float:flFrameRate,Float:flGroundSpeed,bool:bLoops;

   if((iAnimDesired = lookup_sequence(id,"ref_shoot_grenade",flFrameRate,bLoops,flGroundSpeed)) == -1)
   {
      iAnimDesired = 0;
   }

   new Float:flCurrentTime = get_gametime();

   set_pev(id,pev_frame,0.0);
   set_pev(id,pev_framerate,1.0);
   set_pev(id,pev_animtime,flCurrentTime);
   set_pev(id,pev_sequence,iAnimDesired);

   set_pdata_int(id,m_fSequenceLoops,bLoops,4);
   set_pdata_int(id,m_fSequenceFinished,0,4);

   set_pdata_float(id,m_flFrameRate,flFrameRate,4);
   set_pdata_float(id,m_flGroundSpeed,flGroundSpeed,4);
   set_pdata_float(id,m_flLastEventCheck,flCurrentTime,4);

   set_pdata_int(id,m_Activity,ACT_RANGE_ATTACK1);
   set_pdata_int(id,m_IdealActivity,ACT_RANGE_ATTACK1);  
   set_pdata_float(id,m_flLastAttackTime,flCurrentTime);
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя qpi3ik
сообщение 14.12.2014, 15:41
Сообщение #140


Стаж: 12 лет

Сообщений: 621
Благодарностей: 78
Полезность: 12

Цитата(Bloo @ 14.12.2014, 15:23) *
qpi3ik, нет, должно получится так
Скрытый текст
Код
#include "amxmodx.inc"
#include "fakemeta.inc"
#include "hamsandwich.inc"

#pragma ctrlchar '\'

#define MAX_CLIENTS            32

// чем выше сила, тем дальше летит снежок, а также
// чем выше сила, тем сильнее урон

#define MAX_POWER            24   //макс. сила снежка (при зажатии ПКМ сила увеличивается не больше чем MAX_POWER)
#define MIN_POWER            12   //мин. сила снежка

#define MULTIPLY_POWER            3.0   //множитель силы
#define FREQUENCY_POWER            0.041   //частота прибавлении силы (как быстро прибавляется сила при зажатии ПКМ)

#define CSW_SNOW            2
#define ACT_RANGE_ATTACK1         28

#define WEAPON_NAME_PRIMARY         "weapon_knife"
#define WEAPON_NAME_SECONDARY         "weapon_snow"

#define KNIFE_P_MODEL            "models/p_knife.mdl"
#define KNIFE_V_MODEL            "models/v_knife.mdl"

#define SNOW_P_MODEL            "models/p_snow.mdl"
#define SNOW_V_MODEL            "models/v_snow.mdl"
#define SNOW_W_MODEL            "models/w_snow.mdl"

//#define SNOW_MODE_ONLY         // режим только снежки
#define SNOW_KNIFE            // сделать снежки на knife (если закомментировано, будет два режима ножа 1 - Обычный нож | 2 - Снежки)

#define TEAMMATES_KILL            // разрешать ранить тиммейтов

#define PDATA_SAFE            2

#define m_pPlayer            41

#define m_rgpPlayerItems_CBasePlayer      367

#define m_Activity            73
#define m_IdealActivity            74

#define m_flNextAttack            83
#define m_flNextPrimaryAttack         46
#define m_flNextSecondaryAttack         47
#define m_szAnimExtention         492
#define m_flTimeWeaponIdle         48
#define m_flLastFire            63

#define m_fSequenceLoops         40
#define m_fSequenceFinished         39
#define m_flFrameRate            36
#define m_flGroundSpeed            37
#define m_flLastEventCheck         38
#define m_flLastAttackTime         220
#define m_LastHitGroup            75
#define m_fHasSurvivedLastRound         113

#define m_iNextAction            55

#define m_flStartThrow            30
#define m_flReleaseThrow          31

#define m_iTeam               114
#define m_pActiveItem            373
#define m_pLastItem            375

new g_iPower[MAX_CLIENTS + 1];

#if defined SNOW_MODE_ONLY
#include "fakemeta_util.inc"
#endif

#if !defined SNOW_KNIFE
new g_iLastWeapons[MAX_CLIENTS + 1];
#endif

new g_iSprBlood;
new g_iSprBloodSpray;

new g_msgidWeapPickup;
new g_msgidWeaponList;

#if !defined SNOW_KNIFE
enum (+=275282312)
{
   UID_SNOW,
   UID_SNOW_FLY,
   UID_SNOW_MODE
}
#endif

// Anim sequence

enum PLAYER_ANIM
{
   PLAYER_IDLE,
   PLAYER_WALK,
   PLAYER_JUMP,
   PLAYER_SUPERJUMP,
   PLAYER_DIE,
   PLAYER_ATTACK1
};

enum WEAPON_ANIM
{
   AS_IDLE,
   AS_PULLPIN,
   AS_THROW,
   AS_DRAW
};

public plugin_precache()
{
   engfunc(EngFunc_PrecacheModel,SNOW_P_MODEL);
   engfunc(EngFunc_PrecacheModel,SNOW_V_MODEL);
   engfunc(EngFunc_PrecacheModel,SNOW_W_MODEL);

   engfunc(EngFunc_PrecacheGeneric,"sprites/weapon_snow.txt");
   engfunc(EngFunc_PrecacheModel,"sprites/snowball.spr");

   g_iSprBlood = engfunc(EngFunc_PrecacheModel,"sprites/blood.spr");
   g_iSprBloodSpray = engfunc(EngFunc_PrecacheModel,"sprites/bloodspray.spr");
}
public plugin_init()
{
   register_plugin("Knife Mode Snowball","0.2 alpha","s1lent");

#if !defined SNOW_KNIFE
   register_clcmd("lastinv","Cmd_Lastinv");

   register_clcmd(WEAPON_NAME_PRIMARY,"Cmd_WeaponSelect");
#endif
   register_clcmd(WEAPON_NAME_SECONDARY,"Cmd_WeaponSelectEx");

#if defined SNOW_MODE_ONLY
   RegisterHam(Ham_Spawn,"player","CBasePlayer__Spawn_Pre");
   RegisterHam(Ham_Spawn,"player","CBasePlayer__Spawn_Post",1);
#endif

   RegisterHam(Ham_Touch,"info_target","CBaseEntity__Touch",1);
   RegisterHam(Ham_Item_PostFrame,WEAPON_NAME_PRIMARY,"CBasePlayerItem__PostFrame");
   RegisterHam(Ham_Item_Deploy,WEAPON_NAME_PRIMARY,"CBasePlayerItem__Deploy",1);
   RegisterHam(Ham_Item_AddToPlayer,WEAPON_NAME_PRIMARY,"CBasePlayerItem__AddToPlayer",1);

   g_msgidWeaponList = get_user_msgid("WeaponList");
   g_msgidWeapPickup = get_user_msgid("WeapPickup");
}

#if defined SNOW_MODE_ONLY
public CBasePlayer__Spawn_Pre(id)
{
   if(pev_valid(id) != PDATA_SAFE)
   {
      return HAM_IGNORED;
   }

   set_pdata_int(id,m_fHasSurvivedLastRound,1);
   return HAM_IGNORED;
}
public CBasePlayer__Spawn_Post(id)
{
   if(!is_user_alive(id))
   {
      return HAM_IGNORED;
   }

   fm_give_item(id,"weapon_knife");
   return HAM_IGNORED;
}
#endif

#if !defined SNOW_KNIFE
public client_command(id)
{
   new szCmd[32];
   read_argv(0,szCmd,charsmax(szCmd));

   if(!equal(szCmd,"weapon_",7)
      || !strcmp(szCmd,WEAPON_NAME_PRIMARY)
      || !strcmp(szCmd,WEAPON_NAME_SECONDARY))
   {
      return 0;
   }
   return g_iLastWeapons[id] = 0;
}
#endif

public CBaseEntity__Touch(ent,id)
{
#if !defined SNOW_KNIFE
   if(pev(ent,pev_impulse) != UID_SNOW_FLY)
   {
      return HAM_IGNORED;
   }
#endif

   if(pev_valid(id) != PDATA_SAFE || !is_user_alive(id))
   {
      util__EffectSnow(ent);
      return HAM_IGNORED;
   }

   new Float:flDamage;
   pev(ent,pev_dmg,flDamage);

   new iAttacker = pev(ent,pev_owner);

   if(flDamage <= 0.0 || iAttacker < 1)
   {
      return HAM_IGNORED;
   }

#if !defined TEAMMATES_KILL
   if(get_pdata_int(iAttacker,m_iTeam) != get_pdata_int(id,m_iTeam))
   {
#endif
      new iHitgroup;
      new pTracehandle;

      new Float:vecStart[3],Float:vecEnd[3],Float:vecVelocity[3],Float:vecForward[3],Float
:flFraction;

      pev(ent,pev_origin,vecStart);
      pev(ent,pev_velocity,vecVelocity);
      global_get(glb_v_forward,vecForward);

      vecEnd[0] = vecStart[0] + vecForward[0];
      vecEnd[1] = vecStart[1] + vecForward[1];
      vecEnd[2] = vecStart[2] + vecForward[2];

      engfunc(EngFunc_TraceLine,vecStart,vecEnd,IGNORE_MISSILE|IGNORE_MONSTERS|IGNORE_
GLASS,iAttacker,pTracehandle);
      get_tr2(pTracehandle,TR_flFraction,flFraction);

      if(flFraction != 1.0)
      {
         iHitgroup = get_tr2(pTracehandle,TR_iHitgroup);

         set_pdata_int(id,m_LastHitGroup,iHitgroup);
      }
      ExecuteHam(Ham_TakeDamage,id,ent,iAttacker,flDamage,DMG_DROWN);

#if !defined TEAMMATES_KILL
   }
#endif

   util__EffectSnow(ent);

   return HAM_IGNORED;
}
#if !defined SNOW_KNIFE
public Cmd_Lastinv(id)
{
   if(~g_iLastWeapons[id] & (CSW_KNIFE|CSW_SNOW))
   {
      return g_iLastWeapons[id] = 0;
   }

   new pItem = util__FindKnifeSlot(id);

   if(!pItem
      || get_pdata_cbase(id,m_pActiveItem) != pItem
      || get_pdata_cbase(id,m_pLastItem) != pItem)
   {
      return g_iLastWeapons[id] = 0;
   }

   set_pev(pItem,pev_impulse,(pev(pItem,pev_impulse) == UID_SNOW_MODE) ? 0 : UID_SNOW_MODE);

   ExecuteHamB(Ham_Item_Deploy,pItem);

   return 1;
}
#endif
public CBasePlayerItem__AddToPlayer(ent,id)
{
   if(pev_valid(id) != PDATA_SAFE)
   {
      return HAM_IGNORED;
   }

#if !defined SNOW_KNIFE
   set_pev(id,pev_weapons,pev(id,pev_weapons)|(1<<CSW_SNOW));

   util__SendItemPickup(id,CSW_SNOW);
#endif

#if defined SNOW_MODE_ONLY
   util__SendItemPickup(id,CSW_KNIFE);
#endif

#if !defined SNOW_KNIFE
   util__SendWeaponList(id,WEAPON_NAME_PRIMARY,CSW_KNIFE);
   util__SendWeaponList(id,WEAPON_NAME_SECONDARY,CSW_SNOW);
#else
   util__SendWeaponList(id,WEAPON_NAME_SECONDARY,CSW_KNIFE);
#endif

   return HAM_IGNORED;
}
#if !defined SNOW_KNIFE
public Cmd_WeaponSelect(id)
{
   if(pev_valid(id) != PDATA_SAFE)
   {
      return 0;
   }

   new pItem = util__FindKnifeSlot(id);

   if(!pItem
      || pev(pItem,pev_impulse) != UID_SNOW_MODE)
   {
      return 0;
   }

   set_pev(pItem,pev_impulse,0);

   if(g_iLastWeapons[id] & CSW_SNOW)
      set_pdata_cbase(id,m_pLastItem,pItem);

   g_iLastWeapons[id] |= CSW_KNIFE;

   set_pdata_cbase(id,m_pActiveItem,pItem);
   ExecuteHamB(Ham_Item_Deploy,pItem);

   return 0;
}
#endif
public Cmd_WeaponSelectEx(id)
{
   if(pev_valid(id) != PDATA_SAFE)
   {
      return 0;
   }

   new pItem = util__FindKnifeSlot(id);

#if !defined SNOW_KNIFE
   if(!pItem
      || (pev(pItem,pev_impulse) == UID_SNOW_MODE && get_pdata_cbase(id,m_pActiveItem) == pItem))
   {
      return 0;
   }

   set_pev(pItem,pev_impulse,UID_SNOW_MODE);

   if(g_iLastWeapons[id] & CSW_KNIFE)
      set_pdata_cbase(id,m_pLastItem,pItem);

   g_iLastWeapons[id] |= CSW_SNOW;
#else
   if(!pItem || get_pdata_cbase(id,m_pActiveItem) == pItem)
   {
      return 0;
   }
#endif

   set_pdata_cbase(id,m_pActiveItem,pItem);
   ExecuteHamB(Ham_Item_Deploy,pItem);

   return 0;
}
public CBasePlayerItem__PostFrame(ent)
{
#if !defined SNOW_KNIFE
   if(pev(ent,pev_impulse) != UID_SNOW_MODE)
   {
      return HAM_IGNORED;
   }
#endif

   static Float:flWaitPower[MAX_CLIENTS + 1],Float:flCurrentTime,iButton,id;

   id = get_pdata_cbase(ent,m_pPlayer,4);

   if(pev_valid(id) != PDATA_SAFE)
   {
      return HAM_IGNORED;
   }

   iButton = pev(id,pev_button);

   flCurrentTime = get_gametime();

   if(((iButton & IN_ATTACK && get_pdata_float(ent,m_flNextPrimaryAttack,4) <= flCurrentTime)
      || (iButton & IN_ATTACK2 && get_pdata_float(ent,m_flNextSecondaryAttack,4) <= flCurrentTime)) && !get_pdata_float(ent,m_flStartThrow,4))
   {
      g_iPower[id] = 0;

      util__SendAnim(id,AS_PULLPIN);

      set_pdata_float(ent,m_flReleaseThrow,0.0,4);
      set_pdata_float(ent,m_flStartThrow,get_gametime(),4);
      set_pdata_float(ent,m_flTimeWeaponIdle,get_gametime() + 0.5,4);
   }
   else if(~iButton & IN_ATTACK2)
   {
      if(!get_pdata_float(ent,m_flReleaseThrow,4) && get_pdata_float(ent,m_flStartThrow,4))
         set_pdata_float(ent,m_flReleaseThrow,get_gametime(),4);

      if(get_pdata_float(ent,m_flTimeWeaponIdle,4) > get_gametime())
         return HAM_SUPERCEDE;

      if(get_pdata_float(ent,m_flStartThrow,4))
      {
         new Float:flVel;

         new Float:vecStart[3];
         new Float:vecThrow[3];
         new Float:vecVAngle[3];

         new Float:vecUp[3];
         new Float:vecForward[3];

         new Float:vecViewOfs[3];
         new Float:vecAngThrow[3];
         new Float:vecVelocity[3];
         new Float:vecPunchangle[3];

         pev(id,pev_origin,vecStart);
         pev(id,pev_v_angle,vecVAngle);
         pev(id,pev_view_ofs,vecViewOfs);
         pev(id,pev_velocity,vecVelocity);
         pev(id,pev_punchangle,vecPunchangle);

         vecAngThrow[0] = vecVAngle[0] + vecPunchangle[0];
         vecAngThrow[1] = vecVAngle[1] + vecPunchangle[1];
         vecAngThrow[2] = vecVAngle[2] + vecPunchangle[2];

         g_iPower[id] = clamp(g_iPower[id],MIN_POWER,MAX_POWER);

         if(vecAngThrow[0] < 0.0)
            vecAngThrow[0] = -10.0 + vecAngThrow[0] * ((90.0 - 10.0) / 90.0);

         else vecAngThrow[0] = -10.0 + vecAngThrow[0] * ((90.0 + 10.0) / 90.0);

         flVel = (90.0 - vecAngThrow[0]) * (g_iPower[id] / 2);

         if(flVel > 750.0 && g_iPower[id] <= MIN_POWER)
            flVel = 750.0;

         engfunc(EngFunc_MakeVectors,vecAngThrow);

         global_get(glb_v_up,vecUp);
         global_get(glb_v_forward,vecForward);

         vecStart[0] = vecStart[0] + vecViewOfs[0] + vecForward[0] * 16.0 + vecUp[0] * (g_iPower[id] > MIN_POWER ? 5.0 : 1.0);
         vecStart[1] = vecStart[1] + vecViewOfs[1] + vecForward[1] * 16.0 + vecUp[1] * (g_iPower[id] > MIN_POWER ? 5.0 : 1.0);
         vecStart[2] = vecStart[2] + vecViewOfs[2] + vecForward[2] * 16.0 + vecUp[2] * (g_iPower[id] > MIN_POWER ? 5.0 : 1.0);

         vecThrow[0] = vecForward[0] * flVel - vecUp[0] * random_float(45.0,90.0) + vecVelocity[0];
         vecThrow[1] = vecForward[1] * flVel - vecUp[1] * random_float(45.0,90.0) + vecVelocity[1];
         vecThrow[2] = vecForward[2] * flVel - vecUp[2] * random_float(45.0,90.0) + vecVelocity[2];

         util__SendAnim(id,AS_THROW);
         util__SendAnimationShoot(id);
         util__ShootContact(id,vecStart,vecThrow);

         set_pdata_float(ent,m_flStartThrow,0.0,4);
         set_pdata_float(ent,m_flNextPrimaryAttack,get_gametime() + 2.0,4);
         set_pdata_float(ent,m_flNextSecondaryAttack,get_gametime() + 2.0,4);
         set_pdata_float(ent,m_flTimeWeaponIdle,get_gametime() + 0.75,4);

         return HAM_SUPERCEDE;
      }
      else if(get_pdata_float(ent,m_flReleaseThrow,4) > 0.0)
      {
         util__SendAnim(id,AS_DRAW);

         set_pdata_float(ent,m_flReleaseThrow,-1.0,4);
         set_pdata_float(ent,m_flTimeWeaponIdle,get_gametime() + random_float(10.0,15.0),4);

         return HAM_SUPERCEDE;
      }

      util__SendAnim(id,AS_IDLE);

      set_pdata_float(ent,m_flTimeWeaponIdle,get_gametime() + random_float(10.0,15.0),4);

      return HAM_SUPERCEDE;
   }

   if(flCurrentTime > flWaitPower[id])
   {
      flWaitPower[id] = flCurrentTime + FREQUENCY_POWER;

      if(iButton & IN_ATTACK2 && get_pdata_float(ent,m_flStartThrow,4))
         g_iPower[id]++;
   }

   return HAM_SUPERCEDE;
}
public CBasePlayerItem__Deploy(ent)
{
   new Float:flCurrentTime,id;

   flCurrentTime = get_gametime();
   id = get_pdata_cbase(ent,41,4);

   set_pdata_float(ent,m_flNextAttack,flCurrentTime + 0.75,4);
   set_pdata_float(ent,m_flTimeWeaponIdle,flCurrentTime + 1.5,4);

#if !defined SNOW_KNIFE
   if(pev(ent,pev_impulse) == UID_SNOW_MODE)
   {
#endif
      set_pev(id,pev_viewmodel2,SNOW_V_MODEL);
      set_pev(id,pev_weaponmodel2,SNOW_P_MODEL);

      set_pdata_string(id,m_szAnimExtention * 4,"grenade",-1,5 * 4);

#if !defined SNOW_KNIFE
   }
   else
   {
      set_pdata_float(ent,m_flNextPrimaryAttack,-1.0,4);
      set_pdata_float(ent,m_flNextSecondaryAttack,-1.0,4);
   }
#endif
   util__SendAnim(id,AS_DRAW);

   return HAM_IGNORED;
}
stock util__FindKnifeSlot(id)
{
   const iSlot = 3;

   new pItem = get_pdata_cbase(id,m_rgpPlayerItems_CBasePlayer + iSlot);

   if(pev_valid(pItem) != PDATA_SAFE)
   {
      return 0;
   }

   return pItem;
}
stock util__SendAnim(id,WEAPON_ANIM:anim)
{
   set_pev(id,pev_weaponanim,anim);

   engfunc(EngFunc_MessageBegin,MSG_ONE,SVC_WEAPONANIM,{0.0,0.0,0.0},id);

   write_byte(_:anim);
   write_byte(0);
   message_end();
}
stock util__SendItemPickup(id,weapon)
{
   engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgidWeapPickup,{0.0,0.0,0.0},
id);
   write_byte(weapon);
   message_end();
}
stock util__SendWeaponList(id,const szWeaponName[32],weaponID)
{
   engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgidWeaponList,{0.0,0.0,0.0},
id);
   write_string(szWeaponName);
   write_byte(-1);
   write_byte(-1);
   write_byte(-1);
   write_byte(-1);
   write_byte(2);
   write_byte((weaponID == CSW_SNOW) ? 20 : 1);
   write_byte(weaponID);
   write_byte(0);
   message_end()
}
stock util__snowSpawn()
{
   new ent;
   static szAllocString;

   if(szAllocString || (szAllocString = engfunc(EngFunc_AllocString,"info_target")))
   {
      ent = engfunc(EngFunc_CreateNamedEntity,szAllocString);
   }

   if(pev_valid(ent) != PDATA_SAFE)
   {
      return -1;
   }

   set_pev(ent,pev_classname,"snow");
   set_pev(ent,pev_solid,SOLID_BBOX);

#if !defined SNOW_KNIFE
   set_pev(ent,pev_impulse,UID_SNOW_FLY);
#endif

   set_pev(ent,pev_movetype,MOVETYPE_TOSS);

   engfunc(EngFunc_SetModel,ent,SNOW_W_MODEL);
   engfunc(EngFunc_SetSize,ent,{0.0,0.0,0.0},{0.0,0.0,0.0});

   return ent;
}
stock util__ShootContact(id,Float:vecStart[3],Float:vecVelocity[3])
{
   new Float:flRet[3];
   new ent = util__snowSpawn();

   if(ent == -1)
   {
      return 0;
   }

   vector_to_angle(vecVelocity,flRet);

   set_pev(ent,pev_owner,id);
   set_pev(ent,pev_gravity,0.5);
   set_pev(ent,pev_angles,flRet);
   set_pev(ent,pev_dmg,g_iPower[id] * MULTIPLY_POWER);

   set_pev(ent,pev_velocity,vecVelocity);
   set_pev(ent,pev_nextthink,get_gametime() + 0.1);
   set_pev(ent,pev_avelocity,random_float(-100.0,-500.0));
   engfunc(EngFunc_SetOrigin,ent,vecStart);

   return ent;
}
stock util__EffectSnow(ent)
{
   new Float:vecStart[3];
   pev(ent,pev_origin,vecStart);

   message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
   write_byte(TE_BLOODSPRITE);

   engfunc(EngFunc_WriteCoord,vecStart[0]);
   engfunc(EngFunc_WriteCoord,vecStart[1]);
   engfunc(EngFunc_WriteCoord,vecStart[2]);

   write_short(g_iSprBloodSpray);
   write_short(g_iSprBlood);
   write_byte(9);
   write_byte(15);
   message_end();

   set_pev(ent,pev_flags,FL_KILLME);
}

// thanks to KORD_12.7 | SetAnimation
// link: <noindex><a rel="nofollow" href="http://c-s.net.ua/url?u=http%3A%2F%2Faghl.ru%2Fforum%2Fviewtopic.php%3Ff%3D20%26amp%3Bt%3D1493%23p17852" target="_blank">http://aghl.ru/forum/viewtopic.php?f=20&t=1493#p17852</a></noindex>

stock util__SendAnimationShoot(id)
{
   new iAnimDesired,Float:flFrameRate,Float:flGroundSpeed,bool:bLoops;

   if((iAnimDesired = lookup_sequence(id,"ref_shoot_grenade",flFrameRate,bLoops,flGroundSpeed)) == -1)
   {
      iAnimDesired = 0;
   }

   new Float:flCurrentTime = get_gametime();

   set_pev(id,pev_frame,0.0);
   set_pev(id,pev_framerate,1.0);
   set_pev(id,pev_animtime,flCurrentTime);
   set_pev(id,pev_sequence,iAnimDesired);

   set_pdata_int(id,m_fSequenceLoops,bLoops,4);
   set_pdata_int(id,m_fSequenceFinished,0,4);

   set_pdata_float(id,m_flFrameRate,flFrameRate,4);
   set_pdata_float(id,m_flGroundSpeed,flGroundSpeed,4);
   set_pdata_float(id,m_flLastEventCheck,flCurrentTime,4);

   set_pdata_int(id,m_Activity,ACT_RANGE_ATTACK1);
   set_pdata_int(id,m_IdealActivity,ACT_RANGE_ATTACK1);  
   set_pdata_float(id,m_flLastAttackTime,flCurrentTime);
}


Было так как ты и написал. Так после розминки на кнопке 3 пропадает нож.

Вот исходник розминки.

Скрытый текст
Код:
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <dhudmessage>

#define PLUGIN_NAME "Auto Restart KNIFE"
#define PLUGIN_VERSION "1.6"
#define PLUGIN_AUTHOR "Leo_[BH] & Fintok!"

const m_iMenu = 205
const m_iJoiningState = 121

const MENU_CHOOSEAPPEARANCE = 3
const JOIN_CHOOSEAPPEARANCE = 4

new Timer, SecondsCvar, szMapName[32]

public plugin_init()
{
register_plugin(PLUGIN_NAME , PLUGIN_VERSION, PLUGIN_AUTHOR)

register_dictionary("auto_rr.txt")

SecondsCvar = register_cvar("auto_rr_time", "45")

RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled_Post", 1)

register_clcmd("menuselect", "clcmd_MenuSelect_JoinClass")
register_clcmd("joinclass", "clcmd_MenuSelect_JoinClass")

register_event("CurWeapon", "ev_CurWeapon", "be", "1=1", "2!29")

get_mapname(szMapName, charsmax(szMapName))

Timer = get_pcvar_num(SecondsCvar)

set_task(1.0, "start_rr_timer", .flags="a", .repeat=get_pcvar_num(SecondsCvar))

server_cmd("amx_pausecfg pause vampire.amxx") // Приостановить работу определенного плагина

server_cmd("amx_pausecfg enable snezhki.amxx") // Возобновить работу определенного плагина
}

public start_rr_timer()
{
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.08, 0, 0.0, 0.01)
show_dhudmessage(0, "%L", LANG_PLAYER, "RR_TIME", Timer)

if(Timer == 1)
{
server_cmd("sv_restartround 1")

set_task(3.0, "rr_end")

server_cmd("amx_pausecfg enable vampire.amxx") // Возобновить работу определенного плагина

server_cmd("amx_pausecfg pause snezhki.amxx") // Приостановить работу определенного плагина
}

Timer -= 1
}

public rr_end()
{
set_dhudmessage(0, 128, 0, -1.0, 0.78, 2, 6.0, 3.0, 0.1, 1.5, false)
show_dhudmessage(0, "%L", LANG_PLAYER, "RR_GG")
}

public fw_PlayerSpawn_Post(id)
{
if(!Timer || !is_user_alive(id))
return

if(!((containi(szMapName, "1hp") != -1) || (containi(szMapName, "35hp") != -1)))
set_user_health(id, 35)

cs_set_user_money(id, 0)
}

public fw_PlayerKilled_Post(id)
{
if(!Timer)
return

set_task(1.0, "playerRespawn", id)
}

public playerRespawn(id)
{
switch(cs_get_user_team(id))
{
case CS_TEAM_T, CS_TEAM_CT:
{
if(!is_user_alive(id))
ExecuteHam(Ham_CS_RoundRespawn, id)
}
}
}

public clcmd_MenuSelect_JoinClass(id)
{
if(!Timer)
return PLUGIN_CONTINUE

if(get_pdata_int(id, m_iMenu) == MENU_CHOOSEAPPEARANCE && get_pdata_int(id, m_iJoiningState) == JOIN_CHOOSEAPPEARANCE)
{
new command[11], arg[32]

read_argv(0, command, charsmax(command))
read_argv(1, arg, charsmax(arg))

engclient_cmd(id, command, arg)

ExecuteHam(Ham_Player_PreThink, id)

if(!is_user_alive(id))
ExecuteHamB(Ham_Spawn, id)

return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}

public ev_CurWeapon(id)
{
if(!Timer)
return

engclient_cmd(id, "weapon_knife")
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
11 страниц V  « 6 7 8 ... 9 10 »
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: