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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
    Скрыть объявление
  2. Форум аддона "Возвращение" 2.0:
    — Обсудить игру, почитать о прохождениях и/или разрешить свои вопросы по игре вы можете в одной из тем одноименного форума. Посетить...
    — Прочитать историю изменения и/или скачать последнюю версию аддона "Возвращение", вы можете на страницах наших ресурсов. Скачать...
    Скрыть объявление

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

Тема в разделе "Модостроение", создана пользователем Xentar, 25 фев 2008.

Модераторы: Marvіn, MEG@VOLT
  1. Mommyiamnotacow

    Mommyiamnotacow Участник форума

    Регистрация:
    4 ноя 2014
    Сообщения:
    105
    Благодарности:
    26
    Баллы:
    80
    Пол:
    Мужской
    Можете кидать в меня манго и бананы, поскольку в скриптинге хромаю как кузнеческий ишак на руси, но. Обьясните почему в скрипте отображения текста урона Возвращения 2.0 последнии 2 типа урона деляться на 10?
    Открыть спойлер

    if((OthWeap.flags & (ITEM_2HD_AXE | ITEM_SWD | ITEM_2HD_SWD)) == (OthWeap.flags & (ITEM_2HD_AXE | ITEM_SWD | ITEM_2HD_SWD)))
    {
    tmpDamage = tmpDamage + oDamage.arrDamageEffective[0] + oDamage.arrDamageEffective[1] + oDamage.arrDamageEffective[2] + oDamage.arrDamageEffective[3] + oDamage.arrDamageEffective[4] + oDamage.arrDamageEffective[5] + (oDamage.arrDamageEffective[6] / 10) + (oDamage.arrDamageEffective[7] / 10);
    }
     
  2. neromont

    neromont
    Модостроитель

    Регистрация:
    12 мар 2011
    Сообщения:
    290
    Благодарности:
    276
    Баллы:
    220
    Пол:
    Мужской
    Класс C_Item.
    Читал, что для численных свойств по умолчанию присваивается значение 0.

    Однако для свойства flags по умолчанию присваивается значение 8388672.

    Возможно по этому, в полях flags иногда ставится ноль, если флаги не используются.

    Откуда взялось это число?

    Понял, это не численное значение, а битовый массив :)
     
    Последнее редактирование: 7 янв 2017
  3. Gratt

    Gratt
    Модостроитель

    Регистрация:
    14 ноя 2014
    Сообщения:
    725
    Благодарности:
    733
    Баллы:
    135
    Пол:
    Мужской
    ты для начала поясни как ты получил это число вообще
     
  4. neromont

    neromont
    Модостроитель

    Регистрация:
    12 мар 2011
    Сообщения:
    290
    Благодарности:
    276
    Баллы:
    220
    Пол:
    Мужской
    Просто ввел для предмета вместо флага значение 0.
     
  5. Gratt

    Gratt
    Модостроитель

    Регистрация:
    14 ноя 2014
    Сообщения:
    725
    Благодарности:
    733
    Баллы:
    135
    Пол:
    Мужской
    ну ввел я значение 0.
    на экране тоже 0.
    может я че не понимаю? ты что делаешь вообще?
     
  6. neromont

    neromont
    Модостроитель

    Регистрация:
    12 мар 2011
    Сообщения:
    290
    Благодарности:
    276
    Баллы:
    220
    Пол:
    Мужской
    Ссылаюсь на объект и через Print вывожу значение поля.
     
  7. Gratt

    Gratt
    Модостроитель

    Регистрация:
    14 ноя 2014
    Сообщения:
    725
    Благодарности:
    733
    Баллы:
    135
    Пол:
    Мужской
    я тоже
     
  8. neromont

    neromont
    Модостроитель

    Регистрация:
    12 мар 2011
    Сообщения:
    290
    Благодарности:
    276
    Баллы:
    220
    Пол:
    Мужской
    Может быть меняется флаг объекта, когда я его использую. Я пробовал через поле on_equip. Может не подбирать объект, а просто вывести ItemName.flags клавишей М.
     
  9. Play_Now

    Play_Now Участник форума

    Регистрация:
    13 ноя 2009
    Сообщения:
    315
    Благодарности:
    108
    Баллы:
    210
    Пол:
    Мужской
    Хоть и не полезно, но вот что замечал
    В самой Готе предмету если присвоить значение ноль, при подборе этого предмета flags у него становиться 1024
    Например у Малой косы имеем flags 17410, ставим ноль, при подборе её нельзя одеть, автоматом ставиться 1024, с чем связано и на чем, непонятно.
     
  10. neromont

    neromont
    Модостроитель

    Регистрация:
    12 мар 2011
    Сообщения:
    290
    Благодарности:
    276
    Баллы:
    220
    Пол:
    Мужской
    0 выходит только в том случае, если предмет не вставлен в игру, т.е. его не существует.

    2 выходит, если предмет вставлен в игру.
     
    Последнее редактирование: 7 янв 2017
  11. ElderGamer

    ElderGamer
    Модостроитель

    Регистрация:
    16 апр 2008
    Сообщения:
    1.363
    Благодарности:
    834
    Баллы:
    260
    Если речь идёт о предмете, то при выбрасывании его из инвентаря ГГ у него устанавливается особый флаг (движком), чтобы неписи не воспринимали подбирание этого предмета, как воровство. Значение флага проверяется в функциях ИИ. Может, в этом причина непонятки?
     
  12. neromont

    neromont
    Модостроитель

    Регистрация:
    12 мар 2011
    Сообщения:
    290
    Благодарности:
    276
    Баллы:
    220
    Пол:
    Мужской
    Предмет вставлен функцией Wld_InsertItem. Вставлен далеко от ГГ.
     
  13. Gratt

    Gratt
    Модостроитель

    Регистрация:
    14 ноя 2014
    Сообщения:
    725
    Благодарности:
    733
    Баллы:
    135
    Пол:
    Мужской
    а, ну я понял про какую фигню вы тут бормочите. если предмет используется, ему там флаг типа эктив дается. никуда твои нули не деваются и дэфолтные значения ту ни при чем
     
  14. Gor

    Gor Участник форума

    Регистрация:
    26 дек 2009
    Сообщения:
    789
    Благодарности:
    421
    Баллы:
    230
    Пол:
    Мужской
    8388672
    Включены флаги: ITEM_KAT_DOCS, ITEM_NFOCUS
    Документ, не в фокусе

    17410
    Включены флаги: ITEM_KAT_NF, ITEM_DROPPED (INTERNAL!), ITEM_SWD
    Холодное оружие, выброшенное, меч

    1024
    Включены флаги: ITEM_KAT_NF
    Холодное оружие

    Поправьте, если где ошибся.
     
    neromont поблагодарил.
  15. neromont

    neromont
    Модостроитель

    Регистрация:
    12 мар 2011
    Сообщения:
    290
    Благодарности:
    276
    Баллы:
    220
    Пол:
    Мужской
    Разобрался flags и mainflag относятся к одному массиву и чтобы получить 0 нужно установить значение обоих полей в 0.
     
  16. Gor

    Gor Участник форума

    Регистрация:
    26 дек 2009
    Сообщения:
    789
    Благодарности:
    421
    Баллы:
    230
    Пол:
    Мужской
    flags и mainflag хоть и разделены, но их биты не пересекаются и затем скорее всего объединяются двигом
     
  17. Gratt

    Gratt
    Модостроитель

    Регистрация:
    14 ноя 2014
    Сообщения:
    725
    Благодарности:
    733
    Баллы:
    135
    Пол:
    Мужской
    а если хочешь определить стартовые параметры, вешай вывод данных в конструктор. заодно посмотришь как и когда создаются и удаляются предметы
     
  18. neromont

    neromont
    Модостроитель

    Регистрация:
    12 мар 2011
    Сообщения:
    290
    Благодарности:
    276
    Баллы:
    220
    Пол:
    Мужской
    // получить ID номер НПС или предмета по ссылке на соответствующий класс instanceName.
    func int Hlp_GetInstanceID(var C_NPC or C_ITEM instanceName);

    Hlp_GetInstanceID(PC_Hero)

    Я так понимаю функция возвращает внутренний ID предмета и NPC, а не тот который указан в свойстве id?

    Магот уже отвечал:

    Открыть спойлер
    С ID все очень просто:
    1. Всем именам (инстанциям) в скриптах при их компиляции присваивается порядковый номер, вот этот самый порядковый номер для предметов и НПС является их идентификатором (id).

    2. Эти номера могут съезжать в результате каких-либо операций, что в итоге отразится в том, что они будут соответствовать разным предметам (НПС), а не тому, чему был указан автором изначально.
    Такое возможно только при редактировании скриптов и последующей их компиляции (добавление или удаление в скриптах одного имени приведет к изменению всех следующих за ним порядковых номеров (id)).

    Например, если в игре (скриптово) создается новый предмет (НПС), а старый удаляется, то id - не изменятся. Если старый не удаляется, то для всех последующих инстанций будет сдвиг для id по номерам.
    Следовательно, чтобы избежать сдвигов и прочего, все новые добавляемые предметы (НПС) надо указывать в конце файла *.src для последующей компиляции.


    Вопрос, тогда в следующем, зачем тогда вообще указывать идентификаторы, если движок их сам проставит?

    Хотя все равно не совсем понятно. Если заглянуть в параметры любого объекта в игре идентификатор сохраняется авторский, а Hlp_GetInstanceID возвращает черт знает что?
     
    Последнее редактирование: 7 янв 2017
  19. Saturas

    Saturas
    Модостроитель

    Регистрация:
    11 фев 2009
    Сообщения:
    1.847
    Благодарности:
    550
    Баллы:
    275
    Пол:
    Женский
    GetInstanceid это получает уникальный идентификатор скриптовый, это число int расчитывается на основании имени инстанции объекта, уникально как сказал выше.
     
  20. neromont

    neromont
    Модостроитель

    Регистрация:
    12 мар 2011
    Сообщения:
    290
    Благодарности:
    276
    Баллы:
    220
    Пол:
    Мужской
    А для чего тогда идентификатор в инстанции. Как и на что он влияет. Для Item-ов этот идентификатор вообще никогда не указывается. Для Npc указывается, но в некоторых случаях повторяется.
     
Модераторы: Marvіn, MEG@VOLT

Поделиться этой страницей