PARTNERI:
-UPOZORENJE-

Samo registrovani članovi mogu da vide/koriste forum u celini.
Prijavite se ili registrujte nalog na Balkan SA-MP forumu.


Autor Tema: [TuT] Djurine Kućne ÄŒarolije - Kako napraviti Race (GF)  (Pročitano 8481 puta)

0 članova i 1 gost pregledaju ovu temu.

zerocoolos

  • Gost
[TuT] Djurine Kućne Čarolije - Kako napraviti Race (GF)
« poslato: Avgust 29, 2009, 22:30:47 posle podne »
Vidim da vas puno zanima kako napraviti race, u ovom tutorijalu cu vam objasniti kako napraviti jedan jednostavan race.

Prvo u
enum pInfo
{

dodajte ovo:
pAdjustable,
pFuel,
pMarried,
pMarriedTo[128],
pUtrka, <---- varijabla za utrku

Zatim odite u debug mod i snimite cp-ove za utrku, zapamtite da ih snimate po redu, naravno sa komandom /save.
Kada ste to napravili potrebno je napraviti komandu za race i odbrojavanje, ali prije toga cemo napraiviti kapiju za start i to na sljedeci nacin:
gore u skriptu:
new utrkakapija;u onagamemodeinit
utrkakapija = CreateObject(id kapije,x, y, z, rotx, roty, rotz); // najbolje koordinate podignute kapije
I sada mozemo praviti komandu:
if(strcmp(cmd, "/Utrka", true) == 0)
{
if (PlayerInfo[playerid][pAdmin] >= 1)
{
         GetPlayerName(playerid, sendername, sizeof(sendername));
             SendClientMessage(playerid, COLOR_TOMATO, "Aktivirao si utrku");
             format(string, sizeof(string),"*Admin %s je aktivirao Utrku",sendername);
             SendAdminMessage(COLOR_TOMATO,string);
         for(new i = 0; i < MAX_PLAYERS; i++)
         {
        if(IsPlayerConnected(i))
        {
           if(PlayerInfo[i][pUtrka] == 1)
           {
                       SendClientMessage(i,COLOR_FLBLUE, "Utrka ce startati za 3 sekunde");
                       GameTextForPlayer(i, "3",1000,6);
                       SetTimer("UtrkaTimer",1000,0);
       }
        }
         }
}
return 1;
}

Kao sto ste vidjeli pozvao sam u komandi timer "UtrkaTimer", pa idemo i njega napraviti:
Gore stavite:
forward UtrkaTimer();
forward UtrkaTimer2();
forward UtrkaTimer3();

dolje u skriptu stavite
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(utrkakapija,xkapije, ykapije, zkapije, brzina);//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, type, Float:x, Float:y, Float:z, Float:nextx, Float:nexty, Float:nextz, Float:size);//cp 1
              PlayerInfo[i][pUtrka] = 2;
}
}
}
}

Kao sto ste primjetili vise ne morate jedan odbrojavati a drugi aktivirati race. U ovome slucaju kada upisete /utrka igracima koji imaju aktiviranu utrku ispisivati ce odbrojavanje 3,2,1 i Start. Kada ispise start kapija ce se sama spustiti.

E sad krenimo na cpove, pronadjite:
public OnPlayerEnterRaceCheckpoint(playerid)i tamo dodajte:
    if(PlayerInfo[playerid][pUtrka] >= 2)
{
               if(PlayerToPoint(radius, playerid,x1, y1, z1))//cp1
               {
                       if(PlayerInfo[playerid][pUtrka] == 2)
                       {
                            PlayerInfo[playerid][pUtrka] = 3;
                            SetPlayerRaceCheckpoint(playerid, tip, x2, y2, z2, x3, y3, z3, radius2);// kao sto vidite u race cp unosite iduci cp i onaj iza njega
   }
               }
               if(PlayerToPoint(radius2, playerid,x2, y2, z2))//cp2
               {
                       if(PlayerInfo[playerid][pUtrka] == 3)
                       {
                            PlayerInfo[playerid][pUtrka] = 4;
                            SetPlayerRaceCheckpoint(playerid, tip, x3, y3, z3, x4, y4, z4, radius3);
   }
               }
               .
               .
               .
               .
               .
               .
               .
               .
               if(PlayerToPoint(radiusn, playerid,xn, yn, zn))//cp n-ti
               {
                       if(PlayerInfo[playerid][pUtrka] == n)
                       {
                            SendClientMessage(playerid, COLOR_YELLOW, "Prosao si kroz cilj");
PlayerInfo[playerid][pUtrka] = n+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);
                }
           }
                             }
 
 //-----------------------------------------------------------------------------
   }
               }
}

Zapamtite da cete kad netko prodje kroz ako ste na tom raceu vidjeti kad on prodje.

I jos ostaje da napravite komandu za aktivaciju, ovaj puta cemo napraviti to za admina:

    if(strcmp(cmd, "/utrkaaktivacija", true) == 0)
{
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, "Pisi: /utrkaaktivacija [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), "ArenaAdmin: %s, tebi je admin %s aktivirao utrku", giveplayer, sendername);
SendClientMessage(giveplayerid,COLOR_BRIGHTRED, string);
format(string, sizeof(string), "[Utrka] igracu %s je utrku aktivirao admin %s", giveplayer, sendername);
SendAdminMessage(COLOR_YELLOWGREEN, string);
PlayerInfo[giveplayerid][pUtrka] = 1;
}
}
}
else
{
format(string, sizeof(string), "   %d nije aktivan igrac.", giveplayerid);
SendClientMessage(playerid, COLOR_GRAD1, string);
}
}
return 1;
}

Eto to bi bilo to, ukoliko imate pitanja, pohvala, doskočica, zaskočica slobodno pišite ovdje...
« Poslednja izmena: April 17, 2012, 14:34:13 posle podne joXy_ »
 

Trawis

  • Gost
Odg: Djurine Kućne Čarolije - Kako napraviti Race
« Odgovor #1 poslato: Avgust 29, 2009, 22:42:10 posle podne »
svaka čast thumbsup
taman trebam ovo  :)
 

Van mreže GodFatherr

  • Balkan SA:MP Legenda
  • Soldier
  • *
  • Poruke: 950
  • Pol: Muškarac
  • Multi Theft Auto
    • www.mtasa.com
Odg: Djurine Kućne Čarolije - Kako napraviti Race
« Odgovor #2 poslato: Avgust 29, 2009, 23:27:18 posle podne »
dobar tut svaka cast  :) dobro ce doć  ;D



 

zerocoolos

  • Gost
Odg: Djurine Kućne Čarolije - Kako napraviti Race
« Odgovor #3 poslato: Avgust 29, 2009, 23:38:56 posle podne »
hehe, np, drago mi je da vam se svidja...  thumbsup
 

Van mreže TheKiller

  • Transformer
  • *
  • Poruke: 165
  • Pol: Muškarac
  • Ukoliko kanis pobjediti,ne smijes izgubiti !
Odg: Djurine Kućne Čarolije - Kako napraviti Race
« Odgovor #4 poslato: Avgust 30, 2009, 00:40:26 pre podne »
Svaka cast Djuro,mozda ce za pocetnike biti malo tesko,al valjda ce skontat... odlicno ! ;)


Svi koji igraju CS-a neka nam se pridruze (:
 

Chrome

  • Gost
Odg: Djurine Kućne Čarolije - Kako napraviti Race
« Odgovor #5 poslato: Avgust 30, 2009, 01:25:42 pre podne »
Kako napraviti race-u u YSI-u?
Sve sto vam treba je sljedece:
Command_(setuprace)
{
new
    rLaps,
    rEntry,
    rCountdown,
    rExitTime,
    rInterior,
    rWorld;

if(sscanf(params, "dddddd", rLaps, rEntry, rCountdown, rExitTime, rInterior, rWorld))
{
    Text_Send(playerid, "SETUPRACE_USAGE_MSG");
    return 0;
}
  raceHandle = Race_Create();
  Race_SetFixedWin(raceHandle, 0);
Race_SetArial(raceHandle, 0);
Race_SetCountdown(raceHandle, rCountdown);
Race_SetInterior(raceHandle, rInterior);
Race_SetWorld(raceHandle, rWorld);
Race_SetExitTime(raceHandle, rExitTime);
Race_SetLaps(raceHandle, rLaps);
Race_SetEntry(raceHandle, rEntry);
Text_Send(playerid, "SETUPRACE_INFO1_MSG");
Text_Send(playerid, "SETUPRACE_INFO2_MSG");
Text_Send(playerid, "SETUPRACE_INFO3_MSG");
Text_Send(playerid, "SETUPRACE_INFO4_MSG");
  return 1;
}

Command_(setstart)
{
#pragma unused params
new
        Float: startX,
        Float: startY,
        Float: startZ,
        Float: startA;

GetPlayerPos(playerid, startX, startY, startZ);
  GetPlayerFacingAngle(playerid, startA);
  if(Race_AddStart(raceHandle, startX, startY, startZ, startA) == RACE_NO_CHECKPOINT)
    {
Text_Send(playerid, "SETSTART_FAIL_MSG");
return 0;
    }
    return 1;
}

Command_(setcheck)
{
#pragma unused params
new
        Float: checkX,
        Float: checkY,
        Float: checkZ;

GetPlayerPos(playerid, checkX, checkY, checkZ);
  if(Race_AddCheckpoint(raceHandle, checkX, checkY, checkZ) == RACE_NO_CHECKPOINT)
  {
Text_Send(playerid, "SETCHECK_FAIL_MSG");
return 0;
  }
    return 1;
}

Command_(startrace)
{
#pragma unused params
  Race_Start(raceHandle);
Text_Send(playerid, "STARTRACE_STARTED_MSG");
  return 1;
}

Command_(putinrace)
{
if(sscanf(params, "u", oid))
{
    Text_Send(playerid, "PUTINRACE_USAGE_MSG");
            return 0;
}
Race_PlayerJoin(oid, raceHandle);
Text_Send(playerid, "PUTINRACE_ADDED_MSG");
return 1;
}

Znam da puno vas nije upoznato nimalo sa YSI-om, ali eto tko je dobro ce mu doc.. Sa ovih 5 komanda moci cete praviti race u igri te brze i efikasnije od GodFather nacina..

Napomena[:]
varijable "oid" i "raceHandle" su globalne...
 

Van mreže dinkO14

  • Balkan SA:MP Legenda
  • Soldier
  • *
  • Poruke: 685
  • Pol: Muškarac
Odg: Djurine Kućne Čarolije - Kako napraviti Race
« Odgovor #6 poslato: Avgust 30, 2009, 01:32:05 pre podne »
Kako napraviti race-u u YSI-u?
Sve sto vam treba je sljedece:
Command_(setuprace)
{
new
    rLaps,
    rEntry,
    rCountdown,
    rExitTime,
    rInterior,
    rWorld;

if(sscanf(params, "dddddd", rLaps, rEntry, rCountdown, rExitTime, rInterior, rWorld))
{
    Text_Send(playerid, "SETUPRACE_USAGE_MSG");
    return 0;
}
  raceHandle = Race_Create();
  Race_SetFixedWin(raceHandle, 0);
Race_SetArial(raceHandle, 0);
Race_SetCountdown(raceHandle, rCountdown);
Race_SetInterior(raceHandle, rInterior);
Race_SetWorld(raceHandle, rWorld);
Race_SetExitTime(raceHandle, rExitTime);
Race_SetLaps(raceHandle, rLaps);
Race_SetEntry(raceHandle, rEntry);
Text_Send(playerid, "SETUPRACE_INFO1_MSG");
Text_Send(playerid, "SETUPRACE_INFO2_MSG");
Text_Send(playerid, "SETUPRACE_INFO3_MSG");
Text_Send(playerid, "SETUPRACE_INFO4_MSG");
  return 1;
}

Command_(setstart)
{
#pragma unused params
new
        Float: startX,
        Float: startY,
        Float: startZ,
        Float: startA;

GetPlayerPos(playerid, startX, startY, startZ);
  GetPlayerFacingAngle(playerid, startA);
  if(Race_AddStart(raceHandle, startX, startY, startZ, startA) == RACE_NO_CHECKPOINT)
    {
Text_Send(playerid, "SETSTART_FAIL_MSG");
return 0;
    }
    return 1;
}

Command_(setcheck)
{
#pragma unused params
new
        Float: checkX,
        Float: checkY,
        Float: checkZ;

GetPlayerPos(playerid, checkX, checkY, checkZ);
  if(Race_AddCheckpoint(raceHandle, checkX, checkY, checkZ) == RACE_NO_CHECKPOINT)
  {
Text_Send(playerid, "SETCHECK_FAIL_MSG");
return 0;
  }
    return 1;
}

Command_(startrace)
{
#pragma unused params
  Race_Start(raceHandle);
Text_Send(playerid, "STARTRACE_STARTED_MSG");
  return 1;
}

Command_(putinrace)
{
if(sscanf(params, "u", oid))
{
    Text_Send(playerid, "PUTINRACE_USAGE_MSG");
            return 0;
}
Race_PlayerJoin(oid, raceHandle);
Text_Send(playerid, "PUTINRACE_ADDED_MSG");
return 1;
}

Znam da puno vas nije upoznato nimalo sa YSI-om, ali eto tko je dobro ce mu doc.. Sa ovih 5 komanda moci cete praviti race u igri te brze i efikasnije od GodFather nacina..

Napomena[:]
varijable "oid" i "raceHandle" su globalne...

sto si se ti tolko napalio na taj YSI xD?
 

Chrome

  • Gost
Odg: Djurine Kućne Čarolije - Kako napraviti Race
« Odgovor #7 poslato: Avgust 30, 2009, 03:12:10 pre podne »
zato jer sam zamrzio GF  :D
vec mi dosta kolko sam tuta napisao i pomagao oko njega a gle da YSI nekom objasnis nesto napravit treba max 4-5 funkcija i manje itd ;)
 

Van mreže SOaD

  • Transformer
  • *
  • Poruke: 124
  • Pol: Muškarac
  • We do not forget
Odg: Djurine Kućne Čarolije - Kako napraviti Race
« Odgovor #8 poslato: Avgust 30, 2009, 09:49:30 pre podne »
tnx djuro, tnx bullet :-)

 

Van mreže noviclan

  • Newbie
  • *
  • Poruke: 12
Odg: Djurine Kućne Čarolije - Kako napraviti Race
« Odgovor #9 poslato: Avgust 30, 2009, 09:55:19 pre podne »
e zerocoolos,daj napravi da igraci napisu /aktiviraj i onda im admin starta
 

Van mreže SOaD

  • Transformer
  • *
  • Poruke: 124
  • Pol: Muškarac
  • We do not forget
Odg: Djurine Kućne Čarolije - Kako napraviti Race
« Odgovor #10 poslato: Avgust 30, 2009, 10:02:07 pre podne »
omG sta ce ti to... ti reci igracu da kaze ID na /re i samo ga inv na race
 

Van mreže galeb

  • High Roller
  • *
  • Poruke: 1575
  • Pol: Muškarac
Odg: Djurine Kućne Čarolije - Kako napraviti Race
« Odgovor #11 poslato: Avgust 30, 2009, 11:57:28 pre podne »
Opa djuro sad si se sjetio napraviti kad odlazis xD svaka cast ;D

======ஜ۩۞۩ஜ======
◄███▓░ FucK oFF░▓███►
======ஜ۩۞۩ஜ======



:D Fala kurcu imamo i nekih pametnih ljudi na forumu :D

Posjetite:
TUTORIALS 4 ALL NA HRVATSKOM








 

Van mreže ``G´´

  • Transformer
  • *
  • Poruke: 155
Odg: Djurine Kućne Čarolije - Kako napraviti Race
« Odgovor #12 poslato: Avgust 31, 2009, 18:11:12 posle podne »
jel moze neko postat neki tut kako dodat da neki race ima npr. 3 kruga i npr. kad udes u zadnji CP u prvom krugu da dode taj i taj je upravo zavrsio prvi krug tog i tog race-a

PLS ljudovi pomozite >:(
« Poslednja izmena: Avgust 31, 2009, 18:56:38 posle podne Razbojnik »
 

zerocoolos

  • Gost
Odg: Djurine Kućne Čarolije - Kako napraviti Race
« Odgovor #13 poslato: Avgust 31, 2009, 18:36:56 posle podne »
jel moze neko postat neki tut kako dodat da neki race ima npr. 3 kruga i npr. kad udes u zatnji CP u prvom krugu da dode taj i taj je upravo zavrsio prvi krug tog i tog race-a

PLS ljudovi pomozite :D >:(

koristi malo svoj mozak, dao sam ti jednostavan race, pa ti ga razvij...

king on ti zeli da mu se da gotov race sa komandom /utrka [broj krugova], nema malo promisli pa neka nesta i sam napravi
 

turker_kc

  • Gost
Odg: Djurine Kućne Čarolije - Kako napraviti Race
« Odgovor #14 poslato: Avgust 31, 2009, 18:50:57 posle podne »
lol Razbojnik onda samo ponavljas CPove toliko puta kolko krugova zelis