Nickname:KiduCrazy
Numele pluginului cerut: Hero system
Descriere plugin cerut :[/b]Buna tuturor.As dori si eu un plugin in care cei cu flagul "x" sa poata accesa un meniu ( /hero sau H) numit "Hero Shop" de unde isi pot pua armele ethereal (80 dmg, 10000$ pret), bluecar (90 dmg, 12000$ pret) si harry magic wand (100 dmg 14000$ pret) si sa aiba 150 hp si 100 armura gratis.
Alte informatii :[/b] Multumesc mult!
Cerere plugin meniu arme
Categoria cu cereri de pluginuri si nu numai.
Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com
Forum rules
Accesează link-ul pentru a putea vedea regulile forumului
Daca doriti sa vi se modifice un plugin, va rugam postati aici .
Accesează link-ul pentru a putea vedea regulile forumului
Daca doriti sa vi se modifice un plugin, va rugam postati aici .
- w3zoo_RedX
- Membru, skill +2
- Posts: 737
- Joined: 21 Dec 2013, 22:16
- Detinator Steam: Da
- CS Status: Scripter CS.
- Detinator server CS: PM.
- SteamID: PM.
- Location: Bucuresti sector 2
- Has thanked: 45 times
- Been thanked: 45 times
- Contact:
- MEM
- Utilizator neserios (tepar)
- Posts: 2349
- Joined: 13 Sep 2013, 21:24
- Detinator Steam: Da
- CS Status: Always be MEM!
- SteamID: /businessmonkeys_mem
- Reputatie: Fost Membru Club eXtreamCS ( o luna jumatate)
Nume anterior : kiducrazy - Location: Braila
- Has thanked: 8 times
- Been thanked: 9 times
- Contact:
L-am gandit singur. De ce vrei sa ma copii?w3zoo_RedX wrote::-? As avea si eu nevoie de acest plugin :D
- MEM
- Utilizator neserios (tepar)
- Posts: 2349
- Joined: 13 Sep 2013, 21:24
- Detinator Steam: Da
- CS Status: Always be MEM!
- SteamID: /businessmonkeys_mem
- Reputatie: Fost Membru Club eXtreamCS ( o luna jumatate)
Nume anterior : kiducrazy - Location: Braila
- Has thanked: 8 times
- Been thanked: 9 times
- Contact:
Arma din cso cred. e pe zp.csblackdevil.com.Adventx wrote:Ce este bluecar?
- Adventx
- Membru, skill +4
- Posts: 1785
- Joined: 17 Sep 2013, 21:44
- Detinator Steam: Da
- Reputatie: Fost moderator ajutator
- Has thanked: 128 times
- Been thanked: 142 times
- Contact:
Lasa un link catre acel plugin/arma eu nu gasesc :|kiducrazy wrote:Arma din cso cred. e pe zp.csblackdevil.com.Adventx wrote:Ce este bluecar?
- MEM
- Utilizator neserios (tepar)
- Posts: 2349
- Joined: 13 Sep 2013, 21:24
- Detinator Steam: Da
- CS Status: Always be MEM!
- SteamID: /businessmonkeys_mem
- Reputatie: Fost Membru Club eXtreamCS ( o luna jumatate)
Nume anterior : kiducrazy - Location: Braila
- Has thanked: 8 times
- Been thanked: 9 times
- Contact:
Imi cer scuze. Arma e catrblue.:) Daca poti baga si water gun cu dmg 70 si pret 8000$Adventx wrote:Lasa un link catre acel plugin/arma eu nu gasesc :|kiducrazy wrote:Arma din cso cred. e pe zp.csblackdevil.com.Adventx wrote:Ce este bluecar?
- DaNNe.
- Fost moderator
- Posts: 2811
- Joined: 08 Nov 2013, 20:43
- Detinator Steam: Da
- CS Status: Activitate scăzută
- SteamID: /id/FurienMaster
- Reputatie: Nick anterior: DnD. Gold, Emrys
0.5/3
Fost moderator ajutator
Fost Membru Club eXtreamCS (doua luni) - Has thanked: 244 times
- Been thanked: 129 times
- Contact:
- MEM
- Utilizator neserios (tepar)
- Posts: 2349
- Joined: 13 Sep 2013, 21:24
- Detinator Steam: Da
- CS Status: Always be MEM!
- SteamID: /businessmonkeys_mem
- Reputatie: Fost Membru Club eXtreamCS ( o luna jumatate)
Nume anterior : kiducrazy - Location: Braila
- Has thanked: 8 times
- Been thanked: 9 times
- Contact:
Multumim mult! Ethereal si Harry magic wand sunt aici pe site.:)
Last edited by DaNNe. on 01 Feb 2014, 19:59, edited 2 times in total.
Reason: Stiu ! ;))
Reason: Stiu ! ;))
- Truth*
- Scripter eXtreamCS
- Posts: 766
- Joined: 11 Oct 2013, 11:08
- Detinator Steam: Da
- SteamID: Ezeru
- Reputatie: Fost moderator ajutator
Membru Club eXtreamCS (4 luni)
Nume anterior: HyperioN.
Scripter eXtreamCS
0.2 / 3 - Fond eXtream: 0
- Location: Sibiu
- Has thanked: 44 times
- Been thanked: 122 times
Poftim :
Cvaruri :
Este netestat...
- SMA HERO | Afiseaza codul
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #include <fakemeta_util> #include <cstrike> #include <hamsandwich> #pragma tabsize 0 #define PLUGIN "Weapons" #define VERSION "1.0" #define AUTHOR "NicutaMM | Cstrike" #define HERO ADMIN_LEVEL_H #define IsPlayer(%0) ( 1 <= %0 <= g_iMaxPlayers ) #define is_valid_player(%1) (1 <= %1 <= 32) native set_user_ethereal(id, ethereal); native give_weapon_watergun(id); native give_weapon_harry(id); new g_iMaxPlayers; new g_iBlinkAcct; new g_szItems[][] = { "Ethreal", "Water GUN", "Blue Cart", "Harry Potter's Magic Wand" } new g_iItemsPrices[] = { 1000, 8000, 1200, 1400, } new bool: CartBlue[ 33 ]; new const vCartBlue[ 64 ] = "models/v_vipcartblue.mdl"; new const pCartBlue[ 64 ] = "models/p_vipcartblue.mdl"; new CvarHP, CvarAP; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) CvarHP = register_cvar("hero_hp", "150"); CvarAP = register_cvar("hero_ap", "100"); g_iBlinkAcct = get_user_msgid("BlinkAcct") register_clcmd("say /shop", "cmdHero", 0); register_event ( "CurWeapon", "CurrentWeapon", "be", "1=1" ); RegisterHam( Ham_Spawn, "player", "HeroSpawnCMD", true); RegisterHam ( Ham_TakeDamage, "player", "Player_TakeDamage" ); g_iMaxPlayers = get_maxplayers ( ); // Add your code here... } public plugin_precache ( ) { precache_model( vCartBlue ); precache_model( pCartBlue ); } public HeroSpawnCMD ( id ) { if(is_valid_player(id) && is_user_alive(id) && get_user_flags(id) & HERO ) { fm_set_user_health(id, get_pcvar_num( CvarHP ) ); fm_set_user_armor(id, get_pcvar_num( CvarAP ) ); } CartBlue[ id ] = false; } public CurrentWeapon ( id ) { new szWeapon = get_user_weapon ( id ); if ( szWeapon == CSW_MP5NAVY && CartBlue[ id ] ) { set_pev ( id, pev_viewmodel2, vCartBlue ); set_pev ( id, pev_weaponmodel2, pCartBlue ); } return 1; } public cmdHero(id) { new Temp[101], money = cs_get_user_money(id); formatex(Temp,100, "\yHero Menu:^n^nBani tai:\r $%d", money); new menu = menu_create(Temp, "handler_HeroMenu") new szItemName[64] for(new i; i<sizeof(g_szItems) && i<sizeof(g_iItemsPrices); i++) { if( money < g_iItemsPrices ) { formatex(szItemName, charsmax(szItemName), "\d%s ($%d)", g_szItems[ i ], g_iItemsPrices[ i ]) } else { formatex(szItemName, charsmax(szItemName), "%s (\r$%d\w)", g_szItems[ i ], g_iItemsPrices[ i ]) } menu_additem(menu, szItemName) } menu_setprop(menu, MPROP_NUMBER_COLOR, "\y") menu_display(id, menu, 0); return PLUGIN_HANDLED; } public handler_ShopMenu(id, menu, item) { if( item == MENU_EXIT ) { menu_destroy(menu); return PLUGIN_HANDLED; } new money = cs_get_user_money(id); new new_money = cs_get_user_money(id) - g_iItemsPrices[item]; if( money < g_iItemsPrices[item] ) { NotEnoughMoney( id ); menu_display(id, menu); return PLUGIN_HANDLED; } switch(item) { case 0: { if(get_user_flags(id) & HERO ) { set_user_ethereal(id, 1); client_print(id, print_center, "Ai cumparat (%s)", g_szItems[item]); cs_set_user_money(id, new_money); } else { client_print(id, print_center, "Nu ai acces la acest meniu!"); } } case 1: { if(get_user_flags(id) & HERO ) { give_weapon_watergun(id); client_print(id, print_center, "Ai cumparat (%s)", g_szItems[item]); cs_set_user_money(id, new_money); } else { client_print(id, print_center, "Nu ai acces la acest meniu!"); } } case 2: { if(get_user_flags(id) & HERO ) { fm_strip_user_weapons(id); fm_give_item(id, "weapon_knife"); fm_give_item(id, "weapon_deagle"); fm_give_item(id, "weapon_mp5navy"); cs_set_user_bpammo(id, CSW_DEAGLE, 70); cs_set_user_bpammo(id, CSW_MP5NAVY, 250 ); CartBlue[ id ] = true; CurrentWeapon(id); client_print(id, print_center, "Ai cumparat (%s)", g_szItems[item]); cs_set_user_money(id, new_money); } else { client_print(id, print_center, "Nu ai acces la acest meniu!"); } } case 3: { if(get_user_flags(id) & HERO ) { give_weapon_harry(id); client_print(id, print_center, "Ai cumparat (%s)", g_szItems[item]); cs_set_user_money(id, new_money); } else { client_print(id, print_center, "Nu ai acces la acest meniu!"); } } } menu_destroy(menu); return PLUGIN_HANDLED; } public NotEnoughMoney( id ) { client_print(id, print_center, "#Cstrike_TitlesTXT_Not_Enough_Money"); message_begin(MSG_ONE_UNRELIABLE, g_iBlinkAcct, .player=id); { write_byte(2); } message_end(); } public Player_TakeDamage ( iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits ) { if ( IsPlayer ( iAttacker ) ) { if( get_user_weapon( iAttacker ) == CSW_MP5NAVY && CartBlue[ iAttacker ] ) { SetHamParamFloat( 4, fDamage * 3 ) return HAM_HANDLED } } return HAM_IGNORED; }
- Ethreal | Afiseaza codul
//////////////////////////////////////////////////////////////////////////////////////////////////////////// // Ethereal | //========================================================================================================== #include <amxmodx> #include <amxmisc> #include <cstrike> #include <engine> #include <fakemeta> #include <fakemeta_util> #include <fun> #include <hamsandwich> #define PLUGIN "Ethereal" #define VERSION "1.0" #define AUTHOR "sDs|Aragon*" const PRIMARY_WEAPONS_BITSUM =(1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90); new BloodDrop, BloodSpray #define ETHEREAL_WEAPONKEY 103 #define weapon_ethereal "weapon_galil" #define CSW_ETHEREAL CSW_GALIL #define ethereal_shotdelay 0.15 // Refire rate new EtherealModel_V[] = "models/Ethereal/v_ethereal.mdl"; new EtherealModel_P[] = "models/Ethereal/p_ethereal.mdl"; new EtherealModel_W[] = "models/Ethereal/w_ethereal.mdl"; new const ethereal_sound[5][] = { "weapons/ethereal_shoot1.wav", "weapons/ethereal_hit.wav", "weapons/ethereal_idle1.wav", "weapons/ethereal_reload.wav", "weapons/ethereal_draw.wav" }; new const ethereal_generic[3][] = { "sprites/Ethereal/weapon_ethereal", "sprites/Ethereal/Ethereal.spr", "sprites/Ethereal/640hud2.spr" }; new bool:HasEthereal[33], ethereal_clip[33], ethereal_reload[33], Float:EtherealLastShotTime[33], ethereal_trail, ethereal_explode; new ethereal, etherealcost, etherealdamage, etherealclip, etherealammo, etherealreloadtime, etherealknockback; public plugin_init() { register_plugin( PLUGIN, VERSION, AUTHOR ); RegisterHam(Ham_Spawn, "player", "Spawn_Post", 1); RegisterHam(Ham_Killed, "player", "PlayerKilled"); register_clcmd("Ethereal/weapon_ethereal", "hook_ethereal"); register_event("CurWeapon", "Ethereal_Model", "be", "1=1"); register_event("WeapPickup","Ethereal_Model","b","1=19"); register_forward(FM_SetModel, "Ethereal_SetModel"); register_forward(FM_CmdStart, "Ethereal_CmdStart"); register_forward(FM_UpdateClientData, "Ethereal_UpdateClientData_Post", 1); RegisterHam(Ham_Item_Deploy , weapon_ethereal, "Ethereal_Deploy_Post", 1); RegisterHam(Ham_Item_AddToPlayer, weapon_ethereal, "Ethereal_AddToPlayer"); RegisterHam(Ham_Weapon_Reload, weapon_ethereal, "Ethereal_Reload"); RegisterHam(Ham_Weapon_Reload, weapon_ethereal, "Ethereal_Reload_Post", 1); RegisterHam(Ham_Item_PostFrame, weapon_ethereal, "Ethereal_PostFrame"); ethereal = register_cvar("amx_ethereal", "1"); //| Ethereal 0 Disable -> 1 Enable |// etherealcost = register_cvar("amx_etherealcost", "8000"); //| Ethereal Cost |// etherealdamage = register_cvar("amx_ethereal_damage", "80"); //| Ethereal Damage |// etherealclip = register_cvar("amx_ethereal_clip", "30"); //| Ethereal Clip |// etherealammo = register_cvar("amx_ethereal_ammo", "120"); //| Ethereal Ammo |// etherealreloadtime = register_cvar("amx_ethereal_reload_time", "3.03"); //| Ethereal Reload Time |// etherealknockback = register_cvar("amx_ethereal_knockback", "3"); //| Ethereal KnockBack |// register_clcmd("ethereal", "buy_ethereal"); register_clcmd("buy_ethereal", "buy_ethereal"); register_clcmd("say /ethereal", "buy_ethereal"); register_clcmd("say /buy_ethereal", "buy_ethereal"); register_clcmd("say buy_ethereal", "buy_ethereal"); register_clcmd("say_team /ethereal", "buy_ethereal"); register_clcmd("say_team /buy_ethereal", "buy_ethereal"); register_clcmd("say_team buy_ethereal", "buy_ethereal"); register_concmd("amx_give_ethereal", "GiveEthereal", ADMIN_LEVEL_G, "Name"); } public plugin_natives() { register_native("get_user_ethereal", "get_user_ethereal", 1); register_native("set_user_ethereal", "set_user_ethereal", 1); } public get_user_ethereal(id) { return HasEthereal[id]; } public set_user_ethereal(id, ethereal) { if(ethereal) { if(!HasEthereal[id]) { drop_primary_weapons(id); HasEthereal[id] = true; message_begin(MSG_ONE, get_user_msgid("WeaponList"), _, id); write_string("Ethereal/weapon_ethereal"); // WeaponName write_byte(4); // PrimaryAmmoID write_byte(90); // PrimaryAmmoMaxAmount write_byte(-1); // SecondaryAmmoID write_byte(-1); // SecondaryAmmoMaxAmount write_byte(0); // SlotID (0...N) write_byte(17); // NumberInSlot (1...N) write_byte(CSW_ETHEREAL); // WeaponID write_byte(0); // Flags message_end(); fm_give_item(id, weapon_ethereal) cs_set_user_bpammo(id, CSW_ETHEREAL, get_pcvar_num(etherealammo)) new clip = fm_get_user_weapon_entity(id, CSW_ETHEREAL); cs_set_weapon_ammo(clip, get_pcvar_num(etherealclip)); set_weapon_anim(id, 2); } } else { if(HasEthereal[id]) { HasEthereal[id] = false; } } } public Spawn_Post(id) set_user_ethereal(id, 0); public PlayerKilled(victim, attacker, shouldgib) set_user_ethereal(victim, 0); //------| Buy Ethereal |------// public buy_ethereal(id) { new ethcost = get_pcvar_num(etherealcost); if(!get_pcvar_num(ethereal)) { ColorChat(id, "^x04[Ethereal]^x03 Ethereal^x04 este dezactivat."); } else if(!is_user_alive(id)) { ColorChat(id, "^x04[Ethereal]^x03 Nu poti cumpara^x04 Ethereal^x03 cat timp esti mort."); } else if(get_user_ethereal(id)) { ColorChat(id, "^x04[Ethereal]^x03 Ai deja^x04 Ethereal."); } else if(cs_get_user_money(id) < ethcost) { ColorChat(id, "^x04[Ethereal]^x03 Nu ai suficiente fonduri pentru a cumpara^x04 Ethereal^x03. Necesari: ^x04$%d",ethcost); } else { cs_set_user_money(id, cs_get_user_money(id) - ethcost); ColorChat(id, "^x04[Ethereal]^x03 Ai cumparat^x04 Ethereal."); set_user_ethereal(id, true); } } public GiveEthereal(id, level, cid) { if(!cmd_access(id, level, cid, 2)) { return PLUGIN_HANDLED; } new arg[23], name[32]; get_user_name(id, name, 31); read_argv(1, arg, 23); new player = cmd_target(id, arg, 11); if(!player) { console_print(id, "Juctorul cu acel nume nu exista."); return PLUGIN_HANDLED; } if(!is_user_alive(player)) { return PLUGIN_HANDLED; } if(!get_user_ethereal(player)) { set_user_ethereal(player, true); switch(get_cvar_num("amx_show_activity")) { case 1: ColorChat(player, "^x03ADMIN^x04 give you ^x03 Ethereal."); case 2: ColorChat(player, "^x03%s^x04 give you ^x03 Ethereal.", name); } } return PLUGIN_HANDLED; } public hook_ethereal(id) { engclient_cmd(id, weapon_ethereal); } public Ethereal_Model(id) { if(get_user_weapon(id) == CSW_ETHEREAL && get_user_ethereal(id)) { set_pev(id, pev_viewmodel2, EtherealModel_V); set_pev(id, pev_weaponmodel2, EtherealModel_P); } } public Ethereal_SetModel(entity, model[]) { // Entity is not valid if(!is_valid_ent(entity)) return FMRES_IGNORED; // Get classname static szClassName[33]; entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName)); // Not a Weapon box if(!equal(szClassName, "weaponbox")) return FMRES_IGNORED; new iOwner = entity_get_edict(entity, EV_ENT_owner); new WPN_Ethereal = find_ent_by_owner(-1, weapon_ethereal, entity); if(get_user_ethereal(iOwner) && is_valid_ent(WPN_Ethereal) && equal(model, "models/w_galil.mdl")) { entity_set_int(WPN_Ethereal, EV_INT_impulse, ETHEREAL_WEAPONKEY); HasEthereal[iOwner] = false; entity_set_model(entity, EtherealModel_W); return FMRES_SUPERCEDE; } return FMRES_IGNORED; } public Ethereal_CmdStart(id, uc_handle, seed) { if(is_user_alive(id) && is_user_connected(id)) { static CurButton; CurButton = get_uc(uc_handle, UC_Buttons); new Float:flNextAttack = get_pdata_float(id, 83, 5); if(CurButton & IN_ATTACK) { if(get_user_weapon(id) == CSW_ETHEREAL && get_user_ethereal(id)) { static ethereal; ethereal = fm_find_ent_by_owner(-1, weapon_ethereal, id); if(cs_get_weapon_ammo(ethereal) > 0 && !ethereal_reload[id] && flNextAttack <= 0.0) { if(get_gametime() - EtherealLastShotTime[id] > ethereal_shotdelay) { set_weapon_anim(id, random_num(3,5)); emit_sound(id, CHAN_WEAPON, ethereal_sound[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM); Ethereal_Fire(id); static Float:Punch_Angles[3]; Punch_Angles[0] = -3.0; Punch_Angles[1] = 0.0; Punch_Angles[2] = 0.0; set_pev(id, pev_punchangle, Punch_Angles); cs_set_weapon_ammo(ethereal, cs_get_weapon_ammo(ethereal) - 1); EtherealLastShotTime[id] = get_gametime(); } } CurButton &= ~IN_ATTACK; set_uc(uc_handle, UC_Buttons, CurButton); } } } } public Ethereal_UpdateClientData_Post(id, sendweapons, cd_handle) { if(is_user_alive(id) && is_user_connected(id)) { if(get_user_weapon(id) == CSW_ETHEREAL && get_user_ethereal(id)) { set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001); } } } public Ethereal_AddToPlayer(Weapon, id) { if(is_valid_ent(Weapon) && is_user_connected(id) && entity_get_int(Weapon, EV_INT_impulse) == ETHEREAL_WEAPONKEY) { HasEthereal[id] = true; entity_set_int(Weapon, EV_INT_impulse, 0); } message_begin(MSG_ONE, get_user_msgid("WeaponList"), _, id); write_string(HasEthereal[id] ? "Ethereal/weapon_ethereal" : "weapon_galil"); // WeaponName write_byte(4); // PrimaryAmmoID write_byte(90); // PrimaryAmmoMaxAmount write_byte(-1); // SecondaryAmmoID write_byte(-1); // SecondaryAmmoMaxAmount write_byte(0); // SlotID (0...N) write_byte(17); // NumberInSlot (1...N) write_byte(CSW_ETHEREAL); // WeaponID write_byte(0); // Flags message_end(); } public Ethereal_Deploy_Post(entity) { static owner; owner = fm_get_weapon_ent_owner(entity); if(get_user_ethereal(owner)) { set_pev(owner, pev_viewmodel2, EtherealModel_V); set_pev(owner, pev_weaponmodel2, EtherealModel_P); set_weapon_anim(owner, 2); set_pdata_float(owner, 83, 1.36, 5); static clip; clip = cs_get_weapon_ammo(entity); if(clip > 0) ethereal_reload[owner] = 0; } } public Ethereal_Reload(ent) { if(!pev_valid(ent)) return HAM_IGNORED; new id; id = pev(ent, pev_owner); if(!is_user_alive(id) || !get_user_ethereal(id)) return HAM_IGNORED; ethereal_clip[id] = -1; new bpammo = cs_get_user_bpammo(id, CSW_ETHEREAL); if(bpammo <= 0) return HAM_SUPERCEDE; new iClip = get_pdata_int(ent, 51, 4); if(iClip >= get_pcvar_num(etherealclip)) return HAM_SUPERCEDE; ethereal_clip[id] = iClip; ethereal_reload[id] = 1; return HAM_IGNORED; } public Ethereal_Reload_Post(ent) { if(!pev_valid(ent)) return HAM_IGNORED; new id; id = pev(ent, pev_owner); if(!is_user_alive(id) || !get_user_ethereal(id)) return HAM_IGNORED; if(ethereal_clip[id] == -1) return HAM_IGNORED; new Float:reload_time = get_pcvar_float(etherealreloadtime); set_pdata_int(ent, 51, ethereal_clip[id], 4); set_pdata_float(ent, 48, reload_time, 4); set_pdata_float(id, 83, reload_time, 5); set_pdata_int(ent, 54, 1, 4); set_weapon_anim(id, 1); return HAM_IGNORED; } public Ethereal_PostFrame(ent) { if(!pev_valid(ent)) return HAM_IGNORED; new id; id = pev(ent, pev_owner); if(!is_user_alive(id) || !get_user_ethereal(id)) return HAM_IGNORED; new Float:flNextAttack = get_pdata_float(id, 83, 5); new bpammo = cs_get_user_bpammo(id, CSW_ETHEREAL); new iClip = get_pdata_int(ent, 51, 4); new fInReload = get_pdata_int(ent, 54, 4); if(fInReload && flNextAttack <= 0.0) { new temp = min(get_pcvar_num(etherealclip) - iClip, bpammo); set_pdata_int(ent, 51, iClip + temp, 4); cs_set_user_bpammo(id, CSW_ETHEREAL, bpammo - temp); set_pdata_int(ent, 54, 0, 4); fInReload = 0; ethereal_reload[id] = 0; } return HAM_IGNORED; } public Ethereal_Fire(id) { static Victim, Body, EndOrigin[3], BeamOrigin[3]; get_user_origin(id, BeamOrigin, 3) ; get_user_origin(id, EndOrigin, 3); message_begin(MSG_BROADCAST,SVC_TEMPENTITY); write_byte(TE_BEAMENTPOINT); write_short(id | 0x1000); write_coord(BeamOrigin[0]); // Start X write_coord(BeamOrigin[1]); // Start Y write_coord(BeamOrigin[2]); // Start Z write_short(ethereal_trail); // Sprite write_byte(1); // Start frame write_byte(1); // Frame rate write_byte(1); // Life write_byte(25); // Line width write_byte(0); // Noise write_byte(0); // Red write_byte(150); // Green write_byte(0); // Blue write_byte(150); // Brightness write_byte(25); // Scroll speed message_end(); message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(3); write_coord(EndOrigin[0]); write_coord(EndOrigin[1]); write_coord(EndOrigin[2]); write_short(ethereal_explode); write_byte(10); write_byte(15); write_byte(4); message_end(); get_user_aiming(id, Victim, Body, 999999); if(is_user_connected(Victim)) { new Float:Damage = float(get_damage_body(Body, get_pcvar_float(etherealdamage))); new Float:VictimOrigin[3]; VictimOrigin[0] = float(EndOrigin[0]); VictimOrigin[1] = float(EndOrigin[1]); VictimOrigin[2] = float(EndOrigin[2]); if(get_user_health(Victim) - get_pcvar_float(etherealdamage) >= 1 && is_user_alive(Victim) && !fm_get_user_godmode(Victim) && get_user_team(Victim) != get_user_team(id)) { make_blood(VictimOrigin, get_pcvar_float(etherealdamage), Victim); make_knockback(Victim, VictimOrigin, get_pcvar_float(etherealknockback)*get_pcvar_float(etherealdamage)); ExecuteHam(Ham_TakeDamage, Victim, id, id, Damage, DMG_NERVEGAS); message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("Damage"), _, Victim); write_byte(0); write_byte(0); write_long(DMG_NERVEGAS); write_coord(0) ; write_coord(0); write_coord(0); message_end(); message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), {0,0,0}, Victim); write_short(1<<13); write_short(1<<14); write_short(0x0000); write_byte(0); write_byte(255); write_byte(0); write_byte(100) ; message_end(); message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, Victim); write_short(0xFFFF); write_short(1<<13); write_short(0xFFFF) ; message_end(); } else if(get_user_health(Victim) - get_pcvar_float(etherealdamage) < 1 && is_user_alive(Victim) && !fm_get_user_godmode(Victim) && get_user_team(Victim) != get_user_team(id)) { make_blood(VictimOrigin, get_pcvar_float(etherealdamage), Victim); make_knockback(Victim, VictimOrigin, get_pcvar_float(etherealknockback)*get_pcvar_float(etherealdamage)); death_message(id, Victim, 1, "ethereal"); } } else { static ClassName[32]; pev(Victim, pev_classname, ClassName, charsmax(ClassName)); if(equal(ClassName, "func_breakable")) { if(entity_get_float(Victim, EV_FL_health) <= get_pcvar_num(etherealdamage)) { force_use(id, Victim); } } } emit_sound(id, CHAN_WEAPON, ethereal_sound[1], VOL_NORM, ATTN_NORM, 0, PITCH_NORM); } stock make_blood(const Float:vTraceEnd[3], Float:Damage, hitEnt) { new bloodColor = ExecuteHam(Ham_BloodColor, hitEnt); if(bloodColor == -1) return; new amount = floatround(Damage); amount *= 2; //according to HLSDK message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_BLOODSPRITE); write_coord(floatround(vTraceEnd[0])); write_coord(floatround(vTraceEnd[1])); write_coord(floatround(vTraceEnd[2])); write_short(BloodSpray); write_short(BloodDrop); write_byte(bloodColor); write_byte(min(max(3, amount/10), 16)); message_end(); } // Make knockback public make_knockback(Victim, Float:origin[3], Float:maxspeed) { // Get and set velocity new Float:fVelocity[3]; kickback(Victim, origin, maxspeed, fVelocity); entity_set_vector(Victim, EV_VEC_velocity, fVelocity); return(1); } // Extra calulation for knockback stock kickback(ent, Float:fOrigin[3], Float:fSpeed, Float:fVelocity[3]) { // Find origin new Float:fEntOrigin[3]; entity_get_vector(ent, EV_VEC_origin, fEntOrigin); // Do some calculations new Float:fDistance[3]; fDistance[0] = fEntOrigin[0] - fOrigin[0]; fDistance[1] = fEntOrigin[1] - fOrigin[1]; fDistance[2] = fEntOrigin[2] - fOrigin[2]; new Float:fTime =(vector_distance(fEntOrigin,fOrigin) / fSpeed); fVelocity[0] = fDistance[0] / fTime; fVelocity[1] = fDistance[1] / fTime; fVelocity[2] = fDistance[2] / fTime; return(fVelocity[0] && fVelocity[1] && fVelocity[2]); } stock death_message(Killer, Victim, ScoreBoard, const Weapon[]) { // Block death msg set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET); ExecuteHamB(Ham_Killed, Victim, Killer, 2); set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT); // Death make_deathmsg(Killer, Victim, 0, Weapon); cs_set_user_money(Killer, cs_get_user_money(Killer) + 300); // Update score board if(ScoreBoard) { message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo")); write_byte(Killer); // id write_short(pev(Killer, pev_frags)); // frags write_short(cs_get_user_deaths(Killer)); // deaths write_short(0); // class? write_short(get_user_team(Killer)); // team message_end(); message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo")); write_byte(Victim); // id write_short(pev(Victim, pev_frags)); // frags write_short(cs_get_user_deaths(Victim)); // deaths write_short(0); // class? write_short(get_user_team(Victim)); // team message_end(); } } stock set_weapon_anim(id, anim) { set_pev(id, pev_weaponanim, anim); if(is_user_connected(id)) { message_begin(MSG_ONE, SVC_WEAPONANIM, _, id); write_byte(anim); write_byte(pev(id, pev_body)); message_end(); } } stock get_damage_body(body, Float:damage) { switch(body) { case HIT_HEAD: damage *= 4.0; case HIT_STOMACH: damage *= 1.1; case HIT_CHEST: damage *= 1.5; case HIT_LEFTARM: damage *= 0.77; case HIT_RIGHTARM: damage *= 0.77; case HIT_LEFTLEG: damage *= 0.75; case HIT_RIGHTLEG: damage *= 0.75; default: damage *= 1.0; } return floatround(damage); } stock fm_get_user_bpammo(index, weapon) { static offset switch(weapon) { case CSW_AWP: offset = OFFSET_AMMO_338MAGNUM case CSW_SCOUT, CSW_AK47, CSW_G3SG1: offset = OFFSET_AMMO_762NATO case CSW_M249: offset = OFFSET_AMMO_556NATOBOX case CSW_FAMAS, CSW_M4A1, CSW_AUG, CSW_SG550, CSW_GALI, CSW_SG552: offset = OFFSET_AMMO_556NATO case CSW_M3, CSW_XM1014: offset = OFFSET_AMMO_BUCKSHOT case CSW_USP, CSW_UMP45, CSW_MAC10: offset = OFFSET_AMMO_45ACP case CSW_FIVESEVEN, CSW_P90: offset = OFFSET_AMMO_57MM case CSW_DEAGLE: offset = OFFSET_AMMO_50AE case CSW_P228: offset = OFFSET_AMMO_357SIG case CSW_GLOCK18, CSW_TMP, CSW_ELITE, CSW_MP5NAVY: offset = OFFSET_AMMO_9MM default: offset = 0 } return offset ? get_pdata_int(index, offset) : 0 } stock fm_set_user_bpammo(index, weapon, amount) { static offset switch(weapon) { case CSW_AWP: offset = OFFSET_AMMO_338MAGNUM case CSW_SCOUT, CSW_AK47, CSW_G3SG1: offset = OFFSET_AMMO_762NATO case CSW_M249: offset = OFFSET_AMMO_556NATOBOX case CSW_FAMAS, CSW_M4A1, CSW_AUG, CSW_SG550, CSW_GALI, CSW_SG552: offset = OFFSET_AMMO_556NATO case CSW_M3, CSW_XM1014: offset = OFFSET_AMMO_BUCKSHOT case CSW_USP, CSW_UMP45, CSW_MAC10: offset = OFFSET_AMMO_45ACP case CSW_FIVESEVEN, CSW_P90: offset = OFFSET_AMMO_57MM case CSW_DEAGLE: offset = OFFSET_AMMO_50AE case CSW_P228: offset = OFFSET_AMMO_357SIG case CSW_GLOCK18, CSW_TMP, CSW_ELITE, CSW_MP5NAVY: offset = OFFSET_AMMO_9MM default: offset = 0 } if(offset) set_pdata_int(index, offset, amount) return 1 } // Get Weapon Entity's CSW_ ID stock fm_get_weapon_ent_id(ent) { return get_pdata_int(ent, OFFSET_WEAPONID, 4); } // Get Weapon Entity's Owner stock fm_get_weapon_ent_owner(ent) { return get_pdata_cbase(ent, 41, 4); } // Drop all primary guns stock drop_primary_weapons(Player) { // Get user weapons static weapons[32], num, i, weaponid; num = 0; // reset passed weapons count(bugfix) get_user_weapons(Player, weapons, num); // Loop through them and drop primaries for(i = 0; i < num; i++) { // Prevent re-indexing the array weaponid = weapons ; // We definetely are holding primary gun if(((1<<weaponid) & PRIMARY_WEAPONS_BITSUM)) { // Get weapon entity static wname[32]; get_weaponname(weaponid, wname, charsmax(wname)); // Player drops the weapon and looses his bpammo engclient_cmd(Player, "drop", wname); } } } stock ColorChat(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, "^x04", "^4"); replace_all(msg, 190, "^x01", "^1"); replace_all(msg, 190, "^x03", "^3"); if(id) players[0] = id; else get_players(players, count, "ch"); { for(new i = 0; i < count; i++) { if(is_user_connected(players)) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players); write_byte(players); write_string(msg); message_end(); } } } } //------| Parecache Sounds and Models |------// public plugin_precache() { BloodSpray = precache_model("sprites/bloodspray.spr"); // initial blood BloodDrop = precache_model("sprites/blood.spr"); // splattered blood ethereal_trail = precache_model("sprites/Ethereal/ethereal_beam.spr"); ethereal_explode = precache_model("sprites/Ethereal/ethereal_exp.spr"); precache_model(EtherealModel_V); precache_model(EtherealModel_P); precache_model(EtherealModel_W); new i; for(i = 0; i < sizeof(ethereal_sound); i++) engfunc(EngFunc_PrecacheSound, ethereal_sound); for(i = 0; i < sizeof(ethereal_generic); i++) engfunc(EngFunc_PrecacheGeneric, ethereal_generic); } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par } */
- Harry Potter's Magic Wand | Afiseaza codul
/* Plugin generated by AMXX-Studio */ #include < amxmodx > #include < amxmisc > #include < cstrike > #include < hamsandwich > #include < fakemeta > #include < engine > #include < message_const > #include < ColorChat > #define PLUGIN_NAME "Harry Potter's Magic Wand" #define PLUGIN_VERSION "0.0.2" #define PLUGIN_AUTHOR "Hades Ownage & YONTU" #define HARRY_WAND_RECOIL 0.0 // Recoil #define HARRY_WAND_SPEED 0.35 // Click stanga #define HARRY_WAND_SPEED2 0.75 // Click dreapta #define HARRY_WAND_FIRE random_num( 3, 6 ) // Animatie cand trage cu click stanga #define HARRY_WAND_FIRE2 random_num( 5, 10 ) // Animatie cand trage cu click dreapta #define TE_BEAMENTPOINT 1 #define TE_EXPLOSION 3 #define TE_SPRITETRAIL 15 #define TE_BEAMCYLINDER 21 new const Tag[ ] = "[Harry Magic Wand]"; new HarryFireSound[ ] = "harry_wand/harry_shoot1.wav"; new HarryHitSound[ ] = "harry_wand/harry_hit.wav"; new HarryHitSound2[ ] = "harry_wand/harry_shoot2.wav"; new HarryModel[ ] = "models/harry_wand/v_harry_wand.mdl"; new HarryBeam, HarryExp, HarryExp2, DeathSprite; new bool:g_HasHarryWand[ 33 ]; new Harry_Ammo[ 33 ]; new Float:HarryLastShotTime[ 33 ]; new HarryDamageCvar, HarryDamageCvar2, HarryAmmo, HarryKillMoney, HarryDistance; public plugin_init( ) { register_event( "CurWeapon", "CurrentWeapon", "be", "1=1" ); register_forward( FM_CmdStart, "Harry_CmdStart" ); RegisterHam( Ham_Spawn, "player", "Ham_SpawnCallback", 1 ); HarryDamageCvar = register_cvar( "harry_damage", "100.0" ); HarryDamageCvar2 = register_cvar( "harry_damage2", "150.0" ); HarryAmmo = register_cvar( "harry_ammo", "300" ); HarryKillMoney = register_cvar( "harry_money_reward", "5000" ); HarryDistance = register_cvar( "harry_distance", "90909" ); register_concmd( "amx_get_harry", "GiveHarry", ADMIN_RCON, "< nume > < ammo >" ); } public plugin_natives () { register_native("give_weapon_harry", "native_give_herry_add", 1) } public native_give_herry_add(id) { get_harry( id ) } public plugin_precache( ) { register_plugin( PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR ); precache_sound( HarryFireSound ); precache_sound( HarryHitSound ); precache_sound( HarryHitSound2 ); precache_model( HarryModel ); HarryBeam = precache_model( "sprites/harry_wand/harry_plasma_beam.spr" ); HarryExp = precache_model( "sprites/harry_wand/harry_plasma_exp2.spr" ); HarryExp2 = precache_model( "sprites/harry_wand/harry_plasma_exp3.spr" ); DeathSprite = precache_model( "sprites/harry_wand/harry_skull.spr" ); } public client_putinserver( id ) { g_HasHarryWand[ id ] = false; Harry_Ammo[ id ] = false; } public client_disconnect( id ) { g_HasHarryWand[ id ] = false; Harry_Ammo[ id ] = false; } public GiveHarry( id, level, cid ) { if( !cmd_access( id, level, cid, 3 ) ) return PLUGIN_HANDLED; new szTtarget[ 32 ], szAmmoHarry[ 21 ]; read_argv( 1, szTtarget, 31 ); read_argv( 2, szAmmoHarry, 20 ); new iPlayer = cmd_target( id, szTtarget, 8 ); new szAdminName[ 32 ], szPlayerName[ 32 ]; get_user_name( id, szAdminName, 31 ); get_user_name( iPlayer, szPlayerName, 31 ); if( !iPlayer ) return PLUGIN_HANDLED; if( !is_user_alive( iPlayer ) ) { client_print( id, print_console, "Jucatorul %s nu este in viata !", szPlayerName ); return 1; } if( g_HasHarryWand[ iPlayer ] ) { client_print( id, print_console, "Jucatorul %s are deja bagheta !", szPlayerName ); return 1; } else { new AmmoForMagic = str_to_num( szAmmoHarry ); ColorChat( 0, GREEN, "^x04%s^x01 Adminul^x03 %s i-a dat lui^x03 %s^x01 bagheta lui Harry cu^x03 %d ammo^x01 !", Tag, szAdminName, szPlayerName, szAmmoHarry ); get_harry( iPlayer ); Harry_Ammo[ iPlayer ] += AmmoForMagic; } return PLUGIN_CONTINUE; } public get_harry( id ) { if( is_user_alive( id ) ) { g_HasHarryWand[ id ] = true; engclient_cmd( id, "weapon_knife" ); Harry_Ammo[ id ] = get_pcvar_num( HarryAmmo ); } else { client_print( id, print_console, "Jucatorul nu este in viata! " ); g_HasHarryWand[ id ] = false; return 1; } return 1; } public CurrentWeapon( id ) if( get_user_weapon( id ) == CSW_KNIFE && g_HasHarryWand[ id ] ) set_pev( id, pev_viewmodel2, HarryModel ); public Ham_SpawnCallback( id ) { if( !is_user_alive( id ) ) return 1; g_HasHarryWand[ id ] = false; return 0; } public Harry_CmdStart( id, uc_handle, seed ) { if( is_user_alive( id ) && g_HasHarryWand[ id ] ) { static CurButton; CurButton = get_uc( uc_handle, UC_Buttons ); new Float:flNextAttack = get_pdata_float( id, 83, 5 ); if( CurButton & IN_ATTACK ) { if( get_user_weapon( id ) == CSW_KNIFE && g_HasHarryWand[ id ] ) { if( Harry_Ammo[ id ] > 0 && flNextAttack <= 0.0 ) { if( get_gametime( ) - HarryLastShotTime[ id ] > HARRY_WAND_SPEED ) { set_weapon_anim( id, HARRY_WAND_FIRE ); emit_sound( id, CHAN_WEAPON, HarryFireSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM ); Harry_Fire( id ); if( Harry_Ammo[ id ] > 0 ) { set_hudmessage( 0, 127, 255, 0.01, 0.85, 0, 6.0, 1.0 ); show_hudmessage( id, "Remaining Ammo: %d !", Harry_Ammo[ id ] ); } else if( Harry_Ammo[ id ] <= 0 ) { set_hudmessage( 255, 0, 0, 0.01, 0.90, 0, 6.0, 1.0 ); show_hudmessage( id, "No Ammo !" ); } static Float:Punch_Angles[ 3 ]; Punch_Angles[ 0] = -5.0; Punch_Angles[ 1 ] = HARRY_WAND_RECOIL; Punch_Angles[ 2 ] = HARRY_WAND_RECOIL; set_pev( id, pev_punchangle, Punch_Angles ); Harry_Ammo[ id ] -= 1; HarryLastShotTime[ id ] = get_gametime( ); } } CurButton &= ~IN_ATTACK; set_uc( uc_handle, UC_Buttons, CurButton ); } } else if( CurButton & IN_ATTACK2 ) { if( get_user_weapon( id ) == CSW_KNIFE && g_HasHarryWand[ id ] ) { if( Harry_Ammo[ id ] >= 5 && flNextAttack <= 0.0 ) { if( get_gametime( ) - HarryLastShotTime[ id ] > HARRY_WAND_SPEED2 ) { set_weapon_anim( id, HARRY_WAND_FIRE2 ); emit_sound( id, CHAN_WEAPON, HarryFireSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM ); Harry_Fire2( id ); set_hudmessage( 0, 127, 255, 0.01, 0.85, 0, 6.0, 1.0 ); show_hudmessage( id, "Remaining Ammo: %d !", Harry_Ammo[ id ] ); static Float:Punch_Angles[ 3 ]; Punch_Angles[ 0 ] = -5.0; Punch_Angles[ 1 ] = HARRY_WAND_RECOIL; Punch_Angles[ 2 ] = HARRY_WAND_RECOIL; set_pev( id, pev_punchangle, Punch_Angles ); Harry_Ammo[ id ] -= 3; HarryLastShotTime[ id ] = get_gametime( ); } } CurButton &= ~IN_ATTACK2; set_uc( uc_handle, UC_Buttons, CurButton ); } } } else if( is_user_alive ( id ) && !g_HasHarryWand[ id ] ) return PLUGIN_CONTINUE; return PLUGIN_CONTINUE; } public Harry_Fire( id ) { static Victim, Body, EndOrigin[ 3 ], BeamOrigin[ 3 ]; get_user_origin( id, BeamOrigin, 3 ); get_user_origin( id, EndOrigin, 3 ); message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( 1 ); write_short( id | 0x1000 ); write_coord( BeamOrigin[ 0 ] ); // Start X write_coord( BeamOrigin[ 1 ] ); // Start Y write_coord( BeamOrigin[ 2 ] ); // Start Z write_short( HarryBeam); // Sprite write_byte( 1 ); // Start frame write_byte( 1 ); // Frame rate write_byte( 1 ); // Life write_byte( 40 ); // Line width write_byte( 0 ); // Noise write_byte( 108 ); // Red write_byte( 236 ); // Green write_byte( 23 ); // Blue write_byte( 150 ); // Brightness write_byte( 25 ); // Scroll speed message_end( ); message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( 3 ); write_coord( EndOrigin[ 0 ] ); write_coord( EndOrigin[ 1 ] ); write_coord( EndOrigin[ 2 ] ); write_short( HarryExp ); // sprite write_byte( 10 ); // scale in 0.1's write_byte( 15 ); // framerate write_byte( 4 ); // flags message_end( ); get_user_aiming( id, Victim, Body, get_pcvar_num( HarryDistance ) ); if( is_user_connected( Victim ) ) { new Float:Damage = float( get_damage_body( Body, get_pcvar_float( HarryDamageCvar ) ) ); new Float:VictimOrigin[ 3 ]; VictimOrigin[ 0 ] = float( EndOrigin[ 0 ] ); VictimOrigin[ 1 ] = float( EndOrigin[ 1 ] ); VictimOrigin[ 2 ] = float( EndOrigin[ 2 ] ); if( get_user_health( Victim ) - get_pcvar_float( HarryDamageCvar ) >= 1 && is_user_alive( Victim ) && !fm_get_user_godmode( Victim ) && get_user_team( Victim ) != get_user_team( id ) ) { new iOrigin[ 3 ]; get_user_origin( Victim, iOrigin, 0 ); message_begin( MSG_PVS, SVC_TEMPENTITY, iOrigin ); write_byte( 21 ); write_coord( iOrigin[ 0 ] ); write_coord( iOrigin[ 1 ] ); write_coord( iOrigin[ 2 ] ); write_coord( iOrigin[ 0 ] ); write_coord( iOrigin[ 1 ] ); write_coord( iOrigin[ 2 ] + 60 ); // end axis + radius write_short( HarryExp ); // sprite write_byte( 0 ); // startfrate write_byte( 0 ); // framerate write_byte( 10 ); // life in 0.1 sec write_byte( 60 ); // width write_byte( 0 ); // amplitude write_byte( 0 ); // red write_byte( 200 ); // green write_byte( 200 ); // blue write_byte( 153 ); // brightness write_byte( 0 ); // speed message_end( ); message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( 15 ); write_coord( iOrigin[ 0 ] ); // start position (X) write_coord( iOrigin[ 1 ] ); // start position (Y) write_coord( iOrigin[ 2 ] + 40 ); // start position (Z) write_coord( iOrigin[ 0 ] ); // end position (X) write_coord( iOrigin[ 1 ] ); // end position (Y) write_coord( iOrigin[ 2 ] ); // end position (Z) write_short( DeathSprite ); // sprite index write_byte( 50 ); // count write_byte( 20 ); // life in 0.1's write_byte( 2 ); // scale in 0.1's write_byte( 50 ); // velocity along vector in 10's write_byte( 10 ); // randomness of velocity in 10's message_end( ); make_knockback( Victim, VictimOrigin, 3 * get_pcvar_float( HarryDamageCvar ) ); ExecuteHam( Ham_TakeDamage, Victim, id, id, Damage, DMG_NERVEGAS ); message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "Damage" ), _, Victim ); write_byte( 0 ); write_byte( 0 ); write_long( DMG_SHOCK ); write_coord( 0 ); write_coord( 0 ); write_coord( 0 ); message_end( ); FadeScreen( Victim, 4.0, 255, 122, 122, 100 ); ShakeScreen( Victim, 3.0 ); } else if( get_user_health( Victim ) - get_pcvar_float( HarryDamageCvar ) < 1 && is_user_alive( Victim ) && !fm_get_user_godmode( Victim ) && get_user_team( Victim ) != get_user_team( id ) ) { new iOrigin[ 3 ]; get_user_origin( Victim, iOrigin, 0 ); message_begin( MSG_PVS, SVC_TEMPENTITY, iOrigin ); write_byte( 21 ); write_coord( iOrigin[ 0 ] ); write_coord( iOrigin[ 1 ] ); write_coord( iOrigin[ 2 ] ); write_coord( iOrigin[ 0 ] ); write_coord( iOrigin[ 1 ] ); write_coord( iOrigin[ 2 ] + 60 ); // end axis + radius write_short( HarryExp ); // sprite write_byte( 0 ); // startfrate write_byte( 0 ); // framerate write_byte( 10 ); // life in 0.1 sec write_byte( 60 ); // width write_byte( 0 ); // amplitude write_byte( 0 ); // red write_byte( 200 ); // green write_byte( 200 ); // blue write_byte( 153 ); // brightness write_byte( 0 ); // speed message_end( ); message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( 15 ); write_coord( iOrigin[ 0 ] ); // start position (X) write_coord( iOrigin[ 1 ] ); // start position (Y) write_coord( iOrigin[ 2 ] + 40 ); // start position (Z) write_coord( iOrigin[ 0 ] ); // end position (X) write_coord( iOrigin[ 1 ] ); // end position (Y) write_coord( iOrigin[ 2 ] ); // end position (Z) write_short( DeathSprite ); // sprite index write_byte( 50 ); // count write_byte( 20 ); // life in 0.1's write_byte( 2 ); // scale in 0.1's write_byte( 50 ); // velocity along vector in 10's write_byte( 10 ); // randomness of velocity in 10's message_end( ); make_knockback( Victim, VictimOrigin, 3 * get_pcvar_float( HarryDamageCvar ) ); death_message( id, Victim, 1, "Magic Wand" ); } } else { static ClassName[ 32 ]; pev( Victim, pev_classname, ClassName, charsmax( ClassName ) ); if( equal( ClassName, "func_breakable" ) ) if( entity_get_float( Victim, EV_FL_health ) <= 80 ) force_use( id, Victim ); } emit_sound( id, CHAN_WEAPON, HarryHitSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM ); } public Harry_Fire2( id ) { static Victim, Body, EndOrigin[3], BeamOrigin[3]; get_user_origin( id, BeamOrigin, 3 ) ; get_user_origin( id, EndOrigin, 3 ); message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( 1 ); write_short( id | 0x1000 ); write_coord( BeamOrigin[ 0 ] ); // Start X write_coord( BeamOrigin[ 1 ] ); // Start Y write_coord( BeamOrigin[ 2 ] ); // Start Z write_short( HarryBeam ); // Sprite write_byte( 1 ); // Start frame write_byte( 1 ); // Frame rate write_byte( 1 ); // Life write_byte( 40 ); // Line width write_byte( 0 ); // Noise write_byte( 150 ); // Red write_byte( 22 ); // Green write_byte( 235 ); // Blue write_byte( 150 ); // Brightness write_byte( 25 ); // Scroll speed message_end( ); message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( 3 ); write_coord( EndOrigin[ 0 ] ); write_coord( EndOrigin[ 1 ] ); write_coord( EndOrigin[ 2 ] ); write_short( HarryExp2 ); write_byte( 10 ); write_byte( 15 ); write_byte( 4 ); message_end( ); get_user_aiming( id, Victim, Body, get_pcvar_num( HarryDistance ) ); if( is_user_alive( Victim ) ) { new Float:Damage = float( get_damage_body( Body, get_pcvar_float( HarryDamageCvar ) ) ); new Float:VictimOrigin[ 3 ]; VictimOrigin[ 0 ] = float( EndOrigin[ 0 ] ); VictimOrigin[ 1 ] = float( EndOrigin[ 1 ] ); VictimOrigin[ 2 ] = float( EndOrigin[ 2 ] ); if( get_user_health( Victim ) - get_pcvar_float( HarryDamageCvar2 ) >= 1 && is_user_alive( Victim ) && !fm_get_user_godmode( Victim ) && get_user_team( Victim ) != get_user_team( id ) ) { new iOrigin[ 3 ]; get_user_origin( Victim, iOrigin, 0 ); message_begin( MSG_PVS, SVC_TEMPENTITY, iOrigin ); write_byte( 21 ); write_coord( iOrigin[ 0 ] ); write_coord( iOrigin[ 1 ] ); write_coord( iOrigin[ 2 ] ); write_coord( iOrigin[ 0 ] ); write_coord( iOrigin[ 1 ] ); write_coord( iOrigin[ 2 ] + 60 ); // end axis + radius write_short( HarryExp2 ); // sprite write_byte( 0 ); // startfrate write_byte( 0 ); // framerate write_byte( 10 ); // life in 0.1 sec write_byte( 60 ); // width write_byte( 0 ); // amplitude write_byte( 217 ); // red write_byte( 132 ); // green write_byte( 47 ); // blue write_byte( 153 ); // brightness write_byte( 0 ); // speed message_end( ); message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( 15 ); write_coord( iOrigin[ 0 ] ); // start position (X) write_coord( iOrigin[ 1 ] ); // start position (Y) write_coord( iOrigin[ 2 ] + 40 ); // start position (Z) write_coord( iOrigin[ 0 ] ); // end position (X) write_coord( iOrigin[ 1 ] ); // end position (Y) write_coord( iOrigin[ 2 ] ); // end position (Z) write_short( DeathSprite ); // sprite index write_byte( 50 ); // count write_byte( 20 ); // life in 0.1's write_byte( 2 ); // scale in 0.1's write_byte( 50 ); // velocity along vector in 10's write_byte( 10 ); // randomness of velocity in 10's message_end( ); make_knockback( Victim, VictimOrigin, 3 * get_pcvar_float( HarryDamageCvar2 ) ); ExecuteHam( Ham_TakeDamage, Victim, id, id, Damage, DMG_NERVEGAS ); message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "Damage" ), _, Victim ); write_byte( 0 ); write_byte( 0 ); write_long( DMG_NERVEGAS ); write_coord( 0 ) ; write_coord( 0 ); write_coord( 0 ); message_end( ); FadeScreen( Victim, 4.0, 0, 255, 0, 100 ); ShakeScreen( Victim, 3.0 ); } else if( get_user_health( Victim ) - get_pcvar_float( HarryDamageCvar2 ) < 1 && is_user_alive( Victim ) && !fm_get_user_godmode( Victim ) && get_user_team( Victim ) != get_user_team( id ) ) { new iOrigin[ 3 ]; get_user_origin( Victim, iOrigin, 0 ); message_begin( MSG_PVS, SVC_TEMPENTITY, iOrigin ); write_byte( 21 ); write_coord( iOrigin[ 0 ] ); write_coord( iOrigin[ 1 ] ); write_coord( iOrigin[ 2 ] ); write_coord( iOrigin[ 0 ] ); write_coord( iOrigin[ 1 ] ); write_coord( iOrigin[ 2 ] + 60 ); // end axis + radius write_short( HarryExp2 ); // sprite write_byte( 0 ); // startfrate write_byte( 0 ); // framerate write_byte( 10 ); // life in 0.1 sec write_byte( 60 ); // width write_byte( 0 ); // amplitude write_byte( 217 ); // red write_byte( 132 ); // green write_byte( 47 ); // blue write_byte( 153 ); // brightness write_byte( 0 ); // speed message_end( ); message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( 15 ); write_coord( iOrigin[ 0 ] ); // start position (X) write_coord( iOrigin[ 1 ] ); // start position (Y) write_coord( iOrigin[ 2 ] + 40 ); // start position (Z) write_coord( iOrigin[ 0 ] ); // end position (X) write_coord( iOrigin[ 1 ] ); // end position (Y) write_coord( iOrigin[ 2 ] ); // end position (Z) write_short( DeathSprite ); // sprite index write_byte( 50 ); // count write_byte( 20 ); // life in 0.1's write_byte( 2 ); // scale in 0.1's write_byte( 50 ); // velocity along vector in 10's write_byte( 10 ); // randomness of velocity in 10's message_end( ); make_knockback( Victim, VictimOrigin, 3 * get_pcvar_float( HarryDamageCvar2 ) ); death_message( id, Victim, 1, "Double Magic Wand" ); } } else { static ClassName[ 32 ]; pev( Victim, pev_classname, ClassName, charsmax( ClassName ) ); if( equal( ClassName, "func_breakable" ) ) if( entity_get_float( Victim, EV_FL_health ) <= 80 ) force_use( id, Victim ); } emit_sound( id, CHAN_WEAPON, HarryHitSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM ); } public make_knockback( Victim, Float:origin[ 3 ], Float:maxspeed ) { new Float:fVelocity[ 3 ]; kickback( Victim, origin, maxspeed, fVelocity ); entity_set_vector( Victim, EV_VEC_velocity, fVelocity ); return( 1 ); } stock ShakeScreen( id, const Float:iSeconds ) { message_begin( MSG_ONE, get_user_msgid( "ScreenShake" ), { 0, 0, 0 }, id ); write_short( floatround( 4096.0 * iSeconds, floatround_round ) ); write_short( floatround( 4096.0 * iSeconds, floatround_round ) ); write_short( 1<<13 ); message_end( ); } stock FadeScreen( id, const Float:iSeconds, const iRed, const iGreen, const iBlue, const iAlpha ) { message_begin( MSG_ONE, get_user_msgid( "ScreenFade" ), _, id ); write_short( floatround( 4096.0 * iSeconds, floatround_round ) ); write_short( floatround( 4096.0 * iSeconds, floatround_round ) ); write_short( 0x0000 ); write_byte( iRed ); write_byte( iGreen ); write_byte( iBlue ); write_byte( iAlpha ); message_end( ); } stock kickback( ent, Float:fOrigin[ 3 ], Float:fSpeed, Float:fVelocity[ 3 ] ) { new Float:fEntOrigin[ 3 ]; entity_get_vector( ent, EV_VEC_origin, fEntOrigin ); new Float:fDistance[ 3 ]; fDistance[ 0 ] = fEntOrigin[ 0 ] - fOrigin[ 0 ]; fDistance[ 1 ] = fEntOrigin[ 1 ] - fOrigin[ 1 ]; fDistance[ 2 ] = fEntOrigin[ 2 ] - fOrigin[ 2 ]; new Float:fTime =( vector_distance( fEntOrigin, fOrigin ) / fSpeed ); fVelocity[ 0 ] = fDistance[ 0 ] / fTime; fVelocity[ 1 ] = fDistance[ 1 ] / fTime; fVelocity[ 2 ] = fDistance[ 2 ] / fTime; return( fVelocity[ 0 ] && fVelocity[ 1 ] && fVelocity[ 2 ] ); } // stock from "m79" stock death_message( Killer, Victim, ScoreBoard, const Weapon[ ] ) { set_msg_block( get_user_msgid( "DeathMsg" ), BLOCK_SET ); ExecuteHamB( Ham_Killed, Victim, Killer, 2 ); set_msg_block( get_user_msgid( "DeathMsg" ), BLOCK_NOT ); make_deathmsg( Killer, Victim, 0, Weapon ); cs_set_user_money( Killer, cs_get_user_money( Killer ) + get_pcvar_num( HarryKillMoney ) ); if( ScoreBoard ) { message_begin( MSG_BROADCAST, get_user_msgid( "ScoreInfo" ) ); write_byte( Killer ); write_short( pev( Killer, pev_frags ) ); write_short( cs_get_user_deaths( Killer ) ); write_short( 0 ); write_short( get_user_team( Killer ) ); message_end( ); message_begin( MSG_BROADCAST, get_user_msgid( "ScoreInfo" ) ); write_byte( Victim ); write_short( pev( Victim, pev_frags ) ); write_short( cs_get_user_deaths( Victim ) ); write_short( 0 ); write_short( get_user_team( Victim ) ); message_end( ); } } stock set_weapon_anim( id, anim ) { set_pev( id, pev_weaponanim, anim ); if( is_user_alive( id ) ) { message_begin( MSG_ONE, SVC_WEAPONANIM, _, id ); write_byte( anim ); write_byte( pev( id, pev_body ) ); message_end( ); } } stock get_damage_body( body, Float:fDamage ) { switch( body ) { case HIT_HEAD: fDamage *= 4.0; case HIT_STOMACH: fDamage *= 1.1; case HIT_CHEST: fDamage *= 1.5; case HIT_LEFTARM: fDamage *= 0.77; case HIT_RIGHTARM: fDamage *= 0.77; case HIT_LEFTLEG: fDamage *= 0.75; case HIT_RIGHTLEG: fDamage *= 0.75; default: fDamage *= 1.0; } return floatround( fDamage ); } // stock from "fakemeta_util" stock fm_get_user_godmode( index ) { new Float:val; pev( index, pev_takedamage, val ); return ( val == DAMAGE_NO ); }
- WaterGUN | Afiseaza codul
#include <amxmodx> #include <fakemeta> #include <fakemeta_util> #include <fun> #include <hamsandwich> #include <cstrike> #include <engine> #include <xs> #define PLUGIN "Furien Water GUN" #define VERSION "1.1" #define AUTHOR "Tr3fla & Edit By Blue" new normalTrace[33], lastTrace[33], cvEnabled, weapon2, dummy; #define ENG_NULLENT -1 #define EV_INT_WEAPONKEY EV_INT_impulse #define watergun_WEAPONKEY 893 #define MAX_PLAYERS 32 #define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers) #define TASK_FBURN 100 #define ID_FBURN ( taskid - TASK_FBURN ) #define MAX_CLIENTS 32 new bool:g_fRoundEnd #define FIRE_DURATION 6 #define FIRE_DAMAGE 25 const USE_STOPPED = 0 const OFFSET_ACTIVE_ITEM = 373 const OFFSET_WEAPONOWNER = 41 const OFFSET_LINUX = 5 const OFFSET_LINUX_WEAPONS = 4 const m_fInReload = 54 const m_flTimeWeaponIdle = 48 #define WEAP_LINUX_XTRA_OFF 4 #define m_fKnown 44 #define m_flNextPrimaryAttack 46 #define m_iClip 51 #define PLAYER_LINUX_XTRA_OFF 5 #define m_flNextAttack 83 #define watergun_RELOAD_TIME 3.5 #define watergun_RELOAD 1 #define watergun_DRAW 2 #define watergun_SHOOT1 3 #define watergun_SHOOT2 4 new g_flameSpr new g_smokeSpr new g_burning_duration[ MAX_CLIENTS + 1 ] #define write_coord_f(%1) engfunc(EngFunc_WriteCoord,%1) new const Fire_Sounds[][] = { "weapons/waterp.wav" } new watergun_V_MODEL[64] = "models/Water-GUN/v_waterg.mdl" new watergun_P_MODEL[64] = "models/Water-GUN/p_waterg.mdl" new watergun_W_MODEL[64] = "models/Water-GUN/w_waterg.mdl" //new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 } new cvar_dmg_watergun, cvar_recoil_watergun, cvar_clip_watergun, cvar_spd_watergun, cvar_watergun_ammo new g_MaxPlayers, g_orig_event_watergun, g_IsInPrimaryAttack new Float:cl_pushangle[MAX_PLAYERS + 1][3], m_iBlood[2] new g_has_watergun[33], g_clip_ammo[33], g_watergun_TmpClip[33], oldweap[33] new watergun_sprite const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<< CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90) new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552", "weapon_ak47", "weapon_knife", "weapon_p90" } public plugin_init() { register_plugin( PLUGIN, VERSION, AUTHOR ) register_message(get_user_msgid("DeathMsg"), "message_DeathMsg") register_event("CurWeapon","CurrentWeapon","be","1=1") RegisterHam(Ham_Item_AddToPlayer, "weapon_mp5navy", "fw_watergun_AddToPlayer") RegisterHam(Ham_Use, "func_tank", "fw_UseStationary_Post", 1) RegisterHam(Ham_Use, "func_tankmortar", "fw_UseStationary_Post", 1) RegisterHam(Ham_Use, "func_tankrocket", "fw_UseStationary_Post", 1) RegisterHam(Ham_Use, "func_tanklaser", "fw_UseStationary_Post", 1) for (new i = 1; i < sizeof WEAPONENTNAMES; i++) if (WEAPONENTNAMES[0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES, "fw_Item_Deploy_Post", 1) RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_mp5navy", "fw_watergun_PrimaryAttack") RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_mp5navy", "fw_watergun_PrimaryAttack_Post", 1) RegisterHam(Ham_Item_PostFrame, "weapon_mp5navy", "watergun_ItemPostFrame") RegisterHam(Ham_Weapon_Reload, "weapon_mp5navy", "watergun_Reload") RegisterHam(Ham_Weapon_Reload, "weapon_mp5navy", "watergun_Reload_Post", 1) RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage") RegisterHam( Ham_Spawn, "player", "PlayerSpawn_Post", 1 ); register_forward(FM_SetModel, "fw_SetModel") register_event( "DeathMsg", "EV_DeathMsg", "a" ); register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post_fw", 1) register_forward(FM_PlaybackEvent, "fwPlaybackEvent") //RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack", 1) //RegisterHam(Ham_TraceAttack, "func_breakable", "fw_TraceAttack", 1) //RegisterHam(Ham_TraceAttack, "func_wall", "fw_TraceAttack", 1) //RegisterHam(Ham_TraceAttack, "func_door", "fw_TraceAttack", 1) //RegisterHam(Ham_TraceAttack, "func_door_rotating", "fw_TraceAttack", 1) //RegisterHam(Ham_TraceAttack, "func_plat", "fw_TraceAttack", 1) //RegisterHam(Ham_TraceAttack, "func_rotating", "fw_TraceAttack", 1) cvar_dmg_watergun = register_cvar("zp_watergun_dmg", "70.0") cvar_recoil_watergun = register_cvar("zp_watergun_recoil", "1.01") cvar_clip_watergun = register_cvar("zp_watergun_clip", "50") cvar_spd_watergun = register_cvar("zp_watergun_spd", "1.02") cvar_watergun_ammo = register_cvar("zp_watergun_ammo", "200") } public plugin_precache() { precache_model(watergun_V_MODEL) precache_model(watergun_P_MODEL) precache_model(watergun_W_MODEL) for(new i = 0; i < sizeof Fire_Sounds; i++) precache_sound(Fire_Sounds) m_iBlood[0] = precache_model("sprites/blood.spr") m_iBlood[1] = precache_model("sprites/bloodspray.spr") watergun_sprite = precache_model("sprites/watergun.spr") } public client_connect(id) { normalTrace[id] = 0; g_has_watergun[id] = false } public client_disconnect(id) { normalTrace[id] = 0; g_has_watergun[id] = false remove_task(id + TASK_FBURN ) } // player spawns, and some other such things public event_resethud(id) { lastTrace[id] = 0; } // block forced resethud call public cmd_fullupdate(id) { return PLUGIN_HANDLED; } // traceline hook, meat and bones of the entire plugin public fw_traceline(Float:vecStart[3],Float:vecEnd[3],ignoreM,id,pentru) // pentToSkip == id, for clarity { if(!is_user_connected(id)) return FMRES_IGNORED; // grab normal trace if(!normalTrace[id]) { normalTrace[id] = pentru; return FMRES_IGNORED; } // ignore normal trace else if(pentru == normalTrace[id]) return FMRES_IGNORED; // no functionality if(!get_pcvar_num(cvEnabled)) return FMRES_IGNORED; // not a player entity, or player is dead if(!is_user_alive(id)) return FMRES_IGNORED; // not shooting anything if(!(pev(id,pev_button) & IN_ATTACK)) return FMRES_IGNORED; weapon2 = get_user_weapon(id,dummy,dummy); // using a shotgun, expect multiple tracelines if(weapon2 == CSW_M3 || weapon2 == CSW_XM1014) return FMRES_IGNORED; // this is a second traceline, for shooting through walls if(pentru == lastTrace[id]) { // values sure to throw off any traceline set_tr(TR_vecEndPos,Float:{4096.0,4096.0,4096.0}); set_tr(TR_AllSolid,1); set_tr(TR_pHit,0); set_tr(TR_iHitgroup,0); set_tr(TR_flFraction,1.0); return FMRES_SUPERCEDE; } // remeber traceline index for next time lastTrace[id] = pentru; return FMRES_IGNORED; } // finished client calculations, reset our traceline index public fw_playerpostthink(id) { lastTrace[id] = 0; } public plugin_natives () { register_native("give_weapon_watergun", "native_give_weapon_add", 1) } public native_give_weapon_add(id) { give_watergun(id) } public fwPrecacheEvent_Post(type, const name[]) { if (equal("events/mp5n.sc", name)) { g_orig_event_watergun = get_orig_retval() return FMRES_HANDLED } return FMRES_IGNORED } public fw_SetModel(entity, model[]) { if(!is_valid_ent(entity)) return FMRES_IGNORED static szClassName[33] entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName)) if(!equal(szClassName, "weaponbox")) return FMRES_IGNORED static iOwner iOwner = entity_get_edict(entity, EV_ENT_owner) if(equal(model, "models/w_mp5.mdl")) { static iStoredAugID iStoredAugID = find_ent_by_owner(ENG_NULLENT, "weapon_mp5navy", entity) if(!is_valid_ent(iStoredAugID)) return FMRES_IGNORED if(g_has_watergun[iOwner]) { entity_set_int(iStoredAugID, EV_INT_WEAPONKEY, watergun_WEAPONKEY) g_has_watergun[iOwner] = false entity_set_model(entity, watergun_W_MODEL) return FMRES_SUPERCEDE } } return FMRES_IGNORED } public EV_DeathMsg( ) { static pevVictim; pevVictim = read_data( 2 ) if( !is_user_connected( pevVictim ) ) return remove_task( pevVictim + TASK_FBURN ) } public PlayerSpawn_Post( Player ) { if( !is_user_alive( Player ) ) return; g_burning_duration[ Player ] = 0 } public give_watergun(id) { drop_weapons(id, 1) new iWep2 = give_item(id,"weapon_mp5navy") if( iWep2 > 0 ) { cs_set_weapon_ammo(iWep2, get_pcvar_num(cvar_clip_watergun)) cs_set_user_bpammo (id, CSW_MP5NAVY, get_pcvar_num(cvar_watergun_ammo)) UTIL_PlayWeaponAnimation(id, watergun_DRAW) set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF) } g_has_watergun[id] = true } public fw_watergun_AddToPlayer(watergun, id) { if(!is_valid_ent(watergun) || !is_user_connected(id)) return HAM_IGNORED if(entity_get_int(watergun, EV_INT_WEAPONKEY) == watergun_WEAPONKEY) { g_has_watergun[id] = true entity_set_int(watergun, EV_INT_WEAPONKEY, 0) return HAM_HANDLED } return HAM_IGNORED } public fw_UseStationary_Post(entity, caller, activator, use_type) { if (use_type == USE_STOPPED && is_user_connected(caller)) replace_weapon_models(caller, get_user_weapon(caller)) } public fw_Item_Deploy_Post(weapon_ent) { static owner owner = fm_cs_get_weapon_ent_owner(weapon_ent) static weaponid weaponid = cs_get_weapon_id(weapon_ent) replace_weapon_models(owner, weaponid) } public CurrentWeapon(id) { replace_weapon_models(id, read_data(2)) if(read_data(2) != CSW_MP5NAVY || !g_has_watergun[id]) return static Float:iSpeed if(g_has_watergun[id]) iSpeed = get_pcvar_float(cvar_spd_watergun) static weapon[32],Ent get_weaponname(read_data(2),weapon,31) Ent = find_ent_by_owner(-1,weapon,id) if(Ent) { static Float:Delay Delay = get_pdata_float( Ent, 46, 4) * iSpeed if (Delay > 0.0) { set_pdata_float(Ent, 46, Delay, 4) } } } replace_weapon_models(id, weaponid) { switch (weaponid) { case CSW_MP5NAVY: { if(g_has_watergun[id]) { set_pev(id, pev_viewmodel2, watergun_V_MODEL) set_pev(id, pev_weaponmodel2, watergun_P_MODEL) if(oldweap[id] != CSW_MP5NAVY) { UTIL_PlayWeaponAnimation(id, watergun_DRAW) set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF) } } } } oldweap[id] = weaponid } public fw_UpdateClientData_Post_fw(Player, SendWeapons, CD_Handle) { if(!is_user_alive(Player) || (get_user_weapon(Player) != CSW_MP5NAVY || !g_has_watergun[Player])) return FMRES_IGNORED set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001) return FMRES_HANDLED } public fw_watergun_PrimaryAttack(Weapon) { new Player = get_pdata_cbase(Weapon, 41, 4) if (!g_has_watergun[Player]) return g_IsInPrimaryAttack = 1 pev(Player,pev_punchangle,cl_pushangle[Player]) g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon) } public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2) { if ((eventid != g_orig_event_watergun) || !g_IsInPrimaryAttack) return FMRES_IGNORED if (!(1 <= invoker <= g_MaxPlayers)) return FMRES_IGNORED playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2) return FMRES_SUPERCEDE } public fw_watergun_PrimaryAttack_Post(Weapon) { g_IsInPrimaryAttack = 0 new Player = get_pdata_cbase(Weapon, 41, 4) new szClip, szAmmo get_user_weapon(Player, szClip, szAmmo) if(!is_user_alive(Player)) return if(g_has_watergun[Player]) { if (!g_clip_ammo[Player]) return new Float:push[3] pev(Player,pev_punchangle,push) xs_vec_sub(push,cl_pushangle[Player],push) xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_watergun),push) xs_vec_add(push,cl_pushangle[Player],push) set_pev(Player,pev_punchangle,push) emit_sound(Player, CHAN_WEAPON, Fire_Sounds[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM) UTIL_PlayWeaponAnimation(Player, random_num(watergun_SHOOT1, watergun_SHOOT2)) static Float:plrViewAngles[3], Float:VecEnd[3], Float:VecDir[3], Float:PlrOrigin[3] pev(Player, pev_v_angle, plrViewAngles) static Float:VecSrc[3], Float:VecDst[3] //VecSrc = pev->origin + pev->view_ofs pev(Player, pev_origin, PlrOrigin) pev(Player, pev_view_ofs, VecSrc) xs_vec_add(VecSrc, PlrOrigin, VecSrc) //VecDst = VecDir * 8192.0 angle_vector(plrViewAngles, ANGLEVECTOR_FORWARD, VecDir); xs_vec_mul_scalar(VecDir, 8192.0, VecDst); xs_vec_add(VecDst, VecSrc, VecDst); new hTrace = create_tr2() engfunc(EngFunc_TraceLine, VecSrc, VecDst, 0, Player, hTrace) get_tr2(hTrace, TR_vecEndPos, VecEnd); create_tracer_water(Player, VecSrc, VecEnd) } } public fw_TakeDamage(victim, inflictor, attacker, Float:damage) { if(!is_user_alive(attacker)) return; if (victim != attacker && is_user_connected(attacker)) { if(get_user_weapon(attacker) == CSW_MP5NAVY) { if(g_has_watergun[attacker]) { SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_watergun)) if( !task_exists( victim + TASK_FBURN ) ) { g_burning_duration[ victim ] += FIRE_DURATION * 5 set_task( 0.2, "CTask__BurningFlame", victim + TASK_FBURN, _, _, "b" ) } } } } } public message_DeathMsg(msg_id, msg_dest, id) { static szTruncatedWeapon[33], iAttacker, iVictim get_msg_arg_string(4, szTruncatedWeapon, charsmax(szTruncatedWeapon)) iAttacker = get_msg_arg_int(1) iVictim = get_msg_arg_int(2) if(!is_user_connected(iAttacker) || iAttacker == iVictim) return PLUGIN_CONTINUE if(equal(szTruncatedWeapon, "mp5navy") && get_user_weapon(iAttacker) == CSW_MP5NAVY) { if(g_has_watergun[iAttacker]) set_msg_arg_string(4, "mp5navy") } return PLUGIN_CONTINUE } stock fm_cs_get_current_weapon_ent(id) { return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX) } stock fm_cs_get_weapon_ent_owner(ent) { return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS) } stock UTIL_PlayWeaponAnimation(const Player, const Sequence) { set_pev(Player, pev_weaponanim, Sequence) message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player) write_byte(Sequence) write_byte(pev(Player, pev_body)) message_end() } public watergun_ItemPostFrame(weapon_entity) { new id = pev(weapon_entity, pev_owner) if (!is_user_connected(id)) return HAM_IGNORED if (!g_has_watergun[id]) return HAM_IGNORED static iClipExtra iClipExtra = get_pcvar_num(cvar_clip_watergun) new Float:flNextAttack = get_pdata_float(id, m_flNextAttack, PLAYER_LINUX_XTRA_OFF) new iBpAmmo = cs_get_user_bpammo(id, CSW_MP5NAVY); new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF) new fInReload = get_pdata_int(weapon_entity, m_fInReload, WEAP_LINUX_XTRA_OFF) if( fInReload && flNextAttack <= 0.0 ) { new j = min(iClipExtra - iClip, iBpAmmo) set_pdata_int(weapon_entity, m_iClip, iClip + j, WEAP_LINUX_XTRA_OFF) cs_set_user_bpammo(id, CSW_MP5NAVY, iBpAmmo-j) set_pdata_int(weapon_entity, m_fInReload, 0, WEAP_LINUX_XTRA_OFF) fInReload = 0 } return HAM_IGNORED } public watergun_Reload(weapon_entity) { new id = pev(weapon_entity, pev_owner) if (!is_user_connected(id)) return HAM_IGNORED if (!g_has_watergun[id]) return HAM_IGNORED static iClipExtra if(g_has_watergun[id]) iClipExtra = get_pcvar_num(cvar_clip_watergun) g_watergun_TmpClip[id] = -1 new iBpAmmo = cs_get_user_bpammo(id, CSW_MP5NAVY) new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF) if (iBpAmmo <= 0) return HAM_SUPERCEDE if (iClip >= iClipExtra) return HAM_SUPERCEDE g_watergun_TmpClip[id] = iClip return HAM_IGNORED } public watergun_Reload_Post(weapon_entity) { new id = pev(weapon_entity, pev_owner) if (!is_user_connected(id)) return HAM_IGNORED if (!g_has_watergun[id]) return HAM_IGNORED if (g_watergun_TmpClip[id] == -1) return HAM_IGNORED set_pdata_int(weapon_entity, m_iClip, g_watergun_TmpClip[id], WEAP_LINUX_XTRA_OFF) set_pdata_float(weapon_entity, m_flTimeWeaponIdle, watergun_RELOAD_TIME, WEAP_LINUX_XTRA_OFF) set_pdata_float(id, m_flNextAttack, watergun_RELOAD_TIME, PLAYER_LINUX_XTRA_OFF) set_pdata_int(weapon_entity, m_fInReload, 1, WEAP_LINUX_XTRA_OFF) UTIL_PlayWeaponAnimation(id, watergun_RELOAD) return HAM_IGNORED } stock create_tracer_water(id, Float:fVec1[3], Float:fVec2[3]) { static iVec1[3] FVecIVec(fVec1, iVec1) static Float:origin[3], Float:vSrc[3], Float:angles[3], Float:v_forward[3], Float:v_right[3], Float:v_up[3], Float:gun_position[3], Float:player_origin[3], Float:player_view_offset[3] pev(id, pev_v_angle, angles) engfunc(EngFunc_MakeVectors, angles) global_get(glb_v_forward, v_forward) global_get(glb_v_right, v_right) global_get(glb_v_up, v_up) //m_pPlayer->GetGunPosition( ) = pev->origin + pev->view_ofs pev(id, pev_origin, player_origin) pev(id, pev_view_ofs, player_view_offset) xs_vec_add(player_origin, player_view_offset, gun_position) xs_vec_mul_scalar(v_forward, 24.0, v_forward) xs_vec_mul_scalar(v_right, 3.0, v_right) if ((pev(id, pev_flags) & FL_DUCKING) == FL_DUCKING) xs_vec_mul_scalar(v_up, 6.0, v_up) else xs_vec_mul_scalar(v_up, -2.0, v_up) xs_vec_add(gun_position, v_forward, origin) xs_vec_add(origin, v_right, origin) xs_vec_add(origin, v_up, origin) vSrc[0] = origin[0] vSrc[1] = origin[1] vSrc[2] = origin[2] new Float:dist = get_distance_f(vSrc, fVec2) new CountDrops = floatround(dist / 50.0) if (CountDrops > 20) CountDrops = 20 if (CountDrops < 2) CountDrops = 2 message_begin(MSG_PAS, SVC_TEMPENTITY, iVec1) write_byte(TE_SPRITETRAIL) engfunc(EngFunc_WriteCoord, vSrc[0]) engfunc(EngFunc_WriteCoord, vSrc[1]) engfunc(EngFunc_WriteCoord, vSrc[2]) engfunc(EngFunc_WriteCoord, fVec2[0]) engfunc(EngFunc_WriteCoord, fVec2[1]) engfunc(EngFunc_WriteCoord, fVec2[2]) write_short(watergun_sprite) write_byte(CountDrops) write_byte(0) write_byte(1) write_byte(60) write_byte(10) message_end() message_begin(MSG_PAS, SVC_TEMPENTITY, iVec1) write_byte(TE_BEAMPOINTS) engfunc(EngFunc_WriteCoord, fVec2[0]) engfunc(EngFunc_WriteCoord, fVec2[1]) engfunc(EngFunc_WriteCoord, fVec2[2]) engfunc(EngFunc_WriteCoord, vSrc[0]) engfunc(EngFunc_WriteCoord, vSrc[1]) engfunc(EngFunc_WriteCoord, vSrc[2]) write_short(watergun_sprite) write_byte(6) write_byte(200) write_byte(1) write_byte(100) write_byte(0) write_byte(64); write_byte(64); write_byte(192); write_byte(192) write_byte(250) message_end() } stock drop_weapons(id, dropwhat) { static weapons[32], num, i, weaponid num = 0 get_user_weapons(id, weapons, num) for (i = 0; i < num; i++) { weaponid = weapons[i] if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) { static wname[32] get_weaponname(weaponid, wname, sizeof wname - 1) engclient_cmd(id, "drop", wname) } } } public CTask__BurningFlame( taskid ) { // Get player origin and flags static origin[3], flags get_user_origin(ID_FBURN, origin) flags = pev(ID_FBURN, pev_flags) // Madness mode - in water - burning stopped if ((flags & FL_INWATER) || g_burning_duration[ID_FBURN] < 1 || g_fRoundEnd || !is_user_alive(ID_FBURN)) { // Smoke sprite message_begin(MSG_PVS, SVC_TEMPENTITY, origin) write_byte(TE_SMOKE) // TE id write_coord(origin[0]) // x write_coord(origin[1]) // y write_coord(origin[2]-50) // z write_short(g_smokeSpr) // sprite write_byte(random_num(15, 20)) // scale write_byte(random_num(10, 20)) // framerate message_end() // Task not needed anymore remove_task(taskid) return } // Get player's health static health health = pev(ID_FBURN, pev_health) // Take damage from the fire if (health - FIRE_DAMAGE > 0) fm_set_user_health(ID_FBURN, health - FIRE_DAMAGE) // Flame sprite message_begin(MSG_PVS, SVC_TEMPENTITY, origin) write_byte(TE_SPRITE) // TE id write_coord(origin[0]+random_num(-5, 5)) // x write_coord(origin[1]+random_num(-5, 5)) // y write_coord(origin[2]+random_num(-10, 10)) // z write_short(g_flameSpr) // sprite write_byte(random_num(5, 10)) // scale write_byte(200) // brightness message_end() g_burning_duration[ID_FBURN]-- }
Cvaruri :
Code: Select all
hero_hp 150 - Cat Hp sa dea la spawn
hero_ap 100 - Cat Ap sa dea la spawn
P.S.: Netestat = Nu am avut timp să mă uit atent peste cod. Deci ceea ce am scris este posibil să fie greşit sau să aibă erori.
If i helped you and you wanna thank me, you can donate at this link : here
This will motivate me to help you in the future.
[If you want a private plugin send me a PM.(No complex plugins please, I am a student and I don't have the time to make those)]
If i helped you and you wanna thank me, you can donate at this link : here
This will motivate me to help you in the future.
[If you want a private plugin send me a PM.(No complex plugins please, I am a student and I don't have the time to make those)]
- MEM
- Utilizator neserios (tepar)
- Posts: 2349
- Joined: 13 Sep 2013, 21:24
- Detinator Steam: Da
- CS Status: Always be MEM!
- SteamID: /businessmonkeys_mem
- Reputatie: Fost Membru Club eXtreamCS ( o luna jumatate)
Nume anterior : kiducrazy - Location: Braila
- Has thanked: 8 times
- Been thanked: 9 times
- Contact:
Trebuie sa compilez si armele? Eu am cerut un shop in care sa fie ethereal, cartblue, wather gun, si harry magic wand. Iar acest shop sa poata fi accesat de cei cu flagul x.NicutaMM | Cstrike wrote:Poftim :
- SMA HERO | Afiseaza codul
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #include <fakemeta_util> #include <cstrike> #include <hamsandwich> #pragma tabsize 0 #define PLUGIN "Weapons" #define VERSION "1.0" #define AUTHOR "NicutaMM | Cstrike" #define HERO ADMIN_LEVEL_H #define IsPlayer(%0) ( 1 <= %0 <= g_iMaxPlayers ) #define is_valid_player(%1) (1 <= %1 <= 32) native set_user_ethereal(id, ethereal); native give_weapon_watergun(id); native give_weapon_harry(id); new g_iMaxPlayers; new g_iBlinkAcct; new g_szItems[][] = { "Ethreal", "Water GUN", "Blue Cart", "Harry Potter's Magic Wand" } new g_iItemsPrices[] = { 1000, 8000, 1200, 1400, } new bool: CartBlue[ 33 ]; new const vCartBlue[ 64 ] = "models/v_vipcartblue.mdl"; new const pCartBlue[ 64 ] = "models/p_vipcartblue.mdl"; new CvarHP, CvarAP; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) CvarHP = register_cvar("hero_hp", "150"); CvarAP = register_cvar("hero_ap", "100"); g_iBlinkAcct = get_user_msgid("BlinkAcct") register_clcmd("say /shop", "cmdHero", 0); register_event ( "CurWeapon", "CurrentWeapon", "be", "1=1" ); RegisterHam( Ham_Spawn, "player", "HeroSpawnCMD", true); RegisterHam ( Ham_TakeDamage, "player", "Player_TakeDamage" ); g_iMaxPlayers = get_maxplayers ( ); // Add your code here... } public plugin_precache ( ) { precache_model( vCartBlue ); precache_model( pCartBlue ); } public HeroSpawnCMD ( id ) { if(is_valid_player(id) && is_user_alive(id) && get_user_flags(id) & HERO ) { fm_set_user_health(id, get_pcvar_num( CvarHP ) ); fm_set_user_armor(id, get_pcvar_num( CvarAP ) ); } CartBlue[ id ] = false; } public CurrentWeapon ( id ) { new szWeapon = get_user_weapon ( id ); if ( szWeapon == CSW_MP5NAVY && CartBlue[ id ] ) { set_pev ( id, pev_viewmodel2, vCartBlue ); set_pev ( id, pev_weaponmodel2, pCartBlue ); } return 1; } public cmdHero(id) { new Temp[101], money = cs_get_user_money(id); formatex(Temp,100, "\yHero Menu:^n^nBani tai:\r $%d", money); new menu = menu_create(Temp, "handler_HeroMenu") new szItemName[64] for(new i; i<sizeof(g_szItems) && i<sizeof(g_iItemsPrices); i++) { if( money < g_iItemsPrices ) { formatex(szItemName, charsmax(szItemName), "\d%s ($%d)", g_szItems[ i ], g_iItemsPrices[ i ]) } else { formatex(szItemName, charsmax(szItemName), "%s (\r$%d\w)", g_szItems[ i ], g_iItemsPrices[ i ]) } menu_additem(menu, szItemName) } menu_setprop(menu, MPROP_NUMBER_COLOR, "\y") menu_display(id, menu, 0); return PLUGIN_HANDLED; } public handler_ShopMenu(id, menu, item) { if( item == MENU_EXIT ) { menu_destroy(menu); return PLUGIN_HANDLED; } new money = cs_get_user_money(id); new new_money = cs_get_user_money(id) - g_iItemsPrices[item]; if( money < g_iItemsPrices[item] ) { NotEnoughMoney( id ); menu_display(id, menu); return PLUGIN_HANDLED; } switch(item) { case 0: { if(get_user_flags(id) & HERO ) { set_user_ethereal(id, 1); client_print(id, print_center, "Ai cumparat (%s)", g_szItems[item]); cs_set_user_money(id, new_money); } else { client_print(id, print_center, "Nu ai acces la acest meniu!"); } } case 1: { if(get_user_flags(id) & HERO ) { give_weapon_watergun(id); client_print(id, print_center, "Ai cumparat (%s)", g_szItems[item]); cs_set_user_money(id, new_money); } else { client_print(id, print_center, "Nu ai acces la acest meniu!"); } } case 2: { if(get_user_flags(id) & HERO ) { fm_strip_user_weapons(id); fm_give_item(id, "weapon_knife"); fm_give_item(id, "weapon_deagle"); fm_give_item(id, "weapon_mp5navy"); cs_set_user_bpammo(id, CSW_DEAGLE, 70); cs_set_user_bpammo(id, CSW_MP5NAVY, 250 ); CartBlue[ id ] = true; CurrentWeapon(id); client_print(id, print_center, "Ai cumparat (%s)", g_szItems[item]); cs_set_user_money(id, new_money); } else { client_print(id, print_center, "Nu ai acces la acest meniu!"); } } case 3: { if(get_user_flags(id) & HERO ) { give_weapon_harry(id); client_print(id, print_center, "Ai cumparat (%s)", g_szItems[item]); cs_set_user_money(id, new_money); } else { client_print(id, print_center, "Nu ai acces la acest meniu!"); } } } menu_destroy(menu); return PLUGIN_HANDLED; } public NotEnoughMoney( id ) { client_print(id, print_center, "#Cstrike_TitlesTXT_Not_Enough_Money"); message_begin(MSG_ONE_UNRELIABLE, g_iBlinkAcct, .player=id); { write_byte(2); } message_end(); } public Player_TakeDamage ( iVictim, iInflictor, iAttacker, Float:fDamage, iDamageBits ) { if ( IsPlayer ( iAttacker ) ) { if( get_user_weapon( iAttacker ) == CSW_MP5NAVY && CartBlue[ iAttacker ] ) { SetHamParamFloat( 4, fDamage * 3 ) return HAM_HANDLED } } return HAM_IGNORED; }
- Ethreal | Afiseaza codul
//////////////////////////////////////////////////////////////////////////////////////////////////////////// // Ethereal | //========================================================================================================== #include <amxmodx> #include <amxmisc> #include <cstrike> #include <engine> #include <fakemeta> #include <fakemeta_util> #include <fun> #include <hamsandwich> #define PLUGIN "Ethereal" #define VERSION "1.0" #define AUTHOR "sDs|Aragon*" const PRIMARY_WEAPONS_BITSUM =(1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90); new BloodDrop, BloodSpray #define ETHEREAL_WEAPONKEY 103 #define weapon_ethereal "weapon_galil" #define CSW_ETHEREAL CSW_GALIL #define ethereal_shotdelay 0.15 // Refire rate new EtherealModel_V[] = "models/Ethereal/v_ethereal.mdl"; new EtherealModel_P[] = "models/Ethereal/p_ethereal.mdl"; new EtherealModel_W[] = "models/Ethereal/w_ethereal.mdl"; new const ethereal_sound[5][] = { "weapons/ethereal_shoot1.wav", "weapons/ethereal_hit.wav", "weapons/ethereal_idle1.wav", "weapons/ethereal_reload.wav", "weapons/ethereal_draw.wav" }; new const ethereal_generic[3][] = { "sprites/Ethereal/weapon_ethereal", "sprites/Ethereal/Ethereal.spr", "sprites/Ethereal/640hud2.spr" }; new bool:HasEthereal[33], ethereal_clip[33], ethereal_reload[33], Float:EtherealLastShotTime[33], ethereal_trail, ethereal_explode; new ethereal, etherealcost, etherealdamage, etherealclip, etherealammo, etherealreloadtime, etherealknockback; public plugin_init() { register_plugin( PLUGIN, VERSION, AUTHOR ); RegisterHam(Ham_Spawn, "player", "Spawn_Post", 1); RegisterHam(Ham_Killed, "player", "PlayerKilled"); register_clcmd("Ethereal/weapon_ethereal", "hook_ethereal"); register_event("CurWeapon", "Ethereal_Model", "be", "1=1"); register_event("WeapPickup","Ethereal_Model","b","1=19"); register_forward(FM_SetModel, "Ethereal_SetModel"); register_forward(FM_CmdStart, "Ethereal_CmdStart"); register_forward(FM_UpdateClientData, "Ethereal_UpdateClientData_Post", 1); RegisterHam(Ham_Item_Deploy , weapon_ethereal, "Ethereal_Deploy_Post", 1); RegisterHam(Ham_Item_AddToPlayer, weapon_ethereal, "Ethereal_AddToPlayer"); RegisterHam(Ham_Weapon_Reload, weapon_ethereal, "Ethereal_Reload"); RegisterHam(Ham_Weapon_Reload, weapon_ethereal, "Ethereal_Reload_Post", 1); RegisterHam(Ham_Item_PostFrame, weapon_ethereal, "Ethereal_PostFrame"); ethereal = register_cvar("amx_ethereal", "1"); //| Ethereal 0 Disable -> 1 Enable |// etherealcost = register_cvar("amx_etherealcost", "8000"); //| Ethereal Cost |// etherealdamage = register_cvar("amx_ethereal_damage", "80"); //| Ethereal Damage |// etherealclip = register_cvar("amx_ethereal_clip", "30"); //| Ethereal Clip |// etherealammo = register_cvar("amx_ethereal_ammo", "120"); //| Ethereal Ammo |// etherealreloadtime = register_cvar("amx_ethereal_reload_time", "3.03"); //| Ethereal Reload Time |// etherealknockback = register_cvar("amx_ethereal_knockback", "3"); //| Ethereal KnockBack |// register_clcmd("ethereal", "buy_ethereal"); register_clcmd("buy_ethereal", "buy_ethereal"); register_clcmd("say /ethereal", "buy_ethereal"); register_clcmd("say /buy_ethereal", "buy_ethereal"); register_clcmd("say buy_ethereal", "buy_ethereal"); register_clcmd("say_team /ethereal", "buy_ethereal"); register_clcmd("say_team /buy_ethereal", "buy_ethereal"); register_clcmd("say_team buy_ethereal", "buy_ethereal"); register_concmd("amx_give_ethereal", "GiveEthereal", ADMIN_LEVEL_G, "Name"); } public plugin_natives() { register_native("get_user_ethereal", "get_user_ethereal", 1); register_native("set_user_ethereal", "set_user_ethereal", 1); } public get_user_ethereal(id) { return HasEthereal[id]; } public set_user_ethereal(id, ethereal) { if(ethereal) { if(!HasEthereal[id]) { drop_primary_weapons(id); HasEthereal[id] = true; message_begin(MSG_ONE, get_user_msgid("WeaponList"), _, id); write_string("Ethereal/weapon_ethereal"); // WeaponName write_byte(4); // PrimaryAmmoID write_byte(90); // PrimaryAmmoMaxAmount write_byte(-1); // SecondaryAmmoID write_byte(-1); // SecondaryAmmoMaxAmount write_byte(0); // SlotID (0...N) write_byte(17); // NumberInSlot (1...N) write_byte(CSW_ETHEREAL); // WeaponID write_byte(0); // Flags message_end(); fm_give_item(id, weapon_ethereal) cs_set_user_bpammo(id, CSW_ETHEREAL, get_pcvar_num(etherealammo)) new clip = fm_get_user_weapon_entity(id, CSW_ETHEREAL); cs_set_weapon_ammo(clip, get_pcvar_num(etherealclip)); set_weapon_anim(id, 2); } } else { if(HasEthereal[id]) { HasEthereal[id] = false; } } } public Spawn_Post(id) set_user_ethereal(id, 0); public PlayerKilled(victim, attacker, shouldgib) set_user_ethereal(victim, 0); //------| Buy Ethereal |------// public buy_ethereal(id) { new ethcost = get_pcvar_num(etherealcost); if(!get_pcvar_num(ethereal)) { ColorChat(id, "^x04[Ethereal]^x03 Ethereal^x04 este dezactivat."); } else if(!is_user_alive(id)) { ColorChat(id, "^x04[Ethereal]^x03 Nu poti cumpara^x04 Ethereal^x03 cat timp esti mort."); } else if(get_user_ethereal(id)) { ColorChat(id, "^x04[Ethereal]^x03 Ai deja^x04 Ethereal."); } else if(cs_get_user_money(id) < ethcost) { ColorChat(id, "^x04[Ethereal]^x03 Nu ai suficiente fonduri pentru a cumpara^x04 Ethereal^x03. Necesari: ^x04$%d",ethcost); } else { cs_set_user_money(id, cs_get_user_money(id) - ethcost); ColorChat(id, "^x04[Ethereal]^x03 Ai cumparat^x04 Ethereal."); set_user_ethereal(id, true); } } public GiveEthereal(id, level, cid) { if(!cmd_access(id, level, cid, 2)) { return PLUGIN_HANDLED; } new arg[23], name[32]; get_user_name(id, name, 31); read_argv(1, arg, 23); new player = cmd_target(id, arg, 11); if(!player) { console_print(id, "Juctorul cu acel nume nu exista."); return PLUGIN_HANDLED; } if(!is_user_alive(player)) { return PLUGIN_HANDLED; } if(!get_user_ethereal(player)) { set_user_ethereal(player, true); switch(get_cvar_num("amx_show_activity")) { case 1: ColorChat(player, "^x03ADMIN^x04 give you ^x03 Ethereal."); case 2: ColorChat(player, "^x03%s^x04 give you ^x03 Ethereal.", name); } } return PLUGIN_HANDLED; } public hook_ethereal(id) { engclient_cmd(id, weapon_ethereal); } public Ethereal_Model(id) { if(get_user_weapon(id) == CSW_ETHEREAL && get_user_ethereal(id)) { set_pev(id, pev_viewmodel2, EtherealModel_V); set_pev(id, pev_weaponmodel2, EtherealModel_P); } } public Ethereal_SetModel(entity, model[]) { // Entity is not valid if(!is_valid_ent(entity)) return FMRES_IGNORED; // Get classname static szClassName[33]; entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName)); // Not a Weapon box if(!equal(szClassName, "weaponbox")) return FMRES_IGNORED; new iOwner = entity_get_edict(entity, EV_ENT_owner); new WPN_Ethereal = find_ent_by_owner(-1, weapon_ethereal, entity); if(get_user_ethereal(iOwner) && is_valid_ent(WPN_Ethereal) && equal(model, "models/w_galil.mdl")) { entity_set_int(WPN_Ethereal, EV_INT_impulse, ETHEREAL_WEAPONKEY); HasEthereal[iOwner] = false; entity_set_model(entity, EtherealModel_W); return FMRES_SUPERCEDE; } return FMRES_IGNORED; } public Ethereal_CmdStart(id, uc_handle, seed) { if(is_user_alive(id) && is_user_connected(id)) { static CurButton; CurButton = get_uc(uc_handle, UC_Buttons); new Float:flNextAttack = get_pdata_float(id, 83, 5); if(CurButton & IN_ATTACK) { if(get_user_weapon(id) == CSW_ETHEREAL && get_user_ethereal(id)) { static ethereal; ethereal = fm_find_ent_by_owner(-1, weapon_ethereal, id); if(cs_get_weapon_ammo(ethereal) > 0 && !ethereal_reload[id] && flNextAttack <= 0.0) { if(get_gametime() - EtherealLastShotTime[id] > ethereal_shotdelay) { set_weapon_anim(id, random_num(3,5)); emit_sound(id, CHAN_WEAPON, ethereal_sound[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM); Ethereal_Fire(id); static Float:Punch_Angles[3]; Punch_Angles[0] = -3.0; Punch_Angles[1] = 0.0; Punch_Angles[2] = 0.0; set_pev(id, pev_punchangle, Punch_Angles); cs_set_weapon_ammo(ethereal, cs_get_weapon_ammo(ethereal) - 1); EtherealLastShotTime[id] = get_gametime(); } } CurButton &= ~IN_ATTACK; set_uc(uc_handle, UC_Buttons, CurButton); } } } } public Ethereal_UpdateClientData_Post(id, sendweapons, cd_handle) { if(is_user_alive(id) && is_user_connected(id)) { if(get_user_weapon(id) == CSW_ETHEREAL && get_user_ethereal(id)) { set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001); } } } public Ethereal_AddToPlayer(Weapon, id) { if(is_valid_ent(Weapon) && is_user_connected(id) && entity_get_int(Weapon, EV_INT_impulse) == ETHEREAL_WEAPONKEY) { HasEthereal[id] = true; entity_set_int(Weapon, EV_INT_impulse, 0); } message_begin(MSG_ONE, get_user_msgid("WeaponList"), _, id); write_string(HasEthereal[id] ? "Ethereal/weapon_ethereal" : "weapon_galil"); // WeaponName write_byte(4); // PrimaryAmmoID write_byte(90); // PrimaryAmmoMaxAmount write_byte(-1); // SecondaryAmmoID write_byte(-1); // SecondaryAmmoMaxAmount write_byte(0); // SlotID (0...N) write_byte(17); // NumberInSlot (1...N) write_byte(CSW_ETHEREAL); // WeaponID write_byte(0); // Flags message_end(); } public Ethereal_Deploy_Post(entity) { static owner; owner = fm_get_weapon_ent_owner(entity); if(get_user_ethereal(owner)) { set_pev(owner, pev_viewmodel2, EtherealModel_V); set_pev(owner, pev_weaponmodel2, EtherealModel_P); set_weapon_anim(owner, 2); set_pdata_float(owner, 83, 1.36, 5); static clip; clip = cs_get_weapon_ammo(entity); if(clip > 0) ethereal_reload[owner] = 0; } } public Ethereal_Reload(ent) { if(!pev_valid(ent)) return HAM_IGNORED; new id; id = pev(ent, pev_owner); if(!is_user_alive(id) || !get_user_ethereal(id)) return HAM_IGNORED; ethereal_clip[id] = -1; new bpammo = cs_get_user_bpammo(id, CSW_ETHEREAL); if(bpammo <= 0) return HAM_SUPERCEDE; new iClip = get_pdata_int(ent, 51, 4); if(iClip >= get_pcvar_num(etherealclip)) return HAM_SUPERCEDE; ethereal_clip[id] = iClip; ethereal_reload[id] = 1; return HAM_IGNORED; } public Ethereal_Reload_Post(ent) { if(!pev_valid(ent)) return HAM_IGNORED; new id; id = pev(ent, pev_owner); if(!is_user_alive(id) || !get_user_ethereal(id)) return HAM_IGNORED; if(ethereal_clip[id] == -1) return HAM_IGNORED; new Float:reload_time = get_pcvar_float(etherealreloadtime); set_pdata_int(ent, 51, ethereal_clip[id], 4); set_pdata_float(ent, 48, reload_time, 4); set_pdata_float(id, 83, reload_time, 5); set_pdata_int(ent, 54, 1, 4); set_weapon_anim(id, 1); return HAM_IGNORED; } public Ethereal_PostFrame(ent) { if(!pev_valid(ent)) return HAM_IGNORED; new id; id = pev(ent, pev_owner); if(!is_user_alive(id) || !get_user_ethereal(id)) return HAM_IGNORED; new Float:flNextAttack = get_pdata_float(id, 83, 5); new bpammo = cs_get_user_bpammo(id, CSW_ETHEREAL); new iClip = get_pdata_int(ent, 51, 4); new fInReload = get_pdata_int(ent, 54, 4); if(fInReload && flNextAttack <= 0.0) { new temp = min(get_pcvar_num(etherealclip) - iClip, bpammo); set_pdata_int(ent, 51, iClip + temp, 4); cs_set_user_bpammo(id, CSW_ETHEREAL, bpammo - temp); set_pdata_int(ent, 54, 0, 4); fInReload = 0; ethereal_reload[id] = 0; } return HAM_IGNORED; } public Ethereal_Fire(id) { static Victim, Body, EndOrigin[3], BeamOrigin[3]; get_user_origin(id, BeamOrigin, 3) ; get_user_origin(id, EndOrigin, 3); message_begin(MSG_BROADCAST,SVC_TEMPENTITY); write_byte(TE_BEAMENTPOINT); write_short(id | 0x1000); write_coord(BeamOrigin[0]); // Start X write_coord(BeamOrigin[1]); // Start Y write_coord(BeamOrigin[2]); // Start Z write_short(ethereal_trail); // Sprite write_byte(1); // Start frame write_byte(1); // Frame rate write_byte(1); // Life write_byte(25); // Line width write_byte(0); // Noise write_byte(0); // Red write_byte(150); // Green write_byte(0); // Blue write_byte(150); // Brightness write_byte(25); // Scroll speed message_end(); message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(3); write_coord(EndOrigin[0]); write_coord(EndOrigin[1]); write_coord(EndOrigin[2]); write_short(ethereal_explode); write_byte(10); write_byte(15); write_byte(4); message_end(); get_user_aiming(id, Victim, Body, 999999); if(is_user_connected(Victim)) { new Float:Damage = float(get_damage_body(Body, get_pcvar_float(etherealdamage))); new Float:VictimOrigin[3]; VictimOrigin[0] = float(EndOrigin[0]); VictimOrigin[1] = float(EndOrigin[1]); VictimOrigin[2] = float(EndOrigin[2]); if(get_user_health(Victim) - get_pcvar_float(etherealdamage) >= 1 && is_user_alive(Victim) && !fm_get_user_godmode(Victim) && get_user_team(Victim) != get_user_team(id)) { make_blood(VictimOrigin, get_pcvar_float(etherealdamage), Victim); make_knockback(Victim, VictimOrigin, get_pcvar_float(etherealknockback)*get_pcvar_float(etherealdamage)); ExecuteHam(Ham_TakeDamage, Victim, id, id, Damage, DMG_NERVEGAS); message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("Damage"), _, Victim); write_byte(0); write_byte(0); write_long(DMG_NERVEGAS); write_coord(0) ; write_coord(0); write_coord(0); message_end(); message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), {0,0,0}, Victim); write_short(1<<13); write_short(1<<14); write_short(0x0000); write_byte(0); write_byte(255); write_byte(0); write_byte(100) ; message_end(); message_begin(MSG_ONE, get_user_msgid("ScreenShake"), {0,0,0}, Victim); write_short(0xFFFF); write_short(1<<13); write_short(0xFFFF) ; message_end(); } else if(get_user_health(Victim) - get_pcvar_float(etherealdamage) < 1 && is_user_alive(Victim) && !fm_get_user_godmode(Victim) && get_user_team(Victim) != get_user_team(id)) { make_blood(VictimOrigin, get_pcvar_float(etherealdamage), Victim); make_knockback(Victim, VictimOrigin, get_pcvar_float(etherealknockback)*get_pcvar_float(etherealdamage)); death_message(id, Victim, 1, "ethereal"); } } else { static ClassName[32]; pev(Victim, pev_classname, ClassName, charsmax(ClassName)); if(equal(ClassName, "func_breakable")) { if(entity_get_float(Victim, EV_FL_health) <= get_pcvar_num(etherealdamage)) { force_use(id, Victim); } } } emit_sound(id, CHAN_WEAPON, ethereal_sound[1], VOL_NORM, ATTN_NORM, 0, PITCH_NORM); } stock make_blood(const Float:vTraceEnd[3], Float:Damage, hitEnt) { new bloodColor = ExecuteHam(Ham_BloodColor, hitEnt); if(bloodColor == -1) return; new amount = floatround(Damage); amount *= 2; //according to HLSDK message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_BLOODSPRITE); write_coord(floatround(vTraceEnd[0])); write_coord(floatround(vTraceEnd[1])); write_coord(floatround(vTraceEnd[2])); write_short(BloodSpray); write_short(BloodDrop); write_byte(bloodColor); write_byte(min(max(3, amount/10), 16)); message_end(); } // Make knockback public make_knockback(Victim, Float:origin[3], Float:maxspeed) { // Get and set velocity new Float:fVelocity[3]; kickback(Victim, origin, maxspeed, fVelocity); entity_set_vector(Victim, EV_VEC_velocity, fVelocity); return(1); } // Extra calulation for knockback stock kickback(ent, Float:fOrigin[3], Float:fSpeed, Float:fVelocity[3]) { // Find origin new Float:fEntOrigin[3]; entity_get_vector(ent, EV_VEC_origin, fEntOrigin); // Do some calculations new Float:fDistance[3]; fDistance[0] = fEntOrigin[0] - fOrigin[0]; fDistance[1] = fEntOrigin[1] - fOrigin[1]; fDistance[2] = fEntOrigin[2] - fOrigin[2]; new Float:fTime =(vector_distance(fEntOrigin,fOrigin) / fSpeed); fVelocity[0] = fDistance[0] / fTime; fVelocity[1] = fDistance[1] / fTime; fVelocity[2] = fDistance[2] / fTime; return(fVelocity[0] && fVelocity[1] && fVelocity[2]); } stock death_message(Killer, Victim, ScoreBoard, const Weapon[]) { // Block death msg set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET); ExecuteHamB(Ham_Killed, Victim, Killer, 2); set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT); // Death make_deathmsg(Killer, Victim, 0, Weapon); cs_set_user_money(Killer, cs_get_user_money(Killer) + 300); // Update score board if(ScoreBoard) { message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo")); write_byte(Killer); // id write_short(pev(Killer, pev_frags)); // frags write_short(cs_get_user_deaths(Killer)); // deaths write_short(0); // class? write_short(get_user_team(Killer)); // team message_end(); message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo")); write_byte(Victim); // id write_short(pev(Victim, pev_frags)); // frags write_short(cs_get_user_deaths(Victim)); // deaths write_short(0); // class? write_short(get_user_team(Victim)); // team message_end(); } } stock set_weapon_anim(id, anim) { set_pev(id, pev_weaponanim, anim); if(is_user_connected(id)) { message_begin(MSG_ONE, SVC_WEAPONANIM, _, id); write_byte(anim); write_byte(pev(id, pev_body)); message_end(); } } stock get_damage_body(body, Float:damage) { switch(body) { case HIT_HEAD: damage *= 4.0; case HIT_STOMACH: damage *= 1.1; case HIT_CHEST: damage *= 1.5; case HIT_LEFTARM: damage *= 0.77; case HIT_RIGHTARM: damage *= 0.77; case HIT_LEFTLEG: damage *= 0.75; case HIT_RIGHTLEG: damage *= 0.75; default: damage *= 1.0; } return floatround(damage); } stock fm_get_user_bpammo(index, weapon) { static offset switch(weapon) { case CSW_AWP: offset = OFFSET_AMMO_338MAGNUM case CSW_SCOUT, CSW_AK47, CSW_G3SG1: offset = OFFSET_AMMO_762NATO case CSW_M249: offset = OFFSET_AMMO_556NATOBOX case CSW_FAMAS, CSW_M4A1, CSW_AUG, CSW_SG550, CSW_GALI, CSW_SG552: offset = OFFSET_AMMO_556NATO case CSW_M3, CSW_XM1014: offset = OFFSET_AMMO_BUCKSHOT case CSW_USP, CSW_UMP45, CSW_MAC10: offset = OFFSET_AMMO_45ACP case CSW_FIVESEVEN, CSW_P90: offset = OFFSET_AMMO_57MM case CSW_DEAGLE: offset = OFFSET_AMMO_50AE case CSW_P228: offset = OFFSET_AMMO_357SIG case CSW_GLOCK18, CSW_TMP, CSW_ELITE, CSW_MP5NAVY: offset = OFFSET_AMMO_9MM default: offset = 0 } return offset ? get_pdata_int(index, offset) : 0 } stock fm_set_user_bpammo(index, weapon, amount) { static offset switch(weapon) { case CSW_AWP: offset = OFFSET_AMMO_338MAGNUM case CSW_SCOUT, CSW_AK47, CSW_G3SG1: offset = OFFSET_AMMO_762NATO case CSW_M249: offset = OFFSET_AMMO_556NATOBOX case CSW_FAMAS, CSW_M4A1, CSW_AUG, CSW_SG550, CSW_GALI, CSW_SG552: offset = OFFSET_AMMO_556NATO case CSW_M3, CSW_XM1014: offset = OFFSET_AMMO_BUCKSHOT case CSW_USP, CSW_UMP45, CSW_MAC10: offset = OFFSET_AMMO_45ACP case CSW_FIVESEVEN, CSW_P90: offset = OFFSET_AMMO_57MM case CSW_DEAGLE: offset = OFFSET_AMMO_50AE case CSW_P228: offset = OFFSET_AMMO_357SIG case CSW_GLOCK18, CSW_TMP, CSW_ELITE, CSW_MP5NAVY: offset = OFFSET_AMMO_9MM default: offset = 0 } if(offset) set_pdata_int(index, offset, amount) return 1 } // Get Weapon Entity's CSW_ ID stock fm_get_weapon_ent_id(ent) { return get_pdata_int(ent, OFFSET_WEAPONID, 4); } // Get Weapon Entity's Owner stock fm_get_weapon_ent_owner(ent) { return get_pdata_cbase(ent, 41, 4); } // Drop all primary guns stock drop_primary_weapons(Player) { // Get user weapons static weapons[32], num, i, weaponid; num = 0; // reset passed weapons count(bugfix) get_user_weapons(Player, weapons, num); // Loop through them and drop primaries for(i = 0; i < num; i++) { // Prevent re-indexing the array weaponid = weapons ; // We definetely are holding primary gun if(((1<<weaponid) & PRIMARY_WEAPONS_BITSUM)) { // Get weapon entity static wname[32]; get_weaponname(weaponid, wname, charsmax(wname)); // Player drops the weapon and looses his bpammo engclient_cmd(Player, "drop", wname); } } } stock ColorChat(const id, const input[], any:...) { new count = 1, players[32]; static msg[191]; vformat(msg, 190, input, 3); replace_all(msg, 190, "^x04", "^4"); replace_all(msg, 190, "^x01", "^1"); replace_all(msg, 190, "^x03", "^3"); if(id) players[0] = id; else get_players(players, count, "ch"); { for(new i = 0; i < count; i++) { if(is_user_connected(players)) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players); write_byte(players); write_string(msg); message_end(); } } } } //------| Parecache Sounds and Models |------// public plugin_precache() { BloodSpray = precache_model("sprites/bloodspray.spr"); // initial blood BloodDrop = precache_model("sprites/blood.spr"); // splattered blood ethereal_trail = precache_model("sprites/Ethereal/ethereal_beam.spr"); ethereal_explode = precache_model("sprites/Ethereal/ethereal_exp.spr"); precache_model(EtherealModel_V); precache_model(EtherealModel_P); precache_model(EtherealModel_W); new i; for(i = 0; i < sizeof(ethereal_sound); i++) engfunc(EngFunc_PrecacheSound, ethereal_sound); for(i = 0; i < sizeof(ethereal_generic); i++) engfunc(EngFunc_PrecacheGeneric, ethereal_generic); } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par } */
- Harry Potter's Magic Wand | Afiseaza codul
/* Plugin generated by AMXX-Studio */ #include < amxmodx > #include < amxmisc > #include < cstrike > #include < hamsandwich > #include < fakemeta > #include < engine > #include < message_const > #include < ColorChat > #define PLUGIN_NAME "Harry Potter's Magic Wand" #define PLUGIN_VERSION "0.0.2" #define PLUGIN_AUTHOR "Hades Ownage & YONTU" #define HARRY_WAND_RECOIL 0.0 // Recoil #define HARRY_WAND_SPEED 0.35 // Click stanga #define HARRY_WAND_SPEED2 0.75 // Click dreapta #define HARRY_WAND_FIRE random_num( 3, 6 ) // Animatie cand trage cu click stanga #define HARRY_WAND_FIRE2 random_num( 5, 10 ) // Animatie cand trage cu click dreapta #define TE_BEAMENTPOINT 1 #define TE_EXPLOSION 3 #define TE_SPRITETRAIL 15 #define TE_BEAMCYLINDER 21 new const Tag[ ] = "[Harry Magic Wand]"; new HarryFireSound[ ] = "harry_wand/harry_shoot1.wav"; new HarryHitSound[ ] = "harry_wand/harry_hit.wav"; new HarryHitSound2[ ] = "harry_wand/harry_shoot2.wav"; new HarryModel[ ] = "models/harry_wand/v_harry_wand.mdl"; new HarryBeam, HarryExp, HarryExp2, DeathSprite; new bool:g_HasHarryWand[ 33 ]; new Harry_Ammo[ 33 ]; new Float:HarryLastShotTime[ 33 ]; new HarryDamageCvar, HarryDamageCvar2, HarryAmmo, HarryKillMoney, HarryDistance; public plugin_init( ) { register_event( "CurWeapon", "CurrentWeapon", "be", "1=1" ); register_forward( FM_CmdStart, "Harry_CmdStart" ); RegisterHam( Ham_Spawn, "player", "Ham_SpawnCallback", 1 ); HarryDamageCvar = register_cvar( "harry_damage", "100.0" ); HarryDamageCvar2 = register_cvar( "harry_damage2", "150.0" ); HarryAmmo = register_cvar( "harry_ammo", "300" ); HarryKillMoney = register_cvar( "harry_money_reward", "5000" ); HarryDistance = register_cvar( "harry_distance", "90909" ); register_concmd( "amx_get_harry", "GiveHarry", ADMIN_RCON, "< nume > < ammo >" ); } public plugin_natives () { register_native("give_weapon_harry", "native_give_herry_add", 1) } public native_give_herry_add(id) { get_harry( id ) } public plugin_precache( ) { register_plugin( PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR ); precache_sound( HarryFireSound ); precache_sound( HarryHitSound ); precache_sound( HarryHitSound2 ); precache_model( HarryModel ); HarryBeam = precache_model( "sprites/harry_wand/harry_plasma_beam.spr" ); HarryExp = precache_model( "sprites/harry_wand/harry_plasma_exp2.spr" ); HarryExp2 = precache_model( "sprites/harry_wand/harry_plasma_exp3.spr" ); DeathSprite = precache_model( "sprites/harry_wand/harry_skull.spr" ); } public client_putinserver( id ) { g_HasHarryWand[ id ] = false; Harry_Ammo[ id ] = false; } public client_disconnect( id ) { g_HasHarryWand[ id ] = false; Harry_Ammo[ id ] = false; } public GiveHarry( id, level, cid ) { if( !cmd_access( id, level, cid, 3 ) ) return PLUGIN_HANDLED; new szTtarget[ 32 ], szAmmoHarry[ 21 ]; read_argv( 1, szTtarget, 31 ); read_argv( 2, szAmmoHarry, 20 ); new iPlayer = cmd_target( id, szTtarget, 8 ); new szAdminName[ 32 ], szPlayerName[ 32 ]; get_user_name( id, szAdminName, 31 ); get_user_name( iPlayer, szPlayerName, 31 ); if( !iPlayer ) return PLUGIN_HANDLED; if( !is_user_alive( iPlayer ) ) { client_print( id, print_console, "Jucatorul %s nu este in viata !", szPlayerName ); return 1; } if( g_HasHarryWand[ iPlayer ] ) { client_print( id, print_console, "Jucatorul %s are deja bagheta !", szPlayerName ); return 1; } else { new AmmoForMagic = str_to_num( szAmmoHarry ); ColorChat( 0, GREEN, "^x04%s^x01 Adminul^x03 %s i-a dat lui^x03 %s^x01 bagheta lui Harry cu^x03 %d ammo^x01 !", Tag, szAdminName, szPlayerName, szAmmoHarry ); get_harry( iPlayer ); Harry_Ammo[ iPlayer ] += AmmoForMagic; } return PLUGIN_CONTINUE; } public get_harry( id ) { if( is_user_alive( id ) ) { g_HasHarryWand[ id ] = true; engclient_cmd( id, "weapon_knife" ); Harry_Ammo[ id ] = get_pcvar_num( HarryAmmo ); } else { client_print( id, print_console, "Jucatorul nu este in viata! " ); g_HasHarryWand[ id ] = false; return 1; } return 1; } public CurrentWeapon( id ) if( get_user_weapon( id ) == CSW_KNIFE && g_HasHarryWand[ id ] ) set_pev( id, pev_viewmodel2, HarryModel ); public Ham_SpawnCallback( id ) { if( !is_user_alive( id ) ) return 1; g_HasHarryWand[ id ] = false; return 0; } public Harry_CmdStart( id, uc_handle, seed ) { if( is_user_alive( id ) && g_HasHarryWand[ id ] ) { static CurButton; CurButton = get_uc( uc_handle, UC_Buttons ); new Float:flNextAttack = get_pdata_float( id, 83, 5 ); if( CurButton & IN_ATTACK ) { if( get_user_weapon( id ) == CSW_KNIFE && g_HasHarryWand[ id ] ) { if( Harry_Ammo[ id ] > 0 && flNextAttack <= 0.0 ) { if( get_gametime( ) - HarryLastShotTime[ id ] > HARRY_WAND_SPEED ) { set_weapon_anim( id, HARRY_WAND_FIRE ); emit_sound( id, CHAN_WEAPON, HarryFireSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM ); Harry_Fire( id ); if( Harry_Ammo[ id ] > 0 ) { set_hudmessage( 0, 127, 255, 0.01, 0.85, 0, 6.0, 1.0 ); show_hudmessage( id, "Remaining Ammo: %d !", Harry_Ammo[ id ] ); } else if( Harry_Ammo[ id ] <= 0 ) { set_hudmessage( 255, 0, 0, 0.01, 0.90, 0, 6.0, 1.0 ); show_hudmessage( id, "No Ammo !" ); } static Float:Punch_Angles[ 3 ]; Punch_Angles[ 0] = -5.0; Punch_Angles[ 1 ] = HARRY_WAND_RECOIL; Punch_Angles[ 2 ] = HARRY_WAND_RECOIL; set_pev( id, pev_punchangle, Punch_Angles ); Harry_Ammo[ id ] -= 1; HarryLastShotTime[ id ] = get_gametime( ); } } CurButton &= ~IN_ATTACK; set_uc( uc_handle, UC_Buttons, CurButton ); } } else if( CurButton & IN_ATTACK2 ) { if( get_user_weapon( id ) == CSW_KNIFE && g_HasHarryWand[ id ] ) { if( Harry_Ammo[ id ] >= 5 && flNextAttack <= 0.0 ) { if( get_gametime( ) - HarryLastShotTime[ id ] > HARRY_WAND_SPEED2 ) { set_weapon_anim( id, HARRY_WAND_FIRE2 ); emit_sound( id, CHAN_WEAPON, HarryFireSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM ); Harry_Fire2( id ); set_hudmessage( 0, 127, 255, 0.01, 0.85, 0, 6.0, 1.0 ); show_hudmessage( id, "Remaining Ammo: %d !", Harry_Ammo[ id ] ); static Float:Punch_Angles[ 3 ]; Punch_Angles[ 0 ] = -5.0; Punch_Angles[ 1 ] = HARRY_WAND_RECOIL; Punch_Angles[ 2 ] = HARRY_WAND_RECOIL; set_pev( id, pev_punchangle, Punch_Angles ); Harry_Ammo[ id ] -= 3; HarryLastShotTime[ id ] = get_gametime( ); } } CurButton &= ~IN_ATTACK2; set_uc( uc_handle, UC_Buttons, CurButton ); } } } else if( is_user_alive ( id ) && !g_HasHarryWand[ id ] ) return PLUGIN_CONTINUE; return PLUGIN_CONTINUE; } public Harry_Fire( id ) { static Victim, Body, EndOrigin[ 3 ], BeamOrigin[ 3 ]; get_user_origin( id, BeamOrigin, 3 ); get_user_origin( id, EndOrigin, 3 ); message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( 1 ); write_short( id | 0x1000 ); write_coord( BeamOrigin[ 0 ] ); // Start X write_coord( BeamOrigin[ 1 ] ); // Start Y write_coord( BeamOrigin[ 2 ] ); // Start Z write_short( HarryBeam); // Sprite write_byte( 1 ); // Start frame write_byte( 1 ); // Frame rate write_byte( 1 ); // Life write_byte( 40 ); // Line width write_byte( 0 ); // Noise write_byte( 108 ); // Red write_byte( 236 ); // Green write_byte( 23 ); // Blue write_byte( 150 ); // Brightness write_byte( 25 ); // Scroll speed message_end( ); message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( 3 ); write_coord( EndOrigin[ 0 ] ); write_coord( EndOrigin[ 1 ] ); write_coord( EndOrigin[ 2 ] ); write_short( HarryExp ); // sprite write_byte( 10 ); // scale in 0.1's write_byte( 15 ); // framerate write_byte( 4 ); // flags message_end( ); get_user_aiming( id, Victim, Body, get_pcvar_num( HarryDistance ) ); if( is_user_connected( Victim ) ) { new Float:Damage = float( get_damage_body( Body, get_pcvar_float( HarryDamageCvar ) ) ); new Float:VictimOrigin[ 3 ]; VictimOrigin[ 0 ] = float( EndOrigin[ 0 ] ); VictimOrigin[ 1 ] = float( EndOrigin[ 1 ] ); VictimOrigin[ 2 ] = float( EndOrigin[ 2 ] ); if( get_user_health( Victim ) - get_pcvar_float( HarryDamageCvar ) >= 1 && is_user_alive( Victim ) && !fm_get_user_godmode( Victim ) && get_user_team( Victim ) != get_user_team( id ) ) { new iOrigin[ 3 ]; get_user_origin( Victim, iOrigin, 0 ); message_begin( MSG_PVS, SVC_TEMPENTITY, iOrigin ); write_byte( 21 ); write_coord( iOrigin[ 0 ] ); write_coord( iOrigin[ 1 ] ); write_coord( iOrigin[ 2 ] ); write_coord( iOrigin[ 0 ] ); write_coord( iOrigin[ 1 ] ); write_coord( iOrigin[ 2 ] + 60 ); // end axis + radius write_short( HarryExp ); // sprite write_byte( 0 ); // startfrate write_byte( 0 ); // framerate write_byte( 10 ); // life in 0.1 sec write_byte( 60 ); // width write_byte( 0 ); // amplitude write_byte( 0 ); // red write_byte( 200 ); // green write_byte( 200 ); // blue write_byte( 153 ); // brightness write_byte( 0 ); // speed message_end( ); message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( 15 ); write_coord( iOrigin[ 0 ] ); // start position (X) write_coord( iOrigin[ 1 ] ); // start position (Y) write_coord( iOrigin[ 2 ] + 40 ); // start position (Z) write_coord( iOrigin[ 0 ] ); // end position (X) write_coord( iOrigin[ 1 ] ); // end position (Y) write_coord( iOrigin[ 2 ] ); // end position (Z) write_short( DeathSprite ); // sprite index write_byte( 50 ); // count write_byte( 20 ); // life in 0.1's write_byte( 2 ); // scale in 0.1's write_byte( 50 ); // velocity along vector in 10's write_byte( 10 ); // randomness of velocity in 10's message_end( ); make_knockback( Victim, VictimOrigin, 3 * get_pcvar_float( HarryDamageCvar ) ); ExecuteHam( Ham_TakeDamage, Victim, id, id, Damage, DMG_NERVEGAS ); message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "Damage" ), _, Victim ); write_byte( 0 ); write_byte( 0 ); write_long( DMG_SHOCK ); write_coord( 0 ); write_coord( 0 ); write_coord( 0 ); message_end( ); FadeScreen( Victim, 4.0, 255, 122, 122, 100 ); ShakeScreen( Victim, 3.0 ); } else if( get_user_health( Victim ) - get_pcvar_float( HarryDamageCvar ) < 1 && is_user_alive( Victim ) && !fm_get_user_godmode( Victim ) && get_user_team( Victim ) != get_user_team( id ) ) { new iOrigin[ 3 ]; get_user_origin( Victim, iOrigin, 0 ); message_begin( MSG_PVS, SVC_TEMPENTITY, iOrigin ); write_byte( 21 ); write_coord( iOrigin[ 0 ] ); write_coord( iOrigin[ 1 ] ); write_coord( iOrigin[ 2 ] ); write_coord( iOrigin[ 0 ] ); write_coord( iOrigin[ 1 ] ); write_coord( iOrigin[ 2 ] + 60 ); // end axis + radius write_short( HarryExp ); // sprite write_byte( 0 ); // startfrate write_byte( 0 ); // framerate write_byte( 10 ); // life in 0.1 sec write_byte( 60 ); // width write_byte( 0 ); // amplitude write_byte( 0 ); // red write_byte( 200 ); // green write_byte( 200 ); // blue write_byte( 153 ); // brightness write_byte( 0 ); // speed message_end( ); message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( 15 ); write_coord( iOrigin[ 0 ] ); // start position (X) write_coord( iOrigin[ 1 ] ); // start position (Y) write_coord( iOrigin[ 2 ] + 40 ); // start position (Z) write_coord( iOrigin[ 0 ] ); // end position (X) write_coord( iOrigin[ 1 ] ); // end position (Y) write_coord( iOrigin[ 2 ] ); // end position (Z) write_short( DeathSprite ); // sprite index write_byte( 50 ); // count write_byte( 20 ); // life in 0.1's write_byte( 2 ); // scale in 0.1's write_byte( 50 ); // velocity along vector in 10's write_byte( 10 ); // randomness of velocity in 10's message_end( ); make_knockback( Victim, VictimOrigin, 3 * get_pcvar_float( HarryDamageCvar ) ); death_message( id, Victim, 1, "Magic Wand" ); } } else { static ClassName[ 32 ]; pev( Victim, pev_classname, ClassName, charsmax( ClassName ) ); if( equal( ClassName, "func_breakable" ) ) if( entity_get_float( Victim, EV_FL_health ) <= 80 ) force_use( id, Victim ); } emit_sound( id, CHAN_WEAPON, HarryHitSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM ); } public Harry_Fire2( id ) { static Victim, Body, EndOrigin[3], BeamOrigin[3]; get_user_origin( id, BeamOrigin, 3 ) ; get_user_origin( id, EndOrigin, 3 ); message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( 1 ); write_short( id | 0x1000 ); write_coord( BeamOrigin[ 0 ] ); // Start X write_coord( BeamOrigin[ 1 ] ); // Start Y write_coord( BeamOrigin[ 2 ] ); // Start Z write_short( HarryBeam ); // Sprite write_byte( 1 ); // Start frame write_byte( 1 ); // Frame rate write_byte( 1 ); // Life write_byte( 40 ); // Line width write_byte( 0 ); // Noise write_byte( 150 ); // Red write_byte( 22 ); // Green write_byte( 235 ); // Blue write_byte( 150 ); // Brightness write_byte( 25 ); // Scroll speed message_end( ); message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( 3 ); write_coord( EndOrigin[ 0 ] ); write_coord( EndOrigin[ 1 ] ); write_coord( EndOrigin[ 2 ] ); write_short( HarryExp2 ); write_byte( 10 ); write_byte( 15 ); write_byte( 4 ); message_end( ); get_user_aiming( id, Victim, Body, get_pcvar_num( HarryDistance ) ); if( is_user_alive( Victim ) ) { new Float:Damage = float( get_damage_body( Body, get_pcvar_float( HarryDamageCvar ) ) ); new Float:VictimOrigin[ 3 ]; VictimOrigin[ 0 ] = float( EndOrigin[ 0 ] ); VictimOrigin[ 1 ] = float( EndOrigin[ 1 ] ); VictimOrigin[ 2 ] = float( EndOrigin[ 2 ] ); if( get_user_health( Victim ) - get_pcvar_float( HarryDamageCvar2 ) >= 1 && is_user_alive( Victim ) && !fm_get_user_godmode( Victim ) && get_user_team( Victim ) != get_user_team( id ) ) { new iOrigin[ 3 ]; get_user_origin( Victim, iOrigin, 0 ); message_begin( MSG_PVS, SVC_TEMPENTITY, iOrigin ); write_byte( 21 ); write_coord( iOrigin[ 0 ] ); write_coord( iOrigin[ 1 ] ); write_coord( iOrigin[ 2 ] ); write_coord( iOrigin[ 0 ] ); write_coord( iOrigin[ 1 ] ); write_coord( iOrigin[ 2 ] + 60 ); // end axis + radius write_short( HarryExp2 ); // sprite write_byte( 0 ); // startfrate write_byte( 0 ); // framerate write_byte( 10 ); // life in 0.1 sec write_byte( 60 ); // width write_byte( 0 ); // amplitude write_byte( 217 ); // red write_byte( 132 ); // green write_byte( 47 ); // blue write_byte( 153 ); // brightness write_byte( 0 ); // speed message_end( ); message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( 15 ); write_coord( iOrigin[ 0 ] ); // start position (X) write_coord( iOrigin[ 1 ] ); // start position (Y) write_coord( iOrigin[ 2 ] + 40 ); // start position (Z) write_coord( iOrigin[ 0 ] ); // end position (X) write_coord( iOrigin[ 1 ] ); // end position (Y) write_coord( iOrigin[ 2 ] ); // end position (Z) write_short( DeathSprite ); // sprite index write_byte( 50 ); // count write_byte( 20 ); // life in 0.1's write_byte( 2 ); // scale in 0.1's write_byte( 50 ); // velocity along vector in 10's write_byte( 10 ); // randomness of velocity in 10's message_end( ); make_knockback( Victim, VictimOrigin, 3 * get_pcvar_float( HarryDamageCvar2 ) ); ExecuteHam( Ham_TakeDamage, Victim, id, id, Damage, DMG_NERVEGAS ); message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "Damage" ), _, Victim ); write_byte( 0 ); write_byte( 0 ); write_long( DMG_NERVEGAS ); write_coord( 0 ) ; write_coord( 0 ); write_coord( 0 ); message_end( ); FadeScreen( Victim, 4.0, 0, 255, 0, 100 ); ShakeScreen( Victim, 3.0 ); } else if( get_user_health( Victim ) - get_pcvar_float( HarryDamageCvar2 ) < 1 && is_user_alive( Victim ) && !fm_get_user_godmode( Victim ) && get_user_team( Victim ) != get_user_team( id ) ) { new iOrigin[ 3 ]; get_user_origin( Victim, iOrigin, 0 ); message_begin( MSG_PVS, SVC_TEMPENTITY, iOrigin ); write_byte( 21 ); write_coord( iOrigin[ 0 ] ); write_coord( iOrigin[ 1 ] ); write_coord( iOrigin[ 2 ] ); write_coord( iOrigin[ 0 ] ); write_coord( iOrigin[ 1 ] ); write_coord( iOrigin[ 2 ] + 60 ); // end axis + radius write_short( HarryExp2 ); // sprite write_byte( 0 ); // startfrate write_byte( 0 ); // framerate write_byte( 10 ); // life in 0.1 sec write_byte( 60 ); // width write_byte( 0 ); // amplitude write_byte( 217 ); // red write_byte( 132 ); // green write_byte( 47 ); // blue write_byte( 153 ); // brightness write_byte( 0 ); // speed message_end( ); message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( 15 ); write_coord( iOrigin[ 0 ] ); // start position (X) write_coord( iOrigin[ 1 ] ); // start position (Y) write_coord( iOrigin[ 2 ] + 40 ); // start position (Z) write_coord( iOrigin[ 0 ] ); // end position (X) write_coord( iOrigin[ 1 ] ); // end position (Y) write_coord( iOrigin[ 2 ] ); // end position (Z) write_short( DeathSprite ); // sprite index write_byte( 50 ); // count write_byte( 20 ); // life in 0.1's write_byte( 2 ); // scale in 0.1's write_byte( 50 ); // velocity along vector in 10's write_byte( 10 ); // randomness of velocity in 10's message_end( ); make_knockback( Victim, VictimOrigin, 3 * get_pcvar_float( HarryDamageCvar2 ) ); death_message( id, Victim, 1, "Double Magic Wand" ); } } else { static ClassName[ 32 ]; pev( Victim, pev_classname, ClassName, charsmax( ClassName ) ); if( equal( ClassName, "func_breakable" ) ) if( entity_get_float( Victim, EV_FL_health ) <= 80 ) force_use( id, Victim ); } emit_sound( id, CHAN_WEAPON, HarryHitSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM ); } public make_knockback( Victim, Float:origin[ 3 ], Float:maxspeed ) { new Float:fVelocity[ 3 ]; kickback( Victim, origin, maxspeed, fVelocity ); entity_set_vector( Victim, EV_VEC_velocity, fVelocity ); return( 1 ); } stock ShakeScreen( id, const Float:iSeconds ) { message_begin( MSG_ONE, get_user_msgid( "ScreenShake" ), { 0, 0, 0 }, id ); write_short( floatround( 4096.0 * iSeconds, floatround_round ) ); write_short( floatround( 4096.0 * iSeconds, floatround_round ) ); write_short( 1<<13 ); message_end( ); } stock FadeScreen( id, const Float:iSeconds, const iRed, const iGreen, const iBlue, const iAlpha ) { message_begin( MSG_ONE, get_user_msgid( "ScreenFade" ), _, id ); write_short( floatround( 4096.0 * iSeconds, floatround_round ) ); write_short( floatround( 4096.0 * iSeconds, floatround_round ) ); write_short( 0x0000 ); write_byte( iRed ); write_byte( iGreen ); write_byte( iBlue ); write_byte( iAlpha ); message_end( ); } stock kickback( ent, Float:fOrigin[ 3 ], Float:fSpeed, Float:fVelocity[ 3 ] ) { new Float:fEntOrigin[ 3 ]; entity_get_vector( ent, EV_VEC_origin, fEntOrigin ); new Float:fDistance[ 3 ]; fDistance[ 0 ] = fEntOrigin[ 0 ] - fOrigin[ 0 ]; fDistance[ 1 ] = fEntOrigin[ 1 ] - fOrigin[ 1 ]; fDistance[ 2 ] = fEntOrigin[ 2 ] - fOrigin[ 2 ]; new Float:fTime =( vector_distance( fEntOrigin, fOrigin ) / fSpeed ); fVelocity[ 0 ] = fDistance[ 0 ] / fTime; fVelocity[ 1 ] = fDistance[ 1 ] / fTime; fVelocity[ 2 ] = fDistance[ 2 ] / fTime; return( fVelocity[ 0 ] && fVelocity[ 1 ] && fVelocity[ 2 ] ); } // stock from "m79" stock death_message( Killer, Victim, ScoreBoard, const Weapon[ ] ) { set_msg_block( get_user_msgid( "DeathMsg" ), BLOCK_SET ); ExecuteHamB( Ham_Killed, Victim, Killer, 2 ); set_msg_block( get_user_msgid( "DeathMsg" ), BLOCK_NOT ); make_deathmsg( Killer, Victim, 0, Weapon ); cs_set_user_money( Killer, cs_get_user_money( Killer ) + get_pcvar_num( HarryKillMoney ) ); if( ScoreBoard ) { message_begin( MSG_BROADCAST, get_user_msgid( "ScoreInfo" ) ); write_byte( Killer ); write_short( pev( Killer, pev_frags ) ); write_short( cs_get_user_deaths( Killer ) ); write_short( 0 ); write_short( get_user_team( Killer ) ); message_end( ); message_begin( MSG_BROADCAST, get_user_msgid( "ScoreInfo" ) ); write_byte( Victim ); write_short( pev( Victim, pev_frags ) ); write_short( cs_get_user_deaths( Victim ) ); write_short( 0 ); write_short( get_user_team( Victim ) ); message_end( ); } } stock set_weapon_anim( id, anim ) { set_pev( id, pev_weaponanim, anim ); if( is_user_alive( id ) ) { message_begin( MSG_ONE, SVC_WEAPONANIM, _, id ); write_byte( anim ); write_byte( pev( id, pev_body ) ); message_end( ); } } stock get_damage_body( body, Float:fDamage ) { switch( body ) { case HIT_HEAD: fDamage *= 4.0; case HIT_STOMACH: fDamage *= 1.1; case HIT_CHEST: fDamage *= 1.5; case HIT_LEFTARM: fDamage *= 0.77; case HIT_RIGHTARM: fDamage *= 0.77; case HIT_LEFTLEG: fDamage *= 0.75; case HIT_RIGHTLEG: fDamage *= 0.75; default: fDamage *= 1.0; } return floatround( fDamage ); } // stock from "fakemeta_util" stock fm_get_user_godmode( index ) { new Float:val; pev( index, pev_takedamage, val ); return ( val == DAMAGE_NO ); }
- WaterGUN | Afiseaza codul
#include <amxmodx> #include <fakemeta> #include <fakemeta_util> #include <fun> #include <hamsandwich> #include <cstrike> #include <engine> #include <xs> #define PLUGIN "Furien Water GUN" #define VERSION "1.1" #define AUTHOR "Tr3fla & Edit By Blue" new normalTrace[33], lastTrace[33], cvEnabled, weapon2, dummy; #define ENG_NULLENT -1 #define EV_INT_WEAPONKEY EV_INT_impulse #define watergun_WEAPONKEY 893 #define MAX_PLAYERS 32 #define IsValidUser(%1) (1 <= %1 <= g_MaxPlayers) #define TASK_FBURN 100 #define ID_FBURN ( taskid - TASK_FBURN ) #define MAX_CLIENTS 32 new bool:g_fRoundEnd #define FIRE_DURATION 6 #define FIRE_DAMAGE 25 const USE_STOPPED = 0 const OFFSET_ACTIVE_ITEM = 373 const OFFSET_WEAPONOWNER = 41 const OFFSET_LINUX = 5 const OFFSET_LINUX_WEAPONS = 4 const m_fInReload = 54 const m_flTimeWeaponIdle = 48 #define WEAP_LINUX_XTRA_OFF 4 #define m_fKnown 44 #define m_flNextPrimaryAttack 46 #define m_iClip 51 #define PLAYER_LINUX_XTRA_OFF 5 #define m_flNextAttack 83 #define watergun_RELOAD_TIME 3.5 #define watergun_RELOAD 1 #define watergun_DRAW 2 #define watergun_SHOOT1 3 #define watergun_SHOOT2 4 new g_flameSpr new g_smokeSpr new g_burning_duration[ MAX_CLIENTS + 1 ] #define write_coord_f(%1) engfunc(EngFunc_WriteCoord,%1) new const Fire_Sounds[][] = { "weapons/waterp.wav" } new watergun_V_MODEL[64] = "models/Water-GUN/v_waterg.mdl" new watergun_P_MODEL[64] = "models/Water-GUN/p_waterg.mdl" new watergun_W_MODEL[64] = "models/Water-GUN/w_waterg.mdl" //new const GUNSHOT_DECALS[] = { 41, 42, 43, 44, 45 } new cvar_dmg_watergun, cvar_recoil_watergun, cvar_clip_watergun, cvar_spd_watergun, cvar_watergun_ammo new g_MaxPlayers, g_orig_event_watergun, g_IsInPrimaryAttack new Float:cl_pushangle[MAX_PLAYERS + 1][3], m_iBlood[2] new g_has_watergun[33], g_clip_ammo[33], g_watergun_TmpClip[33], oldweap[33] new watergun_sprite const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<< CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90) new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552", "weapon_ak47", "weapon_knife", "weapon_p90" } public plugin_init() { register_plugin( PLUGIN, VERSION, AUTHOR ) register_message(get_user_msgid("DeathMsg"), "message_DeathMsg") register_event("CurWeapon","CurrentWeapon","be","1=1") RegisterHam(Ham_Item_AddToPlayer, "weapon_mp5navy", "fw_watergun_AddToPlayer") RegisterHam(Ham_Use, "func_tank", "fw_UseStationary_Post", 1) RegisterHam(Ham_Use, "func_tankmortar", "fw_UseStationary_Post", 1) RegisterHam(Ham_Use, "func_tankrocket", "fw_UseStationary_Post", 1) RegisterHam(Ham_Use, "func_tanklaser", "fw_UseStationary_Post", 1) for (new i = 1; i < sizeof WEAPONENTNAMES; i++) if (WEAPONENTNAMES[0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES, "fw_Item_Deploy_Post", 1) RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_mp5navy", "fw_watergun_PrimaryAttack") RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_mp5navy", "fw_watergun_PrimaryAttack_Post", 1) RegisterHam(Ham_Item_PostFrame, "weapon_mp5navy", "watergun_ItemPostFrame") RegisterHam(Ham_Weapon_Reload, "weapon_mp5navy", "watergun_Reload") RegisterHam(Ham_Weapon_Reload, "weapon_mp5navy", "watergun_Reload_Post", 1) RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage") RegisterHam( Ham_Spawn, "player", "PlayerSpawn_Post", 1 ); register_forward(FM_SetModel, "fw_SetModel") register_event( "DeathMsg", "EV_DeathMsg", "a" ); register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post_fw", 1) register_forward(FM_PlaybackEvent, "fwPlaybackEvent") //RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack", 1) //RegisterHam(Ham_TraceAttack, "func_breakable", "fw_TraceAttack", 1) //RegisterHam(Ham_TraceAttack, "func_wall", "fw_TraceAttack", 1) //RegisterHam(Ham_TraceAttack, "func_door", "fw_TraceAttack", 1) //RegisterHam(Ham_TraceAttack, "func_door_rotating", "fw_TraceAttack", 1) //RegisterHam(Ham_TraceAttack, "func_plat", "fw_TraceAttack", 1) //RegisterHam(Ham_TraceAttack, "func_rotating", "fw_TraceAttack", 1) cvar_dmg_watergun = register_cvar("zp_watergun_dmg", "70.0") cvar_recoil_watergun = register_cvar("zp_watergun_recoil", "1.01") cvar_clip_watergun = register_cvar("zp_watergun_clip", "50") cvar_spd_watergun = register_cvar("zp_watergun_spd", "1.02") cvar_watergun_ammo = register_cvar("zp_watergun_ammo", "200") } public plugin_precache() { precache_model(watergun_V_MODEL) precache_model(watergun_P_MODEL) precache_model(watergun_W_MODEL) for(new i = 0; i < sizeof Fire_Sounds; i++) precache_sound(Fire_Sounds) m_iBlood[0] = precache_model("sprites/blood.spr") m_iBlood[1] = precache_model("sprites/bloodspray.spr") watergun_sprite = precache_model("sprites/watergun.spr") } public client_connect(id) { normalTrace[id] = 0; g_has_watergun[id] = false } public client_disconnect(id) { normalTrace[id] = 0; g_has_watergun[id] = false remove_task(id + TASK_FBURN ) } // player spawns, and some other such things public event_resethud(id) { lastTrace[id] = 0; } // block forced resethud call public cmd_fullupdate(id) { return PLUGIN_HANDLED; } // traceline hook, meat and bones of the entire plugin public fw_traceline(Float:vecStart[3],Float:vecEnd[3],ignoreM,id,pentru) // pentToSkip == id, for clarity { if(!is_user_connected(id)) return FMRES_IGNORED; // grab normal trace if(!normalTrace[id]) { normalTrace[id] = pentru; return FMRES_IGNORED; } // ignore normal trace else if(pentru == normalTrace[id]) return FMRES_IGNORED; // no functionality if(!get_pcvar_num(cvEnabled)) return FMRES_IGNORED; // not a player entity, or player is dead if(!is_user_alive(id)) return FMRES_IGNORED; // not shooting anything if(!(pev(id,pev_button) & IN_ATTACK)) return FMRES_IGNORED; weapon2 = get_user_weapon(id,dummy,dummy); // using a shotgun, expect multiple tracelines if(weapon2 == CSW_M3 || weapon2 == CSW_XM1014) return FMRES_IGNORED; // this is a second traceline, for shooting through walls if(pentru == lastTrace[id]) { // values sure to throw off any traceline set_tr(TR_vecEndPos,Float:{4096.0,4096.0,4096.0}); set_tr(TR_AllSolid,1); set_tr(TR_pHit,0); set_tr(TR_iHitgroup,0); set_tr(TR_flFraction,1.0); return FMRES_SUPERCEDE; } // remeber traceline index for next time lastTrace[id] = pentru; return FMRES_IGNORED; } // finished client calculations, reset our traceline index public fw_playerpostthink(id) { lastTrace[id] = 0; } public plugin_natives () { register_native("give_weapon_watergun", "native_give_weapon_add", 1) } public native_give_weapon_add(id) { give_watergun(id) } public fwPrecacheEvent_Post(type, const name[]) { if (equal("events/mp5n.sc", name)) { g_orig_event_watergun = get_orig_retval() return FMRES_HANDLED } return FMRES_IGNORED } public fw_SetModel(entity, model[]) { if(!is_valid_ent(entity)) return FMRES_IGNORED static szClassName[33] entity_get_string(entity, EV_SZ_classname, szClassName, charsmax(szClassName)) if(!equal(szClassName, "weaponbox")) return FMRES_IGNORED static iOwner iOwner = entity_get_edict(entity, EV_ENT_owner) if(equal(model, "models/w_mp5.mdl")) { static iStoredAugID iStoredAugID = find_ent_by_owner(ENG_NULLENT, "weapon_mp5navy", entity) if(!is_valid_ent(iStoredAugID)) return FMRES_IGNORED if(g_has_watergun[iOwner]) { entity_set_int(iStoredAugID, EV_INT_WEAPONKEY, watergun_WEAPONKEY) g_has_watergun[iOwner] = false entity_set_model(entity, watergun_W_MODEL) return FMRES_SUPERCEDE } } return FMRES_IGNORED } public EV_DeathMsg( ) { static pevVictim; pevVictim = read_data( 2 ) if( !is_user_connected( pevVictim ) ) return remove_task( pevVictim + TASK_FBURN ) } public PlayerSpawn_Post( Player ) { if( !is_user_alive( Player ) ) return; g_burning_duration[ Player ] = 0 } public give_watergun(id) { drop_weapons(id, 1) new iWep2 = give_item(id,"weapon_mp5navy") if( iWep2 > 0 ) { cs_set_weapon_ammo(iWep2, get_pcvar_num(cvar_clip_watergun)) cs_set_user_bpammo (id, CSW_MP5NAVY, get_pcvar_num(cvar_watergun_ammo)) UTIL_PlayWeaponAnimation(id, watergun_DRAW) set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF) } g_has_watergun[id] = true } public fw_watergun_AddToPlayer(watergun, id) { if(!is_valid_ent(watergun) || !is_user_connected(id)) return HAM_IGNORED if(entity_get_int(watergun, EV_INT_WEAPONKEY) == watergun_WEAPONKEY) { g_has_watergun[id] = true entity_set_int(watergun, EV_INT_WEAPONKEY, 0) return HAM_HANDLED } return HAM_IGNORED } public fw_UseStationary_Post(entity, caller, activator, use_type) { if (use_type == USE_STOPPED && is_user_connected(caller)) replace_weapon_models(caller, get_user_weapon(caller)) } public fw_Item_Deploy_Post(weapon_ent) { static owner owner = fm_cs_get_weapon_ent_owner(weapon_ent) static weaponid weaponid = cs_get_weapon_id(weapon_ent) replace_weapon_models(owner, weaponid) } public CurrentWeapon(id) { replace_weapon_models(id, read_data(2)) if(read_data(2) != CSW_MP5NAVY || !g_has_watergun[id]) return static Float:iSpeed if(g_has_watergun[id]) iSpeed = get_pcvar_float(cvar_spd_watergun) static weapon[32],Ent get_weaponname(read_data(2),weapon,31) Ent = find_ent_by_owner(-1,weapon,id) if(Ent) { static Float:Delay Delay = get_pdata_float( Ent, 46, 4) * iSpeed if (Delay > 0.0) { set_pdata_float(Ent, 46, Delay, 4) } } } replace_weapon_models(id, weaponid) { switch (weaponid) { case CSW_MP5NAVY: { if(g_has_watergun[id]) { set_pev(id, pev_viewmodel2, watergun_V_MODEL) set_pev(id, pev_weaponmodel2, watergun_P_MODEL) if(oldweap[id] != CSW_MP5NAVY) { UTIL_PlayWeaponAnimation(id, watergun_DRAW) set_pdata_float(id, m_flNextAttack, 1.0, PLAYER_LINUX_XTRA_OFF) } } } } oldweap[id] = weaponid } public fw_UpdateClientData_Post_fw(Player, SendWeapons, CD_Handle) { if(!is_user_alive(Player) || (get_user_weapon(Player) != CSW_MP5NAVY || !g_has_watergun[Player])) return FMRES_IGNORED set_cd(CD_Handle, CD_flNextAttack, halflife_time () + 0.001) return FMRES_HANDLED } public fw_watergun_PrimaryAttack(Weapon) { new Player = get_pdata_cbase(Weapon, 41, 4) if (!g_has_watergun[Player]) return g_IsInPrimaryAttack = 1 pev(Player,pev_punchangle,cl_pushangle[Player]) g_clip_ammo[Player] = cs_get_weapon_ammo(Weapon) } public fwPlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2) { if ((eventid != g_orig_event_watergun) || !g_IsInPrimaryAttack) return FMRES_IGNORED if (!(1 <= invoker <= g_MaxPlayers)) return FMRES_IGNORED playback_event(flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2) return FMRES_SUPERCEDE } public fw_watergun_PrimaryAttack_Post(Weapon) { g_IsInPrimaryAttack = 0 new Player = get_pdata_cbase(Weapon, 41, 4) new szClip, szAmmo get_user_weapon(Player, szClip, szAmmo) if(!is_user_alive(Player)) return if(g_has_watergun[Player]) { if (!g_clip_ammo[Player]) return new Float:push[3] pev(Player,pev_punchangle,push) xs_vec_sub(push,cl_pushangle[Player],push) xs_vec_mul_scalar(push,get_pcvar_float(cvar_recoil_watergun),push) xs_vec_add(push,cl_pushangle[Player],push) set_pev(Player,pev_punchangle,push) emit_sound(Player, CHAN_WEAPON, Fire_Sounds[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM) UTIL_PlayWeaponAnimation(Player, random_num(watergun_SHOOT1, watergun_SHOOT2)) static Float:plrViewAngles[3], Float:VecEnd[3], Float:VecDir[3], Float:PlrOrigin[3] pev(Player, pev_v_angle, plrViewAngles) static Float:VecSrc[3], Float:VecDst[3] //VecSrc = pev->origin + pev->view_ofs pev(Player, pev_origin, PlrOrigin) pev(Player, pev_view_ofs, VecSrc) xs_vec_add(VecSrc, PlrOrigin, VecSrc) //VecDst = VecDir * 8192.0 angle_vector(plrViewAngles, ANGLEVECTOR_FORWARD, VecDir); xs_vec_mul_scalar(VecDir, 8192.0, VecDst); xs_vec_add(VecDst, VecSrc, VecDst); new hTrace = create_tr2() engfunc(EngFunc_TraceLine, VecSrc, VecDst, 0, Player, hTrace) get_tr2(hTrace, TR_vecEndPos, VecEnd); create_tracer_water(Player, VecSrc, VecEnd) } } public fw_TakeDamage(victim, inflictor, attacker, Float:damage) { if(!is_user_alive(attacker)) return; if (victim != attacker && is_user_connected(attacker)) { if(get_user_weapon(attacker) == CSW_MP5NAVY) { if(g_has_watergun[attacker]) { SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmg_watergun)) if( !task_exists( victim + TASK_FBURN ) ) { g_burning_duration[ victim ] += FIRE_DURATION * 5 set_task( 0.2, "CTask__BurningFlame", victim + TASK_FBURN, _, _, "b" ) } } } } } public message_DeathMsg(msg_id, msg_dest, id) { static szTruncatedWeapon[33], iAttacker, iVictim get_msg_arg_string(4, szTruncatedWeapon, charsmax(szTruncatedWeapon)) iAttacker = get_msg_arg_int(1) iVictim = get_msg_arg_int(2) if(!is_user_connected(iAttacker) || iAttacker == iVictim) return PLUGIN_CONTINUE if(equal(szTruncatedWeapon, "mp5navy") && get_user_weapon(iAttacker) == CSW_MP5NAVY) { if(g_has_watergun[iAttacker]) set_msg_arg_string(4, "mp5navy") } return PLUGIN_CONTINUE } stock fm_cs_get_current_weapon_ent(id) { return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM, OFFSET_LINUX) } stock fm_cs_get_weapon_ent_owner(ent) { return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS) } stock UTIL_PlayWeaponAnimation(const Player, const Sequence) { set_pev(Player, pev_weaponanim, Sequence) message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player) write_byte(Sequence) write_byte(pev(Player, pev_body)) message_end() } public watergun_ItemPostFrame(weapon_entity) { new id = pev(weapon_entity, pev_owner) if (!is_user_connected(id)) return HAM_IGNORED if (!g_has_watergun[id]) return HAM_IGNORED static iClipExtra iClipExtra = get_pcvar_num(cvar_clip_watergun) new Float:flNextAttack = get_pdata_float(id, m_flNextAttack, PLAYER_LINUX_XTRA_OFF) new iBpAmmo = cs_get_user_bpammo(id, CSW_MP5NAVY); new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF) new fInReload = get_pdata_int(weapon_entity, m_fInReload, WEAP_LINUX_XTRA_OFF) if( fInReload && flNextAttack <= 0.0 ) { new j = min(iClipExtra - iClip, iBpAmmo) set_pdata_int(weapon_entity, m_iClip, iClip + j, WEAP_LINUX_XTRA_OFF) cs_set_user_bpammo(id, CSW_MP5NAVY, iBpAmmo-j) set_pdata_int(weapon_entity, m_fInReload, 0, WEAP_LINUX_XTRA_OFF) fInReload = 0 } return HAM_IGNORED } public watergun_Reload(weapon_entity) { new id = pev(weapon_entity, pev_owner) if (!is_user_connected(id)) return HAM_IGNORED if (!g_has_watergun[id]) return HAM_IGNORED static iClipExtra if(g_has_watergun[id]) iClipExtra = get_pcvar_num(cvar_clip_watergun) g_watergun_TmpClip[id] = -1 new iBpAmmo = cs_get_user_bpammo(id, CSW_MP5NAVY) new iClip = get_pdata_int(weapon_entity, m_iClip, WEAP_LINUX_XTRA_OFF) if (iBpAmmo <= 0) return HAM_SUPERCEDE if (iClip >= iClipExtra) return HAM_SUPERCEDE g_watergun_TmpClip[id] = iClip return HAM_IGNORED } public watergun_Reload_Post(weapon_entity) { new id = pev(weapon_entity, pev_owner) if (!is_user_connected(id)) return HAM_IGNORED if (!g_has_watergun[id]) return HAM_IGNORED if (g_watergun_TmpClip[id] == -1) return HAM_IGNORED set_pdata_int(weapon_entity, m_iClip, g_watergun_TmpClip[id], WEAP_LINUX_XTRA_OFF) set_pdata_float(weapon_entity, m_flTimeWeaponIdle, watergun_RELOAD_TIME, WEAP_LINUX_XTRA_OFF) set_pdata_float(id, m_flNextAttack, watergun_RELOAD_TIME, PLAYER_LINUX_XTRA_OFF) set_pdata_int(weapon_entity, m_fInReload, 1, WEAP_LINUX_XTRA_OFF) UTIL_PlayWeaponAnimation(id, watergun_RELOAD) return HAM_IGNORED } stock create_tracer_water(id, Float:fVec1[3], Float:fVec2[3]) { static iVec1[3] FVecIVec(fVec1, iVec1) static Float:origin[3], Float:vSrc[3], Float:angles[3], Float:v_forward[3], Float:v_right[3], Float:v_up[3], Float:gun_position[3], Float:player_origin[3], Float:player_view_offset[3] pev(id, pev_v_angle, angles) engfunc(EngFunc_MakeVectors, angles) global_get(glb_v_forward, v_forward) global_get(glb_v_right, v_right) global_get(glb_v_up, v_up) //m_pPlayer->GetGunPosition( ) = pev->origin + pev->view_ofs pev(id, pev_origin, player_origin) pev(id, pev_view_ofs, player_view_offset) xs_vec_add(player_origin, player_view_offset, gun_position) xs_vec_mul_scalar(v_forward, 24.0, v_forward) xs_vec_mul_scalar(v_right, 3.0, v_right) if ((pev(id, pev_flags) & FL_DUCKING) == FL_DUCKING) xs_vec_mul_scalar(v_up, 6.0, v_up) else xs_vec_mul_scalar(v_up, -2.0, v_up) xs_vec_add(gun_position, v_forward, origin) xs_vec_add(origin, v_right, origin) xs_vec_add(origin, v_up, origin) vSrc[0] = origin[0] vSrc[1] = origin[1] vSrc[2] = origin[2] new Float:dist = get_distance_f(vSrc, fVec2) new CountDrops = floatround(dist / 50.0) if (CountDrops > 20) CountDrops = 20 if (CountDrops < 2) CountDrops = 2 message_begin(MSG_PAS, SVC_TEMPENTITY, iVec1) write_byte(TE_SPRITETRAIL) engfunc(EngFunc_WriteCoord, vSrc[0]) engfunc(EngFunc_WriteCoord, vSrc[1]) engfunc(EngFunc_WriteCoord, vSrc[2]) engfunc(EngFunc_WriteCoord, fVec2[0]) engfunc(EngFunc_WriteCoord, fVec2[1]) engfunc(EngFunc_WriteCoord, fVec2[2]) write_short(watergun_sprite) write_byte(CountDrops) write_byte(0) write_byte(1) write_byte(60) write_byte(10) message_end() message_begin(MSG_PAS, SVC_TEMPENTITY, iVec1) write_byte(TE_BEAMPOINTS) engfunc(EngFunc_WriteCoord, fVec2[0]) engfunc(EngFunc_WriteCoord, fVec2[1]) engfunc(EngFunc_WriteCoord, fVec2[2]) engfunc(EngFunc_WriteCoord, vSrc[0]) engfunc(EngFunc_WriteCoord, vSrc[1]) engfunc(EngFunc_WriteCoord, vSrc[2]) write_short(watergun_sprite) write_byte(6) write_byte(200) write_byte(1) write_byte(100) write_byte(0) write_byte(64); write_byte(64); write_byte(192); write_byte(192) write_byte(250) message_end() } stock drop_weapons(id, dropwhat) { static weapons[32], num, i, weaponid num = 0 get_user_weapons(id, weapons, num) for (i = 0; i < num; i++) { weaponid = weapons[i] if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) { static wname[32] get_weaponname(weaponid, wname, sizeof wname - 1) engclient_cmd(id, "drop", wname) } } } public CTask__BurningFlame( taskid ) { // Get player origin and flags static origin[3], flags get_user_origin(ID_FBURN, origin) flags = pev(ID_FBURN, pev_flags) // Madness mode - in water - burning stopped if ((flags & FL_INWATER) || g_burning_duration[ID_FBURN] < 1 || g_fRoundEnd || !is_user_alive(ID_FBURN)) { // Smoke sprite message_begin(MSG_PVS, SVC_TEMPENTITY, origin) write_byte(TE_SMOKE) // TE id write_coord(origin[0]) // x write_coord(origin[1]) // y write_coord(origin[2]-50) // z write_short(g_smokeSpr) // sprite write_byte(random_num(15, 20)) // scale write_byte(random_num(10, 20)) // framerate message_end() // Task not needed anymore remove_task(taskid) return } // Get player's health static health health = pev(ID_FBURN, pev_health) // Take damage from the fire if (health - FIRE_DAMAGE > 0) fm_set_user_health(ID_FBURN, health - FIRE_DAMAGE) // Flame sprite message_begin(MSG_PVS, SVC_TEMPENTITY, origin) write_byte(TE_SPRITE) // TE id write_coord(origin[0]+random_num(-5, 5)) // x write_coord(origin[1]+random_num(-5, 5)) // y write_coord(origin[2]+random_num(-10, 10)) // z write_short(g_flameSpr) // sprite write_byte(random_num(5, 10)) // scale write_byte(200) // brightness message_end() g_burning_duration[ID_FBURN]-- }
Cvaruri :Este netestat...Code: Select all
hero_hp 150 - Cat Hp sa dea la spawn hero_ap 100 - Cat Ap sa dea la spawn
- DaNNe.
- Fost moderator
- Posts: 2811
- Joined: 08 Nov 2013, 20:43
- Detinator Steam: Da
- CS Status: Activitate scăzută
- SteamID: /id/FurienMaster
- Reputatie: Nick anterior: DnD. Gold, Emrys
0.5/3
Fost moderator ajutator
Fost Membru Club eXtreamCS (doua luni) - Has thanked: 244 times
- Been thanked: 129 times
- Contact:
Trebuie sa instalezi toate pluginele de mai sus pentru ca pluginul sa functioneze !
Jump to
- eXtream - Forum
- ↳ Steam
- ↳ Forum
- ↳ WebDesign
- ↳ Incepatori
- ↳ Cos de reciclare
- ↳ Discutii generale
- ↳ Anunturi
- ↳ Security zone
- ↳ Filme si seriale
- ↳ Reclamatii
- ↳ Entertainment
- ↳ Distractie
- ↳ Clubul eXtreamCS - Intra si tu ! [noi oportunitati]
- eXtream - Counter-Strike 2
- ↳ Counter-Strike 2
- eXtream - Counter-Strike 1.6
- ↳ Diverse
- ↳ Filme gaming
- ↳ Meciuri
- ↳ Tutoriale
- ↳ Tutoriale
- ↳ Cereri
- ↳ Discutii generale
- ↳ Probleme la servere dedicate de Counter-Strike
- ↳ Cereri admin / slot
- ↳ Probleme in jocul Counter-Strike
- ↳ Pluginuri
- ↳ Pluginuri eXtream
- ↳ Cereri
- ↳ AdminMod
- ↳ AmxModX
- ↳ Resurse
- ↳ Moduri
- ↳ Addon-uri
- ↳ Kit-uri
- ↳ Harti
- ↳ Diverse
- ↳ Cereri
- ↳ Servere
- ↳ Programarea CS-ului
- ↳ Scripting
- ↳ Modificari pluginuri
- ↳ CStrike
- ↳ Cereri
- eXtream - Echipa
- ↳ Productia eXtream
- ↳ Harti eXtream
- ↳ CS.eXtreamCS.com - Server oficial eXtreamCS
- ↳ Zona administrativă
- ↳ Cereri acces
- ↳ Cereri unban
- ↳ Reclamații
- ↳ Admin zone
- ↳ CS2.eXtreamCS.com - Server official eXtreamCS
- ↳ XMAS.eXtreamCS.com
- ↳ Cereri admin
- ↳ Cereri unban
- ↳ Reclamatii / Sugestii
- ↳ eXtreamCS #PubMasters
- eXtream - Counter Strike Global Offensive
- ↳ Diverse
- ↳ Meciuri
- ↳ Tutoriale
- ↳ Probleme la servere dedicate de Counter-Strike: Global Offensive
- ↳ Probleme in jocul Counter-Strike: Global Offensive
- ↳ Pluginuri
- ↳ Cereri
- ↳ Resurse
- ↳ Addons-uri
- ↳ Hărți
- ↳ Diverse
- ↳ Servere
- eXtream - Counter-Strike Source
- ↳ Tutoriale
- ↳ Pluginuri
- ↳ Servere
- ↳ Resurse
- ↳ Harti
- ↳ Moduri
- ↳ Diverse
- ↳ Classic » CS
- ↳ Anunțuri administrative
- ↳ Cereri admin/slot
- ↳ Cereri unban
- ↳ Reclamații
- ↳ Banlist
- ↳ Admins Only
- ↳ Discord