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;
};