Timer

Započeo desibro, Januar 16, 2023, 21:35:00 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 3 gostiju pregledaju ovu temu.

Pitanje/savjet: Zdravo zelim da napravim jedan sistem vezan za objekte i da radi automatski u pitanju su tri objekta i zelim da se menjaju na vreme.
Opširnije: Kada pokrenem kucni server zelim da timer pocne raditi te da odbrojava prvih sat vremena do prvog objekta. Kada prodje dodatnih sat vremena taj objekat nestaje a stvara se sledeci. Isto tako i za treci objekat ceka sat vremena i drugi nestaje. Moze li mi neko ikako pomoci da odradim ovaj sistem posto mi je jako vazan.
Dodatno: /

Rex

*

Citat: desibro poslato Januar 16, 2023, 21:35:00 POSLE PODNE
Pitanje/savjet: Zdravo zelim da napravim jedan sistem vezan za objekte i da radi automatski u pitanju su tri objekta i zelim da se menjaju na vreme.
Opširnije: Kada pokrenem kucni server zelim da timer pocne raditi te da odbrojava prvih sat vremena do prvog objekta. Kada prodje dodatnih sat vremena taj objekat nestaje a stvara se sledeci. Isto tako i za treci objekat ceka sat vremena i drugi nestaje. Moze li mi neko ikako pomoci da odradim ovaj sistem posto mi je jako vazan.
Dodatno: /

Koristis funkciju SetTimer() za postavljanje timera, evo ti ispod kako bi to odprilike izgledao
[pawn]
new Objekat[3];
new faza;

public OnGameModeInit()
{
   SetTimer("ObjectTimer", 3600000, true);
   // "ObjectTimer" je ime timer-a, drugo je trajanje timera(3600000 milisekundi je sat vremena), trece je ponavljanje(true je da/false je ne)
   Objekat[0] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior)
   // moze i CreateObject()
   faza = 0;
   return 1;
}

forward ObjectTimer()
public ObjectTimer()
{
   if(faza == 0) // Faza predstavlja broj ponavljanja timera, ovde se timer ponovio jednom
   {
       faza = 1; // Stavljamo brojac na 1, pokazatelj da ulazimu u drugo ponavljanje timera
        DestroyDynamicObject(Objekat[0]); // Brisemo prvi objekat
        Objekat[1] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior) // Pravimo drugi objekat
   }
   if(faza == 1) // Proveravamo dali smo u drugoj fazi
   {
       faza = 2; // Stavljamo brojac na 2, pokazatelj da ulazimu u trece ponavljanje timera
        DestroyDynamicObject(Objekat[0]); // Brisemo prvi objekat
        Objekat[1] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior) // Pravimo treci objekat
   }
}
[/pawn]
Poslednja Izmena: Januar 17, 2023, 00:06:05 PRE PODNE od Rex

Citat: Rex poslato Januar 17, 2023, 00:04:03 PRE PODNE
Koristis funkciju SetTimer() za postavljanje timera, evo ti ispod kako bi to odprilike izgledao
[pawn]
new Objekat[3];
new faza;

public OnGameModeInit()
{
   SetTimer("ObjectTimer", 3600000, true);
   // "ObjectTimer" je ime timer-a, drugo je trajanje timera(3600000 milisekundi je sat vremena), trece je ponavljanje(true je da/false je ne)
   Objekat[0] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior)
   // moze i CreateObject()
   faza = 0;
   return 1;
}

forward ObjectTimer()
public ObjectTimer()
{
   if(faza == 0) // Faza predstavlja broj ponavljanja timera, ovde se timer ponovio jednom
   {
       faza = 1; // Stavljamo brojac na 1, pokazatelj da ulazimu u drugo ponavljanje timera
        DestroyDynamicObject(Objekat[0]); // Brisemo prvi objekat
        Objekat[1] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior) // Pravimo drugi objekat
   }
   if(faza == 1) // Proveravamo dali smo u drugoj fazi
   {
       faza = 2; // Stavljamo brojac na 2, pokazatelj da ulazimu u trece ponavljanje timera
        DestroyDynamicObject(Objekat[0]); // Brisemo prvi objekat
        Objekat[1] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior) // Pravimo treci objekat
   }
}
[/pawn]

Brises svaki put "Objekat[0]" a novi cuvas u "Objekat[1]".
PS. Deklarises array sa 3 slota, koristis samo 2 kroz citav kod, a dovoljna je jedna varijabla.

Rex

*

Citat: // xunder poslato Januar 17, 2023, 15:39:15 POSLE PODNE
Brises svaki put "Objekat[0]" a novi cuvas u "Objekat[1]".
PS. Deklarises array sa 3 slota, koristis samo 2 kroz citav kod, a dovoljna je jedna varijabla.

U fazi dva treba da pise

[pawn]
        DestroyDynamicObject(Objekat[1]); // Brisemo prvi objekat
        Objekat[2] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior) // Pravimo treci objekat
[/pawn]

Rex

*

Evo ispravljen kod
[pawn]
new Objekat[3];
new faza;

public OnGameModeInit()
{
   SetTimer("ObjectTimer", 3600000, true);
   // "ObjectTimer" je ime timer-a, drugo je trajanje timera(3600000 milisekundi je sat vremena), trece je ponavljanje(true je da/false je ne)
   Objekat[0] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior)
   // moze i CreateObject()
   faza = 0;
   return 1;
}

forward ObjectTimer()
public ObjectTimer()
{
   if(faza == 0) // Faza predstavlja broj ponavljanja timera, ovde se timer ponovio jednom
   {
       faza = 1; // Stavljamo brojac na 1, pokazatelj da ulazimu u drugo ponavljanje timera
        DestroyDynamicObject(Objekat[0]); // Brisemo prvi objekat
        Objekat[1] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior) // Pravimo drugi objekat
   }
   if(faza == 1) // Proveravamo dali smo u drugoj fazi
   {
       faza = 2; // Stavljamo brojac na 2, pokazatelj da ulazimu u trece ponavljanje timera
        DestroyDynamicObject(Objekat[1]); // Brisemo prvi objekat
        Objekat[2] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior) // Pravimo treci objekat
   }
}
[/pawn]

Citat: Rex poslato Januar 17, 2023, 16:14:38 POSLE PODNE
Evo ispravljen kod
[pawn]
new Objekat[3];
new faza;

public OnGameModeInit()
{
   SetTimer("ObjectTimer", 3600000, true);
   // "ObjectTimer" je ime timer-a, drugo je trajanje timera(3600000 milisekundi je sat vremena), trece je ponavljanje(true je da/false je ne)
   Objekat[0] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior)
   // moze i CreateObject()
   faza = 0;
   return 1;
}

forward ObjectTimer()
public ObjectTimer()
{
   if(faza == 0) // Faza predstavlja broj ponavljanja timera, ovde se timer ponovio jednom
   {
       faza = 1; // Stavljamo brojac na 1, pokazatelj da ulazimu u drugo ponavljanje timera
        DestroyDynamicObject(Objekat[0]); // Brisemo prvi objekat
        Objekat[1] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior) // Pravimo drugi objekat
   }
   if(faza == 1) // Proveravamo dali smo u drugoj fazi
   {
       faza = 2; // Stavljamo brojac na 2, pokazatelj da ulazimu u trece ponavljanje timera
        DestroyDynamicObject(Objekat[1]); // Brisemo prvi objekat
        Objekat[2] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior) // Pravimo treci objekat
   }
}
[/pawn]

bas me interesuje da li bi ti to radilo kada faze dostignu svoj maximum

[pawn]new Objekat[3];
new faza;

public OnGameModeInit()
{
   SetTimer("ObjectTimer", 3600000, true);
   // "ObjectTimer" je ime timer-a, drugo je trajanje timera(3600000 milisekundi je sat vremena), trece je ponavljanje(true je da/false je ne)
   Objekat[0] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior)
   // moze i CreateObject()
   faza = 0;
   return 1;
}

forward ObjectTimer()
public ObjectTimer()
{
   if(faza == 0) // Faza predstavlja broj ponavljanja timera, ovde se timer ponovio jednom
   {
       faza = 1; // Stavljamo brojac na 1, pokazatelj da ulazimu u drugo ponavljanje timera
        DestroyDynamicObject(Objekat[0]); // Brisemo prvi stvoreni objekat
        Objekat[1] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior) // Pravimo drugi objekat
   }
   else if(faza == 1) // Proveravamo dali smo u prvoj fazi
   {
       faza = 2; // Stavljamo brojac na 2, pokazatelj da ulazimu u drugo ponavljanje timera
        DestroyDynamicObject(Objekat[1]); // Brisemo drugi stvoreni objekat
        Objekat[2] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior) // Pravimo treci objekat
   }
   else if(faza == 2) // Proveravamo dali smo u zadnjoj fazi
   {
       faza = 0; // Vracamo na nula da bi se vratili na sami pocetak jer u tvom slucaju bi zapelo na 2
        DestroyDynamicObject(Objekat2]); // Brisemo treci stvoreni objekat
        Objekat[0] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior) // Vracamo prvi
   }
}[/pawn]

isto tako moras if i else if da procitas malo  https://balkan-samp.com/forum/index.php?topic=141426.0

Upwork Skills
Back-end:
• PHP Frameworks (Laravel, Symfony,Codeigniter)
• Python/Django
• Node.js

Front-end:
• HTML
• CSS pre-processing (SASS, LESS)
• Javascript (JQuery, Ajax, Vue, Angular, React, etc.)
• Bootstrap

CMS
• Wordpress (Woocommerce)
• Shopify, Magento

Rex

*

Citat: Grella™ poslato Januar 17, 2023, 16:35:02 POSLE PODNE
bas me interesuje da li bi ti to radilo kada faze dostignu svoj maximum

[pawn]new Objekat[3];
new faza;

public OnGameModeInit()
{
   SetTimer("ObjectTimer", 3600000, true);
   // "ObjectTimer" je ime timer-a, drugo je trajanje timera(3600000 milisekundi je sat vremena), trece je ponavljanje(true je da/false je ne)
   Objekat[0] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior)
   // moze i CreateObject()
   faza = 0;
   return 1;
}

forward ObjectTimer()
public ObjectTimer()
{
   if(faza == 0) // Faza predstavlja broj ponavljanja timera, ovde se timer ponovio jednom
   {
       faza = 1; // Stavljamo brojac na 1, pokazatelj da ulazimu u drugo ponavljanje timera
        DestroyDynamicObject(Objekat[0]); // Brisemo prvi stvoreni objekat
        Objekat[1] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior) // Pravimo drugi objekat
   }
   else if(faza == 1) // Proveravamo dali smo u prvoj fazi
   {
       faza = 2; // Stavljamo brojac na 2, pokazatelj da ulazimu u drugo ponavljanje timera
        DestroyDynamicObject(Objekat[1]); // Brisemo drugi stvoreni objekat
        Objekat[2] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior) // Pravimo treci objekat
   }
   else if(faza == 2) // Proveravamo dali smo u zadnjoj fazi
   {
       faza = 0; // Vracamo na nula da bi se vratili na sami pocetak jer u tvom slucaju bi zapelo na 2
        DestroyDynamicObject(Objekat2]); // Brisemo treci stvoreni objekat
        Objekat[0] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior) // Vracamo prvi
   }
}[/pawn]

isto tako moras if i else if da procitas malo  https://balkan-samp.com/forum/index.php?topic=141426.0

Ja sam napravio da radi to samo za tri objekta, bez ponavljanja. Sad neka on namesta kako on hoce.

U redu je ljudi ponavljanje ce svakako imati samo mi je bio bitan temelj sistema. Hvala vam <3 ;D

Citat: Grella™ poslato Januar 17, 2023, 16:35:02 POSLE PODNE
bas me interesuje da li bi ti to radilo kada faze dostignu svoj maximum

[pawn]new Objekat[3];
new faza;

public OnGameModeInit()
{
   SetTimer("ObjectTimer", 3600000, true);
   // "ObjectTimer" je ime timer-a, drugo je trajanje timera(3600000 milisekundi je sat vremena), trece je ponavljanje(true je da/false je ne)
   Objekat[0] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior)
   // moze i CreateObject()
   faza = 0;
   return 1;
}

forward ObjectTimer()
public ObjectTimer()
{
   if(faza == 0) // Faza predstavlja broj ponavljanja timera, ovde se timer ponovio jednom
   {
       faza = 1; // Stavljamo brojac na 1, pokazatelj da ulazimu u drugo ponavljanje timera
        DestroyDynamicObject(Objekat[0]); // Brisemo prvi stvoreni objekat
        Objekat[1] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior) // Pravimo drugi objekat
   }
   else if(faza == 1) // Proveravamo dali smo u prvoj fazi
   {
       faza = 2; // Stavljamo brojac na 2, pokazatelj da ulazimu u drugo ponavljanje timera
        DestroyDynamicObject(Objekat[1]); // Brisemo drugi stvoreni objekat
        Objekat[2] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior) // Pravimo treci objekat
   }
   else if(faza == 2) // Proveravamo dali smo u zadnjoj fazi
   {
       faza = 0; // Vracamo na nula da bi se vratili na sami pocetak jer u tvom slucaju bi zapelo na 2
        DestroyDynamicObject(Objekat2]); // Brisemo treci stvoreni objekat
        Objekat[0] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior) // Vracamo prvi
   }
}[/pawn]

isto tako moras if i else if da procitas malo  https://balkan-samp.com/forum/index.php?topic=141426.0

zasto dodavati nepotrebno if/else? Isto tako nema potrebe unistavati objekat, samim stvaranjem novog na njegovo mesto se samo overwriteruje...

[pawn]new Objekat[3];
new faza = 0;

public OnGameModeInit()
{
    Objekat[faza] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior);
    SetTimer("ObjectTimer", 3600000, true);
    return 1;
}

forward ObjectTimer();
public ObjectTimer()
{
    Objekat[faza] = CreateDynamicObject(modelid, x, y, resultz, 0, 0, 0, vw, interior);
    faza = (faza + 1) % 3;
}
[/pawn]