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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 131 132 133 134 135 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Ilerien
сообщение Jun 8 2010, 18:38
Сообщение #3301


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

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



1) Во-первых, джамп в НВНе переносит объект, вызвавший функцию (ты пытаешься перенести триггер). Во-вторых, он сделан криво, перед джампом обязательно вызывать ClearAllActions(TRUE) для нужного объекта. Т. е. в этом случае:
Neverwinter Script
AssignCommand(oPC, ClearAllActions(TRUE));
AssignCommand(oPC, JumpToObject(GetWaypointByTag("wp_siegers")));
Для непися аналогично.

2) Я полагаю, эти самые "стандартные скрипты хербита" забивают стек экшенов так, что атака выполняется хз когда (IMG:style_emoticons/kolobok_light/smile.gif)

Сообщение отредактировал Ilerien - Jun 8 2010, 18:39
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
ReyBrujo
сообщение Jun 8 2010, 19:53
Сообщение #3302


Level 2
*

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



За перенос объекта огромнейшее спасибо=) подействовало. А вот мои чудаки ни в какую не хотят бежать на врага, даже когда в скрипте хертбита ничего кроме атаки нет... тупо стоят, пока я не подойду к ним.

На всякий случай попробую объяснить, как все у меня взаимодействует.
Я захожу в игру, наступаю на триггер, меня переносит на одну из сторон(в зависимости от того, кого в игре больше - стражей (которые охраняют замок) или осаждающих). Потом, где-то на краю карты сидит человечек, который в хертбите создает осаждающих в точке их появления. По плану эти осаждающие должны сразу же бежать бить ближайшего врага. А они тупо появляются, и стоят. Хотя они являются вражеской к защитникам фракцией.



Проверил отношения фракций - все в норме..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение Jun 8 2010, 20:26
Сообщение #3303


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

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



Цитата
По плану эти осаждающие должны сразу же бежать бить ближайшего врага. А они тупо появляются, и стоят. Хотя они являются вражеской к защитникам фракцией.
Посмотреть, что возвращает GetNearest Enemy() и GetCurrentAction().
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
ReyBrujo
сообщение Jun 8 2010, 20:40
Сообщение #3304


Level 2
*

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



Neverwinter Script
// Gets the nearest enemy. Берет ближайшего врага
object GetNearestEnemy(object oSource=OBJECT_SELF, int nNth = 1)
{
    return GetNearestCreature(CREATURE_TYPE_REPUTATION,
                              REPUTATION_TYPE_ENEMY,
                              oSource, nNth);
}


Neverwinter Script
// Get the current action (ACTION_*) that oObject is executing. Берет текущее действие которое исполнЯет объект.
int GetCurrentAction(object oObject=OBJECT_SELF)


Всё! У меня получилось!
Вот на что я изменил хертбит:
#include "nw_i0_generic"
#include "inc_nearest"

Neverwinter Script
void main()
{
    if(GetCurrentAction() != ACTION_ATTACKOBJECT)
    {
    ClearAllActions();
    ActionAttack(GetNearestEnemy());
    }
}


После пессив мода они поползли=)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение Jun 8 2010, 20:41
Сообщение #3305


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

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



Цитата
Посмотреть, что возвращает GetNearest Enemy() и GetCurrentAction().
(IMG:style_emoticons/kolobok_light/smile.gif) Имелось в виду выполнить скрипт:
Neverwinter Script
object oSelf = OBJECT_SELF;
AssignCommand(GetModule(), SpeakString("Action: " + IntToString(GetCurrentAction(oSelf)), TALKVOLUME_SHOUT));
AssignCommand(GetModule(), SpeakString("Nearest enemy: " + GetName(GetNearestEnemy(oSelf)), TALKVOLUME_SHOUT));
Цитата
После пессив мода они поползли=)
Ну значит мое первое предположение в широком смысле верно - что-то забивает стек экшенов.

Сообщение отредактировал Ilerien - Jun 8 2010, 20:43
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Rommantic
сообщение Jun 11 2010, 16:36
Сообщение #3306


Level 1


Класс: Страж Тьмы
Характер: Lawful Evil
Раса: Эльф



Доброго времени суток. Боюсь показаться тупым юзером, но у меня не работает встроенный в редактор скрипт "дать награду" что-либо. Не выдаёт ни денег, ни опыта ни вещей. Что у меня неверно? Вот так на данный момент выглядит скрипт:

//::///////////////////////////////////////////////
//:: FileName at_003
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
//:: Created By: Script Wizard
//:: Created On: 11.06.2010 17:34:41
//:://////////////////////////////////////////////
void main()
{
// Äàòü ãîâîðÿùåìó îïûò
GiveXPToCreature(GetPCSpeaker(), 10);

}

Вместо абракадабры, соответственно " Дать говорящему опыт"
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 11 2010, 16:46
Сообщение #3307


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

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



маленькая буква "я" в скрипте - древнейшая проблема, о упоминание о которой есть в куче тем.
Убирай русский коммент или, что гораздо лучше, ставь патч Думбо
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Rommantic
сообщение Jun 12 2010, 06:22
Сообщение #3308


Level 1


Класс: Страж Тьмы
Характер: Lawful Evil
Раса: Эльф



Благодарю. Страниц море всё читать - никакого времени не хватит ) Честно пролистал первые две страницы этого раздела, не нашёл )

Пойду разбираться с патчем: как и куда втыкать ) Более чем уверен, что будут ещё вопросы, так что моралььно готовьтесь: я тот ещё чайник )) (IMG:style_emoticons/kolobok_light/crazy.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jun 12 2010, 07:37
Сообщение #3309


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Rommantic, есть еще версия для печати и поиск по странице. Плюс, есть скрипты для новичков там всяко разно есть то что ищется. Например, Вот тут.

Neverwinter Script
//:://////////////////////////////////////////////
//:: Даем партии ХР
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 18.09.2005
//:://////////////////////////////////////////////
#include "nw_i0_tool"

void main()
{
    RewardPartyXP(150, GetPCSpeaker());
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Rommantic
сообщение Jun 12 2010, 07:53
Сообщение #3310


Level 1


Класс: Страж Тьмы
Характер: Lawful Evil
Раса: Эльф



Вот,кстати, сразу и вопрос. Если мне нужно написать скрипт оценки наличия определённого количества золота у игрока, где пивать количество золота? Пока что выглядит оно вот так:
Neverwinter Script
//::///////////////////////////////////////////////
//:: FileName sc_002
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
//:: Created By: Script Wizard
//:: Created On: 12.06.2010 8:44:20
//:://////////////////////////////////////////////
#include "nw_i0_tool"

int StartingConditional()
{

    // Удостовериться, что в снаряжении персонажа игрока имеются данные предметы
    if(!HasItem (GetPCSpeaker(), "NW_IT_GOLD001") )
        return FALSE;

    return TRUE;
}


Попытался методом тыка, пока что пришёл к такому варианту (компелирует, но не работает):

Neverwinter Script
//::///////////////////////////////////////////////
//:: FileName sc_002
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
//:: Created By: Script Wizard
//:: Created On: 12.06.2010 8:44:20
//:://////////////////////////////////////////////
#include "nw_i0_tool"

int StartingConditional()
{

    // Удостовериться, что в снаряжении персонажа игрока имеются данные предметы
    if(!HasItem (GetPCSpeaker(), "NW_IT_GOLD001 (1000)") )
        return FALSE;

    return TRUE;
}


как правильно? (IMG:style_emoticons/kolobok_light/unsure.gif)
Причины изменения: Для скриптов есть тег [nss]
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
greye
сообщение Jun 12 2010, 08:55
Сообщение #3311


Level 7
**

Класс: Некромант
Характер: True Neutral
Раса: Нежить



Есть функция GetGold().
Соответственно:
Neverwinter Script
if (GetGold(GetPCSpeaker()) < 1000) {
    return FALSE;
}
return TRUE;


Сообщение отредактировал greye - Jun 12 2010, 08:59
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
likkil
сообщение Jun 12 2010, 22:22
Сообщение #3312


Level 2
*

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



Доброго времени суток
У меня такой вопросик : вот у меня есть модуль старой версии 1.6 , а так охота в нём покататся на лошадях какие команды мне использовать в скрипте чтоб это было возможно
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jun 13 2010, 08:45
Сообщение #3313


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Цитата(likkil @ Jun 13 2010, 00:22) *
а так охота в нём покататся на лошадях какие команды мне использовать в скрипте чтоб это было возможно

Команда - НО!!! Трогай! - двигаться вперед.
Команда - ТРРРРР! - остановка.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Laajin
сообщение Jun 14 2010, 14:37
Сообщение #3314


Level 5
**

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



likkil
это долгая история
во первых что за модуль...кастомный иль не кастомный - вопрос непонятен
во вторых лошадки появляются только после патча 1.69
до него жалкие попытки покататься на лошадках выливались в тяжелые хаки и муторные системы скриптов.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
denis0k
сообщение Jun 14 2010, 17:13
Сообщение #3315


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

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [PW]
Gem of the North
Край Лесов



В 1.69 по сути те же хаки (просто включены в ресурсы игры) и те же муторные системы скриптов. Ничего конкретно нативного в коняшках нет - всё тот же геморрой с кастомными анимациями и подменой аппиаранса. Изврат в общем.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
wirTUS
сообщение Jun 19 2010, 17:56
Сообщение #3316


Level 5
**

Класс: Убийца
Характер: Lawful Evil
Раса: Человек



Здравствуйте. У меня не работает (или постоянно удаётся, даже при минусовых значениях навыка) проверка убеждения для появления реплики, соотв. фраза всегда доступна в диалоге. Где косяк?
Neverwinter Script
#include "nw_i0_tool"

int StartingConditional()
{
    if(!GetHasSkill(SKILL_PERSUADE, GetPCSpeaker()))
    if(!(AutoDC(DC_MEDIUM, SKILL_PERSUADE, GetPCSpeaker())))
        return FALSE;;

    return TRUE;;
}


А так же http://www.city-of-masters.ru/forums/index...0&start=200 последний пост (18.06.2010)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jun 21 2010, 05:48
Сообщение #3317


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Попробуй как-то так.
Neverwinter Script
#include "nw_i0_tool"

int StartingConditional()
{
    if(!GetHasSkill(SKILL_PERSUADE, GetPCSpeaker()) || !AutoDC(DC_MEDIUM, SKILL_PERSUADE, GetPCSpeaker()))
        return FALSE;
    return TRUE;
}


У тебя ошибка, во первых две пары дочки тире, во вторых после IF ставится скобка и в скобке выполняется условие. Если скобки не ставить (как у тебя) то будет выполнено только самое первое и одно условие. Твой скрипт можно было записать и так:
Neverwinter Script
#include "nw_i0_tool"

int StartingConditional()
{
    if(!GetHasSkill(SKILL_PERSUADE, GetPCSpeaker()))
        return FALSE;
    if(!AutoDC(DC_MEDIUM, SKILL_PERSUADE, GetPCSpeaker()))
        return FALSE;
    return TRUE;
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
wirTUS
сообщение Jun 21 2010, 14:01
Сообщение #3318


Level 5
**

Класс: Убийца
Характер: Lawful Evil
Раса: Человек



спс заработало (IMG:style_emoticons/kolobok_light/yahoo.gif) а как проверить отсутствие навыка (фраза а-ля "я нуб, я не качал убеждение, блеф и запугивание и у меня нет денег. Я должен умереть!)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Jun 21 2010, 14:49
Сообщение #3319


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

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



Как раз первая проверка в скрипте и есть проверка навыка убедить... А вот дальше идет бросок, записанный в инклюде. Я же пользуюсь своими скриптами проверки необходимого навыка на убеждение + строка в отчете, что там как прошло:
Neverwinter Script
//::///////////////////////////////////////////////
//:: Проверка навыка "УБЕДИТЬ" сложность НОРМАЛЬНО.
//:://////////////////////////////////////////////
int StartingConditional()
{
object oPC = GetPCSpeaker();
int nSkillZ = GetSkillRank(SKILL_PERSUADE, oPC);
int nDC = 2 + d3();

  if(nSkillZ > nDC)
    {
    SendMessageToPC(oPC, "<c у >Убедить</c><c °у> Бросок : "+IntToString(nSkillZ)+" против "+IntToString(nDC)+" </c><c у >УДАЧА</c>");
    return TRUE;
    }
    SendMessageToPC(oPC, "<c у >Убедить</c><c °у> Бросок : "+IntToString(nSkillZ)+" против "+IntToString(nDC)+" </c><cу  >ПРОВАЛ</c>");
    return FALSE;
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
wirTUS
сообщение Jun 22 2010, 19:40
Сообщение #3320


Level 5
**

Класс: Убийца
Характер: Lawful Evil
Раса: Человек



Ещё один глупый вопрос:

есть скрипт (подгон под себя первого скрипта выложенного Aiwan в разделе "Скрипты для новичков") с попыткой перед дестроем из инвентаря сложить всё в сундук



Neverwinter Script
void main()
{
    object oChest = GetObjectByTag("piratechest");
    object oPC = GetEnteringObject(); // Того кто вошел
    object oArmor = GetObjectByTag("item112");

//-----------------В сундук---------------------
        object oItem = GetFirstItemInInventory(oPC); // Первый итем в инвентаре
        while(GetIsObjectValid(oItem)) // Пока такой объект существует
        {
            ActionGiveItem(oItem, oChest);
            DestroyObject(oItem);
            oItem = GetNextItemInInventory(oPC); // Берем другой объект...
        }

//------------------ Убиваем весь инвентарь ------------------------------------
        while(GetIsObjectValid(oItem)) // Пока такой объект существует
        {
        DestroyObject(oItem);
        oItem = GetNextItemInInventory(oPC); // Берем другой объект...
        }

    int i=0;
        while(i<14) // ПОКА i меньше 14. 14 - это количество всех слот у объекта
        {
        ActionGiveItem(GetItemInSlot(i, oPC), oChest);
        i++;
        ActionGiveItem(GetItemInSlot(i, oPC), oChest);
        }

//------------------ Убиваем всю амуницию -------------------------------------
        while(i<14) // ПОКА i меньше 14. 14 - это количество всех слот у объекта
        {
        DestroyObject(GetItemInSlot(i, oPC));
        i++;
        DestroyObject(GetItemInSlot(i, oPC));
        }
        // Было ноль к примеру, станет 1 и т.д.

//  -------------------одёжка-------------------------
        CreateItemOnObject("item112", oPC, 1);
        AssignCommand(oPC, ActionEquipItem(oArmor, INVENTORY_SLOT_CHEST));
}


Проблемы:
1) В сундук ничего не попадает
2) Уничтожаются только неодетые вещи
3) Следует из проблемы 2) - одёжка не одевается (но появляется в инве)

На всякий случай:
1) Скрипт стоит на onenter локации
2) Проверки на повторность захода в локацию etc нету т.к. предусмотрено только одиночное её посещение и модуль планируется сингловый
3)"item112" и тэг и ресреф вещи
4) item 112 ничего не требует для ношения
5) на onclientrun модуля стоит скрипт схожего действия (при надобности запосчу) (он работает) вышеуказанный скрипт не работает и с и без включённого модулестартоовского
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
greye
сообщение Jun 22 2010, 20:23
Сообщение #3321


Level 7
**

Класс: Некромант
Характер: True Neutral
Раса: Нежить



Во-первых, ты уничтожаешь вещи при переносе. Логично, что после этого ты ничего не найдёшь в сундуке. Во-вторых, я не особо помню, но ActionGiveItem вроде бы работает только от лица владельцев предмета, т.е. надо либо вешать скрипт на игрока, либо делать AssignCommand.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
ReyBrujo
сообщение Jun 22 2010, 21:01
Сообщение #3322


Level 2
*

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



А еще можно использовать CreateItemOnObject вместо ActionGiveItem.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
wirTUS
сообщение Jun 22 2010, 23:53
Сообщение #3323


Level 5
**

Класс: Убийца
Характер: Lawful Evil
Раса: Человек



Спасибо, но ни то ни другое не работает (при убирании дестроя он оставляет всё как было, только новую шмотку дает, ни с ассигнкомманд (экшнгивайтем(...)) ни с крейтайтемонобжект сундук пустует (IMG:style_emoticons/kolobok_light/sad.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение Jun 23 2010, 01:49
Сообщение #3324


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

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



Neverwinter Script
void main()
{
    object oChest = GetObjectByTag("piratechest");
    object oPC = GetEnteringObject();
    object oArmor = GetObjectByTag("item112"); //первая ошибка - таким способом можно получить только уже существующий в игре объект, если планируется создавать итем, то так делать нельзя


        object oItem = GetFirstItemInInventory(oPC);
        while(GetIsObjectValid(oItem))
        {
            ActionGiveItem(oItem, oChest); //любой экшен выполняется от лица вызвавшего команду объекта - нужно использовать AssignCommand
            DestroyObject(oItem); //что самое интересное, уничтожается _тот же самый_ итем, который хотим положить в сундук
            oItem = GetNextItemInInventory(oPC);
        }

        //этот блок вообще не нужен - все итемы в инвентаре уже помечены на удаление
        while(GetIsObjectValid(oItem))
        {
        DestroyObject(oItem);
        oItem = GetNextItemInInventory(oPC);
        }

    int i=0;
        while(i<14)
        {
        ActionGiveItem(GetItemInSlot(i, oPC), oChest); //опять AssignCommand
        i++;
        ActionGiveItem(GetItemInSlot(i, oPC), oChest); //зачем дублировать-то?
        }

        while(i<14)
        {
        DestroyObject(GetItemInSlot(i, oPC));
        i++;
        DestroyObject(GetItemInSlot(i, oPC)); //тоже зачем-то дублируется команда
        }


        CreateItemOnObject("item112", oPC, 1);
        AssignCommand(oPC, ActionEquipItem(oArmor, INVENTORY_SLOT_CHEST)); //ага, и пытаемся надеть что угодно, только не созданную предыдущей командой одежду
}

Правильно будет так:
Neverwinter Script
void main()
{
    object oChest = GetObjectByTag("piratechest");
    object oPC = GetEnteringObject();
   
    object oNewItem;
    object oItem = GetFirstItemInInventory(oPC);
    while(GetIsObjectValid(oItem))
    {
            if(GetBaseItemType(oItem) != BASE_ITEM_LARGEBOX)
            {
                oNewItem = CopyItem(oItem, oChest, TRUE); //копируем итем в сундук
                SetDescription(oNewItem, GetDescription(oItem));          
            }
            DestroyObject(oItem);
            oItem = GetNextItemInInventory(oPC);
    }
   
    int i;
    for(i = INVENTORY_SLOT_HEAD; i <= INVENTORY_SLOT_BOLTS; i++)
    {
        oItem = GetItemInSlot(i, oPC);
        oNewItem = CopyItem(oItem, oChest, TRUE);
        SetDescription(oNewItem, GetDescription(oItem));
        DestroyObject(oItem);
    }

    AssignCommand(oPC, ClearAllActions(TRUE)); //чистка стека
    oItem = CreateItemOnObject("item112", oPC);
    AssignCommand(oPC, ActionEquipItem(oItem, INVENTORY_SLOT_CHEST));

Если ящики так уж критично копировать, в чём я сильно сомневаюсь, то код будет таким:
Neverwinter Script
...
    while(GetIsObjectValid(oItem))
    {
            if(GetBaseItemType(oItem) == BASE_ITEM_LARGEBOX)
                AssignCommand(oPC, ActionGiveItem(oItem, oChest)); //не знаю, как себя поведет передача полного ящика в таком скрипте - надо тестить
            else
            {
                oNewItem = CopyItem(oItem, oChest, TRUE); //копируем итем в сундук
                SetDescription(oNewItem, GetDescription(oItem));    
                DestroyObject(oItem);     
            }
           
            oItem = GetNextItemInInventory(oPC);
    }
Соответственно, AssignCommand(oPC, ClearAllActions(TRUE)); переедет в начало скрипта.

Сообщение отредактировал Ilerien - Jun 23 2010, 02:14
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Jun 23 2010, 07:25
Сообщение #3325


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

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



Я уже когда-то выкладывал скрипт переноса вещей в ящик. Вот ссылка на пост: http://www.city-of-masters.ru/forums/index...;p=122407&#

В принципе Ilerien, контейнеры, т.е. волшебные сумки нужно переносить оператором ActionGiveItem. Переходят со всем содержимым и в том же раскладе в них вещей. Можно обойтись и этой одной функцией для переноса всех шмоток... Но есть одно НО. Не тестил для НПС, а вот для плейсов теряется переносимый инвентарь. Видно по причине превышения акций...

Поэтому нужно сперва перебрать инвентарь и перенести сумки. Затем скопировать остальной шмот. Да и про золото не стоит забывать, т.к. передать плейсу мы можем не более 50.000 злотых...
Neverwinter Script
// Take nAmount of gold from oCreatureToTakeFrom.
// - nAmount
// - oCreatureToTakeFrom: If this is not a valid creature, nothing will happen.
// - bDestroy: If this is TRUE, the caller will not get the gold.  Instead, the
//  gold will be destroyed and will vanish from the game.
void TakeGoldFromCreature(int nAmount, object oCreatureToTakeFrom, int bDestroy=FALSE)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

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

 



Текстовая версия Сейчас: 28th April 2025 - 01:08