Hi Kéne nekem a DM-be olyan hogy minden csapat a saját kezdő helyéről induljon és ne akárhonnan. Meg még az kéne bele hogy legyenek körök, de ne időre menjenek, hanem mondjuk legyen 400 a max ölés és amelyik csapat először eléri az nyer. utána új kör kezdődik. gondolom ha minden csapat a saját kezdőhelyéről indul, ahogy mapok szerint meg van adva, nincs is szükség azokra a spawn-os hülyeségekre pl.: de_dust2.spawns.cfg, vagy javítsatok ki ha tévedek  THX
Kód: #include <amxmodx> #include <amxmisc> #include <cstrike> #include <csdm>
new D_PLUGIN[] = "CSDM Main" new D_ACCESS = ADMIN_MAP
#define CSDM_OPTIONS_TOTAL 2
new bool:g_StripWeapons = true new bool:g_RemoveBomb = true new g_StayTime new g_drop_fwd new g_options[CSDM_OPTIONS_TOTAL]
//new g_MenuPages[33] new g_MainMenu = -1
public plugin_natives() { register_native("csdm_main_menu", "native_main_menu") register_native("csdm_set_mainoption", "__csdm_allow_option") register_native("csdm_fwd_drop", "__csdm_fwd_drop") register_library("csdm_main") }
public native_main_menu(id, num) { return g_MainMenu }
public __csdm_allow_option(id, num) { new option = get_param(1) if (option <= 0 || option >= CSDM_OPTIONS_TOTAL) { log_error(AMX_ERR_NATIVE, "Invalid option number: %d", option) return 0 } g_options[option] = get_param(2) return 1 }
public __csdm_fwd_drop(id, num) { new id = get_param(1) new wp = get_param(2) new name[32] get_string(3, name, 31) return run_drop(id, wp, name) }
public csdm_Init(const version[]) { if (version[0] == 0) { set_fail_state("CSDM failed to load.") return } }
public csdm_CfgInit() { csdm_reg_cfg("settings", "read_cfg") }
public plugin_init() { register_plugin(D_PLUGIN, CSDM_VERSION, "CSDM Team") register_clcmd("say respawn", "say_respawn") register_clcmd("say /respawn", "say_respawn") register_concmd("csdm_enable", "csdm_enable", D_ACCESS, "Enables CSDM") register_concmd("csdm_disable", "csdm_disable", D_ACCESS, "Disables CSDM") register_concmd("csdm_ctrl", "csdm_ctrl", D_ACCESS, "") register_concmd("csdm_reload", "csdm_reload", D_ACCESS, "Reloads CSDM Config") register_clcmd("csdm_menu", "csdm_menu", ADMIN_MENU, "CSDM Menu") register_clcmd("drop", "hook_drop") register_concmd("csdm_cache", "cacheInfo", ADMIN_MAP, "Shows cache information") AddMenuItem("CSDM Menu", "csdm_menu", D_ACCESS, D_PLUGIN) g_MainMenu = menu_create("CSDM Menu", "use_csdm_menu") new callback = menu_makecallback("hook_item_display") menu_additem(g_MainMenu, "DM Be/DM Ki", "csdm_ctrl", D_ACCESS, callback) menu_additem(g_MainMenu, "DM config ujratoltese", "csdm_reload", D_ACCESS) g_drop_fwd = CreateMultiForward("csdm_HandleDrop", ET_CONTINUE, FP_CELL, FP_CELL, FP_CELL) }
public cacheInfo(id, level, cid) { if (!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED new ar[6] csdm_cache(ar) console_print(id, "[CSDM] Free tasks: respawn=%d, findweapon=%d", ar[0], ar[5]) console_print(id, "[CSDM] Weapon removal cache: %d total, %d live", ar[4], ar[3]) console_print(id, "[CSDM] Live tasks: %d (%d free)", ar[2], ar[1]) return PLUGIN_HANDLED }
public hook_drop(id) { if (!csdm_active()) { return } if (!is_user_connected(id)) { return } new wp, c, a, name[24] if (cs_get_user_shield(id)) { //entirely different... wp = -1 copy(name, 23, "weapon_shield") } else { if (read_argc() <= 1) { wp = get_user_weapon(id, c, a) } else { read_argv(1, name, 23) wp = getWepId(name) } }
run_drop(id, wp, name) }
run_drop(id, wp, const name[]) { new ret ExecuteForward(g_drop_fwd, ret, id, wp, 0) if (ret == CSDM_DROP_REMOVE) { new _name[24] if (name[0] == 0) { get_weaponname(wp, _name, 23) } csdm_remove_weapon(id, _name, 0, 1) return 1 } else if (ret == CSDM_DROP_IGNORE) { return 0 } if (g_StayTime > 20 || g_StayTime < 0) { return 0 } if (wp) { remove_weapon(id, wp) return 1 } return 0 }
public csdm_PostDeath(killer, victim, headshot, const weapon[]) { if (g_StayTime > 20 || g_StayTime < 0) return PLUGIN_CONTINUE
new weapons[MAX_WEAPONS], num, name[24] new wp, slot, ret
get_user_weapons(victim, weapons, num)
for (new i=0; i<num; i++) { wp = weapons[i] slot = g_WeaponSlots[wp]
ExecuteForward(g_drop_fwd, ret, victim, wp, 1)
if (ret == CSDM_DROP_REMOVE) { get_weaponname(wp, name, 23) csdm_remove_weapon(victim, name, 0, 1) } else if (ret == CSDM_DROP_IGNORE) { continue } else { if (slot == SLOT_PRIMARY || slot == SLOT_SECONDARY || slot == SLOT_C4) { remove_weapon(victim, wp) } } } if (cs_get_user_shield(victim)) { ExecuteForward(g_drop_fwd, ret, victim, -1, 1) if (ret == CSDM_DROP_REMOVE) { csdm_remove_weapon(victim, "weapon_shield", 0, 1) } else if (ret == CSDM_DROP_IGNORE) { /* do nothing */ } else { remove_weapon(victim, -1) } } return PLUGIN_CONTINUE }
public csdm_PreSpawn(player, bool:fake) { //we'll just have to back out for now if (cs_get_user_shield(player)) { return } new team = get_user_team(player) if (g_StripWeapons) { if (team == _TEAM_T) { if (cs_get_user_shield(player)) { drop_with_shield(player, CSW_GLOCK18) } else { csdm_force_drop(player, "weapon_glock18") } } else if (team == _TEAM_CT) { if (cs_get_user_shield(player)) { drop_with_shield(player, CSW_USP) } else { csdm_force_drop(player, "weapon_usp") } } } if (team == _TEAM_T) { if (g_RemoveBomb) { new weapons[MAX_WEAPONS], num get_user_weapons(player, weapons, num) for (new i=0; i<num; i++) { if (weapons[i] == CSW_C4) { if (cs_get_user_shield(player)) { drop_with_shield(player, CSW_C4) } else { csdm_force_drop(player, "weapon_c4") } break } } } } }
remove_weapon(id, wp) { new name[24] if (wp == -1) { copy(name, 23, "weapon_shield") } else { get_weaponname(wp, name, 23) }
if ((wp == CSW_C4) && g_RemoveBomb) { csdm_remove_weapon(id, name, 0, 1) } else { if (wp != CSW_C4) { csdm_remove_weapon(id, name, g_StayTime, 1) } } }
public hook_item_display(player, menu, item) { new paccess, command[24], call menu_item_getinfo(menu, item, paccess, command, 23, _, 0, call) if (equali(command, "csdm_ctrl")) { if (!csdm_active()) { menu_item_setname(menu, item, "DM Be") } else { menu_item_setname(menu, item, "DM Ki") } } }
public read_cfg(readAction, line[], section[]) { if (readAction == CFG_READ) { new setting[24], sign[3], value[32];
parse(line, setting, 23, sign, 2, value, 31); if (equali(setting, "strip_weapons")) { g_StripWeapons = str_to_num(value) ? true : false } else if (equali(setting, "weapons_stay")) { g_StayTime = str_to_num(value) } else if (equali(setting, "spawnmode")) { new var = csdm_setstyle(value) if (var) { log_amx("CSDM spawn mode set to %s", value) } else { log_amx("CSDM spawn mode %s not found", value) } } else if (equali(setting, "remove_bomb")) { g_RemoveBomb = str_to_num(value) ? true : false } else if (equali(setting, "enabled")) { csdm_set_active(str_to_num(value)) } else if (equali(setting, "spawn_wait_time")) { csdm_set_spawnwait(str_to_float(value)) } } }
public csdm_reload(id, level, cid) { if (!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED new file[33] = "" if (read_argc() >= 2) { read_argv(1, file, 32) } if (csdm_reload_cfg(file)) { client_print(id, print_chat, "[CSDM] Deathmatch config ujratoltve.") } else { client_print(id, print_chat, "[CSDM] nem lehet ujratolteni a csdm.cfg-t.") } return PLUGIN_HANDLED }
public csdm_menu(id, level, cid) { if (!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED menu_display(id, g_MainMenu, 0) return PLUGIN_HANDLED }
public csdm_ctrl(id, level, cid) { if (!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED csdm_set_active( csdm_active() ? 0 : 1 ) client_print(id, print_chat, "CSDM Deathmatch mod fut,Magyarositotta,Expert_IMI") return PLUGIN_HANDLED }
public use_csdm_menu(id, menu, item) { if (item < 0) return PLUGIN_CONTINUE new command[24], paccess, call if (!menu_item_getinfo(g_MainMenu, item, paccess, command, 23, _, 0, call)) { log_amx("Error: csdm_menu_item() failed (menu %d) (page %d) (item %d)", g_MainMenu, 0, item) return PLUGIN_HANDLED } if (paccess && !(get_user_flags(id) & paccess)) { client_print(id, print_chat, "Nem engedelyezett ez a menu opciok.") return PLUGIN_HANDLED } client_cmd(id, command) return PLUGIN_HANDLED }
public csdm_enable(id, level, cid) { if (!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED
csdm_set_active(1) client_print(id, print_chat, "CSDM Deathmatch mod bekapcsolva.") return PLUGIN_HANDLED }
public csdm_disable(id, level, cid) { if (!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED
csdm_set_active(0) client_print(id, print_chat, "CSDM Deathmach mod kikapcsolva.") return PLUGIN_HANDLED }
public say_respawn(id) { if (g_options[CSDM_OPTION_SAYRESPAWN] == CSDM_SET_DISABLED) { client_print(id, print_chat, "[CSDM] Parancs letiltva") return PLUGIN_HANDLED } if (!is_user_alive(id) && csdm_active()) { new team = get_user_team(id) if (team == _TEAM_T || team == _TEAM_CT) { csdm_respawn(id) } } return PLUGIN_CONTINUE }
|