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

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


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

Все дело в том что не могу понять как осуществить проверку наложенного на NPC заклинания. Т.е. К примеру я наложил на непися закл повреждения огнем в течении 5 сек. (типа поджег) Как сделать проверку какой именно эффект наложен на непся? Ну например он должен отреагировать убеганием и тушением себя в воде. И что бы он не "тушился" от отравления. То есть мне нужно не просто проверку уроном, а именно проверку магического эффекта.

А то задумал один плаг, а тут вперся :( Думаю вопрусь еще во многом, но пока хоть это разрешить.

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

Во-первых, не в том разделе создал тему. Надо было тут.

Во-вторых, перед тем как спрашивать стоит почитать мануалы. Например, этот

И, наконец, в-третьих - для определения горения NPC надо использовать функцию GetEffect примерно вот так:

[color="blue"]If[/color] [color="green"]([/color] [color="brown"]GetEffect[/color][color="green"],[/color] [color="orange"]sEffectFireDamage[/color]  [color="green"]==[/color] [color="red"]1[/color] [color="green"])[/color]
[color="grey"];NPC Горит. Пора тушиться...[/color]
[color="blue"]endif[/color]

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

Прошу прощения. И спасибо за ответ.

 

Инструкцию для чайников читаю, но она все равно не дает полного представления и вопросы остаются.

А вопрос следующий - Как запретить активацию трупа убитого существа? Что бы лут нельзя было собрать.

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

Делаешь отдельное существо и вешаешь на него скрипт в духе:

begin NoAct

if(onActivate=1)
return
endif

end

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

Народ, пожалуйста активнее подключайтесь к теме! Вообще не понимаю че за фигня!

 

Можно ли как нибудь затормозить событие до нажатия кнопки ОК в месадж боксе???

 

Имею следующу проблему:

 

If (то-то, то-то...) - условие соблюдается

МессаджБокс "Ля-ля-ля, па-па-па", "ОК" - сообщение выходит

делать то-то. - следует сразу не зависимо от того, нажал ты Ок или нет.

 

Хоть игра и встает как бы на паузу,но действие то начинается. Вообще возможно затормозить выполнение действия до нажатия на кнопку Ок? Или это возможно лишь если у тебя несколько кнопок задействовано?

 

P/S/ Знаю, что лох в скриптографии, но хочется все сделать самому. Хоть чему то научится. В мануале про одну кнопку ничего нет :(

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

Хммм... Если я правильно понял, то тебе надо так:

begin скрипт

 

short button

short messaged

 

if(условие)

MessageBox "блаблабла", "ОК"

set button to GetButtonPressed

set messaged to 1

endif

if(messaged=1)

if(button = -1)

return

else

выполнить действие

set messaged to 0

endif

endif

 

end

 

Вроде так.

Просто ставишь в условие для действия нажатие кнопки.

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

Беда в том, что я пытался использовать функцию "гет батн прессд" Итог - сообщение выходит, а кнопка не жмется продолжения скрипта нет. При этом даже меню не открывается, приходится принудительно игру закрывать :( Попробовал твой вариант. У меня приводит к тому же. Если у тебя он работает, напиши. Я тогда свой скрипт буду лопатить.

Спасибо.

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

Объясни поподробнее, что тебе нужно. Я так понял, что должно вылезать сообщение и после нажатия на кнопку "ОК" должно выполняться какое-то действие. Так?

И что значит "Кнопка не жмется"?

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

Мне нужно что бы мой непись воскрешался после нажатия кнопки ОК, а не во время появления сообщения.

Кнопка не то что бы не жмется, звук есть. Но сообщение не пропадает. Сколько бы я не жал кнопку сообщение не пропадает. При этом я не могу вызвать ни одно меню и в консоли не вводятся команды. Debug text показывает что кнопка возвращает -1 как положено. Но нажатие почему-то не уберает сообщение и я не знаю почему. Это происходит стоит только прописать функцию GetButtonPressed. Я уже не знаю что с этим делать...

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

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

Хорошо. Вот такой код. Полюбому корявый, но пока лучше не получается.

 

Begin dremoraNScript


Short Flag; проверка был ли камень душ у игрока
float dremoraNHealth 
Float timer
Short state


set dremoraNHealth to GetHealth
if ( dremoraNHealth == 0)
   if ("Player"->HasSoulGem, "dremoraN"  ); Проверка наличия у игрока камня с душой кощея
	   set flag to 1; Камень у игрока был/есть
   		return
   endif
endif

else
set dremoraNHealth to GetHealth
 if ( dremoraNHealth == 0)
  		if (flag == 0)
  			Set timer to (timer + GetSecondsPassed)
				If (timer >= 2);задержка на воскрешение
  					MessageBox "Вам кажется что вы его убили, но что то не так...", "ОК"
				   Resurrect 
							 Set timer to 0;сброс счетчика 
								Return

			  endif
	 endif
 endif
endif


End dremoraNScript

 

Согласно этому коду непись воскрешается вместе с сообщением, а мне нужно что бы это происходило после нажатия ОК.

 

З.Ы. По почкам не бить.

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

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

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

Нет. Я вообще о нем не думал :-[ Щас сделал все как надо. Теперь он выглядит так

Begin dremoraNScript


Short Flag; проверка был ли камень душ у игрока
float dremoraNHealth 
Float timer
Short state
short Button
short var

set dremoraNHealth to GetHealth
if ( dremoraNHealth == 0)
   if ("Player"->HasSoulGem, "dremoraN"  ); Проверка наличия у игрока камня с душой кощея
	   set flag to 1; Камень у игрока был
   		return
   endif
endif

else
set dremoraNHealth to GetHealth
 if ( dremoraNHealth == 0)
  		if (flag == 0)
  			Set timer to (timer + GetSecondsPassed)
if (timer >= 2)
 if (var == 0)
MessageBox "Кажется вы убили его, но что то не так","Ok"
set var to 1
endif
set button to getButtonpressed   			   				
		if (button == 0)		   
				   Resurrect 
						 Set timer to 0;сброс счетчика 
							set var to 0
							Return
						 endif
					endif
			endif
	endif
 endif
endif


End dremoraNScript

 

Всем большое спасибо за внимание! :yahoo:

 

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

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

  • 7 месяцев спустя...
Эта строчка задает персонажу пакет искуственного интеллекта, заставляющий его бродить вокруг того места, где его застигла эта команда. Первое число - радиус области, по которой будет бродить NPC, второе - время исполнения пакета (то есть в данном случае он 5 часов будет гулять), третье - непонятно что, возможно - время начала исполнения, остальные - вероятности проигрывания различных анимаций при остановке. То есть "стоять смирно", "стоять свободно", "поправить прическу", "потянуться к оружию" и т.д. Полный список - см. МСФД Изменено пользователем Serg9408
Ссылка на комментарий
Поделиться на другие сайты

У меня есть вопрос относительно скрипта mca_guard_all из плагина MCA 5.2, может кто знает, верхний блок[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, 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[/buspoiler]

я так понял, заставляет стражу кидаться на бандитов, а вот нижний[buspoiler]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

[/buspoiler]

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

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

Если ГГ на улице уже подходил к этому стражнику, то происходит следующее:

Если ГГ отходит от стражника достаточно далеко, не заходя при этом в здания, то стражник удаляется

А если ГГ заходит в здание, то стражник удаляется с вероятностью 1/5.

 

Зачем это надо, не знаю.

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

Вообщем переделывал я этот плагин на свой лад так, чтоб стражники кидались на бандитов всех мастей и вампиров (естественно вампирам я поставил бандитский скрипт, стражникам mca_guard_all), все бы хорошо, вот только почему то стража хлаалу реагирует на скрипт, а имперские ни в какую, зависит ли это только от скрипта или тут в другом проблема?
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

Войти

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

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

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