Text Anzeigen lassen geht nicht ...

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Bobo2040

Betreff: Text Anzeigen lassen geht nicht ...

BeitragMi, Feb 12, 2014 18:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Very Happy
Ich will falls der Ai also der Computer Gegner 450px von meinem Schiff entfernt ist,
das dann für 2sek ein Text ausgegeben wird aber er zeigt ihn nur für 1 Frame an...
Ich habes alles Durchprobiert mit Schleifen und das er Hochzähglt in einer If bedingung
etc. aber iwie will er mir den Text nicht 2sek lang anzeigen
Alle Variablen sind Global daran kanns schonmal nicht liegen Very Happy
BlitzBasic: [AUSKLAPPEN]

Function Flee()
If AiHP > 1 Then
If AiLog=1 Then
;Formel zum berechnen der Entfernung
NewY=Abs(AiY-SpielerY)
NewX=Abs(AiX-SpielerX)
NewZ=Abs(Sqr(NewX^2+NewY^2))

If NewZ=450 Then
ShowText=1
count=1
EndIf
If ShowText=1
If count=1 Then
ShowTextTimer=MilliSecs()+2000
count=0
EndIf
If ShowTextTimer>MilliSecs() Then
AiSchaden=0
SetFont bigFont
Color 255,0,0
Text 320,20,"You flee from NPC!",True,True
SetFont font
EndIf
EndIf
EndIf
EndIf
End Function


So und ich weiß wie man ne Time Funktion macht
BlitzBasic: [AUSKLAPPEN]

Sekunden=2 ; geht auch mit Millisekunden aber egal :D
Wartezeit=MilliSecs()+Sekunden*1000
Print "123"
Repeat

If Wartezeit>MilliSecs() Then
Print "Hallo"
EndIf
Delay 16
Until KeyHit(1)
WaitKey
End

^.^das gibt 2sek lang Hallo in der Console aus Wink
Nur ich habes so ähnlich gemacht brauchte halt noch eine Variable (count)
die den Befehl gibt das ShowTextTimer nen Wert von Millisecs()+2000 bekommt
aber nach der If bedingung wird count auf Null gesetzt das heißt das er den
Timer NICHt wieder erneut setzen soll... nur iwie klappts nicht so wie ich will :/
Der Text wird aber angezeigt ...zwar nur 1 Frame aber das heißt schonmal das
es nicht an ner If Bedingung hängen bleibt...

Mfg

BladeRunner

Moderator

BeitragMi, Feb 12, 2014 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn er Dir den Text in der Konsole für 2 Sekunden anzeigt vermute ich mal das du BlitzPlus benutzt und dann wäre Text Mittel der Wahl Smile
EDIT: Und dann natürlich schön eingebettet in Cls und Flip in der Mainloop. Niemals mehrere davon verwenden Smile
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Bobo2040

BeitragMi, Feb 12, 2014 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Very Happy
Ja das ist mir schon klar mit CLS und FLip nur einmal in der Hs zu benutzen...
aber ich nehme ja im Spiel Text (siehe: Code 1)
Im 2. das war nur damit nicht Leute hier nen TUtorial drunter Posten vonwegen Timer
etc. Very Happy
Das kann ich ja schon aber iwie steh ich aufm Schlauch :/
Mit Print funktionierts in Code 1 auch nicht ...
Mfg
 

Wipffinder

BeitragMi, Feb 12, 2014 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn der Text nur ein Frame lang angezeigt wird heisst das, dass
BlitzBasic: [AUSKLAPPEN]
If ShowTextTimer>MilliSecs() Then
nur ein mal erfüllt ist.

Oder
BlitzBasic: [AUSKLAPPEN]
If ShowText=1

Nur einmal erfüllt ist

Das einzige was hier sein könnte ist, dass ShowTextTimer auf null gesetzt wird oder sonst irgend wie kleiner wird oder ShowText geändert wird.

Zum Testen könntest du ShowTextTimer, ShowText und Millisecs() anzeigen lassen z.B.

BlitzBasic: [AUSKLAPPEN]
Text 0,0,Str(ShowTextTimer)
Text 0,20,Str(MilliSecs())
Text 0,20,Str(ShowText)


...in der Funktion ganz am Anfang
Vielleicht siehst du dann welche Var spinnt
 

Bobo2040

BeitragMi, Feb 12, 2014 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay Very Happy
Ich weiß nicht warum aber aus irgendeinem Grund
gehts jetzt O.o
Noch ne Frage ich will für die Minimap (150px * 125px)
nen Dim Feld machen oder soll ich nen Array machen?
das soll unterteilt werden damit der User auf die Minimap klickt und er dann von Alleine dahinfliegt Very Happy
Mfg
 

Wipffinder

BeitragMi, Feb 12, 2014 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiss jetzt nicht ob ich das richtig verstehe...

...du hast eine kleine Karte irgendwo auf dem Bildschirm
...und klickst auf ein Pixel dieser Minimap
...z.B. Pixel (15/8) von oben links
...nun landest auf der Karte auf dem Tile (15/8)

dazu brauchst du kein Dim Feld. Ermittle einfach die Position der Maus auf der Minimap falls die Maustaste gedrückt wurde
 

Bobo2040

BeitragMi, Feb 12, 2014 20:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja aber
das ist kein RPG oder sowas Very Happy
Das ist so ne Minimap wie bei LoL oder Darkorbit falls dir die Spiele was sagen Very Happy
Und ich will ja was bei lernen Very Happy

DAK

BeitragMi, Feb 12, 2014 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Und dabei ändert sich was?

Eine Minimap ist immer noch eine Minimap. Statt dass du jeden einzelnen Punkt auf der Minimap mit einem Array auf einen Punkt auf der Karte mapst bist du viel besser dran, wenn du die Position auf der Minimap einfach in Weltkoordinaten umrechnest. Und das geht in LoL ganz genau gleich wie in jedem RPG.
Gewinner der 6. und der 68. BlitzCodeCompo

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group