pawn Код:
//-------------------------------------------// Script by Pghpunkid's// Auto Race Creator Program V1.3// Need Help? http://rsc.us.to//-------------------------------------------// Terms and Agreements//-------------------------------------------//By using this script you agree to these terms//and agreements://You may alter the produced script to enhance//the playability, however, changed made to//claim work as your own is strictly prohibited.//Feel free to distribute your compiled script//however,give credit the actual author, Pghpunkid.//if you agree to these terms and agreements,//remove the '//' before #include <a_samp>#include <a_samp>#define COLOR_GREY 0xAFAFAFAA#define COLOR_GREEN 0x33AA33AA#define COLOR_RED 0xAA3333AA#define COLOR_YELLOW 0xFFFF00AA#define COLOR_WHITE 0xFFFFFFAA#define COLOR_LAVENDER 0xFF00FFAA#define COLOR_BLUE 0x0000BBAA#define COLOR_LIGHTBLUE 0x33CCFFAA#define COLOR_LIGHTBLUEA 0xB5EAFCAA#define COLOR_ORANGE 0xFF9900AA#define COLOR_TEAL 0x3BAAC2AA#include "../include/gl_common.inc"#define blue 0x375FFFFF#define ADMINFS_MESSAGE_COLOR 0xFF444499#define PM_INCOMING_COLOR 0xFFFF22AA#define PM_OUTGOING_COLOR 0xFFCC2299static iPlayerChatTime
[MAX_PLAYERS
];
static szPlayerChatMsg
[MAX_PLAYERS
][128];
//------------------------------------------------//------------------------------------------------forward PlayerToPoint
(Float:radi, playerid,
Float:x,
Float:y,
Float:z
);
forward CheckpointUpdate
();
forward GPRaceCountdown
();
forward GPTimer
();
forward SaveTimes
();
forward LoadTimes
();
forward UpdateList
(playerid,TimeRec
);
new Mototime
[MAX_PLAYERS
] =0;
new Motocountdown
[MAX_PLAYERS
] =-1;
new MotoGP
[MAX_PLAYERS
] = 0;
new MotoGate
[MAX_PLAYERS
]=0;
#define MAX_POINTS 1#define MAX_RACE_POINTS 18#define TT_START 0enum kinfo
{ Driver
[24],
Time
}new KartHS
[5][kinfo
];
new playerCheckpoint
[MAX_PLAYERS
];
new Float:checkpoints
[MAX_POINTS
][23] = {{-302.1711,
1508.3451,
75.3594}};
new Float:racecheckpoints
[MAX_RACE_POINTS
][18] = {{-305.4507,
1395.2365,
72.3118},
{-375.1031,
1461.8661,
62.1423},
{-328.6879,
1316.2310,
52.4871},
{-447.1574,
1500.4052,
34.9547},
{-399.9567,
1750.0654,
42.6130},
{-409.4537,
1918.7510,
57.7848},
{-439.1856,
1759.7423,
72.0444},
{-480.7166,
1939.3983,
86.4597},
{-388.9103,
2080.4001,
61.1164},
{-532.2165,
1990.8622,
60.3906},
{-384.1641,
2075.6667,
60.9181},
{-439.3697,
1761.9298,
72.0275},
{-418.0215,
1917.2354,
57.4656},
{-443.9293,
1630.9391,
35.6589},
{-324.8012,
1316.9939,
52.8978},
{-370.5130,
1462.3467,
62.6581},
{-308.6009,
1395.1691,
72.2705},
{-301.6882,
1501.4779,
75.5935}};
new checkpointType
[MAX_POINTS
] = { TT_START
};
public OnFilterScriptInit
(){ print("\n Mode:Drift - Created using Pghpunkids Script Creator.\n");
SetTimer
("CheckpointUpdate",
1000,
1);
SetTimer
("GPRaceCountdown",
1000,
1);
SetTimer
("GPTimer",
1000,
1);
for(new t
=0; t
<5; t
++) { strmid(KartHS
[t
][Driver
],
"None",
0,
strlen("None"),
24);
KartHS
[t
][Time
]=100000;
} if(!fexist("Drift Times.cfg")) SaveTimes
();
LoadTimes
();
return 1;
}public SaveTimes
(){ print("[race] Drift Times Saved.");
new File: hFile
= fopen("Drift Times.cfg", io_write
);
if (hFile
) { for(new t
= 0; t
<5; t
++) { new var
[32];
format(var,
32,
"%s\n",KartHS
[t
][Driver
]);fwrite
(hFile, var
);
format(var,
32,
"%d\n",KartHS
[t
][Time
]);fwrite
(hFile, var
);
} } fclose(hFile
);
return 1;
}public LoadTimes
(){ print("[race] Drift Times Loaded.");
new File: file
= fopen("Drift Times.cfg", io_read
);
if (file
) { new valtmp
[128];
for(new t
=0; t
<5; t
++) { fread(file, valtmp
);strmid
(KartHS
[t
][Driver
], valtmp,
0,
strlen(valtmp
)-1,
128);DelPrint
(valtmp
);
fread(file, valtmp
);KartHS
[t
][Time
] = strval(valtmp
);DelPrint
(valtmp
);
} } return 1;
}public OnPlayerDisconnect
(playerid,reason
){ #pragma unused reason iPlayerChatTime
[playerid
] = 0;
szPlayerChatMsg
[playerid
] = "";
MotoGP
[playerid
] =0;
Mototime
[playerid
] =0;
return 1;
}public OnPlayerCommandText
(playerid, cmdtext
[]){ if (strcmp("/rdrift", cmdtext, true,
10) == 0) { if(getCheckpointType
(playerid
)!=TT_START
) { SendClientMessage
(playerid,COLOR_RED,
"Aviso: Vocк deve estar no local de partida.");
return 1;
} SendClientMessage
(playerid, COLOR_WHITE,
"Aviso: Comeзando boa sorte!");
SetCameraBehindPlayer
(playerid
);
TogglePlayerControllable
(playerid,
0);
Motocountdown
[playerid
] = 6;
SetPlayerRaceCheckpoint
(playerid,
0,racecheckpoints
[0][0],racecheckpoints
[0][1],racecheckpoints
[0][2],racecheckpoints
[1][0],racecheckpoints
[1][1],racecheckpoints
[1][2],
10);
DisablePlayerCheckpoint
(playerid
);
return 1;
} if (strcmp("/tdrift", cmdtext, true,
10) == 0) { new kstring
[255];
SendClientMessage
(playerid,COLOR_GREEN,
"Top 5 tempos:");
for(new z
=0; z
<5; z
++) { new sec
= KartHS
[z
][Time
]%60;
new mins
= (KartHS
[z
][Time
]/60)%60;
if (strcmp("None",KartHS
[z
][Driver
], true,
10) == 0) { if(z
==0) SendClientMessage
(playerid,COLOR_GREY,
"-Sem tempos gravado ainda-");
if(z
>0) SendClientMessage
(playerid,COLOR_GREY,
"-Final da lista de tempo-");
return 1;
} if(strcmp("None",KartHS
[z
][Driver
], true,
10) != 0) { if(sec
> 9) {format(kstring,
sizeof(kstring
),
"%d. %s - %d:%d",z
+1,KartHS
[z
][Driver
],mins,sec
);
} if(sec
< 9) {format(kstring,
sizeof(kstring
),
"%d. %s - %d:0%d",z
+1,KartHS
[z
][Driver
],mins,sec
);
} SendClientMessage
(playerid,COLOR_GREY,kstring
);
} } return 1;
} return 0;
}public OnPlayerEnterRaceCheckpoint
(playerid
){ new sec
= Mototime
[playerid
]%60;
new mins
= (Mototime
[playerid
]/60)%60;
if(MotoGP
[playerid
] == 1) { MotoGate
[playerid
]++;
new one
= MAX_RACE_POINTS
-1;
new two
= MAX_RACE_POINTS;
if(MotoGate
[playerid
] < one
) { DisablePlayerRaceCheckpoint
(playerid
);
SetPlayerRaceCheckpoint
(playerid,
0,racecheckpoints
[MotoGate
[playerid
]][0],racecheckpoints
[MotoGate
[playerid
]][1],racecheckpoints
[MotoGate
[playerid
]][2],racecheckpoints
[MotoGate
[playerid
]+1][0],racecheckpoints
[MotoGate
[playerid
]+1][1],racecheckpoints
[MotoGate
[playerid
]+1][2],
10);
} if(MotoGate
[playerid
] == one
) { DisablePlayerRaceCheckpoint
(playerid
);
SetPlayerRaceCheckpoint
(playerid,
1,racecheckpoints
[MotoGate
[playerid
]][0],racecheckpoints
[MotoGate
[playerid
]][1],racecheckpoints
[MotoGate
[playerid
]][2],racecheckpoints
[0][0],racecheckpoints
[0][1],racecheckpoints
[0][2],
10);
} if(MotoGate
[playerid
] == two
) { new TimeRec;
new Timestr
[255];
new driver
[24];
GetPlayerName
(playerid,driver,
sizeof(driver
));
format(Timestr,
sizeof(Timestr
),
"{8AFB17}%s {FFFFFF}terminou o Drift em {{8AFB17}%d {FFFFFF}Minutos, {8AFB17}%d{FFFFFF} Segundos e ganhou {8AFB17}4.000${FFFFFF}!",driver,mins,sec
);
SendClientMessageToAll
(0x375FFFFF,Timestr
);
GivePlayerMoney
(playerid,
4000);
SetPlayerScore
(playerid,GetPlayerScore
(playerid
)+10);
SendClientMessage
(playerid,COLOR_YELLOW,
"{FFFFFF}Vocк pode ver os {8AFB17}5 Melhores Tempos{FFFFFF} usando {8AFB17}/TDrift{FFFFFF}.");
printf(Timestr
);
TimeRec
=Mototime
[playerid
];
MotoGP
[playerid
] = 0;
MotoGate
[playerid
] = 0;
DisablePlayerRaceCheckpoint
(playerid
);
Mototime
[playerid
]=0;
UpdateList
(playerid,TimeRec
);
} } return 1;
}public OnPlayerEnterCheckpoint
(playerid
){ if(getCheckpointType
(playerid
)==TT_START
) { if(IsPlayerInAnyVehicle
(playerid
)) { SendClientMessage
(playerid,blue,
"{FFFFFF}Digite {8AFB17}/RDrift {FFFFFF}para Iniciar a {8AFB17}Corrida{FFFFFF}.");
return 1;
} else { SendClientMessage
(playerid,COLOR_RED,
"{FFFFFF}Erro! Vocк precisa estar em um {8AFB17}Carro {FFFFFF}para iniciar essa corrida.");
} } return 1;
}stock PlayerToPoint
(Float:radi, playerid,
Float:x,
Float:y,
Float:z
){ new Float:oldposx,
Float:oldposy,
Float:oldposz;
new Float:tempposx,
Float:tempposy,
Float:tempposz;
GetPlayerPos
(playerid, oldposx, oldposy, oldposz
);
tempposx
= (oldposx
-x
);
tempposy
= (oldposy
-y
);
tempposz
= (oldposz
-z
);
if (((tempposx
< radi
) && (tempposx
> -radi
)) && ((tempposy
< radi
) && (tempposy
> -radi
)) && ((tempposz
< radi
) && (tempposz
> -radi
))) { return 1;
} return 0;
}public UpdateList
(playerid, TimeRec
){ new driver
[24];
GetPlayerName
(playerid,driver,
sizeof(driver
));
if(KartHS
[0][Time
] > TimeRec
) { KartHS
[4][Time
] = KartHS
[3][Time
];
strmid(KartHS
[4][Driver
],KartHS
[3][Driver
],
0,
sizeof(driver
),
24);
KartHS
[3][Time
] = KartHS
[2][Time
];
strmid(KartHS
[3][Driver
],KartHS
[2][Driver
],
0,
sizeof(driver
),
24);
KartHS
[2][Time
] = KartHS
[1][Time
];
strmid(KartHS
[2][Driver
],KartHS
[1][Driver
],
0,
sizeof(driver
),
24);
KartHS
[1][Time
] = KartHS
[0][Time
];
strmid(KartHS
[1][Driver
],KartHS
[0][Driver
],
0,
sizeof(driver
),
24);
KartHS
[0][Time
] = TimeRec;
strmid(KartHS
[0][Driver
],driver,
0,
sizeof(driver
),
24);
SendClientMessage
(playerid,COLOR_GREY,
"{FFFFFF}Seu tempo foi o {8AFB17}1є {FFFFFF}Classificado!");
} else if(KartHS
[1][Time
] > TimeRec
) { KartHS
[4][Time
] = KartHS
[3][Time
];
strmid(KartHS
[4][Driver
],KartHS
[3][Driver
],
0,
sizeof(driver
),
24);
KartHS
[3][Time
] = KartHS
[2][Time
];
strmid(KartHS
[3][Driver
],KartHS
[2][Driver
],
0,
sizeof(driver
),
24);
KartHS
[2][Time
] = KartHS
[1][Time
];
strmid(KartHS
[2][Driver
],KartHS
[1][Driver
],
0,
sizeof(driver
),
24);
KartHS
[1][Time
] = TimeRec;
strmid(KartHS
[1][Driver
],driver,
0,
sizeof(driver
),
24);
SendClientMessage
(playerid,COLOR_GREY,
"Seu tempo foi 2є Classificado!");
} else if(KartHS
[2][Time
] > TimeRec
) { KartHS
[4][Time
] = KartHS
[3][Time
];
strmid(KartHS
[4][Driver
],KartHS
[3][Driver
],
0,
sizeof(driver
),
24);
KartHS
[3][Time
] = KartHS
[2][Time
];
strmid(KartHS
[3][Driver
],KartHS
[2][Driver
],
0,
sizeof(driver
),
24);
KartHS
[2][Time
] = TimeRec;
strmid(KartHS
[2][Driver
],driver,
0,
sizeof(driver
),
24);
SendClientMessage
(playerid,COLOR_GREY,
"Seu tempo foi 3є Classificado!");
} else if(KartHS
[3][Time
] > TimeRec
) { KartHS
[4][Time
] = KartHS
[3][Time
];
strmid(KartHS
[4][Driver
],KartHS
[3][Driver
],
0,
sizeof(driver
),
24);
KartHS
[3][Time
] = TimeRec;
strmid(KartHS
[3][Driver
],driver,
0,
sizeof(driver
),
24);
SendClientMessage
(playerid,COLOR_GREY,
"Seu tempo foi 4є Classificado!");
} else if(KartHS
[4][Time
] > TimeRec
) { KartHS
[4][Time
] = TimeRec;
strmid(KartHS
[4][Driver
],driver,
0,
sizeof(driver
),
24);
SendClientMessage
(playerid,COLOR_GREY,
"Seu tempo foi 5є Classificado!");
} SaveTimes
();
LoadTimes
();
return 1;
}public CheckpointUpdate
(){ for(new i; i
<MAX_PLAYERS; i
++) { if(MotoGP
[i
] == 0) { for(new j
=0; j
< 1; j
++) { if(PlayerToPoint
(25,i,checkpoints
[j
][0],checkpoints
[j
][1],checkpoints
[j
][2])) { if(playerCheckpoint
[i
]!=j
) { DisablePlayerCheckpoint
(i
);
SetPlayerCheckpoint
(i, checkpoints
[j
][0],checkpoints
[j
][1],checkpoints
[j
][2],
5);
playerCheckpoint
[i
] = j;
} } else { if(playerCheckpoint
[i
]==j
) { DisablePlayerCheckpoint
(i
);
playerCheckpoint
[i
] = 999;
} } } } }}stock getCheckpointType
(playerID
) { if(playerCheckpoint
[playerID
] != 999) return checkpointType
[playerCheckpoint
[playerID
]];
else return -1;
}public GPRaceCountdown
(){ for(new x
=0; x
<MAX_PLAYERS; x
++) { if(Motocountdown
[x
] > 0) { new time
[3];
Motocountdown
[x
]--;
format(time,
sizeof(time
),
"%d",Motocountdown
[x
]);
PlayerPlaySound
(x,
1056,
0,
0,
0);
GameTextForPlayer
(x,time,
1200,
3);
} if(Motocountdown
[x
] == 0) { GameTextForPlayer
(x,
"GO!",
1200,
3);
PlayerPlaySound
(x,
1057,
0,
0,
0);
TogglePlayerControllable
(x,
1);
Motocountdown
[x
]--;
Mototime
[x
]=0;
MotoGP
[x
]=1;
} }}public GPTimer
(){ for(new i
=0; i
< MAX_PLAYERS; i
++) { if(MotoGP
[i
] == 1) Mototime
[i
]++;
}}stock DelPrint
(string1
[]){ strmid(string1, string1,
0,
strlen(string1
)-1,
255);
printf("%s", string1
);
return 1;
}public OnPlayerConnect
(playerid
){ MotoGP
[playerid
] = 0;
MotoGate
[playerid
] = 0;
DisablePlayerRaceCheckpoint
(playerid
);
Mototime
[playerid
]=0;
return 1;
}public OnPlayerStateChange
(playerid, newstate, oldstate
){ if (MotoGP
[playerid
] == 1 && (newstate
== 1 && oldstate
== 2)) { MotoGP
[playerid
] = 0;
MotoGate
[playerid
] = 0;
DisablePlayerRaceCheckpoint
(playerid
);
Mototime
[playerid
]=0;
} return 1;
}public OnPlayerDeath
(playerid, killerid, reason
){ MotoGP
[playerid
] = 0;
MotoGate
[playerid
] = 0;
DisablePlayerRaceCheckpoint
(playerid
);
Mototime
[playerid
]=0;
return 1;
}