[pomoc] race

Započeo | MARKO |, Januar 30, 2011, 20:06:00 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

evo ovako. imam mali problem. napravio sam da igrac sam mora aktivirati lijevu ili desnu stranu Drag Race-a. i sada kad dva igraca se utrkuju jedan na lijevoj drugi na desnoj strani, obojica dobiju CP na desnoj strani. nzm zasto je tako.
evo code kako izgleda:

   if(strcmp(cmd, "/aktiviraj", true) == 0)
{
   if(IsPlayerConnected(playerid))
   {
GetPlayerName(playerid, sendername, sizeof(sendername));
if(PlayerToPoint(10,playerid,2047.9989,-2575.7141,13.5469))
{
SendClientMessage(playerid,COLOR_LIGHTRED, "Aktivirali ste DESNU stranu Drag Race-a, pricekajte da admin oznaci start");
format(string, sizeof(string), "* %s je aktivirao DESNU stranu Drag Race-a.", sendername);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
PlayerInfo[giveplayerid][pUtrka] = 1;
}
else if(PlayerToPoint(10,playerid,2047.9899,-2611.2908,13.5469))
{
SendClientMessage(playerid,COLOR_LIGHTRED, "Aktivirali ste LIJEVU stranu Drag Race-a, pricekajte da admin oznaci start");
format(string, sizeof(string), "* %s je aktivirao LIJEVU stranu Drag Race-a.", sendername);
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
PlayerInfo[giveplayerid][pUtrka1] = 1;
}
else{SendClientMessage(playerid,COLOR_GRAD1, "Niste na mjestu za aktiviranje utrke!");}
}
return 1;
}


if(strcmp(cmd, "/utrka", true) == 0)
{
if (PlayerInfo[playerid][pAdmin] >= 1)
{
GetPlayerName(playerid, sendername, sizeof(sendername));
    SendClientMessage(playerid, COLOR_RED, "Oznacili ste pocetak Drag Race utrke");
      format(string, sizeof(string),"Drag Race | %s je aktivirao utrku",sendername);
  SendAdminMessage(COLOR_RED,string);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pUtrka] == 1)
{
        SendClientMessage(i,COLOR_LIGHTBLUE, "Utrka ce startati za 3 sekunde");
              GameTextForPlayer(i, "3",1000,6);
SetTimer("UtrkaTimer",1000,0);
}
else if(PlayerInfo[i][pUtrka1] == 1)
{
                SendClientMessage(i,COLOR_LIGHTBLUE, "Utrka ce startati za 3 sekunde");
              GameTextForPlayer(i, "3",1000,6);
                SetTimer("UtrkaTimer",1000,0);
  }
}
}
}
return 1;
}


if(PlayerToPoint(5, playerid,1512.5548095703, -2585.4853515625, 13.196100234985))//DESNI CP
{
if(PlayerInfo[playerid][pUtrka] == 2)
{
SendClientMessage(playerid, COLOR_YELLOW, "Prosao si kroz cilj");
DisablePlayerRaceCheckpoint(playerid);
new sendername[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, sizeof(sendername));
    for(new i = 0; i < MAX_PLAYERS; i++)
      {
if(IsPlayerConnected(i))
{
    if(PlayerInfo[i][pUtrka] > 1)
{
format(string, sizeof(string), "|Drag Race | - Cilj: %s",sendername);
SendClientMessage(i,COLOR_BLUE , string);
}
}
}
}
}
else if(PlayerToPoint(5, playerid,1512.5548095703, -2601.2080078125, 13.196100234985))//LIJEVI CP
{
if(PlayerInfo[playerid][pUtrka1] == 2)
{
SendClientMessage(playerid, COLOR_YELLOW, "Prosao si kroz cilj");
DisablePlayerRaceCheckpoint(playerid);
new sendername[MAX_PLAYER_NAME];
GetPlayerName(playerid, sendername, sizeof(sendername));
    for(new i = 0; i < MAX_PLAYERS; i++)
      {
if(IsPlayerConnected(i))
{
    if(PlayerInfo[i][pUtrka1] > 1)
{
format(string, sizeof(string), "|Drag Race | - Cilj: %s",sendername);
SendClientMessage(i,COLOR_WHITE , string);
}
}
}
}
}


public UtrkaTimer()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
   if(PlayerInfo[i][pUtrka] == 1)
   {
             GameTextForPlayer(i, "2",1000,6);
             SetTimer("UtrkaTimer2",1000,0);
}
  else if(PlayerInfo[i][pUtrka1] == 1)
   {
             GameTextForPlayer(i, "2",1000,6);
             SetTimer("UtrkaTimer2",1000,0);
}
}
}
}
public UtrkaTimer2()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
   if(PlayerInfo[i][pUtrka] == 1)
   {
             GameTextForPlayer(i, "1",1000,6);
             SetTimer("UtrkaTimer3",1000,0);
}
else if(PlayerInfo[i][pUtrka1] == 1)
   {
             GameTextForPlayer(i, "1",1000,6);
             SetTimer("UtrkaTimer3",1000,0);
}
}
}
}
public UtrkaTimer3()
{
   MoveDynamicObject(raceograda1,2046.2635498047, -2593.4248046875, 11.655453681946, 100);
   MoveDynamicObject(raceograda2,2066.6982421875, -2593.4248046875, 13.230429649353, 100);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
   if(PlayerInfo[i][pUtrka] == 1)
   {
             GameTextForPlayer(i, "START !!!",1000,6);
             SetPlayerRaceCheckpoint(i, 0, 1512.5548095703, -2585.4853515625, 13.196100234985, 0, 0, 0, 5);//cp 1
             PlayerInfo[i][pUtrka] = 2;
}
  else if(PlayerInfo[i][pUtrka1] == 1)
   {
             GameTextForPlayer(i, "START !!!",1000,6);
             SetPlayerRaceCheckpoint(i, 0, 1512.5548095703, -2601.2080078125, 13.196100234985, 0, 0, 0, 5);//cp 2
             PlayerInfo[i][pUtrka1] = 2;
}
}
}
}
Poslednja Izmena: Januar 30, 2011, 20:07:02 POSLE PODNE od pero93

totalka si pobrkao lončiće....

koristi samo jednu varijablu, sta ce ti dvije... zasto dva puta pozivas na /utrka isti timer?

pod aktiviraj:
za prvog igraca pUtrka = 1;
za drugog pUtrka = 2;


Na /utrka
loopaj kroz igrace i onda radi sljedecu provjeru:
if(PlayerInfo[i][pUtrka] == 1)
{
//tu stavi poruku za igraca "Utrka starta za 3 sekunde. TI si na lijevoj(ili desnoj) strani!"
}
if(PlayerInfo[i][pUtrka] == 2)
{
//tu stavi poruku za igraca "Utrka starta za 3 sekunde. TI si na desnoj(ili lijevoj) strani!"
}


zatim, izvan loopa stavi SetTimer("UtrkaTimer",1000,0);

i onda pod zadnje timeru, opet loopaj kroz igrace
if(PlayerInfo[i][pUtrka] == 1)
{
// tu stavi prvi cp(od prve strane)
}
if(PlayerInfo[i][pUtrka] == 2)
{
// tu stavi drugicp(od druge strane)
}


ostalo za cpove prolaz znas i sam... valjda

Djuro, hvala puno. spasio si me.