Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

MYGO.pl

RSSy
  • Postów

    28209
  • Dołączył

  • Ostatnia wizyta

    nigdy
  • Wygrane w rankingu

    11

Treść opublikowana przez MYGO.pl

  1. MYGO.pl

    RSSPlugin error

    Hello. How could I solve these errors? Code: [AMXX] Displaying debug trace (plugin "zp_cso_knifes.amxx", version "1.0") [AMXX] Run time error 4: index out of bounds [AMXX] [0] zp_cso_knifes.sma::Fw_EmitSound (line 256) [AMXX] Displaying debug trace (plugin "zp_cso_knifes.amxx", version "1.0") [AMXX] Run time error 4: index out of bounds [AMXX] [0] zp_cso_knifes.sma::CBaseWeapon_Deploy_Post (line 240)Line 233 - 276 Spoiler public CBaseWeapon_Deploy_Post( iEntity ) { if( !pev_valid( iEntity ) ) return HAM_HANDLED; new iPlayer; iPlayer = get_pdata_cbase( iEntity , 41 , 4 ); if( zp_get_user_zombie( iPlayer ) ) return HAM_HANDLED set_pev( iPlayer , pev_viewmodel2 , Knife_View_Models[ iKnife[ iPlayer ] ] ); set_pev( iPlayer , pev_weaponmodel2 , Knife_Player_Models[ iKnife[ iPlayer ] ] ); set_pev( iPlayer , pev_maxspeed , Knife_Speed[ iKnife[ iPlayer ] ]) set_pdata_float( iPlayer , 83 , 1.0 , 5 ); return HAM_IGNORED; } public Fw_EmitSound( iPlayer , iChannel , iSample[] , Float:flVolume , Float:flAttn , iFlag , iPitch ) { if( ! is_user_connected( iPlayer ) ) return FMRES_IGNORED; if( zp_get_user_zombie( iPlayer ) ) return FMRES_IGNORED if( iSample[ 8 ] == 'k' && iSample[ 9 ] == 'n' && iSample[ 10 ] == 'i' ) { if( iSample[ 14 ] == 'd' ) { emit_sound( iPlayer , iChannel , Knife_Sounds[ iKnife [ iPlayer ] ] [ 0 ] , flVolume , flAttn , iFlag , iPitch ) } else if(iSample[ 14 ] == 'h') { if(iSample[ 17 ] == 'w') { emit_sound(iPlayer , iChannel , Knife_Sounds[ iKnife[ iPlayer ] ] [ 3 ] , flVolume , flAttn , iFlag , iPitch ) } else { emit_sound(iPlayer , iChannel , Knife_Sounds[ iKnife[ iPlayer ] ] [ random_num( 1 , 2 ) ] , flVolume , flAttn , iFlag , iPitch ) } } else { if( iSample[ 15 ] == 'l' ) { emit_sound( iPlayer , iChannel , Knife_Sounds[ iKnife[ iPlayer ] ] [ 4 ] , flVolume , flAttn , iFlag , iPitch ) } else { emit_sound( iPlayer , iChannel , Knife_Sounds[ iKnife[ iPlayer ] ] [ 5 ] , flVolume , flAttn , iFlag , iPitch ) } } return FMRES_SUPERCEDE; } return FMRES_IGNORED; } If all the code is needed, I will post it. Przeczytaj cały wpis
  2. Ive tried to add a Knife submenu but i kept getting errors, so i just gave up and deleted the code, what i wanted was to add my knife menu in the buymenu the menu is supposed to look like this [Title] 1. Pistols 2. Shotguns 3. Rifles 4. Snipers 5. Machineguns 6. Extra items (humans) 7. Knife menu (idk how to add this one) edit - to open the knife menu you have to use PHP Code: client_cmd(id, "knife") PHP Code: #include <amxmodx> #include <amxmisc> #include <cstrike> #include <fakemeta_util> #include <sqlx> #include <hamsandwich> #include <zombieplague> #include <dhudmessage> #define INI "zp_buymenu.ini" #define CFG "zp_buymenu.cfg" #define TXT "zp_buymenu.txt" #define WAV "items/9mmclip1.wav" #define FLAG_A (1<<0) #define FLAG_B (1<<1) #define FLAG_C (1<<2) #define FLAG_D (1<<3) #define FLAG_E (1<<4) #define FLAG_F (1<<5) #define FLAG_G (1<<6) #define FLAG_H (1<<7) #define FLAG_I (1<<8) #define FLAG_J (1<<9) #define FLAG_K (1<<10) #define MENU 8 new g_money[33], g_menu[MENU], g_maxplayers, g_gamemode, g_count[7], g_msg_BuyClose, g_msg_StatusIcon, g_msg_Money, g_msg_BlinkAcct, bool:g_limit[128][33], bool:g_limit_round[128][33], cvar_no_one_win, cvar_zombies_win, cvar_zombies_loose, cvar_zombies_kill, cvar_humans_win, cvar_humans_loose, cvar_humans_kill, cvar_show_equipments, cvar_ammo_give, cvar_money_max, cvar_money_save, Array:g_pistols, Array:g_shotguns, Array:g_submachineguns, Array:g_rifles, Array:g_machineguns, Array:g_equipments_h, Array:g_equipments_z, Handle:SQL_Connection, Handle:SQL_Tuple, bool:g_connected enum { SECTION_NONE = 0, SECTION_PISTOLS, SECTION_SHOTGUNS, SECTION_SUBMACHINEGUNS, SECTION_RIFLES, SECTION_MACHINEGUNS, SECTION_EQUIPMENTS_H, SECTION_EQUIPMENTS_Z } const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90) const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE) enum { DROP_PRIMARY = 1, DROP_SECONDARY } new const MAXAMMO[] = { -1, 52, // P228 Compact -1, 90, // Schmidt Scout 1, 32, // XM1014 M4 1, 100, // Ingram MAC-10 90, // Steyr AUG A1 1, 120, // Dual Elite Berettas 100, // FiveseveN 100, // UMP 45 90, // SG-550 Auto-Sniper 90, // IMI Galil 90, // Famas 100, // USP .45 ACP Tactical 120, // Glock 18C 30, // AWP Magnum Sniper 120, // MP5 Navy 200, // M249 Para Machinegun 32, // M3 Super 90 90, // M4A1 Carbine 120, // Schmidt TMP 90, // G3SG1 Auto-Sniper 2, 35, // Desert Eagle .50 AE 90, // SG-552 Commando 90, // AK-47 Kalashnikov -1, 100 // ES P90 } new const BUYAMMO[] = { -1, 13, // P228 Compact -1, 30, // Schmidt Scout -1, 8, // XM1014 M4 -1, 12, // Ingram MAC-10 30, // Steyr AUG A1 -1, 30, // Dual Elite Berettas 50, // FiveseveN 12, // UMP 45 30, // SG-550 Auto-Sniper 30, // IMI Galil 30, // Famas 12, // USP .45 ACP Tactical 30, // Glock 18C 10, // AWP Magnum Sniper 30, // MP5 Navy 30, // M249 Para Machinegun 8, // M3 Super 90 30, // M4A1 Carbine 30, // Schmidt TMP 30, // G3SG1 Auto-Sniper -1, 7, // Desert Eagle .50 AE 30, // SG-552 Commando 30, // AK-47 Kalashnikov -1, 50 // ES P90 } new const TYPEAMMO[][] = { "", "357sig", // P228 Compact "", "762nato", // Schmidt Scout "", "buckshot", // XM1014 M4 "", "45acp", // Ingram MAC-10 "556nato", // Steyr AUG A1 "", "9mm", // Dual Elite Berettas "57mm", // FiveseveN "45acp", // UMP 45 "556nato", // SG-550 Auto-Sniper "556nato", // IMI Galil "556nato", // Famas "45acp", // USP .45 ACP Tactical "9mm", // Glock 18C "338magnum", // AWP Magnum Sniper "9mm", // MP5 Navy "556natobox", // M249 Para Machinegun "buckshot", // M3 Super 90 "556nato", // M4A1 Carbine "9mm", // Schmidt TMP "762nato", // G3SG1 Auto-Sniper "", "50ae", // Desert Eagle .50 AE "556nato", // SG-552 Commando "762nato", // AK-47 Kalashnikov "", "57mm" // ES P90 } new const COSTAMMO[] = { -1, 2, // P228 Compact -1, 4, // Schmidt Scout -1, 6, // XM1014 M4 -1, 8, // Ingram MAC-10 9, // Steyr AUG A1 -1, 11, // Dual Elite Berettas 12, // FiveseveN 13, // UMP 45 14, // SG-550 Auto-Sniper 15, // IMI Galil 16, // Famas 17, // USP .45 ACP Tactical 18, // Glock 18C 19, // AWP Magnum Sniper 20, // MP5 Navy 21, // M249 Para Machinegun 22, // M3 Super 90 23, // M4A1 Carbine 24, // Schmidt TMP 25, // G3SG1 Auto-Sniper -1, 27, // Desert Eagle .50 AE 28, // SG-552 Commando 29, // AK-47 Kalashnikov -1, 31, // ES P90 } new const g_buy_commands[][] = { "usp", "glock", "deagle", "p228", "elites", "fn57", "m3", "xm1014", "mp5", "tmp", "p90", "mac10", "ump45", "ak47", "galil", "famas", "sg552", "m4a1", "aug", "scout", "awp", "g3sg1", "sg550", "m249", "vest", "vesthelm", "flash", "hegren", "sgren", "defuser", "nvgs", "shield", "primammo", "secammo", "km45", "9x19mm", "nighthawk", "228compact", "fiveseven", "12gauge", "autoshotgun", "mp", "c90", "cv47", "defender", "clarion", "krieg552", "bullpup", "magnum", "d3au1", "krieg550", "buy", "buyequip", "cl_autobuy", "cl_rebuy", "cl_setautobuy", "cl_setrebuy", "client_buy_open" } public plugin_init() { register_plugin("[ZP] Addon: Buy Menu", "25.06.2015", "ErolD") register_dictionary(TXT) cvar_no_one_win = register_cvar("bm_no_one_win_reward", "1000") cvar_zombies_win = register_cvar("bm_zombies_win_reward", "2500") cvar_zombies_loose = register_cvar("bm_zombies_loose_reward", "500") cvar_zombies_kill = register_cvar("bm_zombies_kill_reward", "500") cvar_humans_win = register_cvar("bm_humans_win_reward", "2500") cvar_humans_loose = register_cvar("bm_humans_loose_reward", "500") cvar_humans_kill = register_cvar("bm_humans_kill_reward", "500") cvar_show_equipments = register_cvar("bm_show_equipments", "1") cvar_ammo_give = register_cvar("bm_ammo_give", "1") cvar_money_max = register_cvar("bm_money_max", "100000") cvar_money_save = register_cvar("bm_money_save", "2") register_cvar("bm_sql_host", "localhost") register_cvar("bm_sql_user", "user") register_cvar("bm_sql_password", "password") register_cvar("bm_sql_db", "db") register_cvar("zp_remove_money", "0") register_event("HLTV", "Event_RoundStart", "a", "1=0", "2=0") RegisterHam(Ham_Player_PreThink, "player", "Ham_Player_PreThink_Pre") RegisterHam(Ham_TakeDamage, "player", "Ham_TakeDamage_Pre") RegisterHam(Ham_Spawn, "player", "Ham_Spawn_Post", 1) RegisterHam(Ham_Killed, "player", "Ham_Killed_Pre") new i, callback, buffer[128], name[64], cost[64], buy_commands = sizeof(g_buy_commands) callback = menu_makecallback("menu_callback") for(i = 0; i < MENU; i++) g_menu[i] = menu_create("BM_MENU", "menu_handler") for(i = 2; i < MENU; i++) { if(i == 7) menu_addblank(g_menu[0], 0) menu_additem(g_menu[0], "BM_ITEM", _, _, callback) } for(i = 0; i < ArraySize(g_pistols); i++) { ArrayGetString(g_pistols, i, buffer, charsmax(buffer)) parse(buffer, name, charsmax(name), buffer, charsmax(buffer), cost, charsmax(cost)) formatex(buffer, charsmax(buffer), "%s \y[%d$]", name, str_to_num(cost)) menu_additem(g_menu[1], buffer, _, _, callback) } for(i = 0; i < ArraySize(g_shotguns); i++) { ArrayGetString(g_shotguns, i, buffer, charsmax(buffer)) parse(buffer, name, charsmax(name), buffer, charsmax(buffer), cost, charsmax(cost)) formatex(buffer, charsmax(buffer), "%s \y[%d$]", name, str_to_num(cost)) menu_additem(g_menu[2], buffer, _, _, callback) } for(i = 0; i < ArraySize(g_submachineguns); i++) { ArrayGetString(g_submachineguns, i, buffer, charsmax(buffer)) parse(buffer, name, charsmax(name), buffer, charsmax(buffer), cost, charsmax(cost)) formatex(buffer, charsmax(buffer), "%s \y[%d$]", name, str_to_num(cost)) menu_additem(g_menu[3], buffer, _, _, callback) } for(i = 0; i < ArraySize(g_rifles); i++) { ArrayGetString(g_rifles, i, buffer, charsmax(buffer)) parse(buffer, name, charsmax(name), buffer, charsmax(buffer), cost, charsmax(cost)) formatex(buffer, charsmax(buffer), "%s \y[%d$]", name, str_to_num(cost)) menu_additem(g_menu[4], buffer, _, _, callback) } for(i = 0; i < ArraySize(g_machineguns); i++) { ArrayGetString(g_machineguns, i, buffer, charsmax(buffer)) parse(buffer, name, charsmax(name), buffer, charsmax(buffer), cost, charsmax(cost)) formatex(buffer, charsmax(buffer), "%s \y[%d$]", name, str_to_num(cost)) menu_additem(g_menu[5], buffer, _, _, callback) } for(i = 0; i < ArraySize(g_equipments_h); i++) { ArrayGetString(g_equipments_h, i, buffer, charsmax(buffer)) parse(buffer, name, charsmax(name), buffer, charsmax(buffer), cost, charsmax(cost)) formatex(buffer, charsmax(buffer), "%s \y[%d$]", name, str_to_num(cost)) menu_additem(g_menu[6], buffer, _, _, callback) } for(i = 0; i < ArraySize(g_equipments_z); i++) { ArrayGetString(g_equipments_z, i, buffer, charsmax(buffer)) parse(buffer, name, charsmax(name), buffer, charsmax(buffer), cost, charsmax(cost)) formatex(buffer, charsmax(buffer), "%s \y[%d$]", name, str_to_num(cost)) menu_additem(g_menu[7], buffer, _, _, callback) } for(i = 0; i < buy_commands; i++) register_clcmd(g_buy_commands[i], "clcmd_menu") register_clcmd("buyammo1", "clcmd_buyammo") register_clcmd("buyammo2", "clcmd_buyammo") g_msg_BuyClose = get_user_msgid("BuyClose") g_msg_StatusIcon = get_user_msgid("StatusIcon") g_msg_Money = get_user_msgid("Money") g_msg_BlinkAcct = get_user_msgid("BlinkAcct") g_maxplayers = get_maxplayers() } public plugin_precache() { g_pistols = ArrayCreate(128, 1) g_shotguns = ArrayCreate(128, 1) g_submachineguns = ArrayCreate(128, 1) g_rifles = ArrayCreate(128, 1) g_machineguns = ArrayCreate(128, 1) g_equipments_h = ArrayCreate(128, 1) g_equipments_z = ArrayCreate(128, 1) new configsdir[64], line[1024], buffer[128], name[64], name2[64], cost[64], flags[64], players[64], section get_configsdir(configsdir, charsmax(configsdir)) format(configsdir, charsmax(configsdir), "%s/%s", configsdir, INI) if(!file_exists(configsdir)) { log_to_file("zp_buymenu.log", "%s not loaded", INI) return; } new file = fopen(configsdir, "rt") while(file && !feof(file)) { fgets(file, line, charsmax(line)) replace(line, charsmax(line), "^n", "") if(!line[0] || line[0] == ';') { continue; } else if(line[0] == '[') { section++ continue; } else if(line[0] == '"') { switch(section) { case SECTION_PISTOLS: { parse(line, name, charsmax(name), name2, charsmax(name2), cost, charsmax(cost), flags, charsmax(flags), players, charsmax(players)) formatex(buffer, charsmax(buffer), "^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^"", name, name2, cost, flags, players) ArrayPushString(g_pistols, buffer) g_count[0]++ } case SECTION_SHOTGUNS: { parse(line, name, charsmax(name), name2, charsmax(name2), cost, charsmax(cost), flags, charsmax(flags), players, charsmax(players)) formatex(buffer, charsmax(buffer), "^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^"", name, name2, cost, flags, players) ArrayPushString(g_shotguns, buffer) g_count[1]++ } case SECTION_SUBMACHINEGUNS: { parse(line, name, charsmax(name), name2, charsmax(name2), cost, charsmax(cost), flags, charsmax(flags), players, charsmax(players)) formatex(buffer, charsmax(buffer), "^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^"", name, name2, cost, flags, players) ArrayPushString(g_submachineguns, buffer) g_count[2]++ } case SECTION_RIFLES: { parse(line, name, charsmax(name), name2, charsmax(name2), cost, charsmax(cost), flags, charsmax(flags), players, charsmax(players)) formatex(buffer, charsmax(buffer), "^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^"", name, name2, cost, flags, players) ArrayPushString(g_rifles, buffer) g_count[3]++ } case SECTION_MACHINEGUNS: { parse(line, name, charsmax(name), name2, charsmax(name2), cost, charsmax(cost), flags, charsmax(flags), players, charsmax(players)) formatex(buffer, charsmax(buffer), "^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^"", name, name2, cost, flags, players) ArrayPushString(g_machineguns, buffer) g_count[4]++ } case SECTION_EQUIPMENTS_H: { parse(line, name, charsmax(name), name2, charsmax(name2), cost, charsmax(cost), flags, charsmax(flags), players, charsmax(players)) formatex(buffer, charsmax(buffer), "^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^"", name, name2, cost, flags, players) ArrayPushString(g_equipments_h, buffer) g_count[5]++ } case SECTION_EQUIPMENTS_Z: { parse(line, name, charsmax(name), name2, charsmax(name2), cost, charsmax(cost), flags, charsmax(flags), players, charsmax(players)) formatex(buffer, charsmax(buffer), "^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^"", name, name2, cost, flags, players) ArrayPushString(g_equipments_z, buffer) g_count[6]++ } } } } if(file) fclose(file) } public plugin_natives() { register_native("zp_cs_get_user_money", "native_get_user_money", 1) register_native("zp_cs_set_user_money", "native_set_user_money", 1) } public plugin_cfg() { new configsdir[32], errnum, error[128], Handle:query, host[32], user[32], password[32], db[32] get_configsdir(configsdir, charsmax(configsdir)) server_cmd("exec %s/%s", configsdir, CFG) if(!get_pcvar_num(cvar_money_save)) return; get_cvar_string("bm_sql_host", host, charsmax(host)) get_cvar_string("bm_sql_user", user, charsmax(user)) get_cvar_string("bm_sql_password", password, charsmax(password)) get_cvar_string("bm_sql_db", db, charsmax(db)) SQL_Tuple = SQL_MakeDbTuple(host, user, password, db) SQL_Connection = SQL_Connect(SQL_Tuple, errnum, error, charsmax(error)) if(SQL_Connection == Empty_Handle) { server_print("ERROR #%d: %s", errnum, error) g_connected = false } else { query = SQL_PrepareQuery(SQL_Connection, "CREATE TABLE IF NOT EXISTS `zp_buymenu`(`player` VARCHAR(32) NOT NULL PRIMARY KEY, `money` INTEGER NOT NULL)") SQL_Execute(query) SQL_FreeHandle(query) g_connected = true } } public client_connect(id) { client_cmd(id, "setinfo _vgui_menus 0") if(g_connected) { static player[32], Handle:query switch(get_pcvar_num(cvar_money_save)) { case 1: get_user_name(id, player, charsmax(player)) case 2: get_user_authid(id, player, charsmax(player)) case 3: get_user_ip(id, player, charsmax(player)) } query = SQL_PrepareQuery(SQL_Connection, "SELECT * FROM `zp_buymenu` WHERE `player`='%s'", player) SQL_Execute(query) g_money[id] = SQL_ReadResult(query, 1) SQL_FreeHandle(query) } } public client_disconnect(id) { if(g_connected) { static player[32], Handle:query switch(get_pcvar_num(cvar_money_save)) { case 1: get_user_name(id, player, charsmax(player)) case 2: get_user_authid(id, player, charsmax(player)) case 3: get_user_ip(id, player, charsmax(player)) } query = SQL_PrepareQuery(SQL_Connection, "REPLACE INTO `zp_buymenu`(`player`, `money`) VALUES ('%s', '%d')", player, g_money[id]) SQL_Execute(query) SQL_FreeHandle(query) } } public plugin_end() { if(g_connected) { SQL_FreeHandle(SQL_Connection) SQL_FreeHandle(SQL_Tuple) } } public clcmd_menu(id) { if(!is_user_alive(id)) return PLUGIN_HANDLED; message_begin(MSG_ONE, g_msg_BuyClose, _, id) message_end() static buffer[128] formatex(buffer, charsmax(buffer), "%L", LANG_PLAYER, "BM_TITLE") menu_setprop(g_menu[0], MPROP_TITLE, buffer) formatex(buffer, charsmax(buffer), "%L", LANG_PLAYER, "BM_PISTOLS") menu_item_setname(g_menu[0], 0, buffer) menu_setprop(g_menu[1], MPROP_TITLE, buffer) formatex(buffer, charsmax(buffer), "%L", LANG_PLAYER, "BM_SHOTGUNS") menu_item_setname(g_menu[0], 1, buffer) menu_setprop(g_menu[2], MPROP_TITLE, buffer) formatex(buffer, charsmax(buffer), "%L", LANG_PLAYER, "BM_SUBMACHINEGUNS") menu_item_setname(g_menu[0], 2, buffer) menu_setprop(g_menu[3], MPROP_TITLE, buffer) formatex(buffer, charsmax(buffer), "%L", LANG_PLAYER, "BM_RIFLES") menu_item_setname(g_menu[0], 3, buffer) menu_setprop(g_menu[4], MPROP_TITLE, buffer) formatex(buffer, charsmax(buffer), "%L", LANG_PLAYER, "BM_MACHINEGUNS") menu_item_setname(g_menu[0], 4, buffer) menu_setprop(g_menu[5], MPROP_TITLE, buffer) if(zp_get_user_zombie(id)) { formatex(buffer, charsmax(buffer), "%L", LANG_PLAYER, "BM_EQUIPMENTS_ZOMBIES") menu_item_setname(g_menu[0], 5, buffer) menu_setprop(g_menu[7], MPROP_TITLE, buffer) if(get_pcvar_num(cvar_show_equipments)) menu_display(id, g_menu[7]) else menu_display(id, g_menu[0]) } else { formatex(buffer, charsmax(buffer), "%L", LANG_PLAYER, "BM_EQUIPMENTS_HUMANS") menu_item_setname(g_menu[0], 5, buffer) menu_setprop(g_menu[6], MPROP_TITLE, buffer) menu_display(id, g_menu[0]) } return PLUGIN_HANDLED; } public clcmd_buyammo(id) { if(!is_user_alive(id) || zp_get_user_zombie(id)) return PLUGIN_HANDLED; static ammo, weapon weapon = get_user_weapon(id, _, ammo) if(g_money[id] < COSTAMMO[weapon]) { message_begin(MSG_ONE_UNRELIABLE, g_msg_BlinkAcct, _, id) write_byte(5) message_end() } else if(ammo < MAXAMMO[weapon]) { ExecuteHam(Ham_GiveAmmo, id, BUYAMMO[weapon], TYPEAMMO[weapon], MAXAMMO[weapon]) set_user_money(id, g_money[id] - COSTAMMO[weapon]) emit_sound(id, CHAN_ITEM, WAV, 1.0, ATTN_NORM, 0, PITCH_NORM) } return PLUGIN_HANDLED; } public menu_handler(id, menu, item) { static buffer[128], name2[64], cost[64], weaponid if(item == MENU_EXIT) return; switch(menu) { case 0: { switch(item) { case 5: { if(zp_get_user_zombie(id)) menu_display(id, g_menu[7], 0) else menu_display(id, g_menu[6], 0) } default: menu_display(id, g_menu[item + 1], 0) } } case 1: { ArrayGetString(g_pistols, item, buffer, charsmax(buffer)) parse(buffer, buffer, charsmax(buffer), name2, charsmax(name2), cost, charsmax(cost)) weaponid = get_weaponid(name2) if(equal(name2, "weapon_", 7)) { drop_weapons(id, DROP_SECONDARY) fm_give_item(id, name2) if(get_pcvar_num(cvar_ammo_give)) ExecuteHam(Ham_GiveAmmo, id, MAXAMMO[weaponid], TYPEAMMO[weaponid], MAXAMMO[weaponid]) } else { zp_force_buy_extra_item(id, zp_get_extra_item_id(name2), 1) } set_user_money(id, g_money[id] - str_to_num(cost)) g_limit_round[item][id] = g_limit[item][id] = true } case 2: { ArrayGetString(g_shotguns, item, buffer, charsmax(buffer)) parse(buffer, buffer, charsmax(buffer), name2, charsmax(name2), cost, charsmax(cost)) weaponid = get_weaponid(name2) if(equal(name2, "weapon_", 7)) { drop_weapons(id, DROP_PRIMARY) fm_give_item(id, name2) if(get_pcvar_num(cvar_ammo_give)) ExecuteHam(Ham_GiveAmmo, id, MAXAMMO[weaponid], TYPEAMMO[weaponid], MAXAMMO[weaponid]) } else { zp_force_buy_extra_item(id, zp_get_extra_item_id(name2), 1) } set_user_money(id, g_money[id] - str_to_num(cost)) g_limit_round[item][id] = g_limit[item][id] = true } case 3: { ArrayGetString(g_submachineguns, item, buffer, charsmax(buffer)) parse(buffer, buffer, charsmax(buffer), name2, charsmax(name2), cost, charsmax(cost)) weaponid = get_weaponid(name2) if(equal(name2, "weapon_", 7)) { drop_weapons(id, DROP_PRIMARY) fm_give_item(id, name2) if(get_pcvar_num(cvar_ammo_give)) ExecuteHam(Ham_GiveAmmo, id, MAXAMMO[weaponid], TYPEAMMO[weaponid], MAXAMMO[weaponid]) } else { zp_force_buy_extra_item(id, zp_get_extra_item_id(name2), 1) } set_user_money(id, g_money[id] - str_to_num(cost)) g_limit_round[item][id] = g_limit[item][id] = true } case 4: { ArrayGetString(g_rifles, item, buffer, charsmax(buffer)) parse(buffer, buffer, charsmax(buffer), name2, charsmax(name2), cost, charsmax(cost)) weaponid = get_weaponid(name2) if(equal(name2, "weapon_", 7)) { drop_weapons(id, DROP_PRIMARY) fm_give_item(id, name2) if(get_pcvar_num(cvar_ammo_give)) ExecuteHam(Ham_GiveAmmo, id, MAXAMMO[weaponid], TYPEAMMO[weaponid], MAXAMMO[weaponid]) } else { zp_force_buy_extra_item(id, zp_get_extra_item_id(name2), 1) } set_user_money(id, g_money[id] - str_to_num(cost)) g_limit_round[item][id] = g_limit[item][id] = true } case 5: { ArrayGetString(g_machineguns, item, buffer, charsmax(buffer)) parse(buffer, buffer, charsmax(buffer), name2, charsmax(name2), cost, charsmax(cost)) weaponid = get_weaponid(name2) if(equal(name2, "weapon_", 7)) { drop_weapons(id, DROP_PRIMARY) fm_give_item(id, name2) if(get_pcvar_num(cvar_ammo_give)) ExecuteHam(Ham_GiveAmmo, id, MAXAMMO[weaponid], TYPEAMMO[weaponid], MAXAMMO[weaponid]) } else { zp_force_buy_extra_item(id, zp_get_extra_item_id(name2), 1) } set_user_money(id, g_money[id] - str_to_num(cost)) g_limit_round[item][id] = g_limit[item][id] = true } case 6: { ArrayGetString(g_equipments_h, item, buffer, charsmax(buffer)) parse(buffer, buffer, charsmax(buffer), name2, charsmax(name2), cost, charsmax(cost)) if(equal(name2, "weapon_", 7)) fm_give_item(id, name2) else zp_force_buy_extra_item(id, zp_get_extra_item_id(name2), 1) set_user_money(id, g_money[id] - str_to_num(cost)) g_limit_round[item][id] = g_limit[item][id] = true } case 7: { ArrayGetString(g_equipments_z, item, buffer, charsmax(buffer)) parse(buffer, buffer, charsmax(buffer), name2, charsmax(name2), cost, charsmax(cost)) if(equal(name2, "weapon_", 7)) fm_give_item(id, name2) else zp_force_buy_extra_item(id, zp_get_extra_item_id(name2), 1) set_user_money(id, g_money[id] - str_to_num(cost)) g_limit_round[item][id] = g_limit[item][id] = true } } } public menu_callback(id, menu, item) { static buffer[128], name2[64], cost[64], flags[64], players[64], flag switch(menu) { case 0: { switch(item) { case 5: return ITEM_ENABLED; default: { if(zp_get_user_zombie(id) || !g_count[item]) return ITEM_DISABLED; } } } case 1: { ArrayGetString(g_pistols, item, buffer, charsmax(buffer)) parse(buffer, buffer, charsmax(buffer), buffer, charsmax(buffer), cost, charsmax(cost), flags, charsmax(flags), players, charsmax(players)) flag = read_flags(flags) if(zp_get_user_zombie(id) || g_money[id] < str_to_num(cost) || (!g_gamemode && flag & FLAG_A) || (g_gamemode && flag & FLAG_B) || (zp_get_user_last_zombie(id) && flag & FLAG_C) || (zp_get_user_last_human(id) && flag & FLAG_D) || (g_gamemode == MODE_NEMESIS && flag & FLAG_E) || (g_gamemode == MODE_SURVIVOR && flag & FLAG_F) || (g_gamemode == MODE_SWARM && flag & FLAG_G) || (g_gamemode == MODE_PLAGUE && flag & FLAG_H) || (!(get_user_flags(id) & ADMIN_BAN) && flag & FLAG_I) || ((g_limit_round[item][id]) && flag & FLAG_J) || ((g_limit[item][id]) && flag & FLAG_K) || get_playersnum() < str_to_num(players)) return ITEM_DISABLED; } case 2: { ArrayGetString(g_shotguns, item, buffer, charsmax(buffer)) parse(buffer, buffer, charsmax(buffer), buffer, charsmax(buffer), cost, charsmax(cost), flags, charsmax(flags), players, charsmax(players)) flag = read_flags(flags) if(zp_get_user_zombie(id) || g_money[id] < str_to_num(cost) || (!g_gamemode && flag & FLAG_A) || (g_gamemode && flag & FLAG_B) || (zp_get_user_last_zombie(id) && flag & FLAG_C) || (zp_get_user_last_human(id) && flag & FLAG_D) || (g_gamemode == MODE_NEMESIS && flag & FLAG_E) || (g_gamemode == MODE_SURVIVOR && flag & FLAG_F) || (g_gamemode == MODE_SWARM && flag & FLAG_G) || (g_gamemode == MODE_PLAGUE && flag & FLAG_H) || (!(get_user_flags(id) & ADMIN_BAN) && flag & FLAG_I) || ((g_limit_round[item][id]) && flag & FLAG_J) || ((g_limit[item][id]) && flag & FLAG_K) || get_playersnum() < str_to_num(players)) return ITEM_DISABLED; } case 3: { ArrayGetString(g_submachineguns, item, buffer, charsmax(buffer)) parse(buffer, buffer, charsmax(buffer), buffer, charsmax(buffer), cost, charsmax(cost), flags, charsmax(flags), players, charsmax(players)) flag = read_flags(flags) if(zp_get_user_zombie(id) || g_money[id] < str_to_num(cost) || (!g_gamemode && flag & FLAG_A) || (g_gamemode && flag & FLAG_B) || (zp_get_user_last_zombie(id) && flag & FLAG_C) || (zp_get_user_last_human(id) && flag & FLAG_D) || (g_gamemode == MODE_NEMESIS && flag & FLAG_E) || (g_gamemode == MODE_SURVIVOR && flag & FLAG_F) || (g_gamemode == MODE_SWARM && flag & FLAG_G) || (g_gamemode == MODE_PLAGUE && flag & FLAG_H) || (!(get_user_flags(id) & ADMIN_BAN) && flag & FLAG_I) || ((g_limit_round[item][id]) && flag & FLAG_J) || ((g_limit[item][id]) && flag & FLAG_K) || get_playersnum() < str_to_num(players)) return ITEM_DISABLED; } case 4: { ArrayGetString(g_rifles, item, buffer, charsmax(buffer)) parse(buffer, buffer, charsmax(buffer), buffer, charsmax(buffer), cost, charsmax(cost), flags, charsmax(flags), players, charsmax(players)) flag = read_flags(flags) if(zp_get_user_zombie(id) || g_money[id] < str_to_num(cost) || (!g_gamemode && flag & FLAG_A) || (g_gamemode && flag & FLAG_B) || (zp_get_user_last_zombie(id) && flag & FLAG_C) || (zp_get_user_last_human(id) && flag & FLAG_D) || (g_gamemode == MODE_NEMESIS && flag & FLAG_E) || (g_gamemode == MODE_SURVIVOR && flag & FLAG_F) || (g_gamemode == MODE_SWARM && flag & FLAG_G) || (g_gamemode == MODE_PLAGUE && flag & FLAG_H) || (!(get_user_flags(id) & ADMIN_BAN) && flag & FLAG_I) || ((g_limit_round[item][id]) && flag & FLAG_J) || ((g_limit[item][id]) && flag & FLAG_K) || get_playersnum() < str_to_num(players)) return ITEM_DISABLED; } case 5: { ArrayGetString(g_machineguns, item, buffer, charsmax(buffer)) parse(buffer, buffer, charsmax(buffer), buffer, charsmax(buffer), cost, charsmax(cost), flags, charsmax(flags), players, charsmax(players)) flag = read_flags(flags) if(zp_get_user_zombie(id) || g_money[id] < str_to_num(cost) || (!g_gamemode && flag & FLAG_A) || (g_gamemode && flag & FLAG_B) || (zp_get_user_last_zombie(id) && flag & FLAG_C) || (zp_get_user_last_human(id) && flag & FLAG_D) || (g_gamemode == MODE_NEMESIS && flag & FLAG_E) || (g_gamemode == MODE_SURVIVOR && flag & FLAG_F) || (g_gamemode == MODE_SWARM && flag & FLAG_G) || (g_gamemode == MODE_PLAGUE && flag & FLAG_H) || (!(get_user_flags(id) & ADMIN_BAN) && flag & FLAG_I) || ((g_limit_round[item][id]) && flag & FLAG_J) || ((g_limit[item][id]) && flag & FLAG_K) || get_playersnum() < str_to_num(players)) return ITEM_DISABLED; } case 6: { ArrayGetString(g_equipments_h, item, buffer, charsmax(buffer)) parse(buffer, buffer, charsmax(buffer), name2, charsmax(name2), cost, charsmax(cost), flags, charsmax(flags), players, charsmax(players)) flag = read_flags(flags) if(zp_get_user_zombie(id) || g_money[id] < str_to_num(cost) || (!g_gamemode && flag & FLAG_A) || (g_gamemode && flag & FLAG_B) || (zp_get_user_last_zombie(id) && flag & FLAG_C) || (zp_get_user_last_human(id) && flag & FLAG_D) || (g_gamemode == MODE_NEMESIS && flag & FLAG_E) || (g_gamemode == MODE_SURVIVOR && flag & FLAG_F) || (g_gamemode == MODE_SWARM && flag & FLAG_G) || (g_gamemode == MODE_PLAGUE && flag & FLAG_H) || (!(get_user_flags(id) & ADMIN_BAN) && flag & FLAG_I) || ((g_limit_round[item][id]) && flag & FLAG_J) || ((g_limit[item][id]) && flag & FLAG_K) || get_playersnum() < str_to_num(players) || (equal(name2, "weapon_hegrenade") && cs_get_user_bpammo(id, CSW_HEGRENADE) >= 1) || (equal(name2, "weapon_flashbang") && cs_get_user_bpammo(id, CSW_FLASHBANG) >= 2) || (equal(name2, "weapon_smokegrenade") && cs_get_user_bpammo(id, CSW_SMOKEGRENADE) >= 1)) return ITEM_DISABLED; } case 7: { ArrayGetString(g_equipments_z, item, buffer, charsmax(buffer)) parse(buffer, buffer, charsmax(buffer), buffer, charsmax(buffer), cost, charsmax(cost), flags, charsmax(flags), players, charsmax(players)) flag = read_flags(flags) if(g_money[id] < str_to_num(cost) || (!g_gamemode && flag & FLAG_A) || (g_gamemode && flag & FLAG_B) || (zp_get_user_last_zombie(id) && flag & FLAG_C) || (zp_get_user_last_human(id) && flag & FLAG_D) || (g_gamemode == MODE_NEMESIS && flag & FLAG_E) || (g_gamemode == MODE_SURVIVOR && flag & FLAG_F) || (g_gamemode == MODE_SWARM && flag & FLAG_G) || (g_gamemode == MODE_PLAGUE && flag & FLAG_H) || (!(get_user_flags(id) & ADMIN_BAN) && flag & FLAG_I) || ((g_limit_round[item][id]) && flag & FLAG_J) || ((g_limit[item][id]) && flag & FLAG_K) || get_playersnum() < str_to_num(players)) return ITEM_DISABLED; } } return ITEM_ENABLED; } public zp_round_started(gamemode) g_gamemode = gamemode public zp_round_ended(winteam) { new id for(id = 1; id <= g_maxplayers; id++) { if(!is_user_connected(id)) continue; switch(winteam) { case WIN_NO_ONE: { set_user_money(id, g_money[id] + get_pcvar_num(cvar_no_one_win)) set_dhudmessage(0, 125, 0, 0.08, 0.5, 0, 0.0, 1.0, 3.0, 1.0, false) show_dhudmessage(id, "%L", LANG_PLAYER, "BM_WIN_NO_ONE", get_pcvar_num(cvar_no_one_win)) } case WIN_ZOMBIES: { switch(zp_get_user_zombie(id)) { case 0: { set_user_money(id, g_money[id] + get_pcvar_num(cvar_humans_loose)) set_dhudmessage(200, 0, 0, 0.08, 0.5, 0, 0.0, 1.0, 3.0, 1.0, false) show_dhudmessage(id, "%L", LANG_PLAYER, "BM_LOOSE_HUMANS", get_pcvar_num(cvar_humans_loose)) } case 1: { set_user_money(id, g_money[id] + get_pcvar_num(cvar_zombies_win)) set_dhudmessage(200, 0, 0, 0.08, 0.5, 0, 0.0, 1.0, 3.0, 1.0, false) show_dhudmessage(id, "%L", LANG_PLAYER, "BM_WIN_ZOMBIES", get_pcvar_num(cvar_zombies_win)) } } } case WIN_HUMANS: { switch(zp_get_user_zombie(id)) { case 0: { set_user_money(id, g_money[id] + get_pcvar_num(cvar_humans_win)) set_dhudmessage(0, 0, 200, 0.08, 0.5, 0, 0.0, 1.0, 3.0, 1.0, false) show_dhudmessage(id, "%L", LANG_PLAYER, "BM_WIN_HUMANS", get_pcvar_num(cvar_humans_win)) } case 1: { set_user_money(id, g_money[id] + get_pcvar_num(cvar_zombies_loose)) set_dhudmessage(0, 0, 200, 0.08, 0.5, 0, 0.0, 1.0, 3.0, 1.0, false) show_dhudmessage(id, "%L", LANG_PLAYER, "BM_LOOSE_ZOMBIES", get_pcvar_num(cvar_zombies_loose)) } } } } } } public Event_RoundStart() { new id, item, limit_round = sizeof(g_limit_round) for(id = 1; id <= g_maxplayers; id++) { for(item = 0; item < limit_round; item++) g_limit_round[item][id] = false } } public Ham_Player_PreThink_Pre(id) { if(!is_user_alive(id)) return HAM_IGNORED; message_begin(MSG_ONE, g_msg_StatusIcon, _, id) write_byte(1) write_string("buyzone") write_byte(0) write_byte(0) write_byte(0) message_end() return HAM_IGNORED; } public Ham_TakeDamage_Pre(victim, inflictor, attacker, Float:damage, damage_type) { if(victim == attacker || !is_user_connected(attacker)) return HAM_IGNORED; set_user_money(attacker, g_money[attacker] + floatround(damage)) return HAM_IGNORED; } public Ham_Spawn_Post(id) { set_user_money(id, g_money[id], 0) set_dhudmessage(0, 125, 0, -1.0, 0.75, 0, 0.0, 3.0, 2.0, 1.0, false) show_dhudmessage(id, "%L", LANG_PLAYER, "BM_HUD_INFO") } public Ham_Killed_Pre(victim, attacker, shouldgib) { if(victim == attacker || !is_user_connected(attacker)) return HAM_IGNORED; if(zp_get_user_zombie(attacker)) set_user_money(attacker, g_money[attacker] + get_pcvar_num(cvar_zombies_kill)) else set_user_money(attacker, g_money[attacker] + get_pcvar_num(cvar_humans_kill)) return HAM_IGNORED; } public native_get_user_money(id) return g_money[id]; public native_set_user_money(id, money) set_user_money(id, money) stock set_user_money(id, money, flash=1) { if(!is_user_connected(id)) return; if(money > get_pcvar_num(cvar_money_max)) money = get_pcvar_num(cvar_money_max) g_money[id] = money if(!is_user_alive(id)) return; message_begin(MSG_ONE_UNRELIABLE, g_msg_Money, _, id) write_long(money) write_byte(flash) message_end() } stock drop_weapons(id, slot) { static i, weaponname[32] for(i = CSW_P228; i < CSW_P90; i++) { switch(slot) { case DROP_PRIMARY: { if((1<<i) & PRIMARY_WEAPONS_BIT_SUM) { get_weaponname(i, weaponname, charsmax(weaponname)) engclient_cmd(id, "drop", weaponname) } } case DROP_SECONDARY: { if((1<<i) & SECONDARY_WEAPONS_BIT_SUM) { get_weaponname(i, weaponname, charsmax(weaponname)) engclient_cmd(id, "drop", weaponname) } } } } } Przeczytaj cały wpis
  3. im trying to make a kz server, and i cant seem to find a plugin that makes it so my rounds dont end. im not very good with coding i know the basics when it comes to installing this stuff. i tried infinite round but the cvar plugin required doesnt work on my server(seems to be a common issue now and plugin is no longer supported) so if anyone could point me in the right direction it would be much appreciated thanks in advance:3 Przeczytaj cały wpis
  4. InfoThis is a plugin for L4D2 servers with 10-20 players. It displays a list of speakers in two columns at the bottom right of the screen. The column closer to the edge of the screen is filled first; when there are 5+ speakers talking simultaneously, the second column to the left of the first one is also filled. It does not overlap the game's HUD elements, does not cover the gameplay area, does not distract from the game, and supports sv_alltalk (only 10 speakers will be shown). Displays correctly on all resolutions from 1376x768 to 2560x1440+ SсreenshotsAttached Attached Thumbnails Attached Files Get Plugin or Get Source (l4d2_voice_hud.sp - 7.8 KB) Wyświetl pełny artykuł
  5. Describe: When players dead, they will drop many coins and glowing dropped weapons. Preview: Attachment 203302 Attachment 203303 2 sp file for EN and CN language... CFG: PHP Code: // Enable drop coins when player dead // - // Default: "1" // Minimum: "0.000000" // Maximum: "1.000000" L4D2_Coin_Drop_Switch "1" // Number of dropped coins // - // Default: "10" // Minimum: "0.000000" // Maximum: "999.000000" L4D2_Coin_Drop_Num "10" // Coin model, 0:coin 1:goldBar 2:money 3:random // - // Default: "3" // Minimum: "0.000000" // Maximum: "3.000000" L4D2_Coin_Drop_Model_Case "3" // Clear coin time (Seconds) // - // Default: "10" // Minimum: "0.000000" // Maximum: "999.000000" L4D2_Coin_Drop_Clear_Time "10" // Coin model Alpha // - // Default: "255" // Minimum: "0.000000" // Maximum: "255.000000" L4D2_Coin_Drop_Model_Alpha "255" // Enable coin glowing // - // Default: "1" // Minimum: "0.000000" // Maximum: "1.000000" L4D2_Coin_Glow_Switch "1" // Coin glowing colors (RGB) // - // Default: "255 170 0" L4D2_Coin_Glow_Color "255 170 0" // Coin glowing range // - // Default: "2000" // Minimum: "0.000000" // Maximum: "9999.000000" L4D2_Coin_Glow_Range "2000" // Enable dropped weapons glowing when player dead // - // Default: "1" // Minimum: "0.000000" // Maximum: "1.000000" L4D2_Weapon_Drop_Glow_Switch "1" // Weapons glowing colors (RGB) // - // Default: "255 170 0" L4D2_Weapon_Drop_Glow_Color "255 170 0" // Weapons glowing range // - // Default: "2000" // Minimum: "0.000000" // Maximum: "9999.000000" L4D2_Weapon_Drop_Glow_Range "2000" Translate: I love this game and have spent over 5000 hours since my college years. I really miss the old good time that playing this with my friends. I use my off work time to learn programming and this is my work. I also leaned to use hammer mapping for source games, blender for model, squirrel for vscripts etc Enjoy it.:) Attached Thumbnails Attached Files Get Plugin or Get Source (l4d2_drop_coins_v1.0EN.sp - 8.4 KB) Get Plugin or Get Source (l4d2_drop_coins_v1.0CN.sp - 8.4 KB) Wyświetl pełny artykuł
  6. could anyone edit this lasermine plugin and show the lasermine's health under it, and also the player who planted it PHP Code: #include <amxmodx> #include <fakemeta> #include <hamsandwich> #include <xs> #include <zombieplague> #if AMXX_VERSION_NUM < 180 #assert AMX Mod X v1.8.0 or greater library required! #endif #define PLUGIN "[ZP] LaserMine" #define VERSION "2.8.1" #define AUTHOR "SandStriker / Shidla / QuZ/DJ_WEST" #define RemoveEntity(%1) engfunc(EngFunc_RemoveEntity,%1) #define TASK_PLANT 15100 #define TASK_RESET 15500 #define TASK_RELEASE 15900 #define LASERMINE_TEAM pev_iuser1 //EV_INT_iuser1 #define LASERMINE_OWNER pev_iuser2 //EV_INT_iuser3 #define LASERMINE_STEP pev_iuser3 #define LASERMINE_HITING pev_iuser4 #define LASERMINE_COUNT pev_fuser1 #define LASERMINE_POWERUP pev_fuser2 #define LASERMINE_BEAMTHINK pev_fuser3 #define LASERMINE_BEAMENDPOINT pev_vuser1 #define MAX_MINES 10 #define MODE_LASERMINE 0 #define OFFSET_TEAM 114 #define OFFSET_MONEY 115 #define OFFSET_DEATH 444 #define cs_get_user_team(%1) CsTeams:get_offset_value(%1,OFFSET_TEAM) #define cs_get_user_deaths(%1) get_offset_value(%1,OFFSET_DEATH) // Price for mine displayed in the menu. Actual price is set Cvars! new const LMCost = 2 /*########### laser beams colors ###########*/ // Human lasermine color new const Red_Hum = 0, Green_Hum = 0, Blue_Hum = 255; // Zombie lasermine color new const Red_Zomb = 0, Green_Zomb = 255, Blue_Zomb = 0; /*####### laser beams colors (end) #######*/ enum CsTeams { CS_TEAM_UNASSIGNED = 0, CS_TEAM_T = 1, CS_TEAM_CT = 2, CS_TEAM_SPECTATOR = 3 }; enum tripmine_e { TRIPMINE_IDLE1 = 0, TRIPMINE_IDLE2, TRIPMINE_ARM1, TRIPMINE_ARM2, TRIPMINE_FIDGET, TRIPMINE_HOLSTER, TRIPMINE_DRAW, TRIPMINE_WORLD, TRIPMINE_GROUND, }; enum { POWERUP_THINK, BEAMBREAK_THINK, EXPLOSE_THINK }; enum { POWERUP_SOUND, ACTIVATE_SOUND, STOP_SOUND }; new const ENT_MODELS[] = "models/zombie_plague/LaserMines/v_laser_mine.mdl", ENT_SOUND1[] = "weapons/mine_deploy.wav", ENT_SOUND2[] = "weapons/mine_charge.wav", ENT_SOUND3[] = "weapons/mine_activate.wav", ENT_SOUND4[] = "items/suitchargeok1.wav", ENT_SOUND5[] = "items/gunpickup2.wav", ENT_SOUND6[] = "debris/bustglass1.wav", ENT_SOUND7[] = "debris/bustglass2.wav", ENT_SPRITE1[] = "sprites/laserbeam.spr", ENT_SPRITE2[] = "sprites/lm_explode.spr"; new const ENT_CLASS_NAME[] = "lasermine", ENT_CLASS_NAME3[] = "func_breakable", gSnarkClassName[] = "wpn_snark", // Для совместимости с плагином "Snark" barnacle_class[] = "barnacle", // Для совместимости с плагином "Barnacle" weapon_box[] = "weaponbox"; new g_EntMine, beam, boom new g_LENABLE, g_LFMONEY, g_LAMMO, g_LDMG, g_LBEO, g_LTMAX, g_LCOST, g_LHEALTH, g_LMODE, g_LRADIUS, g_NOROUND, g_NEMROUND, g_SURVROUND new g_LRDMG,g_LFF,g_LCBT, g_LDELAY, g_LVISIBLE, g_LSTAMMO, g_LACCESS, g_LGLOW, g_LDMGMODE, g_LCLMODE new g_LCBRIGHT, g_LDSEC, g_LCMDMODE, g_LBUYMODE, g_LME; new g_msgDeathMsg,g_msgScoreInfo,g_msgDamage,g_msgStatusText; new g_dcount[33],g_nowtime,g_MaxPL new bool:g_settinglaser[33] new Float:plspeed[33], plsetting[33], g_havemine[33], g_deployed[33]; //new CVAR_LMCost public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); // Регистрируем ExtraItem g_LME = zp_register_extra_item("Laser Mine", LMCost, ZP_TEAM_ANY) // call the function Laser_TakeDamage when damaged object ENT_CLASS_NAME3 (func_breakable) RegisterHam(Ham_TakeDamage, ENT_CLASS_NAME3, "Laser_TakeDamage") // Add your code here... register_clcmd("+setlaser","CreateLaserMine_Progress_b"); register_clcmd("-setlaser","StopCreateLaserMine"); register_clcmd("+dellaser","ReturnLaserMine_Progress"); register_clcmd("-dellaser","StopReturnLaserMine"); register_clcmd("say","say_lasermine"); register_clcmd("pvip_lasermine","BuyLasermine"); g_LENABLE = register_cvar("zp_ltm","1") g_LACCESS = register_cvar("zp_ltm_acs","0") //0 all, 1 admin g_LMODE = register_cvar("zp_ltm_mode","0") //0 lasermine, 1 tripmine g_LAMMO = register_cvar("zp_ltm_ammo","5") g_LDMG = register_cvar("zp_ltm_dmg","60") //laser hit dmg g_LCOST = register_cvar("zp_ltm_cost","2") g_LFMONEY = register_cvar("zp_ltm_fragmoney","1") g_LHEALTH = register_cvar("zp_ltm_health","5") g_LTMAX = register_cvar("zp_ltm_teammax","100") g_LRADIUS = register_cvar("zp_ltm_radius","320.0") g_LRDMG = register_cvar("zp_ltm_rdmg","100") //radius damage g_LFF = register_cvar("zp_ltm_ff","0") g_LCBT = register_cvar("zp_ltm_cbt","ALL") g_LDELAY = register_cvar("zp_ltm_delay","0.1") g_LVISIBLE = register_cvar("zp_ltm_line","1") g_LGLOW = register_cvar("zp_ltm_glow","0") g_LCBRIGHT = register_cvar("zp_ltm_bright","255")//laser line brightness. g_LCLMODE = register_cvar("zp_ltm_color","0") //0 is team color,1 is green g_LDMGMODE = register_cvar("zp_ltm_ldmgmode","0") //0 - frame dmg, 1 - once dmg, 2 - 1 second dmg g_LDSEC = register_cvar("zp_ltm_ldmgseconds","1") //mode 2 only, damage / seconds. default 1 (sec) g_LSTAMMO = register_cvar("zp_ltm_startammo","1") g_LBUYMODE = register_cvar("zp_ltm_buymode","1"); g_LCMDMODE = register_cvar("zp_ltm_cmdmode","0"); //0 is +USE key, 1 is bind, 2 is each. g_LBEO = register_cvar("zp_ltm_brokeenemy","1"); g_NOROUND = register_cvar("zp_ltm_noround","1"); g_NEMROUND = register_cvar("zp_ltm_nemround","1"); g_SURVROUND = register_cvar("zp_ltm_survround","1"); register_event("DeathMsg", "DeathEvent", "a"); register_event("CurWeapon", "standing", "be", "1=1"); register_event("ResetHUD", "delaycount", "a"); register_event("ResetHUD", "newround", "b"); register_logevent("endround", 2, "0=World triggered", "1=Round_End"); // Register the end of the round register_event("Damage","CutDeploy_onDamage","b"); g_msgDeathMsg = get_user_msgid("DeathMsg"); g_msgScoreInfo = get_user_msgid("ScoreInfo"); g_msgDamage = get_user_msgid("Damage"); g_msgStatusText = get_user_msgid("StatusText"); // Forward. register_forward(FM_Think, "ltm_Think"); register_forward(FM_PlayerPostThink, "ltm_PostThink"); register_forward(FM_PlayerPreThink, "ltm_PreThink"); // Register language files register_dictionary("LaserMines.txt") register_cvar("Shidla", "[ZP] LaserMines v.2.8.1 Final", FCVAR_SERVER|FCVAR_SPONLY) } public plugin_precache() { precache_sound(ENT_SOUND1); precache_sound(ENT_SOUND2); precache_sound(ENT_SOUND3); precache_sound(ENT_SOUND4); precache_sound(ENT_SOUND5); precache_sound(ENT_SOUND6); precache_sound(ENT_SOUND7); precache_model(ENT_MODELS); beam = precache_model(ENT_SPRITE1); boom = precache_model(ENT_SPRITE2); return PLUGIN_CONTINUE; } public plugin_modules() { require_module("fakemeta"); require_module("cstrike"); } public plugin_cfg() { g_EntMine = engfunc(EngFunc_AllocString,ENT_CLASS_NAME3); arrayset(g_havemine,0,sizeof(g_havemine)); arrayset(g_deployed,0,sizeof(g_deployed)); g_MaxPL = get_maxplayers(); new file[64]; get_localinfo("amxx_configsdir",file,63); format(file, 63, "%s/zp_ltm_cvars_ap.cfg", file); if(file_exists(file)) server_cmd("exec %s", file), server_exec(); } public Laser_TakeDamage(victim, inflictor, attacker, Float:f_Damage, bit_Damage) { if(get_pcvar_num(g_LBEO)) { new i_Owner // Obtain the ID of the player who put mine i_Owner = pev(victim, LASERMINE_OWNER) // If the command is the one who put the mine and the one who attacked the same if(CsTeams:pev(victim, LASERMINE_TEAM) == cs_get_user_team(attacker)) // If the one who put the mine does not coincide with those who attacked her, then stop execution if(i_Owner != attacker) return HAM_SUPERCEDE return PLUGIN_CONTINUE } return PLUGIN_CONTINUE } public delaycount(id) { g_dcount[id] = floatround(get_gametime()); } bool:CheckTime(id) { g_nowtime = floatround(get_gametime()) - g_dcount[id]; if(g_nowtime >= get_pcvar_num(g_LDELAY)) return true; return false; } public CreateLaserMine_Progress_b(id) { if(get_pcvar_num(g_LCMDMODE) != 0) CreateLaserMine_Progress(id); return PLUGIN_HANDLED; } public CreateLaserMine_Progress(id) { if(!CreateCheck(id)) return PLUGIN_HANDLED; g_settinglaser[id] = true; message_begin(MSG_ONE, 108, {0,0,0}, id); write_byte(1); write_byte(0); message_end(); set_task(1.2, "Spawn", (TASK_PLANT + id)); return PLUGIN_HANDLED; } public ReturnLaserMine_Progress(id) { if(!ReturnCheck(id)) return PLUGIN_HANDLED; g_settinglaser[id] = true; message_begin(MSG_ONE, 108, {0,0,0}, id); write_byte(1); write_byte(0); message_end(); set_task(1.2, "ReturnMine", (TASK_RELEASE + id)); return PLUGIN_HANDLED; } public StopCreateLaserMine(id) { DeleteTask(id); message_begin(MSG_ONE, 108, {0,0,0}, id); write_byte(0); write_byte(0); message_end(); return PLUGIN_HANDLED; } public StopReturnLaserMine(id) { DeleteTask(id); message_begin(MSG_ONE, 108, {0,0,0}, id); write_byte(0); write_byte(0); message_end(); return PLUGIN_HANDLED; } public ReturnMine(id) { id -= TASK_RELEASE; new tgt,body,Float:vo[3],Float:to[3]; get_user_aiming(id,tgt,body); if(!pev_valid(tgt)) return; pev(id,pev_origin,vo); pev(tgt,pev_origin,to); if(get_distance_f(vo,to) > 70.0) return; new EntityName[32]; pev(tgt, pev_classname, EntityName, 31); if(!equal(EntityName, ENT_CLASS_NAME)) return; if(pev(tgt,LASERMINE_OWNER) != id) return; RemoveEntity(tgt); g_havemine[id] ++; g_deployed[id] --; emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) ShowAmmo(id) return; } public Spawn(id) { id -= TASK_PLANT // motor new i_Ent = engfunc(EngFunc_CreateNamedEntity,g_EntMine); if(!i_Ent) { client_print(id, print_chat,"[Laesrmine Debug] Can't Create Entity"); return PLUGIN_HANDLED_MAIN; } set_pev(i_Ent,pev_classname,ENT_CLASS_NAME); engfunc(EngFunc_SetModel,i_Ent,ENT_MODELS); set_pev(i_Ent,pev_solid,SOLID_NOT); set_pev(i_Ent,pev_movetype,MOVETYPE_FLY); set_pev(i_Ent,pev_frame,0); set_pev(i_Ent,pev_body,3); set_pev(i_Ent,pev_sequence,TRIPMINE_WORLD); set_pev(i_Ent,pev_framerate,0); set_pev(i_Ent,pev_takedamage,DAMAGE_YES); set_pev(i_Ent,pev_dmg,100.0); set_user_health(i_Ent,get_pcvar_num(g_LHEALTH)); new Float:vOrigin[3]; new Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vEntAngles[3]; pev(id, pev_origin, vOrigin); velocity_by_aim(id, 128, vTraceDirection); xs_vec_add(vTraceDirection, vOrigin, vTraceEnd); engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0); new Float:fFraction; get_tr2(0, TR_flFraction, fFraction); // -- We hit something! if(fFraction < 1.0) { // -- Save results to be used later. get_tr2(0, TR_vecEndPos, vTraceEnd); get_tr2(0, TR_vecPlaneNormal, vNormal); } xs_vec_mul_scalar(vNormal, 8.0, vNormal); xs_vec_add(vTraceEnd, vNormal, vNewOrigin); engfunc(EngFunc_SetSize, i_Ent, Float:{ -4.0, -4.0, -4.0 }, Float:{ 4.0, 4.0, 4.0 }); engfunc(EngFunc_SetOrigin, i_Ent, vNewOrigin); // -- Rotate tripmine. vector_to_angle(vNormal,vEntAngles); set_pev(i_Ent,pev_angles,vEntAngles); // -- Calculate laser end origin. new Float:vBeamEnd[3], Float:vTracedBeamEnd[3]; xs_vec_mul_scalar(vNormal, 8192.0, vNormal); xs_vec_add(vNewOrigin, vNormal, vBeamEnd); engfunc(EngFunc_TraceLine, vNewOrigin, vBeamEnd, IGNORE_MONSTERS, -1, 0); get_tr2(0, TR_vecPlaneNormal, vNormal); get_tr2(0, TR_vecEndPos, vTracedBeamEnd); // -- Save results to be used later. set_pev(i_Ent, LASERMINE_OWNER, id); set_pev(i_Ent,LASERMINE_BEAMENDPOINT,vTracedBeamEnd); set_pev(i_Ent,LASERMINE_TEAM,int:cs_get_user_team(id)); new Float:fCurrTime = get_gametime(); set_pev(i_Ent,LASERMINE_POWERUP, fCurrTime + 2.5); set_pev(i_Ent,LASERMINE_STEP,POWERUP_THINK); set_pev(i_Ent,pev_nextthink, fCurrTime + 0.2); PlaySound(i_Ent,POWERUP_SOUND); g_deployed[id]++; g_havemine[id]--; DeleteTask(id); ShowAmmo(id); return 1; } stock TeamDeployedCount(id) { static i; static CsTeams:t;t = cs_get_user_team(id); static cnt;cnt=0; for(i = 1;i <= g_MaxPL;i++) { if(is_user_connected(i)) if(t == cs_get_user_team(i)) cnt += g_deployed[i]; } return cnt; } bool:CheckCanTeam(id) { new arg[5],CsTeam:num; get_pcvar_string(g_LCBT,arg,3); if(equali(arg,"Z")) { num = CsTeam:CS_TEAM_T; } else if(equali(arg,"H")) { num = CsTeam:CS_TEAM_CT; } else if(equali(arg,"ALL") || equali(arg,"HZ") || equali(arg,"ZH")) { num = CsTeam:CS_TEAM_UNASSIGNED; } else { num = CsTeam:CS_TEAM_UNASSIGNED; } if(num != CsTeam:CS_TEAM_UNASSIGNED && num != CsTeam:cs_get_user_team(id)) return false; return true; } bool:CanCheck(id,mode) // Checks: when you can lay mines { if(!get_pcvar_num(g_LENABLE)) { client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOTACTIVE") return false; } if(get_pcvar_num(g_LACCESS) != 0) if(!(get_user_flags(id) & ADMIN_IMMUNITY)) { client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOACCESS") return false; } if(!pev_user_alive(id)) return false; if(!CheckCanTeam(id)) { client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_CBT") return false; } if(mode == 0) { if(g_havemine[id] <= 0) { client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_DONTHAVEMINE") return false; } } if(mode == 1) { if(get_pcvar_num(g_LBUYMODE) == 0) { client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_CANTBUY") return false; } if(g_havemine[id] >= get_pcvar_num(g_LAMMO)) { client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_HAVEMAX") return false; } if(zp_get_user_ammo_packs(id) < get_pcvar_num(g_LCOST)) { client_print(id, print_chat, "%L %L%d %L", id, "CHATTAG",id, "STR_NOMONEY",get_pcvar_num(g_LCOST),id, "STR_NEEDED") return false; } } if(!CheckTime(id)) { client_print(id, print_chat, "%L %L %d %L", id, "CHATTAG",id, "STR_DELAY",get_pcvar_num(g_LDELAY)-g_nowtime,id, "STR_SECONDS") return false; } return true; } bool:ReturnCheck(id) { if(!CanCheck(id,-1)) return false; if(g_havemine[id] + 1 > get_pcvar_num(g_LAMMO)) return false; new tgt,body,Float:vo[3],Float:to[3]; get_user_aiming(id,tgt,body); if(!pev_valid(tgt)) return false; pev(id,pev_origin,vo); pev(tgt,pev_origin,to); if(get_distance_f(vo,to) > 70.0) return false; new EntityName[32]; pev(tgt, pev_classname, EntityName, 31); if(!equal(EntityName, ENT_CLASS_NAME)) return false; if(pev(tgt,LASERMINE_OWNER) != id) return false; return true; } bool:CreateCheck(id) { if(!CanCheck(id,0)) return false; // Проверка на разрешение if(!zp_has_round_started() && get_pcvar_num(g_NOROUND)) { client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NOROUND") return false; } if(zp_is_nemesis_round() && get_pcvar_num(g_NEMROUND)) { client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_NEMROUND") return false; } if(zp_is_survivor_round() && get_pcvar_num(g_SURVROUND)) { client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_SURVROUND") return false; } if(g_deployed[id] >= get_pcvar_num(g_LAMMO)) { client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_MAXDEPLOY") return false; } if(TeamDeployedCount(id) >= get_pcvar_num(g_LTMAX)) { client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_MANYPPL") return false; } new Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vOrigin[3]; pev(id, pev_origin, vOrigin); velocity_by_aim(id, 128, vTraceDirection); xs_vec_add(vTraceDirection, vOrigin, vTraceEnd); engfunc(EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0); new Float:fFraction,Float:vTraceNormal[3]; get_tr2(0, TR_flFraction, fFraction); // -- We hit something! if(fFraction < 1.0) { // -- Save results to be used later. get_tr2(0, TR_vecEndPos, vTraceEnd); get_tr2(0, TR_vecPlaneNormal, vTraceNormal); return true; } client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_PLANTWALL") DeleteTask(id); // -- Did not touched something. (not solid) return false; } public ltm_Think(i_Ent) { if(!pev_valid(i_Ent)) return FMRES_IGNORED; new EntityName[32]; pev(i_Ent, pev_classname, EntityName, 31); if(!get_pcvar_num(g_LENABLE)) return FMRES_IGNORED; // -- Entity is not a tripmine, ignoring the next... if(!equal(EntityName, ENT_CLASS_NAME)) return FMRES_IGNORED; static Float:fCurrTime; fCurrTime = get_gametime(); switch(pev(i_Ent, LASERMINE_STEP)) { case POWERUP_THINK : { new Float:fPowerupTime; pev(i_Ent, LASERMINE_POWERUP, fPowerupTime); if(fCurrTime > fPowerupTime) { set_pev(i_Ent, pev_solid, SOLID_BBOX); set_pev(i_Ent, LASERMINE_STEP, BEAMBREAK_THINK); PlaySound(i_Ent, ACTIVATE_SOUND); } if(get_pcvar_num(g_LGLOW)!=0) { if(get_pcvar_num(g_LCLMODE)==0) { switch (pev(i_Ent,LASERMINE_TEAM)) { // цвет лазера Зомби case CS_TEAM_T: set_rendering(i_Ent,kRenderFxGlowShell,Red_Zomb,Green_Zomb,Blue_Zomb,kRenderNormal,5); // цвет лазера Человека case CS_TEAM_CT:set_rendering(i_Ent,kRenderFxGlowShell,Red_Hum,Green_Hum,Blue_Hum,kRenderNormal,5); } }else { // color laser if there is "the same for all" color set_rendering(i_Ent,kRenderFxGlowShell,random_num(50 , 200),random_num(50 , 200),random_num(50 , 200),kRenderNormal,5); } } set_pev(i_Ent, pev_nextthink, fCurrTime + 0.1); } case BEAMBREAK_THINK : { static Float:vEnd[3],Float:vOrigin[3]; pev(i_Ent, pev_origin, vOrigin); pev(i_Ent, LASERMINE_BEAMENDPOINT, vEnd); static iHit, Float:fFraction; engfunc(EngFunc_TraceLine, vOrigin, vEnd, DONT_IGNORE_MONSTERS, i_Ent, 0); get_tr2(0, TR_flFraction, fFraction); iHit = get_tr2(0, TR_pHit); // -- Something has passed the laser. if(fFraction < 1.0) { // -- Ignoring others tripmines entity. if(pev_valid(iHit)) { pev(iHit, pev_classname, EntityName, 31); // Ignore any crap if(!equal(EntityName, ENT_CLASS_NAME) && !equal(EntityName, gSnarkClassName) && !equal(EntityName, barnacle_class) && !equal(EntityName, weapon_box)) { set_pev(i_Ent, pev_enemy, iHit); if(get_pcvar_num(g_LMODE) == MODE_LASERMINE) CreateLaserDamage(i_Ent,iHit); else if(get_pcvar_num(g_LFF) || CsTeams:pev(i_Ent,LASERMINE_TEAM) != cs_get_user_team(iHit)) set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK); if (!pev_valid(i_Ent)) // if not faithful to - do nothing. thank you DJ_WEST return FMRES_IGNORED; set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3)); } } } if(get_pcvar_num(g_LDMGMODE)!=0) if(pev(i_Ent,LASERMINE_HITING) != iHit) set_pev(i_Ent,LASERMINE_HITING,iHit); // -- Tripmine is still there. if(pev_valid(i_Ent)) { static Float:fHealth; pev(i_Ent, pev_health, fHealth); if(fHealth <= 0.0 || (pev(i_Ent,pev_flags) & FL_KILLME)) { set_pev(i_Ent, LASERMINE_STEP, EXPLOSE_THINK); set_pev(i_Ent, pev_nextthink, fCurrTime + random_float(0.1, 0.3)); } static Float:fBeamthink; pev(i_Ent, LASERMINE_BEAMTHINK, fBeamthink); if(fBeamthink < fCurrTime && get_pcvar_num(g_LVISIBLE)) { DrawLaser(i_Ent, vOrigin, vEnd); set_pev(i_Ent, LASERMINE_BEAMTHINK, fCurrTime + 0.1); } set_pev(i_Ent, pev_nextthink, fCurrTime + 0.01); } } case EXPLOSE_THINK : { // -- Stopping entity to think set_pev(i_Ent, pev_nextthink, 0.0); PlaySound(i_Ent, STOP_SOUND); g_deployed[pev(i_Ent,LASERMINE_OWNER)]--; CreateExplosion(i_Ent); CreateDamage(i_Ent,get_pcvar_float(g_LRDMG),get_pcvar_float(g_LRADIUS)) RemoveEntity (i_Ent); } } return FMRES_IGNORED; } PlaySound(i_Ent, i_SoundType) { switch (i_SoundType) { case POWERUP_SOUND : { emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND1, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, 0, PITCH_NORM); } case ACTIVATE_SOUND : { emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, 1, 75); } case STOP_SOUND : { emit_sound(i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, SND_STOP, PITCH_NORM); emit_sound(i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, SND_STOP, 75); } } } DrawLaser(i_Ent, const Float:v_Origin[3], const Float:v_EndOrigin[3]) { new tcolor[3]; new teamid = pev(i_Ent, LASERMINE_TEAM); if(get_pcvar_num(g_LCLMODE) == 0) { switch(teamid){ case 1:{ // Beam Color for Zombies tcolor[0] = Red_Zomb; tcolor[1] = Green_Zomb; tcolor[2] = Blue_Zomb; } case 2:{ // Beam Color for human tcolor[0] = Red_Hum; tcolor[1] = Green_Hum; tcolor[2] = Blue_Hum; } } }else { // Beam Color mode for vsez at 1-n for all beam tcolor[0] = random_num(50 , 200); tcolor[1] = random_num(50 , 200); tcolor[2] = random_num(50 , 200); } message_begin(MSG_BROADCAST,SVC_TEMPENTITY); write_byte(TE_BEAMPOINTS); engfunc(EngFunc_WriteCoord,v_Origin[0]); engfunc(EngFunc_WriteCoord,v_Origin[1]); engfunc(EngFunc_WriteCoord,v_Origin[2]); engfunc(EngFunc_WriteCoord,v_EndOrigin[0]); //Random engfunc(EngFunc_WriteCoord,v_EndOrigin[1]); //Random engfunc(EngFunc_WriteCoord,v_EndOrigin[2]); //Random write_short(beam); write_byte(0); write_byte(0); write_byte(1); //Life write_byte(5); //Width write_byte(0); //wave write_byte(tcolor[0]); // r write_byte(tcolor[1]); // g write_byte(tcolor[2]); // b write_byte(get_pcvar_num(g_LCBRIGHT)); write_byte(255); message_end(); } CreateDamage(iCurrent,Float:DmgMAX,Float:Radius) { // Get given parameters new Float:vecSrc[3]; pev(iCurrent, pev_origin, vecSrc); new AtkID =pev(iCurrent,LASERMINE_OWNER); new TeamID=pev(iCurrent,LASERMINE_TEAM); new ent = -1; new Float:tmpdmg = DmgMAX; new Float:kickback = 0.0; // Needed for doing some nice calculations :P new Float:Tabsmin[3], Float:Tabsmax[3]; new Float:vecSpot[3]; new Float:Aabsmin[3], Float:Aabsmax[3]; new Float:vecSee[3]; new trRes; new Float:flFraction; new Float:vecEndPos[3]; new Float:distance; new Float:origin[3], Float:vecPush[3]; new Float:invlen; new Float:velocity[3]; new iHitHP,iHitTeam; // Calculate falloff new Float:falloff; if(Radius > 0.0) { falloff = DmgMAX / Radius; } else { falloff = 1.0; } // Find monsters and players inside a specifiec radius while((ent = engfunc(EngFunc_FindEntityInSphere, ent, vecSrc, Radius)) != 0) { if(!pev_valid(ent)) continue; if(!(pev(ent, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER))) { // Entity is not a player or monster, ignore it continue; } if(!pev_user_alive(ent)) continue; // Reset data kickback = 1.0; tmpdmg = DmgMAX; // The following calculations are provided by Orangutanz, THANKS! // We use absmin and absmax for the most accurate information pev(ent, pev_absmin, Tabsmin); pev(ent, pev_absmax, Tabsmax); xs_vec_add(Tabsmin,Tabsmax,Tabsmin); xs_vec_mul_scalar(Tabsmin,0.5,vecSpot); pev(iCurrent, pev_absmin, Aabsmin); pev(iCurrent, pev_absmax, Aabsmax); xs_vec_add(Aabsmin,Aabsmax,Aabsmin); xs_vec_mul_scalar(Aabsmin,0.5,vecSee); engfunc(EngFunc_TraceLine, vecSee, vecSpot, 0, iCurrent, trRes); get_tr2(trRes, TR_flFraction, flFraction); // Explosion can 'see' this entity, so hurt them! (or impact through objects has been enabled xD) if(flFraction >= 0.9 || get_tr2(trRes, TR_pHit) == ent) { // Work out the distance between impact and entity get_tr2(trRes, TR_vecEndPos, vecEndPos); distance = get_distance_f(vecSrc, vecEndPos) * falloff; tmpdmg -= distance; if(tmpdmg < 0.0) tmpdmg = 0.0; // Kickback Effect if(kickback != 0.0) { xs_vec_sub(vecSpot,vecSee,origin); invlen = 1.0/get_distance_f(vecSpot, vecSee); xs_vec_mul_scalar(origin,invlen,vecPush); pev(ent, pev_velocity, velocity) xs_vec_mul_scalar(vecPush,tmpdmg,vecPush); xs_vec_mul_scalar(vecPush,kickback,vecPush); xs_vec_add(velocity,vecPush,velocity); if(tmpdmg < 60.0) { xs_vec_mul_scalar(velocity,12.0,velocity); } else { xs_vec_mul_scalar(velocity,4.0,velocity); } if(velocity[0] != 0.0 || velocity[1] != 0.0 || velocity[2] != 0.0) { // There's some movement todo :) set_pev(ent, pev_velocity, velocity) } } iHitHP = pev_user_health(ent) - floatround(tmpdmg) iHitTeam = int:cs_get_user_team(ent) if(iHitHP <= 0) { if(iHitTeam != TeamID) { zp_set_user_ammo_packs(AtkID,zp_get_user_ammo_packs(AtkID) + get_pcvar_num(g_LFMONEY)) set_score(AtkID,ent,1,iHitHP) }else { if(get_pcvar_num(g_LFF)) { zp_set_user_ammo_packs(AtkID,zp_get_user_ammo_packs(AtkID) - get_pcvar_num(g_LFMONEY)) set_score(AtkID,ent,-1,iHitHP) } } }else { if(iHitTeam != TeamID || get_pcvar_num(g_LFF)) { //set_pev(Player,pev_health,iHitHP) set_user_health(ent, iHitHP) engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},ent); write_byte(floatround(tmpdmg)) write_byte(floatround(tmpdmg)) write_long(DMG_BULLET) engfunc(EngFunc_WriteCoord,vecSrc[0]) engfunc(EngFunc_WriteCoord,vecSrc[1]) engfunc(EngFunc_WriteCoord,vecSrc[2]) message_end() } } } } return } bool:pev_user_alive(ent) { new deadflag = pev(ent,pev_deadflag); if(deadflag != DEAD_NO) return false; return true; } CreateExplosion(iCurrent) { new Float:vOrigin[3]; pev(iCurrent,pev_origin,vOrigin); message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(99); //99 = KillBeam write_short(iCurrent); message_end(); engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0); write_byte(TE_EXPLOSION); engfunc(EngFunc_WriteCoord,vOrigin[0]); engfunc(EngFunc_WriteCoord,vOrigin[1]); engfunc(EngFunc_WriteCoord,vOrigin[2]); write_short(boom); write_byte(30); write_byte(15); write_byte(0); message_end(); } CreateLaserDamage(iCurrent,isHit) { if(isHit < 0) return PLUGIN_CONTINUE switch(get_pcvar_num(g_LDMGMODE)) { case 1: { if(pev(iCurrent,LASERMINE_HITING) == isHit) return PLUGIN_CONTINUE } case 2: { if(pev(iCurrent,LASERMINE_HITING) == isHit) { static Float:cnt static now,htime;now = floatround(get_gametime()) pev(iCurrent,LASERMINE_COUNT,cnt) htime = floatround(cnt) if(now - htime < get_pcvar_num(g_LDSEC)) { return PLUGIN_CONTINUE; }else{ set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) } }else { set_pev(iCurrent,LASERMINE_COUNT,get_gametime()) } } } new Float:vOrigin[3],Float:vEnd[3] pev(iCurrent,pev_origin,vOrigin) pev(iCurrent,pev_vuser1,vEnd) new teamid = pev(iCurrent, LASERMINE_TEAM) new szClassName[32] new Alive,God new iHitTeam,iHitHP,id new hitscore szClassName[0] = '^0' pev(isHit,pev_classname,szClassName,32) if((pev(isHit, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER))) { Alive = pev_user_alive(isHit) God = get_user_godmode(isHit) if(!Alive || God) return PLUGIN_CONTINUE iHitTeam = int:cs_get_user_team(isHit) iHitHP = pev_user_health(isHit) - get_pcvar_num(g_LDMG) id = pev(iCurrent,LASERMINE_OWNER)//, szNetName[32] if(iHitHP <= 0) { if(iHitTeam != teamid) { emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) hitscore = 1 zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id) + get_pcvar_num(g_LFMONEY)) set_score(id,isHit,hitscore,iHitHP) }else { if(get_pcvar_num(g_LFF)) { emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) hitscore = -1 zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id) - get_pcvar_num(g_LFMONEY)) set_score(id,isHit,hitscore,iHitHP) } } }else if(iHitTeam != teamid || get_pcvar_num(g_LFF)) { emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM) set_user_health(isHit,iHitHP) set_pev(iCurrent,LASERMINE_HITING,isHit); engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},isHit); write_byte(get_pcvar_num(g_LDMG)) write_byte(get_pcvar_num(g_LDMG)) write_long(DMG_BULLET) engfunc(EngFunc_WriteCoord,vOrigin[0]) engfunc(EngFunc_WriteCoord,vOrigin[1]) engfunc(EngFunc_WriteCoord,vOrigin[2]) message_end() } }else if(equal(szClassName, ENT_CLASS_NAME3)) { new hl; hl = pev_user_health(isHit); set_user_health(isHit,hl-get_pcvar_num(g_LDMG)); } return PLUGIN_CONTINUE } stock pev_user_health(id) { new Float:health pev(id,pev_health,health) return floatround(health) } stock set_user_health(id,health) { health > 0 ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id); } stock get_user_godmode(index) { new Float:val pev(index, pev_takedamage, val) return (val == DAMAGE_NO) } stock set_user_frags(index, frags) { set_pev(index, pev_frags, float(frags)) return 1 } stock pev_user_frags(index) { new Float:frags; pev(index,pev_frags,frags); return floatround(frags); } set_score(id,target,hitscore,HP){ new idfrags = pev_user_frags(id) + hitscore// get_user_frags(id) + hitscore set_user_frags(id,idfrags) new tarfrags = pev_user_frags(target) + 1 //get_user_frags(target) + 1 set_user_frags(target,tarfrags) new idteam = int:cs_get_user_team(id) new iddeaths = cs_get_user_deaths(id) message_begin(MSG_ALL, g_msgDeathMsg, {0, 0, 0} ,0) write_byte(id) write_byte(target) write_byte(0) write_string(ENT_CLASS_NAME) message_end() message_begin(MSG_ALL, g_msgScoreInfo) write_byte(id) write_short(idfrags) write_short(iddeaths) write_short(0) write_short(idteam) message_end() set_msg_block(g_msgDeathMsg, BLOCK_ONCE) set_user_health(target, HP) } public BuyLasermine(id) { if(!CanCheck(id,1)) return PLUGIN_CONTINUE zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id) - get_pcvar_num(g_LCOST)) g_havemine[id]++; client_print(id, print_chat, "%L %L", id, "CHATTAG",id, "STR_BOUGHT") emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) ShowAmmo(id) return PLUGIN_HANDLED } public zp_extra_item_selected(id, itemid) { if(itemid == g_LME) { zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + LMCost) BuyLasermine(id) } return PLUGIN_CONTINUE } ShowAmmo(id) { new ammo[51] new PlugStat[ 555 char ]; formatex(PlugStat, charsmax(PlugStat), "%L", LANG_PLAYER, "STR_STATE") formatex(ammo, 50, "%s %i/%i",PlugStat, g_havemine[id],get_pcvar_num(g_LAMMO)) message_begin(MSG_ONE, g_msgStatusText, {0,0,0}, id) write_byte(0) write_string(ammo) message_end() } public showInfo(id) { client_print(id, print_chat, "%L", id, "STR_REF") } public say_lasermine(id){ new said[32] read_argv(1,said,31); if(!get_pcvar_num(g_LENABLE)) { return PLUGIN_CONTINUE } if(equali(said, "lasermine") || equali(said, "/lasermine")){ const SIZE = 1024 new msg[SIZE+1],len = 0; len += formatex(msg[len], SIZE - len, "<html><body>") len += formatex(msg[len], SIZE - len, "<p><b>Lasermine Help</b></p><br/><br/>") len += formatex(msg[len], SIZE - len, "<p>Lasermine binds are: bind z +setlaser to plant it | bind x +dellaser to remove it</p><br/>") len += formatex(msg[len], SIZE - len, "<p><b>To buy a lasermine go in the buymenu and in the extraitems for humans option<br/>") len += formatex(msg[len], SIZE - len, "</body></html>") show_motd(id, msg, "Lasermine Entity help") return PLUGIN_CONTINUE } else if(containi(said, "laser") != -1) { showInfo(id) return PLUGIN_CONTINUE } return PLUGIN_CONTINUE } public standing(id) { if(!g_settinglaser[id]) return PLUGIN_CONTINUE set_pev(id, pev_maxspeed, 1.0) return PLUGIN_CONTINUE } public ltm_PostThink(id) { if(!g_settinglaser[id] && plsetting[id]){ resetspeed(id) } else if(g_settinglaser[id] && !plsetting[id]) { pev(id, pev_maxspeed,plspeed[id]) set_pev(id, pev_maxspeed, 1.0) } plsetting[id] = g_settinglaser[id] return FMRES_IGNORED } public ltm_PreThink(id) { if(!pev_user_alive(id) || g_settinglaser[id] == true || is_user_bot(id) || get_pcvar_num(g_LCMDMODE) == 1) return FMRES_IGNORED; if(pev(id, pev_button) & IN_USE && !(pev(id, pev_oldbuttons) & IN_USE)) CreateLaserMine_Progress(id) return FMRES_IGNORED; } resetspeed(id) { set_pev(id, pev_maxspeed, plspeed[id]) } public client_putinserver(id){ g_deployed[id] = 0; g_havemine[id] = 0; DeleteTask(id); return PLUGIN_CONTINUE } public client_disconnect(id){ if(!get_pcvar_num(g_LENABLE)) return PLUGIN_CONTINUE DeleteTask(id); RemoveAllTripmines(id); return PLUGIN_CONTINUE } public newround(id){ if(!get_pcvar_num(g_LENABLE)) return PLUGIN_CONTINUE pev(id, pev_maxspeed,plspeed[id]) DeleteTask(id); RemoveAllTripmines(id); //client_print(id, print_chat, "[ZP][LM][DeBug] All Mines removied!"); delaycount(id); SetStartAmmo(id); return PLUGIN_CONTINUE } public endround(id) { if(!get_pcvar_num(g_LENABLE)) return PLUGIN_CONTINUE // Удаление мин после конца раунда DeleteTask(id); RemoveAllTripmines(id); return PLUGIN_CONTINUE } public DeathEvent(){ if(!get_pcvar_num(g_LENABLE)) return PLUGIN_CONTINUE new id = read_data(2) if(is_user_connected(id)) DeleteTask(id); return PLUGIN_CONTINUE } public RemoveAllTripmines(i_Owner) { new iEnt = g_MaxPL + 1; new clsname[32]; while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", ENT_CLASS_NAME))) { if(i_Owner) { if(pev(iEnt, LASERMINE_OWNER) != i_Owner) continue; clsname[0] = '^0' pev(iEnt, pev_classname, clsname, sizeof(clsname)-1); if(equali(clsname, ENT_CLASS_NAME)) { PlaySound(iEnt, STOP_SOUND); RemoveEntity(iEnt); } } else set_pev(iEnt, pev_flags, FL_KILLME); } g_deployed[i_Owner]=0; } SetStartAmmo(id) { new stammo = get_pcvar_num(g_LSTAMMO); if(stammo <= 0) return PLUGIN_CONTINUE; g_havemine[id] = (g_havemine[id] <= stammo) ? stammo : g_havemine[id]; return PLUGIN_CONTINUE; } public CutDeploy_onDamage(id) { if(get_user_health(id) < 1) DeleteTask(id); } DeleteTask(id) { if(task_exists((TASK_PLANT + id))) { remove_task((TASK_PLANT + id)) } if(task_exists((TASK_RELEASE + id))) { remove_task((TASK_RELEASE + id)) } g_settinglaser[id] = false return PLUGIN_CONTINUE; } stock set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) { static Float:RenderColor[3]; RenderColor[0] = float(r); RenderColor[1] = float(g); RenderColor[2] = float(b); set_pev(entity, pev_renderfx, fx); set_pev(entity, pev_rendercolor, RenderColor); set_pev(entity, pev_rendermode, render); set_pev(entity, pev_renderamt, float(amount)); return 1 } // Gets offset data get_offset_value(id, type) { new key = -1; switch(type) { case OFFSET_TEAM: key = OFFSET_TEAM; case OFFSET_MONEY: key = OFFSET_MONEY; case OFFSET_DEATH: key = OFFSET_DEATH; } if(key != -1) { if(is_amd64_server()) key += 25; return get_pdata_int(id, key); } return -1; } And i also want to add a flag for this command so only people with that flag can get a lasermine for free PHP Code: register_clcmd("pvip_lasermine","BuyLasermine"); Przeczytaj cały wpis
  7. Showcase Descriptiononly spawn one group of scavenge gascans every wave. if any one of the gascans poured, remainder will disapear, then spawns the new wave. destroyed gascans won't detonating and burn. instantly respawn. support map: c1m4_atrium, c6m3_port, c14m2_lighthouse. make sure you load this plugin in coop type modes. Cvars PHP Code: coop_final_scavenge_plus_path "data/coop_final_scavenge_plus" Change log Spoiler Code: 1.0 (2024-02-20: -init public release. Configs installationdown load "map_data_packs" and unzip it, merge the folder to the same path .if you changed the file name or path, you have to edit the cvar "path" too. Attached Files Get Plugin or Get Source (coop_final_scavenge_plus.sp - 11.4 KB) map_data_packs.zip (2.5 KB) Wyświetl pełny artykuł
  8. Hi, hope you re doing great, I´m Matias from Argentina. I was thinking about making a web interface to play cs1.6 tournaments, like 4 teams, 2 servers , 20 players, I think you get the Idea Obviusly the best would be to syncronize the web app with those servers, I mean maybe I could launch the games when the two team leaders say they are ready, show the score in the interface, etc etc. Is there already some plugin for tournaments that I could look up to? I searched but I didn´t find any!! Thanks!! Przeczytaj cały wpis
  9. MYGO.pl

    RSSbuymenu

    Im using buymenu 3.6 by Arwel, and ive been searching everywhere for the SMA of his buymenu and cannot find it anywhere, i need the sma to remove player money back if they get are the first infected since that glitches my buy nemesis and buy survivor system so if anyone have the sma of his buymenu lmk Przeczytaj cały wpis
  10. Description: This plugin is a library that allows you to create special infected bot by SIPool. The plugin's aim is that when your server needs to create special infected bots very frequency, such as create 28 SI bots in 0 seconds, CreateFakeClient() will consume lots of cpu and network resources. But use SIPool can avoid lots of CreateFakeClient() operation because the plugin use pool to manage the SI bots that already created in the past and avoid them being kicked by the director, when you try to request the bot, SIPool will pick an available bot from pool unless the pool is empty. And after my test(28 SI with 0 seconds), the result showed that: NO SIPool, the server's tickrate decrease from 100 to 80 LESS when CreateFakeClient() from a for() loop; WITH SIPool, the server's tickrate decrease from 100 to 90 MORE when RequestSIBot() from a for() loop; And the plugin still needs to test, only myself can not make the plugin be pefect, so any advice and criticize reports are wanted. Usage: See si_pool.inc and sptest.sp. Source: You can ALWAYS find latest source at my GitHub: Paimon-Kawaii - L4D2-Plugins/InProgress/SIBotPool :wink: Download: Attached Files si_pool.zip (15.6 KB) Wyświetl pełny artykuł
  11. Main Togel Online Terpercaya Pasaran Terlengkap Banyaknya penggemar togel saat itu otomatis bandar Togel Online mulai bermunculan di Indonesia. Pasalnya togel kini sudah bisa dimainkan secara online. Dimana para penggemar dapat dengan mudah mengakses game tersebut tanpa harus keluar rumah. Hanya penggunaan ponsel yang terhubung ke jaringan Internet yang dapat diputar sesuka Anda. Apalagi pemain bisa dengan mudah memanfaatkan penawaran pasaran togel online dari berbagai negara. Pemain dapat menemukan berbagai macam pasaran togel yang ingin dimainkan. Untuk menikmati rangkaian permainan togel online ini, anda bisa melalui Bandarcolok sebagai bandar togel online resmi dengan pelayanan terbaik di Indonesia. Kota ini sangat mengutamakan kepuasan setiap anggotanya. Togel adalah permainan tebak-tebakan yang sudah lama ada di Indonesia. Orang Indonesia sudah tidak asing lagi dengan permainan togel online ini. Namun nyatanya di Indonesia sendiri, permainan togel dilarang keras. Sebab, termasuk judi. Semua jenis perjudian di Indonesia dilarang keras dan sudah ada dalam hukum Indonesia. Bermain togel online ini sangat beresiko, pemain bisa saja mengalami kerugian saat memasuki permainan togel online ini. Sebagian besar pemain yang terlibat dalam permainan togel online memang menginginkan keuntungan yang besar. Meskipun untuk mendapatkan keuntungan sebesar itu tentunya anda harus bisa memenangkan permainan togel terlebih dahulu. Togel saat ini sedang dalam perkembangan yang sangat maju, dimana pemain togel sudah bisa mengakses permainan togel online. Keuntungan bermain togel online sendiri adalah memiliki variasi pasaran togel yang lebih banyak. Dengan demikian, pemain bisa memilih berbagai jenis pasaran togel yang mudah dimainkan. Bandarcolok sebagai reseller togel online terpercaya telah menyiapkan penawaran pasaran togel online terlengkap untuk bebas dipilih para pemain setelahnya. Adanya pasaran togel ini bisa memberikan kesan seru saat anda bermain togel online. Adanya pasaran togel online ini juga memudahkan pemain untuk mendapatkan kemenangan. Bandarcolok adalah bandar togel online terpercaya yang mengutamakan kepuasan member dengan memberikan pelayanan terbaik. Layanan ini beroperasi 24 jam sehari, 7 hari seminggu. Layanan ini telah didukung oleh customer service yang berpengalaman dan profesional yang siap membantu para pemain. Layanan pelanggan ini dapat dihubungi langsung oleh pemain melalui fungsi obrolan langsung, Anda dapat mengajukan pertanyaan, keluhan, meminta saran, mengonfirmasi setoran, membuat akun baru, dan masih banyak lagi. Memiliki pelayanan terbaik akan memudahkan para pemain untuk menikmati permainan togel online. Layanan 24 jam nonstop ini memberikan banyak kemudahan seperti transaksi yang lebih mudah, kemudahan bermain togel dan masih banyak lagi. Layanan terbaik reseller togel online Bandarcolok memiliki banyak peranan. Setiap pemain tentunya ingin bermain togel dengan nyaman agar bisa lebih berkonsentrasi dalam bermain togel. Bandar togel Bandarcolok selalu berusaha memberikan kemudahan tersebut melalui pelayanan terbaiknya. Kemudahan yang ditawarkan oleh reseller Bandarcolok terbukti dengan banyaknya jumlah member yang dimiliki oleh reseller Bandarcolok. Penduduk kota semakin nyaman bermain togel di dealer Bandarcolok. Pemain dapat dengan cepat memperoleh berbagai jenis keuntungan besar melalui dealer Bandarcolok. Przeczytaj cały wpis
  12. This is a simple asymmetric team deathmatch mode. The team of many can use only melee weapons and the gravity gun's punt, while the team of one can use weapons normally. The red man cycles after dying a few times, configurable with sm_redman_kills. Start the mode with !redman and stop it with !noredman. I'd appreciate any criticism on the structure of the plugin, for instance is it a serious performance concern to put things in OnPlayerRunCmd? Thank you. Attached Files Get Plugin or Get Source (redMan.sp - 6.2 KB) redMan.smx (8.6 KB) Wyświetl pełny artykuł
  13. InfoSometimes, if there are several players standing in front of a safe room door, or if weapons/medkits are scattered around, pressing "E" might not work or might interact with items instead, even if you are right in front of it, which can be incredibly frustrating. This plugin fixes the issue, making doors work as intended. It should theoretically be compatible with most door-related plugins. There is a native for unscramblers or lockers if you need to allow operation only after a certain event. CVARSl4d2_fix_safedoor_use_distance_to_open [100] - You will be able to OPEN doors from this distance l4d2_fix_safedoor_use_distance_to_close [115] - You will be able to CLOSE doors from this distance l4d2_fix_safedoor_use_wait_permission_from_ot her_plugin [0] - In case you use unscrambler or door locker, wait for it (to use native) Nativesnative void FixSafedoorUseEnable(); Short videohttps://youtu.be/ZyM8jIdeETM?feature=shared TechThe plugin places and saves three points on each door: left, center, and right. It monitors their coordinates when the door's position changes. If the player presses "E" near these points, it uses trace ray to ensure the player is looking at the door. In case of player_use triggered by the engine, some decisions are taken in the next frame to avoid conflicts with other plugins. Then, AcceptInput is used for opening/closing and sends a player_use event for other plugins. If the door has DOOR_FLAG_IGNORE_USE enabled, it also won't work. Attached Files Get Plugin or Get Source (l4d2_fix_safedoor_use.sp - 17.4 KB) fix_safedoor_use.inc (534 Bytes) Wyświetl pełny artykuł
  14. Greetings guys I need a plugin for bounties that works like that: Only Admins with flag "e" (ADMIN_SLAY) can call for a bounty on a player's head with the comand "amx_bounty". Example: amx_bounty NicknamePlayer OR "amx_bounty Player 8500" where 8500 is a custom sum for the bounty. This bounty is valid only for the round it was created in. If the player who's head is on bounty survives the round without being killed he receives $5000. If the marked player is killed during the round his killer will receive $2500 (for body kill) OR $5000 (headshot kill). Chat text when admin calls for bounty on player's head: "AdminNick PUT A BOUNTY ON BountyPlayer 's HEAD FOR $5000" Sound effect when admin calls for bounty on player and also the same sound when the bounty player is killed. Would be extra nice if the results of every bounty is put in a log file and saved to be able to see statistics for later. Would this be possible? Przeczytaj cały wpis
  15. Hello, I hope this message finds you well. I am currently working on a CS 1.6 AMXX plugin that tracks knife deaths and displays a message about the player with the most knife deaths every 24 hours. However, I am encountering an issue with the code, and I would appreciate your assistance. Problem Description: I have implemented a system to count knife deaths and display a message using ShowSyncHudMsg. However, I am facing the following error: Error Message: contador.sma(20) : error 035: argument type mismatch (argument 1) Code: #include <amxmodx> new g_MostKnifeDeaths[33] new g_PlayerWithMostDeaths new HudSync public plugin_init() { register_plugin("Knife Deaths Plugin", "1.0", "Author") register_event("HLTV", "event_player_death", "a", "1=0") register_event("HLTV", "event_round_start", "a", "1=0") HudSync = CreateHudSyncObj() set_task(24.0 * 60.0 * 60.0, "ResetKnifeStats") // Schedule reset every 24 hours set_task(1.0, "ShowMostKnifeDeaths") // Schedule check and display every 1 second } public event_player_death(victim, killer, weapon) { if (equal(weapon, "knife")) { g_MostKnifeDeaths[victim]++ if (g_MostKnifeDeaths[victim] > g_MostKnifeDeaths[g_PlayerWithMostDeaths]) { g_PlayerWithMostDeaths = victim } } return PLUGIN_CONTINUE } public event_round_start() { return PLUGIN_HANDLED } public ShowMostKnifeDeaths() { if (g_PlayerWithMostDeaths > 0) { new mostDeaths = g_MostKnifeDeaths[g_PlayerWithMostDeaths] new currentDeaths = g_MostKnifeDeaths[g_PlayerWithMostDeaths] if (mostDeaths > 0 && currentDeaths > mostDeaths) { set_hudmessage(255, 255, 255, -1.0, -0.8, 0, 6.0, 13.0) ShowSyncHudMsg(0, HudSync, "Player %d died most times by knife %d times.", g_PlayerWithMostDeaths, currentDeaths) // Schedule a task to remove the message after 13 seconds set_task(13.0, "HideMostKnifeDeathsMessage") } } return PLUGIN_HANDLED } public HideMostKnifeDeathsMessage() { // Remove the message after the defined time set_hudmessage(255, 255, 255, -1.0, -0.8, 0, 0.0, 0.0) return PLUGIN_HANDLED } public ResetKnifeStats() { g_PlayerWithMostDeaths = 0 new i for (i = 1; i <= 32; i++) { g_MostKnifeDeaths[i] = 0 } } Issues: The message doesn't always display when it should. The logic for counting knife deaths may not be functioning correctly. I'm using HudSync, but there might be a mistake in its usage. I would greatly appreciate it if you could review the provided code and offer any insights or suggestions to resolve these issues. Thank you for your time and assistance. Best regards, [HOFFMANN] Przeczytaj cały wpis
  16. Adds the ability to add or edit map specific CVar configurations in-game. This is useful for, when playing, moderators spot something that breaks a map or a way to improve the map's experience. To use: Client command: sm_mapconfig <sm_cvar> <value> Server command: sm_mapconfigserver <sm_cvar> <value> For example: sm_mapconfig sv_spawn_density 4 Download it here: https://github.com/zeThijs/better_mapconfigs February 14, 2024 (v1.0) * Initial release. Wyświetl pełny artykuł
  17. Can an auto restart plugin be made on /top15 for month thanks in advance Przeczytaj cały wpis
  18. Is there such a plugin? If the BOT is a CT team, when the BOT of the CT team picks up C4, it will automatically install a bomb Przeczytaj cały wpis
  19. Hello, I have a plugin which I can give money to anyone on the server, but I am looking for a plugin which allows me to give money to an entire side, specifically /moneyteam @CT 5000, /moneyteam @T 5000 for example. Przeczytaj cały wpis
  20. I have a teaching server and I need a scripter if anyone can help me? thank you Przeczytaj cały wpis
  21. Hello! I want to do a deathrun server like fusion is someone knows :178.32.255.68:27111 that got knife, timer,shop, points,bhop,trail, respawn and skins, /gift /get I'd be happy if someone knows, with music models and all I'd be happy to pay for SMA if someone can help me create it Przeczytaj cały wpis
  22. Hi. I need an admin skin with privileges, as indicated in the title. The details are such that I require a plugin where only Counter-Terrorist (Builders) have a default skin that is exclusively for VIPs. This means that as soon as a VIP connects to the server, only they have access to that skin in the builders' team. Additionally, I need the following privileges to be set: Health: 130 Gravity: 0.5 Speed: 300 I have tried numerous plugins, but I haven't found one that meets these requirements. The ones I found either don't compile and produce several errors, or they compile successfully but have a bug where the skin and privileges also apply to zombies. I need this plugin to work with AMXMODX 1.8.2 or 1.8.1. Alternatively, if it functions with any other version, please specify that AMXMODX version as well. Also, I would like to add the following functionality: When a Builder VIP kills a zombie, they should receive a 15HP bonus and $1100 bonus cash. Additionally, their maximum health should not exceed 250. Currently, I'm using BB Mod: BaseBuilder v6.5 by Tirant. Thank you. Przeczytaj cały wpis
  23. Keep the scoreboard on screen while dead/spectator Przeczytaj cały wpis
  24. Hi guys. I need a "unique" plugin for a CS 1.6 steam only server and I can pay for it. If somebody wants to make some money, please PM me for details. I need someone really skilled, because it's not something that can already be found on the internet. Thank you! Przeczytaj cały wpis
  25. So i need to add 3 more options to this code Players Water Knife Pistol Hud weather replace the existing option visible and invisible with [ON] (with green text AND [OFF] with red text for knife and pistol make them invisible just like players and water When you make players invisible make only your team invisible not the opponent team Hud is to turn on and off hud_draw 1 and hud_draw 0 weather is to turn off snow and rain on the server map (if possible , i only see this on a russian server) Code: #include <amxmodx> #include <engine> #include <fakemeta> #include <hamsandwich> #define MAX_ENTITYS 900+15*32 // (900+15*SERVER_SLOTS) is the calculation cs uses but it can be bypassed by the "-num_edicts <x>"-parameter new bool:g_bPlayerInvisible[33]; new bool:g_bWaterInvisible[33]; new bool:g_bWaterEntity[MAX_ENTITYS]; new bool:g_bWaterFound; new g_iSpectatedId[33]; public plugin_init( ) { register_plugin( "Invis", "2.0", "SchlumPF" ); register_clcmd( "say /invis", "menuInvisDisplay" ); register_menucmd( register_menuid( "\rInvisibility - SchlumPF^n^n" ), 1023, "menuInvisAction" ); register_forward( FM_AddToFullPack, "fwdAddToFullPack_Post", 1 ); RegisterHam( Ham_Spawn, "player", "hamSpawnPlayer_Post", 1 ); register_event( "SpecHealth2", "eventSpecHealth2", "bd" ); } public plugin_cfg( ) { new ent = -1; while( ( ent = find_ent_by_class( ent, "func_water" ) ) != 0 ) { // pev( ent, pev_skin ) == CONTENTS_WATER is also true on func_water entities if( !g_bWaterFound ) { g_bWaterFound = true; } g_bWaterEntity[ent] = true; } // thanks to connor for finding the following two detections ent = -1; while( ( ent = find_ent_by_class( ent, "func_illusionary" ) ) != 0 ) { if( pev( ent, pev_skin ) == CONTENTS_WATER ) { if( !g_bWaterFound ) { g_bWaterFound = true; } g_bWaterEntity[ent] = true; } } ent = -1; while( ( ent = find_ent_by_class( ent, "func_conveyor" ) ) != 0 ) { if( pev( ent, pev_spawnflags ) == 3 ) { if( !g_bWaterFound ) { g_bWaterFound = true; } g_bWaterEntity[ent] = true; } } } public fwdAddToFullPack_Post( es_handle, e, ent, host, hostflags, player, pset ) { if( player && g_bPlayerInvisible[host] && host != ent && ent != g_iSpectatedId[host] ) { static const Float:corner[8][3] = { { -4096.0, -4096.0, -4096.0 }, { -4096.0, -4096.0, 4096.0 }, { -4096.0, 4096.0, -4096.0 }, { -4096.0, 4096.0, 4096.0 }, { 4096.0, -4096.0, -4096.0 }, { 4096.0, -4096.0, 4096.0 }, { 4096.0, 4096.0, -4096.0 }, { 4096.0, 4096.0, 4096.0 } }; // rounded; distance from the map's center to the corners; sqrt( 4096^2 + 4096^2 + 4096^2 ) static const Float:map_distance = 7094.480108; static Float:origin[3]; get_es( es_handle, ES_Origin, origin ); static i; while( get_distance_f( origin, corner[i] ) > map_distance ) { if( ++i >= sizeof( corner ) ) { // better to nullify the varibale now then doing it each time before the loop i = 0; } } set_es( es_handle, ES_Origin, corner[i] ); set_es( es_handle, ES_Effects, get_es( es_handle, ES_Effects ) | EF_NODRAW ); } else if( g_bWaterInvisible[host] && g_bWaterEntity[ent]) { set_es( es_handle, ES_Effects, get_es( es_handle, ES_Effects ) | EF_NODRAW ); } } public hamSpawnPlayer_Post( id ) { g_iSpectatedId[id] = 0; } // thanks to xPaw who told me about this event public eventSpecHealth2( id ) { g_iSpectatedId[id] = read_data( 2 ); } public menuInvisDisplay( id ) { static menu[256]; new len = formatex( menu, 255, "\rInvisibility - SchlumPF^n^n" ); len += formatex( menu[len], 255 - len, "\r1. \wPlayers: %s^n", g_bPlayerInvisible[id] ? "invisible" : "visible" ); if( g_bWaterFound ) { len += formatex( menu[len], 255 - len, "\r2. \wWater: %s^n", g_bWaterInvisible[id] ? "invisible" : "visible" ); } //else //{ // len += formatex( menu[len], 255 - len, "\r2. \wWater: There is no water on this map!^n" ); //} len += formatex( menu[len], 255 - len, "^n\r0. \wExit" ); show_menu( id, ( 1<<0 | 1<<1 | 1<<9 ), menu, -1 ); return PLUGIN_HANDLED; } public menuInvisAction( id, key ) { switch( key ) { case 0: { g_bPlayerInvisible[id] = !g_bPlayerInvisible[id]; menuInvisDisplay( id ); } case 1: { if( g_bWaterFound ) { g_bWaterInvisible[id] = !g_bWaterInvisible[id]; } menuInvisDisplay( id ); } case 9: show_menu( id, 0, "" ); } } public client_connect( id ) { g_bPlayerInvisible[id] = false; g_bWaterInvisible[id] = false; g_iSpectatedId[id] = 0; } Przeczytaj cały wpis
×
×
  • Dodaj nową pozycję...