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

Запрет на оружие


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

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

Плиз, поможите чем можите. Мне надо определить что перс хочет взять в руки оружие и надо ему ето запретить и вывести сообщение, что мол недьзя.

Погоди, запретить брать конкретное оружие или вообще любое?

 

Собственно вот он скрипт. Верней два скрипта - первый вешается на оружие - второй глобальный.

[morrscript]

begin OblomSword

 

short PCSkipEquip

short OnPCEquip

 

if ( здесь идёт какая-нибудь проверка ); условие может ли игрок надеть оружие

set PCSkipEquip to 0 ; если может, то всё нормально...

return ; ...и нижняя часть скрипта пропускается

else

set PCSkipEquip to 1 ; всё, облом - этот режик можно только потаскать в рюкзачке

endif

 

 

if ( OnPCEquip == 1 )

MessageBox "Извините, меч недоступен, попробуйте взять его позже. Кузница Ходлисмода благодарит вас за использование наших мечей."

StartScript, "Wdelete"

set OnPCEquip to 0

endif

 

End

 

===================================================

 

begin Wdelete

 

Player -> Additem "ID_оружия", 1

Player -> RemoveItem, "ID_оружия", 1

 

StopScript, "Wdelete"

 

end

[/morrscript]

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

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

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

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

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

 

Вычислить взял ли игрок оружие в руки можно, но только с Трибуналом, а вот скинуть его потом в рюкзак -- фигу.

Выяснить ID предмета через скрипт нельзя, одна из самых больших оплошностей разработчиков на мой взгляд...

 

Вообще-то можно как-то по другому заставить игрока самого снять оружие, от блокировки управления, до просто отказа непися разговаривать с ним.

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

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

 

Вычислить взял ли игрок оружие в руки можно, но только с Трибуналом, а вот скинуть его потом в рюкзак -- фигу.

Выяснить ID предмета через скрипт нельзя, одна из самых больших оплошностей разработчиков на мой взгляд...

 

Вообще-то можно как-то по другому заставить игрока самого снять оружие, от блокировки управления, до просто отказа непися разговаривать с ним.

 

Понятно. Насчет ID ты меня не понял. Я раньше делал так. В скрипте перечислены ID шмоток которые нельзя брать. Скрипт проверял одеты ли они. И если до то сообщение. Но ето оч хреново было и я от етого отказался. Насчет проблем движка понял спасиб. Буду думать как его обнануть.

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

Begin XXX

 

short wepstate

Short framecounter

 

if ( MenuMode == 1 )

return

endif

 

If ( framecounter < 10 );можно этим поиграться, чем меньше таймер тем быстрее фиксируеться готовность оружия, если его поставить на 100 например, то можно изрядно помахать мечем прежде чем нас уведомят, что вообще-то здесь нельзя ходить с оружием:) (типа охрана никудышняя).

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

set framecounter to ( framecounter + 1 )

Return

Endif

set framecounter to 0

 

if ( player->GetWeaponDrawn )

if ( wepstate != 1 )

set wepstate to 1

set RW to 1;типа глобальная переменная

Endif

else

if ( wepstate != 0 )

set wepstate to 0

set RW to 0;соответственно обнуляем переменную

Endif

end

 

это первый глобальный скрипт (собственно базовый в MSFD7 есть, этот несколько модернизирован) просто проверяет готовность оружия и выставляет переменную, с которой и работаем в следующем тоже глобальном "зверском" скрипте:

 

begin ZZZ

 

short Damage

 

if ( MenuMode == 1 )

return

endif

 

if ( RW == 1 )

if ( GetPCCell "Такой-то, ну в Дагот Уре например" == 1 )

Set Damage to Random 8

;может быть любым, чем меньше тем лучше, дольше проживет:)

Set Damage to ( 0 - Damage )

Set Damage to ( Damage - 2 )

player->ModCurrentHealth Damage 2

MessageBox "Немедленно уберите оружие."

;ну или еще, что нибудь

;можно еще музычку добавить, для любителей гудмода, чтоб не спали.

endif

endif

end

Более радикального способа заставить убрать оружие, кажеться ненайти. Жить-то всем хочеться:)

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

Тут ещё можно как в "Готике" сделать - стража с секунд 20 материться, а потом нападает и оставляет игрока с 1 hp, а при повторении инцидента просто приканчивает.
Ссылка на комментарий
Поделиться на другие сайты

Можно. Но надо что б перс просто не пользовался оружием в определенной локации. Как в локации сделать знаю, а как что б не пользовался нет. Поетому и сдесь

 

EJ-12 спасиб. Работает

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

  • 3 недели спустя...
локации. Как в локации сделать знаю, а как что б не пользовался нет.

Проверь скрипты генерации персонажа Chargen. Там использована такая команда DisablePlayerFighting. Полностью лишает перса способности защитить себя посредством оружия. А с помощью DisablePlayerMagic ты лишишь его способности использовать магию. Правда, я сам такое не проверял (я лишь делал альтернативный старт, когда игроку с самого начала позволено крошить кого угодно), поэтому я не знаю, какие побочные эффекты это может вызвать. По делу все должно быть ОК. Обратные команды - EnablePlayerFighting/EnablePlayerMagic.

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

По делу все должно быть ОК.

Да ну?

MSFD:

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

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

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

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

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

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

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

Войти

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

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

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