Balkan SA:MP

San Andreas Multiplayer - www.sa-mp.com => Tutorijali u vezi SA-MPa => Temu započeo: Levu poslato Maj 10, 2018, 22:37:22 POSLE PODNE

Naslov: Pokretna slova
Poruka od: Levu poslato Maj 10, 2018, 22:37:22 POSLE PODNE
Pozdrav svima, retko sta vam izbacujem od svojih radova, sta vise skoro nista... Pa sam zbog toga odlucio da vam napravim tutorial za jednu foricu koja mnoge zanima, a ne znaju kako da urade...
Naime rec je o pokretnim slova tj konkretno cu vam pokazati kako napraviti da se slova vrte u krug kao sto je vecina vas videla na BloodMoneyu, BlackStreetu i slicnim serverima.
Primer: http://www.deviantpics.com/images/2018/05/10/sa-mp-382.png - slova se vrte oko zgrade

Tutorial nije namenjen bas za pocetnike jer moraju da se znaju neke stvari koje necu objasnjavati... U tutorialu cu koristiti YLESS-ove tajmere.




Pre svega treba u MapEditoru, ili preko cega vec mapate, da izmapate objekte na kojima ce biti text u krug, odnosno da ih povezete tako da oni cine krug...
Primer: http://www.deviantpics.com/images/2018/05/10/image.png

Nakon toga uzmete kodove iz editora i stavite ih u notepad/pawno i na svaki stavite zeljeni text tj slovo u ovom slucaju(Necu objasnjavati postavljanje texta, imate razne tutorijale za to).
[pawn]
        new PokretnaSlova[12];
        //ongamemodeinit ili gde vec ucitavate mape
        PokretnaSlova[0] = CreateDynamicObject(19366, 1468.65759, -2285.15405, 25.59300,   0.00000, 0.00000, -15.00000);
   PokretnaSlova[1] = CreateDynamicObject(19366, 1468.66138, -2288.23438, 25.59300,   0.00000, 0.00000, 15.00000);
   PokretnaSlova[2] = CreateDynamicObject(19366, 1470.21057, -2290.90356, 25.59300,   0.00000, 0.00000, 45.00000);
   PokretnaSlova[3] = CreateDynamicObject(19366, 1472.87488, -2292.42163, 25.59300,   0.00000, 0.00000, 75.00000);
   PokretnaSlova[4] = CreateDynamicObject(19366, 1475.98669, -2292.43579, 25.59300,   0.00000, 0.00000, 105.00000);
   PokretnaSlova[5] = CreateDynamicObject(19366, 1478.66187, -2290.89380, 25.59300,   0.00000, 0.00000, 135.00000);
   PokretnaSlova[6] = CreateDynamicObject(19366, 1480.22510, -2288.21167, 25.59300,   0.00000, 0.00000, 165.00000);
   PokretnaSlova[7] = CreateDynamicObject(19366, 1480.22705, -2285.10132, 25.59300,   0.00000, 0.00000, 195.00000);
   PokretnaSlova[8] = CreateDynamicObject(19366, 1478.66150, -2282.41748, 25.59300,   0.00000, 0.00000, 225.00000);
   PokretnaSlova[9] = CreateDynamicObject(19366, 1475.97339, -2280.87622, 25.59300,   0.00000, 0.00000, 255.00000);
   PokretnaSlova[10] = CreateDynamicObject(19366, 1472.89282, -2280.85986, 25.59300,   0.00000, 0.00000, 285.00000);
   PokretnaSlova[11] = CreateDynamicObject(19366, 1470.21033, -2282.43262, 25.59300,   0.00000, 0.00000, -45.00000);
   SetDynamicObjectMaterialText(PokretnaSlova[0], 0, "{000000}A", 60, "Arial", 130, 1, -1, 0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
   SetDynamicObjectMaterialText(PokretnaSlova[1], 0, "{000000}B", 60, "Arial", 130, 1, -1, 0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
   SetDynamicObjectMaterialText(PokretnaSlova[2], 0, "{000000}C", 60, "Arial", 130, 1, -1, 0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
   SetDynamicObjectMaterialText(PokretnaSlova[3], 0, "{000000}D", 60, "Arial", 130, 1, -1, 0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
   SetDynamicObjectMaterialText(PokretnaSlova[4], 0, "{000000}E", 60, "Arial", 130, 1, -1, 0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
   SetDynamicObjectMaterialText(PokretnaSlova[5], 0, "{000000}F", 60, "Arial", 130, 1, -1, 0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
   SetDynamicObjectMaterialText(PokretnaSlova[6], 0, "{000000}G", 60, "Arial", 130, 1, -1, 0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
   SetDynamicObjectMaterialText(PokretnaSlova[7], 0, "{000000}H", 60, "Arial", 130, 1, -1, 0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
   SetDynamicObjectMaterialText(PokretnaSlova[8], 0, "{000000}I", 60, "Arial", 130, 1, -1, 0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
   SetDynamicObjectMaterialText(PokretnaSlova[9], 0, "{000000}J", 60, "Arial", 130, 1, -1, 0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
   SetDynamicObjectMaterialText(PokretnaSlova[10], 0, "{000000}K", 60, "Arial", 130, 1, -1, 0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
   SetDynamicObjectMaterialText(PokretnaSlova[11], 0, "{000000}L", 60, "Arial", 130, 1, -1, 0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
[/pawn]

Kada ste to uradili sada treba od svakog objekta da uzmete X,Y,Z,rX,rY,rZ kordinate i stavite u jedan enum. To radimo da bi imali pozicije na koje treba da saljemo odredjeno slovo tj objekat.
[pawn]
new Float:PokretnaSlovaPos[12][6] =
{
   {1468.65759, -2285.15405, 25.59300, 0.00000, 0.00000, -15.00000},
   {1468.66138, -2288.23438, 25.59300, 0.00000, 0.00000, 15.00000},
   {1470.21057, -2290.90356, 25.59300, 0.00000, 0.00000, 45.00000},
   {1472.87488, -2292.42163, 25.59300, 0.00000, 0.00000, 75.00000},
   {1475.98669, -2292.43579, 25.59300, 0.00000, 0.00000, 105.00000},
   {1478.66187, -2290.89380, 25.59300, 0.00000, 0.00000, 135.00000},
   {1480.22510, -2288.21167, 25.59300, 0.00000, 0.00000, 165.00000},
   {1480.22705, -2285.10132, 25.59300, 0.00000, 0.00000, 195.00000},
   {1478.66150, -2282.41748, 25.59300, 0.00000, 0.00000, 225.00000},
   {1475.97339, -2280.87622, 25.59300, 0.00000, 0.00000, 255.00000},
   {1472.89282, -2280.85986, 25.59300, 0.00000, 0.00000, 285.00000},
   {1470.21033, -2282.43262, 25.59300, 0.00000, 0.00000, -45.00000}
};[/pawn]

I sada sve sto treba da uradite je da uradite funkciju koja ce objekat da pomera sa mesta na mesto, ja sam to uradio ovako.
[pawn]
task PokretnaSlova_Tajmer[4000]()//ponavljajuci tajmer na svake 4s
{
   new Float:Pos[3];
   for(new i = 0; i < 12; i++)//petlja za 12 objekata
   {
      GetDynamicObjectPos(PokretnaSlova, Pos[0], Pos[1], Pos[2]); // uzimamo poziciju objekta i donjim kodom proveravamo na kom je mestu, zatim ga saljemo na sledece
                //nisam koristio else if kasnije jer sam imao slucajeva da mi zabada na raznim skriptama, pawn jbg
      if(Pos[0] == PokretnaSlovaPos[0][0])  MoveDynamicObject(PokretnaSlova, PokretnaSlovaPos[1][0], PokretnaSlovaPos[1][1], PokretnaSlovaPos[1][2], 1.0, PokretnaSlovaPos[1][3], PokretnaSlovaPos[1][4], PokretnaSlovaPos[1][5]);
      if(Pos[0] == PokretnaSlovaPos[1][0]) MoveDynamicObject(PokretnaSlova, PokretnaSlovaPos[2][0], PokretnaSlovaPos[2][1], PokretnaSlovaPos[2][2], 1.0, PokretnaSlovaPos[2][3], PokretnaSlovaPos[2][4], PokretnaSlovaPos[2][5]);
      if(Pos[0] == PokretnaSlovaPos[2][0]) MoveDynamicObject(PokretnaSlova, PokretnaSlovaPos[3][0], PokretnaSlovaPos[3][1], PokretnaSlovaPos[3][2], 1.0, PokretnaSlovaPos[3][3], PokretnaSlovaPos[3][4], PokretnaSlovaPos[3][5]);
      if(Pos[0] == PokretnaSlovaPos[3][0]) MoveDynamicObject(PokretnaSlova, PokretnaSlovaPos[4][0], PokretnaSlovaPos[4][1], PokretnaSlovaPos[4][2], 1.0, PokretnaSlovaPos[4][3], PokretnaSlovaPos[4][4], PokretnaSlovaPos[4][5]);
      if(Pos[0] == PokretnaSlovaPos[4][0]) MoveDynamicObject(PokretnaSlova, PokretnaSlovaPos[5][0], PokretnaSlovaPos[5][1], PokretnaSlovaPos[5][2], 1.0, PokretnaSlovaPos[5][3], PokretnaSlovaPos[5][4], PokretnaSlovaPos[5][5]);
      if(Pos[0] == PokretnaSlovaPos[5][0]) MoveDynamicObject(PokretnaSlova, PokretnaSlovaPos[6][0], PokretnaSlovaPos[6][1], PokretnaSlovaPos[6][2], 1.0, PokretnaSlovaPos[6][3], PokretnaSlovaPos[6][4], PokretnaSlovaPos[6][5]);
      if(Pos[0] == PokretnaSlovaPos[6][0]) MoveDynamicObject(PokretnaSlova, PokretnaSlovaPos[7][0], PokretnaSlovaPos[7][1], PokretnaSlovaPos[7][2], 1.0, PokretnaSlovaPos[7][3], PokretnaSlovaPos[7][4], PokretnaSlovaPos[7][5]);
      if(Pos[0] == PokretnaSlovaPos[7][0]) MoveDynamicObject(PokretnaSlova, PokretnaSlovaPos[8][0], PokretnaSlovaPos[8][1], PokretnaSlovaPos[8][2], 1.0, PokretnaSlovaPos[8][3], PokretnaSlovaPos[8][4], PokretnaSlovaPos[8][5]);
      if(Pos[0] == PokretnaSlovaPos[8][0]) MoveDynamicObject(PokretnaSlova, PokretnaSlovaPos[9][0], PokretnaSlovaPos[9][1], PokretnaSlovaPos[9][2], 1.0, PokretnaSlovaPos[9][3], PokretnaSlovaPos[9][4], PokretnaSlovaPos[9][5]);
      if(Pos[0] == PokretnaSlovaPos[9][0]) MoveDynamicObject(PokretnaSlova, PokretnaSlovaPos[10][0], PokretnaSlovaPos[10][1], PokretnaSlovaPos[10][2], 1.0, PokretnaSlovaPos[10][3], PokretnaSlovaPos[10][4], PokretnaSlovaPos[10][5]);
      if(Pos[0] == PokretnaSlovaPos[10][0]) MoveDynamicObject(PokretnaSlova, PokretnaSlovaPos[11][0], PokretnaSlovaPos[11][1], PokretnaSlovaPos[11][2], 1.0, PokretnaSlovaPos[11][3], PokretnaSlovaPos[11][4], PokretnaSlovaPos[11][5]);
      if(Pos[0] == PokretnaSlovaPos[11][0]) MoveDynamicObject(PokretnaSlova, PokretnaSlovaPos[0][0], PokretnaSlovaPos[0][1], PokretnaSlovaPos[0][2], 1.0, PokretnaSlovaPos[0][3], PokretnaSlovaPos[0][4], PokretnaSlovaPos[0][5]);
   }
   return 1;
}
[/pawn]

U slucaju da neko slovo zabode ili dodje do nekih problema, u slucaju laga i sl mozete i da uradite komandu koja ce pozvati ovu funkciju za vracanje slova na pocetne polozaje.
[pawn]
forward ResetSlova();
public ResetSlova()
{
   for(new i = 0; i < 12; i++)
   {
      MoveDynamicObject(PokretnaSlova, PokretnaSlovaPos
  • , PokretnaSlovaPos[1], PokretnaSlovaPos[2], 1.0, PokretnaSlovaPos[3], PokretnaSlovaPos[4], PokretnaSlovaPos[5]);
       }
       return 1;
    }
    [/pawn]

    Kratko i lako, ali opet za neke bez logike komplikovano. Hvala na paznji i izvinjavam se na mogucim greskicama hehe  :D
Naslov: Odg: Pokretna slova
Poruka od: Bašovski poslato Maj 11, 2018, 20:50:41 POSLE PODNE
Od tebe ne mogu ocekivat nesto lose :) Samo naprijed Levu :D
Naslov: Odg: Pokretna slova
Poruka od: Vasic poslato Maj 11, 2018, 21:01:44 POSLE PODNE
Citat: Bašovski poslato Maj 11, 2018, 20:50:41 POSLE PODNE
Od tebe ne mogu ocekivat nesto lose :) Samo naprijed Levu :D
Naslov: Odg: Pokretna slova
Poruka od: Fojnica poslato Maj 11, 2018, 21:51:10 POSLE PODNE
Odlično brate.
Naslov: Odg: Pokretna slova
Poruka od: Terza Lazarevic poslato Maj 11, 2018, 22:04:28 POSLE PODNE
Dobarrr
Naslov: Odg: Pokretna slova
Poruka od: m u m i poslato Maj 11, 2018, 22:33:07 POSLE PODNE
Extraa ;D
Naslov: Odg: Pokretna slova
Poruka od: Levu poslato Maj 16, 2018, 21:28:44 POSLE PODNE
Hvala svima!  :D
Naslov: Odg: Pokretna slova
Poruka od: PekiBrat poslato Maj 16, 2018, 21:33:19 POSLE PODNE
Cool 8)
Naslov: Odg: Pokretna slova
Poruka od: Stifler ツ poslato Maj 16, 2018, 21:44:40 POSLE PODNE
odlican tut
Naslov: Odg: Pokretna slova
Poruka od: Marrko poslato Maj 16, 2018, 22:17:24 POSLE PODNE
Citat: Ñ,Ñ"яzι¢ poslato Maj 11, 2018, 22:04:28 POSLE PODNE
Dobarrr
Naslov: Odg: Pokretna slova
Poruka od: Snajper poslato Maj 16, 2018, 23:16:08 POSLE PODNE
Lepo uradjeno.
Naslov: Odg: Pokretna slova
Poruka od: Levu poslato Maj 24, 2018, 00:14:53 PRE PODNE
Hvala!
Naslov: Odg: Pokretna slova
Poruka od: Comi420 poslato Jun 11, 2018, 12:31:35 POSLE PODNE
Citat: Bašovski poslato Maj 11, 2018, 20:50:41 POSLE PODNE
Od tebe ne mogu ocekivat nesto lose :) Samo naprijed Levu :D
Naslov: Odg: Pokretna slova
Poruka od: ZmajkoScript poslato Jul 11, 2018, 08:59:55 PRE PODNE
Korisno   >:(
Naslov: Odg: Pokretna slova
Poruka od: Muma poslato Jul 13, 2018, 15:31:08 POSLE PODNE
Odlično. :D
Naslov: Odg: Pokretna slova
Poruka od: [CH]Zackary_Wright poslato Decembar 31, 2018, 02:27:58 PRE PODNE
super,cool :D
Naslov: Odg: Pokretna slova
Poruka od: .:|BALKAN MAPPING|:. poslato Februar 08, 2019, 18:35:03 POSLE PODNE
dobar!
Naslov: Odg: Pokretna slova
Poruka od: YumikoJR poslato Februar 14, 2019, 02:28:01 PRE PODNE
radio sam ovo jednom, slicno ovome :D, fino je stv, pohvale
Naslov: Odg: Pokretna slova
Poruka od: -replay- poslato Februar 16, 2019, 15:31:54 POSLE PODNE
Citat: Fojnica poslato Maj 11, 2018, 21:51:10 POSLE PODNE
Odlično brate.
Naslov: Odg: Pokretna slova
Poruka od: Agent 47 poslato Februar 17, 2019, 18:56:41 POSLE PODNE
Postavio sam temu kao "lepljivu", jer je ovo mnogo dobra i mocna stvar i moze svakome posluziti,respect +
Naslov: Odg: Pokretna slova
Poruka od: [][] Foxy 2k19 [][] poslato April 20, 2019, 20:40:13 POSLE PODNE
Vrlo ce pocetnicima dobro doci.