[Tutorial] Cum sa creezi o poarta [ SA:MP 0.3.7 ] + miscarea acesteia
#1

Acest tutorial este facut , pentru incepatori ( cum am fost si eu candva, dar pe mine nu m-a invatat nimeni , a trebuit sa invat singur ) asa ca, o sa va las mai jos cativa pasi. Daca nu intelegeti pute-ti sa-mi dati un mesaj pe skype ( beto.alberto25 ) sau aici printr-un reply / PM !

Pasii:

PASUL 1 :

Код:
Asigurati-va ca aveti urmatorul public:

public OnPlayerConnect

La acest public v-eti adauga mapping-ul
PASUL 2 :

Creeati poarta in mapping, un exemplu de code ar fi:
Код:
CreateDynamicObject(968, 1126.96619, -1291.97839, 13.45620,   0.00000, 90.00000, 0.00000);
PASUL 3 :

Pune-ti obiectul ca sa fie citit, de catre script
Pune-ti urmatorea linie:
Код:
new numeleobiecutlui;
new numeleobiectuluistatus = 0;
PASUL 4 :

Modificati la linia cu CreateDynamicObject astfel:
Код:
numeleobiectului = CreateDynamicObject(968, 1126.96619, -1291.97839, 13.45620,   0.00000, 90.00000, 0.00000);
PASUL 5:

Faceti comanda de miscare a gate-ului
Aici aveti doua optiuni:
1) Cu statusul portii ( pentru scripteri umpic mai avansati )
2) Cu doua comenzi ( pentru incepatori, recomandat daca nu ai mai facut asa ceva vreodata )

Eu o sa va arat ambele variante, ramane la laltitudinea voastra pe care o alegeti

Optiunea 1 :
Код:
	if(strcmp(cmd, "/comanda", true) == 0)
	{
		if(IsPlayerConnected(playerid))
      	{
				if(numeleobiectuluistatus == 0)
				{
				MoveDynamicObject(numeleobiectului, 1126.96619, -1291.97839, 13.45620, 0.50, 0.00000,0.00000, 0.00000);
				numeleobiectuluistatus = 1;
				}
				else if(numeleobiectuluistatus == 1)
			       {
    				MoveDynamicObject(numeleobiectului, 1126.96619, -1291.97839, 13.45620, 0.50, 0.00000, 
90.00000, 0.00000);
				    numeleobiectuluistatus = 0;
			        }
			}
		}
	}
Optiunea 2 :

Код:
COMMAND:comanda(playerid, params[])
{
MoveDynamicObject(numeleobiectului, 1126.96619, -1291.97839, 13.45620, 0.50, 0.00000,0.00000, 0.00000);
}
COMMAND:comanda2(playerid, params[])
{
MoveDynamicObject(numeleobiectului, 1126.96619, -1291.97839, 13.45620, 0.50, 0.00000, 90.00000, 0.00000);
}
Reply
#2

Te-ai complicat prea mult, codul e indentat prost, nu vad de ce else if, puteai pune doar else, pentru ca daca nu e 0 e clar 1 logic , dar in fine...
Reply
#3

Alta metoda cu timer

Код:
public OnGameModeInit()
{
	new poarta = CreateObject(980, 2720.20020, -2405.67432, 12.53250,   0.00000, 0.00000, 89.00000); //Obiectul
	return 1;
CMD:opengate(playerid, params[])
{
	if (!IsPlayerInRangeOfPoint(playerid, 10.0, 2720.20020, -2405.67432, 12.53250)) return SendClientMessage(playerid, 0xFFFFFFFF, "You are not at the LS Port Gate!"); // verifica daca esti in apropierea portii
    SendClientMessage(playerid, 0xFFFFFFFF, "Los Santos Port Gate has been opened. Closing after 10 seconds!");
    SetTimer("closegatelsport", 10000, false);// Incepe un timer de 10 secunde
    MoveObject(poarta, 2720.59888, -2395.50293, 12.53250, 00.00000); // muta obiectul
	return 1;
}
forward closegatelsport();
public closegatelsport()
{
    MoveObject(poarta, 2720.20020, -2405.67432, 12.53250, 00.00000); //inchide poarta dupa 10 secunde
}
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)