Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Muddyscript
DF2 :: ФОРУМЫ > Игровые форумы > Общий игровой форум > Экшн > Megamaze
Страницы: 1, 2
ChASnock
Если я использую act_hide с скрытой ямой, она остается на месте и так же исправно работает...
FBX
Плохо используешь, надо еще mov obj.wait,-1;

И не используй больше try, тебе еще рано crazy.gif
FBX
Чеснок, задрал посты удалять
ChASnock
Цитата
А зачем? Перезаписать их и все.


Хорошо. А когда мне создавать переменные? Поставить около Морды "невидимку" и на него скрипт? Но тогда игрок может зайти на это место еще раз, в результате все настройки собьются в первоначалку. Остается только один выход - хранить факт использования переменной. Теперь, FBX, ты понимаешь, зачем я использую try?

Предопредели хотя бы одну переменную, которая при каждом старте будет удаляться. Тогда все встанет на свои места.
FBX
msg 'Start!'; mov target.cmd,'';

Добавлено ([mergetime]1277751402[/mergetime]):
А то что можно в глобальные переменные что-нибудь записать, не дошло?

В стартовой области они все обнуляются.

В управляющей сравниваются с нулем и ставятся на 1.
ChASnock
banghead.gif блиин... во тупой
не мог сразу додуматься

Правильно говорят, что когда мозги засыхают, они не работают, а они засыхают, когда долго-долго до глубокой ночи втыкаешь в комп......

Добавлено ([mergetime]1277751845[/mergetime]):
Я все еще регулярно получаю ругательства компа, инвалид поинтер оператион или, например, акцесс виолатион. реад оф аддресс 00000000.
ChASnock
Цитата(FBX @ 28 Jun 2010, 22:37)
Цитата
Внимание, люди! Не нарвитесь на проблемы!!!
При использовании act_destroy при (пере)загрузке любой карты генерится exception Invalid Pointer Operation, а в последствии и различного вида Access Violations!


Так вот откуда та "бага с пробелом".


Между прочим, она вылезает в любом случае (даже без использ. act_destroy, когда хочет, тогда и вылезает)
gamecreator
Цитата(FBX @ 28 Jun 2010, 18:49)
Что за странный допрос, если на нее наступили 1 раз, она срабатывает 1 раз. Если на нее наступили много раз, она сработает столько раз, сколько на нее наступили.
а разве когда игрок у тебя проваливается в яму, он не наступает на целевую клетку?

Цитата(ChASnock @ 28 Jun 2010, 21:36)
Воттак:
try mov start, start; else {global int, 'start'; msg 'Start!';};
Таким образом, сообщение выводится только один раз.
ты больной человек
ChASnock
Цитата(gamecreator @ 29 Jun 2010, 11:19)
Цитата(ChASnock @ 28 Jun 2010, 21:36)
Воттак:
try mov start, start; else {global int, 'start'; msg 'Start!';};
Таким образом, сообщение выводится только один раз.
ты больной человек

biggrin.gif может, у меня совсем другое строение мозга, чем у тебя
Это один из возможных способов, он пришел мне в голову первым, и мне кажется, что он самый легкий.
gamecreator
использовать системные ошибки для корректной работы программы - ужаснейший стиль программирования.
ChASnock
это не системные ошибки..

и вообще: все в мире сделано из одной материи, из одинаковой энергии, ничто нельзя различить, это только иллюзия, что в мире существуют разные вещи, все едино gigi.gif

Добавлено ([mergetime]1277789549[/mergetime]):
Ну я же использую try, и по идее все должно прекрасно работать (если только интерпретатор норм. функционирует).

Да я, когда незнал функцию FileExists(filename: string): boolean; , то использовал следующий код:

Код
procedure ...;
var
  F: TextFile;
  ...
begin
  ...
  AssignFile(F, 'testfile');
  try
    Reset(F);
  except
    // файл не существует:
    Exit;
  end;
  // файл существует:
  ...
end;


Добавлено ([mergetime]1277789955[/mergetime]):
А как скриптом отключить препятствия? А?


Добавлено ([mergetime]1277790686[/mergetime]):

И вообще: надо сделать команды, которые изменяют
стенки, туман, темноту, воду, исследование

Предлагаю придумать новый тип -- tile.

Код
int flags; // флаги местности (те которые стоят в файлах карт в секции "описание местности")
obj top; // самый верхний объект, стоящий в клетке

И в obj надо добавить поле down: указывает на объект чуть ниже себя или nil.
ChASnock
Юзаю owner.player.gold, пишет что недопустимо
owner.player.gold всегда возвращает 3
FBX
Цитата
а разве когда игрок у тебя проваливается в яму, он не наступает на целевую клетку?


Неа, некоторые объекты в целевой клетке могут помешать срабатыванию ямы, но в остальном да - он на нее не наступает, он просто там оказывается. Наступить можно дополнительно клавишей Enter, если там например оружие лежит.

Цитата
Юзаю owner.player.gold, пишет что недопустимо
owner.player.gold всегда возвращает 3


Во-первых, я эту версию не залил вроде еще, во-вторых, вторая точка пока не работает - нужно сохранить игрока в отдельную переменную, чтобы работало.

Цитата
И вообще: надо сделать команды, которые изменяют
стенки, туман, темноту, воду, исследование


Будет

Цитата
А как скриптом отключить препятствия? А?


act_switch (желательно с mov obj.wait,-1; )

Цитата
Между прочим, она вылезает в любом случае (даже без использ. act_destroy, когда хочет, тогда и вылезает)


На каких картах, сколько окон игры загружено, сколько памяти ест в диспетчере задач, не связано ли со взятием компа?
ChASnock
mov owner.act, act_switch; , что ли, я так понял?

Добавлено ([mergetime]1277800201[/mergetime]):
Цитата(FBX @ 29 Jun 2010, 14:14)
На каких картах, сколько окон игры загружено, сколько памяти ест в диспетчере задач, не связано ли со взятием компа?


На любых, (вроде) одно, так как обычно (4.1 MB), нет.

Когда берешь комп, спокойненько переходит на след. уровень. А когда жмешь space (чтоб перезаг.), выходит ошибка сокета, давай, FBX, посмотри там код нажатия space
tolich
Цитата(ChASnock @ 29 Jun 2010, 08:51)
когда не знал функцию FileExists, то использовал следующий код:...
Это не одно и то же. FileExists работает через FindFirstFile, а, значит, вполне может находить файлы с вилдкардами в имени. А Reset кинет исключение, типа "файл не найден".
ChASnock
Цитата(tolich @ 30 Jun 2010, 02:29)
Цитата(ChASnock @ 29 Jun 2010, 08:51)
когда не знал функцию FileExists, то использовал следующий код:...
Это не одно и то же. FileExists работает через FindFirstFile, а, значит, вполне может находить файлы с вилдкардами в имени. А Reset кинет исключение, типа "файл не найден".


Полюбачу мне не нужны были файлы *.txt, так что ничего.


Добавлено ([mergetime]1277896347[/mergetime]):
Ааа! Я понял, почему вылезает баг с пробелом, он вылезает если карта изменялась с первой загрузки.
Etoprostoya
Опять ты со своими заморочками. smile.gif Когда играешь в карту, не редактируй её параллельно игре.
ChASnock
huh.gif blink.gif А как мне тестить карту, когда делаешь ее?
Etoprostoya
Отредактировал карту - сохраняй и играй заново.
ChASnock
в смысле? я так и делаю

P. S.: если ты хочешь сказать, что мне надо закрывать игру и открывать снова, то я скажу: это очень неудобно, поверь
gamecreator
перезагружайся не пробелом
ChASnock
а чем?
gamecreator
через меню
ChASnock
Нетушки smile.gif, я проверил - все одно и тоже (то есть если через меню то все равно ошибка)
gamecreator
значит ФБХ так написал функцию загрузки игры и она не переоткрывает файл. или это козни делфи.
FBX
наверное я хотел пофиксить возможность изменения карты во время игры на сервере
ChASnock
ну там же есть вроде опция "Запретить изменения". так она там у тя не учитывается что ли?
gamecreator
так она совсем другое значит
FBX
Это запрещает игрокам менять свои параметры после подключения вообще-то. Кстати, хинт должен быть на этом чекбоксе
ChASnock
Хмм... а разве можно поменять свои параметры после подключения?
gamecreator
ну да
ChASnock
ну дык добавьте другой...

... чекбокс bad.gif (что за каменновечные выражения )
FBX
Другой чекбокс с чем? И как его, по-твоему, надо называть?
ChASnock
>как называть
Ну хотяб поприличнее, например, флажок, ...
>с чем
... с надписью (и с действиями) "Разрешить изменение карты" gigi.gif

мда bad.gif, получилось как-то не очень...
FBX
а я разве не пофиксил тот баг?
FBX
С помощью мутноскрипта воссоздал алгоритм генерации лабиринтов из пещер монстров:

CODE

@generate_lab;
local int,'i';
local int,'j';
loop_up i,1,m_w, //заливка стеной
loop_up j,1,m_h,
set_lev 0,i,j,[get_lev 0,i,j]|gf_wall;
loop_up i,0,m_w:2-1, //инициализация импровизированного массива
loop_up j,0,m_h:2-1,
local int,'n'+i+'_'+j,0;
global int,'count',0;
process_dig 0,target.x-1:2,target.y-1:2;

@process_dig int,int,int; //0,nX,nY - в ужатых координатах
if [v n"v1"_"v2"], break;
local int,'i';
local int,'k';
local int,'bx',v1+1*2;
local int,'by',v2+1*2;
mov n"v1"_"v2",1;
put_object bx,by;
loop_up i,0,3, {
mov k,[select_direction 0,v1,v2];
ifless k, break; //хе-хе, писать if k=-1 недопустимо
if k=0, {
put_object bx,by-1;
process_dig 0,v1,v2-1;
};
else if k=1, {
put_object bx+1,by;
process_dig 0,v1+1,v2;
};
else if k=2, {
put_object bx,by+1;
process_dig 0,v1,v2+1;
};
else if k=3, {
put_object bx-1,by;
process_dig 0,v1-1,v2;
};
};

@put_object int,int; //X,Y - удалить стену в координатах
set_lev 0,v0,v1,[get_lev 0,v0,v1]&(gf_wall)!;

@select_direction int,int,int; //без параметров,возвр.направление
local int,'i';
local int,'c',0;
local int,'lst0',1;
local int,'lst1',1;
local int,'lst2',1;
local int,'lst3',1;
mov v0,-1; //v1 и v2 должны остаться от process_dig
if v1=0, mov lst3,0; else if [v n"(v1-1)"_"v2"], mov lst3,0;
if v2=0, mov lst0,0; else if [v n"v1"_"(v2-1)"], mov lst0,0;
if m_w:2-1=v1, mov lst1,0; else if [v n"(v1+1)"_"v2"], mov lst1,0;
if m_h:2-1=v2, mov lst2,0; else if [v n"v1"_"(v2+1)"], mov lst2,0;
loop_up i,0,3,
if [v lst"i"], inc c;
mov c,[random c];
loop_up i,0,3,
if [v lst"i"], {
if c=0, {
mov v0,i;
break;
};
else dec c;
};


Результат работы:


Прорисовка градиента:
Код
@gradient_floor int,int,int,int,int,int,int; //уровень, R,G,B основного цвета, r,g,b другого цвета
local int,'i';
local int,'j';
local real,'k';
loop_up i,1,m_w,
loop_up j,1,m_h, {
 mov k,[mod i-20]+[mod j-12]:29; //коэфф.интенсивности

 set_lev v0,i,j,[get_lev v0,i,j]&255|(
 v1+[round (v4-v1)*k]+(v2+[round (v5-v2)*k]<8)+(v3+[round (v6-v3)*k]<16)
 <8); //обрезанный цвет смещаем на его место и пристыковываем
};


Результат работы:

Kislolord
Сцупер
ChASnock
Цитата(FBX @ 16 Jul 2010, 04:07)
хе-хе, писать if k=-1 недопустимо


А
Код
if k=(0-1)
допустимо?
FBX
Да, также допустимо
Код
if k=(-1)
FBX
Вот так... убрал отсюда фигню, теперь она обновленная и на сайте.
FBX
Новый официальный код респауна объектов. Работать будет в любой версии, хоть и немного некрасиво.

Код
//в начале скрипта
local int,'i';
loop_up i,0,lev_count-1, setup_recreate i;

//в конце скрипта
@setup_recreate int;
mov target,[obj v0,-1,-1,-1,-1];
while 1, {
 mov target,[obj -1,-1,-1,25,-1,target];
 if [cmp target,nil], break;
 mov target.OnDamage,'recreate;';
};
@recreate;
local int,'t',target.t;
if (t=1)|(t=3)|(t=4)|(t=8)|(t=11)|(t=12)|(t=13)|(t=15)|(t=16)|(t=18)|(t=21)|(t=22)|(t=24)|(t=25)|(t=27)|(t=28),
if [pos 'recreate',target.cmd], raise 'У объектов такого типа нельзя размещать recreate в редакторе.';
local obj,'new',[create_obj owner.lv,target];
mov new.act,act_hide;
mov new.wait,400+[random 400]; //настройка времени респауна здесь
mov new.next,target.next;
mov target.next,new;


Карты, не тестировавшиеся именно с таким кодом, в дистрибутив включены не будут, и тем более не будут запущены на сервере.
FCst1
А сингл-карт этот скрипт касается?
FBX
Он касается респауна, если он по какой-то причине используется в сингле, то да
ChASnock
Слыште, запилите-ка свойство объекта OnTick: скрипт выполняется каждый тик
FBX
А зачем? Приведи интересный, годный пример, когда это событие вдруг стало бы актуально.
ChASnock
Ну просто надо. А когда бы стало актуально событие OnStart? (тем более изменение поля "OnStart" ничего не дает в игре).пардон) facepalm.gif
FBX
OnStart можно использовать иногда, чтобы не тащить скрипт-файл вместе с картой ради мелких настроек.

Ладно, сделаю. Но я не одобряю такие вещи из-за слишком высокой частоты их вызова - может тормозить начать, хотя это от объема кода зависит.
ChASnock
Так как заставить работать настройку платформы "игнор игроков", "игнор монстров" и т.д. (из этих флагов работает только 1 - неразрушимость)? И запили плиз исчо адын флаг: +128 - при нажатии включает препяцтвия (вместо отключения).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.