PDA

Просмотр полной версии : Скрипторий


Васк
01.05.2007, 12:10
Предлагаю в эту тему кидать свои скрипты дабы люди могли использовать в своих плагинах. Ну начну надеюсь мою инициативу ктонибудь поддержит.

Скрипт 1(Моррувинд)
С помошью этого скрипта можно стать вампиром любого клана. Повесить можно на любой предмет одежды пример: кольцо, амулет...
Begin vask_vampringScript

short button
short question
short messageOnce
short doOnce
short OnPCEquip
short reset
short state
short becamewithring
short clanpicked

If ( PCVampire == -1 )
return
endif

if ( OnPCEquip == 0 )
set reset to 0
If ( becamewithring == 1 )
Player->RemoveSpell "Vampire Sun Damage"
Player->RemoveSpell "Vampire Attributes"
Player->RemoveSpell "Vampire Skills"
Player->RemoveSpell "Vampire Touch"
Player->RemoveSpell "Vampire Immunities"
StopScript vampdreamscript
Player->RemoveSpell "Vampire Aundae Specials"
set PCVampire to 0
set VampClan to 0
Player->RemoveSpell "Vampire Berne Specials"
Player->RemoveSpell "Vampire Quarra Specials"
set becamewithring to 0
set state to 0
elseif ( PCVampire == 1 )
if ( becamewithring == 0 )
return
endif
endif
endif

if ( reset == 1 )
return
endif

if ( OnPCEquip == 1 )
If ( PCVampire == 0 )
if ( reset == 0 )
if ( messageOnce == 0 )
MessageBox "В какой клан вы бы хотели присоединяться как вампир?" "Аунда" "Берне" "Куарра" "Я не хочу быть вампиром"
set question to 1
set messageOnce to 1
endif
endif
elseif ( PCVampire == 1 )
return
endif
endif

if ( question == 1)
set button to GetButtonPressed
if ( button >= 0 )
set question to 0
else
return
endif
if ( button == 0 )
set state to 1
set clanpicked to 1
elseif ( button == 1 )
set state to 1
set clanpicked to 2
elseif ( button == 2 )
set state to 1
set clanpicked to 3
elseif ( button == 3 )
set reset to 1
set messageOnce to 0
return
endif
endif

if ( state == 1 )
if ( OnPCEquip == 1 )
set state to 2
set messageOnce to 0
set PCVampire to 1
else
set state to 0
set messageOnce to 0
return
endif
endif

if ( state == 2 )
Player->AddSpell "Vampire Sun Damage"
Player->AddSpell "Vampire Attributes"
Player->AddSpell "Vampire Skills"
Player->AddSpell "Vampire Touch"
Player->AddSpell "Vampire Immunities"
StartScript vampdreamscript
If ( clanpicked == 1 )
Player->AddSpell "Vampire Aundae Specials"
set VampClan to 1
elseif ( clanpicked == 2 )
Player->AddSpell "Vampire Berne Specials"
set VampClan to 2
elseif ( clanpicked == 3 )
Player->AddSpell "Vampire Quarra Specials"
set VampClan to 3
endif
set state to 3
endif

if ( state == 3 )
Player->AddSpell "Vampire Sun Damage"
Player->AddSpell "Vampire Attributes"
Player->AddSpell "Vampire Skills"
Player->AddSpell "Vampire Touch"
Player->AddSpell "Vampire Immunities"
StartScript vampdreamscript
If ( clanpicked == 1 )
Player->AddSpell "Vampire Aundae Specials"
set VampClan to 1
elseif ( clanpicked == 2 )
Player->AddSpell "Vampire Berne Specials"
set VampClan to 2
elseif ( clanpicked == 3 )
Player->AddSpell "Vampire Quarra Specials"
set VampClan to 3
endif
set state to 4
endif

if ( state == 4 )
set becamewithring to 1
endif

End vask_vampringScript

Winter Chaos
01.05.2007, 12:27
А вот мой скрипт, для Обливиона-


ScriptName WinterChaosScrip1

Short controlvar
Short button

Begin OnActivate
If ( controlvar == 0 )
MessageBox "Безголосый, но плачет; бескрылый, но парит; беззубый, но кусает;
безротый, но бормочет. Что это?", "Летучая мышь", "Старуха", "Ветер", "Привидение"
Set controlvar to 1
ElseIf ( controlvar > 1 )
Activate
EndIf
End

Begin GameMode
If ( controlvar == 1 )
Set button to GetButtonPressed
If ( button == -1 )
Return
ElseIf ( button == 2)
MessageBox "Правильный ответ."
Set controlvar to 2
Else
MessageBox "Неправильный ответ."
Cast Mg05FingerSpell15 Player
Set controlvar to 0
EndIf
ElseIf ( controlvar == 2 )
Activate
Set controlvar to 3
EndIf
End



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

Озон
01.05.2007, 13:27
Вообще бы лучше с комментариями писать скрипты, чтобы хоть новички понимали, как он работает, но это уже больше пожелание.
Ну вот вам скрипт на большую драку:
Begin Draka
short OnPCHitMe
if ( OnPCHitMe == 1 ) ; как только ударишь того, на ком этот скрипт
StartCombat Player ; он начинает драться с тобой
"NPC_1"->StartCombat Player ; Ему Помогает первый враг
"NPC_2"->StartCombat Player ; Второй
"NPC_3"->StartCombat Player ; Третьий
endif
end Draka
Суть такова: вы ударяете человека, на котором висит этот скрипт и стоящие поблизости люди (в скрипте они обозначены, как NPC_1, NPC_2, NPC_3 моментально начинают ему помогать вас бить. Кстати, этот же скрипт можно вешать и на животных, хоть на безобидного гуара, которого, к примеру, охраняют три накаченных стража (на этом кстати можно сделать мод про фермеров и их живность).
Другое применение скрипта - на города, где каждый житель, на какого не напади, будет созывать остальных и в итоге с вами будет драться весь город. Для этого просто добавляйте новых людей в скрипт через конструкции: "xxx"->StartCombat Player ; Где xxx - ID (имя вашего нового жителя). То же касается и общего мордобоя.

Chakred
01.05.2007, 19:44
Winter Chaos
Можно расширить количество загадок;)?

Winter Chaos
01.05.2007, 20:09
Chakred
Я не знаю как реализовать эту идею, надо у кого-то спросить, я только азы скриптинга знаю.

Озон
01.05.2007, 23:50
Добавляйте новую конструкцию MessageBox "Безголосый, но плачет; бескрылый, но парит; беззубый, но кусает;
безротый, но бормочет. Что это?", "Летучая мышь", "Старуха", "Ветер", "Привидение" "Вася" "Петя" "Сапог" итд
И больше ничего не надо, потому как условие
ElseIf ( button == 2)
MessageBox "Правильный ответ."
Set controlvar to 2
Else
MessageBox "Неправильный ответ."
Cast Mg05FingerSpell15 Player
будет отфильтровывать остальные ответы. Именно вот это Else ( в противном случае).

Mr. Wideside
02.05.2007, 08:06
А есть скрипт(для Морры), чтоб предмет нельзя было снять?

Sacrifice
02.05.2007, 10:37
PoMicH
Begin UnEquipItem

short state
short OnPCEquip

if ( OnPCEquip == 0 ) ; предмет не надет
if ( state == 0 ); если предмет еще не был надет, ничего не делать
return
else
Player -> Equip, "ID_предмета" ;надеть предмет
endif
else
if ( state == 0 ) ; надел в первый раз
set state to 1
endif
endif

End

Для нормального функционирования нужен Трибунал

Mr. Wideside
03.05.2007, 10:12
Sacrifice, мож глупый вопрос, но то, что по русски написано тоже писать или это пояснения?:lamo: Еси чё, то мне нужен скрипт в чистом виде, чтоб выделить, ctrl+c, ctrl+v.

Sacrifice
03.05.2007, 13:31
Это комментарии, поэтому можешь копировать так как есть

Васк
04.05.2007, 13:20
Скрипт для компаньона (Моррувинд)
версия несколько упрощенная требующая минимум знаний. Компаньон будет красться, когда вы крадетесь. Прыгать когда прыгаете вы, бежать только в тот момент когда отдаляется от вас достаточно далеко. Так же ваш компаньон будет иметь навыки аналогичные вашим. Плюс пожалуй не помешает задать ему возможность перемещаться на ваше местоположение, если вы отошли совсем уж далеко.
Ну и на пока по моему более, чем достаточно. Потому что при добавлении дальнейших умений нам потребуется приличное знание диалогов и скрипты будут уже не универсальными, а в расчете на одного NPS

BEGIN MY_SCRIPT_COMPANION
; Далее идет блок для размещения игрока в локальной ячейке
short py
short pz
short px
short companion
;а вот и сам скрипт в общем то
set companion to 1 ;---дает возможность делить вещи
;заставит не тормозить в режиме меню
if ( menumode == 1 )
If ( GetPCSleep == 0 )
Return
EndIf
EndIf
;заставляет телепортироваться к игроку, когда он слишком далеко
set pz to ( player->getpos, z )
set px to ( player->getpos, x )
set py to ( player->getpos, y )
if ( getdistance, "player" >= 1500 ) ;меняйте число по своему желанию
if ( state == 1 )
setpos, z, pz
setpos, x, px
setpos, y, py
endif
endif
;далее пойдет управление адекватным вашему поведению поведение NPS
If ( GetDistance Player > 350 )
ForceRun
ElseIf ( GetDistance Player < 300 ) ;чтоб бегал тока отдаляясь от вас
ClearForceRun
EndIf
If ( Player->GetPCSneaking == 1 )
ForceSneak
ElseIf ( Player->GetPCSneaking == 0 ) ;чтоб крался когда вы крадетесь
ClearForceSneak
EndIf
If ( GetCurrentAIPackage == 3 ) ;когда следует за вами
if ( getdistance, "player" <= 150 )
if ( getpcjumping == 1 )
ForceMoveJump
endif
endif
endif
If ( GetCurrentAIPackage == 3 )
if ( getpcjumping == 0 )
if ( getforcejump == 1 )
clearForceJump
endif
endif
endif
;далее чуть посложнее, вам придется создать несколько заклинаний, типа характеристики, в скрипте я назову их ( 1-хождение по воде, 2-водное дыхание, 3-левитация, 4-хамелион )
If ( Player->GetEffect sEffectLevitate == 1 ) ;это про левитацию
If ( GetCurrentAIPackage == 3 )
addspell, "3"
endif
else
removespell, "3"
EndIf
If ( Player->GetEffect sEffectWaterWalking == 1 ) ;хождение по воде
addspell, "1"
else
removespell, "1"
endif
if ( player->geteffect sEffectWaterBreathing == 1 )
addspell, "2"
else
removespell, "2"
endif
if ( player->geteffect, sEffectChameleon == 1 )
addspell, "4"
else
removespell, "4"
endif
;так а теперерь идет соотношение ваших навыков и навыков нпс оно чтоб не кушать наши ресурсы пойдет вторым скриптом, который будет включатся когда вы спите скрипт будет называться "my_scills"
If ( GetPCSleep == 1 )
StartScript "my_scills"
EndIf
end ;-конец первого скрипта
begin my_scills
Short doonce
Short p_strength
Short p_willpower
Short p_intelligence
Short p_agility
Short p_endurance
Short p_personality
Short p_luck
Short c_strength
Short c_willpower
Short c_intelligence
Short c_agility
Short c_endurance
Short c_personality
Short c_luck
Short p_health
Short p_magicka
Short p_fatigue
Short p_attackbonus
Short p_defendbonus
Short p_resistmagicka
Short c_health
Short c_magicka
Short c_fatigue
Short p_longblade
Short p_bluntweapon
Short p_shortblade
Short p_spear
Short p_axe
Short p_handtohand
Short p_heavyarmor
Short p_mediumarmor
Short p_lightarmor
Short p_unarmored
Short p_block
; делает уровень как у игрока ( вплоть до десятого )
If ( Player->GetLevel == 1 )
SetLevel 1
ElseIf ( Player->GetLevel == 2 )
SetLevel 2
ElseIf ( Player->GetLevel == 3 )
SetLevel 3
ElseIf ( Player->GetLevel == 4 )
SetLevel 4
ElseIf ( Player->GetLevel == 5 )
SetLevel 5
ElseIf ( Player->GetLevel == 6 )
SetLevel 6
ElseIf ( Player->GetLevel == 7 )
SetLevel 7
ElseIf ( Player->GetLevel == 8 )
SetLevel 8
ElseIf ( Player->GetLevel == 9 )
SetLevel 9
ElseIf ( Player->GetLevel == 10 )
SetLevel 10
endif
;установка навыков
If ( doonce == 0 )
Set c_strength To ( Player->GetStrength )
Set c_willpower To ( Player->GetWillpower )
Set c_intelligence To ( Player->GetIntelligence )
Set c_agility To ( Player->GetAgility )
Set c_endurance To ( Player->GetEndurance )
Set c_personality To ( Player->GetPersonality )
Set c_luck To ( Player->GetLuck )
Set c_health To ( Player->Gethealth )
Set c_magicka To ( GetIntelligence )
Set c_fatigue To ( Player->GetFatigue )
Set doonce To 1
EndIf
Set p_strength To ( Player->GetStrength )
Set p_willpower To ( Player->GetWillpower )
Set p_intelligence To ( Player->GetIntelligence )
Set p_agility To ( Player->GetAgility )
Set p_endurance To ( Player->GetEndurance )
Set p_personality To ( Player->GetPersonality )
Set p_luck To ( Player->GetLuck )
Set p_health To ( Player->Gethealth )
Set p_magicka To ( GetIntelligence )
Set p_fatigue To ( Player->GetFatigue )
Set p_attackbonus To ( Player->GetAttackBonus )
Set p_defendbonus To ( Player->GetDefendBonus )
Set p_resistmagicka To ( Player->GetResistMagicka )
Set p_longblade To ( Player->Getlongblade )
Set p_bluntweapon To ( Player->Getbluntweapon )
Set p_shortblade To ( Player->Getshortblade )
Set p_spear To ( Player->Getspear )
Set p_axe To ( Player->Getaxe )
Set p_handtohand To ( Player->Gethandtohand )
Set p_heavyarmor To ( Player->Getheavyarmor )
Set p_mediumarmor To ( Player->Getmediumarmor )
Set p_lightarmor To ( Player->Getlightarmor )
Set p_unarmored To ( Player->Getunarmored )
Set p_block To ( Player->Getblock )
If ( p_strength <= c_strength )
SetStrength, c_strength
ElseIf ( p_strength > c_strength )
SetStrength, p_strength
Set c_strength To GetStrength
EndIf
If ( p_willpower <= c_willpower )
SetWillpower, c_willpower
ElseIf ( p_willpower > c_willpower )
SetWillpower, p_willpower
Set c_willpower To GetWillpower
EndIf
If ( p_intelligence <= c_intelligence )
SetIntelligence, c_intelligence
ElseIf ( p_intelligence > c_intelligence )
SetIntelligence, p_intelligence
Set c_intelligence To GetIntelligence
EndIf
If ( p_agility <= c_agility )
SetAgility, c_agility
ElseIf ( p_agility > c_agility )
SetAgility, p_agility
Set c_agility To GetAgility
EndIf
If ( p_endurance <= c_endurance )
SetEndurance, c_endurance
ElseIf ( p_endurance > c_endurance )
SetEndurance, p_endurance
Set c_endurance To GetEndurance
EndIf
If ( p_personality <= c_personality )
SetPersonality, c_personality
ElseIf ( p_personality > c_personality )
SetPersonality, p_personality
Set c_personality To GetPersonality
EndIf
If ( p_luck <= c_luck )
SetLuck, c_luck
ElseIf ( p_luck > c_luck )
SetLuck, p_luck
Set c_luck To GetLuck
EndIf
If ( p_health <= c_health )
SetHealth, c_health
ElseIf ( p_health > c_health )
SetHealth, p_health
Set c_health To GetHealth
EndIf
If ( p_magicka <= c_magicka )
SetMagicka, c_magicka
ElseIf ( p_magicka > c_magicka )
SetMagicka, p_magicka
Set c_magicka To GetMagicka
EndIf
If ( p_fatigue <= c_fatigue )
SetFatigue, c_fatigue
ElseIf ( p_fatigue > c_fatigue )
SetFatigue, p_fatigue
Set c_fatigue To GetFatigue
EndIf
SetAttackBonus, p_attackbonus
SetDefendBonus, p_defendbonus
SetResistMagicka, p_resistmagicka
SetLongBlade, p_longblade
SetBluntWeapon, p_bluntweapon
SetShortblade, p_shortblade
SetSpear, p_spear
SetAxe, p_axe
SetHandToHand, p_handtohand
SetHeavyArmor, p_heavyarmor
SetMediumArmor, p_mediumarmor
SetLightArmor, p_lightarmor
SetUnarmored, p_unarmored
SetBlock, p_block
stopscript, "myscills
end

GREEphon
05.05.2007, 16:59
Помогите кто нибудь со скриптом в Обливионе, нужно чтобы непись после активации топика в диалоге шёл в другую локацию и искал там кричу (лошадь) и проделал с ней монипуляции, но вот идти его в др. локацию - не получается, кто-нибудь подскажите команду.:confused:

Васк
07.05.2007, 23:38
GREEphon вроде это делают не скрипты, хотя я в Обломе не специалист.
А вот по делу:
Кольцо телепортации (Моррувинд)
begin RingTel
short OnPCEquip
short button
short state
if (MenuMode == 1)
return
endif
if (OnceEquip == 1)
Set state to 1
Set OnPCEquip to 0
endif
if(state == 0)
return
endif
if (state == 1)
MessageBox "закрыть", "xxxxx", "xxxx", "xxxxx", "xxxx" ;здесь названия какие надо
set state to 2
endif
if (state == 2)
Set button to GetButtonPressed
endif
If (button == 0)
Set state to 0
endif
if (button == 1)
Player->Position, kkkkkk,rrrrr,ttttt здесь координаты нужных мест!
set state to 0
endif
if (button == 2)
Player->Position, kkkkkk,rrrrr,ttttt
set state to 0
endif
if (button == 3)
Player->Position, kkkkkk,rrrrr,ttttt
set state to 0
endif
if (button == 1)
Player->Position, kkkkkk,rrrrr,ttttt
set state to 0
endif
End RingTel

zOmb
08.05.2007, 00:29
Раздел Румора по скриптам. Есть десяток примеров скриптов.
http://forum.rumor.ru/index.php?showforum=132

Васк
08.05.2007, 01:56
Ну на мании можно публиковать свои скрипты.

На РуМоре что-то в последнее время народу вообще нету...

PAH-CMETAH
05.06.2007, 20:17
Что в скрипте написать ,что бы излечиться от вампиризма???

Васк
07.06.2007, 13:05
PAH-CMETAH
Ты про какую игру говоришь?:confused:

Mr.X
16.06.2007, 13:01
PAH-CMETAH
Можно не приписывать, а взять скрипт квестового зелья Лечения от вампиризма.

Tayler
27.06.2007, 11:28
ребят дайте ссылку на учебник для самых тупых скриптеров вроде меня и еще тупее.ваще ни че об скриптах не знаю и писать их не умею.с меня +

Sacrifice
27.06.2007, 18:12
Скрипты морровинда (http://gwathlobal.narod.ru/MSfD_8_1_Rus.rar)
Скрипты обливиона (http://forum.rumor.ru/index.php?showtopic=1201&pid=9077&mode=threaded&show=&st=&)

aiTarget
19.07.2007, 18:58
Значение здоровья у игрока как бы имеет две составляющие: текущее и максимальное значение. Строка Player -> sethealth x меняет обе составляющие на х. Какой командой можно менять только одну составляющую???

Angel DStaar
01.09.2007, 14:22
Если вопрос еще актуален, отвечу - нет функции для установки отдельно максимального здоровья без изменения текущего, а вот наоборот есть.
player -> ModCurrentHealth, x
Пример: у плеера макс хп 100, текущие 50. Написав "player -> ModCurrentHealth, 10000" текущие хп плеера будут 100/100.

Орлангур_96
03.10.2009, 21:44
Можно расширить количество загадок;)?
Конечно :)

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