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

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

Смысл такой.(Все объекты миски) Есть двемерский корегер Bomb_01. Натягиваем на игрока, появляется сообщение о количестве зарядов, если они есть с предложением поставить взрывчатку и сообщение об их отсуствии, если их нет (Глобальная переменная bomb_charge отвечает за количество зарядов). Если ставим бомбу, то заряд отнимается, под игроком появляется объект Bomb_02, который взрывается через 5 секунд, отключается и полностью удаляется через 10 фреймов. Далее, заряды пополняются посредством активации Bomb_03 (1 заряд) Bomb_031 (5 зарядов) и Bomb_032 ( 10 зарядов ). Если у вас нет корегера, то и заряжать нечего, поэтому при активации объекты отключаются. полностью удаляются через 10 фреймов, а в инвентарь к игроку добавляется такое же их количество. Короче чтобы не таскать груз, можем сразу зарядить цилиндр, если есть.

Если ничего непонятно, то скачайте тестовый плаг, продает корегер и бесконечные заряды торговец из локации "Морнхолд, Торговец". находится локации на Великом Базаре Морнхолда.

http://keepfile.ru/12951157

 

Заклинание

Boom 300 урон огнем радиус 20

 

Глобальная переменная

bomb_charge значение 0

 

Первый объект

ID "Bomb_01"

Название "Двемерский взрывной корегер" нифы и тга можно взять от двемерского корегера

Скрипт на него Boom_01

begin Boom_01
;bomb_charge ( глоб.п.) кол-во зарядов
short status
short button
short OnPCEquip
if ( MenuMode == 0 )
return
endif
if ( Player -> GetItemCount, "Bomb_01" == 0 )
return
endif
if ( OnPCEquip  == 1 )
set  status to 1
set OnPCEquip to 0
endif
if ( bomb_charge > 0 )
if ( status == 1 )
	MessageBox "Количество зарядов - ^bomb_charge. Вы хотите установить взрывчатку здесь?", "Да", "Нет"
	set status to 2
elseif ( status == 2)
	set button to GetButtonPressed
	if ( button == -1 )
		return
	elseif ( button = 0 )
		PlaceAtPC, "Bomb_02", 1, 1, 1
		set bomb_charge to ( bomb_charge - 1 )
	else
		set status to 0
	endif
endif
else; bomb_charge <= 0
if ( status == 1 )
	MessageBox "У вас нет зарядов для взрывного корегера"
	set status to 0
endif
endif
end Boom_01

Второй объект

ID "Bomb_02"

Название "Ранцевая взрывчатка" вес 25 стоимость 30000 нифы и тга можно взять от двемерского ранцевого заряда, для объектов

Скрипт на него Boom_02

ниже аналогично

begin Boom_02
float timer
short delobj; 0 - взрыва не было, 1 - взрыв произошел
if ( MenuMode == 1 ); не считаем время пока в меню
return
endif
if ( OnActivate == 1 )
return
endif
if ( delobj >= 1 ); условие для полного удаления
set delobj to ( delobj + 1 )
elseif (delobj == 10 )
SetDelete, 1
set delobj to -1
endif
set timer to ( timer + GetSecondsPassed )
if ( delobj == 0 )
if ( timer >= 5 )
	ExplodeSpell, "Boom"
	Disable
	set delobj to 1
endif
endif
end Boom_02

Третья группа объектов, скрипты на них абсолютно АНАЛОГИчНЫЕ, с разницей лишь в количестве добавляемых зарядов

ID "Bomb_emule"

Скрипт на него Boom_03

Название "Ранцевый заряд" вес 25 стоимость 30000

begin Boom_03
short delobj
if ( delobj > 0 )
set delobj to ( delobj + 1 )
if ( delobj == 10 )
	SetDelete, 1
	set delobj to 0
endif
endif
if ( OnActivate == 1 )
if ( Player -> GetItemCount, "Bomb_01" > 0 )
	set bomb_charge to ( bomb_charge + 1 )
	MessageBox "Вы добавили 1 заряд"
else
	MessageBox "У вас нет двемерского взрывного корегера"
	Player -> Additem, "bomb_emule", 1
endif
disable
set delobj to 1
endif
end Boom_03

ID "Bomb_emule_1"

Название "Пять ранцевых зарядов" вес 125 стоимость 150000

Скрипт на него Boom_031

begin Boom_031
short delobj
if ( delobj > 0 )
set delobj to ( delobj + 1 )
if ( delobj == 10 )
	SetDelete, 1
	set delobj to 0
endif
endif
if ( OnActivate == 1 )
if ( Player -> GetItemCount, "Bomb_01" > 0 )
	set bomb_charge to ( bomb_charge + 5 )
	MessageBox "Вы добавили 5 зарядов"
else
	MessageBox "У вас нет двемерского взрывного корегера"
	Player -> Additem, "bomb_emule_1", 1
endif
disable
set delobj to 1
endif
end Boom_031

ID "Bomb_emule_2"

Название "Десять ранцевых зарядов" вес 250 стоимость 300000

Boom_032

begin Boom_032
short delobj
if ( delobj > 0 )
set delobj to ( delobj + 1 )
if ( delobj == 10 )
	SetDelete, 1
	set delobj to 0
endif
endif
if ( OnActivate == 1 )
if ( Player -> GetItemCount, "Bomb_01" > 0 )
	set bomb_charge to ( bomb_charge + 10 )
	MessageBox "Вы добавили 10 зарядов"
else
	MessageBox "У вас нет двемерского взрывного корегера"
	Player -> Additem, "bomb_emule_2", 1
endif
disable
set delobj to 1
endif
end Boom_032

Конец

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

Это неактивная взрывчатка

begin Boom_01
short status
short button
short OnPCEquip
if ( MenuMode == 1 )
return
endif
if ( OnPCEquip  == 1 )
set  status to 1
set OnPCEquip to 0
endif
if ( status == 1 )
MessageBox "Вы хотите установить бомбу здесь?", "Да", "Нет"
set status to 2
elseif ( status == 2)
set button to GetButtonPressed
if ( button == -1 )
	return
elseif ( button = 0 )
	PlaceAtPC, "Bomb_02", 1, 1, 1
else
	set status to 0
endif
endif
end Boom_01

Это то, что взрывается

begin Boom_02
float timer
short delobj; 0 - взрыва не было, 1 - взрыв произошел
short controlremove; 0 - предмет не удален из инвентаря, 1 - удален
if ( MenuMode == 1 )
return
endif
if ( OnActivate == 1 )
return
endif
if ( delobj >= 1 )
set delobj to ( delobj + 1 )
elseif (delobj == 10 )
SetDelete, 1
endif
if ( controlremove == 0 )
Player -> RemoveItem, "Bomb_01", 1
set controlremove to 1
endif
set timer to ( timer + GetSecondsPassed )
if ( delobj == 0 )
if ( timer >= 5 )
	ExplodeSpell, "Boom"
	Disable
	set delobj to 1
endif
endif
end Boom_02

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

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

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

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

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

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

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

Войти

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

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

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