![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#2126
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
-fenix-, как ты себе это представляешь? Игра основана на спасбросках и т.п. вещах, и поэтому все действия, которые осуществляются с персонажем, отображаются в логах. Не совсем понимаю, зачем тебе это нужно?
|
![]()
Сообщение
#2127
|
|
Level 9 ![]() Класс: Вор Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] ![]() |
QUOTE(-fenix- @ Apr 3 2006, 18:22) [snapback]76076[/snapback] Иными словами - НЕТ! А жаль. QUOTE можно временные хиты добавлять еще..
|
![]()
Сообщение
#2128
|
|
Level 8 ![]() ![]() ![]() Класс: Теневой Танцор Характер: True Neutral Раса: Эльф ![]() |
Подмогите со скриптом, чтобы в модуль можно было играть к примеру только мужским полом...
|
![]()
Сообщение
#2129
|
|
Level 9 ![]() Класс: Вор Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] ![]() |
|
![]()
Сообщение
#2130
|
|
Level 8 ![]() ![]() ![]() Класс: Теневой Танцор Характер: True Neutral Раса: Эльф ![]() |
Благодарствую...
Но также, знаете, не получилось заставить непися, к примеру подбегать к двери и бежать в другую локацию или просто исчезать, помогитеее... |
![]()
Сообщение
#2131
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Слушай, это есть в разделе новичков. Давай ка ты читай что есть. Нечего спрашивать что спрашивали сто раз.
|
![]()
Сообщение
#2132
|
|
Level 8 ![]() ![]() ![]() Класс: Тайный Лучник Характер: Lawful Good Раса: Эльф ![]() |
Привет,
Возникла идея, или лутше назвать "потребность", что бы когда ПС садился то у него с рук снимались перчатки (IMG:style_emoticons/kolobok_light/smile.gif) , с головы шлем, убирался меч и щит. А когда он вставал, ето под красивую анимацию надевалось все обратно. ПС: Может я и написал бы, но я не сталкивался с тем, как снимать или надевать что-то... |
![]()
Сообщение
#2133
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
NSS // Unequip oItem from whatever slot it is currently in. void ActionUnequipItem(object oItem) NSS // Equip oItem into nInventorySlot. // - nInventorySlot: INVENTORY_SLOT_* // * No return value, but if an error occurs the log file will contain // "ActionEquipItem failed." // // Note: // If the creature already has an item equipped in the slot specified, it will be // unequipped automatically by the call to ActionEquipItem. // // In order for ActionEquipItem to succeed the creature must be able to equip the // item oItem normally. This means that: // 1) The item is in the creature's inventory. // 2) The item must already be identified (if magical). // 3) The creature has the level required to equip the item (if magical and ILR is on). // 4) The creature possesses the required feats to equip the item (such as weapon proficiencies). void ActionEquipItem(object oItem, int nInventorySlot) NSS // Get the object which is in oCreature's specified inventory slot // - nInventorySlot: INVENTORY_SLOT_* // - oCreature // * Returns OBJECT_INVALID if oCreature is not a valid creature or there is no // item in nInventorySlot. object GetItemInSlot(int nInventorySlot, object oCreature=OBJECT_SELF) В скрипте, сажающим на стул добавь действия снятия вещей до того, как усаживать персонажа. Снятые вещи запомни в локальных переменных и пусти цикл, проверяющий, допустим, каждые 3 сек. сидит ли еще персонаж на стуле или нет. |
![]()
Сообщение
#2134
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Проверять через цикл не самая лучшая идея. Гонять циклы для всех сидящих персонажей, причем постоянно, только лишняя нагрузка на процессор. Лучше рядом посадить невидимое существо, которое будет слушать команды игрока или же составить список команд, которые можно будет запускать с быстрой панели. Например, решил он выполнить команду, сесть на стул, нажимаем на определенное действие в быстрой панели, решил встать, нажимаем другое действие. А там и соответствующие действия по раздеванию (IMG:style_emoticons/kolobok_light/smile.gif)
Кстати, интересная идея, надо поэкспериментировать. Есть что-то подобное у скриптов DMFI, но там вроде бы все команды видны в чате. |
![]()
Сообщение
#2135
|
|
Level 9 ![]() Класс: Вор Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] ![]() |
хертбиты у мобов на АИ работают и нормально..
процессор спалили пока только один (IMG:style_emoticons/kolobok_light/crazy.gif) ни какая микро проверялка с АИ не сравнится (IMG:style_emoticons/kolobok_light/offtopic.gif) |
![]()
Сообщение
#2136
|
|
Level 1 Класс: Волшебник Характер: Chaotic Neutral Раса: Полуэльф ![]() |
Привет,
У PC есть пиво "ss_pivo" (n бутылочек). Как сделать, чтобы в диалоге отдать пиво НПС. Нужно отдать заявленное количество бутылочек. И как определить, сколько бутылочек есть у PC? |
![]()
Сообщение
#2137
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
С помощью фун-ций:
NSS // Sets stack size of an item. // - oItem: item to change // - nSize: new size of stack. Will be restricted to be between 1 and the // maximum stack size for the item type. If a value less than 1 is passed it // will set the stack to 1. If a value greater than the max is passed // then it will set the stack to the maximum size void SetItemStackSize(object oItem, int nSize) NSS // Returns stack size of an item // - oItem: item to query int GetItemStackSize(object oItem) NSS // Destroy oObject (irrevocably). // This will not work on modules and areas. void DestroyObject(object oDestroy, float fDelay=0.0f) |
![]()
Сообщение
#2138
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
QUOTE(Lanilor @ Apr 7 2006, 06:26) [snapback]76679[/snapback] И как определить, сколько бутылочек есть у PC? к примеру вот скрипт, показывающий строку в диалоге, если у персонажа игрока есть больше, чем N бутылочек: NSS int Match(string s1, string s2) забирающий N бутылочек (тоже в диалоге):{ return (s1 == s2); } int GetNumItemsInInventory(object oInventory = OBJECT_SELF, string sTag = "*") { int nNum = 0; object oItem = GetFirstItemInInventory(oInventory); while (GetIsObjectValid(oItem)) { if (Match(GetTag(oItem), sTag)) { nNum += GetItemStackSize(oItem); } oItem = GetNextItemInInventory(oInventory); } return nNum; } int StartingConditional() { return (GetNumItemsInInventory(GetPCSpeaker(), "ss_pivo") >= 3); } NSS int Match(string s1, string s2) только не забудь залепить такую дыру в диалогах NWN: во время разговора можно положить предметы на землю, а при этом скрипт может уже постчитать, что предметы в инвентаре. Лечится легко:{ return (s1 == s2); } int RemoveItemsFromInventory(object oInventory = OBJECT_SELF, string sTag = "*", int nNum = -1) { int nStack; object oItem = GetFirstItemInInventory(oInventory); while (GetIsObjectValid(oItem) && (nNum != 0)) { if (Match(GetTag(oItem), sTag)) { if (nNum < 0) DestroyObject(oItem); else if ((nStack = GetItemStackSize(oItem)) > nNum) { SetItemStackSize(oItem, nStack - nNum); return 0; } else { DestroyObject(oItem); nNum -= nStack; } } oItem = GetNextItemInInventory(oInventory); } return nNum; } void main() { RemoveItemsFromInventory(GetPCSpeaker(), "ss_pivo", N); } -- Непись: Ну и где ж пиво-то? ---- Игрок: Вот тебе твое пиво, как заказывал, все *N* штук! (провека на наличие предметов) ------ Непись: О-о-о... давай-давай, теперь в кружку лей... (проверка на наличие предметов) ------ Непить: Ну-ну молодец, молодец. А теперь подними с пола и поставь на стол. Я сказал подними и поставь! ---- Игрок: Сейчас принесу... |
![]()
Сообщение
#2139
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
А можно еще так:
NSS void DestroyItem(object oOwner, string sComponent, int nNumItems) { int nStackSize; object oItem = GetFirstItemInInventory(oOwner); while (GetIsObjectValid(oItem) == TRUE) { if (GetTag(oItem) == sComponent) { nStackSize = GetItemStackSize(oItem); if (nStackSize > nNumItems) { SetItemStackSize(oItem, nStackSize - nNumItems); return; } else if (nStackSize == nNumItems) { DestroyObject(oItem, 0.1); return; } else if (nStackSize < nNumItems) { nNumItems = nNumItems - nStackSize; DestroyObject(oItem, 0.1); } } oItem = GetNextItemInInventory(oOwner); } } void main() { object oPC = GetPCSpeaker(); string sGhead = "am_it_goblinhead"; if (IsInInventory(oPC, sGhead)) { int nFound = 0; object oItem = GetFirstItemInInventory(oPC); while (GetIsObjectValid(oItem) == TRUE) { if (GetTag(oItem) == sGhead) { nFound = nFound + GetNumStackedItems(oItem); } oItem = GetNextItemInInventory(oPC); } GiveGoldToCreature(oPC, 100 * nFound); DestroyItem(oPC, sGhead, nFound); } else { SpeakString("Не понял, а где же трофеи? Вы решили меня надуть?"); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectKnockdown(), oPC, 15.0f); } } Взял скрипт из своего модуля. НПС отдаются головы гоблинов. Если их нет, но игрок желает на халяву получить деньги (а проверка на деньги уже была), ставится на второе условие сей мелкий скриптик. Сообщение отредактировал Zirrex - Apr 8 2006, 02:22 |
![]()
Сообщение
#2140
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
А чего в базу не кинуть код? Я вот на днях тоже писал сам, а мог бы не париться... (IMG:style_emoticons/kolobok_light/pardon.gif)
|
![]()
Сообщение
#2141
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
А база закрыта =)
Lex: открыл |
![]()
Сообщение
#2142
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Я тогда подберу коллекцию разнообразных скриптов, которые будут полезны каждому, кто занимается разработкой модулей. Только вначале их нужно соответствующе оформить (IMG:style_emoticons/kolobok_light/smile.gif)
Lex: от это будет отлично |
![]()
Сообщение
#2143
|
|
Level 1 Класс: Волшебник Характер: Chaotic Neutral Раса: Полуэльф ![]() |
2azathoth: сенькс, очень удобный код.
2Zirrex: а зачем в DestroyObject() указан fDelay? |
![]()
Сообщение
#2144
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Lanilor, а, это я делал для одного скрипта своего, чтобы вначале выводилось сообщение, а потом удалялась сама вещь. Можешь задержку убрать, она не принципиальна.
|
![]()
Сообщение
#2145
|
|
Level 1 Класс: Рейнджер Характер: Lawful Neutral Раса: Эльф ![]() |
Уважаемые мастера, очень сомневаюсь, что это возможно, но вопрос всё же задам:
Допустим PC и два хенчмена доходят до финала какой-нить локации, а дальше их, по сценарию, разбрасывает по разным локациям. Появляется какая-нить фея и говорит - "А теперь выбираем сценарий!" (помните FF6?) И после прохождения одного, сразу же переходить к прохождению второго и т.д. Короче - Отдельно за хенчей, без PC, можно играть? И как энто буит выглядеть в скриптах??? |
![]()
Сообщение
#2146
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Люди, ни кто не сталкивался с ситуацией, когда нужно снять эффект яда?
Сам-то эффект снимается, но с каждым эффектом яда накладывается еще и эффект понижения статов, для каждого яда понижается свой стат и для каждого кидается свой кубик. Так вот, как отличить эффект понижающий статы, который был наложен вместе с ядом, от того, который был просто когда-то наложен? |
![]()
Сообщение
#2147
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
QUOTE(-fenix- @ Apr 11 2006, 06:12) [snapback]77271[/snapback] Так вот, как отличить эффект понижающий статы, который был наложен вместе с ядом, от того, который был просто когда-то наложен? Поиск эффекта от имени того, кто его наложил не выхоит? NSS void RemoveEffectCreator(object oCreature, object oCreator = OBJECT_SELF)
{ effect eEffect = GetFirstEffect(oCreature); while(GetIsEffectValid(eEffect)) { if (GetEffectCreator(eEffect) == oCreator) { RemoveEffect(oCreature, eEffect); } eEffect = GetNextEffect(oCreature); } } |
![]()
Сообщение
#2148
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
QUOTE(Aiwan @ Apr 11 2006, 10:02) [snapback]77290[/snapback] Поиск эффекта от имени того, кто его наложил не выхоит? Хм, ну да, можно для начало найти яд, узнать кто его наложил, снять его, а потом поискать EffectAbilityDecrease, который повесил этот же объект. Сенькс. (IMG:style_emoticons/kolobok_light/yes3.gif) |
![]()
Сообщение
#2149
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Fortesso, я так и не понял, что тебе нужно.
|
![]()
Сообщение
#2150
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
-fenix-, а если просто кинуть спел лечения от яда?
NSS void main() { object oPC = GetFirstPC(); AssignCommand(oPC,ActionCastSpellAtObject(SPELL_LESSER_RESTORATION,oPC,METAMAGIC_QUICKEN,TRUE)); } |
![]() ![]() |
Текстовая версия | Сейчас: 29th April 2025 - 23:19 |