Jump to content
  • 0

pomoc Chyba v checkpointoch


Atlantiko

Dotaz

Dobrý večer, potrebujem radu ohľadom jednej chyby týkajúcej sa checkpointov.

Spravil som dva rôzne závody s rovnakým princípom, lenže.. ked dokončím prvý závod, tak zapnutie druhého má rovnakú reakciu ako koniec toho predošlého. Tak isto je to aj naopak. Skúšal som to viac krát, podla mna je najskôr chyba v zátvorkách a skúšal som ich rôzne vymienať s returnami ale žiadna zmena... errory mi to nevyhadzuje ale nejde to tak ako má :think:

 

#include <a_samp>
#define BEL 0x000000
#define ch2 2
#define ch3 3
#define ch4 4
#define ch5 5
new race1[MAX_PLAYERS];
new race2[MAX_PLAYERS];
public OnFilterScriptInit()
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/race1", cmdtext, true, 10) == 0)
{
SendClientMessage(playerid, BEL, "Začali ste závod č.1");
SetPlayerCheckpoint(playerid,-2532.3000488,2286.1000977,5.3000002,5);
race1[playerid] = ch2;
return 1;
}
if (strcmp("/race2", cmdtext, true, 10) == 0)
{
SendClientMessage(playerid, BEL, "Začali ste závod č.2");
SetPlayerCheckpoint(playerid,-2546.1000977,2323.8999023,5.3000002,5);
race2[playerid] = ch4;
return 1;
}
if (strcmp("/port", cmdtext, true, 10) == 0)
{
SetPlayerPos(playerid, -2532.3000488,2286.1000977,5.3000002);
return 1;
}
return 0;
}
public OnPlayerEnterCheckpoint(playerid)
{
switch(race1[playerid])
{
case ch2:
{
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,-2546.1000977,2323.8999023,5.3000002,5);
race1[playerid] = ch3;
}
case ch3:
{
DisablePlayerCheckpoint(playerid);
GameTextForPlayer(playerid,"~w~GRATULUJEME!",4000,5);
SendClientMessage(playerid,BEL,"[ ! ] Vyhrali ste závod č.1");
}
}
switch(race2[playerid])
{
case ch4:
{
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid,-2415.6000977,2331.1999512,5.3000002,5);
race2[playerid] = ch5;
}
case ch5:
{
DisablePlayerCheckpoint(playerid);
GameTextForPlayer(playerid,"~w~GRATULUJEME!",4000,5);
SendClientMessage(playerid,BEL,"[ ! ] Vyhrali ste závod č.2");
}
}
}

Nahral som aj video pre lepsie pochopenie :d

http://youtu.be/rmRNbXRdzw4

Dakujem vopred za kazdu pomoc

Link to comment
Share on other sites

9 odpovědí na tuto otázku

Recommended Posts

  • 0

ty si manták máš tam špatně pozice

 

case ch2:

{

DisablePlayerCheckpoint(playerid);

SetPlayerCheckpoint(playerid,-2546.1000977,2323.8999023,5.3000002,5);

race1[playerid] = ch3;

}

 

SendClientMessage(playerid, BEL, "Začali ste závod č.2");

SetPlayerCheckpoint(playerid,-2546.1000977,2323.8999023,5.3000002,5);

race2[playerid] = ch4;

return 1;

}

Link to comment
Share on other sites

  • 0

ty si manták máš tam špatně pozice

 

case ch2:

{

DisablePlayerCheckpoint(playerid);

SetPlayerCheckpoint(playerid,-2546.1000977,2323.8999023,5.3000002,5);

race1[playerid] = ch3;

}

SendClientMessage(playerid, BEL, "Začali ste závod č.2");

SetPlayerCheckpoint(playerid,-2546.1000977,2323.8999023,5.3000002,5);

race2[playerid] = ch4;

return 1;

}

 

Niesom manták, vôbec tu nejde o pozície ale o funkciu. Začiatok druhého závodu (race2) nemal mať predsa funkcie posledneho checkpointu z race1. T.j. ked som napísal /race2 a šiel na vytvorený checkpoint, nemal mi vypísať "Gratulujeme" atd. pretože to v pawne v tej pasáži vôbec napísané nieje. Preto som myslel že bude chyba niekde v zátvorkách, že proces race1 nieje ukončený.. v čom je naozaj chyba?

 

[warn=Hranaté závorky se již nepoužívají, stačí označení.][/warn]

Prepáč, nerozumiem ti..

  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0

[Tyhle závorky se již nesmí používat v názvu tématu, rozumíš mi??]

Aha, tak pardon... jeden týpek písal že to názov topicu musí obsahovat, no nic.. Takze ziadna rada k mojmu problému?

 

- Problem som už vysiešil sam... dakujem za rady na ktore som sa vobec nepytal (4Forse). Tato tema moze byť uzavreta

Link to comment
Share on other sites

  • 0

Nevynuloval jsi proměnnou.

 

Pokud vejdeš do prvního CP, nastaví se proměnná race1[playerid] = ch3;

Ovšem, když vejdeš do druhého CP (v závodu 1) proměnná se nevynuluje, takže když pak vejdeš do jakéhokoliv jiného CP (je úplně jedno jaký) vyvolá se znovu

case ch3:

{

DisablePlayerCheckpoint(playerid);

GameTextForPlayer(playerid,"~w~GRATULUJEME!",4000,5);

SendClientMessage(playerid,BEL,"[ ! ] Vyhrali ste závod č.1");

}

 

Protože to máš furt nastavené race1[playerid] = ch3;

Link to comment
Share on other sites

  • 0

Nevynuloval jsi proměnnou.

 

Pokud vejdeš do prvního CP, nastaví se proměnná race1[playerid]= ch3;

Ovšem, když vejdeš do druhého CP (v závodu 1) proměnná se nevynuluje, takže když pak vejdeš do jakéhokoliv jiného CP (je úplně jedno jaký) vyvolá se znovu

case ch3:

{

DisablePlayerCheckpoint(playerid);

GameTextForPlayer(playerid,"~w~GRATULUJEME!",4000,5);

SendClientMessage(playerid,BEL,"[ ! ] Vyhrali ste závod č.1");

}

 

 

Protože to máš furt nastavené race1[playerid]= ch3;

Jo vim, už som na to došiel... tolko som nad tym špekuloval až mi to tiež napadlo. Neviem či som urobil správne alebo to ide aj nejak jednoduhšie ale teraz to vizerá takto:

 case ch3:
 {
 DisablePlayerCheckpoint(playerid);
 GameTextForPlayer(playerid,"~w~GRATULUJEME!",4000,5);
 SendClientMessage(playerid,BEL,"[ ! ] Vyhrali ste závod č.1");
 race1[playerid] = nic;
 DisablePlayerCheckpoint(playerid);
 }

 

+ na začiatok celeho fs som dal: new nic;

:d existuje určite nejaky jednoduhši sposob, ale hlavne že to funguje tak ako má. Dakujem Ti ale pekne za prvú plnovýznamovú radu v tomto topicu

Link to comment
Share on other sites

  • 0

case ch3:
{
DisablePlayerCheckpoint(playerid);
GameTextForPlayer(playerid,"~w~GRATULUJEME!",4000,5);
SendClientMessage(playerid,BEL,"[ ! ] Vyhrali ste závod č.1");
race1[playerid] = nic;
DisablePlayerCheckpoint(playerid);
}

 

Zbytočne tam máš 2x DisablePlayerCheckpoint.A ten "new nic;" je tiež zbytočný daj na miesto neho proste nulu.

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...