Witam,
W jaki sposób mogę zablokować w pluginie użycie danego klawiszu np. B (kupowanie broni)?
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.
|
Napisano 19.01.2015 13:59
Witam,
W jaki sposób mogę zablokować w pluginie użycie danego klawiszu np. B (kupowanie broni)?
Napisano 19.01.2015 14:04
klawisza nia zablokujesz.
Bind tak.
Jednak najlepiej żeby zablokować kupno broni jest usuwanie spawna (bytu) od kupowania lub ukrywanie tego u gracza (ukrycie ikonki i możliwośći).
ogólnie bind sie blokuje tak:
register_clcmd("bind_costam", "Zablokuj")
...
public Zablokuj(id) return PLUGIN_HANDLED;
Jednak dla niektórych bindów (np pewnie E), ta metoda zawiedzie, więc należy użyć innych metod.
Jeżeli chcesz osiągnąć zablokowanie kupna broni, też należy użyć innej metody
register_message(107, "msg_StatusIcon");
...
public msg_StatusIcon(msgid, dest, id) { new szIcon[8]; get_msg_arg_string(2, szIcon, 7); if(equal(szIcon, "buyzone") && get_msg_arg_int(1)) { set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0)); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; }
Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!
Na zlecenie i bez zlecenia zresztą też!
Napisano 19.01.2015 14:09
A dlaczego tablica 8 elementowa ?
new szIcon[8]
Napisano 19.01.2015 14:12
new szIcon[8]; get_msg_arg_string(2, szIcon, 7);
Bo pobieramy tekst, a wiemy, że nasz tekst i tak maksymalnie może mieć 7 znaków (ten tekst to "buyzone"), a dodatkowe 8 miejsce na zakończenie stringu (to jest wiadomosć dla silnika, gdzie jest koniec stringu)
Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!
Na zlecenie i bez zlecenia zresztą też!
Napisano 19.01.2015 14:16
A tutaj dlaczego 107?
register_message(107, "msg_StatusIcon");
A tu 235?
set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0));
Napisano 19.01.2015 14:33
Ty nie chcesz zablokować klawisza, tylko usunąć na czas rozgrzewki buyzone.
Najprostszy kod jaki widziałem:
#include <amxmodx> #include <hamsandwich> public plugin_precache() RegisterHam(Ham_Spawn,"func_buyzone","buyZoneSpawn") public plugin_init() register_plugin("Remove Buyzone", "1.0", "Can't remember") public buyZoneSpawn(id) return HAM_SUPERCEDE;
Byt buyzone sam się zrespawnuje w nowej rundzie, więc usuwaj go tylko podczas rundy rozgrzewkowej.
0 użytkowników, 0 gości, 0 anonimowych