Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
Modyfikacja

[ROZWIĄZANE] Zmiana Klasy Premium na Zwykłą

Modyfikacja

  • Zamknięty Temat jest zamknięty
26 odpowiedzi w tym temacie

#1 P@trYk^.^

    Wszechwidzący

  • Użytkownik

Reputacja: 2
Nowy

  • Postów:299
  • Imię:Patryk
  • Lokalizacja:Piła
Offline

Napisano 07.04.2012 21:08

Jak zmienić klase premium aby była ona zwykłą klasa żeby mógł grać nią każdy, oto kod klasy:

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#include <engine>
#include <fun>
#include <csx>
#include <xs>
#include <hamsandwich>
#include <codmod>
#include <ColorChat>
new const nazwa[] = "Miotacz";
new const opis[] = "Posiada miotacz ognia zamiast noza!";
new const bronie = 1<<CSW_M3;
new const zdrowie = 15;
new const kondycja = 20;
new const inteligencja = 10;
new const wytrzymalosc = 5;
new bool:ma_klase[33];
new wpn_ft
new sprite_fire
new sprite_burn
new sprite_xplo
new g_freezetime
new g_restarted
new Float:g_starttime
new cvar_enabled
new cvar_client_buy
new cvar_damage
new cvar_xplode_dmg
new cvar_cost
new cvar_fuelcost
new cvar_fueltank
new cvar_buyzone
new cvar_buytime
new cvar_damage_dis
new cvar_splash_dis
new g_buyzone[33]
new g_FuelTank[33]
new g_Activated[33]
new Float:g_Delay[33]
new g_hasFlamethrower[33]
new g_FireFlamethrower[33]
new g_BuyFuel[33]
new cvar_expcod
static PLUGIN_NAME[]  = "Miotacz ognia for cod"
static PLUGIN_AUTHOR[]  = "Cheap_Suit eited by Crew"
static PLUGIN_VERSION[] = "1.1"
public plugin_init()
{
RegisterHam(Ham_Spawn, "player", "Spawn", 1);
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
register_cvar("ft_version", PLUGIN_VERSION, FCVAR_SERVER)

cvar_enabled  = register_cvar("ft_enable",   "1")
cvar_fueltank  = register_cvar("ft_fueltank",   "50")
cvar_damage = register_cvar("ft_damage",   "2")
cvar_xplode_dmg = register_cvar("ft_xplode_dmg",  "30")
cvar_damage_dis = register_cvar("ft_damage_dis",  "100")
cvar_splash_dis = register_cvar("ft_splash_dis",  "40")
cvar_expcod  = register_cvar("cod_xpmiotacz",  "20")

register_event("DeathMsg",   "Event_DeathMsg",  "a")
register_event("CurWeapon",  "Event_CurWeapon",  "be",  "1=1")
register_event("StatusIcon",  "Event_BuyZone",   "b",  "2=buyzone")
register_event("HLTV",   "Event_NewRound",  "a",  "1=0", "2=0")
register_event("TextMsg",  "Event_WeaponDrop",  "be",  "2=#Weapon_Cannot_Be_Dropped")
register_event("TextMsg",  "Event_GameRestart",  "a",  "2=#Game_Commencing",  "2=#Game_will_restart_in")
register_logevent("LogEvent_RoundStart",    2,  "0=World triggered", "1=Round_Start")

register_forward(FM_CmdStart,  "fw_CmdStart")
register_forward(FM_PlayerPostThink,  "fw_PlayerPostThink")
register_forward(FM_UpdateClientData,  "fw_UpdateClientData_Post", 1)

register_think("flamethrower", "think_Flamethrower")
register_touch("flamethrower", "player", "touch_Flamethrower")
wpn_ft = custom_weapon_add("weapon_flamethrower", 0, "flamethrower")

if(!get_pcvar_num(cvar_enabled)) pause("ad", PLUGIN_NAME)
}
public plugin_precache()
{
precache_sound("flamethrower.wav")
precache_sound("items/ammopickup2.wav")

sprite_xplo = precache_model("sprites/zerogxplode.spr")
sprite_fire = precache_model("sprites/explode1.spr")
sprite_burn = precache_model("sprites/xfire.spr")

precache_model("models/v_knife.mdl")
precache_model("models/p_knife.mdl")
precache_model("models/shield/v_shield_knife.mdl")
precache_model("models/shield/p_shield_knife.mdl")
precache_model("models/w_flamethrower.mdl")
precache_model("models/v_flamethrower.mdl")
precache_model("models/p_flamethrower.mdl")
}
public cmd_GiveFlamethrowers(id, level, cid)
{
if(!cmd_access(id, level, cid, 2))
  return PLUGIN_HANDLED

new Arg1[64], target
read_argv(1, Arg1, 63)

new adminName[32]
get_user_name(id, adminName, 31)

new targetTeam
new Players[32], iNum
if(Arg1[0] == '@')
{
  if(equali(Arg1[1], "all"))
  {
   targetTeam = 0
   get_players(Players, iNum, "a")
  }
  else if(equali(Arg1[1], "t"))
  {
   targetTeam = 1
   get_players(Players, iNum, "ae" , "terrorist")
  
  }
  else if(equali(Arg1[1], "ct"))
  {
   targetTeam = 2
   get_players(Players, iNum, "ae" , "ct")
  }
 
  for(new i = 0; i < iNum; ++i)
  {
   target = Players[i]
  
   g_hasFlamethrower[target] = 1
   g_FuelTank[target] = get_pcvar_num(cvar_fueltank)
  
   new temp[2], weaponID = get_user_weapon(target, temp[0], temp[1])
   if(weaponID == CSW_KNIFE)
   {
    g_Activated[target] = true
    set_flamethrower_model(target)
   }
  
   client_cmd(target, "spk items/ammopickup2")
   client_print(target, print_chat, "You have been given a flamethrower (press 3 to use)")
  }
 
  switch(targetTeam)
  {
   case 0: client_print(0, print_chat, "Admin: %s has given everyone a flamethrower", adminName)
    case 1: client_print(0, print_chat, "Admin: %s has given all terrorist a flamethrower", adminName)
    case 2: client_print(0, print_chat, "Admin: %s has given all ct's a flamethrower", adminName)
   }
}
else
{
  target = cmd_target(id, Arg1, 0)
  if(!is_user_connected(target) || !is_user_alive(target))
   return PLUGIN_HANDLED
 
  new targetName[32]
  get_user_name(target, targetName, 31)
 
  g_hasFlamethrower[target] = 1
  g_FuelTank[target] = get_pcvar_num(cvar_fueltank)
 
  new temp[2], weaponID = get_user_weapon(target, temp[0], temp[1])
  if(weaponID == CSW_KNIFE)
  {
   g_Activated[target] = true
   set_flamethrower_model(target)
   entity_set_int(id, EV_INT_weaponanim, 9)
  }
 
  client_cmd(target, "spk items/ammopickup2")
  client_print(target, print_chat, "You have been given a flamethrower (press 3 to use)")
  client_print(target, print_chat, "Admin: %s has given you a flamethrower", adminName)
}
return PLUGIN_HANDLED
}
public cmd_BuyFlamethrower(id)
{
if(!get_pcvar_num(cvar_client_buy))
  return PLUGIN_CONTINUE

if(get_pcvar_num(cvar_buyzone))
{
  if(!g_buyzone[id])
  {
   client_print(id, print_center, "You need to be in the buyzone")
   return PLUGIN_HANDLED
  }
}

if(get_pcvar_num(cvar_buytime))
{
  new Float:fBuyTime = get_cvar_float("mp_buytime") * 60
  if(!g_freezetime && (get_gametime() - g_starttime) > fBuyTime)
  {
   client_print(id, print_center, "%d seconds have passed.^nYou can't buy anything now!", floatround(fBuyTime))
   return PLUGIN_HANDLED
  }
}

new iMoney = cs_get_user_money(id)
new iCost = get_pcvar_num(cvar_cost)

if(!is_user_alive(id))
  client_print(id, print_center, "You cant buy when your dead!")
else if(g_hasFlamethrower[id])
  client_print(id, print_center, "You already own that weapon.")
else if(iMoney < iCost)
  client_print(id, print_center, "Insufficient funds! ($%d)", iCost)
else
{
  g_hasFlamethrower[id] = 1
  g_FuelTank[id] = get_pcvar_num(cvar_fueltank)
 
  new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
  if(weaponID == CSW_KNIFE)
  {
   g_Activated[id] = true
   set_flamethrower_model(id)
  }
 
  cs_set_user_money(id, iMoney - iCost)
  client_cmd(id, "spk items/ammopickup2")
  client_print(id, print_chat, "You bought a flamethrower (press 3 to use)")
}
return PLUGIN_HANDLED
}
public Event_BuyZone(id) {
g_buyzone[id] = read_data(1)
}
public Event_GameRestart() {
g_restarted = 1
}
public Event_NewRound()
{
if(g_restarted)
{
  new Players[32], iNum = 0
  get_players(Players, iNum)
  for(new i = 0; i < iNum; i++)
  {
   new id = Players[i]
  
   g_FuelTank[id] = 0
   g_Activated[id] = 0
   g_hasFlamethrower[id] = 0
  
   new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
   if(weaponID == CSW_KNIFE) set_knife_model(id)
  
   g_restarted = 0
  }
}

new flamethrowers = -1
while((flamethrowers = find_ent_by_class(flamethrowers, "flamethrower")))
  remove_entity(flamethrowers)

g_freezetime = 1
}
public LogEvent_RoundStart()
{
g_freezetime = 0
g_starttime = get_gametime()
}
public Event_WeaponDrop(id)
{
if(!is_user_alive(id) || !g_Activated[id])
  return PLUGIN_CONTINUE

client_print(id, print_center, "")
return PLUGIN_HANDLED
}
public Event_DeathMsg()
{
new id = read_data(2)
if(!is_user_connected(id) || !g_hasFlamethrower[id]) {
  return PLUGIN_CONTINUE
}

return PLUGIN_CONTINUE
}
public Event_CurWeapon(id)
{
if(!is_user_alive(id) || !g_hasFlamethrower[id])
  return PLUGIN_CONTINUE

new WeaponID = read_data(2)
switch(WeaponID)
{
  case CSW_KNIFE:
  {
   set_task(0.3, "task_ActivateFlamethrower", id)
   set_flamethrower_model(id)
   entity_set_int(id, EV_INT_weaponanim, 9)
  }
  default: g_Activated[id] = 0
}
return PLUGIN_CONTINUE
}
public touch_Flamethrower(ent, id)
{
if(!is_valid_ent(ent) || !is_user_alive(id))
  return PLUGIN_CONTINUE

if(g_hasFlamethrower[id])
  return PLUGIN_CONTINUE

if(has_shield(id))
  return PLUGIN_CONTINUE

g_hasFlamethrower[id] = 1
client_cmd(id, "spk items/ammopickup2")
g_FuelTank[id] = entity_get_int(ent, EV_INT_iuser4)
show_fuel_percentage(id)

new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
if(weaponID == CSW_KNIFE)
{
  g_Activated[id] = true
  set_flamethrower_model(id)
  entity_set_int(id, EV_INT_weaponanim, 9)
}
remove_entity(ent)

return PLUGIN_CONTINUE
}
public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
{
if(!g_hasFlamethrower[id] || !g_Activated[id])
  return FMRES_IGNORED

set_cd(cd_handle, CD_ID, 0)
return FMRES_HANDLED
}
public fw_CmdStart(id, uc_handle, seed)
{
if(!g_hasFlamethrower[id] || !g_Activated[id])
  return FMRES_IGNORED

new buttons = get_uc(uc_handle, UC_Buttons)
if(buttons & IN_ATTACK)
{
  g_FireFlamethrower[id] = 1
 
  buttons &= ~IN_ATTACK
  set_uc(uc_handle, UC_Buttons, buttons)
} else
g_FireFlamethrower[id] = 0

return FMRES_HANDLED
}
public fw_PlayerPostThink(id)
{
if(!is_user_connected(id) || !is_user_alive(id))
  return FMRES_IGNORED

if(!g_hasFlamethrower[id] || !g_Activated[id])
  return FMRES_IGNORED

if(entity_get_int(id, EV_INT_waterlevel) > 1)
  return FMRES_IGNORED

if(has_shield(id))
{
  return FMRES_IGNORED
}

if(g_BuyFuel[id])
{
  if((g_Delay[id] + 0.2) < get_gametime())
  {
   buy_fuel(id)
   g_Delay[id] = get_gametime()
  }
}

if(g_FireFlamethrower[id])
{
  if(g_FuelTank[id] > 0)
  {
   if((g_Delay[id] + 0.2) < get_gametime())
   {
    g_FuelTank[id] -= 1
    g_Delay[id] = get_gametime()
   }
  
   new Float:fOrigin[3], Float:fVelocity[3]
   entity_get_vector(id,EV_VEC_origin, fOrigin)
   VelocityByAim(id, 35, fVelocity)
  
   new Float:fTemp[3], iFireOrigin[3]
   xs_vec_add(fOrigin, fVelocity, fTemp)
   FVecIVec(fTemp, iFireOrigin)
  
   new Float:fFireVelocity[3], iFireVelocity[3]
   VelocityByAim(id, get_pcvar_num(cvar_damage_dis), fFireVelocity)
   FVecIVec(fFireVelocity, iFireVelocity)
  
   create_flames_n_sounds(id, iFireOrigin, iFireVelocity)
  
   new doDamage
   switch(get_cvar_num("mp_friendlyfire"))
   {
    case 0: doDamage = 0
	 case 1: doDamage = 1
    }
  
   show_fuel_percentage(id)
   direct_damage(id, doDamage)
   indirect_damage(id, doDamage)
   custom_weapon_shot(wpn_ft, id)
  } else
  client_print(id, print_center, "Brak Benzyny")
}
return FMRES_IGNORED
}
public think_Flamethrower(ent)
{
if(is_valid_ent(ent) && entity_get_float(ent, EV_FL_health) < 950.0)
{
  new Float:fOrigin[3], iOrigin[3]
  entity_get_vector(ent, EV_VEC_origin, fOrigin)
  FVecIVec(fOrigin, iOrigin)
 
  message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  write_byte(99)
  write_short(ent)
  message_end()
 
  message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  write_byte(3)
  write_coord(iOrigin[0])
  write_coord(iOrigin[1])
  write_coord(iOrigin[2])
  write_short(sprite_xplo)
  write_byte(50)
  write_byte(15)
  write_byte(0)
  message_end()
 
  RadiusDamage(fOrigin, get_pcvar_num(cvar_xplode_dmg), entity_get_int(ent, EV_INT_iuser4))
  remove_entity(ent)
}
if(is_valid_ent(ent)) entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.01)
}
public create_flames_n_sounds(id, origin[3], velocity[3])
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(120)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_coord(velocity[0])
write_coord(velocity[1])
write_coord(velocity[2] + 5)
write_short(sprite_fire)
write_byte(1)
write_byte(10)
write_byte(1)
write_byte(5)
message_end()

emit_sound(id, CHAN_WEAPON, "flamethrower.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
public direct_damage(id, doDamage)
{
new ent, body
get_user_aiming(id, ent, body, get_pcvar_num(cvar_damage_dis) + 500)

if(ent > 0 && is_user_alive(ent))
{
  if(!doDamage)
  {
   if(get_user_team(id) != get_user_team(ent))
   {
    damage_user(id, ent, get_pcvar_num(cvar_damage))
    custom_weapon_dmg(wpn_ft, id, ent, get_pcvar_num(cvar_damage))
   }
  }
  else
  {
   damage_user(id, ent, get_pcvar_num(cvar_damage))
   custom_weapon_dmg(wpn_ft, id, ent, get_pcvar_num(cvar_damage))
  }
}
}
public indirect_damage(id, doDamage)
{
new Players[32], iNum
get_players(Players, iNum, "a")
for(new i = 0; i < iNum; ++i) if(id != Players[i])
{
new target = Players[i]

new Float:fOrigin[3], Float:fOrigin2[3]
entity_get_vector(id,EV_VEC_origin, fOrigin)
entity_get_vector(target, EV_VEC_origin, fOrigin2)

new temp[3], Float:fAim[3]
get_user_origin(id, temp, 3)
IVecFVec(temp, fAim)

new Float:fDistance = get_pcvar_num(cvar_damage_dis) + 500.0
if(get_distance_f(fOrigin, fOrigin2) > fDistance)
  continue
 
  new iDistance = get_distance_to_line(fOrigin, fOrigin2, fAim)
  if(iDistance > get_pcvar_num(cvar_splash_dis) || iDistance < 0 || !fm_is_ent_visible(id, target))
   continue
 
  if(!doDamage)
  {
   if(get_user_team(id) != get_user_team(target))
   {
    damage_user(id, target, get_pcvar_num(cvar_damage))
    custom_weapon_dmg(wpn_ft, id, target, get_pcvar_num(cvar_damage))
   }
  }
  else
  {
   damage_user(id, target, get_pcvar_num(cvar_damage) / 2)
   custom_weapon_dmg(wpn_ft, id, target, get_pcvar_num(cvar_damage) / 2)
  }
}
}
public buy_fuel(id)
{
if(get_pcvar_num(cvar_buyzone) && !g_buyzone[id])
  return PLUGIN_CONTINUE

new Float:fBuyTime = get_cvar_float("mp_buytime") * 60
if(get_pcvar_num(cvar_buytime) && !g_freezetime
&& (get_gametime() - g_starttime) > fBuyTime)
return PLUGIN_CONTINUE

if(g_FuelTank[id] >= get_pcvar_num(cvar_fueltank))
  return PLUGIN_CONTINUE

new iMoney = cs_get_user_money(id)
new iCost = get_pcvar_num(cvar_fuelcost)
if(iMoney >= iCost)
{
  g_FuelTank[id] += 1
  show_fuel_percentage(id)
  cs_set_user_money(id, iMoney - iCost)
 
  return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public drop_flamethrower(id)
{
new Float:fVelocity[3], Float:fOrigin[3]
entity_get_vector(id, EV_VEC_origin, fOrigin)
VelocityByAim(id, 34, fVelocity)

fOrigin[0] += fVelocity[0]
fOrigin[1] += fVelocity[1]

VelocityByAim(id, 300, fVelocity)

new ent = create_entity("info_target")
if(is_valid_ent(ent))
{
  entity_set_string(ent, EV_SZ_classname, "flamethrower")
  entity_set_model(ent, "models/w_flamethrower.mdl")
  entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS)
  entity_set_int(ent, EV_INT_solid, SOLID_TRIGGER)
  entity_set_vector(ent, EV_VEC_origin, fOrigin)
  entity_set_vector(ent, EV_VEC_velocity, fVelocity)
  entity_set_int(ent, EV_INT_iuser4, g_FuelTank[id])
  entity_set_float(ent, EV_FL_takedamage, 1.0)
  entity_set_float(ent, EV_FL_health, 1000.0)
  entity_set_size(ent, Float:{-2.5, -2.5, -1.5}, Float:{2.5, 2.5, 1.5})
  entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.01)
}

g_FuelTank[id] = 0
g_Activated[id] = 0
g_hasFlamethrower[id] = 0

if(has_shield(id))
  set_shield_model(id)
else
  set_knife_model(id)

return PLUGIN_CONTINUE
}
public task_ActivateFlamethrower(id)
{
if(!is_user_connected(id) || !is_user_alive(id))
  return PLUGIN_CONTINUE

new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
if(weaponID == CSW_KNIFE) g_Activated[id] = 1

return PLUGIN_CONTINUE
}
public show_fuel_percentage(id)
{
set_hudmessage(255, 170, 0, 0.91, 0.95, _, _, 1.0, _, _, 4)
show_hudmessage(id, "Benzyna: %d%%", get_percent(g_FuelTank[id], get_pcvar_num(cvar_fueltank)))
}
public set_flamethrower_model(id)
{
entity_set_string(id, EV_SZ_viewmodel, "models/v_flamethrower.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/p_flamethrower.mdl")
}
public set_knife_model(id)
{
entity_set_string(id, EV_SZ_viewmodel, "models/v_knife.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/p_knife.mdl")
}
public set_shield_model(id)
{
entity_set_string(id, EV_SZ_viewmodel, "models/shield/v_shield_knife.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/shield/p_shield_knife.mdl")
}
stock damage_user(id, victim, damage)
{
new iHealth = get_user_health(victim)
if(iHealth > damage)
  fakedamage(victim, "weapon_flamethrower", float(damage), DMG_BURN)
else
{
  new iXp = get_pcvar_num(cvar_expcod);
  set_hudmessage(255, 212, 0, -1.0, 0.30, 0, 2.0, 2.0, 0.05, 0.05, 4)
  show_hudmessage(0, "+ %d", iXp);
  cod_set_user_xp(id,cod_get_user_xp(id) + iXp)
 
  user_silentkill(victim)
  make_deathmsg(id, victim, 0, "flamethrower")
 
  new iOrigin[3]
  get_user_origin(victim, iOrigin, 0)
 
  message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  write_byte(17)
  write_coord(iOrigin[0])
  write_coord(iOrigin[1])
  write_coord(iOrigin[2] + 10)
  write_short(sprite_burn)
  write_byte(30)
  write_byte(40)
  message_end()
 
  if(get_user_team(id) != get_user_team(victim))
  {
   set_user_frags(id, get_user_frags(id) + 1)
   cs_set_user_money(id, cs_get_user_money(id) + 300)
  }
  else
  {
   set_user_frags(id, get_user_frags(id) - 1)
   cs_set_user_money(id, cs_get_user_money(id) - 300)
  }
 
  message_begin(MSG_ALL, get_user_msgid("ScoreInfo"))
  write_byte(id)
  write_short(get_user_frags(id))
  write_short(get_user_deaths(id))
  write_short(0)
  write_short(get_user_team(id))
  message_end()
 
  message_begin(MSG_ALL, get_user_msgid("ScoreInfo"))
  write_byte(victim)
  write_short(get_user_frags(victim))
  write_short(get_user_deaths(victim))
  write_short(0)
  write_short(get_user_team(victim))
  message_end()
}
}
stock get_percent(value, tvalue) {	  
return floatround(floatmul(float(value) / float(tvalue) , 100.0)) 
}
stock get_distance_to_line(Float:pos_start[3], Float:pos_end[3], Float:pos_object[3]) 
{ 
new Float:vec_start_end[3], Float:vec_start_object[3], Float:vec_end_object[3], Float:vec_end_start[3]
xs_vec_sub(pos_end, pos_start, vec_start_end)   // vector from start to end
xs_vec_sub(pos_object, pos_start, vec_start_object)  // vector from end to object
xs_vec_sub(pos_start, pos_end, vec_end_start)   // vector from end to start
xs_vec_sub(pos_end, pos_object, vec_end_object)   // vector object to end

new Float:len_start_object = getVecLen(vec_start_object)
new Float:angle_start = floatacos(xs_vec_dot(vec_start_end, vec_start_object) / (getVecLen(vec_start_end) * len_start_object), degrees) 
new Float:angle_end = floatacos(xs_vec_dot(vec_end_start, vec_end_object) / (getVecLen(vec_end_start) * getVecLen(vec_end_object)), degrees) 

if(angle_start <= 90.0 && angle_end <= 90.0)
  return floatround(len_start_object * floatsin(angle_start, degrees))
return -1 
}
stock Float:getVecLen(Float:Vec[3])
{
new Float:VecNull[3] = {0.0, 0.0, 0.0}
new Float:len = get_distance_f(Vec, VecNull)
return len
}
stock bool:fm_is_ent_visible(index, entity)
{
new Float:origin[3], Float:view_ofs[3], Float:eyespos[3]
pev(index, pev_origin, origin)
pev(index, pev_view_ofs, view_ofs)
xs_vec_add(origin, view_ofs, eyespos)

new Float:entpos[3]
pev(entity, pev_origin, entpos)
engfunc(EngFunc_TraceLine, eyespos, entpos, 0, index)

switch(pev(entity, pev_solid)) {
  case SOLID_BBOX..SOLID_BSP: return global_get(glb_trace_ent) == entity
  }

new Float:fraction
global_get(glb_trace_fraction, fraction)
if(fraction == 1.0)
  return true

return false
}
stock bool:has_shield(id)
{
new modelName[32]
entity_get_string(id, EV_SZ_viewmodel, modelName, 31)

if(containi(modelName, "v_shield_") != -1)
  return true

return false
}
public cod_class_enabled(id){	  
	    ColorChat(id, RED, "^x04Klasa^x03 %s^x04 By^x01 Sajjuk", nazwa); //Gdy gracz nie ma flagi wyœwietli mu komunikat
	    if(!(get_user_flags(id) & ADMIN_LEVEL_G)) //FLAGA
	    {
			    ColorChat(id, RED, "^x03[%s]^x04 Jest^x03 klasa premium", nazwa) //Znowu info ze przykładowa klasa jest PREMIUM
			    return COD_STOP;
	    }
	    ma_klase[id] = true;

g_hasFlamethrower[id] = 1
g_FuelTank[id] = get_pcvar_num(cvar_fueltank)

new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
if(weaponID == CSW_KNIFE)
{
  g_Activated[id] = true
  set_flamethrower_model(id)
}

client_cmd(id, "spk items/ammopickup2")
client_print(id, print_chat, "Masz miotacz ognia nacisnij 3 aby uzyc")
return COD_CONTINUE;
}
public cod_class_disabled(id){
ma_klase[id] = false;
g_hasFlamethrower[id] = 0
}
public Spawn(id)
{
if(is_user_connected(id) && ma_klase[id])
{
  g_hasFlamethrower[id] = 1
  g_FuelTank[id] = get_pcvar_num(cvar_fueltank)
 
  new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
  if(weaponID == CSW_KNIFE)
  {
   g_Activated[id] = true
   set_flamethrower_model(id)
  }
 
  client_cmd(id, "spk items/ammopickup2")
  client_print(id, print_chat, "Masz miotacz ognia nacisnij 3 aby uzyc")
}

return PLUGIN_CONTINUE;

}

Użytkownik P@trYk^.^ edytował ten post 07.04.2012 21:14

  • +
  • -
  • 0

#2 Ojciec Dyrektor

    papa smerf.

  • Przyjaciel

Reputacja: 477
Wszechobecny

  • Postów:3 035
  • Imię:Paweł
  • Lokalizacja:Rabka-Zdrój
Offline

Napisano 07.04.2012 21:09

Automatyczna wiadomość


Ten temat został przeniesiony z forum:
AMX Mod X > Pytania
do
Scripting AMXX > Pluginy


  • +
  • -
  • 0

#3 P@trYk^.^

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:299
  • Imię:Patryk
  • Lokalizacja:Piła
Offline

Napisano 08.04.2012 12:41

Pomóżcie. Proszę :D
  • +
  • -
  • 0

#4 Kamyk345D

    Zaawansowany

  • Zbanowany

Reputacja: 11
Początkujący

  • Postów:125
  • Imię:Kamil
  • Lokalizacja:Kg
Offline

Napisano 08.04.2012 15:47

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#include <engine>
#include <fun>
#include <csx>
#include <xs>
#include <hamsandwich>
#include <codmod>
#include <ColorChat>
new const nazwa[] = "Miotacz";
new const opis[] = "Posiada miotacz ognia zamiast noza!";
new const bronie = 1<<CSW_M3;
new const zdrowie = 15;
new const kondycja = 20;
new const inteligencja = 10;
new const wytrzymalosc = 5;
new bool:ma_klase[33];
new wpn_ft
new sprite_fire
new sprite_burn
new sprite_xplo
new g_freezetime
new g_restarted
new Float:g_starttime
new cvar_enabled
new cvar_client_buy
new cvar_damage
new cvar_xplode_dmg
new cvar_cost
new cvar_fuelcost
new cvar_fueltank
new cvar_buyzone
new cvar_buytime
new cvar_damage_dis
new cvar_splash_dis
new g_buyzone[33]
new g_FuelTank[33]
new g_Activated[33]
new Float:g_Delay[33]
new g_hasFlamethrower[33]
new g_FireFlamethrower[33]
new g_BuyFuel[33]
new cvar_expcod
static PLUGIN_NAME[] = "Miotacz ognia for cod"
static PLUGIN_AUTHOR[] = "Cheap_Suit eited by Crew"
static PLUGIN_VERSION[] = "1.1"
public plugin_init()
{
RegisterHam(Ham_Spawn, "player", "Spawn", 1);
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
register_cvar("ft_version", PLUGIN_VERSION, FCVAR_SERVER)
cvar_enabled = register_cvar("ft_enable", "1")
cvar_fueltank = register_cvar("ft_fueltank", "50")
cvar_damage = register_cvar("ft_damage", "2")
cvar_xplode_dmg = register_cvar("ft_xplode_dmg", "30")
cvar_damage_dis = register_cvar("ft_damage_dis", "100")
cvar_splash_dis = register_cvar("ft_splash_dis", "40")
cvar_expcod = register_cvar("cod_xpmiotacz", "20")
register_event("DeathMsg", "Event_DeathMsg", "a")
register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
register_event("StatusIcon", "Event_BuyZone", "b", "2=buyzone")
register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0")
register_event("TextMsg", "Event_WeaponDrop", "be", "2=#Weapon_Cannot_Be_Dropped")
register_event("TextMsg", "Event_GameRestart", "a", "2=#Game_Commencing", "2=#Game_will_restart_in")
register_logevent("LogEvent_RoundStart", 2, "0=World triggered", "1=Round_Start")
register_forward(FM_CmdStart, "fw_CmdStart")
register_forward(FM_PlayerPostThink, "fw_PlayerPostThink")
register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
register_think("flamethrower", "think_Flamethrower")
register_touch("flamethrower", "player", "touch_Flamethrower")
wpn_ft = custom_weapon_add("weapon_flamethrower", 0, "flamethrower")
if(!get_pcvar_num(cvar_enabled)) pause("ad", PLUGIN_NAME)
}
public plugin_precache()
{
precache_sound("flamethrower.wav")
precache_sound("items/ammopickup2.wav")
sprite_xplo = precache_model("sprites/zerogxplode.spr")
sprite_fire = precache_model("sprites/explode1.spr")
sprite_burn = precache_model("sprites/xfire.spr")
precache_model("models/v_knife.mdl")
precache_model("models/p_knife.mdl")
precache_model("models/shield/v_shield_knife.mdl")
precache_model("models/shield/p_shield_knife.mdl")
precache_model("models/w_flamethrower.mdl")
precache_model("models/v_flamethrower.mdl")
precache_model("models/p_flamethrower.mdl")
}
public cmd_GiveFlamethrowers(id, level, cid)
{
if(!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new Arg1[64], target
read_argv(1, Arg1, 63)
new adminName[32]
get_user_name(id, adminName, 31)
new targetTeam
new Players[32], iNum
if(Arg1[0] == '@')
{
if(equali(Arg1[1], "all"))
{
targetTeam = 0
get_players(Players, iNum, "a")
}
else if(equali(Arg1[1], "t"))
{
targetTeam = 1
get_players(Players, iNum, "ae" , "terrorist")

}
else if(equali(Arg1[1], "ct"))
{
targetTeam = 2
get_players(Players, iNum, "ae" , "ct")
}

for(new i = 0; i < iNum; ++i)
{
target = Players[i]

g_hasFlamethrower[target] = 1
g_FuelTank[target] = get_pcvar_num(cvar_fueltank)

new temp[2], weaponID = get_user_weapon(target, temp[0], temp[1])
if(weaponID == CSW_KNIFE)
{
g_Activated[target] = true
set_flamethrower_model(target)
}

client_cmd(target, "spk items/ammopickup2")
client_print(target, print_chat, "You have been given a flamethrower (press 3 to use)")
}

switch(targetTeam)
{
case 0: client_print(0, print_chat, "Admin: %s has given everyone a flamethrower", adminName)
case 1: client_print(0, print_chat, "Admin: %s has given all terrorist a flamethrower", adminName)
case 2: client_print(0, print_chat, "Admin: %s has given all ct's a flamethrower", adminName)
}
}
else
{
target = cmd_target(id, Arg1, 0)
if(!is_user_connected(target) || !is_user_alive(target))
return PLUGIN_HANDLED

new targetName[32]
get_user_name(target, targetName, 31)

g_hasFlamethrower[target] = 1
g_FuelTank[target] = get_pcvar_num(cvar_fueltank)

new temp[2], weaponID = get_user_weapon(target, temp[0], temp[1])
if(weaponID == CSW_KNIFE)
{
g_Activated[target] = true
set_flamethrower_model(target)
entity_set_int(id, EV_INT_weaponanim, 9)
}

client_cmd(target, "spk items/ammopickup2")
client_print(target, print_chat, "You have been given a flamethrower (press 3 to use)")
client_print(target, print_chat, "Admin: %s has given you a flamethrower", adminName)
}
return PLUGIN_HANDLED
}
public cmd_BuyFlamethrower(id)
{
if(!get_pcvar_num(cvar_client_buy))
return PLUGIN_CONTINUE
if(get_pcvar_num(cvar_buyzone))
{
if(!g_buyzone[id])
{
client_print(id, print_center, "You need to be in the buyzone")
return PLUGIN_HANDLED
}
}
if(get_pcvar_num(cvar_buytime))
{
new Float:fBuyTime = get_cvar_float("mp_buytime") * 60
if(!g_freezetime && (get_gametime() - g_starttime) > fBuyTime)
{
client_print(id, print_center, "%d seconds have passed.^nYou can't buy anything now!", floatround(fBuyTime))
return PLUGIN_HANDLED
}
}
new iMoney = cs_get_user_money(id)
new iCost = get_pcvar_num(cvar_cost)
if(!is_user_alive(id))
client_print(id, print_center, "You cant buy when your dead!")
else if(g_hasFlamethrower[id])
client_print(id, print_center, "You already own that weapon.")
else if(iMoney < iCost)
client_print(id, print_center, "Insufficient funds! ($%d)", iCost)
else
{
g_hasFlamethrower[id] = 1
g_FuelTank[id] = get_pcvar_num(cvar_fueltank)

new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
if(weaponID == CSW_KNIFE)
{
g_Activated[id] = true
set_flamethrower_model(id)
}

cs_set_user_money(id, iMoney - iCost)
client_cmd(id, "spk items/ammopickup2")
client_print(id, print_chat, "You bought a flamethrower (press 3 to use)")
}
return PLUGIN_HANDLED
}
public Event_BuyZone(id) {
g_buyzone[id] = read_data(1)
}
public Event_GameRestart() {
g_restarted = 1
}
public Event_NewRound()
{
if(g_restarted)
{
new Players[32], iNum = 0
get_players(Players, iNum)
for(new i = 0; i < iNum; i++)
{
new id = Players[i]

g_FuelTank[id] = 0
g_Activated[id] = 0
g_hasFlamethrower[id] = 0

new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
if(weaponID == CSW_KNIFE) set_knife_model(id)

g_restarted = 0
}
}
new flamethrowers = -1
while((flamethrowers = find_ent_by_class(flamethrowers, "flamethrower")))
remove_entity(flamethrowers)
g_freezetime = 1
}
public LogEvent_RoundStart()
{
g_freezetime = 0
g_starttime = get_gametime()
}
public Event_WeaponDrop(id)
{
if(!is_user_alive(id) || !g_Activated[id])
return PLUGIN_CONTINUE
client_print(id, print_center, "")
return PLUGIN_HANDLED
}
public Event_DeathMsg()
{
new id = read_data(2)
if(!is_user_connected(id) || !g_hasFlamethrower[id]) {
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public Event_CurWeapon(id)
{
if(!is_user_alive(id) || !g_hasFlamethrower[id])
return PLUGIN_CONTINUE
new WeaponID = read_data(2)
switch(WeaponID)
{
case CSW_KNIFE:
{
set_task(0.3, "task_ActivateFlamethrower", id)
set_flamethrower_model(id)
entity_set_int(id, EV_INT_weaponanim, 9)
}
default: g_Activated[id] = 0
}
return PLUGIN_CONTINUE
}
public touch_Flamethrower(ent, id)
{
if(!is_valid_ent(ent) || !is_user_alive(id))
return PLUGIN_CONTINUE
if(g_hasFlamethrower[id])
return PLUGIN_CONTINUE
if(has_shield(id))
return PLUGIN_CONTINUE
g_hasFlamethrower[id] = 1
client_cmd(id, "spk items/ammopickup2")
g_FuelTank[id] = entity_get_int(ent, EV_INT_iuser4)
show_fuel_percentage(id)
new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
if(weaponID == CSW_KNIFE)
{
g_Activated[id] = true
set_flamethrower_model(id)
entity_set_int(id, EV_INT_weaponanim, 9)
}
remove_entity(ent)
return PLUGIN_CONTINUE
}
public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
{
if(!g_hasFlamethrower[id] || !g_Activated[id])
return FMRES_IGNORED
set_cd(cd_handle, CD_ID, 0)
return FMRES_HANDLED
}
public fw_CmdStart(id, uc_handle, seed)
{
if(!g_hasFlamethrower[id] || !g_Activated[id])
return FMRES_IGNORED
new buttons = get_uc(uc_handle, UC_Buttons)
if(buttons & IN_ATTACK)
{
g_FireFlamethrower[id] = 1

buttons &= ~IN_ATTACK
set_uc(uc_handle, UC_Buttons, buttons)
} else
g_FireFlamethrower[id] = 0
return FMRES_HANDLED
}
public fw_PlayerPostThink(id)
{
if(!is_user_connected(id) || !is_user_alive(id))
return FMRES_IGNORED
if(!g_hasFlamethrower[id] || !g_Activated[id])
return FMRES_IGNORED
if(entity_get_int(id, EV_INT_waterlevel) > 1)
return FMRES_IGNORED
if(has_shield(id))
{
return FMRES_IGNORED
}
if(g_BuyFuel[id])
{
if((g_Delay[id] + 0.2) < get_gametime())
{
buy_fuel(id)
g_Delay[id] = get_gametime()
}
}
if(g_FireFlamethrower[id])
{
if(g_FuelTank[id] > 0)
{
if((g_Delay[id] + 0.2) < get_gametime())
{
g_FuelTank[id] -= 1
g_Delay[id] = get_gametime()
}

new Float:fOrigin[3], Float:fVelocity[3]
entity_get_vector(id,EV_VEC_origin, fOrigin)
VelocityByAim(id, 35, fVelocity)

new Float:fTemp[3], iFireOrigin[3]
xs_vec_add(fOrigin, fVelocity, fTemp)
FVecIVec(fTemp, iFireOrigin)

new Float:fFireVelocity[3], iFireVelocity[3]
VelocityByAim(id, get_pcvar_num(cvar_damage_dis), fFireVelocity)
FVecIVec(fFireVelocity, iFireVelocity)

create_flames_n_sounds(id, iFireOrigin, iFireVelocity)

new doDamage
switch(get_cvar_num("mp_friendlyfire"))
{
case 0: doDamage = 0
case 1: doDamage = 1
}

show_fuel_percentage(id)
direct_damage(id, doDamage)
indirect_damage(id, doDamage)
custom_weapon_shot(wpn_ft, id)
} else
client_print(id, print_center, "Brak Benzyny")
}
return FMRES_IGNORED
}
public think_Flamethrower(ent)
{
if(is_valid_ent(ent) && entity_get_float(ent, EV_FL_health) < 950.0)
{
new Float:fOrigin[3], iOrigin[3]
entity_get_vector(ent, EV_VEC_origin, fOrigin)
FVecIVec(fOrigin, iOrigin)

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(99)
write_short(ent)
message_end()

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(3)
write_coord(iOrigin[0])
write_coord(iOrigin[1])
write_coord(iOrigin[2])
write_short(sprite_xplo)
write_byte(50)
write_byte(15)
write_byte(0)
message_end()

RadiusDamage(fOrigin, get_pcvar_num(cvar_xplode_dmg), entity_get_int(ent, EV_INT_iuser4))
remove_entity(ent)
}
if(is_valid_ent(ent)) entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.01)
}
public create_flames_n_sounds(id, origin[3], velocity[3])
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(120)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_coord(velocity[0])
write_coord(velocity[1])
write_coord(velocity[2] + 5)
write_short(sprite_fire)
write_byte(1)
write_byte(10)
write_byte(1)
write_byte(5)
message_end()
emit_sound(id, CHAN_WEAPON, "flamethrower.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
public direct_damage(id, doDamage)
{
new ent, body
get_user_aiming(id, ent, body, get_pcvar_num(cvar_damage_dis) + 500)
if(ent > 0 && is_user_alive(ent))
{
if(!doDamage)
{
if(get_user_team(id) != get_user_team(ent))
{
damage_user(id, ent, get_pcvar_num(cvar_damage))
custom_weapon_dmg(wpn_ft, id, ent, get_pcvar_num(cvar_damage))
}
}
else
{
damage_user(id, ent, get_pcvar_num(cvar_damage))
custom_weapon_dmg(wpn_ft, id, ent, get_pcvar_num(cvar_damage))
}
}
}
public indirect_damage(id, doDamage)
{
new Players[32], iNum
get_players(Players, iNum, "a")
for(new i = 0; i < iNum; ++i) if(id != Players[i])
{
new target = Players[i]
new Float:fOrigin[3], Float:fOrigin2[3]
entity_get_vector(id,EV_VEC_origin, fOrigin)
entity_get_vector(target, EV_VEC_origin, fOrigin2)
new temp[3], Float:fAim[3]
get_user_origin(id, temp, 3)
IVecFVec(temp, fAim)
new Float:fDistance = get_pcvar_num(cvar_damage_dis) + 500.0
if(get_distance_f(fOrigin, fOrigin2) > fDistance)
continue

new iDistance = get_distance_to_line(fOrigin, fOrigin2, fAim)
if(iDistance > get_pcvar_num(cvar_splash_dis) || iDistance < 0 || !fm_is_ent_visible(id, target))
continue

if(!doDamage)
{
if(get_user_team(id) != get_user_team(target))
{
damage_user(id, target, get_pcvar_num(cvar_damage))
custom_weapon_dmg(wpn_ft, id, target, get_pcvar_num(cvar_damage))
}
}
else
{
damage_user(id, target, get_pcvar_num(cvar_damage) / 2)
custom_weapon_dmg(wpn_ft, id, target, get_pcvar_num(cvar_damage) / 2)
}
}
}
public buy_fuel(id)
{
if(get_pcvar_num(cvar_buyzone) && !g_buyzone[id])
return PLUGIN_CONTINUE
new Float:fBuyTime = get_cvar_float("mp_buytime") * 60
if(get_pcvar_num(cvar_buytime) && !g_freezetime
&& (get_gametime() - g_starttime) > fBuyTime)
return PLUGIN_CONTINUE
if(g_FuelTank[id] >= get_pcvar_num(cvar_fueltank))
return PLUGIN_CONTINUE
new iMoney = cs_get_user_money(id)
new iCost = get_pcvar_num(cvar_fuelcost)
if(iMoney >= iCost)
{
g_FuelTank[id] += 1
show_fuel_percentage(id)
cs_set_user_money(id, iMoney - iCost)

return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public drop_flamethrower(id)
{
new Float:fVelocity[3], Float:fOrigin[3]
entity_get_vector(id, EV_VEC_origin, fOrigin)
VelocityByAim(id, 34, fVelocity)
fOrigin[0] += fVelocity[0]
fOrigin[1] += fVelocity[1]
VelocityByAim(id, 300, fVelocity)
new ent = create_entity("info_target")
if(is_valid_ent(ent))
{
entity_set_string(ent, EV_SZ_classname, "flamethrower")
entity_set_model(ent, "models/w_flamethrower.mdl")
entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS)
entity_set_int(ent, EV_INT_solid, SOLID_TRIGGER)
entity_set_vector(ent, EV_VEC_origin, fOrigin)
entity_set_vector(ent, EV_VEC_velocity, fVelocity)
entity_set_int(ent, EV_INT_iuser4, g_FuelTank[id])
entity_set_float(ent, EV_FL_takedamage, 1.0)
entity_set_float(ent, EV_FL_health, 1000.0)
entity_set_size(ent, Float:{-2.5, -2.5, -1.5}, Float:{2.5, 2.5, 1.5})
entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.01)
}
g_FuelTank[id] = 0
g_Activated[id] = 0
g_hasFlamethrower[id] = 0
if(has_shield(id))
set_shield_model(id)
else
set_knife_model(id)
return PLUGIN_CONTINUE
}
public task_ActivateFlamethrower(id)
{
if(!is_user_connected(id) || !is_user_alive(id))
return PLUGIN_CONTINUE
new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
if(weaponID == CSW_KNIFE) g_Activated[id] = 1
return PLUGIN_CONTINUE
}
public show_fuel_percentage(id)
{
set_hudmessage(255, 170, 0, 0.91, 0.95, _, _, 1.0, _, _, 4)
show_hudmessage(id, "Benzyna: %d%%", get_percent(g_FuelTank[id], get_pcvar_num(cvar_fueltank)))
}
public set_flamethrower_model(id)
{
entity_set_string(id, EV_SZ_viewmodel, "models/v_flamethrower.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/p_flamethrower.mdl")
}
public set_knife_model(id)
{
entity_set_string(id, EV_SZ_viewmodel, "models/v_knife.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/p_knife.mdl")
}
public set_shield_model(id)
{
entity_set_string(id, EV_SZ_viewmodel, "models/shield/v_shield_knife.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/shield/p_shield_knife.mdl")
}
stock damage_user(id, victim, damage)
{
new iHealth = get_user_health(victim)
if(iHealth > damage)
fakedamage(victim, "weapon_flamethrower", float(damage), DMG_BURN)
else
{
new iXp = get_pcvar_num(cvar_expcod);
set_hudmessage(255, 212, 0, -1.0, 0.30, 0, 2.0, 2.0, 0.05, 0.05, 4)
show_hudmessage(0, "+ %d", iXp);
cod_set_user_xp(id,cod_get_user_xp(id) + iXp)

user_silentkill(victim)
make_deathmsg(id, victim, 0, "flamethrower")

new iOrigin[3]
get_user_origin(victim, iOrigin, 0)

message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(17)
write_coord(iOrigin[0])
write_coord(iOrigin[1])
write_coord(iOrigin[2] + 10)
write_short(sprite_burn)
write_byte(30)
write_byte(40)
message_end()

if(get_user_team(id) != get_user_team(victim))
{
set_user_frags(id, get_user_frags(id) + 1)
cs_set_user_money(id, cs_get_user_money(id) + 300)
}
else
{
set_user_frags(id, get_user_frags(id) - 1)
cs_set_user_money(id, cs_get_user_money(id) - 300)
}

message_begin(MSG_ALL, get_user_msgid("ScoreInfo"))
write_byte(id)
write_short(get_user_frags(id))
write_short(get_user_deaths(id))
write_short(0)
write_short(get_user_team(id))
message_end()

message_begin(MSG_ALL, get_user_msgid("ScoreInfo"))
write_byte(victim)
write_short(get_user_frags(victim))
write_short(get_user_deaths(victim))
write_short(0)
write_short(get_user_team(victim))
message_end()
}
}
stock get_percent(value, tvalue) {
return floatround(floatmul(float(value) / float(tvalue) , 100.0))
}
stock get_distance_to_line(Float:pos_start[3], Float:pos_end[3], Float:pos_object[3])
{
new Float:vec_start_end[3], Float:vec_start_object[3], Float:vec_end_object[3], Float:vec_end_start[3]
xs_vec_sub(pos_end, pos_start, vec_start_end) // vector from start to end
xs_vec_sub(pos_object, pos_start, vec_start_object) // vector from end to object
xs_vec_sub(pos_start, pos_end, vec_end_start) // vector from end to start
xs_vec_sub(pos_end, pos_object, vec_end_object) // vector object to end
new Float:len_start_object = getVecLen(vec_start_object)
new Float:angle_start = floatacos(xs_vec_dot(vec_start_end, vec_start_object) / (getVecLen(vec_start_end) * len_start_object), degrees)
new Float:angle_end = floatacos(xs_vec_dot(vec_end_start, vec_end_object) / (getVecLen(vec_end_start) * getVecLen(vec_end_object)), degrees)
if(angle_start <= 90.0 && angle_end <= 90.0)
return floatround(len_start_object * floatsin(angle_start, degrees))
return -1
}
stock Float:getVecLen(Float:Vec[3])
{
new Float:VecNull[3] = {0.0, 0.0, 0.0}
new Float:len = get_distance_f(Vec, VecNull)
return len
}
stock bool:fm_is_ent_visible(index, entity)
{
new Float:origin[3], Float:view_ofs[3], Float:eyespos[3]
pev(index, pev_origin, origin)
pev(index, pev_view_ofs, view_ofs)
xs_vec_add(origin, view_ofs, eyespos)
new Float:entpos[3]
pev(entity, pev_origin, entpos)
engfunc(EngFunc_TraceLine, eyespos, entpos, 0, index)
switch(pev(entity, pev_solid)) {
case SOLID_BBOX..SOLID_BSP: return global_get(glb_trace_ent) == entity
}
new Float:fraction
global_get(glb_trace_fraction, fraction)
if(fraction == 1.0)
return true
return false
}
stock bool:has_shield(id)
{
new modelName[32]
entity_get_string(id, EV_SZ_viewmodel, modelName, 31)
if(containi(modelName, "v_shield_") != -1)
return true
return false
}
public cod_class_enabled(id){
ColorChat(id, RED, "^x04Klasa^x03 %s^x04 By^x01 Sajjuk", nazwa); //Gdy gracz nie ma flagi wyœwietli mu komunikat
if(!(get_user_flags(id) & ADMIN_ALL)) //FLAGA
{
ColorChat(id, RED, "^x03[%s]^x04 Jest^x03 klasa premium", nazwa) //Znowu info ze przykładowa klasa jest PREMIUM
return COD_STOP;
}
ma_klase[id] = true;
g_hasFlamethrower[id] = 1
g_FuelTank[id] = get_pcvar_num(cvar_fueltank)
new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
if(weaponID == CSW_KNIFE)
{
g_Activated[id] = true
set_flamethrower_model(id)
}
client_cmd(id, "spk items/ammopickup2")
client_print(id, print_chat, "Masz miotacz ognia nacisnij 3 aby uzyc")
return COD_CONTINUE;
}
public cod_class_disabled(id){
ma_klase[id] = false;
g_hasFlamethrower[id] = 0
}
public Spawn(id)
{
if(is_user_connected(id) && ma_klase[id])
{
g_hasFlamethrower[id] = 1
g_FuelTank[id] = get_pcvar_num(cvar_fueltank)

new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
if(weaponID == CSW_KNIFE)
{
g_Activated[id] = true
set_flamethrower_model(id)
}

client_cmd(id, "spk items/ammopickup2")
client_print(id, print_chat, "Masz miotacz ognia nacisnij 3 aby uzyc")
}
return PLUGIN_CONTINUE;
}


#5 P@trYk^.^

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:299
  • Imię:Patryk
  • Lokalizacja:Piła
Offline

Napisano 08.04.2012 17:34

Zamieniłem te kody i dalej jest Premium :/ Jakieś inne rozwiązaniie ?

Użytkownik P@trYk^.^ edytował ten post 08.04.2012 17:40

  • +
  • -
  • 0

#6 Pietras11

    Wszechwiedzący

  • Power User

Reputacja: 89
Zaawansowany

  • Postów:518
  • GG:
  • Steam:steam
  • Imię:Piotr
  • Lokalizacja:Gniezno
Offline

Napisano 08.04.2012 20:04


#include <amxmodx>

#include <amxmisc>

#include <fakemeta>

#include <cstrike>

#include <engine>

#include <fun>

#include <csx>

#include <xs>

#include <hamsandwich>

#include <codmod>

#include <ColorChat>

new const nazwa[] = "Miotacz";

new const opis[] = "Posiada miotacz ognia zamiast noza!";

new const bronie = 1<<CSW_M3;

new const zdrowie = 15;

new const kondycja = 20;

new const inteligencja = 10;

new const wytrzymalosc = 5;

new bool:ma_klase[33];

new wpn_ft

new sprite_fire

new sprite_burn

new sprite_xplo

new g_freezetime

new g_restarted

new Float:g_starttime

new cvar_enabled

new cvar_client_buy

new cvar_damage

new cvar_xplode_dmg

new cvar_cost

new cvar_fuelcost

new cvar_fueltank

new cvar_buyzone

new cvar_buytime

new cvar_damage_dis

new cvar_splash_dis

new g_buyzone[33]

new g_FuelTank[33]

new g_Activated[33]

new Float:g_Delay[33]

new g_hasFlamethrower[33]

new g_FireFlamethrower[33]

new g_BuyFuel[33]

new cvar_expcod

static PLUGIN_NAME[]  = "Miotacz ognia for cod"

static PLUGIN_AUTHOR[]  = "Cheap_Suit eited by Crew"

static PLUGIN_VERSION[] = "1.1"

public plugin_init()

{

RegisterHam(Ham_Spawn, "player", "Spawn", 1);

cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);

register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

register_cvar("ft_version", PLUGIN_VERSION, FCVAR_SERVER)

cvar_enabled  = register_cvar("ft_enable",   "1")

cvar_fueltank  = register_cvar("ft_fueltank",   "50")

cvar_damage = register_cvar("ft_damage",   "2")

cvar_xplode_dmg = register_cvar("ft_xplode_dmg",  "30")

cvar_damage_dis = register_cvar("ft_damage_dis",  "100")

cvar_splash_dis = register_cvar("ft_splash_dis",  "40")

cvar_expcod  = register_cvar("cod_xpmiotacz",  "20")

register_event("DeathMsg",   "Event_DeathMsg",  "a")

register_event("CurWeapon",  "Event_CurWeapon",  "be",  "1=1")

register_event("StatusIcon",  "Event_BuyZone",   "b",  "2=buyzone")

register_event("HLTV",   "Event_NewRound",  "a",  "1=0", "2=0")

register_event("TextMsg",  "Event_WeaponDrop",  "be",  "2=#Weapon_Cannot_Be_Dropped")

register_event("TextMsg",  "Event_GameRestart",  "a",  "2=#Game_Commencing",  "2=#Game_will_restart_in")

register_logevent("LogEvent_RoundStart",	2,  "0=World triggered", "1=Round_Start")

register_forward(FM_CmdStart,  "fw_CmdStart")

register_forward(FM_PlayerPostThink,  "fw_PlayerPostThink")

register_forward(FM_UpdateClientData,  "fw_UpdateClientData_Post", 1)

register_think("flamethrower", "think_Flamethrower")

register_touch("flamethrower", "player", "touch_Flamethrower")

wpn_ft = custom_weapon_add("weapon_flamethrower", 0, "flamethrower")

if(!get_pcvar_num(cvar_enabled)) pause("ad", PLUGIN_NAME)

}

public plugin_precache()

{

precache_sound("flamethrower.wav")

precache_sound("items/ammopickup2.wav")

sprite_xplo = precache_model("sprites/zerogxplode.spr")

sprite_fire = precache_model("sprites/explode1.spr")

sprite_burn = precache_model("sprites/xfire.spr")

precache_model("models/v_knife.mdl")

precache_model("models/p_knife.mdl")

precache_model("models/shield/v_shield_knife.mdl")

precache_model("models/shield/p_shield_knife.mdl")

precache_model("models/w_flamethrower.mdl")

precache_model("models/v_flamethrower.mdl")

precache_model("models/p_flamethrower.mdl")

}

public cmd_GiveFlamethrowers(id, level, cid)

{

if(!cmd_access(id, level, cid, 2))

  return PLUGIN_HANDLED

new Arg1[64], target

read_argv(1, Arg1, 63)

new adminName[32]

get_user_name(id, adminName, 31)

new targetTeam

new Players[32], iNum

if(Arg1[0] == '@')

{

  if(equali(Arg1[1], "all"))

  {

   targetTeam = 0

   get_players(Players, iNum, "a")

  }

  else if(equali(Arg1[1], "t"))

  {

   targetTeam = 1

   get_players(Players, iNum, "ae" , "terrorist")



  }

  else if(equali(Arg1[1], "ct"))

  {

   targetTeam = 2

   get_players(Players, iNum, "ae" , "ct")

  }

  for(new i = 0; i < iNum; ++i)

  {

   target = Players[i]



   g_hasFlamethrower[target] = 1

   g_FuelTank[target] = get_pcvar_num(cvar_fueltank)



   new temp[2], weaponID = get_user_weapon(target, temp[0], temp[1])

   if(weaponID == CSW_KNIFE)

   {

	g_Activated[target] = true

	set_flamethrower_model(target)

   }



   client_cmd(target, "spk items/ammopickup2")

   client_print(target, print_chat, "You have been given a flamethrower (press 3 to use)")

  }

  switch(targetTeam)

  {

   case 0: client_print(0, print_chat, "Admin: %s has given everyone a flamethrower", adminName)

	case 1: client_print(0, print_chat, "Admin: %s has given all terrorist a flamethrower", adminName)

	case 2: client_print(0, print_chat, "Admin: %s has given all ct's a flamethrower", adminName)

   }

}

else

{

  target = cmd_target(id, Arg1, 0)

  if(!is_user_connected(target) || !is_user_alive(target))

   return PLUGIN_HANDLED

  new targetName[32]

  get_user_name(target, targetName, 31)

  g_hasFlamethrower[target] = 1

  g_FuelTank[target] = get_pcvar_num(cvar_fueltank)

  new temp[2], weaponID = get_user_weapon(target, temp[0], temp[1])

  if(weaponID == CSW_KNIFE)

  {

   g_Activated[target] = true

   set_flamethrower_model(target)

   entity_set_int(id, EV_INT_weaponanim, 9)

  }

  client_cmd(target, "spk items/ammopickup2")

  client_print(target, print_chat, "You have been given a flamethrower (press 3 to use)")

  client_print(target, print_chat, "Admin: %s has given you a flamethrower", adminName)

}

return PLUGIN_HANDLED

}

public cmd_BuyFlamethrower(id)

{

if(!get_pcvar_num(cvar_client_buy))

  return PLUGIN_CONTINUE

if(get_pcvar_num(cvar_buyzone))

{

  if(!g_buyzone[id])

  {

   client_print(id, print_center, "You need to be in the buyzone")

   return PLUGIN_HANDLED

  }

}

if(get_pcvar_num(cvar_buytime))

{

  new Float:fBuyTime = get_cvar_float("mp_buytime") * 60

  if(!g_freezetime && (get_gametime() - g_starttime) > fBuyTime)

  {

   client_print(id, print_center, "%d seconds have passed.^nYou can't buy anything now!", floatround(fBuyTime))

   return PLUGIN_HANDLED

  }

}

new iMoney = cs_get_user_money(id)

new iCost = get_pcvar_num(cvar_cost)

if(!is_user_alive(id))

  client_print(id, print_center, "You cant buy when your dead!")

else if(g_hasFlamethrower[id])

  client_print(id, print_center, "You already own that weapon.")

else if(iMoney < iCost)

  client_print(id, print_center, "Insufficient funds! ($%d)", iCost)

else

{

  g_hasFlamethrower[id] = 1

  g_FuelTank[id] = get_pcvar_num(cvar_fueltank)

  new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])

  if(weaponID == CSW_KNIFE)

  {

   g_Activated[id] = true

   set_flamethrower_model(id)

  }

  cs_set_user_money(id, iMoney - iCost)

  client_cmd(id, "spk items/ammopickup2")

  client_print(id, print_chat, "You bought a flamethrower (press 3 to use)")

}

return PLUGIN_HANDLED

}

public Event_BuyZone(id) {

g_buyzone[id] = read_data(1)

}

public Event_GameRestart() {

g_restarted = 1

}

public Event_NewRound()

{

if(g_restarted)

{

  new Players[32], iNum = 0

  get_players(Players, iNum)

  for(new i = 0; i < iNum; i++)

  {

   new id = Players[i]



   g_FuelTank[id] = 0

   g_Activated[id] = 0

   g_hasFlamethrower[id] = 0



   new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])

   if(weaponID == CSW_KNIFE) set_knife_model(id)



   g_restarted = 0

  }

}

new flamethrowers = -1

while((flamethrowers = find_ent_by_class(flamethrowers, "flamethrower")))

  remove_entity(flamethrowers)

g_freezetime = 1

}

public LogEvent_RoundStart()

{

g_freezetime = 0

g_starttime = get_gametime()

}

public Event_WeaponDrop(id)

{

if(!is_user_alive(id) || !g_Activated[id])

  return PLUGIN_CONTINUE

client_print(id, print_center, "")

return PLUGIN_HANDLED

}

public Event_DeathMsg()

{

new id = read_data(2)

if(!is_user_connected(id) || !g_hasFlamethrower[id]) {

  return PLUGIN_CONTINUE

}

return PLUGIN_CONTINUE

}

public Event_CurWeapon(id)

{

if(!is_user_alive(id) || !g_hasFlamethrower[id])

  return PLUGIN_CONTINUE

new WeaponID = read_data(2)

switch(WeaponID)

{

  case CSW_KNIFE:

  {

   set_task(0.3, "task_ActivateFlamethrower", id)

   set_flamethrower_model(id)

   entity_set_int(id, EV_INT_weaponanim, 9)

  }

  default: g_Activated[id] = 0

}

return PLUGIN_CONTINUE

}

public touch_Flamethrower(ent, id)

{

if(!is_valid_ent(ent) || !is_user_alive(id))

  return PLUGIN_CONTINUE

if(g_hasFlamethrower[id])

  return PLUGIN_CONTINUE

if(has_shield(id))

  return PLUGIN_CONTINUE

g_hasFlamethrower[id] = 1

client_cmd(id, "spk items/ammopickup2")

g_FuelTank[id] = entity_get_int(ent, EV_INT_iuser4)

show_fuel_percentage(id)

new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])

if(weaponID == CSW_KNIFE)

{

  g_Activated[id] = true

  set_flamethrower_model(id)

  entity_set_int(id, EV_INT_weaponanim, 9)

}

remove_entity(ent)

return PLUGIN_CONTINUE

}

public fw_UpdateClientData_Post(id, sendweapons, cd_handle)

{

if(!g_hasFlamethrower[id] || !g_Activated[id])

  return FMRES_IGNORED

set_cd(cd_handle, CD_ID, 0)

return FMRES_HANDLED

}

public fw_CmdStart(id, uc_handle, seed)

{

if(!g_hasFlamethrower[id] || !g_Activated[id])

  return FMRES_IGNORED

new buttons = get_uc(uc_handle, UC_Buttons)

if(buttons & IN_ATTACK)

{

  g_FireFlamethrower[id] = 1

  buttons &= ~IN_ATTACK

  set_uc(uc_handle, UC_Buttons, buttons)

} else

g_FireFlamethrower[id] = 0

return FMRES_HANDLED

}

public fw_PlayerPostThink(id)

{

if(!is_user_connected(id) || !is_user_alive(id))

  return FMRES_IGNORED

if(!g_hasFlamethrower[id] || !g_Activated[id])

  return FMRES_IGNORED

if(entity_get_int(id, EV_INT_waterlevel) > 1)

  return FMRES_IGNORED

if(has_shield(id))

{

  return FMRES_IGNORED

}

if(g_BuyFuel[id])

{

  if((g_Delay[id] + 0.2) < get_gametime())

  {

   buy_fuel(id)

   g_Delay[id] = get_gametime()

  }

}

if(g_FireFlamethrower[id])

{

  if(g_FuelTank[id] > 0)

  {

   if((g_Delay[id] + 0.2) < get_gametime())

   {

	g_FuelTank[id] -= 1

	g_Delay[id] = get_gametime()

   }



   new Float:fOrigin[3], Float:fVelocity[3]

   entity_get_vector(id,EV_VEC_origin, fOrigin)

   VelocityByAim(id, 35, fVelocity)



   new Float:fTemp[3], iFireOrigin[3]

   xs_vec_add(fOrigin, fVelocity, fTemp)

   FVecIVec(fTemp, iFireOrigin)



   new Float:fFireVelocity[3], iFireVelocity[3]

   VelocityByAim(id, get_pcvar_num(cvar_damage_dis), fFireVelocity)

   FVecIVec(fFireVelocity, iFireVelocity)



   create_flames_n_sounds(id, iFireOrigin, iFireVelocity)



   new doDamage

   switch(get_cvar_num("mp_friendlyfire"))

   {

	case 0: doDamage = 0

				 case 1: doDamage = 1

	}



   show_fuel_percentage(id)

   direct_damage(id, doDamage)

   indirect_damage(id, doDamage)

   custom_weapon_shot(wpn_ft, id)

  } else

  client_print(id, print_center, "Brak Benzyny")

}

return FMRES_IGNORED

}

public think_Flamethrower(ent)

{

if(is_valid_ent(ent) && entity_get_float(ent, EV_FL_health) < 950.0)

{

  new Float:fOrigin[3], iOrigin[3]

  entity_get_vector(ent, EV_VEC_origin, fOrigin)

  FVecIVec(fOrigin, iOrigin)

  message_begin(MSG_BROADCAST, SVC_TEMPENTITY)

  write_byte(99)

  write_short(ent)

  message_end()

  message_begin(MSG_BROADCAST, SVC_TEMPENTITY)

  write_byte(3)

  write_coord(iOrigin[0])

  write_coord(iOrigin[1])

  write_coord(iOrigin[2])

  write_short(sprite_xplo)

  write_byte(50)

  write_byte(15)

  write_byte(0)

  message_end()

  RadiusDamage(fOrigin, get_pcvar_num(cvar_xplode_dmg), entity_get_int(ent, EV_INT_iuser4))

  remove_entity(ent)

}

if(is_valid_ent(ent)) entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.01)

}

public create_flames_n_sounds(id, origin[3], velocity[3])

{

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)

write_byte(120)

write_coord(origin[0])

write_coord(origin[1])

write_coord(origin[2])

write_coord(velocity[0])

write_coord(velocity[1])

write_coord(velocity[2] + 5)

write_short(sprite_fire)

write_byte(1)

write_byte(10)

write_byte(1)

write_byte(5)

message_end()

emit_sound(id, CHAN_WEAPON, "flamethrower.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

}

public direct_damage(id, doDamage)

{

new ent, body

get_user_aiming(id, ent, body, get_pcvar_num(cvar_damage_dis) + 500)

if(ent > 0 && is_user_alive(ent))

{

  if(!doDamage)

  {

   if(get_user_team(id) != get_user_team(ent))

   {

	damage_user(id, ent, get_pcvar_num(cvar_damage))

	custom_weapon_dmg(wpn_ft, id, ent, get_pcvar_num(cvar_damage))

   }

  }

  else

  {

   damage_user(id, ent, get_pcvar_num(cvar_damage))

   custom_weapon_dmg(wpn_ft, id, ent, get_pcvar_num(cvar_damage))

  }

}

}

public indirect_damage(id, doDamage)

{

new Players[32], iNum

get_players(Players, iNum, "a")

for(new i = 0; i < iNum; ++i) if(id != Players[i])

{

new target = Players[i]

new Float:fOrigin[3], Float:fOrigin2[3]

entity_get_vector(id,EV_VEC_origin, fOrigin)

entity_get_vector(target, EV_VEC_origin, fOrigin2)

new temp[3], Float:fAim[3]

get_user_origin(id, temp, 3)

IVecFVec(temp, fAim)

new Float:fDistance = get_pcvar_num(cvar_damage_dis) + 500.0

if(get_distance_f(fOrigin, fOrigin2) > fDistance)

  continue

  new iDistance = get_distance_to_line(fOrigin, fOrigin2, fAim)

  if(iDistance > get_pcvar_num(cvar_splash_dis) || iDistance < 0 || !fm_is_ent_visible(id, target))

   continue

  if(!doDamage)

  {

   if(get_user_team(id) != get_user_team(target))

   {

	damage_user(id, target, get_pcvar_num(cvar_damage))

	custom_weapon_dmg(wpn_ft, id, target, get_pcvar_num(cvar_damage))

   }

  }

  else

  {

   damage_user(id, target, get_pcvar_num(cvar_damage) / 2)

   custom_weapon_dmg(wpn_ft, id, target, get_pcvar_num(cvar_damage) / 2)

  }

}

}

public buy_fuel(id)

{

if(get_pcvar_num(cvar_buyzone) && !g_buyzone[id])

  return PLUGIN_CONTINUE

new Float:fBuyTime = get_cvar_float("mp_buytime") * 60

if(get_pcvar_num(cvar_buytime) && !g_freezetime

&& (get_gametime() - g_starttime) > fBuyTime)

return PLUGIN_CONTINUE

if(g_FuelTank[id] >= get_pcvar_num(cvar_fueltank))

  return PLUGIN_CONTINUE

new iMoney = cs_get_user_money(id)

new iCost = get_pcvar_num(cvar_fuelcost)

if(iMoney >= iCost)

{

  g_FuelTank[id] += 1

  show_fuel_percentage(id)

  cs_set_user_money(id, iMoney - iCost)

  return PLUGIN_CONTINUE

}

return PLUGIN_CONTINUE

}

public drop_flamethrower(id)

{

new Float:fVelocity[3], Float:fOrigin[3]

entity_get_vector(id, EV_VEC_origin, fOrigin)

VelocityByAim(id, 34, fVelocity)

fOrigin[0] += fVelocity[0]

fOrigin[1] += fVelocity[1]

VelocityByAim(id, 300, fVelocity)

new ent = create_entity("info_target")

if(is_valid_ent(ent))

{

  entity_set_string(ent, EV_SZ_classname, "flamethrower")

  entity_set_model(ent, "models/w_flamethrower.mdl")

  entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS)

  entity_set_int(ent, EV_INT_solid, SOLID_TRIGGER)

  entity_set_vector(ent, EV_VEC_origin, fOrigin)

  entity_set_vector(ent, EV_VEC_velocity, fVelocity)

  entity_set_int(ent, EV_INT_iuser4, g_FuelTank[id])

  entity_set_float(ent, EV_FL_takedamage, 1.0)

  entity_set_float(ent, EV_FL_health, 1000.0)

  entity_set_size(ent, Float:{-2.5, -2.5, -1.5}, Float:{2.5, 2.5, 1.5})

  entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.01)

}

g_FuelTank[id] = 0

g_Activated[id] = 0

g_hasFlamethrower[id] = 0

if(has_shield(id))

  set_shield_model(id)

else

  set_knife_model(id)

return PLUGIN_CONTINUE

}

public task_ActivateFlamethrower(id)

{

if(!is_user_connected(id) || !is_user_alive(id))

  return PLUGIN_CONTINUE

new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])

if(weaponID == CSW_KNIFE) g_Activated[id] = 1

return PLUGIN_CONTINUE

}

public show_fuel_percentage(id)

{

set_hudmessage(255, 170, 0, 0.91, 0.95, _, _, 1.0, _, _, 4)

show_hudmessage(id, "Benzyna: %d%%", get_percent(g_FuelTank[id], get_pcvar_num(cvar_fueltank)))

}

public set_flamethrower_model(id)

{

entity_set_string(id, EV_SZ_viewmodel, "models/v_flamethrower.mdl")

entity_set_string(id, EV_SZ_weaponmodel, "models/p_flamethrower.mdl")

}

public set_knife_model(id)

{

entity_set_string(id, EV_SZ_viewmodel, "models/v_knife.mdl")

entity_set_string(id, EV_SZ_weaponmodel, "models/p_knife.mdl")

}

public set_shield_model(id)

{

entity_set_string(id, EV_SZ_viewmodel, "models/shield/v_shield_knife.mdl")

entity_set_string(id, EV_SZ_weaponmodel, "models/shield/p_shield_knife.mdl")

}

stock damage_user(id, victim, damage)

{

new iHealth = get_user_health(victim)

if(iHealth > damage)

  fakedamage(victim, "weapon_flamethrower", float(damage), DMG_BURN)

else

{

  new iXp = get_pcvar_num(cvar_expcod);

  set_hudmessage(255, 212, 0, -1.0, 0.30, 0, 2.0, 2.0, 0.05, 0.05, 4)

  show_hudmessage(0, "+ %d", iXp);

  cod_set_user_xp(id,cod_get_user_xp(id) + iXp)

  user_silentkill(victim)

  make_deathmsg(id, victim, 0, "flamethrower")

  new iOrigin[3]

  get_user_origin(victim, iOrigin, 0)

  message_begin(MSG_BROADCAST,SVC_TEMPENTITY)

  write_byte(17)

  write_coord(iOrigin[0])

  write_coord(iOrigin[1])

  write_coord(iOrigin[2] + 10)

  write_short(sprite_burn)

  write_byte(30)

  write_byte(40)

  message_end()

  if(get_user_team(id) != get_user_team(victim))

  {

   set_user_frags(id, get_user_frags(id) + 1)

   cs_set_user_money(id, cs_get_user_money(id) + 300)

  }

  else

  {

   set_user_frags(id, get_user_frags(id) - 1)

   cs_set_user_money(id, cs_get_user_money(id) - 300)

  }

  message_begin(MSG_ALL, get_user_msgid("ScoreInfo"))

  write_byte(id)

  write_short(get_user_frags(id))

  write_short(get_user_deaths(id))

  write_short(0)

  write_short(get_user_team(id))

  message_end()

  message_begin(MSG_ALL, get_user_msgid("ScoreInfo"))

  write_byte(victim)

  write_short(get_user_frags(victim))

  write_short(get_user_deaths(victim))

  write_short(0)

  write_short(get_user_team(victim))

  message_end()

}

}

stock get_percent(value, tvalue) {		

return floatround(floatmul(float(value) / float(tvalue) , 100.0))

}

stock get_distance_to_line(Float:pos_start[3], Float:pos_end[3], Float:pos_object[3])

{

new Float:vec_start_end[3], Float:vec_start_object[3], Float:vec_end_object[3], Float:vec_end_start[3]

xs_vec_sub(pos_end, pos_start, vec_start_end)   // vector from start to end

xs_vec_sub(pos_object, pos_start, vec_start_object)  // vector from end to object

xs_vec_sub(pos_start, pos_end, vec_end_start)   // vector from end to start

xs_vec_sub(pos_end, pos_object, vec_end_object)   // vector object to end

new Float:len_start_object = getVecLen(vec_start_object)

new Float:angle_start = floatacos(xs_vec_dot(vec_start_end, vec_start_object) / (getVecLen(vec_start_end) * len_start_object), degrees)

new Float:angle_end = floatacos(xs_vec_dot(vec_end_start, vec_end_object) / (getVecLen(vec_end_start) * getVecLen(vec_end_object)), degrees)

if(angle_start <= 90.0 && angle_end <= 90.0)

  return floatround(len_start_object * floatsin(angle_start, degrees))

return -1

}

stock Float:getVecLen(Float:Vec[3])

{

new Float:VecNull[3] = {0.0, 0.0, 0.0}

new Float:len = get_distance_f(Vec, VecNull)

return len

}

stock bool:fm_is_ent_visible(index, entity)

{

new Float:origin[3], Float:view_ofs[3], Float:eyespos[3]

pev(index, pev_origin, origin)

pev(index, pev_view_ofs, view_ofs)

xs_vec_add(origin, view_ofs, eyespos)

new Float:entpos[3]

pev(entity, pev_origin, entpos)

engfunc(EngFunc_TraceLine, eyespos, entpos, 0, index)

switch(pev(entity, pev_solid)) {

  case SOLID_BBOX..SOLID_BSP: return global_get(glb_trace_ent) == entity

  }

new Float:fraction

global_get(glb_trace_fraction, fraction)

if(fraction == 1.0)

  return true

return false

}

stock bool:has_shield(id)

{

new modelName[32]

entity_get_string(id, EV_SZ_viewmodel, modelName, 31)

if(containi(modelName, "v_shield_") != -1)

  return true

return false

}

public cod_class_enabled(id)

{ 

					ma_klase[id] = true;

g_hasFlamethrower[id] = 1

g_FuelTank[id] = get_pcvar_num(cvar_fueltank)

new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])

if(weaponID == CSW_KNIFE)

{

  g_Activated[id] = true

  set_flamethrower_model(id)

}

client_cmd(id, "spk items/ammopickup2")

client_print(id, print_chat, "Masz miotacz ognia nacisnij 3 aby uzyc")

return COD_CONTINUE;

}

public cod_class_disabled(id){

ma_klase[id] = false;

g_hasFlamethrower[id] = 0

}

public Spawn(id)

{

if(is_user_connected(id) && ma_klase[id])

{

  g_hasFlamethrower[id] = 1

  g_FuelTank[id] = get_pcvar_num(cvar_fueltank)

  new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])

  if(weaponID == CSW_KNIFE)

  {

   g_Activated[id] = true

   set_flamethrower_model(id)

  }

  client_cmd(id, "spk items/ammopickup2")

  client_print(id, print_chat, "Masz miotacz ognia nacisnij 3 aby uzyc")

}

return PLUGIN_CONTINUE;

}


Użytkownik Pietras11 edytował ten post 08.04.2012 20:05

  • +
  • -
  • 1

#7 P@trYk^.^

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:299
  • Imię:Patryk
  • Lokalizacja:Piła
Offline

Napisano 08.04.2012 20:25

Nie działa. Nie trzeba edytowac jeszcze innego pliku ? I gdy biore /klasa lub /klasy jest pokazane Miotacz(VIP) jak zrobic zeby pisalo tylko Miotacz ?

Użytkownik P@trYk^.^ edytował ten post 08.04.2012 20:32

  • +
  • -
  • 0

#8 Pietras11

    Wszechwiedzący

  • Power User

Reputacja: 89
Zaawansowany

  • Postów:518
  • GG:
  • Steam:steam
  • Imię:Piotr
  • Lokalizacja:Gniezno
Offline

Napisano 09.04.2012 05:55

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#include <engine>
#include <fun>
#include <csx>
#include <xs>
#include <hamsandwich>
#include <codmod>
new const nazwa[] = "Miotacz";
new const opis[] = "Posiada miotacz ognia zamiast noza!";
new const bronie = 1<<CSW_M3;
new const zdrowie = 15;
new const kondycja = 20;
new const inteligencja = 10;
new const wytrzymalosc = 5;
new bool:ma_klase[33];
new wpn_ft
new sprite_fire
new sprite_burn
new sprite_xplo
new g_freezetime
new g_restarted
new Float:g_starttime
new cvar_enabled
new cvar_client_buy
new cvar_damage
new cvar_xplode_dmg
new cvar_cost
new cvar_fuelcost
new cvar_fueltank
new cvar_buyzone
new cvar_buytime
new cvar_damage_dis
new cvar_splash_dis
new g_buyzone[33]
new g_FuelTank[33]
new g_Activated[33]
new Float:g_Delay[33]
new g_hasFlamethrower[33]
new g_FireFlamethrower[33]
new g_BuyFuel[33]
new cvar_expcod
static PLUGIN_NAME[] = "Miotacz ognia for cod"
static PLUGIN_AUTHOR[] = "Cheap_Suit eited by Crew"
static PLUGIN_VERSION[] = "1.1"
public plugin_init()
{
RegisterHam(Ham_Spawn, "player", "Spawn", 1);
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
register_cvar("ft_version", PLUGIN_VERSION, FCVAR_SERVER)
cvar_enabled = register_cvar("ft_enable", "1")
cvar_fueltank = register_cvar("ft_fueltank", "50")
cvar_damage = register_cvar("ft_damage", "2")
cvar_xplode_dmg = register_cvar("ft_xplode_dmg", "30")
cvar_damage_dis = register_cvar("ft_damage_dis", "100")
cvar_splash_dis = register_cvar("ft_splash_dis", "40")
cvar_expcod = register_cvar("cod_xpmiotacz", "20")
register_event("DeathMsg", "Event_DeathMsg", "a")
register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
register_event("StatusIcon", "Event_BuyZone", "b", "2=buyzone")
register_event("HLTV", "Event_NewRound", "a", "1=0", "2=0")
register_event("TextMsg", "Event_WeaponDrop", "be", "2=#Weapon_Cannot_Be_Dropped")
register_event("TextMsg", "Event_GameRestart", "a", "2=#Game_Commencing", "2=#Game_will_restart_in")
register_logevent("LogEvent_RoundStart", 2, "0=World triggered", "1=Round_Start")
register_forward(FM_CmdStart, "fw_CmdStart")
register_forward(FM_PlayerPostThink, "fw_PlayerPostThink")
register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1)
register_think("flamethrower", "think_Flamethrower")
register_touch("flamethrower", "player", "touch_Flamethrower")
wpn_ft = custom_weapon_add("weapon_flamethrower", 0, "flamethrower")
if(!get_pcvar_num(cvar_enabled)) pause("ad", PLUGIN_NAME)
}
public plugin_precache()
{
precache_sound("flamethrower.wav")
precache_sound("items/ammopickup2.wav")
sprite_xplo = precache_model("sprites/zerogxplode.spr")
sprite_fire = precache_model("sprites/explode1.spr")
sprite_burn = precache_model("sprites/xfire.spr")
precache_model("models/v_knife.mdl")
precache_model("models/p_knife.mdl")
precache_model("models/shield/v_shield_knife.mdl")
precache_model("models/shield/p_shield_knife.mdl")
precache_model("models/w_flamethrower.mdl")
precache_model("models/v_flamethrower.mdl")
precache_model("models/p_flamethrower.mdl")
}
public cmd_GiveFlamethrowers(id, level, cid)
{
if(!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new Arg1[64], target
read_argv(1, Arg1, 63)
new adminName[32]
get_user_name(id, adminName, 31)
new targetTeam
new Players[32], iNum
if(Arg1[0] == '@')
{
if(equali(Arg1[1], "all"))
{
targetTeam = 0
get_players(Players, iNum, "a")
}
else if(equali(Arg1[1], "t"))
{
targetTeam = 1
get_players(Players, iNum, "ae" , "terrorist")

}
else if(equali(Arg1[1], "ct"))
{
targetTeam = 2
get_players(Players, iNum, "ae" , "ct")
}

for(new i = 0; i < iNum; ++i)
{
target = Players[i]

g_hasFlamethrower[target] = 1
g_FuelTank[target] = get_pcvar_num(cvar_fueltank)

new temp[2], weaponID = get_user_weapon(target, temp[0], temp[1])
if(weaponID == CSW_KNIFE)
{
g_Activated[target] = true
set_flamethrower_model(target)
}

client_cmd(target, "spk items/ammopickup2")
client_print(target, print_chat, "You have been given a flamethrower (press 3 to use)")
}

switch(targetTeam)
{
case 0: client_print(0, print_chat, "Admin: %s has given everyone a flamethrower", adminName)
case 1: client_print(0, print_chat, "Admin: %s has given all terrorist a flamethrower", adminName)
case 2: client_print(0, print_chat, "Admin: %s has given all ct's a flamethrower", adminName)
}
}
else
{
target = cmd_target(id, Arg1, 0)
if(!is_user_connected(target) || !is_user_alive(target))
return PLUGIN_HANDLED

new targetName[32]
get_user_name(target, targetName, 31)

g_hasFlamethrower[target] = 1
g_FuelTank[target] = get_pcvar_num(cvar_fueltank)

new temp[2], weaponID = get_user_weapon(target, temp[0], temp[1])
if(weaponID == CSW_KNIFE)
{
g_Activated[target] = true
set_flamethrower_model(target)
entity_set_int(id, EV_INT_weaponanim, 9)
}

client_cmd(target, "spk items/ammopickup2")
client_print(target, print_chat, "You have been given a flamethrower (press 3 to use)")
client_print(target, print_chat, "Admin: %s has given you a flamethrower", adminName)
}
return PLUGIN_HANDLED
}
public cmd_BuyFlamethrower(id)
{
if(!get_pcvar_num(cvar_client_buy))
return PLUGIN_CONTINUE
if(get_pcvar_num(cvar_buyzone))
{
if(!g_buyzone[id])
{
client_print(id, print_center, "You need to be in the buyzone")
return PLUGIN_HANDLED
}
}
if(get_pcvar_num(cvar_buytime))
{
new Float:fBuyTime = get_cvar_float("mp_buytime") * 60
if(!g_freezetime && (get_gametime() - g_starttime) > fBuyTime)
{
client_print(id, print_center, "%d seconds have passed.^nYou can't buy anything now!", floatround(fBuyTime))
return PLUGIN_HANDLED
}
}
new iMoney = cs_get_user_money(id)
new iCost = get_pcvar_num(cvar_cost)
if(!is_user_alive(id))
client_print(id, print_center, "You cant buy when your dead!")
else if(g_hasFlamethrower[id])
client_print(id, print_center, "You already own that weapon.")
else if(iMoney < iCost)
client_print(id, print_center, "Insufficient funds! ($%d)", iCost)
else
{
g_hasFlamethrower[id] = 1
g_FuelTank[id] = get_pcvar_num(cvar_fueltank)

new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
if(weaponID == CSW_KNIFE)
{
g_Activated[id] = true
set_flamethrower_model(id)
}

cs_set_user_money(id, iMoney - iCost)
client_cmd(id, "spk items/ammopickup2")
client_print(id, print_chat, "You bought a flamethrower (press 3 to use)")
}
return PLUGIN_HANDLED
}
public Event_BuyZone(id) {
g_buyzone[id] = read_data(1)
}
public Event_GameRestart() {
g_restarted = 1
}
public Event_NewRound()
{
if(g_restarted)
{
new Players[32], iNum = 0
get_players(Players, iNum)
for(new i = 0; i < iNum; i++)
{
new id = Players[i]

g_FuelTank[id] = 0
g_Activated[id] = 0
g_hasFlamethrower[id] = 0

new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
if(weaponID == CSW_KNIFE) set_knife_model(id)

g_restarted = 0
}
}
new flamethrowers = -1
while((flamethrowers = find_ent_by_class(flamethrowers, "flamethrower")))
remove_entity(flamethrowers)
g_freezetime = 1
}
public LogEvent_RoundStart()
{
g_freezetime = 0
g_starttime = get_gametime()
}
public Event_WeaponDrop(id)
{
if(!is_user_alive(id) || !g_Activated[id])
return PLUGIN_CONTINUE
client_print(id, print_center, "")
return PLUGIN_HANDLED
}
public Event_DeathMsg()
{
new id = read_data(2)
if(!is_user_connected(id) || !g_hasFlamethrower[id]) {
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public Event_CurWeapon(id)
{
if(!is_user_alive(id) || !g_hasFlamethrower[id])
return PLUGIN_CONTINUE
new WeaponID = read_data(2)
switch(WeaponID)
{
case CSW_KNIFE:
{
set_task(0.3, "task_ActivateFlamethrower", id)
set_flamethrower_model(id)
entity_set_int(id, EV_INT_weaponanim, 9)
}
default: g_Activated[id] = 0
}
return PLUGIN_CONTINUE
}
public touch_Flamethrower(ent, id)
{
if(!is_valid_ent(ent) || !is_user_alive(id))
return PLUGIN_CONTINUE
if(g_hasFlamethrower[id])
return PLUGIN_CONTINUE
if(has_shield(id))
return PLUGIN_CONTINUE
g_hasFlamethrower[id] = 1
client_cmd(id, "spk items/ammopickup2")
g_FuelTank[id] = entity_get_int(ent, EV_INT_iuser4)
show_fuel_percentage(id)
new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
if(weaponID == CSW_KNIFE)
{
g_Activated[id] = true
set_flamethrower_model(id)
entity_set_int(id, EV_INT_weaponanim, 9)
}
remove_entity(ent)
return PLUGIN_CONTINUE
}
public fw_UpdateClientData_Post(id, sendweapons, cd_handle)
{
if(!g_hasFlamethrower[id] || !g_Activated[id])
return FMRES_IGNORED
set_cd(cd_handle, CD_ID, 0)
return FMRES_HANDLED
}
public fw_CmdStart(id, uc_handle, seed)
{
if(!g_hasFlamethrower[id] || !g_Activated[id])
return FMRES_IGNORED
new buttons = get_uc(uc_handle, UC_Buttons)
if(buttons & IN_ATTACK)
{
g_FireFlamethrower[id] = 1

buttons &= ~IN_ATTACK
set_uc(uc_handle, UC_Buttons, buttons)
} else
g_FireFlamethrower[id] = 0
return FMRES_HANDLED
}
public fw_PlayerPostThink(id)
{
if(!is_user_connected(id) || !is_user_alive(id))
return FMRES_IGNORED
if(!g_hasFlamethrower[id] || !g_Activated[id])
return FMRES_IGNORED
if(entity_get_int(id, EV_INT_waterlevel) > 1)
return FMRES_IGNORED
if(has_shield(id))
{
return FMRES_IGNORED
}
if(g_BuyFuel[id])
{
if((g_Delay[id] + 0.2) < get_gametime())
{
buy_fuel(id)
g_Delay[id] = get_gametime()
}
}
if(g_FireFlamethrower[id])
{
if(g_FuelTank[id] > 0)
{
if((g_Delay[id] + 0.2) < get_gametime())
{
g_FuelTank[id] -= 1
g_Delay[id] = get_gametime()
}

new Float:fOrigin[3], Float:fVelocity[3]
entity_get_vector(id,EV_VEC_origin, fOrigin)
VelocityByAim(id, 35, fVelocity)

new Float:fTemp[3], iFireOrigin[3]
xs_vec_add(fOrigin, fVelocity, fTemp)
FVecIVec(fTemp, iFireOrigin)

new Float:fFireVelocity[3], iFireVelocity[3]
VelocityByAim(id, get_pcvar_num(cvar_damage_dis), fFireVelocity)
FVecIVec(fFireVelocity, iFireVelocity)

create_flames_n_sounds(id, iFireOrigin, iFireVelocity)

new doDamage
switch(get_cvar_num("mp_friendlyfire"))
{
case 0: doDamage = 0
case 1: doDamage = 1
}

show_fuel_percentage(id)
direct_damage(id, doDamage)
indirect_damage(id, doDamage)
custom_weapon_shot(wpn_ft, id)
} else
client_print(id, print_center, "Brak Benzyny")
}
return FMRES_IGNORED
}
public think_Flamethrower(ent)
{
if(is_valid_ent(ent) && entity_get_float(ent, EV_FL_health) < 950.0)
{
new Float:fOrigin[3], iOrigin[3]
entity_get_vector(ent, EV_VEC_origin, fOrigin)
FVecIVec(fOrigin, iOrigin)

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(99)
write_short(ent)
message_end()

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(3)
write_coord(iOrigin[0])
write_coord(iOrigin[1])
write_coord(iOrigin[2])
write_short(sprite_xplo)
write_byte(50)
write_byte(15)
write_byte(0)
message_end()

RadiusDamage(fOrigin, get_pcvar_num(cvar_xplode_dmg), entity_get_int(ent, EV_INT_iuser4))
remove_entity(ent)
}
if(is_valid_ent(ent)) entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.01)
}
public create_flames_n_sounds(id, origin[3], velocity[3])
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(120)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2])
write_coord(velocity[0])
write_coord(velocity[1])
write_coord(velocity[2] + 5)
write_short(sprite_fire)
write_byte(1)
write_byte(10)
write_byte(1)
write_byte(5)
message_end()
emit_sound(id, CHAN_WEAPON, "flamethrower.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
public direct_damage(id, doDamage)
{
new ent, body
get_user_aiming(id, ent, body, get_pcvar_num(cvar_damage_dis) + 500)
if(ent > 0 && is_user_alive(ent))
{
if(!doDamage)
{
if(get_user_team(id) != get_user_team(ent))
{
damage_user(id, ent, get_pcvar_num(cvar_damage))
custom_weapon_dmg(wpn_ft, id, ent, get_pcvar_num(cvar_damage))
}
}
else
{
damage_user(id, ent, get_pcvar_num(cvar_damage))
custom_weapon_dmg(wpn_ft, id, ent, get_pcvar_num(cvar_damage))
}
}
}
public indirect_damage(id, doDamage)
{
new Players[32], iNum
get_players(Players, iNum, "a")
for(new i = 0; i < iNum; ++i) if(id != Players[i])
{
new target = Players[i]
new Float:fOrigin[3], Float:fOrigin2[3]
entity_get_vector(id,EV_VEC_origin, fOrigin)
entity_get_vector(target, EV_VEC_origin, fOrigin2)
new temp[3], Float:fAim[3]
get_user_origin(id, temp, 3)
IVecFVec(temp, fAim)
new Float:fDistance = get_pcvar_num(cvar_damage_dis) + 500.0
if(get_distance_f(fOrigin, fOrigin2) > fDistance)
continue

new iDistance = get_distance_to_line(fOrigin, fOrigin2, fAim)
if(iDistance > get_pcvar_num(cvar_splash_dis) || iDistance < 0 || !fm_is_ent_visible(id, target))
continue

if(!doDamage)
{
if(get_user_team(id) != get_user_team(target))
{
damage_user(id, target, get_pcvar_num(cvar_damage))
custom_weapon_dmg(wpn_ft, id, target, get_pcvar_num(cvar_damage))
}
}
else
{
damage_user(id, target, get_pcvar_num(cvar_damage) / 2)
custom_weapon_dmg(wpn_ft, id, target, get_pcvar_num(cvar_damage) / 2)
}
}
}
public buy_fuel(id)
{
if(get_pcvar_num(cvar_buyzone) && !g_buyzone[id])
return PLUGIN_CONTINUE
new Float:fBuyTime = get_cvar_float("mp_buytime") * 60
if(get_pcvar_num(cvar_buytime) && !g_freezetime
&& (get_gametime() - g_starttime) > fBuyTime)
return PLUGIN_CONTINUE
if(g_FuelTank[id] >= get_pcvar_num(cvar_fueltank))
return PLUGIN_CONTINUE
new iMoney = cs_get_user_money(id)
new iCost = get_pcvar_num(cvar_fuelcost)
if(iMoney >= iCost)
{
g_FuelTank[id] += 1
show_fuel_percentage(id)
cs_set_user_money(id, iMoney - iCost)

return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public drop_flamethrower(id)
{
new Float:fVelocity[3], Float:fOrigin[3]
entity_get_vector(id, EV_VEC_origin, fOrigin)
VelocityByAim(id, 34, fVelocity)
fOrigin[0] += fVelocity[0]
fOrigin[1] += fVelocity[1]
VelocityByAim(id, 300, fVelocity)
new ent = create_entity("info_target")
if(is_valid_ent(ent))
{
entity_set_string(ent, EV_SZ_classname, "flamethrower")
entity_set_model(ent, "models/w_flamethrower.mdl")
entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS)
entity_set_int(ent, EV_INT_solid, SOLID_TRIGGER)
entity_set_vector(ent, EV_VEC_origin, fOrigin)
entity_set_vector(ent, EV_VEC_velocity, fVelocity)
entity_set_int(ent, EV_INT_iuser4, g_FuelTank[id])
entity_set_float(ent, EV_FL_takedamage, 1.0)
entity_set_float(ent, EV_FL_health, 1000.0)
entity_set_size(ent, Float:{-2.5, -2.5, -1.5}, Float:{2.5, 2.5, 1.5})
entity_set_float(ent, EV_FL_nextthink, halflife_time() + 0.01)
}
g_FuelTank[id] = 0
g_Activated[id] = 0
g_hasFlamethrower[id] = 0
if(has_shield(id))
set_shield_model(id)
else
set_knife_model(id)
return PLUGIN_CONTINUE
}
public task_ActivateFlamethrower(id)
{
if(!is_user_connected(id) || !is_user_alive(id))
return PLUGIN_CONTINUE
new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
if(weaponID == CSW_KNIFE) g_Activated[id] = 1
return PLUGIN_CONTINUE
}
public show_fuel_percentage(id)
{
set_hudmessage(255, 170, 0, 0.91, 0.95, _, _, 1.0, _, _, 4)
show_hudmessage(id, "Benzyna: %d%%", get_percent(g_FuelTank[id], get_pcvar_num(cvar_fueltank)))
}
public set_flamethrower_model(id)
{
entity_set_string(id, EV_SZ_viewmodel, "models/v_flamethrower.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/p_flamethrower.mdl")
}
public set_knife_model(id)
{
entity_set_string(id, EV_SZ_viewmodel, "models/v_knife.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/p_knife.mdl")
}
public set_shield_model(id)
{
entity_set_string(id, EV_SZ_viewmodel, "models/shield/v_shield_knife.mdl")
entity_set_string(id, EV_SZ_weaponmodel, "models/shield/p_shield_knife.mdl")
}
stock damage_user(id, victim, damage)
{
new iHealth = get_user_health(victim)
if(iHealth > damage)
fakedamage(victim, "weapon_flamethrower", float(damage), DMG_BURN)
else
{
new iXp = get_pcvar_num(cvar_expcod);
set_hudmessage(255, 212, 0, -1.0, 0.30, 0, 2.0, 2.0, 0.05, 0.05, 4)
show_hudmessage(0, "+ %d", iXp);
cod_set_user_xp(id,cod_get_user_xp(id) + iXp)

user_silentkill(victim)
make_deathmsg(id, victim, 0, "flamethrower")

new iOrigin[3]
get_user_origin(victim, iOrigin, 0)

message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(17)
write_coord(iOrigin[0])
write_coord(iOrigin[1])
write_coord(iOrigin[2] + 10)
write_short(sprite_burn)
write_byte(30)
write_byte(40)
message_end()

if(get_user_team(id) != get_user_team(victim))
{
set_user_frags(id, get_user_frags(id) + 1)
cs_set_user_money(id, cs_get_user_money(id) + 300)
}
else
{
set_user_frags(id, get_user_frags(id) - 1)
cs_set_user_money(id, cs_get_user_money(id) - 300)
}

message_begin(MSG_ALL, get_user_msgid("ScoreInfo"))
write_byte(id)
write_short(get_user_frags(id))
write_short(get_user_deaths(id))
write_short(0)
write_short(get_user_team(id))
message_end()

message_begin(MSG_ALL, get_user_msgid("ScoreInfo"))
write_byte(victim)
write_short(get_user_frags(victim))
write_short(get_user_deaths(victim))
write_short(0)
write_short(get_user_team(victim))
message_end()
}
}
stock get_percent(value, tvalue) {
return floatround(floatmul(float(value) / float(tvalue) , 100.0))
}
stock get_distance_to_line(Float:pos_start[3], Float:pos_end[3], Float:pos_object[3])
{
new Float:vec_start_end[3], Float:vec_start_object[3], Float:vec_end_object[3], Float:vec_end_start[3]
xs_vec_sub(pos_end, pos_start, vec_start_end) // vector from start to end
xs_vec_sub(pos_object, pos_start, vec_start_object) // vector from end to object
xs_vec_sub(pos_start, pos_end, vec_end_start) // vector from end to start
xs_vec_sub(pos_end, pos_object, vec_end_object) // vector object to end
new Float:len_start_object = getVecLen(vec_start_object)
new Float:angle_start = floatacos(xs_vec_dot(vec_start_end, vec_start_object) / (getVecLen(vec_start_end) * len_start_object), degrees)
new Float:angle_end = floatacos(xs_vec_dot(vec_end_start, vec_end_object) / (getVecLen(vec_end_start) * getVecLen(vec_end_object)), degrees)
if(angle_start <= 90.0 && angle_end <= 90.0)
return floatround(len_start_object * floatsin(angle_start, degrees))
return -1
}
stock Float:getVecLen(Float:Vec[3])
{
new Float:VecNull[3] = {0.0, 0.0, 0.0}
new Float:len = get_distance_f(Vec, VecNull)
return len
}
stock bool:fm_is_ent_visible(index, entity)
{
new Float:origin[3], Float:view_ofs[3], Float:eyespos[3]
pev(index, pev_origin, origin)
pev(index, pev_view_ofs, view_ofs)
xs_vec_add(origin, view_ofs, eyespos)
new Float:entpos[3]
pev(entity, pev_origin, entpos)
engfunc(EngFunc_TraceLine, eyespos, entpos, 0, index)
switch(pev(entity, pev_solid)) {
case SOLID_BBOX..SOLID_BSP: return global_get(glb_trace_ent) == entity
}
new Float:fraction
global_get(glb_trace_fraction, fraction)
if(fraction == 1.0)
return true
return false
}
stock bool:has_shield(id)
{
new modelName[32]
entity_get_string(id, EV_SZ_viewmodel, modelName, 31)
if(containi(modelName, "v_shield_") != -1)
return true
return false
}
public cod_class_enabled(id){

ma_klase[id] = true;
g_hasFlamethrower[id] = 1
g_FuelTank[id] = get_pcvar_num(cvar_fueltank)
new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
if(weaponID == CSW_KNIFE)
{
g_Activated[id] = true
set_flamethrower_model(id)
}
client_cmd(id, "spk items/ammopickup2")
client_print(id, print_chat, "Masz miotacz ognia nacisnij 3 aby uzyc")
return COD_CONTINUE;
}
public cod_class_disabled(id){
ma_klase[id] = false;
g_hasFlamethrower[id] = 0
}
public Spawn(id)
{
if(is_user_connected(id) && ma_klase[id])
{
g_hasFlamethrower[id] = 1
g_FuelTank[id] = get_pcvar_num(cvar_fueltank)

new temp[2], weaponID = get_user_weapon(id, temp[0], temp[1])
if(weaponID == CSW_KNIFE)
{
g_Activated[id] = true
set_flamethrower_model(id)
}

client_cmd(id, "spk items/ammopickup2")
client_print(id, print_chat, "Masz miotacz ognia nacisnij 3 aby uzyc")
}
return PLUGIN_CONTINUE;
}
Masz sma działa kompiluje się,bez napisu VIP.
  • +
  • -
  • 0

#9 P@trYk^.^

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:299
  • Imię:Patryk
  • Lokalizacja:Piła
Offline

Napisano 09.04.2012 09:20

Nie działa ;/ a w miotacz.amxx nie trzeba nic zmieniac ?
  • +
  • -
  • 0

#10 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 09.04.2012 09:25

Spoiler


Otwierasz spoiler kopijesz do amxxstudio - zapisujesz jako klasa kompilujesz i wrzucasz na serwer.
  • +
  • -
  • 0

#11 P@trYk^.^

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:299
  • Imię:Patryk
  • Lokalizacja:Piła
Offline

Napisano 09.04.2012 09:37

Nieczaje tego :/ Możesz bardziej wytłumaczyć ?
  • +
  • -
  • 0

#12 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 09.04.2012 09:56

Masz tu sma i plik amxx

Załączone pliki


  • +
  • -
  • 1

#13 P@trYk^.^

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:299
  • Imię:Patryk
  • Lokalizacja:Piła
Offline

Napisano 09.04.2012 10:08

Mógłbyś jeszcze zrobić to z innymi klasami ? Jak dodac Załączone Pliki ?
  • +
  • -
  • 0

#14 Yakenn

    Życzliwy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:24
  • Imię:Kamil
  • Lokalizacja:Jasło
Offline

Napisano 09.04.2012 11:12

dawaj to zrobimy..
  • +
  • -
  • 0

#15 P@trYk^.^

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:299
  • Imię:Patryk
  • Lokalizacja:Piła
Offline

Napisano 09.04.2012 11:18


/* Plugin generated by AMXX-Studio */

#include <amxmodx>

#include <amxmisc>

#include <codmod>

#include <fakemeta>

#include <engine>

#include <fakemeta_util>

#include <hamsandwich>

#include <cstrike>

#include <xs>

#include <ColorChat>

#define SENTRY_THINK 0.3

#define OFFSET_WPN_LINUX  4

#define OFFSET_WPN_WIN    41

#define fm_point_contents(%1) engfunc(EngFunc_PointContents, %1)

#define fm_DispatchSpawn(%1) dllfunc(DLLFunc_Spawn, %1)

new const nazwa_klasy[] = "Inzynier [VIP]";

new const opis_klasy[] = "Moze stawiac dzialko";

new bronie_klasy = 1<<CSW_MAC10 | 1<<CSW_P90;

new zdrowie_klasy = 20;

new kondycja_klasy = 35;

new inteligencja_klasy = -5;

new wytrzymalosc_klasy = -10;

new bool:ma_klase[33];

new bool:ma_dzialko[33];

new gMenuDzialko[33]

new g_maxplayers;

new mdl_gib_build1

new mdl_gib_build2

new mdl_gib_build3

new mdl_gib_build4

static const Nazwy_broni[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",

"weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",

"weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",

"weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",

"weapon_ak47", "weapon_knife", "weapon_p90" }



new pcvarPercent,pcvarHealth,pcvarDamage;

public plugin_init()

{

register_plugin(nazwa_klasy, "0.1", "DarkGL & Szymek");



register_event("HLTV", "NowaRunda", "a", "1=0", "2=0");



cod_register_class(nazwa_klasy, opis_klasy, bronie_klasy, zdrowie_klasy, kondycja_klasy, inteligencja_klasy, wytrzymalosc_klasy);



RegisterHam(Ham_Spawn, "player", "DajNoweDzialko", 1);

RegisterHam(Ham_TakeDamage, "func_breakable", "fwHamTakeDamage" );

RegisterHam(Ham_TraceAttack, "func_breakable", "fw_TraceAttack_Building")



for (new i = 1; i < sizeof Nazwy_broni; i++)

{

  if (Nazwy_broni[i][0]) RegisterHam(Ham_Item_Deploy, Nazwy_broni[i], "ham_ItemDeploy_Post", 1)

}



register_think("sentry_shot","sentry_shot")



g_maxplayers = get_maxplayers();



pcvarPercent = register_cvar("inzynier_percent","4")

pcvarHealth = register_cvar("inzynier_health","600")

pcvarDamage = register_cvar("inzynier_damage","15.0");

}

public plugin_precache()

{

precache_sound("sentry_shoot.wav");



precache_model("models/v_tfc_spanner.mdl")

precache_model("models/base2.mdl")

precache_model("models/sentry2.mdl")



mdl_gib_build1 = engfunc(EngFunc_PrecacheModel,"models/mbarrel.mdl")

mdl_gib_build2 = engfunc(EngFunc_PrecacheModel,"models/computergibs.mdl")

mdl_gib_build3 = engfunc(EngFunc_PrecacheModel,"models/metalplategibs.mdl")

mdl_gib_build4 = engfunc(EngFunc_PrecacheModel,"models/cindergibs.mdl")



precache_sound("debris/bustmetal1.wav");

precache_sound("debris/bustmetal2.wav");

}

public fwHamTakeDamage( this, idinflictor, idattacker, Float:damage, damagebits ) {

static classname[ 20 ];

pev( this, pev_classname, classname, 19 );



if( ( equal( classname, "sentry_shot" ) || equal( classname, "sentry_base" ) ) && is_user_connected( idattacker ) && get_user_team(pev(this,pev_iuser1)) == get_user_team(idattacker) ){

  return HAM_SUPERCEDE;

}

return HAM_IGNORED;



}

public NowaRunda()

{

remove_entity_name("sentry_base")

remove_entity_name("sentry_shot")

}

public cod_class_enabled(id)

{

	    if(!(get_user_flags(id) & ADMIN_LEVEL_H)) //FLAGA

	    {

			    client_print(id,print_chat,"Jest to klasa Premium");

			    return COD_STOP;

	    }

	    ma_klase[id] = true;

	    return COD_CONTINUE;

}

public cod_class_disabled(id)

{

ma_klase[id] = false;

}

public OpcjeDzialka(id)

{

new menu,newmenu,menupage

player_menu_info(id,menu,newmenu,menupage);

if(menu > 0 || newmenu != -1)

{

  return PLUGIN_CONTINUE;

}



gMenuDzialko[id] = menu_create("Dzialo", "OpcjeDziala_Handle");

menu_additem(gMenuDzialko[id],"Postaw dzialo");

menu_additem(gMenuDzialko[id],"Zniszcz dzialo");



menu_setprop(gMenuDzialko[id],MPROP_NUMBER_COLOR,"\r")

menu_display(id,gMenuDzialko[id]);

return PLUGIN_CONTINUE;

}

public OpcjeDziala_Handle(id,menu,item)

{

if(item == MENU_EXIT || !is_user_alive(id))

{

  menu_destroy(menu);

  return PLUGIN_CONTINUE;

}

switch(item)

{

  case 0:

  {

   if(ma_klase[id] && ma_dzialko[id])

   {

    new Float:Origin[3]

    pev(id, pev_origin, Origin)

    new Float:vNewOrigin[3]

    new Float:vTraceDirection[3]

    new Float:vTraceEnd[3]

    new Float:vTraceResult[3]

    velocity_by_aim(id, 64, vTraceDirection) // get a velocity in the directino player is aiming, with a multiplier of 64...

    vTraceEnd[0] = vTraceDirection[0] + Origin[0]

    vTraceEnd[1] = vTraceDirection[1] + Origin[1]

    vTraceEnd[2] = vTraceDirection[2] + Origin[2]

    fm_trace_line(id, Origin, vTraceEnd, vTraceResult)

    vNewOrigin[0] = vTraceResult[0]

    vNewOrigin[1] = vTraceResult[1]

    vNewOrigin[2] = Origin[2]

    if(!(StawDzialo(vNewOrigin,id)))

    {

	 client_print(id, print_center, "Nie mozesz tu postawic dziala!")

    }

    else

    {

	 ma_dzialko[id] = false;

    }

   }

  }

  case 1:

  {

   new iEnt = -1;

   while((iEnt = find_ent_by_class(iEnt,"sentry_shot")) != 0)

   {

    if(pev_valid(iEnt) && pev(iEnt,pev_iuser1) == id)

    {

	 FX_Demolish(iEnt)

	 remove_entity(iEnt);

    }

   }

   iEnt = -1;

   while((iEnt = find_ent_by_class(iEnt,"sentry_base")) != 0)

   {

    if(pev_valid(iEnt) && pev(iEnt,pev_iuser1) == id)

    {

	 FX_Demolish(iEnt)

	 remove_entity(iEnt);

    }

   }

  }

}

menu_destroy(menu);

return PLUGIN_CONTINUE;

}

public bool:StawDzialo(Float:origin[3],id)

{

if (fm_point_contents(origin) != CONTENTS_EMPTY || is_hull_default(origin, 32.0))

{

  return false

}

new Float:hitPoint[3], Float:originDown[3]

originDown = origin

originDown[2] = -5000.0

fm_trace_line(0, origin, originDown, hitPoint)

new Float:DistanceFromGround = vector_distance(origin, hitPoint)



new Float:difference = 36.0 - DistanceFromGround

if (difference < -1 * 10.0 || difference > 10.0) return false



new sentry_base = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"func_breakable"))

if (!sentry_base){

  return false

}

set_pev(sentry_base, pev_classname, "sentry_base")



engfunc(EngFunc_SetModel, sentry_base, "models/base2.mdl")

engfunc(EngFunc_SetSize, sentry_base, {-16.0, -16.0, 0.0}, {16.0, 16.0, 25.0})

engfunc(EngFunc_SetOrigin, sentry_base, origin)

new Float:fAngle[3];

pev(id, pev_v_angle, fAngle)

fAngle[0] = 0.0

fAngle[1] += 180.0

fAngle[2] = 0.0

set_pev(sentry_base, pev_angles, fAngle)

set_pev(sentry_base, pev_solid, SOLID_BBOX)

set_pev(sentry_base, pev_movetype, MOVETYPE_TOSS)

set_pev(sentry_base, pev_iuser1, id)

set_pev(sentry_base, pev_iuser2, 0)

set_pev(sentry_base, pev_iuser3, 0)



return true;

}

public ham_ItemDeploy_Post(weapon_ent)

{

static owner

owner = get_pdata_cbase(weapon_ent, OFFSET_WPN_WIN, OFFSET_WPN_LINUX);



static weaponid

weaponid = cs_get_weapon_id(weapon_ent)



if(!is_user_alive(owner))

{

  return HAM_IGNORED;

}



static menu,newmenu,menupage

player_menu_info(owner,menu,newmenu,menupage);



if(gMenuDzialko[owner] && newmenu == gMenuDzialko[owner])

{

  show_menu(owner,0,"^n");

  gMenuDzialko[owner] = 0;

}



if(weaponid == CSW_KNIFE && ma_klase[owner])

{

  entity_set_string(owner, EV_SZ_viewmodel, "models/v_tfc_spanner.mdl")

  OpcjeDzialka(owner);

}

return HAM_IGNORED;

}



stock FX_Demolish(build)

{

if(!pev_valid(build)) return;



new Float:forigin[3],iorigin[3],i

pev(build, pev_origin, forigin)

FVecIVec(forigin,iorigin)

 

for(i = 1;i <= 1;i++)

{

  message_begin(MSG_BROADCAST,SVC_TEMPENTITY)

  write_byte(TE_MODEL)

  write_coord(iorigin[0])

  write_coord(iorigin[1])

  write_coord(iorigin[2])

  write_coord(random_num(-150,150))

  write_coord(random_num(-150,150))

  write_coord(random_num(150,350))

  write_angle(random_num(0,360))

  write_short(mdl_gib_build1)

  write_byte(0) // bounce

  write_byte(10) // life

  message_end()

}

for(i = 1;i <= 1;i++)

{

  message_begin(MSG_BROADCAST,SVC_TEMPENTITY)

  write_byte(TE_MODEL)

  write_coord(iorigin[0])

  write_coord(iorigin[1])

  write_coord(iorigin[2])

  write_coord(random_num(-150,150))

  write_coord(random_num(-150,150))

  write_coord(random_num(150,350))

  write_angle(random_num(0,360))

  write_short(mdl_gib_build2)

  write_byte(0) // bounce

  write_byte(10) // life

  message_end()

}

for(i = 1;i <= 1;i++)

{

  message_begin(MSG_BROADCAST,SVC_TEMPENTITY)

  write_byte(TE_MODEL)

  write_coord(iorigin[0])

  write_coord(iorigin[1])

  write_coord(iorigin[2])

  write_coord(random_num(-150,150))

  write_coord(random_num(-150,150))

  write_coord(random_num(150,350))

  write_angle(random_num(0,360))

  write_short(mdl_gib_build3)

  write_byte(0) // bounce

  write_byte(10) // life

  message_end()

}

for(i = 1;i <= 1;i++)

{

  message_begin(MSG_BROADCAST,SVC_TEMPENTITY)

  write_byte(TE_MODEL)

  write_coord(iorigin[0])

  write_coord(iorigin[1])

  write_coord(iorigin[2])

  write_coord(random_num(-150,150))

  write_coord(random_num(-150,150))

  write_coord(random_num(150,350))

  write_angle(random_num(0,360))

  write_short(mdl_gib_build4)

  write_byte(0) // bounce

  write_byte(10) // life

  message_end()

}

}



public DajNoweDzialko(id)

{

if(!is_user_connected(id) || !is_user_alive(id))

  return PLUGIN_CONTINUE;

 

if(ma_klase[id])

{

  ma_dzialko[id] = true;

}

return PLUGIN_CONTINUE;

}

set_animation(id, anim) {

set_pev(id, pev_weaponanim, anim)



message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, id)

write_byte(anim)

write_byte(pev(id, pev_body))

message_end()

}

public fw_TraceAttack_Building(id, enemy, Float:damage, Float:direction[3], tracehandle, damagetype){

if (!(1 <= enemy <= g_maxplayers) || get_user_weapon(enemy) != CSW_KNIFE || !is_user_alive(enemy))

{

  return HAM_IGNORED

}

new classname[24]

pev(id, pev_classname, classname, sizeof classname - 1)

new weapon = get_user_weapon(enemy)

if(weapon == CSW_KNIFE && ma_klase[enemy] && pev(id,pev_iuser1) == enemy && equal(classname,"sentry_base") && pev(id,pev_iuser2) < 100){

  set_pev(id,pev_iuser2,pev(id,pev_iuser2)+get_pcvar_num(pcvarPercent) > 100 ? 100 : pev(id,pev_iuser2)+get_pcvar_num(pcvarPercent));

  set_animation(enemy,8);

  if(pev(id,pev_iuser2) >= 100 && !pev(id,pev_iuser3)){

   client_print(enemy,print_center,"%d %%",pev(id,pev_iuser2))

   set_pev(id,pev_iuser3,stawdzialo2(id));

  }

  else

  {

   client_print(enemy,print_center,"%d %%",pev(id,pev_iuser2))

  }

 

}

return HAM_IGNORED

}



public stawdzialo2(ent)

{

new Float:origin[3];

pev(ent,pev_origin,origin);

new sentry_shot2 = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"func_breakable"))

if (!sentry_shot2)

{

  return 0

}

new szHealth[16]

get_pcvar_string(pcvarHealth,szHealth,charsmax(szHealth))



fm_set_kvd(sentry_shot2, "health", szHealth, "func_breakable")

fm_set_kvd(sentry_shot2, "material", "6", "func_breakable")

fm_DispatchSpawn(sentry_shot2)



set_pev(sentry_shot2, pev_classname, "sentry_shot")



engfunc(EngFunc_SetModel, sentry_shot2, "models/sentry2.mdl")

engfunc(EngFunc_SetSize, sentry_shot2, {-16.0, -16.0, 0.0}, {16.0, 16.0, 20.0})

origin[2] += 25.0;

engfunc(EngFunc_SetOrigin, sentry_shot2, origin)

new Float:fAngle[3];

pev(pev(ent,pev_iuser1), pev_v_angle, fAngle)

fAngle[0] = 0.0

fAngle[1] += 180.0

fAngle[2] = 0.0

set_pev(sentry_shot2, pev_angles, fAngle)

set_pev(sentry_shot2, pev_solid, SOLID_BBOX)

set_pev(sentry_shot2, pev_movetype, MOVETYPE_TOSS)

set_pev(sentry_shot2, pev_iuser1, pev(ent,pev_iuser1))

set_pev(sentry_shot2, pev_iuser2, ent)



set_pev( sentry_shot2, pev_sequence, 0 );

set_pev( sentry_shot2, pev_animtime, get_gametime() );

set_pev( sentry_shot2, pev_framerate, 1.0 );



set_pev(sentry_shot2, pev_nextthink, get_gametime() + SENTRY_THINK)

return sentry_shot2;

}

public sentry_find_player(ent)

{

new Float:fOrigin[3],Float:fOrigin2[3],Float:distance = 999999.0,Float:hitOrigin[3],iCloseId = 0,iOwner = 0;

iOwner = pev(ent,pev_iuser1)

pev(ent,pev_origin,fOrigin)

for(new i = 1;i<33;i++)

{

  if(!is_user_alive(i) || get_user_team(i) == get_user_team(iOwner))

  {

   continue;

  }

  pev(i, pev_origin, fOrigin2)

  new hitent = fm_trace_line(ent, fOrigin, fOrigin2, hitOrigin)

  if(distance > vector_distance(fOrigin,fOrigin2) && hitent == i)

  {

   distance = vector_distance(fOrigin,fOrigin2)

   iCloseId = i;

  }

}

return iCloseId;

}

public sentry_shot(ent)

{

if(!pev_valid(ent))

{

  return PLUGIN_CONTINUE;

}

if(entity_get_float(ent,EV_FL_health) <= 0.0)

{

  if(pev_valid(pev(ent,pev_iuser2)))

  {

   remove_entity(pev(ent,pev_iuser2));

  }

  remove_entity(ent);

  return PLUGIN_CONTINUE;

}

new iFind = 0;

if((iFind = sentry_find_player(ent)))

{

  remove_task(ent+45676);

  turntotarget(ent,iFind);

  sentry_shot3(ent,iFind);

  set_task(0.5,"stop_anim",ent+45676)

}

set_pev(ent, pev_nextthink, get_gametime() + SENTRY_THINK)

return PLUGIN_CONTINUE;

}

public sentry_shot3(ent,target)

{

new Float:sentryOrigin[3], Float:targetOrigin[3], Float:hitOrigin[3]

pev(ent, pev_origin, sentryOrigin)

sentryOrigin[2] += 18.0

pev(target, pev_origin, targetOrigin)

targetOrigin[0] += random_float(-16.0, 16.0)

targetOrigin[1] += random_float(-16.0, 16.0)

targetOrigin[2] += random_float(-16.0, 16.0)

new hit = fm_trace_line(ent, sentryOrigin, targetOrigin, hitOrigin)

if(hit == target)

{

  knockback_explode(target, sentryOrigin, 5.0)

  ExecuteHam(Ham_TakeDamage, target, 0, pev(ent,pev_iuser1),get_pcvar_float(pcvarDamage) , 1);

  set_pev( ent, pev_sequence, 1 );

  set_pev( ent, pev_animtime, get_gametime() );

  set_pev( ent, pev_framerate, 1.0 );

}

FX_Trace(sentryOrigin, hitOrigin)

engfunc(EngFunc_EmitSound, ent, CHAN_STATIC, "sentry_shoot.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

}

public stop_anim(ent){

ent -= 45676;

if(pev_valid(ent)){

  set_pev( ent, pev_sequence, 0 );

  set_pev(ent, pev_animtime, get_gametime() );

  set_pev( ent, pev_framerate, 1.0 );

}

}

public knockback_explode(id, const Float:exp_origin[3], Float:force)

{

if(!is_user_alive(id)) return



if(force == 0.0) return



new Float:old_velocity[3], Float:velocity[3], Float:id_origin[3], Float:output[3]

pev(id, pev_origin, id_origin);

get_speed_vector(exp_origin, id_origin, force, velocity);

pev(id, pev_velocity, old_velocity);

xs_vec_add(velocity, old_velocity, output)

set_pev(id, pev_velocity, output)

}

public turntotarget(ent, target)

{

if (target)

{

  new Float:closestOrigin[3],Float:sentryOrigin[3]

  pev(target, pev_origin, closestOrigin)

  pev(ent, pev_origin, sentryOrigin)

  new Float:newAngle[3]

  pev(ent, pev_angles, newAngle)

  new Float:x = closestOrigin[0] - sentryOrigin[0]

  new Float:z = closestOrigin[1] - sentryOrigin[1]

 

  new Float:radians = floatatan(z/x, radian)

  newAngle[1] = radians * 180.0 / 3.14159

  if (closestOrigin[0] < sentryOrigin[0])

  newAngle[1] -= 180.0

 

  new Float:h = closestOrigin[2] - sentryOrigin[2]

  new Float:b = vector_distance(sentryOrigin, closestOrigin)

  radians = floatatan(h/b, radian)

  new Float:degs = radians * 180.0 / 3.14159

  new Float:RADIUS = 830.0

  new Float:degreeByte = RADIUS/256.0

  new Float:tilt = 127.0 - degreeByte * degs

  set_pev(ent, pev_angles, newAngle)

  set_pev(ent, pev_controller_1, floatround(tilt))

}

}

stock FX_Trace(const Float:idorigin[3], const Float:targetorigin[3])

{

new id[3],target[3]

FVecIVec(idorigin,id)

FVecIVec(targetorigin,target)

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)

write_byte(6)//TE_TRACER

write_coord(id[0])

write_coord(id[1])

write_coord(id[2])

write_coord(target[0])

write_coord(target[1])

write_coord(target[2])

message_end()

}

stock bool:is_hull_default(Float:origin[3], const Float:BOUNDS){

new Float:traceEnds[8][3], Float:traceHit[3], hitEnt

traceEnds[0][0] = origin[0] - BOUNDS

traceEnds[0][1] = origin[1] - BOUNDS

traceEnds[0][2] = origin[2] - BOUNDS



traceEnds[1][0] = origin[0] - BOUNDS

traceEnds[1][1] = origin[1] - BOUNDS

traceEnds[1][2] = origin[2] + BOUNDS



traceEnds[2][0] = origin[0] + BOUNDS

traceEnds[2][1] = origin[1] - BOUNDS

traceEnds[2][2] = origin[2] + BOUNDS



traceEnds[3][0] = origin[0] + BOUNDS

traceEnds[3][1] = origin[1] - BOUNDS

traceEnds[3][2] = origin[2] - BOUNDS



traceEnds[4][0] = origin[0] - BOUNDS

traceEnds[4][1] = origin[1] + BOUNDS

traceEnds[4][2] = origin[2] - BOUNDS



traceEnds[5][0] = origin[0] - BOUNDS

traceEnds[5][1] = origin[1] + BOUNDS

traceEnds[5][2] = origin[2] + BOUNDS



traceEnds[6][0] = origin[0] + BOUNDS

traceEnds[6][1] = origin[1] + BOUNDS

traceEnds[6][2] = origin[2] + BOUNDS



traceEnds[7][0] = origin[0] + BOUNDS

traceEnds[7][1] = origin[1] + BOUNDS

traceEnds[7][2] = origin[2] - BOUNDS



for (new i = 0; i < 8; i++) {

  if (fm_point_contents(traceEnds[i]) != CONTENTS_EMPTY)

  return true

 

  hitEnt = fm_trace_line(0, origin, traceEnds[i], traceHit)

  if (hitEnt != 0)

  return true

  for (new j = 0; j < 3; j++)

  if (traceEnds[i][j] != traceHit[j])

  return true

}

return false

}

stock get_speed_vector(const Float:origin1[3], const Float:origin2[3], Float:force, 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(force*force / (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;

}


  • +
  • -
  • 0

#16 Yakenn

    Życzliwy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:24
  • Imię:Kamil
  • Lokalizacja:Jasło
Offline

Napisano 09.04.2012 11:21

masz

Załączone pliki


Użytkownik Yakenn edytował ten post 09.04.2012 11:21

  • +
  • -
  • 0

#17 P@trYk^.^

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:299
  • Imię:Patryk
  • Lokalizacja:Piła
Offline

Napisano 09.04.2012 11:23

A jak chcę usunąć klase to wystarczy usunąć ją z scripting i plugins ?
  • +
  • -
  • 0

#18 Pietras11

    Wszechwiedzący

  • Power User

Reputacja: 89
Zaawansowany

  • Postów:518
  • GG:
  • Steam:steam
  • Imię:Piotr
  • Lokalizacja:Gniezno
Offline

Napisano 09.04.2012 11:56

i plugins codmod.ini
  • +
  • -
  • 0

#19 P@trYk^.^

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 2
Nowy

  • Postów:299
  • Imię:Patryk
  • Lokalizacja:Piła
Offline

Napisano 09.04.2012 14:48

Yakenn a czy mógłbyś zrobić żeby nie pisało Inżynier(VIP) ?
  • +
  • -
  • 0

#20 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 09.04.2012 16:55

Usun z nazwy[] = "Inzynier(VIP)" Vip
  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: Modyfikacja

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych