[B3D]Problem mit Gegner (GELÖST)

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Prometx

Betreff: [B3D]Problem mit Gegner (GELÖST)

BeitragDo, Mai 15, 2008 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi leute.
Ich hab mal wieder ein problem bei meinem spiel,also genauer gesagt mit meinen gegnern.
ich hab mit types gegner erstelle(zombies^^) also ich habe einen Type der Zombie heist und eine function die
zombies erstellt,man muss nur die function aufrufen und die gewünschten koordinaten eingeben.
jetzt geht soweit alles außer das wenn ich einen der zombies töte(animation und function hab ich)
alle sterben Confused
ich würde mit ja denken des liegt daran das alle den selben namen haben oder selben type,nur hab ich das zum teil aus einem anderen spiel,von dem ich die source habe,und bei dem gehts.-->die gegner sterben einzelln ,welche getötet wurden eben.

hier der type:
Code: [AUSKLAPPEN]
Type Zombie
Field s ; state
Field ent
Field p_x#,p_y#,p_z#               ;Position des Zombies
Field s_x#,s_y#,s_z#               ;Scalierung des Zombies
Field life                         ;Leben des Zombie
Field dist#                        ;distance zwischen Zombie und Figur
Field anim                         ;Aktuelle Animation
Field walk1,walk2,defen1,defen2,inBack,twit,die,kick,punch,butt,idle1,idle2 ; Animationen
Field tex                          ; texture
Field hit                          ; Flag for being hit
Field entype                       ; EntityType des zombies
Field entradius#                   ; EntityRadius des Zombies
Field joint22
End Type                           ;Ende des Types


und hier die function zum erstellen des zombies
Code: [AUSKLAPPEN]

;Hier erstelle ich die Zombies indem ich die createZombie function aufrufe:
createZombie(90,0,-10)
createZombie(90,0,-20)
createZombie(90,0,-30)
createZombie(90,0,-40)
;-------------------------------------------------------------------------------------------------

Function createZombie(x,y,z)
p.zombie = New zombie
p\ent = LoadAnimMesh("gfx\\zombie.b3d")
p\s = herumlaufen
p\p_x = x
p\p_y = y
p\p_z = z
p\s_x =0.4
p\s_y =0.4
p\s_z =0.4
p\life = 100
p\dist = 0
p\walk1 = ExtractAnimSeq(p\ent,2,20)
p\walk2 = ExtractAnimSeq(p\ent,22,36)
p\defen1 = ExtractAnimSeq(p\ent,38,47)
p\defen2 = ExtractAnimSeq(p\ent,48,57)
p\inBack = ExtractAnimSeq(p\ent,59,75)
p\twit = ExtractAnimSeq(p\ent,78,88)
p\die = ExtractAnimSeq(p\ent,91,103)
p\kick = ExtractAnimSeq(p\ent,106,115)
p\punch = ExtractAnimSeq(p\ent,117,128)
p\butt = ExtractAnimSeq(p\ent,129,136)
p\idle1 = ExtractAnimSeq(p\ent,137,169)
p\idle2 = ExtractAnimSeq(p\ent,170,200)
p\tex = zombietext
p\entype = zombie_col
p\entradius = 3
p\joint22 = FindChild(p\ent,joi$)

p\dist = EntityDistance(p\ent,figur)

EntityType p\joint22,joint_zombie
EntityRadius p\joint22,3
EntityTexture p\ent,zombietext
EntityType p\ent, p\entype
EntityRadius p\ent, p\entradius
EntityPickMode p\ent,2
ScaleEntity p\ent, p\s_x,p\s_y,p\s_z
PositionEntity p\ent, p\p_x,p\p_y,p\p_z
RotateEntity p\ent, 0,180,0

End Function


hoffe ihr könnt mir weiterhelfen
PS:eventuell kann ich ja auch, die source des spieles von dem ich den grundaufbau der function habe,uploaden.

mfg Prometx
  • Zuletzt bearbeitet von Prometx am Di, Mai 20, 2008 14:48, insgesamt einmal bearbeitet

Tankbuster

BeitragDo, Mai 15, 2008 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wie löschst du die zombies, wenn sie sterben? Das wäre auch ganz interessant, denn daran wirds liegen.
Twitter
Download Jewel Snake!
Windows|Android
 

Prometx

BeitragDo, Mai 15, 2008 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
das is die function mit der ich wenn das leben des zombies auf 0 gesunken is der zombie stirbt(die animation)
davor wird natürlich mit einer collision das leben auf 0 veringert und diese function aufgerufen.

Code: [AUSKLAPPEN]

Function zombie_die()
For p.zombie = Each zombie
If  p\life = 0 Then
ExtractAnimSeq p\ent,106,115
Animate p\ent,3,0.3,7,1
die = 1
EndIf
Next
End Function

The_Nici

BeitragDo, Mai 15, 2008 19:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würd ja anstatt "For p.zombie= Each zombie" "For dead.zombie=Each zombie" nehmen.
 

Prometx

BeitragDo, Mai 15, 2008 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
ja ist schöner bringt aber auch nichts sterben trotzdem alle:-(
weis den keiner was der fehler is?
oder wie macht ihr des wenn ihr viele gegner erstellen wollt,sie aber nicht alle einzeln laden und scallieren usw wollt?

The_Nici

BeitragDo, Mai 15, 2008 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Was macht die Variable "die" genau?
 

Prometx

BeitragDo, Mai 15, 2008 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
^^die = sterben auf englisch^^
also die brauch ich damit dann der zombie nicht mehr bewegt wird und so weiter
es kann doch am type liegen oder so?(hab noch ned so viel mit types gemacht)
wie machst du so etwas-->also relativ viele npcs,usw erstellen?

Xeres

Moderator

BeitragDo, Mai 15, 2008 19:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn "die" nicht für einen bestimmten Typeeintrag gillt ("p\die"), scheint er für alle Einträge zu gelten; Global deklariert? Wo wird "die" abgefragt?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Prometx

BeitragDo, Mai 15, 2008 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
is global deklariert,muss das in den type hinein?

Xeres

Moderator

BeitragDo, Mai 15, 2008 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Jopp, "die" sollte als field deklariert werden; dann löschst du in der aktualisierungsschleife ganz zum schluss alle mit "die=1" markierten Einträge... Wenn du sie löschst und nochmal auf die Variable zuzugreifen versuchst, gibts u.U. Fehler.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Prometx

BeitragDo, Mai 15, 2008 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
ok alles gemacht und trotzdem gehts nicht,is irgendwie komich,wie erstellt ihr viele gegner?

Xeres

Moderator

BeitragDo, Mai 15, 2008 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Poste mal die Updateschleife für die Zombies, da wird das Problem liegen.
Viele Gegner erstellen? Die create-Funktion oft genug aufrufen?!
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Prometx

BeitragDo, Mai 15, 2008 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
ok weis ned ob man des hier soll aber ich poste mal meinen ganzen code.

Code: [AUSKLAPPEN]
;--------------------
;RPG von Prometx
;
;Ja is leider noch sehr unübersichtlich^^
;----------------------
Const gw=800
Const gh=600

Graphics3D 800,600,32,2

AppTitle  "RPG"
SetBuffer BackBuffer()


;------------------
;Lights
;===============
AmbientLight 127,127,127
light = CreateLight()
RotateEntity light, 90,0,0

;Die Framestarts für die animation
Global frame1 = 2
Global frame2 = 14
;--------------------
;Timer
;--------------

Global counter = 0
Global drehen = 0

;-------------
;Random
;----------------------
Global angriff1 = Rand(1,3)
;--------------------------------
;Leben
Global life =10000
;-----------------------
Global zombie_col = 1
Global zwerg_col =2
Global haus_col =3
Global zombie2_col = 4
Global axt_col = 5
Global axt2_col = 6
Global joint_zombie = 7



Global txt$               ;Picktest
Global txt2$              ;Entfernung

Global zombie_leben$

Global txtchild$           ; child^^

Global joi$ = "Joint22"
Global anima = walk2
Global state$ = "herumlaufen"
Global leben_zombie$ = ""
;Figur
Global figur = LoadAnimMesh("gfx\\zwerg.b3d")
ScaleEntity figur,0.09,0.09,0.09
MoveEntity figur ,px,py,10
EntityType figur,zwerg_col
EntityRadius figur,2
EntityPickModeRec figur ,1




Global hit$ = "hit"
Global axtend$ = "end"
Global childaxt = FindChild(figur,hit$)
txtchild$ = "children:" +EntityName(childaxt)
EntityType childaxt,axt_col
EntityRadius childaxt,4
Global childaxt2 = FindChild(figur,axtend$)
EntityType childaxt2,axt2_col
EntityRadius childaxt2,5


;Zombie type
;--------------------------------
Type Zombie
Field s ; state
Field ent
Field p_x#,p_y#,p_z#               ;Position des Zombies
Field s_x#,s_y#,s_z#               ;Scalierung des Zombies
Field life                         ;Leben des Zombie
Field dist                       ;distance zwischen Zombie und Figur
Field anim                         ;Aktuelle Animation
Field walk1,walk2,defen1,defen2,inBack,twit,die,kick,punch,butt,idle1,idle2 ; Animationen
Field tex                          ; texture
Field hit                          ; Flag for being hit
Field entype                       ; EntityType des zombies
Field entradius#                   ; EntityRadius des Zombies
Field joint22
Field tot
Field kampf1
Field verfolgen1
End Type                           ;Ende des Types

Global zombietext = LoadTexture("gfx\\zombietext2.jpg")
createZombie(90,0,-10)
createZombie(90,0,-20)
createZombie(90,0,-30)
createZombie(90,0,-40)

For p.zombie = Each zombie
RotateEntity p\ent,0,-100,0
Next



;Sound
;--------------
Global sound = LoadSound("Musik\\sound3.mp3")
LoopSound sound
channel = PlaySound(sound)

;Tower
Global tower = LoadMesh("gfx\\tower.3ds")
MoveEntity tower ,70,0,-80
ScaleEntity tower ,0.1,0.1,0.1
;-------------------------
;Haus
Global haus = LoadMesh("gfx\\haus.3ds")
MoveEntity haus,40,60,0
ScaleEntity haus,0.09,0.09,0.09
TurnEntity haus,0,0,5
EntityRadius haus,50
EntityType haus,haus_col

;Monster laden
;--------------------------------

Global monster = LoadAnimMesh("gfx\\monster\\monster.b3d")
MoveEntity monster,10,50,0
ScaleEntity monster,0.04,0.04,0.04
Global monstertext1 = LoadTexture("gfx\\monster\\beast1.jpg")
Global monstertext2 = LoadTexture("gfx\\monster\\beast2.jpg")
Global monstertext3 = LoadTexture("gfx\\monster\\beast3.jpg")
Global monstertext4 = LoadTexture("gfx\\monster\\beast4.jpg")
Global monstertext5 = LoadTexture("gfx\\monster\\beast5.jpg")
Global monstertext6 = LoadTexture("gfx\\monster\\spec_beast.jpg")
Global monstertext7 = LoadTexture("gfx\\monster\\n_beast.png")
EntityTexture monster,monstertext1
EntityTexture monster,monstertext2
EntityTexture monster,monstertext3
EntityTexture monster,monstertext4
EntityTexture monster,monstertext5
;EntityTexture monster,monstertext6        sieht anders aus^^
;EntityTexture monster,monstertext7        ----------"""""--------------
EntityPickModeRec monster ,1



Function where_to_turn(source_pivot,target_pivot) ;by semar
temp = CreatePivot()
PositionEntity temp,EntityX(source_pivot),EntityY(source_pivot),EntityZ(source_pivot)
PointEntity temp,target_pivot
s = Floor(EntityYaw(source_pivot))
t = Floor(EntityYaw(temp))   
FreeEntity (temp) 
If s = t Then
   Return 0
EndIf
If s < 0 Then s = 360 + s
If t < 0 Then t = 360 + t
If Abs(s-t) > 180 Then
   If s > t Then
   Return 1
   Else
   Return -1
   EndIf
Else
   If s > t Then
   Return -1
   Else
   Return  1
   EndIf
EndIf
End Function





;---------------------------------

;Kamerafahrt
Global Piv=CreatePivot()

Global Kam=CreateCamera(figur)
CameraViewport(Kam,700,0,50,50)
PositionEntity Kam,-10, 60, -5
;----------------------------------


;===============
;Camera
;===============
Global campiv= CreatePivot()
Global cam = CreateCamera(figur)
CameraRange cam ,1,3000

CameraViewport(cam,0,0,800,600)

CameraFogMode cam,1
CameraFogRange cam,60,5000
MoveEntity cam, 0, 80, -100
;---------------------------------

;water
water=CreatePlane()

watertext=LoadTexture ("gfx\\wasser.bmp",4)

EntityTexture water,watertext

ScaleTexture watertext,100,100

MoveEntity water,0,-5,0

EntityAlpha water,0.6

;---------------------------------
;Function sky
;-------------------------
loadskybox("gfx\\sky.bmp",cam)
Function LoadSkyBox( file$ ,cam)
   Local m,b,s,tex

   m=CreateMesh(cam)
   ;front face
   b=CreateBrush()
   Tex = LoadTexture(file$ ,1+256)
 
   BrushTexture b,Tex
   s=CreateSurface( m,b )
   AddVertex s,-1,+1,-1,0,0:AddVertex s,+1,+1,-1,1,0
   AddVertex s,+1,-1,-1,1,1:AddVertex s,-1,-1,-1,0,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b
   ;right face
   b=CreateBrush()
   Tex = LoadTexture(file$,1+256)


   BrushTexture b,Tex
   s=CreateSurface( m,b )
   AddVertex s,+1,+1,-1,0,0:AddVertex s,+1,+1,+1,1,0
   AddVertex s,+1,-1,+1,1,1:AddVertex s,+1,-1,-1,0,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b
   ;back face
   b=CreateBrush()
   Tex = LoadTexture(file$,1+256)


   BrushTexture b,Tex
   s=CreateSurface( m,b )
   AddVertex s,+1,+1,+1,0,0:AddVertex s,-1,+1,+1,1,0
   AddVertex s,-1,-1,+1,1,1:AddVertex s,+1,-1,+1,0,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b
   ;left face
   b=CreateBrush()
   Tex = LoadTexture("gfx\\Top5.jpg",1+256)


   BrushTexture b,Tex
   s=CreateSurface( m,b )
   AddVertex s,-1,+1,+1,0,0:AddVertex s,-1,+1,-1,1,0
   AddVertex s,-1,-1,-1,1,1:AddVertex s,-1,-1,+1,0,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b
   ;top face
   b=CreateBrush()
   Tex = LoadTexture(file$,1+256)


   BrushTexture b,Tex
   s=CreateSurface( m,b )
   AddVertex s,-1,+1,+1,0,1:AddVertex s,+1,+1,+1,0,0
   AddVertex s,+1,+1,-1,1,0:AddVertex s,-1,+1,-1,1,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b
   ;bottom face   
   b=CreateBrush()
   Tex = LoadTexture(file$,1+256)
 

   BrushTexture b,Tex
   s=CreateSurface( m,b )
   AddVertex s,-1,-1,-1,1,0:AddVertex s,+1,-1,-1,1,1
   AddVertex s,+1,-1,+1,0,1:AddVertex s,-1,-1,+1,0,0
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b
   
   ScaleMesh m,10,10,10
   FlipMesh m
   EntityOrder m,(2^29)
   EntityFX m,1
   EntityBlend m,1
   Return m
End Function
;===============
;Terrain
;===============
Global terrain = LoadTerrain("gfx\\heightmap_256.bmp")
TerrainShading terrain,True
TerrainDetail terrain,2000,True
ScaleEntity terrain, 15,60,15
PositionEntity terrain,-1000,-10,-1000
ter_tex = LoadTexture("gfx\\terraintextur.bmp")
ScaleTexture ter_tex,2,2
EntityTexture terrain,ter_tex,0,0
ter_tex2 = LoadTexture("gfx\\mossyground.bmp")
ScaleTexture ter_tex2,2,2
TextureBlend ter_tex2,2
EntityTexture terrain,ter_tex2,0,1
ter_tex3 = LoadTexture("gfx\\terraintextur.bmp")
ScaleTexture ter_tex3,4,4
TextureBlend ter_tex3,3
EntityTexture terrain,ter_tex3,0,2

PositionEntity campiv ,-30,19,330

ExtractAnimSeq figur, frame1,frame2

seq=1
HidePointer()


     
;Kollisionen!!!!!!!!!!!!!!!!!!!!!
;---------------------------------------

Collisions zwerg_col,zombie_col,3,1
Collisions zwerg_col,haus_col,2,1
Collisions zombie_col,zwerg_col,3,1
Collisions zwerg_col,zombie2_col,3,1
Collisions zombie2_col,zwerg_col,3,1
Collisions axt_col,zombie_col,3,1
Collisions axt2_col,zombie_col,3,1
Collisions zombie_col,axt_col,3,1
Collisions zombie_col,axt2_col,3,1
Collisions joint_zombie,zwerg_col,3,1
Collisions zwerg_col,joint_zombie,3,1

;---------------------------------------------




;----------------------------------
;----------------------------------------------------------------------------
;Zombie animieren,welche animaion,kommt auf den status(=state) des Zombies an
;----------------------------------------------------------------------------
Function zombie_animieren()
For p.zombie = Each  zombie
If Not Animating(p\ent) Then
If  p\kampf1 = 0 And p\tot = 0 And p\verfolgen1 = 0 Then
ExtractAnimSeq p\ent,2,20
Animate p\ent,1,.2,2,1


EndIf
EndIf
If p\tot = 0 And p\kampf1 = 0 And p\verfolgen1 = 0 Then
MoveEntity p\ent,0,0,-0.06
TurnEntity p\ent,0,0.08,0
EndIf
Next
End Function


;----------------------------------------------------------------------------
;Zombie greift an!
;----------------------------------------------------------------------------
Function zombie_angriff()
For p.zombie = Each  zombie
If p\kampf1 = 0 And p\tot = 0 And EntityDistance(p\ent,figur) < 30 Then
ExtractAnimSeq p\ent,106,115
Animate p\ent,1,0.3,8,1
p\kampf1 = 1
p\verfolgen1 = 1
leben_zombie = "Life(Zombie) 100\" + p\life

EndIf
Next
End Function

;Leben des Zombies
;-----------------------------------------
Function zombie_life()
For p.zombie = Each zombie
If p\tot = 0 And p\kampf1 = 1 Then
zombie_leben = "Zombie - Leben :" + p\life
EndIf
Next
End Function

;----------------------------------------




;Test Kollision
Function EntityPickModeRec(Entity,geometrie,verdecken=1)
   If Not Entity Then Return
   ; Wenn es das Entity nicht gibt, die Funktion garnicht erst ausführen
   
   EntityPickMode Entity,geometrie,verdecken     
   ;Ganz normal Pickmode Setzen
   
   For i = 0 To CountChildren(Entity)
      ;Geht alle Childs durch
      ent = GetChild(Entity,i)
      ;Child 'kriegen'
      EntityPickModeRec(ent,geometrie,verdecken)
      ;Die selbe Funktion von eben nochmal auf alle Childs ausführen
   Next
; Ich hoffe du versteht das jetz^^
End Function



Function zombie_die()
For p.zombie = Each zombie
If  p\life = 0 Then
ExtractAnimSeq p\ent,106,115
Animate p\ent,3,0.3,7,1
p\tot = 1
EndIf
Next

End Function


;Distance prüfen
;-------------------------------------------------------------------
Function distance_zombie()
For p.zombie = Each zombie
If p\dist < 30 Then
zombie_angriff()
EndIf
If EntityDistance(p\ent,figur) > 100 And p\tot = 1  Then
HideEntity p\ent

EndIf
Next
End Function

;Schauen wo figur ist
;Zombies verfolgen den spieler
Function zombie_verfolgung()
For p.zombie = Each zombie
If p\verfolgen1 = 1 And p\tot = 0 Then
MoveEntity p\ent, 0,0,-0.2
oset = where_to_turn(p\ent,figur)
oset = - oset
TurnEntity p\ent,0,oset ,0 
EndIf
Next
End Function



;--------------------------------------------------------------------


;--------------------------------------------------
;--------------------------------------------------
;========================
;                  MAIN LOOP
;========================

While Not KeyHit(1)
counter = counter + 1
zombie_animieren()
zombie_verfolgung()
zombie_die()
distance_zombie()
updategame()


;Zwerg schlagen
If MouseHit(1) Then
ExtractAnimSeq figur, 112, 126
Animate figur,3,.2,2,1
EndIf

 
;-------------------------

;-------------------------------------

If Not Animating( figur) Then
If  KeyDown (200)  Then
      Animate figur,3,.2,seq,1
EndIf
EndIf
If KeyDown(208) Then
Animate figur,0,.2,0,1
EndIf

For p.zombie = Each zombie
p\dist  = EntityDistance(p\ent,figur)
Next
;Kamerafahrt
;TurnEntity Piv,0,-0.1,0.010
;MoveEntity Piv,0,-0.009,0
;-------------------------------------------------------
;-------------------------------------------------------
 
UpdateWorld
RenderWorld
Text 50,50,"Die = " + die
Text 50,60,"Timer : " + counter
;Anzeigen
Color 255,0,0
   Oval gw/2-5,gh/2-5,10,10,0
   Color 0,0,255
   Text 20,20,txt
;------------------------
If EntityCollided(childaxt,1) Then
If MouseDown(1) Then
Text 100,100,"Kollision(Axt)"
For p.zombie = Each zombie
p\life = p\life -10
zombie_life()
zombie_angriff()
Next
EndIf
EndIf

Text 650,12,zombie_leben


For p.zombie = Each zombie
If p\kampf1 = 1 And p\tot = 1 Then
Text 600,12,leben_zombie$
EndIf
Next
For p.zombie = Each zombie
If EntityCollided(p\joint22,2) Then
Text 150,150,"Kollision(joint22)"
life = life - Rand(1,5)
EndIf

Next
Text 90,90,txtchild$

Text 120,12,txt2
For p.zombie = Each zombie
wert = MeshesIntersect(figur,p\ent)
If wert =1  And die = 0 Then
Text 200,12,"Kollision"

EndIf
Next
 

Text 12,12,"Life 100\" + life/100



Flip

Wend




Function updategame()
; Strafing..

        If KeyDown(205) Then  TurnEntity figur,0,-3,0
        If KeyDown(203) Then TurnEntity figur,0,3,0
; Move the player backwards and forwards...
       If KeyDown(200)  MoveEntity figur,0,0,0.3
      If KeyDown(208)  MoveEntity figur,0,0,-0.1
      If MouseDown(2) Then
   RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),EntityYaw(cam)-MouseXSpeed(),0
   EndIf

MoveMouse 400,300


;x#=EntityX(cam)
;y#=EntityY(cam)
;z#=EntityZ(cam)
;terra_y#=TerrainY(terrain,x#,y#,z#)+ 5
;PositionEntity cam,x#,terra_y#,z#

x#=EntityX(figur)
y#=EntityY(figur)
z#=EntityZ(figur)
terra_y#=TerrainY(terrain,x#,y#,z#)-0.01
PositionEntity figur,x#,terra_y#,z#

For p.zombie = Each zombie
x2#=EntityX(p\ent)
y2#=EntityY(p\ent)
z2#=EntityZ(p\ent)
terra_y2#=TerrainY(terrain,x2#,y2#,z2#)-0.01
PositionEntity p\ent,x2#,terra_y2#,z2#
Next

x3#=EntityX(monster)
y3#=EntityY(monster)
z3#=EntityZ(monster)
terra_y3#=TerrainY(terrain,x3#,y3#,z3#)-0.01
PositionEntity monster,x3#,terra_y3#,z3#


x4#=EntityX(haus)
y4#=EntityY(haus)
z4#=EntityZ(haus)
terra_y4#=TerrainY(terrain,x4#,y4#,z4#)-0.01
PositionEntity haus,x4#,terra_y4#,z4#



x5#=EntityX(tower)
y5#=EntityY(tower)
z5#=EntityZ(tower)
terra_y5#=TerrainY(terrain,x5#,y5#,z5#)+100
PositionEntity tower,x5#,terra_y5#,z5#





End Function
 
;===============
;  Create Zombie
;===============
;Create a Zombie # 10
Function createZombie(x,y,z)
p.zombie = New zombie
p\ent = LoadAnimMesh("gfx\\zombie.b3d")
p\s = herumlaufen
p\p_x = x
p\p_y = y
p\p_z = z
p\s_x =0.4
p\s_y =0.4
p\s_z =0.4
p\life = 100
p\dist = 0
p\walk1 = ExtractAnimSeq(p\ent,2,20)
p\walk2 = ExtractAnimSeq(p\ent,22,36)
p\defen1 = ExtractAnimSeq(p\ent,38,47)
p\defen2 = ExtractAnimSeq(p\ent,48,57)
p\inBack = ExtractAnimSeq(p\ent,59,75)
p\twit = ExtractAnimSeq(p\ent,78,88)
p\die = ExtractAnimSeq(p\ent,91,103)
p\kick = ExtractAnimSeq(p\ent,106,115)
p\punch = ExtractAnimSeq(p\ent,117,128)
p\butt = ExtractAnimSeq(p\ent,129,136)
p\idle1 = ExtractAnimSeq(p\ent,137,169)
p\idle2 = ExtractAnimSeq(p\ent,170,200)
p\tex = zombietext
p\entype = zombie_col
p\entradius = 3
p\joint22 = FindChild(p\ent,joi$)
p\tot = 0
p\kampf1 = 0
p\verfolgen1 = 0
p\dist = 0

EntityType p\joint22,joint_zombie
EntityRadius p\joint22,3
EntityTexture p\ent,zombietext
EntityType p\ent, p\entype
EntityRadius p\ent, p\entradius
EntityPickMode p\ent,2
ScaleEntity p\ent, p\s_x,p\s_y,p\s_z
PositionEntity p\ent, p\p_x,p\p_y,p\p_z
RotateEntity p\ent, 0,180,0

End Function


wenn man nicht den ganzen code posten soll sondern die source datei hochladen soll dann sagt es mir bitte^^

hoffe du wirst schlau aus dem code und kannst mir einen rat geben.

mfg Prometx

Eingeproggt

BeitragDo, Mai 15, 2008 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
ähm.. Darf cih kurz nen kleinen Einwand bringen, der nix mit dem Problem an sich zu tun hat?
Warum schreibst du jeden "\" doppelt? Wenn cih das mach, würd er erst gar nicht die Texturen usw finden und nen Error machen...

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

Prometx

BeitragDo, Mai 15, 2008 21:42
Antworten mit Zitat
Benutzer-Profile anzeigen
bei mir geht des mit dem doppelten,ka,hab ich von einer anderen programmiersprache(c#) noch übernommen Very Happy

Xeres

Moderator

BeitragDo, Mai 15, 2008 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist wohl ein 1A Beispiel für schlecht strukturierten code Confused
Funktionen sollte man nicht frei umverteilen sondern vor oder hinter der Hauptschleife deponieren, geeordnet nach ihrer Funktion. Ich vermute, man könnte einige Funktionen zu einer zusammen fassen...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Prometx

BeitragDo, Mai 15, 2008 21:54
Antworten mit Zitat
Benutzer-Profile anzeigen
jop is wirklich unstrukturiert-->werde des noch machen wenns mal vom grund her funktioniert^^
aber jetzt werde ich den code mal zum teil umschreiben,-->ich bau einen status beim zombie ein,-->damit fallen die ganzen "zombie_angriff" usw weg.
werde mich dann melden wenns dann immer noch nicht geht Very Happy
danke erst mal.
 

Prometx

BeitragFr, Mai 16, 2008 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
sooo habs jetzt koomplet um geschrieben aber leider gehts immer noch nicht Sad
soll ich die ganze source(mit bildern usw hochladen?) damit sich das mal wer besser anschauen kann,wenn ja dann wo soll ich des hochladen?

so hier mal der neue code^^


Code: [AUSKLAPPEN]
;------------------------------------------------------------------------
;------------------------------------------------------------------------
;RPG by Prometx
;Is jetzt sehr umgeschrieben aber es geht immer noch nicht wirklich :-((
;------------------------------------------------------------------------
;------------------------------------------------------------------------
Const gw=800
Const gh=600

Graphics3D 800,600,32,2


AppTitle  "RPG by Prometx"

SetBuffer BackBuffer()

;===============
; Globals
;===============
Global frame1 = 2
Global frame2 = 14
Global counter = 0
Global angriff1 = Rand(1,3)
;--------------------------------
;Leben
Global life =10000

Global joi$ = "Joint22"
Global anima = walk2
Global state$ = "herumlaufen"
Global leben_zombie$ = ""
Global health = 10000
Global axt$
Global zwerg_laufen = 0
Global zombie_lebensanzeige
;---------------------------------
;Constants
;---------------------------------
Const IDLE         = 0
Const PATROL      =1
Const ATAK      = 2
Const CHASE          =3
Const RAWAY         =4
Const DEAD           =5
Const LIMIT = 50
Const FLEE = 100
Const FIGHT = 4
Const MAX = 100
; constants for zombie
Const HURT = 6
Const HIT = 7

;---------------------------------
;---------------------------------




;===============
; Collision Types
;===============
Global zombie_col = 1
Global zwerg_col =2
Global haus_col =3
Global zombie2_col = 4
Global axt_col = 5
Global axt2_col = 6
Global joint_zombie = 7
;===============
; Sounds
;===============
Global sound = LoadSound("Musik\\sound3.mp3")
LoopSound sound
channel = PlaySound(sound)


;Tower
Global tower = LoadMesh("gfx\\bilder\\tower.3ds")
MoveEntity tower ,70,0,-80
ScaleEntity tower ,0.1,0.1,0.1
;-------------------------
;Haus
Global haus = LoadMesh("gfx\\bilder\\haus.3ds")
MoveEntity haus,40,60,0
ScaleEntity haus,0.09,0.09,0.09
TurnEntity haus,0,0,5
EntityRadius haus,50
EntityType haus,haus_col


;Monster
Global monster = LoadAnimMesh("gfx\\monster\\monster.b3d")
MoveEntity monster,10,50,0
ScaleEntity monster,0.04,0.04,0.04
Global monstertext1 = LoadTexture("gfx\\monster\\beast1.jpg")
Global monstertext2 = LoadTexture("gfx\\monster\\beast2.jpg")
Global monstertext3 = LoadTexture("gfx\\monster\\beast3.jpg")
Global monstertext4 = LoadTexture("gfx\\monster\\beast4.jpg")
Global monstertext5 = LoadTexture("gfx\\monster\\beast5.jpg")
Global monstertext6 = LoadTexture("gfx\\monster\\spec_beast.jpg")
Global monstertext7 = LoadTexture("gfx\\monster\\n_beast.png")
EntityTexture monster,monstertext1
EntityTexture monster,monstertext2
EntityTexture monster,monstertext3
EntityTexture monster,monstertext4
EntityTexture monster,monstertext5
;EntityTexture monster,monstertext6        sieht anders aus^^
;EntityTexture monster,monstertext7        ----------"""""--------------




;===============
; Zombie Type
;===============
Type Zombie
Field s ; state
Field ent ; entity handle
Field x#,y#,z#,sx#,sy#,sz#,rx#,ry#,rz#;position,scale,rotation
Field health#
Field dist#
Field anim
Field walk1,walk2,defen1,defen2,inBack,twit,die,kick,punch,butt,idle1,idle2
Field tex ; texture
Field alpha#
Field hit
Field entype
Field enradius#
Field clocktick
Field pumtick
Field falltick
Field joint22
Field hit02
End Type

;===============
; Zombie instances
;===============
Global zombietext = LoadTexture("gfx\\bilder\\zombietext2.jpg")

createZombie(0,0,0)
createzombie(0,0,0)
createzombie(-24,13,400)
createzombie(-27,13,396)
createzombie(-10,13,390)

For p.zombie = Each zombie
RotateEntity p\ent,0,-100,0
Next



Global figur = LoadAnimMesh("gfx\\bilder\\zwerg.b3d")
ScaleEntity figur,0.09,0.09,0.09
MoveEntity figur ,px,py,10
EntityType figur,zwerg_col
EntityRadius figur,2





Global hit2$ = "hit"
Global axtend$ = "end"
Global childaxt = FindChild(figur,hit2$)
txtchild$ = "children:" +EntityName(childaxt)
EntityType childaxt,axt_col
EntityRadius childaxt,4
Global childaxt2 = FindChild(figur,axtend$)
EntityType childaxt2,axt2_col
EntityRadius childaxt2,5

;===============
;Camera
;===============
;Kamerafahrt
Global Piv=CreatePivot()

Global Kam=CreateCamera(figur)
CameraViewport(Kam,700,0,50,50)
PositionEntity Kam,-10, 60, -5
;----------------------------------


;===============
;Camera
;===============
Global campiv= CreatePivot()
Global cam = CreateCamera(figur)
CameraRange cam ,1,3000

CameraViewport(cam,0,0,800,600)

CameraFogMode cam,1
CameraFogRange cam,60,5000
MoveEntity cam, 0, 80, -100
;---------------------------------

;===============
;Terrain und Wasser
;===============
;water
water=CreatePlane()

watertext=LoadTexture ("gfx\\bilder\\wasser.bmp",4)

EntityTexture water,watertext

ScaleTexture watertext,100,100

MoveEntity water,0,-5,0

EntityAlpha water,0.6



Global terrain = LoadTerrain("gfx\\bilder\\heightmap_256.bmp")
TerrainShading terrain,True
TerrainDetail terrain,2000,True
ScaleEntity terrain, 15,60,15
PositionEntity terrain,-1000,-10,-1000
ter_tex = LoadTexture("gfx\\bilder\\terraintextur.bmp")
ScaleTexture ter_tex,2,2
EntityTexture terrain,ter_tex,0,0
ter_tex2 = LoadTexture("gfx\\bilder\\mossyground.bmp")
ScaleTexture ter_tex2,2,2
TextureBlend ter_tex2,2
EntityTexture terrain,ter_tex2,0,1
ter_tex3 = LoadTexture("gfx\\bilder\\terraintextur.bmp")
ScaleTexture ter_tex3,4,4
TextureBlend ter_tex3,3
EntityTexture terrain,ter_tex3,0,2


ExtractAnimSeq figur, frame1,frame2

seq=1



;===============
;  Collision Handling
;===============
Collisions zwerg_col,zombie_col,3,1
Collisions zwerg_col,haus_col,2,1
Collisions zombie_col,zwerg_col,3,1
Collisions zwerg_col,zombie2_col,3,1
Collisions zombie2_col,zwerg_col,3,1
Collisions axt_col,zombie_col,3,1
Collisions axt2_col,zombie_col,3,1
Collisions zombie_col,axt_col,3,1
Collisions zombie_col,axt2_col,3,1
Collisions joint_zombie,zwerg_col,3,1
Collisions zwerg_col,joint_zombie,3,1


HidePointer()

loadskybox("gfx\\sky.bmp",cam)
Function LoadSkyBox( file$ ,cam)
   Local m,b,s,tex

   m=CreateMesh(cam)
   ;front face
   b=CreateBrush()
   Tex = LoadTexture(file$ ,1+256)
 
   BrushTexture b,Tex
   s=CreateSurface( m,b )
   AddVertex s,-1,+1,-1,0,0:AddVertex s,+1,+1,-1,1,0
   AddVertex s,+1,-1,-1,1,1:AddVertex s,-1,-1,-1,0,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b
   ;right face
   b=CreateBrush()
   Tex = LoadTexture(file$,1+256)


   BrushTexture b,Tex
   s=CreateSurface( m,b )
   AddVertex s,+1,+1,-1,0,0:AddVertex s,+1,+1,+1,1,0
   AddVertex s,+1,-1,+1,1,1:AddVertex s,+1,-1,-1,0,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b
   ;back face
   b=CreateBrush()
   Tex = LoadTexture(file$,1+256)


   BrushTexture b,Tex
   s=CreateSurface( m,b )
   AddVertex s,+1,+1,+1,0,0:AddVertex s,-1,+1,+1,1,0
   AddVertex s,-1,-1,+1,1,1:AddVertex s,+1,-1,+1,0,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b
   ;left face
   b=CreateBrush()
   Tex = LoadTexture(file$,1+256)


   BrushTexture b,Tex
   s=CreateSurface( m,b )
   AddVertex s,-1,+1,+1,0,0:AddVertex s,-1,+1,-1,1,0
   AddVertex s,-1,-1,-1,1,1:AddVertex s,-1,-1,+1,0,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b
   ;top face
   b=CreateBrush()
   Tex = LoadTexture(file$,1+256)


   BrushTexture b,Tex
   s=CreateSurface( m,b )
   AddVertex s,-1,+1,+1,0,1:AddVertex s,+1,+1,+1,0,0
   AddVertex s,+1,+1,-1,1,0:AddVertex s,-1,+1,-1,1,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b
   ;bottom face   
   b=CreateBrush()
   Tex = LoadTexture(file$,1+256)
 

   BrushTexture b,Tex
   s=CreateSurface( m,b )
   AddVertex s,-1,-1,-1,1,0:AddVertex s,+1,-1,-1,1,1
   AddVertex s,+1,-1,+1,0,1:AddVertex s,-1,-1,+1,0,0
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b
   
   ScaleMesh m,10,10,10
   FlipMesh m
   EntityOrder m,(2^29)
   EntityFX m,1
   EntityBlend m,1
   Return m
End Function

;========================
;                  MAIN LOOP
;========================

While Not KeyHit(1)
updategame()



;move zombie
zombieState()
zombieTransition()

If MouseHit(1) Then
ExtractAnimSeq figur, 112, 126
Animate figur,3,.2,2,1
EndIf

 
;-------------------------

;-------------------------------------

If Not Animating( figur) Then
If  KeyDown (200)  Then
      Animate figur,3,.2,seq,1
EndIf
EndIf
If KeyDown(208) Then
Animate figur,0,.2,0,1
EndIf

UpdateWorld
RenderWorld


Color 0,0,0


For p.zombie = Each zombie
If EntityCollided(childaxt,1) Then
If MouseDown(1) Then
Text 100,100,"Kollision(Axt)"
p\hit02 = 1
p\health = p\health - 10

EndIf 
EndIf
Next

For p.zombie = Each zombie
If EntityCollided(p\joint22,2) Then
Text 150,150,"Kollision(joint22)"
health = health - 1
zombie_lebensanzeige = p\health

EndIf
Next


Text 650,12,zombie_lebensanzeige

;health
Color 255,0,0
Rect 190,10,health/100,20,1
Color 0,255,0
Rect 188,10,104,22,0

Flip
Wend

;======  End=============
End
;======  Functions  ========






;================
;   Update Game
;================
Function updategame()
     If KeyDown(205) Then  TurnEntity figur,0,-3,0
        If KeyDown(203) Then TurnEntity figur,0,3,0
; Move the player backwards and forwards...
       If KeyDown(200)  MoveEntity figur,0,0,0.3
      If KeyDown(208)  MoveEntity figur,0,0,-0.1
      If MouseDown(2) Then
   RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),EntityYaw(cam)-MouseXSpeed(),0
   EndIf

MoveMouse 400,300


;x#=EntityX(cam)
;y#=EntityY(cam)
;z#=EntityZ(cam)
;terra_y#=TerrainY(terrain,x#,y#,z#)+ 5
;PositionEntity cam,x#,terra_y#,z#

x#=EntityX(figur)
y#=EntityY(figur)
z#=EntityZ(figur)
terra_y#=TerrainY(terrain,x#,y#,z#)-0.01
PositionEntity figur,x#,terra_y#,z#

For p.zombie = Each zombie
x2#=EntityX(p\ent)
y2#=EntityY(p\ent)
z2#=EntityZ(p\ent)
terra_y2#=TerrainY(terrain,x2#,y2#,z2#)-0.01
PositionEntity p\ent,x2#,terra_y2#,z2#
Next

x3#=EntityX(monster)
y3#=EntityY(monster)
z3#=EntityZ(monster)
terra_y3#=TerrainY(terrain,x3#,y3#,z3#)-0.01
PositionEntity monster,x3#,terra_y3#,z3#


x4#=EntityX(haus)
y4#=EntityY(haus)
z4#=EntityZ(haus)
terra_y4#=TerrainY(terrain,x4#,y4#,z4#)-0.01
PositionEntity haus,x4#,terra_y4#,z4#



x5#=EntityX(tower)
y5#=EntityY(tower)
z5#=EntityZ(tower)
terra_y5#=TerrainY(terrain,x5#,y5#,z5#)+100
PositionEntity tower,x5#,terra_y5#,z5#


End Function

;================
;   Create Skybox
;================
Function create_skybox()
Local m,b,s,tex

   m=CreateMesh(cam)
   ;front face
   b=CreateBrush()
   Tex = LoadTexture("gfx\\bilder\\sky.bmp" ,1+256)
 
   BrushTexture b,Tex
   s=CreateSurface( m,b )
   AddVertex s,-1,+1,-1,0,0:AddVertex s,+1,+1,-1,1,0
   AddVertex s,+1,-1,-1,1,1:AddVertex s,-1,-1,-1,0,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b
   ;right face
   b=CreateBrush()
   Tex = LoadTexture("gfx\\bilder\\sky.bmp",1+256)


   BrushTexture b,Tex
   s=CreateSurface( m,b )
   AddVertex s,+1,+1,-1,0,0:AddVertex s,+1,+1,+1,1,0
   AddVertex s,+1,-1,+1,1,1:AddVertex s,+1,-1,-1,0,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b
   ;back face
   b=CreateBrush()
   Tex = LoadTexture("gfx\\bilder\\sky.bmp",1+256)


   BrushTexture b,Tex
   s=CreateSurface( m,b )
   AddVertex s,+1,+1,+1,0,0:AddVertex s,-1,+1,+1,1,0
   AddVertex s,-1,-1,+1,1,1:AddVertex s,+1,-1,+1,0,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b
   ;left face
   b=CreateBrush()
   Tex = LoadTexture("gfx\\bilder\\sky.bmp",1+256)


   BrushTexture b,Tex
   s=CreateSurface( m,b )
   AddVertex s,-1,+1,+1,0,0:AddVertex s,-1,+1,-1,1,0
   AddVertex s,-1,-1,-1,1,1:AddVertex s,-1,-1,+1,0,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b
   ;top face
   b=CreateBrush()
   Tex = LoadTexture("gfx\\bilder\\sky.bmp",1+256)


   BrushTexture b,Tex
   s=CreateSurface( m,b )
   AddVertex s,-1,+1,+1,0,1:AddVertex s,+1,+1,+1,0,0
   AddVertex s,+1,+1,-1,1,0:AddVertex s,-1,+1,-1,1,1
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b
   ;bottom face   
   b=CreateBrush()
   Tex = LoadTexture("gfx\\bilder\\sky.bmp",1+256)
 

   BrushTexture b,Tex
   s=CreateSurface( m,b )
   AddVertex s,-1,-1,-1,1,0:AddVertex s,+1,-1,-1,1,1
   AddVertex s,+1,-1,+1,0,1:AddVertex s,-1,-1,+1,0,0
   AddTriangle s,0,1,2:AddTriangle s,0,2,3
   FreeBrush b
   
   ScaleMesh m,10,10,10
   FlipMesh m
   EntityOrder m,(2^29)
   EntityFX m,1
   EntityBlend m,1
   Return m

End Function









;===============
;   Zombie is Hurt
;===============
Function zombieHurt()
For p.zombie = Each zombie
   If EntityCollided
     If EntityDistance(figur,picked) <= 30
        If Not p\hit
           
           p\hit = True
           p\health = p\health - 18
           picked = 0
        End If
     End If
   End If
Next
End Function



;===============
;  Create Zombie
;===============
;Create a Zombie # 10
Function createZombie(eks,wye,zed)
p.zombie = New zombie
p\ent = LoadAnimMesh("gfx\\bilder\\zombie.b3d")
p\s = IDLE
p\x = eks
p\y = wye
p\z = zed
p\sx =.4
p\sy = .4
p\sz = .4
p\health = 100
p\dist = 0
p\walk1 = ExtractAnimSeq(p\ent,2,20)
p\walk2 = ExtractAnimSeq(p\ent,22,36)
p\defen1 = ExtractAnimSeq(p\ent,38,47)
p\defen2 = ExtractAnimSeq(p\ent,48,57)
p\inBack = ExtractAnimSeq(p\ent,59,75)
p\twit = ExtractAnimSeq(p\ent,78,88)
p\die = ExtractAnimSeq(p\ent,91,103)
p\kick = ExtractAnimSeq(p\ent,106,115)
p\punch = ExtractAnimSeq(p\ent,117,128)
p\butt = ExtractAnimSeq(p\ent,129,136)
p\idle1 = ExtractAnimSeq(p\ent,137,169)
p\idle2 = ExtractAnimSeq(p\ent,170,200)
p\anim = p\idle2
p\tex = zombie_tex
p\alpha = 1
p\hit = False
p\entype = zombie_col
p\enradius = 3
p\joint22 = FindChild(p\ent,joi$)
p\hit02 = 0

EntityType p\joint22,joint_zombie
EntityRadius p\joint22,3
EntityType p\ent, p\entype
EntityRadius p\ent, p\enradius
EntityPickMode p\ent,2
ScaleEntity p\ent, p\sx,p\sy,p\sz
PositionEntity p\ent, p\x,p\y,p\z
RotateEntity p\ent, 0,180,0
EntityTexture p\ent,zombietext
Animate p\ent, 1,.1,p\anim
End Function


;===============
;  Zombie Transition
;===============
Function zombieTransition()
For p.zombie = Each zombie
   p\dist = EntityDistance(p\ent,figur)
   Select p\s
      Case IDLE
         ;IDLE TO CHASE
         If p\dist < LIMIT
            p\anim = p\walk2
            Animate p\ent,1,.1,p\anim
            p\s = CHASE
     End If
   
      Case CHASE
         ;CHASE to IDLE
          If p\dist > LIMIT
           p\anim = p\idle2
      Animate p\ent,1,.1,p\anim
           p\s = IDLE
          End If
         
         If p\dist =< FIGHT And p\hit02 = 1 Then
         p\anim = p\kick
      Animate p\ent,1,.5,p\anim
      
      If p\health = 0 Then
      HideEntity   p\ent
   
   
      EndIf
      
      End If
           End Select
Next
End Function


Function changehits()
For p.zombie = Each zombie
If p\anim = p\kick
   p\anim=p\butt
ElseIf (p\anim = p\butt)
      p\anim = p\punch
ElseIf (p\anim = p\punch)
      p\anim=p\kick
End If
Animate p\ent,1,.5,p\anim
p\pumtick = 0
Next
End Function



;===============
;   Zombie State
;===============
Function zombieState()
For p.zombie = Each zombie
   Select p\s
      Case IDLE
         TurnEntity p\ent, 0,0.6,0
      Case CHASE
         MoveEntity p\ent, 0,0,-.1
         oset = where_to_turn(p\ent,figur)
         oset = - oset
         TurnEntity p\ent,0,oset ,0
      Case ATAK
        MoveEntity p\ent, 0,0,-.001         
        oset = where_to_turn
        oset=-oset
        TurnEntity p\ent, 0,oset,0
         health = health - 1
         

          End Select
Next
End Function


;=================
;Where to Turn
;=================
Function where_to_turn(source_pivot,target_pivot) ;by semar
temp = CreatePivot()
PositionEntity temp,EntityX(source_pivot),EntityY(source_pivot),EntityZ(source_pivot)
PointEntity temp,target_pivot
s = Floor(EntityYaw(source_pivot))
t = Floor(EntityYaw(temp))   
FreeEntity (temp) 
If s = t Then
   Return 0
EndIf
If s < 0 Then s = 360 + s
If t < 0 Then t = 360 + t
If Abs(s-t) > 180 Then
   If s > t Then
   Return 1
   Else
   Return -1
   EndIf
Else
   If s > t Then
   Return -1
   Else
   Return  1
   EndIf
EndIf
End Function


 

Tankbuster

BeitragFr, Mai 16, 2008 23:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
[...]
If p\health = 0 Then
HideEntity   p\ent
EndIf
[...]


Bist du dir in diesem Codeausschnitt sicher, dass p\health GENAU 0 wird?
Sonst solltest du vielleicht "<=0" verwenden Wink
Twitter
Download Jewel Snake!
Windows|Android

Xeres

Moderator

BeitragSa, Mai 17, 2008 0:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Noch ein paar Hinweise:
- baue einen timer ein und verwende flip 0 (siehe hier für eine sehr ausführliche erklärung dazu)
- Verwende möglichst nur eine Zombie-Update Funktion, beispielsweise folgen die Funktionen zombieState() und zombieTransition() direkt aufeinander und fragen auch noch beide p\s für je alle Zombies ab - das zieht Leistung und kann mit einer Kommetarzeile Übersichtlicher gestalltet werden.

Nirgendwo wird bei dir ein Zombie-Eintrag bzw. das Entity gelöscht...?
(Okay, Tunkbuster hat hideentity gefunden ^^)

Wie ich gerade feststelle, kann man beliebig viele Backslash hintereinander in der Pfadangabe machen ohne das bb es etwas auszumachen scheint Oo
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group