Szerző Téma: [TUT]Mozgató Object  (Megtekintve 351 alkalommal)

[TUT]Mozgató Object
« Dátum: 2011. szeptember 24. - 00:46:42 »
0 Show voters
Sziasztok!  :D 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 #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;
}

 
Köszönöm és sok sikert kivánok!  :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal