Как да направите плъгин достъпен за администратори - AMXX Bulgarian Scripting Community

golandec написа: Ще обясня по-подробно, плъгинът трябва да служи за пренасочване на играчите към друг сървър, когато сървърът е пълен

Как да направите плъгин достъпен за администраторите

  • Списък на форума AMX Mod X Скриптове

В този раздел на форума е разрешено да се създават теми, свързани само със скриптове за AMX Mod X.

Правила за създаване на нова тема: 1. Когато вмъквате кода на плъгина, трябва да използвате тага [code=php]. 2. Всички изображения трябва да бъдат качени като прикачени файлове към вашата публикация. 3. Когато описвате проблем или поискате помощ при редактиране на приставка, не забравяйте да публикувате изходния код на приставката sma.

Как да направите плъгин достъпен за администраторите

от Omlette » 20 март 2012 г., 21:27 ч

Здравейте всички! Моля, обяснете веднъж, за да разбера как се прави, как да направя плъгин, да кажем Colored Smoke (цветен дим), достъпен само за администратори с флаг " a "? ERSION "1.1"

нов g_szSmokeSprites[ 6 ]; нов g_Cvar_Enabled;

public plugin_init() register_plugin( "Цветен дим", ВЕРСИЯ, "xPaw");

register_cvar( "цветен_дим", ВЕРСИЯ, FCVAR_SERVER FCVAR_SPONLY); set_cvar_string( "цветен_дим", ВЕРСИЯ);

g_Cvar_Enabled = register_cvar( "sv_colored_smoke", "1");

register_forward(FM_EmitSound, "FwdEmitSound"); register_touch( g_szClassname, "worldspawn", "FwdTouch_FakeSmoke"); register_think( g_szClassname, "FwdThink_FakeSmoke" ); >

public plugin_precache() g_szSmokeSprites[ 0] = precache_model( "sprites/gas_puff_01y.spr"); g_szSmokeSprites[ 1 ] = precache_model( "sprites/gas_puff_01r.spr"); g_szSmokeSprites[ 2 ] = precache_model( "sprites/gas_puff_01b.spr"); g_szSmokeSprites[ 3 ] = precache_model( "sprites/gas_puff_01g.spr"); g_szSmokeSprites[ 4 ] = precache_model( "sprites/gas_puff_01m.spr" ); g_szSmokeSprites[ 5 ] = precache_model( "sprites/gas_puff_01o.spr");

public FwdEmitSound( iOrigEnt, iChannel, const szSample[], Float:fVol, Float:fAttn, iFlags, iPitch) нов iCvar = get_pcvar_num(g_Cvar_Enabled); if( iCvar > 0 ) static const szSmokeSound[] = "оръжия/sg_explode.wav";

if( equal( szSample, szSmokeSound ) ) // произход на кеша, ъгли и модел нов Float:vOrigin[ 3 ], Float:vAngles[ 3 ], szModel[ 64 ], iOwner; iOwner = entity_get_edict(iOrigEnt, EV_ENT_owner); entity_get_vector(iOrigEnt, EV_VEC_origin, vOrigin); entity_get_vector( iOrigEnt, EV_VEC_angles, vAngles); entity_get_string(iOrigEnt, EV_SZ_model, szModel, charsmax(szModel));

// премахване на обект от свят entity_set_vector( iOrigEnt, EV_VEC_origin, Float: < 9999.9, 9999.9, 9999.9 >); entity_set_int(iOrigEnt, EV_INT_flags, FL_KILLME);

// създаване на нов обект нов iEntity = create_entity( "info_target" ); if(iEntity > 0) entity_set_string(iEntity, EV_SZ_classname, g_szClassname);

entity_set_origin(iEntity, vOrigin); entity_set_vector( iEntity, EV_VEC_angles, vAngles);

entity_set_int(iEntity, EV_INT_movetype, MOVETYPE_TOSS); entity_set_int(iEntity, EV_INT_solid, SOLID_BBOX);

entity_set_float(iEntity, EV_FL_nextthink, get_gametime() + 21.5); entity_set_float( iEntity, EV_FL_gravity, 0.5); entity_set_float( iEntity, EV_FL_friction, 0.8);

entity_set_model(iEntity, szModel);

нов Float:vVelocity[ 3 ]; vVelocity[ 0 ] = random_float(-220.0, 220.0); vVelocity[ 1 ] = random_float(-220.0, 220.0); vVelocity[ 2 ] = random_float(200.0, 300.0); entity_set_vector( iEntity, EV_VEC_velocity, vVelocity);

emit_sound( iEntity, iChannel, szSample, fVol, fAttn, iFlags, iPitch);

// Създаване на фалшив дим нов iSmoke;

if( iCvar == 2 ) iSmoke = get_user_team( iOwner); // направих индекси като екип, 1 - червено, 2 - синьо, 3 - зелено ( spec oO ) else iSmoke = random_num( 0, 5);

// Съхраняваме номера на дима в обект, ще го използваме по-късно entity_set_int( iEntity, EV_INT_iuser4, iSmoke);

message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_FIREFIELD); engfunc( EngFunc_WriteCoord, vOrigin[0]); engfunc( EngFunc_WriteCoord, vOrigin[1]); engfunc(EngFunc_WriteCoord, vOrigin[2] + 50); write_short( 100); write_short( g_szSmokeSprites[ iSmoke ]); write_byte(100); write_byte(TEFIRE_FLAG_ALPHA); write_byte(1000); message_end();

message_begin(MSG_BROADCAST, SVC_TEMPENTITY); write_byte(TE_FIREFIELD); engfunc( EngFunc_WriteCoord, vOrigin[0]); engfunc( EngFunc_WriteCoord, vOrigin[1]); engfunc(EngFunc_WriteCoord, vOrigin[2] + 50); write_short( 150); write_short( g_szSmokeSprites[ iSmoke ]); write_byte(10); write_byte( TEFIRE_FLAG_ALPHA TEFIRE_FLAG_SOMEFLOAT); write_byte(1000); message_end(); > > > >

public FwdTouch_FakeSmoke( iEntity, iWorld ) if( !is_valid_ent( iEntity ) ) връщане PLUGIN_CONTINUE;

// Отскачащ звук emit_sound( iEntity, CHAN_VOICE, "weapons/grenade_hit1.wav", 0.25, ATTN_NORM, 0,PITCH_NORM);

нов Float:vVelocity[ 3 ]; entity_get_vector( iEntity, EV_VEC_velocity, vVelocity);

if( vVelocity[ 1 ] Пробвах същото с плъгина AFK Manager (make immunity), но плъгинът пак игнорира скрипта ми. Ще съм много благодарен за отговорите!