Zplague
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Zplague Entrar

Seu portal de Zombie Plague no Brasil


description[Resolvido]Dano Modo Sniper ZP 5.0 Empty[Resolvido]Dano Modo Sniper ZP 5.0

more_horiz
Bom eu vi na AlliedMods o modo Sniper que o Junin fez, só que eu queria editar o dano dele, mas não tem cvar. Também olhei no fw_takedamage e não consegui identificar aonde eu poderia fazer a edição!
Queria saber como que faço para alterar o dano.

Agradeço desde já!

Link do Plugin : http://forums.alliedmods.net/showpost.php?p=1639532&postcount=5

description[Resolvido]Dano Modo Sniper ZP 5.0 EmptyRe: [Resolvido]Dano Modo Sniper ZP 5.0

more_horiz
UP!

description[Resolvido]Dano Modo Sniper ZP 5.0 EmptyRe: [Resolvido]Dano Modo Sniper ZP 5.0

more_horiz
Up!
Alguém pode tentar me ajudar?

description[Resolvido]Dano Modo Sniper ZP 5.0 EmptyRe: [Resolvido]Dano Modo Sniper ZP 5.0

more_horiz
Comando Adicionado :

Código:

cvar_sniperdamage


Código:

/*================================================================================

----------------------------
-*- [ZP] Class: sniper -*-
----------------------------

This plugin is part of Zombie Plague Mod and is distributed under the
terms of the GNU General Public License. Check ZP_ReadMe.txt for details.

================================================================================*/

#include <amxmodx>
#include < fun >
#include <cstrike>
#include <zombieplague>
#include <fakemeta>
#include <hamsandwich>
#include <amx_settings_api>
#include <cs_maxspeed_api>
#include <cs_player_models_api>
#include <cs_weap_models_api>
#include <cs_ham_bots_api>
#include <zp50_core>
#include <zp50_items.inc>




new g_currentweapon[33]

// CS Weapon CBase Offsets (win32)
const OFFSET_WEAPONOWNER = 41
const OFFSET_LINUX_WEAPONS = 4 // weapon offsets are only 4 steps higher on Linux

// Settings file
new const ZP_SETTINGS_FILE[] = "zombieplague.ini"

// Default models
new const models_sniper_player[][] = { "sniper" }

new Array:g_models_sniper_player

#define PLAYERMODEL_MAX_LENGTH 32
#define MODEL_MAX_LENGTH 64

new g_models_sniper_weapon[MODEL_MAX_LENGTH] = "models/zombie_plague/v_sniper_laser_gun.mdl"

#define TASK_AURA 100
#define ID_AURA (taskid - TASK_AURA)

#define flag_get(%1,%2) (%1 & (1 << (%2 & 31)))
#define flag_get_boolean(%1,%2) (flag_get(%1,%2) ? true : false)
#define flag_set(%1,%2) %1 |= (1 << (%2 & 31))
#define flag_unset(%1,%2) %1 &= ~(1 << (%2 & 31))

// CS Player CBase Offsets (win32)
const PDATA_SAFE = 2
const OFFSET_ACTIVE_ITEM = 373

// Weapon bitsums
const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
const GRENADES_WEAPONS_BIT_SUM = (1<<CSW_HEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_SMOKEGRENADE)

// Ammo Type Names for weapons
new const AMMOTYPE[][] = { "", "357sig", "", "762nato", "", "buckshot", "", "45acp", "556nato", "", "9mm", "57mm", "45acp",
   "556nato", "556nato", "556nato", "45acp", "9mm", "338magnum", "9mm", "556natobox", "buckshot",
"556nato", "9mm", "762nato", "", "50ae", "556nato", "762nato", "", "57mm" }

// Weapon entity names
new const WEAPONENTNAMES[][] = { "", "weapon_p228", "", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10",
   "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550",
   "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
   "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552",
"weapon_ak47", "weapon_knife", "weapon_p90" }


// Max BP ammo for weapons
new const MAXBPAMMO[] = { -1, 52, -1, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120,
30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, -1, 100 }

#define PRIMARY_ONLY 1
#define SECONDARY_ONLY 2
#define GRENADES_ONLY 4

new g_MaxPlayers
new g_Issniper

new cvar_sniper_health, cvar_sniper_base_health, cvar_sniper_speed, cvar_sniper_gravity
new cvar_sniper_glow
new cvar_sniper_aura, cvar_sniper_aura_color_R, cvar_sniper_aura_color_G, cvar_sniper_aura_color_B
new cvar_sniper_weapon, cvar_sniper_weapon_block, cvar_sniperdamage

public plugin_init()
{
   register_plugin("[ZP] Class: sniper", ZP_VERSION_STRING, "ZP Dev Team")
   RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
   register_clcmd("drop", "clcmd_drop")
   RegisterHam(Ham_Touch, "weaponbox", "fw_TouchWeapon")
   RegisterHam(Ham_Touch, "armoury_entity", "fw_TouchWeapon")
   RegisterHam(Ham_Touch, "weapon_shield", "fw_TouchWeapon")
   RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
   RegisterHamBots(Ham_Killed, "fw_PlayerKilled")
   
   g_MaxPlayers = get_maxplayers()
   
   
   for (new i = 1; i < sizeof WEAPONENTNAMES; i++)
      if (WEAPONENTNAMES[i][0]) RegisterHam(Ham_Item_Deploy, WEAPONENTNAMES[i], "fw_Item_Deploy_Post", 1)
   
   cvar_sniper_health = register_cvar("zp_sniper_health", "0")
   cvar_sniper_base_health = register_cvar("zp_sniper_base_health", "230")
   cvar_sniper_speed = register_cvar("zp_sniper_speed", "0.95")
   cvar_sniper_gravity = register_cvar("zp_sniper_gravity", "1.0")
   cvar_sniper_glow = register_cvar("zp_sniper_glow", "0")
   cvar_sniper_aura = register_cvar("zp_sniper_aura", "1")
   cvar_sniper_aura_color_R = register_cvar("zp_sniper_aura_color_R", "000")
   cvar_sniper_aura_color_G = register_cvar("zp_sniper_aura_color_G", "0")
   cvar_sniper_aura_color_B = register_cvar("zp_sniper_aura_color_B", "100")
   cvar_sniper_weapon = register_cvar("zp_sniper_weapon", "weapon_awp")
   cvar_sniperdamage = register_cvar("zp_sniper_damage", "500")
   cvar_sniper_weapon_block = register_cvar("zp_sniper_weapon_block", "1")
}

public plugin_precache()
{
   // Initialize arrays
   g_models_sniper_player = ArrayCreate(PLAYERMODEL_MAX_LENGTH, 1)
   
   // Load from external file
   amx_load_setting_string_arr(ZP_SETTINGS_FILE, "Player Models", "SNIPER", g_models_sniper_player)
   
   // If we couldn't load from file, use and save default ones
   new index
   if (ArraySize(g_models_sniper_player) == 0)
   {
      for (index = 0; index < sizeof models_sniper_player; index++)
         ArrayPushString(g_models_sniper_player, models_sniper_player[index])
      
      // Save to external file
      amx_save_setting_string_arr(ZP_SETTINGS_FILE, "Player Models", "SNIPER", g_models_sniper_player)
   }
   
   // Load from external file, save if not found
   if (!amx_load_setting_string(ZP_SETTINGS_FILE, "Weapon Models", "V_WEAPON SNIPER", g_models_sniper_weapon, charsmax(g_models_sniper_weapon)))
      amx_save_setting_string(ZP_SETTINGS_FILE, "Weapon Models", "V_WEAPON SNIPER", g_models_sniper_weapon)
   
   
   // Precache models
   new player_model[PLAYERMODEL_MAX_LENGTH], model_path[128]
   for (index = 0; index < ArraySize(g_models_sniper_player); index++)
   {
      ArrayGetString(g_models_sniper_player, index, player_model, charsmax(player_model))
      formatex(model_path, charsmax(model_path), "models/player/%s/%s.mdl", player_model, player_model)
      precache_model(model_path)
      // Support modelT.mdl files
      formatex(model_path, charsmax(model_path), "models/player/%s/%sT.mdl", player_model, player_model)
      if (file_exists(model_path)) precache_model(model_path)
   }
   
   precache_model(g_models_sniper_weapon)
}

public plugin_natives()
{
   register_library("zp50_class_sniper")
   register_native("zp_class_sniper_get", "native_class_sniper_get")
   register_native("zp_class_sniper_set", "native_class_sniper_set")
   register_native("zp_class_sniper_get_count", "native_class_sniper_get_count")
}

public client_disconnect(id)
{
   flag_unset(g_Issniper, id)
   remove_task(id+TASK_AURA)
}

public clcmd_drop(id)
{
   // Should sniper stick to his weapon?
   if (flag_get(g_Issniper, id) && get_pcvar_num(cvar_sniper_weapon_block))
      return PLUGIN_HANDLED;
   
   return PLUGIN_CONTINUE;
}

// Ham Weapon Touch Forward
public fw_TouchWeapon(weapon, id)
{
   // Should sniper stick to his weapon?
   if (get_pcvar_num(cvar_sniper_weapon_block) && is_user_alive(id) && flag_get(g_Issniper, id))
      return HAM_SUPERCEDE;
   
   return HAM_IGNORED;
}

// Ham Player Killed Forward
public fw_PlayerKilled(victim, attacker, shouldgib)
{
   if (flag_get(g_Issniper, victim))
   {
      // Remove sniper aura
      if (get_pcvar_num(cvar_sniper_aura))
         remove_task(victim+TASK_AURA)
   }
}

public zp_fw_core_spawn_post(id)
{
   if (flag_get(g_Issniper, id))
   {
      // Remove sniper glow
      if (get_pcvar_num(cvar_sniper_glow))
         set_user_rendering(id)
      
      // Remove sniper aura
      if (get_pcvar_num(cvar_sniper_aura))
         remove_task(id+TASK_AURA)
      
      
      // Remove sniper weapon model
      new weapon_name[32]
      get_pcvar_string(cvar_sniper_weapon, weapon_name, charsmax(weapon_name))
      new weapon_id = get_weaponid(weapon_name)
      cs_reset_player_view_model(id, weapon_id)
      
      // Remove sniper flag
      flag_unset(g_Issniper, id)
   }
}

public zp_fw_core_infect(id, attacker)
{
   if (flag_get(g_Issniper, id))
   {
      // Remove sniper glow
      if (get_pcvar_num(cvar_sniper_glow))
         set_user_rendering(id)
      
      // Remove sniper aura
      if (get_pcvar_num(cvar_sniper_aura))
         remove_task(id+TASK_AURA)
      
      // Remove sniper weapon model
      new weapon_name[32]
      get_pcvar_string(cvar_sniper_weapon, weapon_name, charsmax(weapon_name))
      new weapon_id = get_weaponid(weapon_name)
      cs_reset_player_view_model(id, weapon_id)
      
      // Remove sniper flag
      flag_unset(g_Issniper, id)
   }
}
// Ham Take Damage Forward
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
   // Non-player damage or self damage
   if (victim == attacker || !is_user_alive(attacker))
      return HAM_IGNORED;
   
   // Assassin attacking human
   if (flag_get(g_Issniper, attacker) && zp_core_is_zombie(victim))
   {
      // Ignore assassin damage override if damage comes from a 3rd party entity
      // (to prevent this from affecting a sub-plugin's rockets e.g.)
      if (inflictor == attacker)
      {
         new plrWeapId, plrClip, plrAmmo   
         plrWeapId = get_user_weapon(attacker, plrClip, plrAmmo)
         
         if (plrWeapId == CSW_AWP)
            
         SetHamParamFloat(4, get_pcvar_float(cvar_sniperdamage))
         
         return HAM_HANDLED;
      }
   }
   
   return HAM_IGNORED;
}   

public zp_fw_core_cure_post(id, attacker)
{
   // Apply sniper attributes?
   if (!flag_get(g_Issniper, id))
      return;
   
   // Health
   if (get_pcvar_num(cvar_sniper_health) == 0)
      set_user_health(id, get_pcvar_num(cvar_sniper_base_health) * GetAliveCount())
   else
      set_user_health(id, get_pcvar_num(cvar_sniper_health))
   
   // Gravity
   set_user_gravity(id, get_pcvar_float(cvar_sniper_gravity))
   
   // Speed (if value between 0 and 10, consider it a multiplier)
   cs_set_player_maxspeed_auto(id, get_pcvar_float(cvar_sniper_speed))
   
   
   // Apply sniper weapon model
   new weapon_name[32]
   get_pcvar_string(cvar_sniper_weapon, weapon_name, charsmax(weapon_name))
   new weapon_id = get_weaponid(weapon_name)
   cs_set_player_view_model(id, weapon_id, g_models_sniper_weapon)
   
   
   
   // sniper glow
   if (get_pcvar_num(cvar_sniper_glow))
      set_user_rendering(id, kRenderFxGlowShell, 0, 0, 255, kRenderFxGlowShell, 100)
   
   // sniper aura task
   if (get_pcvar_num(cvar_sniper_aura))
      set_task(0.1, "sniper_aura", id+TASK_AURA, _, _, "b")
   
   set_task(1.1, "ga_linha", id)
   client_cmd(id,"slot10")
   // Strip current weapons and give sniper weapon
   strip_weapons(id, PRIMARY_ONLY)
   strip_weapons(id, SECONDARY_ONLY)
   strip_weapons(id, GRENADES_ONLY)
   give_item(id, weapon_name)
   ExecuteHamB(Ham_GiveAmmo, id, MAXBPAMMO[weapon_id], AMMOTYPE[weapon_id], MAXBPAMMO[weapon_id])
}
public ga_linha(id)
{
   // Strip current weapons and give sniper weapon
   strip_weapons(id, PRIMARY_ONLY)
   strip_weapons(id, SECONDARY_ONLY)
   strip_weapons(id, GRENADES_ONLY)
   zp_set_user_nightvision(id,1)   
   client_cmd(id,"nightvision")
   give_item(id, "weapon_knife")   
   give_item(id, "weapon_awp")
   client_cmd(id,"slot10")
   cs_set_user_bpammo(id, CSW_AWP, 999)
   
   // Apply sniper player model
   new player_model[PLAYERMODEL_MAX_LENGTH]
   ArrayGetString(g_models_sniper_player, random_num(0, ArraySize(g_models_sniper_player) - 1), player_model, charsmax(player_model))
   cs_set_player_model(id, player_model)
   
}
public native_class_sniper_get(plugin_id, num_params)
{
   new id = get_param(1)
   
   if (!is_user_connected(id))
   {
      log_error(AMX_ERR_NATIVE, "[ZP] Invalid Player (%d)", id)
      return -1;
   }
   
   return flag_get_boolean(g_Issniper, id);
}

public native_class_sniper_set(plugin_id, num_params)
{
   new id = get_param(1)
   
   if (!is_user_alive(id))
   {
      log_error(AMX_ERR_NATIVE, "[ZP] Invalid Player (%d)", id)
      return false;
   }
   
   if (flag_get(g_Issniper, id))
   {
      log_error(AMX_ERR_NATIVE, "[ZP] Player already a sniper (%d)", id)
      return false;
   }
   
   flag_set(g_Issniper, id)
   zp_core_force_cure(id)
   return true;
}

public native_class_sniper_get_count(plugin_id, num_params)
{
   return GetsniperCount();
}

// sniper aura task
public sniper_aura(taskid)
{
   // Get player's origin
   static origin[3]
   get_user_origin(ID_AURA, origin)
   
   // Colored Aura
   message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
   write_byte(TE_DLIGHT) // TE id
   write_coord(origin[0]) // x
   write_coord(origin[1]) // y
   write_coord(origin[2]) // z
   write_byte(7) // radius
   write_byte(get_pcvar_num(cvar_sniper_aura_color_R)) // r
   write_byte(get_pcvar_num(cvar_sniper_aura_color_G)) // g
   write_byte(get_pcvar_num(cvar_sniper_aura_color_B)) // b
   write_byte(2) // life
   write_byte(0) // decay rate
   message_end()
}

// Get Alive Count -returns alive players number-
GetAliveCount()
{
new iAlive, id

for (id = 1; id <= g_MaxPlayers; id++)
{
   if (is_user_alive(id))
      iAlive++
   }
   
return iAlive;
}

// Get sniper Count -returns alive snipers number-
GetsniperCount()
{
new isnipers, id

for (id = 1; id <= g_MaxPlayers; id++)
{
   if (is_user_alive(id) && flag_get(g_Issniper, id))
      isnipers++
   }
   
return isnipers;
}

// Strip primary/secondary/grenades
stock strip_weapons(id, stripwhat)
{
   // Get user weapons
   new weapons[32], num_weapons, index, weaponid
   get_user_weapons(id, weapons, num_weapons)
   
   // Loop through them and drop primaries or secondaries
   for (index = 0; index < num_weapons; index++)
   {
      // Prevent re-indexing the array
      weaponid = weapons[index]
      
      if ((stripwhat == PRIMARY_ONLY && ((1<<weaponid) & PRIMARY_WEAPONS_BIT_SUM))
      || (stripwhat == SECONDARY_ONLY && ((1<<weaponid) & SECONDARY_WEAPONS_BIT_SUM))
      || (stripwhat == GRENADES_ONLY && ((1<<weaponid) & GRENADES_WEAPONS_BIT_SUM)))
   {
      // Get weapon name
      new wname[32]
      get_weaponname(weaponid, wname, charsmax(wname))
      
      // Strip weapon and remove bpammo
      ham_strip_weapon(id, wname)
      cs_set_user_bpammo(id, weaponid, 0)
   }
}
}

stock ham_strip_weapon(index, const weapon[])
{
        // Get weapon id
        new weaponid = get_weaponid(weapon)
        if (!weaponid)
   return false;
   
   // Get weapon entity
   new weapon_ent = fm_find_ent_by_owner(-1, weapon, index)
   if (!weapon_ent)
   return false;
   
   // If it's the current weapon, retire first
   new current_weapon_ent = fm_cs_get_current_weapon_ent(index)
   new current_weapon = pev_valid(current_weapon_ent) ? cs_get_weapon_id(current_weapon_ent) : -1
   if (current_weapon == weaponid)
   ExecuteHamB(Ham_Weapon_RetireWeapon, weapon_ent)
   
   // Remove weapon from player
   if (!ExecuteHamB(Ham_RemovePlayerItem, index, weapon_ent))
   return false;
   
   // Kill weapon entity and fix pev_weapons bitsum
   ExecuteHamB(Ham_Item_Kill, weapon_ent)
   set_pev(index, pev_weapons, pev(index, pev_weapons) & ~(1<<weaponid))
   return true;
}
public zp_fw_items_select_pre(id, itemid, ignorecost)
{
   if(flag_get(g_Issniper, id))
   {         
      return ZP_ITEM_DONT_SHOW;
   }
   //return HAM_IGNORED;
   return PLUGIN_CONTINUE
}

// Find entity by its owner (from fakemeta_util)
stock fm_find_ent_by_owner(entity, const classname[], owner)
{
   while ((entity = engfunc(EngFunc_FindEntityByString, entity, "classname", classname)) && pev(entity, pev_owner) != owner) { /* keep looping */ }
   return entity;
}

// Get User Current Weapon Entity
stock fm_cs_get_current_weapon_ent(id)
{
   // Prevent server crash if entity's private data not initalized
   if (pev_valid(id) != PDATA_SAFE)
      return -1;
   
   return get_pdata_cbase(id, OFFSET_ACTIVE_ITEM);
}
public fw_Item_Deploy_Post(weapon_ent)
{
   if(!pev_valid(weapon_ent))
      return HAM_IGNORED;
   
   static owner
   owner = get_pdata_cbase(weapon_ent, OFFSET_WEAPONOWNER, OFFSET_LINUX_WEAPONS);
   
   static weaponid; weaponid = cs_get_weapon_id(weapon_ent)
   g_currentweapon[owner] = weaponid
   
   if(!flag_get(g_Issniper, owner))
      return HAM_IGNORED;
   
   if(g_currentweapon[owner] == CSW_KNIFE )
   {
      // Iron Man models
      
   }
   if(g_currentweapon[owner] == CSW_AWP)
   {
      // Iron Man models
      
   }
   else
   {
      // Switch to knife
      g_currentweapon[owner] = CSW_AWP
      engclient_cmd(owner, "weapon_awp")
   }
   
   return HAM_IGNORED;
}


Plugin otimizado e adicionado cvar
veja se funcionou ^^

description[Resolvido]Dano Modo Sniper ZP 5.0 EmptyRe: [Resolvido]Dano Modo Sniper ZP 5.0

more_horiz
Obrigado funcionou sim!
Valeu Junin!

description[Resolvido]Dano Modo Sniper ZP 5.0 EmptyRe: [Resolvido]Dano Modo Sniper ZP 5.0

more_horiz
Resolvido;

Trancado.

description[Resolvido]Dano Modo Sniper ZP 5.0 EmptyRe: [Resolvido]Dano Modo Sniper ZP 5.0

more_horiz
privacy_tip Permissões neste sub-fórum
Não podes responder a tópicos
power_settings_newInicie sessão para responder