Crosshair olduğu yere sabit bir spr istiyorum. Bu entity şeklinde olucak. Bunun yönünü vs. ayarlıyabıleceğim şekilde yapabilme şansımız var mı ?
Konu
Ekrana sabit spr yi crosshair eklentisinden bakarak yapabilirdiniz bildiğim kadarıyla kodlama bilginiz vardı. Yönünü angel ile ayarlayabilirsiniz.
Entity olacak ise bunu herkesin görebileceği şeklinde yapabilirsiniz, yani bir model oluşturmaya çalışacaksınız.
Bunu için spr değil model kullanmalısınız.
@PawNod' Öyle yaparsa yön veremez.
Bunu için spr değil model kullanmalısınız.
@PawNod' Öyle yaparsa yön veremez.
Kod:
#include <amxmodx>
#include <fakemeta>
#include <xs>
#include <zombieplague>
#if AMXX_VERSION_NUM < 183
#define client_disconnected client_disconnect
#endif
#define DISTANCE 27 // do not modify
//#define TASK_CREATE 30103103
#define TASK_REMOVE_SPRITE 301031
#define isTeam(%1) (1 <= get_user_team(%1) <= 2)
new g_iPlayerEnt[33], g_iStopFrame[33], g_roundend
new const g_win[] = "sprites/winh.spr"
new const g_lost[] = "sprites/winz.spr"
public plugin_init()
{
register_plugin("PUBNite: Win Sprite", "1.0", "Devil259/EFFx")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_forward(FM_AddToFullPack , "fwAddToFullPack", 1)
register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
g_roundend = 0
}
public plugin_precache()
{
precache_model(g_win)
precache_model(g_lost)
}
public zp_round_ended(winteam)
{
for(new i = 0; i < get_maxplayers(); i++)
{
if(is_user_alive(i) && is_user_connected(i))
{
//set_task(0.6, "createSprite", i + TASK_CREATE)
if(winteam == WIN_HUMANS)
displaySprite(i, g_win)
else
displaySprite(i, g_lost)
//set_player_light(i, "a")
//set_pev(i, pev_maxspeed, 0.1)
set_pev(i, pev_viewmodel2, "")
}
g_roundend = 1
}
}
public Event_CurWeapon(iPlayer)
{
if(!is_user_alive(iPlayer))
return
if(g_roundend)
{
set_pev(iPlayer, pev_viewmodel2, "")
//set_pev(iPlayer, pev_maxspeed, 0.1)
}
}
public fwAddToFullPack(es, e, iEnt, iHost, host_flags, player, p_set)
{
if(!is_user_connected(iHost))
return FMRES_IGNORED
if(iEnt == g_iPlayerEnt[iHost])
{
if(!is_user_alive(iHost))
return FMRES_IGNORED
static Float:flOrigin[3] , Float:flVec[3], Float:flViewOffset[3]
pev(iHost, pev_origin, flOrigin )
pev(iHost, pev_view_ofs, flViewOffset)
xs_vec_add(flOrigin, flViewOffset, flOrigin)
flOrigin[2] += 3.0
velocity_by_aim(iHost , DISTANCE, flVec)
xs_vec_add(flOrigin, flVec, flOrigin)
engfunc(EngFunc_SetOrigin, iEnt, flOrigin)
set_es(es, ES_Origin, flOrigin)
set_es(es, ES_RenderMode, kRenderNormal)
set_es(es, ES_RenderAmt, 9999)
if(!g_iStopFrame[iHost])
return FMRES_IGNORED
if(pev(iEnt, pev_frame) == g_iStopFrame[iHost])
{
set_pev(iEnt, pev_framerate, 0.0)
g_iStopFrame[iHost] = 0
}
}
return FMRES_IGNORED
}
public client_putinserver(id)
{
if(pev_valid(g_iPlayerEnt[id]))
RemoveEntity(id)
}
public client_disconnected(id)
{
if(pev_valid(g_iPlayerEnt[id]))
RemoveEntity(id)
}
public event_round_start()
{
for(new i = 0; i < get_maxplayers(); i++)
{
if(pev_valid(g_iPlayerEnt[i]))
RemoveEntity(i)
}
g_roundend = 0
}
displaySprite(id , const SpriteName[], Float:SpriteSize = 0.05, StopFrame = 0, Float:FrameRate = 0.0)
{
if(!is_user_connected(id) || g_iPlayerEnt[id])
return
g_iPlayerEnt[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))
if(!pev_valid(g_iPlayerEnt[id]))
return
set_pev(g_iPlayerEnt[id], pev_takedamage, 0.0)
set_pev(g_iPlayerEnt[id], pev_solid, SOLID_NOT)
set_pev(g_iPlayerEnt[id], pev_movetype, MOVETYPE_FOLLOW)
engfunc(EngFunc_SetModel, g_iPlayerEnt[id], SpriteName)
set_pev(g_iPlayerEnt[id], pev_rendermode, kRenderTransAlpha)
set_pev(g_iPlayerEnt[id], pev_renderamt, 9999 )
set_pev(g_iPlayerEnt[id], pev_scale, SpriteSize)
g_iStopFrame[id] = StopFrame
if(g_iStopFrame[id] && FrameRate > 0.0)
{
set_pev(g_iPlayerEnt[id], pev_animtime, get_gametime())
set_pev(g_iPlayerEnt[id], pev_framerate, FrameRate)
set_pev(g_iPlayerEnt[id], pev_spawnflags, SF_SPRITE_STARTON)
dllfunc(DLLFunc_Spawn, g_iPlayerEnt[id])
}
set_task(6.0, "removeSprite", id + TASK_REMOVE_SPRITE)
}
public removeSprite(id)
{
id -= TASK_REMOVE_SPRITE
if(!is_user_connected(id) || !pev_valid(g_iPlayerEnt[id]))
return
RemoveEntity(id)
}
RemoveEntity(id)
{
engfunc(EngFunc_RemoveEntity, g_iPlayerEnt[id])
g_iPlayerEnt[id] = 0
g_iStopFrame[id] = 0
}Yanlış yazmışım yapmadım aldım.
Son Düzenleme: 27-01-2020, 16:41, Düzenleyen: deciduous.
Yanlış hatırlamıyorsam o eklentide txt kullanmamak istemediği için öyle bir şey yapmışlardı.
Txt ile yaparsan olabilir, crosshair eklentisi gibi düşün.
Txt ile yaparsan olabilir, crosshair eklentisi gibi düşün.
txt üzerine olunca biraz sıkıntılı oluyor. Bazı oyuncularda açmıyor. Genelde crackli oyuncularda. Ben entity üstüne yapmaya denedim bazı eklentiler buldum fakat pek faydası olmadı.
)

