Originally posted by AsmLover@Jan 24 2006, 06:02 PM
Покажи, как ты думаешь делать и что не получается, тогда помогу.
|
Делаю систему боя двух и более NPC, в начале боя каждая нпс определяет слабые части тела врага и определяет свой опыт удара по этим частям, и во время боя должна наносить удары по нескольким "удачным" для нее частям тела врага.
например :
враг видит что игрок ванен в ногу и например у игрока еще на голове нет шлема. вражеская нпс определяет что он будет бить по этим частям тела и ищет среди своих параметров опыта куда еще он может наносить удары.
;- Параметры тела
Global tAll=0;Общее
Global tHead=1
Global tHand=2
Global tBody=3
Global tLegs=4
;- Параметры
Global tStrength=1;Сила
Global tDexterity=2;Ловкость
Type tNPC
Field tName$
Field tHP#[4];Здоровье тела
Field tArmor#[4];Броня на теле
Field tExpWar#[4];Опыт нанесения ударов по телу
End Type
Function NewNPC.tNPC(name$,nHP1#,nHP2#,nHP3#,nHP4# ,nAP1#,nAP2#,nAP3#,nAP4#, nEW1#,nEW2#,nEW3#,nEW4# )
;задаем параметры нового игрока
Local n.tNPC=New tNPC
n\tname=name
;Заполняем шкалу здоровья
n\tHP[tHead]=nhp1
n\tHP[tHand]=nhp2
n\tHP[tBody]=nhp3
n\tHP[tLegs]=nhp4
n\tHP[tAll]=(nhp1+nhp2+nhp3+nhp4)/4/1.2
;Заполняем шкалу Брони(одежды)
n\tArmor[tHead]=nap1
n\tArmor[tHand]=nap2
n\tArmor[tBody]=nap3
n\tArmor[tLegs]=nap4
n\tArmor[tAll]=(nap1+nap2+nap3+nap4)/4/1.2
;Заполняем шкалу Опыта нанесения ударов
n\tExpWar[tHead]=new1
n\tExpWar[tHand]=new2
n\tExpWar[Body]=new3
n\tExpWar[tLegs]=new4
n\tExpWar[tAll]=(new1+new2+new3+new4)/4/1.2
Return n
End Function
Dim nt(2)
Dim p1(2,3)
Dim minn#(2,2);первое число индекс врага / второе: 1-текущее значение 2-Самое слабое
Graphics3D 640,480,32,2
SetFont LoadFont("arial cyr",16)
N1.tnpc=NewNPC("Player1",12,23,14,8, 4,0,2,6, 4,2,1,3)
N2.tnpc=NewNPC("ENEMY",8,12,23,4, 3,4,2,1, 3,4,1,2 )
Real_WAR
While Not KeyHit(1)
Text 20,20, n1\tname
Text 50,10,minn(1,2)
Text 50,30,minn(2,2)
Flip
Wend
End
Function Real_WAR()
minn(1,2)=9999
minn(2,2)=9999
;Определяем самые слабые чати тела соперника
For i=1 To 3
;Local i=1
;!!!!!!!!!!!!!!!!!!!!!!!!! Только Здесь ОШИБКА Какаято непойму, к массиву придерается
minn(1,1)=n1\thp[i];+n1\tArmor[i]
minn(2,1)=n2\thp[i];+n2\tArmor[i]
If minn(1,1)<minn(1,2) minn(1,2)=minn(1,1)
If minn(2,1)<minn(2,2) minn(2,2)=minn(2,1)
Next
End Function
Круто да
----------------------------------------
и еще вопросики
1/аказывается в типах можно делать так field health[3] ето хорошо А можно какнибуть так field health[3,4], ну чтобы не только 3 переменные запихать а у каждой чтобы еще по несколько было (как в массиве)
2/у меня все элементы типа содержат Field nName$ (именя), и другие параметры, я узнаю именя например 1 и 30 элементов и потом в отдельной функции должно проиходить вычисления только между этими двумя (или более) элементами, это можно сделать какнибудь без поиска этих элементов каждый цикл
For NPC.tNpc = Each tNPC
if npc.nname=[Имя элемента]
next