Участник
Пользователь
- Сообщения
- 59
- Реакции
- 21
- Предупреждения
- 10
- Помог
- 1 раз(а)
- Ошибка
-
Нет ошибки
- ОС
- Linux
- Amx Mod X
-
AMX Mod X 1.8.3-Re (http://www.amxmodx.org)
Authors:
David "BAILOPAN" Anderson, Pavol "PM OnoTo" Marko
Felix "SniperBeamer" Geyer, Jonny "Got His Gun" Bergstrom
Lukasz "SidLuke" Wlasinski, Christian "Basic-Master" Hammacher
Borja "faluco" Ferrer, Scott "DS" Ehlert
Authors (ReHLDS Team):
"Adidasman", "s1lent"
Compiled: Dec 24 2016 15:59:38
Build ID: 7
Core mode: JIT + ASM32
- Билд
-
Protocol version Prot Prot 48
Exe version 1.1.2.7/Stdio (cstrike)
ReHLDS version: 3.4.0.653-dev
Build date: 18:30:05 May 13 2018 (1492)
Build from: https://github.com/dreamstalker/rehlds/commit/87a2d17
- ReGamedll
-
ReGameDLL version: 5.7.0.301-dev
Build date: 00:28:14 Apr 9 2018
Build from: https://github.com/s1lentq/ReGameDLL_CS/commit/fe0ea9a
- Версия Metamod
-
MetamodMetamod--r v1r v1.3.3..0.1060.106,, API API ((55::1313))
Metamod Metamod--r buildr build:: 1818::4646::2929 Jan Jan 2626 20182018
Metamod Metamod--r fromr from:: https https::////githubgithub..comcom//theAsmodaitheAsmodai//metamodmetamod--rr//commitcommit//80555d380555d3
- Список метамодулей
-
[ 1] Reunion RUN - reunion.so v0.1.0.89 ini Start Never
[ 2] ReAuthCheck RUN - reauthcheck.so v0.1.6 ini Start Never
[ 3] Rechecker RUN - rechecker.so v2.5 ini ANY
[ 4] VoiceTranscoder RUN - vtc.so v2017RC3 ini ANY
[ 5] WHBlocker RUN - whblocker.so v1.5.695 ini ANY
[ 6] ReSemiclip RUN - resemiclip.so v2.3.9 ini ANY
[ 7] AMX Mod X RUN - amxmodx.so v1.8.3-Re ini Start ANY
[ 8] ReSRDetector RUN - resrdetector.so v0.1.0 ini ANY
[ 9] MySQL RUN - mysql_amxx_i386.so v1.8.3-Re pl7 ANY
[10] Fun RUN - fun_amxx_i386.so v1.8.3-Re pl7 ANY
[11] Engine RUN - engine_amxx_i386.so v1.8.3-Re pl7 ANY
[12] FakeMeta RUN - fakemeta_amxx_i386.so v1.8.3-Re pl7 ANY
[13] CStrike RUN - cstrike_amxx_i386.so v1.8.3-Re pl7 ANY
[14] CSX RUN - csx_amxx_i386.so v1.8.3-Re pl7 ANY
[15] Ham Sandwich RUN - hamsandwich_amxx_i386.so v1.8.3-Re pl7 ANY
[16] ReAPI RUN - reapi_amxx_i386.so v5.2.0.145-dev pl7 ANY Never
[17] ReAimDetector RUN - reaimdetector_amxx_i386.so v0.2.2 pl7 ANY Never
- Список плагинов
-
[ 1] USS & Stats-Time 1.5 Aleksandr E. uss.amxx running
[ 2] Advanced Gag 1.9.0 neygomon advanced_gag.am running
[ 3] ReAimDetector API 0.2.2 ReHLDS Team reaimdetector.a running
[ 4] FreshBans 1.4.0b kanagava fresh_bans_140_ running
[ 5] Admin Loader 3.1 neygomon admin_loader_fo running
[ 6] Menus Front-End 1.5 neugomon menufront_end.a running
[ 7] Maps Menu 1.4.1 neugomon mapsmenu_.amxx running
[ 8] Players Menu 1.8.3 AMXX Dev Team plmenu.amxx running
[ 9] Restrict Weapons 1.8.3 AMXX Dev Team restmenu.amxx running
[ 10] Advanced MapChooser 1.4 neygomon advanced_mapcho running
[ 11] Change Game Name 1.2 ReHLDS Team change_game_nam running
[ 12] Autoresponder/Advertis 0.5 MaximusBrood reklama_in_chat running
[ 13] Rock to Ban 1.52f Safety1st rock_to_ban.amx running
[ 14] [ReAPI] AdminFreeLook 1.0 ReHLDS Team reapi_adminfree running
[ 15] AFK Control 1.4.1 [Rnd neygomon afk_control.amx running
[ 16] C4 Timer on roundtime 0.3.3a neygomon c4timer.amxx running
[ 17] Smoke: HealthNade 0.0.3 wopox1337 smoke_healthnad running
[ 18] WarmUP Sound 1.0 ill warmup_sound.am running
[ 19] [ReAPI] No Team Flash 0.0.2 Vaqtincha no_team_flash_l running
[ 20] Parachute for ALL [ReA 3.0 Leo_[BH] parachute_for_a running
[ 21] Kill Sound 1.0 Jack Daniel`s kill_sound.amxx running
[ 22] Reset Score 0.0.2f wopox1337 reset_score.amx running
[ 23] [ReAPI] AWPoff 1.4.2 PAffAEJIkA :3 awp_off.amxx running
[ 24] Round Balancer 1.0 build neygomon round_balancer. running
[ 25] Mode 2x2 2.5re s1lent mode_2x2.amxx running
[ 26] Fake Ping 1.1 MeRcyLeZZ/gyxoBk fake_ping.amxx running
[ 27] Damager 2.0 Prayer damager.amxx running
[ 28] [ReAMX] Army Ranks Ult 17.12.12 SKAJIbnEJIb army_ranks_ulti running
[ 29] [ReAMX] Ultimate Weapo 17.08.28 SKAJIbnEJIb ultimate_weapon running
[ 30] [ReAMX] VIP RBS 18.03.24 SKAJIbnEJIb vip_rbs.amxx running
[ 31] [ReAMX] Demo Recorder 18.02.08 SKAJIbnEJIb demorecorder_rb running
[ 32] [ReAMX] Chat Controlle 18.05.15 SKAJIbnEJIb chat_controller running
[ 33] [ReAMX] AR Bets 17.10.30 SKAJIbnEJIb ar_bets.amxx running
[ 34] [ReAMX] Jobs RBS 18.05.15 SKAJIbnEJIb jobs_rbs.amxx running
[ 35] [ReAMX] Kill Assist RB 17.10.30 Digi & SKAJIbnEJ killassist_rbs. running
[ 36] [ReAMX] Piss RBS 17.10.30 SKAJIbnEJIb & KR piss_rbs.amxx running
[ 37] [ReAMX] High Ping Kick 18.05.15 SKAJIbnEJIb hpk_rbs.amxx running
[ 38] [ReAMX] Map Spawns Edi 17.08.27 iG_os & SKAJIbnE MapSpawnsEditor running
[ 39] [ReAMX] ESP RBS 17.10.30 SKAJIbnEJIb & Ko esp_rbs.amxx running
[ 40] [ReAMX] Chat RBS 18.03.24 SKAJIbnEJIb chat_rbs.amxx running
[ 41] [ReAMX] CsStats MySQL 18.03.24 SKAJIbnEJIb csstats_mysql.a running
[ 42] [ReAMX] Stats Configur 17.10.30 SKAJIbnEJIb & AM statscfg_rbs.am running
[ 43] [ReAMX] StatsX RBS 18.03.24 SKAJIbnEJIb & AM statsx_rbs.amxx running
- Автор плагина
- Name_PKD
- Версия плагина
- 1.6
- Исходный код
-
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <dhudmessage>
#define PLUGIN "Player Knife Duel"
#define VERSION "1.6"
#define AUTHOR "Name_PKD"
#define CBASE_CURRWPN_ENT 373
#define OFFSET_ENT_TO_INDEX 43
#define MUSIC1 "sound/PlayerKnifeDuel.mp3"
new const g_szKnifeSound[] = "weapons/knife_hitwall1.wav";
new const g_szSpawnClassname[] = "info_player_deathmatch";
new Float:g_fHit[33];
new iHitCount[33];
new g_iChallenged, g_iChallenger;
new Float:g_vKnifeOrigin[2][3];
new bool:g_bInChallenge;
new bool:g_bProtect;
new g_iTimer;
enum _:max_cvars {
CVAR_COUNT = 0,
CVAR_TIMER,
CVAR_MAXDISTANCE,
CVAR_PROTECTION,
CVAR_ANNOUNCE,
CVAR_RESET
};
new g_Pcvar[max_cvars];
new g_iFwdSpawn;
new g_iMaxPlayers;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_forward(FM_EmitSound, "fwd_EmitSound", 1);
register_forward(FM_PlayerPreThink, "fwd_PlayerPreThink_post", 1);
RegisterHam(Ham_Killed, "player", "fwd_Killed", 1);
unregister_forward(FM_Spawn, g_iFwdSpawn, 1);
register_logevent("logevent_RoundEnd", 2, "1=Round_End", "1=Round_Draw");
g_Pcvar[CVAR_COUNT] = register_cvar("kd_knifecount", "3");
g_Pcvar[CVAR_TIMER] = register_cvar("kd_preparetime", "10");
g_iTimer = get_pcvar_num(g_Pcvar[CVAR_TIMER]);
g_Pcvar[CVAR_PROTECTION] = register_cvar("kd_protection", "1");
g_Pcvar[CVAR_MAXDISTANCE] = register_cvar("kd_maxdistance", "400");
g_Pcvar[CVAR_ANNOUNCE] = register_cvar("kd_announce", "0");
g_Pcvar[CVAR_RESET] = register_cvar("kd_resethp", "1");
g_iMaxPlayers = get_maxplayers();
}
public plugin_precache()
{
g_iFwdSpawn = register_forward(FM_Spawn, "fwd_Spawn", 1);
precache_generic(MUSIC1);
}
public client_disconnect(id)
{
client_cmd(id, "mp3 stop");
if((id == g_iChallenged) || (id == g_iChallenger))
{
g_bInChallenge = false;
g_bProtect = false;
}
}
public fwd_Spawn(ent)
{
if(!pev_valid(ent))
return FMRES_IGNORED;
static szClassname[32];
pev(ent, pev_classname, szClassname, sizeof szClassname - 1);
if(equal(szClassname, g_szSpawnClassname))
{
if(vec_null(g_vKnifeOrigin[0]))
{
pev(ent, pev_origin, g_vKnifeOrigin[0]);
}
else if(!vec_null(g_vKnifeOrigin[0]) && vec_null(g_vKnifeOrigin[1]))
{
static Float:vTmp[3];
pev(ent, pev_origin, vTmp);
if((300.0 <= vector_distance(g_vKnifeOrigin[0], vTmp) < 600.0))
g_vKnifeOrigin[1] = vTmp;
}
}
return FMRES_IGNORED;
}
public fwd_EmitSound(id, channel, const sound[])
{
if(!is_user_alive(id))
return FMRES_IGNORED;
if(!equal(sound, g_szKnifeSound))
return FMRES_IGNORED;
static Float:fGmTime;
fGmTime = get_gametime();
if((fGmTime - g_fHit[id]) >= 1.0)
{
iHitCount[id] = 0;
g_fHit[id] = fGmTime;
}
++iHitCount[id];
g_fHit[id] = fGmTime;
if((iHitCount[id] >= get_pcvar_num(g_Pcvar[CVAR_COUNT])) && check_players() && !g_bInChallenge)
{
new iOpponent = get_opponent(3 - get_user_team(id));
if(!iOpponent)
return FMRES_IGNORED;
fnChallenge(id, iOpponent);
iHitCount[id] = 0;
}
return FMRES_IGNORED;
}
public fwd_PlayerPreThink_post(id)
{
if(!is_user_alive(id) || !g_bInChallenge)
return FMRES_IGNORED;
static iWpn;
iWpn = get_pdata_cbase(id, CBASE_CURRWPN_ENT);
if(pev_valid(iWpn))
{
if(get_pdata_int(iWpn, OFFSET_ENT_TO_INDEX) != CSW_KNIFE)
engclient_cmd(id, "weapon_knife");
}
static iOpponent;
if(id == g_iChallenged)
iOpponent = g_iChallenger;
else
iOpponent = g_iChallenged;
if(!is_user_connected(iOpponent))
return FMRES_IGNORED;
if((fm_get_entity_distance(id, iOpponent) >= get_pcvar_float(g_Pcvar[CVAR_MAXDISTANCE])) && g_bProtect)
{
static Float:vVel[3];
fm_get_speed_vector2(id, iOpponent, 100.0, vVel);
set_pev(id, pev_velocity, vVel);
}
return FMRES_IGNORED;
}
public fwd_Killed(id, idattacker, shouldgib)
{
if(!get_pcvar_num(g_Pcvar[CVAR_ANNOUNCE]))
return HAM_IGNORED;
if(check_players())
{
for(new i = 0 ; i <= g_iMaxPlayers ; i++)
{
if(!is_user_alive(i))
continue;
Color_Print(id, "!y[!gvk.com/sev_cs!y] Остался !tОдин !yна !tОдин !y? Для игры на !gНожах!y, чиркни о стену !g3 !yраза.", get_pcvar_num(g_Pcvar[CVAR_COUNT]));
}
}
return HAM_IGNORED;
}
public fnChallenge(id, opponent)
{
new szName[32], szOppName[32];
get_user_name(id, szName, sizeof szName - 1);
get_user_name(opponent, szOppName, sizeof szOppName - 1);
new szTitle[64];
formatex(szTitle, sizeof szTitle - 1, "\wИгрок: \r%s \yхочет на Ножах.", szName);
new iMenu = menu_create(szTitle, "menu_MainHandler", 0);
menu_additem(iMenu, "Я согласен.", "1", 0, -1);
menu_additem(iMenu, "Не, нахуй надо.", "2", 0, -1);
menu_setprop(iMenu, MPROP_EXIT, MEXIT_NEVER);
menu_display(opponent, iMenu, 0);
Color_Print(id, "!y[!gvk.com/sev_cs!y] Игрок: !g%s !yвызвал игрока: !g%s !yпоиграть на !gНожах!y.", szName, szOppName);
g_iChallenger = id;
g_iChallenged = opponent;
g_bInChallenge = true;
}
public menu_MainHandler(id, menu, item)
{
if(!is_user_connected(id))
return 1;
new szData[6], iAccess, iCallBack;
menu_item_getinfo(menu, item, iAccess, szData, sizeof szData - 1, _, _, iCallBack);
new iKey = str_to_num(szData);
new szName[32];
get_user_name(id, szName, sizeof szName - 1);
switch(iKey)
{
case 1:
{
Color_Print(id, "!y[!gvk.com/sev_cs!y] Игрок: !g%s !yпринял вызов для игры на !gНожах!y.", szName);
fnStartDuel();
}
case 2:
{
Color_Print(id, "!y[!gvk.com/sev_cs!y] Игрок: !g%s сказал: !gНахуй надо !yи будет играть с !gОружием!y.", szName);
g_bInChallenge = false;
}
}
return 1;
}
public fnStartDuel()
{
if(!is_user_connected(g_iChallenged) || !is_user_connected(g_iChallenger))
return;
engfunc(EngFunc_SetOrigin, g_iChallenged, g_vKnifeOrigin[0]);
engfunc(EngFunc_SetOrigin, g_iChallenger, g_vKnifeOrigin[1]);
fm_entity_set_aim(g_iChallenged, g_iChallenger, 0);
fm_entity_set_aim(g_iChallenger, g_iChallenged, 0);
fm_set_user_godmode(g_iChallenged, 1);
fm_set_user_godmode(g_iChallenger, 1);
if(get_pcvar_num(g_Pcvar[CVAR_RESET]))
{
set_pev(g_iChallenged, pev_health, 100.0);
set_pev(g_iChallenger, pev_health, 100.0);
}
set_task(1.0, "taskDuelThink", 'x', "", 0, "b", 0);
if(get_pcvar_num(g_Pcvar[CVAR_PROTECTION]))
g_bProtect = true;
}
public taskDuelThink()
{
if(g_iTimer > 0)
{
set_dhudmessage(255, 0, 0, -1.0, 0.1, 0, 6.0, 1.0, 0.1, 0.9, false);
show_dhudmessage(0, "--== Дуэль на Ножах, начнётся через: %d сек. ==--", g_iTimer--);
}
else
{
set_dhudmessage(0, 255, 0, -1.0, 0.15, 0, 6.0, 1.0, 0.1, 0.9, false);
show_dhudmessage(0, "*** Покажи на что ты способен на Ножах !!! ***");
client_cmd(0, "mp3 play %s",MUSIC1);
g_iTimer = get_pcvar_num(g_Pcvar[CVAR_TIMER]);
remove_task('x');
for(new i = 0 ; i <= g_iMaxPlayers ; i++)
{
if(!is_user_alive(i))
continue;
fm_set_user_godmode(i, 0);
}
}
}
public logevent_RoundEnd()
{
g_bInChallenge = false;
g_bProtect = false;
client_cmd(0, "mp3 stop");
}
stock fm_entity_set_aim(id, ent, bone = 0)
{
if(!is_user_connected(id) || !pev_valid(ent))
return 0;
new Float:vOrigin[3];
pev(ent, pev_origin, vOrigin);
new Float:vEntOrigin[3], Float:vAngles[3];
if(bone)
engfunc(EngFunc_GetBonePosition, id, bone, vEntOrigin, vAngles);
else
pev(id, pev_origin, vEntOrigin);
vOrigin[0] -= vEntOrigin[0];
vOrigin[1] -= vEntOrigin[1];
vOrigin[2] -= vEntOrigin[2];
new Float:v_length;
v_length = vector_length(vOrigin);
new Float:vAimVector[3];
vAimVector[0] = vOrigin[0] / v_length;
vAimVector[1] = vOrigin[1] / v_length;
vAimVector[2] = vOrigin[2] / v_length;
new Float:vNewAngles[3];
vector_to_angle(vAimVector, vNewAngles);
vNewAngles[0] *= -1;
if(vNewAngles[1] > 180.0) vNewAngles[1] -= 360;
if(vNewAngles[1] < -180.0) vNewAngles[1] += 360;
if(vNewAngles[1] == 180.0 || vNewAngles[1] == -180.0) vNewAngles[1] = -179.9;
set_pev(id, pev_angles, vNewAngles);
set_pev(id, pev_fixangle, 1);
return 1;
}
stock vec_null(Float:vec[3])
{
if(!vec[0] && !vec[1] && !vec[2])
return 1;
return 0;
}
stock bool:check_players()
{
new iNum[2];
for(new i = 1 ; i <= g_iMaxPlayers ; i++)
{
if(!is_user_alive(i))
continue;
if(get_user_team(i) == 1)
++iNum[0];
else if(get_user_team(i) == 2)
++iNum[1];
}
if((iNum[0] == 1) && (iNum[1] == 1))
return true;
return false;
}
stock get_opponent(team)
{
for(new i = 0 ; i <= g_iMaxPlayers ; i++)
{
if(!is_user_alive(i))
continue;
if(get_user_team(i) == team)
return i;
}
return 0;
}
stock fm_set_user_godmode(index, godmode = 0)
{
set_pev(index, pev_takedamage, godmode == 1 ? DAMAGE_NO : DAMAGE_AIM);
return 1;
}
stock fm_get_speed_vector2(ent1, ent2, Float:speed, Float:new_velocity[3])
{
if(!pev_valid(ent1) || !pev_valid(ent2))
return 0;
static Float:vOrigin1[3];
pev(ent1, pev_origin, vOrigin1);
static Float:vOrigin2[3];
pev(ent2, pev_origin, vOrigin2);
new_velocity[0] = vOrigin2[0] - vOrigin1[0];
new_velocity[1] = vOrigin2[1] - vOrigin1[1];
new_velocity[2] = vOrigin2[2] - vOrigin1[2];
new Float:fNum = floatsqroot(speed * speed / (new_velocity[0] * new_velocity[0] + new_velocity[1] * new_velocity[1] + new_velocity[2] * new_velocity[2]));
new_velocity[0] *= fNum;
new_velocity[1] *= fNum;
new_velocity[2] *= fNum;
return 1;
}
stock Float:fm_get_entity_distance(ent1, ent2)
{
if(!pev_valid(ent1) || !pev_valid(ent2))
return 0.0;
static Float:vOrigin1[3];
pev(ent1, pev_origin, vOrigin1);
static Float:vOrigin2[3];
pev(ent2, pev_origin, vOrigin2);
return vector_distance(vOrigin1, vOrigin2);
}
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")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!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();
}
}
}
}
При принятии вызова на дуэль игроков закидывает в текстуры.
Вложения
-
11.8 KB Просмотры: 234