[POMOC] Zatvor vrijeme


Započeo Arkoo, Oktobar 27, 2015, 23:43:51 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Skripta koju koristim:N/A
Detaljan opis problema:stavio sam da mi izbaciva tekst na sredini kad je igrac u zatvoru compiluje mod sve ok ali u igri ne ispisuje tekst
Dio skripte:
forward Jail();
public Jail()
{
	new string[128];
	for(new i = 0; i<MAX_PLAYERS; i++)
	{
	    if(IsPlayerConnected(i))
	    {
	        if(PlayerInfo[i][pZatvorenVreme] > 0)
	        {
	    format(string, sizeof(string), "Preostalo vrijeme~n~u zatvoru:~n~%d",PlayerInfo[i][pZatvorenVreme]);
	    GameTextForPlayer(i, string, 1000, 3);
		    }
		}
	}
	return 1;
}

Neke slike/video za lakse dobivanje pomoci(neobavezno):


Glupost Nemanja, string mu je 35 + eventualnih 5 za vrijeme (%d), stoga je i on sam previse stavio.

@Arkoo, IsPlayerConnected ne moras koristiti vec od 0.3 verzije sampa ako se dobro sjecam. Preporucam ti da koristis foreach ili nesto slicno, a ne da loopas kroz sve igrace moguce (0.3.7 je to 1000) - to opterecuje skriptu.

Vjerojatno ti ne pokazuje (inace je sve dobro sto se tice same funkcije) iz razloga sto vec postoji neki GameText prikazan na ekranu (mozda skriven ili nesto) jer koliko ja znam ne moze se prikazati vise od jednog u isto vrijeme. To mozes rjesiti Textdrawom pa mjenjati ga, ili pa da ga prikaze samo na par sekundi kad napises komandu i sl. Ali najbolje rjesenje bi bilo da pronadjes taj drugi GameText koji ti blokira ovo :).
Aequam memento rebus in arduis servare mentem.


Na koliko si stavio da se repeatuje timer?

-Probaj  :)

if(PlayerInfo[i][pZatvorenVreme]  == 0)
     {
	     PlayerInfo[i][pZatvorenVreme]--;
	     format(string, sizeof(string),"~y~Preostalo vrijeme u zatvoru: ~n~~w~%d",PlayerInfo[i][pZatvorenVreme]);
	     GameTextForPlayer([i], string, 1000, 3);
       }

My PC:
# Procesor: AMD FX-8350 (8 x 4,0 GHz)
# Matična ploča: Asus M5A78M-M LX3
# Memorija: Kingston Fury 8 GB 1600 MHz
# Hard disk: Seagate / WD 500 GB
# Grafička kartica: GTX750-Ti 2 GB GDDR5
# Windows 8.1 64-Bit

Citat: United Extreme RolePlay poslato Oktobar 28, 2015, 13:03:09 POSLE PODNE
-Probaj  :)

if(PlayerInfo[i][pZatvorenVreme]  == 0)
     {
	     PlayerInfo[i][pZatvorenVreme]--;
	     format(string, sizeof(string),"~y~Preostalo vrijeme u zatvoru: ~n~~w~%d",PlayerInfo[i][pZatvorenVreme]);
	     GameTextForPlayer([i], string, 1000, 3);
       }


error 029: invalid expression, assumed zero
expression has no effect
error 001: expected token: ";", but found "]"
error 029: invalid expression, assumed zero
fatal error 107: too many error messages on one line
-----------------------------------------------------------------------------
GameTextForPlayer([i], string, 1000, 3);
--------------------------------------------------------------------------------


P.S. POPRAVIO SAM ERROR
Poslednja Izmena: Oktobar 28, 2015, 15:30:00 POSLE PODNE od Arkoo

Citat: United Extreme RolePlay poslato Oktobar 28, 2015, 13:03:09 POSLE PODNE
-Probaj  :)

if(PlayerInfo[i][pZatvorenVreme]  == 0)
     {
	     PlayerInfo[i][pZatvorenVreme]--;
	     format(string, sizeof(string),"~y~Preostalo vrijeme u zatvoru: ~n~~w~%d",PlayerInfo[i][pZatvorenVreme]);
	     GameTextForPlayer([i], string, 1000, 3);
       }

Ne ispisuje opet tekst.
@ElectricityBoy , Kakav timer?
Poslednja Izmena: Oktobar 28, 2015, 15:36:32 POSLE PODNE od Arkoo

-Ovako ce ti bit lakše bar po meni napravis textdraw za npr:Do izlaska imate jos 30 minuta i tako to i ovako postavis
i radice ti

        
       Textdraw1[playerid] = TextDrawCreate(, " "); //Napravi sebi textdraw 
	TextDrawAlignment(Textdraw1[playerid], );
	TextDrawBackgroundColor(Textdraw1[playerid], );
	TextDrawFont(Textdraw1[playerid], );
	TextDrawLetterSize(Textdraw1[playerid], );
	TextDrawColor(Textdraw1[playerid], );
	TextDrawSetOutline(Textdraw1[playerid], );
	TextDrawSetProportional(Textdraw1[playerid], );

       if(PlayerInfo[i][pZatvorenVreme]  == 0)
      {
	     PlayerInfo[i][pZatvorenVreme]--;
	     format(string, sizeof(string),"~y~Preostalo vrijeme u zatvoru: ~n~~w~%d",PlayerInfo[i][pZatvorenVreme]);
	     TextDrawSetString(Textdraw1[i],string);//Ovo stavis i bice ti sve ok
        }

       
   

My PC:
# Procesor: AMD FX-8350 (8 x 4,0 GHz)
# Matična ploča: Asus M5A78M-M LX3
# Memorija: Kingston Fury 8 GB 1600 MHz
# Hard disk: Seagate / WD 500 GB
# Grafička kartica: GTX750-Ti 2 GB GDDR5
# Windows 8.1 64-Bit

Citat: United Extreme RolePlay poslato Oktobar 28, 2015, 16:37:35 POSLE PODNE
-Ovako ce ti bit lakše bar po meni napravis textdraw za npr:Do izlaska imate jos 30 minuta i tako to i ovako postavis
i radice ti

        
       Textdraw1[playerid] = TextDrawCreate(, " "); //Napravi sebi textdraw 
	TextDrawAlignment(Textdraw1[playerid], );
	TextDrawBackgroundColor(Textdraw1[playerid], );
	TextDrawFont(Textdraw1[playerid], );
	TextDrawLetterSize(Textdraw1[playerid], );
	TextDrawColor(Textdraw1[playerid], );
	TextDrawSetOutline(Textdraw1[playerid], );
	TextDrawSetProportional(Textdraw1[playerid], );

       if(PlayerInfo[i][pZatvorenVreme]  == 0)
      {
	     PlayerInfo[i][pZatvorenVreme]--;
	     format(string, sizeof(string),"~y~Preostalo vrijeme u zatvoru: ~n~~w~%d",PlayerInfo[i][pZatvorenVreme]);
	     TextDrawSetString(Textdraw1[i],string);//Ovo stavis i bice ti sve ok
        }

       
   
Zbunio sam se sad ovdje da postavim ovaj kod zajedno ovako ili da razdvojim


Pa kako pozivaš ovu gore public funkciju koja ti updatuje gamemodetext

Citat: ElectricityBoy poslato Oktobar 28, 2015, 18:02:30 POSLE PODNE

Pa kako pozivaš ovu gore public funkciju koja ti updatuje gamemodetext
ovo je sve sto sam napravio sad sam stavio da ide preko foreach ali opet ne prikazuje
forward ZatvorVR();
public ZatvorVR()
{
	foreach(Player,i)
	{
           if(PlayerInfo[i][pZatvorVreme] >= 0)
	        {
				new string[128];
	            format(string, sizeof(string), "Preostalo vrijeme~n~u zatvoru:~n~%d", PlayerInfo[i][pZatvorenVreme]);
	            GameTextForPlayer(i, string, 1000, 3);
	            }
	}
}

Pa brate moraš napravit timer koji će pozivat tu funkciju da bi radilo

Citat: ElectricityBoy poslato Oktobar 28, 2015, 18:29:44 POSLE PODNE
Pa brate moraš napravit timer koji će pozivat tu funkciju da bi radilo
hahahahahhaha mislis da u cmd uhapsi ubacim settimer....... i na ovaj public ?
na koliko da stavim timer?
Poslednja Izmena: Oktobar 28, 2015, 18:34:13 POSLE PODNE od Arkoo

Dodaj ovaj STOCK

stock KonvertujVreme(vreme)
{
    new minuti, sekunde, string[128];
    if(vreme > 59)
	{
        minuti = floatround(vreme/60);
        sekunde = floatround(vreme - minuti*60);
        if(sekunde > 9) format(string, sizeof(string), "%d:%d", minuti, sekunde);
        else format(string, sizeof(string), "%d:0%d", minuti, sekunde);
    }
    else
	{
        sekunde = floatround(vreme);
        if(sekunde > 9) format(string, sizeof(string), "0:%d", sekunde);
        else format(string, sizeof(string), "0:0%d", sekunde);
    }
    return string;
}


A ovo tu neka bude tvoj kod

forward Jail();
public Jail()
{
	new string[128];
	for(new i = 0; i<MAX_PLAYERS; i++)
	{
	    if(IsPlayerConnected(i))
	    {
	        if(PlayerInfo[i][pZatvorenVreme] > 0)
	        {
				format(string, sizeof(string), "Preostalo vrijeme~n~u zatvoru:~n~%s", KonvertujVreme(PlayerInfo[i][pZatvorenVreme]));
				GameTextForPlayer(i, string, 1200, 5);
		    }
		}
	}
	return 1;
}


I koristi "FOREACH" jer je brzi od ove petlje. Na puno igraca dizat ce ti se CPU servera!
Perfect Life RolePlay
Server IP: 51.89.33.21:7777
Forum: www.pl-samp.com
Scripter / Mapper