Jump to content

Tutorial - /goto in masina


DiBlaine
 Share

Recommended Posts

  • Username: DiBlaine
  • Creator: Eu.
  • Tutorial/Ghid: 

Am decis sa fac tutorialul aceasta deoarece si eu cand eram chiar la inceput imi doream sa fac acest "sistem". Este un sistem de /goto simplu, dar daca playerul pe care se foloseste comanda /goto este in masina atunci sa puna si adminul in masina doar daca sunt locurile neocupate. In caz ca toate locurile din masina sunt ocupate adminul isi va da /goto la player(in afara masinii).

Va rog nu criticati intro-ul, nu este unul prea reusit ????.

Edited by DiBlaine
Link to comment
Share on other sites

Acum 2 ore, TwEnzY.VALOARE a spus:

Ceva simplu, felicitari 

Mulțumesc, apreciez!

 

Acum 27 minute, MihaiArabu a spus:

 

Mulțumesc, apreciez!

 

Acum 12 minute, Leonard a spus:

Nu prea ai gandit-o bine pe partea de optimizare.

 

Sunt aici sa invat cat mai multe si sa ajut si pe altii cu cunostintele pe care le am. Ai putea sa imi zici unde as fi putut optimiza mai bine aceasta comanda, te rog frumos? Eu cum am invatat asa m-am obisnuit insa am schimbat si eu pe parcurs mai multe lucruri, am incercat mereu sa le gandesc logic, sa nu incarc prea tare sistemele / comenzile pe care le fac.

Link to comment
Share on other sites

  • Administrator

@DiBlaine poftim.

 

O constanta cu toate locurile vehiculelor.

new const MaxVehicleSeats[ 212 ] = 
{ 
    4, 2, 2, 2, 4, 4, 1, 2, 2, 4, 2, 2, 2, 4, 2, 2, 4, 2, 4, 2, 4, 4, 2, 2, 2, 
    1, 4, 4, 4, 2, 1, 9, 1, 2, 2, 0, 2, 9, 4, 2, 4, 1, 2, 2, 2, 4, 1, 
    2, 1, 2, 0, 2, 1, 1, 1, 2, 2, 2, 4, 4, 2, 2, 1, 2, 1, 2, 4, 4, 2, 2, 4, 2, 1, 
    1, 2, 2, 1, 2, 2, 4, 2, 1, 4, 3, 1, 1, 1, 4, 4, 2, 4, 2, 4, 1, 2, 2, 2, 4, 4, 
    2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 1, 1, 2, 1, 1, 2, 2, 4, 2, 2, 1, 1, 2, 2, 2, 2, 
    2, 2, 2, 2, 4, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 4, 2, 2, 2, 2, 2, 4, 4, 2, 2, 4, 
    4, 2, 1, 2, 2, 2, 2, 2, 2, 4, 4, 2, 2, 1, 2, 4, 4, 1, 0, 0, 1, 1, 2, 
    1, 2, 2, 4, 2, 4, 4, 2, 4, 1, 0, 4, 2, 2, 2, 2, 0, 0, 2, 2, 1, 1, 
    4, 4, 4, 2, 2, 2, 2, 2, 4, 2, 0, 0, 0, 4, 0, 0 
}; 

O functie care verifica daca masina X are vreun loc liber, daca are, functia va returna locul liber daca nu, va returna -1.

GetFreeSeat( vehicleid ) // sa-mp.com
{ 
    new vehiclemodel = GetVehicleModel(vehicleid); 
    
    if( vehiclemodel ) 
    { 
        new 
            bool: seattaken[ 10 ], 
            playerseat = -1 
        ; 

        foreach( new i : Player ) 
        { 
            if( !IsPlayerInVehicle( i, vehicleid ) ) continue; 

            playerseat = GetPlayerVehicleSeat( i ); 
            
            if( 0 <= playerseat < 128 ) seattaken[ playerseat ] = true; 
        } 

        for( new v = 0; v < MaxVehicleSeats[ vehiclemodel - 400 ]; v++ ) 
        { 
            if( seattaken[ v ] ) continue; 
            return v; 
        } 
    } 

    return -1; 
}  

 

Un exemplu de comanda:

CMD:goto( playerid, params[], help )
{
	// verificari, etc.

	new 
		Float: posX, Float: posY, Float: posZ, vehID;

	vehID = GetPlayerVehicleID( target );

	GetPlayerPos( target, posX, posY, posZ );

	// Aici verifi daca jucatorul se afla intr-un vehicul
	if( IsPlayerInAnyVehicle( target ) )
	{
		// Aici verifici daca vehiculul jucatorului nu are nici un loc liber
		if( GetFreeSeat( vehID ) == -1 ) 
			SetPlayerPos( playerid, posX, posY + 2, posZ ); // Aici iti setezi pozitia la coordonatele jucatorului

		else
			PutPlayerInVehicle( playerid, vehID, GetFreeSeat( vehID ) ); // Aici iti setezi pozitia in vehiculul jucatorului
	}

	else 
		SetPlayerPos( playerid, posX, posY + 2, posZ );

	return true;
}

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

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