07.06.2013, 12:09
Bueno, pues miren, buscando en foros de samp alemanes encontrй un tipo que habнa liberado este FS:
Ese es el cуdigo. El FS consiste en un "chopper gunner", vamos, un sistema tipo apoyo aйreo del COD MW2 que te permite disparar desde un helicуptero como copiloto mientras conduces. Los crйditos del sistema son para RGRealGamer, que fue el creador 100% de este sistema. Yo, Kevin Manzano, me pasй varias horas buscando en ****** y tratando de encontrar un sistema de apoyo aйreo para samp, pero lo ъnico que veнa eran vнdeos nada mбs. Nadie liberaba ningъn sistema de este tipo. Me costу un montуn encontrar este sistema, y lo ъnico que quiero pedirles a cambio es que me ayudasen o me dijesen cуmo agregarlo al GM de Zenon City. Sй que tengo que crear un NPC que controle el helicуptero, pero lo he intentado y no hay manera, he seguido tutoriales y todo y no me va en el GM de Zenon City.
El post original es este: http://forum.sa-mp.de/san-andreas-mu...e%C2%B2-v-1-0/
Les muestro un vнdeo del sistema en funcionamiento, si es incorrecto publicar vнdeos aquн me corrigen y lo quito:
[ame]www.youtube.com/watch?v=KLdZlOwQFl8[/ame]
Espero que puedan ayudarme a instalar este sistema, es que lo quiero para agregarlo a un sistema de eventos de DM que estoy creando. Saludos y espero que este aporte sirva a mucha gente.
Код:
#include a_samp
#include mapandreas
#undef MAX_PLAYERS
#define MAX_PLAYERS 100 // Serverslots beachten!
#define MAX_CHOPPERS 5
#define AMMO 50
#define SHOOT "/fire"
enum pInfo{
chopper,
bool:HasChopper,
ChopperID,
chpTime,
bool:change,
timer,
PlayerText:TimerDraw,
Float:SaveX,
Float:SaveY,
Float:SaveZ,
Float:SaveR
};
forward CreatePlayerChopper( gunnerid, npcname[ ], script[ ], length, pilotid );
forward ChopperHandler( gunnerid, func );
new PlayerInfo[ MAX_PLAYERS ][ pInfo ];
new obj[ MAX_CHOPPERS char ] = -1;
new objChopper[ MAX_OBJECTS char ] = -1;
new Timer[ MAX_OBJECTS char ];
new bool:Rocket[ MAX_OBJECTS ];
new Text:TextDraw[ 7 char ];
new ammo[ MAX_PLAYERS char ] = 0;
new pName[ MAX_PLAYERS ][ MAX_PLAYER_NAME ];
new pBotName[ MAX_PLAYERS ][ MAX_PLAYER_NAME ];
new PlayerText:AmmoTDraw[ MAX_PLAYERS char ];
#define AmmoTDraw[%0] AmmoTDraw{%0}
#define objChopper[%0] objChopper{%0}
#define TextDraw[%0] TextDraw{%0}
#define obj[%0] obj{%0}
#define Timer[%0] Timer{%0}
#define ammo[%0] ammo{%0}
public OnFilterScriptInit( )
{
MapAndreas_Init( MAP_ANDREAS_MODE_FULL );
TextDraw[ 0 ] = TextDrawCreate( -1.000000, 2.000000, "w" );
TextDrawBackgroundColor( TextDraw[ 0 ], 255 );
TextDrawFont( TextDraw[ 0 ], 1 );
TextDrawLetterSize( TextDraw[ 0 ], 0.019998, 51.299999 );
TextDrawColor( TextDraw[ 0 ], -1 );
TextDrawSetOutline( TextDraw[ 0 ], 0 );
TextDrawSetProportional( TextDraw[ 0 ], 1 );
TextDrawSetShadow( TextDraw[ 0 ], 1 );
TextDrawUseBox( TextDraw[ 0 ], 1 );
TextDrawBoxColor( TextDraw[ 0 ], 100 );
TextDrawTextSize( TextDraw[ 0 ], 642.000000, 30.000000 );
TextDraw[ 1 ] = TextDrawCreate( 489.000000, 6.000000, "Uplink: 29.28.54#~n~ 10x60 MHZ" );
TextDrawBackgroundColor( TextDraw[ 1 ], 255 );
TextDrawFont( TextDraw[ 1 ], 1 );
TextDrawLetterSize( TextDraw[ 1 ], 0.500000, 1.000000 );
TextDrawColor( TextDraw[ 1 ], -1 );
TextDrawSetOutline( TextDraw[ 1 ], 0 );
TextDrawSetProportional( TextDraw[ 1 ], 1 );
TextDrawSetShadow( TextDraw[ 1 ], 1 );
TextDraw[ 2 ] = TextDrawCreate( 601.000000, 25.000000, "Lazer: armed" );
TextDrawBackgroundColor( TextDraw[ 2 ], 255 );
TextDrawFont( TextDraw[ 2 ], 1 );
TextDrawLetterSize( TextDraw[ 2 ], 0.170000, 1.000000 );
TextDrawColor( TextDraw[ 2 ], -1 );
TextDrawSetOutline( TextDraw[ 2 ], 0 );
TextDrawSetProportional( TextDraw[ 2 ], 1 );
TextDrawSetShadow( TextDraw[ 2 ], 1 );
TextDraw[ 4 ] = TextDrawCreate( 308.000000, 218.000000, "- -" );
TextDrawBackgroundColor( TextDraw[ 4 ], 255 );
TextDrawFont( TextDraw[ 4 ], 1 );
TextDrawLetterSize( TextDraw[ 4 ], 0.500000, 1.000000 );
TextDrawColor( TextDraw[ 4 ], -1 );
TextDrawSetOutline( TextDraw[ 4 ], 0 );
TextDrawSetProportional( TextDraw[ 4 ], 1 );
TextDrawSetShadow( TextDraw[ 4 ], 1 );
TextDraw[ 5 ] = TextDrawCreate( 321.750000, 210.000000, "!~n~~n~!" );
TextDrawBackgroundColor( TextDraw[ 5 ], 255 );
TextDrawFont( TextDraw[ 5 ], 1 );
TextDrawLetterSize( TextDraw[ 5 ], 0.180000, 1.000000 );
TextDrawColor( TextDraw[ 5 ], -1 );
TextDrawSetOutline( TextDraw[ 5 ], 0 );
TextDrawSetProportional( TextDraw[ 5 ], 1 );
TextDrawSetShadow( TextDraw[ 5 ], 1 );
TextDraw[ 6 ] = TextDrawCreate( 222.000000, 90.000000, "CAMERA: AH64-APACHE#" );
TextDrawBackgroundColor( TextDraw[ 6 ], 255 );
TextDrawFont( TextDraw[ 6 ], 1 );
TextDrawLetterSize( TextDraw[ 6 ], 0.500000, 1.000000 );
TextDrawColor( TextDraw[ 6 ], -1 );
TextDrawSetOutline( TextDraw[ 6 ], 0 );
TextDrawSetProportional( TextDraw[ 6 ], 1 );
TextDrawSetShadow( TextDraw[ 6 ], 0 );
for( new i = 0; i < MAX_PLAYERS; i ++ )
{
if( !IsPlayerConnected( i ) ) continue;
GetPlayerName( i, pName[ i ], MAX_PLAYER_NAME );
AmmoTDraw[ i ] = CreatePlayerTextDraw( i, 514.000000, 397.000000, "!!!!!!!!!!!!!!!!!!!!~n~!!!!!!!!!!!!!!!!!!!!" );
PlayerTextDrawBackgroundColor( i, AmmoTDraw[ i ], 255 );
PlayerTextDrawFont( i, AmmoTDraw[ i ], 1 );
PlayerTextDrawLetterSize( i, AmmoTDraw[ i ], 0.500000, 1.000000 );
PlayerTextDrawColor( i, AmmoTDraw[ i ], -1 );
PlayerTextDrawSetOutline( i, AmmoTDraw[ i ], 0 );
PlayerTextDrawSetProportional( i, AmmoTDraw[ i ], 1 );
PlayerTextDrawSetShadow( i, AmmoTDraw[ i ], 1 );
PlayerInfo[ i ][ TimerDraw ] = CreatePlayerTextDraw( i, 21.000000, 400.000000, "1:30min");
PlayerTextDrawBackgroundColor( i, PlayerInfo[ i ][ TimerDraw ], 255);
PlayerTextDrawFont( i, PlayerInfo[ i ][ TimerDraw ], 1);
PlayerTextDrawLetterSize( i, PlayerInfo[ i ][ TimerDraw ], 0.500000, 1.000000);
PlayerTextDrawColor( i, PlayerInfo[ i ][ TimerDraw ], -1);
PlayerTextDrawSetOutline( i, PlayerInfo[ i ][ TimerDraw ], 0);
PlayerTextDrawSetProportional( i, PlayerInfo[ i ][ TimerDraw ], 1);
PlayerTextDrawSetShadow( i, PlayerInfo[ i ][ TimerDraw ], 0);
}
}
public OnFilterScriptExit( )
{
for( new i = 0 ; i < MAX_PLAYERS ; i ++ )
{
if( !IsPlayerConnected( i ) ) continue;
PlayerTextDrawDestroy( i, AmmoTDraw[ i ] );
PlayerTextDrawDestroy( i, PlayerInfo[ i ][ TimerDraw ] );
}
TextDrawHideForAll( TextDraw[ 0 ] );
TextDrawDestroy( TextDraw[ 0 ] );
TextDrawHideForAll( TextDraw[ 1 ] );
TextDrawDestroy( TextDraw[ 1 ] );
TextDrawHideForAll( TextDraw[ 2 ] );
TextDrawDestroy( TextDraw[ 2 ] );
TextDrawHideForAll( TextDraw[ 3 ] );
TextDrawDestroy( TextDraw[ 3 ] );
TextDrawHideForAll( TextDraw[ 4 ] );
TextDrawDestroy( TextDraw[ 4 ] );
TextDrawHideForAll( TextDraw[ 5 ] );
TextDrawDestroy( TextDraw[ 5 ] );
TextDrawHideForAll( TextDraw[ 6 ] );
TextDrawDestroy( TextDraw[ 6 ] );
return 1;
}
public OnPlayerCommandText( playerid, cmdtext[ ] )
{
if ( !strcmp( cmdtext, SHOOT ) )
{
ammo[ PlayerInfo[ playerid ][ ChopperID ] ]++;
new str[ 64 ];
format( str, sizeof str, "~b~" );
for( new i = 0 ; i < AMMO ; i++ )
{
if( i == AMMO/2 )
{
format( str, sizeof str, ( ( ammo[ PlayerInfo[ playerid ][ ChopperID ] ] != AMMO/2 ) ? ( "%s~n~!" ) : ( "%s~n~~w~!" ) ), str );
continue;
}
if( i == ammo[ PlayerInfo[ playerid ][ ChopperID ] ] )
{
format( str, sizeof str, "%s~w~!", str );
continue;
}
if( i < ammo[ PlayerInfo[ playerid ][ ChopperID ] ] )
{
format( str, sizeof str, "%s!", str );
continue;
}
format( str, sizeof str, "%s!", str );
}
PlayerTextDrawSetString( playerid, AmmoTDraw[ playerid ], str );
new
Float:fPX, Float:fPY, Float:fPZ,
Float:fVX, Float:fVY, Float:fVZ,
Float:object_x, Float:object_y, Float:object_z;
new
Float:fScale = 500;
GetPlayerCameraPos( playerid, fPX, fPY, fPZ );
GetPlayerCameraFrontVector( playerid, fVX, fVY, fVZ );
object_x = fPX + floatmul( fVX, fScale );
object_y = fPY + floatmul( fVY, fScale );
object_z = fPZ + floatmul( fVZ, fScale );
new obj1 = CreateObject( 345, fPX, fPY, fPZ, asin( fVZ ), 0.0, 360 - atan2( fVX, fVY ) );
Rocket[ obj1 ] = true;
objChopper[ obj1 ] = playerid;
MoveObject( obj1, object_x, object_y, object_z, 75.0 );
Timer[ obj1 ] = SetTimerEx( "CheckObj", 100, 1, "d", obj1 );
if( ammo[ PlayerInfo[ playerid ][ ChopperID ] ] >= AMMO )
{
ChopperHandler( playerid, 1 );
ammo[ PlayerInfo[ playerid ][ ChopperID ] ] = 0;
}
return 1;
}
if( !strcmp( "/chopper", cmdtext, true ) )
{
new str[ 24 ];
format( str, sizeof str, "chopper%d", playerid );
CreatePlayerChopper( playerid, str, "glenpark", 60, -1 );
return 1;
}
if( !strcmp( "/stop", cmdtext, true ) )
{
ChopperHandler( playerid, 1 );
return 1;
}
/*if( !strcmp( "/check", cmdtext, true ) )
{
new Float:x, Float:y, Float:z;
GetPlayerPos( GetPlayerID( "Chopper" ) , x, y, z );
SetPlayerPos( playerid, x, y, z );
}
if( !strcmp( cmdtext, "/test" ) )
{
new
Float:fVX, Float:fVY, Float:fVZ;
GetPlayerCameraFrontVector( playerid, fVX, fVY, fVZ );
new str[ 256 ];
format( str, sizeof str, "XVec: %f YVec: %f ZVec: %f", fVX, fVY, fVZ );
SendClientMessage( playerid, 0xFFFFFF, str );
return 1;
}*/
return 0;
}
public CreatePlayerChopper( gunnerid, npcname[ ], script[ ], length, pilotid )
{
switch( pilotid )
{
case -1:
{
if( !IsPlayerConnected( gunnerid ) ) return 0;
ConnectNPC( npcname, script );
format( pBotName[ gunnerid ], sizeof pBotName[ ], npcname );
SendClientMessage( gunnerid, 0xFFFFFFFF, "Verbьndeter Apache ist unterwegs!" );
PlayerInfo[ gunnerid ][ HasChopper ] = true;
GetPlayerPos( gunnerid, PlayerInfo[ gunnerid ][ SaveX ], PlayerInfo[ gunnerid ][ SaveY ], PlayerInfo[ gunnerid ][ SaveZ ] );
GetPlayerFacingAngle( gunnerid, PlayerInfo[ gunnerid ][ SaveR ] );
new str[ 32 ];
PlayerInfo[ gunnerid ][ chpTime ] = length;
format( str, sizeof str, "%d:%dmin" , length / 60, length - 60 * ( length / 60 ) );
PlayerTextDrawSetString( gunnerid, PlayerInfo[ gunnerid ][ TimerDraw ], str );
return 1;
}
default:
{
if( !IsPlayerConnected( pilotid ) ) return 0;
if( !IsPlayerConnected( gunnerid ) ) return 0;
PlayerInfo[ gunnerid ][ ChopperID ] = pilotid;
obj[ pilotid ] = CreateObject( 330, 0, 0, 235, 0 , 0, 0, 0.0 );
PlayerInfo[ pilotid ][ chopper ] = CreateVehicle( 425, 0, 0, 0, 0, 0, 0, -1 );
AttachObjectToVehicle( obj[ pilotid ], PlayerInfo[ pilotid ][ chopper ], 0, 4.45, -1.2, 0, 0, 0 );
PutPlayerInVehicle( pilotid, PlayerInfo[ pilotid ][ chopper ], 0 );
PutPlayerInVehicle( gunnerid, PlayerInfo[ pilotid ][ chopper ], 1 );
PlayerInfo[ gunnerid ][ chpTime ] = length;
GetPlayerPos( gunnerid, PlayerInfo[ gunnerid ][ SaveX ], PlayerInfo[ gunnerid ][ SaveY ], PlayerInfo[ gunnerid ][ SaveZ ] );
GetPlayerFacingAngle( gunnerid, PlayerInfo[ gunnerid ][ SaveR ] );
GetPlayerPos( pilotid, PlayerInfo[ pilotid ][ SaveX ], PlayerInfo[ pilotid ][ SaveY ], PlayerInfo[ pilotid ][ SaveZ ] );
GetPlayerFacingAngle( pilotid, PlayerInfo[ pilotid ][ SaveR ] );
new str[ 32 ];
format( str, sizeof str, "%d:%dmin" , length / 60, length - 60 * ( length / 60 ) );
PlayerTextDrawSetString( gunnerid, PlayerInfo[ gunnerid ][ TimerDraw ], str );
PlayerTextDrawSetString( pilotid, PlayerInfo[ pilotid ][ TimerDraw ], str );
PlayerInfo[ gunnerid ][ timer ] = SetTimerEx( "ChopperHandler", 500, 1, "dd", gunnerid, 0 );
AttachCameraToObject( gunnerid, obj[ pilotid ] );
TextDrawShowForPlayer( gunnerid, TextDraw[ 0 ] );
TextDrawShowForPlayer( gunnerid, TextDraw[ 1 ] );
TextDrawShowForPlayer( gunnerid, TextDraw[ 2 ] );
PlayerTextDrawShow( gunnerid, AmmoTDraw[ gunnerid ] );
PlayerTextDrawShow( gunnerid, PlayerInfo[ gunnerid ][ TimerDraw ] );
PlayerTextDrawShow( pilotid, PlayerInfo[ pilotid ][ TimerDraw ] );
TextDrawShowForPlayer( gunnerid, TextDraw[ 4 ] );
TextDrawShowForPlayer( gunnerid, TextDraw[ 5 ] );
TextDrawShowForPlayer( gunnerid, TextDraw[ 6 ] );
return 1;
}
}
return 0;
}
public OnPlayerDisconnect( playerid )
{
if( PlayerInfo[ playerid ][ HasChopper ] )
{
if( IsPlayerNPC( PlayerInfo[ playerid ][ ChopperID ] ) )
Kick( PlayerInfo[ playerid ][ ChopperID ] );
}
if( PlayerInfo[ playerid ][ HasChopper ] )
ChopperHandler( playerid, 1 );
PlayerInfo[ playerid ][ HasChopper ] = false;
for( new i = 0; i < MAX_PLAYERS; i ++ )
{
if( !IsPlayerConnected( i ) || !PlayerInfo[ i ][ HasChopper ] ) continue;
if( PlayerInfo[ i ][ ChopperID ] == playerid)
return ChopperHandler( playerid, 1 );
}
return 0;
}
public OnPlayerKeyStateChange( playerid, newkeys, oldkeys )
{
if( newkeys & KEY_FIRE && PlayerInfo[ playerid ][ HasChopper ] ) OnPlayerCommandText( playerid, SHOOT );
return 0;
}
public OnObjectMoved( objectid )
{
if( !Rocket[ objectid ] ) return 1;
KillTimer( Timer[ objectid ] );
Timer[ objectid ] = -1;
new
Float:x, Float:y, Float:z, Float:Dist;
GetObjectPos( objectid, x, y, z );
CreateExplosion( x, y, z, 0, 10.0 );
for( new i = 0; i < MAX_PLAYERS; i ++ )
{
if( !IsPlayerConnected( i ) ) continue;
Dist = GetPlayerDistanceFromPoint( i, x, y, z);
if( Dist < 10.0 )
{
new Float:HP,Float:NewHP;
GetPlayerHealth( i, HP );
NewHP = HP-150+Dist*10;
if( NewHP >= HP )
{
TogglePlayerSpectating( i, 1 );
TogglePlayerSpectating( i, 0 );
CallRemoteFunction( "OnPlayerDeath", "ddd", i, objChopper[ objectid ], 51 );
}
else SetPlayerHealth( i, NewHP );
}
}
Rocket[ objectid ] = false;
DestroyObject( objectid );
return 0;
}
forward CheckObj( objid );
public CheckObj( objid )
{
if( !Rocket[ objid ] ) return 1;
new
Float:x, Float:y, Float:z, Float:Z, Float:Dist;
GetObjectPos( objid, x, y, z );
MapAndreas_FindZ_For2DCoord( x, y, Z );
if( Z > z || ( z - Z ) < 5.0 )
{
KillTimer( Timer[ objid ] );
Timer[ objid ] = -1;
CreateExplosion( x, y, z, 0, 10.0 );
for( new i = 0; i < MAX_PLAYERS; i ++ )
{
if( !IsPlayerConnected( i ) ) continue;
Dist = GetPlayerDistanceFromPoint( i, x, y, z);
if( Dist < 10.0 )
{
new Float:HP,Float:NewHP;
GetPlayerHealth( i, HP );
NewHP = HP-150+Dist*10;
if( NewHP >= HP )
{
TogglePlayerSpectating( i, 1 );
TogglePlayerSpectating( i, 0 );
CallRemoteFunction( "OnPlayerDeath", "ddd", i, objChopper[ objid ], 51 );
}
else SetPlayerHealth( i, NewHP );
}
}
Rocket[ objid ] = false;
DestroyObject( objid );
}
return 1;
}
public ChopperHandler( gunnerid, func )
{
switch( func )
{
case 0:
{
if( !IsPlayerConnected( gunnerid ) ) return KillTimer( PlayerInfo[ gunnerid ][ timer ] );
if( !IsPlayerConnected( PlayerInfo[ gunnerid ][ ChopperID ] ) ) return KillTimer( PlayerInfo[ gunnerid ][ timer ] );
PlayerInfo[ gunnerid ][ change ] = PlayerInfo[ gunnerid ][ change ] ? false : true;
if( PlayerInfo[ gunnerid ][ change ] )
{
PlayerInfo[ gunnerid ][ chpTime ] -- ;
new str[32];
format( str, sizeof str, "%d:%02dmin" , PlayerInfo[ gunnerid ][ chpTime ] / 60,
PlayerInfo[ gunnerid ][ chpTime ] - 60 * ( PlayerInfo[ gunnerid ][ chpTime ] / 60 ) );
PlayerTextDrawSetString( gunnerid, PlayerInfo[ gunnerid ][ TimerDraw ], str);
PlayerTextDrawSetString( PlayerInfo[ gunnerid ][ ChopperID ],PlayerInfo[ PlayerInfo[ gunnerid ][ ChopperID ] ][ TimerDraw ], str );
}
if(PlayerInfo[ gunnerid ][ chpTime ] < 30)
{
if( PlayerInfo[ gunnerid ][ change ] )
{
PlayerTextDrawHide( gunnerid, PlayerInfo[ gunnerid ][ TimerDraw ] );
if( !IsPlayerNPC( PlayerInfo[ gunnerid ][ ChopperID ] ) )
PlayerTextDrawHide( PlayerInfo[ gunnerid ][ ChopperID ], PlayerInfo[ PlayerInfo[ gunnerid ][ ChopperID ] ][ TimerDraw ] );
}
else
{
PlayerTextDrawShow( gunnerid, PlayerInfo[ gunnerid ][ TimerDraw ] );
if( !IsPlayerNPC( PlayerInfo[ gunnerid ][ ChopperID ] ) )
PlayerTextDrawShow( PlayerInfo[ gunnerid ][ ChopperID ], PlayerInfo[ PlayerInfo[ gunnerid ][ ChopperID ] ][ TimerDraw ] );
}
}
if(PlayerInfo[ gunnerid ][ chpTime ] <= 0) KillTimer( PlayerInfo[ gunnerid ][ timer ] ), ChopperHandler( gunnerid, 1 );
}
case 1:
{
PlayerInfo[ gunnerid ][ HasChopper ] = false;
new ID = GetPlayerID( pBotName[ gunnerid ] );
if( IsPlayerNPC( ID ) )
{
Kick( ID );
ammo[ ID ] = 0;
DestroyVehicle( PlayerInfo[ ID ][ chopper ] );
DestroyObject( obj[ ID ] );
obj[ ID ] = -1;
}
else
{
ammo[ PlayerInfo[ gunnerid ][ ChopperID ] ] = 0;
DestroyVehicle( PlayerInfo[ PlayerInfo[ gunnerid ][ ChopperID ] ][ chopper ] );
DestroyObject( obj[ PlayerInfo[ gunnerid ][ ChopperID ] ] );
obj[ PlayerInfo[ gunnerid ][ ChopperID ] ] = -1;
}
SetCameraBehindPlayer( gunnerid );
SetPlayerPos( gunnerid, PlayerInfo[ gunnerid ][ SaveX ], PlayerInfo[ gunnerid ][ SaveY ], PlayerInfo[ gunnerid ][ SaveZ ] );
SetPlayerFacingAngle( gunnerid, PlayerInfo[ gunnerid ][ SaveR ] );
SetPlayerPos( PlayerInfo[ gunnerid ][ ChopperID ],
PlayerInfo[ PlayerInfo[ gunnerid ][ ChopperID ] ][ SaveX ],
PlayerInfo[ PlayerInfo[ gunnerid ][ ChopperID ] ][ SaveY ],
PlayerInfo[ PlayerInfo[ gunnerid ][ ChopperID ] ][ SaveZ ] );
SetPlayerFacingAngle( PlayerInfo[ gunnerid ][ ChopperID ], PlayerInfo[ PlayerInfo[ gunnerid ][ ChopperID ] ][ SaveR ] );
TextDrawHideForPlayer( gunnerid, TextDraw[ 0 ] );
TextDrawHideForPlayer( gunnerid, TextDraw[ 1 ] );
TextDrawHideForPlayer( gunnerid, TextDraw[ 2 ] );
TextDrawHideForPlayer( gunnerid, TextDraw[ 4 ] );
TextDrawHideForPlayer( gunnerid, TextDraw[ 5 ] );
TextDrawHideForPlayer( gunnerid, TextDraw[ 6 ] );
PlayerTextDrawHide( gunnerid, AmmoTDraw[ gunnerid ] );
PlayerTextDrawHide( gunnerid, PlayerInfo[ gunnerid ][ TimerDraw ] );
PlayerTextDrawHide( PlayerInfo[ gunnerid ][ ChopperID ], PlayerInfo[ PlayerInfo[ gunnerid ][ ChopperID ] ][ TimerDraw ] );
PlayerInfo[ gunnerid ][ ChopperID ] = -1;
return 1;
}
}
return 1;
}
public OnPlayerConnect( playerid )
{
if( !IsPlayerNPC( playerid) )
{
GetPlayerName( playerid, pName[ playerid ], MAX_PLAYER_NAME );
AmmoTDraw[ playerid ] = CreatePlayerTextDraw( playerid, 514.000000, 397.000000, "!!!!!!!!!!!!!!!!!!!!~n~!!!!!!!!!!!!!!!!!!!!" );
PlayerTextDrawBackgroundColor( playerid, AmmoTDraw[ playerid ], 255 );
PlayerTextDrawFont( playerid, AmmoTDraw[ playerid ], 1 );
PlayerTextDrawLetterSize( playerid, AmmoTDraw[ playerid ], 0.500000, 1.000000 );
PlayerTextDrawColor( playerid, AmmoTDraw[ playerid ], -1 );
PlayerTextDrawSetOutline( playerid, AmmoTDraw[ playerid ], 0 );
PlayerTextDrawSetProportional( playerid, AmmoTDraw[ playerid ], 1 );
PlayerTextDrawSetShadow( playerid, AmmoTDraw[ playerid ], 1 );
PlayerInfo[ playerid ][ TimerDraw ] = CreatePlayerTextDraw( playerid, 21.000000, 400.000000, "1:30min");
PlayerTextDrawBackgroundColor( playerid, PlayerInfo[ playerid ][ TimerDraw ], 255);
PlayerTextDrawFont( playerid, PlayerInfo[ playerid ][ TimerDraw ], 1);
PlayerTextDrawLetterSize( playerid, PlayerInfo[ playerid ][ TimerDraw ], 0.500000, 1.000000);
PlayerTextDrawColor( playerid, PlayerInfo[ playerid ][ TimerDraw ], -1);
PlayerTextDrawSetOutline( playerid, PlayerInfo[ playerid ][ TimerDraw ], 0);
PlayerTextDrawSetProportional( playerid, PlayerInfo[ playerid ][ TimerDraw ], 1);
PlayerTextDrawSetShadow( playerid, PlayerInfo[ playerid ][ TimerDraw ], 0);
}
else
{
for( new i = 0; i < MAX_PLAYERS; i ++ )
{
if( !IsPlayerConnected( i ) ) continue;
if( !strcmp( pName[ playerid ], pBotName[ i ] ) && pBotName[ i ][ 0 ] )
{
PlayerInfo[ i ][ ChopperID ] = playerid;
obj[ playerid ] = CreateObject( 330, 0, 0, 235, 0 , 0, 0, 0.0 );
PlayerInfo[ playerid ][ chopper ] = CreateVehicle( 425, 0, 0, 235, 0, 0, 0, -1 );
AttachObjectToVehicle( obj[ playerid ], PlayerInfo[ playerid ][ chopper ], 0, 4.45, -1.2, 0, 0, 0 );
PutPlayerInVehicle( playerid, PlayerInfo[ playerid ][ chopper ], 0 );
PutPlayerInVehicle( i, PlayerInfo[ playerid ][ chopper ], 1 );
PlayerInfo[ i ][ timer ] = SetTimerEx( "ChopperHandler", 500, 1, "dd", i, 0 );
AttachCameraToObject( i, obj[ playerid ] );
TextDrawShowForPlayer( i, TextDraw[ 0 ] );
TextDrawShowForPlayer( i, TextDraw[ 1 ] );
TextDrawShowForPlayer( i, TextDraw[ 2 ] );
PlayerTextDrawShow( i, AmmoTDraw[ i ] );
PlayerTextDrawShow( i, PlayerInfo[ i ][ TimerDraw ] );
TextDrawShowForPlayer( i, TextDraw[ 4 ] );
TextDrawShowForPlayer( i, TextDraw[ 5 ] );
TextDrawShowForPlayer( i, TextDraw[ 6 ] );
break;
}
}
}
return 0;
}
public OnPlayerDeath( playerid, killerid, reason)
{
if( PlayerInfo[ playerid ][ HasChopper ] )
ChopperHandler( playerid, 1 );
for( new i = 0; i < MAX_PLAYERS; i ++ )
{
if( !IsPlayerConnected( i ) || !PlayerInfo[ i ][ HasChopper ] ) continue;
if( PlayerInfo[ i ][ ChopperID ] == playerid)
return ChopperHandler( playerid, 1 );
}
return 0;
}
GetPlayerID( playername[ ] )
{
for( new i = 0; i < MAX_PLAYERS; i++ )
{
if( !IsPlayerConnected( i ) ) continue;
if( !strcmp( playername, pName[ i ] ) ) return i;
}
return -1;
}
El post original es este: http://forum.sa-mp.de/san-andreas-mu...e%C2%B2-v-1-0/
Les muestro un vнdeo del sistema en funcionamiento, si es incorrecto publicar vнdeos aquн me corrigen y lo quito:
[ame]www.youtube.com/watch?v=KLdZlOwQFl8[/ame]
Espero que puedan ayudarme a instalar este sistema, es que lo quiero para agregarlo a un sistema de eventos de DM que estoy creando. Saludos y espero que este aporte sirva a mucha gente.




xD. por eso creo ke lo han liberado
.