Jump to content

MoveObject + exemplu.


cmg4life

Recommended Posts

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

Link to comment
Share on other sites

  • Replies 74
  • Created
  • Last Reply

Top Posters In This Topic

Guest farse

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;
}

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

  • 2 weeks later...
Guest mihai97

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?

Link to comment
Share on other sites

Guest ChiNeZu

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Guest mihai97

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

Link to comment
Share on other sites

Guest ChiNeZu

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

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.

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