nu inteleg ma. trb explicat pentru pro*sti =))The YONTU wrote:Ti-am zis de atatea ori 8-| ! Uita-te si inspira-te din pluginul meu de puncte.andre.w wrote:sall vreau sa stiu si eu cum pot creea intr-un plugin un cod in care s-e creeaza un fisier .dat si de fiecare data cand intra pe server sa ii ramana bani sau ce setez eu sa fie..
si inca ceva, vreau un tutorial cum este creeat acel plugin cand mori iese o fantoma.. nu inteleg cum este creeat (ma refer la sprite)
Intrebari si raspunsuri (programarea pluginurilor)
Tutoriale scripting, cod si portiuni de cod.
Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com
- Filip.
- Utilizator neserios (tepar)
- Posts: 996
- Joined: 16 Oct 2013, 23:17
- Detinator Steam: Nu
- Reputatie: Restrictie moderator
Nume anterior: andre.w - Location: lasa
- Has thanked: 58 times
- Been thanked: 26 times
- Contact:
Daca vrei sa faci profit case opening
- Snow.
- Membru, skill +1
- Posts: 243
- Joined: 18 Mar 2014, 21:59
- Detinator Steam: Nu
- Has thanked: 58 times
- Been thanked: 24 times
EDIT.
Last edited by Snow. on 18 Jul 2014, 20:13, edited 1 time in total.
Ion Creanga - Romania Juna, 1869 wrote:Stiu ca sunt prost, dar cand ma uit in jurul meu, prind curaj !
- Ov3rDoZ3
- Membru, skill +1
- Posts: 437
- Joined: 10 Aug 2012, 17:19
- Detinator Steam: Da
- CS Status: M.I.A
- Location: Salaj
- Discord: Dudy#6315
- Has thanked: 3 times
- Been thanked: 1 time
Am nevoie de niste native si putin ajutor sa-mi creez niste clase de human dar nu pentru modul zombie ci pentru altul si bineinteles prin meniu cu comanda say :)
-
- Membru, skill 0
- Posts: 8
- Joined: 15 Mar 2014, 00:37
- Detinator Steam: Nu
- CS Status: klandestin <3
- Detinator server CS: cs.webint.ro
- Location: Botoşani City
- Has thanked: 3 times
- Contact:
Nu îmi pot da seama cum să modific următorul fragment, astfel încât la începutul rundei, să îţi şteargă usp-ul şi să îţi dea deagle cu tot cu gloanţe. Am încercat să iau fragmentul din meniu care îţi dă deagle, însă fără reuşită.
Code: Select all
public LogEvent_RoundStart()
{
CurrentRound++;
new players[32], player, pnum;
get_players(players, pnum, "a");
for(new i = 0; i < pnum; i++)
{
player = players[i];
if(is_user_alive(player) && get_user_flags(player) & ADMIN_LEVEL_H)
{
give_item(player, "weapon_hegrenade")
give_item(player, "weapon_flashbang")
give_item(player, "weapon_flashbang")
give_item(player, "weapon_smokegrenade")
give_item(player, "item_assaultsuit")
give_item(player, "item_thighpack")
if (!get_pcvar_num(g_menu_active))
return PLUGIN_CONTINUE
if(CurrentRound >= 3)
{
Showrod(player);
}
}
}
return PLUGIN_HANDLED
}
-
- Fost moderator
- Posts: 9362
- Joined: 06 Jul 2013, 22:08
- Detinator Steam: Da
- Detinator server CS: Nu
- Reputatie: Fost eXtream Mod
Fost Scripter eXtreamCS
Nume anterior: scosmynnnn - Has thanked: 492 times
- Been thanked: 547 times
faci asa:
new weapon = get_user_weapon(player)
if(weapon == CSW_USP)
{
strip_user_weapons(player)
give_item(player,"weapon_deagle")
cs_set_user_bpammo(player,CSW_DEAGLE,35)
}
mai pe scurt verifici in acel public daca are usp in mana,iar daca are iti arunca armele care le ai si ii dai tu armele care le vrei..
new weapon = get_user_weapon(player)
if(weapon == CSW_USP)
{
strip_user_weapons(player)
give_item(player,"weapon_deagle")
cs_set_user_bpammo(player,CSW_DEAGLE,35)
}
mai pe scurt verifici in acel public daca are usp in mana,iar daca are iti arunca armele care le ai si ii dai tu armele care le vrei..
-
- Fost moderator
- Posts: 9362
- Joined: 06 Jul 2013, 22:08
- Detinator Steam: Da
- Detinator server CS: Nu
- Reputatie: Fost eXtream Mod
Fost Scripter eXtreamCS
Nume anterior: scosmynnnn - Has thanked: 492 times
- Been thanked: 547 times
nu are cum sa nu mearga,trebuiesc parcursi playerii in round start si facut cum ti'am aratat mai sus.
- YONTU
- Scripter eXtreamCS
- Posts: 2466
- Joined: 10 May 2013, 14:25
- Detinator Steam: Nu
- CS Status: Everyone is looking at ur shoes
- Reputatie: Moderator ajutator
Fost scripter eXtreamCS - Location: Gura Humorului
- Has thanked: 256 times
- Been thanked: 288 times
- Contact:
- | Afiseaza codul
#include < cstrike > public LogEvent_RoundStart() { CurrentRound++; new players[32], player, pnum; get_players(players, pnum, "a"); for(new i = 0; i < pnum; i++) { player = players; if(is_user_alive(player) && get_user_flags(player) & ADMIN_LEVEL_H) { bacon_strip_weapon( player, "weapon_usp" ); give_item( player, "weapon_deagle" ); cs_set_user_bpammo( player, CSW_DEAGLE, 70 ); give_item(player, "weapon_hegrenade") give_item(player, "weapon_flashbang") give_item(player, "weapon_flashbang") give_item(player, "weapon_smokegrenade") give_item(player, "item_assaultsuit") give_item(player, "item_thighpack") if (!get_pcvar_num(g_menu_active)) return PLUGIN_CONTINUE if(CurrentRound >= 3) { Showrod(player); } } } return PLUGIN_HANDLED } // stock by cheap.suit stock bacon_strip_weapon(index, weapon[]) { if(!equal(weapon, "weapon_", 7)) return 0 static weaponid weaponid = get_weaponid(weapon) if(!weaponid) return 0 static weaponent weaponent = fm_find_ent_by_owner(-1, weapon, index) if(!weaponent) return 0 if(get_user_weapon(index) == weaponid) ExecuteHamB(Ham_Weapon_RetireWeapon, weaponent) if(!ExecuteHamB(Ham_RemovePlayerItem, index, weaponent)) return 0 ExecuteHamB(Ham_Item_Kill, weaponent) set_pev(index, pev_weapons, pev(index, pev_weapons) & ~(1<<weaponid)) return 1 }
„Peste douăzeci de ani vei fi dezamăgit din cauza lucrurilor pe care nu le-ai făcut, nu din cauza celor pe care le-ai făcut.” - Mark Twain
„Asa e si in viata, hotii castiga, prostii care invata pierd.” - Mihai Nemeș
Bio.LeagueCs.Ro - Biohazard v4.4 Xmas Edition
discord: IonutC#5114
„Asa e si in viata, hotii castiga, prostii care invata pierd.” - Mihai Nemeș
Bio.LeagueCs.Ro - Biohazard v4.4 Xmas Edition
discord: IonutC#5114
Experinta in: Java/Spring boot/Angular/C/C++/C#/Javascript/Python/HTML/CSS/Pawn/SQL
Ai nevoie de ajutorul meu? Ma poti gasi doar la adresa de discord de mai sus.
Ai nevoie de ajutorul meu? Ma poti gasi doar la adresa de discord de mai sus.
- *BoOoM*
- Membru eXtream
- Posts: 2042
- Joined: 15 Jul 2014, 01:25
- Detinator Steam: Da
- CS Status: O dau prin praf :-j
- Detinator server CS: Furien.BingBang.Ro
- SteamID: booom_cs
- Fond eXtream: 0
- Been thanked: 2 times
- Contact:
Deci nu stiu cum sa adaug arme pe native intr-un plugin..(Weapons Menu)
Deci ce bag aici?
Deci ce bag aici?
- Partea 1 | Afiseaza codul
////// ---- || Native || ---- /////// //Credits native fcs_get_user_credits(client); native fcs_set_user_credits(client, credits); native give_weapon_balrogIII(id); native remove_weapon_balrogIII(id); native set_user_speargun(id, speargun); native get_salamander ( id ); native remove_salamnader ( id ); native give_ethereal_wpn( id ); native give_weapon_janus3( id ); native give_compound_bow( id ); native give_weapon_aeolis( id ); native remove_weapon_aeolis( id );
- Partea 2 | Afiseaza codul
public SpawnCmd( id ) { if(is_valid_player(id) && is_user_alive(id)) { AlreadyChoose[ id ] = false; remove_weapon_balrogIII(id); set_user_speargun(id, false); remove_at4 ( id ); remove_salamnader ( id ); set_user_ak47knife(id, false); set_user_skull1(id, false); set_user_k1ases(id, false); remove_weapon_aeolis( id ); if(get_user_team(id) == 2) { WeaponsMenuCmd(id) } } }
- Partea 3 | Afiseaza codul
public WeaponsMenu( id ) { new WeaponsCSOMenu = menu_create( "\yFurien.\rDevilz\y.Ro\w Weapons", "FurienWeaponsHandler" ) new iCredits = fcs_get_user_credits( id ); menu_additem( WeaponsCSOMenu, "\wArme\r Playeri", "1", 0 ) menu_additem( WeaponsCSOMenu, "\wArme\r V.I.P", "2", 0 ) if(is_user_connected(id)) { if( iCredits < get_pcvar_num( cost_balrogIII ) ) { menu_additem( WeaponsCSOMenu, "\yBalrog \rIII\y - \d[ No Credits ]", "4", 0 ) } else if( iCredits >= get_pcvar_num( cost_balrogIII ) ) { new Weapon[ 101]; formatex(Weapon,100, "\yBalrog \rIII\y - [ \r%d Credits\y ]", get_pcvar_num( cost_balrogIII ) ); menu_additem( WeaponsCSOMenu, Weapon, "4", 0 ) } } if(is_user_connected(id)) { if( iCredits < get_pcvar_num( cost_spear ) ) { menu_additem( WeaponsCSOMenu, "\ySpear \rGun\y - \d[ No Credits ]", "5", 0 ) } else if( iCredits >= get_pcvar_num( cost_spear ) ) { new Weapon[ 101]; formatex(Weapon,100, "\ySpear \rGun\y - [ \r%d Credits\y ]", get_pcvar_num( cost_spear ) ); menu_additem( WeaponsCSOMenu, Weapon, "5", 0 ) } } menu_setprop( WeaponsCSOMenu, MPROP_EXIT, MEXIT_ALL ) menu_display( id, WeaponsCSOMenu, 0 ) }
- Partea 4 | Afiseaza codul
public FurienWeaponsHandler( id, WeaponsCSOMenu, item ) { if ( get_user_team ( id ) != 2 ) return 1; if( item == MENU_EXIT ) { menu_destroy( WeaponsCSOMenu ) return PLUGIN_HANDLED } switch( item ) { case 0 : { ArmeNormale( id ) } case 1 : { if( get_user_flags( id ) & VIP_FLAG ) { ArmeVIP( id ) } else { ColorChat( id, "^x04[Furien.Devilz.Ro-CSO]^x01 Aceste arme sunt numai pentru^x04 V.I.P" ); WeaponsMenuCmd(id) return 1; } } case 2 : { new iCredits = fcs_get_user_credits(id) - get_pcvar_num( cost_balrogIII ); if( iCredits < 0 ) { ColorChat ( id, "^x04[Furien.Devilz.Ro-CSO]^x01 Nu ai suficiente^x04 credite." ); WeaponsMenuCmd(id) return 1; } else { give_weapon_balrogIII(id); SecondaryWeapons( id ); fcs_set_user_credits ( id, iCredits ); AlreadyChoose[ id ] = true; ColorChat ( id, "^x04[Furien.Devilz.Ro-CSO]^x01 Ai cumparat^x04 Balrog III." ); } } case 3 : { new iCredits = fcs_get_user_credits(id) - get_pcvar_num( cost_spear ); if( iCredits < 0 ) { ColorChat ( id, "^x04[Furien.Devilz.Ro-CSO]^x01 Nu ai suficiente^x04 credite." ); WeaponsMenuCmd(id) return 1; } else { set_user_speargun(id, true); SecondaryWeapons( id ); fcs_set_user_credits ( id, iCredits ); AlreadyChoose[ id ] = true; ColorChat ( id, "^x04[Furien.Devilz.Ro-CSO]^x01 Ai cumparat^x04 Spear GUN." ); } } } menu_destroy( WeaponsCSOMenu ) return PLUGIN_HANDLED }
- Balrog11 | Afiseaza codul
#include <amxmodx> #include <fakemeta> #include <fakemeta_util> #include <hamsandwich> #include <cstrike> #define PLUGIN "Balrog-XI" #define VERSION "1.0" #define AUTHOR "Dias" #define V_MODEL "models/v_balrog11_2.mdl" #define P_MODEL "models/p_balrog11.mdl" #define W_MODEL "models/w_balrog11.mdl" #define CSW_BALROG11 CSW_XM1014 #define weapon_balrog11 "weapon_xm1014" #define OLD_W_MODEL "models/w_xm1014.mdl" #define OLD_EVENT "events/xm1014.sc" #define WEAPON_SECRETCODE 1982 #define DRAW_TIME 1.0 #define DAMAGE 35 #define FIRE_DAMAGE 100 #define BPAMMO 200 #define CHARGE_COND_AMMO 4 #define MAX_SPECIAL_AMMO 11 #define SPECIALSHOOT_DELAY 0.20 #define FIRE_SPEED 750 #define FIRE_CLASSNAME "balrog11_fire" #define SYSTEM_CLASSNAME "balrog11_firesystem" // OFFSET const PDATA_SAFE = 2 const OFFSET_LINUX_WEAPONS = 4 const OFFSET_WEAPONOWNER = 41 const m_flNextAttack = 83 const m_flNextPrimaryAttack = 46 const m_flNextSecondaryAttack = 47 // Weapon bitsums const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90) const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE) new const WeaponSounds[5][] = { "weapons/balrog11-1.wav", "weapons/balrog11-2.wav", "weapons/balrog11_draw.wav", "weapons/balrog11_insert.wav", "weapons/balrog11_charge.wav" } new const WeaponResources[4][] = { "sprites/flame_puff01.spr", "sprites/weapon_balrog11.txt", "sprites/640hud3_2.spr", "sprites/640hud89_2.spr" } enum { B11_ANIM_IDLE = 0, B11_ANIM_SHOOT, B11_ANIM_SHOOT_SPECIAL, B11_ANIM_INSERT, B11_ANIM_AFTER_RELOAD, B11_ANIM_START_RELOAD, B11_ANIM_DRAW } new g_had_balrog11[33], g_holding_attack[33], g_Shoot_Count[33], g_SpecialAmmo[33] new g_old_weapon[33], g_event_balrog11, g_Msg_StatusIcon, g_smokepuff_id, g_ham_bot public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event("CurWeapon", "Event_CurWeapon", "be", "1=1") register_forward(FM_Think, "fw_Think") register_forward(FM_Touch, "fw_Touch") register_forward(FM_CmdStart, "fw_CmdStart") register_forward(FM_SetModel, "fw_SetModel") register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1) register_forward(FM_PlaybackEvent, "fw_PlaybackEvent") RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack") RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack") RegisterHam(Ham_Item_AddToPlayer, weapon_balrog11, "fw_Item_AddToPlayer_Post", 1) RegisterHam(Ham_Item_PostFrame, weapon_balrog11, "fw_Item_PostFrame") RegisterHam(Ham_Item_Deploy, weapon_balrog11, "fw_Item_Deploy_Post", 1) g_Msg_StatusIcon = get_user_msgid("StatusIcon") register_clcmd("admin_get_balrog11", "Get_Balrog11", ADMIN_BAN) register_clcmd("weapon_balrog11", "hook_weapon") } public plugin_precache() { engfunc(EngFunc_PrecacheModel, V_MODEL) engfunc(EngFunc_PrecacheModel, P_MODEL) engfunc(EngFunc_PrecacheModel, W_MODEL) new i for(i = 0; i < sizeof(WeaponSounds); i++) engfunc(EngFunc_PrecacheSound, WeaponSounds) for(i = 0; i < sizeof(WeaponResources); i++) { if(i == 1) engfunc(EngFunc_PrecacheGeneric, WeaponResources) else engfunc(EngFunc_PrecacheModel, WeaponResources) } register_forward(FM_PrecacheEvent, "fw_PrecacheEvent_Post", 1) g_smokepuff_id = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr") } public client_putinserver(id) { if(!g_ham_bot && is_user_bot(id)) { g_ham_bot = 1 set_task(0.1, "do_register", id) } } public plugin_natives () { register_native("give_weapon_balrog11", "native_give_weapon_add", 1) } public native_give_weapon_add(id) { Get_Balrog11(id) } public do_register(id) { RegisterHamFromEntity(Ham_TraceAttack, id, "fw_TraceAttack") } public fw_PrecacheEvent_Post(type, const name[]) { if(equal(OLD_EVENT, name)) g_event_balrog11 = get_orig_retval() } public Get_Balrog11(id) { if(!is_user_alive(id)) return drop_weapons(id, 1) Remove_Balrog11(id) g_had_balrog11[id] = 1 g_old_weapon[id] = 0 g_holding_attack[id] = 0 g_Shoot_Count[id] = 0 g_SpecialAmmo[id] = 0 fm_give_item(id, weapon_balrog11) cs_set_user_bpammo(id, CSW_BALROG11, BPAMMO) update_ammo(id) update_specialammo(id, g_SpecialAmmo[id], g_SpecialAmmo[id] > 0 ? 1 : 0) } public Remove_Balrog11(id) { if(!is_user_connected(id)) return update_specialammo(id, g_SpecialAmmo[id], 0) g_had_balrog11[id] = 0 g_old_weapon[id] = 0 g_holding_attack[id] = 0 g_Shoot_Count[id] = 0 g_SpecialAmmo[id] = 0 } public hook_weapon(id) { engclient_cmd(id, weapon_balrog11) return PLUGIN_HANDLED } public Event_CurWeapon(id) { if(!is_user_alive(id)) return if(g_had_balrog11[id] && (get_user_weapon(id) == CSW_BALROG11 && g_old_weapon[id] != CSW_BALROG11)) { // Balrog Draw set_weapon_anim(id, B11_ANIM_DRAW) set_player_nextattack(id, DRAW_TIME) update_specialammo(id, g_SpecialAmmo[id], g_SpecialAmmo[id] > 0 ? 1 : 0) } else if(get_user_weapon(id) != CSW_BALROG11 && g_old_weapon[id] == CSW_BALROG11) { update_specialammo(id, g_SpecialAmmo[id], 0) } g_old_weapon[id] = get_user_weapon(id) } public fw_CmdStart(id, uc_handle, seed) { if(!is_user_alive(id)) return if(get_user_weapon(id) != CSW_BALROG11 || !g_had_balrog11[id]) return static NewButton; NewButton = get_uc(uc_handle, UC_Buttons) static OldButton; OldButton = pev(id, pev_oldbuttons) if(NewButton & IN_ATTACK) { if(!g_holding_attack[id]) g_holding_attack[id] = 1 } else if(NewButton & IN_ATTACK2) { SpecialShoot_Handle(id) } else { if(OldButton & IN_ATTACK) { if(g_holding_attack[id]) { g_holding_attack[id] = 0 g_Shoot_Count[id] = 0 } } } } public fw_SetModel(entity, model[]) { if(!pev_valid(entity)) return FMRES_IGNORED static Classname[64] pev(entity, pev_classname, Classname, sizeof(Classname)) if(!equal(Classname, "weaponbox")) return FMRES_IGNORED static id id = pev(entity, pev_owner) if(equal(model, OLD_W_MODEL)) { static weapon weapon = fm_get_user_weapon_entity(entity, CSW_BALROG11) if(!pev_valid(weapon)) return FMRES_IGNORED if(g_had_balrog11[id]) { set_pev(weapon, pev_impulse, WEAPON_SECRETCODE) set_pev(weapon, pev_iuser4, g_SpecialAmmo[id]) engfunc(EngFunc_SetModel, entity, W_MODEL) Remove_Balrog11(id) return FMRES_SUPERCEDE } } return FMRES_IGNORED; } public fw_UpdateClientData_Post(id, sendweapons, cd_handle) { if(!is_user_alive(id) || !is_user_connected(id)) return FMRES_IGNORED if(get_user_weapon(id) == CSW_BALROG11 && g_had_balrog11[id]) set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001) return FMRES_HANDLED } public fw_PlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2) { if (!is_user_connected(invoker)) return FMRES_IGNORED if(get_user_weapon(invoker) == CSW_BALROG11 && g_had_balrog11[invoker] && eventid == g_event_balrog11) { engfunc(EngFunc_PlaybackEvent, flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2) if(g_holding_attack[invoker]) g_Shoot_Count[invoker]++ else g_Shoot_Count[invoker] = 0 if(g_Shoot_Count[invoker] >= CHARGE_COND_AMMO) { g_Shoot_Count[invoker] = 0 if(g_SpecialAmmo[invoker] < MAX_SPECIAL_AMMO) { update_specialammo(invoker, g_SpecialAmmo[invoker], 0) g_SpecialAmmo[invoker]++ update_specialammo(invoker, g_SpecialAmmo[invoker], 1) emit_sound(invoker, CHAN_ITEM, WeaponSounds[4], 1.0, ATTN_NORM, 0, PITCH_NORM) } } set_weapon_anim(invoker, B11_ANIM_SHOOT) emit_sound(invoker, CHAN_WEAPON, WeaponSounds[0], 1.0, ATTN_NORM, 0, PITCH_NORM) return FMRES_SUPERCEDE } return FMRES_HANDLED } public fw_Think(ent) { if(!pev_valid(ent)) return static Classname[32]; pev(ent, pev_classname, Classname, sizeof(Classname)) if(equal(Classname, FIRE_CLASSNAME)) { static Float:fFrame; pev(ent, pev_frame, fFrame) fFrame += 1.5 fFrame = floatmin(21.0, fFrame) set_pev(ent, pev_frame, fFrame) set_pev(ent, pev_nextthink, get_gametime() + 0.05) // time remove static Float:fTimeRemove, Float:Amount pev(ent, pev_fuser1, fTimeRemove) pev(ent, pev_renderamt, Amount) if(get_gametime() >= fTimeRemove) { Amount -= 10.0 set_pev(ent, pev_renderamt, Amount) if(Amount <= 15.0) engfunc(EngFunc_RemoveEntity, ent) } } else if(equal(Classname, SYSTEM_CLASSNAME)) { static Float:Origin[3], Float:Scale pev(ent, pev_origin, Origin) pev(ent, pev_scale, Scale) Scale += 0.1 Scale = floatmin(1.5, Scale) set_pev(ent, pev_scale, Scale) Create_Fire(pev(ent, pev_owner), Origin, Scale, 0.0) set_pev(ent, pev_nextthink, get_gametime() + 0.05) // time remove static Float:fTimeRemove pev(ent, pev_fuser1, fTimeRemove) if(get_gametime() >= fTimeRemove) engfunc(EngFunc_RemoveEntity, ent) } } public fw_Touch(ent, id) { if(!pev_valid(ent)) return static Classname[32] pev(ent, pev_classname, Classname, sizeof(Classname)) if(!equal(Classname, SYSTEM_CLASSNAME)) return if(pev_valid(id)) { static Classname2[32] pev(id, pev_classname, Classname2, sizeof(Classname2)) if(equal(Classname2, SYSTEM_CLASSNAME) || equal(Classname2, FIRE_CLASSNAME)) return else if(is_user_alive(id)) { if(pev(ent, pev_iuser3) == 1 && cs_get_user_team(id) != CS_TEAM_T) ExecuteHamB(Ham_TakeDamage, id, 0, pev(ent, pev_owner), float(FIRE_DAMAGE) / random_float(3.0, 5.0), DMG_BULLET) else if(pev(ent, pev_iuser3) == 2 && cs_get_user_team(id) != CS_TEAM_CT) ExecuteHamB(Ham_TakeDamage, id, 0, pev(ent, pev_owner), float(FIRE_DAMAGE) / random_float(3.0, 5.0), DMG_BULLET) return } } set_pev(ent, pev_movetype, MOVETYPE_NONE) set_pev(ent, pev_solid, SOLID_NOT) } public fw_TraceAttack(Ent, Attacker, Float:Damage, Float:Dir[3], pentru, DamageType) { if(!is_user_alive(Attacker)) return HAM_IGNORED if(get_user_weapon(Attacker) != CSW_BALROG11 || !g_had_balrog11[Attacker]) return HAM_IGNORED static Float:flEnd[3], Float:vecPlane[3] get_tr2(pentru, TR_vecEndPos, flEnd) get_tr2(pentru, TR_vecPlaneNormal, vecPlane) if(!is_user_alive(Ent)) { make_bullet(Attacker, flEnd) fake_smoke(Attacker, pentru) } SetHamParamFloat(3, float(DAMAGE) / random_float(1.5, 2.5)) return HAM_HANDLED } public fw_Item_AddToPlayer_Post(ent, id) { if(pev(ent, pev_impulse) == WEAPON_SECRETCODE) { g_had_balrog11[id] = 1 set_pev(ent, pev_impulse, 0) g_SpecialAmmo[id] = pev(ent, pev_iuser4) } message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("WeaponList"), _, id) write_string((g_had_balrog11[id] == 1 ? "weapon_balrog11" : "weapon_xm1014")) write_byte(5) write_byte(32) write_byte(-1) write_byte(-1) write_byte(0) write_byte(12) write_byte(CSW_BALROG11) write_byte(0) message_end() } public fw_Item_PostFrame(ent) { static id; id = fm_cs_get_weapon_ent_owner(ent) if (!pev_valid(id)) return if(!g_had_balrog11[id]) return if(get_pdata_int(ent, 55, OFFSET_LINUX_WEAPONS) == 1) set_weapon_anim(id, B11_ANIM_INSERT) } public fw_Item_Deploy_Post(ent) { static id; id = fm_cs_get_weapon_ent_owner(ent) if (!pev_valid(id)) return if(!g_had_balrog11[id]) return set_pev(id, pev_viewmodel2, V_MODEL) set_pev(id, pev_weaponmodel2, P_MODEL) } public update_ammo(id) { if(!is_user_alive(id)) return static weapon_ent; weapon_ent = fm_get_user_weapon_entity(id, CSW_BALROG11) if(!pev_valid(weapon_ent)) return engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, get_user_msgid("CurWeapon"), {0, 0, 0}, id) write_byte(1) write_byte(CSW_BALROG11) write_byte(cs_get_weapon_ammo(weapon_ent)) message_end() message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("AmmoX"), _, id) write_byte(1) write_byte(cs_get_user_bpammo(id, CSW_BALROG11)) message_end() } public update_specialammo(id, Ammo, On) { static AmmoSprites[33] format(AmmoSprites, sizeof(AmmoSprites), "number_%d", Ammo) message_begin(MSG_ONE_UNRELIABLE, g_Msg_StatusIcon, {0,0,0}, id) write_byte(On) write_string(AmmoSprites) write_byte(42) // red write_byte(212) // green write_byte(255) // blue message_end() } public SpecialShoot_Handle(id) { if(get_pdata_float(id, 83, 5) > 0.0) return if(g_SpecialAmmo[id] <= 0) return create_fake_attack(id) // Shoot Handle set_player_nextattack(id, SPECIALSHOOT_DELAY) set_weapons_timeidle(id, CSW_BALROG11, SPECIALSHOOT_DELAY) update_specialammo(id, g_SpecialAmmo[id], 0) g_SpecialAmmo[id]-- update_specialammo(id, g_SpecialAmmo[id], g_SpecialAmmo[id] > 0 ? 1 : 0) set_weapon_anim(id, B11_ANIM_SHOOT_SPECIAL) emit_sound(id, CHAN_WEAPON, WeaponSounds[1], 1.0, ATTN_NORM, 0, PITCH_NORM) Create_FireSystem(id) } public create_fake_attack(id) { static weapon weapon = fm_find_ent_by_owner(-1, "weapon_knife", id) if(pev_valid(weapon)) ExecuteHamB(Ham_Weapon_PrimaryAttack, weapon) } public Create_FireSystem(id) { static Float:StartOrigin[3], Float:EndOrigin[5][3] get_weapon_attachment(id, StartOrigin, 40.0) // Left get_position(id, 512.0, -140.0, 0.0, EndOrigin[0]) get_position(id, 512.0, -70.0, 0.0, EndOrigin[1]) // Center get_position(id, 512.0, 0.0, 0.0, EndOrigin[2]) // Right get_position(id, 512.0, 70.0, 0.0, EndOrigin[3]) get_position(id, 512.0, 140.0, 0.0, EndOrigin[4]) // Create Fire for(new i = 0; i < 5; i++) Create_System(id, StartOrigin, EndOrigin, float(FIRE_SPEED)) } public Create_System(id, Float:StartOrigin[3], Float:EndOrigin[3], Float:Speed) { static Ent; Ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite")) // set info for ent set_pev(Ent, pev_movetype, MOVETYPE_FLY) set_pev(Ent, pev_rendermode, kRenderTransAdd) set_pev(Ent, pev_renderamt, 0.0) set_pev(Ent, pev_fuser1, get_gametime() + 0.75) // time remove set_pev(Ent, pev_scale, 0.1) set_pev(Ent, pev_nextthink, get_gametime() + 0.05) set_pev(Ent, pev_classname, SYSTEM_CLASSNAME) engfunc(EngFunc_SetModel, Ent, WeaponResources[0]) set_pev(Ent, pev_mins, Float:{-16.0, -16.0, -16.0}) set_pev(Ent, pev_maxs, Float:{16.0, 16.0, 16.0}) set_pev(Ent, pev_origin, StartOrigin) set_pev(Ent, pev_gravity, 0.01) set_pev(Ent, pev_solid, SOLID_TRIGGER) set_pev(Ent, pev_owner, id) static Team; if(cs_get_user_team(id) == CS_TEAM_T) Team = 1 else if(cs_get_user_team(id) == CS_TEAM_CT) Team = 2 set_pev(Ent, pev_iuser3, Team) set_pev(Ent, pev_frame, 0.0) static Float:Velocity[3] get_speed_vector(StartOrigin, EndOrigin, Speed, Velocity) set_pev(Ent, pev_velocity, Velocity) } public Create_Fire(id, Float:Origin[3], Float:Scale, Float:Frame) { static Ent; Ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite")) // set info for ent set_pev(Ent, pev_movetype, MOVETYPE_FLY) set_pev(Ent, pev_rendermode, kRenderTransAdd) set_pev(Ent, pev_renderamt, 255.0) set_pev(Ent, pev_fuser1, get_gametime() + 0.1) // time remove set_pev(Ent, pev_scale, Scale) set_pev(Ent, pev_nextthink, get_gametime() + 0.05) set_pev(Ent, pev_classname, FIRE_CLASSNAME) engfunc(EngFunc_SetModel, Ent, WeaponResources[0]) set_pev(Ent, pev_mins, Float:{-10.0, -10.0, -10.0}) set_pev(Ent, pev_maxs, Float:{10.0, 10.0, 10.0}) set_pev(Ent, pev_origin, Origin) set_pev(Ent, pev_gravity, 0.01) set_pev(Ent, pev_solid, SOLID_TRIGGER) set_pev(Ent, pev_owner, id) set_pev(Ent, pev_frame, Frame) } stock make_bullet(id, Float:Origin[3]) { // Find target new decal = random_num(41, 45) const loop_time = 2 static Body, Target get_user_aiming(id, Target, Body, 999999) if(is_user_connected(Target)) return for(new i = 0; i < loop_time; i++) { // Put decal on "world" (a wall) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_WORLDDECAL) engfunc(EngFunc_WriteCoord, Origin[0]) engfunc(EngFunc_WriteCoord, Origin[1]) engfunc(EngFunc_WriteCoord, Origin[2]) write_byte(decal) message_end() // Show sparcles message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_GUNSHOTDECAL) engfunc(EngFunc_WriteCoord, Origin[0]) engfunc(EngFunc_WriteCoord, Origin[1]) engfunc(EngFunc_WriteCoord, Origin[2]) write_short(id) write_byte(decal) message_end() } } stock fake_smoke(id, trace_result) { static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG get_weapon_attachment(id, vecSrc) global_get(glb_v_forward, vecEnd) xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd) xs_vec_add(vecSrc, vecEnd, vecEnd) get_tr2(trace_result, TR_vecEndPos, vecSrc) get_tr2(trace_result, TR_vecPlaneNormal, vecEnd) xs_vec_mul_scalar(vecEnd, 2.5, vecEnd) xs_vec_add(vecSrc, vecEnd, vecEnd) TE_FLAG |= TE_EXPLFLAG_NODLIGHTS TE_FLAG |= TE_EXPLFLAG_NOSOUND TE_FLAG |= TE_EXPLFLAG_NOPARTICLES engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0) write_byte(TE_EXPLOSION) engfunc(EngFunc_WriteCoord, vecEnd[0]) engfunc(EngFunc_WriteCoord, vecEnd[1]) engfunc(EngFunc_WriteCoord, vecEnd[2] - 10.0) write_short(g_smokepuff_id) write_byte(2) write_byte(50) write_byte(TE_FLAG) message_end() } stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0) { new Float:vfEnd[3], viEnd[3] get_user_origin(id, viEnd, 3) IVecFVec(viEnd, vfEnd) new Float:fOrigin[3], Float:fAngle[3] pev(id, pev_origin, fOrigin) pev(id, pev_view_ofs, fAngle) xs_vec_add(fOrigin, fAngle, fOrigin) new Float:fAttack[3] xs_vec_sub(vfEnd, fOrigin, fAttack) xs_vec_sub(vfEnd, fOrigin, fAttack) new Float:fRate fRate = fDis / vector_length(fAttack) xs_vec_mul_scalar(fAttack, fRate, fAttack) xs_vec_add(fOrigin, fAttack, output) } stock set_weapon_anim(id, anim) { if(!is_user_alive(id)) return set_pev(id, pev_weaponanim, anim) message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id) write_byte(anim) write_byte(0) message_end() } stock fm_cs_get_weapon_ent_owner(ent) { if (pev_valid(ent) != PDATA_SAFE) return -1 return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS) } stock set_player_nextattack(id, Float:nexttime) { if(!is_user_alive(id)) return set_pdata_float(id, m_flNextAttack, nexttime, 5) } stock set_weapons_timeidle(id, WeaponId ,Float:TimeIdle) { if(!is_user_alive(id)) return static entwpn; entwpn = fm_get_user_weapon_entity(id, WeaponId) if(!pev_valid(entwpn)) return set_pdata_float(entwpn, 46, TimeIdle, OFFSET_LINUX_WEAPONS) set_pdata_float(entwpn, 47, TimeIdle, OFFSET_LINUX_WEAPONS) set_pdata_float(entwpn, 48, TimeIdle + 0.5, OFFSET_LINUX_WEAPONS) } stock get_position(id,Float:forw, Float:right, Float:up, Float:vStart[]) { static Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3] pev(id, pev_origin, vOrigin) pev(id, pev_view_ofs, vUp) //for player xs_vec_add(vOrigin, vUp, vOrigin) pev(id, pev_v_angle, vAngle) // if normal entity ,use pev_angles angle_vector(vAngle,ANGLEVECTOR_FORWARD, vForward) //or use EngFunc_AngleVectors angle_vector(vAngle,ANGLEVECTOR_RIGHT, vRight) angle_vector(vAngle,ANGLEVECTOR_UP, vUp) vStart[0] = vOrigin[0] + vForward[0] * forw + vRight[0] * right + vUp[0] * up vStart[1] = vOrigin[1] + vForward[1] * forw + vRight[1] * right + vUp[1] * up vStart[2] = vOrigin[2] + vForward[2] * forw + vRight[2] * right + vUp[2] * up } stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3]) { new_velocity[0] = origin2[0] - origin1[0] new_velocity[1] = origin2[1] - origin1[1] new_velocity[2] = origin2[2] - origin1[2] new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2])) new_velocity[0] *= num new_velocity[1] *= num new_velocity[2] *= num return 1; } // Drop primary/secondary weapons stock drop_weapons(id, dropwhat) { // Get user weapons static weapons[32], num, i, weaponid num = 0 // reset passed weapons count (bugfix) get_user_weapons(id, weapons, num) // Loop through them and drop primaries or secondaries for (i = 0; i < num; i++) { // Prevent re-indexing the array weaponid = weapons if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM))) { // Get weapon entity static wname[32] get_weaponname(weaponid, wname, charsmax(wname)) // Player drops the weapon and looses his bpammo engclient_cmd(id, "drop", wname) cs_set_user_bpammo(id, weaponid, 0) } } } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par } */
- Gatling | Afiseaza codul
#include <amxmodx> #include <fakemeta> #include <fakemeta_util> #include <hamsandwich> #include <cstrike> #define PLUGIN "Gatling (Volcano)" #define VERSION "1.0" #define AUTHOR "Dias" #define CSW_GATLING CSW_M3 #define weapon_gatling "weapon_m3" #define WEAPON_ANIMEXT "m249" #define DEFAULT_W_MODEL "models/w_m3.mdl" #define WEAPON_SECRET_CODE 1942 #define old_event "events/m3.sc" #define DAMAGE 30 #define SPEED 0.25 #define RECOIL 0.5 #define RELOAD_TIME 4.5 #define DEFAULT_CLIP 45 #define DEFAULT_BPAMMO 300 new const WeaponModel[3][] = { "models/v_gatling.mdl", // V "models/p_gatling.mdl", // P "models/w_gatling.mdl" // W } new const WeaponSound[7][] = { "weapons/gatling-1.wav", "weapons/gatling_boltpull.wav", "weapons/gatling_clipin1.wav", "weapons/gatling_clipin2.wav", "weapons/gatling_clipout1.wav", "weapons/gatling_clipout2.wav", "weapons/usas_draw.wav" } new const WeaponResource[4][] = { "sprites/weapon_gatling.txt", "sprites/640hud7_2.spr", "sprites/640hud55_2.spr", "sprites/640hud56_2.spr" } enum { GATLING_ANIM_IDLE = 0, GATLING_ANIM_SHOOT1, GATLING_ANIM_SHOOT2, GATLING_ANIM_RELOAD, GATLING_ANIM_DRAW } const PDATA_SAFE = 2 const OFFSET_LINUX_WEAPONS = 4 const OFFSET_LINUX_PLAYER = 5 const OFFSET_WEAPONOWNER = 41 const m_iClip = 51 const m_fInReload = 54 const m_flNextAttack = 83 const m_szAnimExtention = 492 new g_had_gatling[33], Float:g_punchangles[33][3], g_gatling_event, g_smokepuff_id, m_iBlood[2], g_ham_bot public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event("CurWeapon", "Event_CurWeapon", "be", "1=1") register_forward(FM_CmdStart, "fw_CmdStart") register_forward(FM_SetModel, "fw_SetModel") register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1) register_forward(FM_PlaybackEvent, "fw_PlaybackEvent") RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack") RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack") RegisterHam(Ham_Item_Deploy, weapon_gatling, "fw_Item_Deploy_Post", 1) RegisterHam(Ham_Weapon_Reload, weapon_gatling, "fw_Weapon_Reload_Post", 1) RegisterHam(Ham_Item_PostFrame, weapon_gatling, "fw_Item_PostFrame") RegisterHam(Ham_Item_AddToPlayer, weapon_gatling, "fw_Item_AddToPlayer_Post", 1) RegisterHam(Ham_Weapon_PrimaryAttack, weapon_gatling, "fw_Weapon_PrimaryAttack") RegisterHam(Ham_Weapon_PrimaryAttack, weapon_gatling, "fw_Weapon_PrimaryAttack_Post", 1) register_clcmd("weapon_gatling", "hook_weapon") register_clcmd("admin_get_gatling", "get_gatling", ADMIN_BAN) } public plugin_precache() { new i for(i = 0; i < sizeof(WeaponModel); i++) engfunc(EngFunc_PrecacheModel, WeaponModel) for(i = 0; i < sizeof(WeaponSound); i++) engfunc(EngFunc_PrecacheSound, WeaponSound) for(new i = 0; i < sizeof(WeaponResource); i++) { if(i == 0) engfunc(EngFunc_PrecacheGeneric, WeaponResource) else engfunc(EngFunc_PrecacheModel, WeaponResource) } g_smokepuff_id = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr") m_iBlood[0] = engfunc(EngFunc_PrecacheModel, "sprites/blood.spr") m_iBlood[1] = engfunc(EngFunc_PrecacheModel, "sprites/bloodspray.spr") register_forward(FM_PrecacheEvent, "fw_PrecacheEvent_Post", 1) } public plugin_natives() { register_native("give_weapon_gatling", "native_give_weapon_add", 1) } public native_give_weapon_add(id) { get_gatling(id) } public fw_PrecacheEvent_Post(type, const name[]) { if(equal(old_event, name)) g_gatling_event = get_orig_retval() } public client_putinserver(id) { if(is_user_bot(id) && !g_ham_bot) { g_ham_bot = 1 set_task(0.1, "Do_Register_Ham", id) } } public Do_Register_Ham(id) { RegisterHamFromEntity(Ham_TraceAttack, id, "fw_TraceAttack") } public get_gatling(id) { if(!is_user_alive(id)) return drop_weapons(id, 1) g_had_gatling[id] = 1 fm_give_item(id, weapon_gatling) // Set Clip static ent; ent = fm_get_user_weapon_entity(id, CSW_GATLING) if(pev_valid(ent)) cs_set_weapon_ammo(ent, DEFAULT_CLIP) // Set BpAmmo cs_set_user_bpammo(id, CSW_GATLING, DEFAULT_BPAMMO) // Update Ammo update_ammo(id, CSW_GATLING, DEFAULT_CLIP, DEFAULT_BPAMMO) } public remove_gatling(id) { g_had_gatling[id] = 0 } public hook_weapon(id) { client_cmd(id, weapon_gatling) return PLUGIN_HANDLED } public Event_CurWeapon(id) { if(!is_user_alive(id)) return if(get_user_weapon(id) != CSW_GATLING || !g_had_gatling[id]) return // Speed static ent; ent = fm_get_user_weapon_entity(id, CSW_GATLING) if(!pev_valid(ent)) return set_pdata_float(ent, 46, get_pdata_float(ent, 46, OFFSET_LINUX_WEAPONS) * SPEED, OFFSET_LINUX_WEAPONS) } public fw_CmdStart(id, uc_handle, seed) { if(!is_user_alive(id)) return if(get_user_weapon(id) != CSW_GATLING || !g_had_gatling[id]) return static CurButton; CurButton = get_uc(uc_handle, UC_Buttons) if(CurButton & IN_RELOAD) { CurButton &= ~IN_RELOAD set_uc(uc_handle, UC_Buttons, CurButton) static ent; ent = fm_get_user_weapon_entity(id, CSW_GATLING) if(!pev_valid(ent)) return static fInReload; fInReload = get_pdata_int(ent, m_fInReload, OFFSET_LINUX_WEAPONS) static Float:flNextAttack; flNextAttack = get_pdata_float(id, m_flNextAttack, OFFSET_LINUX_PLAYER) if (flNextAttack > 0.0) return if (fInReload) { set_weapon_anim(id, GATLING_ANIM_IDLE) return } if(cs_get_weapon_ammo(ent) >= DEFAULT_CLIP) { set_weapon_anim(id, GATLING_ANIM_IDLE) return } fw_Weapon_Reload_Post(ent) } } public fw_SetModel(entity, model[]) { if(!pev_valid(entity)) return FMRES_IGNORED static szClassName[33] pev(entity, pev_classname, szClassName, charsmax(szClassName)) if(!equal(szClassName, "weaponbox")) return FMRES_IGNORED static id id = pev(entity, pev_owner) if(equal(model, DEFAULT_W_MODEL)) { static weapon weapon = fm_find_ent_by_owner(-1, weapon_gatling, entity) if(!pev_valid(weapon)) return FMRES_IGNORED if(g_had_gatling[id]) { set_pev(weapon, pev_impulse, WEAPON_SECRET_CODE) engfunc(EngFunc_SetModel, entity, WeaponModel[2]) remove_gatling(id) return FMRES_SUPERCEDE } } return FMRES_IGNORED } public fw_TraceAttack(ent, attacker, Float:Damage, Float:fDir[3], pentru, iDamageType) { if(!is_user_alive(attacker)) return HAM_IGNORED if(get_user_weapon(attacker) != CSW_GATLING || !g_had_gatling[attacker]) return HAM_IGNORED if(!is_user_alive(ent)) { static Float:flEnd[3], Float:vecPlane[3] get_tr2(pentru, TR_vecEndPos, flEnd) get_tr2(pentru, TR_vecPlaneNormal, vecPlane) make_bullet(attacker, flEnd) fake_smoke(attacker, pentru) } SetHamParamFloat(3, float(DAMAGE) / random_float(1.5, 2.5)) return HAM_HANDLED } public fw_UpdateClientData_Post(id, sendweapons, cd_handle) { if(!is_user_alive(id) || !is_user_connected(id)) return FMRES_IGNORED if(get_user_weapon(id) != CSW_GATLING || !g_had_gatling[id]) return FMRES_IGNORED set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001) return FMRES_HANDLED } public fw_PlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2) { if(!is_user_connected(invoker)) return FMRES_IGNORED if(get_user_weapon(invoker) == CSW_GATLING && g_had_gatling[invoker] && eventid == g_gatling_event) { engfunc(EngFunc_PlaybackEvent, flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2) Event_Gatling_Shoot(invoker) return FMRES_SUPERCEDE } return FMRES_HANDLED } public fw_Item_Deploy_Post(ent) { static id; id = fm_cs_get_weapon_ent_owner(ent) if (!pev_valid(id)) return static weaponid weaponid = cs_get_weapon_id(ent) if(weaponid != CSW_GATLING) return if(!g_had_gatling[id]) return set_pev(id, pev_viewmodel2, WeaponModel[0]) set_pev(id, pev_weaponmodel2, WeaponModel[1]) set_weapon_anim(id, GATLING_ANIM_DRAW) set_pdata_string(id, m_szAnimExtention * 4, WEAPON_ANIMEXT, -1 , 20) } public fw_Weapon_Reload_Post(ent) { static id; id = pev(ent, pev_owner) if(g_had_gatling[id]) { static CurBpAmmo; CurBpAmmo = cs_get_user_bpammo(id, CSW_GATLING) if(CurBpAmmo <= 0) return HAM_IGNORED set_pdata_int(ent, 55, 0, OFFSET_LINUX_WEAPONS) set_pdata_float(id, 83, RELOAD_TIME, OFFSET_LINUX_PLAYER) set_pdata_float(ent, 48, RELOAD_TIME + 0.5, OFFSET_LINUX_WEAPONS) set_pdata_float(ent, 46, RELOAD_TIME + 0.25, OFFSET_LINUX_WEAPONS) set_pdata_float(ent, 47, RELOAD_TIME + 0.25, OFFSET_LINUX_WEAPONS) set_pdata_int(ent, m_fInReload, 1, OFFSET_LINUX_WEAPONS) set_weapon_anim(id, GATLING_ANIM_RELOAD) return HAM_HANDLED } return HAM_IGNORED } public fw_Item_PostFrame(ent) { static id; id = pev(ent, pev_owner) if(!g_had_gatling[id]) return static iBpAmmo ; iBpAmmo = get_pdata_int(id, 381, OFFSET_LINUX_PLAYER) static iClip ; iClip = get_pdata_int(ent, m_iClip, OFFSET_LINUX_WEAPONS) static iMaxClip ; iMaxClip = DEFAULT_CLIP if(get_pdata_int(ent, m_fInReload, OFFSET_LINUX_WEAPONS) && get_pdata_float(id, m_flNextAttack, OFFSET_LINUX_PLAYER) <= 0.0) { static j; j = min(iMaxClip - iClip, iBpAmmo) set_pdata_int(ent, m_iClip, iClip + j, OFFSET_LINUX_WEAPONS) set_pdata_int(id, 381, iBpAmmo-j, OFFSET_LINUX_PLAYER) set_pdata_int(ent, m_fInReload, 0, OFFSET_LINUX_WEAPONS) cs_set_weapon_ammo(ent, DEFAULT_CLIP) update_ammo(id, CSW_GATLING, cs_get_weapon_ammo(ent), cs_get_user_bpammo(id, CSW_GATLING)) return } } public fw_Item_AddToPlayer_Post(ent, id) { if(!pev_valid(ent)) return HAM_IGNORED if(pev(ent, pev_impulse) == WEAPON_SECRET_CODE) { remove_gatling(id) g_had_gatling[id] = 1 update_ammo(id, CSW_GATLING, cs_get_weapon_ammo(ent), cs_get_user_bpammo(id, CSW_GATLING)) } message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("WeaponList"), _, id) write_string(g_had_gatling[id] == 1 ? "weapon_gatling" : "weapon_m3") write_byte(5) write_byte(200) write_byte(-1) write_byte(-1) write_byte(0) write_byte(5) write_byte(g_had_gatling[id] == 1 ? CSW_GATLING : CSW_M3) write_byte(0) message_end() return HAM_IGNORED } public fw_Weapon_PrimaryAttack(ent) { static id; id = pev(ent, pev_owner) if(!g_had_gatling[id]) return pev(id, pev_punchangle, g_punchangles[id]) } public fw_Weapon_PrimaryAttack_Post(ent) { static id; id = pev(ent, pev_owner) if(!g_had_gatling[id]) return static Float:push[3] pev(id, pev_punchangle, push) xs_vec_sub(push, g_punchangles[id], push) xs_vec_mul_scalar(push, RECOIL, push) xs_vec_add(push, g_punchangles[id], push) set_pev(id, pev_punchangle, push) } public update_ammo(id, csw_id, clip, bpammo) { if(!is_user_alive(id)) return message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("CurWeapon"), _, id) write_byte(1) write_byte(csw_id) write_byte(clip) message_end() message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("AmmoX"), _, id) write_byte(3) write_byte(bpammo) message_end() } public Event_Gatling_Shoot(id) { set_weapon_anim(id, random_num(GATLING_ANIM_SHOOT1, GATLING_ANIM_SHOOT2)) emit_sound(id, CHAN_WEAPON, WeaponSound[0], 1.0, ATTN_NORM, 0, PITCH_NORM) } stock fm_cs_get_weapon_ent_owner(ent) { if (pev_valid(ent) != PDATA_SAFE) return -1 return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS) } stock set_weapon_anim(id, anim) { if(!is_user_alive(id)) return set_pev(id, pev_weaponanim, anim) message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id) write_byte(anim) write_byte(0) message_end() } stock drop_weapons(id, dropwhat) { static weapons[32], num, i, weaponid num = 0 get_user_weapons(id, weapons, num) const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_MAC10)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_MAC10)|(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) for (i = 0; i < num; i++) { weaponid = weapons if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) { static wname[32] get_weaponname(weaponid, wname, sizeof wname - 1) engclient_cmd(id, "drop", wname) } } } stock make_bullet(id, Float:Origin[3]) { // Find target new decal = random_num(41, 45) const loop_time = 2 static Body, Target get_user_aiming(id, Target, Body, 999999) if(is_user_connected(Target)) return for(new i = 0; i < loop_time; i++) { // Put decal on "world" (a wall) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_WORLDDECAL) engfunc(EngFunc_WriteCoord, Origin[0]) engfunc(EngFunc_WriteCoord, Origin[1]) engfunc(EngFunc_WriteCoord, Origin[2]) write_byte(decal) message_end() // Show sparcles message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_GUNSHOTDECAL) engfunc(EngFunc_WriteCoord, Origin[0]) engfunc(EngFunc_WriteCoord, Origin[1]) engfunc(EngFunc_WriteCoord, Origin[2]) write_short(id) write_byte(decal) message_end() } } public fake_smoke(id, trace_result) { static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG get_weapon_attachment(id, vecSrc) global_get(glb_v_forward, vecEnd) xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd) xs_vec_add(vecSrc, vecEnd, vecEnd) get_tr2(trace_result, TR_vecEndPos, vecSrc) get_tr2(trace_result, TR_vecPlaneNormal, vecEnd) xs_vec_mul_scalar(vecEnd, 2.5, vecEnd) xs_vec_add(vecSrc, vecEnd, vecEnd) TE_FLAG |= TE_EXPLFLAG_NODLIGHTS TE_FLAG |= TE_EXPLFLAG_NOSOUND TE_FLAG |= TE_EXPLFLAG_NOPARTICLES engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0) write_byte(TE_EXPLOSION) engfunc(EngFunc_WriteCoord, vecEnd[0]) engfunc(EngFunc_WriteCoord, vecEnd[1]) engfunc(EngFunc_WriteCoord, vecEnd[2] - 10.0) write_short(g_smokepuff_id) write_byte(2) write_byte(50) write_byte(TE_FLAG) message_end() } stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0) { new Float:vfEnd[3], viEnd[3] get_user_origin(id, viEnd, 3) IVecFVec(viEnd, vfEnd) new Float:fOrigin[3], Float:fAngle[3] pev(id, pev_origin, fOrigin) pev(id, pev_view_ofs, fAngle) xs_vec_add(fOrigin, fAngle, fOrigin) new Float:fAttack[3] xs_vec_sub(vfEnd, fOrigin, fAttack) xs_vec_sub(vfEnd, fOrigin, fAttack) new Float:fRate fRate = fDis / vector_length(fAttack) xs_vec_mul_scalar(fAttack, fRate, fAttack) xs_vec_add(fOrigin, fAttack, output) } stock create_blood(const Float:origin[3]) { // Show some blood :) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BLOODSPRITE) engfunc(EngFunc_WriteCoord, origin[0]) engfunc(EngFunc_WriteCoord, origin[1]) engfunc(EngFunc_WriteCoord, origin[2]) write_short(m_iBlood[1]) write_short(m_iBlood[0]) write_byte(75) write_byte(5) message_end() }
- Truth
- Membru, skill +1
- Posts: 215
- Joined: 26 Jun 2014, 19:50
- Detinator Steam: Da
- CS Status: I learn ...
- SteamID: Private
- Fond eXtream: 0
- Location: Buzau
- Has thanked: 1 time
- Been thanked: 9 times
*BoOoM* wrote:Deci nu stiu cum sa adaug arme pe native intr-un plugin..(Weapons Menu)
Deci ce bag aici?Aici?
- Partea 1 | Afiseaza codul
////// ---- || Native || ---- /////// //Credits native fcs_get_user_credits(client); native fcs_set_user_credits(client, credits); native give_weapon_balrogIII(id); native remove_weapon_balrogIII(id); native set_user_speargun(id, speargun); native get_salamander ( id ); native remove_salamnader ( id ); native give_ethereal_wpn( id ); native give_weapon_janus3( id ); native give_compound_bow( id ); native give_weapon_aeolis( id ); native remove_weapon_aeolis( id );Dar aici?
- Partea 2 | Afiseaza codul
public SpawnCmd( id ) { if(is_valid_player(id) && is_user_alive(id)) { AlreadyChoose[ id ] = false; remove_weapon_balrogIII(id); set_user_speargun(id, false); remove_at4 ( id ); remove_salamnader ( id ); set_user_ak47knife(id, false); set_user_skull1(id, false); set_user_k1ases(id, false); remove_weapon_aeolis( id ); if(get_user_team(id) == 2) { WeaponsMenuCmd(id) } } }Dar aici?
- Partea 3 | Afiseaza codul
public WeaponsMenu( id ) { new WeaponsCSOMenu = menu_create( "\yFurien.\rDevilz\y.Ro\w Weapons", "FurienWeaponsHandler" ) new iCredits = fcs_get_user_credits( id ); menu_additem( WeaponsCSOMenu, "\wArme\r Playeri", "1", 0 ) menu_additem( WeaponsCSOMenu, "\wArme\r V.I.P", "2", 0 ) if(is_user_connected(id)) { if( iCredits < get_pcvar_num( cost_balrogIII ) ) { menu_additem( WeaponsCSOMenu, "\yBalrog \rIII\y - \d[ No Credits ]", "4", 0 ) } else if( iCredits >= get_pcvar_num( cost_balrogIII ) ) { new Weapon[ 101]; formatex(Weapon,100, "\yBalrog \rIII\y - [ \r%d Credits\y ]", get_pcvar_num( cost_balrogIII ) ); menu_additem( WeaponsCSOMenu, Weapon, "4", 0 ) } } if(is_user_connected(id)) { if( iCredits < get_pcvar_num( cost_spear ) ) { menu_additem( WeaponsCSOMenu, "\ySpear \rGun\y - \d[ No Credits ]", "5", 0 ) } else if( iCredits >= get_pcvar_num( cost_spear ) ) { new Weapon[ 101]; formatex(Weapon,100, "\ySpear \rGun\y - [ \r%d Credits\y ]", get_pcvar_num( cost_spear ) ); menu_additem( WeaponsCSOMenu, Weapon, "5", 0 ) } } menu_setprop( WeaponsCSOMenu, MPROP_EXIT, MEXIT_ALL ) menu_display( id, WeaponsCSOMenu, 0 ) }Armele sunt:
- Partea 4 | Afiseaza codul
public FurienWeaponsHandler( id, WeaponsCSOMenu, item ) { if ( get_user_team ( id ) != 2 ) return 1; if( item == MENU_EXIT ) { menu_destroy( WeaponsCSOMenu ) return PLUGIN_HANDLED } switch( item ) { case 0 : { ArmeNormale( id ) } case 1 : { if( get_user_flags( id ) & VIP_FLAG ) { ArmeVIP( id ) } else { ColorChat( id, "^x04[Furien.Devilz.Ro-CSO]^x01 Aceste arme sunt numai pentru^x04 V.I.P" ); WeaponsMenuCmd(id) return 1; } } case 2 : { new iCredits = fcs_get_user_credits(id) - get_pcvar_num( cost_balrogIII ); if( iCredits < 0 ) { ColorChat ( id, "^x04[Furien.Devilz.Ro-CSO]^x01 Nu ai suficiente^x04 credite." ); WeaponsMenuCmd(id) return 1; } else { give_weapon_balrogIII(id); SecondaryWeapons( id ); fcs_set_user_credits ( id, iCredits ); AlreadyChoose[ id ] = true; ColorChat ( id, "^x04[Furien.Devilz.Ro-CSO]^x01 Ai cumparat^x04 Balrog III." ); } } case 3 : { new iCredits = fcs_get_user_credits(id) - get_pcvar_num( cost_spear ); if( iCredits < 0 ) { ColorChat ( id, "^x04[Furien.Devilz.Ro-CSO]^x01 Nu ai suficiente^x04 credite." ); WeaponsMenuCmd(id) return 1; } else { set_user_speargun(id, true); SecondaryWeapons( id ); fcs_set_user_credits ( id, iCredits ); AlreadyChoose[ id ] = true; ColorChat ( id, "^x04[Furien.Devilz.Ro-CSO]^x01 Ai cumparat^x04 Spear GUN." ); } } } menu_destroy( WeaponsCSOMenu ) return PLUGIN_HANDLED }
- Balrog11 | Afiseaza codul
#include <amxmodx> #include <fakemeta> #include <fakemeta_util> #include <hamsandwich> #include <cstrike> #define PLUGIN "Balrog-XI" #define VERSION "1.0" #define AUTHOR "Dias" #define V_MODEL "models/v_balrog11_2.mdl" #define P_MODEL "models/p_balrog11.mdl" #define W_MODEL "models/w_balrog11.mdl" #define CSW_BALROG11 CSW_XM1014 #define weapon_balrog11 "weapon_xm1014" #define OLD_W_MODEL "models/w_xm1014.mdl" #define OLD_EVENT "events/xm1014.sc" #define WEAPON_SECRETCODE 1982 #define DRAW_TIME 1.0 #define DAMAGE 35 #define FIRE_DAMAGE 100 #define BPAMMO 200 #define CHARGE_COND_AMMO 4 #define MAX_SPECIAL_AMMO 11 #define SPECIALSHOOT_DELAY 0.20 #define FIRE_SPEED 750 #define FIRE_CLASSNAME "balrog11_fire" #define SYSTEM_CLASSNAME "balrog11_firesystem" // OFFSET const PDATA_SAFE = 2 const OFFSET_LINUX_WEAPONS = 4 const OFFSET_WEAPONOWNER = 41 const m_flNextAttack = 83 const m_flNextPrimaryAttack = 46 const m_flNextSecondaryAttack = 47 // Weapon bitsums const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90) const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE) new const WeaponSounds[5][] = { "weapons/balrog11-1.wav", "weapons/balrog11-2.wav", "weapons/balrog11_draw.wav", "weapons/balrog11_insert.wav", "weapons/balrog11_charge.wav" } new const WeaponResources[4][] = { "sprites/flame_puff01.spr", "sprites/weapon_balrog11.txt", "sprites/640hud3_2.spr", "sprites/640hud89_2.spr" } enum { B11_ANIM_IDLE = 0, B11_ANIM_SHOOT, B11_ANIM_SHOOT_SPECIAL, B11_ANIM_INSERT, B11_ANIM_AFTER_RELOAD, B11_ANIM_START_RELOAD, B11_ANIM_DRAW } new g_had_balrog11[33], g_holding_attack[33], g_Shoot_Count[33], g_SpecialAmmo[33] new g_old_weapon[33], g_event_balrog11, g_Msg_StatusIcon, g_smokepuff_id, g_ham_bot public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event("CurWeapon", "Event_CurWeapon", "be", "1=1") register_forward(FM_Think, "fw_Think") register_forward(FM_Touch, "fw_Touch") register_forward(FM_CmdStart, "fw_CmdStart") register_forward(FM_SetModel, "fw_SetModel") register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1) register_forward(FM_PlaybackEvent, "fw_PlaybackEvent") RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack") RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack") RegisterHam(Ham_Item_AddToPlayer, weapon_balrog11, "fw_Item_AddToPlayer_Post", 1) RegisterHam(Ham_Item_PostFrame, weapon_balrog11, "fw_Item_PostFrame") RegisterHam(Ham_Item_Deploy, weapon_balrog11, "fw_Item_Deploy_Post", 1) g_Msg_StatusIcon = get_user_msgid("StatusIcon") register_clcmd("admin_get_balrog11", "Get_Balrog11", ADMIN_BAN) register_clcmd("weapon_balrog11", "hook_weapon") } public plugin_precache() { engfunc(EngFunc_PrecacheModel, V_MODEL) engfunc(EngFunc_PrecacheModel, P_MODEL) engfunc(EngFunc_PrecacheModel, W_MODEL) new i for(i = 0; i < sizeof(WeaponSounds); i++) engfunc(EngFunc_PrecacheSound, WeaponSounds) for(i = 0; i < sizeof(WeaponResources); i++) { if(i == 1) engfunc(EngFunc_PrecacheGeneric, WeaponResources) else engfunc(EngFunc_PrecacheModel, WeaponResources) } register_forward(FM_PrecacheEvent, "fw_PrecacheEvent_Post", 1) g_smokepuff_id = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr") } public client_putinserver(id) { if(!g_ham_bot && is_user_bot(id)) { g_ham_bot = 1 set_task(0.1, "do_register", id) } } public plugin_natives () { register_native("give_weapon_balrog11", "native_give_weapon_add", 1) } public native_give_weapon_add(id) { Get_Balrog11(id) } public do_register(id) { RegisterHamFromEntity(Ham_TraceAttack, id, "fw_TraceAttack") } public fw_PrecacheEvent_Post(type, const name[]) { if(equal(OLD_EVENT, name)) g_event_balrog11 = get_orig_retval() } public Get_Balrog11(id) { if(!is_user_alive(id)) return drop_weapons(id, 1) Remove_Balrog11(id) g_had_balrog11[id] = 1 g_old_weapon[id] = 0 g_holding_attack[id] = 0 g_Shoot_Count[id] = 0 g_SpecialAmmo[id] = 0 fm_give_item(id, weapon_balrog11) cs_set_user_bpammo(id, CSW_BALROG11, BPAMMO) update_ammo(id) update_specialammo(id, g_SpecialAmmo[id], g_SpecialAmmo[id] > 0 ? 1 : 0) } public Remove_Balrog11(id) { if(!is_user_connected(id)) return update_specialammo(id, g_SpecialAmmo[id], 0) g_had_balrog11[id] = 0 g_old_weapon[id] = 0 g_holding_attack[id] = 0 g_Shoot_Count[id] = 0 g_SpecialAmmo[id] = 0 } public hook_weapon(id) { engclient_cmd(id, weapon_balrog11) return PLUGIN_HANDLED } public Event_CurWeapon(id) { if(!is_user_alive(id)) return if(g_had_balrog11[id] && (get_user_weapon(id) == CSW_BALROG11 && g_old_weapon[id] != CSW_BALROG11)) { // Balrog Draw set_weapon_anim(id, B11_ANIM_DRAW) set_player_nextattack(id, DRAW_TIME) update_specialammo(id, g_SpecialAmmo[id], g_SpecialAmmo[id] > 0 ? 1 : 0) } else if(get_user_weapon(id) != CSW_BALROG11 && g_old_weapon[id] == CSW_BALROG11) { update_specialammo(id, g_SpecialAmmo[id], 0) } g_old_weapon[id] = get_user_weapon(id) } public fw_CmdStart(id, uc_handle, seed) { if(!is_user_alive(id)) return if(get_user_weapon(id) != CSW_BALROG11 || !g_had_balrog11[id]) return static NewButton; NewButton = get_uc(uc_handle, UC_Buttons) static OldButton; OldButton = pev(id, pev_oldbuttons) if(NewButton & IN_ATTACK) { if(!g_holding_attack[id]) g_holding_attack[id] = 1 } else if(NewButton & IN_ATTACK2) { SpecialShoot_Handle(id) } else { if(OldButton & IN_ATTACK) { if(g_holding_attack[id]) { g_holding_attack[id] = 0 g_Shoot_Count[id] = 0 } } } } public fw_SetModel(entity, model[]) { if(!pev_valid(entity)) return FMRES_IGNORED static Classname[64] pev(entity, pev_classname, Classname, sizeof(Classname)) if(!equal(Classname, "weaponbox")) return FMRES_IGNORED static id id = pev(entity, pev_owner) if(equal(model, OLD_W_MODEL)) { static weapon weapon = fm_get_user_weapon_entity(entity, CSW_BALROG11) if(!pev_valid(weapon)) return FMRES_IGNORED if(g_had_balrog11[id]) { set_pev(weapon, pev_impulse, WEAPON_SECRETCODE) set_pev(weapon, pev_iuser4, g_SpecialAmmo[id]) engfunc(EngFunc_SetModel, entity, W_MODEL) Remove_Balrog11(id) return FMRES_SUPERCEDE } } return FMRES_IGNORED; } public fw_UpdateClientData_Post(id, sendweapons, cd_handle) { if(!is_user_alive(id) || !is_user_connected(id)) return FMRES_IGNORED if(get_user_weapon(id) == CSW_BALROG11 && g_had_balrog11[id]) set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001) return FMRES_HANDLED } public fw_PlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2) { if (!is_user_connected(invoker)) return FMRES_IGNORED if(get_user_weapon(invoker) == CSW_BALROG11 && g_had_balrog11[invoker] && eventid == g_event_balrog11) { engfunc(EngFunc_PlaybackEvent, flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2) if(g_holding_attack[invoker]) g_Shoot_Count[invoker]++ else g_Shoot_Count[invoker] = 0 if(g_Shoot_Count[invoker] >= CHARGE_COND_AMMO) { g_Shoot_Count[invoker] = 0 if(g_SpecialAmmo[invoker] < MAX_SPECIAL_AMMO) { update_specialammo(invoker, g_SpecialAmmo[invoker], 0) g_SpecialAmmo[invoker]++ update_specialammo(invoker, g_SpecialAmmo[invoker], 1) emit_sound(invoker, CHAN_ITEM, WeaponSounds[4], 1.0, ATTN_NORM, 0, PITCH_NORM) } } set_weapon_anim(invoker, B11_ANIM_SHOOT) emit_sound(invoker, CHAN_WEAPON, WeaponSounds[0], 1.0, ATTN_NORM, 0, PITCH_NORM) return FMRES_SUPERCEDE } return FMRES_HANDLED } public fw_Think(ent) { if(!pev_valid(ent)) return static Classname[32]; pev(ent, pev_classname, Classname, sizeof(Classname)) if(equal(Classname, FIRE_CLASSNAME)) { static Float:fFrame; pev(ent, pev_frame, fFrame) fFrame += 1.5 fFrame = floatmin(21.0, fFrame) set_pev(ent, pev_frame, fFrame) set_pev(ent, pev_nextthink, get_gametime() + 0.05) // time remove static Float:fTimeRemove, Float:Amount pev(ent, pev_fuser1, fTimeRemove) pev(ent, pev_renderamt, Amount) if(get_gametime() >= fTimeRemove) { Amount -= 10.0 set_pev(ent, pev_renderamt, Amount) if(Amount <= 15.0) engfunc(EngFunc_RemoveEntity, ent) } } else if(equal(Classname, SYSTEM_CLASSNAME)) { static Float:Origin[3], Float:Scale pev(ent, pev_origin, Origin) pev(ent, pev_scale, Scale) Scale += 0.1 Scale = floatmin(1.5, Scale) set_pev(ent, pev_scale, Scale) Create_Fire(pev(ent, pev_owner), Origin, Scale, 0.0) set_pev(ent, pev_nextthink, get_gametime() + 0.05) // time remove static Float:fTimeRemove pev(ent, pev_fuser1, fTimeRemove) if(get_gametime() >= fTimeRemove) engfunc(EngFunc_RemoveEntity, ent) } } public fw_Touch(ent, id) { if(!pev_valid(ent)) return static Classname[32] pev(ent, pev_classname, Classname, sizeof(Classname)) if(!equal(Classname, SYSTEM_CLASSNAME)) return if(pev_valid(id)) { static Classname2[32] pev(id, pev_classname, Classname2, sizeof(Classname2)) if(equal(Classname2, SYSTEM_CLASSNAME) || equal(Classname2, FIRE_CLASSNAME)) return else if(is_user_alive(id)) { if(pev(ent, pev_iuser3) == 1 && cs_get_user_team(id) != CS_TEAM_T) ExecuteHamB(Ham_TakeDamage, id, 0, pev(ent, pev_owner), float(FIRE_DAMAGE) / random_float(3.0, 5.0), DMG_BULLET) else if(pev(ent, pev_iuser3) == 2 && cs_get_user_team(id) != CS_TEAM_CT) ExecuteHamB(Ham_TakeDamage, id, 0, pev(ent, pev_owner), float(FIRE_DAMAGE) / random_float(3.0, 5.0), DMG_BULLET) return } } set_pev(ent, pev_movetype, MOVETYPE_NONE) set_pev(ent, pev_solid, SOLID_NOT) } public fw_TraceAttack(Ent, Attacker, Float:Damage, Float:Dir[3], pentru, DamageType) { if(!is_user_alive(Attacker)) return HAM_IGNORED if(get_user_weapon(Attacker) != CSW_BALROG11 || !g_had_balrog11[Attacker]) return HAM_IGNORED static Float:flEnd[3], Float:vecPlane[3] get_tr2(pentru, TR_vecEndPos, flEnd) get_tr2(pentru, TR_vecPlaneNormal, vecPlane) if(!is_user_alive(Ent)) { make_bullet(Attacker, flEnd) fake_smoke(Attacker, pentru) } SetHamParamFloat(3, float(DAMAGE) / random_float(1.5, 2.5)) return HAM_HANDLED } public fw_Item_AddToPlayer_Post(ent, id) { if(pev(ent, pev_impulse) == WEAPON_SECRETCODE) { g_had_balrog11[id] = 1 set_pev(ent, pev_impulse, 0) g_SpecialAmmo[id] = pev(ent, pev_iuser4) } message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("WeaponList"), _, id) write_string((g_had_balrog11[id] == 1 ? "weapon_balrog11" : "weapon_xm1014")) write_byte(5) write_byte(32) write_byte(-1) write_byte(-1) write_byte(0) write_byte(12) write_byte(CSW_BALROG11) write_byte(0) message_end() } public fw_Item_PostFrame(ent) { static id; id = fm_cs_get_weapon_ent_owner(ent) if (!pev_valid(id)) return if(!g_had_balrog11[id]) return if(get_pdata_int(ent, 55, OFFSET_LINUX_WEAPONS) == 1) set_weapon_anim(id, B11_ANIM_INSERT) } public fw_Item_Deploy_Post(ent) { static id; id = fm_cs_get_weapon_ent_owner(ent) if (!pev_valid(id)) return if(!g_had_balrog11[id]) return set_pev(id, pev_viewmodel2, V_MODEL) set_pev(id, pev_weaponmodel2, P_MODEL) } public update_ammo(id) { if(!is_user_alive(id)) return static weapon_ent; weapon_ent = fm_get_user_weapon_entity(id, CSW_BALROG11) if(!pev_valid(weapon_ent)) return engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, get_user_msgid("CurWeapon"), {0, 0, 0}, id) write_byte(1) write_byte(CSW_BALROG11) write_byte(cs_get_weapon_ammo(weapon_ent)) message_end() message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("AmmoX"), _, id) write_byte(1) write_byte(cs_get_user_bpammo(id, CSW_BALROG11)) message_end() } public update_specialammo(id, Ammo, On) { static AmmoSprites[33] format(AmmoSprites, sizeof(AmmoSprites), "number_%d", Ammo) message_begin(MSG_ONE_UNRELIABLE, g_Msg_StatusIcon, {0,0,0}, id) write_byte(On) write_string(AmmoSprites) write_byte(42) // red write_byte(212) // green write_byte(255) // blue message_end() } public SpecialShoot_Handle(id) { if(get_pdata_float(id, 83, 5) > 0.0) return if(g_SpecialAmmo[id] <= 0) return create_fake_attack(id) // Shoot Handle set_player_nextattack(id, SPECIALSHOOT_DELAY) set_weapons_timeidle(id, CSW_BALROG11, SPECIALSHOOT_DELAY) update_specialammo(id, g_SpecialAmmo[id], 0) g_SpecialAmmo[id]-- update_specialammo(id, g_SpecialAmmo[id], g_SpecialAmmo[id] > 0 ? 1 : 0) set_weapon_anim(id, B11_ANIM_SHOOT_SPECIAL) emit_sound(id, CHAN_WEAPON, WeaponSounds[1], 1.0, ATTN_NORM, 0, PITCH_NORM) Create_FireSystem(id) } public create_fake_attack(id) { static weapon weapon = fm_find_ent_by_owner(-1, "weapon_knife", id) if(pev_valid(weapon)) ExecuteHamB(Ham_Weapon_PrimaryAttack, weapon) } public Create_FireSystem(id) { static Float:StartOrigin[3], Float:EndOrigin[5][3] get_weapon_attachment(id, StartOrigin, 40.0) // Left get_position(id, 512.0, -140.0, 0.0, EndOrigin[0]) get_position(id, 512.0, -70.0, 0.0, EndOrigin[1]) // Center get_position(id, 512.0, 0.0, 0.0, EndOrigin[2]) // Right get_position(id, 512.0, 70.0, 0.0, EndOrigin[3]) get_position(id, 512.0, 140.0, 0.0, EndOrigin[4]) // Create Fire for(new i = 0; i < 5; i++) Create_System(id, StartOrigin, EndOrigin, float(FIRE_SPEED)) } public Create_System(id, Float:StartOrigin[3], Float:EndOrigin[3], Float:Speed) { static Ent; Ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite")) // set info for ent set_pev(Ent, pev_movetype, MOVETYPE_FLY) set_pev(Ent, pev_rendermode, kRenderTransAdd) set_pev(Ent, pev_renderamt, 0.0) set_pev(Ent, pev_fuser1, get_gametime() + 0.75) // time remove set_pev(Ent, pev_scale, 0.1) set_pev(Ent, pev_nextthink, get_gametime() + 0.05) set_pev(Ent, pev_classname, SYSTEM_CLASSNAME) engfunc(EngFunc_SetModel, Ent, WeaponResources[0]) set_pev(Ent, pev_mins, Float:{-16.0, -16.0, -16.0}) set_pev(Ent, pev_maxs, Float:{16.0, 16.0, 16.0}) set_pev(Ent, pev_origin, StartOrigin) set_pev(Ent, pev_gravity, 0.01) set_pev(Ent, pev_solid, SOLID_TRIGGER) set_pev(Ent, pev_owner, id) static Team; if(cs_get_user_team(id) == CS_TEAM_T) Team = 1 else if(cs_get_user_team(id) == CS_TEAM_CT) Team = 2 set_pev(Ent, pev_iuser3, Team) set_pev(Ent, pev_frame, 0.0) static Float:Velocity[3] get_speed_vector(StartOrigin, EndOrigin, Speed, Velocity) set_pev(Ent, pev_velocity, Velocity) } public Create_Fire(id, Float:Origin[3], Float:Scale, Float:Frame) { static Ent; Ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite")) // set info for ent set_pev(Ent, pev_movetype, MOVETYPE_FLY) set_pev(Ent, pev_rendermode, kRenderTransAdd) set_pev(Ent, pev_renderamt, 255.0) set_pev(Ent, pev_fuser1, get_gametime() + 0.1) // time remove set_pev(Ent, pev_scale, Scale) set_pev(Ent, pev_nextthink, get_gametime() + 0.05) set_pev(Ent, pev_classname, FIRE_CLASSNAME) engfunc(EngFunc_SetModel, Ent, WeaponResources[0]) set_pev(Ent, pev_mins, Float:{-10.0, -10.0, -10.0}) set_pev(Ent, pev_maxs, Float:{10.0, 10.0, 10.0}) set_pev(Ent, pev_origin, Origin) set_pev(Ent, pev_gravity, 0.01) set_pev(Ent, pev_solid, SOLID_TRIGGER) set_pev(Ent, pev_owner, id) set_pev(Ent, pev_frame, Frame) } stock make_bullet(id, Float:Origin[3]) { // Find target new decal = random_num(41, 45) const loop_time = 2 static Body, Target get_user_aiming(id, Target, Body, 999999) if(is_user_connected(Target)) return for(new i = 0; i < loop_time; i++) { // Put decal on "world" (a wall) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_WORLDDECAL) engfunc(EngFunc_WriteCoord, Origin[0]) engfunc(EngFunc_WriteCoord, Origin[1]) engfunc(EngFunc_WriteCoord, Origin[2]) write_byte(decal) message_end() // Show sparcles message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_GUNSHOTDECAL) engfunc(EngFunc_WriteCoord, Origin[0]) engfunc(EngFunc_WriteCoord, Origin[1]) engfunc(EngFunc_WriteCoord, Origin[2]) write_short(id) write_byte(decal) message_end() } } stock fake_smoke(id, trace_result) { static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG get_weapon_attachment(id, vecSrc) global_get(glb_v_forward, vecEnd) xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd) xs_vec_add(vecSrc, vecEnd, vecEnd) get_tr2(trace_result, TR_vecEndPos, vecSrc) get_tr2(trace_result, TR_vecPlaneNormal, vecEnd) xs_vec_mul_scalar(vecEnd, 2.5, vecEnd) xs_vec_add(vecSrc, vecEnd, vecEnd) TE_FLAG |= TE_EXPLFLAG_NODLIGHTS TE_FLAG |= TE_EXPLFLAG_NOSOUND TE_FLAG |= TE_EXPLFLAG_NOPARTICLES engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0) write_byte(TE_EXPLOSION) engfunc(EngFunc_WriteCoord, vecEnd[0]) engfunc(EngFunc_WriteCoord, vecEnd[1]) engfunc(EngFunc_WriteCoord, vecEnd[2] - 10.0) write_short(g_smokepuff_id) write_byte(2) write_byte(50) write_byte(TE_FLAG) message_end() } stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0) { new Float:vfEnd[3], viEnd[3] get_user_origin(id, viEnd, 3) IVecFVec(viEnd, vfEnd) new Float:fOrigin[3], Float:fAngle[3] pev(id, pev_origin, fOrigin) pev(id, pev_view_ofs, fAngle) xs_vec_add(fOrigin, fAngle, fOrigin) new Float:fAttack[3] xs_vec_sub(vfEnd, fOrigin, fAttack) xs_vec_sub(vfEnd, fOrigin, fAttack) new Float:fRate fRate = fDis / vector_length(fAttack) xs_vec_mul_scalar(fAttack, fRate, fAttack) xs_vec_add(fOrigin, fAttack, output) } stock set_weapon_anim(id, anim) { if(!is_user_alive(id)) return set_pev(id, pev_weaponanim, anim) message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id) write_byte(anim) write_byte(0) message_end() } stock fm_cs_get_weapon_ent_owner(ent) { if (pev_valid(ent) != PDATA_SAFE) return -1 return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS) } stock set_player_nextattack(id, Float:nexttime) { if(!is_user_alive(id)) return set_pdata_float(id, m_flNextAttack, nexttime, 5) } stock set_weapons_timeidle(id, WeaponId ,Float:TimeIdle) { if(!is_user_alive(id)) return static entwpn; entwpn = fm_get_user_weapon_entity(id, WeaponId) if(!pev_valid(entwpn)) return set_pdata_float(entwpn, 46, TimeIdle, OFFSET_LINUX_WEAPONS) set_pdata_float(entwpn, 47, TimeIdle, OFFSET_LINUX_WEAPONS) set_pdata_float(entwpn, 48, TimeIdle + 0.5, OFFSET_LINUX_WEAPONS) } stock get_position(id,Float:forw, Float:right, Float:up, Float:vStart[]) { static Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3] pev(id, pev_origin, vOrigin) pev(id, pev_view_ofs, vUp) //for player xs_vec_add(vOrigin, vUp, vOrigin) pev(id, pev_v_angle, vAngle) // if normal entity ,use pev_angles angle_vector(vAngle,ANGLEVECTOR_FORWARD, vForward) //or use EngFunc_AngleVectors angle_vector(vAngle,ANGLEVECTOR_RIGHT, vRight) angle_vector(vAngle,ANGLEVECTOR_UP, vUp) vStart[0] = vOrigin[0] + vForward[0] * forw + vRight[0] * right + vUp[0] * up vStart[1] = vOrigin[1] + vForward[1] * forw + vRight[1] * right + vUp[1] * up vStart[2] = vOrigin[2] + vForward[2] * forw + vRight[2] * right + vUp[2] * up } stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3]) { new_velocity[0] = origin2[0] - origin1[0] new_velocity[1] = origin2[1] - origin1[1] new_velocity[2] = origin2[2] - origin1[2] new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2])) new_velocity[0] *= num new_velocity[1] *= num new_velocity[2] *= num return 1; } // Drop primary/secondary weapons stock drop_weapons(id, dropwhat) { // Get user weapons static weapons[32], num, i, weaponid num = 0 // reset passed weapons count (bugfix) get_user_weapons(id, weapons, num) // Loop through them and drop primaries or secondaries for (i = 0; i < num; i++) { // Prevent re-indexing the array weaponid = weapons if ((dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) || (dropwhat == 2 && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM))) { // Get weapon entity static wname[32] get_weaponname(weaponid, wname, charsmax(wname)) // Player drops the weapon and looses his bpammo engclient_cmd(id, "drop", wname) cs_set_user_bpammo(id, weaponid, 0) } } } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par } */
- Gatling | Afiseaza codul
#include <amxmodx> #include <fakemeta> #include <fakemeta_util> #include <hamsandwich> #include <cstrike> #define PLUGIN "Gatling (Volcano)" #define VERSION "1.0" #define AUTHOR "Dias" #define CSW_GATLING CSW_M3 #define weapon_gatling "weapon_m3" #define WEAPON_ANIMEXT "m249" #define DEFAULT_W_MODEL "models/w_m3.mdl" #define WEAPON_SECRET_CODE 1942 #define old_event "events/m3.sc" #define DAMAGE 30 #define SPEED 0.25 #define RECOIL 0.5 #define RELOAD_TIME 4.5 #define DEFAULT_CLIP 45 #define DEFAULT_BPAMMO 300 new const WeaponModel[3][] = { "models/v_gatling.mdl", // V "models/p_gatling.mdl", // P "models/w_gatling.mdl" // W } new const WeaponSound[7][] = { "weapons/gatling-1.wav", "weapons/gatling_boltpull.wav", "weapons/gatling_clipin1.wav", "weapons/gatling_clipin2.wav", "weapons/gatling_clipout1.wav", "weapons/gatling_clipout2.wav", "weapons/usas_draw.wav" } new const WeaponResource[4][] = { "sprites/weapon_gatling.txt", "sprites/640hud7_2.spr", "sprites/640hud55_2.spr", "sprites/640hud56_2.spr" } enum { GATLING_ANIM_IDLE = 0, GATLING_ANIM_SHOOT1, GATLING_ANIM_SHOOT2, GATLING_ANIM_RELOAD, GATLING_ANIM_DRAW } const PDATA_SAFE = 2 const OFFSET_LINUX_WEAPONS = 4 const OFFSET_LINUX_PLAYER = 5 const OFFSET_WEAPONOWNER = 41 const m_iClip = 51 const m_fInReload = 54 const m_flNextAttack = 83 const m_szAnimExtention = 492 new g_had_gatling[33], Float:g_punchangles[33][3], g_gatling_event, g_smokepuff_id, m_iBlood[2], g_ham_bot public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event("CurWeapon", "Event_CurWeapon", "be", "1=1") register_forward(FM_CmdStart, "fw_CmdStart") register_forward(FM_SetModel, "fw_SetModel") register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1) register_forward(FM_PlaybackEvent, "fw_PlaybackEvent") RegisterHam(Ham_TraceAttack, "worldspawn", "fw_TraceAttack") RegisterHam(Ham_TraceAttack, "player", "fw_TraceAttack") RegisterHam(Ham_Item_Deploy, weapon_gatling, "fw_Item_Deploy_Post", 1) RegisterHam(Ham_Weapon_Reload, weapon_gatling, "fw_Weapon_Reload_Post", 1) RegisterHam(Ham_Item_PostFrame, weapon_gatling, "fw_Item_PostFrame") RegisterHam(Ham_Item_AddToPlayer, weapon_gatling, "fw_Item_AddToPlayer_Post", 1) RegisterHam(Ham_Weapon_PrimaryAttack, weapon_gatling, "fw_Weapon_PrimaryAttack") RegisterHam(Ham_Weapon_PrimaryAttack, weapon_gatling, "fw_Weapon_PrimaryAttack_Post", 1) register_clcmd("weapon_gatling", "hook_weapon") register_clcmd("admin_get_gatling", "get_gatling", ADMIN_BAN) } public plugin_precache() { new i for(i = 0; i < sizeof(WeaponModel); i++) engfunc(EngFunc_PrecacheModel, WeaponModel) for(i = 0; i < sizeof(WeaponSound); i++) engfunc(EngFunc_PrecacheSound, WeaponSound) for(new i = 0; i < sizeof(WeaponResource); i++) { if(i == 0) engfunc(EngFunc_PrecacheGeneric, WeaponResource) else engfunc(EngFunc_PrecacheModel, WeaponResource) } g_smokepuff_id = engfunc(EngFunc_PrecacheModel, "sprites/wall_puff1.spr") m_iBlood[0] = engfunc(EngFunc_PrecacheModel, "sprites/blood.spr") m_iBlood[1] = engfunc(EngFunc_PrecacheModel, "sprites/bloodspray.spr") register_forward(FM_PrecacheEvent, "fw_PrecacheEvent_Post", 1) } public plugin_natives() { register_native("give_weapon_gatling", "native_give_weapon_add", 1) } public native_give_weapon_add(id) { get_gatling(id) } public fw_PrecacheEvent_Post(type, const name[]) { if(equal(old_event, name)) g_gatling_event = get_orig_retval() } public client_putinserver(id) { if(is_user_bot(id) && !g_ham_bot) { g_ham_bot = 1 set_task(0.1, "Do_Register_Ham", id) } } public Do_Register_Ham(id) { RegisterHamFromEntity(Ham_TraceAttack, id, "fw_TraceAttack") } public get_gatling(id) { if(!is_user_alive(id)) return drop_weapons(id, 1) g_had_gatling[id] = 1 fm_give_item(id, weapon_gatling) // Set Clip static ent; ent = fm_get_user_weapon_entity(id, CSW_GATLING) if(pev_valid(ent)) cs_set_weapon_ammo(ent, DEFAULT_CLIP) // Set BpAmmo cs_set_user_bpammo(id, CSW_GATLING, DEFAULT_BPAMMO) // Update Ammo update_ammo(id, CSW_GATLING, DEFAULT_CLIP, DEFAULT_BPAMMO) } public remove_gatling(id) { g_had_gatling[id] = 0 } public hook_weapon(id) { client_cmd(id, weapon_gatling) return PLUGIN_HANDLED } public Event_CurWeapon(id) { if(!is_user_alive(id)) return if(get_user_weapon(id) != CSW_GATLING || !g_had_gatling[id]) return // Speed static ent; ent = fm_get_user_weapon_entity(id, CSW_GATLING) if(!pev_valid(ent)) return set_pdata_float(ent, 46, get_pdata_float(ent, 46, OFFSET_LINUX_WEAPONS) * SPEED, OFFSET_LINUX_WEAPONS) } public fw_CmdStart(id, uc_handle, seed) { if(!is_user_alive(id)) return if(get_user_weapon(id) != CSW_GATLING || !g_had_gatling[id]) return static CurButton; CurButton = get_uc(uc_handle, UC_Buttons) if(CurButton & IN_RELOAD) { CurButton &= ~IN_RELOAD set_uc(uc_handle, UC_Buttons, CurButton) static ent; ent = fm_get_user_weapon_entity(id, CSW_GATLING) if(!pev_valid(ent)) return static fInReload; fInReload = get_pdata_int(ent, m_fInReload, OFFSET_LINUX_WEAPONS) static Float:flNextAttack; flNextAttack = get_pdata_float(id, m_flNextAttack, OFFSET_LINUX_PLAYER) if (flNextAttack > 0.0) return if (fInReload) { set_weapon_anim(id, GATLING_ANIM_IDLE) return } if(cs_get_weapon_ammo(ent) >= DEFAULT_CLIP) { set_weapon_anim(id, GATLING_ANIM_IDLE) return } fw_Weapon_Reload_Post(ent) } } public fw_SetModel(entity, model[]) { if(!pev_valid(entity)) return FMRES_IGNORED static szClassName[33] pev(entity, pev_classname, szClassName, charsmax(szClassName)) if(!equal(szClassName, "weaponbox")) return FMRES_IGNORED static id id = pev(entity, pev_owner) if(equal(model, DEFAULT_W_MODEL)) { static weapon weapon = fm_find_ent_by_owner(-1, weapon_gatling, entity) if(!pev_valid(weapon)) return FMRES_IGNORED if(g_had_gatling[id]) { set_pev(weapon, pev_impulse, WEAPON_SECRET_CODE) engfunc(EngFunc_SetModel, entity, WeaponModel[2]) remove_gatling(id) return FMRES_SUPERCEDE } } return FMRES_IGNORED } public fw_TraceAttack(ent, attacker, Float:Damage, Float:fDir[3], pentru, iDamageType) { if(!is_user_alive(attacker)) return HAM_IGNORED if(get_user_weapon(attacker) != CSW_GATLING || !g_had_gatling[attacker]) return HAM_IGNORED if(!is_user_alive(ent)) { static Float:flEnd[3], Float:vecPlane[3] get_tr2(pentru, TR_vecEndPos, flEnd) get_tr2(pentru, TR_vecPlaneNormal, vecPlane) make_bullet(attacker, flEnd) fake_smoke(attacker, pentru) } SetHamParamFloat(3, float(DAMAGE) / random_float(1.5, 2.5)) return HAM_HANDLED } public fw_UpdateClientData_Post(id, sendweapons, cd_handle) { if(!is_user_alive(id) || !is_user_connected(id)) return FMRES_IGNORED if(get_user_weapon(id) != CSW_GATLING || !g_had_gatling[id]) return FMRES_IGNORED set_cd(cd_handle, CD_flNextAttack, get_gametime() + 0.001) return FMRES_HANDLED } public fw_PlaybackEvent(flags, invoker, eventid, Float:delay, Float:origin[3], Float:angles[3], Float:fparam1, Float:fparam2, iParam1, iParam2, bParam1, bParam2) { if(!is_user_connected(invoker)) return FMRES_IGNORED if(get_user_weapon(invoker) == CSW_GATLING && g_had_gatling[invoker] && eventid == g_gatling_event) { engfunc(EngFunc_PlaybackEvent, flags | FEV_HOSTONLY, invoker, eventid, delay, origin, angles, fparam1, fparam2, iParam1, iParam2, bParam1, bParam2) Event_Gatling_Shoot(invoker) return FMRES_SUPERCEDE } return FMRES_HANDLED } public fw_Item_Deploy_Post(ent) { static id; id = fm_cs_get_weapon_ent_owner(ent) if (!pev_valid(id)) return static weaponid weaponid = cs_get_weapon_id(ent) if(weaponid != CSW_GATLING) return if(!g_had_gatling[id]) return set_pev(id, pev_viewmodel2, WeaponModel[0]) set_pev(id, pev_weaponmodel2, WeaponModel[1]) set_weapon_anim(id, GATLING_ANIM_DRAW) set_pdata_string(id, m_szAnimExtention * 4, WEAPON_ANIMEXT, -1 , 20) } public fw_Weapon_Reload_Post(ent) { static id; id = pev(ent, pev_owner) if(g_had_gatling[id]) { static CurBpAmmo; CurBpAmmo = cs_get_user_bpammo(id, CSW_GATLING) if(CurBpAmmo <= 0) return HAM_IGNORED set_pdata_int(ent, 55, 0, OFFSET_LINUX_WEAPONS) set_pdata_float(id, 83, RELOAD_TIME, OFFSET_LINUX_PLAYER) set_pdata_float(ent, 48, RELOAD_TIME + 0.5, OFFSET_LINUX_WEAPONS) set_pdata_float(ent, 46, RELOAD_TIME + 0.25, OFFSET_LINUX_WEAPONS) set_pdata_float(ent, 47, RELOAD_TIME + 0.25, OFFSET_LINUX_WEAPONS) set_pdata_int(ent, m_fInReload, 1, OFFSET_LINUX_WEAPONS) set_weapon_anim(id, GATLING_ANIM_RELOAD) return HAM_HANDLED } return HAM_IGNORED } public fw_Item_PostFrame(ent) { static id; id = pev(ent, pev_owner) if(!g_had_gatling[id]) return static iBpAmmo ; iBpAmmo = get_pdata_int(id, 381, OFFSET_LINUX_PLAYER) static iClip ; iClip = get_pdata_int(ent, m_iClip, OFFSET_LINUX_WEAPONS) static iMaxClip ; iMaxClip = DEFAULT_CLIP if(get_pdata_int(ent, m_fInReload, OFFSET_LINUX_WEAPONS) && get_pdata_float(id, m_flNextAttack, OFFSET_LINUX_PLAYER) <= 0.0) { static j; j = min(iMaxClip - iClip, iBpAmmo) set_pdata_int(ent, m_iClip, iClip + j, OFFSET_LINUX_WEAPONS) set_pdata_int(id, 381, iBpAmmo-j, OFFSET_LINUX_PLAYER) set_pdata_int(ent, m_fInReload, 0, OFFSET_LINUX_WEAPONS) cs_set_weapon_ammo(ent, DEFAULT_CLIP) update_ammo(id, CSW_GATLING, cs_get_weapon_ammo(ent), cs_get_user_bpammo(id, CSW_GATLING)) return } } public fw_Item_AddToPlayer_Post(ent, id) { if(!pev_valid(ent)) return HAM_IGNORED if(pev(ent, pev_impulse) == WEAPON_SECRET_CODE) { remove_gatling(id) g_had_gatling[id] = 1 update_ammo(id, CSW_GATLING, cs_get_weapon_ammo(ent), cs_get_user_bpammo(id, CSW_GATLING)) } message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("WeaponList"), _, id) write_string(g_had_gatling[id] == 1 ? "weapon_gatling" : "weapon_m3") write_byte(5) write_byte(200) write_byte(-1) write_byte(-1) write_byte(0) write_byte(5) write_byte(g_had_gatling[id] == 1 ? CSW_GATLING : CSW_M3) write_byte(0) message_end() return HAM_IGNORED } public fw_Weapon_PrimaryAttack(ent) { static id; id = pev(ent, pev_owner) if(!g_had_gatling[id]) return pev(id, pev_punchangle, g_punchangles[id]) } public fw_Weapon_PrimaryAttack_Post(ent) { static id; id = pev(ent, pev_owner) if(!g_had_gatling[id]) return static Float:push[3] pev(id, pev_punchangle, push) xs_vec_sub(push, g_punchangles[id], push) xs_vec_mul_scalar(push, RECOIL, push) xs_vec_add(push, g_punchangles[id], push) set_pev(id, pev_punchangle, push) } public update_ammo(id, csw_id, clip, bpammo) { if(!is_user_alive(id)) return message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("CurWeapon"), _, id) write_byte(1) write_byte(csw_id) write_byte(clip) message_end() message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("AmmoX"), _, id) write_byte(3) write_byte(bpammo) message_end() } public Event_Gatling_Shoot(id) { set_weapon_anim(id, random_num(GATLING_ANIM_SHOOT1, GATLING_ANIM_SHOOT2)) emit_sound(id, CHAN_WEAPON, WeaponSound[0], 1.0, ATTN_NORM, 0, PITCH_NORM) } stock fm_cs_get_weapon_ent_owner(ent) { if (pev_valid(ent) != PDATA_SAFE) return -1 return get_pdata_cbase(ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS) } stock set_weapon_anim(id, anim) { if(!is_user_alive(id)) return set_pev(id, pev_weaponanim, anim) message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id) write_byte(anim) write_byte(0) message_end() } stock drop_weapons(id, dropwhat) { static weapons[32], num, i, weaponid num = 0 get_user_weapons(id, weapons, num) const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_MAC10)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_MAC10)|(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) for (i = 0; i < num; i++) { weaponid = weapons if (dropwhat == 1 && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM)) { static wname[32] get_weaponname(weaponid, wname, sizeof wname - 1) engclient_cmd(id, "drop", wname) } } } stock make_bullet(id, Float:Origin[3]) { // Find target new decal = random_num(41, 45) const loop_time = 2 static Body, Target get_user_aiming(id, Target, Body, 999999) if(is_user_connected(Target)) return for(new i = 0; i < loop_time; i++) { // Put decal on "world" (a wall) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_WORLDDECAL) engfunc(EngFunc_WriteCoord, Origin[0]) engfunc(EngFunc_WriteCoord, Origin[1]) engfunc(EngFunc_WriteCoord, Origin[2]) write_byte(decal) message_end() // Show sparcles message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_GUNSHOTDECAL) engfunc(EngFunc_WriteCoord, Origin[0]) engfunc(EngFunc_WriteCoord, Origin[1]) engfunc(EngFunc_WriteCoord, Origin[2]) write_short(id) write_byte(decal) message_end() } } public fake_smoke(id, trace_result) { static Float:vecSrc[3], Float:vecEnd[3], TE_FLAG get_weapon_attachment(id, vecSrc) global_get(glb_v_forward, vecEnd) xs_vec_mul_scalar(vecEnd, 8192.0, vecEnd) xs_vec_add(vecSrc, vecEnd, vecEnd) get_tr2(trace_result, TR_vecEndPos, vecSrc) get_tr2(trace_result, TR_vecPlaneNormal, vecEnd) xs_vec_mul_scalar(vecEnd, 2.5, vecEnd) xs_vec_add(vecSrc, vecEnd, vecEnd) TE_FLAG |= TE_EXPLFLAG_NODLIGHTS TE_FLAG |= TE_EXPLFLAG_NOSOUND TE_FLAG |= TE_EXPLFLAG_NOPARTICLES engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEnd, 0) write_byte(TE_EXPLOSION) engfunc(EngFunc_WriteCoord, vecEnd[0]) engfunc(EngFunc_WriteCoord, vecEnd[1]) engfunc(EngFunc_WriteCoord, vecEnd[2] - 10.0) write_short(g_smokepuff_id) write_byte(2) write_byte(50) write_byte(TE_FLAG) message_end() } stock get_weapon_attachment(id, Float:output[3], Float:fDis = 40.0) { new Float:vfEnd[3], viEnd[3] get_user_origin(id, viEnd, 3) IVecFVec(viEnd, vfEnd) new Float:fOrigin[3], Float:fAngle[3] pev(id, pev_origin, fOrigin) pev(id, pev_view_ofs, fAngle) xs_vec_add(fOrigin, fAngle, fOrigin) new Float:fAttack[3] xs_vec_sub(vfEnd, fOrigin, fAttack) xs_vec_sub(vfEnd, fOrigin, fAttack) new Float:fRate fRate = fDis / vector_length(fAttack) xs_vec_mul_scalar(fAttack, fRate, fAttack) xs_vec_add(fOrigin, fAttack, output) } stock create_blood(const Float:origin[3]) { // Show some blood :) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BLOODSPRITE) engfunc(EngFunc_WriteCoord, origin[0]) engfunc(EngFunc_WriteCoord, origin[1]) engfunc(EngFunc_WriteCoord, origin[2]) write_short(m_iBlood[1]) write_short(m_iBlood[0]) write_byte(75) write_byte(5) message_end() }
Rezolvat prin PM...
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