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

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

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

Не стесняюсь спросить....

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
Про глобальные слова не было сказано.
*facepalm*
Глобальная - переменная использующая по всему коду скриптов игры, действие не ограничено.
Локальная - т.е. ограниченного радиуса действия, используется только в теле функции или еще чего..
Ппц.. тебя что азам учить надо КАРЛ ?! :rolleyes:
 

Лебедев

Участник форума
Регистрация
3 Сен 2005
Сообщения
595
Благодарности
77
Баллы
225
*facepalm*
Глобальная - переменная использующая по всему коду скриптов игры, действие не ограничено.
Локальна - т.е. ограниченного радиуса действия, используется только в теле функции или еще чего..
Ппц.. тебя что азам учить надо КАРЛ ?! :rolleyes:

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

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

Тебе уже не раз говорили, что код точно в той последовательности, которую ты задал, не выполняется.

В данном случаи уже твои слова притянуты за уши. В данном случаи уже работает как написано, пункт за пунктом.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
Кто-то пишет об ограничение айваров и тут же пишет, что ограниченно только числом оперативной памяти.
Не совпадают данные.
мама, роди меня обратно, чтобы у него данные совпали... :rolleyes:
 

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300

Лебедев

Участник форума
Регистрация
3 Сен 2005
Сообщения
595
Благодарности
77
Баллы
225
мама, роди меня обратно, чтобы у него данные совпали... :rolleyes:

Теперь считаем: 256 Мб минимум стандартной готики для примерно 2000 айваров. Примерно 135 кб оперативной памяти уходит на 1 айвар. Х86 платформа работает максимум с 3,5 гигабайтами = примерно 2.000.000 айваров.

Так получается?

Для каждого монстра теперь уходит ровно 1 айвар - сила, 1 айвар - ловкость, 1 айвар - значением HPMAX, 1 айвар - HP, в обычной готике 4 айвара на 1 группу монстров. (сейчас около 4000 монстров)
На каждый квест от 4 до 10-15 айваров.
и т.д.

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

Ну а зачем городить?
Выбросите rich1()
Достаточно одной переменной. См. пример дополнительного условия из Г1 выше выделенного синим цветом. Вместо гильдии ставите свою глобальную переменную.
В твоём случаи нету дублирование данных permanent для того, чтобы в файл сохранения каждый раз попадали одинаковые данные с гарантией 100%. Npc_SetTrue"название глобальной переменной" если сработает тогда должно всё работать.
 
Последнее редактирование:

cool_er

Участник форума
Регистрация
23 Мар 2015
Сообщения
118
Благодарности
42
Баллы
190
Примерно 135 кб оперативной памяти уходит на 1 айвар.
Хрена себе переменная. Насколько я знаю айвар - это int, а самый большой int занимает 128 БИТ. Не знаю откуда у тебя эта информация.
 

Лебедев

Участник форума
Регистрация
3 Сен 2005
Сообщения
595
Благодарности
77
Баллы
225
Хрена себе переменная. Насколько я знаю айвар - это int, а самый большой int занимает 128 БИТ. Не знаю откуда у тебя эта информация.

2097152 тогда получает при 256 мегабайтах оперативной памяти, но сколько уходит на реализацию видео информации, сколько на саму работу движка?
Данными располагаешь?

А раз х86 платформа и для запуска на Windows 7 уже нужно вычесть 1-2 гигабайта оперативной памяти из того, что видит игра.
Значит у нас оперативной памяти осталось для новых айваров не более 1 гигабайта.

Примерно 6.000.000 тогда айваров получается т.к. чем больше айваров тем больше должен движок занимать оперативной памяти - чтобы ими управлять.

У меня на данный момент около 20.000 айваров больше занято, чем в оригинальной готике. реализовано 24 квеста и ещё Миненталь не трогался - локация ещё не готовая - значит ещё около 10.000 айваров надо на Миненталь отложить.
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
Вот и спрашивается об числе массивов прописанных в движке. - чтобы знать максимальное число айваров.
Кто-то пишет об ограничение айваров и тут же пишет, что ограниченно только числом оперативной памяти.
Тебе говорят про использование простых глобальных переменных, а ты про аивары - это не одно и то же.
aivar - это привязанное к классу C_NPC значение ограниченное в Г1 = 50, в Г2 = 100.
См. _work\DATA\scripts\content\_Intern\CLASSES.D
 

Лебедев

Участник форума
Регистрация
3 Сен 2005
Сообщения
595
Благодарности
77
Баллы
225
Тебе говорят про использование простых глобальных переменных, а ты про аивары - это не одно и то же.
aivar - это привязанное к классу C_NPC значение ограниченное в Г1 = 50, в Г2 = 100.
См. _work\DATA\scripts\content\_Intern\CLASSES.D

Мне знаком термин массив вместо aivar.
Вот и разночтения произошли.
Большое спасибо за пояснения.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
У меня на данный момент около 20.000 айваров больше занято, чем в оригинальной готике. реализовано 24 квеста и ещё Миненталь не трогался - локация ещё не готовая - значит ещё около 10.000 айваров надо на Миненталь отложить.
Засирание игры бесполезными дублирующими переменными ни к чему хорошему не приведет...
Читаем что такое оптимизация кода, в любой книжке по программингу.. ::)
 

Лебедев

Участник форума
Регистрация
3 Сен 2005
Сообщения
595
Благодарности
77
Баллы
225
Засирание игры бесполезными дублирующими переменными ни к чему хорошему не приведет...
Читаем что такое оптимизация кода, в любой книжке по программингу.. ::)

Дублированием назвать контроль за параметрами каждого монстра?
В оригинальной готике у каждого монстра 4 параметра и рождение следующего сделано: через массив с числом монстров и чтение 4 параметров монстра и приравнивание этих 4 параметров к каждому монстру в массиве.
У меня каждый монстр имеет свои 4 параметра и рождается индивидуально, без массива данных. (чтобы не использовать скриптовые расширители)

Ну а зачем городить?
Выбросите rich1()
Достаточно одной переменной. См. пример дополнительного условия из Г1 выше выделенного синим цветом. Вместо гильдии ставите свою глобальную переменную.

Через мой вариант не работает - компилятор не пускает т.к. надо до диалога rich чтобы прочиталось, но из-за переменной диалога - нужно после диалога прочтение т.к. переменная диалога не задана. Её надо до диалога задавать, хотя все диалоги сами задают переменные. - по сути, данный вариант прогнозировать как будет работать - игра с гранатой.

Код:
instance GUR_1202_CorAngar_WANNABETPL(C_Info)
{
   npc = GUR_1202_CorAngar;
   condition = GUR_1202_CorAngar_WANNABETPL_Condition;
   information = GUR_1202_CorAngar_WANNABETPL_Info;
   important = 0;
   permanent = 1;
   description = "Я хочу стать Стражем!";
};


func int GUR_1202_CorAngar_WANNABETPL_Condition()
{
   if((CorKalom_BringMCQBalls == LOG_SUCCESS) && (Npc_GetTrueGuild(hero) == GIL_NOV))
   {
     return TRUE;
   };
};

func void GUR_1202_CorAngar_WANNABETPL_Info()
{
   AI_Output(other,self,"GUR_1202_CorAngar_WANNABETPL_Info_15_01");   //Я хочу стать Стражем!
   if(hero.level < 10)
   {
     AI_Output(self,other,"GUR_1202_CorAngar_WANNABETPL_Info_08_02");   //Ты еще не готов. Ты сможешь присоединиться к нам, когда у тебя будет больше опыта.
     GUR_1202_CorAngar_WANNABETPL.permanent = 1;
   }
   else if(hero.level >= 10)
   {
     AI_Output(self,other,"GUR_1202_CorAngar_WANNABETPL_Info_08_03");   //Пришло время тебе присоединиться к нам.
     AI_Output(self,other,"GUR_1202_CorAngar_WANNABETPL_Info_08_04");   //Помни, что Стражи - это не просто хорошие воины и охранники Лагеря. Мы - избранные Стражи Спящего, Стражи духа.
     AI_Output(self,other,"GUR_1202_CorAngar_WANNABETPL_Info_08_05");   //Мы находим применение и физической, и духовной силе. Лишь те, чье тело и дух представляют единое целое, могут стать истинными Стражами.
     AI_Output(self,other,"GUR_1202_CorAngar_WANNABETPL_Info_08_06");   //Я искренне рад тому, что ты добился столь впечатляющих результатов за столь короткое время. Теперь ты готов стать одним их нас.
     AI_Output(self,other,"GUR_1202_CorAngar_WANNABETPL_Info_08_07");   //Запомни: невозмутимый дух и тренированное тело помогут тебе выстоять против любого врага.
     AI_Output(self,other,"GUR_1202_CorAngar_WANNABETPL_Info_08_08");   //Отправляйся к Гор На Тофу на тренировочную площадку. Он даст тебе новые доспехи.
     GUR_1202_CorAngar_WANNABETPL.permanent = 0;
     Npc_SetTrueGuild(hero,GIL_TPL);
     hero.guild = GIL_TPL;
     Log_CreateTopic(GE_BecomeTemplar,LOG_NOTE);
     B_LogEntry(GE_BecomeTemplar,"Сегодня Кор Ангар назначил меня стражем. Гор На Тоф даст мне новые доспехи. Обычно его можно найти на тренировочной площадке.");
     Log_CreateTopic(GE_TeacherPSI,LOG_NOTE);
     B_LogEntry(GE_TeacherPSI,"Кор Ангар тренирует СИЛУ, ЛОВКОСТЬ и может научить сражаться ДВУРУЧНЫМ оружием. Но обучать он меня станет только тогда, когда я буду хорош в битве с ОДНОРУЧНЫМ оружием. Обычно Кор Ангара можно найти на тренировочной площадке, на втором уровне мостиков.");
   };
};

Два варианта:
1. повторяется
2. один раз срабатывает

Отличие от моего варианта, привязка к массивам данных NPC. Привязку к обычной переменной диалога не найдено как прописать.

Npc_SetTrueDIA_511_SHIP.permanent;
DIA_511_SHIP.permanent = 0;

(Только Npc_SetTrueGuild используется в игре и более для других операций не используется)

Вместо Guild свою переменную подставляю и получаю пшик.

Итог: если не прописывать в движок новые квесты, реализовать сложные диалоги нет возможности.
 
Последнее редактирование:

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995

Phantom95

Участник форума
Регистрация
31 Июл 2014
Сообщения
2.227
Благодарности
1.911
Баллы
370
Прописать в движок новые квесты? Wat :eek:
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
Прописать в движок новые квесты? Wat :eek:
Ну а почему бы и нет, были бы полимеры?
На крайняк через системпак внедрить все пожелания Лебедева по упрощению скриптинга :D
 

Лебедев

Участник форума
Регистрация
3 Сен 2005
Сообщения
595
Благодарности
77
Баллы
225
Ну а почему бы и нет, были бы полимеры?
На крайняк через системпак внедрить все пожелания Лебедева по упрощению скриптинга :D

Gothic не может похвастаться таким же числом разных квестов каким может похвастаться Risen 2,3, Two Worlds 2 (у них без повторов число квестов до 2000 различных, в готике предел 200).
Мне наоборот нужно в systempack внедрить расширение движка и поддержку x64.
 

Phantom95

Участник форума
Регистрация
31 Июл 2014
Сообщения
2.227
Благодарности
1.911
Баллы
370
Gothic не может похвастаться таким же числом разных квестов каким может похвастаться Risen 2,3, Two Worlds 2 (у них без повторов число квестов до 2000 различных, в готике предел 200).
Мне наоборот нужно в systempack внедрить расширение движка и поддержку x64.
Наверное стоит для начала полностью изучить все уроки скриптинга , а только потом пытаться модернизировать zen gin. Вряд ли получится что-нибудь дельное внедрить в движок, если не знаешь базовый уровень скриптинга
 

BalBes

Участник форума
Регистрация
20 Июл 2010
Сообщения
226
Благодарности
27
Баллы
175
Салютую! Небольшой вопросик возник - можно ли в игре через консоль на ГГ или НПЦ (если в того вселиться) активировать анимацию командой, типа сесть на землю, выпить что-то или съесть и подобные анимации жизни? Где такие команды можно найти или это всё задаётся скриптами через программы?

(Дописка на ответ внизу)
Сяп, Dimus - я сам по этой наводке нашёл и список (https://worldofplayers.ru/threads/35270/).
 
Последнее редактирование:

MACTEPXau3

Участник форума
Регистрация
23 Май 2010
Сообщения
36
Благодарности
3
Баллы
150
Помогите разобраться. Делаю indoor уровень и возникает проблема с заеданием и пропаданием звука. Например звук от заклинания света может проигрываться с задержкой на несколько секунд позже, в некотрых местах, где вставлены звуковые эффекты их заедает и начинается какое-то бешенное дребезжание. Заметил что если скомпилировать свет как "vertexlighting only" такой проблемы нет, а если скомпилировать как "lightmaps high", то проблема проявляется сильнее всего.
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.576
Благодарности
4.171
Баллы
915
Салютую! Небольшой вопросик возник - можно ли в игре через консоль на ГГ или НПЦ (если в того вселиться) активировать анимацию командой, типа сесть на землю, выпить что-то или съесть и подобные анимации жизни? Где такие команды можно найти или это всё задаётся скриптами через программы?
Это можно сделать с помощью команд консоли
play ani название_анимации
play faceani название_лицевой_анимации
Но я не смогу подсказать, где можно взять список этих анимаций.
 

D36


Модостроитель
Регистрация
3 Дек 2014
Сообщения
2.224
Благодарности
3.454
Баллы
485
На основании чего игра определяет, какой противник-человек отправится в нокаут после схватки с игроком, а какой сразу погибнет?
 
Сверху Снизу