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

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

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

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

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300
Возможно есть способ и легче. Я то изучал только PHP и сейчас изучаю С++. Я уверен, что знатоки своего дела тебе с этим помогут %)
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
Вопрос такой. В параметрах C_ITEM есть weigth (вес поидее)..
1. В игре он не используется (а как работает и работает ли вообще, я хз, не проверял и не интересовался), ибо в Готике подобное считаю уг..
2. В плане реализации могу лишь посоветовать глянуть/расковырять мод "Сестры", в нем, если не ошибаюсь, вес был реализован для предметов... ::)
 

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

Участник форума
Регистрация
6 Дек 2012
Сообщения
350
Благодарности
521
Баллы
325
Вопрос такой. В параметрах C_ITEM есть weigth (вес поидее), можно ли в игре сделать вес вещей более проще чем я это пробую сделать?
Поле weigth игрой никак не учитывается, туда можно писать что угодно.
Более простого способа, на мой взгляд, нет. В моде "Сестры" вес примерно так и реализован (можно посмотреть в файле _misk_/her.d), но там итемов куда меньше, чем в оригинале.

Через Икарус реализуется относительно просто, но про него, думаю, речь не идет...

2Defman: в скриптах Готики нет циклов, ни For, ни While, ни других.
 

osipovjohn

Участник форума
Регистрация
11 Июл 2012
Сообщения
24
Благодарности
0
Баллы
160
В общем подскажите что не так?
Пока пробую упрощенный режим через категории
Все переменные объявлены в constants. Ошибок правописания нет. Все вставлено в зацикленный триггер и отображается в игре онлайн.max_weight отображается корректно а вот i_weight = 0.

Код:
max_weight = hero.attribute[ATR_STRENGTH] * 2;

    i_weight = 0;
    i_weight = i_weight + Npc_HasItems(hero,ITEM_KAT_NONE) / 20;
    i_weight = i_weight + Npc_HasItems(hero,ITEM_KAT_NF) * 5;
    i_weight = i_weight + Npc_HasItems(hero,ITEM_KAT_FF) * 2;
    i_weight = i_weight + Npc_HasItems(hero,ITEM_KAT_MUN) / 1000;
    i_weight = i_weight + Npc_HasItems(hero,ITEM_KAT_ARMOR) * 10;
    i_weight = i_weight + Npc_HasItems(hero,ITEM_KAT_FOOD) / 10;
    i_weight = i_weight + Npc_HasItems(hero,ITEM_KAT_POTIONS) / 8;
    if(!C_BodyStateContains(hero,BS_FALL) && !C_BodyStateContains(hero,BS_SWIM) && !C_BodyStateContains(hero,BS_DIVE) && (PLAYER_MOBSI_PRODUCTION == MOBSI_NONE))
    {
        if(i_weight > max_weight)
        {
            if(I_TIMER_WEIGHT == 0)
            {
                MAX_WEIGHT_END = MAX_WEIGHT_END + 1;
                PrintScreen("Я не могу столько нести!",-1,-1,FONT_Screen,3);
                B_Say_Overlay(hero,hero,"$SIS_SVM_03");
            };
            AI_Wait(hero,0.3);
            I_TIMER_WEIGHT = I_TIMER_WEIGHT + 1;
            if(I_TIMER_WEIGHT == 3)
            {
                PrintScreen("Кажется, я теряю сознание!",-1,-1,FONT_Screen,3);
                B_Say_Overlay(hero,hero,"$SIS_SVM_04");
                if(MAX_WEIGHT_END > 2)
                {
                    MAX_WEIGHT_END = 0;
                    Npc_ChangeAttribute(hero,ATR_HITPOINTS,-hero.attribute);
                };
            };
            if(I_TIMER_WEIGHT == 6)
            {
                Npc_ClearAIQueue(hero);
                B_ClearPerceptions(hero);
                AI_StartState(hero,ZS_MagicSleep,0,"");
            };
            if(I_TIMER_WEIGHT > 17)
            {
                I_TIMER_WEIGHT = 0;
            };
        };
    };

PS. не знаю как сделать сполер
 
Последнее редактирование модератором:

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
Вы пытаетесь Npc_HasItems использовать не по назначению. Npc_HasItems проверяет, есть ли у ГГ в инвентаре инстанции итемов ITEM_KAT_NONE (которая на самом деле является категорией этого итема) и естественно ничего такого не находит, посему в данном случае будет возвращать FALSE, т.е. 0.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
PS. не знаю как сделать сполер
Кнопка
spoiler.png
в форме быстрого/расширенного ответов.

Примеры:
Код:
[ CODE]
... Тег кода
[ /CODE]

Код:
[spoiler]
Тег Спойлера
[/spoiler]
 
Последнее редактирование:

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300
Причем тут Код, если он спрашивал про Спойлер ?
Потому что логичнее помещать код в тег кода, а не в спойлер, не?
К тому же я просто дополнил твой ответ, чтобы человек делал все по ГОСТу.

В ответ на нижнее сообщение: Да, по госту %)
Я завязываю писать тут оффтоп, не хочу получить по шапке)
 

osipovjohn

Участник форума
Регистрация
11 Июл 2012
Сообщения
24
Благодарности
0
Баллы
160
А через ITEM_KAT_NONE нельзя получить количество предметов в инвенторе под этой категорией ?
 

MaGoth

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

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
А через ITEM_KAT_NONE нельзя получить количество предметов в инвенторе под этой категорией ?

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

Вложения

  • B_Plunder.rar
    879 байт · Просмотры: 92

Dimmell

Участник форума
Регистрация
23 Ноя 2008
Сообщения
2.899
Благодарности
111
Баллы
285
Но, возможно, это подкинет идею варианта реализации задуманного.

Пока все инстанции будут прописаны типа "MySuper_puperSword_XXX" - вы ничего кроме полного прописывания всех инстанций в фильтрах IF не придумаете. Даже используя предварительную сортировку по типу, классу и т.д - все равно вам придется механически перебирать инстанции поштучно в цикле.
Инстанции типа "MW001"-"MW999" (для мечей), "ARM001" для брони и т.д. возможно позволят упростить поиск и сортировку без прописывания поштучно, а прогнав по циклам типа ARM0-ARM00-ARM000. Я не помню насколько хорошо работают стринги в Готике, но на именах сундуков это прокатывало (вроде и на WP). Попробуйте рандомно добавить в инвентарь ГГ что-нибудь используя ConcatStrings (string str1, string str2), если прожует - значит и на фильтре прожует сравнение стрингов.
 

osipovjohn

Участник форума
Регистрация
11 Июл 2012
Сообщения
24
Благодарности
0
Баллы
160
Подскажите, имеются ли другие способы перейти на другую локацию кроме как в спейсере вставлять зону перехода?(допустим через скрипт)
И еще...подскажите как реализовать такую ситуацию. ГГ на лодке говорит штурману куда плыть(допустим три точки,A,B,C) , поплыли в точку A. В общем можно ли сделать так чтоб воб двигался в несколько направлениях из одной и той же начальной точки?
p.s. коряво выразился
 

redleha


Модостроитель
Регистрация
26 Фев 2008
Сообщения
735
Благодарности
666
Баллы
245
Подскажите, имеются ли другие способы перейти на другую локацию кроме как в спейсере вставлять зону перехода?(допустим через скрипт)
И еще...подскажите как реализовать такую ситуацию. ГГ на лодке говорит штурману куда плыть(допустим три точки,A,B,C) , поплыли в точку A. В общем можно ли сделать так чтоб воб двигался в несколько направлениях из одной и той же начальной точки?
p.s. коряво выразился
Стандартными средствами скриптов - нет.
 

osipovjohn

Участник форума
Регистрация
11 Июл 2012
Сообщения
24
Благодарности
0
Баллы
160
Да, этот. Можешь объяснить что куда и как?
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
Можешь объяснить что куда и как?
Нет, так. не интересовался этим, но судя по комментам на дойче там без костылей не обойтись..
Хотя, я не уверен в этом, по-моему там даже с костылями ничего правильно работать не будет.. ::)
 
Сверху Снизу