Jump to content
Unity Insider Forum

Cooldown verändert sich


dewa

Recommended Posts

Hallo zusammen, ich habe folgendes Problem. Ich habe innerhalb des updates() eine cooldown Funktion die einfach von 20s runterzählt bis 0s. Soweit läuft auch alles, aber wenn ich nun z.B die Freundschaftsliste Ingame öffnen springt der Cooldown wieder hoch von z.B 10s auf 12s... Ich weiß absolut nicht wie ich dies beheben kann.

Beim öffnen der freundschaftsliste werden auch keine Parameter für den Cooldown verändert -_-

schon mal vielen dank

Link zu diesem Kommentar
Auf anderen Seiten teilen

	void Update ()
	{
		//Eiweiß float to HH:MM:SS
		if (timer_eiweiß > 0 & shop_auswahl.eiweißvorrat) {
			TimeSpan eiweiß_time = TimeSpan.FromSeconds (timer_eiweiß);
			timer_eiweiß -= Time.deltaTime;
			string niceTime = string.Format ("{0:D2}:{1:D2}:{2:D2}", eiweiß_time.Hours, eiweiß_time.Minutes, eiweiß_time.Seconds);
			slots.Slot_eiweiß_text.text = niceTime;
		} 
		if (timer_eiweiß < 0 & shop_auswahl.eiweißvorrat) {
			shop_auswahl.eiweißvorrat = (false);
			slots.slot ();

		}

	}

Freundschaftsliste

 

//Wenn Freundschaftsliste nicht geöffnet, Lade Daten vom SQL Server
	public void Freunde_aktual()
	{
		if (Freunde_anim.GetCurrentAnimatorStateInfo (0).IsName ("Freunde_slide_in")) {
			freunde_anzeigen ();
		} else {
			laden_symbol.SetActive (true);
			StartCoroutine (Freunde_laden_coro (init_regist.Username, hash_helper.Md5Sum (init_regist.Passwort)));
		}
	}

 

	//Dateien vom SQL Server
	public IEnumerator Freunde_laden_coro(string Username, string Passwort)
	{
		Debug.Log(Username);
		WWWForm form = new WWWForm();

		form.AddField("username", Username);
		form.AddField("passwort", Passwort);

		WWW webRequest = new WWW("http://hosting3381.af923.netcup.net/freunde_laden.php", form);
		yield return webRequest;

		Debug.Log(webRequest.text);

		freunde_laden.anzahl_freunde = 0;
		string[] splitarray = webRequest.text.Split('|');
		freunde_laden.anzahl_freunde = (splitarray.Length) - 1;
		Debug.Log("wieviele freunde? " + freunde_laden.anzahl_freunde);
		freunde_laden.anzahl_freunde_text.text = freunde_laden.anzahl_freunde.ToString()+"/16";

		foreach (Transform child in freunde_laden.ScoreScrollList.transform)
		{
			Destroy(child.gameObject);
		}
		for (int i = 0; i <= (freunde_laden.anzahl_freunde - 1); i++)
		{
			
			GameObject Scorepanel;
			Scorepanel = Instantiate(freunde_laden.ScoreEntryPanel) as GameObject;
			Scorepanel.transform.parent = freunde_laden.ScoreScrollList.transform;
			Scorepanel.transform.localScale = new Vector3(1.03f, 1.03f, 1.03f);
			Transform ThisName = Scorepanel.transform.Find("Name");
			Transform ThisEXP = Scorepanel.transform.Find("Exp");
			Transform ThisLVL = Scorepanel.transform.Find("Level");
			Transform Thisbalken = Scorepanel.transform.Find("EXP_BALKEN");
			Transform Thischar_bild = Scorepanel.transform.Find("char_bild");

			//Freunde Daten zuordnen
			Text EXP_freund_txt = ThisEXP.GetComponent<Text>();
			Text Name = ThisName.GetComponent<Text>();
			Text Level = ThisLVL.GetComponent<Text>();

			//EXP Balken
			Image Balken = Thisbalken.GetComponent<Image> ();
			Image char_bild = Thischar_bild.GetComponent<Image> ();

			Name.text = splitarray[i];
			string Freund = (splitarray[i]);
			StartCoroutine(Freunde_exp(Freund,Level,Balken,char_bild,EXP_freund_txt));
		
		}   
		freunde_anzeigen ();
		ts_vergleichen.suplemmente_prufen ();
	}
	//Wenn Freundschaftsliste nicht geöffnet ist, öffne diese.
    public void freunde_anzeigen()
    {
        if (Freunde_anim.GetCurrentAnimatorStateInfo(0).IsName("Freunde_slide_in"))
        {
            Freunde_anim.SetBool("freunde_klick", false);
        }
        else
        {
            Freunde_anim.SetBool("freunde_klick", true);
			store.beenden_store_gm ();
			shop_auswahl.Info_close ();
        }

		laden_symbol.SetActive (false);

    }

 

Soooo... ich hoffe das ist nicht zu viel Code :wacko:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Wert "Timer_eiweiß" wird jeweils zwei mal gesetzt.

Beim kauf des Ingame Objects wo dann anschließend die Cooldown anfängt.

Oder beim Start des Spieles.


// Beim Ingamekauf einen Timestamp in der Online SQL datenbank speichern und gleichzeitig den Aktuellen Timestamp vom server laden.
public IEnumerator eiweiß_ts_coro(string Username, string Passwort)
	{
		WWWForm form = new WWWForm();
		form.AddField("username", Username);
		form.AddField("passwort", Passwort);

		WWW webRequest = new WWW("http://hosti...........weiß.php", form);
		yield return webRequest;

		if (webRequest.text != null)
		{
			Debug.Log(webRequest.text);
			eiweis_ts = (int.Parse(webRequest.text));
			ts_vergleichen.aktueller_ts=(int.Parse(webRequest.text));
			eiweiß = false;

			meine_daten.Geld = meine_daten.Geld - 25;
			meine_daten.Geld_text.text = meine_daten.Geld.ToString();

			eiweiß_boni_pruf ();
		}
	}

	//Solange der Aktuelle Timestamp+3600 kleiner ist als der Gepeicherte eiweiß Timestamp ist der Cooldown noch am zählen
    //Beim Start des Spiels wird ernaut der Aktuelle und der eiweiß Timestamp vom server abgefragt und diese Funktion ernaut aufgerufen um zu     		überprüfen wieviel Zeit vergangen ist.
	public void eiweiß_boni_pruf()
	{
		if (ts_vergleichen.aktueller_ts < eiweis_ts+3600) {
			eiweißvorrat = (true);
			ts_vergleichen.timer_eiweiß =(eiweis_ts+3600)-ts_vergleichen.aktueller_ts;
			slots.slot ();
		} else {
			eiweißvorrat = (false);
		}

	}

 

Es läuft alles Perfekt, nur wenn ich die Feundschaftsliste  ( "Freunde_aktual()" ) öffne springt der Cooldown halt paar sekunden nach oben.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Problem gelöst, Wenn ich die Freundschaftsliste öffne wird die funktion "supplemente_uberprufen()" aufgerufen, dort wird noch mal abgefragt ob der Cooldown aktiv ist und nimmt die alten gespeicherten Timestamps anstatt neue vom Server anzufragen...

Man kommt ganz schön durcheinander wenn soziemlich alles nur aus timestamps besteht :wacko::wacko:

Danke für deine Hilfe :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...