[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 3 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_



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