Привет , кто может переделать плагин админ вх , там стандартно стоит Флаг (a) как поставить флаг (g) или другой какой-то ? Код:
#include <amxmodx>
#include <fakemeta>
#include <xs>
#define PLUGIN "sprite ESP"
#define AUTHOR "DarkGL"
#define VERSION "1.0"
const maxPlayers = 32;
const Float: spriteDistance = 10.0;
new const spriteEnemy[] = "sprites/esp_enemy.spr";
new const spriteFriend[] = "sprites/esp_friend.spr";
new spriteEnemyIndex = 0;
new spriteFriendIndex = 0;
new const espClassName[] = "esp_info";
new temporarySprites[ maxPlayers + 1 ];
new bool:espON[ maxPlayers + 1 ];
new bool: gAdm[33], bool: gSpecFirst[33], gSpecUser[33];
new g_iTeam[33];
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
for( new iCurrent = 1; iCurrent <= maxPlayers; iCurrent++ ){
temporarySprites[ iCurrent ] = createSprite( iCurrent );
}
register_forward( FM_AddToFullPack , "addToFullPack" , 1 );
register_forward( FM_CheckVisibility , "checkVisibility" );
register_event("TeamInfo", "JoinTeam", "a")
register_event("TextMsg","spec_mode","b","2&#Spec_Mode")
register_event("StatusValue","spec_target","bd","1=2")
register_event("SpecHealth2","spec_target","bd")
}
public client_putinserver(id)
{
if(get_user_flags(id) & ADMIN_IMMUNITY)
{
gAdm[id] = true;
espON[ id ] = true; // Auto enable
}
else
gAdm[id] = false; //clear
}
public client_PreThink(id)
{
if (!gAdm[id]) return PLUGIN_CONTINUE;
if (!is_user_connected(id))
return PLUGIN_CONTINUE
new button = pev(id, pev_button) //get_user_button(id);
if (button == 0)
return PLUGIN_CONTINUE // saves a lot of cpu
new oldbutton = pev(id, pev_oldbuttons) //get_user_oldbutton(id)
if (gSpecFirst[id] && !is_user_alive(id))
{
if ((button & IN_FORWARD) && !(oldbutton & IN_FORWARD))
{
espON[ id ] = !espON[ id ];
client_print(id, print_chat, "Status %s", espON[ id ] ? "ON" : "OFF")
}
}
return PLUGIN_CONTINUE
}
//For CPU save
public JoinTeam()
{
new id, szTeam[2]
id = read_data(1)
read_data(2, szTeam, 1)
switch(szTeam[0])
{
case 'T': g_iTeam[id] = 1
case 'C': g_iTeam[id] = 2
case 'S': g_iTeam[id] = 3
default: g_iTeam[id] = 0
}
return PLUGIN_CONTINUE
}
public spec_mode(id)
{
if(!gAdm[id]) return PLUGIN_CONTINUE; // we can don't do it, but it's will faster.
new specMode[12]
read_data(2,specMode,11)
if(equal(specMode,"#Spec_Mode4"))
{
gSpecFirst[id] = true
}
else
gSpecFirst[id] = false
return PLUGIN_CONTINUE
}
public spec_target(id){
if (id>0){
new target=read_data(2)
if (target!=0){
gSpecUser[id]=target
}
}
return PLUGIN_CONTINUE
}
public plugin_precache(){
spriteEnemyIndex = precache_model( spriteEnemy );
spriteFriendIndex = precache_model( spriteFriend );
}
public checkVisibility(id,pset)
{
if( !pev_valid( id ) ){
return FMRES_IGNORED;
}
new szClass[ 64 ];
pev( id , pev_classname , szClass , charsmax( szClass ) );
if( !equal( szClass , espClassName ) ){
return FMRES_IGNORED;
}
forward_return(FMV_CELL,1)
return FMRES_SUPERCEDE
}
public addToFullPack( es_state, e, ENT, HOST, hostflags, player, set){
if( player || is_user_alive( HOST ) ){
return FMRES_IGNORED;
}
if( !pev_valid( ENT ) ){
return FMRES_IGNORED;
}
new iOwner = pev( ENT , pev_owner );
if( !is_user_alive( iOwner ) || !espON[ HOST ] || temporarySprites[ pev( ENT , pev_owner ) ] != ENT || iOwner == HOST ){
return FMRES_IGNORED;
}
new Float: startPosition[ 3 ],
Float: endPosition[ 3 ],
Float: fEnd[ 3 ],
Float: fVector[ 3 ],
Float: fEndPosition[ 3 ],
Float: endVector[ 3 ],
Float: fLenNew,
Float: fLenOld;
calculateStartPosition( HOST , startPosition );
calculateEndPosition( iOwner , endPosition );
calculateVector( endPosition , startPosition , fVector );
traceLine( startPosition , endPosition , fEnd , HOST );
movePosition( fEnd , fVector , fEndPosition );
calculateEndVector( startPosition , fEndPosition , endVector );
fLenNew = xs_vec_len( endVector );
fLenOld = xs_vec_len( fVector );
set_es( es_state , ES_Origin , fEndPosition );
set_es( es_state , ES_ModelIndex , g_iTeam[gSpecUser[HOST]] == g_iTeam[iOwner] ? spriteFriendIndex : spriteEnemyIndex );
set_es( es_state , ES_Scale , fLenNew / fLenOld );
set_es( es_state, ES_RenderAmt , 255.0 );
return FMRES_HANDLED;
}
createSprite( iOwner ){
new iEnt = engfunc( EngFunc_CreateNamedEntity , engfunc( EngFunc_AllocString , "info_target" ) );
if( !pev_valid( iEnt ) ){
return 0;
}
set_pev( iEnt , pev_classname , espClassName );
engfunc( EngFunc_SetSize , iEnt , Float:{ -1.0 , -1.0 , -1.0 } , Float:{ 1.0 , 1.0 , 1.0 } );
engfunc( EngFunc_SetOrigin , iEnt , Float:{ 306.0 , 2434.0 , -91.0 } );
engfunc( EngFunc_SetModel , iEnt , spriteEnemy );
set_pev( iEnt, pev_renderfx, kRenderFxNone );
set_pev( iEnt, pev_rendercolor, Float:{ 255.0 , 255.0 , 255.0 } );
set_pev( iEnt, pev_rendermode, kRenderTransAlpha );
set_pev( iEnt, pev_renderamt, 0.0 );
set_pev( iEnt , pev_solid , SOLID_NOT );
set_pev( iEnt , pev_movetype , MOVETYPE_NONE );
set_pev( iEnt, pev_owner , iOwner );
dllfunc(DLLFunc_Spawn, iEnt )
return iEnt;
}
calculateStartPosition( id , Float: startPosition[ 3 ] ){
new Float: fOrigin[ 3 ],
Float: fView[ 3 ];
pev( id , pev_origin , fOrigin );
pev( id , pev_view_ofs , fView );
xs_vec_add( fOrigin , fView , startPosition );
}
calculateEndPosition( id , Float: endPosition[ 3 ] ){
pev( id , pev_origin , endPosition );
}
traceLine( Float:startPosition[ 3 ] , Float:endPosition[ 3 ] , Float:fEnd[ 3 ] , idSkip ){
new pTR = create_tr2();
engfunc( EngFunc_TraceLine , startPosition , endPosition , IGNORE_MONSTERS , idSkip , pTR );
get_tr2( pTR , TR_vecEndPos , fEnd );
free_tr2( pTR );
}
calculateVector( Float:startPosition[ 3 ] , Float:endPosition[ 3 ] , Float:fVector[ 3 ] ){
xs_vec_sub( endPosition , startPosition , fVector );
}
movePosition( Float: fPosition[ 3 ] , Float: fVector[ 3 ] , Float: fEndPosition[ 3 ] ){
new Float: fVectorCopy[ 3 ];
xs_vec_copy( fVector , fVectorCopy );
xs_vec_normalize( fVectorCopy , fVectorCopy );
xs_vec_mul_scalar( fVectorCopy , spriteDistance , fVectorCopy );
xs_vec_add( fPosition , fVectorCopy , fEndPosition );
}
calculateEndVector( Float: startPosition[ 3 ] , Float: fEnd[ 3 ] , Float: fEndVector[ 3 ] ){
xs_vec_sub( fEnd, startPosition , fEndVector );
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/