Уважаемые гости и новички, приветствуем Вас на нашем форуме
Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».
Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Может быть меняется флаг объекта, когда я его использую. Я пробовал через поле on_equip. Может не подбирать объект, а просто вывести ItemName.flags клавишей М.
Хоть и не полезно, но вот что замечал
В самой Готе предмету если присвоить значение ноль, при подборе этого предмета flags у него становиться 1024
Например у Малой косы имеем flags 17410, ставим ноль, при подборе её нельзя одеть, автоматом ставиться 1024, с чем связано и на чем, непонятно.
Если речь идёт о предмете, то при выбрасывании его из инвентаря ГГ у него устанавливается особый флаг (движком), чтобы неписи не воспринимали подбирание этого предмета, как воровство. Значение флага проверяется в функциях ИИ. Может, в этом причина непонятки?
а, ну я понял про какую фигню вы тут бормочите. если предмет используется, ему там флаг типа эктив дается. никуда твои нули не деваются и дэфолтные значения ту ни при чем
// получить 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 возвращает черт знает что?
GetInstanceid это получает уникальный идентификатор скриптовый, это число int расчитывается на основании имени инстанции объекта, уникально как сказал выше.
А для чего тогда идентификатор в инстанции. Как и на что он влияет. Для Item-ов этот идентификатор вообще никогда не указывается. Для Npc указывается, но в некоторых случаях повторяется.
Все смешалось в готическом доме. Идентификаторы, инстанции, неписи, айтемы.
Путаница из-за понятий. Инстанция всеми понимается, как экземпляр класса, объект. В Готике немного по другому. Инстанцию нужно понимать, как конструктор объекта, т.е. функцию, инициализирующую объект. Таким образом написав в скрипте инстанцию вы ничего не создали.На примерах будет понятнее. Имеем инстанцию
После компиляции ей будет присвоен уникальный индекс, с этим индексом он загрузится в игру, не меняется после компиляции.
Далее создаем 5 золотых
Код:
CreateInvItems (slf, ItMi_Gold, 5);
Мы создали 5 объектов и каждый из них был инициализирован инстанцией ItMi_Gold. Каждый объект имеет такие поля ID - идентификатор объекта, уникальный для каждого объекта, создается игрой на лету во время выполнения скриптов, каждый раз скорее всего будет разный instanceID - идентификатор инстанции с помощью которой инициализировали объект, это тот самый индекс инстанции, не меняется после создания объекта.
Таким образом у наших пяти золотых будет одинаковый instanceID, и разные ID.
ID - идентификатор объекта, уникальный для каждого объекта, создается игрой на лету во время выполнения скриптов, каждый раз скорее всего будет разный instanceID - идентификатор инстанции с помощью которой инициализировали объект, это тот самый индекс инстанции, не меняется после создания объекта.
А что с функцией Hlp_GetNpc? Она позволяет получить ссылку на непися только по идентификатору инстанции? А можно ли получить ссылку на конкретного непися, если это непись-клон?
При создании воба ID действительно обнуляются, но дальнейшую судьбу я их не отслеживал, по логике решил, что должны быть разные. Не знаю использует ли их вообще игра. Но вопрос был по функции Hlp_GetInstanceID, которая возвращает индекс инстанции назначенный еще компилятором. Скинь мне датник, с которым ты работаешь. Я посмотрю в него.
А что с функцией Hlp_GetNpc? Она позволяет получить ссылку на непися только по идентификатору инстанции? А можно ли получить ссылку на конкретного непися, если это непись-клон?
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.