Witam!
Piszę z prośbą o napisanie pluginu który będzie blokował wybrane przez Admina buttony, tak aby pułapka nie działała i wyświetlał się na środku w HUD informację na żółto: Nie krecimy.
Bardzo proszę o pomoc!
Z góry dziękuję!
Pozdrawiam.
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
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.
|
Guest Message by DevFuse
Blokowanie pułapek(Buttona)
Temat rozp.
ammo19
, 01.05.2011 10:55
6 odpowiedzi w tym temacie
#1
Napisano 01.05.2011 10:55
#3
Napisano 01.05.2011 16:21
A dałoby wyciągnąć z niego tylko tą opcję? Bo nie jest Mi potrzebny tak obszerny plugin
Z góry dzięki
Z góry dzięki
Użytkownik ammo19 edytował ten post 08.05.2011 22:05
#4
Napisano 08.05.2011 22:05
Pomoże ktoś?
Bardzo proszę o pomoc ponieważ strasznie zależy Mi na tym pluginie.
Bardzo proszę o pomoc ponieważ strasznie zależy Mi na tym pluginie.
Użytkownik ammo19 edytował ten post 08.05.2011 22:06
#5
Napisano 08.05.2011 22:39
#include <amxmodx>
#include <engine>
#include <hamsandwich>
#define MAX_ENT (900+32*15)
#define PLAYERS 32
#define VERSION "0.1"
#define TASK_INFO 1337
new bool:gbButtonBlocked[MAX_ENT];
new bool:gbShowing[PLAYERS + 1];
new const gszToBlock[][] = {
"button_target",
"func_rot_button",
"func_button"
};
public plugin_init(){
register_plugin("Deathrun blocker", VERSION, "diablix");
register_clcmd("say /blok", "cmdBlokuj");
RegisterHam(Ham_Use, gszToBlock[2], "fwdButtonUsed");
RegisterHam(Ham_Use, gszToBlock[1], "fwdButtonUsed");
RegisterHam(Ham_Use, gszToBlock[0], "fwdButtonUsed");
}
public cmdBlokuj(id){
new ent, body, szClassName[32];
get_user_aiming(id, ent, body);
entity_get_string(ent, EV_SZ_classname, szClassName, sizeof szClassName - 1);
for(new i = 0; i < sizeof gszToBlock ; i ++){
if(equal(szClassName, gszToBlock[i])){
gbButtonBlocked[ent] = !gbButtonBlocked[ent];
client_print(id, 3, "[AMXX.PL] %s ten przycisk!", gbButtonBlocked[ent] ? "Zablokowales" : "Odblokowales");
}
break;
}
return 1;
}
public fwdButtonUsed(this, idcaller, idactivator, use_type, Float:value){
if(idcaller != idactivator) return HAM_IGNORED;
if(this == 0) return HAM_IGNORED;
if(gbButtonBlocked[this]){
if(!gbShowing[idcaller]){
client_cmd(idcaller, "spk fvox/blip");
gbShowing[idcaller] = true;
client_print(idcaller, 3, "[AMXX.PL] Ta pulapka zostala zablokowana przez admina!");
}
if(!task_exists(idcaller + TASK_INFO))
set_task(2.5, "removeShow", idcaller + TASK_INFO);
return HAM_SUPERCEDE;
}
return HAM_IGNORED;
}
public removeShow(idcaller){
idcaller -= TASK_INFO;
gbShowing[idcaller] = false;
}
Najedz na przycisk i wpisz na chatcie
/blok
Użytkownik diablix edytował ten post 08.05.2011 22:40
#6
Napisano 09.05.2011 18:09
#include <amxmodx> #include <amxmisc> #include <engine> #include <hamsandwich> #define PLAYERS 32 #define VERSION "0.1" new const gszToBlock[][] = { "button_target", "func_rot_button", "func_button" }; new Array:gButton; public plugin_init(){ register_plugin("Deathrun blocker", VERSION, "diablix"); register_clcmd("say /blok", "cmdBlokuj",ADMIN_BAN); for(new i = 0;i < sizeof gszToBlock;i++){ RegisterHam(Ham_Use, gszToBlock[i], "fwdButtonUsed"); } gButton = ArrayCreate(1,10); loadEnts() } public plugin_end(){ saveEnts() ArrayDestroy(gButton) } public saveEnts(){ new szPath[256]; get_configsdir(szPath,charsmax(szPath)); new szMap[64]; get_mapname(szMap,charsmax(szMap)) format(szPath,charsmax(szPath),"%s/blockButtons/%s",szPath,szMap) if(file_exists(szPath)){ delete_file(szPath); } new szTmp[16] for(new i = 0; i < ArraySize(gButton);i++){ num_to_str(ArrayGetCell(gButton,i),szTmp,charsmax(szTmp)) write_file(szPath,szTmp,-1); } } public loadEnts(){ new szPath[256]; get_configsdir(szPath,charsmax(szPath)); format(szPath,charsmax(szPath),"%s/blockButtons",szPath) mkdir(szPath) new szMap[64]; get_mapname(szMap,charsmax(szMap)) format(szPath,charsmax(szPath),"%s/%s",szMap) new fp = fopen(szPath,"rt"); new szLine[16] while(!feof(fp)){ fgets(fp, szLine, charsmax(szLine)); ArrayPushCell(gButton,str_to_num(szLine)) } } public cmdBlokuj(id,level,cid){ if(!cmd_access(id,level,cid,1)){ return PLUGIN_CONTINUE; } new ent, body, szClassName[32]; get_user_aiming(id, ent, body); if(!is_valid_ent(ent)){ return PLUGIN_CONTINUE; } entity_get_string(ent, EV_SZ_classname, szClassName, sizeof szClassName - 1); for(new i = 0; i < sizeof gszToBlock ; i ++){ if(equal(szClassName, gszToBlock[i])){ for(new i = 0; i < ArraySize(gButton);i++){ if(ent == ArrayGetCell(gButton,i)){ ArrayDeleteItem(gButton,i) client_print(id, 3, "[AMXX.PL] Odblokowales ten przycisk!"); return PLUGIN_CONTINUE; } } ArrayPushCell(gButton,ent) client_print(id, 3, "[AMXX.PL] Zablokowales ten przycisk!"); } break; } return PLUGIN_CONTINUE; } public fwdButtonUsed(this, idcaller, idactivator, use_type, Float:value){ if(idcaller != idactivator) return HAM_IGNORED; if(this == 0) return HAM_IGNORED; for(new i = 0; i < ArraySize(gButton);i++){ if(this == ArrayGetCell(gButton,i)){ client_cmd(idcaller, "spk fvox/blip"); client_print(idcaller, 3, "[AMXX.PL] Ta pulapka zostala zablokowana przez admina!"); return HAM_SUPERCEDE; } } return HAM_IGNORED; }poprawione tylko admin może blokować , zapisywanie blokowanych przycisków po zmianie mapy , oparcie o dynamiczne tablice
#7
Napisano 09.05.2011 23:25
if(is_valid_ent(ent)){
return PLUGIN_CONTINUE;
}
->
if(!is_valid_ent(ent)){
return PLUGIN_CONTINUE;
}
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych