Владимир Опубликовано 4 июля, 2010 Жалоба Поделиться Опубликовано 4 июля, 2010 Насколько я знаю - нет. Но если предмен зачарован не самим игроком, а уже был в игре/плагинах, можно удалить предмет из инвентаря игрока, и снова добавить - добавленный будет уже с полным зарядом Ссылка на комментарий Поделиться на другие сайты Поделиться
Moorindal Опубликовано 24 июля, 2010 Жалоба Поделиться Опубликовано 24 июля, 2010 Пытаюсь написать скрипт для Вампирического Кольца (в СХ), суть которого заключается в следующем: %PCName надевает кольцо и становится вампиром (не просто получает пустой эффект "Вампиризм", как это сделано в СХ, а становится полноценным вампиром (но без клана) со всеми вытекающими последствиями, как то: способности, скиллы, атрибуты и пр., а так же отношение неписей как к вампиру.) То что написал я работает хреново. Вот мой скрипт: Begin CH_Vamp_Ring_Script short OnPCEquip if ( OnPCEquip == 1 ) Player->AddSpell "Vampire Attributes" Player->AddSpell "Vampire Skills" Player->AddSpell "Vampire Immunities" Player->AddSpell "Vampire Sun Damage" Player->AddSpell "Vampire Touch" endif if ( OnPCEquip == 0 ) Player->RemoveSpell "Vampire Attributes" Player->RemoveSpell "Vampire Skills" Player->RemoveSpell "Vampire Immunities" Player->RemoveSpell "Vampire Sun Damage" Player->RemoveSpell "Vampire Touch" endif End CH_Vamp_Ring_Script Ссылка на комментарий Поделиться на другие сайты Поделиться
NmLs Опубликовано 24 июля, 2010 Жалоба Поделиться Опубликовано 24 июля, 2010 (изменено) Нужно же еще: set PCVampire to 1И потом обратно, но журнальной записью проверять на 0 или -1 Статус вампиризма: 0=не был, 1=вампир, -1= излеченный© MSFD А вообще что ты имеешь ввиду под "работает хреново"? Ты же знаешь что телепатов нет. Изменено 24 июля, 2010 пользователем NmLs Ссылка на комментарий Поделиться на другие сайты Поделиться
Moorindal Опубликовано 24 июля, 2010 Жалоба Поделиться Опубликовано 24 июля, 2010 Гхм... Ну взять например то, что после RemoveSpell из строки статуса (в окошке с заклинаниями) пропадают все эффекты. Насчет PCVampire ты прав - я забыл про эту глобальную переменную, но проблема с RemoveSpell остается. Ссылка на комментарий Поделиться на другие сайты Поделиться
NmLs Опубликовано 24 июля, 2010 Жалоба Поделиться Опубликовано 24 июля, 2010 Короче вот я по быстрому набросал (в игре не тестил) но должно работать: Begin CH_Vamp_Ring_Script short state short vampstat short OnPCEquip if ( state == 0 ) if ( OnPCEquip == 1 ) set vampstat to PCVampire if ( vampstat == 0 ) Player->AddSpell "Vampire Attributes" Player->AddSpell "Vampire Skills" Player->AddSpell "Vampire Immunities" Player->AddSpell "Vampire Sun Damage" Player->AddSpell "Vampire Touch" set state to 1 set PCVampire to 1 elseif ( vampstat == -1 ) Player->AddSpell "Vampire Attributes" Player->AddSpell "Vampire Skills" Player->AddSpell "Vampire Immunities" Player->AddSpell "Vampire Sun Damage" Player->AddSpell "Vampire Touch" set state to 1 set PCVampire to 1 endif endif endif if ( state == 1 ) if ( OnPCEquip == 0 ) set PCVampire to vampstat set state to 0 Player->RemoveSpell "Vampire Attributes" Player->RemoveSpell "Vampire Skills" Player->RemoveSpell "Vampire Immunities" Player->RemoveSpell "Vampire Sun Damage" Player->RemoveSpell "Vampire Touch" endif endif End Ссылка на комментарий Поделиться на другие сайты Поделиться
Moorindal Опубликовано 24 июля, 2010 Жалоба Поделиться Опубликовано 24 июля, 2010 Все, вроде бы работает, но после надевания кольца из списка пропадают все заклинания и способности (при следующем открытии меню все в порядке) - не смертельно, но неприятно. Это можно как-то убрать? Ссылка на комментарий Поделиться на другие сайты Поделиться
NmLs Опубликовано 24 июля, 2010 Жалоба Поделиться Опубликовано 24 июля, 2010 Добавь if ( MenuMode == 1 )returnendifпосле объявления переменных Ссылка на комментарий Поделиться на другие сайты Поделиться
Moorindal Опубликовано 24 июля, 2010 Жалоба Поделиться Опубликовано 24 июля, 2010 Begin CH_Vamp_Ring_Script short state short vampstat short OnPCEquip if ( MenuMode == 1 ) return endif if ( state == 0 ) if ( OnPCEquip == 1 ) set vampstat to PCVampire if ( vampstat == 0 ) Player->AddSpell "Vampire Attributes" Player->AddSpell "Vampire Skills" Player->AddSpell "Vampire Immunities" Player->AddSpell "Vampire Sun Damage" Player->AddSpell "Vampire Touch" set state to 1 set PCVampire to 1 elseif ( vampstat == -1 ) Player->AddSpell "Vampire Attributes" Player->AddSpell "Vampire Skills" Player->AddSpell "Vampire Immunities" Player->AddSpell "Vampire Sun Damage" Player->AddSpell "Vampire Touch" set state to 1 set PCVampire to 1 endif endif endif if ( state == 1 ) if ( OnPCEquip == 0 ) set PCVampire to vampstat set state to 0 Player->RemoveSpell "Vampire Attributes" Player->RemoveSpell "Vampire Skills" Player->RemoveSpell "Vampire Immunities" Player->RemoveSpell "Vampire Sun Damage" Player->RemoveSpell "Vampire Touch" endif endif End ? Ссылка на комментарий Поделиться на другие сайты Поделиться
NmLs Опубликовано 24 июля, 2010 Жалоба Поделиться Опубликовано 24 июля, 2010 Ага. Ссылка на комментарий Поделиться на другие сайты Поделиться
Moorindal Опубликовано 24 июля, 2010 Жалоба Поделиться Опубликовано 24 июля, 2010 Так, вот теперь работает. Спасибо. Кстати, а если персонаж уже вампир - оно ему спеллы не продублирует? Ссылка на комментарий Поделиться на другие сайты Поделиться
NmLs Опубликовано 24 июля, 2010 Жалоба Поделиться Опубликовано 24 июля, 2010 Кстати, а если персонаж уже вампир - оно ему спеллы не продублирует? Нет, я это предусмотрел - можешь проверить. Ссылка на комментарий Поделиться на другие сайты Поделиться
XAHOK Опубликовано 27 июля, 2010 Жалоба Поделиться Опубликовано 27 июля, 2010 Добрый день. Можно ли узнать текущее значение навыка или характеристики без временных эффектов (но с учетом характеристик)? Ссылка на комментарий Поделиться на другие сайты Поделиться
NmLs Опубликовано 27 июля, 2010 Жалоба Поделиться Опубликовано 27 июля, 2010 Можно ли узнать текущее значение навыка или характеристики без временных эффектов Обычными средствами нельзя. Можно через MWSE, там есть для этого специальные функции. Ссылка на комментарий Поделиться на другие сайты Поделиться
XAHOK Опубликовано 27 июля, 2010 Жалоба Поделиться Опубликовано 27 июля, 2010 Обычными средствами нельзя. Можно через MWSE, там есть для этого специальные функции.Только для характеристик. Для навыков нет. Для спелэффектов тоже нет. Придется извращаться. Ссылка на комментарий Поделиться на другие сайты Поделиться
Moorindal Опубликовано 28 июля, 2010 Жалоба Поделиться Опубликовано 28 июля, 2010 Как в скрипте сделать проверку уровня репутации PC? Ссылка на комментарий Поделиться на другие сайты Поделиться
NmLs Опубликовано 28 июля, 2010 Жалоба Поделиться Опубликовано 28 июля, 2010 (изменено) GetReputation Изменено 28 июля, 2010 пользователем NmLs Ссылка на комментарий Поделиться на другие сайты Поделиться
Helis Опубликовано 26 августа, 2010 Жалоба Поделиться Опубликовано 26 августа, 2010 Люди добрые, выручите =/ Скрипт из куска LGNPC, который я перевёл. Не заметил поначалу. Begin lgnpc_pela_SpecialCoupon_Script ; Attached to lgnpc_pela_specialCoupon (Special Coupon). ; Disables/enables coupon as appropriate. short doOnce short switchedCoupons if ( switchedCoupons == 1 ) if ( ( player->GetItemCount "lgnpc_pela_ordinaryCoupon" ) == 1 ) set switchedCoupons to 0 SetJournalIndex "lgnpc_meb_coupon_q" 20 endif elseif ( switchedCoupons = 0 ) if ( ( GetPCCell "Pelagiad, Farusea Salas' House" ) == 1 ) if ( ( player->GetItemCount "lgnpc_pela_ordinaryCoupon" ) == 0 ) set switchedCoupons to 1 SetJournalIndex "lgnpc_meb_coupon_q" 25 endif endif endif if ( doOnce == 1 ) if ( ( GetJournalIndex "lgnpc_meb_coupon_q" ) == 20 ) set doOnce to 2 Enable endif endIf if ( doOnce == 0 ) set doOnce to 1 DIsable endif End lgnpc_pela_SpecialCoupon_Script Проблема в том, что SetJournalIndex доступна только в Трибунале. Жутко не хочется ради одной функции привязывать плаг к Трибу, можно как-то - пусть и через *опу - это обойти? Ссылка на комментарий Поделиться на другие сайты Поделиться
**ALEX** Опубликовано 31 августа, 2010 Жалоба Поделиться Опубликовано 31 августа, 2010 Вот отрывок из amuletTelFyrScript: ;if ( MenuMode == 1 ) ; Return ;endif Это нормально? Тоже самое есть в amuletAundaeScript, amuletBerneScript, amuletQuarraScript, amuletDaedraScript. Ссылка на комментарий Поделиться на другие сайты Поделиться
Bogdan Опубликовано 31 августа, 2010 Жалоба Поделиться Опубликовано 31 августа, 2010 Проблема в том, что SetJournalIndex доступна только в Трибунале. Жутко не хочется ради одной функции привязывать плаг к Трибу, можно как-то - пусть и через *опу - это обойти?так вроде ж, чтобы поменять индекс в дневнике, можно использовать и функцию journal Ссылка на комментарий Поделиться на другие сайты Поделиться
NmLs Опубликовано 31 августа, 2010 Жалоба Поделиться Опубликовано 31 августа, 2010 (изменено) Это нормально? Тоже самое есть в amuletAundaeScript, amuletBerneScript, amuletQuarraScript, amuletDaedraScript.А цо тебя не устраивает? Это нужно что-бы скрипт не работал в меню.А если стоят точка с запятой, то значит это нужно было на ранней стадии и сейчас можно удалять. так вроде ж, чтобы поменять индекс в дневнике, можно использовать и функцию journal Но ей нельзя поменять текущий индекс (который проверяется в диалогах). Изменено 31 августа, 2010 пользователем NmLs Ссылка на комментарий Поделиться на другие сайты Поделиться
z-Hunter Опубликовано 25 ноября, 2010 Жалоба Поделиться Опубликовано 25 ноября, 2010 Как заставить NPC побежать по направлению к игроку? Я использовал AiFollow, но если эти NPC атакуют игрока и их несколько, они могут после пары ударов по игроку передраться между собой, т.к. фолловеры сражаются за игрока. Ссылка на комментарий Поделиться на другие сайты Поделиться
DaWoodElf Опубликовано 25 ноября, 2010 Жалоба Поделиться Опубликовано 25 ноября, 2010 Как заставить NPC побежать по направлению к игроку? Я использовал AiFollow, но если эти NPC атакуют игрока и их несколько, они могут после пары ударов по игроку передраться между собой, т.к. фолловеры сражаются за игрока. можно пустить одного за игроком, а других за первым НПЦ. Такое, вроде бы возможно. Ссылка на комментарий Поделиться на другие сайты Поделиться
z-Hunter Опубликовано 25 ноября, 2010 Жалоба Поделиться Опубликовано 25 ноября, 2010 (изменено) можно пустить одного за игроком, а других за первым НПЦ. Такое, вроде бы возможно. id этих NPC неизвестны, и у них одинаковые скрипты. Я сейчас думаю, что наверное надо через GetTarget определять, что если бой не с игроком ведётся, то принудительно бой завершать. Изменено 25 ноября, 2010 пользователем z-Hunter Ссылка на комментарий Поделиться на другие сайты Поделиться
DaedricLord Опубликовано 25 ноября, 2010 Жалоба Поделиться Опубликовано 25 ноября, 2010 (кстати, как завершить бой?)."StopCombat" или может "setfight 0" -> "disable enable" Ссылка на комментарий Поделиться на другие сайты Поделиться
LofZ Опубликовано 25 ноября, 2010 Жалоба Поделиться Опубликовано 25 ноября, 2010 Как заставить NPC побежать по направлению к игроку? Я использовал AiFollow, но если эти NPC атакуют игрока и их несколько, они могут после пары ударов по игроку передраться между собой, т.к. фолловеры сражаются за игрока.Надо просто учесть в скрипте условия на случай, если неписи будут драться. Примеры из МСФД: If ( GetDeadCount, "My Friend" > 0 ) StartCombat, PlayerSetFight, 100endif if ( doOnce == 0 ) if ( "yagrum bagarn"->GetAttacked == 1 ) StartCombat player SetFight 90 SetDisposition 0 set doOnce to 1 endif Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти