Показать сообщение отдельно
Старый 26.09.2007, 06:11   #28
Crayzi
ПроЭктировщик
 
Регистрация: 26.06.2007
Сообщений: 194
Написано 21 полезных сообщений
(для 25 пользователей)
Re: Мод FPS от impersonalis-a.

Пока что думаю, как бы получше сделать набирание очков, и при каком их количестве выдавать победу.
~1-1.5 часа спустя:
Фух, сделал условия победы и поражения(высветится обычная надпись типо "You Win" или "You Dead", позже сделаю блокировку стрельбы, перемещения и т. д., и возможность начать заново), добавил кубик который надо подбирать, после "подбирания" он перемещается в рандомное место, при этом вам добавляется 1 очко (Score), когда количество очков будет равно 30, вы выиграли, если количество ваших НР равно 0 то вы проиграли. Короч мож еще что добавил, хз... Уже почти несоображаю, спать хо...
П.с. Долгое ща будет описание чаво и куда добавить...
1. Добавьте пару глобальных переменных, первые 2 со значками доллара на конце рассчитаны для хранения текстовых данных, они у нас будут отвечать за текст "You Win" и "You Dead"б Третья глобальная переменная у нас(Score) для хранения данных о количестве набранных очков:
Global Win$
Global Dead$
Global Score=0
2. ВОт еще добавляем пару констант, первая у нас будет "порогом" количества очко (Score) нужного для выиграша, вторая понадобится для того чтобы сделать коллизион этого бонуса с игроком:
Const Win_qantiti_score=30
Const Type_Smoll_score=11
3. Этот кусочек кода отвечает за создание кубика, придание ему размера, присвоение этому кубику типа, по которому его потом можно будет "колизеить" и размещение его в случайном месте:
 
Global Smoll_score=CreateCube()
ScaleEntity Smoll_score,0.5,0.5,0.5
EntityType Smoll_score,Type_Smoll_score
PositionEntity Smoll_score,Rnd(-40,40),2,Rnd(-40,40)
4. В функцию "Function update_user()" добавим кусочек кода отвечающий за проверку, произошла ли колизея юзера с типом бонуса отвечающего за Score, если коллизея произошла, то +1 к Score и переместить скоре в случайное место:
If EntityCollided (user,Type_Smoll_score) Then 
PositionEntity Smoll_score,Rnd(-40,40),2,Rnd(-40,40)
Score=Score+1
EndIf
5. В функцию "Function create_world()", а это отвечает за колизею типа (Type) игрока(USERT) с типом бонуса отвечающего за Score(Type_Smoll_Score):
 
Collisions USERT,Type_Smoll_score,2,2
6. В функцию "While Not KeyHit(1)=1"(в самом начале) добавим условия победы и поражения, 1. - если количество очков (Score) равно значению которое занесено в константе (постоянной) "Win_qantiti_score"(а там у нас 30) и DeadT=0 тогда добавить в переменную "Win$" текст "You Win". 2. Если жизни игрока меньше или равны нулю, тогда переменную "DeadT" равна 1, а в переменную "Dead$" дописуем "You Dead". 3. Tckb ;если жизни игрока меньше 0, тогда прировнять их к 0. 4. Если количество очков больше максимума то приравнять к максимуму.:
;1.
If Score=Win_qantiti_score And DeadT=0 Then
Win$="You Win"
EndIf
;2.
If user_H<=0
DeadT=1
Dead$="You Dead"
EndIf
;3.
If user_H<0
 user_H=0
EndIf
4.If Score>Win_qantiti_score
Score=Win_qantiti_score
EndIf
7. Между "RenderWorld()" (все в той же функции "While Not KeyHit(1)=1") и Flip добавляем оператор "Text" далее пишем позицию выведения текста, далее в ковычках вписуем "Score :", эта надпись будет у нас перед циферкой количества очков какие набрал игрок, сразуже после той надписи добавляем +Score, это у нас будут сами очки (циферка) потом 2 раза прописуем True тобес - Правда. 2. делает тоже самое, только выводит на экран значёк "/" и цифру максимального количества очков нужных для выиграша. 3. Меняем цвет текста какой будем выводить далее. 4. Добавляем оператор кода "Text", выбираем координаты куда разместить текст, и "говорим" что текстом у нас будет переменная Win$. 5. Опять меняем цвет текста какой будем высвечивать далее. 6. Здесь тоже вписуем оператор текст, координаты задаем (я задал те же что и при высвечивании победы) и говорим что тут у нас будет надпись находящаяся в переменной Dead$:
1.
Text 130,60,"Score : "+Score,True,True
2.
Text 210,60,"/ "+Win_qantiti_score,True,True
3.
Color 0,255,0
4.
Text 450,60,Win$,True,True
5.
Color 255,0,0
6.
Text 450,60,Dead$,True,True
Вроде усе.
На всяк пожарный выкладую ап кода(П.с, тута чучуть изменена стрельба, думаю нечё особенного я там не сделал так что описывать смысла нет).
(Offline)
 
Ответить с цитированием