Перейти к содержанию

FAQ-Тема для простых вопросов - "Что? Где? Как?"


Рекомендуемые сообщения

Насколько я знаю - нет. Но если предмен зачарован не самим игроком, а уже был в игре/плагинах, можно удалить предмет из инвентаря игрока, и снова добавить - добавленный будет уже с полным зарядом
Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...
  • Ответов 272
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

Пытаюсь написать скрипт для Вампирического Кольца (в СХ), суть которого заключается в следующем: %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

Ссылка на комментарий
Поделиться на другие сайты

Нужно же еще:

set PCVampire to 1

И потом обратно, но журнальной записью проверять на 0 или -1

 

Статус вампиризма:

 

0=не был, 1=вампир, -1= излеченный

© MSFD

 

А вообще что ты имеешь ввиду под "работает хреново"? Ты же знаешь что телепатов нет.

Изменено пользователем NmLs
Ссылка на комментарий
Поделиться на другие сайты

Гхм... Ну взять например то, что после RemoveSpell из строки статуса (в окошке с заклинаниями) пропадают все эффекты. Насчет PCVampire ты прав - я забыл про эту глобальную переменную, но проблема с RemoveSpell остается.
Ссылка на комментарий
Поделиться на другие сайты

Короче вот я по быстрому набросал (в игре не тестил) но должно работать:

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

 

?

Ссылка на комментарий
Поделиться на другие сайты

Кстати, а если персонаж уже вампир - оно ему спеллы не продублирует?
Нет, я это предусмотрел - можешь проверить.
Ссылка на комментарий
Поделиться на другие сайты

Добрый день. Можно ли узнать текущее значение навыка или характеристики без временных эффектов (но с учетом характеристик)?
Ссылка на комментарий
Поделиться на другие сайты

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

Обычными средствами нельзя. Можно через MWSE, там есть для этого специальные функции.

Только для характеристик. Для навыков нет. Для спелэффектов тоже нет. Придется извращаться.

Ссылка на комментарий
Поделиться на другие сайты

  • 5 недель спустя...

Люди добрые, выручите =/

 

Скрипт из куска 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 доступна только в Трибунале. Жутко не хочется ради одной функции привязывать плаг к Трибу, можно как-то - пусть и через *опу - это обойти?

Ссылка на комментарий
Поделиться на другие сайты

Вот отрывок из amuletTelFyrScript:

 

;if ( MenuMode == 1 )

 

; Return

 

;endif

 

Это нормально? Тоже самое есть в amuletAundaeScript, amuletBerneScript, amuletQuarraScript, amuletDaedraScript.

 

 

Ссылка на комментарий
Поделиться на другие сайты

Проблема в том, что SetJournalIndex доступна только в Трибунале. Жутко не хочется ради одной функции привязывать плаг к Трибу, можно как-то - пусть и через *опу - это обойти?

так вроде ж, чтобы поменять индекс в дневнике, можно использовать и функцию journal

Ссылка на комментарий
Поделиться на другие сайты

Это нормально? Тоже самое есть в amuletAundaeScript, amuletBerneScript, amuletQuarraScript, amuletDaedraScript.
А цо тебя не устраивает? Это нужно что-бы скрипт не работал в меню.

А если стоят точка с запятой, то значит это нужно было на ранней стадии и сейчас можно удалять.

 

так вроде ж, чтобы поменять индекс в дневнике, можно использовать и функцию journal
Но ей нельзя поменять текущий индекс (который проверяется в диалогах). Изменено пользователем NmLs
Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...
Как заставить NPC побежать по направлению к игроку? Я использовал AiFollow, но если эти NPC атакуют игрока и их несколько, они могут после пары ударов по игроку передраться между собой, т.к. фолловеры сражаются за игрока.
Ссылка на комментарий
Поделиться на другие сайты

Как заставить NPC побежать по направлению к игроку? Я использовал AiFollow, но если эти NPC атакуют игрока и их несколько, они могут после пары ударов по игроку передраться между собой, т.к. фолловеры сражаются за игрока.

 

можно пустить одного за игроком, а других за первым НПЦ. Такое, вроде бы возможно.

Ссылка на комментарий
Поделиться на другие сайты

можно пустить одного за игроком, а других за первым НПЦ. Такое, вроде бы возможно.

 

id этих NPC неизвестны, и у них одинаковые скрипты. Я сейчас думаю, что наверное надо через GetTarget определять, что если бой не с игроком ведётся, то принудительно бой завершать.

Изменено пользователем z-Hunter
Ссылка на комментарий
Поделиться на другие сайты

Как заставить NPC побежать по направлению к игроку? Я использовал AiFollow, но если эти NPC атакуют игрока и их несколько, они могут после пары ударов по игроку передраться между собой, т.к. фолловеры сражаются за игрока.

Надо просто учесть в скрипте условия на случай, если неписи будут драться.

Примеры из МСФД:

If ( GetDeadCount, "My Friend" > 0 )

StartCombat, Player

SetFight, 100

endif

 

if ( doOnce == 0 )

if ( "yagrum bagarn"->GetAttacked == 1 )

StartCombat player

SetFight 90

SetDisposition 0

set doOnce to 1

endif

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...