proszę o pomoc w modyfikacji klasy "Lowca" trochę próbowałem ale nie za bardzo się znam. Klasa ma zamiast scouta model łuku. Jak wybierzemy inną klasę ze scoutem to ma właśnie ten model łuku. Czy wystarczyłoby zmienić po prostu nazwę modeli ?
Lub może wykorzystać broń jaka nie będzie używana i zmienić tą linię ?
if(ma_klase[id]) //tutaj wstawiamy ma_klase lub ma_perk { if(weapon == CSW_SCOUT) //tutaj ustawiamy broń, jakiej model będziemy zmieniać { set_pev(id, pev_viewmodel2, "models/v_Shina_by_Oxigen.mdl") //tu dajemy ścieżkę do nowego modeli v_ } } }
#include <amxmodx> #include <amxmisc> #include <codmod> #include <engine> #include <hamsandwich> #include <fun> #include <cstrike> #include <fakemeta_util> #include <xs> new const nazwa[] = "Lowca"; new const opis[] = ""; new const bronie = (1<<CSW_P228)|(1<<CSW_SCOUT)|(1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG); new const zdrowie = 0; new const kondycja = 0; new const inteligencja = 0; new const wytrzymalosc = 0; new ma_klase[33]; new const P_MODEL[] = "models/p_Shina_by_Oxigen.mdl" new const V_MODEL[] = "models/v_Shina_by_Oxigen.mdl" new const W_MODEL[] = "models/w_Shina_by_Oxigen.mdl" new const ARROW_MODEL[] = "models/arrow.mdl" #define BURN_CLASSNAME "flame" #define BURN_MODEL "sprites/flame_burn01.spr" #define POISON_MODEL "sprites/poison.spr" // Settings #define BASE_SPEED 1200 #define BONUS_SPEED 600 #define BURN_LIFE 10.0 #define BURN_PERIOD 2.0 #define BURN_DAMAGE 10.0 #define POISON_TIME 5.0 #define POISON_PERIOD 1.0 #define POISON_DAMAGE 5.0 #define SPEED_LOW_POISON 0.8 #define SLOW_POISON_TIME 3.0 #define NORMAL_DMG 45.0 #define SPEED_LOW_ICE 0.5 #define SLOW_ICE_TIME 7.0 #define EXPLODE_DAMAGE 90.0 #define EXPLODE_HITRADIUS 400 // Base number of arrows #define NORMAL_AMMO 20 #define FIRE_AMMO 15 #define ICE_AMMO 10 #define POISON_AMMO 7 #define EXPLODE_AMMO 3 //Number of extra arrows #define NORMAL_AMMO_BUY 5 #define FIRE_AMMO_BUY 4 #define ICE_AMMO_BUY 3 #define POISON_AMMO_BUY 2 #define EXPLODE_AMMO_BUY 1 // Cost of extra arrows #define AMMO_COST 1000 #define NEXT_SHOT_TIME 0.97 new const ARROW_SHOOT[] = "crossbow_shoot1.wav" new g_exp_sprid new Float:g_start_time[33], Float:g_finish_time[33] new Float:g_Burn[33], Float:g_Poisoned[33] new g_slowed[33], g_pressed[33], Float:g_old_speed[33] // Ammo new g_ammo[33], g_normal_ammo[33], g_fire_ammo[33], g_ice_ammo[33], g_poison_ammo[33], g_explode_ammo[33] // Player variables new g_HasBow[33] // whether player has bow new bool:draw_wpn[33] new g_bow_mode[33], g_dmg_mode[33] new g_MaxPlayers // Render effects debug new g_FrozenRenderingFx[33] new Float:g_FrozenRenderingColor[33][3] new g_FrozenRenderingRender[33] new Float:g_FrozenRenderingAmount[33] // Message ID's new g_MsgDamage, g_msgBarTime enum { anim_idle, anim_shot1, anim_shot2, anim_reload, anim_draw } enum { NORMAL_MODE = 1, FIRE_MODE = 2, ICE_MODE = 3, POISON_MODE = 4, EXPLODE_MODE = 5 } enum { dmg_fire = 1, dmg_poison = 2 } // Plugin precache public plugin_precache() { // Models precache_model(P_MODEL) precache_model(V_MODEL) precache_model(W_MODEL) precache_model(ARROW_MODEL) precache_model(BURN_MODEL) precache_model(POISON_MODEL) // Sounds precache_sound(ARROW_SHOOT) //precache_sound(GRENADE_DRAW) precache_sound("weapons/357_cock1.wav") g_exp_sprid = engfunc(EngFunc_PrecacheModel, "sprites/zerogxplode.spr") } public plugin_init() { register_plugin(nazwa, "1.0", "amxx.pl"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); RegisterHam(Ham_Spawn, "player", "fwSpawn_Grawitacja", 1); RegisterHam(Ham_Spawn, "player", "give_bow", 2); register_event("Damage", "Damage_Wyrzucenie", "b", "2!=0"); register_event("CurWeapon", "Event_CurrentWeapon", "be", "1=1") register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0"); register_event("CurWeapon", "CurWeapon", "be", "1=1") // Forwards RegisterHam(Ham_Killed, "player", "fw_PlayerKilled") RegisterHam(Ham_Weapon_PrimaryAttack, "weapon_scout", "fw_bow_PrimaryAttack") RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_scout", "fw_bow_SecondaryAttack") RegisterHam(Ham_Weapon_Reload, "weapon_scout", "fw_bow_Reload") RegisterHam(Ham_Item_Deploy, "weapon_scout", "fw_bow_Deploy_Post", 1) register_think(BURN_CLASSNAME, "BurnThink") register_forward(FM_CmdStart, "fw_CmdStart") register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1) register_forward(FM_Touch, "fw_touch") register_clcmd("drop","dropcmd") // Messages g_MsgDamage = get_user_msgid("Damage") g_msgBarTime = get_user_msgid("BarTime") register_clcmd("say /kup", "money") register_clcmd("buyammo1", "buy_ammo") g_MaxPlayers = get_maxplayers() } public cod_class_enabled(id) { client_print(id, print_chat, "Klasa zostala stworzona przez SKoRPiuS'a"); if(!(get_user_flags(id) & ADMIN_LEVEL_G)) { client_print(id, print_chat, "[Lowca] Nie masz uprawnien, aby uzywac tej klasy.") return COD_STOP; } entity_set_float(id, EV_FL_gravity, 500.0/800.0); give_item(id, "weapon_hegrenade"); give_item(id, "weapon_flashbang"); give_item(id, "weapon_flashbang"); give_item(id, "weapon_smokegrenade"); cs_set_user_defuse(id, 1); ma_klase[id] = true; g_HasBow[id] = true; return COD_CONTINUE; } public cod_class_disabled(id) { entity_set_float(id, EV_FL_gravity, 1.0); ma_klase[id] = false; g_HasBow[id] = false; } public fwSpawn_Grawitacja(id) { if(ma_klase[id]) entity_set_float(id, EV_FL_gravity, 500.0/800.0); } public Damage_Wyrzucenie(id) { new idattacker = get_user_attacker(id); if(!is_user_alive(idattacker)) return; if(!ma_klase[idattacker]) return; if(random_num(1, 6) != 1) return; client_cmd(id, "drop"); } public money(id) { cs_set_user_money(id, 16000) } public Event_NewRound() { for (new i = 0; i < get_maxplayers(); i++) { set_user_rendering(i, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 25) g_Poisoned[i]=0.0 g_Burn[i]=0.0 g_slowed[i] = false } } public dropcmd(id) { if(g_HasBow[id] && get_user_weapon(id) == CSW_SCOUT) { new Float:Aim[3],Float:origin[3] VelocityByAim(id, 64, Aim) entity_get_vector(id,EV_VEC_origin,origin) origin[0] += Aim[0] origin[1] += Aim[1] new bow = create_entity("info_target") entity_set_string(bow,EV_SZ_classname,"bow") entity_set_model(bow,W_MODEL) entity_set_size(bow,Float:{-2.0,-2.0,-2.0},Float:{5.0,5.0,5.0}) entity_set_int(bow,EV_INT_solid,1) entity_set_int(bow,EV_INT_movetype,6) entity_set_vector(bow,EV_VEC_origin,origin) g_HasBow[id] = false remowegun(id) return PLUGIN_HANDLED } return PLUGIN_CONTINUE } // remove gun and save all guns public remowegun(id) { new wpnList[32] new number get_user_weapons(id,wpnList,number) for (new i = 0;i < number ;i++) { if (wpnList[i] == CSW_SCOUT) { fm_strip_user_gun(id, wpnList[i]) } } } public buy_ammo(id) { if(!g_HasBow[id]) return PLUGIN_CONTINUE if((cs_get_user_buyzone(id)) && (ma_klase[id])) { give_ammo(id) return PLUGIN_HANDLED } if(cs_get_user_money(id) <= AMMO_COST) { client_print(id, print_chat, "Kupiles Belty za 16 000$") return PLUGIN_CONTINUE } give_ammo(id) return PLUGIN_HANDLED } public give_ammo(id) { if(g_normal_ammo[id] == NORMAL_AMMO && g_fire_ammo[id] == FIRE_AMMO && g_ice_ammo[id] == ICE_AMMO && g_poison_ammo[id] == POISON_AMMO && g_explode_ammo[id] == EXPLODE_AMMO) return PLUGIN_CONTINUE if(ma_klase[id]) cs_set_user_money(id, cs_get_user_money(id) - AMMO_COST) g_normal_ammo[id] += NORMAL_AMMO_BUY g_fire_ammo[id] += FIRE_AMMO_BUY g_ice_ammo[id] += ICE_AMMO_BUY g_poison_ammo[id] += POISON_AMMO_BUY g_explode_ammo[id] += EXPLODE_AMMO_BUY if(g_normal_ammo[id] > NORMAL_AMMO) g_normal_ammo[id] = NORMAL_AMMO if(g_fire_ammo[id] > FIRE_AMMO) g_fire_ammo[id] = FIRE_AMMO if(g_ice_ammo[id] > ICE_AMMO) g_ice_ammo[id] = ICE_AMMO if(g_poison_ammo[id] > POISON_AMMO) g_poison_ammo[id] = POISON_AMMO if(g_explode_ammo[id] > EXPLODE_AMMO) g_explode_ammo[id] = EXPLODE_AMMO update_ammo(id) return PLUGIN_CONTINUE } //play anim public playanim(player,anim) { set_pev(player, pev_weaponanim, anim) message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, player) write_byte(anim) write_byte(pev(player, pev_body)) message_end() } // Client connected public client_connect(id) { // Reset all g_HasBow[id] = false g_finish_time[id] = 0.0 } // Current weapon player is holding public Event_CurrentWeapon(id) { if (is_user_bot(id)) return if(!is_user_connected(id)) return if(ma_klase[id]) return // Read weapon ID new weaponID = read_data(2) if (weaponID == CSW_SCOUT) { if (g_HasBow[id]) { if(!draw_wpn[id]) { playanim(id, anim_draw) update_ammo(id) //emit_sound(id, CHAN_WEAPON, GRENADE_DRAW, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) // View model entity_set_string(id, EV_SZ_viewmodel, V_MODEL) // Player model entity_set_string(id, EV_SZ_weaponmodel, P_MODEL) draw_wpn[id] = true } } else { // View model entity_set_string(id, EV_SZ_viewmodel, "models/v_scout.mdl") // Player model entity_set_string(id, EV_SZ_weaponmodel, "models/p_scout.mdl") } } else { draw_wpn[id] = false } } public remove_bow() { new nextitem = find_ent_by_class(-1, "bow") while ((nextitem = find_ent_by_class(-1, "bow")) != 0) { remove_entity(nextitem) } return PLUGIN_CONTINUE } // Player killed public fw_PlayerKilled(victim, attacker, shouldgib) { if (g_HasBow[victim]) { // Reset all g_HasBow[victim] = false set_user_rendering(victim, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 25) // Remove screen's bar message_begin(MSG_ONE, g_msgBarTime, _, victim) write_byte(0) // time write_byte(0) // unknown message_end() remowegun(victim) } } public give_bow(id) { give_weapon(id) g_bow_mode[id] = NORMAL_MODE g_normal_ammo[id] = NORMAL_AMMO g_fire_ammo[id] = FIRE_AMMO g_ice_ammo[id] = ICE_AMMO g_poison_ammo[id] = POISON_AMMO g_explode_ammo[id] = EXPLODE_AMMO ma_klase[id] = true; } //give wpn public give_weapon(id){ g_HasBow[id] = true update_ammo(id) } public fw_bow_PrimaryAttack(Weapon) { new Player = get_pdata_cbase(Weapon, 41, 4) if (g_HasBow[Player]) return HAM_SUPERCEDE return HAM_IGNORED } public fw_bow_SecondaryAttack(Weapon) { new Player = get_pdata_cbase(Weapon, 41, 4) if (g_HasBow[Player]) return HAM_SUPERCEDE return HAM_IGNORED } public fw_bow_Reload(Weapon) { new Player = get_pdata_cbase(Weapon, 41, 4) if (g_HasBow[Player]) return HAM_SUPERCEDE return HAM_IGNORED } public fw_bow_Deploy_Post(Weapon) { new Player = get_pdata_cbase(Weapon, 41, 4) update_ammo(Player) } // Command start public fw_CmdStart(id, uc_handle, seed) { if(!g_HasBow[id]) return FMRES_IGNORED static CurButton, OldButton CurButton = get_uc(uc_handle, UC_Buttons) OldButton = (pev(id, pev_oldbuttons) & IN_ATTACK) if(get_gametime() - g_finish_time[id] > NEXT_SHOT_TIME) { // Attack1 button pressed if(CurButton & IN_ATTACK && !OldButton) { if(get_user_weapon(id) != CSW_SCOUT) return FMRES_IGNORED if((g_bow_mode[id] == NORMAL_MODE && g_normal_ammo[id] <= 0) || (g_bow_mode[id] == FIRE_MODE && g_fire_ammo[id] <= 0) || (g_bow_mode[id] == ICE_MODE && g_ice_ammo[id] <= 0) || (g_bow_mode[id] == POISON_MODE && g_poison_ammo[id] <= 0) || (g_bow_mode[id] == EXPLODE_MODE && g_explode_ammo[id] <= 0)) return FMRES_IGNORED g_start_time[id] = get_gametime() // A bar appears in his screen message_begin(MSG_ONE_UNRELIABLE, g_msgBarTime, _, id) write_byte(3) // time write_byte(0) // unknown message_end() g_pressed[id] = true } if(CurButton & IN_ATTACK && OldButton) { if((g_bow_mode[id] == NORMAL_MODE && g_normal_ammo[id] <= 0) || (g_bow_mode[id] == FIRE_MODE && g_fire_ammo[id] <= 0) || (g_bow_mode[id] == ICE_MODE && g_ice_ammo[id] <= 0) || (g_bow_mode[id] == POISON_MODE && g_poison_ammo[id] <= 0) || (g_bow_mode[id] == EXPLODE_MODE && g_explode_ammo[id] <= 0)) return FMRES_IGNORED if(!g_pressed[id]) return FMRES_IGNORED if(get_user_weapon(id) != CSW_SCOUT) { g_finish_time[id] = get_gametime() FireArrow(id) // Remove screen's bar message_begin(MSG_ONE, g_msgBarTime, _, id) write_byte(0) // time write_byte(0) // unknown message_end() g_pressed[id] = false } } if(!(CurButton & IN_ATTACK) && OldButton) { if(get_user_weapon(id) != CSW_SCOUT) return FMRES_IGNORED if((g_bow_mode[id] == NORMAL_MODE && g_normal_ammo[id] <= 0) || (g_bow_mode[id] == FIRE_MODE && g_fire_ammo[id] <= 0) || (g_bow_mode[id] == ICE_MODE && g_ice_ammo[id] <= 0) || (g_bow_mode[id] == POISON_MODE && g_poison_ammo[id] <= 0) || (g_bow_mode[id] == EXPLODE_MODE && g_explode_ammo[id] <= 0)) return FMRES_IGNORED if(!g_pressed[id]) return FMRES_IGNORED g_finish_time[id] = get_gametime() FireArrow(id) // Remove screen's bar message_begin(MSG_ONE, g_msgBarTime, _, id) write_byte(0) // time write_byte(0) // unknown message_end() g_pressed[id] = false } } if((CurButton & IN_ATTACK2) && !(pev(id, pev_oldbuttons) & IN_ATTACK2)) { if(get_user_weapon(id) != CSW_SCOUT) return FMRES_IGNORED if(!g_pressed[id]) { cmdMenu(id) } } return FMRES_HANDLED } //block anim standard wpn public fw_UpdateClientData_Post(id, sendweapons, cd_handle) { if (!is_user_alive(id)) return FMRES_IGNORED // Block default sounds if (get_user_weapon(id) == CSW_SCOUT && g_HasBow[id]) { set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001 ); } return FMRES_HANDLED } // Fire gremade public FireArrow(id) { // Set animation playanim(id, anim_shot1) // Get origin. angle and velocity new velocity[33] new Float:fAngle[3], Float:fVelocity[3] pev(id, pev_v_angle, fAngle) // Create ent new arrow = create_entity("info_target") // Not grenade if (!arrow) return PLUGIN_HANDLED // Classname entity_set_string(arrow, EV_SZ_classname, "bow_arrow") // Model entity_set_model(arrow, ARROW_MODEL) if(g_bow_mode[id] == NORMAL_MODE) { set_rendering(arrow, kRenderFxGlowShell, 255, 255, 255, kRenderNormal, 25) g_normal_ammo[id]-- } else if(g_bow_mode[id] == FIRE_MODE) { set_rendering(arrow, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 25) g_fire_ammo[id]-- } else if(g_bow_mode[id] == ICE_MODE) { set_rendering(arrow, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 25) g_ice_ammo[id]-- } else if(g_bow_mode[id] == POISON_MODE) { set_rendering(arrow, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 25) g_poison_ammo[id]-- } else if(g_bow_mode[id] == EXPLODE_MODE) { set_rendering(arrow, kRenderFxGlowShell, 150, 105, 0, kRenderNormal, 25) g_explode_ammo[id]-- } update_ammo(id) new Float:vOrigin[3],Float:vUp[3] pev(id, pev_origin, vOrigin) global_get(glb_v_up, vUp) new up = 17 vOrigin[0] = vOrigin[0] + vUp[0] * up vOrigin[1] = vOrigin[1] + vUp[1] * up vOrigin[2] = vOrigin[2] + vUp[2] * up // Origin entity_set_origin(arrow, vOrigin) // Angles entity_set_vector(arrow, EV_VEC_angles, fAngle) // Size new Float:MinBox[3] = {-1.0, -1.0, -1.0} new Float:MaxBox[3] = {1.0, 1.0, 1.0} entity_set_vector(arrow, EV_VEC_mins, MinBox) entity_set_vector(arrow, EV_VEC_maxs, MaxBox) // Interaction entity_set_int(arrow, EV_INT_solid, SOLID_SLIDEBOX) // Movetype entity_set_int(arrow, EV_INT_movetype, MOVETYPE_TOSS) // Owner entity_set_edict(arrow, EV_ENT_owner, id) // Velocity new Float: holdtime[33] new Float: mnoji[33] holdtime[id] = g_finish_time[id] - g_start_time[id] if(holdtime[id] < 1.0) holdtime[id] = 1.0 if(holdtime[id] > 3.0) holdtime[id] = 3.0 mnoji[id] = BASE_SPEED + holdtime[id] * BONUS_SPEED velocity[id] = floatround(mnoji[id],floatround_round) VelocityByAim(id, velocity[id], fVelocity) entity_set_vector(arrow, EV_VEC_velocity, fVelocity) // Launch sound emit_sound(arrow, CHAN_WEAPON, ARROW_SHOOT, VOL_NORM, ATTN_NORM, 0, PITCH_NORM) return PLUGIN_CONTINUE } // We hit something!!! public pfn_touch(ptr, ptd) { // If ent is valid if (pev_valid(ptr)) { // Get classnames static classname[32], classnameptd[32] pev(ptr, pev_classname, classname, 31) // Our ent if(equal(classname, "bow_arrow")) { // Get it's origin new Float:Origin[3] pev(ptr, pev_origin, Origin) new owner = pev(ptr, pev_owner) if(g_bow_mode[owner] == EXPLODE_MODE) { // Explosion engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0) write_byte(TE_EXPLOSION) engfunc(EngFunc_WriteCoord, Origin[0]) engfunc(EngFunc_WriteCoord, Origin[1]) engfunc(EngFunc_WriteCoord, Origin[2]) write_short(g_exp_sprid) write_byte(40) write_byte(30) write_byte(0) message_end() check_radius_damage(ptr, owner) } if(is_user_alive(ptd)) { if(cs_get_user_team(ptd) != cs_get_user_team(owner)) { g_old_speed[ptd] = get_user_maxspeed(ptd) if(g_bow_mode[owner] == NORMAL_MODE) { ExecuteHamB(Ham_TakeDamage, ptd, ptr, owner, NORMAL_DMG, DMG_BULLET) } else if(g_bow_mode[owner] == FIRE_MODE) { g_dmg_mode[ptd] = dmg_fire CreateBurn(ptd, owner) } else if(g_bow_mode[owner] == ICE_MODE) { if(!g_slowed[ptd] && !g_Burn[ptd]) { g_FrozenRenderingFx[ptd] = pev(ptd, pev_renderfx) pev(ptd, pev_rendercolor, g_FrozenRenderingColor[ptd]) g_FrozenRenderingRender[ptd] = pev(ptd, pev_rendermode) pev(ptd, pev_renderamt, g_FrozenRenderingAmount[ptd]) set_user_rendering(ptd, kRenderFxGlowShell, 0, 100, 200, kRenderNormal, 25) set_user_maxspeed(ptd, get_user_maxspeed(ptd) * SPEED_LOW_ICE) g_slowed[ptd] = true set_task(SLOW_ICE_TIME, "make_speed", ptd, _, _, "a", 1) message_begin(MSG_ONE_UNRELIABLE, g_MsgDamage, _, ptd) write_byte(0) // damage save write_byte(0) // damage take write_long(DMG_DROWN) // damage type - DMG_FREEZE write_coord(0) // x write_coord(0) // y write_coord(0) // z message_end() } } else if(g_bow_mode[owner] == POISON_MODE) { if(!g_slowed[ptd]) { set_user_maxspeed(ptd, get_user_maxspeed(ptd) * SPEED_LOW_POISON) g_slowed[ptd] = true set_task(SLOW_POISON_TIME, "make_speed", ptd, _, _, "a", 1) g_dmg_mode[ptd] = dmg_poison CreateBurn(ptd, owner) } } } } // We hit breakable if(pev_valid(ptd)) { pev(ptd, pev_classname, classnameptd, 31) if (equali(classnameptd, "func_breakable")) { // Destroy it force_use(ptr,ptd) } } set_pev(ptr, pev_flags, FL_KILLME) } } if(is_valid_ent(ptr)) { new classname[32] entity_get_string(ptr,EV_SZ_classname,classname,31) if(equal(classname, "bow")) { if(is_valid_ent(ptd)) { new id = ptd if(id > 0 && id < 34) { if(allowed_toucher(id)) { // Pick up weapon give_weapon(id) remove_entity(ptr) } } } } } } public CreateBurn(id, attacker) { if(g_Burn[id] || g_Poisoned[id]) return if(g_dmg_mode[id] == dmg_fire) { new ent=CreateAnimationSprite(attacker, BURN_CLASSNAME, BURN_MODEL, 1.0, 10.0) set_pev(ent, pev_solid, SOLID_NOT) set_pev(ent, pev_movetype, MOVETYPE_FOLLOW) set_pev(ent, pev_aiment, id) set_pev(ent, pev_fuser2, get_gametime()+BURN_LIFE) g_Burn[id]=get_gametime()+BURN_PERIOD } if(g_dmg_mode[id] == dmg_poison) { new ent=CreateAnimationSprite(attacker, BURN_CLASSNAME, POISON_MODEL, 1.0, 10.0) set_pev(ent, pev_solid, SOLID_NOT) set_pev(ent, pev_movetype, MOVETYPE_FOLLOW) set_pev(ent, pev_aiment, id) set_pev(ent, pev_fuser2, get_gametime()+POISON_TIME) g_Poisoned[id]=get_gametime()+POISON_PERIOD } } public BurnThink(ent) { if(!pev_valid(ent)) return static Float:life, aim_ent pev(ent,pev_fuser2, life) aim_ent=pev(ent, pev_aiment) if(g_dmg_mode[aim_ent] == dmg_fire) { if(get_gametime()>life||!is_user_alive(aim_ent)/*||!zp_get_user_zombie(aim_ent)*/) { g_Burn[aim_ent]=0.0 fm_remove_entity(ent) return } if(get_gametime()>g_Burn[aim_ent]) { ExecuteHamB(Ham_TakeDamage, aim_ent , ent ,pev(ent, pev_owner), BURN_DAMAGE, DMG_BURN) g_Burn[aim_ent]=get_gametime()+BURN_PERIOD } } if(g_dmg_mode[aim_ent] == dmg_poison) { if(get_gametime()>life||!is_user_alive(aim_ent)/*||!zp_get_user_zombie(aim_ent)*/) { g_Poisoned[aim_ent]=0.0 fm_remove_entity(ent) return } if(get_gametime()>g_Poisoned[aim_ent]) { ExecuteHamB(Ham_TakeDamage, aim_ent , ent ,pev(ent, pev_owner), POISON_DAMAGE, DMG_ACID) g_Poisoned[aim_ent]=get_gametime()+POISON_PERIOD } } } public make_speed(id) { if(is_user_alive(id) && g_slowed[id]) { g_slowed[id] = false set_user_maxspeed(id, g_old_speed[id]) fm_set_rendering_float(id, g_FrozenRenderingFx[id], g_FrozenRenderingColor[id], g_FrozenRenderingRender[id], g_FrozenRenderingAmount[id]) } } public check_radius_damage(ent, attacker) { for(new i = 0; i < g_MaxPlayers; i++) { if(!is_user_alive(i)) continue if(cs_get_user_team(attacker) == cs_get_user_team(i)) continue if(entity_range(ent, i) > EXPLODE_HITRADIUS) continue Do_TakeDamage(ent, i, attacker, can_see_fm(ent, i)) } } public Do_TakeDamage(Ent, Victim, Attacker, can_see) { static Float:Damage, Float:CurrentDis CurrentDis = entity_range(Ent, Victim) Damage = EXPLODE_DAMAGE - ((CurrentDis / EXPLODE_HITRADIUS) * EXPLODE_DAMAGE) if(Damage > 0) { static WeaponEnt WeaponEnt = fm_get_user_weapon_entity(Attacker, CSW_HEGRENADE) if(!pev_valid(WeaponEnt)) WeaponEnt = 0 if(!can_see) Damage /= 2 ExecuteHamB(Ham_TakeDamage, Victim, WeaponEnt, Attacker, Damage, DMG_BULLET) } } public update_ammo(id) { if(!is_user_alive(id)) return if(g_bow_mode[id] == NORMAL_MODE) { g_ammo[id] = g_normal_ammo[id] } else if(g_bow_mode[id] == FIRE_MODE) { g_ammo[id] = g_fire_ammo[id] } else if(g_bow_mode[id] == ICE_MODE) { g_ammo[id] = g_ice_ammo[id] } else if(g_bow_mode[id] == POISON_MODE) { g_ammo[id] = g_poison_ammo[id] } else if(g_bow_mode[id] == EXPLODE_MODE) { g_ammo[id] = g_explode_ammo[id] } static weapon_ent; weapon_ent = fm_find_ent_by_owner(-1, "weapon_scout", id) if(pev_valid(weapon_ent)) cs_set_weapon_ammo(weapon_ent, 1) cs_set_user_bpammo(id, CSW_SCOUT, g_ammo[id]) engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, get_user_msgid("CurWeapon"), {0, 0, 0}, id) write_byte(1) write_byte(CSW_SCOUT) write_byte(-1) message_end() set_task(0.1, "hud_debug", id) } public hud_debug(id) { engfunc(EngFunc_MessageBegin, MSG_ONE_UNRELIABLE, get_user_msgid("CurWeapon"), {0, 0, 0}, id) write_byte(1) write_byte(CSW_SCOUT) write_byte(-1) message_end() } public cmdMenu(id) { new i_Menu = menu_create("\rWybierz Strzale", "menu_handler"); menu_additem(i_Menu, "\wZwykle Strzaly", "1", 0); menu_additem(i_Menu, "\wOgnisne Strzaly", "2", 0); menu_additem(i_Menu, "\wLodowe Strzaly", "3", 0); menu_additem(i_Menu, "\wZatrute Strzaly", "4", 0); menu_additem(i_Menu, "\wBombowe Strzaly", "5", 0); menu_setprop(i_Menu, MPROP_EXITNAME, "Exit"); menu_display(id, i_Menu, 0) } public menu_handler(id, menu, item) { if( item < 0 ) return PLUGIN_CONTINUE; new cmd[3], access, callback; menu_item_getinfo(menu, item, access, cmd,2,_,_, callback); new Choise = str_to_num(cmd) switch (Choise) { case 1: { g_bow_mode[id] = NORMAL_MODE update_ammo(id) } case 2: { g_bow_mode[id] = FIRE_MODE update_ammo(id) } case 3: { g_bow_mode[id] = ICE_MODE update_ammo(id) } case 4: { g_bow_mode[id] = POISON_MODE update_ammo(id) } case 5: { g_bow_mode[id] = EXPLODE_MODE update_ammo(id) } } return PLUGIN_HANDLED; } // Allowed toucher stock allowed_toucher(player) { if (g_HasBow[player]) return false return true } stock print(const id, const input[], any:...) { new iCount = 1, iPlayers[32] static szMsg[191] vformat(szMsg, charsmax(szMsg), input, 3) replace_all(szMsg, 190, "^x04", "^4") // green txt replace_all(szMsg, 190, "^x01", "^1") // orange txt replace_all(szMsg, 190, "^x03", "^3") // team txt replace_all(szMsg, 190, "^x00", "^0") // team txt if(id) iPlayers[0] = id else get_players(iPlayers, iCount, "ch") for (new i = 0; i < iCount; i++) { if (is_user_connected(iPlayers[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, iPlayers[i]) write_byte(iPlayers[i]) write_string(szMsg) message_end() } } } stock CreateAnimationSprite(owner, const classname[], const model[], Float:scale, Float:framerate) { new ent=fm_create_entity("env_sprite") set_pev(ent, pev_framerate, framerate) set_pev(ent, pev_model, model) dllfunc(DLLFunc_Spawn, ent) set_pev(ent, pev_classname, classname) set_pev(ent, pev_owner, owner) fm_entity_set_model(ent, model) fm_set_rendering(ent, kRenderFxNoDissipation, 255, 255, 255, kRenderGlow, 255) set_pev(ent, pev_framerate, framerate) set_pev(ent, pev_scale, scale) return ent } public can_see_fm(entindex1, entindex2) { if (!entindex1 || !entindex2) return false if (pev_valid(entindex1) && pev_valid(entindex1)) { new flags = pev(entindex1, pev_flags) if (flags & EF_NODRAW || flags & FL_NOTARGET) { return 0 } new Float:lookerOrig[3] new Float:targetBaseOrig[3] new Float:targetOrig[3] new Float:temp[3] pev(entindex1, pev_origin, lookerOrig) pev(entindex1, pev_view_ofs, temp) lookerOrig[0] += temp[0] lookerOrig[1] += temp[1] lookerOrig[2] += temp[2] pev(entindex2, pev_origin, targetBaseOrig) pev(entindex2, pev_view_ofs, temp) targetOrig[0] = targetBaseOrig [0] + temp[0] targetOrig[1] = targetBaseOrig [1] + temp[1] targetOrig[2] = targetBaseOrig [2] + temp[2] engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) // checks the had of seen player if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater)) { return 0 } else { new Float:flFraction get_tr2(0, TraceResult:TR_flFraction, flFraction) if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2)) { return 1 } else { targetOrig[0] = targetBaseOrig [0] targetOrig[1] = targetBaseOrig [1] targetOrig[2] = targetBaseOrig [2] engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) // checks the body of seen player get_tr2(0, TraceResult:TR_flFraction, flFraction) if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2)) { return 1 } else { targetOrig[0] = targetBaseOrig [0] targetOrig[1] = targetBaseOrig [1] targetOrig[2] = targetBaseOrig [2] - 17.0 engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) get_tr2(0, TraceResult:TR_flFraction, flFraction) if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2)) { return 1 } } } } } return 0 } stock fm_set_rendering_float(entity, fx = kRenderFxNone, Float:color[3], render = kRenderNormal, Float:amount = 16.0) { set_pev(entity, pev_renderfx, fx) set_pev(entity, pev_rendercolor, color) set_pev(entity, pev_rendermode, render) set_pev(entity, pev_renderamt, amount) } public CurWeapon(id) { new weapon = read_data(2); if(ma_klase[id]) //tutaj wstawiamy ma_klase lub ma_perk { if(weapon == CSW_SCOUT) //tutaj ustawiamy broń, jakiej model będziemy zmieniać { set_pev(id, pev_viewmodel2, "models/v_Shina_by_Oxigen.mdl") //tu dajemy ścieżkę do nowego modeli v_ } } } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par } */
Użytkownik AjZiS edytował ten post 01.12.2019 13:50