Ну да, и основной массив символьный, так что автор про него знал. Но если символьный требует написания все время CHR() и ORD() для битовых операций, например, то понятно почему могло захотеться просто махнуть рукой и взять 16-битный целый. Тем более, что влезло.
- - - Добавлено - - -
Кольцо безусловно становится проклятым после снятия. Наверное и так нет смысла его снимать, но странно.
Больше игр нет
VAR22 - типа новый этажКод:'U': begin { вызвать джинна } if (not VAR46) <> false then begin WRITE('Что, влип? ладно, попробую тебя перенести отсюда. только дороговато это встанет... Ты готов? '); READCHAR(VAR53); if VAR53 <> 'N' then begin for VAR16:=1 to 5 do begin IND[VAR16]:=IND[VAR16]-RANDOM(0,15); end; for VAR16:=1 to 6 do begin {L34504} RUKSAK[VAR16]:='.'; end; VAR12:=RANDOM(2,15); VAR14:=RANDOM(2,31);
Но указатели ставим по старому (VAR4) этажуКод:VAR22:=RANDOM(0,8);
И только сейчас начинаем разбираться с новым?? Если что, то L03362 выставляет указатели только при перемещении между этажамиКод:V11070:=@F[VAR4,VAR12,VAR14]; V33074:=@F2[VAR4,VAR12,VAR14];
И кстати, наверное можно было сделать и так - VAR22:=RANDOM(0,VAR4);
Код:if VAR22 > VAR4 then VAR22:=VAR4; VAR4:=VAR22; L03362('J'); { Обновить экран } end; end else WRITELN('Джинн в отгуле'); end;
Да, это очевидная ошибка. Но она ни на что не влияет -- новые указатели никак не используются и будут прописаны правильными значениями в начале следующей итерации игрового цикла.
Можно. И это лучше соответствует идее. Но оригиналный код будет чаще телепортировать на текущий уровень подземелья, т.е. это изменяет игровую механику.
Всё зависит от RANDOM
- - - Добавлено - - -
VAR22 у нас не меняет только ленивый и в момент разборки с перемещающимся зверем оно вполне может быть 0 или 1. Как и VAR24. Так же вполне может оказаться, что Y или X координаты зверя совпадают с Y или X координатой игрока. И тогда в VAR22 или в VAR24 останутся старые 0 или 1.Код:for VAR16:=1 to 4 do begin {L36262} if V33122[VAR16] <> ' ' then begin {L36322} if (V33136[VAR16] <> VAR12) or (V33146[VAR16] <> VAR14) then begin {L36344}
И вот тут мы сажаем зверя по возможной координате с 0 или 1 - если сильно повезёт.Код:if VAR12 > V33136[VAR16] then {L36434} VAR22:=V33136[VAR16]+1 {L36460} else if VAR12 < V33136[VAR16] then {L36506} VAR22:=V33136[VAR16]-1; {L36532} if VAR14 > V33146[VAR16] then {L36554} VAR24:=V33146[VAR16]+1 {L36600} else if VAR14 < V33146[VAR16] then {L36626} VAR24:=V33146[VAR16]-1; {L36652} if (F[VAR4,VAR22,VAR24] in ['!','-']) and ((V33126[VAR16] and 6) = 4) then {L36674} V33122[VAR16]:=' ' else begin F[VAR4,V33136[VAR16],V33146[VAR16]]:='.'; CURSORTO(V33136[VAR16],V33146[VAR16]); WRITE('.'); F[VAR4,VAR22,VAR24]:=V33122[VAR16]; CURSORTO(VAr22,VAR24); WRITE(V33122[VAR16]); F2[VAR4,VAR22,VAR24]:=V33126[VAR16];
После чего на следующем цикле перемещения он вполне может снести нам краевое ограждение. И у нас образуется дырка в стене за пределы игрового мира. Хороших блужданий в реальном миреКод:V33136[VAR16]:=VAR22; V33146[VAR16]:=VAR24; CURSORTO(18,0); WRITE(CHR(33B),CHR(113B)) end; end; end; end;
- - - Добавлено - - -
Вполне себе достижимый. И переставить не игрока, а убегающего зверя.Код:end else if (PROBE_FLAG_PTR^ and 6) = 2 then begin { Недостижимый код, см. выше } { Попытка переставить игрока на случайную соседнюю ячейку ??? } TMP_Y:=RANDOM(1,3)-2+MAP_Y; TMP_X:=RANDOM(1,3)-2+MAP_X;
А теперь вопрос знатокам - убегающий зверь виден на карте? После того как он сбежал из точки, куда встал игрок? Перерисовки зверя на новом положении я не вижу, но если сделать общую перерисовку, то он появляется...
- - - Добавлено - - -
В общем, от значительной части глобальных переменных избавился и основные косяки вроде вычистил
http://www.KpXX.Ru/Soft/Games/StalkerКод:Подземелье 1 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Рейтинг 0 ! @ . . . . . . . . . . . . . . . . . . . . . . . . . . . !Энергия 25 ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . !Оружие 0 ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . !Защита 0 ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . !В банке 0 ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ! ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . !Вредность 1 ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ! ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . ! Рюкзак: ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ! ] ( < . . . ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ! ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ! ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ! ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ! ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Прогнивший пол провалился...З в е р ь !
да, иначе как его догонять? но - он замирает однажды и / или его надо подловить на диагоналях...
а если ты на него встал как он может быть виден? его жарить надо тогды "Ы"
то что зверь стены крушит - это не баг, а ФИЧА )))
Глобальные переменные зло!!! )))
- - - Добавлено - - -
будет Сталкер под RSX ? Надо бы тогда там правильные надписи вернуть - убрать трупы девушек и снусмумриков со спектрумами и в хэлпе опечатку поправить !!!
насколько я помню зверь ломает всё, но при попытке выйти туда игроком там будет стена всё равно,
выглядело вроде бы так (кирку / золотой шар не найдёшь, не проверишь)
-----
----ю---
- - - Добавлено - - -
бегающий зверь вообще всё ЕМНИП стирает - любые предметы под собой!!!
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)