[TuT] Djurine Kućne Čarolije - Kako napraviti Race (GF)

Započeo zerocoolos, Avgust 29, 2009, 22:30:47 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 2 gostiju pregledaju ovu temu.

zerocoolos


Evo kako sam ja to radio:
new drag[MAX_PLAYERS];
new dragrace;


pod forward:

forward UtrkaTimer();
forward UtrkaTimer2();
forward UtrkaTimer3();


ongamemodeinit:
dragrace = CreateObject(982, 2050.7309570313, -2493.9169921875, 13.230429649353, 0, 0, 0);

onplayercommand:
if(strcmp(cmd, "/dragracer", true) == 0)
{
   if(IsPlayerConnected(playerid))
   {
    tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Pisi: /dragracer [id igraca/Dio imena]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] >= 1)
{
if(IsPlayerConnected(giveplayerid))
{
                   if(giveplayerid != INVALID_PLAYER_ID)
   {
   GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "DragRace: %s, tebi je admin %s aktivirao utrku", giveplayer, sendername);
SendClientMessage(giveplayerid,COLOR_RED, string);
format(string, sizeof(string), "[DragRace]Igracu %s je utrku aktivirao admin %s", giveplayer, sendername);
SendAdminMessage(COLOR_GREEN, string);
                       SetPlayerRaceCheckpoint(giveplayerid, 1,1465.1482,-2493.8542,13.1253,0,0,0,20);
                       drag[giveplayerid] = 100;
}
}
}
else
{
format(string, sizeof(string), "   %d nije aktivan igrac.", giveplayerid);
SendClientMessage(playerid, COLOR_GRAD1, string);
}
}
return 1;
}
if(strcmp(cmd, "/startdragrace", true) == 0)
{
if (PlayerInfo[playerid][pAdmin] >= 1)
{
        GetPlayerName(playerid, sendername, sizeof(sendername));
            SendClientMessage(playerid, COLOR_GREEN, "Aktivirao si utrku");
            format(string, sizeof(string),"*Admin %s je aktivirao DragRace",sendername);
            SendAdminMessage(COLOR_RED,string);
        for(new i = 0; i < MAX_PLAYERS; i++)
        {
       if(IsPlayerConnected(i))
       {
                  if(drag[giveplayerid] == 100)
          {
                      SendClientMessage(i,COLOR_BLUE, "Utrka ce startati za 3 sekunde");
                      GameTextForPlayer(i, "3",1000,6);
                      SetTimer("UtrkaTimer",1000,0);
      }
       }
        }
}
return 1;
}


public OnPlayerEnterRaceCheckpoint(playerid);

new string[128];
new name[MAX_PLAYER_NAME];
if(drag[playerid] == 100){ DisablePlayerRaceCheckpoint(playerid);
SetPlayerRaceCheckpoint(playerid, 1,1465.1482,-2493.8542,13.1253,0,0,0,20);
drag[playerid] =101;}
else if(drag[playerid] == 101) {DisablePlayerRaceCheckpoint(playerid);
{
drag[playerid] = 0;
DisablePlayerRaceCheckpoint(playerid);
  GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "DragRace : %s je upravo zavrsio utrku ", name);
SendClientMessageToAll(COLOR_LIGHTRED, string);
}
}
return 1;
}


i na kraj skripte:

public UtrkaTimer()
{
    new giveplayerid;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
     if(drag[giveplayerid] == 100)
    {
              GameTextForPlayer(i, "2",1000,6);
              SetTimer("UtrkaTimer2",1000,0);
}
}
}
}
public UtrkaTimer2()
{
    new giveplayerid;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
     if(drag[giveplayerid] == 100)
    {
              GameTextForPlayer(i, "1",1000,6);
              SetTimer("UtrkaTimer3",1000,0);
}
}
}
}
public UtrkaTimer3()
{
    new giveplayerid;
    MoveObject(dragrace,2050.73046875,-2493.9169921875,11.190228462219, 4.0);//znaci kapija se automatski spusta kad timer kaze start
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
             if(drag[giveplayerid] == 100)
    {
              GameTextForPlayer(i, "START !!!",1000,6);
}
}
}
}
Poslednja Izmena: April 19, 2010, 16:52:56 POSLE PODNE od SoaD123

zerocoolos

zadnji timer samo promijeni u ovaj:

public UtrkaTimer3()
{
    new giveplayerid;
    MoveObject(dragrace,2050.73046875,-2493.9169921875,11.190228462219, 4.0);//znaci kapija se automatski spusta kad timer kaze start
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
             if(drag[giveplayerid] == 100)
    {
              GameTextForPlayer(i, "START !!!",1000,6);
              SetPlayerRaceCheckpoint(i, 1,x1,y1,z1,x2,y2,z2,20);-----> tu mijenjaj koordinate za oba cp-a
}
}
}
}


Prvi cp: x1,y1,z1
Drugi: x2,y2,z2

Umjesto x1,y1... stavi float koordinate tvoja dva cp-a...

ja imam samo 1 cp tj on je zajednički, znaci hvata oba dvije trake vozaca,i sad kad sam ja napravio tako kako si rekao,pozovem igraca,pojavi se taj cilj(cp) i kad startam utrku kad timer odradi svoje kaze start taj cilji cp nestane(a crveni kvadratic ostane na mapi) i ja odvezem do tog kvadratica tu di bi trebo bit cilj nista se ne dogaÄ'a.jel imas jos kakvih ideja?(da negdje u komandi za pozivanje igraca nije greska,mozda samo poziva admine ili tako nesta)

iYoko

Mogu se ja malo umjesati... Jer postoji mogucnost dodavanja arrow i finish checkpointa?


Djuro pomagaj :D ,
isao sam ponovno radit race po ovom tutu i opet imam problemcic,znaci kad doÄ'em do starta pozovem igraca pise da sam pozvan,startam utrku,timer odradi svoje kad kaze start pojavi mi se prvi cp i ograda se spusti,ali kad doÄ'em do tog cp-a on stoji i dalje znaci nece se maknut i pokazat slijedeci,evo kodova pa probaj naci di je greska:

na vrhu skripte :

new dragrace;
forward UtrkaTimer();
forward UtrkaTimer2();
forward UtrkaTimer3();


public ongamemodeinit:


dragrace = CreateObject(982, 2050.7309570313, -2493.9169921875, 13.230429649353, 0, 0, 0);


public onplayercommand:


if(strcmp(cmd, "/dragracer", true) == 0)
{
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Pisi: /dragracer [id igraca/Dio imena]");
return 1;
}
giveplayerid = ReturnUser(tmp);
if (PlayerInfo[playerid][pAdmin] >= 1)
{
if(IsPlayerConnected(giveplayerid))
{
                    if(giveplayerid != INVALID_PLAYER_ID)
    {
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, sizeof(string), "DragRace: %s, tebi je admin %s aktivirao utrku", giveplayer, sendername);
SendClientMessage(giveplayerid,COLOR_RED, string);
format(string, sizeof(string), "[DragRace]Igracu %s je utrku aktivirao admin %s", giveplayer, sendername);
SendAdminMessage(COLOR_GREEN, string);
                        PlayerInfo[giveplayerid][pUtrka] = 1;
}
}
}
else
{
format(string, sizeof(string), "   %d nije aktivan igrac.", giveplayerid);
SendClientMessage(playerid, COLOR_GRAD1, string);
}
}
return 1;
}
if(strcmp(cmd, "/startdragrace", true) == 0)
{
if (PlayerInfo[playerid][pAdmin] >= 1)
{
         GetPlayerName(playerid, sendername, sizeof(sendername));
             SendClientMessage(playerid, COLOR_GREEN, "Aktivirao si utrku");
             format(string, sizeof(string),"*Admin %s je aktivirao DragRace",sendername);
             SendAdminMessage(COLOR_RED,string);
         for(new i = 0; i < MAX_PLAYERS; i++)
         {
        if(IsPlayerConnected(i))
        {
                   if(PlayerInfo[i][pUtrka] == 1)
           {
                       SendClientMessage(i,COLOR_BLUE, "Utrka ce startati za 3 sekunde");
                       GameTextForPlayer(i, "3",1000,6);
                       SetTimer("UtrkaTimer",1000,0);
       }
        }
         }
}
return 1;
}


public OnPlayerEnterRaceCheckpoint(playerid):


if(PlayerInfo[playerid][pUtrka] >= 2)
{
               if(PlayerToPoint(2.0, playerid,2010.2949,-2493.9670,13.1025))//cp1
               {
                       if(PlayerInfo[playerid][pUtrka] == 2)
                       {
                            PlayerInfo[playerid][pUtrka] = 3;
                            SetPlayerRaceCheckpoint(playerid, 0, 1915.4852,-2493.9519,13.1102, 1774.5427,-2493.7131,13.5547, 2.0);// kao sto vidite u race cp unosite iduci cp i onaj iza njega
   }
               }
               if(PlayerToPoint(2.0, playerid,1915.4852,-2493.9519,13.1102))//cp2
               {
                       if(PlayerInfo[playerid][pUtrka] == 3)
                       {
                            PlayerInfo[playerid][pUtrka] = 4;
                            SetPlayerRaceCheckpoint(playerid, 0,1774.5427,-2493.7131,13.5547, 1465.1482,-2493.8542,13.1253, 2.0);
                            SendClientMessage(playerid, COLOR_YELLOW, "Prosao si kroz cilj");
PlayerInfo[playerid][pUtrka] = 4+1;//da mozete i dalje vidjeti kad prolaze kroz cilj
                            DisablePlayerRaceCheckpoint(playerid);
//-------------------[Ovo je da svi oni koji su na raceu vide kad prodjete kroz cilj]
                        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] > 0)
                {
                            format(string, sizeof(string), "Utrka - Cilj: %s",sendername);
                                SendClientMessage(i,COLOR_WHITE , string);
                }
           }
                             }
   }
               }
}


i na kraju skripte:


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);
}
}
}
}
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);
}
}
}
}
public UtrkaTimer3()
{
    MoveObject(dragrace,2050.73046875,-2493.9169921875,11.190228462219, 4.0);//znaci kapija se automatski spusta kad timer kaze start
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
              if(PlayerInfo[i][pUtrka] == 1)
    {
              GameTextForPlayer(i, "START !!!",1000,6);
               SetPlayerRaceCheckpoint(i, 0, 2010.2949,-2493.9670,13.1025, 1915.4852,-2493.9519,13.1102, 20);//cp 1
              PlayerInfo[i][pUtrka] = 2;
}
}
}
}

Plzz recte mi gdje sam pogrijesio

CitatC:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3634) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3635) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3636) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3637) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3638) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3639) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3640) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3641) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3641 -- 3642) : warning 215: expression has no effect
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3642) : error 001: expected token: ";", but found "if"
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3642) : error 036: empty statement
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3642) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase


11 Errors.

Plzz pomoc
 
Moji Radovi:
_________________________________________
_________________________________________


Citat: Night_Mare poslato April 21, 2010, 18:34:28 POSLE PODNE
Plzz recte mi gdje sam pogrijesio

CitatC:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3634) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3635) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3636) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3637) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3638) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3639) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3640) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3641) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3641 -- 3642) : warning 215: expression has no effect
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3642) : error 001: expected token: ";", but found "if"
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3642) : error 036: empty statement
C:\Documents and Settings\Servis\Desktop\Kucni server\gamemodes\RG-RP.pwn(3642) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase


11 Errors.

Plzz pomoc
postaj redove...



Sta pojasnit?

CP = Check point?


Odsutan dok ne doÄ'em.


Citat: SoaD123 poslato Maj 01, 2010, 15:37:03 POSLE PODNE
sta niko nezna di bi mogo bit problem?
fali ti DisablePlayerCheckpoint(playerid) prije SetPlayerCheckpoint, SetPlayerCheckpoint ne radi to automatski pa morate vi inace vam nece dobro raditi  ;)

zerocoolos

Citat: JoeBullet v2.1 poslato Maj 13, 2010, 12:53:33 POSLE PODNE
Citat: SoaD123 poslato Maj 01, 2010, 15:37:03 POSLE PODNE
sta niko nezna di bi mogo bit problem?
fali ti DisablePlayerCheckpoint(playerid) prije SetPlayerCheckpoint, SetPlayerCheckpoint ne radi to automatski pa morate vi inace vam nece dobro raditi  ;)

ili neka jednostavno naprave novu f-ju npr SetPlayerCheckpoint_ koja ce u sebi prvo imate DisablePlayerCheckpoint pa onda SetPlayerCheckpoint da ne moraju puno toga mijenjati...