- OS
- Linux
- Amx Mod X
- ReAMXX 1.8.3
- Билд
- [code=cpp]Protocol version Prot Prot 48Exe 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
- [code=cpp]ReGameDLL version: 5.7.0.301-dev Build date: 00:28:14 Apr 9 2018Build from: https://github.com/s1lentq/ReGameDLL_CS/commit/fe0ea9a
- Metamod
-
[code=cpp]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[/code]
- Meta модули
-
Код:
C++: [ 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 [code=cpp][17] ReAimDetector RUN - reaimdetector_amxx_i386.so v0.2.2 pl7 ANY Never
- Плагины
-
Код:
C++: [ 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
- Amxx Модули
-
Код:
C++: [ 1] MySQL 1.8.3-Re AMX Mod X Dev Team running [ 2] Fun 1.8.3-Re AMX Mod X Dev Team running [ 3] Engine 1.8.3-Re AMX Mod X Dev Team running [ 4] FakeMeta 1.8.3-Re AMX Mod X Dev Team running [ 5] CStrike 1.8.3-Re AMX Mod X Dev Team running [ 6] CSX 1.8.3-Re AMX Mod X Dev Team running [ 7] Ham Sandwich 1.8.3-Re AMX Mod X Dev Team running [ 8] ReAPI 5.2.0.145- Asmodai & s1lent running [ 9] ReAimDetector 0.2.2 ReHLDS Team running [10] Sockets 1.8.3-Re HLSW Dev Team running [11] Sockets2 1.8.1.3746 HLSW Dev Team running [12] RegEx 1.8.3-Re AMX Mod X Dev Team running
- Ошибка
-
Код:
нет ошибки в работе плагина
- Исходник
-
Код:
Спойлер: исходник #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)) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players) write_byte(players); write_string(msg); message_end(); } } } }
При согласии игрока на бой на ножах игроков закидывает в текстуры
Вложения
-
11,8 KB Просмотры: 11