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

Скрипт об оружии


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

Нужен скрипт, чтобы определенный непись ходил всегда (!) с оружием наизготовку (ну... держал в руках всегда, готов к атаке...)...

 

Как это можно реализовать??

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

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

На скока я знаю подобного эффекта можно достич путем начала комбата и моментального его прекращения. Чтото подобное.
Ссылка на комментарий
Поделиться на другие сайты

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

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

 

Хотя наверно стоит поискать-посмотреть точно

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

Нужен скрипт, чтобы определенный непись ходил всегда (!) с оружием наизготовку (ну... держал в руках всегда, готов к атаке...)...

 

Как это можно реализовать??

Может, поможет функция из Трибунала?

Функции готовности к бою

 

GetWeaponDrawn (возвращает short)

GetSpellReadied (возвращает short)

 

if ( player -> GetWeaponDrawn )

 

Эти функции позволяют определить, достал ли персонаж оружие из ножен или готовиться ли он произнести заклинание соответственно.

 

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

 

Begin player_notifications

 

short weapstate

short spelstate

 

if ( player->GetWeaponDrawn )

if ( weapstate != 1 )

set weapstate to 1

MessageBox "Игрок достал оружие."

Endif

else

if ( weapstate != 0 )

set weapstate to 0

MessageBox "Игрок убрал оружие."

Endif

endif

 

if ( player->GetSpellReadied )

if ( spelstate != 1 )

set spelstate to 1

MessageBox "Игрок готовится произнести заклинание."

Endif

else

if ( spelstate != 0 )

set spelstate to 0

MessageBox "Игрок отменил заклинание."

Endif

endif

 

end

 

Интересно, что получится с таким скриптом, если его повесить на непися:

begin NewScript

 

short weapstate

 

if ( "ID_непися"->GetWeaponDrawn )

if ( weapstate != 1 )

set weapstate to 1

 

Endif

 

end

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

Вообще weapstate это просто переменная в которую записывается 1 если функция GetWeaponDrawn вернула 1, от того что мы изменим значение нашей переменной неписю будет ни холодно ни жарко
Ссылка на комментарий
Поделиться на другие сайты

Хмм, вот скрипт манекена с оружием:

 

; Actual Mannequin code.

; NOTE: If anyone can figure out how to check the TOTAL number of inventory

; items the NPC has, please tell me. Right now you can move the Mannequin

; while it has armor on, which is bad, because you end up losing it when a new

; mannequin is created. This could all be avoided if the scripting language would

; let you pass variables to functions..but no. If it were true, I would just use Posistion

; and all armor stays put. But since we can't know exactly where you are at all times,

; we have to use variables, and since we can't, we're stuck. If any Bethsoft guys are

; reading, PLEASE fix/add this.

;

; Changed by Heph

; Further changed by Stephen Kent

;

; Script changed to use tribunal functions for checking weapon/armor to prevent PC from

; moving mannequin while weapons and/or armor are present on mannequin. Also split into

; two seperate scripts to support both male and female versions of the mannequin. I do not

; know how to change an NPC's gender from script. These changes do not prevent PC from

; picking up the mannequin while there are still misc items on it, those items will be lost.

; This may or may not be the best/only way to get a mannequin to wield weapons, but I'd

; wager for the moment it's probably the easiest.

;

; I've also added more commenting so people can understand what I'm doing.

;

; Modified by Grumblepunk

 

begin gp_woodenScript_m

short NoLore ;This should help remove some of the extraneous dialogue

short button

short questionState

short nEquipType

short nStillEquipped

short nMannequin

short companion

short nWeaponShown

short OnPCHitMe

float fWeaponTimer

float fDeleteTimer

short state

 

if ( "_gw_weaptoshow" == 1 )

if ( GetDistance Player

if ( GetWeaponDrawn == 0 )

set questionstate to 1

endif

endif

elseif ( "_gw_weaptoshow" == 2 )

if ( CellChanged == 1 )

set questionstate to 1

endif

endif

 

;This is how we get the mannequin to draw the weapon (wield it)

if ( nWeaponShown != 1 )

SkipAnim ; If we aren't showing the weapon then we need to make sure the mannequin doesn't move

elseif ( nWeaponShown == 1 )

; Wait for 1 second which should be enough time for mannequin to pull out weapon.

Set fWeaponTimer to ( fWeaponTimer + GetSecondsPassed )

if ( fWeaponTimer >= 1 )

; Reset our variables as the SkipAnim should make sure that the mannequin continues holding the weapon

Set fWeaponTimer to 0

Set nWeaponShown to 0

; Stop combat with player so that player can interact with it again.

StopCombat

endif

endif

 

if ( menumode == 1 )

return

endif

 

if ( GetDisabled == 1 )

; if mannequin has been disabled then we need to wait some time then delete this reference

Set fDeleteTimer to ( fDeleteTimer + GetSecondsPassed )

if ( fDeleteTimer > 5 )

SetDelete 1

endif

return

endif

 

; To prevent mannequin from becoming permanently in combat with player

if ( OnPCHitMe == 1 )

Set OnPCHitMe to 0

StopCombat

endif

 

if ( nMannequin != 1 )

Set companion to 1

Set nMannequin to 1

Player->AddTopic "Взять\Переставить"

Player->AddTopic "Показать оружие"

Player->AddTopic "Автопоказ оружия"

endif

 

if ( questionState == 1 )

; This is the set-up for wielding a weapon. NOTE: we get here through dialogue.

Set questionState to 0

Set nWeaponShown to 1

StartCombat Player ; Essential, we can't show the weapon if we don't start combat with

; someone and the player is convienent because they talked with the

; mannequin to tell it to show weapon.

return ; We can cut processing this script short right here because we don't need

; anything below here for wielding weapons.

endif

 

; We will set questionState to 10 in dialogue to allow picking it up.

if ( questionState == 10 )

; This section is split into two groups of nested ifs because of nested if limits of

; the scripting language.

Set nStillEquipped to 0

Set nEquipType to ( GetWeaponType )

if ( nEquipType == -1 )

Set nEquipType to ( GetArmorType 0 )

if ( nEquipType == -1 )

Set nEquipType to ( GetArmorType 1 )

if ( nEquipType == -1 )

Set nEquipType to ( GetArmorType 2 )

if ( nEquipType == -1 )

Set nEquipType to ( GetArmorType 3 )

if ( nEquipType == -1 )

Set nEquipType to ( GetArmorType 4 )

if ( nEquipType == -1 )

Set nEquipType to ( GetArmorType 5 )

if ( nEquipType != -1 )

Set nStillEquipped to 1

endif

else

Set nStillEquipped to 1

endif

else

Set nStillEquipped to 1

endif

else

Set nStillEquipped to 1

endif

else

Set nStillEquipped to 1

endif

else

Set nStillEquipped to 1

endif

else

Set nStillEquipped to 1

endif

 

if ( nStillEquipped != 1 )

Set nEquipType to ( GetArmorType 6 )

if ( nEquipType == -1 )

Set nEquipType to ( GetArmorType 7 )

if ( nEquipType == -1 )

Set nEquipType to ( GetArmorType 8 )

if ( nEquipType == -1 )

Set nEquipType to ( GetArmorType 9 )

if ( nEquipType == -1 )

Set nEquipType to ( GetArmorType 10 )

if ( nEquipType == -1 )

; Only show this question if the mannequin doesn't have weapons or armor equipped.

MessageBox "Вы сняли все предметы с манекена?", "Да", "Нет"

else

Set nStillEquipped to 1

endif

else

Set nStillEquipped to 1

endif

else

Set nStillEquipped to 1

endif

else

Set nStillEquipped to 1

endif

else

Set nStillEquipped to 1

endif

endif

 

set questionState to 20

endif

 

if ( questionState == 20 )

if ( nStillEquipped != 1 )

set button to GetButtonPressed

else

; Mannequin still has weapons or armor equipped so activate it, instead of allowing pick-up.

MessageBox "Вы не сняли с манекена ваши предметы"

set button to 1

endif

 

if ( button == 0 )

set questionState to 0

Disable

player->addItem, "_gp_wooden_placeholder_m", 1

playSound "Item Misc Up"

elseif ( button == 1 )

set questionState to 0

Activate

endif

endif

 

end

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

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

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

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

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

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

Войти

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

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

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