Wind0fChange Опубликовано 4 июля, 2009 Жалоба Поделиться Опубликовано 4 июля, 2009 (изменено) Смысл такой.(Все объекты миски) Есть двемерский корегер 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_01begin 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 стоимость 30000begin 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_03ID "Bomb_emule_1"Название "Пять ранцевых зарядов" вес 125 стоимость 150000Скрипт на него Boom_031begin 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_031ID "Bomb_emule_2"Название "Десять ранцевых зарядов" вес 250 стоимость 300000Boom_032begin 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Но в последнем варианте скриптовые предметы глючно удаляются из инвентаря. Поэтому юзать можно только по-одному. Изменено 4 июля, 2009 пользователем Wind0fChange Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти