КсюXa, Воот,огромное спасибо за ответ,теперь всё ясно У меня знакомый есть который с форматом.xml (По его словам) отлично разбирается,попробую его нагрузить,может получится чего .Еще раз спасибо за ответ.
как сделать невидимыми только "скобки" активации, а перекрестие оставить видимым?
Убедиться, что скобки и перекрестье - отдельные элементы интерфейса (не помню, так ли это; если нет - разделить на отдельные), затем изменить параметр видимости скобок с однозначно наследуемого на вычисляемый, добавив новую переменную (её ты и будешь пинать SetUIFloat): когда твой новый флажок в единичке, скобки невидимы, когда в нолике, видимость наследуется.
Изменение репутации для пользователя КсюXa
КсюXaOffline
Сообщение №1807
написано: 19 мая 2016, 15:46
| Отредактировано: КсюXa - 19 мая 2016, 16:16
Ipatow, вроде как скобки не отдельные. Если не ошибаюсь - есть картинка просто перекрестия, а есть картинка перекрестия в скобках. В разные моменты показывается либо то, либо это. По моему скромному разумению (в просторечии - ИМХО) - разделить не получится.
Жёлтенький в скобках, зелёненький без. Думаю, можно заменить имя скобчатой картинки на переменную, которую проинициализировать стандартным значением, а в пресловутые нужные моменты использовать SetUIString и вписывать туда имя бесскобчатого прицела. По завершении момента - возвращать стандартное значение.
поскольку в XML я ноль - не подскажите, что нужно писать в параметрах SetUIString? ... Что писать, что бы заменить glow_crosshair_filled.dds на glow_crosshair.dds ???
Как и везде, "специалистом в XML" быть невозможно, поскольку XML не более и не менее чем соглашение о рудиментарном синтаксисе, а функционал каждой конкретной реализации определяется с программистской точки зрения схемой, а с пользовательской - программой, "рендерящей" этот "маркап". В данном случае и то, и другое ни в малейшей степени не документировано - где-то, наверное, имеется такой документ, поскольку не только Рикардо Гонзалес этот UI строил, но к моддерам эта информация не попадала. В результате приходится опираться на смутные догадки и искать решение наощупь.
Я думаю, как я уже писал, что тебе нужно где-то на уровне HUDMainMenu (файл Menus\Main\HUD_Main_Menu.XML, иерархически прямо под <menu name="HUDMainMenu">) добавить новый элемент с придуманым именем (скажем, <MDString>), и в этот элемент прописать Interface\HUD\glow_crosshair_filled.dds - а в image по имени reticle_center в user1 константу заменить на что-то вроде <copy src="io()" trait="MDString" />. И использовать такую конструкцию при помощи SetUIString "HUDMainMenu\MDString" "Interface\HUD\glow_crosshair.dds" и подобного. Такая вот моя гипотеза. Ни туториалов, ни мануалов по этой теме нет, общую идею я изложил, дальше "твори, выдумывай, пробуй"
Изменение репутации для пользователя vjronin
vjroninOffline
Сообщение №1813
написано: 27 мая 2016, 21:49
| Отредактировано: vjronin - 27 мая 2016, 21:50
народ нарыл хороший мод нужна помощь по скрипту выдает ошибку scripts;script"sdscrapobjectscript"line 18 syntax error. unknown command"getcrosshairref SCRIPT scn sdScrapObjectScript
ref tObjectRef short LG_Lparts short LG_Sparts short MD_Lparts short MD_Sparts short SM_Sparts short TN_Sparts short lparts short sparts short HasTool
Begin OnEquip
set tObjectRef to sdScrapTool if tObjectRef != GetCrosshairRef set tObjectRef to GetCrosshairRef if (tObjectRef.IsInList fgScrappedStaticsALL) if (player.GetHasNote fgScrapMetalCrafting1) set LG_Lparts to 2 set LG_Sparts to 1 set MD_Lparts to 1 set MD_Sparts to 0 set SM_Sparts to 1 set TN_Sparts to 1 elseif (player.GetHasNote fgScrapMetalCrafting2)
Изменение репутации для пользователя MaxwellDemon
MaxwellDemonOffline
Сообщение №1814
написано: 28 мая 2016, 04:28
| Отредактировано: MaxwellDemon - 28 мая 2016, 04:32
fose_loader.exe -editor все прописал как надо А КОНЕЧНЫЙ ИТОГ НОЛЬ виноваты вот эти строки if tObjectRef != GetCrosshairRef set tObjectRef to GetCrosshairRef хотя скрипт в игре работает Begin здез хочу прописать открытие скрипта ударом или клавишей
да да да чую прилив сил кажется мозг начел работать ЧЕЛОВЕК В ПЕЧАЛИ ГОЛОВОЙ ОБ СТЕНУ БЕТСЯ ЧТОБ ССЫЛКУ ДАЛИ
O ВЕЛИКИЕ УМЫ ДАННОГО ФОРУМА БЬЮ ЧЕЛОМ ПЕРЕД ВАШИМ ПОРОГОМ дайте ответ какже запустить гек через фосе 1.имеется в наличие Geck_F3_Rus_1.5 FOSE v.1.2 Beta 7 Fallout 3.Gold Edition.v 1.7 + 5 DLC попытка прописать в ярлыке fose (fose_loader.exe-editor) не работает ПОМОГИТЕ ОТКРЫТЬ ДВЕРЬ МОЕЙ БОЛЬНОЙ ФАНТАЗИИ В МИР F3 как прописать активатор скрипта для предмета на удар Begin OnEquip
set tObjectRef to sdScrapTool if tObjectRef != GetCrosshairRef set tObjectRef to GetCrosshairRef if (tObjectRef.IsInList fgScrappedStaticsALL) if (player.GetHasNote fgScrapMetalCrafting1) set LG_Lparts to 2 set LG_Sparts to 1 set MD_Lparts to 1
Добавлено (29 Мая 2016, 00:18) --------------------------------------------- все друзя проблема решена теперь можно скрипты писать для fose плагинов Geck_F3_Rus_1.5 не подходит скачал Geck 1.1.0.36 все заработало- правда все на англиском итак скачиваем FOSE v.1.2 Beta 7 и Geck 1.1.0.36 создаем ярлык для FOSE ставим вконце - editr и все
я уже приноровился скрипты изменяю на англиской а все астальное переустанавливаю и делаю на руском мне осталось в скрипте сверху прописать активатор удара ключем и все плагин для крафта готов
кто нибуть помогите со скриптом
Добавлено (29 Мая 2016, 22:00) --------------------------------------------- АУУУУУ ЕСТЬ КТО ЖИВОЙ помогите со скриптом
scn sdScrapObjectScript
ref tObjectRef short LG_Lparts short LG_Sparts short MD_Lparts short MD_Sparts short SM_Sparts short TN_Sparts short lparts short sparts short HasTool
Begin OnEquip
set tObjectRef to sdScrapTool if tObjectRef != GetCrosshairRef set tObjectRef to GetCrosshairRef if (tObjectRef.IsInList fgScrappedStaticsALL) if (player.GetHasNote fgScrapMetalCrafting1) set LG_Lparts to 2 set LG_Sparts to 1 set MD_Lparts to 1 set MD_Sparts to 0 set SM_Sparts to 1 set TN_Sparts to 1 elseif (player.GetHasNote fgScrapMetalCrafting2) set LG_Lparts to 3 set LG_Sparts to 1 set MD_Lparts to 1 set MD_Sparts to 1 set SM_Sparts to 2 set TN_Sparts to 1 elseif (player.GetHasNote fgScrapMetalCrafting3) set LG_Lparts to 3 set LG_Sparts to 2 set MD_Lparts to 2 set MD_Sparts to 1 set SM_Sparts to 2 set TN_Sparts to 1 elseif (player.GetHasNote fgScrapMetalCrafting4) set LG_Lparts to 4 set LG_Sparts to 1 set MD_Lparts to 3 set MD_Sparts to 1 set SM_Sparts to 2 set TN_Sparts to 1 elseif (player.GetHasNote fgScrapMetalCrafting5) set LG_Lparts to 4 set LG_Sparts to 2 set MD_Lparts to 3 set MD_Sparts to 2 set SM_Sparts to 3 set TN_Sparts to 2 endif if tObjectRef.IsInList fgScrappedStaticsLG set lparts to LG_Lparts set sparts to LG_Sparts elseif tObjectRef.IsInList fgScrappedStaticsMD set lparts to MD_Lparts set sparts to MD_Sparts elseif tObjectRef.IsInList fgScrappedStaticsSM set lparts to 0 set sparts to SM_Sparts elseif tObjectRef.IsInList fgScrappedStaticsTN set lparts to 0 set sparts to TN_Sparts endif tObjectRef.Disable tObjectRef.MarkForDelete player.AddItem fgLargeScrapParts lparts player.AddItem fgSmallScrapParts sparts PlaySound UIRepairWeapon ShowMessage fgBrokenDown lparts,sparts endif endif player.UnEquipItem sdScrapTool 0 1
End
Begin OnDrop player
set HasTool to player.GetItemCount sdScrapTool if HasTool != 1 if HasTool < 1 player.additem sdScrapTool 1 1 elseif HasTool > 1 player.removeitem sdScrapTool HasTool + 1 1 player.additem sdScrapTool 1 1 endif endif
End
Begin OnAdd player
set HasTool to player.GetItemCount sdScrapTool if HasTool != 1 if HasTool < 1 player.additem sdScrapTool 1 1 elseif HasTool > 1 player.removeitem sdScrapTool HasTool + 1 1 player.additem sdScrapTool 1 1 endif endif
OnHitWith- немного не то что я имел в виду в скрипте sdScrapTool при одевании срау выполняет скрипт и уберается обратно но мне нужно чтобы вять предмет sdScrapTool в руку и ударить по предмету и списка для выполнения скрипта
итак обесняю по скрипту я получаю sdScrapTool навожу цель скажем на мотоцыкл после открываю пип бой одеваю на себя sdScrapTool и вуаля sms добавлено 1 большая деталь 1 малая деталь както просто хочу зделать так 1 значит убрать авто добовление sdScrapTool при старте а зделать так идешь на минное поле там чювак со снайперкой возле него записка (мол блин какже так просрал единственный универсальный ключ гдето здесь проклятый мой склероз)далее спускаемся в низ и находим данный ключь в машине следующий тап ищем обект поскрипту мотоцикл.барбикю бочки итд берем в руку ключь наводим прицел удар ключем и вуаля sms добавлено 1 большая деталь 1 малая деталь там по скрипту незнаю какой процент выподения 4 я хочу пойти по другому пути (создал инструмент sdScrapTool1 гаичный ключ далее взял вруки -даалее навел прицел на обект разбора ударил обект разобрался )пример сертификат robco когда подходишь к кухонной плите с ключом она светится далее удар по ней выскакивает смс с текстом - вот мне нужно подобие того
ref tObjectRef short LG_Lparts short LG_Sparts short MD_Lparts short MD_Sparts short SM_Sparts short TN_Sparts short lparts short sparts short HasTool
Begin OnEquip
set tObjectRef to sdScrapTool if tObjectRef != GetCrosshairRef set tObjectRef to GetCrosshairRef if (tObjectRef.IsInList fgScrappedStaticsALL) if (player.GetHasNote fgScrapMetalCrafting1) set LG_Lparts to 2 set LG_Sparts to 1 set MD_Lparts to 1 set MD_Sparts to 0 set SM_Sparts to 1 set TN_Sparts to 1 elseif (player.GetHasNote fgScrapMetalCrafting2) set LG_Lparts to 3 set LG_Sparts to 1 set MD_Lparts to 1 set MD_Sparts to 1 set SM_Sparts to 2 set TN_Sparts to 1 elseif (player.GetHasNote fgScrapMetalCrafting3) set LG_Lparts to 3 set LG_Sparts to 2 set MD_Lparts to 2 set MD_Sparts to 1 set SM_Sparts to 2 set TN_Sparts to 1 elseif (player.GetHasNote fgScrapMetalCrafting4) set LG_Lparts to 4 set LG_Sparts to 1 set MD_Lparts to 3 set MD_Sparts to 1 set SM_Sparts to 2 set TN_Sparts to 1 elseif (player.GetHasNote fgScrapMetalCrafting5) set LG_Lparts to 4 set LG_Sparts to 2 set MD_Lparts to 3 set MD_Sparts to 2 set SM_Sparts to 3 set TN_Sparts to 2 endif if tObjectRef.IsInList fgScrappedStaticsLG set lparts to LG_Lparts set sparts to LG_Sparts elseif tObjectRef.IsInList fgScrappedStaticsMD set lparts to MD_Lparts set sparts to MD_Sparts elseif tObjectRef.IsInList fgScrappedStaticsSM set lparts to 0 set sparts to SM_Sparts elseif tObjectRef.IsInList fgScrappedStaticsTN set lparts to 0 set sparts to TN_Sparts endif tObjectRef.Disable tObjectRef.MarkForDelete player.AddItem fgLargeScrapParts lparts player.AddItem fgSmallScrapParts sparts PlaySound UIRepairWeapon ShowMessage fgBrokenDown lparts,sparts endif endif player.UnEquipItem sdScrapTool 0 1
End
Begin OnDrop player
set HasTool to player.GetItemCount sdScrapTool if HasTool != 1 if HasTool < 1 player.additem sdScrapTool 1 1 elseif HasTool > 1 player.removeitem sdScrapTool HasTool + 1 1 player.additem sdScrapTool 1 1 endif endif
End
Begin OnAdd player
set HasTool to player.GetItemCount sdScrapTool if HasTool != 1 if HasTool < 1 player.additem sdScrapTool 1 1 elseif HasTool > 1 player.removeitem sdScrapTool HasTool + 1 1 player.additem sdScrapTool 1 1 endif endif
End
scn a0aRobcoToolWrenchScriptBee
short active short drawn short anim ref item short itemJunk ref cell short process
short lookupIndex ref lookupList ref lookupToken
begin onequip set active to player.hasperk a0aJunkPerk1 + player.hasperk a0aJunkPerk2 endif end
begin onunequip set active to 0 if(drawn) set cell to player.getparentcell set item to getfirstref 0 1 label 10 if(item) set itemjunk to item.isinlist a0aJunkPerk1ListBuild + (player.hasperk a0aJunkPerk2 * item.isinlist a0aJunkPerk2ListBuild) if(itemjunk) item.sms a0aJunkPerk1Shader endif set item to getnextref goto 10 endif set drawn to 0 endif end
begin gamemode if(active) if(IsPlayerMovingIntoNewSpace) return elseif(player.isweaponout != drawn || getgameloaded) set drawn to player.isweaponout set process to 1 elseif(cell != player.getparentcell) set process to 1 endif
if(process) set process to 0 set cell to player.getparentcell set item to getfirstref 0 1 label 10 if(item) set itemjunk to item.isinlist a0aJunkPerk1ListBuild + (player.hasperk a0aJunkPerk2 * item.isinlist a0aJunkPerk2ListBuild) if(itemjunk) if(drawn) item.pms a0aJunkPerk1Shader else item.sms a0aJunkPerk1Shader endif endif set item to getnextref goto 10 endif endif
if(player.GetAnimAction == 2 && anim == 0) set anim to 1 elseif(player.getanimaction != 2 && anim == 1) set anim to 0 set item to getcrosshairref if(item) set itemjunk to item.isinlist a0aJunkPerk1ListBuild + (player.hasperk a0aJunkPerk2 * item.isinlist a0aJunkPerk2ListBuild) ; printc "Item is %n, %.0f junk" item itemjunk if(itemjunk) set lookupindex to 0 label 10 set lookupList to listgetnthform a0aJunkLookupLists lookupIndex if(lookupList) if(item.isinlist lookupList) set aaarobcoquest.junkitem to item set lookupToken to listgetnthform a0aJunklookupTokens lookupIndex ; printc "%n" lookuptoken player.additem lookupToken 1 1 else set lookupIndex to lookupIndex +1 goto 10 endif endif endif endif endif endif end
я хочу пойти по другому пути (создал инструмент sdScrapTool1 гаичный ключ далее взял вруки -даалее навел прицел на обект разбора ударил обект разобрался )
Используй OnHitWith. Неважно, в какой момент и каким способом ты свой гаечный ключ в руки взял; неважно, куда и когда ты наводил прицел. По чему ударишь своим ключом - то и разберётся.
Изменение репутации для пользователя vjronin
vjroninOffline
Сообщение №1825
написано: 30 мая 2016, 23:04
| Отредактировано: vjronin - 30 мая 2016, 23:07
OnHitWith что-то не получается скрипт перестает выполнять свою функцию куда его вставлять ?? немного понел но я не хочу вешать данную функцию на предметы
Добавлено (31 Мая 2016, 02:04) --------------------------------------------- как можно ту функцию выдрать из robco и куда тогда ставить все у меня мозги в кисель (рожденный ползать летать не сможет)
как можно ту функцию выдрать из robco и куда тогда ставить
Которую из "тех функций"? Проверка, торчит ли из рук разбиратор - IsWeaponOut, размахивание разбиратором - GetAnimAction, раскрашивание целей - PlayMagicShaderVisuals... И это ещё совсем не все "те функции"
Изменение репутации для пользователя MaxwellDemon
MaxwellDemonOffline
Сообщение №1827
написано: 31 мая 2016, 04:34
| Отредактировано: MaxwellDemon - 31 мая 2016, 04:45
vjronin, можно сделать всё одним квест-скриптом и форм-листами.
Код
scn НазваниеСкрипта
int ModOff ref ModTarget
Begin GameMode
If Player.GetEquipped НазваниеПредмета == 1
If Player.GetAnimAction != 4
Set ModOff to 0
EndIf
If Player.GetAnimAction == 4
If ModOff != 1
Set ModOff to 1 Set ModTarget to GetCrosshairRef
If ModTarget.IsInList СписокЦелей1 == 1
Те действия которые нужно сделать, в этот момент... Те действия которые нужно сделать, в этот момент... Те действия которые нужно сделать, в этот момент...
ElseIf ModTarget.IsInList СписокЦелей2 == 1
Те действия которые нужно сделать, в этот момент... Те действия которые нужно сделать, в этот момент... Те действия которые нужно сделать, в этот момент...
EndIf
EndIf
EndIf
EndIf
End
Частоту квеста скрипта можно поставить 0.04 (25 FPS). По форм-листам раскидать объекты/цели.
Изменение репутации для пользователя vjronin
vjroninOffline
Сообщение №1828
написано: 1 июня 2016, 12:34
| Отредактировано: vjronin - 31 мая 2016, 20:07
ModOff - что этоозначает в скрипте спасибо огромное тошто нужно
Добавлено (31 Мая 2016, 23:05) --------------------------------------------- не получилось бет он по цели ключом но ничего не происходит открываю инвентарь беру ключь в руку и в тот момент обект разберается
scn sdScrapObjectScript
ref tObjectRef short LG_Lparts short LG_Sparts short MD_Lparts short MD_Sparts short SM_Sparts short TN_Sparts short lparts short sparts short HasTool
Begin OnEquip
set tObjectRef to sdScrapTool if tObjectRef != GetCrosshairRef set tObjectRef to GetCrosshairRef if (tObjectRef.IsInList fgScrappedStaticsALL) if (player.GetHasNote fgScrapMetalCrafting1) set LG_Lparts to 2 set LG_Sparts to 1 set MD_Lparts to 1 set MD_Sparts to 0 set SM_Sparts to 1 set TN_Sparts to 1 elseif (player.GetHasNote fgScrapMetalCrafting2) set LG_Lparts to 3 set LG_Sparts to 1 set MD_Lparts to 1 set MD_Sparts to 1 set SM_Sparts to 2 set TN_Sparts to 1 elseif (player.GetHasNote fgScrapMetalCrafting3) set LG_Lparts to 3 set LG_Sparts to 2 set MD_Lparts to 2 set MD_Sparts to 1 set SM_Sparts to 2 set TN_Sparts to 1 elseif (player.GetHasNote fgScrapMetalCrafting4) set LG_Lparts to 4 set LG_Sparts to 1 set MD_Lparts to 3 set MD_Sparts to 1 set SM_Sparts to 2 set TN_Sparts to 1 elseif (player.GetHasNote fgScrapMetalCrafting5) set LG_Lparts to 4 set LG_Sparts to 2 set MD_Lparts to 3 set MD_Sparts to 2 set SM_Sparts to 3 set TN_Sparts to 2 endif if tObjectRef.IsInList fgScrappedStaticsLG set lparts to LG_Lparts set sparts to LG_Sparts elseif tObjectRef.IsInList fgScrappedStaticsMD set lparts to MD_Lparts set sparts to MD_Sparts elseif tObjectRef.IsInList fgScrappedStaticsSM set lparts to 0 set sparts to SM_Sparts elseif tObjectRef.IsInList fgScrappedStaticsTN set lparts to 0 set sparts to TN_Sparts endif tObjectRef.Disable tObjectRef.MarkForDelete player.AddItem fgLargeScrapParts lparts player.AddItem fgSmallScrapParts sparts PlaySound UIRepairWeapon ShowMessage fgBrokenDown lparts,sparts endif End
Begin OnDrop player
set HasTool to player.GetItemCount sdScrapTool if HasTool != 1 if HasTool < 1 player.additem sdScrapTool 1 1 elseif HasTool > 1 player.removeitem sdScrapTool HasTool + 1 1 player.additem sdScrapTool 1 1 endif endif
End
Begin OnAdd player
set HasTool to player.GetItemCount sdScrapTool if HasTool != 1 if HasTool < 1 player.additem sdScrapTool 1 1 elseif HasTool > 1 player.removeitem sdScrapTool HasTool + 1 1 player.additem sdScrapTool 1 1 endif endif
End
scn sdBreakdownStatics
short HasTool
Begin GameMode
set HasTool to player.GetItemCount sdScrapTool if HasTool != 1 if HasTool < 1 player.additem sdScrapTool 1 elseif HasTool > 1 player.removeitem sdScrapTool HasTool + 1 player.additem sdScrapTool 1 endif endif
Добавлено (01 Июня 2016, 15:34) --------------------------------------------- еще есть вопрос цыфра 0 значение нету -отсуцтвует - не имеет тоесть отрецательный результат а цыфра 1-11-9-5-3 итд имеет -есть тоесть положительно это так? или цыфры 9-8-7-3-4 имеют другое значение? и что означает 10 или 01
где зашит исходник fallout 3 и чем его можно просмотреть и отредактировать?
Наверное, ещё можно найти людей, которые знают, где зарыты те, кто знал, где зарыт исходник фолаута...
Практически же говоря, какие-то части игры унаследованы чуть ли не от даггерфола (от морровинда уж точно), и едва ли у всего этого в дебрях беседки сохранились исходники (их архивируют, конечно, но долговечных носителей практически нет - исключение только перфокарты, на ленты и диски уже лет через десять нельзя расчитывать). При сборке фолаутов куски прошлых игр использовались в виде сваленных в библиотеки бинарников и только косметически патчились (лошадей и магию поотключали, но куча подпрограмм их поддержки балластом торчит в игре, поскольку древний бинарник одним куском, склеено вместе и что надо и что уже не надо). Наверное, исходные тексты самых новых культурных слоёв этого раскопа найти можно (может, достаточно кому-то в беседке много денег дать, а может, придётся похищать любимого ребёнка и шантажировать), но одних исходников для сборки работоспособной игры недостаточно, без реликтовых бинарников не обойтись...
А вот если удастся исходники найти - читать и редактировать их проще простого, они текстовые.