Показать сообщение отдельно
Старый 20.09.2005, 09:49   #920
BORISOFF

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

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

2marazmus:
B_функции, кроме возврата TRUE/FALSE
не совсем так. Проанализировав несколько подобных функций можно сделать вывод, что:
1. C - функции типа "int", то есть возвращающие значение, которые также могут содержать действия
Например:


func int C_Addon_Knows_Schnaps()
{
     if ((условия))
     {
           return TRUE;
     }
     else
     {
           return FALSE;
     };
};

2. B - функции типа "void", которые никаких значений не возвращают, а содержат в себе только какие-то определенные действия:


func void B_Addon_PiratesGoHome()
{
     Skip.aivar[AIV_PARTYMEMBER] = FALSE;
     ...
     AlligatorJack.aivar[AIV_PARTYMEMBER] = FALSE;
     ...
     B_StartOtherRoutine (BenchPirate, "START");
};


3. Evt - функции типа "void", значений не возвращают. Отделены от "B" функций потому что они вызываются из ZEN-файла, то есть игрового мира. Наиболее частое приминение - вызов из скрипт-триггера, например:


func void evt_open_door_library_s1()
{
     if (EVT_OPEN_DOOR_LIBRARY_S1_OneTime == FALSE)
     {
           Snd_Play ("DEM_Die");
           Wld_InsertNpc (Skeleton, "FP_ROAM_NW_KDF_LIBRARY_19");
           ...
               Wld_InsertNpc (DemonLord, "FP_ROAM_NW_KDF_LIBRARY_20");
           EVT_OPEN_DOOR_LIBRARY_S1_OneTime = TRUE;
     };
};


4. G - функции типа "void". Я пока не разобрался, почему они отделены, но явно видны следующие отличия - в скобках идет объявление переменных, основное назначение в скриптах Готики - вывод звуков и текста на экран:


func void G_CanNotCast(var int bIsPlayer,var int nCircleNeeded,var int nCirclePossessed)
{
     var string strMessage;
       ...
     strDifference = IntToString (nDifference);
     ...
     if (bIsPlayer)
     {
           Print (strMessage);
     };
};


Хотя это все очень условно :) Вот, например, есть G-функция, которая по идее должна быть С-функцией:


func int G_CanSteal()
{
     return TRUE;
};
Ответить с цитированием