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

Ножны


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

В последнее время стало появлятся немало моделей мечей с ножнами - взять тот же Реквием. Модели. надо сказать, неплохие, а вот скрипты - не слишком. Предлагаю обсудить скриптовую реализацию меча с ножнами в Морровинде (хех, почти как тема диссертации).

 

Вот пример из плагина Requiem_Sword

 

1Phij_Requiem - клинок

12Requiem__shv - "полные" ножны (идут как одежда, а именно - почуму-то, штаны)

12Requiem__unshv - "пустые" ножны

 

Скрипт на клинке

 

begin A_Requiem_sheathe

Short DoOnce


If ( player->getitemcount "1Phij_Requiem" ==0 )
if ( player->getitemcount "12Requiem__shv" >=1 )
	player->removeitem "12Requiem__shv", 2
endif
		if ( player->getitemcount "12Requiem__unshv" >=1 )
		Player->removeitem "12Requiem__unshv", 2
endif

return

endif


If ( Player -> HasItemEquipped "1Phij_Requiem"  )
If ( Player -> GetWeaponDrawn )
	If ( DoOnce == 0 )
			player->removeitem "12Requiem__shv", 4
			player->additem "12Requiem__unshv", 1
			player-> equip "12Requiem__unshv", 1
			set DoOnce to 1
endif
		elseif ( DoOnce == 1 )
			player-> removeitem "12Requiem__unshv", 4
			player->additem "12Requiem__shv", 1
			player->equip "12Requiem__shv", 1
			set DoOnce to 0
	endif
endif
endif

End

 

Скрипт на ножнах

 

Begin 1Requiem_disable item script

short onpcequip
short itemequipped

if ( onpcequip == 1 )
RETURN
		else
			If ( itemequipped == 0 )
				set itemequipped to 1
			endif
endif

else
		if ( itemequipped == 1 )
			disable
			set itemequipped to 0 
		endif
endif

end

 

Ножны одеваются\убираются автоматически при экипировании меча. Может быть только одна пара меч\можны в игре.

У меня эта конструкция несколько глючила - ножны дублировались, не выкидывались, ну и прочие безобразия.

 

Я написал другой скрипт, с использованием глобальной переменной, пусть будет Requiem_global.

 

#_Requiem

#Requiem_shv- "полные" ножны

#Requiem_Unshv - "пустые" ножны

 

"полные" ножны:

 

begin Requiem_shv_script

short OnPCDrop
short OnPCEquip

if ( OnPCEquip == 1 )
If ( Player -> HasItemEquipped "#_Requiem"  )
if ( player->GetWeaponDrawn )
	if ( Requiem_global != 0 )
		set Requiem_global to 0
		startscript "Requiem_global_script"
	endif
else
	if ( MenuMode == 1 )
		set Requiem_global to 0
		startscript "Requiem_global_script"
	endif
endif
endif
endif

end

 

"Пустые":

begin Requiem_Unshv_script

short OnPCEquip

if ( MenuMode == 1 )
return
endif

if ( OnPCEquip == 1 )	  
If ( Player -> HasItemEquipped "#_Requiem"  )
if ( player->GetWeaponDrawn )
	return
else
if ( Requiem_global != 1 )
	set Requiem_global to 1
	startscript "Requiem_global_script"
Endif
endif
endif
endif



end

 

Глобальный скрипт:

 

begin Requiem_global_script


if ( Requiem_global == 0 )

player->additem "#Requiem_Unshv", 1
player-> equip "#Requiem_Unshv"
player->removeitem "#Requiem_shv", 1


elseif ( Requiem_global == 1 )

player->additem "#Requiem_shv", 1
player->equip "#Requiem_shv"
player->removeitem "#Requiem_Unshv", 1


endif

stopscript Requiem_global_script

end

 

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

 

Ну, вот. У кого какие мысли на этот счет?

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

  • 3 недели спустя...
Длин. ща некогда смотреть, дома поподробнее гляну. Вопрос пока один - почему ты блокируешь возможность продажи? Ну и продавал бы ножны вместе с мечом - в случае, если меч в ножнах - по суммарной стоимости...
Ссылка на комментарий
Поделиться на другие сайты

Тогда получится, что мы продаем ножны с мечем, а потом еще и меч в догонку. Нереалистично. Лучше ножны продовать пустые.

Кстати, еще забыл добавить в скрипт, что бы ножны с мечем заменялись на пустые всегда, когда они не экипированы - если игрок снял их, не входя в меню, например, при помощи быстрых клавиш.

 

Да, зачаровать нельзя, а что делать? Вернее, зачаровать можно, но связь с ножнами потеряется - мол, магический меч в ножны на залазит, хех. Впрочем, можно меч поставлять уже с энчантом.

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

Кстати, кажется нашел способ избежать продажи меча в ножнах без скриптовых заморочек. ЕМНИП, в Морре нельзя продать вещи со стоимостью 0 - появляется сообщение типа "Вы не можете продать это"...

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

 

И еще - по внешним проявлениям, скрипт ножен как то хитро реализован в плаге Heaven`s Lookout реклама на форуме запрещена, читай правилаwww.fullrest.ru/plugs.php?tp=14

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

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

 

Гут, а с compaion share что делать? Эта зараза скриптами не отлавливается, вот и приходится все чарез зад делать, то есть скриптами. Опять-таки, если ножны не бесплатно выдаются, то цена будет скакать туда-сюда - опять нереалистично...

 

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

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

  • 2 недели спустя...
Хитрость в том, что когда я в игре его надевал в качестве текущего оружия у меня отображался кулак, катаны за спиной, а при обнажении оружия (клавиша Фы) в руках оказывался клинок...
Ссылка на комментарий
Поделиться на другие сайты

Хе-хе, а причина багов на первых скриптах весьма проста:

1. RemoveItem

Откеда взялись значения 4 и 2?

 

2.If ( Player -> HasItemEquipped "1Phij_Requiem" )

If ( Player -> GetWeaponDrawn )

If ( DoOnce == 0 )

player->removeitem "12Requiem__shv", 4

player->additem "12Requiem__unshv", 1

player-> equip "12Requiem__unshv", 1

set DoOnce to 1

endif

elseif ( DoOnce == 1 )

player-> removeitem "12Requiem__unshv", 4

player->additem "12Requiem__shv", 1

player->equip "12Requiem__shv", 1

set DoOnce to 0

endif

endif

endif

 

И вот это:

 

if ( onpcequip == 1 )

RETURN

else

If ( itemequipped == 0 )

set itemequipped to 1

endif

endif

 

else

if ( itemequipped == 1 )

disable

set itemequipped to 0

endif

endif

 

Ну кто же ставит else после endif?

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

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

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

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

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

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

Войти

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

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

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