Jump to content

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

Posted Image Posted Image

Guest Message by DevFuse
 

Photo

Znowu Termalne gogle :)


  • This topic is locked This topic is locked
No replies to this topic

#1 Wizzardius

    Pomocny

  • Użytkownik

Reputacja: 61
Pomocny

  • Postów:41
  • Lokalizacja:Sieardz
Offline

Posted 11.07.2009 00:05

Mógłby mi ktoś przerobić ten plugin pod Zombie Plague żeby zombie widziały termalnie, ale żeby nie musiały miec na sobie noktowizora (bo na zombie plague, te gogle jakby nie odbieraja tej zombiackiej noktowizji :D). A żeby CT z noktowizja czy bez - nie widzieli zadnych plam :) :)

#include <amxmodx>
#include <engine>
#include <xs>

new Float:g_fDelay[33]
new g_ThermalOn[33]
new sprite_blue
new sprite_red

new cvar_enable
new cvar_maxdistance
new cvar_updatedelay

static const PLUGIN_NAME[]     = "Thermal Imaging Goggle"
static const PLUGIN_AUTHOR[]     = "Cheap_Suit"
static const PLUGIN_VERSION[]    = "1.0"

public plugin_init()
{
    register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
    register_cvar(PLUGIN_NAME, PLUGIN_VERSION, FCVAR_SPONLY|FCVAR_SERVER)
   
    cvar_enable    = register_cvar("amx_tig_enable",     "1")
    cvar_maxdistance = register_cvar("amx_tig_distance",     "1000")
    cvar_updatedelay = register_cvar("amx_tig_updatedelay", "0.2")
   
    register_event("NVGToggle", "Event_NVGToggle", "be")
}

public plugin_precache()
{
    sprite_blue = precache_model("sprites/poison.spr")
    sprite_red = precache_model("sprites/explode1.spr")
}

public Event_NVGToggle(id)
    g_ThermalOn[id] = read_data(1)

public client_PostThink(id)
{
    if(!is_user_alive(id) || !g_ThermalOn[id] || !get_pcvar_num(cvar_enable))
        return PLUGIN_CONTINUE
   
    if((g_fDelay[id] + get_pcvar_float(cvar_updatedelay)) > get_gametime())
        return PLUGIN_CONTINUE
   
    g_fDelay[id] = get_gametime()
   
    new Float:fMyOrigin[3]
    entity_get_vector(id, EV_VEC_origin, fMyOrigin)
   
    new userteam = get_user_team(id)
   
    static 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:fTargetOrigin[3]
        entity_get_vector(target, EV_VEC_origin, fTargetOrigin)
       
        if((get_distance_f(fMyOrigin, fTargetOrigin) > get_pcvar_num(cvar_maxdistance))
        || !is_in_viewcone(id, fTargetOrigin))
        continue
       
        new Float:fMiddle[3], Float:fHitPoint[3]
        xs_vec_sub(fTargetOrigin, fMyOrigin, fMiddle)
        trace_line(-1, fMyOrigin, fTargetOrigin, fHitPoint)
       
        new Float:fWallOffset[3], Float:fDistanceToWall
        fDistanceToWall = vector_distance(fMyOrigin, fHitPoint) - 10.0
        normalize(fMiddle, fWallOffset, fDistanceToWall)
       
        new Float:fSpriteOffset[3]
        xs_vec_add(fWallOffset, fMyOrigin, fSpriteOffset)
        new Float:fScale, Float:fDistanceToTarget = vector_distance(fMyOrigin, fTargetOrigin)
       
        if(fDistanceToWall > 100.0)
            fScale = 8.0 * (fDistanceToWall / fDistanceToTarget)
        else
            fScale = 2.0
        if (userteam == 2 && get_user_team(target) == 2)
            te_sprite(id, fSpriteOffset, sprite_red, floatround(fScale), 125)
        else
            te_sprite(id, fSpriteOffset, sprite_blue, floatround(fScale), 125)
    }
    return PLUGIN_CONTINUE
}

stock te_sprite(id, Float:origin[3], sprite, scale, brightness)
{
    message_begin(MSG_ONE, SVC_TEMPENTITY, _, id)
    write_byte(TE_SPRITE)
    write_coord(floatround(origin[0]))
    write_coord(floatround(origin[1]))
    write_coord(floatround(origin[2]))
    write_short(sprite)
    write_byte(scale)
    write_byte(brightness)
    message_end()
}

stock normalize(Float:fIn[3], Float:fOut[3], Float:fMul)
{
    new Float:fLen = xs_vec_len(fIn)
    xs_vec_copy(fIn, fOut)
   
    fOut[0] /= fLen, fOut[1] /= fLen, fOut[2] /= fLen
    fOut[0] *= fMul, fOut[1] *= fMul, fOut[2] *= fMul
}

  • +
  • -
  • 0




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users