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

Энчант скриптами


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

Я делаю реплейсер к доспехам Рук Альмалексии (Не высших ординаторов, а именно рук). Как известно, доспех полностью зачарован.

Впринципе тот доспех что получается довольно сносно выглядит с зачарованием. Но есть одно НО. Энчант влияет на оттенок и интенсивность рефлекта. Следовательно, самые перцовые слуги Альмы бегают в пластмассовом доспехе. Это не есть гуд, и будет гораздо лучше, Если бы эффекта зачарования небыло. Скажете:"Юзай НОГЛОУ" Отвечу: На сколько мне извесно, есть 2 варианта плагинов. 1: Убирающий свечение впринципе. Про него говорят что он еще и рефлект убивает. Инфа не провереннная, да и проверять особого желания нету. 2: Заменяющий текстурки в папке мэджикайтемс на черные. Вазелиновое свечение он убирает, а вот оттенок у рефлекта остается.

 

Я немного подумал, и пришел к выводу, что лучше бы магические свойства передать через скрипт. Благо, таким способом можно сделать все гораздо интереснее.

 

Суть в том, чтоб на каждый предмет одежды вешается одинаковый скрипт, который пре эквипе добавляет к переменной..эммм..ну допустим setitem +1, при дисэквипе -1.

Далее. Нужен скрипт, который будет добавлять спеллы игроку, в зависимости от количества надетых предметов. Тоесть чем больше тем сильнее эффекты. Ну и естественно удалял бы их при снятии.

 

Имо такой подход поднимет и сам доспех, так как выгоднее быдет носить полный сет, чтобы получить допустим бонус к Хэви армору и еще несколько плюшек, и решит проблему с рефлектом. Есть конечно минус, так как на компаньенов это все действовать не будет...Ну, тоже решаема уже внутреигровым методом. Сделать булевую переменную, которая будет проверять наличие у игрока благославления альмы.Ну и докидать в топики о том, что броня Рук открывает свою силу только истинному слуге богхини))(Да простят меня фанаты лора) Тоесть награду получится получить(айайай, пардон за тафтологию) пройдя по квесту трибунала, а не просто запилив несчасного Руку отступника гуляющего по годстричу))

 

Итак, о чем же я прошу: Минимум мне нужен совет, как лучше раелизовать это. Самый просто метод это просто создание 2х скриптов, одного на армор, и другого глобального. Ну и соответственных переменных. Другое дело, на сколько мне известно, глобальные скрипты дают не слабую нагрузку на ЦПУ. Вопрос: Так ли это, и если так, то есть ли способ реализовать подобное с меньшими потерями?

Ну и максимум что я могу ожидать, это готового скрипта. Это бы очень помогло делу, так как просто нету у меня сейчас времени вспоминать основы морр скрипта. Если ктото поможет со скриптом, доспех возможно выйдет раньше) Кто знает, может и не плохо вышло?;)

 

Заранее спасибо.

 

Пардон за тройку по русскому)))

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

Насколько я понимаю, у Эндера в этой теме доспехи именно по такому принципу работают... Или по схожему, хех.
Ссылка на комментарий
Поделиться на другие сайты

Ну в общем-то я делаю плаг не только для того чтоб делать, а еще чтоб народ мог заюзать мои скрипты и подучиться на них :-) Вот скрипт для одного из наборов:

 

[color="blue"]Begin[/color] _Set_BarbarianSet

[color="grey"];global short Set_BarbarianSet - счетчик надетых вещей[/color]

short [color="orange"]OnPCEquip[/color]			[color="grey"];Стандартная переменная[/color]
short OnPC				[color="grey"];Флаг одетости предмета (может можно и без него обойтись)[/color]
short RecalcEffects		[color="grey"];Флаг надобности пересчета эффектов[/color]


[color="blue"]if[/color]( [color="orange"]MenuMode[/color] == 1 )
[color="blue"]	return[/color]
[color="blue"]endif[/color]

[color="blue"]if[/color] ( RecalcEffects == 1 )[color="grey"];если нужно пересчитать эффекты[/color]
[color="grey"];Уберем все эффекты[/color]
[color="orange"]Player[/color]->[color="brown"]RemoveSpell[/color] [color="magenta"]"_Set_BarbarianSet_Lev3"[/color]
[color="orange"]Player[/color]->[color="brown"]RemoveSpell[/color] [color="magenta"]"_Set_BarbarianSet_Lev5"[/color]
[color="orange"]Player[/color]->[color="brown"]RemoveSpell[/color] [color="magenta"]"_Set_BarbarianSet_Lev8"[/color]
[color="grey"];И добавим нужные[/color]
[color="blue"]	if[/color] ( Set_BarbarianSet == 3 )
	[color="orange"]Player[/color]->[color="brown"]AddSpell[/color] [color="magenta"]"_Set_BarbarianSet_Lev3"[/color]
[color="blue"]	elseif[/color]( Set_BarbarianSet == 5 )
	[color="orange"]Player[/color]->[color="brown"]AddSpell[/color] [color="magenta"]"_Set_BarbarianSet_Lev5"[/color]
[color="blue"]	elseif[/color]( Set_BarbarianSet == 8 )
	[color="orange"]Player[/color]->[color="brown"]AddSpell[/color] [color="magenta"]"_Set_BarbarianSet_Lev8"[/color]
[color="blue"]	endif[/color]
[color="grey"];Сбросим флаг[/color]
[color="blue"]	set[/color] RecalcEffects to 0
[color="blue"]	endif[/color]
[color="blue"]endif[/color]

[color="blue"]if[/color] ( OnPC == 0 ) [color="grey"];Если вещи не на Игроке[/color]
[color="grey"];И Игрок одел данную вещь[/color]
[color="blue"]	if[/color] ( [color="orange"]OnPCEquip[/color] == 1)
	[color="grey"];Увеличим счетчик надетых вещей[/color]
[color="blue"]		set[/color] Set_BarbarianSet to Set_BarbarianSet + 1
	[color="grey"];Отметим факт одевания[/color]
[color="blue"]		set[/color] OnPC to 1
	[color="grey"];Отметимся для пересчета эффектов[/color]
[color="blue"]		set[/color] RecalcEffects to 1
	[color="brown"]MessageBox[/color] [color="magenta"]"Одет предмет из набора варвара"[/color]
[color="blue"]	endif[/color]

[color="blue"]else[/color] [color="grey"];Если вещь на Игроке[/color]
[color="grey"];И Игрок снял данную вещь[/color]
[color="blue"]	if[/color] ( [color="orange"]OnPCEquip[/color] == 0 )
	[color="grey"];Уменьшим счетчик надетых вещей[/color]
[color="blue"]		set[/color] Set_BarbarianSet to Set_BarbarianSet - 1
	[color="grey"];Отметим факт снятия[/color]
[color="blue"]		set[/color] OnPC to 0
	[color="grey"];Отметимся для пересчета эффектов[/color]
[color="blue"]		set[/color] RecalcEffects to 1
	[color="brown"]MessageBox[/color] [color="magenta"]"Снят предмет из набора варвара"[/color]
[color="blue"]	endif[/color]

[color="blue"]endif[/color]

[color="blue"]End[/color]

Сей скрипт вешается на каждый предмет из набора. В общем, тут надо переименовать сам скрипт и глобальную переменную (Set_BarbarianSet) и чуть подправить блок пересчета эффектов.

 

З.Ы. На мою просьбу вернуть тег "скрипт" не обратили внимания... Чтож, я нашел выход - написал скрипт, который делает раскраску скрипта ВВ-кодами... :-P

update:

З.З.Ы. Тему переименовал. Прсьба в дальнейшем не называть темы в стиле "нужна помощь", а описать поточнее что надо - так потом другим будет легче искать ответы на свои вопросы.

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

Ну в общем-то я делаю плаг не только для того чтоб делать, а еще чтоб народ мог заюзать мои скрипты и подучиться на них :-) Вот скрипт для одного из наборов:

 

[color="blue"]Begin[/color] _Set_BarbarianSet

[color="grey"];global short Set_BarbarianSet - счетчик надетых вещей[/color]

short [color="orange"]OnPCEquip[/color]			[color="grey"];Стандартная переменная[/color]
short OnPC				[color="grey"];Флаг одетости предмета (может можно и без него обойтись)[/color]
short RecalcEffects		[color="grey"];Флаг надобности пересчета эффектов[/color]


[color="blue"]if[/color]( [color="orange"]MenuMode[/color] == 1 )
[color="blue"]	return[/color]
[color="blue"]endif[/color]

[color="blue"]if[/color] ( RecalcEffects == 1 )[color="grey"];если нужно пересчитать эффекты[/color]
[color="grey"];Уберем все эффекты[/color]
[color="orange"]Player[/color]->[color="brown"]RemoveSpell[/color] [color="magenta"]"_Set_BarbarianSet_Lev3"[/color]
[color="orange"]Player[/color]->[color="brown"]RemoveSpell[/color] [color="magenta"]"_Set_BarbarianSet_Lev5"[/color]
[color="orange"]Player[/color]->[color="brown"]RemoveSpell[/color] [color="magenta"]"_Set_BarbarianSet_Lev8"[/color]
[color="grey"];И добавим нужные[/color]
[color="blue"]	if[/color] ( Set_BarbarianSet == 3 )
	[color="orange"]Player[/color]->[color="brown"]AddSpell[/color] [color="magenta"]"_Set_BarbarianSet_Lev3"[/color]
[color="blue"]	elseif[/color]( Set_BarbarianSet == 5 )
	[color="orange"]Player[/color]->[color="brown"]AddSpell[/color] [color="magenta"]"_Set_BarbarianSet_Lev5"[/color]
[color="blue"]	elseif[/color]( Set_BarbarianSet == 8 )
	[color="orange"]Player[/color]->[color="brown"]AddSpell[/color] [color="magenta"]"_Set_BarbarianSet_Lev8"[/color]
[color="blue"]	endif[/color]
[color="grey"];Сбросим флаг[/color]
[color="blue"]	set[/color] RecalcEffects to 0
[color="blue"]	endif[/color]
[color="blue"]endif[/color]

[color="blue"]if[/color] ( OnPC == 0 ) [color="grey"];Если вещи не на Игроке[/color]
[color="grey"];И Игрок одел данную вещь[/color]
[color="blue"]	if[/color] ( [color="orange"]OnPCEquip[/color] == 1)
	[color="grey"];Увеличим счетчик надетых вещей[/color]
[color="blue"]		set[/color] Set_BarbarianSet to Set_BarbarianSet + 1
	[color="grey"];Отметим факт одевания[/color]
[color="blue"]		set[/color] OnPC to 1
	[color="grey"];Отметимся для пересчета эффектов[/color]
[color="blue"]		set[/color] RecalcEffects to 1
	[color="brown"]MessageBox[/color] [color="magenta"]"Одет предмет из набора варвара"[/color]
[color="blue"]	endif[/color]

[color="blue"]else[/color] [color="grey"];Если вещь на Игроке[/color]
[color="grey"];И Игрок снял данную вещь[/color]
[color="blue"]	if[/color] ( [color="orange"]OnPCEquip[/color] == 0 )
	[color="grey"];Уменьшим счетчик надетых вещей[/color]
[color="blue"]		set[/color] Set_BarbarianSet to Set_BarbarianSet - 1
	[color="grey"];Отметим факт снятия[/color]
[color="blue"]		set[/color] OnPC to 0
	[color="grey"];Отметимся для пересчета эффектов[/color]
[color="blue"]		set[/color] RecalcEffects to 1
	[color="brown"]MessageBox[/color] [color="magenta"]"Снят предмет из набора варвара"[/color]
[color="blue"]	endif[/color]

[color="blue"]endif[/color]

[color="blue"]End[/color]

Сей скрипт вешается на каждый предмет из набора. В общем, тут надо переименовать сам скрипт и глобальную переменную (Set_BarbarianSet) и чуть подправить блок пересчета эффектов.

 

З.Ы. На мою просьбу вернуть тег "скрипт" не обратили внимания... Чтож, я нашел выход - написал скрипт, который делает раскраску скрипта ВВ-кодами... :-P

update:

З.З.Ы. Тему переименовал. Прсьба в дальнейшем не называть темы в стиле "нужна помощь", а описать поточнее что надо - так потом другим будет легче искать ответы на свои вопросы.

 

Ну, как я понял, будут одновременно работать 9 таких скриптов... Тоесть при снимании/одевании могут быть глюки. Никто мне не может сказать, на сколько сильно грузят глобал скрипты систему?

 

Просто я думал над следующим решением

 

Begin HND_arm

 

// создаем глобальную переменную типа HND_equip

 

short OnPCEquip

short Equiped

 

if (MenuMode == 1)

 

return

 

endif

 

if ( OnPCEquip == 1)

if (Equiped == 0)

set HND_arm to HND_arm+1

set Equiped to 1

endif

 

elseif (OnPCEquip == 0)

if ( Equiped == 1 )

set HND_arm to HND_arm+1

set Equiped to 0

endif

endif

 

End

 

Эта часть скрипта вешается на все части брони.

 

Далее создается глобальный скрипт, который и будет распеределять эффекты. Я сейчас убегаю потом допишу.

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

Глюков не будет, ибо перераспределяет эффекты именно та часть экипировки, которую сняли/одели. Единственное что может произойти - это если снять или одеть все части сразу не выходя из меню может подтормаживать в течении 1-2 кадров. ИМХО, не страшно.
Ссылка на комментарий
Поделиться на другие сайты

Глюков не будет, ибо перераспределяет эффекты именно та часть экипировки, которую сняли/одели. Единственное что может произойти - это если снять или одеть все части сразу не выходя из меню может подтормаживать в течении 1-2 кадров. ИМХО, не страшно.

Угу, и правда. Спасибо, пожалуй возьму этот скрипт)

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

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

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

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

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

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

Войти

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

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

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