Jail


Započeo TONY x, Februar 14, 2018, 22:04:14 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Detaljan opis problema:Pa radim "Jail" komandu prvi put i sada problemi su ogromni;Vreme bude uvek 77 nepusta ga posle tog vremena skoro uvek kaze da komanda nepostoji(misli da je pogrean id ,znam jer kada je bil oto rekao je pogresan id a nije bio i ) i kada se loginuje ne stavi ga u jail.Pored popravke ako neko moze da mi uopste sredi komandu ili bar objasni greske za koje verujem da ima mnogo kaze kako da resim
Dio skripte:
CMD:jail(playerid,params[])
{
 	if(PlayerData[playerid][Ulogovan] < 1) return SCM(playerid, CRVENA,"Morate biti ulogovani da bi ste koristili ovu komandu");
    if(PlayerData[playerid][Aduty] < 1) return SCM(playerid, CRVENA,"Morate biti na "plava"duznosti "crvena"kako bi koristili ovu komandu");
	if(PlayerData[playerid][Administrator] >= 1 || PlayerData[playerid][Asistent] >= 2)
	{
		new targetid,vreme,razlog,txt[256];
		if(sscanf(params,"uds[256]", targetid,vreme,razlog)) return SCM(playerid, NARANDZASTA,"INFO:/jail [ID] [vreme(minute)] [razlog]");
		//if(PlayerData[targetid][Administrator] >= PlayerData[playerid][Administrator]) return SCM(playerid, CRVENA,"Odabrani korisnik je isti ili veci administratorski level od vas");
		//if(PlayerData[targetid][Asistent] >= PlayerData[playerid][Asistent]) return SCM(playerid, CRVENA,"Odabrani igarc je isti ili veci asistent level od vas");
		//if(PlayerData[targetid][Administrator] >= 1 && PlayerData[playerid][Asistent] >= 1) return SCM(playerid, CRVENA,"Asistent nemoze jailati administratora");
		GetPlayerName(playerid,Nam, MAX_PLAYER_NAME);
		GetPlayerName(targetid,pName, MAX_PLAYER_NAME);
		format(txt,sizeof(txt),""crvena"JAIL || A | AS %s je jailao igraca %s,razlog: %s",Nam,pName,razlog);
		SCMTA(-1,txt);
  		SetPlayerPos(playerid, 2543.462646,-1308.379882,1026.728393);
		SetPlayerInterior(playerid, 2);
		SetPlayerVirtualWorld(playerid, 1);
		format(txt,sizeof(txt),"~y~Jailan ~r~%d",vreme);
		GameTextForPlayer(playerid,txt,3000,3);
		SetTimerEx("JailGotov", vreme*60000, false, "i", playerid);
	}
	return 1;
}

forward JailGotov(playerid);
public JailGotov(playerid)
{
    SetPlayerPos(playerid, 2351.3213,-36.1563,26.4844);
    SetPlayerInterior(playerid, -1);
    SetPlayerVirtualWorld(playerid, 0);
    SCM(playerid, NARANDZASTA,"Pusteni ste iz robije,pokusajte biti bolji gradjanin");
    if(PlayerData[playerid][Asistent] >= 1 || PlayerData[playerid][Administrator] >= 1)
    {
        new str[64];
        GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
        format(str,sizeof(str),"Igrac %s je pusten na slobodu(iz jaila)!",pName);
        SCM(playerid, ZUTA,str);
    }
	return 1;
}

        if(PlayerData[playerid][JailVreme] >= 1) //OVO JE U POSLE LOGINA
					{
					    new str[48];
					    SetTimerEx("JailGotov", PlayerData[playerid][JailVreme]*60000, false, "i", playerid);
					    SetPlayerPos(playerid, 2543.462646,-1308.379882,1026.728393);
						SetPlayerInterior(playerid, 2);
						SetPlayerVirtualWorld(playerid, 1);
						format(str,sizeof(str),"~y~Jailan jos ~r~%d",PlayerData[playerid][JailVreme]);
						GameTextForPlayer(playerid,str,3000,3);
					}

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


Nzm kako mogu da ti pomognem uzmes i up moda i gledas to je najjlakse :D
Es ist nicht alles Gold, was glänzt

Ova provera se nikada ne desava zato sto nikada ne postavis vrednost za JailVreme.
if(PlayerData[playerid][JailVreme] >= 1)

U komandu postavi recimo
PlayerData[playerid][JailVreme] = 1;
Jer koristis tajmer koji traje koliko mu traje jail vreme, i onda kada mu istekne vreme samo postavis to na 0.

Mada ovakav vid tajmera za zatvor je veoma los, jer ako ti skripta nije optimizovana moze da pukne/istekne pre vremena zato sto je ovo sannp i retardiran je. Najbolje bi bilo da uradis komandu jail ovako tj. da dodas ove stvari u komandu.

PlayerData[playerid][JailVreme]  = vreme*60;
ZatvorOdbrojavanje[playerid] = SetTimerEx("OduzmiVremeZatvora", 1000, true, "d", playerid);


ionda u funkciju za oduzimanje vremena dodas nesto ovako

forward public OduzmiVremeZatvora(playerid);
public OduzmiVremeZatvora(playerid)
{
PlayerData[playerid][JailVreme]--;
if(PlayerData[playerid][JailVreme] < 0)
{
//stagod
}
return 1;
}


Izbegavaj globalne tajmere za ovakve stvari, smece su globalni tajmeri.

Napisao sam sve i svasta, manje vise nepovezano je sve tako da ono ako ti nije nesto jasno, pojasnicu ti malo bolje.


“Without requirements or design, programming is the art of adding bugs to an empty text file.” - Louis Srygley

Citat: .буÑ,иган poslato Februar 15, 2018, 13:10:57 POSLE PODNE
Ova provera se nikada ne desava zato sto nikada ne postavis vrednost za JailVreme.
if(PlayerData[playerid][JailVreme] >= 1)

U komandu postavi recimo
PlayerData[playerid][JailVreme] = 1;
Jer koristis tajmer koji traje koliko mu traje jail vreme, i onda kada mu istekne vreme samo postavis to na 0.

Mada ovakav vid tajmera za zatvor je veoma los, jer ako ti skripta nije optimizovana moze da pukne/istekne pre vremena zato sto je ovo sannp i retardiran je. Najbolje bi bilo da uradis komandu jail ovako tj. da dodas ove stvari u komandu.

PlayerData[playerid][JailVreme]  = vreme*60;
ZatvorOdbrojavanje[playerid] = SetTimerEx("OduzmiVremeZatvora", 1000, true, "d", playerid);


ionda u funkciju za oduzimanje vremena dodas nesto ovako

forward public OduzmiVremeZatvora(playerid);
public OduzmiVremeZatvora(playerid)
{
PlayerData[playerid][JailVreme]--;
if(PlayerData[playerid][JailVreme] < 0)
{
//stagod
}
return 1;
}


Izbegavaj globalne tajmere za ovakve stvari, smece su globalni tajmeri.

Napisao sam sve i svasta, manje vise nepovezano je sve tako da ono ako ti nije nesto jasno, pojasnicu ti malo bolje.

Razumeo sam sta si hteo i pomoglo mi je,ali pokusao sam da izmenim malo i da koristim UP sistem i tako radi sa globalnim ali ugl hvala

Citat: .буÑ,иган poslato Februar 15, 2018, 13:10:57 POSLE PODNE
Ova provera se nikada ne desava zato sto nikada ne postavis vrednost za JailVreme.
if(PlayerData[playerid][JailVreme] >= 1)

U komandu postavi recimo
PlayerData[playerid][JailVreme] = 1;
Jer koristis tajmer koji traje koliko mu traje jail vreme, i onda kada mu istekne vreme samo postavis to na 0.

Mada ovakav vid tajmera za zatvor je veoma los, jer ako ti skripta nije optimizovana moze da pukne/istekne pre vremena zato sto je ovo sannp i retardiran je. Najbolje bi bilo da uradis komandu jail ovako tj. da dodas ove stvari u komandu.

PlayerData[playerid][JailVreme]  = vreme*60;
ZatvorOdbrojavanje[playerid] = SetTimerEx("OduzmiVremeZatvora", 1000, true, "d", playerid);


ionda u funkciju za oduzimanje vremena dodas nesto ovako

forward public OduzmiVremeZatvora(playerid);
public OduzmiVremeZatvora(playerid)
{
PlayerData[playerid][JailVreme]--;
if(PlayerData[playerid][JailVreme] < 0)
{
//stagod
}
return 1;
}


Izbegavaj globalne tajmere za ovakve stvari, smece su globalni tajmeri.

Napisao sam sve i svasta, manje vise nepovezano je sve tako da ono ako ti nije nesto jasno, pojasnicu ti malo bolje.
i naravno da unisti tajmer nakon sto izadje

lock ovdje
heroin rap - Moskri u kuci, od sledece lajne glava ce mi puci