Уважаемые гости и новички, приветствуем Вас на нашем форуме
Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».
Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
Удачи!
Друзья, доброго времени суток!
Стартовал новый литературный конкурс от "Ордена Хранителей" - "Пираты Миртанского моря". Каждый может принять в нём участие и снискать славу и уважение, а в случае занятия призового места ещё и получить награду. Дерзайте
Дорогие друзья, год подходит к концу, и пришло время подвести его итоги и наградить достойных
Не ленитесь, голосуйте в этой теме за тех форумчан, которые по вашему мнению больше всех проявили себя в этом году
По желанию, аргументировать свой выбор можете в теме обсуждения голосования.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
maggi1221, в игре не все флаги используются. ITEM_DAG, ITEM_SHIELD и ITEM_THROW можно использовать под свои нужды. Главное случайно ITEM_NFOCUS не заюзать - он двигом используется.
var int id;
var string name;
var string nameID;
var int hp;
var int hp_max;
var int mainflag;
var int flags;
var int weight;
var int value;
var int damagetype;
var int damageTotal;
var int damage[DAM_INDEX_MAX];
var int wear;
var int protection[PROT_INDEX_MAX];
var int nutrition;
var int cond_atr[3];
var int cond_value[3];
var int change_atr[3];
var int change_value[3];
var func magic;
var func on_equip;
var func on_unequip;
var func on_state[4];
var func owner;
var int ownerGuild;
var int disguiseGuild;
var string visual;
var string visual_change;
var string effect;
var int visual_skin;
var string scemeName;
var int material;
var int munition;
var int spell;
var int range;
var int mag_circle;
var string description;
var string text[6];
var int count[6];
var int inv_zbias;
var int inv_rotx;
var int inv_roty;
var int inv_rotz;
var int inv_animate;
};
Каково подробное описание его полей? Хотелось бы найти неиспользуемые в игре поля и использовать их.
ITEM_KAT_xxx - это, как я понимаю, категория инвентаря, в которой будет располагаться предмет.
Т.е. оружие ближнего радиуса поражения - первое,
Дальнего радиуса поражения - второе,
стрелы и болты - третьи,
дальше кажется идёт броня
и т.д.
ITEM_xxx - это конкретный тип вещи. Это просто дополнительный(ые) флаг(и) вещи, конкретизирующий(ие) её.
Ну с категорией экспериментировать почти нечего, а вот с флагами попробуй. Есть интересные моменты...
Я кстати тоже тут недавно поинтересовался некоторыми особенностями флагов для своих нужд, чисто для теста. Столкнулся с проблемой положения вещей в инвентаре. Т.е. вещи располагались не в том порядке, каком мне хотелось бы. Пришлось переделать флаги у всей пищи. Теперь норм. Смешно только над кривизной движка. Просто нет слов.
Неужели все 32 бита заняты? я хотел ввести свои флаги для предметов.
Или все-таки ITEM_KAT_xxx хранятся отдельно а ITEM_xxx - отдельно.
Ты можешь создать свою константу и присвоить любое свободное свойство предмета ей. Единственная проблема - это поиск свободного места или не занятых свойств.
Можно просто присвоить свойству флага значение этой константы. А если предмет не будет работать как надо, то можно ввести одну хитрость, которая позволяет управлять предметами - это функция, вызываемая при экипировке предмета. Можно экипировку как таковую не делать, а просто выполнить нужные действия. Ну это уже на крайний случай. А м.б. и несколько флагов вместе сработают как надо. Тут надо тестировать... Всё зависит от конкретной задачи.
Каково подробное описание его полей? Хотелось бы найти неиспользуемые в игре поля и использовать их.
maggi1221, в игре не все флаги используются. ITEM_DAG, ITEM_SHIELD и ITEM_THROW можно использовать под свои нужды. Главное случайно ITEM_NFOCUS не заюзать - он двигом используется.
Невозможно. Это же класс, определяемый движком. А в скриптах ни переопределить класс, ни создать новый невозможно. Вот, если бы был не делалус, а луи, тогда бы другое дело...
Столкнулся с проблемой положения вещей в инвентаре. Т.е. вещи располагались не в том порядке, каком мне хотелось бы. Пришлось переделать флаги у всей пищи. Теперь норм.
А параметра из Gothic.ini было недостаточно?
invCatOrder=COMBAT,POTION,FOOD,ARMOR,MAGIC,RUNE,DOCS,OTHER,NONE
; ... determins the inventory item group order.
А параметра из Gothic.ini было недостаточно?
invCatOrder=COMBAT,POTION,FOOD,ARMOR,MAGIC,RUNE,DOCS,OTHER,NONE
; ... determins the inventory item group order.
Нет, я не использую этот файл настроек как какой-то инструмент. Так, некоторые параметры установил, в остальном он что есть - что нет.
Gothic.ini - файл, который предназначен для общих настроек проекта Готика, а не для каждого отдельного мода или проекта. Поэтому иногда можно забыть про эти настройки, когда тест будет происходить на другой машине.
Да и удобнее было выделить специальный флаг для предметов. Не знаю почему, но пока что проблем не заметил. Всё как было, так и осталось. Единственное, что изменилось - это положение предметов в инвентаре.
Спасибо, что сказал про опцию, возьму на заметку.
Единственное, что убивает весь интерес экспериментов - это статическая реализация возможностей в анимации. Факт того, что вставить предмет в "ZS_" слот можно только используя Mob-объект или предмет взаимодействия с набором анимаций - это просто беда. :-\
Если есть знания С++ то добавляй хоть новые поля, хоть целые классы, G2ext в помощ...
Единственное, что убивает весь интерес экспериментов - это статическая реализация возможностей в анимации. Факт того, что вставить предмет в "ZS_" слот можно только используя Mob-объект или предмет взаимодействия с набором анимаций - это просто беда.
Лучше вообще никак не делать, чем использовать эти костыли, даже хуже чем костыли...
Ещё хуже - это использовать большой по объёму код или делать большую работу.
Или если хочется создать свой проект, но времени мало и нет уверенности в том, что проект будет доделан до конца, то лучше написать рассказ и прикрепить картинки к нему... :-\
Это для тех, кого ещё не так глубоко затянуло в моддинг.
maggi1221,
Кстати, новый класс создать можно, только при проверке синтаксиса могут быть сообщения о том, что место выделено, а не используется.
Компилируется норм, про работу класса не помню, т.к. не придал этому большого значения.
Т.е. примерно так:
Код:
class C_Help
{
var int id;
var string name;
};
instance hlp_01(C_Help)
{
id = 5;
name = "Helper";
};
//Потом, например, через зелье вызови функцию для проверки содержимого:
instance ItPo_Mana_01(C_Item)
{
name = NAME_Trank;
mainflag = ITEM_KAT_POTIONS;
flags = ITEM_MULTI;
value = Value_ManaEssenz;
visual = "ItPo_Mana_01.3ds";
material = MAT_GLAS;
on_state[0] = UseItPo_Mana_01;
scemeName = "POTIONFAST";
wear = WEAR_EFFECT;
effect = "SPELLFX_MANAPOTION";
description = "Эссенция маны";
text[1] = NAME_Bonus_Mana;
count[1] = Mana_Essenz;
text[5] = NAME_Value;
count[5] = Value_ManaEssenz;
};
func void UseItPo_Mana_01()
{
Print(IntToString(hlp_01.id));
Print(hlp_01.name);
};
//И в инвентарь ГГ не забудь положить.
Если на экране что-то будет, отличное от нуля и пустого значения, то значит работает.
Попробуй, мб у тебя что-то получится...
Также можно попробовать создать копию любого класса, создать инстанции, приравнять, например, так:
Код:
var C_NPC npc_01;//старый класс
var C_NPC2 npc_02;//новый
npc_02 = npc_01;
Возможно, что нельзя приравнять из за разности классов.
Не пробовал, точно сказать не могу.
А то, что свойства изменять можно в процессе - это не на долго. Буквально после загрузки все изменённые свойства станут по-старому.
Спасает только таймер с определёнными флагами, заранее продуманными.
Да, и лучше не мучиться с новыми классами, а можно просто создать несколько переменных для конкретных случаев и использовать их. Некоторые можно даже использовать повторно. Тут уже на своё усмотрение.
Сейчас есть метод хранения значения нескольких переменных в одной. Что-то наподобие хранения RGB составляющих в одной переменной. Там заполнение идёт от большего к меньшему. Подробнее см. в wiki. Тем более битовых флагов. Если интересно, то могу кое-что подсказать.
Как пример, вот:
Невозможно. Это же класс, определяемый движком. А в скриптах ни переопределить класс, ни создать новый невозможно. Вот, если бы был не делалус, а луи, тогда бы другое дело...
Ну, новую AI_Var добавить-то хоть можно хотя бы в класс C_NPC? читал старые посты где-то, там у нпц было 50 aivars, сейчас их 100...
В луа нет классов как таковых, хотя их можно реализовать...он очень гибкий...
и еще:
оказывается, что можно изменять параметры вещи во время выполнения. Пример применения: использованные ключи помечать каким-то образом в инвентаре, например "ключ от сундука декстера - использован"...
Ну, новую AI_Var добавить-то хоть можно хотя бы в класс C_NPC? читал старые посты где-то, там у нпц было 50 aivars, сейчас их 100...
В луа нет классов как таковых, хотя их можно реализовать...он очень гибкий...
и еще:
оказывается, что можно изменять параметры вещи во время выполнения. Пример применения: использованные ключи помечать каким-то образом в инвентаре, например "ключ от сундука декстера - использован"...
Костыли/ не костыли, лично немцы их юзаю чуть более чем везде, и никто не жалуется, все довольны, ты готик мультиплеер видил?)
Так вот, ты не поверишь, но это полностью реализации на ексте(только не том что выложен, а тот на котором базировался проект мультиплеера немецкий)
И заметь, работает вполне стабильно, так что зря ты так.....
Костыли/ не костыли, лично немцы их юзаю чуть более чем везде, и никто не жалуется, все довольны, ты готик мультиплеер видил?)
Так вот, ты не поверишь, но это полностью реализации на ексте(только не том что выложен, а тот на котором базировался проект мультиплеера немецкий)
И заметь, работает вполне стабильно, так что зря ты так.....
Как-то видел это не нужное создание. Думаю людям просто нечем заняться было.
Есть, конечно, нормальные проекты как у немцев, так и у других, но мультиплеер - это уже слишком. Кто-то с форума писал о рейдах на РБ. Понятно к чему это клонит. Хотя мб движение идёт ближе к Руне или другим похожим проектам.
maggi1221, причём хотят выделять сервера для этого мультиплеера...
Не знаю, мб ты фанат линейки или как, но я лично нет.
Ладно, заканчиваю офф топ.
Если бы в редакторе Vam'a были бы макросы - было бы просто супер....
Единственное, что убивает весь интерес экспериментов - это статическая реализация возможностей в анимации. Факт того, что вставить предмет в "ZS_" слот можно только используя Mob-объект или предмет взаимодействия с набором анимаций - это просто беда. :-\
Я пытался, в свое время, убедить vam'а в нужности макросов в соурсере (когда он собирал пожелания), но убедить не сумел, а никто меня в этом не поддержал. =(
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.