Не работает knife duel + teleport

Статус
В этой теме нельзя размещать новые ответы.

asd

Сообщения
151
Реакции
17
Помог
3 раз(а)
Ошибка
Ошибок в логах нету.
ОС
Linux
Amx Mod X
1.9.0-dev+5210
Билд
3.4.0.664-dev
ReGamedll
5.9.0.387-dev
Версия Metamod
v1.21p37
Список метамодулей
[ 1] AMX Mod X RUN - amxmodx_mm_i386. v1.9.0-d ini Start ANY
[ 2] Reunion RUN - reunion_mm_i386. v0.1.75 ini Start Never
[ 3] Rechecker RUN - rechecker_mm_i38 v2.3 ini Chlvl ANY
[ 4] ReAuthCheck RUN - reauthcheck_mm_i v0.1.6 ini Start Never
[ 5] ReSemiclip RUN - resemiclip_mm_i3 v2.3.9 ini Chlvl ANY
[ 6] WHBlocker RUN - whblocker_mm_i38 v1.5.696 ini Chlvl ANY
[ 7] ReSRDetector RUN - resrdetector_mm_ v0.1.0 ini Chlvl ANY
[ 8] Revoice RUN - revoice_mm_i386. v0.1.0.3 ini Start Never
[ 9] ReAPI RUN - reapi_amxx_i386. v5.12.0. pl1 ANY Never
[10] FakeMeta RUN - fakemeta_amxx_i3 v1.9.0-d pl1 ANY ANY
[11] MySQL RUN - mysql_amxx_i386. v1.9.0-d pl1 ANY ANY
[12] Engine RUN - engine_amxx_i386 v1.9.0-d pl1 ANY ANY
[13] CSX RUN - csx_amxx_i386.so v1.9.0-d pl1 ANY ANY
[14] CStrike RUN - cstrike_amxx_i38 v1.9.0-d pl1 ANY ANY
[15] Ham Sandwich RUN - hamsandwich_amxx v1.9.0-d pl1 ANY ANY
[16] Fun RUN - fun_amxx_i386.so v1.9.0-d pl1 ANY ANY
[17] ReAimDetector RUN - reaimdetector_am v0.2.2 pl1 ANY Never
17 plugins, 17 работает
Список плагинов
[ 1] mute 1.0 Aziz mute.amxx работает
[ 2] ReChecker Logging freesrv AMXX rc_logging.amxx работает
[ 3] FreshBans 1.4.0b kanagava fresh_bans.amxx работает
[ 4] Admin Loader 2.9 neygomon admin_loader.am работает
[ 5] [ReAMX] AfkKicker RBS 19.08.28 SKAJIbnEJIb afkkicker_rbs.a работает
[ 6] [ReAMX] FunGun Updater 17.10.30 SKAJIbnEJIb FunGunUpdater.a остановлен
[ 7] AES: StatsX 0.5+1 serfreeman1337 aes_statsx_cstr работает
[ 8] Advanced Experience Sy 0.5 Vega serfreeman1337 aes_main.amxx работает
[ 9] AES: Informer 0.5 Vega serfreeman1337 aes_informer.am работает
[ 10] AES: Admin Tools 0.5 Vega serfreeman1337 aes_exp_editor. работает
[ 11] AES: CStrike Addon 0.5 Vega serfreeman1337 aes_exp_cstrike работает
[ 12] AES: Bonus System 0.5 Vega serfreeman1337 aes_bonus_syste работает
[ 13] Advanced Client Checke 0.3.6 Mistrick cmdchecker.amxx работает
[ 14] ReAimDetector API 0.2.2 ReHLDS Team reaimdetector.a работает
[ 15] Admin Commands 1.9.0-dev+ AMXX Dev Team admincmd.amxx работает
[ 16] Multi-Lingual System 1.9.0-dev+ AMXX Dev Team multilingual.am работает
[ 17] Menus Front-End 1.9.0.5249 AMXX Dev Team menufront.amxx работает
[ 18] Commands Menu 1.9.0-dev+ AMXX Dev Team cmdmenu.amxx работает
[ 19] Players Menu 1.9.0-dev+ AMXX Dev Team plmenu.amxx работает
[ 20] Maps Menu 1.9.0.5249 AMXX Dev Team mapsmenu.amxx работает
[ 21] Plugin Menu 1.9.0-dev+ AMXX Dev Team pluginmenu.amxx работает
[ 22] Admin Chat 1.9.0-dev+ AMXX Dev Team adminchat.amxx работает
[ 23] Scrolling Message 1.9.0-dev+ AMXX Dev Team scrollmsg.amxx работает
[ 24] Info. Messages 1.9.0-dev+ AMXX Dev Team imessage.amxx работает
[ 25] Admin Votes 1.9.0-dev+ AMXX Dev Team adminvote.amxx работает
[ 26] Restrict Weapons 1.9.0-dev+ AMXX Dev Team restmenu.amxx работает
[ 27] CS Stats Logging 1.9.0-dev+ AMXX Dev Team stats_logging.a работает
[ 28] Stats Configuration 1.9.0-dev+ AMXX Dev Team statscfg.amxx работает
[ 29] Lite Translit 2.8 neygomon lite_translit.a работает
[ 30] Map Manager 2.5.61 Mistrick mapmanager.amxx работает
[ 31] Map Manager: Sub Plugi 0.1 Mistrick mapmanager_subp работает
[ 32] Ping Checker 26.0.1 RC1 h1k3 ping_checker.am debug
[ 33] SF Bets 0.1.5 serfreeman1337 sf_bets.amxx работает
[ 34] Parachute 1.1 maeStro | neygom parachut.amxx работает
[ 35] Knife Duel 1.2 neygomon knife_duel.amxx работает
[ 36] Killa HP 1.6 jas0n killa_hp.amxx работает
[ 37] aga 1.0 Got Milk? n1ce_killer.amx работает
[ 38] Admin Free Look 2.0 Jim admin_freelook. работает
[ 39] Autoresponder/Advertis 0.5 MaximusBrood ad_manager.amxx работает
[ 40] Rank Menu 1.1 h1k3 rankmenu.amxx работает
[ 41] Steam Bonus 1.3d Gudaus steam_bonus.amx работает
[ 42] Damager 2.0 Prayer damager.amxx работает
[ 43] say /me and /hp 0.2 neygomon sayme.amxx работает
[ 44] Admin ESP 0.2 Kost & miRror admin_esp_mini. работает
[ 45] server menu 1.9beta 6e3yMnbI`u server_menu.amx работает
[ 46] DHUD_Adverts_lite 2.2 h1k3 dhud_message_de работает
[ 47] Smoke: HealthNade 0.0.4 wopox1337 Smoke_HealthNad работает
[ 48] Mode 2x2 2.5re s1lent mode.amxx debug
[ 49] Instant AutoTeamBalanc 1.2.0 ConnorMcLeod instant_autotea работает
[ 50] Bomb Countdown HUD Tim 0.2 SAMURAI bcd_hudtimer.am работает
[ 51] Rock to Ban 1.02 Safety1st rock2ban.amxx работает
[ 52] resetscore hud 1.0 My_StyLe^ resetscore.amxx работает
[ 53] girls online 1.0 6e3yMnbIu` girls_online.am работает
[ 54] NO_FITH_TEXT 1.1w perf No_fith_text.am работает
[ 55] [183] High Ping Kicker 19.11.12 SKAJIbnEJIb hpk_rbs.amxx работает
[ 56] Info Rank 0.1 by CepeH9 INFO_RANK_V0.1. работает
[ 57] Auto recording demo 2.0 IzI | Bonaqua (R amx_autodemorec работает
[ 58] AntiFlash FINAL 5.0 Leo_[BH] antiflash5.amxx работает
[ 59] Map Manager: Core 3.0.4 Mistrick map_manager_cor работает
[ 60] Map Manager: Scheduler 0.1.2 Mistrick map_manager_sch работает
[ 61] Map Manager: Rtv 0.1.0 Mistrick map_manager_rtv работает
[ 62] Map Manager: Nominatio 0.1.0 Mistrick map_manager_nom работает
[ 63] Map Manager: BlockList 0.0.3 Mistrick map_manager_blo работает
[ 64] Map Manager: Online so 0.0.2 Mistrick map_manager_onl работает
[ 65] Map Manager: Effects 0.0.8 Mistrick map_manager_eff работает
[ 66] Map Manager: Informer 0.0.5 Mistrick map_manager_inf работает
[ 67] AES: Bonus CSTRIKE 0.5 Vega serfreeman1337 aes_bonus_cstri работает
67 plugins, 66 работает
Автор плагина
neygomon
Версия плагина
v1.2
Исходный код
#include <amxmodx>
#include <reapi>

// #define TEST // Для теста команда в чат /duel. работать будет при любом кол-ве игроков :D Доступ с флагом ADMIN_RCON
#define HITWALL 3 // Сколько раз надо по стене ударить, чтобы вызвать дуель
#define VOTETODUEL 10 // Через сколько секунд считать, что противник зассал
#define HEALTHONDUEL 35 // Сколько HP ставить игрокам на время дуели. 0 - будет столько, сколько осталось за время раунда.
#define SETAIMONOPP // Разворачивать игроков друг к другу лицом
#define ANNOUNCE // Показывать сообщение, когда остаются игрока 1 х 1

enum _:TEAMS
{
TT,
CT
}

new HookChain:HookChain_CBasePlayer_PreThink,
HookChain:HookChain_SV_StartSound;

new Float:g_fKnifePos[TEAMS][3];
new g_iInsider, g_iOpponent;

new Float:g_fHitWall[33];
new g_iHitWall[33];

const TASK_VOTE_DUEL = 100;
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#define client_disconnected client_disconnect
#endif
#if !defined REAPI_VERSION || REAPI_VERSION < 5091
#error Oh, no... Needed ReAPI >= 5.0.91
#endif

public plugin_init()
{
register_plugin("Knife Duel", "1.2", "neygomon"); // thanks Mistrick for code by Search Spawns

HookChain_SV_StartSound = RegisterHookChain(RH_SV_StartSound, "SV_StartSound_Post", true);
DisableHookChain((HookChain_CBasePlayer_PreThink = RegisterHookChain(RG_CBasePlayer_PreThink, "CBasePlayer_PreThink_Post", true)));
RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed_Post", true);
RegisterHookChain(RG_CSGameRules_CheckMapConditions, "CheckMapConditions_Post", true);
FindSpawnsForDuel();

register_menucmd(register_menuid("VoteToDuel"), MENU_KEY_1|MENU_KEY_2, "VoteHandler");
#if defined TEST
register_clcmd("say /duel", "test");
#endif
}
#if defined TEST
public test(id)
{
if(is_user_alive(id) && get_user_flags(id) & ADMIN_RCON)
{
new ent, ent2;
IsValidPlayersNum(ent, ent2);

g_iOpponent = TeamName:get_member(id, m_iTeam) == TEAM_TERRORIST ? ent2 : ent;
g_iInsider = id;

DisableHookChain(HookChain_SV_StartSound);
GoToDuel();
}
return 1;
}
#endif
public client_disconnected(id)
{
if(id == g_iInsider || id == g_iOpponent)
DuelDidNotTake();
}

public CheckMapConditions_Post()
{
if(g_iInsider)
DuelDidNotTake();
}

public SV_StartSound_Post(const recipients, const entity, const channel, const sample[], const volume, Float:attenuation, const fFlags, const pitch)
{
// if(strcmp(sample, "weapons/knife_hitwall1.wav") == 0)
if(sample[0] == 'w' && sample[7] == '/' && sample[8] == 'k' && sample[13] == '_' && sample[17] == 'w') // вангую говно в error логах
{
new Float:fGameTime = get_gametime();
if(fGameTime - g_fHitWall[entity] > 1.0)
g_iHitWall[entity] = 0;
else
{
new ent1, ent2;
if(g_iHitWall[entity] == HITWALL - 1 && IsValidPlayersNum(ent1, ent2) && !g_iOpponent)
{
VoteToTheDuel(entity, TeamName:get_member(entity, m_iTeam) == TEAM_TERRORIST ? ent2 : ent1);
DisableHookChain(HookChain_SV_StartSound);
}
}
g_iHitWall[entity]++;
g_fHitWall[entity] = fGameTime;
}
}

public CBasePlayer_PreThink_Post(id)
{
if(g_iInsider == id || g_iOpponent == id)
{
if(is_user_alive(id))
{
if(get_member(get_member(id, m_pActiveItem), m_iId) != WEAPON_KNIFE)
engclient_cmd(id, "weapon_knife");
}
}
}

public CBasePlayer_Killed_Post(const victim, const killer)
{
if(g_iInsider)
{
if(task_exists(TASK_VOTE_DUEL))
DuelDidNotTake();
else if(g_iOpponent)
{
if(victim == g_iInsider || victim == g_iOpponent)
DuelDidNotTake();
}
return;
}
#if defined ANNOUNCE
new ent1, ent2;
if(IsValidPlayersNum(ent1, ent2))
{
client_print_color(
ent1,
print_team_default,
"^1[^4WEST^1] ^4Хотите knife дуэль? Чиркните ^3%d раза ^4по стене.",
HITWALL
);
client_print_color(
ent2,
print_team_default,
"^1[^4WEST^1] ^4Хотите knife дуэль? Чиркните ^3%d раза ^4по стене.",
HITWALL
);
}
#endif
}

VoteToTheDuel(id, opponent)
{
new nameId[32], nameOpp[32], sMenu[200];
get_user_name(id, nameId, charsmax(nameId));
get_user_name(opponent, nameOpp, charsmax(nameOpp));

formatex(
sMenu, charsmax(sMenu),
"\r%s\y, Вас вызвал на дуэль \r%s^n\wВы согласны?^n^n\r1. \wДа.^n\r2. \wНет.",
nameOpp, nameId
);

show_menu(opponent, MENU_KEY_1|MENU_KEY_2, sMenu, VOTETODUEL, "VoteToDuel");
set_task(float(VOTETODUEL), "DuelDidNotTake", TASK_VOTE_DUEL);

g_iInsider = id;
return PLUGIN_HANDLED;
}

public VoteHandler(id, key)
{
switch(key)
{
case 0:
{
g_iOpponent = id;
remove_task(TASK_VOTE_DUEL);
GoToDuel();
}
case 1:
{
new name[32];
get_user_name(id, name, charsmax(name));
client_print_color(
g_iInsider,
print_team_default,
"^1[^4Дуэль^1] ^4Игрок ^3%s ^4отказался от дуэли :\",
name
);
DuelDidNotTake();
}
}
return PLUGIN_HANDLED;
}

public DuelDidNotTake()
{
DisableHookChain(HookChain_CBasePlayer_PreThink);
EnableHookChain(HookChain_SV_StartSound);
remove_task(TASK_VOTE_DUEL);

g_iInsider = 0;
g_iOpponent = 0;
}

// Idea by Mistrick
// Thanks ^_^
FindSpawnsForDuel()
{
new ent = rg_find_ent_by_class(-1, "info_player_start");
get_entvar(ent, var_origin, g_fKnifePos[TT]);

new ent2 = ent, bool:bFindPlace;
new Float:distance = 1000.0;

while(distance > 100.0 && !bFindPlace)
{
while((ent2 = rg_find_ent_by_class(ent2, "info_player_start")))
{
get_entvar(ent2, var_origin, g_fKnifePos[CT]);
if(get_distance_f(g_fKnifePos[TT], g_fKnifePos[CT]) > distance)
{
bFindPlace = true;
break;
}
}
distance -= 100.0;
ent2 = ent;
}
if(!bFindPlace)
set_fail_state("spawns for duel not found :( govnomap...");
}

GoToDuel()
{
if(is_user_alive(g_iInsider) && is_user_alive(g_iOpponent))
{
set_entvar(g_iInsider, var_origin, g_fKnifePos[0]);
set_entvar(g_iOpponent, var_origin, g_fKnifePos[1]);
#if defined SETAIMONOPP
entity_set_aim(g_iInsider, g_iOpponent);
entity_set_aim(g_iOpponent, g_iInsider);
#endif
#if HEALTHONDUEL > 0
set_entvar(g_iInsider, var_health, float(HEALTHONDUEL));
set_entvar(g_iOpponent, var_health, float(HEALTHONDUEL));
#endif
EnableHookChain(HookChain_CBasePlayer_PreThink);

set_hudmessage(255, 100, 0, -1.0, 0.3, 0, 6.0, 1.0, 0.1, 0.5, -1);
show_hudmessage(0, "Дуэль началась! Приятного зрелища ;)");
}
}

stock IsValidPlayersNum(&idT = 0, &idCT = 0)
{
new pl[32], tt, ct;
get_players(pl, tt, "ae", "TERRORIST");
idT = pl[0];
get_players(pl, ct, "ae", "CT");
idCT = pl[0];
return (tt == 1 && ct == 1);
}

stock entity_set_aim(id, ent)
{
new Float:vOrigin[3], Float:vEntOrigin[3];
get_entvar(id, var_origin, vOrigin);
get_entvar(ent, var_origin, vEntOrigin);

vOrigin[0] -= vEntOrigin[0];
vOrigin[1] -= vEntOrigin[1];
vOrigin[2] -= vEntOrigin[2];

new Float:vNewAngles[3], Float:vAimVector[3], Float:v_length;
v_length = vector_length(vOrigin);

vAimVector[0] = vOrigin[0] / v_length;
vAimVector[1] = vOrigin[1] / v_length;
vAimVector[2] = vOrigin[2] / v_length;

vector_to_angle(vAimVector, vNewAngles);

vNewAngles[0] *= -1;
vNewAngles[1] += 180;

set_entvar(id, var_angles, vNewAngles);
set_entvar(id, var_fixangle, 1);
}
Не работает knife duel + teleport, в консоли написано что все работает, в логах нету ошибок, на сервере нечего не происходит.
 
В этой теме было размещено решение! Перейти к решению.

asd

Сообщения
151
Реакции
17
Помог
3 раз(а)
L 01/26/2020 - 20:47:47: [AMXX] Displaying debug trace (plugin "knife_duel.amxx", version "1.2")
L 01/26/2020 - 20:47:47: [AMXX] Run time error 10: native error (native "RegisterHookChain")
 

RockTheStreet

Саппорт года
Сообщения
1,743
Реакции
344
Помог
40 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
asd, Дебаг пропиши.
 

asd

Сообщения
151
Реакции
17
Помог
3 раз(а)
melfyk, нет, не надо.. проблема решена.
загружал файлы через прогу WinSCP она резала файлы полностью не кидала, закинул reAPI и ReGameDLL через FileZilla и все работает!
 
Сообщения
3,049
Реакции
1,739
Помог
80 раз(а)
asd, за много лет пользования winscp никогда такого не наблюдал. скорее всего не прога виновата )
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу