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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

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

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
Стандартно нет, только через костыли, расширение констант или айваров..
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
Стандартно нет, только через костыли, расширение констант или айваров..
да не, можно удобнее..
скажем калбек на обработку цен, где
PHP:
func int g_itemValue (var C_NPC npc, var C_ITEM itm, var int price)
{
    // цена на топоры у торбена выше средней в 5 раз
    if (b_NpcIsTorben(npc) && b_ItemIsAxe(itm))
    {
        price *= 5;
    };
 
    // если мы помогли торбену, он сделает для нас скидку
    if (b_NpcIsTorben(npc) && b_PlayerHelpedTorben())
    {
        price /= 2;
    };

    return price;
};
 
Последнее редактирование:

MaGoth

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

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
Да, тоже вариант.*right*
Хотя с константами и айваринами было бы удобнее, "партянки" расписывать не придется.. имха..
да ну, нет, как раз на голых аиварах и константах далеко не уедешь. по сути, описанный выше пример наиболее гибок и прозрачен. в функцию, во время позиционирования фокуса в инвентаре, передаются аргументы трейдера и итема. указанная цена отрезультирует в окно обмена и также отыграет при совершении покупки не меняя стоимость самого товара.
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
Как я понял, это все при помощи расширителей?
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
Удалось решить задачу без расширителей. Ибо...



Немного громоздко, конечно, и не совсем гибко, но для мода это решение подходит отлично.

В функцию ZS_Talk_End добавил код

Код:
    if (self.id == ORC_6215_POKh_Badak.id)
    {
        vQuant = Npc_HasItems (other, ItSc_TrfGiantBug2);

        if (vQuant > 0)
        {
    
            CreateInvItems (other, ItSc_TrfGiantBug, vQuant);
            Npc_RemoveInvItems(other, ItSc_TrfGiantBug2, vQuant);
        };

        vQuant = Npc_HasItems (other, ItSc_TrfGiantRat2);
        
        if (vQuant > 0)
        {
            CreateInvItems (other, ItSc_TrfGiantRat, vQuant);
            Npc_RemoveInvItems(other, ItSc_TrfGiantRat2, vQuant);
        };

        vQuant = Npc_HasItems (other, ItSc_Firebolt2);
        
        if (vQuant > 0)
        {
            CreateInvItems (other, ItSc_Firebolt, vQuant);
            Npc_RemoveInvItems(other, ItSc_Firebolt2, vQuant);
        };

        vQuant = Npc_HasItems (other, ItSc_PalLight2);
        
        if (vQuant > 0)
        {
            CreateInvItems (other, ItSc_PalLight, vQuant);
            Npc_RemoveInvItems(other, ItSc_PalLight2, vQuant);
        };

        vQuant = Npc_HasItems (other, ItSc_TrfScavenger2);
        
        if (vQuant > 0)
        {
            CreateInvItems (other, ItSc_TrfScavenger, vQuant);
            Npc_RemoveInvItems(other, ItSc_TrfScavenger2, vQuant);
        };
    //----------------------------------------

        vQuant = Npc_HasItems (self, ItSc_TrfGiantRat);

        if (vQuant > 0)
        {
    
            CreateInvItems (self, ItSc_TrfGiantBug2, vQuant);
            Npc_RemoveInvItems(self, ItSc_TrfGiantBug, vQuant);
        };

        vQuant = Npc_HasItems (self, ItSc_TrfGiantRat);
        
        if (vQuant > 0)
        {
            CreateInvItems (self, ItSc_TrfGiantRat2, vQuant);
            Npc_RemoveInvItems(self, ItSc_TrfGiantRat, vQuant);
        };

        vQuant = Npc_HasItems (self, ItSc_Firebolt);
        
        if (vQuant > 0)
        {
            CreateInvItems (self, ItSc_Firebolt2, vQuant);
            Npc_RemoveInvItems(self, ItSc_Firebolt, vQuant);
        };

        vQuant = Npc_HasItems (self, ItSc_PalLight);
        
        if (vQuant > 0)
        {
            CreateInvItems (self, ItSc_PalLight2, vQuant);
            Npc_RemoveInvItems(self, ItSc_PalLight, vQuant);
        };

        vQuant = Npc_HasItems (self, ItSc_TrfScavenger);
        
        if (vQuant > 0)
        {
            CreateInvItems (self, ItSc_TrfScavenger2, vQuant);
            Npc_RemoveInvItems(self, ItSc_TrfScavenger, vQuant);
        };
    };

Проверил, работает.
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
Еще вопрос: Можно ли как-то в спейсере измерять расстояния? Поясняю. Часто приходится отслеживать событие по Npc_GetDistToWP. И, иногда, нужно в спейсере прикинуть радиус действия в привязке к местности.
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
449
Благодарности
266
Баллы
230
И, иногда, нужно в спейсере прикинуть радиус действия в привязке к местности.
Прикрепи к цели источник света в качестве потомка и включи у него "show ranges". На примере ниже: радиус источника 200 см. Подгоняй какой тебе нужно.
LightingRange.jpg
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Часто приходится отслеживать событие по Npc_GetDistToWP.
А зачем в Спейсере то это делать? Вешай в циклическую функцию для теста измерение расстояния до нужного вея (с выводом на экран), запускай игру, ходи вокруг него в игре и смотри, какие значения нужно прописать в скриптах.
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
А зачем в Спейсере то это делать? Вешай в циклическую функцию для теста измерение расстояния до нужного вея (с выводом на экран), запускай игру, ходи вокруг него в игре и смотри, какие значения нужно прописать в скриптах.

Со спейсером быстрее получается.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Со спейсером быстрее получается.
В Спейсере невозможно получить достаточную точность. По своему опыту знаю, что иногда важен каждый метр или даже полметра. Да и насчёт "быстрее" не согласен. Не так это. ;)
 

STARK

Участник форума
Регистрация
20 Янв 2011
Сообщения
555
Благодарности
142
Баллы
220
В спейсере пропало отображение имени выделенного объекта. Подскажите как вернуть?:)

Upd: Само вернулось:)
 
Последнее редактирование:

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
Кто знает зачем в G1 - куча текстур в виде красных квадратов привязанных к головам?
 

Вложения

  • Безымянный.png
    Безымянный.png
    806,6 KB · Просмотры: 230

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
Думаю, место для текстуры с соответствующим номером и цветом кожи зарезервировали, а рисовать и, следовательно, использовать не стали. И без того рожиц разных богато получилось. Подобные текстуры - мусор.
 

Scarecrow

Участник форума
Регистрация
11 Авг 2014
Сообщения
162
Благодарности
85
Баллы
220
Всем привет. Такой вопрос. В Г2 при включенном марвине если нажать на F9 то игра остановится, а если после этого нажать F6, то можно будет перемещаться по всему миру. В Г1 при F9 можно только вращать камеру, но не перемещаться. Что за это отвечает? И можно ли сделать так, что бы и в Г1 при F9 можно было вот так летать камерой? Или тут уже надо совсем в дебри лезть?(

И еще - возможно ли изменить стартовую точку? (имею ввиду ту точку, на которой появляется камера при загрузки карты в Спейсер) В игре код goto pos перемещает именно сюда.
 
Последнее редактирование:

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
Всем привет. Такой вопрос. В Г2 при включенном марвине если нажать на F9 то игра остановится, а если после этого нажать F6, то можно будет перемещаться по всему миру. В Г1 при F9 можно только вращать камеру, но не перемещаться. Что за это отвечает? И можно ли сделать так, что бы и в Г1 при F9 можно было вот так летать камерой? Или тут уже надо совсем в дебри лезть?(

И еще - возможно ли изменить стартовую точку? (имею ввиду ту точку, на которой появляется камера при загрузки карты в Спейсер) В игре код goto pos перемещает именно сюда.

POS - это координаты 0.0.0. Изменить можно - передвигаешь Mesh локации чтобы координаты 0.0.0 оказались в том месте где нужно, снова размещаешь все VOB, MOB и другие виртуальные объекты. Все это настраиваешь и тестируешь :D

P.S. Проще указать точные координаты GoTo Pos 100 2300 499

P.P.S. Для отображения текущих координат Npc можно использовать клавиши Alt + P в режиме MARVIN.

P.P.P.S. Еще проще создать в нужном месте FP или WP c лаконичным именем и перемещаться к нему с помощью команды GOTO Waypoint MY_POINT.
 

Вложения

  • sec_01_help_marvin_altp.png
    sec_01_help_marvin_altp.png
    45,7 KB · Просмотры: 145
Последнее редактирование:

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.232
Баллы
525
И еще - возможно ли изменить стартовую точку? (имею ввиду ту точку, на которой появляется камера при загрузки карты в Спейсер) В игре код goto pos перемещает именно сюда.
Для указания места вставки ГГ в локацию при старте игры существует специальный объект. Как-то типа START_POINT он называется. Если такого объекта нет, то игра, вероятно, начнётся в точке с нулевой координатой.
 

Scarecrow

Участник форума
Регистрация
11 Авг 2014
Сообщения
162
Благодарности
85
Баллы
220
Хм. Выходит, что тут уже ничего особо не сделаешь. А что насчет камер на F9 и F6 (при марвине)? Тут тоже ничего не изменить? Да и камера, которая прикрепляется к персонажу (F7) тоже как то странно работает в Г1.
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
А что насчет камер на F9 и F6 (при марвине)?

Ты поставил игру на паузу с помощью клавиши F9. Почему бы сначала не нажать F6 с помощью стрелок перевести камеру в нужное место и затем нажать на паузу?

Если хочешь чтобы перемещалась камера в паузе, то нужно зажимать клавишу F10 которая покадрово проигрывает игру.
 
Сверху Снизу