Jump to content

Recommended Posts

Posted

Explicatie

MoveObject(objectid, Float:X, Float:Y, Float:Z, Float:Speed);

objectid           ID-ul obiectului pe care vrei sa-l muti.

Float:X           Noile coordonate X.

Float:Y           Noile coordonate Y.

Float:Z           Noile coordonate Z.

Float:Speed    Viteza cu care va fii mutat obiectul.

Functia nu returneaza nici o valoare asa ca e mai bine sa o ignori.

Pentru a muta un obiect, mai intai trebuie sa-l cream,

Aici, 971 e idul obiectului in sine, cum ar veni modelul, 0.0 se refera la X, al 2-lea 0.0 la Y iar al 3-lea la Z, al 4-lea la rotatie X, al 5-lea la rotatie Y iar al 6-lea la rotatie Z.

CreateObject(971, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
Dar acum, nu-l putem folosi, pentru ca nu i-am dat un ID. ID-ul e pt identificarea obiectului, "numele" obiectului. Acum ii vom da "numele". Pentru asta vom creea o arie noua.
new obiect;
Iar acum i-o vom atribui obiectului creat. Deci se schimba in felul urmator.
obiect = CreateObject(971, 0.0,0.0,0.0, 0.0, 0.0, 0.0);
Acum obiectul nostru este creat si are un "nume" . Iar acum ne vom folosi de acel nume. Pentru a muta obiectul creat mai devreme, folosim functia MoveObject.
MoveObject(obiect, 1.0, 1.0, 1.0, 5);
Putem folosi aceasta functie oriunde vom dori in script sa mutam obiectul. Aplicatie Putem sa folosim MoveObject in 3 moduri diferite, primul mod este: miscarea determinata de un timer setat la un anumit punct, cel de al 2-lea mod este: miscarea determinata de o comanda, iar cel de al 3-lea mod este: miscarea determinata de o actiune. Pentru fiecare mod voi da un exemplu: Pentru Primul Mod: Miscarea unui obiect de la o pozitie la alta, cand Gamemodul va fii executat.
#include <a_samp>

new obiect;

forward MiscareObiect();
public MiscareObiect()
{
    MoveObject(obiect, 2.0, 3.0, 1.0, 5);
    return 1;
}

public OnGameModeInit()
{
    obiect = CreateObject(971, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
    SetTimer("MiscareObiect", 2 * 1000, 1); // 2 secunde si se repeta
    return 1;
}
Acest mod nu va functiona corect daca il rulati, aceasta e doar partea legata de obiect, pentru a arata un exemplu. Pentru cel de al 2-lea mod: Scrierea comenzii /obiect, va misca obiectul catre o alta pozitie decat locatia "natala" .
#include <a_samp>

new obiect;

public OnGameModeInit()
{
    obiect = CreateObject(971, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if( strcmp(cmdtext, "/obiect", true)==0)
    {
        MoveObject(obiect, 12.0, 0.0, 1.0, 5);
        return 1;
    } 
    return 0;
}
Acest mod nu va functiona corect daca il rulati, aceasta e doar partea legata de obiect, pentru a arata un exemplu. Pentru cel de al 3-lea mod: Miscarea unei porti in pozitia initiala, determinata de un Timer. *Pentru acest exemplu va voi arata mai intai cum sa creati o poarta, iar apoi exemplul in sine va fii miscarea portii prin timerul setat la pozitia initiala. *Poarta va fi "obiect" miscarea ei in sus cu 2 grade pe axa Z va fii determinata de comanda /obiect, in acel moment va fii setat un timer care o va misca in pozitia initiala in 5 secunde.
#include <a_samp>

new obiect;

forward Actiunea(playerid);
public Actiunea(playerid)
{
    MoveObject(obiect, 0.0, 0.0, 0.0, 5);
    return 1;
}

public OnGameModeInit()
{
    obiect = CreateObject(971, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if( strcmp(cmdtext, "/obiect", true)==0)
    {
        MoveObject(obiect, 0.0, 0.0, 2.0, 5);
        SetTimerEx("Actiunea", 5 * 1000, 0, "i", playerid); //5 secunde , nu se repeta, valoarea este integer pt playerid
        return 1;    
    } 
    return 0;
}

Acest mod nu va functiona corect daca il rulati, aceasta e doar partea legata de obiect, pentru a arata un exemplu.

Acesta este tutorialul meu despre functia MoveObject. Postati daca aveti nelamuriri.

Salut.

-Toate tutorialele postate intra aici sau puneti-le direct [url=http://www.sa-mp.ro/forum/index

  • Replies 74
  • Created
  • Last Reply

Top Posters In This Topic

Guest Mariachi
Posted

am inteles pana si eu cum se face . felicitari mon ami

Guest farse
Posted

Fain bravo,poti sa pui si cel de-al  4-lea mod

Pentru cel de al 4-lea mod:Cu PlayerToPoint,miscare automata  :D

O faci si pe asta?

Guest Alecswtzu
Posted

Cum pot pune sa se deschida la o anumita tasta de ex Caps Lock

Posted

Alecswtzu, ala e al 3lea mod, si te folosesti de OnPlayerKeyStateChange si nu de un timer...

-Toate tutorialele postate intra aici sau puneti-le direct [url=http://www.sa-mp.ro/forum/index

Guest Alecswtzu
Posted

Alecswtzu, ala e al 3lea mod, si te folosesti de OnPlayerKeyStateChange si nu de un timer...

Si cum pun acea tasta acolo poti da un exemplu?

Guest farse
Posted

Las ca te ajut eu,ca asta nu vrea sa te ajute  :P .

1.Deci pentru inceput pui sus:

new g;
forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);//asta numa daca nu o aveai
2.La OnFilterScriptInit(sau la OnGameModeInit) pui :
g= CreateObject(id,x,y,z,rx,ry,rz);
id,x,y,z,rx,ry,rz-inlocuiesti cu ID,pozitia si rotatioa obiectului 3.la OnPlayerKeyStateChange pui asa:
if(PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z))//aici pui cam la ce distanta sa fie cand el apasa CapsLock sa se miste gate-u
{
if ((newkeys==KEY_SECONDARY_ATTACK ))
{
MoveObject(g,x,y,z,speed);//aici pui coordonatele la care sa se miste si viteza
}
}
4.Obtional:daca cumva nai PlayreToPoint,pui asta la urca scriptului:
public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
    if(IsPlayerConnected(playerid))
	{
		new Float:oldposx, Float:oldposy, Float:oldposz;
		new Float:tempposx, Float:tempposy, Float:tempposz;
		GetPlayerPos(playerid, oldposx, oldposy, oldposz);
		tempposx = (oldposx -x);
		tempposy = (oldposy -y);
		tempposz = (oldposz -z);
		//printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
		if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
		{
			return 1;
		}
	}
	return 0;
}

  • Administrator
Posted

Foarte bun tutorialul.

GJ cmg

logo.png

ATENTIE!!! Nu imi trimiteti mesaje private care au legatura cu scriptingul. NU mai scriptez.

Guest David Paul
Posted

sry,pt dublu post nu merge edit :(

Deci dau /save in joc pt noile cordonate la porti ?si pun la MoveObject ?

  • Administrator
Posted

Deci dau /save in joc pt noile cordonate la porti ?si pun la MoveObject ?

Nu.

Coordonatele la porti le faci in MTA.

Cu /save faci coordonatele la vehicule, la pozitii de spawnare, etc

logo.png

ATENTIE!!! Nu imi trimiteti mesaje private care au legatura cu scriptingul. NU mai scriptez.

Guest David Paul
Posted

Dar unde sa dau la rotatie explicami plz :)

Guest Mariachi
Posted

Pai in MTA ( Multi Theft Auto - sa nu se inteleaga altceva ) adaugi poarta ( sau obiectul in sine ) si il muti din taste , sau din SCROLL-ul mouse-ului.

Guest mihai97
Posted

am si eu o intrebare despre postu lui farse ala care misca obiectul cind apesi o tasta:

unde gasesc ce tre sa scriu pentru fiecare tasta?

  • 2 weeks later...
Guest mihai97
Posted

pai faci o comanda la fel si in loc de coordonatele noi ale portii le pui tot pe alea de la createobject

Guest mihai97
Posted

Dublezi comanda de deschidere si schimbi coordonatele noi ale portii.Pentru a le gasi mai usor te duci acolo unde ai pus createObjecturile si cauti poarta si setezi coordonatele alea.

Acum ai inteles?

Guest ChiNeZu
Posted

Ai uitat sa pui si sa se deschida contracost si sa se inchida intr-un anumit timp

de ex sa foloseasca comanda /deschide sa ii ia 500$ si sa se inchida in 5 sec

Posted

e foarte simplu...

pui doar o verificare gen if( GetPlayerMoney(playerid) >= 500 ) GivePlayerMoney(playerid, -500); else return SendClientMessage(playerid, COLOR, "Iti trebuie 500$ pt a deschide poarta !");  <- asta in comanda si aia e

-Toate tutorialele postate intra aici sau puneti-le direct [url=http://www.sa-mp.ro/forum/index

Guest mihai97
Posted

asta pot sati explec eu

creezi poarta iar la public OnPlayerCommandText(playerid, cmdtext[])

scrii comanda de deschidere si mai adaugi acolo SetTimerEx("time", 3000, 0, "", playerid);

iar dupa OnPlayerCommandText(playerid, cmdtext[])

pui:

forward time;

public time()

{

MoveObject(objectid, X, Y, Z, Speed);

return 1;

}

unde:

time = numele timerului

3000 = timpul la care sa se repete actiunea

0 = sa nu se mai repete actiunea

Guest ChiNeZu
Posted

Mey sa nu mai fie off topic si sa inteleaga toti Da tot sa schimbam coordonatele si sa il bagam direct in mod sa nu mai intrebe si alti ASA ? DA CUM ? DA UNDE ? CE E AIA

Bine ca nici eu nam inteles

De ex faceti cum a facut in tutorial dati tot codu si noi sa schimbam coordonatele

VA ROG SA FACETI PENTRU BARIERA :D

Guest mihai97
Posted

uitativa la fsul meu Drift si o sa intelegeti ;)

http://www.sa-mp.ro/forum/index.php?topic=1805.0

Posted

modul al 3 lea face ce vroiai mai sus h3ll

PS: Poti sa instalezi si sa-mp united si sa-mp 0.2x , doar baga SA de 2 ori ^_^

-Toate tutorialele postate intra aici sau puneti-le direct [url=http://www.sa-mp.ro/forum/index

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.