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

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


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

11-апр
02-дек
17-апр
30-дек


История благодарностей участнику MiXa ::: Спасибо сказали: 89
Дата поста: В теме: За сообщение: Спасибо сказали:
6.5.2021, 18:17 Замена стандартного HUD с HP и AP
Пробуйте:
Cкрытый текст
tReat,
Код:

#include <amxmodx>
#include <hamsandwich>

new HudHP, HUDarmor
public plugin_init() {
RegisterHam(Ham_Spawn,"player","p_spawn")
register_event( "ResetHUD", "event_resethud", "be" );
HudHP = CreateHudSyncObj()
HUDarmor = CreateHudSyncObj()
}
public event_resethud(id){
if(is_user_connected(id)){
set_task(0.1,"hide_money",id)
}
}
public hide_money(id){
if(is_user_connected(id)){
// hide money
message_begin(MSG_ONE,94,_,id)
write_byte(1<<3)
message_end()

message_begin(MSG_ONE,110,_,id)
write_byte(0)
message_end()
}
}
public p_spawn(id){
if(is_user_connected(id)){
set_task(1.2,"player_respawn",id)
}
}
public player_respawn(id){

ClearSyncHud(id, HudHP)
ClearSyncHud(id, HUDarmor)

set_hudmessage(0, 255, 255, 0.02, 1.10, 2, 0.0, 1.3, 0.0, 0.1, 1)
ShowSyncHudMsg(id,HudHP, "HP: %i", get_user_health(id))

set_hudmessage(0, 255, 255, 0.02, 0.95, 2, 0.0, 1.3, 0.0, 0.1, 2)
ShowSyncHudMsg(id,HUDarmor, "AR: %i", get_user_armor(id))
p_spawn(id)
}
tReat
20.8.2015, 8:11 Windows 7 или 10 ...
Untlished,

Юристы прочитали лицензионное соглашение Windows 10 и схватились за голову
Поделиться
Пока самые легкомысленные фанаты Microsoft с щенячьим восторгом устанавливают Windows 10, их более мудрые коллеги внимательно изучают текст лицензионного соглашения. Напомним, ознакомительная версия Windows 10 содержала много неприемлемых для здравомыслящего человека условий. Сохранились ли эти пункты в итоговой версии?

Лицензия Windows 10

Проблема №1: Microsoft собирает и хранит у себя историю посещенных пользователем web-страниц, пароли к сайтам, названия точек доступа, к которым подключался пользователь, и пароли к ним. Проблема в том, что данные привязываются к аккаунту Microsoft, пароль к которому можно взломать или похитить. В этом случае злоумышленник сможет узнать о своей жертве буквально всё. К тому же, законодательство США предписывает IT-компаниям раскрывать сведения о своих клиентах по требованию суда и разведслужб. Получается, что фактически пользователь сам собирает и отправляет на себя досье, которое может быть использовано против него же.

Разумеется, синхронизацию данных можно (и нужно) отключить. В Microsoft решили включить эту опцию по умолчанию. Видимо, в надежде, что большинство пользователей Windows 10 вряд ли станут интересоваться подробностями реализации этой так называемой синхронизации.

Проблема №2: виртуальный ассистент Cortana, который уже многие успели назвать виртуальным шпионом Cortana. По лицензионному соглашению Windows 10, Microsoft для работы Кортаны имеет право собирать различные типы пользовательских данных:

координаты пользователя;
фрагменты почтовой переписки и SMS;
данные о совершенных звонках: кто кому звонил, как часто.
данные о запланированных событиях из пользовательского календаря;
данные из контактной книги;
и др.
Кроме этого, для работы сервиса будет собираться информация об использовании вашего устройства: на какое время установлен будильник, какая музыка имеется на устройстве, какие программы были установлены, какие делались поисковые запросы и т.д. Разумеется, образцы голоса пользователя тоже будут передаваться на сервера Microsoft для обработки.

Следует отметить, что для российских пользователей часть функций традиционно работать не будет, включая Cortana.

Проблема №3: отслеживание пользователей третьей стороной. Уже известно, что Windows 10 напичкают рекламой. Этим и объясняется «щедрость» компании Microsoft, решившей раздавать Windows 10 бесплатно. Для того, чтобы инвентаризировать всех потребителей рекламы им будет присвоен уникальный идентификационный номер (advertising ID). Доступ к этому номеру получат рекламодатели. Другими словами, маркетологи смогут отслеживать поведение пользователей. Как и все остальные «инновации» в Windows 10, отслеживание пользователей по уникальному номеру было позаимствовано (см. статью «А вы уже получили свой инвентаризационный номер от Google?»).

Не забудьте отключить передачу advertising ID на всех своих устройствах с Windows 10!

Проблема №4. Ключ шифрования тоже хранится у Microsoft. Это удивительно, но если вы зашифровали свои данные на устройстве с помощью штатной программы BitLocker, то ключ доступа к данным будет не только у вас, но еще и у Microsoft. В лицензии Windows 10 указано, что пароль будет скопирован на сервера OneDrive, контролируемые Microsoft. Как уже было сказано ранее, компания будет обязана выдать этот ключ по запросу уполномоченных органов, что лишает шифрование в Windows 10 всякого смысла.

Не забудьте установить стороннюю программу шифрования, которой можно доверять.

Проблема №5. Microsoft может распоряжаться вашими данными. Это просто изумительный пункт в лицензии Windows 10:

We will access, disclose and preserve personal data, including your content (such as the content of your emails, other private communications or files in private folders), when we have a good faith belief that doing so is necessary to protect our customers or enforce the terms governing the use of the services.

Личная переписка, локальные файлы и другая персональная информация может быть раскрыта не только по требованию властей, а просто если Microsoft покажется, что это необходимо для некой защиты их клиентов.

Дополнения

6 августа: после юристов соглашение прочитали фанаты компьютерных игр. Они выяснили, что к Windows 10 будут выпускаться автоматические обновления, которые займутся чисткой компьютера от нелицензионных игр. Кроме этого, в лицензии присутствует очень странный пункт, который наделяет Microsoft правом отключать на вашем компьютере некие несанкционированные устройства. Возможно, речь идет о компьютерной периферии, которая несертифицирована Microsoft. Например, сторонние контроллеры для Xbox.

У меня есть ключь к Windows 7Ultimate, могу продать,я ей не пользуюсь, так как на нутбуке предустановлена восьмерка
Fred Perry
10.6.2015, 0:02 Не запускается сервер скачанный steamcmd
решение проблемы:

надо в корневой папке юзера (от которого запускаете сервер) создать папку .steam ,в папке .steam создать папку sdk32, и в папку sdk32 закинуть файл steamclient.so
выдать на папки права 777 а на файл steamclient.so права 775


на всякий случай если кто не знает, нужно на файлы hlds_linux и hlds_run выдавать права 777 или 775, также и на файл с параметрами запуска сервера, и на всякий случай на папку cstrike права 775

всех кто пытался помочь отблагодорил спасибками )))
ck001ru, Tet
6.5.2015, 8:13 vipmenu и weaponmenu
есть более простое решение с одним конфигом на 2 плагина )

Код:
new bool:isLocked
public plugin_init()
{
register_srvcmd("block_map","Check_block_map")
}
public plugin_cfg()
{
new configsdir[128]
get_localinfo("amxx_configsdir", configsdir, charsmax(configsdir))
return server_cmd("exec %s/blok_map.cfg", configsdir);
}
public Check_block_map()
{
new getmap[32],map[32]
read_args(getmap,31)
remove_quotes(getmap)

get_mapname(map,31)

if(!strcmp(getmap,map)){
isLocked = true
}
}

потом в нужную функцию вставляеш в самом верху
Код:
        if(isLocked){
return PLUGIN_CONTINUE
}

и все, например выдача гранат в випке:

Код:
public give_vip(id)
{
if(!is_user_alive(id))
{
return PLUGIN_HANDLED_MAIN;
}

if ((get_user_flags(id) & ADMIN_LEVEL_H)))
{
if(isLocked) // здесь мы заблокировали выдачу гранат на нужной нам карте
{
return PLUGIN_CONTINUE
}

give_item( id, "weapon_hegrenade" )
give_item( id, "weapon_flashbang" )
give_item( id, "weapon_flashbang" )
give_item( id, "weapon_smokegrenade" )
give_item( id, "item_assaultsuit" )
give_item( id, "item_thighpack" )
}
}
return PLUGIN_HANDLED_MAIN;
}


в таком случае нам не будут выдаватся гранаты на тех картах , которые мы укажем в конфиге blok_map.cfg

пример файла blok_map.cfg ( должен находится в папке configs )
Код
block_map  "awp_india"
block_map  "$2000$"
block_map  "$3000$"
block_map  "awp_india"
block_map   "awp_india2"
block_map  "fy_new_pool_day"
block_map  "fy_pool_day"
RyRy
17.3.2015, 22:03 resetscore
Использую на своем сервере, решил поделится

Плагин без всяких оповещений и т.д

Код:

#include <amxmodx>
#include <fun>
#include <cstrike>

public plugin_init() {register_clcmd("say /rs", "reset_score"); register_clcmd("say /resetscore", "reset_score");}
public reset_score(id)
{
if(!is_user_connected(id)) return;
set_user_frags(id, 0);
cs_set_user_deaths(id, 0);
}

ozmosis
17.2.2015, 8:49 AFK Manager
semenbiysk, нет, все настраивается дефайнами:

Код:
#define ACCESS_LEVEL_IMMUNITY (ADMIN_MENU|ADMIN_LEVEL_H)    // Уровень доступа позволяющий беспрепятственно сидеть в зрителях
#define TIME_AFK_CHECK 15.0 // Интервал между проверками игроков, чем меньше значение, тем больше нагрузка на сервер.
#define MAX_AFK_WARNING 3 // Количество предупреждений после которых последует наказание.
#define TIME_SPECT_CHECK 60.0 // Интервал между проверками зрителей, чем меньше значение, тем больше нагрузка на сервер.
#define MAX_SPECT_CHECK_PL 2 // Количество проверок игрока на нахождение в зрителях, после которых его кикнет
#define MIN_PLAYERS_CHECK 30 // Минимальное количество игроков, когда включается функция проверки зрителей.
// #define NOROUND // Включает поддержку серверов с бесконечным раундом. Например CSDM, GunGame
#define BOMB_TRANSFER // Передавать ли бомбу игрокам, если игрок AFK.
semenbiysk
17.2.2015, 8:42 Плагин AWP manager
могу состряпать таковой плагин, пиши в лс если еще актуально

сори что апаю тему :)
sevcs
17.2.2015, 8:23 AFK Manager
есть такой Simple AFK Manager
такой AFK Manager v1.2
и такой AFK Manager v1.6 by Leon McVeran

или заказывай :)
semenbiysk
17.2.2015, 8:06 AFK Manager
можно просто AFK Manager подредактировать, изменить в нем флаг и все :)
semenbiysk
12.2.2015, 14:41 Knife_Vip
Slava, скачайте файл ( инклуд ) dhudmessage.inc ТЫК

и закиньте его в папку include
Slava
12.2.2015, 14:00 Knife_Vip
Slava, нет вызываемой fw_SecAttack_Post

держите

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

#define PLUGIN "Knife Mod"
#define VERSION "1.2"
#define AUTHOR "OverGame"

#define KNIFE_GRAVITY 0.05
#define KNIFE_SPEED 310.0
#define SEC_DMG 2.0
#define PRIM_DMG 4.0
#define SEC_HEAD_DMG 6.0
#define PRIM_HEAD_DMG 10.0
#define KNIFE_KNOCK 4
#define BLOOD 3

#define RUYI_DAMAGE_SLASH 100.0
#define RUYI_DAMAGE_STAB 150.0
#define RUYI_RANGE_SLASH 70.0
#define RUYI_RANGE_STAB 80.0
#define RUYI_NEXTATTACK_SLASH 0.3
#define RUYI_NEXTATTACK_STAB 1.7

#pragma tabsize 0

new const fPrefix[] = "\d[Knife Mod]\r"
new const cPrefix[] = "!g[!tKnife Mod!g]!y"

new gMsg[255], Knife[64], g_has_ruyi[33], g_attack_type[33], aKnife[64], gMaxHP

const OFFSET_WEAPONOWNER = 41
const OFFSET_LINUX_WEAPONS = 4

#define weapon_name "weapon_knife"

static const v_knife[] = "models/knf_mod/v_spknife.mdl"
static const p_knife[] = "models/knf_mod/p_spknife.mdl"
static const v_knife2[] = "models/knf_mod/v_ruyi-stick.mdl"
static const p_knife2[] = "models/knf_mod/p_ruyi-stick.mdl"
static const v_knife3[] = "models/knf_mod/v_horseaxe.mdl"
static const p_knife3[] = "models/knf_mod/p_horseaxe.mdl"

static const SoundList[][] =
{
"knf_mod/deploy1.wav", // 0
"knf_mod/spknife_wall.wav", // 1
"knf_mod/spknife_slasha1_1.wav", // 2
"knf_mod/stab.wav", // 3
"knf_mod/knife.wav", // 4
"knf_mod/knife1.wav" // 5
}

new const ruyi_sound[][] =
{
"weapons/ruyi-stick_draw.wav",
"weapons/ruyi-stick_hit1.wav",
"weapons/ruyi-stick_slash2.wav",
"weapons/ruyi-stick_hit2.wav",
"weapons/ruyi-stick_hit_wall.wav",
"weapons/ruyi-stick_idle.wav",
"weapons/ruyi-stick_stab.wav"
}

enum
{
KNIFE_ANIM_IDLE = 0,
KNIFE_ANIM_SLASH1,
KNIFE_ANIM_SLASH2,
KNIFE_ANIM_DRAW,
KNIFE_ANIM_STAB_HIT,
KNIFE_ANIM_STAB_MISS,
KNIFE_ANIM_MIDSLASH1,
KNIFE_ANIM_MIDSLASH2
}

enum
{
ATTACK_SLASH = 1,
ATTACK_STAB,
}

new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_p228", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
"weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
"weapon_ak47", "weapon_knife", "weapon_p90" }


static const Blood[][] =
{
"sprites/blood.spr",
"sprites/bloodspray.spr"
}

static g_Blood[sizeof Blood]

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

register_clcmd("say /vip_knife", "knife_menu")
register_clcmd("say_team /vip_knife", "knife_menu")

register_event("DeathMsg","EventDeath","a")
register_event("CurWeapon", "ChangeModel", "be", "1=1")

gMaxHP = register_cvar("knf_mod_max_health", "100")

register_forward(FM_CmdStart, "fw_CmdStart")
register_forward(FM_EmitSound, "fw_EmitSound")
register_forward(FM_TraceLine, "fw_TraceLine")
register_forward(FM_TraceHull, "fw_TraceHull")

RegisterHam(Ham_TakeDamage, "player", "TakeDamage_Pre", 0)
RegisterHam(Ham_TakeDamage, "player", "TakeDamage_Post", 1)
RegisterHam(Ham_Player_PreThink, "player", "PreThink")
register_forward(FM_EmitSound, "KnifeSound")

for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "fw_Item_Deploy_Post", 1)

RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "fw_PriAttack_Post", 1)
RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack")
}

public client_putinserver(id)
{
Knife[id] = 0
aKnife[id] = 1
}

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

static weaponid
weaponid = read_data(2)

if(weaponid != CSW_KNIFE)
return

change(id)
}

public get_ruyi(id)
{
g_has_ruyi[id] = 1
g_attack_type[id] = 0

if(get_user_weapon(id) == CSW_KNIFE)
{
set_weapon_anim(id, KNIFE_ANIM_DRAW)
}
}

public EventDeath()
{
new iKiller = read_data(1)
new iVictim = read_data(2)
new iHead = read_data(3)
new gHP

if ( Knife[iKiller] != 3 ) return PLUGIN_HANDLED


set_dhudmessage(243, 180, 48, 0.57, 0.75, 0, 1.0, 1.0, 0.1, 0.1)
if( iHead && iKiller != iVictim && is_user_connected(iKiller) && is_user_connected(iVictim) )
{
format(gMsg, charsmax(gMsg), "+20 HP за убийство.")
gHP = 20
} else
if( iKiller != iVictim && is_user_connected(iKiller) && is_user_connected(iVictim) )
{
format(gMsg, charsmax(gMsg), "+10 HP за убийство.")
gHP = 10
}

if ( get_user_health(iKiller) <= get_pcvar_num(gMaxHP) )
{
set_user_health(iKiller, get_user_health(iKiller) + gHP)
}

show_dhudmessage(iKiller, gMsg)

return PLUGIN_CONTINUE
}

public KnifeSound(id, channel, sample[], Float:volume, Float:attn, flags, pitch)
{
if(!equal(sample, "weapons/knife_", 14) || Knife[id] != 1)
return FMRES_IGNORED

if(equal(sample[8], "knife_hitwall", 13))
PlaySound(id, 1)
else
if(equal(sample[8], "knife_hit", 9))
switch(random(2))
{
case 0:PlaySound(id, 4)
case 1:PlaySound(id, 5)
}
if(equal(sample[8], "knife_slash", 11)) PlaySound(id, 2)
if(equal(sample[8], "knife_stab", 10)) PlaySound(id, 3)
if(equal(sample[8], "knife_deploy", 12)) PlaySound(id, 0)
return FMRES_SUPERCEDE
}

public fw_Item_Deploy_Post(weapon_ent)
{
static owner
owner = fm_cs_get_weapon_ent_owner(weapon_ent)

if(g_has_ruyi[owner])
{
set_weapons_timeidle(owner, 1.7)
// set_player_nextattack(owner, 1.7)
}
}

public TakeDamage_Pre(victim, inflictor, attacker, Float:damage, damagetype)
{
if(!is_user_alive(attacker))
return HAM_IGNORED

if(!Knife[attacker] || get_user_weapon(attacker) != CSW_KNIFE)
return HAM_IGNORED

new hit, target
get_user_aiming(attacker, target, hit)

new bool:head = (hit == HIT_HEAD)
new Float:mult_dmg = 1.0
if(pev(attacker, pev_button, IN_ATTACK))
mult_dmg = head ? PRIM_HEAD_DMG : PRIM_DMG
else
mult_dmg = head ? SEC_HEAD_DMG : SEC_DMG
SetHamParamFloat(4, damage * mult_dmg)
return HAM_HANDLED
}

public fw_CmdStart(id, uc_handle, seed)
{
if (!is_user_alive(id))
return
if(get_user_weapon(id) != CSW_KNIFE)
return
if(!g_has_ruyi[id])
return

static ent
ent = find_ent_by_owner(-1, weapon_name, id)

if(!pev_valid(ent))
return
if(get_pdata_float(ent, 46, 4) > 0.0 || get_pdata_float(ent, 47, 4) > 0.0)
return

static CurButton
CurButton = get_uc(uc_handle, UC_Buttons)

if(CurButton & IN_ATTACK)
{
g_attack_type[id] = ATTACK_SLASH
} else {
g_attack_type[id] = ATTACK_STAB
}
}

public fw_PriAttack_Post(ent)
{
if(pev_valid(ent) != 2)
return HAM_IGNORED

new id
id = get_pdata_cbase(ent, 41 , 4)

if(!g_has_ruyi[id])
return HAM_IGNORED

set_weapons_timeidle(id, RUYI_NEXTATTACK_SLASH)
set_player_nextattack(id, RUYI_NEXTATTACK_SLASH)

return HAM_HANDLED
}

public fw_EmitSound(id, channel, const sample[], Float:volume, Float:attn, flags, pitch)
{
if(!is_user_connected(id))
return FMRES_IGNORED
if(get_user_weapon(id) != CSW_KNIFE || !g_has_ruyi[id])
return FMRES_IGNORED

if(sample[8] == 'k' && sample[9] == 'n' && sample[10] == 'i')
{
if(sample[14] == 's' && sample[15] == 'l' && sample[16] == 'a')
{
emit_sound(id, channel, ruyi_sound[2], volume, attn, flags, pitch)
return FMRES_SUPERCEDE
}
if (sample[14] == 'h' && sample[15] == 'i' && sample[16] == 't') // hit
{
if (sample[17] == 'w')
{
emit_sound(id, channel, ruyi_sound[4], volume, attn, flags, pitch)
return FMRES_SUPERCEDE
} else {
emit_sound(id, channel, ruyi_sound[1], volume, attn, flags, pitch)
return FMRES_SUPERCEDE
}
}
if (sample[14] == 's' && sample[15] == 't' && sample[16] == 'a') // stab
{
emit_sound(id, channel, ruyi_sound[3], volume, attn, flags, pitch)
return FMRES_SUPERCEDE;
}
}

return FMRES_IGNORED
}

public fw_TraceLine(Float:vector_start[3], Float:vector_end[3], ignored_monster, id, handle)
{
if (!is_user_alive(id))
return FMRES_IGNORED
// if(zp_get_user_zombie(id))
// return FMRES_IGNORED
if(cs_get_user_team(id) == CS_TEAM_T)
return FMRES_IGNORED
if (get_user_weapon(id) != CSW_KNIFE)
return FMRES_IGNORED
if(!g_has_ruyi[id])
return FMRES_IGNORED

static Float:vecStart[3], Float:vecEnd[3], Float:v_angle[3], Float:v_forward[3], Float:view_ofs[3], Float:fOrigin[3]

pev(id, pev_origin, fOrigin)
pev(id, pev_view_ofs, view_ofs)
xs_vec_add(fOrigin, view_ofs, vecStart)
pev(id, pev_v_angle, v_angle)

engfunc(EngFunc_MakeVectors, v_angle)
get_global_vector(GL_v_forward, v_forward)

static Float:scalar

if(g_attack_type[id] == ATTACK_SLASH) scalar = RUYI_RANGE_SLASH
else if(g_attack_type[id] == ATTACK_STAB) scalar = RUYI_RANGE_SLASH

xs_vec_mul_scalar(v_forward, scalar, v_forward)
xs_vec_add(vecStart, v_forward, vecEnd)

engfunc(EngFunc_TraceLine, vecStart, vecEnd, ignored_monster, id, handle)

return FMRES_SUPERCEDE
}

public fw_TraceHull(Float:vector_start[3], Float:vector_end[3], ignored_monster, hull, id, handle)
{
if (!is_user_alive(id))
return FMRES_IGNORED
// if(zp_get_user_zombie(id))
// return FMRES_IGNORED
if(cs_get_user_team(id) == CS_TEAM_T)
return FMRES_IGNORED
if (get_user_weapon(id) != CSW_KNIFE)
return FMRES_IGNORED
if(!g_has_ruyi[id])
return FMRES_IGNORED

static Float:vecStart[3], Float:vecEnd[3], Float:v_angle[3], Float:v_forward[3], Float:view_ofs[3], Float:fOrigin[3]

pev(id, pev_origin, fOrigin)
pev(id, pev_view_ofs, view_ofs)
xs_vec_add(fOrigin, view_ofs, vecStart)
pev(id, pev_v_angle, v_angle)

engfunc(EngFunc_MakeVectors, v_angle)
get_global_vector(GL_v_forward, v_forward)

static Float:scalar

if(g_attack_type[id] == ATTACK_SLASH) scalar = RUYI_RANGE_SLASH
else if(g_attack_type[id] == ATTACK_STAB) scalar = RUYI_RANGE_SLASH

xs_vec_mul_scalar(v_forward, scalar, v_forward)
xs_vec_add(vecStart, v_forward, vecEnd)

engfunc(EngFunc_TraceHull, vecStart, vecEnd, ignored_monster, hull, id, handle)

return FMRES_SUPERCEDE
}

public fw_TraceAttack(Victim, Attacker, Float:Damage, Float:Direction[3], TraceHandle, DamageBit)
{
if(!is_user_alive(Attacker))
return HAM_IGNORED
if(get_user_weapon(Attacker) != CSW_KNIFE)
return HAM_IGNORED
if(!g_has_ruyi[Attacker])
return HAM_IGNORED

SetHamParamFloat(3, g_attack_type[Attacker] == ATTACK_SLASH ? RUYI_DAMAGE_SLASH : RUYI_DAMAGE_STAB)

return HAM_IGNORED
}

public TakeDamage_Post(victim, inflictor, attacker, Float:damage, damagetype)
{
if(!is_user_alive(attacker) || !is_user_alive(victim))
return HAM_IGNORED

if(!Knife[attacker] || get_user_weapon(attacker) != CSW_KNIFE)
return HAM_IGNORED

new Float:Origin[3], Float:Origin2[3], Float:Velocity[3]
pev(attacker, pev_origin, Origin)
pev(victim, pev_origin, Origin2)
xs_vec_sub(Origin2, Origin, Velocity)
xs_vec_normalize(Velocity, Velocity)
xs_vec_mul_scalar(Velocity, (KNIFE_KNOCK * 100.0), Velocity)
if(Velocity[2] <= 100.0)
Velocity[2] = random_float(150.0, 250.0)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_BLOODSPRITE);
engfunc(EngFunc_WriteCoord, Origin2[0])
engfunc(EngFunc_WriteCoord, Origin2[1])
engfunc(EngFunc_WriteCoord, Origin2[2])
write_short(g_Blood[0])
write_short(g_Blood[1])
write_byte(77)
write_byte(BLOOD)
message_end()
set_pev(victim, pev_velocity, Velocity)
return HAM_HANDLED
}

public PreThink(id)
{
if(!is_user_alive(id)) return HAM_IGNORED
if ( Knife[id] == 1 )
{
if(get_user_weapon(id) != CSW_KNIFE)
{
set_pev(id, pev_gravity, get_cvar_float("knf1_gravity"))
set_pev(id, pev_maxspeed, get_cvar_float("knf1_speed"))
return HAM_IGNORED
}
set_pev(id, pev_gravity, KNIFE_GRAVITY)
set_pev(id, pev_maxspeed, KNIFE_SPEED)
} else
if ( Knife[id] == 2 )
{
set_user_maxspeed(id, 600.0)
set_user_gravity(id, 1.0)
}

return HAM_HANDLED
}

public active_knife(id)
{
aKnife[id] = 1
ChatColor(id, "%s Ножи перезарядились! Вы можете сменить нож.", cPrefix)
}

public knife_menu(id)
{
if ( aKnife[id] == 0 )
{
ChatColor(id, "%s Идет перезарядка... Обычно она идет!t 15!y сек. после выбора ножа.", cPrefix)
return PLUGIN_HANDLED
}

if(!(get_user_flags(id) & ADMIN_LEVEL_A))
{
ChatColor(id, "%s Данное меню доступно только для VIP игроков!", cPrefix)
return PLUGIN_HANDLED
}


static s_MenuItem[255]
formatex(s_MenuItem, charsmax(s_MenuItem), "%s Меню ножей", fPrefix)
new menu = menu_create(s_MenuItem, "knfm_handler" )

menu_additem(menu, "\yRobot Hands \d[Невесомость и Дамаг]","1")
menu_additem(menu, "\yRuyi Stick \d[Скорость и Дамаг]","2")
menu_additem(menu, "\yHorse Axe \d[Вампиризм]","3")

menu_setprop(menu, MPROP_BACKNAME, "Назад")
menu_setprop(menu, MPROP_NEXTNAME, "Далее")
menu_setprop(menu, MPROP_EXITNAME, "Выход")

menu_display(id,menu,0)
return PLUGIN_HANDLED
}

public knfm_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}

new data[6], iName[64], access, callback
menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)

new key = str_to_num(data)

switch(key)
{
case 1:
{
formatex(gMsg, charsmax(gMsg), "%s Вы взяли!g Robot Hands.", cPrefix)
}
case 2:
{
formatex(gMsg, charsmax(gMsg), "%s Вы взяли!g Ruyi Stick.", cPrefix)
}
case 3:
{
formatex(gMsg, charsmax(gMsg), "%s Вы взяли!g Horse Axe.", cPrefix)
}
}

Knife[id] = key
aKnife[id] = 0
set_task(15.0, "active_knife", id)
change(id)

ChatColor(id, gMsg)

return PLUGIN_HANDLED
}

public plugin_precache()
{
precache_model(v_knife)
precache_model(p_knife)
precache_model(v_knife2)
precache_model(p_knife2)
precache_model(v_knife3)
precache_model(p_knife3)

static i
for(i = 0; i <= charsmax(SoundList); i++)
precache_sound(SoundList[i])

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

for(i = 0; i <= charsmax(Blood); i++)
g_Blood[i] = precache_model(Blood[i])
}

change(id)
{
if ( Knife[id] == 1 )
{
set_pev(id, pev_viewmodel2, v_knife)
set_pev(id, pev_weaponmodel2, p_knife)
} else
if ( Knife[id] == 2 )
{
set_pev(id, pev_viewmodel2, v_knife2)
set_pev(id, pev_weaponmodel2, p_knife2)
} else
if ( Knife[id] == 3 )
{
set_pev(id, pev_viewmodel2, v_knife3)
set_pev(id, pev_weaponmodel2, p_knife3)
}
}

stock PlaySound(Ent, Sound)
engfunc(EngFunc_EmitSound, Ent, CHAN_WEAPON, SoundList[_:Sound], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

stock fm_cs_get_weapon_ent_owner(ent)
{
return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS)
}

stock set_weapons_timeidle(id, Float:TimeIdle)
{
if(!is_user_alive(id))
return

new entwpn = fm_get_user_weapon_entity(id, CSW_KNIFE)
if (pev_valid(entwpn))
{
set_pdata_float(entwpn, 46, TimeIdle, 4)
set_pdata_float(entwpn, 47, TimeIdle, 4)
set_pdata_float(entwpn, 48, TimeIdle + 1.0, 4)
}
}

stock set_player_nextattack(id, Float:nexttime)
{
if(!is_user_alive(id))
return

const m_flNextAttack = 83
set_pdata_float(id, m_flNextAttack, nexttime, 5)
}

stock set_weapon_anim(id, anim)
{
if(!is_user_alive(id))
return

set_pev(id, pev_weaponanim, anim)

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

stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[188]
vformat(msg, 187, input, 3)

replace_all(msg, 187, "!g", "^4")
replace_all(msg, 187, "!y", "^1")
replace_all(msg, 187, "!t", "^3")

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();
}
}
}
}
Slava
22.1.2015, 21:17 Защита Counter Strike Сервера
кокич, это значит что фикс работает, можешь на это не обращать внимания
кокич
22.1.2015, 15:20 block_changelevel v0.4 ( обновлен 15.04.2015)
Обновление плагина:
v0.3:
добавлен квар по просьбе Statsenko_91:
amx_block_min_players
минимум игроков на сервере , когда будет доступно голосование за карту , вне зависимости от количества сыгранных раундов

v0.3a:
Исправлены мелкие ошибки

тестируем)
Statsenko_91
19.1.2015, 22:58 [Куплю] Сборку ZOMBIE сервера.
еще много зависит как ты пользовался заказанной сборкой и что там изменял, если люди собирают сервера, то они и настраивают их должным образом

ты написал о s0h, :
(данная сборка не плохая, но с самим автором я не хочу иметь дел, так как он удавиться за копейку и очень мелочный);
я скажу следуещее о нем:
человек значит хорошо оценивает свою работу и потраченное свое время, если он назвал цену за сборку например в 1000 рублей, значит она этого стоит, ты же когда в магазин идешь то также торгуешься, выпрашиваешь скидки? нет, просто оплачиваешь ту цену, сколько он стоит, так вот, сборка сервера - это тот же товар , тебя никто не заставляет ее покупать!

также ты написал о n1ke :D
(куча багов, которые автор не исправляет и еще отписывает сутками);
а ты не думаеш о том что он также человек + у него семья,личные заботы и т.д, поэтому долго отвечает

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

Вить не каждый скриптер будет ночами не спать из за сборки сервера ( хотя мне например ночью лучше думается, лол ), он тоже человек,и также хочет поспать,покушать,погулять с девушкой,детьми или с женой, у каждого есть свои проблемы и заботы, думаю многие меня поймут)
proff_q
19.1.2015, 22:48 Ошибка "SZ_GetSpace: overflow on"
Statsenko_91, алиас чеккер на это влияет, опенгл от маздана, также любой античит который проверяет клиент игрока, много разных сообщений в худ или Дхуд и т.д
Statsenko_91
19.1.2015, 16:11 Отнять c4 и передать ее другому игроку
adva, много лишнего
можно так
Код:
public func_transfer_bomb(id)
{
if (user_has_weapon(id, CSW_C4)) //проверяем есть ли у игрока С4, если есть то выполняем код
{
new iPlayers[32], pNum
get_players(iPlayers, pNum, "ae", "TERRORIST")

if (pNum < 2) // если в команде терористов меньше 2 игроков, то просто выбрасываем С4
{
engclient_cmd(id, "drop", "weapon_c4")
return
}
new vCarrier[3], vRecipient[3], iRecipient, iDistance, iMinDistance = 999999
get_user_origin(id, vCarrier)
for (new p = 0; p < pNum; p++){
if (g_iAFKTime[iPlayers[p]] < 2){
get_user_origin(iPlayers[p], vRecipient)
iDistance = get_distance(vCarrier, vRecipient)
if (iDistance < iMinDistance){
iMinDistance = iDistance
iRecipient = iPlayers[p]
}
}
}
if (!iRecipient) return

// Bombe transferieren
engclient_cmd(id, "drop", "weapon_c4")
new iC4 = engfunc(EngFunc_FindEntityByString, -1, "classname", "weapon_c4")
if (is_user_alive(id) & pev_valid(iC4)){
new iBackpack = pev(iC4, pev_owner)
if (iBackpack > g_iMaxPlayers){
set_pev(iBackpack, pev_flags, pev(iBackpack, pev_flags) | FL_ONGROUND)
dllfunc(DLLFunc_Touch, iBackpack, iRecipient)
}
}
//тут можно создать сообщение кому передаем С4
//можно сделать сообщение в чат или в худ сообщении
new szRecipient[32] //переменная для имени игрока
// iRecipient - это айди игрока кому передана С4
get_user_name(iRecipient, szRecipient, 31) // получаем имя игрока кому будет передана С4
set_hudmessage(255, 255, 0, -1.0, 0.8, 0, 3.0, 6.0, 0.1, 0.2, -1)
show_hudmessage(iRecipient, "С4 передана^n%s",szRecipient)
}
}

как то так, использовал код с предыдущего поста, с телефона неудобно много печатать но суть понятна)
извините за выравнивание кода) + проверте закрытие }
но функцыя должна работать, разве что компилятор будет выводить предупреждение 217 за выравниевание кода, на предупреждение 217 можно не обращать внимания, оно не влияет на работоспособность плагина
Bloo
13.1.2015, 11:22 Падает сервер, часто
попробуйте:

Код
start hlds.exe -console -game cstrike +map de_dust2_2x2 +sv_lan 0 +maxplayers 32 +ip 192.168.0.100 +port 24022
VBOY
5.1.2015, 16:36 Жалобы по форуму

A1on3 Заметка добавлена Сегодня, 0:53
Устное предупреждение:
По-вашему, теме «Плагины от Скальпеля» во «Флейме» самое место? Не забывайте думать перед созданием тем.


какой пункт правил я нарушил?
рекламы небыло никакой

а куда ее создавать? я правила не нарушал, не знал куда написать и написал в флем , какие проблемы

кто он такой что вы все так за него вцепились,он такой же обычный человек как и все мы, мне нужна была помощь, мне помогли,за что я очень благодарен
если я что то нарушил, скажите что именно и укажите на пункт правил форума или раздела

думаю я за это бан не получу, но я за справедливость
marik, [WPMG]PRoSToTeM@
23.12.2014, 2:17 block_changelevel v0.4 ( обновлен 15.04.2015)
кокич,

попробуйте так:

Код:
#include <amxmodx>

#define PLUGIN "block_changelevel"
#define VERSION "0.2"
#define AUTHOR "MiXa"

#define GL_ADMIN_FLAG ADMIN_CVAR // Флаг админа, который сможет менять карту в любое время

new round_number, q_block

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

q_block = register_cvar("amx_block_changelevel", "10") // С какого раунда разрешать смену карты

register_clcmd("amx_map", "block_changelevel")
register_clcmd("amx_votemap", "block_changelevel")
register_clcmd("changelevel", "block_changelevel")
register_clcmd("amx_mapmenu", "block_changelevel")
register_clcmd("amx_votemapmenu", "block_changelevel")

register_clcmd("changelevel de_dust2_2x2", "block_changelevel2")
register_clcmd("amx_map de_dust2_2x2", "block_changelevel2")
register_clcmd("amx_votemap de_dust2_2x2", "block_changelevel2")

register_logevent("event_round_start", 2, "1=Round_Start")
register_event("TextMsg", "event_round_restart", "a", "2=#Game_will_restart_in","2=#Game_Commencing");
}

public event_round_start ()
round_number++

public event_round_restart()
round_number = 0

public block_changelevel(id)
{
if (!(get_user_flags ( id ) & GL_ADMIN_FLAG ))
{
if ( round_number <= get_pcvar_num(q_block)-1 )
{
client_print(id,print_chat,"Смена карты разрешена с %d раунда, сейчас %d раунд", get_pcvar_num(q_block), round_number);
client_print(id,print_console,"Смена карты разрешена с %d раунда^nсейчас %d раунд", get_pcvar_num(q_block), round_number);
return PLUGIN_HANDLED
}
}
return PLUGIN_CONTINUE
}
public block_changelevel2(id)
{
if (!(get_user_flags ( id ) & GL_ADMIN_FLAG ))
{
client_print(id,print_chat,"Эту карту ставить запрещено");
client_print(id,print_console,"Эту карту ставить запрещено");
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}


если не сработает,днем подредактирую
кокич
15.12.2014, 20:02 block_changelevel v0.4 ( обновлен 15.04.2015)
Цитата(кокич @ 15.12.2014, 15:46) *
Никто не знает конфликт возможен с плагином ночного режима..который тоже блочит смену? Или нету никаких конфликтов?

конфликтов не будет, просто плагин ночного режима, пропиши перед плагином block_changelevel
кокич

4 страниц V   1 2 3 »