Показать сообщение отдельно
Старый 24.09.2007, 02:10   #1782
HikeR

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

По умолчанию Re: М: Скриптинг в Готике

пытаюсь скомпилировать предварительно разобранный gothic.dat от немки. имеется почти 60 ошибок "ф-ия должна возвращать значение". подскажите, как корректно поправить следущие скрипты:
1. два return в if-else
Cпойлер(щелкните, чтобы прочесть):
func int B_SetDayTolerance()
{
* * *if (Wld_IsTime (22, 0, 23, 59))
* * *{
* * * * * *return Wld_GetDay () + 1;
* * *}
* * *else
* * *{
* * * * * *return Wld_GetDay ();
* * *};
};

2. ни одного return-а
Cпойлер(щелкните, чтобы прочесть):
func int C_CanNewsBeSpread()
{
* * *PrintDebugNpc (PD_ZS_Check, "C_CanNewsBeSpread");
};

3. return в if
Cпойлер(щелкните, чтобы прочесть):
func int ZS_AssessQuietSound()
{
* * *PrintDebugNpc (PD_ZS_FRAME, "ZS_AssessQuietSound");
* * *C_ZSInit ();
* * *if (self.guild == GIL_MEATBUG)
* * *{
* * * * * *AI_ContinueRoutine (self);
* * * * * *return 0;
* * *};
* * *...
* * *тра-ля-ля
* * *...
};

4. вообще пусто
Cпойлер(щелкните, чтобы прочесть):
func int Info_Bartholo_PERM_Condition()
{
};


вот вроде все встречающиеся ситуации. как я понимаю, return обязательно должен присутствовать, иначе скрипт не будет допущен до компилирования.
если явно не задано значение можно ли возвращать что-то типа null?

Добавление от 09/24/07, в 02:14:22
такс. первый тип поборол примерно также, как в случае портирования кода на дельфи под FPC:
Cпойлер(щелкните, чтобы прочесть):
func int B_SetDayTolerance()
{
* * *var int i;
* * *i = 0;
* * *
* * *if (Wld_IsTime (22, 0, 23, 59))
* * *{
* * * * * *i = Wld_GetDay () + 1;
* * *}
* * *else
* * *{
* * * * * *i = Wld_GetDay ();
* * *};
* * *return i;
};

насколько это правильно?

Добавление от 09/24/07, в 02:30:55
второй как я понял лечится заменой типа int на void.
Ответить с цитированием