Cześć,
szukam pluginu (Zależy mi na tym, żeby nie był to CSDM [to całe FFA]) od "każdy na każdego" czyli:
- DMG w teamm8tów jak w przeciwników,
- Brak wiadomości na czacie
- +1 frag za zabicie Teamm8ta
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Najlepsza odpowiedź Skull., 20.02.2017 21:19
To mój stary kod który kiedyś sam używałem (myślę że że to jest ta ostatnia wersja w której wszystko było naprawione).
#include <amxmodx> #include <fakemeta> #include <hamsandwich> #define PLUGIN "Free For All" #define AUTHOR "ConnorMcLeod @Skull" #define VERSION "0.7c" #define fm_get_user_team(%1) get_pdata_int(%1,114) #define fm_set_user_team(%1,%2) set_pdata_int(%1,114,%2) new gmsgRadar; new g_iMaxPlayers; new mp_friendlyfire; new HamHook:g_hTraceAttack, HamHook:g_hTakeDamage, HamHook:g_hKilled, g_mRadarHook; new bool:g_bFFA; public plugin_init() { register_plugin( PLUGIN, VERSION, AUTHOR ); mp_friendlyfire = get_cvar_pointer("mp_friendlyfire"); gmsgRadar = get_user_msgid("Radar"); } public plugin_cfg() { g_iMaxPlayers = get_maxplayers(); set_pcvar_num(mp_friendlyfire, 1); client_cmd(0, "hideradar"); Register_Forwards((g_bFFA = true)); } public client_connect(id) { if(g_bFFA) client_cmd(id, "hideradar"); } public TraceAttack(victim, attacker, Float:damage, Float:direction[3], tracehandle, damagebits) { if(victim != attacker && (1 <= attacker <= g_iMaxPlayers)) { new vteam = fm_get_user_team(victim); if(vteam == fm_get_user_team(attacker)) { fm_set_user_team(victim, vteam == 1 ? 2 : 1); ExecuteHamB(Ham_TraceAttack, victim, attacker, damage, direction, tracehandle, damagebits); fm_set_user_team(victim, vteam); return HAM_SUPERCEDE; } } return HAM_IGNORED; } public TakeDamage(victim, idinflictor, attacker, Float:damage, damagebits) { if(victim != attacker && (1 <= attacker <= g_iMaxPlayers)) { new vteam = fm_get_user_team(victim); if(vteam == fm_get_user_team(attacker)) { fm_set_user_team(victim, vteam == 1 ? 2 : 1); ExecuteHamB(Ham_TakeDamage, victim, idinflictor, attacker, damage, damagebits); fm_set_user_team(victim, vteam); return HAM_SUPERCEDE; } } return HAM_IGNORED; } public Killed(victim, attacker, shouldgib) { if(victim != attacker && (1 <= attacker <= g_iMaxPlayers)) { new vteam = fm_get_user_team(victim); if(vteam == fm_get_user_team(attacker)) { fm_set_user_team(victim, vteam == 1 ? 2 : 1); ExecuteHamB(Ham_Killed, victim, attacker, shouldgib); fm_set_user_team(victim, vteam); return HAM_SUPERCEDE; } } return HAM_IGNORED; } public Message_Radar(iMsgId, MSG_DEST, id) return PLUGIN_HANDLED; Register_Forwards(bool:bState) { if(bState) { if(g_hTraceAttack) EnableHamForward(g_hTraceAttack); else g_hTraceAttack = RegisterHam(Ham_TraceAttack, "player", "TraceAttack"); if(g_hTakeDamage) EnableHamForward(g_hTakeDamage); else g_hTakeDamage = RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); if(g_hKilled) EnableHamForward(g_hKilled); else g_hKilled = RegisterHam(Ham_Killed, "player", "Killed"); if(!g_mRadarHook) g_mRadarHook = register_message( gmsgRadar, "Message_Radar"); } else { if(g_hTraceAttack) DisableHamForward(g_hTraceAttack); if(g_hTakeDamage) DisableHamForward(g_hTakeDamage); if(g_hKilled) DisableHamForward(g_hKilled); if(g_mRadarHook) { unregister_message(gmsgRadar, g_mRadarHook); g_mRadarHook = 0; } } }Przejdź do postu
Napisano 20.02.2017 00:24
Cześć,
szukam pluginu (Zależy mi na tym, żeby nie był to CSDM [to całe FFA]) od "każdy na każdego" czyli:
- DMG w teamm8tów jak w przeciwników,
- Brak wiadomości na czacie
- +1 frag za zabicie Teamm8ta
Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.
Napisano 20.02.2017 15:11
Czy dynamiczna zmiana drużyny gracza może pomóc? Jeżeli tak, to jakiś przykład? Z pluginów wyciągnąłem:
#define OFFSET_TEAM 114 #define fm_get_user_team(%1) get_pdata_int(%1,OFFSET_TEAM) #define fm_set_user_team(%1,%2) set_pdata_int(%1,OFFSET_TEAM,%2) public TakeDamage(victim, idinflictor, attacker, Float:damage, damagebits) { if( victim != attacker && (1 <= attacker <= g_iMaxPlayers) ) { new vteam = fm_get_user_team(victim) if( vteam == fm_get_user_team(attacker) ) { fm_set_user_team(victim, vteam == 1 ? 2 : 1) ExecuteHamB(Ham_TakeDamage, victim, idinflictor, attacker, damage, damagebits) fm_set_user_team(victim, vteam) return HAM_SUPERCEDE } } return HAM_IGNORED }
Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.
Napisano 20.02.2017 20:39
Kod pochodzi stąd https://forums.allie...ad.php?p=711129
Potestuj
Nie szukam źródła kodu, tylko proszę o nowy, właśnie nie pochodzący z DMa, a przykład w 2 poście, który napisałem miał być pytaniem, czy dynamiczna zmiana drużyny pomoże.
Potrzebuję wyodrębnionego kodu na zadawanie DMG, usunięcie wiadomości i dodanie fragów, a kiedy próbowałem przyciąć kod pluginu, który Ty podałeś, to crashowało mi serwer z "invalid plugin".
Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.
Napisano 20.02.2017 21:05
A czym się różni ten plugin, od tego, którego szukasz?
Z tego co czytałem, podany plugin usuwa wiadomości, nie kara za strzelanie do sojuszników oraz dodaje frag za zabójstwo.
Napisano 20.02.2017 21:09
A czym się różni ten plugin, od tego, którego szukasz?
Z tego co czytałem, podany plugin usuwa wiadomości, nie kara za strzelanie do sojuszników oraz dodaje frag za zabójstwo.
FFA od CSDM crashuje serwer, to po pierwsze. (Tak, wiem, że wygląda to jak 0 doświadczenia, ale próbowałem wielu sposobów i na "invalid plugin" sposobu nie znalazłem, a innego error logu mi nie wywala)
Szukam kodu, który robi to samo, ale jest zoptymalizowany i wyodrębniony (osobno wiadomość, fragi i dmg)
Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.
Napisano 20.02.2017 21:19 Najlepsza odpowiedź
To mój stary kod który kiedyś sam używałem (myślę że że to jest ta ostatnia wersja w której wszystko było naprawione).
#include <amxmodx> #include <fakemeta> #include <hamsandwich> #define PLUGIN "Free For All" #define AUTHOR "ConnorMcLeod @Skull" #define VERSION "0.7c" #define fm_get_user_team(%1) get_pdata_int(%1,114) #define fm_set_user_team(%1,%2) set_pdata_int(%1,114,%2) new gmsgRadar; new g_iMaxPlayers; new mp_friendlyfire; new HamHook:g_hTraceAttack, HamHook:g_hTakeDamage, HamHook:g_hKilled, g_mRadarHook; new bool:g_bFFA; public plugin_init() { register_plugin( PLUGIN, VERSION, AUTHOR ); mp_friendlyfire = get_cvar_pointer("mp_friendlyfire"); gmsgRadar = get_user_msgid("Radar"); } public plugin_cfg() { g_iMaxPlayers = get_maxplayers(); set_pcvar_num(mp_friendlyfire, 1); client_cmd(0, "hideradar"); Register_Forwards((g_bFFA = true)); } public client_connect(id) { if(g_bFFA) client_cmd(id, "hideradar"); } public TraceAttack(victim, attacker, Float:damage, Float:direction[3], tracehandle, damagebits) { if(victim != attacker && (1 <= attacker <= g_iMaxPlayers)) { new vteam = fm_get_user_team(victim); if(vteam == fm_get_user_team(attacker)) { fm_set_user_team(victim, vteam == 1 ? 2 : 1); ExecuteHamB(Ham_TraceAttack, victim, attacker, damage, direction, tracehandle, damagebits); fm_set_user_team(victim, vteam); return HAM_SUPERCEDE; } } return HAM_IGNORED; } public TakeDamage(victim, idinflictor, attacker, Float:damage, damagebits) { if(victim != attacker && (1 <= attacker <= g_iMaxPlayers)) { new vteam = fm_get_user_team(victim); if(vteam == fm_get_user_team(attacker)) { fm_set_user_team(victim, vteam == 1 ? 2 : 1); ExecuteHamB(Ham_TakeDamage, victim, idinflictor, attacker, damage, damagebits); fm_set_user_team(victim, vteam); return HAM_SUPERCEDE; } } return HAM_IGNORED; } public Killed(victim, attacker, shouldgib) { if(victim != attacker && (1 <= attacker <= g_iMaxPlayers)) { new vteam = fm_get_user_team(victim); if(vteam == fm_get_user_team(attacker)) { fm_set_user_team(victim, vteam == 1 ? 2 : 1); ExecuteHamB(Ham_Killed, victim, attacker, shouldgib); fm_set_user_team(victim, vteam); return HAM_SUPERCEDE; } } return HAM_IGNORED; } public Message_Radar(iMsgId, MSG_DEST, id) return PLUGIN_HANDLED; Register_Forwards(bool:bState) { if(bState) { if(g_hTraceAttack) EnableHamForward(g_hTraceAttack); else g_hTraceAttack = RegisterHam(Ham_TraceAttack, "player", "TraceAttack"); if(g_hTakeDamage) EnableHamForward(g_hTakeDamage); else g_hTakeDamage = RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); if(g_hKilled) EnableHamForward(g_hKilled); else g_hKilled = RegisterHam(Ham_Killed, "player", "Killed"); if(!g_mRadarHook) g_mRadarHook = register_message( gmsgRadar, "Message_Radar"); } else { if(g_hTraceAttack) DisableHamForward(g_hTraceAttack); if(g_hTakeDamage) DisableHamForward(g_hTakeDamage); if(g_hKilled) DisableHamForward(g_hKilled); if(g_mRadarHook) { unregister_message(gmsgRadar, g_mRadarHook); g_mRadarHook = 0; } } }
0 użytkowników, 0 gości, 0 anonimowych