forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Проблема при чтении AnimSeq с файла (http://forum.boolean.name/showthread.php?t=4638)

IGR 03.10.2007 19:45

Проблема при чтении AnimSeq с файла
 
допустим у меня в текстовом файле

12
34
52
64
78
99

непарная строка - первый кадр анимсека, парная - последний !!

читаю их с файла

ExtractAnimSeq model, Int(ReadLine(File)),Int(ReadLine(File))
.........
потом анимирую модель
Animate model,1,1,1; должен играть первый анимсек, а играет вся анимка т.е. нулевай анимсек !!
В чем проблема ?? :4to:

кста, даные с файла читаются - это 100 проц !!

jimon 03.10.2007 20:18

Re: Проблема при чтении AnimSeq с файла
 
IGR
порядок поступления аргументов в функцию не определяется
тоесть если ты пишеш blabla(a1(),a2())
то что будет сначала вызвано a1 или a2 не известно :)
поетому сначала прочитай инфу в переменые
а только потом вызывай функцию

HolyDel 03.10.2007 21:59

Re: Проблема при чтении AnimSeq с файла
 
верно.
в блице кстати более менее определен - задом наперед.

IGR 04.10.2007 13:16

Re: Проблема при чтении AnimSeq с файла
 
да, я кста потом анимсеки в масив загнал, и потом их оттуда читал !!

ExtractAnimSeq model (mas(0,0)),mas(0,1))
...

и всё равно тоже самое !!

а может LoadAnimSeq надо ??

H@NON 04.10.2007 14:41

Re: Проблема при чтении AnimSeq с файла
 
А зачем такое вообще нужно, чтоб из файла анимсеки считывать? это чушь, уж если и записывать то в код. Подумай, нужно ли это настолько тебе , чтоб тратить на это время?!

ЛысыЙ_Чук-Иванчук 04.10.2007 14:54

Re: Проблема при чтении AnimSeq с файла
 
Ладно еслиб у тебя было 30-150 моделий которые нужно анимаровать по частям, то тогда ето былобы актуально, а так! хотя имхо и так тожа нече!(шарится в коде не надо, открыл блокнот и поменял что надо!)

jimon 04.10.2007 17:20

Re: Проблема при чтении AnimSeq с файла
 
моделер открыл 2 метровый код игры, поменял пару чисел
и отправил на главный сервер компилироватся

да вас нафиг уволят через 2 дня работы :)

HolyDel 04.10.2007 23:54

Re: Проблема при чтении AnimSeq с файла
 
как ты считывал в массив?

IGR 05.10.2007 12:05

Re: Проблема при чтении AnimSeq с файла
 
Цитата:

как ты считывал в массив?
так же само:
ReadLine$(file)
а что ??

но с файла всё четается - это 100 проц !!

jimon 05.10.2007 16:44

Re: Проблема при чтении AnimSeq с файла
 
IGR
давай код :)

IGR 05.10.2007 17:19

Re: Проблема при чтении AnimSeq с файла
 
gwidth = 800
gheight = 600


Graphics3D gwidth,gheight,32,2
HidePointer


Global player = CreatePivot()
PositionEntity player,0,45,-300
Global FPS,LastCheck,Frames,campitch#,mvx#,mvy#,mvz#
Global C = CreateCamera(player)
CameraClsColor C,0,0,0
CameraRange C,0.1,1500
CameraClsColor C,0,0,0;128,128,150
CameraFogRange C,500,1300
CameraFogMode C,1
CameraFogColor C,0,0,0;128,128,150


mx = MouseX()
my = MouseY()

plan = CreatePlane ()
p_t = LoadTexture ("Stone3_t2.jpg")
ScaleTexture p_t,100,100
EntityTexture plan,p_t



;======||===== BEGIN ANIMATION ====||==================
Const anim_stay = 1;
Const anim_walk = 2;
Const anim_go = 3;
Const anim_attack = 4;
Const anim_die = 5;
;=========== END ========================




;=======||======= ENEMY MODES =======
; режимы поведения врагов
Const emod_stay% = 1; свободная стойка
Const emod_walk% = 2; свободная ходьба
Const emod_go% = 3; враг направляется к персу
Const emod_attack% = 4; враг атакует перса
Const emod_die% = 5; враг умерает
;=======||=======||=======||=======



Type enemy
Field e_pivot; повот
Field e_model; модель
Field e_point; вей-поинт
Field e_name$; имя врага
Field e_mode; режим врага
Field e_life; жизнь врага
Field e_alert
End Type

Dim d_en.enemy(10); максимальное количество врагов
Global NumEnemy = -1

Dim EnemySeq(5,2)
EnemySF = OpenFile("enemies\dwarf\dwarf_anim.txt")
For i=0 To 4
EnemySS = ReadLine$(EnemySF)
EnemySeq(i,0) = EnemySS
EnemySS = ReadLine$(EnemySF)
EnemySeq(i,1) = EnemySS
Next
CloseFile(EnemySF)

Global EModPath$ = "enemies\"
; Создать_Врага(модель$,имя$,состояние%,X%,Y%,Z%,ang le%)
Function CRT_enemy(f_model$,f_name$,f_mode%,EX%,EY%,EZ%,Ang le%)

NumEnemy = NumEnemy + 1

d_en(NumEnemy) = New enemy
d_en(NumEnemy)\e_pivot = CreateSphere()
d_en(NumEnemy)\e_point = CreateSphere()
;PositionEntity d_en(NumEnemy)\e_point, EX, EY, EZ
PositionEntity d_en(i)\e_point,EntityX(d_en(i)\e_point)+Rnd(-P_di,P_di),EntityY(d_en(i)\e_point),EntityZ(d_en(i )\e_point)+Rnd(-P_di,P_di)
PositionEntity d_en(NumEnemy)\e_pivot, EX, EY, EZ
d_en(NumEnemy)\e_model = LoadAnimMesh(EModPath$+f_model$+"\"+f_model$+".b3d ",d_en(NumEnemy)\e_pivot)
PositionEntity d_en(NumEnemy)\e_model, 0,0,0
EntityType d_en(NumEnemy)\e_pivot, TypeEnemy
EntityRadius d_en(NumEnemy)\e_pivot, 40
d_en(NumEnemy)\e_name$ = f_name$

; вариан с ЧТЕНИЕМ Сикуенсов с масива
;ExtractAnimSeq (d_en(NumEnemy)\e_model,EnemySeq(0,1),EnemySeq(0,1 ))
;ExtractAnimSeq (d_en(NumEnemy)\e_model,EnemySeq(1,1),EnemySeq(1,1 ))
;ExtractAnimSeq (d_en(NumEnemy)\e_model,EnemySeq(2,1),EnemySeq(2,1 ))
;ExtractAnimSeq (d_en(NumEnemy)\e_model,EnemySeq(3,1),EnemySeq(3,1 ))
;ExtractAnimSeq (d_en(NumEnemy)\e_model,EnemySeq(4,1),EnemySeq(4,1 ))

; вариан с ЧТЕНИЕМ Сикуенсов с файла
;EAF = OpenFile(EModPath$+f_model$+"\"+f_model$+_anim.txt ")
;ExtractAnimSeq (d_en(NumEnemy)\e_model,Int(ReadLine$(EAF)),Int(Re adLine$(EAF)))
;ExtractAnimSeq (d_en(NumEnemy)\e_model,Int(ReadLine$(EAF)),Int(Re adLine$(EAF)))
;ExtractAnimSeq (d_en(NumEnemy)\e_model,Int(ReadLine$(EAF)),Int(Re adLine$(EAF)))
;ExtractAnimSeq (d_en(NumEnemy)\e_model,Int(ReadLine$(EAF)),Int(Re adLine$(EAF)))
;ExtractAnimSeq (d_en(NumEnemy)\e_model,Int(ReadLine$(EAF)),Int(Re adLine$(EAF)))
;CloseFile(EAF)

ExtractAnimSeq (d_en(NumEnemy)\e_model,75,88)
ExtractAnimSeq (d_en(NumEnemy)\e_model,2,14)
ExtractAnimSeq (d_en(NumEnemy)\e_model,16,26)
ExtractAnimSeq (d_en(NumEnemy)\e_model,112,126)
ExtractAnimSeq (d_en(NumEnemy)\e_model,230,251)


ScaleEntity d_en(NumEnemy)\e_model,1,1,1
d_en(NumEnemy)\e_mode = f_mode%
d_en(NumEnemy)\e_alert = f_mode%
EntityPickMode d_en(NumEnemy)\e_model, 2
NameEntity d_en(NumEnemy)\e_model, "model DWARF"
d_en(NumEnemy)\e_life = 100
TurnEntity d_en(NumEnemy)\e_pivot, 0, Angle, 0

End Function

;константы разстояния и атаки
Const V_di = 200; Visible_DIstance - бот замечает перса
Const S_di = 400; Stay_DIstance - бот наченает движение, если стоял
Const A_di = 70; Attack_DIstance - бот атакует
Const P_di = 500; Pivot_DIstance - создается вей-пивот

Global BOT$ = " "
Global BOT_LIFE
Global MYLIFE# = 300
Global KILLS = 0





Repeat




UDT_enemy()

move_me()

UpdateWorld
RenderWorld
GetFPS()
Text 10,10,FPS
Text 10,30,"X "+Str(EntityX(player))+" Y "+EntityY(player)+" Z "+EntityZ(player)
Text 10,70,"POLYGONS: " + TrisRendered()
Text 10,90,BOT$
Text 10,110,Str(BOT_LIFE)
Text 10,130,Str(MYLIFE)
Text 10,150,Str(KILLS)


Text 200,10,EnemySeq(0,0)+" - "+EnemySeq(0,1)
Text 200,30,EnemySeq(1,0)+" - "+EnemySeq(1,1)
Text 200,50,EnemySeq(2,0)+" - "+EnemySeq(2,1)
Text 200,70,EnemySeq(3,0)+" - "+EnemySeq(3,1)
Text 200,90,EnemySeq(4,0)+" - "+EnemySeq(4,1)

Flip False
Until KeyHit(1)

End


Function GetFPS()
Frames = Frames + 1

If MilliSecs() > LastCheck+1000 Then
LastCheck = MilliSecs()
FPS = Frames
Frames = 0
EndIf
Return FPS
End Function

Function move_me()

V#=0.7
u#=60
TurnEntity c,MouseYSpeed()*0.25,0,0
TurnEntity player,0,-MouseXSpeed()*0.25,0
If KeyDown(30)=1 Then MoveEntity player,-V#,0,0
If KeyDown(32)=1 Then MoveEntity player,V#,0,0
If KeyDown(17)=1 Then MoveEntity player,0,0,+V#
If KeyDown(31)=1 Then MoveEntity player,0,0,-V#:iWalking = True
If KeyDown(203)=1 Then MoveEntity player,-V#,0,0
If KeyDown(205)=1 Then MoveEntity player,V#,0,0
If KeyDown(200)=1 Then MoveEntity player,0,0,+V#
If KeyDown(208)=1 Then MoveEntity player,0,0,-V#

MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5
If Abs(EntityPitch#(c))>u# RotateEntity c,u#*Sgn(EntityPitch#(c)),0,0

End Function

H@NON 05.10.2007 17:25

Re: Проблема при чтении AnimSeq с файла
 
ИГР: нужен был только этот кусок, мог и не заваливать на всю страницу.
Цитата:

Dim EnemySeq(5,2)
EnemySF = OpenFile("enemies\dwarf\dwarf_anim.txt")
For i=0 To 4
EnemySS = ReadLine$(EnemySF)
EnemySeq(i,0) = EnemySS
EnemySS = ReadLine$(EnemySF)
EnemySeq(i,1) = EnemySS
Next
CloseFile(EnemySF)

jimon 05.10.2007 17:44

Re: Проблема при чтении AnimSeq с файла
 
Код:

Dim EnemySeq%(5,2)
EnemySF = OpenFile("enemies\dwarf\dwarf_anim.txt")
For i=0 To 4
EnemySeq(i,0) = Int(ReadLine$(EnemySF))
EnemySeq(i,1) = Int(ReadLine$(EnemySF))
Next
CloseFile(EnemySF)


IGR 05.10.2007 17:46

Re: Проблема при чтении AnimSeq с файла
 
jimon, thank U very mach !!

MiXaeL 07.10.2007 22:06

Re: Проблема при чтении AnimSeq с файла
 
Кстати, я раньше никогда не делал через int, просто писал readline без $ и все работало. (и кроме того так должно быть быстрее)


Часовой пояс GMT +4, время: 22:46.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot