[ROZWIĄZANE] Wywołanie danej komendy po wy...
XXL
09.05.2020
Witam w jaki sposób uzyskać komende po wyborze broni np:
Wybieram z menu listy danego pluginu ak47 - wywołuje w consoli komende (chodzi o to że nie mam możliwości zrobić tego w pluginie więc chciałbym aby serwer sprawdzał jaką mamy broń i wykonywał daną komendę)
Dzięki pozdrawiam
Robiin
09.05.2020
Hm, jest event Ham_Item_AddToPlayer, możesz wyłapać dodanie broni w ten sposób. Zależnie od pluginu w którym wybierasz broń możnaby pokombinować też z wyłapaniem wykonania funkcji dodającej broń, ale to już cięższe szachy.
XXL
09.05.2020
Hm, jest event Ham_Item_AddToPlayer, możesz wyłapać dodanie broni w ten sposób. Zależnie od pluginu w którym wybierasz broń możnaby pokombinować też z wyłapaniem wykonania funkcji dodającej broń, ale to już cięższe szachy.
Tutaj skrawek menu broni czy dało by rade coś tutaj dodać?
else if(equali(weapon, "usp")) name = "Usp"; else if(equali(weapon, "p228")) name = "P228"; else if(equali(weapon, "deagle")) name = "Deagle";
Robiin
09.05.2020
Coś, gdzieś, jakoś to bardzo mało konkretne info. Podrzuć jakiś skrawek kodu do reprodukcji, albo jakoś lepiej to opisz.
XXL
10.05.2020
Posiadam gunxmod'a broń wczytuje z pliku .cfg więc nie wiem czy da rade coś zrobić w tym pluginie
edit: Czy dodanie do silnika / odzielnego pluginu uda się uzyskać efekt czy to raczej nie ma sensu?
#include <amxmodx> #include <cstrike> #include <fakemeta> #include <fun> #include <hamsandwich> #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "qwerty" #define VIP ADMIN_LEVEL_H /* tutaj zmieniamy flange */ public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event("CurWeapon","CurWeapon","be", "1=1") } public CurWeapon(id) { new wpn = read_data(2) if(get_user_team(id) == 1 && get_user_flags(id) & VIP && wpn == CSW_KNIFE){ client_cmd(id, "say zxc") } }
Rivit
10.05.2020
Trzy razy przeczytałem temat i nadal nie wiem o co Ci chodzi.
Kod, który wrzuciłeś będzie działać, ale komenda będzie wywoływana wiele razy, nie tylko jak gracz otrzymuje broń.
Jeśli chcesz osiągnąć efekt typu: zrób coś, gdy gracz otrzymuje jakąś broń to wykorzystaj to co podał Ci asior, albo to:
Ham_AddPlayerItem
/** * Description: Adds an item to the player's inventory. * Forward params: function(this, idother); * Return type: Integer. * Execute params: ExecuteHam(Ham_AddPlayerItem, this, idother); */ Ham_AddPlayerItem,
Co do CurWeapon - radziłbym unikać tej metody
XXL
10.05.2020
Nie bardzo wiem jak to mam wytłumaczyć po prostu chce aby po wyborze danej broni wykonywała się dana funkcja ten plugin który dałem działa ale niestety będzie to uciążliwe
Trzy razy przeczytałem temat i nadal nie wiem o co Ci chodzi.
Kod, który wrzuciłeś będzie działać, ale komenda będzie wywoływana wiele razy, nie tylko jak gracz otrzymuje broń.
Jeśli chcesz osiągnąć efekt typu: zrób coś, gdy gracz otrzymuje jakąś broń to wykorzystaj to co podał Ci asior, albo to:
Ham_AddPlayerItem/** * Description: Adds an item to the player's inventory. * Forward params: function(this, idother); * Return type: Integer. * Execute params: ExecuteHam(Ham_AddPlayerItem, this, idother); */ Ham_AddPlayerItem,Co do CurWeapon - radziłbym unikać tej metody
Postaram się coś pokombinować dzięki za jakąś wskazówkę
Edit: czy to powinno działać?
public Ham_AddPlayerItems( iPlayerID, iWeaponID ) { static strClassName[ 64 ]; pev( iWeaponID, pev_classname, strClassName, 63 ); if( !equal( iWeaponID, "weapon_knife" ) ) { return HAM_SUPERCEDE; } return HAM_IGNORED; }
Rivit
10.05.2020
Tak, to będzie blokować otrzymywanie noża.
Co do pytań typu:
Edit: czy to powinno działać?
Najlepiej sprawdzić samemu
Jak chcesz uniknąć pobierania classname w celu sprawdzenia co to za broń to użyj
cs_get_weapon_id()
z drugim parametrem, czyli: iWeaponID
wtedy dostaniesz id broni w formie CSW_*
Rivit
10.05.2020
RegisterHam(Ham_AddPlayerItem, "player", "Ham_AddPlayerItem_Post", 1)
public Ham_AddPlayerItem_Pre(id, ent) { if(!is_user_alive(id) || !pev_valid(ent)){ return HAM_IGNORED; } new csw = cs_get_weapon_id(ent); switch(csw){ case CSW_AK47:{ //dostales ak } case CSW_M4A1:{ //dostales m4 } } return HAM_IGNORED; }
cos takiego
XXL
10.05.2020
RegisterHam(Ham_AddPlayerItem, "player", "Ham_AddPlayerItem_Post", 1)public Ham_AddPlayerItem_Pre(id, ent) { if(!is_user_alive(id) || !pev_valid(ent)){ return HAM_IGNORED; } new csw = cs_get_weapon_id(ent); switch(csw){ case CSW_AK47:{ //dostales ak } case CSW_M4A1:{ //dostales m4 } } return HAM_IGNORED; }cos takiego
Niestety ale żadna funkcja się nie wykonuje dałem na test wpis w say'u i nic
Rivit
10.05.2020
No byczku troszke własnego myślenia nie tylko copy paste
RegisterHam(Ham_AddPlayerItem, "player", "Ham_AddPlayerItem_Post", 1)
public Ham_AddPlayerItem_Pre(id, ent)
nazwy funkcji sie roznia, w logach pewnie wyplulo, ale kto by tam patrzył.
Sprawdziłem u siebie - amxx 1.9 - elegancko dziala
XXL
10.05.2020
No byczku troszke własnego myślenia nie tylko copy paste
RegisterHam(Ham_AddPlayerItem, "player", "Ham_AddPlayerItem_Post", 1)public Ham_AddPlayerItem_Pre(id, ent)nazwy funkcji sie roznia, w logach pewnie wyplulo, ale kto by tam patrzył.
Sprawdziłem u siebie - amxx 1.9 - elegancko dziala
Ups no tak działa dziękuje plusik leci
dasiek
11.05.2020
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL