Ed_dy Опубликовано 30 сентября, 2006 Жалоба Поделиться Опубликовано 30 сентября, 2006 Скачал тут плагин со скачками, ипподромом и пр... Называется Horseracing. И вот какую нашёл фигню, в скачках под Бравилом соперники не желают пересекать финишную черту. Т.е. ГГ всегда выиграет, хоть и последний плетется. Я так понимаю чего-то не то со скриптами, или я уже чего-то напортачил. Может кто посмотреть? :1anim_bc: А то я уже половину под 1С сделал... :1anim_ah: Скачать, попробовать - http://www.tessource.net/files/file.php?id=5689 - оригинал..А это то, что пока у меня получается - http://slil.ru/23164821 Вот этот скрипт - scriptname AHRMSgoal begin OnTriggerActor playerif AHRMracing01.AHRMraceon == 1set AHRMracing01.AHRMraceon to 0set AHRMracing01.AHRMwinner to 1set AHRMracing01.AHRMplayerwon to AHRMracing01.AHRMplayerwon + 1if AHRMracing01.AHRMplayerwon >= 2MessageBox "Race is over, you won!"endifsetstage AHRMracing01 100endifend begin OnTriggerActor AHRMeats1if AHRMracing01.AHRMraceon == 1set AHRMracing01.AHRMraceon to 0set AHRMracing01.AHRMwinner to 2setstage AHRMracing01 100if AHRMracing01.AHRMplayerwon >= 2MessageBox "Race is over. you Lost! Eats-His-Horse won!"endifendifend begin OnTriggerActor AHRMgorba1if AHRMracing01.AHRMraceon == 1set AHRMracing01.AHRMraceon to 0set AHRMracing01.AHRMwinner to 3setstage AHRMracing01 100if AHRMracing01.AHRMplayerwon >= 2MessageBox "Race is over, Gorba-GrowButt WON!"endifendifend begin OnTriggerActor AHRMxun1if AHRMracing01.AHRMraceon == 1set AHRMracing01.AHRMraceon to 0set AHRMracing01.AHRMwinner to 4setstage AHRMracing01 100if AHRMracing01.AHRMplayerwon >= 2MessageBox "Race is over Xun Aere won!"endifendifend begin OnTriggerActor AHRMarell1if AHRMracing01.AHRMraceon == 1set AHRMracing01.AHRMraceon to 0set AHRMracing01.AHRMwinner to 5setstage AHRMracing01 100if AHRMracing01.AHRMplayerwon >= 2MessageBox "Race is over, Arelleus Inthazar won!"endifendifend begin OnTriggerActor AHRMsadd1if AHRMracing01.AHRMraceon == 1set AHRMracing01.AHRMraceon to 0set AHRMracing01.AHRMwinner to 6setstage AHRMracing01 100if AHRMracing01.AHRMplayerwon >= 2MessageBox "Race is over, Mґsaddha won!"endifendifend Немножко неправильно высказался... Соперники пересекают финишную черту, но скрипт об их победе не срабатывает, а вот как только её пересечет ГГ, то срабатывает... Как вылечить этот баг, ума не приложу... Жалко бросать, интересный всё-таки плагинчик.... :1anim_ak: Ссылка на комментарий Поделиться на другие сайты Поделиться
Boblen Опубликовано 30 сентября, 2006 Жалоба Поделиться Опубликовано 30 сентября, 2006 Гляну сам плаг и скажу... Интересная штука... Ссылка на комментарий Поделиться на другие сайты Поделиться
Ed_dy Опубликовано 7 октября, 2006 Автор Жалоба Поделиться Опубликовано 7 октября, 2006 =Boblen=И что? Ссылка на комментарий Поделиться на другие сайты Поделиться
Boblen Опубликовано 7 октября, 2006 Жалоба Поделиться Опубликовано 7 октября, 2006 Скрипт какой-то мудреный... Ты, кстати, не тот смотришь, нужно 2 скрипт смотреть, реально он на воротах висит... Я пока проверить плаг не могу - Обливского диска нет... Так-то, вроде, ошибок нет, но, поторюсь, очень мудрено написано... Ссылка на комментарий Поделиться на другие сайты Поделиться
CemKey Опубликовано 19 февраля, 2008 Жалоба Поделиться Опубликовано 19 февраля, 2008 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 Ссылка на комментарий Поделиться на другие сайты Поделиться
TJ Опубликовано 19 февраля, 2008 Жалоба Поделиться Опубликовано 19 февраля, 2008 (изменено) Это OBSE скрипт из рабочего плагина, который дает возможность вести свои записи в игре. Я его хотел руссифицировать, но этот скрипт не хочет перекомпилироваться, даже будучи неизмененным. Выдает ошибку в строке с первым MessageBoxEx.А ты подключаешь ОБСЕ когда работаешь в КС с плагином, под ОБСЕ?Редактор откажется компилировать и сохранять скрипт, если не знает той или иной функции, вводимой ОБСЕ. Изменено 19 февраля, 2008 пользователем TJ Ссылка на комментарий Поделиться на другие сайты Поделиться
CemKey Опубликовано 19 февраля, 2008 Жалоба Поделиться Опубликовано 19 февраля, 2008 Естественно загружаю конструктор через OBSE. Ссылка на комментарий Поделиться на другие сайты Поделиться
Visman Опубликовано 20 февраля, 2008 Жалоба Поделиться Опубликовано 20 февраля, 2008 Конечно дурацкий вопрос:Но может для данного скрипта нужна последняя версия OBSE?Или надо к OBSE какой плагин расширяющий подключить? Ссылка на комментарий Поделиться на другие сайты Поделиться
CemKey Опубликовано 20 февраля, 2008 Жалоба Поделиться Опубликовано 20 февраля, 2008 Да последняя - 0.0.14.3.Какой еще расширяющий плагин? Ссылка на комментарий Поделиться на другие сайты Поделиться
Visman Опубликовано 20 февраля, 2008 Жалоба Поделиться Опубликовано 20 февраля, 2008 (изменено) Описание к плагину из которого скрипт вытащен надо внимательно прочитать, может там что указано. Про расширяющий плагин точно не скажу, но на одном из форумов видел обсуждение где тоже плагин не запускался с OBSE.В конечном итоге было выяснено, что вместе с OBSE надо запускать к нему дополнение (название дополнения не помню).Лучше наверное на сайте OBSE глянуть, там уж точно что-то должно упоминаться, я так думаю. Нашел кажись.Вот это возможно надо: http://tesnexus.com/downloads/file.php?id=11666 Изменено 20 февраля, 2008 пользователем Visman Ссылка на комментарий Поделиться на другие сайты Поделиться
CemKey Опубликовано 20 февраля, 2008 Жалоба Поделиться Опубликовано 20 февраля, 2008 (изменено) плагин не запускался с OBSE.Какраз запускается и работает, только в конструкторе не хочет компилится. Версия конструктора - 1.2.0.404. Так все забейте проблема решена тупо установкой OBSE версии 0.0.14.4. Изменено 20 февраля, 2008 пользователем CemKey Ссылка на комментарий Поделиться на другие сайты Поделиться
CemKey Опубликовано 5 сентября, 2008 Жалоба Поделиться Опубликовано 5 сентября, 2008 (изменено) Как скриптом неписю SingsLikeThunder (не SingsLikeThunderRef) добавить LevelItem LL0LootClothingGauntletsUpper75, не затрагивая этого непися в конструкторе? Изменено 5 сентября, 2008 пользователем CemKey Ссылка на комментарий Поделиться на другие сайты Поделиться
Владимир Опубликовано 5 сентября, 2008 Жалоба Поделиться Опубликовано 5 сентября, 2008 а в игровом мире твой второй непись есть? проблема ж явно в не в скрипте, а в самом неписе. Вообще что такое SingsLikeThunderRef, оно гдето обьявлено ? быстрый ты) понял сам - обьясни другим Ссылка на комментарий Поделиться на другие сайты Поделиться
CemKey Опубликовано 5 сентября, 2008 Жалоба Поделиться Опубликовано 5 сентября, 2008 Посто у SingsLikeThunder нет уникальной копии SingsLikeThunderRef в мире, в отлтчие от Volanaro (соответственно VolanaroRef). Но не суть важно. Важно другое возможно ли скриптом добавить неписю в инвентарь LevelItem. Обычным additem'ом не добавить - ошибку выдает. Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 30 января, 2009 Жалоба Поделиться Опубликовано 30 января, 2009 Кто-нибудь мне может оъяснить, почему этот скрипт просчитывается только до строчки MessageBox "Weapon 1 (Топор)" "ОК" и дальше ни в какую не хочет работать.... :'-( Бросаешь топор - счетает(и выводит сообщение) что оружия нет, если его действительно не было кроме топора, а если есть что-то еще, то скрипт не просчитывается вовсе... Так же скрипт на просчитывается, если в первую очередь взял не топор, а лук, например... В чем ошибка? Скрипт локальный, висит на активаторе, должен проверять наличие оределенных предметов у игрока и, в зависимости от этого наличия, выводить на экран соответствующие сообщения... До тупого просто, но не работает.......... 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 Ссылка на комментарий Поделиться на другие сайты Поделиться
laMer007 Опубликовано 30 января, 2009 Жалоба Поделиться Опубликовано 30 января, 2009 У тебя elseif относится только к одному if c топорм, а по сему дальше и не работает. Нужно переписовать. Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 30 января, 2009 Жалоба Поделиться Опубликовано 30 января, 2009 Спасибо! Помогло! Переписал вот так: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Все работает как часы! Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 3 февраля, 2009 Жалоба Поделиться Опубликовано 3 февраля, 2009 Скрипт висит на активаторе. Должен при активации определять наличие ингредиента у игрока, его количество, удалять данное колличество ингредиента у игрока, затем пихать этот ингредиент в контейнер, в том количестве, в котором этот ингредиент изначально присутствовал у игрока. Контейнер присутствует в игровом мире, но скрипт при компилляции выдает ошибку по поводу ссылок на контейнер. Опять же вопрос: Где ошибка? 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 Ссылка на комментарий Поделиться на другие сайты Поделиться
Visman Опубликовано 3 февраля, 2009 Жалоба Поделиться Опубликовано 3 февраля, 2009 to lost81:В свойствах контейнера галка стоит от том что ссылка на объект постоянна (устойчива)? Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 3 февраля, 2009 Жалоба Поделиться Опубликовано 3 февраля, 2009 to lost81:В свойствах контейнера галка стоит от том что ссылка на объект постоянна (устойчива)? И с сылкой, и без таковой никакокго эффекта, не хочет компиллиться и все тут! Ссылка на комментарий Поделиться на другие сайты Поделиться
laMer007 Опубликовано 4 февраля, 2009 Жалоба Поделиться Опубликовано 4 февраля, 2009 Ну раз не получается, то ты: 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". Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 6 февраля, 2009 Жалоба Поделиться Опубликовано 6 февраля, 2009 (изменено) Ну раз не получается, то ты: замени на 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 однотипных скриптов для контейнеров!!!! Если у кого-то есть какие-то размышления по этому поводу, милости прошу в тему! Изменено 7 февраля, 2009 пользователем lost81 Ссылка на комментарий Поделиться на другие сайты Поделиться
laMer007 Опубликовано 8 февраля, 2009 Жалоба Поделиться Опубликовано 8 февраля, 2009 А... У тебя много контейнеров. Это плохо. Тебе явно стоит вернутся к первоначальному варианту... Другого пути нет, если конечно ты не хочешь делать добрую сотню скриптов (если будешь так делать, то советую использовать что-то типа замены в блокноте (для автоматизации)). Про ссылки TES IV попробуй поискать в OSFM или OSFD или как его там... Должны же они в TES IV работать, просто что-то не так делаешь. Ссылка на комментарий Поделиться на другие сайты Поделиться
lost81 Опубликовано 9 февраля, 2009 Жалоба Поделиться Опубликовано 9 февраля, 2009 (изменено) А... У тебя много контейнеров. Это плохо. Тебе явно стоит вернутся к первоначальному варианту... Другого пути нет, если конечно ты не хочешь делать добрую сотню скриптов (если будешь так делать, то советую использовать что-то типа замены в блокноте (для автоматизации)). Про ссылки TES IV попробуй поискать в OSFM или OSFD или как его там... Должны же они в TES IV работать, просто что-то не так делаешь. Вот в том-то и дело, что пиасть прийдется не одну сотню скриптов, причем однотипных, и это только для чистого Облома, а если учесть еще и Острова..... Это-раз, второе, помню как красной строкой еще с ТЕС 3 проходило: если можешь обойтись локальным скриптом, не используй глобальный!... На одном из форумов наковырял, как можно запустить версию 1.0.303 не переустанавливая все и вся... попробую скомпиллировать скрипт там, так как при работающих ссылках это уложится в один единственный скрипт строк на 800, не больше, иначе сортировка ингредиентов из, довольно, посредственной работы превратится в титанический труд, отнюдь не прибавляющий FPS... А тот превоначальный вариант РАБОЧИЙ, единственное отличие от моей задумки в том, что все ингредиенты брисались в один контейнер, и из него же забирались... один скрипт, висящий на активаторе... А вообще, большое спасибо за совет! Как бы там ни было, а худо-бедно необходимого результата я все же добился, пусть и, довольно, корявым способом... )) УРА! Свершилось! Скрипт скомпилился! В версии 1.2.404!!!! Нашел, где у меня косяк был!!!! Все просто до идиотизма: для того, чтобы работала Ref-ссылка в скрипте в игровой ячейске с этим объектом нужно открыть окно Reference(двойной клик на объекте) и в поле Reference Editor ID вписать ту самую Ref, которая потом будет использоваться в скрипте! И вся любовь!!! (На всякий случай поставил галочку Persistent Peferefce и во вскладке Ownership в поле NPC - Player) Изменено 10 февраля, 2009 пользователем lost81 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти