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

Где ошибка?


Ed_dy

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

Скачал тут плагин со скачками, ипподромом и пр... Называется Horseracing. И вот какую нашёл фигню, в скачках под Бравилом соперники не желают пересекать финишную черту. Т.е. ГГ всегда выиграет, хоть и последний плетется. Я так понимаю чего-то не то со скриптами, или я уже чего-то напортачил. Может кто посмотреть? :1anim_bc: А то я уже половину под 1С сделал... :1anim_ah:

Скачать, попробовать - http://www.tessource.net/files/file.php?id=5689 - оригинал..

А это то, что пока у меня получается - http://slil.ru/23164821

 

Вот этот скрипт -

scriptname AHRMSgoal

 

begin OnTriggerActor player

if AHRMracing01.AHRMraceon == 1

set AHRMracing01.AHRMraceon to 0

set AHRMracing01.AHRMwinner to 1

set AHRMracing01.AHRMplayerwon to AHRMracing01.AHRMplayerwon + 1

if AHRMracing01.AHRMplayerwon >= 2

MessageBox "Race is over, you won!"

endif

setstage AHRMracing01 100

endif

end

 

begin OnTriggerActor AHRMeats1

if AHRMracing01.AHRMraceon == 1

set AHRMracing01.AHRMraceon to 0

set AHRMracing01.AHRMwinner to 2

setstage AHRMracing01 100

if AHRMracing01.AHRMplayerwon >= 2

MessageBox "Race is over. you Lost! Eats-His-Horse won!"

endif

endif

end

 

begin OnTriggerActor AHRMgorba1

if AHRMracing01.AHRMraceon == 1

set AHRMracing01.AHRMraceon to 0

set AHRMracing01.AHRMwinner to 3

setstage AHRMracing01 100

if AHRMracing01.AHRMplayerwon >= 2

MessageBox "Race is over, Gorba-GrowButt WON!"

endif

endif

end

 

begin OnTriggerActor AHRMxun1

if AHRMracing01.AHRMraceon == 1

set AHRMracing01.AHRMraceon to 0

set AHRMracing01.AHRMwinner to 4

setstage AHRMracing01 100

if AHRMracing01.AHRMplayerwon >= 2

MessageBox "Race is over Xun Aere won!"

endif

endif

end

 

begin OnTriggerActor AHRMarell1

if AHRMracing01.AHRMraceon == 1

set AHRMracing01.AHRMraceon to 0

set AHRMracing01.AHRMwinner to 5

setstage AHRMracing01 100

if AHRMracing01.AHRMplayerwon >= 2

MessageBox "Race is over, Arelleus Inthazar won!"

endif

endif

end

 

begin OnTriggerActor AHRMsadd1

if AHRMracing01.AHRMraceon == 1

set AHRMracing01.AHRMraceon to 0

set AHRMracing01.AHRMwinner to 6

setstage AHRMracing01 100

if AHRMracing01.AHRMplayerwon >= 2

MessageBox "Race is over, Mґsaddha won!"

endif

endif

end

 

Немножко неправильно высказался... Соперники пересекают финишную черту, но скрипт об их победе не срабатывает, а вот как только её пересечет ГГ, то срабатывает...

 

Как вылечить этот баг, ума не приложу... Жалко бросать, интересный всё-таки плагинчик.... :1anim_ak:

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

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

  • 1 год спустя...

Scn KyoJournalCustomDateScript

int bInitiate
int bCaps
int bConsole
int iButton
int iStage
int iNumParts

ref pCustomDate
ref pDaysPassed
ref pYear
ref pMonth
ref pDay
ref pDayOfWeek
ref pTime

Begin GameMode

if iStage
	Activate player 1
endif

End

Begin MenuMode

if iStage
	Activate player 1
endif

End

Begin OnActivate

if iStage == 0
	DisableKey 57
	GetButtonPressed
	if bInitiate == 0
		set bInitiate to 1
		set pDaysPassed to KyoJournalExplainDaysPassedSpell
		set pYear to KyoJournalExplainYearSpell
		set pMonth to KyoJournalExplainMonthSpell
		set pDay to KyoJournalExplainDaySpell
		set pDayOfWeek to KyoJournalExplainDayOfWeekSpell
		set pTime to KyoJournalExplainTimeSpell
		set pCustomDate to KyoJournalQuest.pCustomDate
		SetName "<Custom Date>" pCustomDate
	endif
	AppendToName "~" pCustomDate
	set iStage to 1

elseif iStage == 1
	ModName "~|" pCustomDate
	if KyoJournalQuest.bUseUnderscore
		AppendToName "_" pCustomDate
		ModName "<Custom Date>_|<Custom Date>" pCustomDate
	endif
	MessageBoxEx "Here you can combine any parts into a custom date display. You can use any character and any text you'd like. When you need to add a part, be sure to type it correctly (starting and endding with an x). Below is a list of all of the possible part. You must have atleast three parts and xTimex counts as two. %r%n%r%n%r%n%r%n%r%n%r%n%rCurrent custom date: %r%n|[Use custom date]|[Back]", pDaysPassed, pYear, pMonth, pDay, pDayOfWeek, pTime, pCustomDate
	if KyoJournalQuest.bUseUnderscore
		ModName "<Custom Date>|_" pCustomDate
	else
		ModName "<Custom Date>|" pCustomDate
	endif
	AppendToName "~" pCustomDate
	if KyoJournalQuest.bUseUnderscore
		ModName "_~|~" pCustomDate
	endif
	set iStage to 2

elseif iStage == 2
	set iButton to GetButtonPressed + 1
	if iButton == 1
		ModName "~|" pCustomDate
		set iNumParts to (CompareName "xDaysPassedx" pCustomDate) + (CompareName "xYearx" pCustomDate) + (CompareName "xMonthx" pCustomDate) + (CompareName "xDayx" pCustomDate) + (CompareName "xDayOfWeekx" pCustomDate) + (CompareName "xTimex" pCustomDate * 2)
		if iNumParts < 3
			set iStage to 1
			if HasName pCustomDate == 0
				SetName "<Custom Date>" pCustomDate
			endif
			Message "Custom date is too short, it must consist out of atleast three parts. Time notation (xTimex) counts as two."
			if JournalDebug
				PrintC "Custom Date Script - Custom date doesn't consist of enough parts. Only has: %g parts.", iNumParts
			endif
			return
		endif
	;;Use custom date
		set KyoJournalQuest.iDateNotation to 3
		set KyoJournalQuest.iStage to -6
		if JournalDebug
			PrintC "Custom Date Script - Custom date set. It has: %g parts. Format is: %n", iNumParts, pCustomDate
		endif
		set iStage to 0
		set iButton to 0
		EnableKey 57
		return
	elseif iButton == 2
	;;;Back
		ModName "~|" pCustomDate
		set KyoJournalQuest.iStage to -6
		set iStage to 0
		set iButton to 0
		EnableKey 57
		return
	endif

	if OnKeyDown 41
		set bConsole to bConsole == 0
	endif
	if bConsole
		return
	endif

	set bCaps to 0
	if IsKeyPressed3 42 || IsKeyPressed3 54
		set bCaps to 1
	endif

	if OnKeyDown 16
		if bCaps
			ModName "~|Й~" pCustomDate
		else
			ModName "~|й~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 17
		if bCaps
			ModName "~|Ц~" pCustomDate
		else
			ModName "~|ц~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 18
		if bCaps
			ModName "~|У~" pCustomDate
		else
			ModName "~|у~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 19
		if bCaps
			ModName "~|К~" pCustomDate
		else
			ModName "~|к~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 20
		if bCaps
			ModName "~|Е~" pCustomDate
		else
			ModName "~|Е~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 21
		if bCaps
			ModName "~|Н~" pCustomDate
		else
			ModName "~|н~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 22
		if bCaps
			ModName "~|Г~" pCustomDate
		else
			ModName "~|г~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 23
		if bCaps
			ModName "~|Ш~" pCustomDate
		else
			ModName "~|ш~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 24
		if bCaps
			ModName "~|Щ~" pCustomDate
		else
			ModName "~|щ~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 25
		if bCaps
			ModName "~|З~" pCustomDate
		else
			ModName "~|з~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 26
		if bCaps
			ModName "~|Х~" pCustomDate
		else
			ModName "~|х~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 27
		if bCaps
			ModName "~|Ъ~" pCustomDate
		else
			ModName "~|ъ~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 30
		if bCaps
			ModName "~|Ф~" pCustomDate
		else
			ModName "~|ф~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 31
		if bCaps
			ModName "~|Ы~" pCustomDate
		else
			ModName "~|ы~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 32
		if bCaps
			ModName "~|В~" pCustomDate
		else
			ModName "~|в~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 33
		if bCaps
			ModName "~|А~" pCustomDate
		else
			ModName "~|а~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 34
		if bCaps
			ModName "~|П~" pCustomDate
		else
			ModName "~|п~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 35
		if bCaps
			ModName "~|Р~" pCustomDate
		else
			ModName "~|р~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 36
		if bCaps
			ModName "~|О~" pCustomDate
		else
			ModName "~|о~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 37
		if bCaps
			ModName "~|Л~" pCustomDate
		else
			ModName "~|л~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 38
		if bCaps
			ModName "~|Д~" pCustomDate
		else
			ModName "~|д~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 39
		if bCaps
			ModName "~|Ж~" pCustomDate
		else
			ModName "~|ж~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 40
		if bCaps
			ModName "~|Э~" pCustomDate
		else
			ModName "~|э~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 44
		if bCaps
			ModName "~|Я~" pCustomDate
		else
			ModName "~|я~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 45
		if bCaps
			ModName "~|Ч~" pCustomDate
		else
			ModName "~|ч~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 46
		if bCaps
			ModName "~|С~" pCustomDate
		else
			ModName "~|с~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 47
		if bCaps
			ModName "~|М~" pCustomDate
		else
			ModName "~|м~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 48
		if bCaps
			ModName "~|И~" pCustomDate
		else
			ModName "~|и~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 49
		if bCaps
			ModName "~|Т~" pCustomDate
		else
			ModName "~|т~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 50
		if bCaps
			ModName "~|Ь~" pCustomDate
		else
			ModName "~|ь~" pCustomDate
		endif
		set iStage to 1

	elseif OnKeyDown 2
		if bCaps
			ModName "~|!~" pCustomDate
		else
			ModName "~|1~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 3
		if bCaps
			ModName "~|@~" pCustomDate
		else
			ModName "~|2~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 4
		if bCaps
			ModName "~|#~" pCustomDate
		else
			ModName "~|3~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 5
		if bCaps
			ModName "~|$~" pCustomDate
		else
			ModName "~|4~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 6
		if bCaps
			ModName "~|%~" pCustomDate
		else
			ModName "~|5~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 7
		if bCaps
			ModName "~|^~" pCustomDate
		else
			ModName "~|6~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 8
		if bCaps
			ModName "~|&~" pCustomDate
		else
			ModName "~|7~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 9
		if bCaps
			ModName "~|*~" pCustomDate
		else
			ModName "~|8~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 10
		if bCaps
			ModName "~|(~" pCustomDate
		else
			ModName "~|9~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 11
		if bCaps
			ModName "~|)~" pCustomDate
		else
			ModName "~|0~" pCustomDate
		endif
		set iStage to 1


	elseif OnKeyDown 12
		if bCaps
			ModName "~|_~" pCustomDate
		else
			ModName "~|-~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 13
		if bCaps
			ModName "~|+~" pCustomDate
		else
			ModName "~|=~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 43
		ModName "~|\~" pCustomDate
		set iStage to 1
	elseif OnKeyDown 51
		if bCaps
			ModName "~|Б~" pCustomDate
		else
			ModName "~|б~" pCustomDate
		endif
		set iStage to 1	
	elseif OnKeyDown 52
		if bCaps
			ModName "~|Ю~" pCustomDate
		else
			ModName "~|ю~" pCustomDate
		endif
		set iStage to 1
	elseif OnKeyDown 53
		if bCaps
			ModName "~|,~" pCustomDate   
		else
			ModName "~|.~" pCustomDate
		endif
		set iStage to 1

	elseif OnKeyDown 57
		ModName "~| ~" pCustomDate
		set iStage to 1
	elseif OnKeyDown 14; Backspace
		Label 112
		ModName "q~|" pCustomDate
		ModName "w~|" pCustomDate
		ModName "e~|" pCustomDate
		ModName "r~|" pCustomDate
		ModName "t~|" pCustomDate
		ModName "y~|" pCustomDate
		ModName "u~|" pCustomDate
		ModName "i~|" pCustomDate
		ModName "o~|" pCustomDate
		ModName "p~|" pCustomDate
		ModName "a~|" pCustomDate
		ModName "s~|" pCustomDate
		ModName "d~|" pCustomDate
		ModName "f~|" pCustomDate
		ModName "g~|" pCustomDate
		ModName "h~|" pCustomDate
		ModName "j~|" pCustomDate
		ModName "k~|" pCustomDate
		ModName "l~|" pCustomDate
		ModName "z~|" pCustomDate
		ModName "x~|" pCustomDate
		ModName "c~|" pCustomDate
		ModName "v~|" pCustomDate
		ModName "b~|" pCustomDate
		ModName "n~|" pCustomDate
		ModName "m~|" pCustomDate
		ModName "1~|" pCustomDate
		ModName "2~|" pCustomDate
		ModName "3~|" pCustomDate
		ModName "4~|" pCustomDate
		ModName "5~|" pCustomDate
		ModName "6~|" pCustomDate
		ModName "7~|" pCustomDate
		ModName "8~|" pCustomDate
		ModName "9~|" pCustomDate
		ModName "0~|" pCustomDate
		ModName "!~|" pCustomDate
		ModName "@~|" pCustomDate
		ModName "#~|" pCustomDate
		ModName "$~|" pCustomDate
		ModName "%~|" pCustomDate
		ModName "^~|" pCustomDate
		ModName "&~|" pCustomDate
		ModName "*~|" pCustomDate
		ModName "(~|" pCustomDate
		ModName ")~|" pCustomDate
		ModName "-~|" pCustomDate
		ModName "_~|" pCustomDate
		ModName "=~|" pCustomDate
		ModName "+~|" pCustomDate
		ModName "[~|" pCustomDate
		ModName "{~|" pCustomDate
		ModName "]~|" pCustomDate
		ModName "}~|" pCustomDate
		ModName ";~|" pCustomDate
		ModName ":~|" pCustomDate
		ModName "'~|" pCustomDate
		ModName ""~|" pCustomDate
		ModName ">~|" pCustomDate
		ModName "<~|" pCustomDate
		ModName ".~|" pCustomDate
		ModName ",~|" pCustomDate
		ModName "/~|" pCustomDate
		ModName "\~|" pCustomDate
		ModName "?~|" pCustomDate

		ModName " ~|" pCustomDate
		ModName "~|" pCustomDate
		if HasName pCustomDate == 0
			SetName "<Custom Date>" pCustomDate
		else
			AppendToName "~" pCustomDate
		endif

		if IsKeyPressed3 29 || IsKeyPressed3 157
			if CompareName " ~" pCustomDate != 1
				if CompareName "<Custom Date>" pCustomDate != 1
					Goto 112
				endif
			endif
		
		endif
		set iStage to 1
	endif

elseif iStage == 3
	ModName "~|" pCustomDate
	if HasName pCustomDate == 0
		SetName "<Custom Date>" pCustomDate
	else
		set iStage to -1
		return
	endif
	set KyoJournalQuest.iStage to 2
	set iStage to 0
	set iButton to 0
elseif iStage == 4
	set KyoJournalQuest.iStage to 2
	set iStage to 0
	set iButton to 0
	if JournalDebug
		PrintC "Custom Date Script -  Go back."
	endif
endif

End

 

Это OBSE скрипт из рабочего плагина, который дает возможность вести свои записи в игре. Я его хотел руссифицировать, но этот скрипт не хочет перекомпилироваться, даже будучи неизмененным. Выдает ошибку в строке с первым MessageBoxEx.

Ссылка на плагин http://tesnexus.com/downloads/file.php?id=15294

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

Это OBSE скрипт из рабочего плагина, который дает возможность вести свои записи в игре. Я его хотел руссифицировать, но этот скрипт не хочет перекомпилироваться, даже будучи неизмененным. Выдает ошибку в строке с первым MessageBoxEx.

А ты подключаешь ОБСЕ когда работаешь в КС с плагином, под ОБСЕ?

Редактор откажется компилировать и сохранять скрипт, если не знает той или иной функции, вводимой ОБСЕ.

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

Конечно дурацкий вопрос:

Но может для данного скрипта нужна последняя версия OBSE?

Или надо к OBSE какой плагин расширяющий подключить?

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

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

 

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

В конечном итоге было выяснено, что вместе с OBSE надо запускать к нему дополнение (название дополнения не помню).

Лучше наверное на сайте OBSE глянуть, там уж точно что-то должно упоминаться, я так думаю.

 

 

Нашел кажись.

Вот это возможно надо: http://tesnexus.com/downloads/file.php?id=11666

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

плагин не запускался с OBSE.

Какраз запускается и работает, только в конструкторе не хочет компилится. Версия конструктора - 1.2.0.404.

 

Так все забейте проблема решена тупо установкой OBSE версии 0.0.14.4.

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

  • 6 месяцев спустя...
Как скриптом неписю SingsLikeThunder (не SingsLikeThunderRef) добавить LevelItem LL0LootClothingGauntletsUpper75, не затрагивая этого непися в конструкторе? Изменено пользователем CemKey
Ссылка на комментарий
Поделиться на другие сайты

а в игровом мире твой второй непись есть? проблема ж явно в не в скрипте, а в самом неписе. Вообще что такое SingsLikeThunderRef, оно гдето обьявлено ?

 

быстрый ты) понял сам - обьясни другим

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

Посто у SingsLikeThunder нет уникальной копии SingsLikeThunderRef в мире, в отлтчие от Volanaro (соответственно VolanaroRef). Но не суть важно. Важно другое возможно ли скриптом добавить неписю в инвентарь LevelItem. Обычным additem'ом не добавить - ошибку выдает.
Ссылка на комментарий
Поделиться на другие сайты

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

Кто-нибудь мне может оъяснить, почему этот скрипт просчитывается только до строчки MessageBox "Weapon 1 (Топор)" "ОК" и дальше ни в какую не хочет работать.... :'-( Бросаешь топор - счетает(и выводит сообщение) что оружия нет, если его действительно не было кроме топора, а если есть что-то еще, то скрипт не просчитывается вовсе... :scratch: Так же скрипт на просчитывается, если в первую очередь взял не топор, а лук, например... :crazy: В чем ошибка? :dontknow:

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

 

Scriptname 1LTWeapons01

short LTState
short LTWeapon

Begin OnActivate

if LTState == 0
if Player.GetItemCount 1LTAxe == 0
	if Player.GetItemCount 1LTBow == 0
		if Player.GetItemCount 1LTSword == 0
;				set LTWeapon to 0
			MessageBox "Weapon 0 (нет оружия)" "ОК"
		endif
	endif
elseif Player.GetItemCount 1LTAxe >= 1
	if Player.GetItemCount 1LTBow == 0
		if Player.GetItemCount 1LTSword == 0
;				set LTWeapon to 1
			MessageBox "Weapon 1 (Топор)" "ОК"
		endif
	endif
elseif Player.GetItemCount 1LTAxe == 0
	if Player.GetItemCount 1LTBow >= 1
		if Player.GetItemCount 1LTSword == 0
;				set LTWeapon to 2
			MessageBox "Weapon 2 (Лук)" "ОК"
		endif
	endif
elseif Player.GetItemCount 1LTAxe == 0
	if Player.GetItemCount 1LTBow == 0
		if Player.GetItemCount 1LTSword >= 1
;				set LTWeapon to 3
			MessageBox "Weapon 3 (Меч)" "ОК"
		endif
	endif
elseif Player.GetItemCount 1LTAxe >= 1
	if Player.GetItemCount 1LTBow >= 1
		if Player.GetItemCount 1LTSword == 0
;				set LTWeapon to 12
			MessageBox "Weapon 12 (Топор и Лук)" "ОК"
		endif
	endif
elseif Player.GetitemCount 1LTAxe >= 1
	if Player.GetItemCount 1LTBow == 0
		if Player.GetItemCount 1LTSword >=1
;				set LTWeapon to 13
			MessageBox "Weapon 13 (Топор и Меч)" "ОК"
		endif
	endif
elseif Player.GetItemCount 1LTAxe == 0
	if Player.GetItemCount 1LTBow >= 1
		if Player.GetItemCount 1LTSword >= 1
;				set LTWeapon to 23
			MessageBox "Weapon 23 (Лук и Меч)" "ОК"
		endif
	endif
elseif Player.GetItemCount 1LTAxe >= 1
	if Player.GetItemCount 1LTBow >= 1
		if Player.GetItemCount 1LTSword >= 1
;				set LTWeapon to 123
			MessageBox "Weapon 123 (Все Оружие)" "ОК"
		endif
	endif
endif
endif

End

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

Спасибо! Помогло! Переписал вот так:

Scriptname 1LTWeapons01

short LTState
short LTWeapon

Begin OnActivate

if LTState == 0
if Player.GetItemCount 1LTAxe == 0
	if Player.GetItemCount 1LTBow == 0
		if Player.GetItemCount 1LTSword == 0
;				set LTWeapon to 0
			MessageBox "Weapon 0 (нет оружия)" "ОК"
		endif
	endif
endif

if Player.GetItemCount 1LTAxe >= 1
	if Player.GetItemCount 1LTBow == 0
		if Player.GetItemCount 1LTSword == 0
;				set LTWeapon to 1
			MessageBox "Weapon 1 (Топор)" "ОК"
		endif
	endif
endif

if Player.GetItemCount 1LTAxe == 0
	if Player.GetItemCount 1LTBow >= 1
		if Player.GetItemCount 1LTSword == 0
;				set LTWeapon to 2
			MessageBox "Weapon 2 (Лук)" "ОК"
		endif
	endif
endif

if Player.GetItemCount 1LTAxe == 0
	if Player.GetItemCount 1LTBow == 0
		if Player.GetItemCount 1LTSword >= 1
;				set LTWeapon to 3
			MessageBox "Weapon 3 (Меч)" "ОК"
		endif
	endif
endif

if Player.GetItemCount 1LTAxe >= 1
	if Player.GetItemCount 1LTBow >= 1
		if Player.GetItemCount 1LTSword == 0
;				set LTWeapon to 12
			MessageBox "Weapon 12 (Топор и Лук)" "ОК"
		endif
	endif
endif

if Player.GetitemCount 1LTAxe >= 1
	if Player.GetItemCount 1LTBow == 0
		if Player.GetItemCount 1LTSword >=1
;				set LTWeapon to 13
			MessageBox "Weapon 13 (Топор и Меч)" "ОК"
		endif
	endif
endif

if Player.GetItemCount 1LTAxe == 0
	if Player.GetItemCount 1LTBow >= 1
		if Player.GetItemCount 1LTSword >= 1
;				set LTWeapon to 23
			MessageBox "Weapon 23 (Лук и Меч)" "ОК"
		endif
	endif
endif

if Player.GetItemCount 1LTAxe >= 1
	if Player.GetItemCount 1LTBow >= 1
		if Player.GetItemCount 1LTSword >= 1
;				set LTWeapon to 123
			MessageBox "Weapon 123 (Все Оружие)" "ОК"
		endif
	endif
endif
endif

End

Все работает как часы! :yahoo: :bravo:

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

Скрипт висит на активаторе. Должен при активации определять наличие ингредиента у игрока, его количество, удалять данное колличество ингредиента у игрока, затем пихать этот ингредиент в контейнер, в том количестве, в котором этот ингредиент изначально присутствовал у игрока. Контейнер присутствует в игровом мире, но скрипт при компилляции выдает ошибку по поводу ссылок на контейнер. Опять же вопрос: Где ошибка?

 

scn LTIngredientSorter

short state
short button
long tempCount

Begin OnActivate
if (state == 0 && IsActionRef player == 1)
	MessageBox "Сортировать ингредиенты?", "Да", "Нет"
	set state to 1
endif
End

Begin GameMode

if (state == 0)
	return; Early return, nothing to do in most cases this script runs
endif

set button to GetButtonPressed
if (button == -1)
	return
elseif (button == 1) ; No
	set state to 0
	return
endif

  ; Following button == 0, Yes
;Амброзия
if (Player.GetItemCount "Ambrosia" >= 1)
	Set tempCount  to Player.GetItemCount "Ambrosia"
	Player.RemoveItem "Ambrosia" tempCount
	LT1IngredientUrn001Ref.AddItem "Ambrosia" tempCount
endif
set state to 0

End ; GameMode

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

to lost81:

В свойствах контейнера галка стоит от том что ссылка на объект постоянна (устойчива)?

 

И с сылкой, и без таковой никакокго эффекта, не хочет компиллиться и все тут!

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

Ну раз не получается, то ты:

LT1IngredientUrn001Ref.AddItem "Ambrosia" tempCount
замени на
 set LT1IngredientUrn_Add_Ambrosia_Count to ( LT1IngredientUrn_Add_Ambrosia_Count + tempCount )

 

А налокальном скрипте контейнера повесь:

...
Если player достаточно близко к контейнеру, то
AddItem "Ambrosia" LT1IngredientUrn_Add_Ambrosia_Count; Из глобальной переменной получаем коль-во
set LT1IngredientUrn_Add_Ambrosia_Count to 0
...

 

 

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

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

Ну раз не получается, то ты: замени на
 set LT1IngredientUrn_Add_Ambrosia_Count to ( LT1IngredientUrn_Add_Ambrosia_Count + tempCount )

 

А налокальном скрипте контейнера повесь:

...
Если player достаточно близко к контейнеру, то
AddItem "Ambrosia" LT1IngredientUrn_Add_Ambrosia_Count; Из глобальной переменной получаем коль-во
set LT1IngredientUrn_Add_Ambrosia_Count to 0
...

 

 

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

 

Обязательно попробую, о результатах отпишусь, спасибо за конкретный ответ! ))

 

Итак, отписываюсь... Скрипт висит на активаторе, при активации предоставляется выбор: распихать определенные ингредиенты в соответствующем количестве в определенные контейнеры, либо забрать эти ингредиенты в определенном количестве из соответствующих контейнеров. Судя по всему в CS версии 1.2.404 приличные косяки! Первоначальный скрипт - это кусок РАБОТАЮЩЕГО скрипта т.е. он нормально компиллировался!!!(видимо в версии 1.0.303) В версии 1.2.404 желаемого результата мне удалось добиться только с помощью глобальных переменных(типа Short). приведу получившиеся скрипты на примере 2-х контейнеров и 2-х ингредиентов:

 

scn 1LTIngredientSorter

;скрипт вешается на активатор
;объявим 4 глобальных переменных типа Short: LTIngredPlayer1, LTIngredPlayer2, LTIngredCont1, LTIngredCont2

short state
short button
short LTIngred

Begin OnActivate
if (state == 0 && IsActionRef player == 1)
	MessageBox "Сортировать ингредиенты?", "Разложить", "Забрать", "Нет"
	set state to 1
endif
End

Begin GameMode

set button to GetButtonPressed
	if (button == -1)
		return
	elseif (button == 0)
		if (Player.GetItemCount "Ambrosia" > 0)
			Set LTIngredPlayer1 to 1
		endif

		if (Player.GetItemCount "Orange" > 0)
			Set LTIngredPlayer2 to 1
		endif
set state to 0
	elseif (button == 1)
		if LTIngredCont1 != 0
			Player.AddItem "Ambrosia" LTIngredCont1
			Set LTIngredCont1 to 0
		endif

		if LTIngredCont2 != 0
			Player.AddItem "Orange" LTIngredCont2
			Set LTIngredCont2 to 0
		endif

		Set state to 0

	elseif (button == 2)
		set state to 0
	endif
endif


End; GameMode

 

Следующие 2 скрипта вешаются на контейнеры

 

Scn 1LTIngredientSorterCont001

Short LTIngred
Short LTIngredRemove
Short LTRemoveCount

Begin MenuMode

if GetItemCount "Ambrosia" != 0
	Set LTIngredRemove to 1
endif

end

Begin GameMode

if LTIngredPlayer1 == 1
	Set LTIngred to Player.GetItemCount "Ambrosia"
	Player.RemoveItem "Ambrosia" LTIngred
	AddItem "Ambrosia" LTIngred
	Set LTIngredPlayer1 to 0
endif

if LTIngredRemove == 1
	Set LTIngredCont1 to (GetItemCount "Ambrosia")
	Set LTRemoveCount to (GetItemCount "Ambrosia")
	Set LTIngredRemove to 2
endif

if LTIngredRemove == 2
	if LTIngredCont1 == 0
		if GetItemCount "Ambrosia" != 0
			RemoveItem "Ambrosia" LTRemoveCount
			Set LTIngredRemove to 0
		endif
	endif
endif
end

 

И второй срипт на 2-й контейнер

 

Scn 1LTIngredientSorterCont002

Short LTIngred
Short LTIngredRemove
Short LTRemoveCount

Begin MenuMode

if GetItemCount "Orange" != 0
	Set LTIngredRemove to 1
endif

end

Begin GameMode

if LTIngredPlayer2 == 1
	Set LTIngred to Player.GetItemCount "Orange"
	Player.RemoveItem "Orange" LTIngred
	AddItem "Orange" LTIngred
	Set LTIngredPlayer2 to 0
endif

if LTIngredRemove == 1
	Set LTIngredCont2 to (GetItemCount "Orange")
	Set LTRemoveCount to (GetItemCount "Orange")
	Set LTIngredRemove to 2
endif

if LTIngredRemove == 2
	if LTIngredCont2 == 0
		if GetItemCount "Orange" != 0
			RemoveItem "Orange" LTRemoveCount
			Set LTIngredRemove to 0
		endif
	endif
endif
end

 

Неудобство заключается в том, что для стандартных Обломовских ингредиентов придется объявлять около 300 глобальных переменных и писать около 150 однотипных скриптов для контейнеров!!!! Если у кого-то есть какие-то размышления по этому поводу, милости прошу в тему!

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

А... У тебя много контейнеров. Это плохо. Тебе явно стоит вернутся к первоначальному варианту... Другого пути нет, если конечно ты не хочешь делать добрую сотню скриптов (если будешь так делать, то советую использовать что-то типа замены в блокноте (для автоматизации)). Про ссылки TES IV попробуй поискать в OSFM или OSFD или как его там... Должны же они в TES IV работать, просто что-то не так делаешь.
Ссылка на комментарий
Поделиться на другие сайты

А... У тебя много контейнеров. Это плохо. Тебе явно стоит вернутся к первоначальному варианту... Другого пути нет, если конечно ты не хочешь делать добрую сотню скриптов (если будешь так делать, то советую использовать что-то типа замены в блокноте (для автоматизации)). Про ссылки TES IV попробуй поискать в OSFM или OSFD или как его там... Должны же они в TES IV работать, просто что-то не так делаешь.

Вот в том-то и дело, что пиасть прийдется не одну сотню скриптов, причем однотипных, и это только для чистого Облома, а если учесть еще и Острова..... Это-раз, второе, помню как красной строкой еще с ТЕС 3 проходило: если можешь обойтись локальным скриптом, не используй глобальный!... На одном из форумов наковырял, как можно запустить версию 1.0.303 не переустанавливая все и вся... попробую скомпиллировать скрипт там, так как при работающих ссылках это уложится в один единственный скрипт строк на 800, не больше, иначе сортировка ингредиентов из, довольно, посредственной работы превратится в титанический труд, отнюдь не прибавляющий FPS... А тот превоначальный вариант РАБОЧИЙ, единственное отличие от моей задумки в том, что все ингредиенты брисались в один контейнер, и из него же забирались... один скрипт, висящий на активаторе... :crazy:

 

А вообще, большое спасибо за совет! Как бы там ни было, а худо-бедно необходимого результата я все же добился, пусть и, довольно, корявым способом... ))

 

 

УРА! Свершилось! Скрипт скомпилился! В версии 1.2.404!!!! Нашел, где у меня косяк был!!!! Все просто до идиотизма: для того, чтобы работала Ref-ссылка в скрипте в игровой ячейске с этим объектом нужно открыть окно Reference(двойной клик на объекте) и в поле Reference Editor ID вписать ту самую Ref, которая потом будет использоваться в скрипте! И вся любовь!!! (На всякий случай поставил галочку Persistent Peferefce и во вскладке Ownership в поле NPC - Player)

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

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

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

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

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

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

Войти

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

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

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