Pluginleri sadece admine özel yapma! - Pikachu - 08-05-13
Arkadaşlar elimde 3 tane plugin var bunları sadece adminlerin kullanabilmesini istiyorum. Yetkininde ADMIN_BAN olmasını istiyorum.
1. Plugin
PHP Code: #include <amxmodx> #include <engine> #include <hamsandwich>
new buton_cvar new buton_cvar_aktif
public plugin_init() { register_plugin("Buton Ates", "v0.0", "OrjinaLp.") RegisterHam(Ham_TraceAttack, "func_button", "butona_saldir") buton_cvar = register_cvar("butona_saldir", "1") cvar_ayarini_duzelt() } public cvar_ayarini_duzelt() { buton_cvar_aktif=get_pcvar_num(buton_cvar) } public butona_saldir(buton, id) { if(is_valid_ent(buton) && buton_cvar_aktif) { ExecuteHamB(Ham_Use, buton, id, 0, 2, 1.0) entity_set_float(buton, EV_FL_frame, 0.0) } return HAM_IGNORED }
2. Plugin
PHP Code: /* Plugin generated by AMXX-Studio */
#include <amxmodx> #include <hamsandwich> #include <fakemeta> #include <xs>
#define PLUGIN "DANS Menusu" #define VERSION "0.1.1" #define AUTHOR "ANONIM // Edit: CSmiLeFaCe"
#define ANIM_MODEL "models/CSPlugin_Hareketler.mdl"
enum _:PLAYER_DATA { ENT_CAM, ENT_MODEL, ENT_ANIM, ANIM_PLAYING }
enum _:SEQ_DESC { MODEL[64], SEQ_LABEL[33], SEQ_FPS, SEQ_FRAMES, SEQ_FRAMERATE }
new g_allocString
new g_playerData[33][PLAYER_DATA]
new Array:g_animData
new g_animMenu
new g_cvarAccessFlag
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /dans", "cmdAnim")
register_forward(FM_CmdStart, "fwdCmdStart", 1) RegisterHam(Ham_Killed, "player", "fwdPlayerKilled", 1)
g_allocString = engfunc(EngFunc_AllocString, "info_target") g_animData = ArrayCreate(SEQ_DESC) g_animMenu = menu_create("\y[DANS MENUSU] \d [CSmiLeFaCe]", "animMenuHandler") g_cvarAccessFlag = register_cvar("anim_menu_access_flag", "") loadModel(ANIM_MODEL) }
public plugin_precache() { precache_model(ANIM_MODEL) }
public plugin_end() { ArrayDestroy(g_animData) }
public loadModel(model[]) { new file = fopen(model, "rt") new numseq, seqindex, i, Float:framerate new seqDesc[SEQ_DESC] fseek(file, 164, SEEK_SET) fread(file, numseq, BLOCK_INT) fread(file, seqindex, BLOCK_INT) for(i = 0; i < numseq; i++) { fseek(file, seqindex + 176*i, SEEK_SET) fread_blocks(file, seqDesc[SEQ_LABEL], 32, BLOCK_CHAR) fread(file, seqDesc[SEQ_FPS], BLOCK_INT) fseek(file, 20, SEEK_CUR) fread(file, seqDesc[SEQ_FRAMES], BLOCK_INT) framerate = 256.0 * Float:seqDesc[SEQ_FPS] / (seqDesc[SEQ_FRAMES] - 1) seqDesc[SEQ_FRAMERATE] = _:framerate ArrayPushArray(g_animData, seqDesc) menu_additem(g_animMenu, seqDesc[SEQ_LABEL], "") } fclose(file) }
public client_putinserver(id) { if (!g_playerData[id][ENT_MODEL]) createPlayerEnt(id) }
public client_disconnect(id) { stopAnim(id) }
public createPlayerEnt(id) { new ent = engfunc(EngFunc_CreateNamedEntity, g_allocString) set_pev(ent, pev_rendermode, kRenderTransAdd) set_pev(ent, pev_renderamt, 0.0) set_pev(ent, pev_owner, id) engfunc(EngFunc_SetModel, ent, ANIM_MODEL) g_playerData[id][ENT_CAM] = ent ent= engfunc(EngFunc_CreateNamedEntity, g_allocString) engfunc(EngFunc_SetModel, ent, ANIM_MODEL) set_pev(ent, pev_movetype, MOVETYPE_FLY) set_pev(ent, pev_controller_1, 63.75) g_playerData[id][ENT_ANIM] = ent ent= engfunc(EngFunc_CreateNamedEntity, g_allocString) set_pev(ent, pev_movetype, MOVETYPE_FOLLOW) set_pev(ent, pev_aiment, g_playerData[id][ENT_ANIM]) set_pev(ent, pev_effects, EF_NODRAW) g_playerData[id][ENT_MODEL] = ent }
public cmdAnim(id) { if(is_user_alive(id)){ new access[32], flag get_pcvar_string(g_cvarAccessFlag, access, 31) flag = read_flags(access) if (!flag || (get_user_flags(id)&flag)) menu_display(id, g_animMenu) else client_print(id, print_chat, "Yetki Yok.") } }
public startAnim(id, anim) { new seqDesc[SEQ_DESC] ArrayGetArray(g_animData, anim, seqDesc) new ent = g_playerData[id][ENT_ANIM] new modelEnt = g_playerData[id][ENT_MODEL] // set_pev(ent, pev_framerate, seqDesc[SEQ_FRAMERATE]) set_pev(ent, pev_framerate, 1.0) // set_pev(ent, pev_animtime, (seqDesc[SEQ_FRAMES] - 1)/seqDesc[SEQ_FPS]) set_pev(ent, pev_sequence, anim) set_pev(ent, pev_gaitsequence, anim) new Float:origin[3], Float:mins[3] pev(id, pev_origin, origin) pev(id, pev_mins, mins) mins[0] = origin[0] mins[1] = origin[1] mins[2] += origin[2] set_pev(ent, pev_origin, mins) set_pev(modelEnt, pev_effects, 0) new model[64] get_user_info(id, "model", model, 63) format(model, 63, "models/player/%s/%s.mdl", model, model) engfunc(EngFunc_SetModel, modelEnt, model) set_pev(modelEnt, pev_body, pev(id, pev_body)) set_pev(modelEnt, pev_skin, pev(id, pev_skin)) set_pev(ent, pev_controller_0, 128) set_pev(ent, pev_controller_1, 128) pev(id, pev_angles, mins) mins[0] = 0.0 set_pev(ent, pev_angles, mins) set_pev(ent, pev_v_angle, mins) engfunc(EngFunc_SetView, id, g_playerData[id][ENT_CAM]) g_playerData[id][ANIM_PLAYING] = 1 set_pev(id, pev_effects, EF_NODRAW) }
public stopAnim(id) { set_pev(g_playerData[id][ENT_MODEL], pev_effects, EF_NODRAW) g_playerData[id][ANIM_PLAYING] = 0 set_pev(id, pev_effects, 0) engfunc(EngFunc_SetView, id, id) }
public animMenuHandler(id, menu, item) { if(item == MENU_EXIT) return PLUGIN_HANDLED new access[32], flag get_pcvar_string(g_cvarAccessFlag, access, 31) flag = read_flags(access) if (flag && !(get_user_flags(id)&flag)) { client_print(id, print_chat, "www.csplugin.com") return PLUGIN_HANDLED } if (!(pev(id, pev_flags)&FL_ONGROUND)) { client_print(id, print_chat, "Yerinde dur!") return PLUGIN_HANDLED } startAnim(id, item) menu_display(id, g_animMenu, floatround(item/7.0, floatround_floor)) return PLUGIN_HANDLED }
public fwdCmdStart(id, uc, randseed) { if (is_user_alive(id) && g_playerData[id][ANIM_PLAYING]) { if (!get_uc(uc, UC_Buttons)) { static Float:fOrigin[3], Float:fAngle[3], Float:origin[3] pev( id, pev_origin, origin ) pev(id, pev_view_ofs, fOrigin) xs_vec_add(origin, fOrigin, origin) xs_vec_copy(origin, fOrigin) pev(id, pev_v_angle, fAngle) static Float:fVBack[3] angle_vector(fAngle, ANGLEVECTOR_FORWARD, fVBack) fOrigin[2] += 20.0 fOrigin[0] += (-fVBack[0] * 150.0) fOrigin[1] += (-fVBack[1] * 150.0) fOrigin[2] += (-fVBack[2] * 150.0) static tr tr = 0 engfunc(EngFunc_TraceLine, origin, fOrigin, IGNORE_MONSTERS, id, tr) get_tr2(tr, TR_vecEndPos, fOrigin) free_tr2(tr) engfunc(EngFunc_SetOrigin, g_playerData[id][ENT_CAM], fOrigin) set_pev(g_playerData[id][ENT_CAM], pev_angles, fAngle) } else stopAnim(id) } }
public fwdPlayerKilled(id) { stopAnim(id) }
3. Plugin
PHP Code: #include <amxmodx> #include <amxmisc> #include <hamsandwich> #include <fakemeta>
#define VERSION "1.0" #define pev_no_open pev_iuser4
new pCvarEnabled new pCvarBlockDoorButtons new g_iFwdSpawn
public plugin_init() { unregister_forward(FM_Spawn,g_iFwdSpawn) if(engfunc(EngFunc_FindEntityByString, FM_NULLENT, "classname","func_door_rotating") || engfunc(EngFunc_FindEntityByString, FM_NULLENT, "classname","func_door")) { register_plugin("(ON) Open doors with a shot", VERSION, "Starsailor") register_cvar("open_doors_version",VERSION,FCVAR_SERVER|FCVAR_SPONLY) pCvarEnabled = register_cvar("od_enabled", "1") pCvarBlockDoorButtons = register_cvar("od_filterdoors","0") RegisterHam(Ham_TraceAttack, "func_door_rotating", "ham_open_door") RegisterHam(Ham_TraceAttack, "func_door", "ham_open_door") } else { register_plugin("(OFF) Open doors with a shot", VERSION, "Starsailor") pause("ad") } }
public plugin_precache() { g_iFwdSpawn = register_forward(FM_Spawn,"fw_Spawn") }
public ham_open_door(iEnt, iAttacker, Float:fDamage, Float:vDirection[3], TraceHandle, iDamageBits) { if(!get_pcvar_num(pCvarEnabled)) { return HAM_IGNORED } if(get_pcvar_num(pCvarBlockDoorButtons) && pev(iEnt,pev_no_open)) { return HAM_IGNORED } dllfunc(DLLFunc_Use, iEnt, iAttacker) return HAM_IGNORED }
public fw_Spawn(iEnt) { if(!pev_valid(iEnt)) { return FMRES_IGNORED } new szClassName[32] pev(iEnt,pev_classname,szClassName,charsmax(szClassName)) if(!equal(szClassName,"func_button")) { return FMRES_IGNORED } new szTargetName[32] new iTarget pev(iEnt, pev_target, szTargetName,charsmax(szTargetName)) iTarget = 0 new szClassName2[32] while((iTarget = engfunc(EngFunc_FindEntityByString, iTarget, "targetname", szTargetName))) { pev(iTarget,pev_classname,szClassName2,charsmax(szClassName2)) if(equal(szClassName2,"func_door") || equal(szClassName2,"func_door_rotating")) { set_pev(iTarget,pev_no_open,1) } } return FMRES_IGNORED }
İlgilenicek arkadaşlara şimdiden teşekkürler.
Cevap: Pluginleri sadece admine özel yapma! - Furkan Dize - 08-05-13
PHP Code: #include <amxmodx> #include <engine> #include <hamsandwich> #define ADMINLEVEL ADMIN_BAN new buton_cvar new buton_cvar_aktif
public plugin_init() { register_plugin("Buton Ates", "v0.0", "OrjinaLp.") RegisterHam(Ham_TraceAttack, "func_button", "butona_saldir") buton_cvar = register_cvar("butona_saldir", "1") cvar_ayarini_duzelt() } public cvar_ayarini_duzelt() { buton_cvar_aktif=get_pcvar_num(buton_cvar) } public butona_saldir(buton, id) { if (!(get_user_flags(id) & ADMINLEVEL) { return PLUGIN_HANDLED } else if(is_valid_ent(buton) && buton_cvar_aktif) { ExecuteHamB(Ham_Use, buton, id, 0, 2, 1.0) entity_set_float(buton, EV_FL_frame, 0.0) } return HAM_IGNORED }
PHP Code: /* Plugin generated by AMXX-Studio */
#include <amxmodx> #include <hamsandwich> #include <fakemeta> #include <xs> #define ADMINLEVEL ADMIN_BAN #define PLUGIN "DANS Menusu" #define VERSION "0.1.1" #define AUTHOR "ANONIM // Edit: CSmiLeFaCe"
#define ANIM_MODEL "models/CSPlugin_Hareketler.mdl"
enum _:PLAYER_DATA { ENT_CAM, ENT_MODEL, ENT_ANIM, ANIM_PLAYING }
enum _:SEQ_DESC { MODEL[64], SEQ_LABEL[33], SEQ_FPS, SEQ_FRAMES, SEQ_FRAMERATE }
new g_allocString
new g_playerData[33][PLAYER_DATA]
new Array:g_animData
new g_animMenu
new g_cvarAccessFlag
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /dans", "cmdAnim")
register_forward(FM_CmdStart, "fwdCmdStart", 1) RegisterHam(Ham_Killed, "player", "fwdPlayerKilled", 1)
g_allocString = engfunc(EngFunc_AllocString, "info_target") g_animData = ArrayCreate(SEQ_DESC) g_animMenu = menu_create("\y[DANS MENUSU] \d [CSmiLeFaCe]", "animMenuHandler") g_cvarAccessFlag = register_cvar("anim_menu_access_flag", "") loadModel(ANIM_MODEL) }
public plugin_precache() { precache_model(ANIM_MODEL) }
public plugin_end() { ArrayDestroy(g_animData) }
public loadModel(model[]) { new file = fopen(model, "rt") new numseq, seqindex, i, Float:framerate new seqDesc[SEQ_DESC] fseek(file, 164, SEEK_SET) fread(file, numseq, BLOCK_INT) fread(file, seqindex, BLOCK_INT) for(i = 0; i < numseq; i++) { fseek(file, seqindex + 176*i, SEEK_SET) fread_blocks(file, seqDesc[SEQ_LABEL], 32, BLOCK_CHAR) fread(file, seqDesc[SEQ_FPS], BLOCK_INT) fseek(file, 20, SEEK_CUR) fread(file, seqDesc[SEQ_FRAMES], BLOCK_INT) framerate = 256.0 * Float:seqDesc[SEQ_FPS] / (seqDesc[SEQ_FRAMES] - 1) seqDesc[SEQ_FRAMERATE] = _:framerate ArrayPushArray(g_animData, seqDesc) menu_additem(g_animMenu, seqDesc[SEQ_LABEL], "") } fclose(file) }
public client_putinserver(id) { if (!g_playerData[id][ENT_MODEL]) createPlayerEnt(id) }
public client_disconnect(id) { stopAnim(id) }
public createPlayerEnt(id) { new ent = engfunc(EngFunc_CreateNamedEntity, g_allocString) set_pev(ent, pev_rendermode, kRenderTransAdd) set_pev(ent, pev_renderamt, 0.0) set_pev(ent, pev_owner, id) engfunc(EngFunc_SetModel, ent, ANIM_MODEL) g_playerData[id][ENT_CAM] = ent ent= engfunc(EngFunc_CreateNamedEntity, g_allocString) engfunc(EngFunc_SetModel, ent, ANIM_MODEL) set_pev(ent, pev_movetype, MOVETYPE_FLY) set_pev(ent, pev_controller_1, 63.75) g_playerData[id][ENT_ANIM] = ent ent= engfunc(EngFunc_CreateNamedEntity, g_allocString) set_pev(ent, pev_movetype, MOVETYPE_FOLLOW) set_pev(ent, pev_aiment, g_playerData[id][ENT_ANIM]) set_pev(ent, pev_effects, EF_NODRAW) g_playerData[id][ENT_MODEL] = ent }
public cmdAnim(id) { if(is_user_alive(id) && get_user_flags(id) & ADMINLEVEL){ new access[32], flag get_pcvar_string(g_cvarAccessFlag, access, 31) flag = read_flags(access) if (!flag || (get_user_flags(id)&flag)) menu_display(id, g_animMenu) else client_print(id, print_chat, "Yetki Yok.") } }
public startAnim(id, anim) { new seqDesc[SEQ_DESC] ArrayGetArray(g_animData, anim, seqDesc) new ent = g_playerData[id][ENT_ANIM] new modelEnt = g_playerData[id][ENT_MODEL] // set_pev(ent, pev_framerate, seqDesc[SEQ_FRAMERATE]) set_pev(ent, pev_framerate, 1.0) // set_pev(ent, pev_animtime, (seqDesc[SEQ_FRAMES] - 1)/seqDesc[SEQ_FPS]) set_pev(ent, pev_sequence, anim) set_pev(ent, pev_gaitsequence, anim) new Float:origin[3], Float:mins[3] pev(id, pev_origin, origin) pev(id, pev_mins, mins) mins[0] = origin[0] mins[1] = origin[1] mins[2] += origin[2] set_pev(ent, pev_origin, mins) set_pev(modelEnt, pev_effects, 0) new model[64] get_user_info(id, "model", model, 63) format(model, 63, "models/player/%s/%s.mdl", model, model) engfunc(EngFunc_SetModel, modelEnt, model) set_pev(modelEnt, pev_body, pev(id, pev_body)) set_pev(modelEnt, pev_skin, pev(id, pev_skin)) set_pev(ent, pev_controller_0, 128) set_pev(ent, pev_controller_1, 128) pev(id, pev_angles, mins) mins[0] = 0.0 set_pev(ent, pev_angles, mins) set_pev(ent, pev_v_angle, mins) engfunc(EngFunc_SetView, id, g_playerData[id][ENT_CAM]) g_playerData[id][ANIM_PLAYING] = 1 set_pev(id, pev_effects, EF_NODRAW) }
public stopAnim(id) { set_pev(g_playerData[id][ENT_MODEL], pev_effects, EF_NODRAW) g_playerData[id][ANIM_PLAYING] = 0 set_pev(id, pev_effects, 0) engfunc(EngFunc_SetView, id, id) }
public animMenuHandler(id, menu, item) { if(item == MENU_EXIT) return PLUGIN_HANDLED new access[32], flag get_pcvar_string(g_cvarAccessFlag, access, 31) flag = read_flags(access) if (flag && !(get_user_flags(id)&flag)) { client_print(id, print_chat, "www.csplugin.com") return PLUGIN_HANDLED } if (!(pev(id, pev_flags)&FL_ONGROUND)) { client_print(id, print_chat, "Yerinde dur!") return PLUGIN_HANDLED } startAnim(id, item) menu_display(id, g_animMenu, floatround(item/7.0, floatround_floor)) return PLUGIN_HANDLED }
public fwdCmdStart(id, uc, randseed) { if (is_user_alive(id) && g_playerData[id][ANIM_PLAYING]) { if (!get_uc(uc, UC_Buttons)) { static Float:fOrigin[3], Float:fAngle[3], Float:origin[3] pev( id, pev_origin, origin ) pev(id, pev_view_ofs, fOrigin) xs_vec_add(origin, fOrigin, origin) xs_vec_copy(origin, fOrigin) pev(id, pev_v_angle, fAngle) static Float:fVBack[3] angle_vector(fAngle, ANGLEVECTOR_FORWARD, fVBack) fOrigin[2] += 20.0 fOrigin[0] += (-fVBack[0] * 150.0) fOrigin[1] += (-fVBack[1] * 150.0) fOrigin[2] += (-fVBack[2] * 150.0) static tr tr = 0 engfunc(EngFunc_TraceLine, origin, fOrigin, IGNORE_MONSTERS, id, tr) get_tr2(tr, TR_vecEndPos, fOrigin) free_tr2(tr) engfunc(EngFunc_SetOrigin, g_playerData[id][ENT_CAM], fOrigin) set_pev(g_playerData[id][ENT_CAM], pev_angles, fAngle) } else stopAnim(id) } }
public fwdPlayerKilled(id) { stopAnim(id) }
Buyur 3.ye bakmadım öyle bi göz gezdirdim sanırım oda buton ateş pluginiydi ona yapmadım aynı diye , bu arada ilk ikisini yaptım sırasıyla verdim kontrol et , olumlu yada olumsuz olarak ilet bana cevabını.
Cevap: Pluginleri sadece admine özel yapma! - sefatokgoz - 08-05-13
PHP Code: #define ADMIN_LEVEL ADMIN_CVAR
Bu koddu sanırım ?
Cevap: Pluginleri sadece admine özel yapma! - Pikachu - 08-05-13
@Furkan Dize teşekkürler 2. Plugin oldu. 1. Plugin i .amxx e çevirirken şöyle bir hata alıyorum:
PHP Code: butonateset.sma(20) : error 029: invalid expression, assumed zero
Cevap: Pluginleri sadece admine özel yapma! - Furkan Dize - 08-05-13
PHP Code: #include <amxmodx> #include <engine> #include <hamsandwich>
#define ADMINLEVEL ADMIN_BAN new buton_cvar new buton_cvar_aktif
public plugin_init() { register_plugin("Buton Ates", "v0.0", "OrjinaLp.") RegisterHam(Ham_TraceAttack, "func_button", "butona_saldir") buton_cvar = register_cvar("butona_saldir", "1") cvar_ayarini_duzelt() } public cvar_ayarini_duzelt() { buton_cvar_aktif=get_pcvar_num(buton_cvar) } public butona_saldir(buton, id) { if(is_valid_ent(buton) && buton_cvar_aktif && get_user_flags(id) & ADMINLEVEL) { ExecuteHamB(Ham_Use, buton, id, 0, 2, 1.0) entity_set_float(buton, EV_FL_frame, 0.0) } return HAM_IGNORED }
Sorunsuz çalışır büyük ihtimal
Cevap: Pluginleri sadece admine özel yapma! - akcaliberkk - 08-05-13
Küçük bir düzeltme, hamsandwich de;
return PLUGIN_HANDLED yerine
return HAM_SUPERCEDE kullanırız
Cevap: Pluginleri sadece admine özel yapma! - Furkan Dize - 08-05-13
Teşekkürler berk , bu arada arkadaşın 3. isteğine bakar mısın ben baktım ama aynı plugin diye dokunmadım bir de sen bakarsan fena olmaz ( bu arada yeri mi bilmem ama hacı benim bu diğer açtığım konularda bir istek belirttim onada bakarsan sevinirim )
Cevap: Pluginleri sadece admine özel yapma! - Pikachu - 08-05-13
3. Plugin i yapmanıza gerek kalmadı. Yardımlarınız için teşekkür ederim sorunum çözüldü. Pluginler sorunsuz çalışıyor.
---------- Alttaki Mesaj Zamani 17:01 ---------- Önceki Mesaj Zamani 16:48 ----------
Dans plugininde menüdeki hareketlerin isimleri değiştirmek istiyorum ama .sma dosyası içinde menüdeki isimler görünmüyor onları nasıl düzeltebilirim çok özensiz yazılmışlar.
Cevap: Pluginleri sadece admine özel yapma! - Pikachu - 13-05-13
Plugin halledildi fakat son soruma hala cevap bulamadım.
Cevap: Pluginleri sadece admine özel yapma! - akcaliberkk - 14-05-13
Çünkü anlaşılmıyor ?
|