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

Нужна помощь скриптеров


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

Эти два блока - это полный текст скрипта? В скрипте никаких различий по типам стражников вроде бы нет.

Скрипт точно тот самый?

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

Эти два блока - это полный текст скрипта? В скрипте никаких различий по типам стражников вроде бы нет.

Скрипт точно тот самый?

Вот полный текст[buspoiler]begin mca_guards_all

 

short environmentchecked

short willstay

short canbedeleted

short helping

short noidle

short nohello

 

if ( MenuMode == 1 )

Return

endif

 

if ( GetCurrentAiPackage == -1 )

AiWander, 2000, 5, 0, 60, 20, 20, 20, 0, 0, 0, 20

set helping to 0

elseif ( GetCurrentAiPackage == 2 )

if ( CellChanged == 1 )

AiWander, 2000, 5, 0, 60, 20, 20, 20, 0, 0, 0, 20

set helping to 0

endif

endif

 

if ( MCA_FightingBandits > 0 )

if ( helping != 1 )

AiEscort, "player" 0 0 0 0

set helping to 1

endif

endif

 

if ( helping == 1 )

if ( MCA_FightingBandits == 0 )

AiWander, 2000, 5, 0, 60, 20, 20, 20, 0, 0, 0, 20

set helping to 2

endif

endif

 

if ( GetInterior == 0 )

if ( canbedeleted == 0 )

if ( GetDistance, "player" < 500 )

set canbedeleted to 1

endif

endif

endif

 

if ( CellChanged == 1 )

if ( GetInterior == 1 )

set environmentchecked to 0

elseif ( canbedeleted == 1 )

if ( GetDistance, "player" > 3000 )

Disable

endif

endif

endif

 

if ( GetDisabled == 1 )

SetDelete, 1

endif

 

if ( environmentchecked == 1 )

Return

endif

 

set willstay to Random, 5

 

if ( willstay == 0 )

Disable

Return

elseif ( GetInterior == 1 )

aiwander, 0, 5, 0, 60, 20, 10, 10, 0, 0, 0, 0

set environmentchecked to 1

Return

endif

 

set environmentchecked to 1

 

end[/buspoiler]

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

Лол?Зачем так парились в скрипте то?Никакой там не нужен гет батон пресд!!!Зачем так усложнять скрипт?!

 

Убираешь в скрипте строчки

set button to getButtonpressed if (button == 0)

 

Убираешь переменную getButtonpressed

А в начале скрипта ставишь:

 

if ( MenuMode == 1 )

return

endif

 

Не нужно никаких усложнений

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

А разве когда висит сообщение, это считается MenuMode? В МСФД в самом начале приведен скрипт с этим блоком, но в нем есть сообщения...

 

KABASYA

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

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

Вообще, если висят эти строки, то кнопка должна нажиматся.Сейчас пороюсь в скрипте из ЧарГена приведу пример

 

 

begin CharGenFatigueBarrel

 

;barrel in courtyard that shows map menu

 

 

short done

 

if ( menumode == 1)

return

endif

 

 

if ( done == 0 )

 

if ( GetDistance, Player < 400 )

 

enablemapmenu

 

MessageBox "Теперь у вас есть меню карты. Оно показывает название местности, в которой вы находитесь, и то, в каком направлении вы стоите лицом.", "Готово"

 

EnablePlayerJumping

enableplayerfighting

enableplayermagic

 

set done to 1

 

endif

 

endif

 

 

end

 

 

 

 

 

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

Я не про то, что кнопка не будет нажиматься. Задача была - воскресить непися после нажатия кнопки, а не после появления сообщения (что было сказано открытым текстом). Для чего это было надо - не знаю. В примере все возможности даются ГГ в момент появления сообщения, а блок проверки на меню нужен, как мне кажется, только для увеличения производительности.
Ссылка на комментарий
Поделиться на другие сайты

Со стражниками и бандитами разобрался, благодарю за помощь, теперь предстал перед иной делемой, вот три скрипта:

1. Атака бандитов

[buspoiler]begin mca_bandits

 

short willspawnothers

short companionclass

short fighting

 

if ( fighting == 1 )

if ( OnDeath == 1 )

set MCA_FightingBandits to ( MCA_FightingBandits - 1 )

elseif ( CellChanged == 1 )

set MCA_FightingBandits to ( MCA_FightingBandits - 1 )

set fighting to 0

endif

endif

 

if ( GetTarget, "player" == 1 )

if ( fighting == 0 )

set MCA_FightingBandits to ( MCA_FightingBandits + 1 )

set fighting to 1

endif

endif

 

if ( willspawnothers > 0 )

Return

endif

 

set willspawnothers to Random, 4

set companionclass to Random, 32

 

if ( willspawnothers == 0 )

if ( companionclass == 0 )

Placeatme, "_MCA_bandit_bos_f01", 1, 128, 1

elseif ( companionclass == 1 )

Placeatme, "_MCA_bandit_bos_f02", 1, 128, 2

elseif ( companionclass == 2 )

Placeatme, "_MCA_bandit_bos_m01", 1, 128, 1

elseif ( companionclass == 3 )

Placeatme, "_MCA_bandit_bos_m02", 1, 128, 2

elseif ( companionclass == 4 )

Placeatme, "_MCA_bandit_bret_f01", 1, 128, 1

elseif ( companionclass == 5 )

Placeatme, "_MCA_bandit_bret_f02", 1, 128, 2

elseif ( companionclass == 6 )

Placeatme, "_MCA_bandit_bret_m01", 1, 128, 1

elseif ( companionclass == 7 )

Placeatme, "_MCA_bandit_bret_m02", 1, 128, 2

elseif ( companionclass == 8 )

Placeatme, "_MCA_bandit_dun_f01", 1, 128, 1

elseif ( companionclass == 9 )

Placeatme, "_MCA_bandit_dun_f02", 1, 128, 2

elseif ( companionclass == 10 )

Placeatme, "_MCA_bandit_dun_m01", 1, 128, 1

elseif ( companionclass == 11 )

Placeatme, "_MCA_bandit_dun_m02", 1, 128, 2

elseif ( companionclass == 12 )

Placeatme, "_MCA_bandit_imp_f01", 1, 128, 1

elseif ( companionclass == 13 )

Placeatme, "_MCA_bandit_imp_f02", 1, 128, 2

elseif ( companionclass == 14 )

Placeatme, "_MCA_bandit_imp_m01", 1, 128, 1

elseif ( companionclass == 15 )

Placeatme, "_MCA_bandit_imp_m02", 1, 128, 2

elseif ( companionclass == 16 )

Placeatme, "_MCA_bandit_khaj_f01", 1, 128, 1

elseif ( companionclass == 17 )

Placeatme, "_MCA_bandit_khaj_f02", 1, 128, 2

elseif ( companionclass == 18 )

Placeatme, "_MCA_bandit_khaj_m01", 1, 128, 1

elseif ( companionclass == 19 )

Placeatme, "_MCA_bandit_khaj_m02", 1, 128, 2

elseif ( companionclass == 20 )

Placeatme, "_MCA_bandit_nord_f01", 1, 128, 1

elseif ( companionclass == 21 )

Placeatme, "_MCA_bandit_nord_f02", 1, 128, 2

elseif ( companionclass == 22 )

Placeatme, "_MCA_bandit_nord_m01", 1, 128, 1

elseif ( companionclass == 23 )

Placeatme, "_MCA_bandit_nord_m02", 1, 128, 2

elseif ( companionclass == 24 )

Placeatme, "_MCA_bandit_orc_f01", 1, 128, 1

elseif ( companionclass == 25 )

Placeatme, "_MCA_bandit_orc_f02", 1, 128, 2

elseif ( companionclass == 26 )

Placeatme, "_MCA_bandit_orc_m01", 1, 128, 1

elseif ( companionclass == 27 )

Placeatme, "_MCA_bandit_orc_m02", 1, 128, 2

elseif ( companionclass == 28 )

Placeatme, "_MCA_bandit_red_f01", 1, 128, 1

elseif ( companionclass == 29 )

Placeatme, "_MCA_bandit_red_f02", 1, 128, 2

elseif ( companionclass == 30 )

Placeatme, "_MCA_bandit_red_m01", 1, 128, 1

elseif ( companionclass == 31 )

Placeatme, "_MCA_bandit_red_m02", 1, 128, 2

endif

endif

 

set willspawnothers to 1

 

end[/buspoiler]

2. Атака вампиров

[buspoiler]begin dg_Vampire_Berne_Ranger

 

short done

short fightset

short cattlekilled

short nolore

short nohello

short noflee

short noidle

short nointruder

short nothief

short sFlag

short sHunter

short sFightState

short OnPCHitMe

short sAttack

 

float fPCAngle

float fPCX

float fPCY

float fdx

float fdy

float fRatio

float fCrimeLevel

 

short sFrame

short sState

short sOnce

 

if ( GetJournalIndex "VA_VampCountess" == 70 )

setFight 100

setDisposition 0

set cattlekilled to -1

set sHunter to 1

else

set sHunter to 0

endif

 

if ( OnDeath == 1 )

 

if ( sHunter == 0 )

if ( GetJournalIndex "VA_VampHunter" == 90 )

if ( VampClan == 1 )

set VampKills to ( VampKills + 1 )

elseif ( VampClan == 2 )

set VampKills to ( VampKills - 1 )

elseif ( VampClan == 3 )

set VampKills to ( VampKills + 1 )

endif

elseif ( GetJournalIndex "VA_VampAmulet" == 30 )

if ( VampClan == 1 )

set VampKills to ( VampKills + 1 )

elseif ( VampClan == 2 )

set VampKills to ( VampKills - 1 )

elseif ( VampClan == 3 )

set VampKills to ( VampKills + 1 )

endif

endif

AddItem "ingred_vampire_dust_01" 1

endif

 

 

endif

 

 

if ( sOnce == 0 )

Disable

set sOnce to 1

endif

 

if ( GetHealth > 0 )

if ( GetPCSleep == 1 )

if ( GetDisabled == 0 )

Disable

endif

endif

endif

 

 

if ( MenuMode == 1 )

return

endif

 

if ( OnPCHitMe == 1 )

if ( sFightState == 0 )

if ( player->GetPCCrimeLevel > fCrimeLevel )

PayFineThief

set fTemp to ( player->GetPCCrimeLevel )

set fCrimeLevel to ( fCrimeLevel - fTemp )

player->ModPCCrimeLevel, fCrimeLevel

set sFightState to 1

endif

startcombat, player

endif

endif

 

set fCrimeLevel to ( player->GetPCCrimeLevel )

 

set sAttack to 0

 

if ( GetSpellReadied == 1 )

set sAttack to 1

elseif ( GetWeaponDrawn == 1 )

set sAttack to 1

endif

 

if ( sAttack == 1 )

if ( sFightState == 0 )

if ( GetTarget, Player )

set sFightState to 1

endif

endif

else

if ( sFightState == 1 )

StartCombat, Player

endif

endif

 

if ( GetDistance, Player > 2000 )

set sAttack to 0

endif

 

;if guards are attacking, they won't notice crime. so make the creature notice instead

if ( NPCGuardAttack > 0 )

SetAlarm, 100

else

SetAlarm, 0

endif

 

;reset flag if global is 0

if ( NPCCreatureAttack < 1 )

set sFlag to 0

endif

 

if ( sFlag == 0 )

 

;return if dead

if ( GetHealth > 0 )

if ( GetDisabled == 0 )

;if close to player increase the attacking NPC variable

if ( sAttack == 1 )

set NPCCreatureAttack to ( NPCCreatureAttack + 1 )

set sFlag to 1

 

if ( ScriptRunning, dg_NPCAttackFixScript == 0 )

StartScript dg_NPCAttackFixScript

endif

endif

endif

endif

 

else

;clear the NPC attack flag if dead or far or disable

if ( sAttack == 0 )

set sFlag to 0

elseif ( GetDisabled == 1 )

set sFlag to 0

;reduce if dead

elseif ( GetHealth < 1 )

set sFlag to 0

endif

 

if ( sFlag == 0 )

if( NPCCreatureAttack > 0 )

set NPCCreatureAttack to ( NPCCreatureAttack - 1 )

endif

endif

endif

 

set sFrame to ( sFrame + 1 )

 

if ( sFrame < 10 )

return

endif

 

set sState to 0

set sFrame to 0

 

if ( GetDisabled == 1 )

if ( GameHour > 20 )

set sState to 1

endif

 

if ( GameHour < 6 )

set sState to 1

endif

else

if ( GameHour > 6 )

if ( GameHour < 20 )

set sState to 2

endif

endif

endif

 

if ( GetHealth < 1 )

set sState to 0

endif

 

if ( GetInterior == 1 )

set sState to 0

endif

 

if ( GetDistance, Player < 256 )

set sState to 0

endif

 

if ( sState != 0 )

 

 

if ( GetDistance, Player > 7168 )

set sState to ( sState + 2 )

else

 

 

set fPCX to ( player->GetPos, X )

set fPCY to ( player->GetPos, Y )

set fPCAngle to ( player->GetAngle, Z )

 

set fdx to GetPos, X

set fdy to GetPos, Y

 

set fdx to ( fdx - fPCX )

set fdy to ( fdy - fPCY )

 

set fRatio to ( fdx / fdy )

 

;MessageBox "angle: %f, fdx : %f, fdy: %f, ratio: %f", fPCAngle, fdx, fdy, fRatio

 

if ( fdx > 0 )

if ( fdy > 0 )

if ( fRatio > 1 )

if ( fPCAngle < -45 )

set sState to ( sState + 2 )

endif

else

if ( fPCAngle < -90 )

set sState to ( sState + 2 )

endif

 

if ( fPCAngle > 135 )

set sState to ( sState + 2 )

endif

endif

else

if ( fRatio < -1 )

if ( fPCAngle < 0 )

if ( fPCAngle > -135 )

set sState to ( sState + 2 )

endif

endif

else

if ( fPCAngle < 45 )

if ( fPCAngle > -90 )

set sState to ( sState + 2 )

endif

endif

endif

endif

else

if ( fdy > 0 )

if ( fRatio < -1 )

if ( fPCAngle > 45 )

set sState to ( sState + 2 )

endif

else

if ( fPCAngle > 90 )

set sState to ( sState + 2 )

endif

 

if ( fPCAngle < -135 )

set sState to ( sState + 2 )

endif

endif

else

if ( fRatio > 1 )

if ( fPCAngle > 0 )

if ( fPCAngle < 135 )

set sState to ( sState + 2 )

endif

endif

else

if ( fPCAngle > -35 )

if ( fPCAngle < 90 )

set sState to ( sState + 2 )

endif

endif

endif

endif

 

endif

 

endif

 

if ( sState == 3 )

; MessageBox "Включено"

Enable

ModCurrentHealth, 10000

ModCurrentFatigue, 10000

ModCurrentMagicka, 10000

endif

 

if ( sState == 4 )

; MessageBox "Выключено"

Disable

endif

 

endif

 

if ( sHunter == 1 )

return

endif

 

if ( done == -1 )

return

endif

 

if ( done == 2 )

 

;check for PC NO LONGER a Berne Vampire

if ( player->GetSpell "Vampire Berne Specials" != 1 )

setfight 90

setdisposition 20

set done to -1

endif

 

endif

 

if ( done == 0 )

 

AddSpell, "Vampire Blood Berne" ;this is the blood disease

AddSpell, "Vampire Attributes"

AddSpell, "Vampire Skills"

AddSpell, "Vampire Immunities"

AddSpell, "vampire new ability"

AddSpell, "Vampire Touch"

AddSpell, "Vampire Berne Specials"

ModRestoration 75

 

;check for PC as a Berne Vampire

if ( player->GetSpell "Vampire Berne Specials" == 1 )

if ( GetTarget, Player == 1 )

StopCombat

endif

setfight 30

set done to 2

elseif ( player->GetSpell "Vampire Berne Specials" != 1 )

if ( fightset == 0 )

setfight 90

setdisposition 20

set fightset to 1

endif

endif

set done to 2

 

endif

 

end[/buspoiler]

3.Стражники атакуют бандитов[buspoiler]begin mca_guards_all

 

short helping

 

if ( MenuMode == 1 )

Return

endif

 

if ( GetCurrentAiPackage == -1 )

AiWander, 256, 5, 0, 60, 20, 20, 20, 0, 0, 0, 20

set helping to 0

elseif ( GetCurrentAiPackage == 2 )

if ( CellChanged == 1 )

AiWander, 256, 5, 0, 60, 20, 20, 20, 0, 0, 0, 20

set helping to 0

endif

endif

 

if ( MCA_FightingBandits > 0 )

if ( helping != 1 )

AiEscort, "player" 0 0 0 0

set helping to 1

endif

endif

 

if ( helping == 1 )

if ( MCA_FightingBandits == 0 )

AiWander, 256, 5, 0, 60, 20, 20, 20, 0, 0, 0, 20

set helping to 2

endif

endif

 

end[/buspoiler]

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

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

Ну так если обьявить resurrect после сообщения, он разве не будет воскрешать?
Говорю еще раз: воскрешать должен не после появления сообщения, а после нажатия кнопки. Почему - не знаю.

 

short fighting

if ( fighting == 1 )
if ( OnDeath == 1 )
set MCA_FightingBandits to ( MCA_FightingBandits - 1 )
elseif ( CellChanged == 1 )
set MCA_FightingBandits to ( MCA_FightingBandits - 1 )
set fighting to 0
endif
endif

if ( GetTarget, "player" == 1 )
if ( fighting == 0 )
set MCA_FightingBandits to ( MCA_FightingBandits + 1 )
set fighting to 1
endif
endif

 

Этот блок добавляешь в начало вампирского скрипта. Не потеряй переменную fighting.

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

  • 2 недели спустя...

Всем привет, люди, помогите в следующем вопросе: ниже скриптик, который при активации переводит все деньги на счет в банк, подскажите, что нужно добавить, чтобы снимались не все деньги, а 500000, а то я подметил, такую фишку, что крупные суммы моррик за раз не снимает, не переводит.Я вот плагин один переделывал, на покупку дома, там цены как мн7е показались маленькие, вот одному замку я назначил цену в 120 000 000, а как их перевести?[buspoiler]begin BankDepositAll

 

long YourGold

 

set YourGold to "Player"->GetItemCount Gold_001

set BankAccount to ( BankAccount + YourGold )

 

while ( YourGold >= 32000 )

Player->RemoveItem Gold_001 32000

set YourGold to ( YourGold - 32000 )

endwhile

 

if ( YourGold >= 16384 )

Player->RemoveItem Gold_001 16384

set YourGold to (YourGold - 16384)

endif

if ( YourGold >=8192 )

Player->RemoveItem Gold_001 8192

set YourGold to ( YourGold - 8192 )

endif

if ( YourGold >= 4096 )

Player->RemoveItem Gold_001 4096

set YourGold to (YourGold - 4096)

endif

if ( YourGold >= 2048 )

Player->RemoveItem Gold_001 2048

set YourGold to ( YourGold - 2048 )

endif

if ( YourGold >= 1024 )

Player->RemoveItem Gold_001 1024

set YourGold to ( YourGold - 1024 )

endif

if ( YourGold >= 512 )

Player->RemoveItem Gold_001 512

set YourGold to ( YourGold - 512 )

endif

if ( YourGold >= 256 )

Player->RemoveItem Gold_001 256

set YourGold to ( YourGold - 256 )

endif

if ( YourGold >= 128 )

Player->RemoveItem Gold_001 128

set YourGold to ( YourGold - 128 )

endif

if ( YourGold >= 64 )

Player->RemoveItem Gold_001 64

set YourGold to ( YourGold - 64 )

endif

if ( YourGold >= 32 )

Player->RemoveItem Gold_001 32

set YourGold to ( YourGold - 32 )

endif

if ( YourGold >= 16 )

Player->RemoveItem Gold_001 16

set YourGold to ( YourGold - 16 )

endif

if ( YourGold >= 8 )

Player->RemoveItem Gold_001 8

set YourGold to ( YourGold - 8 )

endif

if ( YourGold >= 4 )

Player->RemoveItem Gold_001 4

set YourGold to ( YourGold - 4 )

endif

if ( YourGold >= 2 )

Player->RemoveItem Gold_001 2

set YourGold to ( YourGold - 2 )

endif

if ( YourGold >= 1 )

Player->RemoveItem Gold_001 1

set YourGold to ( YourGold - 1 )

endif

 

startscript BankMembership

stopscript BankDepositAll

MessageBox "Перевод денег завершен."

 

end BankDepositAll[/buspoiler]

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

Всем привет, люди, помогите в следующем вопросе: ниже скриптик, который при активации переводит все деньги на счет в банк, подскажите, что нужно добавить, чтобы снимались не все деньги, а 500000, а то я подметил, такую фишку, что крупные суммы моррик за раз не снимает, не переводит.Я вот плагин один переделывал, на покупку дома, там цены как мн7е показались маленькие, вот одному замку я назначил цену в 120 000 000, а как их перевести?

Чем не идет проверка на нужное кол-во денег с последующим их отнятием кучками по 32000 золотых с изменением переменной YourGold?

Иначе говоря, надо для отнятия 500000 золотых отнять 32000 золотых 15 раз, потом - мелкими сумммами.

Кстати, для переделки надо просто заменить строчку "set YourGold to "Player"->GetItemCount Gold_001" на "set YourGold to [сколько надо золтых]".

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

Тогда он сможет у игрока деньги в минусе оставить.

Помогите пожалуйста скрипт составить, который при покупке дома переводил бы крупные суммы типа 120 000 000 продавцу дома и при продаже от продавца мне.

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

Действуешь по совету bi-666, но перед строчкой set YourGold to "Player"->GetItemCount Gold_001 вставляешь следующее:

if(player->GetItemCount, gold_001 < тосамоечисло)
MessageBox "У вас нету такого количества денег"
return
endif

Вроде все правильно написал.

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

Вопрос:

 

Можно ли активировать контейнер удаленно?

 

Например: можно ли создать кольцо, при одевании которого на себя откроется сундук, находящийся в поместье Игрока?

 

Скажу сразу, что вот этот скрипт из справочника "Скрипты для начинающих" у меня не пашет :scratch: :

 

begin RemoteContainer

short OnPCEquip

 

if ( OnPCEquip == 1 )

set OnPCEquip to 0

"dh_remote_chest_01"->Activate, player

endif

 

end

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

Поставь у контейнера галочку References Persist, если ее нет.

 

Если не поможет, то тогда это:

Activate, player
Замени на просто Activate - может помочь.
Ссылка на комментарий
Поделиться на другие сайты

Поставь у контейнера галочку References Persist, если ее нет.

 

Если не поможет, то тогда это:

Замени на просто Activate - может помочь.

 

References Persist стоит.

 

Просто Activate не помогло.

 

Будем искать дальше.

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

Хммм... По-моему, до этого игрок должен хотя бы раз активировать сундук - ты его активировал?

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

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

Хммм... По-моему, до этого игрок должен хотя бы раз активировать сундук - ты его активировал?

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

 

Нет. Глупым не кажется. Мелкие косяки - это важно. Но все это я проверял. Попробую переустановиться. Может поможет.

 

Хммм... Как сказали знающие люди для решения этой проблемы стандартных средств КС не зватит - нужен mwsе.

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

Попробуй на сундук повесить стандартный скрипт LocalState. Беседка иногда так делает при ссылке с одного объекта на другой. Правда не думаю, что поможет. С Activate много проблем всегда. Изменено пользователем TJ
Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

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

Вот скриптик

[buspoiler]begin 1jw_dae_CompScript

 

short noLore

short c_move

short compmove

short movetimer

short c_speed

short c_athletics

short p_check

short mp_check

short companion

short noGreet

short oneTime

short doOnce1

short doOnce2

short warp

short flyCheck

short wwCheck

short weapUse

short combatDone

short combatCheck

short combatMode

short soundPlayed

short pacifist

short diseased

short armoroff

short h_check

short currentmagicka

short jwander

short emmasnpcid

short alcohol

short mlove

short dayCount

short dayUp

short chatCount

short DONOTUSE

short lyingdown

short firstmeet

short athome

 

Short DTNPS_MoveOnce_NotMenu

Short DTNPS_HandlePotions

 

Long DTNPS_Count_HealthExclusive

Long DTNPS_Count_HealthQuality

Long DTNPS_Count_HealthStandard

Long DTNPS_Count_HealthTotal

 

float z_fly

float timer

float sheatheTimer

float counter

float px

float py

float ax

float ay

float az

float bx

float by

float bz

float t1

float t2

float t3

float t4

float coDist1

float coDist2

float DTNPS_Timer_Health

 

 

If ( GetHealth < 1 )

Set DTNPS_HandlePotions to 0

ElseIf ( GetFatigue < 1 )

Set DTNPS_HandlePotions to 0

ElseIf ( MenuMode == 1 )

Set DTNPS_HandlePotions to 0

Else

Set DTNPS_HandlePotions to 1

EndIf

 

If ( DTNPS_HandlePotions == 0 )

Set DTNPS_MoveOnce_NotMenu to 0

Set DTNPS_Timer_Health to 99

Set DTNPS_Count_HealthTotal to ( DTNPS_Count_HealthExclusive + DTNPS_Count_HealthQuality + DTNPS_Count_HealthStandard )

If ( DTNPS_Count_HealthTotal > 0 )

While ( DTNPS_Count_HealthExclusive >= 10 )

AddItem "p_restore_health_e" 10

Set DTNPS_Count_HealthExclusive to ( DTNPS_Count_HealthExclusive - 10 )

EndWhile

While ( DTNPS_Count_HealthExclusive >= 1 )

AddItem "p_restore_health_e" 1

Set DTNPS_Count_HealthExclusive to ( DTNPS_Count_HealthExclusive - 1 )

EndWhile

While ( DTNPS_Count_HealthQuality >= 10 )

AddItem "p_restore_health_q" 10

Set DTNPS_Count_HealthQuality to ( DTNPS_Count_HealthQuality - 10 )

EndWhile

While ( DTNPS_Count_HealthQuality >= 1 )

AddItem "p_restore_health_q" 1

Set DTNPS_Count_HealthQuality to ( DTNPS_Count_HealthQuality - 1 )

EndWhile

While ( DTNPS_Count_HealthStandard >= 10 )

AddItem "p_restore_health_s" 10

Set DTNPS_Count_HealthStandard to ( DTNPS_Count_HealthStandard - 10 )

EndWhile

While ( DTNPS_Count_HealthStandard >= 1 )

AddItem "p_restore_health_s" 1

Set DTNPS_Count_HealthStandard to ( DTNPS_Count_HealthStandard - 1 )

EndWhile

EndIf

ElseIf ( DTNPS_HandlePotions == 1 )

If ( DTNPS_MoveOnce_NotMenu == 0 )

Set DTNPS_MoveOnce_NotMenu to 1

While ( GetItemCount "p_restore_health_e" > 10 )

RemoveItem "p_restore_health_e" 10

Set DTNPS_Count_HealthExclusive to ( DTNPS_Count_HealthExclusive + 10 )

EndWhile

While ( GetItemCount "p_restore_health_e" > 1 )

RemoveItem "p_restore_health_e" 1

Set DTNPS_Count_HealthExclusive to ( DTNPS_Count_HealthExclusive + 1 )

EndWhile

While ( GetItemCount "p_restore_health_q" >= 10 )

RemoveItem "p_restore_health_q" 10

Set DTNPS_Count_HealthQuality to ( DTNPS_Count_HealthQuality + 10 )

EndWhile

While ( GetItemCount "p_restore_health_q" >= 1 )

RemoveItem "p_restore_health_q" 1

Set DTNPS_Count_HealthQuality to ( DTNPS_Count_HealthQuality + 1 )

EndWhile

While ( GetItemCount "p_restore_health_s" >= 10 )

RemoveItem "p_restore_health_s" 10

Set DTNPS_Count_HealthStandard to ( DTNPS_Count_HealthStandard + 10 )

EndWhile

While ( GetItemCount "p_restore_health_s" >= 1 )

RemoveItem "p_restore_health_s" 1

Set DTNPS_Count_HealthStandard to ( DTNPS_Count_HealthStandard + 1 )

EndWhile

EndIf

 

Set DTNPS_Count_HealthTotal to ( DTNPS_Count_HealthExclusive + DTNPS_Count_HealthQuality + DTNPS_Count_HealthStandard )

 

If ( DTNPS_Count_HealthTotal > 0 )

Set DTNPS_Timer_Health to ( DTNPS_Timer_Health + GetSecondsPassed )

If ( GetItemCount "p_restore_health_e" > 0 )

Set DTNPS_Timer_Health to 0

ElseIf ( GetItemCount "p_restore_health_q" > 0 )

Set DTNPS_Timer_Health to 0

ElseIf ( GetItemCount "p_restore_health_s" > 0 )

Set DTNPS_Timer_Health to 0

ElseIf ( DTNPS_Timer_Health >= 1 )

If ( DTNPS_Count_HealthExclusive > 0 )

AddItem "p_restore_health_e" 1

Set DTNPS_Count_HealthExclusive to ( DTNPS_Count_HealthExclusive - 1 )

ElseIf ( DTNPS_Count_HealthQuality > 0 )

AddItem "p_restore_health_q" 1

Set DTNPS_Count_HealthQuality to ( DTNPS_Count_HealthQuality - 1 )

ElseIf ( DTNPS_Count_HealthStandard > 0 )

AddItem "p_restore_health_s" 1

Set DTNPS_Count_HealthStandard to ( DTNPS_Count_HealthStandard - 1 )

EndIf

EndIf

EndIf

EndIf

 

set currentmagicka to ( GetMagicka )

 

if ( MenuMode == 1 )

 

if ( GetItemCount p_restore_health_b >= 1 )

set p_check to 1

elseif ( GetItemCount p_restore_health_c >= 1 )

set p_check to 1

elseif ( GetItemCount p_restore_health_e >= 1 )

set p_check to 1

elseif ( GetItemCount p_restore_health_q >= 1 )

set p_check to 1

elseif ( GetItemCount p_restore_health_s >= 1 )

set p_check to 1

else

set p_check to 0

endif

 

if ( GetItemCount p_restore_magicka_b >= 1 )

set mp_check to 1

elseif ( GetItemCount p_restore_magicka_c >= 1 )

set mp_check to 1

elseif ( GetItemCount p_restore_magicka_e >= 1 )

set mp_check to 1

elseif ( GetItemCount p_restore_magicka_q >= 1 )

set mp_check to 1

elseif ( GetItemCount p_restore_magicka_s >= 1 )

set mp_check to 1

else

set mp_check to 0

endif

 

if ( GetPCSleep == 0 )

return

endif

endif

 

 

if ( player->GetDistance "1jw_dae_homelight" <= 4000 )

if ( GetLOS Player == 1 )

set athome to 1

else

set athome to 0

endif

endif

 

if ( GetCurrentAIPackage != 3 )

setSpeed 40

set ajw_daenear to 0

endif

 

if ( weapUse == 1 )

if ( Player->GetWeaponType <= 8 )

setmarksman 0

elseif ( weapUse == 1 )

if ( Player->GetWeaponType >= 9 )

setmarksman 200

endif

endif

endif

 

if ( combatCheck == 1 )

set sheatheTimer to sheatheTimer + GetSecondsPassed

if ( GetSoundPlaying, "Weapon Swish" == 1 )

set sheatheTimer to 0

return

elseif ( GetSoundPlaying, crossbowShoot == 1 )

set sheatheTimer to 0

return

elseif ( GetSoundPlaying, bowShoot == 1 )

set sheatheTimer to 0

return

 

elseif ( sheatheTimer > 4 )

if ( GetSoundPlaying "Weapon Swish" == 0 )

set sheatheTimer to 0

set soundPlayed to 1

endif

elseif ( sheatheTimer > 4 )

if ( GetSoundPlaying "crossbowShoot" == 0 )

set sheatheTimer to 0

set soundPlayed to 1

endif

elseif ( sheatheTimer > 4 )

if ( GetSoundPlaying "bowShoot" == 0 )

set sheatheTimer to 0

set soundPlayed to 1

endif

endif

endif

 

if ( soundPlayed == 1 )

equip "silver dagger"

removeitem "silver dagger" 1

set soundPlayed to 0

set combatCheck to 0

set combatMode to 0

set combatDone to 1

endif

 

if ( combatDone == 1 )

set timer to timer + GetSecondsPassed

if ( timer > 6 )

set timer to 0

set combatDone to 0

set warp to 0

endif

endif

 

if ( c_move == 1 )

if ( GetDistance Player > 100 )

set noGreet to 0

AIFollow Player 0 0 0 0

set c_move to 0

endif

endif

 

if ( GetCurrentAIPackage == 3 )

if ( GetPCSleep == 1 )

StartScript 1jw_dae_CompLevel

set alcohol to 0

endif

 

if ( flyCheck == 1 )

if ( GetWeaponDrawn == 0 )

set z_fly to ( Player->GetPos z )

SetPos z z_fly

elseif ( flyCheck == 1 )

if ( GetCurrentAIPackage != 3 )

if ( GetWeaponDrawn == 0 )

set z_fly to ( GetPos z )

SetPos z z_fly

endif

endif

endif

endif

 

if ( GetWeaponDrawn == 1 )

if ( flyCheck == 0 )

set combatCheck to 1

set combatMode to 1

set timer to 0

set warp to 1

return

elseif ( GetWeaponDrawn == 1 )

if ( flyCheck == 1 )

set combatDone to 1

set combatMode to 1

set timer to 0

set warp to 1

return

endif

endif

endif

 

set px to ( Player->GetPos x )

set py to ( Player->GetPos y )

 

if ( doOnce1 == 0 )

set ax to ( Player->GetPos x )

set ay to ( Player->GetPos y )

set az to ( Player->GetPos z )

set doOnce1 to 1

endif

 

set t1 to ( px - ax )

set t1 to ( t1 * t1 )

set t2 to ( py - ay )

set t2 to ( t2 * t2 )

set t1 to ( t1 + t2 )

set coDist1 to ( GetSquareRoot, t1 )

 

if ( coDist1 > 360 )

set doOnce1 to 0

endif

 

if ( coDist1 > 180 )

if ( doOnce2 == 0 )

set bx to ( Player->GetPos x )

set by to ( Player->GetPos y )

set bz to ( Player->GetPos z )

set doOnce2 to 1

endif

endif

 

set t3 to ( px - bx )

set t3 to ( t3 * t3 )

set t4 to ( py - by )

set t4 to ( t4 * t4 )

set t3 to ( t3 + t4 )

set coDist2 to ( GetSquareRoot, t3 )

 

if ( coDist2 > 360 )

set doOnce2 to 0

endif

 

if ( warp == 0 )

if ( coDist1 > 300 )

if ( GetDistance Player > 680 )

SetPos x ax

SetPos y ay

SetPos z az

AiFollow Player 0 0 0 0

elseif ( warp == 0 )

if ( coDist2 > 300 )

if ( GetDistance Player > 680 )

SetPos x bx

SetPos y by

SetPos z bz

AiFollow Player 0 0 0 0

endif

endif

endif

endif

endif

 

if ( GetDistance Player <= 512 )

set ajw_daenear to 1

endif

endif

 

if ( GetDistance Player > 512 )

set ajw_daenear to 0

endif

 

if ( counter < 20 )

set counter to counter + 1

return

endif

 

set counter to 0

 

if ( GetCurrentAIPackage == 3 )

if ( GetDistance Player < 250 )

setSpeed 60

setAthletics 60

elseif ( GetDistance Player > 250 )

set c_speed to ( ( Player->GetSpeed ) * 2.25 )

set c_athletics to ( ( Player->GetAthletics ) * 2.25 )

setSpeed c_speed

setAthletics c_athletics

endif

 

if ( Player->GetEffect sEffectLevitate == 1 )

if ( flyCheck == 0 )

cast "1jw_dae_lev_bogus" player

addspell "1jw_dae_lev"

set flyCheck to 1

endif

endif

 

if ( Player->GetEffect sEffectLevitate == 0 )

if ( flyCheck == 1 )

removespell "1jw_dae_lev"

set flyCheck to 0

endif

endif

 

if ( Player->GetEffect sEffectWaterWalking == 1 )

if ( wwCheck == 0 )

cast "1jw_dae_ww_bogus" player

addspell "1jw_dae_ww"

set wwCheck to 1

endif

endif

 

if ( Player->GetEffect sEffectWaterWalking == 0 )

if ( wwCheck == 1 )

removespell "1jw_dae_ww"

set wwCheck to 0

endif

endif

 

if ( GetPCSneaking == 1 )

ForceSneak

elseif ( GetPCSneaking == 0 )

ClearForceSneak

endif

 

if ( compMove == 1 )

if ( c_move == 0 )

if ( GetDistance Player < 70 )

AIWander 300 0 0 0 0

set c_move to 1

endif

endif

endif

endif

 

if ( dayCount != Day )

set dayUp to dayUp + 1

set dayCount to Day

endif

 

If ( GetHealthGetRatio < 0.5 )

If ( combatmode == 0 )

If ( currentmagicka >= 12 )

Cast "hearth heal" player

modcurrentmagicka -12

elseif ( p_check > 0 )

StartScript 1jw_dae_DrinkPotion

endif

endif

endif

 

If ( mp_check > 0 )

If ( combatmode == 0 )

If ( GetMagicka < 10 )

StartScript 1jw_dae_HealMag

endif

endif

endif

 

If ( GetCommonDisease == 1 )

set diseased to 1

elseif ( GetBlightDisease == 1 )

set diseased to 2

else

set diseased to 0

endif

 

set emmasnpcid to 910

 

 

end[/buspoiler]

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

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

Вот скриптик

Вы, кстати, уверены, что тут дело в скипте, а не в диалоге? Ибо в скрипте ничего про танец нет, по крайней мере я не нашел, да.

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

Вы, кстати, уверены, что тут дело в скипте, а не в диалоге? Ибо в скрипте ничего про танец нет, по крайней мере я не нашел, да.

В результате диалога есть строчка Goodbye

AiWander 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0

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

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

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

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

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

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

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

Войти

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

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

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