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

Тонкости скриптов


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

Сталкивался кто-нибудь с ошибкой:

 

?

 

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

 

Проблема в параметрах самого активатора, и возможно в столкновении с ним. Если бы я шарил в моделировании ответил бы яснее.

Сталкивались с этим многие и неоднократно. Повесь на другой обьект скрипт.

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

  • 1 месяц спустя...
  • Ответов 335
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

Обьясните как работает этот скрипт, немогу понять :wall:

 

Есть десять копий этого скрипта, с разными номерами (скрипт_1, скрипт_2, и т д.).

И десять неписей с разными ID, на которых они повешены

 

 

Begin _FDJ_S_G_09

 

Short companion

 

if ( "_FDJ_G_G" >= 9 )

if ( "_FDJ_EmployDismiss" == 1 ) <<-- Это глобалка

Set "_FDJ_S_G_09".companion to 1 <<-- 7я строка

else

Set "_FDJ_S_G_09".companion to 0

endif

enable

else

disable

endif

 

End _FDJ_S_G_09

 

 

 

Пытался пересохранить скрипт, но компилер отказывается, и ругается на 7ю строку. Собственно поэтому и возник вопрос.

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

Set "_FDJ_S_G_09".companion to 1 <<-- 7я строка

else

Set "_FDJ_S_G_09".companion to 0

_FDJ_S_G_09 убрать. Локальные переменные в скрипте меняются без указания на себя.

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

_FDJ_G_G - это глобальная переменная? Или какой-то скрипт?

Глобалка.

_FDJ_S_G_09 убрать. Локальные переменные в скрипте меняются без указания на себя.

 

Спасибо, так яснее. Осталось понять почему так сделано.

Это из плагина КДГ.

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

  • 1 месяц спустя...

Камедары, есть вопросы.

1. Существует ли у каждой шмотки свой uniqueID? Например, со старта ГГ получается шмоточку common_shirt_01. Коих в игре 264. Есть ли свой uniqueID у каждой их них?

2. Все-таки никак нельзя узнать зачарована ли вещь каким-то эффектом?

 

Камерады-МВСЕшники, а еще вопрос к вам)

Сталкивался кто али сам писал скрипт, который перебирает все вещи в инвентаре и позволяет получить ID каждой шмотки?

У меня странно глючит whilex в коде скрипта

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

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

Есть такой чудовый мод - Suspicious Behavior. Если персонаж крадётся, а стражник его видит, то он начинает проявлять живой интерес и ходить по пятам. Единственная проблема - то, что стражники переходят за персонажем в интерьеры и не возвращаются оттуда сами. Таким образом, их можно всех заманить в одно место и там оставить навсегда. Есть ли способ это исправить? Вот скрипт.

 

Begin guard_sneak_follow

Short GuardWander

If ( GuardWander == 0 )
 AiWander, 512, 0, 0,
 Set GuardWander To 1
EndIf

If ( GetPCSneaking == 1 )
 If ( GetLOS, player == 1 )
	 If ( GuardWander == 1 )
	   AiFollow, player, 0, 0, 0, 0,
		  Set Guardwander To 2
 EndIf
   EndIf
ElseIf ( GetCurrentAiPackage == 3 )
   Set GuardWander To 0
EndIf

End

 

 

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

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

Может при CellChanged == 1 останавливать скрипт?

 

Идея скрипта мне нравится. Хорошо бы реализовать ее и в интерьерах на всех неписях.

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

Есть такой чудовый мод - Suspicious Behavior. Если персонаж крадётся, а стражник его видит, то он начинает проявлять живой интерес и ходить по пятам. Единственная проблема - то, что стражники переходят за персонажем в интерьеры и не возвращаются оттуда сами. Таким образом, их можно всех заманить в одно место и там оставить навсегда. Есть ли способ это исправить?

Можно попробовать объявить переменную StayOutside:

A useful variable for companions. When used in a script, it causes whoever it's assigned to to

automatically remain (and wait) outside of any interior the player may enter (automatically

rejoins upon return).

 

К слову, вызывать GetLOS в каждом фрейме, пусть даже только когда ГГ крадётся - нехорошо.

 

Да и вообще очень плохой скрипт: в режиме меню не останавливается, если стражник умер - не останавливается, при выходе из крадучести стражник остаётся на новом месте а не идёт обратно на пост, при смене персонажем ячейки обратно не телепортируется.

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

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

А вы перепишите скрипт, чтобы хороший был, да к стражникам прикрепите - будет новый плагин, а старый адаптировать не нужно будет.

Если по памяти, должно быть что-то такое:

 

 

Begin guard_sneak_follow_ouside
short GuardState
short StayOutside
float timer
If ( MenuMode == 1 )
Return
Endif
If ( GetCurrentHealth <= 0 )
Return
Endif
If ( CellChanged == 1 )
SetAtStart
Endif

If ( GuardState == 2 )
	 AiWander, 2000, 5, 0, 60, 20, 20, 20, 0, 0, 0, 20
	 Set GuardState To 0
Elseif ( GuardState == 1 )
If ( GetPCSneaking == 0 )
 set timer to ( timer + GetSeconds Passed )
 If timer > 3
  Set GuardState To 2
 Endif
Else
 set timer to 0
endif
Elseif ( GuardState == 0 )
If ( GetPCSneaking == 1 )
 set timer to ( timer + GetSeconds Passed )
 If timer > 1
	  If ( GetLOS, player == 1 )
				 AiFollow, player, 0, 0, 0, 0,
					   Set GuardState To 1
	   EndIf
  Set timer to 0
	    EndIf
Else
 set timer to 0
Endif

EndIf

End

 

 

 

В игре не проверял, смогу разве что завтра.

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

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

в принципе, на МВСЕ возможно

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

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

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

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

А вы перепишите скрипт, чтобы хороший был, да к стражникам прикрепите - будет новый плагин, а старый адаптировать не нужно будет.

я забираю скрипт в избранное, спасибо за материал.

После релиза плагина с перековкой брони возьмусь за сникинг-плагин, это там очень поможет

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

  • 1 месяц спустя...

как заставить ГГ промазать по цели? кроме установления навыка владения оружием в ноль

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

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

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

да, -500 оказалось слишком мало при навыке 100 владения оружием :)
Ссылка на комментарий
Поделиться на другие сайты

да, -500 оказалось слишком мало при навыке 100 владения оружием :)

Хм, тогда можно добавить цели абилку Светоч с каким-нибудь бешеным значением. Это если через МВСЕ.

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

о, интересный ход, можно попробовать, спасибо :)

 

upd. хотя, наверное, проще будет снизить в 0 навык владения оружием, дабы не плодить лишних спеллов в плагине

upd2. заменю просто "глаз" ночного видения на красную хрень "damage skill"

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

  • 2 месяца спустя...

Из-за своего нетерпения пытаюсь адаптировать плагин Shut Up! 2.0, заставляющий неписей говорить с ГГ только в том случае, если тот будет смотреть на них. Так вот пытался пересохранить его и в КС, и МВЕдит, но все-равно при загрузке игры ругается на скрипт. Если играть с оригиналом, то все нормально, и ругается только на различие локализаций.

 

begin SU_global_script

 

long npcref

long temp

short GreetDistanceMult

 

ifx ( GreetDistanceMult )

else

setx GreetDistanceMult to Xgetgs 1191 ; iGreetDistanceMultiplier

endif

 

setx npcref to xGetPCTarget

 

ifx ( npcref )

else

XSetGSfloat 1191 0

return

endif

 

setx temp to npcref->xRefType

if ( temp != 1598246990 ) ; not NPC

set temp to 0

endif

 

ifx ( temp )

XSetGSfloat 1191 GreetDistanceMult

else

XSetGSfloat 1191 0

endif

end

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

Xgetgs
XSetGSfloat

это не стандартный синтаксис MWSE, а функции из MGE XE Functions

попробую завтра или после разобраться как их использовать

или попробуй сам: http://wiki.theassimilationlab.com/mmw/Scripting_with_MWSE

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

это не стандартный синтаксис MWSE, а функции из MGE XE Functions

попробую завтра или после разобраться как их использовать

или попробуй сам: http://wiki.theassim...pting_with_MWSE

 

Пока - что буду использовать старую версию. Единственная проблема в ней - это затухание факелов NPC.

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

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

Вы сможете оставить комментарий после входа в



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

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