[ROZWIĄZANE] Blokada kupienia HE
sebul
04.01.2012
W jednym pluginie blokuję możliwość kupowania HE w taki sposób
ale niestety to chyba nie są wszystkie możliwości takiego blokowania, bo raz na jakiś czas znajdzie się jakaś osoba co dokupuje sobie te HE. Ktoś wie jak jeszcze można zablokować kupowanie HE?
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_menucmd(register_menuid("BuyItem"), (1<<3), "cmd_hegren");
register_menucmd(-34, (1<<3), "cmd_hegren");
register_clcmd("hegren", "cmd_hegren");
}
public cmd_hegren(id)
return PLUGIN_HANDLED;
ale niestety to chyba nie są wszystkie możliwości takiego blokowania, bo raz na jakiś czas znajdzie się jakaś osoba co dokupuje sobie te HE. Ktoś wie jak jeszcze można zablokować kupowanie HE?
glutex
05.01.2012
Myślę, że mógłbyś wykożystać kod z plugin'u Grenade Sack ograniczając ilość HE do zera...
Lelek
05.01.2012
A co powiesz na to
Edited by Lelek, 05.01.2012 01:00.
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("hegren", "he_kup");
}
public he_kup(id)
{
client_print(id, print_chat, "BLOKADA!");
return PLUGIN_HANDLED;
}
Edited by Lelek, 05.01.2012 01:00.
sebul
05.01.2012
Nie dołuj mnie...A co powiesz na to
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("hegren", "he_kup");
}
public he_kup(id)
{
client_print(id, print_chat, "BLOKADA!");
return PLUGIN_HANDLED;
}
Przeczytaj może mój pierwszy post.
olek0017 06.01.2012
z nie lepiej przez restmenu.amxx zainstalowane wraz z amxx?
badz sprawdzenie przy zmianie broni czy jest to granat he i zmienic graczowi bron na poprzednia badz noz
Edited by olek0017, 06.01.2012 01:20.
Edited by olek0017, 06.01.2012 01:20.
sebul
06.01.2012
Podobno to także da radę jakoś ominąć, ale nawet jeśli, to ten plugin w grę nie wchodzi, po prostu chcę wiedzieć, jak zablokować możliwość kupienia HE, żeby chociażby potem dodać jeszcze jakiś warunek do tej mojej funkcji "cmd_hegren".z nie lepiej przez restmenu.amxx zainstalowane wraz z amxx?
olek0017 06.01.2012
Nie wiem ale może jak to dodasz to już nie można będzie kupić he
register_clcmd("cl_autobuy", "he_kup");
register_clcmd("cl_rebuy", "he_kup");
register_clcmd("cl_setautobuy","he_kup");
tak nawiasem ja to zawsze usuwałem graczowi buyzone bo albo blokowałem wszystkie bronie albo żadne
Edited by olek0017, 06.01.2012 01:52.
register_clcmd("cl_autobuy", "he_kup");
register_clcmd("cl_rebuy", "he_kup");
register_clcmd("cl_setautobuy","he_kup");
tak nawiasem ja to zawsze usuwałem graczowi buyzone bo albo blokowałem wszystkie bronie albo żadne
Edited by olek0017, 06.01.2012 01:52.
MarWit
08.01.2012
Użyj kanapki
Można by także zablokować to w Orpheu ( co by było najbardziej optymalne ), ale jak to powiedział Ortega, użycie go tylko do jednej funkcji to jak jeżdżenie tirem po chleb do sklepu.
#include <amxmodx>
#include <hamsandwich>
public plugin_init() {
register_clcmd("hegren", "cmdHegren")
RegisterHam(Ham_Item_AttachToPlayer, "weapon_hegrenade", "fw_ItemAttachToPlayer")
}
public cmdHegren(id)
return PLUGIN_HANDLED
public fw_ItemAttachToPlayer(iWeapon, id)
return HAM_SUPERCEDE
Można by także zablokować to w Orpheu ( co by było najbardziej optymalne ), ale jak to powiedział Ortega, użycie go tylko do jednej funkcji to jak jeżdżenie tirem po chleb do sklepu.
sebul
08.01.2012
A jednak sprawdziłem dzisiaj, chyba blokuje kupowanie (w sensie, że niby granat się kupuje, ale spada na ziemię), ale zaraz po tym serwer się wyłącza ^ ^
MarWit
08.01.2012
Teraz powinno być good:)
#include <amxmodx>
#include <hamsandwich>
public plugin_init() {
register_clcmd("hegren", "cmdHegren")
RegisterHam(Ham_Item_AttachToPlayer, "weapon_hegrenade", "fw_ItemAttachToPlayer")
}
public cmdHegren(id)
return PLUGIN_HANDLED
public fw_ItemAttachToPlayer(iWeapon, id)
{
ExecuteHamB(Ham_Item_Kill, iWeapon)
return HAM_SUPERCEDE
}
kapi10072
08.01.2012
#include <amxmodx>
#include <fakemeta>
#define m_flNextAttack 83
public plugin_init()
{
register_plugin("Blokada HE", "9", "QTM. Peyote");
register_forward(FM_PlayerPreThink, "client_PreThink");
}
public client_PreThink(id)
{
if(get_user_weapon(id) == CSW_HEGRENADE)
{
set_pdata_float(id, m_flNextAttack, 0.1 , 5);
}
}
O to chodziło ?
Edited by kapi10072, 08.01.2012 21:39.
MarWit
08.01.2012
Ehh... Pomyliłem funkcje ham'a
To na 100% działa
To na 100% działa
#include <amxmodx>
#include <hamsandwich>
public plugin_init()
RegisterHam(Ham_Item_AddToPlayer, "weapon_hegrenade", "fw_ItemAddToPlayer")
public fw_ItemAddToPlayer(iWeapon, id)
return HAM_SUPERCEDE
G[o]Q
08.01.2012
tak popatrzylem w kod diablo i tam jest jeszcze "hegrenade" ale to moze byc błąd Micza
EDIT
no ze tak mozna kupic hegrenada
mozesz tez sprobować toucha wykryć z tego co pamietam ktos tak kiedys robil i chyba cos bylo z tego
EDIT
no ze tak mozna kupic hegrenada
mozesz tez sprobować toucha wykryć z tego co pamietam ktos tak kiedys robil i chyba cos bylo z tego
Edited by G[o]Q, 08.01.2012 22:59.
sebul
08.01.2012
Teraz działa (kasę zabiera, ale nie daje HE), tylko szkoda, że działa to nawet wtedy, gdy komuś da się granat funkcją "give_item" ;/
Ale mam pewien pomysł ;] zaraz go sprawdzę.
Teraz mam coś takiego
i serwera pada w taki sam sposób jak to było wcześniej przy użyciu "Ham_Item_AttachToPlayer".
Ale mam pewien pomysł ;] zaraz go sprawdzę.
Ja tego "hegrenade" nie widzę w podstawowym kodzie diablo, no i nawet jeśli będę znał wszystkie możliwości kupienia HE przez komendy, to jednak pozostają jeszcze komendy typu "cl_autobuy", gdzie trzeba jakoś wykryć kiedy HE się kupuje. Co do toucha, to on chyba także będzie się wykonywał, gdy granat dostanie ktoś przez komendę "give_item", ale w sumie można by z tym coś próbować.tak popatrzylem w kod diablo i tam jest jeszcze "hegrenade" ale to moze byc błąd Micza
EDIT
no ze tak mozna kupic hegrenada
mozesz tez sprobować toucha wykryć z tego co pamietam ktos tak kiedys robil i chyba cos bylo z tego
Teraz mam coś takiego
public plugin_init() {
register_menucmd(register_menuid("BuyItem"), (1<<3), "cmd_hegren");
register_menucmd(-34, (1<<3), "cmd_hegren");
register_clcmd("hegren", "cmd_hegren");
register_clcmd("cl_setautobuy", "cmd_hegren");
register_clcmd("cl_autobuy", "cmd_hegren");
register_clcmd("cl_rebuy", "cmd_hegren");
RegisterHam(Ham_Item_AddToPlayer, "weapon_hegrenade", "fw_ItemAddToPlayer");
}
public cmd_hegren(id) {
boughtTime[id] = get_gametime()+0.5;
}
public fw_ItemAddToPlayer(iWeapon, id) {
if(boughtTime[id] > get_gametime()) {
if(boughtHeGrenade[id] < 1) {
boughtHeGrenade[id]++;
return HAM_IGNORED;
}
return HAM_SUPERCEDE;
}
return HAM_IGNORED;
}
i serwera pada w taki sam sposób jak to było wcześniej przy użyciu "Ham_Item_AttachToPlayer".
G[o]Q
09.01.2012
dodaj sobie do linii startowej jesli masz taką mozliwosc -dev -condebug i zobacz moze bedziesz cos miec w qconsole.log bo kod wygladą na dobry
sebul
09.01.2012
Niestety testuje na swoim kompie na hlds i nie wiem czy nawet da się gdzieś wpisać komendy startowe.dodaj sobie do linii startowej jesli masz taką mozliwosc -dev -condebug i zobacz moze bedziesz cos miec w qconsole.log bo kod wygladą na dobry
sebul
09.01.2012
Z tego co wiem, HAM_HANDLED używa się gdy coś zmieniliśmy (np. dmg w funkcji Ham_TakeDamage) i chcemy, żeby to zostało wprowadzone, a jeśli ma coś pomijać to wtedy HAM_IGNORED, przynajmniej tak mi kiedyś r3x tłumaczył ^ ^
// MarWit
// MarWit