Jump to content
Unity Insider Forum
Sign in to follow this  
dewa

Cooldown verändert sich

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

Share this post


Link to post
Share on other sites
	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:

Share this post


Link to post
Share on other sites

Bei boolschen Ausdrücken immer && benuten, nicht &.

Ansonsten hast du ausgerechnet den Code nicht gepostet, wo der Wert von "timer_eiweiß" gesetzt wird.

  • Like 1

Share this post


Link to post
Share on other sites

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.

 

Share this post


Link to post
Share on other sites

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 :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×