Jump to content
  • 0

pomoc Problém zo závodom.


DonMafia

Dotaz

Hojte.Mám taký problém že keď v závode vojdem do predposledného cp tak mi už napíše že som vyhral,lenže sa mi objaví aj posledný cp do ktorého keď vojdem tak mi napíše že som druhý a tretí...Čiže je to hovadina.Dávam vám sem kód.

 

// Závod sf
#define sfCP1 1
#define sfCP2 2
#define sfCP3 3
#define sfCP4 4
#define sfCP5 5
#define sfCP6 6
#define sfCP7 7
#define sfCP8 8
#define sfCP9 9
#define sfCP10 10
#define sfCP11 11
#define sfCP12 12
#define sfCP13 13
#define sfCP14 14
#define sfCP15 15
#define sfCP16 16
#define sfCP17 17
#define sfCP18 18
#define sfCP19 19
// Závod SF
new sfCP[MAX_PLAYERS];
// Prihlásený do závodu
new prihlasenyy;
forward zavod(playerid);
new odpocet;
new odp;
new azavod;
new vyhral;
if(dialogid == 19) // Závod cez SF
{
if(response == 1)
{
Hrac[playerid][dialog] = 0;
SCM(playerid,FARBA_ZELENA,"Pridal si sa do závodu");
prihlasenyy++;
azavod = CreateVehicle(451,-2643.2576,1377.2107,6.8625,0,0,1,-1);
PutPlayerInVehicle(playerid, azavod, 0);
if(prihlasenyy > 0)
{
SendClientMessageToAll(FARBA_ZELENA,"Závod cez San Fierro bude pustený za 5 sekúnd");
odp = SetTimerEx("zavod",1000,true,"d",playerid);
odpocet += 5;
}
}
}
// Závod
public zavod(playerid)
{
if(prihlasenyy > 0){
if(odpocet > 0){
new string[256];//string
format(string,sizeof(string), "~n~~n~~n~~n~~n~~n~	    ~b~ODPOCET:		  ~y~%d", odpocet);
odpocet--;
GameTextForPlayer(playerid,string,1000,5);
Hrac[playerid][zavodak] = 1;
}else{
KillTimer(odp);
GameTextForPlayer(playerid, "START",5,5);
SetPlayerRaceCheckpoint(playerid, 2,-2621.6052,1313.3379,6.7541,-2881.5510,1149.1874,16.0474,10);
sfCP[playerid] = sfCP1;
}
}else KillTimer(odp);
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
printf("sfCP %d",sfCP[playerid]);
switch(sfCP[playerid]) {
case sfCP1:{
DisablePlayerCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,2,-2881.5510,1149.1874,16.0474,-2808.8367,857.8370,43.7217,5.0);
sfCP[playerid] = sfCP2;
}
case sfCP2:{
DisablePlayerCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,2,-2808.8367,857.8370,43.7217,-2751.4155,700.9308,40.8344,5.0);
sfCP[playerid] = sfCP3;
}
case sfCP3:{
DisablePlayerCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,2,-2751.4155,700.9308,40.8344,-2708.7251,473.9516,3.8916,5.0);
sfCP[playerid] = sfCP4;
}
case sfCP4:{
DisablePlayerCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,2,-2708.7251,473.9516,3.8916,-2477.9792,562.7281,17.2776,5.0);
sfCP[playerid] = sfCP5;
}
case sfCP5:{
DisablePlayerCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,2,-2477.9792,562.7281,17.2776,-2222.6191,509.7234,34.7240,5.0);
sfCP[playerid] = sfCP6;
}
case sfCP6:{
DisablePlayerCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,2,-2222.6191,509.7234,34.7240,-2066.1426,386.9816,34.8777,5.0);
sfCP[playerid] = sfCP7;
}
case sfCP7:{
DisablePlayerCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,2,-2066.1426,386.9816,34.8777,-1952.8505,344.6756,33.3008,5.0);
sfCP[playerid] = sfCP8;
}
case sfCP8:{
DisablePlayerCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,2,-1952.8505,344.6756,33.3008,-1721.6692,330.9844,6.7370,5.0);
sfCP[playerid] = sfCP9;
}
case sfCP9:{
DisablePlayerCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,2,-1721.6692,330.9844,6.7370,-1671.3232,416.5566,6.8867,5.0);
sfCP[playerid] = sfCP10;
}
case sfCP10:{
DisablePlayerCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,2,-1671.3232,416.5566,6.8867,-1558.5798,700.6915,6.7450,5.0);
sfCP[playerid] = sfCP11;
}
case sfCP11:{
DisablePlayerCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,2,-1558.5798,700.6915,6.7450,-1712.0370,856.5158,24.4059,5.0);
sfCP[playerid] = sfCP12;
}
case sfCP12:{
DisablePlayerCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,2,-1712.0370,856.5158,24.4059,-1714.8378,1013.4747,43.2866,5.0);
sfCP[playerid] = sfCP13;
}
case sfCP13:{
DisablePlayerCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,2,-1714.8378,1013.4747,43.2866,-1712.5956,1168.0133,26.2069,5.0);
sfCP[playerid] = sfCP14;
}
case sfCP14:{
DisablePlayerCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,2,-1712.5956,1168.0133,26.2069,-1787.6208,1204.4840,24.8315,5.0);
sfCP[playerid] = sfCP15;
}
case sfCP15:{
DisablePlayerCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,2,-1787.6208,1204.4840,24.8315,-1940.4272,1176.1337,45.0027,5.0);
sfCP[playerid] = sfCP16;
}
case sfCP16:{
DisablePlayerCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,2,-1940.4272,1176.1337,45.0027,-2252.5615,1188.4205,55.2852,5.0);
sfCP[playerid] = sfCP17;
}
case sfCP17:{
DisablePlayerCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,2,-2252.5615,1188.4205,55.2852,-2303.9246,1354.6373,6.7462,5.0);
sfCP[playerid] = sfCP18;
}
case sfCP18:{
print("SFCP18");
DisablePlayerCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid,2,-2303.9246,1354.6373,6.7462,-2601.2710,1360.2321,6.7883,5.0);
sfCP[playerid] = sfCP19;
}
case sfCP19:{
vyhral++;
print("sfCP19");
new c[60];
SetPlayerRaceCheckpoint(playerid,2,-2601.2710,1360.2321,6.7883,-2601.2710,1360.2321,6.7883,5.0);
if(vyhral == 1){
format(c, 60, "Hráč %s skončil na prvom mieste v závode okolo SF.", PlayerName(playerid));
SendClientMessageToAll(FARBA_ZELENA, c);
DisablePlayerCheckpoint(playerid);
DestroyVehicle(azavod);
}
else if(vyhral == 2){
format(c, 60, "Hráč %s skončil na druhom mieste v závode okolo SF.", PlayerName(playerid));
SendClientMessageToAll(FARBA_ZELENA, c);
DisablePlayerCheckpoint(playerid);
DestroyVehicle(azavod);
}
else if(vyhral == 3){
format(c, 60, "Hráč %s skončil na treťom mieste v závode okolo SF.", PlayerName(playerid));
SendClientMessageToAll(FARBA_ZELENA, c);
DisablePlayerCheckpoint(playerid);
DestroyVehicle(azavod);
}
}
}
return 1;
}

Link to comment
Share on other sites

7 odpovědí na tuto otázku

Recommended Posts

  • 0

Jen uprav konec. nastav poslední CP a až v něm už nenastavuj CP a dej konec. Protože teď nastavuješ další CP + do toho pleteš konec. přidej další #define sfCP20 + case 20 a do něj dej jen výhru bez nastavení dalšího CP.

Link to comment
Share on other sites

  • 0

Celej závod máš posunutý o 1 CP. Při vjezdu do předposledního CP se spustí akce pro "sfCP19". Nezmeníš v ní proměnnou, vypíšeš vítěze, ale zobrazíš další CP.

 

Navíc, dělat to takto přes definice je zbytečné, dělalo se to někdy v roce 2009. Také tam máš zbytečně moc řádků, celý script v OnPlayerEnterRaceCP by se dal o takových 60-70% zkrátit a zjednodušit.

Link to comment
Share on other sites

  • 0

Když tady:

case sfCP19:{
vyhral++;
print("sfCP19");
new c[60];
SetPlayerRaceCheckpoint(playerid,2,-2601.2710,1360.2321,6.7883,-2601.2710,1360.2321,6.7883,5.0);
if(vyhral == 1){
format(c, 60, "Hráč %s skončil na prvom mieste v závode okolo SF.", PlayerName(playerid));
SendClientMessageToAll(FARBA_ZELENA, c);
DisablePlayerCheckpoint(playerid);
DestroyVehicle(azavod);
}
else if(vyhral == 2){
format(c, 60, "Hráč %s skončil na druhom mieste v závode okolo SF.", PlayerName(playerid));
SendClientMessageToAll(FARBA_ZELENA, c);
DisablePlayerCheckpoint(playerid);
DestroyVehicle(azavod);
}
else if(vyhral == 3){
format(c, 60, "Hráč %s skončil na treťom mieste v závode okolo SF.", PlayerName(playerid));
SendClientMessageToAll(FARBA_ZELENA, c);
DisablePlayerCheckpoint(playerid);
DestroyVehicle(azavod);
}
}

 

vymažeš to:

SetPlayerRaceCheckpoint(playerid,2,-2601.2710,1360.2321,6.7883,-2601.2710,1360.2321,6.7883,5.0);

Tak už to nenastaví další CP a bude konec trasy (cíl).

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...