Szerző Téma: [ Leírás ]Objectek mozgatása  (Megtekintve 20980 alkalommal)

[DrM]Spatrik

  • Vendég
[ Leírás ]Objectek mozgatása
« Dátum: 2009. március 26. - 11:21:49 »
+3 Show voters
Sziasztok! Most leírom nektek, hogyan kell MoveObjectet (mozgatható objectet) készíteni lépésekre bontva. Most egy egyszerû példával fogom nektek bemutatni, hogyan is kell használni. Akkor hát, csináljunk liftet!
1., Elsõ lépésként le kell mentenünk 2 objectet. Ezt megtehetjük az MTA-ban vagy más object lerakó scriptel. Azért kell 2 objectet lerakni mert az egyik az object alaphelyzete, azaz amikor beindul a szerver akkor itt áll a lift (vagy úgy is mondhatjuk, hogy /close parancs kapuknál). A 2. object pedig azt az objectet mutatja amely már a lift felemelt pozícióját mutatja. (kapuknál /open parancs). Ha ezzel megvagyunk mehetünk a 2. pontra.


2., Ha megvagyunk az object lerakással átkonvertáltuk meg minden akkor megkapjuk az objectet:
CreateObject(18553, 226.433655, 1872.436768, 14.026321, 0.0000, 0.0000, 180.0000);

 
Nos a továbbiakban az objectet így fogom jelölni:
 
CreateObject(modelid, X, Y, Z, rX, rY, rZ);

 
Na, ha ezzel megvagyunk akkor azt az objectet rakjuk be elsõnek amelyik az alap helyzeten áll (/close parancs).
Így rakjuk be:
Ha gamemódba rakjuk:
 
public OnGameModeInit()
{
    CreateObject(modelid, X, Y, Z, rX, rY, rZ);
return 1;
}

 
Ha filterscriptbe rakjuk:
 
public OnFilterScriptInit()
{
    CreateObject(modelid, X, Y, Z, rX, rY, rZ);
return 1;
}

 
Ha megvagyunk elkezdhetjük a MoveObjectet csinálni. Go 3-as pont!


3., Elsõ lépésként meg kell neveznünk az objectet. Ezért létre kell hoznunk \"az object nevét\". A mód elejére írjuk:
 
new lift;

 
Majd odaugrunk ahová a 2. pontban az objectet beillesztettük és átírjuk a sort erre:
 
lift = CreateObject(modelid, X, Y, Z, rX, rY, rZ);

 
Azaz így néz ki:
Ha gamemódba raktuk:
 
public OnGameModeInit()
{
    lift = CreateObject(modelid, X, Y, Z, rX, rY, rZ);
return 1;
}

 
Ha filterscriptbe raktuk:
 
public OnFilterScriptInit()
{
    lift = CreateObject(modelid, X, Y, Z, rX, rY, rZ);
return 1;
}

 
Most hogy megneveztük az objectet, létrehozzuk azt a parancsot ami mozgatni fogja. Leugrunk az OnPlayerCommandText függvényhez és beírjuk a parancsot:
 
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, \"/lift1-fel\", true) == 0)
    {
         MoveObject(lift, X, Y, Z, sebesség);
          return 1;
    }
return 0;
}

 
Itt ahogy látjátok a /lift-fel parancsot adtam. Ami azt jelenti, hogy a MoveObject(lift, X, Y, Z, sebesség); -ben szereplõ X, Y, Z koordinátát le kell cserélni arra az X, Y? Z koordinátára ami a 2. objectben található, azaz, azaz object ami a lift felemelt pozícióját mutatja.
Megjegyzés: CreateObject(modelid, X, Y, Z, rX, rY, rZ);
                 MoveObject(lift, X, Y, Z, sebesség);
Ha mehvagyunk ezzel akkor, be kell állítanunk a sebességet:
MoveObject(lift, X, Y, Z, sebesség);
Ezt a sebességet lifteknél, hogy ne essünk ki belõle 2-re szokás állítani de kapuknál elérheti az 5-ös sebességet is. pl:
MoveObject(lift, X, Y, Z, 2);
Ha megvagyunk a koordináták bemásolásával és a sebesség megadásával is akkor csak az object nevét kell megadnunk amit mozgatni fog. Pl:
lift = CreateObject(modelid, X, Y, Z, rX, rY, rZ);
MoveObject(lift, X, Y, Z, sebesség);
Ha mind ezzel megvagyunk akkor megcsináljuk a lefele utat is. Létrehozunk egy /lift-le parancsot a lift lefele mozgatásához:
 
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, \"/lift-fel\", true) == 0)
    {
         MoveObject(lift, X, Y, Z, sebesség);
          return 1;
    }
   
    if(strcmp(cmdtext, \"/lift-le\", true) == 0)
    {
         MoveObject(lift, X, Y, Z, sebesség);
          return 1;
    }
return 0;
}

 
A lefele mozgató parancsnál az X, Y, Z koordináta helyére az eredeti koordinátákat kell megadni. Azaz ezeket:
public OnGameModeInit() // vagy filterscriptnél: OnFilterScriptInit()
{
   lift = CreateObject(modelid, X, Y, Z, rX, rY, rZ);
return 1;
}
Majd rendesen beállítjuk a sebességet az object nevét is beírjuk. Ha mindezeket megcsináltuk akkor kész van egy komplett lift.


Végül egy példa:
 
#include <a_samp>
#define FILTERSCRIPT
#if defined FILTERSCRIPT
new lift;
public OnFilterScriptInit()
{
    lift = CreateObject(18553, 226.433655, 1872.436768, 14.026321, 0.0000, 0.0000, 180.0000);
return 1;
}
#else
public OnGameModeInit()
{
    lift = CreateObject(18553, 226.433655, 1872.436768, 14.026321, 0.0000, 0.0000, 180.0000);
return 1;
}
#endif
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, \"/lift-fel\", true) == 0)
    {
         MoveObject(lift, 226.433655, 1872.436768, 11.401323, 2.0);
          return 1;
    }
    if(strcmp(cmdtext, \"/lift-le\", true) == 0)
    {
         MoveObject(lift, 226.433655, 1872.436768, 14.026321, 2.0);
          return 1;
    }
return 0;
}
« Utoljára szerkesztve: 2011. január 15. - 17:29:56 írta ChuckNorris »

Nem elérhető shanyi

  • 171
    • Profil megtekintése
[ Leírás ]Objectek mozgatása
« Válasz #1 Dátum: 2009. március 26. - 13:12:49 »
0 Show voters
Szép Tut! De hogy tudom azt beállítani hogy mondjuk 2mp múlva elkezdjen \"visszacsukódni\"? Timerrel? Példát tudnál rá írni?!  ;D

[DrM]Spatrik

  • Vendég
[ Leírás ]Objectek mozgatása
« Válasz #2 Dátum: 2009. március 26. - 13:19:53 »
0 Show voters
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp(cmdtext, \"/lift-fel\", true) == 0)
    {
         MoveObject(lift, X, Y, Z, sebesség);
        SetTimer(\"Vissza\", 2000, false);
          return 1;
    }
return 0;
}

És a timer álltal meghívott függvényben pedig beírod, hogy az alaphelyzetbe vigye vissza a liftet.
« Utoljára szerkesztve: 2009. március 26. - 13:22:08 írta [_PGB_]Spatrik »

Nem elérhető TrYp

  • 8059
    • Profil megtekintése
[ Leírás ]Objectek mozgatása
« Válasz #3 Dátum: 2009. március 26. - 13:26:05 »
0 Show voters
Nah ezt még énis megtudnám így már csinálni :D

[DrM]Spatrik

  • Vendég
[ Leírás ]Objectek mozgatása
« Válasz #4 Dátum: 2009. március 26. - 13:32:35 »
0 Show voters
jah, amikor írtam arra gondoltam, hogy olyan részletesen leírom, hogy mindenki meg tudja csinálni. Úgy látszik sikerült :D

Baliboy

  • Vendég
[ Leírás ]Objectek mozgatása
« Válasz #5 Dátum: 2009. március 26. - 21:20:15 »
0 Show voters
szép leírás..
de már azt mondom Yobject :D
de még nagyon sokan ezt használják.. úgyhogy sokan köszönik ezt most neked biztos..
grat

[DrM]Spatrik

  • Vendég
[ Leírás ]Objectek mozgatása
« Válasz #6 Dátum: 2009. március 27. - 08:38:53 »
0 Show voters
kössz, de oda van írva a tutorial neve mellé, hogy \"(alapok)\". Szval lesz folytatás is ;)

Nem elérhető Epsilon

  • 1854
    • Profil megtekintése
[ Leírás ]Objectek mozgatása
« Válasz #7 Dátum: 2009. március 27. - 14:02:40 »
0 Show voters
Y_Objects, cehh..  ::)
A legújabb 0.2X update kliensel már alapból bármennyi object lehet mert a klient kibírja... ÉS akkorm ár szükség sincs a Y_Objectre..
Szép Tut!
Epsilon

Baliboy

  • Vendég
[ Leírás ]Objectek mozgatása
« Válasz #8 Dátum: 2009. március 27. - 14:15:07 »
0 Show voters
de ha 300 mozgó objected van? :) :P xD

Nem elérhető Epsilon

  • 1854
    • Profil megtekintése
[ Leírás ]Objectek mozgatása
« Válasz #9 Dátum: 2009. március 27. - 15:32:36 »
0 Show voters
Idézetet írta: Baliboy date=1238159707\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"19\" data-ipsquote-contentclass=\"forums_Topic
de ha 300 mozgó objected van? :) :P xD
 
Elvileg azt is birnia kell.
 

Szép Tut! De hogy tudom azt beállítani hogy mondjuk 2mp múlva elkezdjen \"visszacsukódni\"? Timerrel? Példát tudnál rá írni?!  ;D
 
[/quote]
Autómatikusan csukódó Kapu
A MoveObject Tutorialt elötte tanulmányozd!
Epsilon

Nem elérhető PizZa

[ Leírás ]Objectek mozgatása
« Válasz #10 Dátum: 2009. március 27. - 15:44:23 »
0 Show voters
lesz mit olvasni ^^

[ Leírás ]Objectek mozgatása
« Válasz #11 Dátum: 2009. március 27. - 16:21:50 »
0 Show voters
Szép tut, grat. ;D Amúgy olyat nem lehet, hogy beírod parancsot, és több irányba mozdul (egymás után) az objekt?

Nem elérhető shanyi

  • 171
    • Profil megtekintése
[ Leírás ]Objectek mozgatása
« Válasz #12 Dátum: 2009. március 27. - 21:41:52 »
0 Show voters
Amúgy tudok objectet mozgatni,csak nem tudtam biztosra hogy hogyan csukódik vissza magától.  ;D

Nem elérhető ►ѕтa

  • 2016
  • Newbie
    • Profil megtekintése
[ Leírás ]Objectek mozgatása
« Válasz #13 Dátum: 2009. április 22. - 11:45:40 »
0 Show voters
Én ezzel javítottam ki a lift scriptemet  ;) Szép tut GRAT

magic_man

  • Vendég
[ Leírás ]Objectek mozgatása
« Válasz #14 Dátum: 2009. június 15. - 15:09:38 »
0 Show voters
Azt hogy lehet megcsinálni hogy automatikuson nyíljon és csukódjon ?
Hogy mondjuk a kapu bizonyos körzetében vagy akkor kinyílik ha pedig a körzetet elhagyod bezárul.
(A parancsosat értem)
« Utoljára szerkesztve: 2009. június 15. - 15:15:09 írta magic_man »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal