26.10.2011, 16:32
hey im making race system...but now when i have to do that on /startrace appear a checkpoint and when he comes to checkpoint the other appear and so...and .....
THATS MY CODE :S :
THATS MY CODE :S :
PHP код:
// DONT FORGET TO MAKE RACE SYSTEM + MSG's LIKE ...PLAYER IS BACK ON DUCATI...
// LOOK FOR SSCANF
#include <a_samp>
#include <zcmd>
#include <sscanf>
#define COLOR_YELLOW 0xFFFF00FF
#define COLOR_BLUE 0x0000FFFF
#define COLOR_GREEN 0x00FF00FF
#define COLOR_RED 0xFF0000FF
new PlayerMakingRace[MAX_PLAYERS];
new RaceInProgress;
new PlayerInRace[MAX_PLAYERS];
forward RaceFirst(playerid);
CMD:makerace(playerid,params[])
{
new playertext[100],File:cpoint = fopen("Checkpoints.txt", io_append);
if (PlayerMakingRace[playerid] == 0)
if(sscanf(params,"s",playertext)) SendClientMessage(playerid, 0xFF0000AA, "Usage: \"/makerace <race name>\"");
else
if (IsPlayerAdmin(playerid) == 1)
{
format(playertext,sizeof(playertext),"Race Name: %s\r\n",playertext);
fwrite(cpoint,playertext);
fclose(cpoint);
SendClientMessage(playerid, COLOR_YELLOW,"Now use /addcheckpoint");
PlayerMakingRace[playerid] = 1;
}
return 1;
}
CMD:addcheckpoint(playerid,params[])
{
if (IsPlayerAdmin(playerid) == 1 && PlayerMakingRace[playerid] == 1)
{
SendClientMessage(playerid, COLOR_GREEN,"Checkpoint Added!");
SendClientMessage(playerid, COLOR_GREEN,"Use /stopmakerace when you finish adding checkpoints");
new Float:x,Float:y,Float:z,File:cpoint = fopen("Checkpoints.txt", io_append),cckpoint[200];
GetPlayerPos(playerid,x,y,z);
format(cckpoint,sizeof(cckpoint),"SetPlayerRaceCheckpoint(playerid,2,%f,%f,%f,0,0,0,3);\r\n",x,y,z);
fwrite(cpoint,cckpoint);
fclose(cpoint);
}
return 1;
}
CMD:stopmakerace(playerid,params[])
{
if (PlayerMakingRace[playerid] == 1)
{
PlayerMakingRace[playerid] = 0;
SendClientMessage(playerid, COLOR_GREEN,"You finished job..All positions are saved in Checkpoints.txt!");
}
return 1;
}
CMD:startrace(playerid,params[])
{
new playername[50];
if (IsPlayerAdmin(playerid) == 1)
{
GetPlayerName(playerid,playername,sizeof(playername));
format(playername,sizeof(playername),"%s has started a race. Type /joinrace to join!",playername);
SendClientMessageToAll(COLOR_YELLOW,playername);
RaceInProgress=1;
ShowPlayerDialog(playerid, 531,DIALOG_STYLE_LIST,"Races","LV AIRPORT 3 LAPS","OK","Cancel");
}
return 1;
}
CMD:joinrace(playerid,params[])
{
new playername[50];
if (RaceInProgress==1 )
{
GetPlayerName(playerid,playername,sizeof(playername));
format(playername,sizeof(playername),"%s has joined the race!",playername);
SendClientMessageToAll(COLOR_YELLOW,playername);
PlayerInRace[playerid] = 1;
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(response)// They pressed the first button.
{
switch(dialogid)// If you only have one dialog, then this isn't required, but it's neater for when you implement more dialogs.
{
case 531:// Our dialog!
{
switch(listitem)// Checking which listitem was selected
{
case 0:// The first item listed
{
return RaceFirst();
}
}
}
}
}
return 1;
}
public RaceFirst(playerid)
{