GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Leírások/Útmutatók => A témát indította: bencarter007 - 2012. Május 13. - 17:58:06

Cím: [Leírás] Objekt csatolása Jármûhöz MTA-val
Írta: bencarter007 - 2012. Május 13. - 17:58:06
Nos, sok kérdésben láttam, hogy a kezdõ scripterek keresik a módját annak, hogy a jármûvekre különbözõ objekteket \"aggassanak\". Én most leírom, hogyan lehet ezt egyszerûen elvégezni.
======================================================================
Nyissuk meg az MTA pályatervezõjét, azon belül kezdjünk egy teljesen új pályát.
Tegyük le a tetszõleges jármûvet  ezekre a koordinátákra:
x:0.0 y:0.0 z:0.0 (igen, ez a föld alatt van, de ettõl nem kell megijedni)
Ha ez megvan, aggasd fel a kocsit amivel akarod és mentsd el.
A .map fájlt konvertáljad át pl itt:
http://gtamap.delux-host.com/converter/
Konvertálás:
Válaszd ki a .map fájl helyét, ezután a fülecskén  az IPL File format-ot állítsd át PAWN code for SA:MP-ra  és átkonvertálja neked a mapot
CreateObject

 sorokra.
Nos, most hozzuk létre az autót, amire szeretnénk aggatni a dolgokat:
 
new vehicleid= AddStaticVehicle(...);// az autó létrehozása

 
Most hozzuk létre a tárgyakat, amiket fel akarunk rá aggatni:
 
new objectid = CreateObject(...);// tárgy, amit felaggatnánk az autóra

 
Ezzel pedig rácsatolod a jármûre az objektumot
 
AttachObjectToVehicle(objectid, vehicleid, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); // Tárgy felcsatolása az autóra( tárgy, jármû, koordináták)

 
a koordináták helyére szintén másoljuk be a CreateObject utáni számokat.
Több tárgy esetén:
 
new objectid1 = CreateObject(...); //tárgy 1
new objectid2 = CreateObject(...); //tárgy 2
new objectid3 = CreateObject(...); //tárgy 3
new objectid4 = CreateObject(...); //tárgy 4
AttachObjectToVehicle(objectid1, vehicleid, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); //csatolni a kocsihoz az 1. tárgyat
AttachObjectToVehicle(objectid2, vehicleid, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); //csatolni a kocsihoz az 2. tárgyat
AttachObjectToVehicle(objectid3, vehicleid, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); //csatolni a kocsihoz az 3. tárgyat
AttachObjectToVehicle(objectid4, vehicleid, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); //csatolni a kocsihoz az 4. tárgyat

 
Itt egy példa a használatára:
 
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(\"/Katyusa\", cmdtext, true, 10) == 0) //ha a játékos beírja /katyusa
{
        new Float:x, Float:y, Float:z; //beállítjuk, hogy milyen jelre kérje le az adatokat(x,y,z-hosszúság, szélesség, magasság)
GetPlayerPos(playerid, x, y, z); //lekérjük az adatokat az elõbb meghatározott jelekre
new katyusa = AddStaticVehicle(578, x, y, z, 0.0,0,0); //létrehozom az autót, ez egy katyusa lesz, egy szovjet Föld-Föld rakéta
PutPlayerInVehicle(playerid, katyusa, 0); //beültetjük a játékost az autóba
new allas = CreateObject(2893, -1.1582450866699, 2.3950941562653, 1.3178603649139, 0, 0, 0); //az MTA-ban a teherautóra rátettem egy fém lapot, ez lesz a rakéta állás
new raketa = CreateObject(3790, 1.0506319999695, -0.034515380859375, 0.83443319797516, 0, 16, 270.68664550781); //az MTA-ban rátettem a fém lapra a rakétát
AttachObjectToVehicle(allas, katyusa, -1.1582450866699, 2.3950941562653, 1.3178603649139, 0, 0, 0); //felcsatoljuk az állást
AttachObjectToVehicle(raketa, katyusa, 1.0506319999695, -0.034515380859375, 0.83443319797516, 0, 16, 270.68664550781); //felcsatoljuk a rakétát
        return 1;//a returnt ne hagyjuk ki, fontos része a scriptnek!
}
return 0;//a returnt ne hagyjuk ki, fontos része a scriptnek!
}

 
így ha a játékos beírja /katyusa, a script létrehoz számára egy teljesen új jármûvet, beleülteti és felcsatolja a jármûre a kívánt tárgyakat.
Remélem a leírásom érthetõ volt és a katyusát megéri még tovább fejleszteni! Nekem már készen van a végleges változat, gyönyörûség :) Lõni persze nem tud, de a hangulata megvan!
Sok sikert!
Cím: [Leírás] Objekt csatolása Jármûhöz MTA-val
Írta: lackos888 - 2012. Május 13. - 21:42:40
Ehhez hozzátenném ,hogy nem csak 0,0,0-ás pozíción lehet 100%-ra lementeni a pozíciókat.Máson is lehet, péld a Grove Street-en is csak 1 kis logika kell hozzá, és matematika tudás. :smokin:
Cím: [Leírás] Objekt csatolása Jármûhöz MTA-val
Írta: kurta999 - 2012. Május 13. - 21:46:41
Esetleg lehetek olyan bunkó, hogy megkérdem, hogy le-e írnád nekem, hogy azt mivel kell kiszámítani?
Mert én már próbálkoztam és szarra se mentem XD
Cím: [Leírás] Objekt csatolása Jármûhöz MTA-val
Írta: lackos888 - 2012. Május 14. - 05:06:41
Persze, és le írom:
Az object x,y,z pozícióját vedd el a kocsi x,y,z pozíciójából.
Ha jól számoltál akkor megkaptad az x,y,z offsetet.
Persze az object pozícióit ingame ne írd át az object csatolásnál.xD
Cím: [Leírás] Objekt csatolása Jármûhöz MTA-val
Írta: bencarter007 - 2012. Május 14. - 15:38:09
direkt a legegyszerûbb koordinátát ismertettem... nem kell számolni, csak megszerkeszted és átalakítod... nem értem minek túlbonyolítani...  :hmmm: :nono:
Cím: [Leírás] Objekt csatolása Jármûhöz MTA-val
Írta: lackos888 - 2012. Május 14. - 17:22:30
De valakinek kényelmesebb, ha nem a föld alatt editelget.xD
Cím: [Leírás] Objekt csatolása Jármûhöz MTA-val
Írta: bencarter007 - 2012. Május 13. - 17:58:06
Nos, sok kérdésben láttam, hogy a kezdõ scripterek keresik a módját annak, hogy a jármûvekre különbözõ objekteket \"aggassanak\". Én most leírom, hogyan lehet ezt egyszerûen elvégezni.
======================================================================
Nyissuk meg az MTA pályatervezõjét, azon belül kezdjünk egy teljesen új pályát.
Tegyük le a tetszõleges jármûvet  ezekre a koordinátákra:
x:0.0 y:0.0 z:0.0 (igen, ez a föld alatt van, de ettõl nem kell megijedni)
Ha ez megvan, aggasd fel a kocsit amivel akarod és mentsd el.
A .map fájlt konvertáljad át pl itt:
http://gtamap.delux-host.com/converter/
Konvertálás:
Válaszd ki a .map fájl helyét, ezután a fülecskén  az IPL File format-ot állítsd át PAWN code for SA:MP-ra  és átkonvertálja neked a mapot
CreateObject

 sorokra.
Nos, most hozzuk létre az autót, amire szeretnénk aggatni a dolgokat:
 
new vehicleid= AddStaticVehicle(...);// az autó létrehozása

 
Most hozzuk létre a tárgyakat, amiket fel akarunk rá aggatni:
 
new objectid = CreateObject(...);// tárgy, amit felaggatnánk az autóra

 
Ezzel pedig rácsatolod a jármûre az objektumot
 
AttachObjectToVehicle(objectid, vehicleid, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); // Tárgy felcsatolása az autóra( tárgy, jármû, koordináták)

 
a koordináták helyére szintén másoljuk be a CreateObject utáni számokat.
Több tárgy esetén:
 
new objectid1 = CreateObject(...); //tárgy 1
new objectid2 = CreateObject(...); //tárgy 2
new objectid3 = CreateObject(...); //tárgy 3
new objectid4 = CreateObject(...); //tárgy 4
AttachObjectToVehicle(objectid1, vehicleid, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); //csatolni a kocsihoz az 1. tárgyat
AttachObjectToVehicle(objectid2, vehicleid, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); //csatolni a kocsihoz az 2. tárgyat
AttachObjectToVehicle(objectid3, vehicleid, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); //csatolni a kocsihoz az 3. tárgyat
AttachObjectToVehicle(objectid4, vehicleid, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); //csatolni a kocsihoz az 4. tárgyat

 
Itt egy példa a használatára:
 
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp(\"/Katyusa\", cmdtext, true, 10) == 0) //ha a játékos beírja /katyusa
{
        new Float:x, Float:y, Float:z; //beállítjuk, hogy milyen jelre kérje le az adatokat(x,y,z-hosszúság, szélesség, magasság)
GetPlayerPos(playerid, x, y, z); //lekérjük az adatokat az elõbb meghatározott jelekre
new katyusa = AddStaticVehicle(578, x, y, z, 0.0,0,0); //létrehozom az autót, ez egy katyusa lesz, egy szovjet Föld-Föld rakéta
PutPlayerInVehicle(playerid, katyusa, 0); //beültetjük a játékost az autóba
new allas = CreateObject(2893, -1.1582450866699, 2.3950941562653, 1.3178603649139, 0, 0, 0); //az MTA-ban a teherautóra rátettem egy fém lapot, ez lesz a rakéta állás
new raketa = CreateObject(3790, 1.0506319999695, -0.034515380859375, 0.83443319797516, 0, 16, 270.68664550781); //az MTA-ban rátettem a fém lapra a rakétát
AttachObjectToVehicle(allas, katyusa, -1.1582450866699, 2.3950941562653, 1.3178603649139, 0, 0, 0); //felcsatoljuk az állást
AttachObjectToVehicle(raketa, katyusa, 1.0506319999695, -0.034515380859375, 0.83443319797516, 0, 16, 270.68664550781); //felcsatoljuk a rakétát
        return 1;//a returnt ne hagyjuk ki, fontos része a scriptnek!
}
return 0;//a returnt ne hagyjuk ki, fontos része a scriptnek!
}

 
így ha a játékos beírja /katyusa, a script létrehoz számára egy teljesen új jármûvet, beleülteti és felcsatolja a jármûre a kívánt tárgyakat.
Remélem a leírásom érthetõ volt és a katyusát megéri még tovább fejleszteni! Nekem már készen van a végleges változat, gyönyörûség :) Lõni persze nem tud, de a hangulata megvan!
Sok sikert!
Cím: [Leírás] Objekt csatolása Jármûhöz MTA-val
Írta: lackos888 - 2012. Május 13. - 21:42:40
Ehhez hozzátenném ,hogy nem csak 0,0,0-ás pozíción lehet 100%-ra lementeni a pozíciókat.Máson is lehet, péld a Grove Street-en is csak 1 kis logika kell hozzá, és matematika tudás. :smokin:
Cím: [Leírás] Objekt csatolása Jármûhöz MTA-val
Írta: kurta999 - 2012. Május 13. - 21:46:41
Esetleg lehetek olyan bunkó, hogy megkérdem, hogy le-e írnád nekem, hogy azt mivel kell kiszámítani?
Mert én már próbálkoztam és szarra se mentem XD
Cím: [Leírás] Objekt csatolása Jármûhöz MTA-val
Írta: lackos888 - 2012. Május 14. - 05:06:41
Persze, és le írom:
Az object x,y,z pozícióját vedd el a kocsi x,y,z pozíciójából.
Ha jól számoltál akkor megkaptad az x,y,z offsetet.
Persze az object pozícióit ingame ne írd át az object csatolásnál.xD
Cím: [Leírás] Objekt csatolása Jármûhöz MTA-val
Írta: bencarter007 - 2012. Május 14. - 15:38:09
direkt a legegyszerûbb koordinátát ismertettem... nem kell számolni, csak megszerkeszted és átalakítod... nem értem minek túlbonyolítani...  :hmmm: :nono:
Cím: [Leírás] Objekt csatolása Jármûhöz MTA-val
Írta: lackos888 - 2012. Május 14. - 17:22:30
De valakinek kényelmesebb, ha nem a föld alatt editelget.xD
Cím: [Leírás] Objekt csatolása Jármûhöz MTA-val
Írta: 1ST_Chr - 2012. Június 15. - 13:09:29
Idézetet írta: lackos888 date=1337008950\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"21423\" data-ipsquote-contentclass=\"forums_Topic
De valakinek kényelmesebb, ha nem a föld alatt editelget.xD
 
Akkor egy kis logikával 5 koordinátával feljebbrakja a kocsit, és akkor csak a z offsetet kell kiszámítani. :D
Cím: [Leírás] Objekt csatolása Jármûhöz MTA-val
Írta: norbee0170 - 2012. Június 15. - 13:26:08
végre vlaki mta-val csinált NORMÁLIS tutot :D ty  :thumbsup: