Jump to content
Autentificarea cu Google și Facebook nu mai este disponibilă. ×

Recommended Posts

Posted

Buna ziua, buna seara pentru mine :D, la cererea lui Jirk am sa fac acest tutorial.

Pentru inceput aveti nevoie de urmatoarele:

- MAP EDITOR

- STREAMER

- Multa atentie , si executati pasii pe care ii parcurg si eu in tutorial.

 

 Pentru inceput mergem si plasam obiectul. Eu voi plasa o poarta cu ID = 980. Voi plasati ce obiect vreti.

 

oJVEqa0.jpg

 

Am introdus obiectul si il pozitionam in locul dorit. Acum avem nevoie de coordonatele lui:

 

jnWllrd.jpg

 

Acum mergem si o sa creem codul in pawn:

new poarta;

public OnGameModeInit()
{
	poarta = CreateDynamicObject(980,1587.8665, -1637.9141, 14.8116, 0.0000, 0.0000, 0.0000);
	// si ce mai aveti voi
	return 1;
}

Acum sa explicam:

Am creat o noua variabila numita "poarta" care am definito ca fiind obiect(Acel createdynamicobject).

980- reprezinta id obiectului

1587.8665, -1637.9141, 14.8116- reprezinta pozitia lui pe harta San Andreas

0.0000, 0.0000, 0.0000- reprezinta rotatiile lui.

 

Acum mergem si coboram obiectul ( il miscam ).

 

mDlBKYn.jpg

 

Acum voi crea sub 2 forma. Prima forma este cea care, folosesti o tasta , iar a 2-a este cea in care folosesti o comanda.

Vom crea un nou callback la care vom apela cu un timer pentru a se inchide poarta. Daca nu se creaza acest timer, atunci aceasta poarta va ramane pozitionata jos, nu se va ridica la pozitia initiala.

forward MoveInitialPoarta();

public MoveInitialPoarta()
{
	MoveDynamicObject(poarta,1587.8665, -1637.9141, 14.8116, 5.0, 0.0000, 0.0000, 0.0000);
	return 1;
}

MoveDynamicObject- functia cu care mutam obiectul

 

poarta- cum am definit mai sus, este obiectul pe care il miscam

1587.8665, -1637.9141, 14.8116- coordonatele initiale

5.0- viteza cu care deplasam obiectul

0.0000, 0.0000, 0.0000 - rotatia. Nu este necesar, dar este recomandat sa se puna si rotatia pentru a nu avea probleme.

 

Prima metoda:

 

mergem la publicul OnPlayerKeyStateChange, alegem o tasta de AICI si vom crea codurile:

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if (newkeys & KEY_CROUCH )
	{
	    if(IsPlayerInRangeOfPoint(playerid,15, 1587.8665, -1637.9141, 14.8116))
	    {
	            MoveDynamicObject(poarta,1587.8665, -1637.9141, 9.7766, 5.0, 0.0000, 0.0000, 0.0000);
	            SetTimer("MoveInitialPoarta",5000,0);
	            SendClientMessage(playerid,-1,"Ai deschis poarta 5 secunde!");
	    }
	}
        // liniile voastre
	return 1;
}

if (newkeys & KEY_CROUCH )- este tasta H(cand esti in masina) si C (cand esti pe jos, de pe site-ul de mai sus)

if(IsPlayerInRangeOfPoint(playerid,15, 1587.8665, -1637.9141, 14.8116)) - verificam ca, atunci este langa poarta( 15- reprezinta distanta, 1587.8665, -1637.9141, 14.8116- reprezinta coordonatele, adica cand playerul este la 15 m cel mult de poarta)

MoveDynamicObject- reprezinta functia cu care miscam obiectul

1587.8665, -1637.9141, 9.7766- coordonatele cand obiectul este plasat in partea de jos, din imaginea 3

5.0 - viteza cu care miscam obiectul

0.0000, 0.0000, 0.0000- rotatiile unde plasam obiectul

 

SetTimer("MoveInitialPoarta",5000,0); - apelam la acest timer ca dupa 5 secunde(5000) parta sa se mute la pozitia initiala

 

SendClientMessage(playerid,-1,"Ai deschis poarta 5 secunde!"); - Dam un mesaj corespunzator celui care coboara poarta.

 

Metoda comenzii.

 

Vom crea comanda , dar folosim aceleasi functii ca si la metoda 1.

if (strcmp("/deschidegate", cmdtext, true, 10) == 0)
	{
	    if(IsPlayerConnected(playerid))
	    {
			if(IsPlayerInRangeOfPoint(playerid,15, 1587.8665, -1637.9141, 14.8116))
		    {
		            MoveDynamicObject(poarta,1587.8665, -1637.9141, 9.7766, 5.0, 0.0000, 0.0000, 0.0000);
		            SetTimer("MoveInitialPoarta",5000,0);
		            SendClientMessage(playerid,-1,"Ai deschis poarta 5 secunde!");
		    }
		    else
		        return SendClientMessage(playerid,-1,"Nu esti langa poarta!");
		}
	        
		return 1;
	}

else
         return SendClientMessage(playerid,-1,"Nu esti langa poarta!"); - atunci cand playerul tasteaza comanda, si nu este in jurul portii la distanta de cel mult 15 m, sa ii spuna ca nu este langa poarta.

 

La comanda, mai putem adauga

GivePlayerMoney(playerid,-1000);

daca vrem sa punem o vama, si sa plateasca cand o trece si va fi cam asa:

if (strcmp("/deschidegate", cmdtext, true, 10) == 0)
	{
	    if(IsPlayerConnected(playerid))
	    {
			if(IsPlayerInRangeOfPoint(playerid,15, 1587.8665, -1637.9141, 14.8116))
		    {
		            MoveDynamicObject(poarta,1587.8665, -1637.9141, 9.7766, 5.0, 0.0000, 0.0000, 0.0000);
		            SetTimer("MoveInitialPoarta",5000,0);
		            GivePlayerMoney(playerid,-1000);
		            SendClientMessage(playerid,-1,"Ai trecut vama, si ai platit suma de 1000$!");
		    }
		    else
		        return SendClientMessage(playerid,-1,"Nu esti langa poarta!");
		}
	        
		return 1;
	}

Voi il puteti infrumuseta cum vreti voi. Sper ca acestu tutorial sa prinda bine si altora. Tutorialul este scris si facut de mine, nu il gasiti in alta parte!

  • Like 1
  • Upvote 3
  • 3 weeks later...
Posted

Folositor tutorialul ;)

Ofer servicii de web designer/developer(contact me pentru portofoliu etc)

Metode de plata: Paysafecard,Skrill,PayPal,Bitcoin

Ofer si servicii de Penetration Testing.

Vand si VPN-uri. 5 euro pe luna

Skype: live:mrtunne.tkcode

Discord: https://mrtunne.info/discord

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