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

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

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

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

2 страниц V   1 2

Отредактировать плагин

Статус пользователя Rusich
сообщение 8.4.2017, 13:48
Сообщение #1


Стаж: 10 лет
Город: Россия, Москва

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

Приветствую. Есть плагин меню админского оружия.
Кто может помочь и сделать так, чтобы меню выскакивало каждый раунд без команды. Видел в VIP подобное, но нужен отдельный плагин. Возможно оплата.
Код:
#include < amxmodx >
#include < cstrike >
#include < hamsandwich >
#include < fakemeta_util >

#define PLUGIN_NAME "Vip Menu"
#define PLUGIN_VERSION "0.1"
#define PLUGIN_AUTHOR "BlackSmoke"

#define FLAG_ACCESS ADMIN_LEVEL_H
#define RegisterMenu(%1,%2) register_menucmd(register_menuid(%1),1023,%2)

new
bool:b_Damager[ 33 ] ,

s_Col[ 33 ][ 4 ] ,

iKey ,
iRound ;

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

register_event( "HLTV", "fw_RoundStart", "a", "1=0", "2=0" );
register_clcmd( "vipmenu", "ClientCmd__OpenVipMenu" ) ;

RegisterHam( Ham_Spawn, "player", "HamSpawnPlayer" ) ;
RegisterHam( Ham_Killed, "player", "HamKilledPlayer" ) ;

RegisterMenu( "VipMenu", "ActionVipMenu" ) ;

}

public fw_RoundStart( ) iRound++ ;

public client_authorized( iPlayer )
{
b_Damager[ iPlayer ] = true ;

if( ~get_user_flags( iPlayer ) & FLAG_ACCESS )
return PLUGIN_CONTINUE ;

new s_Name[ 32 ] ;
get_user_name( iPlayer, s_Name, 31 ) ;
Color_Print( 0, "!g[Сервер] !teamВип игрок: !g%s !teamв сети", s_Name ) ;

return PLUGIN_CONTINUE ;
}

public HamSpawnPlayer( iPlayer )
{
if( ~get_user_flags( iPlayer ) & FLAG_ACCESS || !is_user_alive( iPlayer ) )
return HAM_IGNORED ;

set_task( 2.0, "GiveItems", iPlayer ) ;

return HAM_IGNORED ;
}

public GiveItems( iPlayer )
{
fm_give_item( iPlayer, "weapon_hegrenade" ) ;
fm_give_item( iPlayer, "weapon_flashbang" ) ;
fm_give_item( iPlayer, "weapon_flashbang" ) ;
fm_give_item( iPlayer, "weapon_smokegrenade" ) ;
fm_set_user_armor( iPlayer, 100 ) ;
}

public HamKilledPlayer( iVictim, iAttacker )
{
if( !is_user_connected( iAttacker ) || !b_Damager[ iAttacker ] )
return HAM_IGNORED ;

message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, iAttacker)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(34)
write_byte(144)
write_byte(250)
write_byte(75)
message_end()

return HAM_IGNORED ;
}

public ClientCmd__OpenVipMenu( iPlayer )
{
if( ~get_user_flags( iPlayer ) & FLAG_ACCESS )
{
s_Col[ iPlayer ] = "\d" ;
iKey = ( 1 << 9 ) ;
}
else
{
s_Col[ iPlayer ] = "\w" ;
iKey = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<9)
}

new s_Menu[ 512 ], s_Name[ 32 ] , iLen ;
get_user_name( iPlayer, s_Name, charsmax( s_Name ) ) ;

if( get_user_flags( iPlayer ) & FLAG_ACCESS )
iLen = format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\y\d^n\yВип Меню\r\d\y^n^n");
else
iLen = format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\yВип Меню \d^nЦена \yVIP: \r30р \r| \dSkype: \rvady19981^n^n");
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r1. %sВзять \r[\ydeagle\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r2. %sВзять \r[\yAK-47\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r3. %sВзять \r[\yM4a1\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r4. %sВзять \r[\yAWP\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r5. %sВзять \r[\yFAMAS\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r0. Выход" ) ;

show_menu( iPlayer,iKey,s_Menu,-1,"VipMenu" ) ;
return PLUGIN_HANDLED ;
}

public ActionVipMenu( iPlayer, iKey )
{
new s_Name[ 32 ] ;
get_user_name( iPlayer, s_Name, 31 ) ;
if( iRound < 5 && iKey != 5 )
{
Color_Print( iPlayer, "!g[VIP] !teamОружие можно брать только с !g2-го !teamраунда" ) ;
return PLUGIN_HANDLED ;
}
switch( iKey )
{
case 0:
{
fm_strip_user_gun( iPlayer, CSW_USP ) ;
fm_strip_user_gun( iPlayer, CSW_GLOCK18 ) ;
fm_strip_user_gun( iPlayer, CSW_FIVESEVEN ) ;
fm_strip_user_gun( iPlayer, CSW_ELITE ) ;
fm_give_item( iPlayer, "weapon_deagle" ) ;
cs_set_user_bpammo( iPlayer, CSW_DEAGLE, 35 ) ;
}
case 1:
{
fm_strip_user_gun( iPlayer, CSW_M4A1 ) ;
fm_strip_user_gun( iPlayer, CSW_AWP ) ;
fm_strip_user_gun( iPlayer, CSW_FAMAS ) ;
fm_strip_user_gun( iPlayer, CSW_M3 ) ;
fm_give_item( iPlayer, "weapon_ak47" ) ;
cs_set_user_bpammo( iPlayer, CSW_AK47, 90 ) ;
}
case 2:
{
fm_strip_user_gun( iPlayer, CSW_AK47 ) ;
fm_strip_user_gun( iPlayer, CSW_AWP ) ;
fm_strip_user_gun( iPlayer, CSW_FAMAS ) ;
fm_strip_user_gun( iPlayer, CSW_M3 ) ;
fm_give_item( iPlayer, "weapon_m4a1" ) ;
cs_set_user_bpammo( iPlayer, CSW_M4A1, 90 ) ;
}
case 3:
{
fm_strip_user_gun( iPlayer, CSW_AK47 ) ;
fm_strip_user_gun( iPlayer, CSW_M4A1 ) ;
fm_strip_user_gun( iPlayer, CSW_FAMAS ) ;
fm_strip_user_gun( iPlayer, CSW_M3 ) ;
fm_give_item( iPlayer, "weapon_awp" ) ;
cs_set_user_bpammo( iPlayer, CSW_AWP, 30 ) ;
}
case 4:
{
fm_strip_user_gun( iPlayer, CSW_AK47 ) ;
fm_strip_user_gun( iPlayer, CSW_AWP ) ;
fm_strip_user_gun( iPlayer, CSW_M4A1 ) ;
fm_strip_user_gun( iPlayer, CSW_M3 ) ;
fm_give_item( iPlayer, "weapon_famas" ) ;
cs_set_user_bpammo( iPlayer, CSW_FAMAS, 90 ) ;
}
}
return PLUGIN_HANDLED ;
}

stock Color_Print(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!team", "^3") // Team Color

if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}


Удача благоволит храбрым.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя vladboss
сообщение 8.4.2017, 14:22
Сообщение #2


Стаж: 15 лет

Сообщений: 312
Благодарностей: 87
Полезность: 236

Rusich, в fw_RoundStart, делай цикл по игрокам, проверяй на права и вызывай свою менюшку.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Rusich
сообщение 8.4.2017, 14:29
Сообщение #3


Стаж: 10 лет
Город: Россия, Москва

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

Цитата(vladboss @ 8.4.2017, 16:22) *
Rusich, в fw_RoundStart, делай цикл по игрокам, проверяй на права и вызывай свою менюшку.

Я не очень разбираюсь в этом, даже если не сказать, что вообще не разбираюсь.


Удача благоволит храбрым.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 8.4.2017, 14:47
Сообщение #4


Стаж: 12 лет

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

Цитата(vladboss @ 8.4.2017, 14:22) *
Rusich, в fw_RoundStart, делай цикл по игрокам, проверяй на права и вызывай свою менюшку.

Зачем делать цикл по игрокам если можно вот так?
Код:
RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1)
// для reHLDS (reAPI) RegisterHookChain(RG_CBasePlayer_Spawn, "hookPlayerSpawn_Post", 1)

public Ham_PlayerSpawn_Post(id)
{
ClientCmd__OpenVipMenu(id)
}


Не нужно циклом гнать и не нужно в цикле делать проверку на is_user_alive(id)

Отредактировал: ssx, - 8.4.2017, 14:49


[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
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Rusich
сообщение 8.4.2017, 20:42
Сообщение #5


Стаж: 10 лет
Город: Россия, Москва

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

ssx,
Плагин не мой, я вообще не в курсе, что и как делается.


Удача благоволит храбрым.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Stimul1
сообщение 10.4.2017, 23:27
Сообщение #6


Стаж: 13 лет

Сообщений: 227
Благодарностей: 262
Полезность: 977

Удалить:
Код:
register_clcmd( "vipmenu", "ClientCmd__OpenVipMenu" ) ;

Заменить:
Код:
public HamSpawnPlayer( iPlayer )
{
if( ~get_user_flags( iPlayer ) & FLAG_ACCESS || !is_user_alive( iPlayer ) )
return HAM_IGNORED ;

set_task( 2.0, "GiveItems", iPlayer ) ;

return HAM_IGNORED ;
}

public GiveItems( iPlayer )
{
fm_give_item( iPlayer, "weapon_hegrenade" ) ;
fm_give_item( iPlayer, "weapon_flashbang" ) ;
fm_give_item( iPlayer, "weapon_flashbang" ) ;
fm_give_item( iPlayer, "weapon_smokegrenade" ) ;
fm_set_user_armor( iPlayer, 100 ) ;
}
===>
Код:
public HamSpawnPlayer( iPlayer )
{
if( !is_user_alive( iPlayer ) || ~get_user_flags( iPlayer ) & FLAG_ACCESS )
return HAM_IGNORED ;

ClientCmd__OpenVipMenu( iPlayer ) ;

set_task( 2.0, "GiveItems", iPlayer ) ;

return HAM_IGNORED ;
}

public GiveItems( iPlayer )
{
if(is_user_alive( iPlayer ))
{
fm_give_item( iPlayer, "weapon_hegrenade" ) ;
fm_give_item( iPlayer, "weapon_flashbang" ) ;
fm_give_item( iPlayer, "weapon_flashbang" ) ;
fm_give_item( iPlayer, "weapon_smokegrenade" ) ;
fm_set_user_armor( iPlayer, 100 ) ;
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 11.4.2017, 12:37
Сообщение #7


Стаж: 12 лет

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

Stimul1,

Когда Ham_Spawn в post то не нужно set_task и проверки is_user_alive

Отредактировал: ssx, - 11.4.2017, 12:38


[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
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Stimul1
сообщение 11.4.2017, 16:19
Сообщение #8


Стаж: 13 лет

Сообщений: 227
Благодарностей: 262
Полезность: 977

ssx, кто тебе такую глупость сказал?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя SISA
сообщение 11.4.2017, 18:10
Сообщение #9
Стаж: 15 лет

Сообщений: 2774
Благодарностей: 2956
Полезность: 994

Цитата(Stimul1 @ 11.4.2017, 18:19) *
ssx, кто тебе такую глупость сказал?


Скорее вопрос к вам smile.gif Таски для выдачи оружия не нужны на спавне.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Rusich
сообщение 11.4.2017, 19:22
Сообщение #10


Стаж: 10 лет
Город: Россия, Москва

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

Rusich,
Меню к сожалению не выскакивает :(


Удача благоволит храбрым.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 11.4.2017, 19:30
Сообщение #11


Стаж: 12 лет

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

Цитата(Rusich @ 11.4.2017, 19:22) *
Rusich,
Меню к сожалению не выскакивает :(

покажи текущий код.


[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
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Rusich
сообщение 11.4.2017, 20:03
Сообщение #12


Стаж: 10 лет
Город: Россия, Москва

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

ssx,
Код:
#include < amxmodx >
#include < cstrike >
#include < hamsandwich >
#include < fakemeta_util >

#define PLUGIN_NAME "Vip Menu"
#define PLUGIN_VERSION "0.1"
#define PLUGIN_AUTHOR "BlackSmoke"

#define FLAG_ACCESS ADMIN_LEVEL_H
#define RegisterMenu(%1,%2) register_menucmd(register_menuid(%1),1023,%2)

new
bool:b_Damager[ 33 ] ,

s_Col[ 33 ][ 4 ] ,

iKey ,
iRound ;

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

register_event( "HLTV", "fw_RoundStart", "a", "1=0", "2=0" );

RegisterHam( Ham_Spawn, "player", "HamSpawnPlayer" ) ;
RegisterHam( Ham_Killed, "player", "HamKilledPlayer" ) ;

RegisterMenu( "VipMenu", "ActionVipMenu" ) ;

}

public fw_RoundStart( ) iRound++ ;

public client_authorized( iPlayer )
{
b_Damager[ iPlayer ] = true ;

if( ~get_user_flags( iPlayer ) & FLAG_ACCESS )
return PLUGIN_CONTINUE ;

new s_Name[ 32 ] ;
get_user_name( iPlayer, s_Name, 31 ) ;
Color_Print( 0, "!g[Сервер] !teamВип игрок: !g%s !teamв сети", s_Name ) ;

return PLUGIN_CONTINUE ;
}

public HamSpawnPlayer( iPlayer )
{
if( !is_user_alive( iPlayer ) || ~get_user_flags( iPlayer ) & FLAG_ACCESS )
return HAM_IGNORED ;

ClientCmd__OpenVipMenu( iPlayer ) ;

set_task( 2.0, "GiveItems", iPlayer ) ;

return HAM_IGNORED ;
}

public GiveItems( iPlayer )
{
if(is_user_alive( iPlayer ))
{
fm_give_item( iPlayer, "weapon_hegrenade" ) ;
fm_give_item( iPlayer, "weapon_flashbang" ) ;
fm_give_item( iPlayer, "weapon_flashbang" ) ;
fm_give_item( iPlayer, "weapon_smokegrenade" ) ;
fm_set_user_armor( iPlayer, 100 ) ;
}
}

public HamKilledPlayer( iVictim, iAttacker )
{
if( !is_user_connected( iAttacker ) || !b_Damager[ iAttacker ] )
return HAM_IGNORED ;

message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, iAttacker)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(34)
write_byte(144)
write_byte(250)
write_byte(75)
message_end()

return HAM_IGNORED ;
}

public ClientCmd__OpenVipMenu( iPlayer )
{
if( ~get_user_flags( iPlayer ) & FLAG_ACCESS )
{
s_Col[ iPlayer ] = "\d" ;
iKey = ( 1 << 9 ) ;
}
else
{
s_Col[ iPlayer ] = "\w" ;
iKey = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<9)
}

new s_Menu[ 512 ], s_Name[ 32 ] , iLen ;
get_user_name( iPlayer, s_Name, charsmax( s_Name ) ) ;

if( get_user_flags( iPlayer ) & FLAG_ACCESS )
iLen = format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\y\d^n\yВип Меню\r\d\y^n^n");
else
iLen = format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\yВип Меню \d^nЦена \yVIP: \r30р \r| \dSkype: \rvady19981^n^n");
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r1. %sВзять \r[\ydeagle\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r2. %sВзять \r[\yAK-47\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r3. %sВзять \r[\yM4a1\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r4. %sВзять \r[\yAWP\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r5. %sВзять \r[\yFAMAS\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r0. Выход" ) ;

show_menu( iPlayer,iKey,s_Menu,-1,"VipMenu" ) ;
return PLUGIN_HANDLED ;
}

public ActionVipMenu( iPlayer, iKey )
{
new s_Name[ 32 ] ;
get_user_name( iPlayer, s_Name, 31 ) ;
if( iRound < 5 && iKey != 5 )
{
Color_Print( iPlayer, "!g[VIP] !teamОружие можно брать только с !g2-го !teamраунда" ) ;
return PLUGIN_HANDLED ;
}
switch( iKey )
{
case 0:
{
fm_strip_user_gun( iPlayer, CSW_USP ) ;
fm_strip_user_gun( iPlayer, CSW_GLOCK18 ) ;
fm_strip_user_gun( iPlayer, CSW_FIVESEVEN ) ;
fm_strip_user_gun( iPlayer, CSW_ELITE ) ;
fm_give_item( iPlayer, "weapon_deagle" ) ;
cs_set_user_bpammo( iPlayer, CSW_DEAGLE, 35 ) ;
}
case 1:
{
fm_strip_user_gun( iPlayer, CSW_M4A1 ) ;
fm_strip_user_gun( iPlayer, CSW_AWP ) ;
fm_strip_user_gun( iPlayer, CSW_FAMAS ) ;
fm_strip_user_gun( iPlayer, CSW_M3 ) ;
fm_give_item( iPlayer, "weapon_ak47" ) ;
cs_set_user_bpammo( iPlayer, CSW_AK47, 90 ) ;
}
case 2:
{
fm_strip_user_gun( iPlayer, CSW_AK47 ) ;
fm_strip_user_gun( iPlayer, CSW_AWP ) ;
fm_strip_user_gun( iPlayer, CSW_FAMAS ) ;
fm_strip_user_gun( iPlayer, CSW_M3 ) ;
fm_give_item( iPlayer, "weapon_m4a1" ) ;
cs_set_user_bpammo( iPlayer, CSW_M4A1, 90 ) ;
}
case 3:
{
fm_strip_user_gun( iPlayer, CSW_AK47 ) ;
fm_strip_user_gun( iPlayer, CSW_M4A1 ) ;
fm_strip_user_gun( iPlayer, CSW_FAMAS ) ;
fm_strip_user_gun( iPlayer, CSW_M3 ) ;
fm_give_item( iPlayer, "weapon_awp" ) ;
cs_set_user_bpammo( iPlayer, CSW_AWP, 30 ) ;
}
case 4:
{
fm_strip_user_gun( iPlayer, CSW_AK47 ) ;
fm_strip_user_gun( iPlayer, CSW_AWP ) ;
fm_strip_user_gun( iPlayer, CSW_M4A1 ) ;
fm_strip_user_gun( iPlayer, CSW_M3 ) ;
fm_give_item( iPlayer, "weapon_famas" ) ;
cs_set_user_bpammo( iPlayer, CSW_FAMAS, 90 ) ;
}
}
return PLUGIN_HANDLED ;
}

stock Color_Print(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!team", "^3") // Team Color

if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}


Удача благоволит храбрым.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Stimul1
сообщение 11.4.2017, 20:51
Сообщение #13


Стаж: 13 лет

Сообщений: 227
Благодарностей: 262
Полезность: 977

SISA, это понятно, но я оставил так, как сделал автор. Маленько неправильно пост ssx прочел.
Rusich, у тебя ловится не SpawnPost, а SpawnPre.
Код:
RegisterHam( Ham_Spawn, "player", "HamSpawnPlayer" ) ;
===>
Код:
RegisterHam( Ham_Spawn, "player", "HamSpawnPlayer", 1 ) ;


Отредактировал: Stimul1, - 11.4.2017, 20:52
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Rusich
сообщение 11.4.2017, 21:11
Сообщение #14


Стаж: 10 лет
Город: Россия, Москва

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

Stimul1,
тот же результат, не выскакивает.


Удача благоволит храбрым.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 11.4.2017, 21:23
Сообщение #15


Стаж: 12 лет

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

Цитата(Rusich @ 11.4.2017, 21:11) *
Stimul1,
тот же результат, не выскакивает.

Всё гуд открывает!
Cкрытый текст
Код:
#include < amxmodx >
#include < cstrike >
#include < hamsandwich >
#include < fakemeta_util >

#define PLUGIN_NAME "Vip Menu"
#define PLUGIN_VERSION "0.1"
#define PLUGIN_AUTHOR "BlackSmoke"

#define FLAG_ACCESS ADMIN_LEVEL_H
#define RegisterMenu(%1,%2) register_menucmd(register_menuid(%1),1023,%2)

new
bool:b_Damager[ 33 ] ,

s_Col[ 33 ][ 4 ] ,

iKey ,
iRound ;

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

register_event( "HLTV", "fw_RoundStart", "a", "1=0", "2=0" );

RegisterHam( Ham_Spawn, "player", "HamSpawnPlayer", 1 ) ;
RegisterHam( Ham_Killed, "player", "HamKilledPlayer" ) ;

RegisterMenu( "VipMenu", "ActionVipMenu" ) ;

}

public fw_RoundStart( ) iRound++ ;

public client_authorized( iPlayer )
{
b_Damager[ iPlayer ] = true ;

if( ~get_user_flags( iPlayer ) & FLAG_ACCESS )
return PLUGIN_CONTINUE ;

new s_Name[ 32 ] ;
get_user_name( iPlayer, s_Name, 31 ) ;
Color_Print( 0, "!g[Сервер] !teamВип игрок: !g%s !teamв сети", s_Name ) ;

return PLUGIN_CONTINUE ;
}

public HamSpawnPlayer( iPlayer )
{
if( !is_user_alive( iPlayer ) || ~get_user_flags( iPlayer ) & FLAG_ACCESS )
return HAM_IGNORED ;

ClientCmd__OpenVipMenu( iPlayer ) ;

set_task( 2.0, "GiveItems", iPlayer ) ;

return HAM_IGNORED ;
}

public GiveItems( iPlayer )
{
if(is_user_alive( iPlayer ))
{
fm_give_item( iPlayer, "weapon_hegrenade" ) ;
fm_give_item( iPlayer, "weapon_flashbang" ) ;
fm_give_item( iPlayer, "weapon_flashbang" ) ;
fm_give_item( iPlayer, "weapon_smokegrenade" ) ;
fm_set_user_armor( iPlayer, 100 ) ;
}
}

public HamKilledPlayer( iVictim, iAttacker )
{
if( !is_user_connected( iAttacker ) || !b_Damager[ iAttacker ] )
return HAM_IGNORED ;

message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, iAttacker)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(34)
write_byte(144)
write_byte(250)
write_byte(75)
message_end()

return HAM_IGNORED ;
}

public ClientCmd__OpenVipMenu( iPlayer )
{
if( ~get_user_flags( iPlayer ) & FLAG_ACCESS )
{
s_Col[ iPlayer ] = "\d" ;
iKey = ( 1 << 9 ) ;
}
else
{
s_Col[ iPlayer ] = "\w" ;
iKey = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<9)
}

new s_Menu[ 512 ], s_Name[ 32 ] , iLen ;
get_user_name( iPlayer, s_Name, charsmax( s_Name ) ) ;

if( get_user_flags( iPlayer ) & FLAG_ACCESS )
iLen = format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\y\d^n\yВип Меню\r\d\y^n^n");
else
iLen = format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\yВип Меню \d^nЦена \yVIP: \r30р \r| \dSkype: \rvady19981^n^n");
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r1. %sВзять \r[\ydeagle\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r2. %sВзять \r[\yAK-47\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r3. %sВзять \r[\yM4a1\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r4. %sВзять \r[\yAWP\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r5. %sВзять \r[\yFAMAS\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r0. Выход" ) ;

show_menu( iPlayer,iKey,s_Menu,-1,"VipMenu" ) ;
return PLUGIN_HANDLED ;
}

public ActionVipMenu( iPlayer, iKey )
{
new s_Name[ 32 ] ;
get_user_name( iPlayer, s_Name, 31 ) ;
if( iRound < 5 && iKey != 5 )
{
Color_Print( iPlayer, "!g[VIP] !teamОружие можно брать только с !g2-го !teamраунда" ) ;
return PLUGIN_HANDLED ;
}
switch( iKey )
{
case 0:
{
fm_strip_user_gun( iPlayer, CSW_USP ) ;
fm_strip_user_gun( iPlayer, CSW_GLOCK18 ) ;
fm_strip_user_gun( iPlayer, CSW_FIVESEVEN ) ;
fm_strip_user_gun( iPlayer, CSW_ELITE ) ;
fm_give_item( iPlayer, "weapon_deagle" ) ;
cs_set_user_bpammo( iPlayer, CSW_DEAGLE, 35 ) ;
}
case 1:
{
fm_strip_user_gun( iPlayer, CSW_M4A1 ) ;
fm_strip_user_gun( iPlayer, CSW_AWP ) ;
fm_strip_user_gun( iPlayer, CSW_FAMAS ) ;
fm_strip_user_gun( iPlayer, CSW_M3 ) ;
fm_give_item( iPlayer, "weapon_ak47" ) ;
cs_set_user_bpammo( iPlayer, CSW_AK47, 90 ) ;
}
case 2:
{
fm_strip_user_gun( iPlayer, CSW_AK47 ) ;
fm_strip_user_gun( iPlayer, CSW_AWP ) ;
fm_strip_user_gun( iPlayer, CSW_FAMAS ) ;
fm_strip_user_gun( iPlayer, CSW_M3 ) ;
fm_give_item( iPlayer, "weapon_m4a1" ) ;
cs_set_user_bpammo( iPlayer, CSW_M4A1, 90 ) ;
}
case 3:
{
fm_strip_user_gun( iPlayer, CSW_AK47 ) ;
fm_strip_user_gun( iPlayer, CSW_M4A1 ) ;
fm_strip_user_gun( iPlayer, CSW_FAMAS ) ;
fm_strip_user_gun( iPlayer, CSW_M3 ) ;
fm_give_item( iPlayer, "weapon_awp" ) ;
cs_set_user_bpammo( iPlayer, CSW_AWP, 30 ) ;
}
case 4:
{
fm_strip_user_gun( iPlayer, CSW_AK47 ) ;
fm_strip_user_gun( iPlayer, CSW_AWP ) ;
fm_strip_user_gun( iPlayer, CSW_M4A1 ) ;
fm_strip_user_gun( iPlayer, CSW_M3 ) ;
fm_give_item( iPlayer, "weapon_famas" ) ;
cs_set_user_bpammo( iPlayer, CSW_FAMAS, 90 ) ;
}
}
return PLUGIN_HANDLED ;
}

stock Color_Print(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!team", "^3") // Team Color

if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}


Заметил что s_Name используется только в public client_authorized( iPlayer )

Зачем брать ник игрока в public ClientCmd__OpenVipMenu( iPlayer ) и public ActionVipMenu( iPlayer, iKey )
?

_
так же не понятно зачем
Код:
   if( !is_user_connected( iAttacker ) || !b_Damager[ iAttacker ] )
return HAM_IGNORED ;

если можно просто
Код:
   if( !is_user_alive( iAttacker ) || iAttacker == iVictim)
return HAM_IGNORED ;

is_user_alive содержит в себе проверку на is_user_connected


Отредактировал: ssx, - 11.4.2017, 21:28


[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
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Rusich
сообщение 11.4.2017, 21:27
Сообщение #16


Стаж: 10 лет
Город: Россия, Москва

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

ssx,
У меня почему то не открывает, не знаю с чем связано. Откомпилировал вроде и поставил.


Удача благоволит храбрым.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 11.4.2017, 21:29
Сообщение #17


Стаж: 12 лет

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

Цитата(Rusich @ 11.4.2017, 21:27) *
ssx,
У меня почему то не открывает, не знаю с чем связано. Откомпилировал вроде и поставил.

Погоди 5 минут, я переделаю этот плаг .



[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
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 11.4.2017, 21:41
Сообщение #18


Стаж: 12 лет

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

Хотя бы так. Хотя есть куда еще оптимизировать.
Код
Код:
#include < amxmodx >
#include < cstrike >
#include < hamsandwich >
#include < fakemeta_util >

#define PLUGIN_NAME "Vip Menu"
#define PLUGIN_VERSION "0.1"
#define PLUGIN_AUTHOR "BlackSmoke"

#define FLAG_ACCESS ADMIN_LEVEL_H
#define RegisterMenu(%1,%2) register_menucmd(register_menuid(%1),1023,%2)

new s_Col[ 33 ][ 4 ] , iKey , iRound ;

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

register_event( "HLTV", "fw_RoundStart", "a", "1=0", "2=0" );

RegisterHam( Ham_Spawn, "player", "HamSpawnPlayer", 1 ) ;
RegisterHam( Ham_Killed, "player", "HamKilledPlayer", 1 ) ;

RegisterMenu( "VipMenu", "ActionVipMenu" ) ;

}

public fw_RoundStart( ) iRound++ ;

public client_putinserver( iPlayer )
{
if( ~get_user_flags( iPlayer ) & FLAG_ACCESS )
return PLUGIN_CONTINUE ;

new s_Name[ 32 ] ;
get_user_name( iPlayer, s_Name, 31 ) ;
Color_Print( 0, "!g[Сервер] !teamВип игрок: !g%s !teamв сети", s_Name ) ;

return PLUGIN_CONTINUE ;
}

public HamSpawnPlayer( iPlayer )
{
if(!is_user_alive(iPlayer) || ~get_user_flags( iPlayer ) & FLAG_ACCESS )
return HAM_IGNORED ;

fm_give_item( iPlayer, "weapon_hegrenade" ) ;
fm_give_item( iPlayer, "weapon_flashbang" ) ;
fm_give_item( iPlayer, "weapon_flashbang" ) ;
fm_give_item( iPlayer, "weapon_smokegrenade" ) ;
fm_set_user_armor( iPlayer, 100 ) ;

ClientCmd__OpenVipMenu( iPlayer ) ;

return HAM_IGNORED ;
}

public HamKilledPlayer( iVictim, iAttacker )
{
if( !is_user_alive( iAttacker ) || iAttacker == iVictim )
return HAM_IGNORED ;

message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, iAttacker)
write_short(1<<10)
write_short(1<<10)
write_short(0x0000)
write_byte(34)
write_byte(144)
write_byte(250)
write_byte(75)
message_end()

return HAM_IGNORED ;
}

public ClientCmd__OpenVipMenu( iPlayer )
{
if( ~get_user_flags( iPlayer ) & FLAG_ACCESS )
{
s_Col[ iPlayer ] = "\d" ;
iKey = ( 1 << 9 ) ;
}
else
{
s_Col[ iPlayer ] = "\w" ;
iKey = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<9)
}

new s_Menu[ 512 ], s_Name[ 32 ] , iLen ;
get_user_name( iPlayer, s_Name, charsmax( s_Name ) ) ;

if( get_user_flags( iPlayer ) & FLAG_ACCESS )
iLen = format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\y\d^n\yВип Меню\r\d\y^n^n");
else
iLen = format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\yВип Меню \d^nЦена \yVIP: \r30р \r| \dSkype: \rvady19981^n^n");
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r1. %sВзять \r[\ydeagle\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r2. %sВзять \r[\yAK-47\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r3. %sВзять \r[\yM4a1\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r4. %sВзять \r[\yAWP\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r5. %sВзять \r[\yFAMAS\r]^n", s_Col[ iPlayer ] ) ;
iLen += format( s_Menu[ iLen ], charsmax( s_Menu ) - iLen, "\r0. Выход" ) ;

show_menu( iPlayer,iKey,s_Menu,-1,"VipMenu" ) ;
return PLUGIN_HANDLED ;
}

public ActionVipMenu( iPlayer, iKey )
{
new s_Name[ 32 ] ;
get_user_name( iPlayer, s_Name, 31 ) ;
if( iRound < 5 && iKey != 5 )
{
Color_Print( iPlayer, "!g[VIP] !teamОружие можно брать только с !g2-го !teamраунда" ) ;
return PLUGIN_HANDLED ;
}
switch( iKey )
{
case 0:
{
fm_strip_user_gun( iPlayer, CSW_USP ) ;
fm_strip_user_gun( iPlayer, CSW_GLOCK18 ) ;
fm_strip_user_gun( iPlayer, CSW_FIVESEVEN ) ;
fm_strip_user_gun( iPlayer, CSW_ELITE ) ;
fm_give_item( iPlayer, "weapon_deagle" ) ;
cs_set_user_bpammo( iPlayer, CSW_DEAGLE, 35 ) ;
}
case 1:
{
fm_strip_user_gun( iPlayer, CSW_M4A1 ) ;
fm_strip_user_gun( iPlayer, CSW_AWP ) ;
fm_strip_user_gun( iPlayer, CSW_FAMAS ) ;
fm_strip_user_gun( iPlayer, CSW_M3 ) ;
fm_give_item( iPlayer, "weapon_ak47" ) ;
cs_set_user_bpammo( iPlayer, CSW_AK47, 90 ) ;
}
case 2:
{
fm_strip_user_gun( iPlayer, CSW_AK47 ) ;
fm_strip_user_gun( iPlayer, CSW_AWP ) ;
fm_strip_user_gun( iPlayer, CSW_FAMAS ) ;
fm_strip_user_gun( iPlayer, CSW_M3 ) ;
fm_give_item( iPlayer, "weapon_m4a1" ) ;
cs_set_user_bpammo( iPlayer, CSW_M4A1, 90 ) ;
}
case 3:
{
fm_strip_user_gun( iPlayer, CSW_AK47 ) ;
fm_strip_user_gun( iPlayer, CSW_M4A1 ) ;
fm_strip_user_gun( iPlayer, CSW_FAMAS ) ;
fm_strip_user_gun( iPlayer, CSW_M3 ) ;
fm_give_item( iPlayer, "weapon_awp" ) ;
cs_set_user_bpammo( iPlayer, CSW_AWP, 30 ) ;
}
case 4:
{
fm_strip_user_gun( iPlayer, CSW_AK47 ) ;
fm_strip_user_gun( iPlayer, CSW_AWP ) ;
fm_strip_user_gun( iPlayer, CSW_M4A1 ) ;
fm_strip_user_gun( iPlayer, CSW_M3 ) ;
fm_give_item( iPlayer, "weapon_famas" ) ;
cs_set_user_bpammo( iPlayer, CSW_FAMAS, 90 ) ;
}
}
return PLUGIN_HANDLED ;
}

stock Color_Print(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!team", "^3") // Team Color

if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}


П.С. проверил лично - работает .

Если не открывает - пробуй выше в списке плагинов прописать.

Отредактировал: ssx, - 11.4.2017, 21:42


[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
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 11.4.2017, 21:46
Сообщение #19


Стаж: 12 лет

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

Цитата(Stimul1 @ 11.4.2017, 16:19) *
ssx, кто тебе такую глупость сказал?

Все же я немного был не прав..
В HamSpawnPlayer в post все же нужна либо проверка is_user_alive либо проверка на команду игрока т.к. при коннекте на сервер будет сразу выдавать ништяки и получится вот такое:
Прикрепленные файлы:
Прикрепленное изображение


[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
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Rusich
сообщение 11.4.2017, 22:02
Сообщение #20


Стаж: 10 лет
Город: Россия, Москва

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

ssx,
Ну у меня пока что ничего не получилось, может из за того, что бан лист стоит?

ssx,
Cкрытый текст

Кодировка не та? Видимо работает, но не видно текста :D


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