• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток!
    Стартовал новый литературный конкурс от "Ордена Хранителей" - "Пираты Миртанского моря".
    Каждый может принять в нём участие и снискать славу и уважение, а в случае занятия призового места ещё и получить награду. Дерзайте
  • Дорогие друзья, год подходит к концу, и пришло время подвести его итоги и наградить достойных

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

Вопросы по скриптингу

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
  • Первое сообщение
  • #1
Прежде чем задавать вопросы, ознакомьтесь с документацией..
1) Читать онлайн
2) Архив с офлайн-версией(chm) во вложении
 

Вложения

  • Vam_tutor.rar
    171,6 KB · Просмотры: 578
Последнее редактирование модератором:

Bjorn++

Участник форума
Регистрация
28 Июн 2011
Сообщения
1.063
Благодарности
46
Баллы
235
1
Лучше так сделай:
1) Сделай резервную копию своего Story_Globals.d
2) Открываешь в ГС свое решение и удаляй оттуда Story_Globals.d (в появившемся окне выбираешь "удалить с диска")
3) Вставляешь заготовленный в п. 1 Story_Globals.d. и при выборе места, где скрипт будет прописан в gothic.src ставишь после Story\XP_Constants.d (нажимаешь на XP_Constants.d и ОК)
Сделал всё как ты сказал (правда мне пришлось ещё и XP_Constants вставить, т.к. его тоже не было. Болванка ибо ;), скачанная на этом форуме), но ошибка не исчезла! :(

PS. Всё работало до того, как я перенёс доспехи с оригинальных скриптов. От сюда и пошли ошибки. И не понимаю почему...
 

Beowulf

Участник форума
Регистрация
21 Ноя 2010
Сообщения
1.954
Благодарности
1.488
Баллы
465
Корректируй свой gothic.src по этому списку
 

Вложения

  • gothic_src.txt
    8,9 KB · Просмотры: 172

Beowulf

Участник форума
Регистрация
21 Ноя 2010
Сообщения
1.954
Благодарности
1.488
Баллы
465
Как я понял, те функции именно за это отвечали.
Да кривой порядок скриптов в gothic.src у тебя был скорее всего. Не просто же так задается последовательность.
 

Bjorn++

Участник форума
Регистрация
28 Июн 2011
Сообщения
1.063
Благодарности
46
Баллы
235
Да кривой порядок скриптов в gothic.src у тебя был скорее всего. Не просто же так задается последовательность.
Из-за порядка могут быть подобные ошибки?
Допустим, в твоём файле, который ты скинул, указано:
_INTERN\CONSTANTS.D
_INTERN\CLASSES.D

Однако, у меня всё как-раз наоборот. Но не думаю, что это сильно на что-то влияет. Да и как переставить их - понятия не имею.
 

Beowulf

Участник форума
Регистрация
21 Ноя 2010
Сообщения
1.954
Благодарности
1.488
Баллы
465
Из-за порядка могут быть подобные ошибки?
Разумеется. В какой последовательности написаны там скрипты, в таком порядке и будет движок к ним обращаться.
Всегда сперва надо создать переменную (var int MILArmor_Equipped), а потом уже в скриптах (IT_Armor) ее использовать. Но никак не наоборот.
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.577
Благодарности
4.171
Баллы
915
Вообще-то порядок компиляции скриптов задан в файле Gothic.src, причём для G1 и G2 сначала обрабатывается _Intern\Constants.d, а затем _Intern\Classes.d. Поэтому Beowulf прав: для работающего за один проход компилятора важен порядок обработки скриптов, т.к. попытка использования константы / переменной / класса / прототипа / инстанции, объявленной в скрипте, который будет обработан позже, приведёт к ошибке компиляции вида "я вас в упор не вижу".
 

Bjorn++

Участник форума
Регистрация
28 Июн 2011
Сообщения
1.063
Благодарности
46
Баллы
235
Вообще-то порядок компиляции скриптов задан в файле Gothic.src, причём для G1 и G2 сначала обрабатывается _Intern\Constants.d, а затем _Intern\Classes.d. Поэтому Beowulf прав: для работающего за один проход компилятора важен порядок обработки скриптов, т.к. попытка использования константы / переменной / класса / прототипа / инстанции, объявленной в скрипте, который будет обработан позже, приведёт к ошибке компиляции вида "я вас в упор не вижу".
Да, но как мне выставить правильный порядок?
Я вот сделал копию скриптов, удалил из папки _intern файлы -
CONSTANTS.D
CLASSES.D

Затем попытался вставить их в правильной очереди, но они всё-равно ставятся совершенно наоборот.
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
Да, но как мне выставить правильный порядок?
Я вот сделал копию скриптов, удалил из папки _intern файлы -
CONSTANTS.D
CLASSES.D

Затем попытался вставить их в правильной очереди, но они всё-равно ставятся совершенно наоборот.
Тогла просто поменяй эти строки местами в Gothic.src обычным текстовым редоктором. НО!!! не при этом не должен быть запущен GS.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Просто квадрофейспалм, серьезно, вы 10+ постов подряд обсуждаете какую то хрень, когда это можно было просто объяснить как сказал кроу, но нет, надо объяснять так, что даж мне не понятно=/

Кстати о скриптпакетах, есть тут знатоки икарусов среьезные? Вот такой к вам вопрос, если вы конечно есть, а возможно ли средствами икарусов юзать класс zCEventManager и соотв. zCEventMessage(для отправки ивент-сообщений менеджеру, типа EV_EQUIPARMOR и тд)
 
Последнее редактирование модератором:

НастасьСанна

Участник форума
Регистрация
6 Дек 2012
Сообщения
350
Благодарности
521
Баллы
325
Сами классы zCEventManager и zCEventMessage в Икарусе не описаны. Есть функция для получения указателя на EventManager из указателя на соответствующий vob, нужные функции можно подключить по адресам.
В общем, юзать можно, если разобраться как.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Скрины обнови же!
 

enil9

Участник форума
Регистрация
25 Май 2014
Сообщения
67
Благодарности
14
Баллы
165
У zCVob(например `Жила руды`) в Spacer-е есть св-ва:
hitpoints=int:20 isDestroyed=bool:0 возможность-ли добраться до них
через скрипты?
... AST про него где можно почитать?
 
Последнее редактирование:

Ziptar

Участник форума
Регистрация
13 Июл 2007
Сообщения
683
Благодарности
54
Баллы
200
maggi1221,
используется и работает в РебалансеV2 и Slash'n Craft. И никаких проблем с ним нет.
Прочитав шапку темы я понял почему тогда мой мааааленький фиксик сломал нафиг выносливость в ребалансе:D:D:D
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.577
Благодарности
4.171
Баллы
915
В процессе работы над неофициальным обновлением для G2a я столкнулся с проблемой: персонажи, которые являются друзьями ГГ (npcType = NPCTYPE_FRIEND);), не обращают внимания на превратившегося в зверя ГГ. Считаю это ошибкой ИИ, потому что NPC не может знать, кто перед ним: настоящий зверь или человек в облике зверя. Прошу знатоков подсказать мне, как можно исправить эту ошибку. Например, я пробовал добавить проверку на ГГ в превращённом состоянии в скрипт AI\Human\B_Human\B_AssessEnemy.d:
if(Npc_IsPlayer(other) && (self.npcType == NPCTYPE_FRIEND) && (PlayerIsTransformed == FALSE))
{
return FALSE;
};
Но это не помогло - друзья продолжают смотреть на превращённого ГГ как на пустое место. Реагируют только тогда, когда получат от него повреждение.
 
Последнее редактирование:

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.577
Благодарности
4.171
Баллы
915
Добавил проверку в функцию B_AssessPlayer():
Код:
            if(((self.aivar[AIV_PARTYMEMBER] == FALSE) && (self.npcType != NPCTYPE_FRIEND)) || ((Npc_IsPlayer(other) && (self.npcType == NPCTYPE_FRIEND) && (PlayerIsTransformed == TRUE))))
            {
                B_Attack(self,other,AR_GuildEnemy,0);
                return;
            };
Теперь друзья тоже атакуют ГГ в облике зверя. Также вставил недостающий оператор return:
Код:
    if(C_PlayerIsFakeBandit(self,other) && (self.guild != GIL_BDT))
    {
        B_Attack(self,other,AR_GuildEnemy,0);
        return;
    };
 
Последнее редактирование:

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
В процессе работы над неофициальным обновлением для G2a я столкнулся с проблемой: персонажи, которые являются друзьями ГГ (npcType = NPCTYPE_FRIEND), не обращают внимания на превратившегося в зверя ГГ.
И в чем здесь ошибка? По моему это глупость какая-то.. они и не должны обращать внимания и/или знать кто перед ними..
1. В игре нет факторов превращения перед/или в отсутствии посторонних.
2. Нпс по определению не могут знать кто перед ними в обращенном состоянии(если только не предположить, что им в задницу встроены сканеры ДНК).
3. Если превратился и в тебе видят зверя, значит хорошо превратился(создал закл).
По-этому, то что кажется ошибкой таковой не является, с точки зрения игровой логики уж точно..
 

Vlad_Torop

Участник форума
Регистрация
2 Май 2014
Сообщения
873
Благодарности
501
Баллы
245
Помогите разобраться:
В B_AssessMurder прописано:
if((victim.guild == GIL_SHEEP) && (victim.aivar[AIV_ToughGuy] == FALSE) && (self.guild == GIL_BAU))
{
if(C_WantToAttackSheepKiller(self,other))
{
B_Attack(self,other,AR_SheepKiller,0);
return;
}
else if(C_NpcIsGateGuard(self))
{
B_MemorizePlayerCrime(self,other,CRIME_SHEEPKILLER);
};
};
В котором: (victim.aivar[AIV_ToughGuy] == FALSE) означает условие,что жертва убита не крутым парнем.
Далее в C_NpcIsToughGuy прописано :
if(slf.guild == GIL_SLD) || (slf.guild == GIL_DJG) || (slf.guild == GIL_BDT) || (slf.guild == GIL_PIR)
{
return TRUE;
};
В котором: (slf.guild == GIL_DJG) причисляет ОнД к крутому парню.
Но когда я Марвином присваиваю для ГГ, гильдию ОнД,и убиваю овцу,свидетели на меня агрятся.
В чем загвоздка?
PS если вместо victim.aivar[AIV_ToughGuy] == FALSE поставить other.guild != GIL_DJG,все работает норм.
 
Последнее редактирование:
Сверху Снизу