Continuar contanto o tempo apos sair do jogo
5 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Continuar contanto o tempo apos sair do jogo
Olá pessoal.
Feliz ano novo.
Bom para quem não tem coisa melhor para fazer é bom está tentando fazer um game... kkk
É o seguinte estou tentando fazer um cronometro regressivo esta funcionando OK, o que preciso é que quando saia do jogo ele apareça o tempo faltante e não o tempo como se tivesse iniciado novamente. procurei no forum mais não achei pelo menos não entendi tipo
https://www.schultzgames.com/t5082-criar-um-contador-producao-de-madeira-por-exemplo-que-conte-mesmo-depois-de-sair-do-game?highlight=salva+contador
meu código do cronometro:
Se alguém puder me ajudar.
Feliz ano novo novamente.
Fico grato pela ajuda .
Feliz ano novo.
Bom para quem não tem coisa melhor para fazer é bom está tentando fazer um game... kkk
É o seguinte estou tentando fazer um cronometro regressivo esta funcionando OK, o que preciso é que quando saia do jogo ele apareça o tempo faltante e não o tempo como se tivesse iniciado novamente. procurei no forum mais não achei pelo menos não entendi tipo
https://www.schultzgames.com/t5082-criar-um-contador-producao-de-madeira-por-exemplo-que-conte-mesmo-depois-de-sair-do-game?highlight=salva+contador
meu código do cronometro:
- Código:
public class ControllerGame : MonoBehaviour {
public Text txtStartBalance;
public Text txtTimeLeft;
public int startBalance;
public int currentBalance;
public string addressCoin="testessadasdadasasd";
public bool isPlaying;
public GameObject panelBgSlave;
public float vTime;
public float seconds;
public float minutes;
public Button bStartRotate;
//CLASS EXTERNAL
private Roda roda;
private void Awake()
{
//LOADS THE LAST VALUE STORED FROM THE GAME
int[] valorRetornados = carregarDados();
currentBalance = valorRetornados[0];
//
roda = FindObjectOfType<Roda>();
}
void Start () {
//INTRODUCES VALUE TEXTVIEW
txtStartBalance.text = currentBalance.ToString();
//
isPlaying = false;
}
// AQUI COMEÇA O QUE INTERESSA
void Update()
{
seconds = Mathf.Floor(vTime % 60); // SEGUNDOS
minutes = Mathf.Floor(vTime / 60); // MINUTOS
if (roda.playing == true)
{
panelBgSlave.SetActive(false);
vTime = 5.0f;
}
else if (roda.playing == false)
{
panelBgSlave.SetActive(true);
// CONDIÇÃO PARA PODER ATIVAR O ROTAÇÃO NOVAMENTE SE O CRONOMETRO FOR 0
if (minutes <= 0 && seconds <=0)
{
bStartRotate.enabled = true;
salvaDados(currentBalance);
if (startBalance > currentBalance)
{
currentBalance = startBalance;
txtStartBalance.text = currentBalance.ToString();
}
// AQUI É CARREGA O VALOR DA ULTIMA JOGADA
int[] valorRetornados =carregarDados();
currentBalance = valorRetornados[0];
}
else
{
bStartRotate.enabled = false;
//start new regressive time
vTime -= Time.deltaTime;
//AQUI SALVA A ULTIMA JOGADA
salvaDados(currentBalance);
}
}
//EXHIBITION OF VALUE UPDATED ON THE LAST ROUND AND TIMETABLE
txtStartBalance.text = startBalance.ToString();
txtTimeLeft.text = minutes.ToString("00") + ":" + seconds.ToString("00");
//
// IF PRESS BUTTON MOBILE BACK APLICATION EXIT
if (Input.GetKey("escape"))
Application.Quit();
}
//METHOD RESPONSE FOR SAVE STATUS CURRENT
public static void salvaDados(int balance)
{
int bl = balance;
PlayerPrefs.SetInt("balance", bl);
Debug.Log(bl + " dados salvos");
}
// METHOD FOR LOAD CURRENT BALANCE
public static int[] carregarDados()
{
int valor1 = PlayerPrefs.GetInt("balance", 0);
Debug.Log(valor1 + "dados carregar");
return new int[] { valor1 };
}
Se alguém puder me ajudar.
Feliz ano novo novamente.
Fico grato pela ajuda .
Jmspp- Avançado
- PONTOS : 2825
REPUTAÇÃO : 6
Idade : 37
Respeito as regras :
Re: Continuar contanto o tempo apos sair do jogo
Você pode usar esse sistema que o marcos fez:
https://www.schultzgames.com/t1333-tutorial-mostrar-data-e-hora-atual-do-computador-em-um-texto
Ele pega a data e hora atual do computador. Para funcionar como você quer é só salvar a data e a hora na hora que o player sair, e quando regressar, em outra variavel pegar a nova data e hora, e fazer uma conta de subtração, e o resultado vai ser o tanto de tempo que ele ficou com o jogo fechado, ai tu faz outra conta de subtração só que com o valor do seu contador!
https://www.schultzgames.com/t1333-tutorial-mostrar-data-e-hora-atual-do-computador-em-um-texto
Ele pega a data e hora atual do computador. Para funcionar como você quer é só salvar a data e a hora na hora que o player sair, e quando regressar, em outra variavel pegar a nova data e hora, e fazer uma conta de subtração, e o resultado vai ser o tanto de tempo que ele ficou com o jogo fechado, ai tu faz outra conta de subtração só que com o valor do seu contador!
rafaelllsd- ProgramadorMaster
- PONTOS : 5241
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: Continuar contanto o tempo apos sair do jogo
Há então até vi esta solução porem ela vai pegar o time do sistema tipo ai a pessoa pode burlar quero que não seja possível isso esqueci de mencionar isso.
Grato.
Grato.
Jmspp- Avançado
- PONTOS : 2825
REPUTAÇÃO : 6
Idade : 37
Respeito as regras :
Re: Continuar contanto o tempo apos sair do jogo
Você pode pegar de uma determinada pagina da internet assim ninguem podendo burlar seu sistema:
https://answers.unity.com/questions/750369/get-real-worlds-time-which-independent-with-device.html
https://answers.unity.com/questions/750369/get-real-worlds-time-which-independent-with-device.html
rafaelllsd- ProgramadorMaster
- PONTOS : 5241
REPUTAÇÃO : 507
Idade : 24
Áreas de atuação : Unity, Audacity, Blender, Gimp, C#, JS, MySQL.
Respeito as regras :
Re: Continuar contanto o tempo apos sair do jogo
Ola mais como implemento isso a conta?
métodos de salva hora e carregar
Fico grato desde já.
métodos de salva hora e carregar
- Código:
public static void salvaHora(string currentTime)
{
string cT = currentTime;
PlayerPrefs.SetString("timeCurrent", cT);
Debug.Log("Hora salva :" + cT);
}
public static string[] carregarhora()
{
string valor1 = PlayerPrefs.GetString("timeCurrent", "");
Debug.Log("carregar hora :" + valor1);
return new string[] {valor1 };
}
- Código:
string[] valorRetornoTime = carregarhora();
TimeSave = valorRetornoTime[0];
txtTimeLeft.text = TimeSave;
- Código:
{
bStartRotate.enabled = false;
//start new regressive time
vTime -= Time.deltaTime;
salvaDados(currentBalance);
}
Fico grato desde já.
Jmspp- Avançado
- PONTOS : 2825
REPUTAÇÃO : 6
Idade : 37
Respeito as regras :
Re: Continuar contanto o tempo apos sair do jogo
Poste os seus scripts completos;
Phph09- Profissional
- PONTOS : 3788
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: Continuar contanto o tempo apos sair do jogo
se o jogo for online era melhor pegar a data e hora que o cara deslogou, sendo que tinha que bater a data com o pc do adm, e o dia do regresso também tinha que bater com o dia que está no pc do adm, assim anularia parcialmente a trapaça.
Re: Continuar contanto o tempo apos sair do jogo
StratEngine:
Dessa forma , teria problemas de fuso horário;
E horarios de verão;
O que ele poderia fazer eh : Pegar a hora do pc do admin, depois verificar a diferencia de fuso-horário, e após isso,e se a diferença for positiva ele soma ao horario do pc do admin, caso for negativa ele subtrai ao horario do pc do admin;
Assim estabeleceria um valor padrão para todos
os computadores;
Mas acho Bem mais facil pegar um horario da net;
Dessa forma , teria problemas de fuso horário;
E horarios de verão;
O que ele poderia fazer eh : Pegar a hora do pc do admin, depois verificar a diferencia de fuso-horário, e após isso,e se a diferença for positiva ele soma ao horario do pc do admin, caso for negativa ele subtrai ao horario do pc do admin;
Assim estabeleceria um valor padrão para todos
os computadores;
Mas acho Bem mais facil pegar um horario da net;
Última edição por Phph09 em Qua Jan 03, 2018 8:04 am, editado 1 vez(es)
Phph09- Profissional
- PONTOS : 3788
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: Continuar contanto o tempo apos sair do jogo
Eu acho que ele não quer falar para o usuário que dia é hoje, mas sim, um sistema de plantação, entendeu?Phph09 escreveu:Dessa forma , teria problemas de fuso horário;
Você planta, espera 1h e depois recolhe xD
Água Sem Hidrogênio- Avançado
- PONTOS : 2750
REPUTAÇÃO : 25
Respeito as regras :
Re: Continuar contanto o tempo apos sair do jogo
Pega hora online já fiz.
a duvida é como pego por exemplo a hora 155000(h,m,s) e faço esse valor que foi salvo quando o cara saiu e quando ele voltar pegar isso menos o contador atual que fiz em uma variável float vTime= 900.0f que é 15 ai ele voltou 3 min depois teria que esta 12 min restante.
A duvida agora é mais o calculo.
Fico no aguardo.
a duvida é como pego por exemplo a hora 155000(h,m,s) e faço esse valor que foi salvo quando o cara saiu e quando ele voltar pegar isso menos o contador atual que fiz em uma variável float vTime= 900.0f que é 15 ai ele voltou 3 min depois teria que esta 12 min restante.
A duvida agora é mais o calculo.
Fico no aguardo.
Jmspp- Avançado
- PONTOS : 2825
REPUTAÇÃO : 6
Idade : 37
Respeito as regras :
Re: Continuar contanto o tempo apos sair do jogo
não adianta so o horário se não tiver a data, é a mesma coisa do cara sair hoje 9:00 e voltar a logar daqui a 3 dias as 10:00 no jogo ele contaria como 1h fora, por isso a necessidade da data também.
Re: Continuar contanto o tempo apos sair do jogo
Nao tem problema no momento só quero conseguir fazer essa conta, data ainda não precisa.
Como faço essa conta ai alguem saca?
grato.
Como faço essa conta ai alguem saca?
grato.
Jmspp- Avançado
- PONTOS : 2825
REPUTAÇÃO : 6
Idade : 37
Respeito as regras :
Re: Continuar contanto o tempo apos sair do jogo
horários de saída e retorno devem estar em segundos
(horário de retorno) - (horário de saída) = (resultado)
se (resultado) = 3600 passou 1h //isso corresponde a 1h em segundos
(horário de retorno) - (horário de saída) = (resultado)
se (resultado) = 3600 passou 1h //isso corresponde a 1h em segundos
Re: Continuar contanto o tempo apos sair do jogo
você pode colocar um if para cada hora ou se preferir, contabilize a hora exata total (h,m,s)stratengine escreveu:horários de saída e retorno devem estar em segundos
(horário de retorno) - (horário de saída) = (resultado)
se (resultado) = 3600 passou 1h //isso corresponde a 1h em segundos
Re: Continuar contanto o tempo apos sair do jogo
Olá pessoal resolvi já o problema de contagem do tempo bom no pegar tempo da internet e converter em segundos fiz:
Courotine:
depois outro método para para fazer a conta da hora salva e da hora retornada:
e chamei ele dentro de uma outra Courotine:
Ainda estou testando mais esta funcionando e quando esta sem conexão com a internet ao sair o tempo não muda volta do jeito que saio exemplo saiu 11:50 voltou sem esta conectado a internet então os segundos ainda vão esta em 11:50 e regredindo, se ele conectar a internet e sair e voltar e tempo vai ficar atualizado corretamente.
Mais resolveu obrigado a todos que deram um help.
Courotine:
- Código:
IEnumerator getTime()
{
WWW www = new WWW("http://blablablalbla/gettime.php");
yield return www;
txtTimeserver.text =www.text;
string timeString = txtTimeserver.text;
//Conversao de string para Timespan para obter valor total da horas em segundos
var tempo = TimeSpan.Parse(timeString);
TimeSave = tempo.TotalSeconds.ToString();
float temp01;
if(float.TryParse(TimeSave, out temp01))
{
temp1 = temp01;
Debug.Log("Convertido");
}
else
{
Debug.Log(" nao Convertido");
}
//TimeSave = tempo.TotalSeconds.ToString();
Debug.Log("Time em seg : " + TimeSave);
}
depois outro método para para fazer a conta da hora salva e da hora retornada:
- Código:
private void SubTimeLeft()
{
int result1, result2;
float result3;
if (int.TryParse(TimeLoad, out result1) )
{
vTimeLoad = result1;
}
if (int.TryParse(TimeSave, out result2))
{
vTimeSave = result2;
}
result3 = vTimeSave - vTimeLoad;
resultTimeOff = result3;
Debug.Log(vTimeSave + " - " + vTimeLoad+" = " + resultTimeOff);
if (loadCronometryReload > resultTimeOff)
{
vTime = loadCronometryReload - resultTimeOff;
Debug.Log("TEMPO FOI CARREGADO" + vTime);
roda.playing = false;
}
else
{
Debug.Log("nao carregar");
}
e chamei ele dentro de uma outra Courotine:
- Código:
IEnumerator getCurretTime()
{
float te = 0.5f;
yield return new WaitForSeconds(te);
rouletteDisable.SetActive(true);
txtTimeLeft.enabled = true;
SubTimeLeft();
}
Ainda estou testando mais esta funcionando e quando esta sem conexão com a internet ao sair o tempo não muda volta do jeito que saio exemplo saiu 11:50 voltou sem esta conectado a internet então os segundos ainda vão esta em 11:50 e regredindo, se ele conectar a internet e sair e voltar e tempo vai ficar atualizado corretamente.
Mais resolveu obrigado a todos que deram um help.
Jmspp- Avançado
- PONTOS : 2825
REPUTAÇÃO : 6
Idade : 37
Respeito as regras :
Tópicos semelhantes
» Desconectar jogador após acabar o tempo de jogo utilizando a rede - Bolt
» Objeto continuar em movimento após tira o dedo da direção
» Manter a última posic de objetos após sair e voltar de cena
» Ativar audio após um tempo
» Carregar Cena após determinado tempo
» Objeto continuar em movimento após tira o dedo da direção
» Manter a última posic de objetos após sair e voltar de cena
» Ativar audio após um tempo
» Carregar Cena após determinado tempo
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos