Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 130 131 132 133 134 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Griffon
сообщение May 24 2010, 11:50
Сообщение #3261


Level 18
Иконки Групп

Класс: Страж Тьмы
Характер: True Neutral
Раса: Человек
МАСТЕР D&D



Для колизея можно добавить и

ANIMATION_LOOPING_MEDITATE
ANIMATION_LOOPING_TALK_FORCEFUL

с заданием времени

float fDurationSeconds = 0.5f

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Batkom
сообщение May 24 2010, 16:39
Сообщение #3262


Level 4
**

Класс: Клерик
Характер: Lawful Good
Раса: Человек



QUOTE (Lex @ May 24 2010, 09:18) *
Только AssignCommand(OBJECT_SELF, - делать не нужно, можно сразу
....
и заводить переменную для свича не обязательно, достаточно switch d6()

Вот это не знал, спасибо.
Кстати, так подумал, десяток ниписей в таком колизее мгновенно загадит весь чат. Стоит сделать проверку
Neverwinter Script
if (d6()>5) ActionSpeakString(sVoice, TALKVOLUME_SHOUT);

Можно спикстринг заменить на
Neverwinter Script
PlayVoiceChat(VOICE_CHAT_BATTLECRY1);

или что-то другое из группы VOICE_CHAT_*


У меня есть вопрос:
Сейчас пишу пресловутый распорядок дня для неписей. Имею два пути решения.
1) на onhb у каждого npc стоит проверка времени(day/night) и если никого нет в локации, а ему пора спать, он тихо - мирно прыгает домой.(все равно у npc что-то исполняется на onhb, почему бы не добавить туда еще...)
2) на onhb у плейсибла стоит проверка времени и таблица npc, которым нужно приказать спать. Если проверка успешна, плейсибл обзванивает всех ниписей и расставляет их по домам.
Так, как это дело пишется для шарда, то самое важное тут - быстродействие.
Так вот, что будет работать быстрее?

Сообщение отредактировал Batkom - May 24 2010, 16:40
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение May 24 2010, 18:11
Сообщение #3263


Level 11
Иконки Групп

Класс: Волшебник
Характер: Lawful Evil
Раса: Эльф
NWN: Скриптинг [PW]
Gem of the North



Быстрее в хб непися, на плейсе или локе лишние ресурсы хавает обход неписей.
Для какого шарда, если не секрет?

Сообщение отредактировал Ilerien - May 24 2010, 18:12
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Batkom
сообщение May 24 2010, 21:52
Сообщение #3264


Level 4
**

Класс: Клерик
Характер: Lawful Good
Раса: Человек



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

[измините за оффтоп, лирика]
Собственный модуль, не привязанный к забытым королевствам.
Когда-то держал в локальной сети скромненький шардик, менее, чем на сто локаций с несбалансированным рулесетом. Было весело, но года через три шард загнулся. Сейчас вот довожу до ума правила, выкидываю чужие хаки, (из гемовского хака я правда оставил чудную башню и холмики, надеюсь, никто обижаться не будет) рисую локации, балансирую спавны. Акцент собираюсь делать на динамических головоломках в данжах и активном участии ДМ в игре.
Как доваяю до той кондиции, чтобы не стыдно было сервер запускать, выпущу в большой мир.
[/измините за оффтоп, лирика]
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virus_found
сообщение May 24 2010, 22:05
Сообщение #3265


Отверженный
****

Класс: Теневой Танцор
Характер: Neutral Good
Раса: Баатезу



Цитата(Batkom @ May 24 2010, 21:52) *
[измините за оффтоп, лирика]
Собственный модуль, не привязанный к забытым королевствам.
Когда-то держал в локальной сети скромненький шардик, менее, чем на сто локаций с несбалансированным рулесетом. Было весело, но года через три шард загнулся. Сейчас вот довожу до ума правила, выкидываю чужие хаки, (из гемовского хака я правда оставил чудную башню и холмики, надеюсь, никто обижаться не будет) рисую локации, балансирую спавны. Акцент собираюсь делать на динамических головоломках в данжах и активном участии ДМ в игре.
Как доваяю до той кондиции, чтобы не стыдно было сервер запускать, выпущу в большой мир.
[/измините за оффтоп, лирика]

Желаю удачи. (IMG:style_emoticons/kolobok_light/good.gif)

Сообщение отредактировал virus_found - May 24 2010, 22:05
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение May 25 2010, 01:12
Сообщение #3266


Level 11
Иконки Групп

Класс: Волшебник
Характер: Lawful Evil
Раса: Эльф
NWN: Скриптинг [PW]
Gem of the North



Цитата
В том то и вся соль, обход неписей по идее должен совершаться два раза в сутки.
Хм, туплю. В таком случае лучший выход - это псевдохертбит на модуле или локе (ну или на плейсе, но лока лучше) с задержкой, равной половине суток.
Мне это видится так - на загрузке модуля запускается таймер (псевдохербит на малый отрезок времени - раунд или секунду, как удобнее). Когда таймер видит, что время суток сменилось (достигается это с помощью локалки), выкидывается модульный эвент, в обработчике которого перебираются все локи, и для каждой локи происходят соответствующие действия с помеченными неписями. Я бы оформил это как отдельный скрипт, запускаемый из модульного эвента на локе.
Цитата
(из гемовского хака я правда оставил чудную башню и холмики, надеюсь, никто обижаться не будет)
Velmar's Tower 2х2 из Rural+City? (IMG:style_emoticons/kolobok_light/smile.gif)

Сообщение отредактировал Ilerien - May 25 2010, 01:30
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Batkom
сообщение May 25 2010, 11:11
Сообщение #3267


Level 4
**

Класс: Клерик
Характер: Lawful Good
Раса: Человек



Я боюсь, что перебор всех лок будет некисло тормозить, попробую обойтись жестким списком или выборкой тэгов из mysql.
Как напишу, выложу тут для проверки.
QUOTE (Ilerien @ May 25 2010, 01:12) *
Velmar's Tower 2х2 из Rural+City?

Именно. В одном из поселений, в этой башне располагается рынок.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение May 25 2010, 11:49
Сообщение #3268


Level 9
Иконки Групп

Класс: Обыватель
Характер: Lawful Good
Раса: Человек
NWN: Модмейкер
Рыцарская Сага



Не знаю как для шарда, а для сингла я писал и на ХБ НПС и на ХБ плейсов. Но прыжки тупили, лучше использовать copy, но и тут есть свои нюансы... Хотя, функция получилась нормальная, можно весь мод впихнуть на один ХБ плейса. Если интересно могу выложить.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Waldgeist
сообщение May 25 2010, 18:51
Сообщение #3269


Level 2
*

Класс: Рейнджер
Характер: Neutral Evil
Раса: Эльф



Люди, пожалуйста, помогите: как организовать провал заклинания на всю локацию? Что нужно прописать? Чтобы даже мельчайшие магические атрибуты исчезали.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение May 25 2010, 19:47
Сообщение #3270


Level 11
Иконки Групп

Класс: Волшебник
Характер: Lawful Evil
Раса: Эльф
NWN: Скриптинг [PW]
Gem of the North



Цитата
Люди, пожалуйста, помогите: как организовать провал заклинания на всю локацию? Что нужно прописать?
Повесить на локу переменную и проверять её в спеллхуке.
Цитата
Чтобы даже мельчайшие магические атрибуты исчезали.
Вот этого не понял. Стандартные средства позволяют сделать провал заклинаний и только заклинаний.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Waldgeist
сообщение May 25 2010, 20:10
Сообщение #3271


Level 2
*

Класс: Рейнджер
Характер: Neutral Evil
Раса: Эльф



О, уи. Я просто имел в виду подобие Пещеры Бехолдеров из Hotu- там, помнится, Лук "Вечность" и Энсеррик лишились своих чудотворных свойств.

Цитата(Waldgeist @ May 25 2010, 20:09) *
О, уи. Я просто имел в виду подобие Пещеры Бехолдеров из Hotu- там, помнится, Лук "Вечность" и Энсеррик лишились своих чудотворных свойств.

А за совет спасибо.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение May 25 2010, 21:03
Сообщение #3272


Level 11
Иконки Групп

Класс: Волшебник
Характер: Lawful Evil
Раса: Эльф
NWN: Скриптинг [PW]
Gem of the North



Цитата
О, уи. Я просто имел в виду подобие Пещеры Бехолдеров из Hotu- там, помнится, Лук "Вечность" и Энсеррик лишились своих чудотворных свойств.
Способ для сингла есть - собственно, стащить скрипты из кампании. Не смотрел, как это реализовано, но, полагаю, проходом по инвентарю и удалением большинства свойств со всех предметов.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение May 26 2010, 09:44
Сообщение #3273


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



если именно в локе - проще сделать 100% шанс провала закла в параметрах данной локации. Оно там же, где имя локи, тэг и тд.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение May 26 2010, 11:34
Сообщение #3274


Level 11
Иконки Групп

Класс: Волшебник
Характер: Lawful Evil
Раса: Эльф
NWN: Скриптинг [PW]
Gem of the North



Цитата
если именно в локе - проще сделать 100% шанс провала закла в параметрах данной локации. Оно там же, где имя локи, тэг и тд.
Я что-то в этой жизни пропустил? (IMG:style_emoticons/kolobok_light/shok.gif) Нет такого в параметрах локи, хоть убей.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Laajin
сообщение May 26 2010, 13:10
Сообщение #3275


Level 5
**

Класс: Пьяный Мастер
Характер: Chaotic Good
Раса: Человек



может быть, имеется ввиду % помех в свойствах локации?
но там эти помехи вроде бы для навыков вида выслушивать/прятаться

Сообщение отредактировал Laajin - May 26 2010, 13:23
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение May 26 2010, 16:11
Сообщение #3276


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



там есть и для навыков и для заклинаний, вроде бы. А если меня глючит и такой вещи нет, то на вход вешать эффект с увеличением шанса провала. Всяко проще, чем спелхук.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение May 26 2010, 16:22
Сообщение #3277


Level 11
Иконки Групп

Класс: Волшебник
Характер: Lawful Evil
Раса: Эльф
NWN: Скриптинг [PW]
Gem of the North



Цитата
А если меня глючит и такой вещи нет, то на вход вешать эффект с увеличением шанса провала. Всяко проще, чем спелхук.
Тебя глючит. Спеллхук чуть сложнее, зато на порядок более надёжен.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Batkom
сообщение May 27 2010, 00:43
Сообщение #3278


Level 4
**

Класс: Клерик
Характер: Lawful Good
Раса: Человек



Огромное спасибо. Давно хотел сделать такую штуку, но было лень.
Поковырял компанию, немного переработал оригинальные скрипты.
В дальнейшем собираюсь переделать работу с предметами и сам скрипт под мультиплеер с записью свойств в MySQL
Смысл таков:
На локацию вешается локалинт ITEM_KEY = 0 как счетчик.
В недоступном месте стоит вейпоинт backup_waypoint.
При заходе в локацию, на игрока вешается эффект провала заклинания и прочищаются все эффекты кроме естественных.
С предметами сделано довольно странно, но для сингла сойдет:
1) Предметы копируются к вейпоинту с новыми тегами
2) На оригинальных предметах прочищаются все свойства и устанавливается локалстринг с тегом копии
При выходе из локации с игрока снимаются эффект спеллфейла и полиморфа(иначе нельзя будет восстановить свойства на заполиморфимшеся друле), а потом с предметами происходит следующее:
1) Изымается локалстринг с тегом буферного предмета
2) Копируются все свойства с буферного на оригинальный предмет
3) Буферный предмет уничтожается
Раскомментировал, как мог.
На onEnter локации:
Neverwinter Script
#include "x2_inc_itemprop"

int GetIsAlcohol(object oItem)
{
    itemproperty ip;
    ip = GetFirstItemProperty(oItem);
    if(GetIsItemPropertyValid(GetNextItemProperty(oItem)
))
        return FALSE;
    if(GetItemPropertyType(ip) == ITEM_PROPERTY_CAST_SPELL)
    {
        if(GetItemPropertySubType(ip) == IP_CONST_CASTSPELL_SPECIAL_ALCOHOL_BEER ||
           GetItemPropertySubType(ip) == IP_CONST_CASTSPELL_SPECIAL_ALCOHOL_SPIRITS ||
           GetItemPropertySubType(ip) == IP_CONST_CASTSPELL_SPECIAL_ALCOHOL_WINE)
            return TRUE;
    }
    return FALSE;
}
int GetIsPoisonAmmo(object oItem)
{
    itemproperty ip;
    ip = GetFirstItemProperty(oItem);
    if(GetIsItemPropertyValid(GetNextItemProperty(oItem)
))
        return FALSE;
    if(IPGetItemHasItemOnHitPropertySubType(oItem, IP_CONST_ONHIT_ITEMPOISON))
        return TRUE;
    return FALSE;
}
int GetIsDyeKit(object oItem)
{
    if(GetBaseItemType(oItem) == BASE_ITEM_MISCSMALL)
    {
        itemproperty ip = GetFirstItemProperty(oItem);
        if(GetItemPropertyType(ip) == ITEM_PROPERTY_CAST_SPELL)
        {
            int nSubType = GetItemPropertySubType(ip);
            return (nSubType >= 490 && nSubType <= 497);
        }
        return FALSE;
    }
    return FALSE;
}
//Копирует предмет
void RemoveAllProperties(object oItem, object oPC, int nSlot = -1)
{
    if(oPC != OBJECT_INVALID)
    {
        if(oItem == OBJECT_INVALID)//Если не передается предмет, но передается слот, то работать с предетом на слоте
           {
            oItem = GetItemInSlot(nSlot, oPC);
            if(oItem == OBJECT_INVALID)
            return;
           }
           else
            {
            int nType = GetBaseItemType(oItem);
            if(nType == BASE_ITEM_TORCH ||
               nType == BASE_ITEM_TRAPKIT ||
               nType == BASE_ITEM_HEALERSKIT ||
               nType == BASE_ITEM_GRENADE ||
               nType == BASE_ITEM_THIEVESTOOLS ||
               nType == 109 || // crafting stuff
               nType == 110 ||
               nType == 112)
                return;
            }
    }
   
   
    if(GetIsAlcohol(oItem) || GetIsPoisonAmmo(oItem) || GetIsDyeKit(oItem))
        return;
    if(oItem == OBJECT_INVALID)
        return;
    // вейпоинт, куда складываются копии предметов
    //Должен быть недоступен игроку
    object oWP = GetWaypointByTag("backup_waypoint");
    //счетчик предметов, должен быть установлен для объекта выполнения заранее и не должен сбрасываться
    int nKey = GetLocalInt(OBJECT_SELF, "ITEM_KEY");
    nKey++;
    SetLocalInt(OBJECT_SELF, "ITEM_KEY", nKey);
    string sKey = IntToString(nKey);
    object oCopy = CopyObject(oItem, GetLocation(oWP), OBJECT_INVALID, "back_item" + sKey);
    //После копирования на предмет записывается его ключ
    SetLocalString(oItem, "ITEM_KEY", sKey);

    itemproperty ip = GetFirstItemProperty(oItem);
    while(GetIsItemPropertyValid(ip))
    {
        RemoveItemProperty(oItem, ip);
        ip = GetNextItemProperty(oItem);
    }
}
//Убирает эффекты с существа, оставляя естественные эффекты, например EFFECT_TYPE_POISON
void RemoveEffects(object oObject)
{
    effect eEff = GetFirstEffect(oObject);
    while(GetIsEffectValid(eEff))
    {
        int nType = GetEffectType(eEff);
        if(GetEffectSubType(eEff) != SUBTYPE_EXTRAORDINARY &&
           (nType == EFFECT_TYPE_ABILITY_INCREASE ||
           nType == EFFECT_TYPE_AC_INCREASE ||
           nType == EFFECT_TYPE_ATTACK_INCREASE ||
           nType == EFFECT_TYPE_BLINDNESS ||
           nType == EFFECT_TYPE_CHARMED ||
           nType == EFFECT_TYPE_CONCEALMENT ||
           nType == EFFECT_TYPE_CONFUSED ||
           nType == EFFECT_TYPE_CURSE ||
           nType == EFFECT_TYPE_DAMAGE_IMMUNITY_INCREASE ||
           nType == EFFECT_TYPE_DAMAGE_INCREASE ||
           nType == EFFECT_TYPE_DAMAGE_REDUCTION ||
           nType == EFFECT_TYPE_DAMAGE_RESISTANCE ||
           nType == EFFECT_TYPE_DAZED ||
           nType == EFFECT_TYPE_DEAF ||
           nType == EFFECT_TYPE_DOMINATED ||
           nType == EFFECT_TYPE_ELEMENTALSHIELD ||
           nType == EFFECT_TYPE_ETHEREAL ||
           nType == EFFECT_TYPE_FRIGHTENED ||
           nType == EFFECT_TYPE_HASTE ||
           nType == EFFECT_TYPE_IMMUNITY ||
           nType == EFFECT_TYPE_IMPROVEDINVISIBILITY ||
           nType == EFFECT_TYPE_INVISIBILITY ||
           nType == EFFECT_TYPE_INVULNERABLE ||
           nType == EFFECT_TYPE_ABILITY_INCREASE ||
           nType == EFFECT_TYPE_NEGATIVELEVEL ||
           nType == EFFECT_TYPE_PARALYZE ||
           nType == EFFECT_TYPE_POLYMORPH ||
           nType == EFFECT_TYPE_REGENERATE ||
           nType == EFFECT_TYPE_SANCTUARY ||
           nType == EFFECT_TYPE_SAVING_THROW_INCREASE ||
           nType == EFFECT_TYPE_SEEINVISIBLE ||
           nType == EFFECT_TYPE_SILENCE ||
           nType == EFFECT_TYPE_SKILL_INCREASE ||
           nType == EFFECT_TYPE_SLOW ||
           nType == EFFECT_TYPE_SPELL_IMMUNITY ||
           nType == EFFECT_TYPE_SPELL_RESISTANCE_INCREASE ||
           nType == EFFECT_TYPE_SPELLLEVELABSORPTION ||
           nType == EFFECT_TYPE_TEMPORARY_HITPOINTS ||
           nType == EFFECT_TYPE_TRUESEEING ||
           nType == EFFECT_TYPE_ULTRAVISION ||
           nType == EFFECT_TYPE_INVULNERABLE))
            RemoveEffect(oObject, eEff);
        eEff = GetNextEffect(oObject);
    }
}

void main()
{
    object oEnter = GetEnteringObject();
    //Если игрок сохранился, вышел из игры и загрузился потом, ничего с ним не делать
    //INSIDE - Локальная переменная для избежания глюков с save\load
    int nInside = GetLocalInt(oEnter, "INSIDE");
    if(nInside == 1) return;
    SetLocalInt(oEnter, "INSIDE", 1);
    RemoveEffects(oEnter);
    effect eSpellFailure = EffectSpellFailure(100, SPELL_SCHOOL_GENERAL);
    ApplyEffectToObject(DURATION_TYPE_PERMANENT, eSpellFailure, oEnter);
    object oItem = GetFirstItemInInventory(oEnter);
        while(oItem != OBJECT_INVALID)
        {
            RemoveAllProperties(oItem, oEnter, -1);
            oItem = GetNextItemInInventory(oEnter);
        }
        //Убираем свойства с предметов в слотах экиперовки
        //Если лексикон не врет, то искомые слоты с 0(INVENTORY_SLOT_HEAD) по 13(INVENTORY_SLOT_BOLTS)
        int iSlot = 0;
        while(iSlot<14)
        {
        RemoveAllProperties(OBJECT_INVALID, oEnter, iSlot);
        iSlot++;
        }
}



На onExit:
Neverwinter Script
#include "x2_inc_itemprop"
// Восстанавливаем свойства предметов
void RestoreAllProperties(object oItem, object oPC, int nSlot = -1)
{
   if(oPC != OBJECT_INVALID)
    {
        if(oItem == OBJECT_INVALID)//Если не передается предмет, но передается слот, то работать с предетом на слоте
            oItem = GetItemInSlot(nSlot, oPC);
        if(oItem == OBJECT_INVALID)
            return;
    }
    string sKey = GetLocalString(oItem, "ITEM_KEY");
    object oOriginalItem = GetObjectByTag("back_item" + sKey);
    if(oOriginalItem != OBJECT_INVALID)
    {
        //Копировать все свойства предмета на новый
        IPCopyItemProperties(oOriginalItem, oItem);
        DestroyObject(oOriginalItem);
        DeleteLocalString(oItem, "ITEM_KEY");
    }
}
//Убирает свойства с создания
void RemoveEffects(object oObject)
{
    effect eEff = GetFirstEffect(oObject);
    while(GetIsEffectValid(eEff))
    {
        if(GetEffectType(eEff) == EFFECT_TYPE_SPELL_FAILURE || GetEffectType(eEff) == EFFECT_TYPE_POLYMORPH)
            RemoveEffect(oObject, eEff);
        eEff = GetNextEffect(oObject);
    }
}

void main()
{
    object oExit = GetExitingObject();
    SetLocalInt(oExit, "INSIDE", 0); // Локальная переменная для избежания глюков с save\load
    if(GetObjectType(oExit) == OBJECT_TYPE_CREATURE)
    {
        RemoveEffects(oExit);
        object oItem = GetFirstItemInInventory(oExit);
        float fDelay = 4.0; //Задержка для избежания глюков с прогрузкой, можно увеличить
        while(oItem != OBJECT_INVALID)
        {
            DelayCommand(fDelay, RestoreAllProperties(oItem, oExit, -1));
            oItem = GetNextItemInInventory(oExit);
        }
        //Убираем свойства с предметов в слотах экиперовки
        //Если лексикон не врет, то искомые слоты с 0(INVENTORY_SLOT_HEAD) по 13(INVENTORY_SLOT_BOLTS)
        int iSlot = 0;
        while(iSlot<14)
        {
        DelayCommand(fDelay, RestoreAllProperties(OBJECT_INVALID, oExit, iSlot));
        iSlot++;
        }
       
    }
    }

}


Сообщение отредактировал Batkom - May 27 2010, 00:59
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
SvetikSM
сообщение May 27 2010, 08:35
Сообщение #3279


Level 1


Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек



приветик)

делаю свой первый в жизни мод)) до этого модостроем не занималась вообще.
по началу всё достаточно просто получалось, сделала участки, разместила монстров, неписей, прописала диалоги, переходы между локациями...
но вот дело дошло до скриптов, и тут совсем ничего не понятно (IMG:style_emoticons/kolobok_light/sad.gif)

попробовала добавить опыт, как написано здесь

Цитата
//-------------------- Уровень игрока для игры в модуле ------------------------
// К примеру нам нужен игрок 5 уровня. Смотрим таблицу уровней и видим,
// что Level 5 = 10000 xp.
{
SetXP(oPC, 10000);
}

ничего не получается, никакого опыта (IMG:style_emoticons/kolobok_light/sad.gif)

также пробовала деньги добавлять, снова не работает ((

мой мод не очень большой, и много там не нужно, но помогите хотя бы с простыми задачами, пожалуйста (IMG:style_emoticons/kolobok_light/unsure.gif)

1. как все таки мне сделать, чтобы при старте модуля игрокам назначался 5-ый уровень?

2. как сделать, чтобы в диалоге с НПЦ появлялась строчка, что его можно присоединить в отряд? ( в безвыходной ситуации взяла Боддинока Глинка, поменяла ему все диалоги под свой сюжет, но тем не менее остается всегда строчка, что я работаю на Арибет - я не знаю как и где это убрать ... ).

3. ну и наконец, как сделать хотя бы простенький квест? Например непись дает задание, принести ему такой то предмет, и чтобы при подношении ему этого предмета он выдавал бы N-ное количество опыта и золота.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение May 27 2010, 09:44
Сообщение #3280


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Цитата(SvetikSM @ May 27 2010, 09:35) *
ничего не получается, никакого опыта sad.gif

как именно написала скрипт и куда его поставила? Процитированный тобой кусок - не является законченным скриптом, это лишь функция.
отвечая на твой первый вопрос, должно быть так:
Neverwinter Script
void main()
{
object oPC = GetFirstPC();
SetXP(oPC , 10000);
}

Этот скрипт нужно поставить в слот модуля, на onEnterPlayer (или как-то так он называется).

по поводу всего остального, прочитай для начала: http://www.city-of-masters.ru/forums/index...?showtopic=1612
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
SvetikSM
сообщение May 27 2010, 11:07
Сообщение #3281


Level 1


Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек



спасибо. с опытом и деньгами разобралась.
со спутником тоже, но не совсем.
вот это я ему прописала:
Цитата
if(GetLocalInt(OBJECT_SELF, "HENCHED") != TRUE) // Проверка, что присоединяется один раз
{
SetLocalInt(OBJECT_SELF, "HENCHED", TRUE); // Вот и установка
AddHenchman(GetPCSpeaker(), OBJECT_SELF); // Добавляем хенча тому игроку, с кем говорит


теперь по завершении диалоги НПЦ входит в отряд. Но, если его на время отлучить из отряда, то второй раз он уже почему то не нанимается, хотя строчка, по которой он должен входить - есть.
что я делаю не так? (IMG:style_emoticons/kolobok_light/unsure.gif)

Цитата(SvetikSM @ May 27 2010, 15:06) *
спасибо. с опытом и деньгами разобралась.
со спутником тоже, но не совсем.
вот это я ему прописала:


теперь по завершении диалоге НПЦ входит в отряд. Но, если его на время отлучить из отряда, то второй раз он уже почему то не нанимается, хотя строчка, по которой он должен входить - есть.
что я делаю не так? (IMG:style_emoticons/kolobok_light/unsure.gif)

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение May 27 2010, 12:21
Сообщение #3282


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Цитата(SvetikSM @ May 27 2010, 12:07) *
теперь по завершении диалоги НПЦ входит в отряд. Но, если его на время отлучить из отряда, то второй раз он уже почему то не нанимается, хотя строчка, по которой он должен входить - есть.
что я делаю не так? unsure.gif

не снимаешь переменную HENCHED. Она в твоей ситуации вообще не нужна, имхо.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение May 27 2010, 12:30
Сообщение #3283


Level 11
Иконки Групп

Класс: Волшебник
Характер: Lawful Evil
Раса: Эльф
NWN: Скриптинг [PW]
Gem of the North



Цитата
1. как все таки мне сделать, чтобы при старте модуля игрокам назначался 5-ый уровень?
Если планируется, что играть будет несколько человек одновременно, то про GetFirstPC() во всех скриптах нужно забыть. Например, в скрипте на заход
Neverwinter Script
object oPC = GetEnteringObject();
На мой взгляд, пихать во все скрипты, где нужно получить игрока, GetFirstPC() - крайне вредная привычка даже для сингла.

Сообщение отредактировал Ilerien - May 27 2010, 12:31
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Batkom
сообщение May 27 2010, 12:32
Сообщение #3284


Level 4
**

Класс: Клерик
Характер: Lawful Good
Раса: Человек



Ага.
Еще вариант: добавить в onhb хенча
Neverwinter Script
if (GetIsPC(GetFactionLeader(OBJECT_SELF))) SetLocalInt(OBJECT_SELF, "HENCHED", FALSE);

Считаю, что проверку HENCHED нужно делать при отображении в диалоге строки "Пойдем со мной"

Сообщение отредактировал Batkom - May 27 2010, 12:41
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение May 27 2010, 13:00
Сообщение #3285


Level 5
Иконки Групп

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Цитата(Batkom @ May 27 2010, 13:32) *
Считаю, что проверку HENCHED нужно делать при отображении в диалоге строки "Пойдем со мной"

там проще проверить, в патии хенч или нет. те переменная тут явно дублирующая.
Цитата(Ilerien @ May 27 2010, 13:30) *
GetFirstPC() - крайне вредная привычка даже для сингла.

для сингла не вредная (IMG:style_emoticons/kolobok_light/smile.gif) И я не обратил внимание что там про "игроков". тогда да, от GetFirstPC надо отказываться.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 130 131 132 133 134 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 2nd May 2025 - 14:16