/* ================================================================================================ / * * Diablo Mod: * ------------------ * * Need: This compiled and items files * Works with: AMXX ยง Cs 1.6 * * Installation: * ------------------- * Copy script into plugins and edit plugins.ini * Copy item diablo directory into addons/amxmodx * If you amx directory is not called addons/amxmodx/.. just create a new path * * Credits: * ----------------- * Spacedude * Some others back when amx mod started :] * twistedeuphoria * * diablo_xpbonus = Xp on each kill (without bonus) * diablo_durability = Will your item loose durability on damage? And how much each time * diablo_saveitems = Save items when map changes * diablo_spawnchance = 1/x chance to spawn powerup on each roundstart * * Contact: * ----------------- * email: mortengryning@gmail.com * / ================================================================================================= */ new Basepath[128] //Path from Cstrike base directory #include #include #include #include #include #include #include #include #include #include #define RESTORETIME 30.0 //How long from server start can players still get their item trasferred (s) #define MAX 32 //Max number of valid player entities //#define CHEAT 1 //Cheat for testing purposes #define CS_PLAYER_HEIGHT 72.0 #define GLOBAL_COOLDOWN 0.5 #define TASK_GREET 240 #define TASK_HUD 120 #define TASK_HOOK 360 #define MAX_PLAYERS 32 #define BASE_SPEED 245.0 #define GLUTON 95841 new Float:agi=BASE_SPEED new round_status new DemageTake[33] new DemageTake1[33] //new weapon, clip, ammo #define x 0 #define y 1 #define z 2 #define TASK_CHARGE 100 #define TASK_NAME 48424 #define TASK_FLASH_LIGHT 81184 #define TASKID_REVIVE 1337 #define TASKID_RESPAWN 1338 #define TASKID_CHECKRE 1339 #define TASKID_CHECKST 13310 #define TASKID_ORIGIN 13311 #define TASKID_SETUSER 13312 #define KeysKlasy (1<<0)|(1<<1)|(1<<2)|(1<<9) // Keys: 1230 #define keyss (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9) // Keys: 1234567890 #define pev_zorigin pev_fuser4 #define seconds(%1) ((1<<12) * (%1)) #define OFFSET_CAN_LONGJUMP 356 #define MAX_FLASH 15 //pojemnosc barejii maga (sekund) new SOUND_START[] = "items/medshot4.wav" new SOUND_FINISHED[] = "items/smallmedkit2.wav" new SOUND_FAILED[] = "items/medshotno1.wav" new SOUND_EQUIP[] = "items/ammopickup2.wav" enum { ICON_HIDE = 0, ICON_SHOW, ICON_FLASH } new g_haskit[MAX+1] new Float:g_revive_delay[MAX+1] new Float:g_body_origin[MAX+1][3] new bool:g_wasducking[MAX+1] new g_msg_bartime new g_msg_screenfade new g_msg_statusicon new g_msg_clcorpse new cvar_revival_time new cvar_revival_health new cvar_revival_dis new attacker new attacker1 new flashlight[33] new flashbattery[33] new flashlight_r new flashlight_g new flashlight_b new planter new defuser new map_end = 0 // max clip stock const maxClip[31] = { -1, 13, -1, 10, 1, 7, 1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50 }; // max bpammo stock const maxAmmo[31] = { -1, 52, -1, 90, -1, 32, -1, 100, 90, -1, 120, 100, 100, 90, 90, 90, 100, 100, 30, 120, 200, 32, 90, 120, 60, -1, 35, 90, 90, -1, 100 }; new gmsgDeathMsg new gmsgStatusText new gmsgBartimer new gmsgScoreInfo new gmsgHealth new bool:freeze_ended new c4state[33] new c4bombc[33][3] new c4fake[33] new fired[33] new bool:ghost_check new ghosttime[33] new ghoststate[33] new sprite_blood_drop = 0 new sprite_blood_spray = 0 new sprite_gibs = 0 new sprite_white = 0 new sprite_fire = 0 new sprite_beam = 0 new sprite_boom = 0 new sprite_line = 0 new sprite_lgt = 0 new sprite_laser = 0 new sprite_ignite = 0 new sprite_smoke = 0 new player_xp[33] = 0 //Holds players experience new player_lvl[33] = 1 //Holds players level new player_point[33] = 0 //Holds players level points new player_item_id[33] = 0 //Items id new player_item_name[33][128] //The items name new player_intelligence[33] new player_strength[33] new player_agility[33] new Float:player_damreduction[33] new player_dextery[33] new player_class[33] new Float:player_huddelay[33] //Item attributes new player_b_vampire[33] = 1 //Vampyric damage new player_b_damage[33] = 1 //Bonus damage new player_b_money[33] = 1 //Money bonus new player_b_gravity[33] = 1 //Gravity bonus : 1 = best new player_b_inv[33] = 1 //Invisibility bonus new player_b_grenade[33] = 1 //Grenade bonus = 1/chance to kill new player_b_reduceH[33] = 1 //Reduces player health each round start new player_b_theif[33] = 1 //Amount of money to steal new player_b_respawn[33] = 1 //Chance to respawn upon death new player_b_explode[33] = 1 //Radius to explode upon death new player_b_heal[33] = 1 //Ammount of hp to heal each 5 second new player_b_gamble[33] = 1 //Random skill each round : value = vararity new player_b_blind[33] = 1 //Chance 1/Value to blind the enemy new player_b_fireshield[33] = 1 //Protects against explode and grenade bonus new player_b_meekstone[33] = 1 //Ability to lay a fake c4 and detonate new player_b_teamheal[33] = 1 //How many hp to heal when shooting a teammate new player_b_redirect[33] = 1 //How much damage will the player redirect new player_b_fireball[33] = 1 //Ability to shot off a fireball value = radius new player_b_ghost[33] = 1 //Ability to walk through stuff new player_b_eye[33] = 1 //Ability to place camera new player_b_blink[33] = 1 //Ability to get a railgun new player_b_windwalk[33] = 1 //Ability to windwalk away new player_b_usingwind[33] = 1 //Is player using windwalk new player_b_froglegs[33] = 1 //Ability to hold down duck for 4 sec to frog-jump new player_b_silent[33] = 1 //Is player silent new player_b_dagon[33] = 1 //Ability to nuke an opponent new player_b_sniper[33] = 1 //Ability to kill in 1/sniper with scout new player_b_jumpx[33] = 1 //Ability to double jump new player_b_smokehit[33] = 1 //Ability to hit and kill with smoke :] new player_b_extrastats[33] = 1 //Ability to gain extra stats new player_b_firetotem[33] = 1 //Ability to put down a fire totem that explodes after 7 seconds new player_b_hook[33] = 1 //Ability to grap a player a hook him towards you new player_b_darksteel[33] = 1 //Ability to damage double from behind the target new player_b_illusionist[33] = 1 //Ability to use the illusionist escape new player_b_mine[33] = 1 //Ability to lay down mines new skinchanged[33] new player_dc_name[33][99] //Information about last disconnected players name new player_dc_item[33] //Information about last disconnected players item new player_sword[33] //nowyitem new player_ring[33] //ring stats bust +5 ///////////////////////////////////////////////////////////////////// new player_ultra_armor[33] new player_ultra_armor_left[33] ///////////////////////////////////////////////////////////////////// new Float:player_b_oldsen[33] //Players old sens new bool:player_b_dagfired[33] //Fired dagoon? new bool:used_item[33] new jumps[33] //Keeps charge with the number of jumps the user has made new bool:dojump[33] //Are we jumping? new item_boosted[33] //Has this user boosted his item? new earthstomp[33] new bool:falling[33] new gravitytimer[33] new item_durability[33] //Durability of hold item new CTSkins[4][]={"sas","gsg9","urban","gign"} new TSkins[4][]={"arctic","leet","guerilla","terror"} new SWORD_VIEW[] = "models/diablomod/v_knife.mdl" new SWORD_PLAYER[] = "models/diablomod/p_knife.mdl" new KNIFE_VIEW[] = "models/v_knife.mdl" new KNIFE_PLAYER[] = "models/p_knife.mdl" new C4_VIEW[] = "models/v_c4.mdl" new C4_PLAYER[] = "models/p_c4.mdl" new HE_VIEW[] = "models/v_hegrenade.mdl" new HE_PLAYER[] = "models/p_hegrenade.mdl" new FL_VIEW[] = "models/v_flashbang.mdl" new FL_PLAYER[] = "models/p_flashbang.mdl" new SE_VIEW[] = "models/v_smokegrenade.mdl" new SE_PLAYER[] = "models/p_smokegrenade.mdl" new cbow_VIEW[] = "models/diablomod/v_crossbow.mdl" new cvow_PLAYER[]= "models/diablomod/p_crossbow.mdl" new cbow_bolt[] = "models/diablomod/Crossbow_bolt.mdl" new LeaderCT = -1 new LeaderT = -1 new JumpsLeft[33] new JumpsMax[33] new loaded_xp[33] new sqlstart = 30 // Tyle prob jest na mape na poprawne polaczenie - bo cos sie zapetla gdy wylancza sie serwer (zmiena mapy?) new asked_sql[33] new asked_klass[33] new olny_one_time=0 enum { NONE = 0, Mag, Mnich, Paladyn, Zabojca, Nekromanta, Barbarzynca, Ninja, Hunter, Killer, Zombie, Master } new Race[][] = { "None","Mag","Mnich","Paladyn","Zabojca","Nekromanta","Barbarzynca", "Ninja", "Lowca", "Killer", "Zombie", "Master" } new race_heal[13] = { 100,95,150,130,100,90,110,170,120,200,300,500 } new LevelXP[404] = { 0,33,132,297,528,825,1188,1617,2112,2673,3300,3993,4752,5577,6468,7425,8448,9537,10692,11913, 13200,14553,15972,17457,19008,20625,22308,24057,25872,27753,29700,31713,33792,35937,38148,40425,42768,45177,47652,50193, 52800,55473,58212,61017,63888,66825,69828,72897,76032,79233,82500,85833,89232,92697,96228,99825,103488,107217,111012,114873, 118800,122793,126852,130977,135168,139425,143748,148137,152592,157113,161700,166353,171072,175857,180708,185625,190608,195657,200772,205953, 211200,216513,221892,227337,232848,238425,244068,249777,255552,261393,267300,273273,279312,285417,291588,297825,304128,310497,316932,323433, 330000,336633,343332,350097,356928,363825,370788,377817,384912,392073,399300,406593,413952,421377,428868,436425,444048,451737,459492,467313, 475200,483153,491172,499257,507408,515625,523908,532257,540672,549153,557700,566313,574992,583737,592548,601425,610368,619377,628452,637593, 646800,656073,665412,674817,684288,693825,703428,713097,722832,732633,742500,752433,762432,772497,782628,792825,803088,813417,823812,834273, 844800,855393,866052,876777,887568,898425,909348,920337,931392,942513,953700,964953,976272,987657,999108,1010625,1022208,1033857,1045572,1057353, 1069200,1081113,1093092,1105137,1117248,1129425,1141668,1153977,1166352,1178793,1191300,1203873,1216512,1229217,1241988,1254825,1267728,1280697,1293732,1306833, 1320000,1333233,1346532,1359897,1373328,1386825,1400388,1414017,1427712,1441473,1455300,1469193,1483152,1497177,1511268,1525425,1539648,1553937,1568292,1582713, 1597200,1611753,1626372,1641057,1655808,1670625,1685508,1700457,1715472,1730553,1745700,1760913,1776192,1791537,1806948,1822425,1837968,1853577,1869252,1884993, 1900800,1916673,1932612,1948617,1964688,1980825,1997028,2013297,2029632,2046033,2062500,2079033,2095632,2112297,2129028,2145825,2162688,2179617,2196612,2213673, 2230800,2247993,2265252,2282577,2299968,2317425,2334948,2352537,2370192,2387913,2405700,2423553,2441472,2459457,2477508,2495625,2513808,2532057,2550372,2568753, 2587200,2605713,2624292,2642937,2661648,2680425,2699268,2718177,2737152,2756193,2775300,2794473,2813712,2833017,2852388,2871825,2891328,2910897,2930532,2950233, 2970000,2989833,3009732,3029697,3049728,3069825,3089988,3110217,3130512,3150873,3171300,3191793,3212352,3232977,3253668,3274425,3295248,3316137,3337092,3358113, 3379200,3400353,3421572,3442857,3464208,3485625,3507108,3528657,3550272,3571953,3593700,3615513,3637392,3659337,3681348,3703425,3725568,3747777,3770052,3792393, 3814800,3837273,3859812,3882417,3905088,3927825,3950628,3973497,3996432,4019433,4042500,4065633,4088832,4112097,4135428,4158825,4182288,4205817,4229412,4253073, 4276800,4300593,4324452,4348377,4372368,4396425,4420548,4444737,4468992,4493313,4517700,4542153,4566672,4591257,4615908,4640625,4665408,4690257,4715172,4740153, 4765200,4790313,4815492,4840737,4866048,4891425,4916868,4942377,4967952,4993593,5019300,5045073,5070912,5096817,5122788,5148825,5174928,5201097,5227332,5253633, 5280000,5306433,5332932,1073741824} new player_class_lvl[33][13] new player_class_lvl_save[33] new player_xp_old[33] new database_user_created[33] new srv_avg[13] = {1,1,1,1,1,1,1,1,1,1,1,1} //For Hook and powerup sy new hooked[33] new Float:player_global_cooldown[33] //For optimization new last_update_xp[33] new Float:last_update_perc[33] new bool:use_addtofullpack #define ICON_HIDE 0 #define ICON_SHOW 1 #define ICON_FLASH 2 #define ICON_S "suithelmet_full" new wear_sun[33] //Flags a user can have enum { Flag_Ignite = 0, Flag_Hooking, Flag_Rot, Flag_Dazed, Flag_Illusion, Flag_Moneyshield, Flag_Teamshield, Flag_Teamshield_Target, num_of_flags } //Flags new afflicted[33][num_of_flags] //noze new max_knife[33] new player_knife[33] new Float:tossdelay[33] //luk new Float:bowdelay[33] new bow[33] new button[33] // hunter - slad #define TARACE_TASK 91203 new trace_bool[33] #define NADE_VELOCITY EV_INT_iuser1 #define NADE_ACTIVE EV_INT_iuser2 #define NADE_TEAM EV_INT_iuser3 #define NADE_PAUSE EV_INT_iuser4 new cvar_throw_vel = 90 // def: 90 new cvar_activate_dis = 175 // def 190 new cvar_nade_vel = 280 //def 280 new Float: cvar_explode_delay = 0.5 // def 0.50 new g_TrapMode[33] new g_GrenadeTrap[33] = {0, ... } new Float:g_PreThinkDelay[33] new Float:gfBlockSizeMin1[3]= {-32.0,-4.0,-32.0}; new Float:gfBlockSizeMax1[3]= { 32.0, 4.0, 32.0}; new Float:vAngles1[3] = {90.0,90.0,0.0} new Float:gfBlockSizeMin2[3]= {-4.0,-32.0,-32.0} new Float:gfBlockSizeMax2[3]= { 4.0, 32.0, 32.0} new Float:vAngles2[3] = {90.0,0.0,0.0} new casting[33] new Float:cast_end[33] new on_knife[33] new golden_bulet[33] new ultra_armor[33] new after_bullet[33] new num_shild[33] new invisible_cast[33] new player_dmg[33] /* PLUGIN CORE REDIRECTING TO FUNCTIONS ========================================================== */ // SQL // new Handle:g_SqlTuple new g_sqlTable[64] = "dbmod_tables" new g_boolsqlOK=0 // SQL // public plugin_init() { new map[32] get_mapname(map,31) new times[64] get_time("%m/%d/%Y - %H:%M:%S" ,times,63) log_to_file("addons/amxmodx/logs/diablo.log","%s ### MAPA: %s ### ",times,map) register_cvar("diablo_sql_host","localhost",FCVAR_PROTECTED) register_cvar("diablo_sql_user","root",FCVAR_PROTECTED) register_cvar("diablo_sql_pass","root",FCVAR_PROTECTED) register_cvar("diablo_sql_database","dbmod",FCVAR_PROTECTED) register_cvar("diablo_sql_table","dbmod_tablet",FCVAR_PROTECTED) register_cvar("diablo_sql_save","0",FCVAR_PROTECTED) // 0 - nick // 1 - ip // 2 - steam id register_cvar("diablo_classes", "abcdefghiklm") // a Mag // b Paladyn // c Mnich // d Zabojca // e Barbarzynca // f Nekromanta // g Ninja // h Hunter register_cvar("diablo_avg", "1") cvar_revival_time = register_cvar("amx_revkit_time", "3") cvar_revival_health = register_cvar("amx_revkit_health", "25") cvar_revival_dis = register_cvar("amx_revkit_distance", "70.0") g_msg_bartime = get_user_msgid("BarTime") g_msg_clcorpse = get_user_msgid("ClCorpse") g_msg_screenfade= get_user_msgid("ScreenFade") g_msg_statusicon= get_user_msgid("StatusIcon") register_message(g_msg_clcorpse, "message_clcorpse") register_event("HLTV", "event_hltv", "a", "1=0", "2=0") register_forward(FM_Touch, "fwd_touch") register_forward(FM_EmitSound, "fwd_emitsound") register_forward(FM_PlayerPostThink, "fwd_playerpostthink") register_plugin("DiabloMod","5.9i PL","Miczu & GuTeK") register_cvar("diablomod_version","5.9i PL",FCVAR_SERVER) register_cvar("flashlight_custom","1"); register_cvar("flashlight_drain","1.0"); register_cvar("flashlight_charge","0.5"); register_cvar("flashlight_radius","8"); register_cvar("flashlight_decay","90"); register_event("Flashlight","event_flashlight","b"); register_event("CurWeapon","CurWeapon","be") register_event("ResetHUD", "ResetHUD", "abe") register_event("ScreenFade","det_fade","be","1!0","2!0","7!0") register_event("DeathMsg","DeathMsg","ade") register_event("Damage", "Damage", "b", "2!0") register_event("SendAudio","freeze_over","b","2=%!MRAD_GO","2=%!MRAD_MOVEOUT","2=%!MRAD_LETSGO","2=%!MRAD_LOCKNLOAD") register_event("SendAudio","freeze_begin","a","2=%!MRAD_terwin","2=%!MRAD_ctwin","2=%!MRAD_rounddraw") register_event("SendAudio", "award_defuse", "a", "2&%!MRAD_BOMBDEF") register_event("BarTime", "bomb_defusing", "be", "1=10", "1=5") register_logevent("award_plant", 3, "2=Planted_The_Bomb"); register_event("StatusIcon", "got_bomb", "be", "1=1", "1=2", "2=c4") register_event("TextMsg", "award_hostageALL", "a", "2&#All_Hostages_R" ); register_event("TextMsg","host_killed","b","2&#Killed_Hostage") register_event("SendAudio","eventGrenade","bc","2=%!MRAD_FIREINHOLE") register_event("TextMsg", "freeze_begin", "a", "2=#Game_will_restart_in") register_event("SendAudio", "TTWin", "a", "2&%!MRAD_terwin") register_event("SendAudio", "CTWin", "a", "2&%!MRAD_ctwin") register_clcmd("say drop","dropitem") register_clcmd("say /drop","dropitem") register_clcmd("say /przedmiot","iteminfo") register_clcmd("say /item","iteminfo") register_clcmd("say /noweitemy","show_menu_item") register_clcmd("say /itemy","show_menu_item") register_clcmd("przedmiot","iteminfo") register_clcmd("/przedmiot","iteminfo") register_clcmd("say /przedmiot","iteminfo") register_clcmd("say /Pomoc","helpme") register_clcmd("say /Klasa","changerace") register_clcmd("say /speed","speed") register_clcmd("say klasa","changerace") register_clcmd("say /gracze","cmd_who") register_clcmd("klasa","changerace") register_clcmd("say /klasa","changerace") register_clcmd("say /klasy","show_menu_klasy") register_clcmd("say /zmianaklasy","changerace") register_clcmd("say zmianaklasy","changerace") register_clcmd("say /czary", "showskills") register_clcmd("say czary", "showskills") register_clcmd("say /menu","showmenu") register_clcmd("menu","showmenu") register_clcmd("say /komendy","komendy") register_clcmd("pomoc","helpme") register_clcmd("say /rune","buyrune") register_clcmd("/rune","buyrune") register_clcmd("rune","buyrune") register_clcmd("/czary","showskills") register_clcmd("/czary","showskills") register_clcmd("say /czary","showskills") register_clcmd("say /czary","showskills") register_clcmd("say /savexp","savexpcom") //register_clcmd("say /loadxp","LoadXP") register_clcmd("say /reset","reset_skill") register_clcmd("reset","reset_skill") register_clcmd("/reset","reset_skill") register_clcmd("mod","mod_info") register_menucmd(register_menuid("Wybierz Staty"), 1023, "skill_menu") register_menucmd(register_menuid("info klas"), 1023, "klasy") register_menucmd(register_menuid("Opcje"), 1023, "option_menu") register_menucmd(register_menuid("Wybierz Klase"), 1023, "select_class_menu") register_menucmd(register_menuid("Sklep z runami"), 1023, "select_rune_menu") register_menucmd(register_menuid("Nowe Itemy"), 1023, "nowe_itemy") register_menucmd(register_menuid("Klasy"), KeysKlasy, "PressedKlasy") gmsgDeathMsg = get_user_msgid("DeathMsg") gmsgStatusText = get_user_msgid("StatusText") gmsgBartimer = get_user_msgid("BarTime") gmsgScoreInfo = get_user_msgid("ScoreInfo") register_cvar("diablo_dmg_exp","20",0) register_cvar("diablo_xpbonus","5",0) register_cvar("diablo_xpbonus2","100",0) register_cvar("diablo_xpbonus3","30",0) register_cvar("diablo_durability","10",0) register_cvar("SaveXP", "1") set_msg_block ( gmsgDeathMsg, BLOCK_SET ) set_task(5.0, "Timed_Healing", 0, "", 0, "b") set_task(1.0, "Timed_Ghost_Check", 0, "", 0, "b") set_task(0.8, "UpdateHUD",0,"",0,"b") register_think("PlayerCamera","Think_PlayerCamera"); register_think("PowerUp","Think_PowerUp") register_think("Effect_Rot","Effect_Rot_Think") register_logevent("RoundStart", 2, "0=World triggered", "1=Round_Start") register_clcmd("fullupdate","fullupdate") register_clcmd("amx_giveexp","CmdGiveExp",ADMIN_IMMUNITY,"Uzycie amx_giveexp ") register_clcmd("amx_giveitem", "giveitem", ADMIN_IMMUNITY, "Uzycie 255) { message_begin( MSG_ONE, gmsgHealth, {0,0,0}, id ) write_byte( 255 ) message_end() } } } public speed(id) { new Float:spd = get_user_maxspeed(id) client_print(id,print_chat,"Max: %f",spd) new Float:vect[3] entity_get_vector(id,EV_VEC_velocity,vect) new Float: sped= floatsqroot(vect[0]*vect[0]+vect[1]*vect[1]+vect[2]*vect[2]) client_print(id,print_chat,"Teraz: %f",sped) } public plugin_precache() { precache_model("models/rpgrocket.mdl") precache_model("models/bag.mdl") precache_model("models/zombie.mdl") precache_model("addons/amxmodx/diablo/mine.mdl") precache_model("addons/amxmodx/diablo/totem_ignite.mdl") precache_model("addons/amxmodx/diablo/totem_heal.mdl") precache_model("models/player/arctic/arctic.mdl") precache_model("models/player/leet/leet.mdl") precache_model("models/player/guerilla/guerilla.mdl") precache_model("models/player/terror/terror.mdl") precache_model("models/player/urban/urban.mdl") precache_model("models/player/sas/sas.mdl") precache_model("models/player/gsg9/gsg9.mdl") precache_model("models/player/gign/gign.mdl") precache_model(SWORD_VIEW) precache_model(SWORD_PLAYER) precache_model(KNIFE_VIEW) precache_model(KNIFE_PLAYER) precache_model(C4_VIEW) precache_model(C4_PLAYER) precache_model(HE_VIEW) precache_model(HE_PLAYER) precache_model(FL_VIEW) precache_model(FL_PLAYER) precache_model(SE_VIEW) precache_model(SE_PLAYER) precache_sound("weapons/xbow_hit2.wav") precache_sound("weapons/xbow_fire1.wav") sprite_blood_drop = precache_model("sprites/blood.spr") sprite_blood_spray = precache_model("sprites/bloodspray.spr") sprite_ignite = precache_model("addons/amxmodx/diablo/flame.spr") sprite_smoke = precache_model("sprites/steam1.spr") sprite_laser = precache_model("sprites/laserbeam.spr") sprite_boom = precache_model("sprites/zerogxplode.spr") sprite_line = precache_model("sprites/dot.spr") sprite_lgt = precache_model("sprites/lgtning.spr") sprite_white = precache_model("sprites/white.spr") sprite_fire = precache_model("sprites/explode1.spr") sprite_gibs = precache_model("models/hgibs.mdl") sprite_beam = precache_model("sprites/zbeam4.spr") precache_model("models/player/arctic/arctic.mdl") precache_model("models/player/terror/terror.mdl") precache_model("models/player/leet/leet.mdl") precache_model("models/player/guerilla/guerilla.mdl") precache_model("models/player/gign/gign.mdl") precache_model("models/player/sas/sas.mdl") precache_model("models/player/gsg9/gsg9.mdl") precache_model("models/player/urban/urban.mdl") precache_model("models/player/vip/vip.mdl") precache_sound(SOUND_START) precache_sound(SOUND_FINISHED) precache_sound(SOUND_FAILED) precache_sound(SOUND_EQUIP) precache_sound("weapons/knife_hitwall1.wav") precache_sound("weapons/knife_hit4.wav") precache_sound("weapons/knife_deploy1.wav") precache_model("models/diablomod/w_throwingknife.mdl") precache_model("models/diablomod/bm_block_platform.mdl") precache_model(cbow_VIEW) precache_model(cvow_PLAYER) precache_model(cbow_bolt) } public plugin_cfg() { server_cmd("sv_maxspeed 1500") } public savexpcom(id) { if(get_cvar_num("SaveXP") == 1 && player_class[id]!=0 && player_class_lvl[id][player_class[id]]==player_lvl[id] ) { SubtractStats(id,player_b_extrastats[id]) SubtractRing(id) SaveXP(id) BoostStats(id,player_b_extrastats[id]) BoostRing(id) } } public SaveXP(id) { if(g_boolsqlOK) { if(!is_user_bot(id) && player_xp[id]!=player_xp_old[id]) { new name[64] new ip[64] new sid[64] get_user_name(id,name,63) replace_all ( name, 63, "'", "Q" ) replace_all ( name, 63, "`", "Q" ) get_user_ip(id, ip ,63,1) get_user_authid(id, sid ,63) if(get_cvar_num("diablo_sql_save")==0) { new q_command[512] format(q_command,511,"UPDATE `%s` SET `ip`='%s',`sid`='%s',`lvl`='%i',`exp`='%i',`str`='%i',`int`='%i',`dex`='%i',`agi`='%i' WHERE `nick`='%s' AND `klasa`='%i' ",g_sqlTable,ip,sid,player_lvl[id],player_xp[id],player_strength[id],player_intelligence[id],player_dextery[id],player_agility[id],name,player_class[id]) SQL_ThreadQuery(g_SqlTuple,"Save_xp_handle",q_command) } else if(get_cvar_num("diablo_sql_save")==1) { new q_command[512] format(q_command,511,"UPDATE `%s` SET `nick`='%s',`sid`='%s',`lvl`='%i',`exp`='%i',`str`='%i',`int`='%i',`dex`='%i',`agi`='%i' WHERE `ip`='%s' AND `klasa`='%i' ",g_sqlTable,name,sid,player_lvl[id],player_xp[id],player_strength[id],player_intelligence[id],player_dextery[id],player_agility[id],ip,player_class[id]) SQL_ThreadQuery(g_SqlTuple,"Save_xp_handle",q_command) } else if(get_cvar_num("diablo_sql_save")==2) { new q_command[512] format(q_command,511,"UPDATE `%s` SET `nick`='%s',`ip`='%s',`lvl`='%i',`exp`='%i',`str`='%i',`int`='%i',`dex`='%i',`agi`='%i' WHERE `sid`='%s' AND `klasa`='%i' ",g_sqlTable,name,ip,player_lvl[id],player_xp[id],player_strength[id],player_intelligence[id],player_dextery[id],player_agility[id],sid,player_class[id]) SQL_ThreadQuery(g_SqlTuple,"Save_xp_handle",q_command) } player_xp_old[id]=player_xp[id] } } else sql_start() return PLUGIN_HANDLED } public Save_xp_handle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { if(Errcode) { log_to_file("addons/amxmodx/logs/diablo.log","Error on Save_xp query: %s",Error) } if(FailState == TQUERY_CONNECT_FAILED) { log_to_file("addons/amxmodx/logs/diablo.log","Could not connect to SQL database.") return PLUGIN_CONTINUE } else if(FailState == TQUERY_QUERY_FAILED) { log_to_file("addons/amxmodx/logs/diablo.log","Save_xp Query failed.") return PLUGIN_CONTINUE } return PLUGIN_CONTINUE } public LoadXP(id, klasa){ if(is_user_bot(id) || asked_sql[id]==1) return PLUGIN_HANDLED if(player_class[id]==0)load_xp(id) if(g_boolsqlOK ) { new name[64] new data[2] data[0]=id data[1]=klasa if(get_cvar_num("diablo_sql_save")==0) { get_user_name(id,name,63) replace_all ( name, 63, "'", "Q" ) replace_all ( name, 63, "`", "Q" ) new q_command[512] format(q_command,511,"SELECT * FROM `%s` WHERE `nick`='%s' AND `klasa`='%i'", g_sqlTable, name, player_class[id]) SQL_ThreadQuery(g_SqlTuple,"Load_xp_handle",q_command,data,2) asked_sql[id]=1 } else if(get_cvar_num("diablo_sql_save")==1) { get_user_ip(id, name ,63,1) new q_command[512] format(q_command,511,"SELECT * FROM `%s` WHERE `ip`='%s' AND `klasa`='%i'", g_sqlTable, name, player_class[id]) SQL_ThreadQuery(g_SqlTuple,"Load_xp_handle",q_command,data,2) asked_sql[id]=1 } else if(get_cvar_num("diablo_sql_save")==2) { get_user_authid(id, name ,63) new q_command[512] format(q_command,511,"SELECT * FROM `%s` WHERE `sid`='%s' AND `klasa`='%i'", g_sqlTable, name, player_class[id]) SQL_ThreadQuery(g_SqlTuple,"Load_xp_handle",q_command,data,2) asked_sql[id]=1 } } else sql_start() return PLUGIN_HANDLED } public Load_xp_handle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { new id = Data[0] asked_sql[id]=0 if(Errcode) { log_to_file("addons/amxmodx/logs/diablo.log","Error on Load_xp query: %s",Error) } if(FailState == TQUERY_CONNECT_FAILED) { log_to_file("addons/amxmodx/logs/diablo.log","Could not connect to SQL database.") return PLUGIN_CONTINUE } else if(FailState == TQUERY_QUERY_FAILED) { log_to_file("addons/amxmodx/logs/diablo.log","Load_xp Query failed.") return PLUGIN_CONTINUE } if(SQL_MoreResults(Query)) { player_class[id] = Data[1] player_lvl[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"lvl")) player_xp[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"exp")) player_xp_old[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"exp")) player_intelligence[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"int")) player_strength[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"str")) player_agility[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"agi")) player_dextery[id] = SQL_ReadResult(Query,SQL_FieldNameToNum(Query,"dex")) player_point[id]=(player_lvl[id]-1)*2-player_intelligence[id]-player_strength[id]-player_dextery[id]-player_agility[id] if(player_point[id]<0) player_point[id]=0 player_damreduction[id] = (47.3057*(1.0-floatpower( 2.7182, -0.06798*float(player_agility[id])))/100) } return PLUGIN_CONTINUE } public LoadAVG() { if(g_boolsqlOK) { new data[2] data[0]= get_cvar_num("diablo_avg") if(data[0]) { for(new i=1;i<13;i++) { new q_command[512] data[1]=i //format(q_command,511,"SELECT AVG(`lvl`) FROM `%s` WHERE `lvl` > '%d' AND `klasa`='%d'", g_sqlTable, data[0]-1,i) format(q_command,511,"SELECT `klasa`,AVG(`lvl`) AS `AVG` FROM `%s` WHERE `lvl` > '%d' GROUP BY `klasa`", g_sqlTable, data[0]-1) SQL_ThreadQuery(g_SqlTuple,"Load_AVG_handle",q_command,data,2) } } } else sql_start() return PLUGIN_HANDLED } public Load_AVG_handle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { if(Errcode) { log_to_file("addons/amxmodx/logs/diablo.log","Error on Load_AVG query: %s",Error) } if(FailState == TQUERY_CONNECT_FAILED) { log_to_file("addons/amxmodx/logs/diablo.log","Could not connect to SQL database.") return PLUGIN_CONTINUE } else if(FailState == TQUERY_QUERY_FAILED) { log_to_file("addons/amxmodx/logs/diablo.log","Load_AVG Query failed.") return PLUGIN_CONTINUE } /* if(SQL_MoreResults(Query)) { new Float: avg SQL_ReadResult(Query, 0, avg) srv_avg[Data[1]]=floatround(avg) //client_print(0,print_chat,"srednia: %f",srv_avg) }*/ while(SQL_MoreResults(Query)) { new i = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "klasa")) srv_avg[i] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "AVG")) SQL_NextRow(Query) } if(olny_one_time==0) { olny_one_time=1 look_for_none() } return PLUGIN_CONTINUE } public look_for_none() { for(new i=1;i<33;i++) { if(is_user_alive(i)) { if(player_class[i]==0) { select_class_query(i) } } } } public reset_skill(id) { client_print(id,print_chat,"Reset skill'ow") player_point[id] = player_lvl[id]*2-2 player_intelligence[id] = 0 player_strength[id] = 0 player_agility[id] = 0 player_dextery[id] = 0 BoostRing(id) BoostStats(id,player_b_extrastats[id]) skilltree(id) set_speedchange(id) player_damreduction[id] = (47.3057*(1.0-floatpower( 2.7182, -0.06798*float(player_agility[id])))/100) } public freeze_over() { //new Float: timea //timea=get_cvar_float("diablo_klass_delay") set_task(get_cvar_float("diablo_klass_delay"), "freezeover", 3659, "", 0, "") } public freezeover() { freeze_ended = true } public freeze_begin() { freeze_ended = false } public RoundStart(){ for (new i=0; i < 33; i++){ used_item[i] = false DemageTake1[i]=1 count_jumps(i) give_knife(i) JumpsLeft[i]=JumpsMax[i] RemoveFlag(i,Flag_Rot) // usuwamy swiecenie if(player_class[i] == Nekromanta) g_haskit[i]=1 else g_haskit[i]=0 golden_bulet[i]=0 invisible_cast[i]=0 ultra_armor[i]=0 num_shild[i]=2+floatround(player_intelligence[i]/25.0,floatround_floor) set_renderchange(i) if(is_user_connected(i)&&player_item_id[i]==66) { changeskin(i,0) } } kill_all_entity("throwing_knife") Bot_Setup() ghost_check = false check_class() use_addtofullpack = false } #if defined CHEAT public giveitem(id) { award_item(id, 25) return PLUGIN_HANDLED } public benchmark(id) { new Float:nowtime = halflife_time(); new iterations = 10 for (new i=0; i < iterations; i++) { UpdateHUD() } new Float:timespent = halflife_time()-nowtime client_print(id,print_chat,"Benchmark on: UpdateHUD() with %i iterations done in %f seconds",iterations,timespent) } #endif /* BASIC FUNCTIONS ================================================================================ */ public csw_c44(id) { client_cmd(id,"weapon_knife") engclient_cmd(id,"weapon_knife") on_knife[id]=1 } public CurWeapon(id) { after_bullet[id]=1 new clip,ammo new weapon=get_user_weapon(id,clip,ammo) invisible_cast[id]=0 if(weapon == CSW_KNIFE) on_knife[id]=1 else on_knife[id]=0 if ((weapon != CSW_C4 ) && !on_knife[id] && (player_class[id] == Ninja)) { client_cmd(id,"weapon_knife") engclient_cmd(id,"weapon_knife") on_knife[id]=1 } if (is_user_connected(id)) { //if (player_item_id[id] == 17 || player_b_usingwind[id] == 1)// engclient_cmd(id,"weapon_knife") if(player_sword[id] == 1) { if(on_knife[id]){ entity_set_string(id, EV_SZ_viewmodel, SWORD_VIEW) entity_set_string(id, EV_SZ_weaponmodel, SWORD_PLAYER) } if(weapon == CSW_C4){ entity_set_string(id, EV_SZ_viewmodel, C4_VIEW) entity_set_string(id, EV_SZ_weaponmodel, C4_PLAYER) } if(weapon == CSW_HEGRENADE){ entity_set_string(id, EV_SZ_viewmodel, HE_VIEW) entity_set_string(id, EV_SZ_weaponmodel, HE_PLAYER) } if(weapon == CSW_FLASHBANG){ entity_set_string(id, EV_SZ_viewmodel, FL_VIEW) entity_set_string(id, EV_SZ_weaponmodel, FL_PLAYER) } if(weapon == CSW_SMOKEGRENADE){ entity_set_string(id, EV_SZ_viewmodel, SE_VIEW) entity_set_string(id, EV_SZ_weaponmodel, SE_PLAYER) } } if(player_sword[id] == 0) { if(on_knife[id]){ entity_set_string(id, EV_SZ_viewmodel, KNIFE_VIEW) entity_set_string(id, EV_SZ_weaponmodel, KNIFE_PLAYER) } if(weapon == CSW_C4){ entity_set_string(id, EV_SZ_viewmodel, C4_VIEW) entity_set_string(id, EV_SZ_weaponmodel, C4_PLAYER) } if(weapon == CSW_HEGRENADE){ entity_set_string(id, EV_SZ_viewmodel, HE_VIEW) entity_set_string(id, EV_SZ_weaponmodel, HE_PLAYER) } if(weapon == CSW_FLASHBANG){ entity_set_string(id, EV_SZ_viewmodel, FL_VIEW) entity_set_string(id, EV_SZ_weaponmodel, FL_PLAYER) } if(weapon == CSW_SMOKEGRENADE){ entity_set_string(id, EV_SZ_viewmodel, SE_VIEW) entity_set_string(id, EV_SZ_weaponmodel, SE_PLAYER) } } if(bow[id]==1) { bow[id]=0 if(on_knife[id]) { entity_set_string(id, EV_SZ_viewmodel, KNIFE_VIEW) entity_set_string(id, EV_SZ_weaponmodel, KNIFE_PLAYER) } } set_gravitychange(id) set_speedchange(id) set_renderchange(id) if(player_class[id] == Nekromanta) g_haskit[id] = true else g_haskit[id] = false write_hud(id) } } public ResetHUD(id) { if (is_user_connected(id)) { remove_task(id+GLUTON) change_health(id,999,0,"") if (c4fake[id] > 0) { remove_entity(c4fake[id]) c4fake[id] = 0 } SubtractStats(id,player_b_extrastats[id]) SubtractRing(id) if ((player_intelligence[id]+player_strength[id]+player_agility[id]+player_dextery[id])>(player_lvl[id]*2)) reset_skill(id) BoostStats(id,player_b_extrastats[id]) BoostRing(id) fired[id] = 0 player_ultra_armor_left[id]=player_ultra_armor[id] player_b_dagfired[id] = false ghoststate[id] = 0 earthstomp[id] = 0 if (player_b_blink[id] > 0) player_b_blink[id] = 1 if (player_b_usingwind[id] > 0) { player_b_usingwind[id] = 0 } if (player_point[id] > 0 ) skilltree(id) if (player_class[id] == 0) select_class_query(id) add_bonus_gamble(id) //MUST be first c4state[id] = 0 client_cmd(id,"hud_centerid 0") auto_help(id) add_money_bonus(id) set_gravitychange(id) add_redhealth_bonus(id) SelectBotRace(id) set_renderchange(id) } } public DeathMsg(id) { new weaponname[20] new kid = read_data(1) new vid = read_data(2) new headshot = read_data(3) read_data(4,weaponname,31) reset_player(vid) msg_bartime(id, 0) static Float:minsize[3] pev(vid, pev_mins, minsize) if(minsize[2] == -18.0) g_wasducking[vid] = true else g_wasducking[vid] = false set_task(0.5, "task_check_dead_flag", vid) flashbattery[vid] = MAX_FLASH; flashlight[vid] = 0; if(player_sword[id] == 1){ if(on_knife[id]){ if(get_user_team(kid) != get_user_team(vid)) { set_user_frags(kid, get_user_frags(kid) + 1) award_kill(kid,vid) } } } if (is_user_connected(kid) && is_user_connected(vid) && get_user_team(kid) != get_user_team(vid)) { show_deadmessage(kid,vid,headshot,weaponname) award_item(kid,0) award_kill(kid,vid) add_respawn_bonus(vid) add_bonus_explode(vid) add_barbarian_bonus(kid) if (player_class[kid] == Barbarzynca) refill_ammo(kid) set_renderchange(kid) savexpcom(vid) } } public Damage(id) { if (is_user_connected(id)) { new weapon new bodypart if(get_user_attacker(id,weapon,bodypart)!=0) { new damage = read_data(2) new attacker_id = get_user_attacker(id,weapon,bodypart) if (is_user_connected(attacker_id) && attacker_id != id) { if(get_user_team(id) != get_user_team(attacker_id)) { if(damage>175) player_dmg[attacker_id]+=damage/2 else player_dmg[attacker_id]+=damage dmg_exp(attacker_id) } add_damage_bonus(id,damage,attacker_id) add_vampire_bonus(id,damage,attacker_id) add_grenade_bonus(id,attacker_id,weapon) add_theif_bonus(id,attacker_id) add_bonus_blind(id,attacker_id,weapon,damage) add_bonus_redirect(id) add_bonus_necromancer(attacker_id,id) add_bonus_scoutdamage(attacker_id,id,weapon) add_bonus_darksteel(attacker_id,id,damage) add_bonus_illusion(attacker_id,id,weapon) item_take_damage(id,damage) if(player_sword[attacker_id] == 1 && weapon==CSW_KNIFE ){ change_health(id,-35,attacker_id,"world") } if (HasFlag(attacker_id,Flag_Ignite)) RemoveFlag(attacker_id,Flag_Ignite) if((HasFlag(id,Flag_Illusion) || HasFlag(id,Flag_Teamshield))&& get_user_health(id) - damage > 0) { new weaponname[32]; get_weaponname( weapon, weaponname, 31 ); replace(weaponname, 31, "weapon_", "") UTIL_Kill(attacker_id,id,weaponname) } if (HasFlag(id,Flag_Moneyshield)) { change_health(id,damage/2,0,"") } //Add the agility damage reduction, around 45% the curve flattens if (damage > 0 && player_agility[id] > 0) { new heal = floatround(player_damreduction[id]*damage) if (is_user_alive(id)) change_health(id,heal,0,"") } if (HasFlag(id,Flag_Teamshield_Target)) { //Find the owner of the shield new owner = find_owner_by_euser(id,"Effect_Teamshield") new weaponname[32]; get_weaponname( weapon, weaponname, 31 ); replace(weaponname, 31, "weapon_", "") if (is_user_alive(owner)) { change_health(attacker_id,-damage,owner,weaponname) change_health(id,damage/2,0,"") } } } #if defined CHEAT new name[32] get_user_name(id,name,31) if (equal(name,"Admin")) { change_health(id,999,0,"") set_user_hitzones(0, id, 0) } #endif if(attacker_id<1 || attacker_id>32) return new clip,ammo new weapon = get_user_weapon(attacker_id,clip,ammo) if((attacker_id!=id)&&player_class[attacker] == Mag) { if(weapon == CSW_GLOCK18 || weapon == CSW_USP || weapon == CSW_P228 || weapon == CSW_DEAGLE || weapon == CSW_ELITE || weapon == CSW_FIVESEVEN) { agi=(BASE_SPEED / 2) set_speedchange(id) if(DemageTake[id]==0) { DemageTake[id]=1 set_task(11.0, "funcReleaseVic", id) set_task(11.0, "funcReleaseVic2", id) set_task(2.0, "funcDemageVic", id+GLUTON) } } } if(is_user_connected(attacker_id)&&(attacker_id!=id)&&player_class[attacker] == Zabojca) { if(weapon == CSW_GLOCK18 || weapon == CSW_USP || weapon == CSW_P228 || weapon == CSW_DEAGLE || weapon == CSW_ELITE || weapon == CSW_FIVESEVEN) { set_task(1.5, "funcDemageVic3", id) } } if(is_user_connected(attacker_id)&&(attacker_id!=id)&&player_class[attacker] == Hunter) { if(weapon == CSW_GLOCK18 || weapon == CSW_USP || weapon == CSW_P228 || weapon == CSW_DEAGLE || weapon == CSW_ELITE || weapon == CSW_FIVESEVEN) { new ori[3] trace_bool[attacker]=id get_user_origin(id,ori) new parms[5]; for(new i=0;i<3;i++) { parms[i] = ori[i] } parms[3]=attacker parms[4]=id set_task(0.5,"charge_hunter",attacker,parms,5) } } } } } public un_rander(task_id) { new id = task_id - TASK_FLASH_LIGHT if(is_user_connected(id)) set_renderchange(id) } public client_PreThink ( id ) { new clip,ammo new weapon = get_user_weapon(id,clip,ammo) new button2 = get_user_button(id); if(player_class[id]==Paladyn && weapon == CSW_KNIFE && freeze_ended) { if((button2 & IN_DUCK) && (button2 & IN_JUMP)) { if(JumpsLeft[id]>0) { new flags = pev(id,pev_flags) if(flags & FL_ONGROUND) { set_pev ( id, pev_flags, flags-FL_ONGROUND ) JumpsLeft[id]-- new Float:va[3],Float:v[3] entity_get_vector(id,EV_VEC_v_angle,va) v[0]=floatcos(va[1]/180.0*M_PI)*560.0 v[1]=floatsin(va[1]/180.0*M_PI)*560.0 v[2]=300.0 entity_set_vector(id,EV_VEC_velocity,v) write_hud(id) } } } } if(flashlight[id] && flashbattery[id] && (get_cvar_num("flashlight_custom")) && (player_class[id] == Mag)) { new num1, num2, num3 num1=random_num(0,2) num2=random_num(-1,1) num3=random_num(-1,1) flashlight_r+=1+num1 if (flashlight_r>250) flashlight_r-=245 flashlight_g+=1+num2 if (flashlight_g>250) flashlight_g-=245 flashlight_b+=-1+num3 if (flashlight_b<5) flashlight_b+=240 new origin[3]; get_user_origin(id,origin,3); message_begin(MSG_BROADCAST,SVC_TEMPENTITY); write_byte(27); // TE_DLIGHT write_coord(origin[0]); // X write_coord(origin[1]); // Y write_coord(origin[2]); // Z write_byte(get_cvar_num("flashlight_radius")); // radius write_byte(flashlight_r); // R write_byte(flashlight_g); // G write_byte(flashlight_b); // B write_byte(1); // life write_byte(get_cvar_num("flashlight_decay")); // decay rate message_end(); new index1, bodypart1 get_user_aiming(id,index1,bodypart1) if ((get_user_team(id)!=get_user_team(index1)) && (index1!=0)) { if ((index1!=54) && (is_user_connected(index1))) set_user_rendering(index1,kRenderFxGlowShell,flashlight_r,flashlight_g,flashlight_b,kRenderNormal,4) remove_task(TASK_FLASH_LIGHT+index1); set_task(7.5, "un_rander",TASK_FLASH_LIGHT+index1) //set_task(15.0,"un_rander",TASK_NAME,index1) } } //Before freeze_ended check if (((player_b_silent[id] > 0) || (player_class[id] == Zabojca)) && is_user_alive(id)) entity_set_int(id, EV_INT_flTimeStepSound, 300) new Float:vect[3] entity_get_vector(id,EV_VEC_velocity,vect) new Float: sped= floatsqroot(vect[0]*vect[0]+vect[1]*vect[1]+vect[2]*vect[2]) if((get_user_maxspeed(id)*5)>(sped*9)) entity_set_int(id, EV_INT_flTimeStepSound, 300) //bow model if (button2 & IN_RELOAD && on_knife[id] && button[id]==0 && player_class[id]==Hunter){ bow[id]++ button[id] = 1; command_bow(id) } if ((!(button2 & IN_RELOAD)) && on_knife[id] && button[id]==1) button[id]=0 // if (!freeze_ended) return PLUGIN_CONTINUE if (earthstomp[id] != 0 && is_user_alive(id)) { static Float:fallVelocity; pev(id,pev_flFallVelocity,fallVelocity); if(fallVelocity) falling[id] = true else falling[id] = false; } if (player_b_jumpx[id] > 0) Prethink_Doublejump(id) if (player_b_blink[id] > 0) Prethink_Blink(id) if (player_b_usingwind[id] == 1) Prethink_usingwind(id) if (player_b_oldsen[id] > 0) Prethink_confuseme(id) if (player_b_froglegs[id] > 0) Prethink_froglegs(id) //USE Button actives USEMAGIC if (get_entity_flags(id) & FL_ONGROUND && (!(button2 & (IN_FORWARD+IN_BACK+IN_MOVELEFT+IN_MOVERIGHT)) || (player_class[id] == Mag && player_b_fireball[id]==0)) && is_user_alive(id) && !bow[id] && (on_knife[id] || (player_class[id] == Mag && player_b_fireball[id])) && player_class[id]!=NONE && player_class[id]!=Nekromanta && invisible_cast[id]==0) { if(casting[id]==1 && halflife_time()>cast_end[id]) { message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id ) write_byte( 0 ) write_byte( 0 ) message_end() casting[id]=0 call_cast(id) } else if(casting[id]==0) { new Float: time_delay = 5.0-(player_intelligence[id]/101.0) if(player_class[id] == Ninja) time_delay*=2.0 else if(player_class[id] == Mag) { time_delay=time_delay = 4.0-(player_intelligence[id]/202.0) if(player_b_fireball[id]>0) time_delay=random_float(0.5,4.0-(player_intelligence[id]/101.0)) } else if(player_class[id] == Zabojca) time_delay*=2.0 else if(player_class[id] == Paladyn) time_delay*=1.4 cast_end[id]=halflife_time()+time_delay new bar_delay = floatround(time_delay,floatround_ceil) casting[id]=1 message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id ) write_byte( bar_delay ) write_byte( 0 ) message_end() } } else { if(casting[id]==1) { message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id ) write_byte( 0 ) write_byte( 0 ) message_end() } casting[id]=0 } if (pev(id,pev_button) & IN_USE && !casting[id]) Use_Spell(id) if(player_class[id]==Ninja && (pev(id,pev_button) & IN_RELOAD)) command_knife(id) else if (pev(id,pev_button) & IN_RELOAD && on_knife[id] && max_knife[id]>0) command_knife(id) if(!is_user_alive(id)||is_user_bot(id)) return PLUGIN_CONTINUE ///////////////////// BOW ///////////////////////// if(player_class[id]==Hunter) { new clip,ammo new weapon = get_user_weapon(id,clip,ammo) if(bow[id] == 1) { if((bowdelay[id] + 4.101 - float(player_intelligence[id]/101))< get_gametime() && button2 & IN_ATTACK) { bowdelay[id] = get_gametime() command_arrow(id) } entity_set_int(id, EV_INT_button, (button2 & ~IN_ATTACK) & ~IN_ATTACK2) } // nade if(g_GrenadeTrap[id] && button2 & IN_ATTACK2) { switch(weapon) { case CSW_HEGRENADE, CSW_FLASHBANG, CSW_SMOKEGRENADE: { if((g_PreThinkDelay[id] + 0.28) < get_gametime()) { switch(g_TrapMode[id]) { case 0: g_TrapMode[id] = 1 case 1: g_TrapMode[id] = 0 } client_print(id, print_center, "Grenade Trap %s", g_TrapMode[id] ? "[ON]" : "[OFF]") g_PreThinkDelay[id] = get_gametime() } } default: g_TrapMode[id] = 0 } } } /////////////////////////////////////////////////// return PLUGIN_CONTINUE } public client_PostThink( id ) { if (player_b_jumpx[id] > 0) Postthink_Doubeljump(id) if (earthstomp[id] != 0 && is_user_alive(id)) { if (!falling[id]) add_bonus_stomp(id) else set_pev(id,pev_watertype,-3) } } public client_AddToFullPack(ent_state,e,edict_t_ent,edict_t_host,hostflags,player,pSet) { //No players need this rather cpu consuming function - dont run if (!use_addtofullpack) return FMRES_HANDLED if (!pev_valid(e)|| !pev_valid(edict_t_ent) || !pev_valid(edict_t_host)) return FMRES_HANDLED new classname[32] pev(e,pev_classname,classname,31) new hostclassname[32] pev(edict_t_host,pev_classname,hostclassname,31) if (equal(classname,"player") && equal(hostclassname,"player") && player) { // only take effect if both players are alive & and not somthing else like a ladder if (is_user_alive(e) && is_user_alive(edict_t_host) && e != edict_t_host) { //host looks at e if (HasFlag(e,Flag_Illusion)) return FMRES_SUPERCEDE //E Is looking at t and t has the flag if (HasFlag(edict_t_host,Flag_Illusion)) return FMRES_SUPERCEDE } } return FMRES_HANDLED } /* FUNCTIONS ====================================================================================== */ public skilltree(id) { new text[513] new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7) format(text, 512, "\yWybierz Staty- \rPunkty: %i^n^n\w1. Inteligencja [%i] [Wieksze obrazenia czarami]^n\w2. Sila [%i] [Wiecej zycia]^n\w3. Zrecznosc [%i] [Bronie zadaja ci mniejsze obrazenia]^n\w4. Zwinnosc [%i] [Szybciej biegasz i magia zadaje ci mniejsze obrazenia]^n\w5. Wszystko w Inteligencje ^n\w6. Wszystko w sile ^n\w7. Wszystko w zrecznosc ^n\w8. Wszystko w zwinosc",player_point[id],player_intelligence[id],player_strength[id],player_agility[id],player_dextery[id]) keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7) show_menu(id, keys, text) return PLUGIN_HANDLED } public skill_menu(id, key) { new max_skill=202 switch(key) { case 0: { if (player_intelligence[id] 0) skilltree(id) return PLUGIN_HANDLED } /* ==================================================================================================== */ public show_deadmessage(killer_id,victim_id,headshot,weaponname[]) { if (!(killer_id==victim_id && !headshot && equal(weaponname,"world"))) { message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0) write_byte(killer_id) write_byte(victim_id) write_byte(headshot) write_string(weaponname) message_end() } } /* ==================================================================================================== */ public got_bomb(id){ planter = id; return PLUGIN_CONTINUE } public award_plant() { new Players[32], playerCount, id get_players(Players, playerCount, "aeh", "TERRORIST") for (new i=0; i 0 && equal(Team,"CT") && !is_user_alive(LeaderCT)) xp_award-= get_cvar_num("diablo_xpbonus")/4 if (LeaderT > 0 && equal(Team,"TERRORIST") && !is_user_alive(LeaderT)) xp_award-= get_cvar_num("diablo_xpbonus")/4 if (player_class[killer_id] == Mnich) xp_award+=get_cvar_num("diablo_xpbonus")/4 if (player_xp[killer_id]0) xp_award += floatround((get_cvar_num("diablo_xpbonus")/7)*(more_lvl*((2.0-more_lvl/203.0)/3.0))) else if(more_lvl<-50)xp_award -= get_cvar_num("diablo_xpbonus")*(2/3) else if(more_lvl<-40)xp_award -= get_cvar_num("diablo_xpbonus")/2 else if(more_lvl<-30)xp_award -= get_cvar_num("diablo_xpbonus")/3 else if(more_lvl<-20)xp_award -= get_cvar_num("diablo_xpbonus")/4 else if(more_lvl<-10)xp_award -= get_cvar_num("diablo_xpbonus")/7 Give_Xp(killer_id,xp_award) return PLUGIN_CONTINUE } public Give_Xp(id,amount) { if(player_class_lvl[id][player_class[id]]==player_lvl[id]) { if(player_xp[id]+amount!=0 && get_playersnum()>1){ player_xp[id]+=amount if (player_xp[id] > LevelXP[player_lvl[id]]) { player_lvl[id]+=1 player_point[id]+=2 set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2) show_hudmessage(id, "Awansowales do poziomu %i", player_lvl[id]) savexpcom(id) player_class_lvl[id][player_class[id]]=player_lvl[id] } if (player_xp[id] < LevelXP[player_lvl[id]-1]) { player_lvl[id]-=1 player_point[id]-=2 set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2) show_hudmessage(id, "Spadles do poziomu %i", player_lvl[id]) savexpcom(id) player_class_lvl[id][player_class[id]]=player_lvl[id] } write_hud(id) } } } /* ==================================================================================================== */ public client_connect(id) { // reset_item_skills(id) - nie tutaj bo nie loaduje poziomow O.o asked_sql[id]=0 flashbattery[id] = MAX_FLASH player_xp[id] = 0 player_lvl[id] = 1 player_point[id] = 0 player_item_id[id] = 0 player_agility[id] = 0 player_strength[id] = 0 player_intelligence[id] = 0 player_dextery[id] = 0 player_b_oldsen[id] = 0.0 player_class[id] = 0 player_damreduction[id] = 0.0 last_update_xp[id] = -1 player_item_name[id] = "None" DemageTake[id]=0 player_b_gamble[id]=0 g_GrenadeTrap[id] = 0 g_TrapMode[id] = 0 player_ring[id]=0 reset_item_skills(id) // Juz zaladowalo xp wiec juz nic nie zepsuje reset_player(id) } public client_putinserver(id) { loaded_xp[id]=0 player_class_lvl_save[id]=0 database_user_created[id]=0 count_jumps(id) JumpsLeft[id]=JumpsMax[id] set_task(15.0, "Greet_Player", id+TASK_GREET, "", 0, "a", 1) } public client_disconnect(id) { new ent new playername[40] get_user_name(id,playername,39) player_dc_name[id] = playername player_dc_item[id] = player_item_id[id] if (player_b_oldsen[id] > 0.0) client_cmd(id,"sensitivity %f",player_b_oldsen[id]) savexpcom(id) remove_task(TASK_CHARGE+id) while((ent = fm_find_ent_by_owner(ent, "fake_corpse", id)) != 0) fm_remove_entity(ent) player_class_lvl_save[id]=0 loaded_xp[id]=0 } /* ==================================================================================================== */ public write_hud(id) { if (player_lvl[id] == 0) player_lvl[id] = 1 new tpstring[1024] new Float:xp_now new Float:xp_need new Float:perc if (last_update_xp[id] == player_xp[id]) { perc = last_update_perc[id] } else { //Calculate percentage of xp required to level if (player_lvl[id] == 1) { xp_now = float(player_xp[id]) xp_need = float(LevelXP[player_lvl[id]]) perc = xp_now*100.0/xp_need } else { xp_now = float(player_xp[id])-float( LevelXP[player_lvl[id]-1]) xp_need = float(LevelXP[player_lvl[id]])-float(LevelXP[player_lvl[id]-1]) perc = xp_now*100.0/xp_need } } last_update_xp[id] = player_xp[id] last_update_perc[id] = perc if(player_class[id]!=Paladyn) format(tpstring,1023,"Klasa: %s Level: %i (%0.0f%s) Item: %s", Race[player_class[id]], player_lvl[id], perc,"%%",player_item_name[id]) else format(tpstring,1023,"Klasa: %s Level: %i (%0.0f%s) Item: %s Skoki: %i/%i", Race[player_class[id]], player_lvl[id], perc,"%%",player_item_name[id],JumpsLeft[id],JumpsMax[id]) message_begin(MSG_ONE,gmsgStatusText,{0,0,0}, id) write_byte(0) write_string(tpstring) message_end() } /* ==================================================================================================== */ public UpdateHUD() { //Update HUD for each player for (new id=0; id < 32; id++) { //If user is not connected, don't do anything if (!is_user_connected(id)) continue if (is_user_alive(id)) write_hud(id) else { //Show info about the player we're looking at new index,bodypart get_user_aiming(id,index,bodypart) if(index >= 0 && index < MAX && is_user_connected(index) && is_user_alive(index)) { new pname[32] get_user_name(index,pname,31) new Msg[512] set_hudmessage(255, 255, 255, 0.78, 0.65, 0, 6.0, 3.0) format(Msg,511,"Nick: %s^nPoziom: %i^nKlasa: %s^nPrzedmiot: %s^nInteligencja: %i^nSila: %i^nZwinnosc: %i^nZrecznosc: %i",pname,player_lvl[index],Race[player_class[index]],player_item_name[index], player_intelligence[index],player_strength[index], player_dextery[index], player_agility[index]) show_hudmessage(id, Msg) } } } } /* ==================================================================================================== */ public check_magic(id) //Redirect and check which items will be triggered { if (player_b_meekstone[id] > 0) item_c4fake(id) if (player_b_fireball[id] > 0) item_fireball(id) if (player_b_ghost[id] > 0) item_ghost(id) if (player_b_eye[id] != 0) item_eye(id) if (player_b_windwalk[id] > 0) item_windwalk(id) if (player_b_dagon[id] > 0) item_dagon(id) if (player_b_theif[id] > 0) item_convertmoney(id) if (player_b_firetotem[id] > 0) item_firetotem(id) if (player_b_hook[id] > 0) item_hook(id) if (player_b_gravity[id] > 0) item_gravitybomb(id) if (player_b_fireshield[id] > 0) item_rot(id) if (player_b_illusionist[id] > 0) item_illusion(id) if (player_b_money[id] > 0) item_money_shield(id) if (player_b_mine[id] > 0) item_mine(id) if (player_b_teamheal[id] > 0) item_teamshield(id) if (player_b_heal[id] > 0) item_totemheal(id) return PLUGIN_HANDLED } /* ==================================================================================================== */ public dropitem(id) { if (player_item_id[id] == 0) { hudmsg(id,2.0,"Nie masz przedmiotu do wyrzucenia!") return PLUGIN_HANDLED } if (item_durability[id] <= 0) { hudmsg(id,3.0,"Przedmiot stracil swoja wytrzymalosc!") } else { set_hudmessage(100, 200, 55, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5) show_hudmessage(id, "Przedmiot wyrzucony") } player_item_id[id] = 0 player_item_name[id] = "Nic" player_b_gamble[id] = 0 //Because gamble uses reset skills if (player_b_extrastats[id] > 0) { SubtractStats(id,player_b_extrastats[id]) } if(player_ring[id]>0) SubtractRing(id) player_ring[id]=0 reset_item_skills(id) set_task(3.0,"changeskin_id_1",id) write_hud(id) set_renderchange(id) set_gravitychange(id) if (player_b_oldsen[id] > 0.0) { client_cmd(id,"sensitivity %f",player_b_oldsen[id]) player_b_oldsen[id] = 0.0 } return PLUGIN_HANDLED } /* ==================================================================================================== */ public pfn_touch ( ptr, ptd ) { if (ptd == 0) return PLUGIN_CONTINUE new szClassName[32] if(pev_valid(ptd)){ entity_get_string(ptd, EV_SZ_classname, szClassName, 31) } else return PLUGIN_HANDLED if(equal(szClassName, "fireball")) { new owner = pev(ptd,pev_owner) //Touch if (get_user_team(owner) != get_user_team(ptr)) { new Float:origin[3] pev(ptd,pev_origin,origin) Explode_Origin(owner,origin,55+player_intelligence[owner],150) remove_entity(ptd) } } if (ptr != 0 && pev_valid(ptr)) { new szClassNameOther[32] entity_get_string(ptr, EV_SZ_classname, szClassNameOther, 31) if(equal(szClassName, "PowerUp") && equal(szClassNameOther, "player")) { entity_set_int(ptd,EV_INT_iuser2,1) } if(equal(szClassName, "Mine") && equal(szClassNameOther, "player")) { new owner = pev(ptd,pev_owner) //Touch if (get_user_team(owner) != get_user_team(ptr)) { new Float:origin[3] pev(ptd,pev_origin,origin) Explode_Origin(owner,origin,55+player_intelligence[owner],150) remove_entity(ptd) } } if(equal(szClassName, "grenade") && equal(szClassNameOther, "player")) { new greModel[64] entity_get_string(ptd, EV_SZ_model, greModel, 63) if(equali(greModel, "models/w_smokegrenade.mdl" )) { new id = entity_get_edict(ptd,EV_ENT_owner) if (is_user_connected(id) && is_user_connected(ptr) && is_user_alive(ptr) && player_b_smokehit[id] > 0 && get_user_team(id) != get_user_team(ptr)) UTIL_Kill(id,ptr,"grenade") } } } /*if(equal(szClassName, "fireball")) { new Float:origin[3] pev(ptd,pev_origin,origin) new id = pev(ptd,pev_owner) Explode_Origin(id,origin,100,player_b_fireball[id] + player_intelligence[id]) remove_entity(ptd) }*/ return PLUGIN_CONTINUE } /* ==================================================================================================== */ public Explode_Origin(id,Float:origin[3],damage,dist) { message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(3) write_coord(floatround(origin[0])) write_coord(floatround(origin[1])) write_coord(floatround(origin[2])) write_short(sprite_boom) write_byte(50) write_byte(15) write_byte(0) message_end() new Players[32], playerCount, a get_players(Players, playerCount, "ah") for (new i=0; i ghosttime[a]) { ghoststate[a] = 3 ghosttime[a] = 0 set_user_noclip(a,0) ghost_check = false new Float:aOrigin[3] entity_get_vector(a,EV_VEC_origin,aOrigin) if (PointContents (aOrigin) != -1) { user_kill(a,1) } else { aOrigin[2]+=10 entity_set_vector(a,EV_VEC_origin,aOrigin) } } } } } public reset_item_skills(id){ item_boosted[id] = 0 item_durability[id] = 0 jumps[id] = 0 gravitytimer[id] = 0 player_b_vampire[id] = 0 //Vampyric damage player_b_damage[id] = 0 //Bonus damage player_b_money[id] = 0 //Money bonus player_b_gravity[id] = 0 //Gravity bonus : 1 = best player_b_inv[id] = 0 //Invisibility bonus player_b_grenade[id] = 0 //Grenade bonus = 1/chance to kill player_b_reduceH[id] = 0 //Reduces player health each round start player_b_theif[id] = 0 //Amount of money to steal player_b_respawn[id] = 0 //Chance to respawn upon death player_b_explode[id] = 0 //Radius to explode upon death player_b_heal[id] = 0 //Ammount of hp to heal each 5 second player_b_blind[id] = 0 //Chance 1/Value to blind the enemy player_b_fireshield[id] = 0 //Protects against explode and grenade bonus player_b_meekstone[id] = 0 //Ability to lay a fake c4 and detonate player_b_teamheal[id] = 0 //How many hp to heal when shooting a teammate player_b_redirect[id] = 0 //How much damage will the player redirect player_b_fireball[id] = 0 //Ability to shot off a fireball value = radius * player_b_ghost[id] = 0 //Ability to walk through walls player_b_eye[id] = 0 //Ability to snarkattack player_b_blink[id] = 0 //Abiliy to use railgun player_b_windwalk[id] = 0 //Ability to windwalk player_b_usingwind[id] = 0 //Is player using windwalk player_b_froglegs[id] = 0 player_b_silent[id] = 0 player_b_dagon[id] = 0 //Abliity to nuke opponents player_b_sniper[id] = 0 //Ability to kill faster with scout player_b_jumpx[id] = 0 player_b_smokehit[id] = 0 player_b_extrastats[id] = 0 player_b_firetotem[id] = 0 player_b_hook[id] = 0 player_b_darksteel[id] = 0 player_b_illusionist[id] = 0 player_b_mine[id] = 0 wear_sun[id] = 0 player_sword[id] = 0 player_ultra_armor_left[id]=0 player_ultra_armor[id]=0 } public changeskin_id_1(id) { changeskin(id,1) } /* =================================================================================================== */ public show_menu_klasy(id) { new text[513] format(text, 512, "\yinfo klas - ^n\w1. Mag^n\w2. Paladyn^n\w3. Mnich^n\w4. Barbarzynca^n\w5. Zabojca^n\w6. Nekromanta^n\w7. Ninja^n\w8. Lowca^n^n\w0 Exit") new keys keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<9) show_menu(id, keys, text) return PLUGIN_HANDLED } public klasy(id, key) { switch(key) { case 0: { mag(id) } case 1: { paladyn(id) } case 2: { mnich(id) } case 3: { barbarzynca(id) } case 4: { zabojca(id) } case 5: { nekromanta(id) } case 6: { ninja(id) } case 7: { Lowca(id) } case 9: { return PLUGIN_HANDLED } } return PLUGIN_HANDLED } public mag(id){ showitem(id,"Mag"," "," ","
Strzelajac z pistoletu zamrazasz wroga i zabierasz mu 5hp co 2 sek przez 15 sek.
Jezeli wlaczysz latarke i najedziesz na ninje robi sie widzialny

") } public paladyn(id){ showitem(id,"Paladyn"," "," ","
Na start ma 125hp i moze wykonywac tzw. Long Jump.


") } public mnich(id){ showitem(id,"Mnich"," "," ","
Zdobywa szybciej doswiadczenie
i na start ma 140hp

") } public barbarzynca(id){ showitem(id,"Barbarzynca"," "," ","
Zabijajac wroga dostajesz 200 armoru i
dostaniesz dodatkowy magazynek
i odzyskuje czesc hp.

") } public zabojca(id){ showitem(id,"Zabojca"," "," ","
Nie slychac jego krokow i jest troche szybszy od pozostalych.
Jak postrzelisz wroga z pistoletu wyrzuca go do gory

") } public nekromanta(id){ showitem(id,"Nekromanta"," "," ","
Atakujac zabierasz 10hp wiecej
i moze wskrzeszac umarlych.

") } public ninja(id){ showitem(id,"Ninja"," "," ","
Jest prawie niewidoczny, ma 165 hp na start
ale moze chodzic tylko z nozem

") } public Lowca(id){ showitem(id,"Ninja"," "," ","
Posiada Kusze (wybierz noz a potem reload by wyjac
Moze zastawiac pulapki z granatow (zmiana trybow PPM)
Gdy postrzeli przeciwnika pistoletem, zostawia on za soba slad

") } /* =====================================*/ /* ==================================================================================================== */ public auto_help(id) { new rnd = random_num(1,5+player_lvl[id]) if (rnd <= 5) set_hudmessage(0, 180, 0, -1.0, 0.70, 0, 10.0, 5.0, 0.1, 0.5, 11) if (rnd == 1) show_hudmessage(id, "Mozesz upuscic przedmiot jak napiszesz /drop i zobaczyc informacje o przedmocie jak napiszesz /przedmiot") if (rnd == 2) show_hudmessage(id, "Mozesz uzywac konkretnych przedmiotow za pomoca klawisza E") if (rnd == 3) show_hudmessage(id, "Mozesz dostac wiecej pomocy jak napiszesz /pomoc lub zobaczyc wszystkie komendy jak napiszesz /komendy") if (rnd == 4) show_hudmessage(id, "Zeby bylo prosciej grac mozesz zbindowac diablo menu (bind klawisz say /menu") if (rnd == 5) show_hudmessage(id, "Niektore przedmioty moga byc ulepszone przez Runy. Napisz /rune zeby otworzyc sklep z runami") } /* ==================================================================================================== */ public helpme(id) { showitem(id,"Helpmenu","Common","None","Dostajesz przedmioty i doswiadczenie za zabijanie innych. Mozesz dostac go tylko wtedy, gdy nie masz na sobie innego

Aby dowiedziec sie wiecej o swoim przedmiocie napisz /przedmiot lub /item, a jak chcesz wyrzucic napisz /drop

Niektore przedmoty da sie uzyc za pomoca klawisza E

Napisz /czary zeby zobaczyc jakie masz staty

") } /* ==================================================================================================== */ /* ==================================================================================================== */ public komendy(id) { showitem(id,"Komendy","Common","None","
/klasa - zmiana klasy postaci
/klasy - opis postaci
/rune - sklep z runami
/przedmiot - informacja o przedmiocie
/menu - wyswietla menu diablo mod
/czary - stan statystyk
/drop - wyrzuca aktualny przedmiot
/noweitemy - opis nowych itemow
/reset -resetuje twoje staty
/savexp - zapisuje lvl,exp,staty
/gracze - wyswietla liste graczy
Polska zmodyfikowana wersja diablo mod by GuTeK & Miczu

") } /* ==================================================================================================== */ public showitem(id,itemname[],itemvalue[],itemeffect[],Durability[]) { new diabloDir[64] new g_ItemFile[64] new amxbasedir[64] get_basedir(amxbasedir,63) format(diabloDir,63,"%s/diablo",amxbasedir) if (!dir_exists(diabloDir)) { new errormsg[512] format(errormsg,511,"Blad: Folder %s/diablo nie mogล‚ byฤ‡ znaleziony. Prosze skopiowac ten folder z archiwum do folderu amxmodx",amxbasedir) show_motd(id, errormsg, "An error has occured") return PLUGIN_HANDLED } format(g_ItemFile,63,"%s/diablo/item.txt",amxbasedir) if(file_exists(g_ItemFile)) delete_file(g_ItemFile) new Data[768] //Header format(Data,767,"Informacje o przedmiocie") write_file(g_ItemFile,Data,-1) //Background format(Data,767,"",Basepath) write_file(g_ItemFile,Data,-1) //Table stuff format(Data,767,"",Basepath) write_file(g_ItemFile,Data,-1) //item name format(Data,767,"",itemeffect) write_file(g_ItemFile,Data,-1) //image ss format(Data,767,"", Basepath) write_file(g_ItemFile,Data,-1) //end format(Data,767,"
","^%") write_file(g_ItemFile,Data,-1) //ss.gif image format(Data,767,"

Przedmiot: %s
",itemname) write_file(g_ItemFile,Data,-1) //item value format(Data,767,"
Wartosc:
%s

",itemvalue) write_file(g_ItemFile,Data,-1) //Durability format(Data,767,"
Wytrzymalosc:
%s


",Durability) write_file(g_ItemFile,Data,-1) //Effects format(Data,767,"Efekt: %s

") write_file(g_ItemFile,Data,-1) //show window with message show_motd(id, g_ItemFile, "Informacje Przedmiotu") return PLUGIN_HANDLED } /* ==================================================================================================== */ public iteminfo(id) { new itemvalue[100] if (player_item_id[id] <= 10) itemvalue = "Common" if (player_item_id[id] <= 30) itemvalue = "Uncommon" else itemvalue = "Rare" if (player_item_id[id] > 42) itemvalue = "Unique" new itemEffect[200] new TempSkill[11] //There must be a smarter way if (player_b_vampire[id] > 0) { num_to_str(player_b_vampire[id],TempSkill,10) add(itemEffect,199,"Kradnie ") add(itemEffect,199,TempSkill) add(itemEffect,199," hp jak uderzysz wroga
") } if (player_b_damage[id] > 0) { num_to_str(player_b_damage[id],TempSkill,10) add(itemEffect,199,"Zadaje ") add(itemEffect,199,TempSkill) add(itemEffect,199," dodatkowe obrazenia za kazdym razem jak uderzysz wroga
") } if (player_b_money[id] > 0) { num_to_str(player_b_money[id],TempSkill,10) add(itemEffect,199,"Dadaje ") add(itemEffect,199,TempSkill) add(itemEffect,199," zlota i w kazdej rundzie na start otrzymasz 50 zlota. Mozesz takze uzyc tego przedmiotu by zredukowac normalne obrazenia o 50%
") } if (player_b_gravity[id] > 0) { num_to_str(player_b_gravity[id],TempSkill,10) add(itemEffect,199,"Wysoki skok jest zredukowany do ") add(itemEffect,199,TempSkill) add(itemEffect,199,". Uzyj tego przedmiotu jak bedziesz w powietrzu. Uszkodzenia zaleza od wysokosci skoku i twojej sily
") } if (player_b_inv[id] > 0) { num_to_str(player_b_inv[id],TempSkill,10) add(itemEffect,199,"Twoja widocznosc jest zredukowana z 255 do ") add(itemEffect,199,TempSkill) add(itemEffect,199,"
") } if (player_b_grenade[id] > 0) { num_to_str(player_b_grenade[id],TempSkill,10) add(itemEffect,199,"Masz 1/") add(itemEffect,199,TempSkill) add(itemEffect,199," szanse do natychmiastowego zabicia HE
") } if (player_b_reduceH[id] > 0) { num_to_str(player_b_reduceH[id],TempSkill,10) add(itemEffect,199,"Twoje zdrowie jest zredukowane o ") add(itemEffect,199,TempSkill) add(itemEffect,199," z kazdej rundy, sila nie liczy sie tu
") } if (player_b_theif[id] > 0) { num_to_str(player_b_theif[id],TempSkill,10) add(itemEffect,199,"Masz 1/7 szans na okradniecie kogos z") add(itemEffect,199,TempSkill) add(itemEffect,199," zlota, za kazdym razem gdy uderzysz swojego wroga. Mozesz uzyc tego przedmiotu zeby zamienic 1000 zlota na 15 HP
") } if (player_b_respawn[id] > 0) { num_to_str(player_b_respawn[id],TempSkill,10) add(itemEffect,199,"Masz 1/") add(itemEffect,199,TempSkill) add(itemEffect,199," szanse do odrodzenia sie po zgonie
") } if (player_b_explode[id] > 0) { num_to_str(player_b_explode[id],TempSkill,10) add(itemEffect,199,"Gdy umierasz wybuchniesz w promieniu ") add(itemEffect,199,TempSkill) add(itemEffect,199," zadaje 75 obrazen wokol ciebie - im wiecej masz inteligencji tym wiekszy zasieg wybuchu
") } if (player_b_heal[id] > 0) { num_to_str(player_b_heal[id],TempSkill,10) add(itemEffect,199,"Zyskasz +") add(itemEffect,199,TempSkill) add(itemEffect,199," HP co kazde 5 sekund. Uzyj aby polozyc leczacy totem na 7 sekund
") } if (player_b_gamble[id] > 0) { num_to_str(player_b_gamble[id],TempSkill,10) add(itemEffect,199,"Zyskasz losowa umiejetnosc na poczatku rundy, Masz na to 1/") add(itemEffect,199,TempSkill) add(itemEffect,199," szans
") } if (player_b_blind[id] > 0) { num_to_str(player_b_blind[id],TempSkill,10) add(itemEffect,199,"Masz 1/") add(itemEffect,199,TempSkill) add(itemEffect,199,"szans zeby twoj przeciwnik stracil wzrok
") } if (player_b_fireshield[id] > 0) { num_to_str(player_b_fireshield[id],TempSkill,10) add(itemEffect,199,"Nie mozesz byc zabity przez chaos orb, hell orb albo firerope
") add(itemEffect,199,"Uzyj, zeby zadac obrazenia, spowolnic i oslepic kazdego wroga wokol ciebie
") } if (player_b_meekstone[id] > 0) { num_to_str(player_b_meekstone[id],TempSkill,10) add(itemEffect,199,"Mozesz polozyc falszywa bombe uzywajac klawisz E. Gdy przeciwna druzyna zblizy sie do niej, wybuchnie zadajac obrazenia
") } if (player_b_teamheal[id] > 0) { num_to_str(player_b_teamheal[id],TempSkill,10) add(itemEffect,199,"Uzyj, aby aktywowac tarcze na graczu.
") add(itemEffect,199," Cale uszkodzenia tarczy sa odzwierciedlone. Umrzesz jezeli zostaniesz trafiony") } if (player_b_redirect[id] > 0) { num_to_str(player_b_redirect[id],TempSkill,10) add(itemEffect,199,"Obrazenia sa zredukowane o") add(itemEffect,199,TempSkill) add(itemEffect,199," hitpoints
") } if (player_b_fireball[id] > 0) { num_to_str(player_b_fireball[id],TempSkill,10) add(itemEffect,199,"Mozesz wyczarowac ognista kule uzywajac tego przedmiotu. Zabije ona ludzi w zasiegu ") add(itemEffect,199,TempSkill) add(itemEffect,199,". Im wiecej masz inteligencji tym wieksze zadasz obrazenia
") } if (player_b_ghost[id] > 0) { num_to_str(player_b_ghost[id],TempSkill,10) add(itemEffect,199,"Uzyj tego przedmiotu, aby przenikac przez sciany przez") add(itemEffect,199,TempSkill) add(itemEffect,199," sekund
") } if (player_b_eye[id] > 0) { add(itemEffect,199,"Uzyj, aby polozyc magiczne oko(da sie tylko raz podlozyc) i uzyj ponownie zeby wlaczyc i wylaczyc je") } if (player_b_blink[id] > 0) { add(itemEffect,199,"Mozesz teleportowac sie przez uzywanie alternatywnego ataku twoim nozem (PPM). Im wiecej masz inteligencji tym teleportujesz sie na wiekszy dystans") } if (player_b_windwalk[id] > 0) { num_to_str(player_b_windwalk[id],TempSkill,10) add(itemEffect,199,"Uzyj, zeby stac sie niewidzialny. W tym czasie nie bedziesz mogl atakowac, ale za to staniesz sie szybszy na ") add(itemEffect,199,TempSkill) add(itemEffect,199," sekund
") } if (player_b_froglegs[id] > 0) { add(itemEffect,199,"Kucnij na 3 sekundy, a zrobisz dlugi skok") } if (player_b_dagon[id] == 1) { add(itemEffect,199,"Uzyj, zeby udezyc wroga ognistym promieniem - mozesz ulepszyc ten przedmiot kupujac odpowiednie runy ") add(itemEffect,199,"Inteligencja zwiekszy zasieg przedmiotu") } if (player_b_sniper[id] > 0) { num_to_str(player_b_sniper[id],TempSkill,10) add(itemEffect,199,"Masz 1/") add(itemEffect,199,TempSkill) add(itemEffect,199,"na natychmiastowe zabicie przeciwnika ze scouta
") } if (player_b_jumpx[id] > 0) { num_to_str(player_b_jumpx[id],TempSkill,10) add(itemEffect,199,"Mozesz podskoczyc ") add(itemEffect,199,TempSkill) add(itemEffect,199," razy w loscie, uzywajac klawisza, ktorym skaczesz
") } if (player_b_smokehit[id] > 0) { add(itemEffect,199,"Twoje granaty dymne zabija natychmiast wroga jezeli go dotknie") } if (player_b_extrastats[id] > 0) { num_to_str(player_b_extrastats[id],TempSkill,10) add(itemEffect,199,"Zyskasz +") add(itemEffect,199,TempSkill) add(itemEffect,199," do wszystkich statystyk majac ten przedmiot
") } if (player_b_firetotem[id] > 0) { num_to_str(player_b_firetotem[id],TempSkill,10) add(itemEffect,199,"Uzyj tego przedmiotu, zeby polozyc eksplodujacy totem na ziemie. Totem wybuchnie po 7 sekundach. I zapali osoby w zasiegu ") add(itemEffect,199,TempSkill) } if (player_b_hook[id] > 0) { num_to_str(player_b_hook[id],TempSkill,10) add(itemEffect,199,"Uzyj, zeby wyrzucic hak na zasieg 600 jezeli kogos trafisz przyciagnie go do siebie. Im wiecej masz inteligencji tym szybszy bedzie hak") } if (player_b_darksteel[id] > 0) { new ddam = floatround(player_strength[id]*2*player_b_darksteel[id]/10.0)*3 num_to_str(player_b_darksteel[id],TempSkill,10) add(itemEffect,199,"Dostales 15 + 0.") add(itemEffect,199,TempSkill) add(itemEffect,199,"*sila: ") num_to_str(ddam,TempSkill,10) add(itemEffect,199,TempSkill) add(itemEffect,199," dodatkowych obrazen kiedy uderzysz swojego wroga od tylu ") } if (player_b_illusionist[id] > 0) { add(itemEffect,199,"Uzyj tego przedmiotu, zeby stac sie niewiedzialnym przez 7sekund. Kazde obrazenia jak bedziesz niewidzialny zabija cie") } if (player_b_mine[id] > 0) { add(itemEffect,199,"Uzyj, zeby polozyc niewidzialna mine. Kiedy mina ekspoduje zada 50hp+obrazenia magia. 3 miny mozesz polozyc w jednej rundzie") } if (player_item_id[id]==66) { add(itemEffect,199,"Wygladasz jak przeciwnik! Postaraj sie nie dac zdemaskowac.") } if (player_ultra_armor[id]>0) { add(itemEffect,199,"Masz szanse, ze pocisk odbije sie od twojego pancerza") } new Durability[10] num_to_str(item_durability[id],Durability,9) if (equal(itemEffect,"")) showitem(id,"None","None","Zabij kogos, aby dostac item albo kup (/rune)","None") if (!equal(itemEffect,"")) showitem(id,player_item_name[id],itemvalue,itemEffect,Durability) } /* ==================================================================================================== */ public award_item(id, itemnum) { if (player_item_id[id] != 0) return PLUGIN_HANDLED set_hudmessage(220, 115, 70, -1.0, 0.40, 0, 3.0, 4.0, 0.2, 0.3, 5) new rannum = random_num(1,68) new maxfind = player_agility[id] if (maxfind > 15) maxfind = 15 new rf = random_num(1,25-maxfind) if (itemnum > 0) rannum = itemnum else if (itemnum < 0) return PLUGIN_HANDLED if (rf == 3 && itemnum == 0) //We found a rare item { award_unique_item(id) rannum = -1 } //Set durability, make this item dependant? item_durability[id] = 250 switch(rannum) { case 1: { player_item_name[id] = "Bronze Amplifier" player_item_id[id] = rannum player_b_damage[id] = random_num(1,3) show_hudmessage(id, "Znalazles przedmiot: %s :: dodaje obrazenia +%i",player_item_name[id],player_b_damage[id]) } case 2: { player_item_name[id] = "Silver Amplifier" player_item_id[id] = rannum player_b_damage[id] = random_num(3,6) show_hudmessage(id, "Znalazles przedmiot: %s :: dodaje obrazenia +%i ",player_item_name[id],player_b_damage[id]) } case 3: { player_item_name[id] = "Gold Amplifier" player_item_id[id] = rannum player_b_damage[id] = random_num(6,10) show_hudmessage(id, "Znalazles przedmiot: %s :: dodaje obrazenia +%i ",player_item_name[id],player_b_damage[id]) } case 4: { player_item_name[id] = "Vampyric Staff" player_item_id[id] = rannum player_b_vampire[id] = random_num(1,4) show_hudmessage(id, "Znalazles przedmiot: %s :: wysysasz %i hp przeciwnikowi",player_item_name[id],player_b_vampire[id]) } case 5: { player_item_name[id] = "Vampyric Amulet" player_item_id[id] = rannum player_b_vampire[id] = random_num(4,6) show_hudmessage(id, "Znalazles przedmiot: %s :: wysysasz %i hp przeciwnikowi",player_item_name[id],player_b_vampire[id]) } case 6: { player_item_name[id] = "Vampyric Scepter" player_item_id[id] = rannum player_b_vampire[id] = random_num(6,9) show_hudmessage(id, "Znalazles przedmiot: %s :: wysysasz %i hp przeciwnikowi",player_item_name[id],player_b_vampire[id]) } case 7: { player_item_name[id] = "Small bronze bag" player_item_id[id] = rannum player_b_money[id] = random_num(150,500) show_hudmessage(id, "Znalazles przedmiot: %s :: dostajesz %i zloto w kazdej rundzie. Uzyj, zeby chronil cie.",player_item_name[id],player_b_money[id]+player_intelligence[id]*50) } case 8: { player_item_name[id] = "Medium silver bag" player_item_id[id] = rannum player_b_money[id] = random_num(500,1200) show_hudmessage(id, "Znalazles przedmiot: %s :: dostajesz %i zloto w kazdej rundzie. Uzyj, zeby chronil cie.",player_item_name[id],player_b_money[id]+player_intelligence[id]*50) } case 9: { player_item_name[id] = "Large gold bag" player_item_id[id] = rannum player_b_money[id] = random_num(1200,3000) show_hudmessage(id, "Znalazles przedmiot: %s :: dostajesz %i zloto w kazdej rundzie. Uzyj, zeby chronil cie.",player_item_name[id],player_b_money[id]+player_intelligence[id]*50) } case 10: { player_item_name[id] = "Small angel wings" player_item_id[id] = rannum player_b_gravity[id] = random_num(1,5) if (is_user_alive(id)) set_gravitychange(id) show_hudmessage(id, "Znalazles przedmiot: %s :: +%i premia wyzszego skoku - Wcisnij e zeby uzyc",player_item_name[id],player_b_gravity[id]) } case 11: { player_item_name[id] = "Arch angel wings" player_item_id[id] = rannum player_b_gravity[id] = random_num(5,9) if (is_user_alive(id)) set_gravitychange(id) show_hudmessage(id, "Znalazles przedmiot: %s :: +%i premia wyzszego skoku - Wcisnij e zeby uzyc",player_item_name[id],player_b_gravity[id]) } case 12: { player_item_name[id] = "Invisibility Rope" player_item_id[id] = rannum player_b_inv[id] = random_num(150,200) show_hudmessage(id, "Znalazles przedmiot: %s :: +%i premii niewidocznosci",player_item_name[id],255-player_b_inv[id]) } case 13: { player_item_name[id] = "Invisibility Coat" player_item_id[id] = rannum player_b_inv[id] = random_num(110,150) show_hudmessage(id, "Znalazles przedmiot: %s :: +%i premii niewidocznosci",player_item_name[id],255-player_b_inv[id]) } case 14: { player_item_name[id] = "Invisibility Armor" player_item_id[id] = rannum player_b_inv[id] = random_num(70,110) show_hudmessage(id, "Znalazles przedmiot: %s :: +%i premii niewidocznosci",player_item_name[id],255-player_b_inv[id]) } case 15: { player_item_name[id] = "Firerope" player_item_id[id] = rannum player_b_grenade[id] = random_num(3,6) show_hudmessage(id, "Znalazles przedmiot: %s :: +1/%i szans natychmiastowego zabicia granatem HE",player_item_name[id],player_b_grenade[id]) } case 16: { player_item_name[id] = "Fire Amulet" player_item_id[id] = rannum player_b_grenade[id] = random_num(2,4) show_hudmessage(id, "Znalazles przedmiot: %s :: +1/%i szans natychmiastowego zabicia granatem HE",player_item_name[id],player_b_grenade[id]) } case 17: { player_item_name[id] = "Stalkers ring" player_item_id[id] = rannum player_b_reduceH[id] = 95 player_b_inv[id] = 8 item_durability[id] = 100 if (is_user_alive(id)) set_user_health(id,5) show_hudmessage(id, "Znalazles przedmiot: %s :: Masz 5 zycia i noz, jestes prawie niewidoczny",player_item_name[id]) } case 18: { player_item_name[id] = "Arabian Boots" player_item_id[id] = rannum player_b_theif[id] = random_num(500,1000) show_hudmessage(id, "Znalazles przedmiot: %s :: 1/5 szans by krasc zloto%i za kazdym razem jak uderzasz. Uzyj zeby zamienic zloto w zycia",player_item_name[id],player_b_theif[id]) } case 19: { player_item_name[id] = "Phoenix Ring" player_item_id[id] = rannum player_b_respawn[id] = random_num(3,6) show_hudmessage(id, "Znalazles przedmiot: %s :: 1/%i szans do ponownego odrodzenia sie po smierci",player_item_name[id],player_b_respawn[id]) } case 20: { player_item_name[id] = "Sorcerers ring" player_item_id[id] = rannum player_b_respawn[id] = random_num(2,3) show_hudmessage(id, "Znalazles przedmiot: %s :: 1/%i szans do ponownego odrodzenia sie po smierci",player_item_name[id],player_b_respawn[id]) } case 21: { player_item_name[id] = "Chaos Orb" player_item_id[id] = rannum player_b_explode[id] = random_num(150,275) show_hudmessage(id, "Znalazles przedmiot: %s :: Wybuchniesz zaraz po smierci w promieniu %i",player_item_name[id],player_b_explode[id]) } case 22: { player_item_name[id] = "Hell Orb" player_item_id[id] = rannum player_b_explode[id] = random_num(200,400) show_hudmessage(id, "Znalazles przedmiot: %s :: Wybuchniesz zaraz po smierci w promieniu %i",player_item_name[id],player_b_explode[id]) } case 23: { player_item_name[id] = "Gold statue" player_item_id[id] = rannum player_b_heal[id] = random_num(5,10) show_hudmessage(id, "Znalazles przedmiot: %s :: Regeneruje %i hp co kazde 5 sekund. Uzyj, zeby polozyc totem ktory bedzie leczyl wszystkich w zasiegu %i",player_item_name[id],player_b_heal[id],player_b_heal[id]) } case 24: { player_item_name[id] = "Daylight Diamond" player_item_id[id] = rannum player_b_heal[id] = random_num(10,20) show_hudmessage(id, "Znalazles przedmiot: %s :: Regeneruje %i hp co kazde 5 sekund. Uzyj, zeby polozyc totem ktory bedzie leczyl wszystkich w zasiegu %i",player_item_name[id],player_b_heal[id],player_b_heal[id]) } case 25: { player_item_name[id] = "Blood Diamond" player_item_id[id] = rannum player_b_heal[id] = random_num(20,35) show_hudmessage(id, "Znalazles przedmiot: %s :: Regeneruje %i hp co kazde 5 sekund. Uzyj, zeby polozyc totem ktory bedzie leczyl wszystkich w zasiegu %i",player_item_name[id],player_b_heal[id],player_b_heal[id]) } case 26: { player_item_name[id] = "Wheel of Fortune" player_item_id[id] = rannum player_b_gamble[id] = random_num(2,3) show_hudmessage(id, "Znalazles przedmiot: %s :: +%i daje ci dodatkowa premie w kazdej rundzie",player_item_name[id],player_b_gamble[id]) } case 27: { player_item_name[id] = "Four leaf Clover" player_item_id[id] = rannum player_b_gamble[id] = random_num(4,5) show_hudmessage(id, "Znalazles przedmiot: %s :: +%i daje ci dodatkowa premie w kazdej rundzie",player_item_name[id],player_b_gamble[id]) } case 28: { player_item_name[id] = "Amulet of the sun" player_item_id[id] = rannum player_b_blind[id] = random_num(6,9) show_hudmessage(id, "Znalazles przedmiot: %s :: 1/%i szans na utrate wzroku kiedy uszkadzasz wroga",player_item_name[id],player_b_blind[id]) } case 29: { player_item_name[id] = "Sword of the sun" player_item_id[id] = rannum player_b_blind[id] = random_num(2,5) show_hudmessage(id, "Znalazles przedmiot: %s :: 1/%i szans na utrate wzroku kiedy uszkadzasz wroga",player_item_name[id],player_b_blind[id]) } case 30: { player_item_name[id] = "Fireshield" player_item_id[id] = rannum player_b_fireshield[id] = 1 show_hudmessage(id, "Znalazles przedmiot: %s :: Chroni od natychmiastowego zabicia HE i orbami. Wcisnij e zeby go uzyc",player_item_name[id],player_b_fireshield[id]) } case 31: { player_item_name[id] = "Stealth Shoes" player_item_id[id] = rannum player_b_silent[id] = 1 show_hudmessage(id, "Znalazles przedmiot: %s :: Twoj bieg cichnie",player_item_name[id]) } case 32: { player_item_name[id] = "Meekstone" player_item_id[id] = rannum player_b_meekstone[id] = 1 show_hudmessage(id, "Znalazles przedmiot: %s :: Uzyj, aby podlozyc sztuczna bombe",player_item_name[id]) } case 33: { player_item_name[id] = "Medicine Glar" player_item_id[id] = rannum player_b_teamheal[id] = random_num(10,20) show_hudmessage(id, "Znalazles przedmiot: %s :: Strzel do swojego, aby uleczyc %i hp - wcisnij E, zeby uzyc",player_item_name[id],player_b_teamheal[id]) } case 34: { player_item_name[id] = "Medicine Totem" player_item_id[id] = rannum player_b_teamheal[id] = random_num(20,30) show_hudmessage(id, "Znalazles przedmiot: %s :: Strzel do swojego, aby uleczyc %i hp - wcisnij E, zeby uzyc",player_item_name[id],player_b_teamheal[id]) } case 35: { player_item_name[id] = "Iron Armor" player_item_id[id] = rannum player_b_redirect[id] = random_num(3,6) show_hudmessage(id, "Znalazles przedmiot: %s :: +%i Obniza uszkodzenia zadawane graczowi",player_item_name[id],player_b_redirect[id]) } case 36: { player_item_name[id] = "Mitril Armor" player_item_id[id] = rannum player_b_redirect[id] = random_num(6,11) show_hudmessage(id, "Znalazles przedmiot: %s :: +%i Obniza uszkodzenia zadawane graczowi",player_item_name[id],player_b_redirect[id]) } case 37: { player_item_name[id] = "Godly Armor" player_item_id[id] = rannum player_b_redirect[id] = random_num(10,15) show_hudmessage(id, "Znalazles przedmiot: %s :: +%i Obniza uszkodzenia zadawane graczowi",player_item_name[id],player_b_redirect[id]) } case 38: { player_item_name[id] = "Fireball staff" player_item_id[id] = rannum player_b_fireball[id] = random_num(50,100) show_hudmessage(id, "Znalazles przedmiot: %s :: Uszkadza wszystko w promieniu %i",player_item_name[id],player_b_fireball[id]) } case 39: { player_item_name[id] = "Fireball scepter" player_item_id[id] = rannum player_b_fireball[id] = random_num(100,200) show_hudmessage(id, "Znalazles przedmiot: %s :: Uszkadza wszystko w promieniu %i",player_item_name[id],player_b_fireball[id]) } case 40: { player_item_name[id] = "Ghost Rope" player_item_id[id] = rannum player_b_ghost[id] = random_num(3,6) show_hudmessage(id, "Znalazles przedmiot: %s :: Mozesz przenikac przez sciany przez %i sekund",player_item_name[id],player_b_ghost[id]) } case 41: { player_item_name[id] = "Nicolas Eye" player_item_id[id] = rannum player_b_eye[id] = -1 show_hudmessage(id, "Znalazles przedmiot: %s :: Uzyj aby polozyc kamere i uzyj ponownie zeby uzyc i zatrzymac",player_item_name[id]) } case 42: { player_item_name[id] = "Knife Ruby" player_item_id[id] = rannum player_b_blink[id] = floatround(halflife_time()) show_hudmessage(id, "Znalazles przedmiot: %s :: Twoj noz pozwala ci teleportowac sie raz na 3 sekundy",player_item_name[id]) } case 43: { player_item_name[id] = "Lothars Edge" player_item_id[id] = rannum player_b_windwalk[id] = random_num(4,7) show_hudmessage(id, "Znalazles przedmiot: %s :: Uzyj a staniesz sie niewidzialny przez %i sekund i w tym czasie nie mozesz atakowac ale za to szybko biegasz",player_item_name[id],player_b_windwalk[id]) } case 44: { player_item_name[id] = "Sword" player_item_id[id] = rannum player_sword[id] = 1 show_hudmessage(id, "Znalazles przedmiot: %s :: zadajesz wieksze obrazenia nozem",player_item_name[id]) } case 45: { player_item_name[id] = "Magic Booster" player_item_id[id] = rannum player_b_froglegs[id] = 1 show_hudmessage(id, "Znalazles przedmiot: %s :: Kucnij na 3 sekundy, a zrobisz dlugi skok",player_item_name[id]) } case 46: { player_item_name[id] = "Dagon I" player_item_id[id] = rannum player_b_dagon[id] = 1 show_hudmessage(id, "Znalazles przedmiot: %s :: Uzyj zeby uderzyc twojego przeciwnika piorunem ognia",player_item_name[id]) } case 47: { player_item_name[id] = "Scout Extender" player_item_id[id] = rannum player_b_sniper[id] = random_num(3,4) show_hudmessage(id, "Znalazles przedmiot: %s :: 1/%i szans do natychmiastowego zabicia scoutem",player_item_name[id],player_b_sniper[id]) } case 48: { player_item_name[id] = "Scout Amplifier" player_item_id[id] = rannum player_b_sniper[id] = random_num(2,3) show_hudmessage(id, "Znalazles przedmiot: %s :: 1/%i szans do natychmiastowego zabicia scoutem",player_item_name[id],player_b_sniper[id]) } case 49: { player_item_name[id] = "Air booster" player_item_id[id] = rannum player_b_jumpx[id] = 1 show_hudmessage(id, "Znalazles przedmiot: %s :: Mozesz zrobic podwojny skok w powietrzu",player_item_name[id],player_b_sniper[id]) } case 50: { player_item_name[id] = "Iron Spikes" player_item_id[id] = rannum player_b_smokehit[id] = 1 show_hudmessage(id, "Znalazles przedmiot: %s :: Jezeli uderzasz kogos granatami dymym, to on zginie",player_item_name[id]) } case 51: { player_item_name[id] = "Point Booster" player_item_id[id] = rannum player_b_extrastats[id] = random_num(1,3) BoostStats(id,player_b_extrastats[id]) show_hudmessage(id, "Znalazles przedmiot: %s :: Zyskasz +%i do wszystkich statystyk",player_item_name[id],player_b_extrastats[id]) } case 52: { player_item_name[id] = "Totem amulet" player_item_id[id] = rannum player_b_firetotem[id] = random_num(250,400) show_hudmessage(id, "Znalazles przedmiot: %s :: Uzyj, aby polozyc wybuchowy totem ognia",player_item_name[id]) } case 53: { player_item_name[id] = "Magic Hook" player_item_id[id] = rannum player_b_hook[id] = 1 show_hudmessage(id, "Znalazles przedmiot: %s :: Uzyj, aby rzucic hakiem",player_item_name[id]) } case 54: { player_item_name[id] = "Darksteel Glove" player_item_id[id] = rannum player_b_darksteel[id] = random_num(1,5) show_hudmessage(id, "Znalazles przedmiot: %s :: Dodatkowe uszkodzenia, gdy trafisz kogos od tyล‚u",player_item_name[id]) } case 55: { player_item_name[id] = "Darksteel Gaunlet" player_item_id[id] = rannum player_b_darksteel[id] = random_num(7,9) show_hudmessage(id, "Znalazles przedmiot: %s :: Dodatkowe uszkodzenia, gdy trafisz kogos od tyล‚u",player_item_name[id]) } case 56: { player_item_name[id] = "Illusionists Cape" player_item_id[id] = rannum player_b_illusionist[id] = 1 show_hudmessage(id, "Znalazles przedmiot: %s :: Uzyj, aby stac sie niewidoczny dla wszystkich",player_item_name[id]) } case 57: { player_item_name[id] = "Techies scepter" player_item_id[id] = rannum player_b_mine[id] = 3 show_hudmessage(id, "Znalazles przedmiot: %s :: Uzyj, zeby polozyc niewidzialna mine",player_item_name[id]) } case 58: { player_item_name[id] = "Ninja ring" player_item_id[id] = rannum player_b_blink[id] = floatround(halflife_time()) player_b_froglegs[id] = 1 show_hudmessage(id, "Znalazles przedmiot: %s :: Twoj noz pozwala ci teleportowac sie co 3 sekundy i zrobic dlugi skok jak kucniesz na 3 sekundy",player_item_name[id]) } case 59: { player_item_name[id] = "Mag ring" player_item_id[id] = rannum player_ring[id]=1 player_b_fireball[id] = random_num(50,80) show_hudmessage(id, "Znalazles przedmiot : %s :: Ten przedmiot dodaje ci +5 inteligencji i robi ognista kule, wcisnij E aby urzyc",player_item_name[id]) } case 60: { player_item_name[id] = "Nekromanta ring" player_item_id[id] = rannum player_b_respawn[id] = random_num(2,4) player_b_vampire[id] = random_num(3,5) show_hudmessage(id, "Znalazles przedmiot : %s :: Dzieki temu itemowi masz szanse na ponowne odrodzenie sie i wysysasz zycie wrogowi",player_item_name[id]) } case 61: { player_item_name[id] = "Barbarzynca ring" player_item_id[id] = rannum player_b_explode[id] = random_num(120,330) player_ring[id]=2 show_hudmessage(id, "Znalazles przedmiot : %s :: Ten item dodaje ci +5 sily i jak zginiesz wybuchasz",player_item_name[id]) } case 62: { player_item_name[id] = "Paladyn ring" player_item_id[id] = rannum player_b_redirect[id] = random_num(7,17) player_b_blind[id] = random_num(3,4) show_hudmessage(id, "Znalazles przedmiot : %s :: Redukuje normalne obrazenia i masz szanse na oslepienie wroga",player_item_name[id]) } case 63: { player_item_name[id] = "Mnich ring" player_item_id[id] = rannum player_b_grenade[id] = random_num(1,4) player_b_heal[id] = random_num(20,35) show_hudmessage(id, "Znalazles przedmiot : %s :: Masz szanse na natychmiastowe zabicie z HE. Twoje hp bedzie sie regenerowac co 5 sekund oraz mozesz polozyc leczacy totem na 7 sekund",player_item_name[id]) } case 64: { player_item_name[id] = "Zabojca ring" player_item_id[id] = rannum player_b_jumpx[id] = 1 player_ring[id]=3 show_hudmessage(id, "Znalazles przedmiot : %s :: Dostajesz +5 do zwinnosci. Mozesz zrobic podwojny skok w powietrzu",player_item_name[id]) } case 65: { player_item_name[id] = "Flashbang necklace" player_item_id[id] = rannum wear_sun[id] = 1 show_hudmessage (id, "Znalazles przedmiot : %s :: Flashbangi na ciebie nie dzialaja",player_item_name[id]) } case 66: { player_item_name[id] = "Chameleon" player_item_id[id] = 66 changeskin(id,0) show_hudmessage (id, "Znalazles przedmiot : %s :: Wygladasz jak przeciwnik",player_item_name[id]) } case 67: { player_item_name[id] = "Stong Armor" player_item_id[id] = 67 player_ultra_armor[id]=random_num(3,6) player_ultra_armor_left[id]=player_ultra_armor[id] show_hudmessage (id, "Znalazles przedmiot : %s :: Twoj pancerz moze odbic do %i pociskow",player_item_name[id],player_ultra_armor[id]) } case 68: { player_item_name[id] = "Ultra Armor" player_item_id[id] = 68 player_ultra_armor[id]=random_num(7,11) player_ultra_armor_left[id]=player_ultra_armor[id] show_hudmessage (id, "Znalazles przedmiot : %s :: Twoj pancerz moze odbic do %i pociskow",player_item_name[id],player_ultra_armor[id]) } } BoostRing(id) return PLUGIN_CONTINUE } /* UNIQUE ITEMS ============================================================================================ */ //Names are generated from an array public award_unique_item(id) { new Unique_names_Suffix[10][100] new Unique_names_Prefix[10][100] Unique_names_Suffix[1] = "Saintly amulet " Unique_names_Suffix[2] = "Holy sword " Unique_names_Suffix[3] = "Small staff " Unique_names_Suffix[4] = "Bright rope " Unique_names_Suffix[5] = "Shiny scepter " Unique_names_Prefix[1] = "of the stars" Unique_names_Prefix[2] = "of power" Unique_names_Prefix[3] = "of zod" Unique_names_Prefix[4] = "of life" Unique_names_Prefix[5] = "of the sun" //Generate the items name new roll_1 = random_num(1,4) new roll_2 = random_num(1,4) new Unique_name[100] add(Unique_name,99,Unique_names_Suffix[roll_1]) add(Unique_name,99,Unique_names_Prefix[roll_2]) player_item_name[id] = Unique_name player_item_id[id] = 100 //Generate and apply the stats if (roll_1 == 1) player_b_damage[id] = random_num(1,5) if (roll_1 == 2) player_b_vampire[id] = random_num(1,5) if (roll_1 == 3) player_b_money[id] = random_num(2500,5000) if (roll_1 == 4) player_b_reduceH[id] = random_num(20,50) if (roll_1 == 5) player_b_blind[id] = random_num(3,5) if (roll_2 == 1) player_b_grenade[id] = random_num(1,4) if (roll_2 == 2) player_b_respawn[id] = random_num(2,4) if (roll_2 == 3) player_b_explode[id] = random_num(150,400) if (roll_2 == 4) player_b_redirect[id] = random_num(5,10) if (roll_2 == 5) player_b_heal[id] = random_num(1,15) item_durability[id] = 350 set_hudmessage(220, 115, 70, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5) show_hudmessage(id, "Uniqie Znalazles przedmiot: %s", Unique_name) } /* EFFECTS ================================================================================================= */ public add_damage_bonus(id,damage,attacker_id) { if (player_b_damage[attacker_id] > 0 && get_user_health(id)>player_b_damage[attacker_id]) { change_health(id,-player_b_damage[attacker_id],attacker_id,"") if (random_num(0,2) == 1) Effect_Bleed(id,248) } } /* ==================================================================================================== */ public add_vampire_bonus(id,damage,attacker_id) { if (player_b_vampire[attacker_id] > 0) { change_health(attacker_id,player_b_vampire[attacker_id],0,"") } } /* ==================================================================================================== */ public add_money_bonus(id) { if (player_b_money[id] > 0) { if (cs_get_user_money(id) < 16000 - player_b_money[id]+player_intelligence[id]*50) { cs_set_user_money(id,cs_get_user_money(id)+ player_b_money[id]+player_intelligence[id]*50) } else { cs_set_user_money(id,16000) } } } /* ==================================================================================================== */ public add_grenade_bonus(id,attacker_id,weapon) { if (player_b_grenade[attacker_id] > 0 && weapon == CSW_HEGRENADE && player_b_fireshield[id] == 0) //Fireshield check { new roll = random_num(1,player_b_grenade[attacker_id]) if (roll == 1) { UTIL_Kill(attacker_id,id, "weapon_hegrenade") } } } /* ==================================================================================================== */ public add_redhealth_bonus(id) { if (player_b_reduceH[id] > 0) change_health(id,-player_b_reduceH[id],0,"") if(player_item_id[id]==17) //stalker ring set_user_health(id,5) } /* ==================================================================================================== */ public add_theif_bonus(id,attacker_id) { if (player_b_theif[attacker_id] > 0) { new roll1 = random_num(1,5) if (roll1 == 1) { if (cs_get_user_money(id) > player_b_theif[attacker_id]) { cs_set_user_money(id,cs_get_user_money(id)-player_b_theif[attacker_id]) if (cs_get_user_money(attacker_id) + player_b_theif[attacker_id] <= 16000) { cs_set_user_money(attacker_id,cs_get_user_money(attacker_id)+player_b_theif[attacker_id]) } } else { new allthatsleft = cs_get_user_money(id) cs_set_user_money(id,0) if (cs_get_user_money(attacker_id) + allthatsleft <= 16000) { cs_set_user_money(attacker_id,cs_get_user_money(attacker_id) + allthatsleft) } } } } } /* ==================================================================================================== */ public add_respawn_bonus(id) { if (player_b_respawn[id] > 0) { new svIndex[32] num_to_str(id,svIndex,32) new roll = random_num(1,player_b_respawn[id]) if (roll == 1) { new maxpl,players[32] get_players(players, maxpl) if (maxpl > 2) { cs_set_user_money(id,cs_get_user_money(id)+4000) set_task(0.5,"respawn",0,svIndex,32) } else { set_hudmessage(220, 115, 70, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5) show_hudmessage(id, "Wiecej niz 2 graczy jest wymagane do ponownego odrodzenia sie") } } } } public respawn(svIndex[]) { new vIndex = str_to_num(svIndex) RemoveFlag(vIndex,Flag_Rot) // usuwamy swiecenie spawn(vIndex); } /* ==================================================================================================== */ public add_bonus_explode(id) { if (player_b_explode[id] > 0) { new origin[3] get_user_origin(id,origin) explode(origin,id,0) for(new a = 0; a < MAX; a++) { if (!is_user_connected(a) || !is_user_alive(a) || player_b_fireshield[a] != 0 || get_user_team(a) == get_user_team(id)) continue new origin1[3] get_user_origin(a,origin1) if(get_distance(origin,origin1) < player_b_explode[id] + player_intelligence[id]*2) { new dam = 75-(player_dextery[a]*2) if(dam<1) dam=1 change_health(a,-dam,id,"grenade") Display_Fade(id,2600,2600,0,255,0,0,15) } } } } public explode(vec1[3],playerid, trigger) { message_begin( MSG_BROADCAST,SVC_TEMPENTITY,vec1) write_byte( 21 ) write_coord(vec1[0]) write_coord(vec1[1]) write_coord(vec1[2] + 32) write_coord(vec1[0]) write_coord(vec1[1]) write_coord(vec1[2] + 1000) write_short( sprite_white ) write_byte( 0 ) write_byte( 0 ) write_byte( 3 ) write_byte( 10 ) write_byte( 0 ) write_byte( 188 ) write_byte( 220 ) write_byte( 255 ) write_byte( 255 ) write_byte( 0 ) message_end() message_begin( MSG_BROADCAST,SVC_TEMPENTITY) write_byte( 12 ) write_coord(vec1[0]) write_coord(vec1[1]) write_coord(vec1[2]) write_byte( 188 ) write_byte( 10 ) message_end() message_begin( MSG_BROADCAST,SVC_TEMPENTITY,vec1) write_byte( 3 ) write_coord(vec1[0]) write_coord(vec1[1]) write_coord(vec1[2]) write_short( sprite_fire ) write_byte( 65 ) write_byte( 10 ) write_byte( 0 ) message_end() message_begin(MSG_BROADCAST,SVC_TEMPENTITY,{0,0,0},playerid) write_byte(107) write_coord(vec1[0]) write_coord(vec1[1]) write_coord(vec1[2]) write_coord(175) write_short (sprite_gibs) write_short (25) write_byte (10) message_end() if (trigger == 1) { set_user_rendering(playerid,kRenderFxNone, 0,0,0, kRenderTransAdd,0) } } /* ==================================================================================================== */ public add_bonus_gamble(id) { if (player_b_gamble[id] > 0 && is_user_alive(id)) { new durba=item_durability[id] reset_item_skills(id) item_durability[id]=durba set_hudmessage(220, 115, 70, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5) new roll = random_num(1,player_b_gamble[id]) if (roll == 1) { show_hudmessage(id, "Premia rundy: +5 obrazen") player_b_damage[id] = 5 } if (roll == 2) { show_hudmessage(id, "Premia rundy: +5 do wyzszego skoku") player_b_gravity[id] = 5 } if (roll == 3) { show_hudmessage(id, "Premia rundy: +5 obrazen wampira") player_b_vampire[id] = 5 } if (roll == 4) { show_hudmessage(id, "Premia rundy: +10 hp co kazde 5 sekund") player_b_heal[id] = 10 } if (roll == 5) { show_hudmessage(id, "Premia rundy: 1/3 szans do natychmiastowego zabicia HE") player_b_grenade[id] = 3 } } } /* ==================================================================================================== */ public add_bonus_blind(id,attacker_id,weapon,damage) { if (player_b_blind[attacker_id] > 0 && weapon != 4) { if (random_num(1,player_b_blind[attacker_id]) == 1) Display_Fade(id,1<<14,1<<14 ,1<<16,255,155,50,230) } } /* ==================================================================================================== */ public item_c4fake(id) { if (c4state[id] > 1) { hudmsg(id,2.0,"Meekstone mozesz uzyc raz na runde!") return PLUGIN_CONTINUE } if (player_b_meekstone[id] > 0 && c4state[id] == 1 && is_user_alive(id) == 1 && freeze_ended == true) { explode(c4bombc[id],id,0) for(new a = 0; a < MAX; a++) { if (is_user_connected(a) && is_user_alive(a)) { new origin1[3] get_user_origin(a,origin1) if(get_distance(c4bombc[id],origin1) < 300 && get_user_team(a) != get_user_team(id)) { UTIL_Kill(id,a,"grenade") } } } c4state[id] = 2 remove_entity(c4fake[id]) c4fake[id] = 0 } if (player_b_meekstone[id] > 0 && c4state[id] == 0 && c4fake[id] == 0 && is_user_alive(id) == 1 && freeze_ended == true) { new Float:pOrigin[3] entity_get_vector(id,EV_VEC_origin, pOrigin) c4fake[id] = create_entity("info_target") entity_set_model(c4fake[id],"models/w_backpack.mdl") entity_set_origin(c4fake[id],pOrigin) entity_set_string(c4fake[id],EV_SZ_classname,"fakec4") entity_set_edict(c4fake[id],EV_ENT_owner,id) entity_set_int(c4fake[id],EV_INT_movetype,6) new Float:aOrigin[3] entity_get_vector(c4fake[id],EV_VEC_origin, aOrigin) c4bombc[id][0] = floatround(aOrigin[0]) c4bombc[id][1] = floatround(aOrigin[1]) c4bombc[id][2] = floatround(aOrigin[2]) c4state[id] = 1 } return PLUGIN_CONTINUE } /* ==================================================================================================== */ public item_fireball(id) { if (fired[id] > 0) { hudmsg(id,2.0,"Ognistej kuli mozesz uzyc raz na runde!") return PLUGIN_HANDLED } if (fired[id] == 0 && is_user_alive(id) == 1) { fired[id] = 1 new Float:vOrigin[3] new fEntity entity_get_vector(id,EV_VEC_origin, vOrigin) fEntity = create_entity("info_target") entity_set_model(fEntity, "models/rpgrocket.mdl") entity_set_origin(fEntity, vOrigin) entity_set_int(fEntity,EV_INT_effects,64) entity_set_string(fEntity,EV_SZ_classname,"fireball") entity_set_int(fEntity, EV_INT_solid, SOLID_BBOX) entity_set_int(fEntity,EV_INT_movetype,5) entity_set_edict(fEntity,EV_ENT_owner,id) //Send forward new Float:fl_iNewVelocity[3] VelocityByAim(id, 500, fl_iNewVelocity) entity_set_vector(fEntity, EV_VEC_velocity, fl_iNewVelocity) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(22) write_short(fEntity) write_short(sprite_beam) write_byte(45) write_byte(4) write_byte(255) write_byte(0) write_byte(0) write_byte(25) message_end() } return PLUGIN_HANDLED } /* ==================================================================================================== */ public add_bonus_redirect(id) { if (player_b_redirect[id] > 0) { if (get_user_health(id)+player_b_redirect[id] <= race_heal[player_class[id]]+player_strength[id]*1) { change_health(id,player_b_redirect[id],0,"") } } } /* ==================================================================================================== */ public item_ghost(id) { if (ghoststate[id] == 0 && player_b_ghost[id] > 0 && is_user_alive(id) && !ghost_check) { set_user_noclip(id,1) ghoststate[id] = 2 ghosttime[id] = floatround(halflife_time()) ghost_check = true message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id ) write_byte( player_b_ghost[id]+1 ) write_byte( 0 ) message_end() } else { hudmsg(id,3.0,"Tylko jeden gracz moze uzywac Ducha w tym samym czasie! / Przedmiot zostal uzyty!") } } /* ==================================================================================================== */ public add_bonus_darksteel(attacker,id,damage) { if (player_b_darksteel[attacker] > 0) { if (UTIL_In_FOV(attacker,id) && !UTIL_In_FOV(id,attacker)) { new dam = floatround (15+player_strength[id]*2*player_b_darksteel[id]/10.0) Effect_Bleed(id,248) change_health(id,-dam,attacker,"world") } } } /* ==================================================================================================== */ public item_eye(id) { if (player_b_eye[id] == -1) { //place camera new Float:playerOrigin[3] entity_get_vector(id,EV_VEC_origin,playerOrigin) new ent = create_entity("info_target") entity_set_string(ent, EV_SZ_classname, "PlayerCamera") entity_set_int(ent, EV_INT_movetype, MOVETYPE_NOCLIP) entity_set_int(ent, EV_INT_solid, SOLID_NOT) entity_set_edict(ent, EV_ENT_owner, id) entity_set_model(ent, "models/rpgrocket.mdl") //Just something entity_set_origin(ent,playerOrigin) entity_set_int(ent,EV_INT_iuser1,0) //Viewing through this camera set_rendering (ent,kRenderFxNone, 0,0,0, kRenderTransTexture,0) entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01) player_b_eye[id] = ent } else { //view through camera or stop viewing new ent = player_b_eye[id] if (!is_valid_ent(ent)) { attach_view(id,id) return PLUGIN_HANDLED } new viewing = entity_get_int(ent,EV_INT_iuser1) if (viewing) { entity_set_int(ent,EV_INT_iuser1,0) attach_view(id,id) } else { entity_set_int(ent,EV_INT_iuser1,1) attach_view(id,ent) } } return PLUGIN_HANDLED } /* ==================================================================================================== */ //Called when PlayerCamera thinks public Think_PlayerCamera(ent) { new id = entity_get_edict(ent,EV_ENT_owner) //Check if player is still having the item and is still online if (!is_valid_ent(id) || player_b_eye[id] == 0 || !is_user_connected(id)) { //remove entity if (is_valid_ent(id) && is_user_connected(id)) attach_view(id,id) remove_entity(ent) } else { //Dont use cpu when not alive anyway or not viewing if (!is_user_alive(id)) { entity_set_float(ent,EV_FL_nextthink,halflife_time() + 3.0) return PLUGIN_HANDLED } if (!entity_get_int(ent,EV_INT_iuser1)) { entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.5) return PLUGIN_HANDLED } entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01) //Find nearest player to camera new Float:pOrigin[3],Float:plOrigin[3],Float:ret[3] entity_get_vector(ent,EV_VEC_origin,plOrigin) new Float:distrec = 2000.0, winent = -1 for (new i=0; i -1) { new Float:toplayer[3], Float:ideal[3],Float:pOrigin[3] entity_get_vector(winent,EV_VEC_origin,pOrigin) pOrigin[2]+=10.0 toplayer[0] = pOrigin[0]-plOrigin[0] toplayer[1] = pOrigin[1]-plOrigin[1] toplayer[2] = pOrigin[2]-plOrigin[2] vector_to_angle ( toplayer, ideal ) ideal[0] = ideal[0]*-1 entity_set_vector(ent,EV_VEC_angles,ideal) } } return PLUGIN_CONTINUE } public Create_Line(id,origin1[3],origin2[3],bool:draw) { if (draw) { message_begin(MSG_ONE,SVC_TEMPENTITY,{0,0,0},id) write_byte(0) write_coord(origin1[0]) // starting pos write_coord(origin1[1]) write_coord(origin1[2]) write_coord(origin2[0]) // ending pos write_coord(origin2[1]) write_coord(origin2[2]) write_short(sprite_line) // sprite index write_byte(1) // starting frame write_byte(5) // frame rate write_byte(2) // life write_byte(3) // line width write_byte(0) // noise write_byte(255) // RED write_byte(50) // GREEN write_byte(50) // BLUE write_byte(155) // brightness write_byte(5) // scroll speed message_end() } new Float:ret[3],Float:fOrigin1[3],Float:fOrigin2[3] //So we dont hit ourself origin1[2]+=50 IVecFVec(origin1,fOrigin1) IVecFVec(origin2,fOrigin2) new hit = trace_line ( 0, fOrigin1, fOrigin2, ret ) return hit } /* ==================================================================================================== */ public Prethink_Blink(id) { if( get_user_button(id) & IN_ATTACK2 && !(get_user_oldbutton(id) & IN_ATTACK2) && is_user_alive(id)) { if (on_knife[id]) { if (halflife_time()-player_b_blink[id] <= 3) return PLUGIN_HANDLED player_b_blink[id] = floatround(halflife_time()) UTIL_Teleport(id,300+15*player_intelligence[id]) } } return PLUGIN_CONTINUE } /* ==================================================================================================== */ /* Called on end or mapchange -- Save items for players public plugin_end() { new Datafile[64], amxbasedir[64] //build_path(Datafile,63,"$basedir/diablo/datafile.txt") get_basedir(amxbasedir,63) format(Datafile,63,"%s/diablo/datafile.txt",amxbasedir) if(file_exists(Datafile)) delete_file(Datafile) //Write name and item for each player for (new i=0; i < MAX; i++) { if (player_dc_item[i] > 0 && player_dc_item[i] != 100) //unique { new data[100] format(data,99,"%s^"%i^"",player_dc_name[i],player_dc_item[i]) write_file(Datafile,data) } } } */ /* ==================================================================================================== */ /* ==================================================================================================== */ /* ==================================================================================================== */ /* ==================================================================================================== */ public item_convertmoney(id) { new maxhealth = race_heal[player_class[id]]+player_strength[id]*2 if (cs_get_user_money(id) < 1000) hudmsg(id,2.0,"Nie masz wystarczajacej ilosci zlota, zeby zamienic je w zycie") else if (get_user_health(id) == maxhealth) hudmsg(id,2.0,"Masz maksymalna ilosc zycia") else { cs_set_user_money(id,cs_get_user_money(id)-1000) change_health(id,15,0,"") Display_Fade(id,2600,2600,0,0,255,0,15) } } public item_windwalk(id) { //First time this round if (player_b_usingwind[id] == 0) { new szId[10] num_to_str(id,szId,9) player_b_usingwind[id] = 1 set_renderchange(id) engclient_cmd(id,"weapon_knife") on_knife[id]=1 set_user_maxspeed(id,500.0) new Float:val = player_b_windwalk[id] + 0.0 set_task(val,"resetwindwalk",0,szId,32) message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id ) write_byte( player_b_windwalk[id]) write_byte( 0 ) message_end() } //Disable again else if (player_b_usingwind[id] == 1) { player_b_usingwind[id] = 2 set_renderchange(id) set_user_maxspeed(id,270.0) message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id ) write_byte( 0) write_byte( 0 ) message_end() } //Already used else if (player_b_usingwind[id] == 2) { set_hudmessage(220, 30, 30, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5) show_hudmessage(id, "Ten przedmiot mozesz uzyc raz na runde!") } } public resetwindwalk(szId[]) { new id = str_to_num(szId) if (id < 0 || id > MAX) { log_amx("Error in resetwindwalk, id: %i out of bounds", id) } if (player_b_usingwind[id] == 1) { player_b_usingwind[id] = 2 set_renderchange(id) set_user_maxspeed(id,270.0) message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id ) write_byte( 0) write_byte( 0 ) message_end() } } /* ==================================================================================================== */ public Prethink_usingwind(id) { if( get_user_button(id) & IN_ATTACK && is_user_alive(id)) { new buttons = pev(id,pev_button) set_pev(id,pev_button,(buttons & ~IN_ATTACK)); return FMRES_HANDLED; } if( get_user_button(id) & IN_ATTACK2 && is_user_alive(id)) { new buttons = pev(id,pev_button) set_pev(id,pev_button,(buttons & ~IN_ATTACK2)); return FMRES_HANDLED; } return PLUGIN_CONTINUE } /* ==================================================================================================== */ public cvar_result_func(id, const cvar[], const value[]) { player_b_oldsen[id] = str_to_float(value) new svIndex[32] num_to_str(id,svIndex,32) set_task(2.5,"resetsens",0,svIndex,32) } public resetsens(svIndex[]) { new id = str_to_num(svIndex) if (player_b_oldsen[id] > 0.0) { client_cmd(id,"sensitivity %f",player_b_oldsen[id]) player_b_oldsen[id] = 0.0 } message_begin( MSG_ONE, get_user_msgid("StatusIcon"), {0,0,0}, id ) write_byte( 0 ) write_string( "dmg_chem") write_byte( 100 ) // red write_byte( 100 ) // green write_byte( 100 ) // blue message_end() } /* ==================================================================================================== */ public Prethink_confuseme(id) { if (player_b_oldsen[id] > 0.0) client_cmd(id,"sensitivity %f", 25.0) } public Bot_Setup() { for (new id=0; id < MAX; id++) { if (is_user_connected(id) && is_user_bot(id)) { if (random_num(1,3) == 1 && player_item_id[id] > 0) client_cmd(id,"say /drop") while (player_point[id] > 0) { player_point[id]-- switch(random_num(1,4)) { case 1: { player_agility[id]++ } case 2: { player_strength[id]++ } case 3: { player_intelligence[id]++ } case 4: { player_dextery[id]++ } } } } } } /* ==================================================================================================== */ public host_killed(id) { if (player_lvl[id] > 1) { hudmsg(id,2.0,"Straciles doswiadczenie za zabicie zakladnikow") Give_Xp(id,-floatround(3*player_lvl[id]/(1.65-player_lvl[id]/202))) } } /* ==================================================================================================== */ public show_menu_item(id) { new text[513] format(text, 512, "\yNowe Itemy - ^n\w1. Mag ring^n\w2. Paladyn ring^n\w3. Mnich ring^n\w4. Barbarzynca ring^n\w5. Zabojca ring^n\w6. Nekromanta ring^n\w7. Ninja ring^n\w8. Flashbang necklace^n\w9. Zamknij") new keys keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8) show_menu(id, keys, text) return PLUGIN_HANDLED } public nowe_itemy(id, key) { switch(key) { case 0: { magring(id) } case 1: { paladynring(id) } case 2: { mnichring(id) } case 3: { barbarzyncaring(id) } case 4: { zabojcaring(id) } case 5: { nekromantaring(id) } case 6: { ninjaring(id) } case 7: { flashbangnecklace(id) } case 8: { return PLUGIN_HANDLED } } return PLUGIN_HANDLED } public magring(id) { showitem(id,"Mag ring","Common","None","
Dostajesz +5 inteligencji.
Druga funcja: Mozesz wytworzyc ognista kule

") } public paladynring(id) { showitem(id,"Paladyn ring","Common","None","
Redukuje normalne obrazenia i masz szanse na oslepienie gracza

") } public mnichring(id) { showitem(id,"Mnich ring","Common","None","
Mozesz leczyc osoby z teamu, klasc totem ktory leczy cie i towje hp jest odnawiane co 5 sek

") } public barbarzyncaring(id) { showitem(id,"Barbarzynca ring","Common","None","
Ten item dodaje ci +5 sily i jak zginiesz wybuchasz

") } public zabojcaring(id) { showitem(id,"Zabojca ring","Common","None","
Dodaje ci +5 agility i mozesz zrobic podwojny skok

") } public nekromantaring(id) { showitem(id,"Nekromanta ring","Common","None","
Mozesz ponownie odrodzic sie.
Dostajesz vampiric obraznia

") } public ninjaring(id) { showitem(id,"Ninja ring","Common","None","
Mozesz teleportowac sie co 3 sekundy jesli uzyjesz prawego ataku noza.
Druga funkcja : kucnij aby zrobic dlugi skok

") } public flashbangnecklace(id) { showitem(id,"Flashbang necklece","Common","None","
Flashbangi na ciebie nie dzialaja

") } /* ==================================================================================================== */ public showmenu(id) { new text[513] new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<9) format(text, 512, "\yOpcje - ^n\w1. Informacje o przedmiocie^n\w2. Upusc obecny przedmiot^n\w3. Pokaz pomoc^n\w4. Uzyj mocy przedmiotu^n\w5. Kup Rune^n\w6. Informacje o statystykach^n^n\w0. Zamknij") show_menu(id, keys, text) return PLUGIN_HANDLED } public option_menu(id, key) { switch(key) { case 0: { iteminfo(id) } case 1: { dropitem(id) } case 2: { helpme(id) } case 3: { Use_Spell(id) } case 4: { buyrune(id) } case 5: { showskills(id) } case 9: { return PLUGIN_HANDLED } } return PLUGIN_HANDLED } public Prethink_froglegs(id) { if (get_user_button(id) & IN_DUCK) { //start holding down button here, set to halflife time if (player_b_froglegs[id] == 1) { player_b_froglegs[id] = floatround(halflife_time()) } else { if (floatround(halflife_time())-player_b_froglegs[id] >= 2.0) { new Float:fl_iNewVelocity[3] VelocityByAim(id, 1000, fl_iNewVelocity) fl_iNewVelocity[2] = 210.0 entity_set_vector(id, EV_VEC_velocity, fl_iNewVelocity) player_b_froglegs[id] = 1 } } } else { player_b_froglegs[id] = 1 } } /* ==================================================================================================== */ public select_class_query(id) { if(is_user_bot(id) || asked_klass[id]!=0) return PLUGIN_HANDLED if(loaded_xp[id]==0) { load_xp(id) return PLUGIN_HANDLED } if(g_boolsqlOK) { asked_klass[id]=1 new name[64] new data[1] data[0]=id new lx[13] if(player_class_lvl_save[id]==0) { if(get_cvar_num("diablo_sql_save")==0) { get_user_name(id,name,63) replace_all ( name, 63, "'", "Q" ) replace_all ( name, 63, "`", "Q" ) new q_command[512] format(q_command,511,"SELECT `klasa`,`lvl` FROM `%s` WHERE `nick`='%s' ",g_sqlTable,name) SQL_ThreadQuery(g_SqlTuple,"select_class_handle", q_command,data,1) } else if(get_cvar_num("diablo_sql_save")==1) { get_user_ip(id, name ,63,1) new q_command[512] format(q_command,511,"SELECT `klasa`,`lvl` FROM `%s` WHERE `ip`='%s' ",g_sqlTable,name) SQL_ThreadQuery(g_SqlTuple,"select_class_handle",q_command,data,1) } else if(get_cvar_num("diablo_sql_save")==2) { get_user_authid(id, name ,63) new q_command[512] format(q_command,511,"SELECT `klasa`,`lvl` FROM `%s` WHERE `sid`='%s' ",g_sqlTable,name) SQL_ThreadQuery(g_SqlTuple,"select_class_handle",q_command,data,1) } /* if(ret == RESULT_FAILED) { new szError[126] dbi_error(sql,szError,125) log_to_file("addons/amxmodx/logs/diablo.log","[Command Log] nie moglem wczytac lvl'i dla %s | klasy :*** %s",name,szError) dbi_free_result(ret) g_boolsqlOK=0 player_class_lvl_save[id]=0 dbi_close(sql) return PLUGIN_HANDLED } else if(ret == RESULT_NONE) { log_to_file("addons/amxmodx/logs/diablo.log","[Command Log] nie ma danych dla /klasa") create_klass(id) return PLUGIN_HANDLED } else while(ret && dbi_nextrow(ret)>0) { new i = dbi_result(ret, "klasa") lx[i] = dbi_result(ret, "lvl") player_class_lvl[id][i] = lx[i] } dbi_free_result(ret) player_class_lvl_save[id]=1 */ } else { for(new i=1;i<13;i++) lx[i]=player_class_lvl[id][i] select_class(id,lx) } } else sql_start() return PLUGIN_HANDLED } public select_class_handle(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { new id=Data[0] if(Errcode) { log_to_file("addons/amxmodx/logs/diablo.log","Error on select_class_handle query: %s",Error) asked_klass[id]=0 } if(FailState == TQUERY_CONNECT_FAILED) { log_to_file("addons/amxmodx/logs/diablo.log","Could not connect to SQL database.") asked_klass[id]=0 return PLUGIN_CONTINUE } else if(FailState == TQUERY_QUERY_FAILED) { log_to_file("addons/amxmodx/logs/diablo.log","select_class_handle Query failed.") asked_klass[id]=0 return PLUGIN_CONTINUE } if(SQL_MoreResults(Query)) { new lx[13] while(SQL_MoreResults(Query)) { new i = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "klasa")) lx[i] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "lvl")) player_class_lvl[id][i] = lx[i] SQL_NextRow(Query) } if(asked_klass[id]==1) { asked_klass[id]=2 select_class(id,lx) } } return PLUGIN_CONTINUE } public select_class(id,lx[]) { if(is_user_bot(id)) return new flags[13] get_cvar_string("diablo_classes",flags,13) new text[512] //new keys = read_flags(flags) asked_klass[id]=0 format(text, 511,"\yWybierz Klase - ^n") for(new i=0;i<8;i++) { format(text, 511,"%s%s%d. %s Level :%d ^n",text,(keyss)&(1< 2) Red = 255 //Dagon damage done is reduced by the targets dextery DagonDamage-=player_dextery[target]*2 if (DagonDamage < 0) DagonDamage = 0 new Hit[3] get_user_origin(target,Hit) //Create Lightning message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(1) // TE_BEAMENTPOINT write_short(id) write_coord(Hit[0]) write_coord(Hit[1]) write_coord(Hit[2]) write_short(sprite_lgt) write_byte(0) write_byte(1) write_byte(3) write_byte(10) //WITD write_byte(60) write_byte(Red) write_byte(0) write_byte(0) write_byte(100) //BRIGT write_byte(0) message_end() player_b_dagfired[id] = true //Apply damage change_health(target,-DagonDamage,id,"world") Display_Fade(target,2600,2600,0,255,0,0,15) hudmsg(id,2.0,"Twoje ciosy dagon przyjol %i, %i", DagonDamage, player_dextery[target]*2) return PLUGIN_HANDLED } /* ==================================================================================================== */ /* ==================================================================================================== */ //Will return 1 if user has amount of money and then substract public bool:UTIL_Buyformoney(id,amount) { if (cs_get_user_money(id) >= amount) { cs_set_user_money(id,cs_get_user_money(id)-amount) return true } else { hudmsg(id,2.0,"Nie masz tyle zlota") return false } return false } public buyrune(id) { new text[513] format(text, 512, "\ySklep z runami - ^n\w1. Upgrade [Moze ulepszyc item] - \r$9000^n\w Uwaga nie kazdy item sie da ulepszyc ^n\Slabe itemy latwo ulepszyc ^n\w4 Mocne itemy moga ulec uszkodzeniu ^n\w5. Sol [Dostajesz losowy przedmiot] \r$5000^n\w6. Zal [Dostajesz doswiadczenia] \r$14500^n^n\w0. Zamknij") new keys = (1<<0)|(1<<4)|(1<<5)|(1<<9) show_menu(id, keys, text) return PLUGIN_HANDLED } public select_rune_menu(id, key) { switch(key) { case 0: { if (!UTIL_Buyformoney(id,9000)) return PLUGIN_HANDLED upgrade_item(id) } case 4: { if (!UTIL_Buyformoney(id,5000)) return PLUGIN_HANDLED award_item(id,0) return PLUGIN_HANDLED } case 5: { if (!UTIL_Buyformoney(id,14500)) return PLUGIN_HANDLED new exp = get_cvar_num("diablo_xpbonus")*random_num(3,10)+player_lvl[id]*get_cvar_num("diablo_xpbonus")/20 Give_Xp(id,exp) client_print(id,print_center,"dostales %d expa!",exp) return PLUGIN_HANDLED } case 9: { return PLUGIN_HANDLED } } return PLUGIN_HANDLED } public upgrade_item(id) { if(item_durability[id]>0) item_durability[id] += random_num(-50,50) if(item_durability[id]<1) { dropitem(id) return } if(player_b_jumpx[id]>0) player_b_jumpx[id] += random_num(0,1) if(player_b_vampire[id]>0) { if(player_b_vampire[id]>20) player_b_vampire[id] += random_num(-1,2) else if(player_b_vampire[id]>10) player_b_vampire[id] += random_num(0,2) else player_b_vampire[id]+= random_num(1,3) } if(player_b_damage[id]>0) player_b_damage[id] += random_num(0,3) if(player_b_money[id]!=0) player_b_money[id]+= random_num(-100,300) if(player_b_gravity[id]>0) { if(player_b_gravity[id]<3) player_b_gravity[id]+=random_num(0,2) else if(player_b_gravity[id]<5) player_b_gravity[id]+=random_num(1,3) else if(player_b_gravity[id]<8) player_b_gravity[id]+=random_num(-1,3) else if(player_b_gravity[id]<10) player_b_gravity[id]+=random_num(0,1) } if(player_b_inv[id]>0) { if(player_b_inv[id]>200) player_b_inv[id]-=random_num(0,50) else if(player_b_inv[id]>100) player_b_inv[id]-=random_num(-25,50) else if(player_b_inv[id]>50) player_b_inv[id]-=random_num(-10,20) else if(player_b_inv[id]>25) player_b_inv[id]-=random_num(-10,10) } if(player_b_grenade[id]>0) { if(player_b_grenade[id]>4) player_b_grenade[id]-=random_num(0,2) else if(player_b_grenade[id]>2) player_b_grenade[id]-=random_num(0,1) else if(player_b_grenade[id]==2) player_b_grenade[id]-=random_num(-1,1) } if(player_b_reduceH[id]>0) player_b_reduceH[id]-=random_num(0,player_b_reduceH[id]) if(player_b_theif[id]>0) player_b_theif[id] += random_num(0,250) if(player_b_respawn[id]>0) { if(player_b_respawn[id]>2) player_b_respawn[id]-=random_num(0,1) else if(player_b_respawn[id]>1) player_b_respawn[id]-=random_num(-1,1) } if(player_b_explode[id]>0)player_b_explode[id] += random_num(0,50) if(player_b_heal[id]>0) { if(player_b_heal[id]>20) player_b_heal[id]+= random_num(-1,3) else if(player_b_heal[id]>10) player_b_heal[id]+= random_num(0,4) else player_b_heal[id]+= random_num(2,6) } if(player_b_blind[id]>0) { if(player_b_blind[id]>5) player_b_blind[id]-= random_num(0,2) else if(player_b_blind[id]>1) player_b_blind[id]-= random_num(0,1) } if(player_b_teamheal[id]>0) player_b_teamheal[id] += random_num(0,5) if(player_b_redirect[id]>0) player_b_redirect[id]+= random_num(0,2) if(player_b_fireball[id]>0) player_b_fireball[id]+= random_num(0,33) if(player_b_ghost[id]>0) player_b_ghost[id]+= random_num(0,1) if(player_b_windwalk[id]>0) player_b_windwalk[id] += random_num(0,1) if(player_b_dagon[id]>0) player_b_dagon[id] += random_num(0,1) if(player_b_sniper[id]>0) { if(player_b_sniper[id]>5) player_b_sniper[id]-=random_num(0,2) else if(player_b_sniper[id]>2) player_b_sniper[id]-=random_num(0,1) else if(player_b_sniper[id]>1) player_b_sniper[id]-=random_num(-1,1) } if(player_b_extrastats[id]>0) player_b_extrastats[id] += random_num(0,2) if(player_b_firetotem[id]>0) player_b_firetotem[id] += random_num(0,50) if(player_b_darksteel[id]>0) player_b_darksteel[id] += random_num(0,2) if(player_b_mine[id]>0) player_b_mine[id] += random_num(0,1) if(player_sword[id]>0) { if(player_b_jumpx[id]==0 && random_num(0,10)==10) player_b_jumpx[id]=1 if(player_b_vampire[id]==0 && random_num(0,10)==10) player_b_vampire[id]=1 if(player_b_gravity[id]==0 && random_num(0,10)==10) player_b_gravity[id]=1 if(player_b_respawn[id]==0 && random_num(0,10)==5) player_b_respawn[id]=15 else if(player_b_respawn[id]>2 && random_num(0,10)==5) player_b_respawn[id]+=random_num(0,1) if(player_b_ghost[id]==0 && random_num(0,10)==10) player_b_ghost[id]=1 if(player_b_darksteel[id]==0 && random_num(0,10)==10) player_b_darksteel[id]=1 } if(player_ultra_armor[id]>0) player_ultra_armor[id]++ } /* ==================================================================================================== */ //Blocks fullupdate (can reset hud) public fullupdate(id) { return PLUGIN_HANDLED } /* ==================================================================================================== */ public add_bonus_scoutdamage(attacker_id,id,weapon) { if (player_b_sniper[attacker_id] > 0 && get_user_team(attacker_id) != get_user_team(id) && weapon == CSW_SCOUT && player_class[attacker_id]!=Ninja) { if (!is_user_alive(id)) return PLUGIN_HANDLED if (random_num(1,player_b_sniper[attacker_id]) == 1) UTIL_Kill(attacker_id,id,"scout") } return PLUGIN_HANDLED } /* ==================================================================================================== */ public add_bonus_illusion(attacker_id,id,weapon) { if(HasFlag(id,Flag_Illusion)) { new weaponname[32] get_weaponname( weapon, weaponname, 31 ) replace(weaponname, 31, "weapon_", "") UTIL_Kill(attacker_id,id,weaponname) } } /* ==================================================================================================== */ public item_take_damage(id,damage) { new itemdamage = get_cvar_num("diablo_durability") if (player_item_id[id] > 0 && item_durability[id] >= 0 && itemdamage> 0 && damage > 5) { //Make item take damage if (item_durability[id] - itemdamage <= 0) { item_durability[id]-=itemdamage dropitem(id) } else { item_durability[id]-=itemdamage } } } /* ==================================================================================================== */ //From twistedeuphoria plugin public Prethink_Doublejump(id) { if(!is_user_alive(id)) return PLUGIN_HANDLED if((get_user_button(id) & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(get_user_oldbutton(id) & IN_JUMP)) { if(jumps[id] < player_b_jumpx[id]) { dojump[id] = true jumps[id]++ return PLUGIN_HANDLED } } if((get_user_button(id) & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND)) { jumps[id] = 0 return PLUGIN_CONTINUE } return PLUGIN_HANDLED } public Postthink_Doubeljump(id) { if(!is_user_alive(id)) return PLUGIN_HANDLED if(dojump[id] == true) { new Float:velocity[3] entity_get_vector(id,EV_VEC_velocity,velocity) velocity[2] = random_float(265.0,285.0) entity_set_vector(id,EV_VEC_velocity,velocity) dojump[id] = false return PLUGIN_CONTINUE } return PLUGIN_HANDLED } /* ==================================================================================================== */ public eventGrenade(id) { new id = read_data(1) if (player_b_grenade[id] > 0 || player_b_smokehit[id] > 0) { set_task(0.1, "makeGlow", id) } } public makeGlow(id) { new grenade new greModel[100] grenade = get_grenade(id) if( grenade ) { entity_get_string(grenade, EV_SZ_model, greModel, 99) if(equali(greModel, "models/w_hegrenade.mdl" ) && player_b_grenade[id] > 0 ) set_rendering(grenade, kRenderFxGlowShell, 255,0,0, kRenderNormal, 255) if(equali(greModel, "models/w_smokegrenade.mdl" ) && player_b_smokehit[id] > 0 ) { set_rendering(grenade, kRenderFxGlowShell, 0,255,255, kRenderNormal, 255) } } } /* ==================================================================================================== */ public BoostStats(id,amount) { player_strength[id]+=amount player_dextery[id]+=amount player_agility[id]+=amount player_intelligence[id]+=amount } public SubtractStats(id,amount) { player_strength[id]-=amount player_dextery[id]-=amount player_agility[id]-=amount player_intelligence[id]-=amount } public BoostRing(id) { switch(player_ring[id]) { case 1: player_intelligence[id]+=5 case 2: player_strength[id]+=5 case 3: player_agility[id]+=5 } } public SubtractRing(id) { switch(player_ring[id]) { case 1: player_intelligence[id]-=5 case 2: player_strength[id]-=5 case 3: player_agility[id]-=5 } } /* ==================================================================================================== */ public SelectBotRace(id) { if (!is_user_bot(id)) return PLUGIN_HANDLED if (player_class[id] == 0) { player_class[id] = random_num(1,7) //load_xp(id) } return PLUGIN_CONTINUE } /* ==================================================================================================== */ public showskills(id) { new Skillsinfo[768] format(Skillsinfo,767,"Masz %i sily - to daje tobie %i zycia

Masz %i zwinnosci - to daje tobie szybsze bieganie o %i punkow i redukuje sile atakow magia %i%%

Masz %i zrecznosci - Redukuje obrazenia z normalnych atkow %0.0f%%

Masz %i inteligencji - to daje im wieksza moc przedmiotom ktorych da sie uzyc
", player_strength[id], player_strength[id]*2, player_dextery[id], floatround(player_dextery[id]*1.3), player_dextery[id]*3, player_agility[id], player_damreduction[id]*100, player_intelligence[id]) showitem(id,"Skills","None","None", Skillsinfo) } /* ==================================================================================================== */ public UTIL_Teleport(id,distance) { Set_Origin_Forward(id,distance) new origin[3] get_user_origin(id,origin) //Particle burst ie. teleport effect message_begin(MSG_BROADCAST ,SVC_TEMPENTITY) //message begin write_byte(TE_PARTICLEBURST ) write_coord(origin[0]) // origin write_coord(origin[1]) // origin write_coord(origin[2]) // origin write_short(20) // radius write_byte(1) // particle color write_byte(4) // duration * 10 will be randomized a bit message_end() } stock Set_Origin_Forward(id, distance) { new Float:origin[3] new Float:angles[3] new Float:teleport[3] new Float:heightplus = 10.0 new Float:playerheight = 64.0 new bool:recalculate = false new bool:foundheight = false pev(id,pev_origin,origin) pev(id,pev_angles,angles) teleport[0] = origin[0] + distance * floatcos(angles[1],degrees) * floatabs(floatcos(angles[0],degrees)); teleport[1] = origin[1] + distance * floatsin(angles[1],degrees) * floatabs(floatcos(angles[0],degrees)); teleport[2] = origin[2]+heightplus while (!Can_Trace_Line_Origin(origin,teleport) || Is_Point_Stuck(teleport,48.0)) { if (distance < 10) break; //First see if we can raise the height to MAX playerheight, if we can, it's a hill and we can teleport there for (new i=1; i < playerheight+20.0; i++) { teleport[2]+=i if (Can_Trace_Line_Origin(origin,teleport) && !Is_Point_Stuck(teleport,48.0)) { foundheight = true heightplus += i break } teleport[2]-=i } if (foundheight) break recalculate = true distance-=10 teleport[0] = origin[0] + (distance+32) * floatcos(angles[1],degrees) * floatabs(floatcos(angles[0],degrees)); teleport[1] = origin[1] + (distance+32) * floatsin(angles[1],degrees) * floatabs(floatcos(angles[0],degrees)); teleport[2] = origin[2]+heightplus } if (!recalculate) { set_pev(id,pev_origin,teleport) return PLUGIN_CONTINUE } teleport[0] = origin[0] + distance * floatcos(angles[1],degrees) * floatabs(floatcos(angles[0],degrees)); teleport[1] = origin[1] + distance * floatsin(angles[1],degrees) * floatabs(floatcos(angles[0],degrees)); teleport[2] = origin[2]+heightplus set_pev(id,pev_origin,teleport) return PLUGIN_CONTINUE } stock bool:Can_Trace_Line_Origin(Float:origin1[3], Float:origin2[3]) { new Float:Origin_Return[3] new Float:temp1[3] new Float:temp2[3] temp1[x] = origin1[x] temp1[y] = origin1[y] temp1[z] = origin1[z]-30 temp2[x] = origin2[x] temp2[y] = origin2[y] temp2[z] = origin2[z]-30 trace_line(-1, temp1, temp2, Origin_Return) if (get_distance_f(Origin_Return,temp2) < 1.0) return true return false } stock bool:Is_Point_Stuck(Float:Origin[3], Float:hullsize) { new Float:temp[3] new Float:iterator = hullsize/3 temp[2] = Origin[2] for (new Float:i=Origin[0]-hullsize; i < Origin[0]+hullsize; i+=iterator) { for (new Float:j=Origin[1]-hullsize; j < Origin[1]+hullsize; j+=iterator) { //72 mod 6 = 0 for (new Float:k=Origin[2]-CS_PLAYER_HEIGHT; k < Origin[2]+CS_PLAYER_HEIGHT; k+=6) { temp[0] = i temp[1] = j temp[2] = k if (point_contents(temp) != -1) return true } } } return false } stock Effect_Bleed(id,color) { new origin[3] get_user_origin(id,origin) new dx, dy, dz for(new i = 0; i < 3; i++) { dx = random_num(-15,15) dy = random_num(-15,15) dz = random_num(-20,25) for(new j = 0; j < 2; j++) { message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte(TE_BLOODSPRITE) write_coord(origin[0]+(dx*j)) write_coord(origin[1]+(dy*j)) write_coord(origin[2]+(dz*j)) write_short(sprite_blood_spray) write_short(sprite_blood_drop) write_byte(color) // color index write_byte(8) // size message_end() } } } /* ==================================================================================================== */ public Use_Spell(id) { if (player_global_cooldown[id] + GLOBAL_COOLDOWN >= halflife_time()) return PLUGIN_CONTINUE else player_global_cooldown[id] = halflife_time() if (!is_user_alive(id) || !freeze_ended) return PLUGIN_CONTINUE /*See if USE button is used for anything else.. 1) Close to bomb 2) Close to hostage 3) Close to switch 4) Close to door */ new Float:origin[3] pev(id, pev_origin, origin) //Func door and func door rotating new aimid, body get_user_aiming ( id, aimid, body ) if (aimid > 0) { new classname[32] pev(aimid,pev_classname,classname,31) if (equal(classname,"func_door_rotating") || equal(classname,"func_door") || equal(classname,"func_button")) { new Float:doororigin[3] pev(aimid, pev_origin, doororigin) if (get_distance_f(origin, doororigin) < 70 && UTIL_In_FOV(id,aimid)) return PLUGIN_CONTINUE } } //Bomb condition new bomb if ((bomb = find_ent_by_model(-1, "grenade", "models/w_c4.mdl"))) { new Float:bombpos[3] pev(bomb, pev_origin, bombpos) //We are near the bomb and have it in FOV. if (get_distance_f(origin, bombpos) < 100 && UTIL_In_FOV(id,bomb)) return PLUGIN_CONTINUE } //Hostage new hostage = engfunc(EngFunc_FindEntityByString, -1,"classname", "hostage_entity") while (hostage) { new Float:hospos[3] pev(hostage, pev_origin, hospos) if (get_distance_f(origin, hospos) < 70 && UTIL_In_FOV(id,hostage)) return PLUGIN_CONTINUE hostage = engfunc(EngFunc_FindEntityByString, hostage,"classname", "hostage_entity") } check_magic(id) return PLUGIN_CONTINUE } /* ==================================================================================================== */ //Angle to all targets in fov stock Float:Find_Angle(Core,Target,Float:dist) { new Float:vec2LOS[2] new Float:flDot new Float:CoreOrigin[3] new Float:TargetOrigin[3] new Float:CoreAngles[3] pev(Core,pev_origin,CoreOrigin) pev(Target,pev_origin,TargetOrigin) if (get_distance_f(CoreOrigin,TargetOrigin) > dist) return 0.0 pev(Core,pev_angles, CoreAngles) for ( new i = 0; i < 2; i++ ) vec2LOS[i] = TargetOrigin[i] - CoreOrigin[i] new Float:veclength = Vec2DLength(vec2LOS) //Normalize V2LOS if (veclength <= 0.0) { vec2LOS[x] = 0.0 vec2LOS[y] = 0.0 } else { new Float:flLen = 1.0 / veclength; vec2LOS[x] = vec2LOS[x]*flLen vec2LOS[y] = vec2LOS[y]*flLen } //Do a makevector to make v_forward right engfunc(EngFunc_MakeVectors,CoreAngles) new Float:v_forward[3] new Float:v_forward2D[2] get_global_vector(GL_v_forward, v_forward) v_forward2D[x] = v_forward[x] v_forward2D[y] = v_forward[y] flDot = vec2LOS[x]*v_forward2D[x]+vec2LOS[y]*v_forward2D[y] if ( flDot > 0.5 ) { return flDot } return 0.0 } stock Float:Vec2DLength( Float:Vec[2] ) { return floatsqroot(Vec[x]*Vec[x] + Vec[y]*Vec[y] ) } stock bool:UTIL_In_FOV(id,target) { if (Find_Angle(id,target,9999.9) > 0.0) return true return false } /* ==================================================================================================== */ public Greet_Player(id) { id-=TASK_GREET new name[32] get_user_name(id,name,31) ColorChat(id, GREEN, "^x04 [Diablo Mod]^x01 Witaj %s w Diablo Mod PL edited by ^x03 eXe", name, "5.6 PL") ColorChat(id, GREEN, "^x04 [Diablo Mod]^x01 Zapraszamy na nasze forum^x03 www.---.pl", name, "5.6 PL") } /* ==================================================================================================== */ /* ==================================================================================================== */ public changerace(id) { if(freeze_ended && player_class[id]!=NONE ) set_user_health(id,0) if(player_class[id]!=NONE) savexpcom(id) player_class[id]=NONE client_connect(id) select_class_query(id) } /* ==================================================================================================== */ //Disable autohelp messages and display our own. public FW_WriteString(string[]) { if (equal(string,"")) return FMRES_IGNORED //Disable autohelp if (equal(string,"#Hint_press_buy_to_purchase") || equal(string,"#Hint_press_buy_to_purchase ")) { write_string( "" ); return FMRES_SUPERCEDE } if (equal(string, "#Hint_spotted_a_friend") || equal(string, "#Hint_you_have_the_bomb")) { write_string( "" ); return FMRES_SUPERCEDE } return FMRES_IGNORED } stock hudmsg(id,Float:display_time,const fmt[], {Float,Sql,Result,_}:...) { if (player_huddelay[id] >= 0.03*4) return PLUGIN_CONTINUE new buffer[512] vformat(buffer, 511, fmt, 4) set_hudmessage ( 255, 0, 0, -1.0, 0.4 + player_huddelay[id], 0, display_time/2, display_time, 0.1, 0.2, -1 ) show_hudmessage(id, buffer) player_huddelay[id]+=0.03 remove_task(id+TASK_HUD) set_task(display_time, "hudmsg_clear", id+TASK_HUD, "", 0, "a", 3) return PLUGIN_CONTINUE } public hudmsg_clear(id) { new pid = id-TASK_HUD player_huddelay[pid]=0.0 } /* ==================================================================================================== */ public item_firetotem(id) { if (used_item[id]) { hudmsg(id,2.0,"Mozesz uzyc raz w rundzie totemu ognia") } else { used_item[id] = true Effect_Ignite_Totem(id,7) } } stock Effect_Ignite_Totem(id,seconds) { new origin[3] pev(id,pev_origin,origin) new ent = Spawn_Ent("info_target") set_pev(ent,pev_classname,"Effect_Ignite_Totem") set_pev(ent,pev_owner,id) set_pev(ent,pev_solid,SOLID_TRIGGER) set_pev(ent,pev_origin,origin) set_pev(ent,pev_ltime, halflife_time() + seconds + 0.1) engfunc(EngFunc_SetModel, ent, "addons/amxmodx/diablo/totem_ignite.mdl") set_rendering ( ent, kRenderFxGlowShell, 250,150,0, kRenderFxNone, 255 ) engfunc(EngFunc_DropToFloor,ent) set_pev(ent,pev_euser3,0) set_pev(ent,pev_nextthink, halflife_time() + 0.1) } public Effect_Ignite_Totem_Think(ent) { //Safe check because effect on death if (!freeze_ended) remove_entity(ent) if (!is_valid_ent(ent)) return PLUGIN_CONTINUE new id = pev(ent,pev_owner) //Apply and destroy if (pev(ent,pev_euser3) == 1) { new entlist[513] new numfound = find_sphere_class(ent,"player",player_b_firetotem[id]+0.0,entlist,512) for (new i=0; i < numfound; i++) { new pid = entlist[i] //This totem can hit the caster if (pid == id && is_user_alive(id)) { Effect_Ignite(pid,id,4) hudmsg(pid,3.0,"Palisz sie. Strzel do kogos aby przestac sie palic!") continue } if (!is_user_alive(pid) || get_user_team(id) == get_user_team(pid)) continue //Dextery makes the fire damage less if (player_dextery[pid] > 20) Effect_Ignite(pid,id,1) else if (player_dextery[pid] > 15) Effect_Ignite(pid,id,2) else if (player_dextery[pid] > 10) Effect_Ignite(pid,id,3) else Effect_Ignite(pid,id,4) hudmsg(pid,3.0,"Palisz sie. Strzel do kogos aby przestac sie palic!") } remove_entity(ent) return PLUGIN_CONTINUE } //Entity should be destroyed because livetime is over if (pev(ent,pev_ltime) < halflife_time()) { set_pev(ent,pev_euser3,1) //Show animation and die new Float:forigin[3], origin[3] pev(ent,pev_origin,forigin) FVecIVec(forigin,origin) //Find people near and give them health message_begin( MSG_BROADCAST, SVC_TEMPENTITY, origin ); write_byte( TE_BEAMCYLINDER ); write_coord( origin[0] ); write_coord( origin[1] ); write_coord( origin[2] ); write_coord( origin[0] ); write_coord( origin[1] + player_b_firetotem[id]); write_coord( origin[2] + player_b_firetotem[id]); write_short( sprite_white ); write_byte( 0 ); // startframe write_byte( 0 ); // framerate write_byte( 10 ); // life write_byte( 10 ); // width write_byte( 255 ); // noise write_byte( 150 ); // r, g, b write_byte( 150 ); // r, g, b write_byte( 0 ); // r, g, b write_byte( 128 ); // brightness write_byte( 5 ); // speed message_end(); set_pev(ent,pev_nextthink, halflife_time() + 0.2) } else { set_pev(ent,pev_nextthink, halflife_time() + 1.5) } return PLUGIN_CONTINUE } stock Spawn_Ent(const classname[]) { new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, classname)) set_pev(ent, pev_origin, {0.0, 0.0, 0.0}) dllfunc(DLLFunc_Spawn, ent) return ent } stock Effect_Ignite(id,attacker,damage) { new ent = Spawn_Ent("info_target") set_pev(ent,pev_classname,"Effect_Ignite") set_pev(ent,pev_owner,id) set_pev(ent,pev_ltime, halflife_time() + 99 + 0.1) set_pev(ent,pev_solid,SOLID_NOT) set_pev(ent,pev_euser1,attacker) set_pev(ent,pev_euser2,damage) set_pev(ent,pev_nextthink, halflife_time() + 0.1) AddFlag(id,Flag_Ignite) } //euser3 = destroy and apply effect public Effect_Ignite_Think(ent) { new id = pev(ent,pev_owner) attacker = pev(ent,pev_euser1) new damage = pev(ent,pev_euser2) if (pev(ent,pev_ltime) < halflife_time() || !is_user_alive(id) || !HasFlag(id,Flag_Ignite)) { RemoveFlag(id,Flag_Ignite) Remove_All_Tents(id) Display_Icon(id ,0 ,"dmg_heat" ,200,0,0) remove_entity(ent) return PLUGIN_CONTINUE } //Display ignite tent and icon Display_Tent(id,sprite_ignite,2) Display_Icon(id ,1 ,"dmg_heat" ,200,0,0) new origin[3] get_user_origin(id,origin) //Make some burning effects message_begin( MSG_BROADCAST,SVC_TEMPENTITY) write_byte( TE_SMOKE ) // 5 write_coord(origin[0]) write_coord(origin[1]) write_coord(origin[2]) write_short( sprite_smoke ) write_byte( 22 ) // 10 write_byte( 10 ) // 10 message_end() //Decals message_begin( MSG_BROADCAST,SVC_TEMPENTITY) write_byte( TE_GUNSHOTDECAL ) // decal and ricochet sound write_coord( origin[0] ) //pos write_coord( origin[1] ) write_coord( origin[2] ) write_short (0) // I have no idea what thats supposed to be write_byte (random_num(199,201)) //decal message_end() //Do the actual damage change_health(id,-damage,attacker,"world") set_pev(ent,pev_nextthink, halflife_time() + 1.5) return PLUGIN_CONTINUE } stock AddFlag(id,flag) { afflicted[id][flag] = 1 } stock RemoveFlag(id,flag) { afflicted[id][flag] = 0 } stock bool:HasFlag(id,flag) { if (afflicted[id][flag]) return true return false } stock Display_Tent(id,sprite, seconds) { message_begin(MSG_ALL,SVC_TEMPENTITY) write_byte(TE_PLAYERATTACHMENT) write_byte(id) write_coord(40) //Offset write_short(sprite) write_short(seconds*10) message_end() } stock Remove_All_Tents(id) { message_begin(MSG_ALL ,SVC_TEMPENTITY) //message begin write_byte(TE_KILLPLAYERATTACHMENTS) write_byte(id) // entity index of player message_end() } stock Find_Best_Angle(id,Float:dist, same_team = false) { new Float:bestangle = 0.0 new winner = -1 for (new i=0; i < MAX; i++) { if (!is_user_alive(i) || i == id || (get_user_team(i) == get_user_team(id) && !same_team)) continue if (get_user_team(i) != get_user_team(id) && same_team) continue //User has spell immunity, don't target new Float:c_angle = Find_Angle(id,i,dist) if (c_angle > bestangle && Can_Trace_Line(id,i)) { winner = i bestangle = c_angle } } return winner } //This is an interpolation. We make tree lines with different height as to make sure stock bool:Can_Trace_Line(id, target) { for (new i=-35; i < 60; i+=35) { new Float:Origin_Id[3] new Float:Origin_Target[3] new Float:Origin_Return[3] pev(id,pev_origin,Origin_Id) pev(target,pev_origin,Origin_Target) Origin_Id[z] = Origin_Id[z] + i Origin_Target[z] = Origin_Target[z] + i trace_line(-1, Origin_Id, Origin_Target, Origin_Return) if (get_distance_f(Origin_Return,Origin_Target) < 25.0) return true } return false } public item_hook(id) { if (used_item[id]) { hudmsg(id,2.0,"Haku mozesz uzyc raz na runde!") return PLUGIN_CONTINUE } new target = Find_Best_Angle(id,1000.0,false) if (!is_valid_ent(target)) { hudmsg(id,2.0,"Obiekt jest poza zasiegiem.") return PLUGIN_CONTINUE } AddFlag(id,Flag_Hooking) set_user_gravity(target,0.0) set_task(0.1,"hook_prethink",id+TASK_HOOK,"",0,"b") hooked[id] = target hook_prethink(id+TASK_HOOK) emit_sound(id,CHAN_VOICE,"weapons/xbow_hit2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) used_item[id] = true return PLUGIN_HANDLED } public hook_prethink(id) { id -= TASK_HOOK if(!is_user_alive(id) || !is_user_alive(hooked[id])) { RemoveFlag(id,Flag_Hooking) return PLUGIN_HANDLED } if (get_user_button(id) & ~IN_USE) { RemoveFlag(id,Flag_Hooking) return PLUGIN_HANDLED } if(!HasFlag(id,Flag_Hooking)) { if (is_user_alive(hooked[id])) set_user_gravity(id,1.0) remove_task(id+TASK_HOOK) return PLUGIN_HANDLED } //Get Id's origin static origin1[3] get_user_origin(id,origin1) static origin2[3] get_user_origin(hooked[id],origin2) //Create blue beam message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte(1) //TE_BEAMENTPOINT write_short(id) // start entity write_coord(origin2[0]) write_coord(origin2[1]) write_coord(origin2[2]) write_short(sprite_line) write_byte(1) // framestart write_byte(1) // framerate write_byte(2) // life in 0.1's write_byte(5) // width write_byte(0) // noise write_byte(0) // red write_byte(0) // green write_byte(255) // blue write_byte(200) // brightness write_byte(0) // speed message_end() //Calculate Velocity new Float:velocity[3] velocity[0] = (float(origin1[0]) - float(origin2[0])) * 3.0 velocity[1] = (float(origin1[1]) - float(origin2[1])) * 3.0 velocity[2] = (float(origin1[2]) - float(origin2[2])) * 3.0 new Float:dy dy = velocity[0]*velocity[0] + velocity[1]*velocity[1] + velocity[2]*velocity[2] new Float:dx dx = (4+player_intelligence[id]/2) * 120.0 / floatsqroot(dy) velocity[0] *= dx velocity[1] *= dx velocity[2] *= dx set_pev(hooked[id],pev_velocity,velocity) return PLUGIN_CONTINUE } /* ==================================================================================================== */ public item_gravitybomb(id) { if (pev(id,pev_flags) & FL_ONGROUND) { hudmsg(id,2.0,"Musisz byc w powietrzu!") return PLUGIN_CONTINUE } if (halflife_time()-gravitytimer[id] <= 5) { hudmsg(id,2.0,"Ten przedmiot, moze byc uzyty co kazde 5 sekundy") return PLUGIN_CONTINUE } gravitytimer[id] = floatround(halflife_time()) new origin[3] get_user_origin(id,origin) if (origin[2] == 0) earthstomp[id] = 1 else earthstomp[id] = origin[2] set_user_gravity(id,5.0) falling[id] = true return PLUGIN_CONTINUE } public add_bonus_stomp(id) { set_gravitychange(id) new origin[3] get_user_origin(id,origin) new dam = earthstomp[id]-origin[2] earthstomp[id] = 0 //If jump is is high enough, apply some shake effect and deal damage, 300 = down from BOMB A in dust2 if (dam < 85) return PLUGIN_CONTINUE dam = dam-85 message_begin(MSG_ONE , get_user_msgid("ScreenShake") , {0,0,0} ,id) write_short( 1<<14 ); write_short( 1<<12 ); write_short( 1<<14 ); message_end(); new entlist[513] new numfound = find_sphere_class(id,"player",230.0+player_strength[id]*2,entlist,512) for (new i=0; i < numfound; i++) { new pid = entlist[i] if (pid == id || !is_user_alive(pid)) continue if (get_user_team(id) == get_user_team(pid)) continue if (!(pev(pid, pev_flags) & FL_ONGROUND)) continue new Float:id_origin[3] new Float:pid_origin[3] new Float:delta_vec[3] pev(id,pev_origin,id_origin) pev(pid,pev_origin,pid_origin) delta_vec[x] = (pid_origin[x]-id_origin[x])+10 delta_vec[y] = (pid_origin[y]-id_origin[y])+10 delta_vec[z] = (pid_origin[z]-id_origin[z])+200 set_pev(pid,pev_velocity,delta_vec) message_begin(MSG_ONE , get_user_msgid("ScreenShake") , {0,0,0} ,pid) write_short( 1<<14 ); write_short( 1<<12 ); write_short( 1<<14 ); message_end(); change_health(pid,-dam,id,"world") } return PLUGIN_CONTINUE } /* ==================================================================================================== */ public item_rot(id) { if (used_item[id]) { RemoveFlag(id,Flag_Rot) used_item[id] = false } else { if (find_ent_by_owner(-1,"Effect_Rot",id) > 0) return PLUGIN_CONTINUE Create_Rot(id) used_item[id] = true } return PLUGIN_CONTINUE } public Create_Rot(id) { new ent = Spawn_Ent("info_target") set_pev(ent,pev_classname,"Effect_Rot") set_pev(ent,pev_owner,id) set_pev(ent,pev_solid,SOLID_NOT) AddFlag(id,Flag_Rot) set_pev(ent,pev_nextthink, halflife_time() + 0.1) } public Effect_Rot_Think(ent) { new id = pev(ent,pev_owner) if (!is_user_alive(id) || !HasFlag(id,Flag_Rot) || !freeze_ended) { Display_Icon(id,0,"dmg_bio",255,255,0) set_user_maxspeed(id,245.0+player_dextery[id]) set_renderchange(id) remove_entity(ent) return PLUGIN_CONTINUE } set_user_maxspeed(id,252.0+player_dextery[id]+15) Display_Icon(id,1,"dmg_bio",255,150,0) set_renderchange(id) new entlist[513] new numfound = find_sphere_class(id,"player",250.0,entlist,512) for (new i=0; i < numfound; i++) { new pid = entlist[i] if (pid == id || !is_user_alive(pid)) continue if (get_user_team(id) == get_user_team(pid)) continue //Rot him! if (random_num(1,2) == 1) Display_Fade(pid,1<<14,1<<14,1<<16,255,155,50,230) change_health(pid,-45,id,"world") Effect_Bleed(pid,100) Create_Slow(pid,3) } change_health(id,-10,id,"world") set_pev(ent,pev_nextthink, halflife_time() + 0.8) return PLUGIN_CONTINUE } /* ==================================================================================================== */ //Daze player stock Create_Slow(id,seconds) { new ent = Spawn_Ent("info_target") set_pev(ent,pev_classname,"Effect_Slow") set_pev(ent,pev_owner,id) set_pev(ent,pev_ltime, halflife_time() + seconds + 0.1) set_pev(ent,pev_solid,SOLID_NOT) set_pev(ent,pev_nextthink, halflife_time() + 0.1) AddFlag(id,Flag_Dazed) } public Effect_Slow_Think(ent) { new id = pev(ent,pev_owner) if (pev(ent,pev_ltime) < halflife_time() || !is_user_alive(id)) { Display_Icon(id,0,"dmg_heat",255,255,0) RemoveFlag(id,Flag_Dazed) set_user_maxspeed(id,245.0+player_agility[id]) remove_entity(ent) return PLUGIN_CONTINUE } set_user_maxspeed(id,245.0-50) Display_Icon(id,1,"dmg_heat",255,255,0) set_pev(ent,pev_nextthink, halflife_time() + 1.0) return PLUGIN_CONTINUE } /* ==================================================================================================== */ stock AddTimedFlag(id,flag,seconds) { new ent = Spawn_Ent("info_target") set_pev(ent,pev_classname,"Effect_Timedflag") set_pev(ent,pev_owner,id) set_pev(ent,pev_ltime, halflife_time() + seconds + 0.1) set_pev(ent,pev_solid,SOLID_NOT) set_pev(ent,pev_euser3,flag) AddFlag(id,flag) set_pev(ent,pev_nextthink, halflife_time() + 0.1) } public Effect_Timedflag_Think(ent) { new id = pev(ent,pev_owner) if (pev(ent,pev_ltime) < halflife_time() || !is_user_alive(id)) { RemoveFlag(id,pev(ent,pev_euser3)) remove_entity(ent) return PLUGIN_CONTINUE } set_pev(ent,pev_nextthink, halflife_time() + 1.0) return PLUGIN_CONTINUE } /* ==================================================================================================== */ public item_illusion(id) { if (used_item[id]) { hudmsg(id,2.0,"Ten przedmiot mozesz uzyc raz na runde!") return PLUGIN_CONTINUE } AddTimedFlag(id,Flag_Illusion,7) message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id ) write_byte( 7) write_byte( 0 ) message_end() used_item[id] = true use_addtofullpack = true return PLUGIN_CONTINUE } /* ==================================================================================================== */ public item_money_shield(id) { if (used_item[id]) { RemoveFlag(id,Flag_Moneyshield) used_item[id] = false } else { if (find_ent_by_owner(-1,"Effect_MShield",id) > 0) return PLUGIN_CONTINUE new ent = Spawn_Ent("info_target") set_pev(ent,pev_classname,"Effect_MShield") set_pev(ent,pev_owner,id) set_pev(ent,pev_solid,SOLID_NOT) AddFlag(id,Flag_Moneyshield) set_pev(ent,pev_nextthink, halflife_time() + 0.1) used_item[id] = true } return PLUGIN_CONTINUE } public Effect_MShield_Think(ent) { new id = pev(ent,pev_owner) if (!is_user_alive(id) || cs_get_user_money(id) <= 0 || !HasFlag(id,Flag_Moneyshield) || !freeze_ended) { RemoveFlag(id,Flag_Moneyshield) set_renderchange(id) Display_Icon(id,0,"suithelmet_empty",255,255,255) remove_entity(ent) return PLUGIN_CONTINUE } if (cs_get_user_money(id)-250 < 0) cs_set_user_money(id,0) else cs_set_user_money(id,cs_get_user_money(id)-250) set_renderchange(id) Display_Icon(id,1,"suithelmet_empty",255,255,255) set_pev(ent,pev_nextthink, halflife_time() + 1.0) return PLUGIN_CONTINUE } /* ==================================================================================================== */ public item_mine(id) { new count = 0 new ents = -1 ents = find_ent_by_owner(ents,"Mine",id) while (ents > 0) { count++ ents = find_ent_by_owner(ents,"Mine",id) } if (count > 2) { hudmsg(id,2.0,"Mozesz polozyc maksymalnie 3 miny na runde") return PLUGIN_CONTINUE } new origin[3] pev(id,pev_origin,origin) new ent = Spawn_Ent("info_target") set_pev(ent,pev_classname,"Mine") set_pev(ent,pev_owner,id) set_pev(ent,pev_movetype,MOVETYPE_TOSS) set_pev(ent,pev_origin,origin) set_pev(ent,pev_solid,SOLID_BBOX) engfunc(EngFunc_SetModel, ent, "addons/amxmodx/diablo/mine.mdl") engfunc(EngFunc_SetSize,ent,Float:{-16.0,-16.0,0.0},Float:{16.0,16.0,2.0}) drop_to_floor(ent) entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01) set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,50) use_addtofullpack = true return PLUGIN_CONTINUE } /* ==================================================================================================== */ public item_teamshield(id) { if (used_item[id]) { RemoveFlag(id,Flag_Teamshield) used_item[id] = false set_renderchange(id) } else { new target = Find_Best_Angle(id,1000.0,true) if (!is_valid_ent(target)) { hudmsg(id,2.0,"Zaden cel nie jest zasiegu do tarczy") return PLUGIN_CONTINUE } if (pev(target,pev_rendermode) == kRenderTransTexture || player_item_id[target] == 17 || player_class[target] == Ninja) { hudmsg(id,2.0,"Nie mozna wyczarowac tarczy na niewidzialnym graczu") return PLUGIN_CONTINUE } if (find_ent_by_owner(-1,"Effect_Teamshield",id) > 0) return PLUGIN_CONTINUE if (get_user_health(target)+player_b_teamheal[id] <= race_heal[player_class[target]]+player_strength[target]*2) change_health(target,player_b_teamheal[id],0,"") new ent = Spawn_Ent("info_target") set_pev(ent,pev_classname,"Effect_Teamshield") set_pev(ent,pev_owner,id) set_pev(ent,pev_solid,SOLID_NOT) set_pev(ent,pev_nextthink, halflife_time() + 0.1) set_pev(ent,pev_euser2, target) AddFlag(id,Flag_Teamshield) AddFlag(target,Flag_Teamshield_Target) used_item[id] = true set_renderchange(target) } return PLUGIN_CONTINUE } public Effect_Teamshield_Think(ent) { new id = pev(ent,pev_owner) new victim = pev(ent,pev_euser2) new Float: vec1[3] new Float: vec2[3] new Float: vec3[3] entity_get_vector(id,EV_VEC_origin,vec1) entity_get_vector(victim ,EV_VEC_origin,vec2) new hit = trace_line ( id, vec1, vec2, vec3 ) if (hit != victim || !is_user_alive(id) || !is_user_alive(victim) || !Can_Trace_Line(id,victim) || !UTIL_In_FOV(id,victim) || !HasFlag(id,Flag_Teamshield) || !freeze_ended) { RemoveFlag(id,Flag_Teamshield) RemoveFlag(victim,Flag_Teamshield_Target) remove_entity(ent) set_renderchange(victim) return PLUGIN_CONTINUE } else set_pev(ent,pev_nextthink, halflife_time() + 0.3) new origin1[3] new origin2[3] get_user_origin(id,origin1) get_user_origin(victim,origin2) message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte (TE_BEAMPOINTS) write_coord(origin1[0]) write_coord(origin1[1]) write_coord(origin1[2]+8) write_coord(origin2[0]) write_coord(origin2[1]) write_coord(origin2[2]+8) write_short(sprite_laser); write_byte(1) // framestart write_byte(1) // framerate write_byte(3) // life write_byte(5) // width write_byte(10) // noise write_byte(0) // r, g, b (red) write_byte(255) // r, g, b (green) write_byte(0) // r, g, b (blue) write_byte(45) // brightness write_byte(5) // speed message_end() set_renderchange(victim) return PLUGIN_CONTINUE } /* ==================================================================================================== */ //Find the owner that has target as target and the specific classname public find_owner_by_euser(target,classname[]) { new ent = -1 ent = find_ent_by_class(ent,classname) while (ent > 0) { if (pev(ent,pev_euser2) == target) return pev(ent,pev_owner) ent = find_ent_by_class(ent,classname) } return -1 } /* ==================================================================================================== */ public item_totemheal(id) { if (used_item[id]) { hudmsg(id,2.0,"Leczacy Totem mozesz uzyc raz na runde!") return PLUGIN_CONTINUE } used_item[id] = true new origin[3] pev(id,pev_origin,origin) new ent = Spawn_Ent("info_target") set_pev(ent,pev_classname,"Effect_Healing_Totem") set_pev(ent,pev_owner,id) set_pev(ent,pev_solid,SOLID_TRIGGER) set_pev(ent,pev_origin,origin) set_pev(ent,pev_ltime, halflife_time() + 7 + 0.1) engfunc(EngFunc_SetModel, ent, "addons/amxmodx/diablo/totem_heal.mdl") set_rendering ( ent, kRenderFxGlowShell, 255,0,0, kRenderFxNone, 255 ) engfunc(EngFunc_DropToFloor,ent) set_pev(ent,pev_nextthink, halflife_time() + 0.1) return PLUGIN_CONTINUE } public Effect_Healing_Totem_Think(ent) { new id = pev(ent,pev_owner) new totem_dist = 300 new amount_healed = player_b_heal[id] //We have emitted beam. Apply effect (this is delayed) if (pev(ent,pev_euser2) == 1) { new Float:forigin[3], origin[3] pev(ent,pev_origin,forigin) FVecIVec(forigin,origin) //Find people near and damage them new entlist[513] new numfound = find_sphere_class(0,"player",totem_dist+0.0,entlist,512,forigin) for (new i=0; i < numfound; i++) { new pid = entlist[i] if (get_user_team(pid) != get_user_team(id)) continue if (is_user_alive(pid)) change_health(pid,amount_healed,0,"") } set_pev(ent,pev_euser2,0) set_pev(ent,pev_nextthink, halflife_time() + 1.5) return PLUGIN_CONTINUE } //Entity should be destroyed because livetime is over if (pev(ent,pev_ltime) < halflife_time() || !is_user_alive(id)) { remove_entity(ent) return PLUGIN_CONTINUE } //If this object is almost dead, apply some render to make it fade out if (pev(ent,pev_ltime)-2.0 < halflife_time()) set_rendering ( ent, kRenderFxNone, 255,255,255, kRenderTransAlpha, 100 ) new Float:forigin[3], origin[3] pev(ent,pev_origin,forigin) FVecIVec(forigin,origin) //Find people near and give them health message_begin( MSG_BROADCAST, SVC_TEMPENTITY, origin ); write_byte( TE_BEAMCYLINDER ); write_coord( origin[0] ); write_coord( origin[1] ); write_coord( origin[2] ); write_coord( origin[0] ); write_coord( origin[1] + totem_dist ); write_coord( origin[2] + totem_dist ); write_short( sprite_white ); write_byte( 0 ); // startframe write_byte( 0 ); // framerate write_byte( 10 ); // life write_byte( 10 ); // width write_byte( 255 ); // noise write_byte( 255 ); // r, g, b write_byte( 100 ); // r, g, b write_byte( 100 ); // r, g, b write_byte( 128 ); // brightness write_byte( 5 ); // speed message_end(); set_pev(ent,pev_euser2,1) set_pev(ent,pev_nextthink, halflife_time() + 0.5) return PLUGIN_CONTINUE } public freeze_over1() { round_status=1 agi = BASE_SPEED; new players[32], num get_players(players,num,"a") for(new i=0 ; i10) set_task(2.0, "funcDemageVic", id+GLUTON) DoDamage(id, attacker1, 5); } public set_speedchange(id) { if(DemageTake[id]==1) agi=(BASE_SPEED / 2) else agi=BASE_SPEED if (is_user_connected(id) && freeze_ended) { new speeds if(player_class[id] == Ninja) speeds= 40 + floatround(player_dextery[id]*1.3) else if(player_class[id] == Zabojca) speeds= 10 + floatround(player_dextery[id]*1.3) else if(player_class[id] == Barbarzynca) speeds= -10 + floatround(player_dextery[id]*1.3) else speeds= floatround(player_dextery[id]*1.3) set_user_maxspeed(id, agi + speeds) } } public set_renderchange(id) { if(is_user_connected(id) && is_user_alive(id)) { if(!task_exists(id+TASK_FLASH_LIGHT)) { new render=255 if (player_class[id] == Ninja) { new inv_bonus = 255 - player_b_inv[id] render = 13 if(player_b_inv[id]>0) { while(inv_bonus>0) { inv_bonus-=20 render-- } } if(player_b_usingwind[id]==1) { render/=2 } if(render<0) render=0 if(HasFlag(id,Flag_Moneyshield)||HasFlag(id,Flag_Rot)||HasFlag(id,Flag_Teamshield_Target)) render*=2 set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, render) } else if(HasFlag(id,Flag_Moneyshield)||HasFlag(id,Flag_Rot)||HasFlag(id,Flag_Teamshield_Target)) { if (player_b_usingwind[id]==1) set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,75) if(HasFlag(id,Flag_Moneyshield)) set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderNormal,16) if(HasFlag(id,Flag_Rot)) set_rendering ( id, kRenderFxGlowShell, 255,255,0, kRenderFxNone, 10 ) if(HasFlag(id,Flag_Teamshield_Target)) set_rendering ( id, kRenderFxGlowShell, 0,200,0, kRenderFxNone, 0 ) } else if(invisible_cast[id]==1) { if(player_b_inv[id]>0) set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, floatround((10.0/255.0)*(255-player_b_inv[id]))) else set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 10) } else { render = 255 if(player_b_inv[id]>0) render = player_b_inv[id] set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, render) } } else set_user_rendering(id,kRenderFxGlowShell,flashlight_r,flashlight_g,flashlight_b,kRenderNormal,4) } } public set_gravitychange(id) { if(is_user_alive(id) && is_user_connected(id)) { if(player_class[id] == Ninja) { if(player_b_gravity[id]>6) set_user_gravity(id, 0.17) else if(player_b_gravity[id]>3) set_user_gravity(id, 0.2) else set_user_gravity(id, 0.25) } else { set_user_gravity(id,1.0*(1.0-player_b_gravity[id]/12.0)) } } } public cmd_who(id) { static motd[1000],header[100],name[32],len,i len = 0 new team[32] static players[32], numplayers get_players(players, numplayers, "a") new playerid // Table i background len += formatex(motd[len],sizeof motd - 1 - len,"") len += formatex(motd[len],sizeof motd - 1 - len,"
") len += formatex(motd[len],sizeof motd - 1 - len,"") //Title formatex(header,sizeof header - 1,"Diablo Mod Statystyki") for (i=0; i< numplayers; i++) { playerid = players[i] if ( get_user_team(playerid) == 1 ) team = "Terrorist" else if ( get_user_team(playerid) == 2 ) team = "CT" else team = "Spectator" get_user_name( playerid, name, 31 ) get_user_name( playerid, name, 31 ) len += formatex(motd[len],sizeof motd - 1 - len,"",name,Race[player_class[playerid]], player_lvl[playerid],team) } len += formatex(motd[len],sizeof motd - 1 - len,"
NameKlasaLevelTeam
%s%s%d%s
") show_motd(id,motd,header) } public det_fade(id) { if (wear_sun[id] == 1){ Display_Icon(id ,ICON_FLASH ,ICON_S ,0,255,0) Display_Fade(id,1,1,1<<12,0,0,0,0) } if (wear_sun[id] == 0){ Display_Icon(id ,ICON_HIDE ,ICON_S ,0,255,0) } } public changeskin(id,reset){ if (id<1 || id>32 || !is_user_connected(id)) return PLUGIN_CONTINUE if (reset==1){ cs_reset_user_model(id) skinchanged[id]=false return PLUGIN_HANDLED }else if (reset==2){ //cs_set_user_model(id,"goomba") cs_set_user_model(id,"zombie") skinchanged[id]=true return PLUGIN_HANDLED }else{ //new newSkin[32] new num = random_num(0,3) if (get_user_team(id)==1){ //add(newSkin,31,CTSkins[num]) cs_set_user_model(id,CTSkins[num]) }else{ //client_print(0, print_console, "CT mole, using new skin %s", TSkins[num]) //add(newSkin,31,TSkins[num]) cs_set_user_model(id,TSkins[num]) } skinchanged[id]=true } return PLUGIN_CONTINUE } stock refill_ammo(id) { new wpnid if(!is_user_alive(id) || pev(id,pev_iuser1)) return; cs_set_user_armor(id,200,CS_ARMOR_VESTHELM); new wpn[32],clip,ammo wpnid = get_user_weapon(id, clip, ammo) get_weaponname(wpnid,wpn,31) new wEnt; // set clip ammo wpnid = get_weaponid(wpn) //wEnt = get_weapon_ent(id,wpnid); wEnt = get_weapon_ent(id,wpnid); cs_set_weapon_ammo(wEnt,maxClip[wpnid]); } stock get_weapon_ent(id,wpnid=0,wpnName[]="") { // who knows what wpnName will be static newName[32]; // need to find the name if(wpnid) get_weaponname(wpnid,newName,31); // go with what we were told else formatex(newName,31,"%s",wpnName); // prefix it if we need to if(!equal(newName,"weapon_",7)) format(newName,31,"weapon_%s",newName); new ent; while((ent = engfunc(EngFunc_FindEntityByString,ent,"classname",newName)) && pev(ent,pev_owner) != id) {} return ent; } DoDamage(iTargetID, iShooterID, iDamage/*, iDamageCause, bIsWeaponID = false, iHeadShot = 0*/) { if(is_user_connected(iTargetID)&&is_user_connected(iShooterID)) if ( is_user_alive(iTargetID)) { new bool:bPlayerDied = false; new iHP = get_user_health(iTargetID); if ( ( iHP - iDamage ) <= 0 ) bPlayerDied = true; if (bPlayerDied) { // engine.inc set_msg_block function //set_msg_block(g_iGameMsgDeath, BLOCK_ONCE); user_kill(iTargetID, 1); } else change_health(iTargetID,-iDamage,0,"") new sShooterName[32]; get_user_name(iShooterID, sShooterName, 31); if (bPlayerDied) { if ( iShooterID != iTargetID ) { if ( get_user_team(iShooterID) != get_user_team(iTargetID) ) set_user_frags(iShooterID, get_user_frags(iShooterID) + 1); else set_user_frags(iShooterID, get_user_frags(iShooterID) - 1); //LogKill(iShooterID, iTargetID, sWeaponOrMagicName); } //AddXP(iShooterID, BM_XP_KILL, iTargetID); // bmxphandler.inc award_item(iShooterID,0) award_kill(iShooterID,iTargetID) add_respawn_bonus(iTargetID) add_bonus_explode(iTargetID) add_barbarian_bonus(iShooterID) if (player_class[iShooterID] == Barbarzynca) refill_ammo(iShooterID) } } } public funcDemageVic3(id) { if(DemageTake1[id]==1) { DemageTake1[id]=0 set_task(5.0, "funcReleaseVic3", id) user_slap(id, 0, 1); user_slap(id, 0, 1); user_slap(id, 0, 1); } } public funcReleaseVic3(id) { DemageTake1[id]=1 } public event_flashlight(id) { if(!get_cvar_num("flashlight_custom")) { return; } if(flashlight[id]) { flashlight[id] = 0; } else { if(flashbattery[id] > 0) { flashlight[id] = 1; } } if(!task_exists(TASK_CHARGE+id)) { new parms[1]; parms[0] = id; set_task((flashlight[id]) ? get_cvar_float("flashlight_drain") : get_cvar_float("flashlight_charge"),"charge",TASK_CHARGE+id,parms,1); } message_begin(MSG_ONE,get_user_msgid("Flashlight"),{0,0,0},id); write_byte(flashlight[id]); write_byte(flashbattery[id]); message_end(); entity_set_int(id,EV_INT_effects,entity_get_int(id,EV_INT_effects) & ~EF_DIMLIGHT); } public charge(parms[]) { if(!get_cvar_num("flashlight_custom")) { return; } new id = parms[0]; if(flashlight[id]) { flashbattery[id] -= 1; } else { flashbattery[id] += 1; } message_begin(MSG_ONE,get_user_msgid("FlashBat"),{0,0,0},id); write_byte(flashbattery[id]); message_end(); if(flashbattery[id] <= 0) { flashbattery[id] = 0; flashlight[id] = 0; message_begin(MSG_ONE,get_user_msgid("Flashlight"),{0,0,0},id); write_byte(flashlight[id]); write_byte(flashbattery[id]); message_end(); // don't return so we can charge it back up to full } else if(flashbattery[id] >= MAX_FLASH) { flashbattery[id] = MAX_FLASH return; // return because we don't need to charge anymore } set_task((flashlight[id]) ? get_cvar_float("flashlight_drain") : get_cvar_float("flashlight_charge"),"charge",TASK_CHARGE+id,parms,1) } //////////////////////////////////////////////////////////////////////////////// // REVIVAL KIT - NOT ALL // //////////////////////////////////////////////////////////////////////////////// public message_clcorpse() { return PLUGIN_HANDLED } public event_hltv() { fm_remove_entity_name("fake_corpse") fm_remove_entity_name("Mine") fm_remove_entity_name("dbmod_shild") static players[32], num get_players(players, num, "a") for(new i = 0; i < num; i++) { if(is_user_connected(players[i])) { set_task(0.0, "funcReleaseVic", i) reset_player(players[i]) msg_bartime(players[i], 0) trace_bool[players[i]] = 0 } } } public reset_player(id) { remove_task(TASKID_REVIVE + id) remove_task(TASKID_RESPAWN + id) remove_task(TASKID_CHECKRE + id) remove_task(TASKID_CHECKST + id) remove_task(TASKID_ORIGIN + id) remove_task(TASKID_SETUSER + id) remove_task(GLUTON+id) g_revive_delay[id] = 0.0 g_wasducking[id] = false g_body_origin[id] = Float:{0.0, 0.0, 0.0} } public fwd_playerpostthink(id) { if(!is_user_connected(id)) return FMRES_IGNORED if(g_haskit[id]==0) return FMRES_IGNORED if(!is_user_alive(id)) { Display_Icon(id ,ICON_HIDE ,"rescue" ,0,160,0) return FMRES_IGNORED } new body = find_dead_body(id) if(fm_is_valid_ent(body)) { new lucky_bastard = pev(body, pev_owner) if(!is_user_connected(lucky_bastard)) return FMRES_IGNORED new lb_team = get_user_team(lucky_bastard) if(lb_team == 1 || lb_team == 2 ) Display_Icon(id ,ICON_FLASH ,"rescue" ,0,160,0) } else Display_Icon(id , ICON_SHOW,"rescue" ,0,160,0) return FMRES_IGNORED } public task_check_dead_flag(id) { if(!is_user_connected(id)) return if(pev(id, pev_deadflag) == DEAD_DEAD) create_fake_corpse(id) else set_task(0.5, "task_check_dead_flag", id) } public create_fake_corpse(id) { set_pev(id, pev_effects, EF_NODRAW) static model[32] cs_get_user_model(id, model, 31) static player_model[64] format(player_model, 63, "models/player/%s/%s.mdl", model, model) static Float: player_origin[3] pev(id, pev_origin, player_origin) static Float:mins[3] mins[0] = -16.0 mins[1] = -16.0 mins[2] = -34.0 static Float:maxs[3] maxs[0] = 16.0 maxs[1] = 16.0 maxs[2] = 34.0 if(g_wasducking[id]) { mins[2] /= 2 maxs[2] /= 2 } static Float:player_angles[3] pev(id, pev_angles, player_angles) player_angles[2] = 0.0 new sequence = pev(id, pev_sequence) new ent = fm_create_entity("info_target") if(ent) { set_pev(ent, pev_classname, "fake_corpse") engfunc(EngFunc_SetModel, ent, player_model) engfunc(EngFunc_SetOrigin, ent, player_origin) engfunc(EngFunc_SetSize, ent, mins, maxs) set_pev(ent, pev_solid, SOLID_TRIGGER) set_pev(ent, pev_movetype, MOVETYPE_TOSS) set_pev(ent, pev_owner, id) set_pev(ent, pev_angles, player_angles) set_pev(ent, pev_sequence, sequence) set_pev(ent, pev_frame, 9999.9) } } public fwd_emitsound(id, channel, sound[]) { if(!is_user_alive(id) || !g_haskit[id]) return FMRES_IGNORED if(!equali(sound, "common/wpn_denyselect.wav")) return FMRES_IGNORED if(task_exists(TASKID_REVIVE + id)) return FMRES_IGNORED if(!(fm_get_user_button(id) & IN_USE)) return FMRES_IGNORED new body = find_dead_body(id) if(!fm_is_valid_ent(body)) return FMRES_IGNORED new lucky_bastard = pev(body, pev_owner) new lb_team = get_user_team(lucky_bastard) if(lb_team != 1 && lb_team != 2) return FMRES_IGNORED static name[32] get_user_name(lucky_bastard, name, 31) client_print(id, print_chat, "Reviving %s", name) new revivaltime = get_pcvar_num(cvar_revival_time) msg_bartime(id, revivaltime) new Float:gametime = get_gametime() g_revive_delay[id] = gametime + float(revivaltime) - 0.01 emit_sound(id, CHAN_AUTO, SOUND_START, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) set_task(0.0, "task_revive", TASKID_REVIVE + id) return FMRES_SUPERCEDE } public task_revive(taskid) { new id = taskid - TASKID_REVIVE if(!is_user_alive(id)) { failed_revive(id) return FMRES_IGNORED } if(!(fm_get_user_button(id) & IN_USE)) { failed_revive(id) return FMRES_IGNORED } new body = find_dead_body(id) if(!fm_is_valid_ent(body)) { failed_revive(id) return FMRES_IGNORED } new lucky_bastard = pev(body, pev_owner) if(!is_user_connected(lucky_bastard)) { failed_revive(id) return FMRES_IGNORED } new lb_team = get_user_team(lucky_bastard) if(lb_team != 1 && lb_team != 2) { failed_revive(id) return FMRES_IGNORED } static Float:velocity[3] pev(id, pev_velocity, velocity) velocity[0] = 0.0 velocity[1] = 0.0 set_pev(id, pev_velocity, velocity) new Float:gametime = get_gametime() if(g_revive_delay[id] < gametime) { if(findemptyloc(body, 10.0)) { fm_remove_entity(body) emit_sound(id, CHAN_AUTO, SOUND_FINISHED, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) new args[2] args[0]=lucky_bastard if(get_user_team(id)!=get_user_team(lucky_bastard)) { change_health(id,30,0,"") args[1]=1 Give_Xp(id,get_cvar_num("diablo_xpbonus")) } else { args[1]=0 Give_Xp(id,get_cvar_num("diablo_xpbonus")) set_task(0.1, "task_respawn", TASKID_RESPAWN + lucky_bastard,args,2) } } else failed_revive(id) } else set_task(0.1, "task_revive", TASKID_REVIVE + id) return FMRES_IGNORED } public failed_revive(id) { msg_bartime(id, 0) emit_sound(id, CHAN_AUTO, SOUND_FAILED, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) } public task_origin(args[]) { new id = args[0] engfunc(EngFunc_SetOrigin, id, g_body_origin[id]) static Float:origin[3] pev(id, pev_origin, origin) set_pev(id, pev_zorigin, origin[2]) set_task(0.1, "task_stuck_check", TASKID_CHECKST + id,args,2) } stock find_dead_body(id) { static Float:origin[3] pev(id, pev_origin, origin) new ent static classname[32] while((ent = fm_find_ent_in_sphere(ent, origin, get_pcvar_float(cvar_revival_dis))) != 0) { pev(ent, pev_classname, classname, 31) if(equali(classname, "fake_corpse") && fm_is_ent_visible(id, ent)) return ent } return 0 } stock msg_bartime(id, seconds) { if(is_user_bot(id)||!is_user_alive(id)||!is_user_connected(id)) return if((fm_get_user_button(id) & IN_USE)) change_health(id,-10,id,"") message_begin(MSG_ONE, g_msg_bartime, _, id) write_byte(seconds) write_byte(0) message_end() } public task_respawn(args[]) { new id = args[0] if (!is_user_connected(id) || is_user_alive(id) || cs_get_user_team(id) == CS_TEAM_SPECTATOR) return set_pev(id, pev_deadflag, DEAD_RESPAWNABLE) dllfunc(DLLFunc_Think, id) dllfunc(DLLFunc_Spawn, id) set_pev(id, pev_iuser1, 0) set_task(0.1, "task_check_respawn", TASKID_CHECKRE + id,args,2) } public task_check_respawn(args[]) { new id = args[0] if(pev(id, pev_iuser1)) set_task(0.1, "task_respawn", TASKID_RESPAWN + id,args,2) else set_task(0.1, "task_origin", TASKID_ORIGIN + id,args,2) } public task_stuck_check(args[]) { new id = args[0] static Float:origin[3] pev(id, pev_origin, origin) if(origin[2] == pev(id, pev_zorigin)) set_task(0.1, "task_respawn", TASKID_RESPAWN + id,args,2) else set_task(0.1, "task_setplayer", TASKID_SETUSER + id,args,2) } public task_setplayer(args[]) { new id = args[0] fm_give_item(id, "weapon_knife") if(args[1]==1) { fm_give_item(id, "weapon_mp5navy") change_health(id,999,0,"") set_user_godmode(id, 1) new newarg[1] newarg[0]=id set_task(3.0,"god_off",id+95123,newarg,1) } else { fm_set_user_health(id, get_pcvar_num(cvar_revival_health)+player_intelligence[args[1]]) Display_Fade(id,seconds(2),seconds(2),0,0,0,0,255) } if(player_item_id[id]==17) fm_set_user_health(id,5) } public god_off(args[]) { set_user_godmode(args[0], 0) } stock bool:findemptyloc(ent, Float:radius) { if(!fm_is_valid_ent(ent)) return false static Float:origin[3] pev(ent, pev_origin, origin) origin[2] += 2.0 new owner = pev(ent, pev_owner) new num = 0, bool:found = false while(num <= 100) { if(is_hull_vacant(origin)) { g_body_origin[owner][0] = origin[0] g_body_origin[owner][1] = origin[1] g_body_origin[owner][2] = origin[2] found = true break } else { origin[0] += random_float(-radius, radius) origin[1] += random_float(-radius, radius) origin[2] += random_float(-radius, radius) num++ } } return found } stock bool:is_hull_vacant(const Float:origin[3]) { new tr = 0 engfunc(EngFunc_TraceHull, origin, origin, 0, HULL_HUMAN, 0, tr) if(!get_tr2(tr, TR_StartSolid) && !get_tr2(tr, TR_AllSolid) && get_tr2(tr, TR_InOpen)) return true return false } public count_jumps(id) { if( is_user_connected(id)) { if( player_class[id]== Paladyn ) JumpsMax[id]=5+floatround(player_intelligence[id]/10.0) else JumpsMax[id]=0 } } //////////////////////////////////////////////////////////////////////////////// // Noze // //////////////////////////////////////////////////////////////////////////////// public give_knife(id) { new knifes = 0 if(player_class[id] == Ninja) knifes = 5 + floatround ( player_intelligence[id]/10.0 , floatround_floor ) else if(player_class[id] == Zabojca) knifes = 1 + floatround ( player_intelligence[id]/20.0 , floatround_floor ) max_knife[id] = knifes player_knife[id] = knifes } public command_knife(id) { if(!is_user_alive(id)) return PLUGIN_HANDLED if(!player_knife[id]) { client_print(id,print_center,"Nie masz juz nozy do rzucania") return PLUGIN_HANDLED } if(tossdelay[id] > get_gametime() - 0.9) return PLUGIN_HANDLED else tossdelay[id] = get_gametime() player_knife[id]-- if (player_knife[id] == 1) { client_print(id,print_center,"Zostal ci tylko 1 nuz!") } new Float: Origin[3], Float: Velocity[3], Float: vAngle[3], Ent entity_get_vector(id, EV_VEC_origin , Origin) entity_get_vector(id, EV_VEC_v_angle, vAngle) Ent = create_entity("info_target") if (!Ent) return PLUGIN_HANDLED entity_set_string(Ent, EV_SZ_classname, "throwing_knife") entity_set_model(Ent, "models/diablomod/w_throwingknife.mdl") new Float:MinBox[3] = {-1.0, -7.0, -1.0} new Float:MaxBox[3] = {1.0, 7.0, 1.0} entity_set_vector(Ent, EV_VEC_mins, MinBox) entity_set_vector(Ent, EV_VEC_maxs, MaxBox) vAngle[0] -= 90 entity_set_origin(Ent, Origin) entity_set_vector(Ent, EV_VEC_angles, vAngle) entity_set_int(Ent, EV_INT_effects, 2) entity_set_int(Ent, EV_INT_solid, 1) entity_set_int(Ent, EV_INT_movetype, 6) entity_set_edict(Ent, EV_ENT_owner, id) VelocityByAim(id, get_cvar_num("diablo_knife_speed") , Velocity) entity_set_vector(Ent, EV_VEC_velocity ,Velocity) return PLUGIN_HANDLED } public touchKnife(knife, id) { new kid = entity_get_edict(knife, EV_ENT_owner) if(is_user_alive(id)) { new movetype = entity_get_int(knife, EV_INT_movetype) if(movetype == 0) { if( player_knife[id] < max_knife[id] ) { player_knife[id] += 1 client_print(id,print_center,"Obecna liczba nozy: %i",player_knife[id]) } emit_sound(knife, CHAN_ITEM, "weapons/knife_deploy1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) remove_entity(knife) } else if (movetype != 0) { if(kid == id) return remove_entity(knife) if(get_cvar_num("mp_friendlyfire") == 0 && get_user_team(id) == get_user_team(kid)) return entity_set_float(id, EV_FL_dmg_take, get_cvar_num("diablo_knife") * 1.0) change_health(id,-get_cvar_num("diablo_knife"),kid,"knife") message_begin(MSG_ONE,get_user_msgid("ScreenShake"),{0,0,0},id) write_short(7<<14) write_short(1<<13) write_short(1<<14) message_end() if(get_user_team(id) == get_user_team(kid)) { new name[33] get_user_name(kid,name,32) client_print(0,print_chat,"%s attacked a teammate",name) } emit_sound(id, CHAN_ITEM, "weapons/knife_hit4.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } } } public touchWorld(knife, world) { entity_set_int(knife, EV_INT_movetype, 0) emit_sound(knife, CHAN_ITEM, "weapons/knife_hitwall1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } public touchbreakable(ent1, ent2) { new name[32],breakable,ent entity_get_string(ent1,EV_SZ_classname,name,31) if(equali(name,"func_breakable")) { breakable=ent1 ent=ent2 } else { breakable=ent2 ent=ent1 } new Float: b_hp = entity_get_float(breakable,EV_FL_health) if(b_hp>80) entity_set_float(breakable,EV_FL_health,b_hp-50.0) else dllfunc(DLLFunc_Use,breakable,ent) entity_get_string(ent,EV_SZ_classname,name,31) if(equali(name,"throwing_knife")) { emit_sound(ent, CHAN_ITEM, "weapons/knife_hitwall1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } else remove_entity(ent) } public kill_all_entity(classname[]) { new iEnt = find_ent_by_class(-1, classname) while(iEnt > 0) { remove_entity(iEnt) iEnt = find_ent_by_class(iEnt, classname) } } //////////////////////////////////////////////////////////////////////////////// // koniec z nozami // //////////////////////////////////////////////////////////////////////////////// public mod_info(id) { client_print(id,print_console,"Witamy w Diablomod by Miczu & GuTeK") client_print(id,print_console,"") client_print(id,print_console,"Odlegla baza tego moda jest Diablo Mod v8.0 by N1ghtmr1 ") client_print(id,print_console,"Od tego czasu numeracja zostala zresetowana i zaczynalismy od v.1") client_print(id,print_console,"") client_print(id,print_console,"") client_print(id,print_console,"Lista osob ktore przyczynily sie zmianie kodu:") client_print(id,print_console,"(nie zgloszeni buga, autentyczna pomoc)") client_print(id,print_console,"") client_print(id,print_console,"SkinnerBox - poprawa transalcji (od 5.4a)") client_print(id,print_console,"DK - pomoc w testach wersji pod SQL") client_print(id,print_console,"") client_print(id,print_console,"") client_print(id,print_console,"") client_print(id,print_console,"Jesli kogos pominelem to zglosic sie na forum") client_print(id,print_console,"") return PLUGIN_HANDLED } //////////////////////////////////////////////////////////////////////////////// // Hunter part code // //////////////////////////////////////////////////////////////////////////////// public command_arrow(id) { if(!is_user_alive(id)) return PLUGIN_HANDLED new Float: Origin[3], Float: Velocity[3], Float: vAngle[3], Ent entity_get_vector(id, EV_VEC_origin , Origin) entity_get_vector(id, EV_VEC_v_angle, vAngle) Ent = create_entity("info_target") if (!Ent) return PLUGIN_HANDLED entity_set_string(Ent, EV_SZ_classname, "xbow_arrow") entity_set_model(Ent, cbow_bolt) new Float:MinBox[3] = {-2.8, -2.8, -0.8} new Float:MaxBox[3] = {2.8, 2.8, 2.0} entity_set_vector(Ent, EV_VEC_mins, MinBox) entity_set_vector(Ent, EV_VEC_maxs, MaxBox) vAngle[0]*= -1 Origin[2]+=10 entity_set_origin(Ent, Origin) entity_set_vector(Ent, EV_VEC_angles, vAngle) entity_set_int(Ent, EV_INT_effects, 2) entity_set_int(Ent, EV_INT_solid, 1) entity_set_int(Ent, EV_INT_movetype, 5) entity_set_edict(Ent, EV_ENT_owner, id) new Float:dmg = get_cvar_float("diablo_arrow") + player_intelligence[id] * get_cvar_float("diablo_arrow_multi") entity_set_float(Ent, EV_FL_dmg,dmg) VelocityByAim(id, get_cvar_num("diablo_arrow_speed") , Velocity) set_rendering (Ent,kRenderFxGlowShell, 255,0,0, kRenderNormal,56) entity_set_vector(Ent, EV_VEC_velocity ,Velocity) return PLUGIN_HANDLED } public command_bow(id) { if(!is_user_alive(id)) return PLUGIN_HANDLED if(bow[id] == 1){ entity_set_string(id,EV_SZ_viewmodel,cbow_VIEW) entity_set_string(id,EV_SZ_weaponmodel,cvow_PLAYER) bowdelay[id] = get_gametime() }else if(player_sword[id] == 1) { entity_set_string(id, EV_SZ_viewmodel, SWORD_VIEW) entity_set_string(id, EV_SZ_weaponmodel, SWORD_PLAYER) bow[id]=0 } else { entity_set_string(id,EV_SZ_viewmodel,KNIFE_VIEW) entity_set_string(id,EV_SZ_weaponmodel,KNIFE_PLAYER) bow[id]=0 } return PLUGIN_CONTINUE } public toucharrow(arrow, id) { new kid = entity_get_edict(arrow, EV_ENT_owner) new lid = entity_get_edict(arrow, EV_ENT_enemy) if(is_user_alive(id)) { if(kid == id || lid == id) return entity_set_edict(arrow, EV_ENT_enemy,id) new Float:dmg = entity_get_float(arrow,EV_FL_dmg) entity_set_float(arrow,EV_FL_dmg,(dmg*3.0)/5.0) if(get_cvar_num("mp_friendlyfire") == 0 && get_user_team(id) == get_user_team(kid)) return Effect_Bleed(id,248) bowdelay[kid] -= 0.5 - floatround(player_intelligence[kid]/5.0) change_health(id,floatround(-dmg),kid,"knife") message_begin(MSG_ONE,get_user_msgid("ScreenShake"),{0,0,0},id); write_short(7<<14); write_short(1<<13); write_short(1<<14); message_end(); if(get_user_team(id) == get_user_team(kid)) { new name[33] get_user_name(kid,name,32) client_print(0,print_chat,"%s attacked a teammate",name) } emit_sound(id, CHAN_ITEM, "weapons/knife_hit4.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) if(dmg<30) remove_entity(arrow) } } public touchWorld2(arrow, world) { remove_entity(arrow) } public hunter_Line(id,vid,end[3]) { if(is_user_alive(id) && is_user_alive(vid) && trace_bool[id]) { new start[3] get_user_origin(vid,start) message_begin(MSG_ONE,SVC_TEMPENTITY,{0,0,0},id) write_byte(0) write_coord(start[0]) // starting pos write_coord(start[1]) write_coord(start[2]) write_coord(end[0]) // ending pos write_coord(end[1]) write_coord(end[2]) write_short(sprite_line) // sprite index write_byte(1) // starting frame write_byte(5) // frame rate write_byte(100) // life write_byte(1) // line width write_byte(0) // noise write_byte(200) // RED write_byte(100) // GREEN write_byte(100) // BLUE write_byte(75) // brightness write_byte(5) // scroll speed message_end() new parms[5]; for(new i=0;i<3;i++) { parms[i] = start[i] } parms[3]=id parms[4]=vid set_task(0.20,"charge_hunter",id+TARACE_TASK+vid*100,parms,5) } } public charge_hunter(parms[]) { new stop[3] for(new i=0;i<3;i++) { stop[i] =parms[i] } hunter_Line(parms[3],parms[4],stop) } public grenade_throw(id, ent, wID) { if(!g_TrapMode[id] || !is_valid_ent(ent)) return PLUGIN_CONTINUE new Float:fVelocity[3] VelocityByAim(id, cvar_throw_vel, fVelocity) entity_set_vector(ent, EV_VEC_velocity, fVelocity) new Float: angle[3] entity_get_vector(ent,EV_VEC_angles,angle) angle[0]=0.00 entity_set_vector(ent,EV_VEC_angles,angle) entity_set_float(ent,EV_FL_dmgtime,get_gametime()+3.5) entity_set_int(ent, NADE_PAUSE, 0) entity_set_int(ent, NADE_ACTIVE, 0) entity_set_int(ent, NADE_VELOCITY, 0) entity_set_int(ent, NADE_TEAM, get_user_team(id)) new param[1] param[0] = ent set_task(3.0, "task_ActivateTrap", 0, param, 1) return PLUGIN_CONTINUE } public task_ActivateTrap(param[]) { new ent = param[0] if(!is_valid_ent(ent)) return PLUGIN_CONTINUE entity_set_int(ent, NADE_PAUSE, 1) entity_set_int(ent, NADE_ACTIVE, 1) new Float:fOrigin[3] entity_get_vector(ent, EV_VEC_origin, fOrigin) fOrigin[2] -= 8.1*(1.0-floatpower( 2.7182, -0.06798*float(player_agility[entity_get_edict(ent,EV_ENT_owner)]))) entity_set_vector(ent, EV_VEC_origin, fOrigin) return PLUGIN_CONTINUE } public think_Grenade(ent) { new entModel[33] entity_get_string(ent, EV_SZ_model, entModel, 32) if(!is_valid_ent(ent) || equal(entModel, "models/w_c4.mdl")) return PLUGIN_CONTINUE if(entity_get_int(ent, NADE_PAUSE)) return PLUGIN_HANDLED return PLUGIN_CONTINUE } public think_Bot(bot) { new ent = -1 while((ent = find_ent_by_class(ent, "grenade"))) { new entModel[33] entity_get_string(ent, EV_SZ_model, entModel, 32) if(equal(entModel, "models/w_c4.mdl")) continue if(!entity_get_int(ent, NADE_ACTIVE)) continue new Players[32], iNum get_players(Players, iNum, "a") for(new i = 0; i < iNum; ++i) { new id = Players[i] if(entity_get_int(ent, NADE_TEAM) == get_user_team(id)) continue if(get_entity_distance(id, ent) > cvar_activate_dis || player_speed(id) <200.0) continue if(entity_get_int(ent, NADE_VELOCITY)) continue new Float:fOrigin[3] entity_get_vector(ent, EV_VEC_origin, fOrigin) while(PointContents(fOrigin) == CONTENTS_SOLID) fOrigin[2] += 100.0 entity_set_vector(ent, EV_VEC_origin, fOrigin) drop_to_floor(ent) new Float:fVelocity[3] entity_get_vector(ent, EV_VEC_velocity, fVelocity) fVelocity[2] += float(cvar_nade_vel) entity_set_vector(ent, EV_VEC_velocity, fVelocity) entity_set_int(ent, NADE_VELOCITY, 1) new param[1] param[0] = ent //set_task(cvar_explode_delay, "task_ExplodeNade", 0, param, 1) entity_set_float(param[0], EV_FL_nextthink, halflife_time() + cvar_explode_delay) entity_set_int(param[0], NADE_PAUSE, 0) } } if(get_timeleft()<2 && map_end<2) { map_end=2 } else if(get_timeleft()<6 && map_end<1) { new play[32],num get_players(play,num) for(new i=0;i0) { new m_health = race_heal[player_class[id]]+player_strength[id]*2 if(player_item_id[id]==17 &&hp>0) { set_user_health(id,health+floatround(float(hp/10),floatround_floor)+1) } else if (hp+health>m_health) set_user_health(id,m_health) else set_user_health(id,get_user_health(id)+hp) } else { if(health+hp<1) { UTIL_Kill(attacker,id,weapon) } else set_user_health(id,get_user_health(id)+hp) } if(id!=attacker && hp<0) { player_dmg[attacker]-=hp dmg_exp(attacker) } } } public UTIL_Kill(attacker,id,weapon[]) { if( is_user_alive(id)){ if(get_user_team(attacker)!=get_user_team(id)) set_user_frags(attacker,get_user_frags(attacker) +1); if(get_user_team(attacker)==get_user_team(id)) set_user_frags(attacker,get_user_frags(attacker) -1); if (cs_get_user_money(attacker) + 150 <= 16000) cs_set_user_money(attacker,cs_get_user_money(attacker)+150) else cs_set_user_money(attacker,16000) cs_set_user_deaths(id, cs_get_user_deaths(id)+1) user_kill(id,1) if(is_user_connected(attacker) && attacker!=id) { award_kill(attacker,id) if(is_user_alive(attacker)) award_item(attacker,0) } message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0) write_byte(attacker) write_byte(id) write_byte(0) write_string(weapon) message_end() message_begin(MSG_ALL,gmsgScoreInfo) write_byte(attacker) write_short(get_user_frags(attacker)) write_short(get_user_deaths(attacker)) write_short(0) write_short(get_user_team(attacker)) message_end() message_begin(MSG_ALL,gmsgScoreInfo) write_byte(id) write_short(get_user_frags(id)) write_short(get_user_deaths(id)) write_short(0) write_short(get_user_team(id)) message_end() new kname[32], vname[32], kauthid[32], vauthid[32], kteam[10], vteam[10]; get_user_name(attacker, kname, 31); get_user_team(attacker, kteam, 9); get_user_authid(attacker, kauthid, 31); get_user_name(id, vname, 31); get_user_team(id, vteam, 9); get_user_authid(id, vauthid, 31); log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"", kname, get_user_userid(attacker), kauthid, kteam, vname, get_user_userid(id), vauthid, vteam, weapon); } } stock Display_Fade(id,duration,holdtime,fadetype,red,green,blue,alpha) { message_begin( MSG_ONE, g_msg_screenfade,{0,0,0},id ) write_short( duration ) // Duration of fadeout write_short( holdtime ) // Hold time of color write_short( fadetype ) // Fade type write_byte ( red ) // Red write_byte ( green ) // Green write_byte ( blue ) // Blue write_byte ( alpha ) // Alpha message_end() } stock Display_Icon(id ,enable ,name[] ,red,green,blue) { if (!pev_valid(id) || is_user_bot(id)) { return PLUGIN_HANDLED } // new string [8][32] = {"dmg_rad","item_longjump","dmg_shock","item_healthkit","dmg_heat","suit_full","cross","dmg_gas"} message_begin( MSG_ONE, g_msg_statusicon, {0,0,0}, id ) write_byte( enable ) write_string( name ) write_byte( red ) // red write_byte( green ) // green write_byte( blue ) // blue message_end() return PLUGIN_CONTINUE } public createBlockAiming(id) { new Float:vOrigin[3]; new Float:vAngles[3] entity_get_vector(id,EV_VEC_v_angle,vAngles) entity_get_vector(id,EV_VEC_origin,vOrigin) new Float:offset = distance_to_floor(vOrigin) vOrigin[2]+=17.0-offset //create the block if(vAngles[1]>45.0&&vAngles[1]<135.0) { vOrigin[0]+=0.0 vOrigin[1]+=34.0 if(chacke_pos(vOrigin,0)==0) return make_shild(id,vOrigin,vAngles1,gfBlockSizeMin1,gfBlockSizeMax1) } else if(vAngles[1]<-45.0&&vAngles[1]>-135.0) { vOrigin[0]+=0.0 vOrigin[1]+=-34.0 if(chacke_pos(vOrigin,0)==0) return make_shild(id,vOrigin,vAngles1,gfBlockSizeMin1,gfBlockSizeMax1) } else if(vAngles[1]>-45.0&&vAngles[1]<45.0) { vOrigin[0]+=34.0 vOrigin[1]+=0.0 if(chacke_pos(vOrigin,1)==0) return make_shild(id,vOrigin,vAngles2,gfBlockSizeMin2,gfBlockSizeMax2) } else { vOrigin[0]+=-34.0 vOrigin[1]+=0.0 if(chacke_pos(vOrigin,1)==0) return make_shild(id,vOrigin,vAngles2,gfBlockSizeMin2,gfBlockSizeMax2) } } public make_shild(id,Float:vOrigin[3],Float:vAngles[3],Float:gfBlockSizeMin[3],Float:gfBlockSizeMax[3]) { new ent = create_entity("info_target") //make sure entity was created successfully if (is_valid_ent(ent)) { //set block properties entity_set_string(ent, EV_SZ_classname, "dbmod_shild") entity_set_int(ent, EV_INT_solid, SOLID_BBOX) entity_set_int(ent, EV_INT_movetype, MOVETYPE_NONE) entity_set_float(ent,EV_FL_health,50.0+float(player_intelligence[id]*2)) entity_set_float(ent,EV_FL_takedamage,1.0) entity_set_model(ent, "models/diablomod/bm_block_platform.mdl"); entity_set_vector(ent, EV_VEC_angles, vAngles) entity_set_size(ent, gfBlockSizeMin, gfBlockSizeMax) entity_set_edict(ent,EV_ENT_euser1,id) entity_set_origin(ent, vOrigin) num_shild[id]-- return 1 } return 0 } public call_cast(id) { set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2) switch(player_class[id]) { case Mag: { show_hudmessage(id, "Wyczarowales fireboll'a") fired[id]=0 item_fireball(id) } case Mnich: { if(num_shild[id]) { show_hudmessage(id, "Wyczarowales magiczna sciane") createBlockAiming(id) } else show_hudmessage(id, "Nie mozesz wiecej wyczarowac") } case Paladyn: { golden_bulet[id]++ if(golden_bulet[id]>3) { golden_bulet[id]=3 show_hudmessage(id, "Mozesz miec maxymalnie 3 magiczne pociskow",golden_bulet[id]) } else if(golden_bulet[id]==1)show_hudmessage(id, "Masz 1 magiczny pocisk") else if(golden_bulet[id]>1)show_hudmessage(id, "Masz %i magiczne pociski",golden_bulet[id]) } case Zabojca: { show_hudmessage(id, "Jestes tymczasowo niewidzialyn (noz)") invisible_cast[id]=1 set_renderchange(id) } case Ninja: { show_hudmessage(id, "Zwiekszyles sobie tymczasowo predkosc") set_user_maxspeed(id,get_user_maxspeed(id)+25.0) } case Barbarzynca: { ultra_armor[id]++ if(ultra_armor[id]>7) { ultra_armor[id]=7 show_hudmessage(id, "Maksymalna wartosc pancerza to 7",ultra_armor[id]) } else show_hudmessage(id, "Magiczny pancerz wytrzyma %i strzalow",ultra_armor[id]) } case Hunter: fm_give_item(id, "weapon_hegrenade") case Killer: { player_b_damage[id]+=70; client_print(id, print_center, "Masz juz %d dodatkowych obrazen!", player_b_damage[id]); } case Zombie: { show_hudmessage(id, "Jestes tymczasowo niewidzialyn (noz)") invisible_cast[id]=1 set_renderchange(id) } case Master: { show_hudmessage(id, "Jestes tymczasowo niewidzialyn (noz)") invisible_cast[id]=1 set_renderchange(id) } } } public chacke_pos(Float:vOrigin[3],axe) { new test=0 vOrigin[axe]-=15.0 if(distance_to_floor(vOrigin)<31.0) test++ vOrigin[axe]+=15.0 if(distance_to_floor(vOrigin)<31.0) test++ vOrigin[axe]+=15.0 if(distance_to_floor(vOrigin)<31.0) test++ if(test<2) return 0 vOrigin[axe]-=15.0 return 1 } public fw_traceline(Float:vecStart[3],Float:vecEnd[3],ignoreM,id,trace) // pentToSkip == id, for clarity { if(!is_user_connected(id)) return FMRES_IGNORED; // not a player entity, or player is dead if(!is_user_alive(id)) return FMRES_IGNORED; new hit = get_tr2(trace, TR_pHit) // not shooting anything if(!(pev(id,pev_button) & IN_ATTACK)) return FMRES_IGNORED; new h_bulet=0 if(golden_bulet[id]>0) { golden_bulet[id]-- h_bulet=1 } if(is_valid_ent(hit)) { new name[64] entity_get_string(hit,EV_SZ_classname,name,63) if(equal(name,"dbmod_shild")) { new Float: ori[3] entity_get_vector(hit,EV_VEC_origin,ori) set_tr2(trace,TR_vecEndPos,vecEnd) if(after_bullet[id]>0) { new Float: health=entity_get_float(hit,EV_FL_health) entity_set_float(hit,EV_FL_health,health-3.0) if(health-1.0<0.0) remove_entity(hit) after_bullet[id]-- } set_tr2(trace,TR_iHitgroup,8); set_tr2(trace,TR_flFraction,1.0); return FMRES_SUPERCEDE; } } if(is_user_alive(hit)) { if(h_bulet) { set_tr2(trace, TR_iHitgroup, HIT_HEAD) // Redirect shot to head // Variable angles doesn't really have a use here. static hit, Float:head_origin[3], Float:angles[3] hit = get_tr2(trace, TR_pHit) // Whomever was shot engfunc(EngFunc_GetBonePosition, hit, 8, head_origin, angles) // Find origin of head bone (8) set_tr2(trace, TR_vecEndPos, head_origin) // Blood now comes out of the head! } if(ultra_armor[hit]>0 ||random_num(0,player_ultra_armor_left[hit])==1) // if(ultra_armor[hit]>0 || (player_class[hit]==Paladyn && random_num(0,3)==1) || random_num(0,player_ultra_armor_left[hit])==1) |- odbijanie pociskow u paladyna { if(after_bullet[id]>0) { if(ultra_armor[hit]>0) ultra_armor[hit]-- else if(player_ultra_armor_left[hit]>0)player_ultra_armor_left[hit]-- after_bullet[id]-- } set_tr2(trace, TR_iHitgroup, 8) } return FMRES_IGNORED } return FMRES_IGNORED; } stock Float:distance_to_floor(Float:start[3], ignoremonsters = 1) { new Float:dest[3], Float:end[3]; dest[0] = start[0]; dest[1] = start[1]; dest[2] = -8191.0; engfunc(EngFunc_TraceLine, start, dest, ignoremonsters, 0, 0); get_tr2(0, TR_vecEndPos, end); //pev(index, pev_absmin, start); new Float:ret = start[2] - end[2]; return ret > 0 ? ret : 0.0; } public dmg_exp(id) { new min=get_cvar_num("diablo_dmg_exp") if(min<1) return new exp=0 while(player_dmg[id]>min) { player_dmg[id]-=min exp++ } Give_Xp(id,exp) } public giveitem(id, level, cid) { if(!cmd_access(id,level, cid, 3)) return PLUGIN_HANDLED; new szName[32]; read_argv(1, szName, 31); new iTarget=cmd_target(id,szName,0); if(iTarget) { get_user_name(iTarget, szName, 31); new szItem[10], iItem; read_argv(2, szItem, 9); iItem=str_to_num(szItem); client_print(id, print_console, "Do %s wyslano item nr %d",szName, iItem); award_item(iTarget, iItem); set_gravitychange(iTarget) set_speedchange(iTarget) set_renderchange(iTarget) } return PLUGIN_HANDLED } public CmdGiveExp(id, level, cid) { if(!cmd_access(id,level, cid, 3)) return PLUGIN_HANDLED; new szPlayer[32]; read_argv(1,szPlayer, 31); new iTarget=cmd_target(id,szPlayer,0); if(iTarget) { new szExp[10], iExp; read_argv(2, szExp, 9); iExp=str_to_num(szExp); new szName[32] get_user_name(iTarget, szName, sizeof szName - 1) console_print(id, "%s dostal %i expa",szName, iExp); Give_Xp(iTarget,iExp) } return PLUGIN_HANDLED } public TTWin() { for(new i=1; i<=32; i++) { if(is_user_connected(i) && cs_get_user_team(i) == CS_TEAM_T) { new dziel = is_user_alive(i) ? 1 : 2; Give_Xp(i, get_cvar_num("diablo_xpbonus3")/dziel); ColorChat(i, YELLOW, "^x04 [Diablo Mod]^x01 Dostales^x03 *%i*^x01 doswiadczenia za wygranie rundy przez Twoj team", get_cvar_num("diablo_xpbonus3")/dziel); } } } public CTWin() { for(new i=1; i<=32; i++) { if(is_user_connected(i) && cs_get_user_team(i) == CS_TEAM_CT) { new dziel = is_user_alive(i) ? 1 : 2; Give_Xp(i, get_cvar_num("diablo_xpbonus3")/dziel); ColorChat(i, YELLOW, "^x04 [Diablo Mod]^x01 Dostales^x03 *%i*^x01 doswiadczenia za wygranie rundy przez Twoj team", get_cvar_num("diablo_xpbonus3")/dziel); } } } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ ansicpg1250\\ deff0\\ deflang1045{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ f0\\ fs16 \n\\ par } */