Blokada kupowania
GOH4n
15.05.2011
Siema, znalazlem na forum cos takiego:
Dodalem to do COD'a i wszystko ladnie dziala, tylko ze teraz chcialbym, aby jedna z klas mogla kupowac bronie. Gdzie mam wsadzic warunek?
#include <amxmodx> #include <amxmisc> #include <engine> #define PLUGIN "Pi drugich" #define VERSION "1.0" #define AUTHOR "R3X" static const buy_classes[][] = { "func_buyzone", "info_map_parameters" } public plugin_precache(){ register_plugin(PLUGIN, VERSION, AUTHOR); createInfoMapParameters(); } isBuyClass(ent, const szParam[] = ""){ new szClassName[32]; if(szParam[0]) copy(szClassName, 31, szParam); else entity_get_string(ent, EV_SZ_classname, szClassName, 31); for(new i=0;i<sizeof buy_classes;i++){ if(equal(buy_classes[i], szClassName)){ if(is_valid_ent(ent)) return true; } } return false; } public pfn_spawn(ent){ if(is_valid_ent(ent) && isBuyClass(ent)) remove_entity(ent); } //Block buying createInfoMapParameters(){ new ent = create_entity("info_map_parameters"); DispatchKeyValue(ent, "buying", "3"); DispatchSpawn(ent); }
Dodalem to do COD'a i wszystko ladnie dziala, tylko ze teraz chcialbym, aby jedna z klas mogla kupowac bronie. Gdzie mam wsadzic warunek?
jackraymund
15.05.2011
ja bym zrobił tak
do głównej funkcji która blokuje bronie
if(!is_user_alive(i) || !(get_user_flags(i) & ADMIN_ADMIN))
}
}
else
{
funkcja blokowania
}
akurat posłużyłem się flagą
1 dzień bawie się skryptowaniem w tym języku, więc mogłem się pomylić
do głównej funkcji która blokuje bronie
if(!is_user_alive(i) || !(get_user_flags(i) & ADMIN_ADMIN))
}
}
else
{
funkcja blokowania
}
akurat posłużyłem się flagą
1 dzień bawie się skryptowaniem w tym języku, więc mogłem się pomylić
R3X
15.05.2011
Ten plugin blokuje kupowanie przez konfigurację środowiska, czyli dla wszystkich. Do blokowania kupowania przez konkretnych klientów trzeba użyć blokowania poszczególnych komend jak buy, wszystkie autobuye i rebuye + nazwy broni (spora część z nich ma 2 warianty komendy). Jak sam widzisz pełno roboty

diablix
15.05.2011
A może tak
Użytkownik diablix edytował ten post 15.05.2011 22:25
#include <amxmodx>
#include <fakemeta>
#define VERSION "0.1"
#define fm_set_user_nobuy(%1) set_pdata_int(%1, 235, get_pdata_int(%1, 235) & ~(1<<0))
public plugin_init(){
register_plugin("Blokada kupna", VERSION, "diablix");
register_message(get_user_msgid("StatusIcon"), "msgStatusIcon");
}
public msgStatusIcon(iMsgId, MSG_DEST, id){
if(KLASA_GRACZA[id] == TWOJA_KLASA) return 0; //JEZELI GRACZ POSIADA DANA KLASE TO KAZEMY DALEJ NIE SPRAWDZAC
static szIcon[5];
get_msg_arg_string(2, szIcon, 4);
if(szIcon[0] == 'b' && szIcon[2] == 'y' && szIcon[3] == 'z'){ // 1 = b 3 = y 4 = z
if(get_msg_arg_int(1)){
fm_set_user_nobuy(id);
return 0;
}
}
return 0;
}
Użytkownik diablix edytował ten post 15.05.2011 22:25
diablix
16.05.2011
Sprawdziłem u siebie i działa (linux)
Użytkownik diablix edytował ten post 16.05.2011 00:38
#include <amxmodx>
#include <fakemeta>
#define VERSION "0.1"
#define fm_set_user_nobuy(%1) set_pdata_int(%1, 235, get_pdata_int(%1, 235) & ~(1<<0))
new g_MsgIcon;
public plugin_init(){
register_plugin("Blokada kupna", VERSION, "diablix");
g_MsgIcon = get_user_msgid("StatusIcon");
register_message(g_MsgIcon, "msgStatusIcon");
}
public msgStatusIcon(iMsgId, MSG_DEST, id){
if(KLASA_GRACZA[id] == TWOJA_KLASA) return 0; //JEZELI GRACZ POSIADA DANA KLASE TO KAZEMY DALEJ NIE SPRAWDZAC
new szIcon[5], iArg;
get_msg_arg_string(2, szIcon, 4);
iArg = get_msg_arg_int(1);
if(szIcon[0] == 'b' && szIcon[2] == 'y' && szIcon[3] == 'z'){ // 1 = b 3 = y 4 = z
if(iArg){
/*set_msg_arg_int(1, 0, iArg); nie jestem pewien od ktorego argumentu zaczyna sie odliczanie*/
message_begin(MSG_ONE, g_MsgIcon, {0,0,0}, id);
write_byte(0);
write_string("buyzone");
write_byte(0);
write_byte(0);
write_byte(0);
message_end();
fm_set_user_nobuy(id);
return 0;
}
}
return 0;
}
Użytkownik diablix edytował ten post 16.05.2011 00:38
R3X
16.05.2011
zamiast wysyłać nowej wiadomości możesz zmienić wartość aktualnej, set_msg_arg_int()