Jump to content

script Odehraný čas


Guest Mort

Recommended Posts

Odehraný čas

 

7a9c5d0aa64d10e86277c29525d1051d5a551ec3.png

Nahoru k includům:

#include 

Mezi definice:

#define MAX_PLAYERS_EX 100 // číslo si kdyžtak změňte nebo používejte MAX_PLAYERS

Mezi forwardy:

forward Cas();

Mezi Newy:

new Sekundy[MAX_PLAYERS_EX];
new Minuty[MAX_PLAYERS_EX];
new Hodiny[MAX_PLAYERS_EX];
new Text:textdraw5[MAX_PLAYERS_EX];

Do OnGameModeInit

SetTimer("Cas",1000,1);
for(new i;i{
	textdraw5[i] = TextDrawCreate(500,6,"Nahrany cas:");
	TextDrawLetterSize(textdraw5[i],0.199999,1.000000);
	TextDrawAlignment(textdraw5[i],0);
	TextDrawBackgroundColor(textdraw5[i],0x000000FF);
	TextDrawFont(textdraw5[i],2);
	TextDrawUseBox(textdraw5[i],1);
	TextDrawBoxColor(textdraw5[i],0x00000066);
	TextDrawTextSize(textdraw5[i],563.000000,18.000000);
	TextDrawSetOutline(textdraw5[i],0);
	TextDrawSetProportional(textdraw5[i],1);
	TextDrawSetShadow(textdraw5[i],1);
//--------------------------------------------------
}

Někam do módu mimo publicy ..

public Cas()
{
for(new i;i	{
    Sekundy[i] ++;
    if(Sekundy[i] == 60)
    {
        Minuty[i] ++;
        Sekundy[i] = 0;
	}
	else if(Minuty[i] == 60)
	{
	    Hodiny[i] ++;
	    Minuty[i] = 0;
	    Sekundy[i] = 0;
	}
               else if(Minuty[i] == 60 && Sekundy[i] == 60)
               {
                   Hodiny[i] ++;
                   Minuty[i] = 0;
                   Sekundy[i] = 0;
                }
	new cas[100];
	format(cas,sizeof(cas),"Nahrany cas: ~y~%d ~w~: ~g~%d ~w~: ~r~%d",Hodiny[i],Minuty[i],Sekundy[i]);
	TextDrawSetString(textdraw5[i],cas);
	TextDrawShowForPlayer(i,textdraw5[i]);
}
return true;
}

 

Do ukládáníí:

		    dini_IntSet(...,"Sekundy",Sekundy[i]); // v případě že používáte v nějakém publicu kde je parametr playerid, změňte "i" na playerid
		    dini_IntSet(...,"Minuty",Minuty[i]);// v případě že používáte v nějakém publicu kde je parametr playerid, změňte "i" na playerid
		    dini_IntSet(...,"Hodiny",Hodiny[i]);// v případě že používáte v nějakém publicu kde je parametr playerid, změňte "i" na playerid

Do načítání:

				Sekundy[playerid] = dini_Int(..,"Sekundy");
			Minuty[playerid] = dini_Int(...,"Minuty");
			Hodiny[playerid] = dini_Int(...,"Hodiny");

 

Dělejte si co chcete, funguje to :d

 

Cykly si předělejte podle TOHODLE TUTU !!!

Link to comment
Share on other sites

Optimalizace cyklů!!! :d + stačí pouze proměnná na sekundy. :)

 

A jak máš public čas, proč tam máš TextDrawShowForPlayer? Zbytečný, to akorát použij v OnPlayerConnect a OnPlayerDisconnect.

 

Použil bych také PVar ale co už.

 

Je to dobré.

 

Změna, není to dobré! :d

if(Sekundy[i] == 60)
      {
          Minuty[i] ++;
          Sekundy[i] = 0;
     }
     else if(Minuty[i] == 60)
     {
         Hodiny[i] ++;
         Minuty[i] = 0;
         Sekundy[i] = 0;
     }

 

Tady je fatal brutal mega massive extreme hardcore chyba. :d

Když nastane případ:

Odehraný čas: 0:60:60

vyvolá se ti první podmínka ale ta druhá už ne, protože jsi použil else, může se ti tedy vyvolat pouze 1 :) Nefunguje :p

 

 

Do ukládání:

 dini_IntSet(...,"Sekundy",Sekundy[i]);
            dini_IntSet(...,"Minuty",Minuty[i]);
            dini_IntSet(...,"Hodiny",Hodiny[i]);

Používáš cyklus, který jsi tam nezmínil. :) Také jsi nenapsal, kde ukládáš, nejlepší to máš v OnPlayerDisconnect, kde žádný cyklus nepotřebuješ.

 

Oprav a bude to Good :)

Link to comment
Share on other sites

Optimalizace cyklů!!! + stačí pouze proměnná na sekundy.

 

No jo, tak tam dám odkaz na tvůj TuT :d

 

A jak máš public čas, proč tam máš TextDrawShowForPlayer? Zbytečný, to akorát použij v OnPlayerConnect a OnPlayerDisconnect.

 

To je taky řešení, ale není to jedno ?! :d

 

Použil bych také PVar ale co už.

 

PVary jsou složitý, s tma neumím

 

Je to dobré.

 

"cheers" "cheers" bře já

 

Změna, není to dobré! :d

 

Achjo :cry:

 

Tady je fatal brutal mega massive extreme hardcore chyba.

Když nastane případ:

Odehraný čas: 0:60:60

vyvolá se ti první podmínka ale ta druhá už ne, protože jsi použil else, může se ti tedy vyvolat pouze 1 Nefunguje :p

 

Opraveno

 

Používáš cyklus, který jsi tam nezmínil. Také jsi nenapsal, kde ukládáš, nejlepší to máš v OnPlayerDisconnect, kde žádný cyklus nepotřebuješ.

 

Přidal jsem tam popisek, jestli nejsou blbí tak by si to měli přečíst a předělat :p

Link to comment
Share on other sites

  • 1 month later...
Mne sa to tiež páči

9/1o

- 1 za ten nepodarený textdraw :d

 

btw petr ty si ho dokopal :d

vedel by si na tento tut urobiť zobrazovanie na webe (kolko ma hráč odohrate)? :d

Link to comment
Share on other sites

Mne sa to tiež páči

9/1o

- 1 za ten nepodarený textdraw :d

 

btw petr ty si ho dokopal :d

vedel by si na tento tut urobiť zobrazovanie na webe (kolko ma hráč odohrate)? :d

Link to comment
Share on other sites

  • Administrátor

taky by se mozna dalo oznacit zachybu ze nemas podminku jestli je hrac pripojen teoreticky by to mohlopocitat do vypnutti serveru taky bych tam dal do disconnedctu killtimer

Link to comment
Share on other sites

  • Administrátor

taky by se mozna dalo oznacit zachybu ze nemas podminku jestli je hrac pripojen teoreticky by to mohlopocitat do vypnutti serveru taky bych tam dal do disconnedctu killtimer

Link to comment
Share on other sites

V spoileri je môje počítadlo...zatiaľ je na sekundy ešte ho chcem dať na hodiny ale na to som nenašiel čas "lol"

 

 

#include

#include

#include

#include

#define FILTERSCRIPT

 

 

#if defined FILTERSCRIPT

 

new time[MAX_PLAYERS];

 

public OnFilterScriptInit()

{

print("Blank skript");

return 1;

}

 

public OnFilterScriptExit()

{

return 1;

}

 

new timer1;

forward casovac(playerid);

public OnPlayerConnect(playerid)

{

new f[40];

format(f,40,"%s",PlayerName(playerid));

if(!dini_Exists(f)) {

dini_Create(f);

dini_IntSet(f,"Sekundy",0);

}

if(dini_Exists(f)) {

time[playerid]=dini_Int(f,"Cas_Online");

}

timer1 = SetTimer("casovac",1000,true);

}

public OnPlayerDisconnect(playerid, reason)

{

new f[40];

format(f,40,"%s",PlayerName(playerid));

if(dini_Exists(f)) {

dini_IntSet(f,"Sekundy",time[playerid]);

}

KillTimer(timer1);

return 1;

}

 

public casovac(playerid)

{

time[playerid]++;

}

 

#else

 

main()

{

print("\n----------------------------------");

print(" Blank Gamemode by your name here");

print("----------------------------------\n");

}

 

#endif

 

 

Je to jednoduché..toto som zbúchal keď som začínal s pawnom a trvalo to celé 5minút.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...