Zaključano

[POMOC] Vreme u zatvoru

Započeo statham.3
pre 8 godina
821
pregleda
9
postova
Ova tema je zaključana. Samo moderatori i administratori mogu odgovarati.
Lazar Milojevic
Kingpin
pre 8 godina
Skripta koju koristim:Hard Core by Delic(UP)
Detaljan opis problema:Hocu da promenim vreme kad pd uhapsi nekoga na koliko sekudni da ide i to kako da promenim
Dio skripte://
Neke slike/video za lakse dobivanje pomoci(neobavezno)://
Stelioz
Underboss
pre 8 godina
Posalji mi celu komandu /uhapsi ili /arrest ne znam koja je komanda u modu.
AndroCorleone
OG Legend
pre 8 godina
Tu se koriste milisekunde, nadji timer gdje pise koliko vremena je igrac u zatvoru i promjeni, 1000 milisekundi je 1 sekunda pa ti racunaj.(valjda sam te shvatio na sta mislis)
cadilab
Administrator
pre 8 godina
evo snippet kako bi trebalo izgledati, nemoj ovo kopirati vec radi po ovome, pisem sa posla ne znam ni jel radi
enum PLAYER_INFO_DATA {

bool:arrested, // varijabla koja cuva informacije o hapsenju
timeCounter // varijabla koja cuva vreme u zatvoru
}
new PlayerInfo;

public OnPlayerConnect(playerid) {
PlayerInfo = false; // stavlja varijablu na negativu
return true;
}

public OnGameModeInit()
{
SetTimer("globalTimer", 1000, true); // postavlja globalni timer koji se izvrsava svake sekunde
return true;
}

command(arrest, playerid, params[]) {

new id,
min, string;

if(sscanf(params, "ui", id, min)) return SendClientMessage(playerid, -1, "Koristi: /arrest [player id] ") // proverava parametre
if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "Id nije ispravan"); // proverava dal je id ispravan
if(PlayerData) return SendClientMessage(playerid, -1, "Igrac je vec zatvoren"); // proverava dal je igrac zatvoren

PlayerData = true; // postavlja varijablu na pozitivnu
PlayerData = min*60; // ovo uzima minute i pretvara u sekunde, 2 min = 120 sek

format(string, sizeof(string), "Stavljeni ste u zatvor na %d minuta.", min);
SendClientMessage(id, -1, string); // formatira i salje poruku
return true;
}

public globalTimer()
{
foreach(new i : Player) { // petlja koja ide kroz sve igrace
if(PlayerInfo) { // provera da li je jedan od igraca uhapsen i izvrsava funkciju na tom igracu (ukoliko ima vise za svakog posebno)
if(PlayerInfo > 0) // ukoliko je vreme vece od 0 >
{
PlayerInfo --; // smanjujemo vreme
}
else // else = ako je vreme 0 ili manje
{
PlayerInfo = 0; // resetujemo, tj, stavljamo na 0
PlayerInfo = false; // postavljamo varijablu uhapsen na negativnu

SendClientMessage(i, -1, "Zatvorska kazna je prosla, sada ste slobodni."); // ispisujemo poruku
}
}
}
return true;
}
expressoboy123
Godfather
pre 8 godina
1000 je jedna sekunda pa ti izracunaj koliko tebi treba 🙂
Rax_King
Godfather
pre 8 godina
Cadilab wrote on May 19, 2017, 11:29 am:
evo snippet kako bi trebalo izgledati, nemoj ovo kopirati vec radi po ovome, pisem sa posla ne znam ni jel radi
enum PLAYER_INFO_DATA {

bool:arrested, // varijabla koja cuva informacije o hapsenju
timeCounter // varijabla koja cuva vreme u zatvoru
}
new PlayerInfo;

public OnPlayerConnect(playerid) {
PlayerInfo = false; // stavlja varijablu na negativu
return true;
}

public OnGameModeInit()
{
SetTimer("globalTimer", 1000, true); // postavlja globalni timer koji se izvrsava svake sekunde
return true;
}

command(arrest, playerid, params[]) {

new id,
min, string;

if(sscanf(params, "ui", id, min)) return SendClientMessage(playerid, -1, "Koristi: /arrest [player id] ") // proverava parametre
if(id == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "Id nije ispravan"); // proverava dal je id ispravan
if(PlayerData) return SendClientMessage(playerid, -1, "Igrac je vec zatvoren"); // proverava dal je igrac zatvoren

PlayerData = true; // postavlja varijablu na pozitivnu
PlayerData = min*60; // ovo uzima minute i pretvara u sekunde, 2 min = 120 sek

format(string, sizeof(string), "Stavljeni ste u zatvor na %d minuta.", min);
SendClientMessage(id, -1, string); // formatira i salje poruku
return true;
}

public globalTimer()
{
foreach(new i : Player) { // petlja koja ide kroz sve igrace
if(PlayerInfo) { // provera da li je jedan od igraca uhapsen i izvrsava funkciju na tom igracu (ukoliko ima vise za svakog posebno)
if(PlayerInfo > 0) // ukoliko je vreme vece od 0 >
{
PlayerInfo --; // smanjujemo vreme
}
else // else = ako je vreme 0 ili manje
{
PlayerInfo = 0; // resetujemo, tj, stavljamo na 0
PlayerInfo = false; // postavljamo varijablu uhapsen na negativnu

SendClientMessage(i, -1, "Zatvorska kazna je prosla, sada ste slobodni."); // ispisujemo poruku
}
}
}
return true;
}


Global timer?
cadilab
Administrator
pre 8 godina
pa predpostavljam da mu vec tako vreme dodaje/oduzima u global timeru, sto da ne, samo modifikuje.
Rax_King
Godfather
pre 8 godina
SetTimerEx je bolji nego Global timer + loop (za veci broj igraca)
cadilab
Administrator
pre 8 godina
Nebitno je to.
Tj, zavisi koliko koda imas u globalnom timeru i da li se izvrsava po grupama ili po igracu.
Istina je da je bolje imati vise tajmera sa manje koda nego manje tajmera sa vise koda.

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava