[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

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 od joXy_

Trawis



zerocoolos


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

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

Citat: Chrome 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...

sto si se ti tolko napalio na taj YSI xD?

Chrome

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 ;)


e zerocoolos,daj napravi da igraci napisu /aktiviraj i onda im admin starta

omG sta ce ti to... ti reci igracu da kaze ID na /re i samo ga inv na race

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









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 od Razbojnik

zerocoolos

Citat: Razbojnik 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 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

lol Razbojnik onda samo ponavljas CPove toliko puta kolko krugova zelis