Created
September 4, 2014 07:23
-
-
Save earlwlkr/3285b3bea6c21fce306f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <physics> | |
#define SPEED 5.0 | |
#define MAX_SOCCER_PLAYERS 5 | |
enum E_SOCCER | |
{ | |
bool:E_STARTED, | |
Timer: E_TIMER_LOOP, | |
E_TEAM[ 2 ], | |
E_TEAM1_SCORE, | |
E_TEAM2_SCORE, | |
E_VIEWERS, | |
E_SOCCER_LAST, | |
E_BALL = INVALID_OBJECT_ID | |
} | |
new g_soccer_data[ E_SOCCER ]; | |
new | |
Iterator: iter_soccerTeams[ 2 ]<MAX_SOCCER_PLAYERS>; | |
new | |
Iterator: iter_soccerViewers<MAX_PLAYERS>; | |
new | |
Text3D: soccer_label[ MAX_PLAYERS ]; | |
CMD:thoatdabanh( playerid, params[] ) | |
{ | |
if (Iter_Contains(iter_soccerTeams[ 0 ], playerid)) | |
{ | |
for ( new k = 0; k != 3; k++ ) TextDrawHideForPlayer( playerid, Soccer_SB[ k ] ); | |
SetPlayerWeapons(playerid); | |
SetPlayerPos( playerid, 2686.91, -1689.73, 9.44 ); | |
Iter_Remove(iter_soccerTeams[ 0 ], playerid); | |
Delete3DTextLabel( soccer_label[ playerid ] ); | |
} | |
else if (Iter_Contains(iter_soccerTeams[ 1 ], playerid)) | |
{ | |
for ( new k = 0; k != 3; k++ ) TextDrawHideForPlayer( playerid, Soccer_SB[ k ] ); | |
SetPlayerWeapons(playerid); | |
SetPlayerPos( playerid, 2686.91, -1689.73, 9.44 ); | |
Iter_Remove(iter_soccerTeams[ 1 ], playerid); | |
Delete3DTextLabel( soccer_label[ playerid ] ); | |
} | |
else if (Iter_Contains(iter_soccerViewers, playerid)) | |
{ | |
for ( new k = 0; k != 3; k++ ) TextDrawHideForPlayer( playerid, Soccer_SB[ k ] ); | |
SetPlayerWeapons(playerid); | |
SetPlayerPos( playerid, 2686.91, -1689.73, 9.44 ); | |
Iter_Remove(iter_soccerViewers, playerid); | |
} | |
SetPlayerSkin( playerid, PlayerInfo[ playerid ][ pModel ] ); | |
for ( new k = 0; k != 7; k++ ) | |
TextDrawHideForPlayer( playerid, Soccer_TD[ k ] ); | |
return 1; | |
} | |
CMD:batdau(playerid, params[]) | |
{ | |
if ( PlayerInfo[ playerid ][ pAdmin ] < 1337 ) return 1; | |
ballInit(); | |
g_soccer_data[ E_TIMER_LOOP ] = repeat soccerTimer(); | |
g_soccer_data[ E_STARTED ] = true; | |
SendClientMessageToAll( X11_LIGHT_BLUE_1, ""COL_WHEAT"** BONG DA **{FFFF00} Mot tran bong da da duoc bat dau, hay den san van dong de xem." ); | |
return 1; | |
} | |
CMD:endmatch(playerid, params[]) | |
{ | |
if ( PlayerInfo[ playerid ][ pAdmin ] < 1337 ) return 1; | |
endMatch(); | |
return 1; | |
} | |
public PHY_OnObjectUpdate( objectid ) | |
{ | |
if ( g_soccer_data[ E_STARTED ] ) | |
{ | |
foreach (new i: Player) | |
{ | |
if ( Iter_Contains(iter_soccerTeams[ 0 ], i) || Iter_Contains(iter_soccerTeams[ 1 ], i) ) | |
{ | |
new | |
Float: fPos[3]; | |
GetObjectPos( g_soccer_data[ E_BALL ], fPos[ 0 ], fPos[ 1 ], fPos[ 2 ] ); | |
if ( IsPlayerInRangeOfPoint( i, 1.4, fPos[ 0 ], fPos[ 1 ], fPos[ 2 ] ) ) | |
{ | |
new | |
Float: fAngle; | |
GetPlayerFacingAngle( i, fAngle ); | |
PHY_SetObjectVelocity( g_soccer_data[ E_BALL ], 5.0 * floatsin( -fAngle, degrees ), 5.0 * floatcos( -fAngle, degrees ) ); | |
PHY_RollObject( g_soccer_data[ E_BALL ] ); | |
g_soccer_data[ E_SOCCER_LAST ] = i; | |
} | |
} | |
} | |
} | |
return 1; | |
} | |
timer soccerTimer[ 900 ]() | |
{ | |
if ( IsObjectInRectangle( g_soccer_data[ E_BALL ], 1519.29, -2023.00, 1524.98, -2010.07 ) ) //goal for team 2 | |
{ | |
g_soccer_data[ E_TEAM1_SCORE ] ++; | |
new | |
string[ 8 ]; | |
format( string, sizeof( string ), "%d", g_soccer_data[ E_TEAM1_SCORE ] ); | |
TextDrawSetString( Soccer_TD[ 5 ], string ); | |
ShowSoccerMainTD(); | |
format( string, sizeof( string ), "%d - %d", g_soccer_data[ E_TEAM1_SCORE ], g_soccer_data[ E_TEAM2_SCORE ] ); | |
TextDrawSetString( Soccer_SB[ 2 ], string ); | |
defer HideSoccerMainTD(); | |
ballInit(); | |
} | |
else if ( IsObjectInRectangle( g_soccer_data[ E_BALL ], 1629.95, -2023.36, 1635.34, -2010.36 ) ) //goal 1 | |
{ | |
g_soccer_data[ E_TEAM2_SCORE ] ++; | |
new | |
string[ 8 ]; | |
format( string, sizeof( string ), "%d", g_soccer_data[ E_TEAM2_SCORE ] ); | |
TextDrawSetString( Soccer_TD[ 6 ], string ); | |
ShowSoccerMainTD(); | |
format( string, sizeof( string ), "%d - %d", g_soccer_data[ E_TEAM1_SCORE ], g_soccer_data[ E_TEAM2_SCORE ] ); | |
TextDrawSetString( Soccer_SB[ 2 ], string ); | |
defer HideSoccerMainTD(); | |
ballInit(); | |
} | |
} | |
stock ShowSoccerMainTD() | |
{ | |
new string[ 20 + MAX_PLAYER_NAME ]; | |
format( string, sizeof( string ), "Nguoi ghi ban: "COL_YELLOW"%s.", GetName( g_soccer_data[ E_SOCCER_LAST ] ) ); | |
foreach (new i: iter_soccerTeams[ 0 ]) | |
{ | |
SendClientMessage( i, X11_LIGHT_SKY_BLUE, string ); | |
GameTextForPlayer( i, "] ~b~G~y~O~r~A~g~L! ]", 5000, 3 ); | |
for ( new k = 0; k != 7; k++ ) | |
TextDrawShowForPlayer( i, Soccer_TD[ k ] ); | |
} | |
foreach (new i: iter_soccerTeams[ 1 ]) | |
{ | |
SendClientMessage( i, X11_LIGHT_SKY_BLUE, string ); | |
GameTextForPlayer( i, "] ~b~G~y~O~r~A~g~L! ]", 5000, 3 ); | |
for ( new k = 0; k != 7; k++ ) | |
TextDrawShowForPlayer( i, Soccer_TD[ k ] ); | |
} | |
foreach (new i: iter_soccerViewers) | |
{ | |
SendClientMessage( i, X11_LIGHT_SKY_BLUE, string ); | |
GameTextForPlayer( i, "] ~b~G~y~O~r~A~g~L! ]", 5000, 3 ); | |
for ( new k = 0; k != 7; k++ ) | |
TextDrawShowForPlayer( i, Soccer_TD[ k ] ); | |
} | |
} | |
timer HideSoccerMainTD[ 5000 ]() | |
{ | |
foreach (new i: iter_soccerTeams[ 0 ]) | |
for ( new k = 0; k != 7; k++ ) | |
TextDrawHideForPlayer( i, Soccer_TD[ k ] ); | |
foreach (new i: iter_soccerTeams[ 1 ]) | |
for ( new k = 0; k != 7; k++ ) | |
TextDrawHideForPlayer( i, Soccer_TD[ k ] ); | |
foreach (new i: iter_soccerViewers) | |
for ( new k = 0; k != 7; k++ ) | |
TextDrawHideForPlayer( i, Soccer_TD[ k ] ); | |
} | |
function bool:IsObjectInRectangle( objectid, Float: minX, Float: minY, Float: maxX, Float: maxY ) | |
{ | |
new | |
Float: fPos[ 3 ]; | |
GetObjectPos( objectid, fPos[ 0 ], fPos[ 1 ], fPos[ 2 ] ); | |
return ( ( minX < fPos[ 0 ] < maxX ) && ( minY < fPos[ 1 ] < maxY ) ); | |
} | |
function ballInit() | |
{ | |
if ( g_soccer_data[ E_BALL ] != INVALID_OBJECT_ID ) | |
{ | |
PHY_DeleteObject( g_soccer_data[ E_BALL ] ); | |
DestroyObject( g_soccer_data[ E_BALL ] ); | |
} | |
g_soccer_data[ E_BALL ] = CreateObject( 2114, 1574.72, -2017.18, 736.76, 0, 0, 0 ); | |
PHY_InitObject( g_soccer_data[ E_BALL ], 2114 ); | |
PHY_SetObjectFriction( g_soccer_data[ E_BALL ], 0.5 ); | |
PHY_SetObjectGravity( g_soccer_data[ E_BALL ], 4.1 ); | |
PHY_SetObjectZBound( g_soccer_data[ E_BALL ], _, _, 0.3); | |
return 1; | |
} | |
timer endSoccerMatchTimer[ 60000 * 10 ]() | |
{ | |
if ( g_soccer_data[ E_STARTED ] ) endMatch(); | |
} | |
stock endMatch() | |
{ | |
foreach (new i: iter_soccerTeams[ 0 ]) | |
{ | |
for ( new k = 0; k != 3; k++ ) TextDrawHideForPlayer( i, Soccer_SB[ k ] ); | |
SetPlayerWeapons(i); | |
SetPlayerPos( i, 2686.91, -1689.73, 9.44 ); | |
Iter_Remove(iter_soccerTeams[ 0 ], i); | |
Delete3DTextLabel( soccer_label[ i ] ); | |
SetPlayerSkin( i, PlayerInfo[ i ][ pModel ] ); | |
} | |
foreach (new i: iter_soccerTeams[ 1 ]) | |
{ | |
for ( new k = 0; k != 3; k++ ) TextDrawHideForPlayer( i, Soccer_SB[ k ] ); | |
SetPlayerWeapons(i); | |
SetPlayerPos( i, 2686.91, -1689.73, 9.44 ); | |
Iter_Remove(iter_soccerTeams[ 1 ], i); | |
Delete3DTextLabel( soccer_label[ i ] ); | |
SetPlayerSkin( i, PlayerInfo[ i ][ pModel ] ); | |
} | |
foreach (new i: iter_soccerViewers) | |
{ | |
for ( new k = 0; k != 3; k++ ) TextDrawHideForPlayer( i, Soccer_SB[ k ] ); | |
SetPlayerWeapons(i); | |
SetPlayerPos( i, 2686.91, -1689.73, 9.44 ); | |
Iter_Remove(iter_soccerViewers, i); | |
SetPlayerSkin( i, PlayerInfo[ i ][ pModel ] ); | |
} | |
g_soccer_data[ E_TEAM1_SCORE ] = 0; | |
g_soccer_data[ E_TEAM2_SCORE ] = 0; | |
stop g_soccer_data[ E_TIMER_LOOP ]; | |
TextDrawSetString( Soccer_TD[ 5 ], "0" ); | |
TextDrawSetString( Soccer_TD[ 6 ], "0" ); | |
TextDrawSetString( Soccer_SB[ 2 ], "0 - 0" ); | |
PHY_DeleteObject( g_soccer_data[ E_BALL ] ); | |
DestroyObject( g_soccer_data[ E_BALL ] ); | |
g_soccer_data[ E_STARTED ] = false; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment