Unreal Engine 4 http://uengine.ru/forum/ |
|
Есть код, нужно переделать http://uengine.ru/forum/viewtopic.php?f=19&t=4658 |
Страница 1 из 1 |
Автор: | zhenek113 [ 23 мар 2017, 09:34 ] |
Заголовок сообщения: | Есть код, нужно переделать |
Всем привет! Я полнейший чайник что касается кода, прошу помощи. Делаю мод для игры, в нем необходимо прописать скрипт в результате которого, при нажимании кнопки завершения хода, вылазит окошко с запросом на подтверждение этого действия. Если игрок подтверждает, то начинается следующий ход. Если нет, то возврат к текущему ходу. Есть готовый код, отвечающий за всплытие окна с кнопками "ДА" или "НЕТ" при нажатии на кнопку перезарядки оружия, если обойма в ней не до конца разряжена. Если разряжена то окошко не вылазит. Всего есть три файла. Как я понял в первом шаблон, в котором указаны текстовые параметры окна Код: [X2TargetingMethod_ConfirmFreeReload] PopupTitle=Wasting free reload PopupBody=You have ammo remaining. Are you sure you want to use your free reload? AcceptMessage=Reload CancelMessage=Cancel Есть еще два файла в которых прописаны скрипты: Код: class X2DownloadableContentInfo_ConfirmFreeReload extends X2DownloadableContentInfo; static event OnPostTemplatesCreated() { local X2AbilityTemplateManager abilityManager; local X2AbilityTemplate reloadTemplate; abilityManager = class'X2AbilityTemplateManager'.static.GetAbilityTemplateManager(); reloadTemplate = abilityManager.FindAbilityTemplate('Reload'); reloadTemplate.TargetingMethod = class'X2TargetingMethod_ConfirmFreeReload'; } и Код: class X2TargetingMethod_ConfirmFreeReload extends X2TargetingMethod; var localized string PopupTitle; var localized string PopupBody; var localized string AcceptMessage; var localized string CancelMessage; var bool IsConfirmed; var XComGameState_Ability AbilityState; function Init(AvailableAction InAction) { super.Init(InAction); IsConfirmed = false; AbilityState = XComGameState_Ability(`XCOMHISTORY.GetGameStateForObjectID(InAction.AbilityObjectRef.ObjectID)); } function bool VerifyTargetableFromIndividualMethod(delegate<ConfirmAbilityCallback> callback) { if (!IsConfirmed && HasAmmo() && IsLimitedFreeReload()) { ShowFreeReloadPopup(callback); return false; } return true; } private function ShowFreeReloadPopup(delegate<ConfirmAbilityCallback> callback) { local TDialogueBoxData dialog; local XComPresentationLayerBase presentationLayer; m_fnConfirmAbilityCallback = callback; presentationLayer = XComPlayerController(class'WorldInfo'.static.GetWorldInfo().GetALocalPlayerController()).Pres; dialog.eType = eDialog_Warning; dialog.strTitle = PopupTitle; dialog.strText = PopupBody; dialog.strAccept = AcceptMessage; dialog.strCancel = CancelMessage; dialog.fnCallback = DialogCallback; presentationLayer.UIRaiseDialog(dialog); } simulated private function DialogCallback(eUIAction eAction) { if (eAction == eUIAction_Accept) { IsConfirmed = true; m_fnConfirmAbilityCallback(); } } private function bool IsLimitedFreeReload() { local XComGameState_Item weaponState; local array<X2WeaponUpgradeTemplate> weaponUpgrades; local UnitValue numFreeReloadsUsed; local int numFreeReloadsRemaining, i; weaponState = AbilityState.GetSourceWeapon(); weaponUpgrades = weaponState.GetMyWeaponUpgradeTemplates(); UnitState.GetUnitValue('FreeReload', numFreeReloadsUsed); for (i = 0; i < weaponUpgrades.Length; i++) { if(weaponUpgrades[i].NumFreeReloads > 0) { numFreeReloadsRemaining = int(weaponUpgrades[i].NumFreeReloads - numFreeReloadsUsed.fValue); if(numFreeReloadsRemaining > 0 && numFreeReloadsRemaining < 10) //Check it's a small number to support mods that have "infinite" free reloads { return true; } } } return false; } private function bool HasAmmo() { return AbilityState.GetSourceWeapon().Ammo > 0; } // Necessary to prevent red-screens, for some reason function int GetTargetIndex() { return 0; } Мне необходимо переделать эти коды на действие, описанное мною выше - завершение хода. Либо, если этот код не подходит к моим запросам, создать новый. Может кто помочь? |
Автор: | andre [ 03 май 2017, 16:15 ] |
Заголовок сообщения: | |
Ты форумом не ошибся случаем, это что С#? Может тебе лучше пойти на Unity |
Автор: | Monokarp [ 03 май 2017, 21:21 ] |
Заголовок сообщения: | Re: |
andre писал(а): Ты форумом не ошибся случаем, это что С#? Может тебе лучше пойти на Unity Не, это не Шарп, синтаксис чуток отличается. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |