Показать сообщение отдельно
Старый 27.11.2013, 15:47   #5749
annya

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Gothic 1, 2, 3: Технические вопросы

2ElderGamer
Если планируется реализовать такую фичу только для силы, то достаточно одной переменной
Если только для ГГ, то да, но персов много.
Эксперимент с ГГ в PC_HERO.d:
Cпойлер(щелкните, чтобы прочесть):
var int STRENGTH_TEMP; //в 1-й строке
// далее в конце instance PC_Hero(Npc_Default)
STRENGTH_TEMP = attribute[ATR_STRENGTH];
* * * * * *if (attribute[ATR_HITPOINTS] < attribute[ATR_HITPOINTS_MAX])
* * * * * *{
* * * * * *Npc_ChangeAttribute(self,ATR_STRENGTH,-(STRENGTH_TEMP * attribute[ATR_HITPOINTS] / attribute[ATR_HITPOINTS_MAX]));
* * * * * *} // не лучше ли здесь поставить ;?
* * * * * *if (attribute[ATR_HITPOINTS] == attribute[ATR_HITPOINTS_MAX])
* * * * * *{
* * * * * *Npc_ChangeAttribute(self,ATR_STRENGTH,7); * // 7 - для экспериментальной проверки
* * * * * *};

В результате - в момент начала новой игры реализуется значение силы, рассчитанное по формуле, но далее нет никакой динамики при изменении здоровья.
Главная проблема - Реализация динамики изменения силы
Т.к. я планирую убрать обучение силе у учителей (нелепо, послушав болтовню, стать сильнее), у меня при повышении уровня увеличивается сила на 1 ед., то после перехода на новый level сила становится соответствующей MAX значению + 1 независимо от здоровья.
Т.е. формула работает только 1 раз в начале игры и всё.

2 All
Как отличить функции, которые вызываются в нужный момент, как запрограммировано в EXE-шнике от функций, вызываемых из скриптов?
Могу ли я написать свою функцию с произвольным именем и вызвать её?
Func STRENGTH_REAL()
{....};
Так правильно? Или надо "FUNC VOID (или FUNC INT)"?
Как избежать зацикливания?
Возможно ли использовать goto метка?
Спасибо
Ответить с цитированием