Условия и переходы
Условия и переходы
Я обещал ещё одну статью? Вот она.
Статью про RC выпустить пока не могу, т.к. в ней будет много для вас сейчас непонятного. Сейчас будем про условия и переходы.
Итак, для начала для тех, выдаюшихся танкистов, космонавтов, подводников и мореплавотелей опишу всем известный jump.
0002: jump JJ[метка] (Вместо JJ можно писать JJ, но лучше вставлять эти символы из других мест в майне).
Метки создаються просто, без опкодов:
:Metka1.
Теперь перейдём к условиям и условным переходам.
00D6: if 0 - начало условия, 0 - количество условий, нумерация начинаеться с нуля, тоесть 0 - одно условие, 1 - два и т.д.
После этого идут сами условия, в количестве, определённом в предидушей команде. Условий на самом деле туева хуча, все они перечисленны в файле opcodes.txt, в папке с билдером, в начале файла. Условия для чисел приведу в следующей статье, сейчас игровые условия:
0256: player $PLAYER_CHAR defined - вообще сушествует ли игрок (используеться вначале, когда игрок может не сушествовать, и при загрузке/сохранении игры, когда его id стираеться (меня так учили, сам не понимаю, что за бред :) )).
00DF: actor $PLAYER_ACTOR driving - актёр водит.
00DD: actor $PLAYER_ACTOR driving_vehicle_type #AMBULAN - актёр водит определённую тачку, имя тачки в vechicles.ide после id.
0449: actor $PLAYER_ACTOR in_a_car - актёр в тачке (вообще, можно даже не на месте водителя.
00ED: actor $PLAYER_ACTOR 0 ()near_point_on_foot [x] [y] radius 4.0 4.0 - актёр около точки, не в тачке, после radius - радиус, числа лучше ставить одинаковые.
0100: actor $PLAYER_ACTOR near_point_in_car [x] [y] [z] radius 4.0 4.0 4.0 sphere 1 - актёр около точки в тачке, что после sphere не знаю.
00EC: actor $PLAYER_ACTOR 0 ()near_point [x] [y] [z] radius 80.0 80.0 - актёр около точки, неважно пешком или в тачке.
0448: actor [актёр] in_car [машина] - актёр в определённой машине (определённой в переменной.
0965: actor $PLAYER_ACTOR in_water - актёр в воде.
02A0: actor $PLAYER_ACTOR stopped - актёр остановился
0118: actor $ACTOR dead - актёр умер :(.
00F4: actor $PLAYER_ACTOR near_actor_in_car $ACTOR radius 6.0 6.0 0 - актёр около актёра в машине.
00F2: actor $ACTOR near_actor $PLAYER_ACTOR radius 20.0 20.0 0 - актёр около актёра
01C1: car $CAR stopped - машина остановилась
03C9: car $CAR damaged - машина повреждена
00E1: key_pressed 0 19 - нажата клавиша (коды помоему такиеже, как в вайсе).
Условий хватит.
Теперь к переходам. После условия всегда должен стоять
004D: jump_if_false JJLABEL2 - указатель, куда перепрыгнуть, если условие не сбываеться.
Ещё один вопрос - отрицательные условия. ДЖля того, чтобы создать такое условие, меняем первую цифру опкода на 8 и ставим после него NOT.
Например
03C9: car $CAR damaged - машина $CAR повреждена
83C9: NOT car $CAR damaged - машина $CAR НЕ повреждена.
Теперь составим простое условие:
00D6: if 1
01C1: car $CAR stopped
83C9: NOT car $CAR damaged
004D: jump_if_false JJLABEL2
0002: jump JJLABEL1
Ещё увидимся.
eXPeriMeNTatOR.
1209 Прочтений • [Условия и переходы] [13.05.2012] [Комментариев: 0]