Показать сообщение отдельно
Старый 26.01.2006, 11:04   #8
Akima
Бывалый
 
Регистрация: 22.10.2005
Сообщений: 701
Написано 7 полезных сообщений
(для 5 пользователей)
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

(Offline)
 
Ответить с цитированием