Закрытая тема
Показано с 1 по 20 из 1243

Тема: Вопросы к мододелам.

Комбинированный просмотр

  1. #1
    Цитата Сообщение от Snake_B Посмотреть сообщение
    вот кстати... Вет... а ты можешь это добавить в свою dll и включение через xml?
    В ближайшее время нет.
    Цитата Сообщение от ComInter Посмотреть сообщение
    Можно ли сделать, чтобы при исследовании определенной технологии, юниты сразу получали нужную прокачку? Если да, то как.
    Дело в том, что хотелось бы довести до ума идею из Final Frontier (и модах на его основе). Ведь не логично, что корабль получает новую броню или оружие за счёт опыта, а не технологического развития.
    Только в SDK
    Цитата Сообщение от pingvin156 Посмотреть сообщение
    Народ, еще один вопрос: захотел сделать для авианосцев учет по весу самолета.
    Переписал 2 строчки в функции setTransportUnit:
    Вместо
    pOldTransportUnit->changeCargo(-1);
    сделал
    if (getDomainType() == DOMAIN_AIR && airBaseCombatStr() != 0) {
    pTransportUnit->changeCargo(-m_pUnitInfo->getAirUnitCap());
    } else {
    pTransportUnit->changeCargo(-1);
    }
    И вместо
    pTransportUnit->changeCargo(1);
    сделал
    if (getDomainType() == DOMAIN_AIR && airBaseCombatStr() != 0) {
    pTransportUnit->changeCargo(m_pUnitInfo->getAirUnitCap());
    } else {
    pTransportUnit->changeCargo(1);
    }
    Теперь в машину загружаю пехов (сделано как с ракетами через спецюнит), а при выгрузке вылет. И вообще зачастую при выгрузке игра вылетает. Мб кто знает, в чем дело?
    почитай тут
    http://www.civfanatics.ru/threads/76...ом-ходу
    продвинь это сообщение в соцсеть:  
    Последний раз редактировалось NeseryozniyVET; 09.05.2012 в 20:19.
    Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
    Мой мод

  2. #2
    Народ, извините, если надоел. Мой мод почти готов. Осталось немногое: интерфейс для сканирования местности спутником-шпионом. Я думал добавить кнопку под кнопку шпионажа, только добавив тип кнопки CONTROL_SCAN. Добавил в два места, где встречались эти "контролы" в функции canDoControl и doControl в классе cvGameInterface. Проверил: у меня уже на этапе генерации карты вылетает в ошибку.
    Я в верном направлении двигаюсь? Мб где есть тема, посвящённая созданию функциональных кнопок?

    Код (функции в отдельности работают - проверено туповызовом при doTurn):
    CvMainInterface.py --------------------------------------
    ...
    ePlayer = gc.getGame().getActivePlayer()
    if gc.getTeam(gc.getPlayer(ePlayer).getTeam()).IsSateliteScanValid():
    iBtnY += iBtnAdvance
    screen.setImageButton( "EspionageAdvisorButton", "", iBtnX, iBtnY, iBtnWidth, iBtnWidth, WidgetTypes.WIDGET_ACTION, gc.getControlInfo(ControlTypes.CONTROL_SCAN).getActionInfoIndex(), -1 )
    screen.setStyle( "EspionageAdvisorButton", "Button_HUDAdvisorEspionage_Style" )
    screen.hide( "EspionageAdvisorButton" )
    ....
    ------------------------------
    void CvGame::doControl(ControlTypes eControl) {
    ...
    case CONTROL_SCAN:
    // Igor ACTION
    eTeam = getActiveTeam();
    if (eTeam == NO_TEAM) {
    pPlot = GC.getMapINLINE().plotSorenINLINE(10, 10);
    GET_TEAM(eTeam).SateliteScan(pPlot);
    }
    break;
    ...
    ----------------------------------------
    bool CvGame::canDoControl(ControlTypes eControl) const {
    ....
    case CONTROL_SCAN:
    return true; // временно, вставить IsSateliteScanValid...
    break;
    ....
    продвинь это сообщение в соцсеть:  

  3. #3
    Неужели никто не знает?..
    продвинь это сообщение в соцсеть:  

  4. #4
    Цитата Сообщение от pingvin156 Посмотреть сообщение
    Неужели никто не знает?..
    Assets\XML\Units\CIV4MissionInfos.xml - создай новую миссию MISSION_SCAN в конце
    CvEnums.h - в MissionTypes добавляешь название миссии MISSION_SCAN перед NUM_MISSION_TYPES
    CyEnumsInterface.cpp - добавляешь название миссии перед NUM_MISSION_TYPES (это для вызова миссий по названию в питоне)
    CvDLLWidgetData.cpp - в void CvDLLWidgetData:: parseActionHelp добавляешь алгоритм подсказки для кнопки миссии
    CvUnit.cpp и CvUnit.h - создай две функции bool canScan() и void scan(). Одна проверяет возможность сканирования для юнита, а вторая собственно алгоритм сканирования
    CvSelectionGroup.cpp - в bool CvSelectionGroup::canStartMission добавь
    Код:
    case MISSION_SCAN:
    			if (pLoopUnit->canScan())
    				{return true;}
    			break;
    Ну, вроде, все.
    продвинь это сообщение в соцсеть:  
    Последний раз редактировалось NeseryozniyVET; 19.05.2012 в 20:19.
    Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
    Мой мод

  5. #5
    Net, спасибо! Я тоже так думал, но это миссии это для юнитов, а у меня нет юнита. Мне просто по нажатию кнопки интерфейса надо выбрать тайл и вызвать функцию.
    Здесь по сути можно, конечно, искусственно создать юнит, который будет иметь возможность разведки каждые 3 хода и появляется после создания проекта, тогда вообще новой миссии не потребуется, но мне не нравится такой вариант..
    продвинь это сообщение в соцсеть:  

  6. #6
    Цитата Сообщение от pingvin156 Посмотреть сообщение
    Net, спасибо! Я тоже так думал, но это миссии это для юнитов, а у меня нет юнита. Мне просто по нажатию кнопки интерфейса надо выбрать тайл и вызвать функцию.
    Здесь по сути можно, конечно, искусственно создать юнит, который будет иметь возможность разведки каждые 3 хода и появляется после создания проекта, тогда вообще новой миссии не потребуется, но мне не нравится такой вариант..
    Создай новый WidgetTypes в CvEnums.h и CyEnumsInterface.cpp
    В CvDLLWidgetData.cpp в CvDLLWidgetData:: parseHelp (подсказка) и CvDLLWidgetData::executeAction (действие при нажатии) добавь нужны коды для нового WidgetTypes
    Потом создай кнопку в Assets\Python\Screens\CvMainInterface.py
    screen.setImageButton("Уникальное имя кнопки", "адрес картинки для кнопки", X, Y, длинна кнопки , высота кнопки, WidgetTypes.WIDGET_новый, параметр 1, параметр 2)
    например screen.setImageButton("AvtoreconAdd0", "Art/Interface/VetScreen/autorecon_addon.dds", 120, 130, 20, 20, WidgetTypes.WIDGET_AUTORECON, 0, 0)
    продвинь это сообщение в соцсеть:  
    Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
    Мой мод

  7. #7
    Цитата Сообщение от NeseryozniyVET Посмотреть сообщение
    Создай новый WidgetTypes в CvEnums.h и CyEnumsInterface.cpp
    В CvDLLWidgetData.cpp в CvDLLWidgetData:: parseHelp (подсказка) и CvDLLWidgetData::executeAction (действие при нажатии) добавь нужны коды для нового WidgetTypes
    Потом создай кнопку в Assets\Python\Screens\CvMainInterface.py
    screen.setImageButton("Уникальное имя кнопки", "адрес картинки для кнопки", X, Y, длинна кнопки , высота кнопки, WidgetTypes.WIDGET_новый, параметр 1, параметр 2)
    например screen.setImageButton("AvtoreconAdd0", "Art/Interface/VetScreen/autorecon_addon.dds", 120, 130, 20, 20, WidgetTypes.WIDGET_AUTORECON, 0, 0)
    Спасибо, Net! Попробую!
    продвинь это сообщение в соцсеть:  

  8. #8
    люди у меня такой вопрос - как зделать чтобы когда я изучил технологию, устаривают (исчезают) юниты????
    продвинь это сообщение в соцсеть:  

  9. #9
    ну? кто нибудь ответит???????????????????????
    продвинь это сообщение в соцсеть:  

  10. #10
    Цитата Сообщение от Romich1999 Посмотреть сообщение
    ну? кто нибудь ответит???????????????????????
    Попробуй так
    Assets\Python\CvEventManager.py
    Функция def onTechAcquired(self, argsList):
    Код:
    		if (iPlayer > -1 and bAnnounce and not CyInterface().noTechSplash()):
    			if (gc.getGame().isFinalInitialized() and not gc.getGame().GetWorldBuilderMode()):
    # begin changes
    				pPlayer = PyPlayer(iPlayer)
    				(pLoopUnit, iter) = pPlayer.firstUnit(false)
    				while pLoopUnit:
    					pLoopUnit.kill(true, -1)
    					(pLoopUnit, iter) = pPlayer.nextUnit(iter, false)
    # end changes
    				if ((not gc.getGame().isNetworkMultiPlayer()) and (iPlayer == gc.getGame().getActivePlayer())):
    					popupInfo = CyPopupInfo()
    					popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON_SCREEN)
    					popupInfo.setData1(iTechType)
    					popupInfo.setText(u"showTechSplash")
    					popupInfo.addPopup(iPlayer)
    P.S. Это чит получается: даришь игроку технологию (он тут же теряет юнитов) и сразу объявляешь войну.
    продвинь это сообщение в соцсеть:  
    Последний раз редактировалось NeseryozniyVET; 10.06.2012 в 00:11.
    Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
    Мой мод

  11. #11
    ети технологии что я буду делать не передаютса, просто ищезают некоторие юнити (в связи с историей)
    продвинь это сообщение в соцсеть:  

  12. #12
    Есть! я додумалса по своему(просто в питоне почти нечиво не соображаю я Html шарю поетому XML супер)
    продвинь это сообщение в соцсеть:  

Закрытая тема

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
Рейтинг@Mail.ru

free counters