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

Znowu Termalne gogle :)


  • Zamknięty Temat jest zamknięty
Brak odpowiedzi do tego tematu

#1 Wizzardius

    Pomocny

  • Użytkownik

Reputacja: 61
Pomocny

  • Postów:41
  • Lokalizacja:Sieardz
Offline

Napisano 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




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

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