Cześć. Ogólnie wprowadzając, tworzę mod, który wyklucza użycie broni palnej. I staram się znaleźć jak najwięcej sposobów na rejestracje "zachowań" gracza gdy gracz trzyma nóż (min przeładowanie, drop broni, atak, IN_USE, włączenie latarki, szprej). Właściwie pisząc ten temat sprawdzam trochę więcej źródeł niż wcześniej, więc pewnie sam znajdę niektóre odpowiedzi.
Napisałem kod:
#include <amxmodx>
#include <hamsandwich>
#include <engine>
public plugin_init(){
register_plugin("Sprawdzenie przyciskow na nozu", "1.0", "Vasto_Lorde");
RegisterHam(Ham_Weapon_Reload, "weapon_knife", "KnifeReload");
RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_knife", "KnifePrimaryAttack"); //Dziala
RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_knife", "KnifeSecondaryAttack"); //Dziala
register_clcmd("drop", "KnifeDrop"); //Dziala
register_clcmd("reload", "KnifeReload1");
register_clcmd("+reload", "KnifeReload2");
register_impulse(201, "KnifeSpray"); //Dziala
register_impulse(100, "KnifeFlashlight"); //Dziala
}
public KnifeReload(ent){
client_print(0, print_chat, "Weapon_Reload - %i", ent);
}
public KnifePrimaryAttack(ent){
client_print(0, print_chat, "KnifePrimaryAttack - %i", ent);
}
public KnifeSecondaryAttack(ent){
client_print(0, print_chat, "KnifeSecondaryAttack - %i", ent);
}
public KnifeDrop(id){
if(get_user_weapon(id)==CSW_KNIFE)
client_print(0, print_chat, "KnifeDrop - %i", id);
}
public KnifeReload1(id){
if(get_user_weapon(id)==CSW_KNIFE)
client_print(0, print_chat, "Weapon_Reload1 - %i", id);
}
public KnifeReload2(id){
if(get_user_weapon(id)==CSW_KNIFE)
client_print(0, print_chat, "Weapon_Reload2 - %i", id);
}
public KnifeSpray(id){
if(get_user_weapon(id)==CSW_KNIFE)
client_print(0, print_chat, "KnifeSpray - %i", id);
}
public KnifeFlashlight(id){
if(get_user_weapon(id)==CSW_KNIFE)
client_print(0, print_chat, "Flashlight - %i", id);
}
public client_PreThink(id){
if(get_user_weapon(id)==CSW_KNIFE){
new button=get_user_button(id);
if(button&IN_RELOAD)
client_print(0, print_chat, "cmdStartReload - %i", id);
if(button&IN_USE)
client_print(0, print_chat, "cmdStartUse - %i", id);
}
}
Zaliczone mam przyciski: G(drop), F(latara), T(szprej). Ale nie podoba mi się moje rozwiązanie (innego nie znalazłem) z IN_USE i IN_RELOAD. Bo Ham_Weapon_Reload oraz register_clcmd nie działają. Think wykonuje się za dużo razy, gdy kliknę przycisk wiadomość pojawia się co najmniej dwukrotnie. Jest jakiś bardziej efektywny sposób na zarejestrowanie przeładowania na nożu i IN_USE(+use)?
PS. Jeśli ktoś byłby zainteresowany innymi przyciskami to kolejno Q, Z, X, C można zarejestrować przy użyciu register_clcmd dla komend: lastinv, radio1, radio2, radio3.


Dodatki SourceMod



Temat jest zamknięty




przyciski_noz2.amxx








