Jump to content

RaceCheckpoint


AnDrEyUpS

Recommended Posts

Salutare as avea o problema... Recent am facut un mapping pentru o cursa si acuma am o problema, nu prea stiu cum as putea sa adaug SetPlayerRaceCheckpoint sunt cam 10-12 cp.

Comanda este urmatoarea:  https://pastebin.com/urUZWZ2r

Coordonatele nu o sa le mai zic pentru ca nu are rost... Ma poate ajuta cineva doar cu un exemplu ca sa stiu dupa cum sa le fac? Am intrat si la wiki, dar degeaba ca tot nu imi dau seama. dau +1.

Link to comment
Share on other sites

Adaugi in dialog la tine, unde ai pus acel SetPlayerPos, Adaugi si checkpointul(SetPlayerRaceCheckpoint) cu numarul 50 CP[playerid] = 50.

Mergi la OnPlayerRaceCheckPoint:

Numarul 50 era un numar aleeatoriu, dar trebuie sa ai grija ca CheckPointul cu numarul 50 sa nu  mai existe la OnPlayerRaceCheckPoint.

Ai spus ca ai nevoie de 13 CheckPointuri, deci o sa ai CP[playerid] = 50 ..... pana la 63.Ele o sa fie create astfel:

If(CP[playerid] = 50) {

SetPlayerRaceCheckpoint(10. x. y. z.) // setezi un checkpointul 51

CP[playerid] = 51; Pui urmatorul checkpoint.

Poti sa mai adaugi un text aici 

}

(CP[playerid] = 51) {

Si tot la fel setezi checkpointul 52.

}

 

Scuza-ma pentru greșelile de exprimare, dar sunt de pe telefonul mobil. O sa dau un edit cand ajung acasa. Sper ca te-am ajutat.

 

//EDITED

Edited by zNx[]

 

Link to comment
Share on other sites

Acum 2 ore, zNx[] a spus:

Adaugi in dialog la tine, unde ai pus acel SetPlayerPos, Adaugi si checkpointul(SetPlayerRaceCheckpoint) cu numarul 50 CP[playerid] = 50.

Mergi la OnPlayerRaceCheckPoint:

Numarul 50 era un numar aleeatoriu, dar trebuie sa ai grija ca ca CheckPointul cu numarul 50 sa nu  mai existe la OnPlayerRaceCheckPoint.

Ai spus ca ai nevoie de 13 CheckPointuri, deci o sa ai CP[playerid] = 50 ..... pana la 63.Ele o sa fie create astfel:

If(CP[playerid] = 50) {

SetPlayerRaceCheckpoint(10. x. y. z.) // setezi un checkpointul 51

CP[playerid] = 51; Pui urmatorul checkpoint.

Poti sa mai adaugi un text aici 

}

(CP[playerid] = 51) {

Si tot la fel setezi checkpointul 52.

}

 

Scuza-ma pentru greșelile de exprimare, dar sunt de pe telefonul mobil. O sa dau un edit cand ajung acasa. Sper ca te-am ajutat.

 

//EDITED

Imi poti da add pe discord? An3reea #1080

 

Link to comment
Share on other sites

Salut @AnDrEyUpS,

E foarte simplu sa faci un race-checkpoint. Ai urmatoarea structura pentru race-checkpointuri:

SetPlayerRaceCheckpoint( playerid, type, Float:x, Float:y, Float:z, Float:nextx, Float:nexty, Float:nextz, size );

Sa zicem ca primul tau checkpoint are coordonatele: x = 1, y = 2, z = 3; (primul checkpoint din cursa)

Dupa care, urmatorul tau checkpoint are coordonatele: nextx = 4, nexty = 5, nextz = 6; (al 2-lea checkpoint din cursa)

 

Iar cursa incepe cu urmatoare functie (un exemplu):

function startRace( ) {
	foreach( new i : Player ) {
		if( isPlayerInRace[ i ] ) {
			SetPlayerRaceCheckpoint( i, 0, 1, 2, 3, 4, 5, 6, 7.0 );
			SendClientMessage( i, -1, "Cursa a inceput, ti-am setat primul checkpoint" );
		}
	}
}

Dupa cum vezi, dupa "SetPlayerRaceCheckpoint( i, 0, " urmeaza numerele 1, 2, 3 (care reprezinta primul checkpoint din cursa), dupa care numerele 4, 5, 6 (care reprezinta coordonatele pentru al 2-lea checkpoint), urmat de 7.0 care reprezinta dimensiunea checkpointului.

Practic, tu trebuie sa incluzi in fiecare checkpoint pe care il creezi atat locul in care vrei sa faci checkpointul, cat si urmatorul loc in care vrei sa il faci.

Dupa ce ai creat primul checkpoint, al 2-lea va arata in felul urmator (exemplu):

SetPlayerRaceCheckpoint( i, 0, 4, 5, 6, 7, 8, 9, 7.0 );

Dupa cum vezi, primele numere sunt 4, 5 si 6, care reprezinta locatia checkpointului, urmat de 7, 8 si 9 care reprezinta locatia pentru urmatorul checkpoint. Cand vei crea al 3-lea checkpoint, in loc de 4, 5, 6, vei trece 7, 8, 9.

 

Cand vei ajunge la ultimul checkpoint, acesta trebuie sa contina aceleasi coordonate atat pentru locatia in care ai pus ultimul checkpoint, cat si pentru urmatoarea (Exemplu):

SetPlayerRaceCheckpoint( i, 1, 7, 8, 9, 7, 8, 9, 7.0 );

Iar dupa cum vezi, dupa "i", am pus 1, care reprezinta type-ul pentru finish. (0 reprezinta type-ul normal, adica iti arata sageata pentru directia catre urmatorul checkpoint).

 

Cam asa functioneaza race-checkpointurile. Desigur, eu ti-am aratat un exemplu simplu, tu te poti folosi de el sa intelegi, si sa-ti faci codul mai optimizat.

Poti defini toate checkpointurile intr-o variabila "Float" si sa le apelezi detectand ultimul checkpoint in care a intrat jucatorul, in felul asta scapi de cateva linii. (Exemplu):

#define MAX_RACE_CHECKPOINTS 5

new Float: raceCheckpoints[ MAX_RACE_CHECKPOINTS ][ 3 ] = {

	{ 1.000, 2.000, 3.000 },
	{ 4.000, 5.000, 6.000 },
	{ 7.000, 8.000, 9.000 },
	{ 10.000, 11.000, 12.000 },
	{ 13.000, 14.000, 15.000 }

};

function startRace( ) {

	foreach( new i : Player ) {

		if( isPlayerInRace[ i ] ) {

			SetPlayerRaceCheckpoint( i, 0, raceCheckpoints[ 0 ][ 0 ], raceCheckpoints[ 0 ][ 1 ], raceCheckpoints[ 0 ][ 2 ], raceCheckpoints[ 1 ][ 3 ], raceCheckpoints[ 1 ][ 4 ], raceCheckpoints[ 1 ][ 5 ], 7.0 );
			SendClientMessage( i, -1, "Cursa a inceput, ti-am setat primul checkpoint" );

		}

	}

}

public OnPlayerEnterRaceCheckpoint( playerid ) {

	if( isPlayerInRace[ playerid ] ) {

		playerCheckpoint[ playerid ] ++;
		new checkPoint = playerCheckpoint[ playerid ], nextPoint = playerCheckpoint[ playerid ] + 1;

		if( checkPoint < MAX_RACE_CHECKPOINTS - 1 ) SetPlayerRaceCheckpoint( i, 0, raceCheckpoints[ checkPoint ][ 0 ], raceCheckpoints[ checkPoint ][ 1 ], raceCheckpoints[ checkPoint ][ 2 ], raceCheckpoints[ nextPoint ][ 3 ], raceCheckpoints[ nextPoint ][ 4 ], raceCheckpoints[ nextPoint ][ 5 ], 7.0 );
		else SetPlayerRaceCheckpoint( i, 1, raceCheckpoints[ checkPoint ][ 0 ], raceCheckpoints[ checkPoint ][ 1 ], raceCheckpoints[ checkPoint ][ 2 ], 0.0, 0.0, 0.0, 7.0 );

        	SendClientMessage( i, -1, "Ai intrat in checkpointul de la race." );

	}

	return true; }

E facut pe moment, e doar un exemplu. Cam asta ar fi, bafta.

Pentru alte detalii, click aici.

Edited by shane
  • Like 1

Daca te-am ajutat =>

spacer.png

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.