Re: Вопросы по программированию игр

ого, придется все отлавливать, учитывая, что я все через переменные пишу а не через функции движка)) спасибо)

1,227

Re: Вопросы по программированию игр

Та ничего, поможем если что.

1,228 (edited by i-kerber 2014-02-05 15:45:27)

Re: Вопросы по программированию игр

Такой вопрос; как правильно:
forcedsc или forcedsk,
dsc или dck?
В документации и так и так встречается.
Да и в некоторых  *.lua - файлах.

1,229

Re: Вопросы по программированию игр

Баг в  доках. Где именно?

forcedsc
dsc

Это правильно

1,230

Re: Вопросы по программированию игр

Кхм, пробовал менять dsc через значения global'ных переменных - в общем и целом это работает, но возникла проблема переключения этого значения и dsc соответственно. Непосредственно сама проблема: интерпретатор сообщает, что ссылка по {Клик!} неверна. По задумке через act должны была меняться переменная, так что тут встал вопрос. Кто-то знает, как лучше всего обойти эту проблему или же необходимо переписать и реализовать по-другому?
Конкретика:


innotebook = room {
             nam = 'Ноутбук',
             dsc = function()
                        if picture == 0 then
                              p ([[{Клик!}]], img 'images/1.png' );
                        elseif picture == 1 then
                              p ( img 'images/2.png' );
                        elseif picture == 2 then
                              p ( img 'images/3.png' );
                        elseif picture == 3 then
                              p ( img 'images/4.png');
                              end;
                              end;
             act = function(s)
                        if picture == 0 then
                              picture = 1;
                        elseif picture == 1 then
                              picture = 2;
                        elseif picture == 2 then
                              picture = 3;
                        elseif picture == 3 then
                              picture = 0;
                              end;
                              end;
};

Заранее благодарю за ответ.

1,231

Re: Вопросы по программированию игр

Как обычно - прошу рабочий законченный короткий пример. Иначе - гадания. smile
p.s. по указанному примеру могу только сказать, что так как act пустой (ничего не возвращает), то надо вернуть хоть что-то, чтобы показать, что состояние игры изменилось, например: return true

1,232 (edited by Ларс 2014-02-06 19:14:05)

Re: Вопросы по программированию игр

Да, конечно, вот кусок полностью:


global {
            picture = 0
},

mbedroom = room {
           nam = 'Спальня',
           enter = [[*текст*]],
           dsc = [[*текст*]],
           obj = {
                  'garderob',
                  'notebook',
                  },
};

garderob = obj {
           nam = 'Гардероб',
           dsc = [[Рядом стоит {комод}, а на нём]],
           act = [[*текст*]],
};

notebook = obj {
           nam = 'Ноутбук',
           dsc = [[лежит {ноутбук}.]],
           act = function(s)
                     p[[Я включил ноутбук.]];
                     walkin(innotebook);
                     end;                     
};

innotebook = room {
             nam = 'Ноутбук',
             dsc = function()
                        if picture == 0 then
                              p ([[{Клик!}]], img 'images/1.png' );
                        elseif picture == 1 then
                              p ([[{Клик!}]], img 'images/2.png' );
                        elseif picture == 2 then
                              p ([[{Клик!}]], img 'images/3.png' );
                        elseif picture == 3 then
                              p ([[{Клик!}]], img 'images/4.png');
                              end;
                              end;
             act = function(s)
                        if picture == 0 then
                              picture = 1;
                        elseif picture == 1 then
                              picture = 2;
                        elseif picture == 2 then
                              picture = 3;
                        elseif picture == 3 then
                              picture = 0;
                              end;
                              end;
};

1,233

Re: Вопросы по программированию игр

Я не придираюсь, но уже неоднократно писал, что мне нужен рабочий пример. Чтобы я мог его запустить. Это значит, дб файл, который можно запустить в инстеде без правок и телепатии. Прошу понять меня правильно.
А тут снова какой то кусок.

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

1,234

Re: Вопросы по программированию игр

Вообще, in notebook это комната. В инстеде нельзя так делать. Грубо говоря, ссылки работают только если это dsc объектов, которые находятся в комнате, или xact.

1,235 (edited by kerber 2014-02-06 21:58:46)

Re: Вопросы по программированию игр

Ноутбук, да.


-- $Name:Ноутбук$
instead_version "1.7.0"
require "xact"
require "para"
require "dash"
require "quotes"
require "hideinv"
game.codepage="UTF-8";
global {
            picture = 0
}

main = room {
           nam = 'Спальня',
           enter = [[*текст*]],
           dsc = [[*текст*]],
           obj = {
                  'garderob',
                  'notebook',
                  },
};

garderob = obj {
           nam = 'Гардероб',
           dsc = [[Рядом стоит {комод}, а на нём]],
           act = [[*текст*]],
};

notebook = obj {
           nam = 'Ноутбук',
           dsc = [[лежит {ноутбук}.]],
           act = function(s)
                     walkin(innotebook);
                    end;                     
};
click = obj {
    nam = 'click',
        dsc = function()
            if picture == 0 then
                p ([[{click|Включить ноутбук.}]] );
            elseif picture == 1 then
                p ([[{click|Клик!}]], 'img images/1.png');
            elseif picture == 2 then
                p ([[{click|Клик!}]], 'img images/2.png' );
            elseif picture == 3 then
                p ([[{click|Клик!}]], 'img images/3.png' );
            elseif picture == 4 then
                p ([[{click|Клик!}]], 'img images/4.png');
            end;
        end;
     act = function(s)
                        if picture == 0 then
                              picture = 1;
                        elseif picture == 1 then
                              picture = 2;
                        elseif picture == 2 then
                              picture = 3;
                        elseif picture == 3 then
                              picture = 4;
                        elseif picture == 4 then
                              picture = 0;
                        end;
                        p '';
                    end;
};
innotebook = room {
             nam = 'Ноутбук',
             dsc = [[]];
             obj = {'click'}
};

1,236

Re: Вопросы по программированию игр

Kerber, да, именно, большое спасибо.

Peter, вопрос снят, извиняюсь за задержку.