Kod:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <engine>
#include <float>
#define PLUGIN "BM51 Menu"
#define VERSION "1.0"
#define AUTHOR "Eizew"
new g_noclip[33]
new g_godmode[33]
new g_platform_ent[33]
new Float:g_platform_angles[33][3]
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /bm51", "cmd_bm51")
register_menucmd(register_menuid("BM51_Main"), 1023, "menu_bm51_main")
register_menucmd(register_menuid("BM51_Platform"), 1023, "menu_bm51_platform")
register_menucmd(register_menuid("BM51_Rotate"), 1023, "menu_bm51_rotate")
}
public plugin_precache() {
precache_model("models/buyuk_surf.mdl")
precache_model("models/kucuk_surf.mdl")
}
public cmd_bm51(id) {
if (!(get_user_flags(id) & ADMIN_BAN)) {
client_print(id, print_chat, "[BM51] Bu menuye erisiminiz yok.")
return PLUGIN_HANDLED
}
show_bm51_main(id)
return PLUGIN_HANDLED
}
show_bm51_main(id) {
new menu[512], noclip_status[16], godmode_status[16]
format(noclip_status, 15, g_noclip[id] ? "On" : "Off")
format(godmode_status, 15, g_godmode[id] ? "On" : "Off")
format(menu, 511, "\yBM51 Menu^n^n\r1. \wPlatform Menu^n\r2. \wNoclip: \y%s^n\r3. \wGodmode: \y%s^n^n\r0. \wCikis",
noclip_status, godmode_status)
show_menu(id, (1<<0|1<<1|1<<2|1<<9), menu, -1, "BM51_Main")
}
show_bm51_platform(id) {
new menu[256]
format(menu, 255, "\yPlatform Menu^n^n\r1. \wBuyuk Surf^n\r2. \wKucuk Surf^n^n\r0. \wGeri")
show_menu(id, (1<<0|1<<1|1<<9), menu, -1, "BM51_Platform")
}
show_bm51_rotate(id) {
new menu[512]
format(menu, 511, "\yDondurme Menu^n^n\r1. \wX Ekseninde Dondur^n\r2. \wY Ekseninde Dondur^n\r3. \wZ Ekseninde Dondur^n^n\r4. \wEkle^n\r5. \wKaldir^n^n\r0. \wGeri")
show_menu(id, (1<<0|1<<1|1<<2|1<<3|1<<4|1<<9), menu, -1, "BM51_Rotate")
}
public menu_bm51_main(id, key) {
switch(key) {
case 0: show_bm51_platform(id)
case 1: toggle_noclip(id)
case 2: toggle_godmode(id)
case 9: return
}
if(key != 9) show_bm51_main(id)
}
public menu_bm51_platform(id, key) {
switch(key) {
case 0: {
create_platform_preview(id, "models/buyuk_surf.mdl")
show_bm51_rotate(id)
}
case 1: {
create_platform_preview(id, "models/kucuk_surf.mdl")
show_bm51_rotate(id)
}
case 9: show_bm51_main(id)
}
}
public menu_bm51_rotate(id, key) {
switch(key) {
case 0: rotate_platform(id, 0)
case 1: rotate_platform(id, 1)
case 2: rotate_platform(id, 2)
case 3: add_platform(id)
case 4: remove_platform(id)
case 9: show_bm51_platform(id)
}
if(key != 9) show_bm51_rotate(id)
}
toggle_noclip(id) {
g_noclip[id] = !g_noclip[id]
if(g_noclip[id]) {
entity_set_int(id, EV_INT_movetype, MOVETYPE_NOCLIP)
} else {
entity_set_int(id, EV_INT_movetype, MOVETYPE_WALK)
}
new name[32]
get_user_name(id, name, 31)
if(g_noclip[id]) {
client_print(0, print_chat, "%s isimli oyuncu bm menusunden noclip acti", name)
} else {
client_print(0, print_chat, "%s isimli oyuncu bm menusunden noclipi kapatti", name)
}
}
toggle_godmode(id) {
g_godmode[id] = !g_godmode[id]
if(g_godmode[id]) {
entity_set_int(id, EV_INT_flags, entity_get_int(id, EV_INT_flags) | FL_GODMODE)
} else {
entity_set_int(id, EV_INT_flags, entity_get_int(id, EV_INT_flags) & ~FL_GODMODE)
}
new name[32]
get_user_name(id, name, 31)
if(g_godmode[id]) {
client_print(0, print_chat, "%s isimli oyuncu bm menusunden godmode aktif etti", name)
} else {
client_print(0, print_chat, "%s isimli oyuncu bm menusunden godmodeyi kapatti", name)
}
}
create_platform_preview(id, const model[]) {
remove_platform(id)
new ent = create_entity("info_target")
if(!pev_valid(ent)) return
entity_set_string(ent, EV_SZ_classname, "bm51_platform")
entity_set_int(ent, EV_INT_solid, SOLID_BBOX)
entity_set_model(ent, model)
new Float:origin[3], Float:angles[3]
entity_get_vector(id, EV_VEC_origin, origin)
// Oyuncunun baktığı yönü alıyoruz
new Float:vAngle[3]
entity_get_vector(id, EV_VEC_v_angle, vAngle)
// İleri vektörü hesapla
new Float:forward[3]
angle_vector(vAngle, ANGLEVECTOR_FORWARD, forward)
// Float fonksiyonları kullanarak oyuncunun önüne platformu yerleştir
origin[0] = floatadd(origin[0], floatmul(forward[0], 100.0))
origin[1] = floatadd(origin[1], floatmul(forward[1], 100.0))
origin[2] = floatadd(origin[2], floatmul(forward[2], 100.0))
entity_set_origin(ent, origin)
// Platformun açılarını ayarla
angles[0] = 0.0
angles[1] = vAngle[1]
angles[2] = 0.0
entity_set_vector(ent, EV_VEC_angles, angles)
// Float dizileri önceden tanımlanıyor
new Float:mins[3] = {-32.0, -32.0, 0.0}
new Float:maxs[3] = {32.0, 32.0, 8.0}
entity_set_size(ent, mins, maxs)
g_platform_ent[id] = ent
// Float fonksiyonları ile açıları kopyala
for(new i = 0; i < 3; i++) {
g_platform_angles[id][i] = angles[i]
}
}
rotate_platform(id, axis) {
if(!pev_valid(g_platform_ent[id])) return
// Float fonksiyonları ile döndürme işlemi
switch(axis) {
case 0: g_platform_angles[id][0] = floatadd(g_platform_angles[id][0], 45.0)
case 1: g_platform_angles[id][1] = floatadd(g_platform_angles[id][1], 45.0)
case 2: g_platform_angles[id][2] = floatadd(g_platform_angles[id][2], 45.0)
}
entity_set_vector(g_platform_ent[id], EV_VEC_angles, g_platform_angles[id])
}
add_platform(id) {
if(!pev_valid(g_platform_ent[id])) return
// Platformu kalıcı hale getir
new Float:origin[3]
entity_get_vector(g_platform_ent[id], EV_VEC_origin, origin)
entity_set_origin(g_platform_ent[id], origin)
client_print(id, print_chat, "[BM51] Platform eklendi!")
g_platform_ent[id] = 0
}
remove_platform(id) {
if(pev_valid(g_platform_ent[id])) {
remove_entity(g_platform_ent[id])
g_platform_ent[id] = 0
client_print(id, print_chat, "[BM51] Platform kaldirildi!")
} else {
client_print(id, print_chat, "[BM51] Kaldirilacak platform bulunamadi!")
}
})

