Выражение if Game.getSorenRandNum(100, "Gold abandoned") > 99 означает: берм случайное число от 0 до 100 (вроде без последнего числа (100)) и если оно больше 99. Другими словами условие невозможно. Лучше написать: if Game.getSorenRandNum(10000, "Gold abandoned") < 100, тогда это будет 1%.
Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
Мой мод
1) Это не С++ поэтому точку с запятой ставить в конце строчек ненадо
2)заместь f = open("D:\\Temp\\_mod.log", "a") напиши f = open("_mod.log", "w"). Файл сохранится в папке с игрой (там где экзэшник от BtS).
Посмотри как у меня в VetScreenMod'е в CvMainInterface.py сделана запись и чтение файла. (Искать по слову LoadAndSave)
Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
Мой мод
<div class='quotetop'>Цитата(NeseryozniyVET * 22.7.2010, 13:26) [snapback]343244[/snapback]</div>Про точку с запятой я знаю, но она не мешает, а без неё мне код режет глаз.1) Это не С++ поэтому точку с запятой ставить в конце строчек ненадо
2)заместь f = open("D:\\Temp\\_mod.log", "a") напиши f = open("_mod.log", "w"). Файл сохранится в папке с игрой (там где экзэшник от BtS).
Посмотри как у меня в VetScreenMod'е в CvMainInterface.py сделана запись и чтение файла. (Искать по слову LoadAndSave)
[/b]
Код сохранения рабочий, если его скопировать в отдельный скрипт и запустить, всё отработает нормально.
В VetScreenMod'е сохранение вроде бы также и сделано, через open/write/close
Нет ли у меня концептуальных проблем, может обработчик событий как-то зарегистрировать надо или ещё что-то добавить в мод? Или всё правильно и должно работать?Код:f = open(g_szFileName, 'w') f.write(text) f.close()
Давно хотел спросить у специалистов. Можно ли как нибудь в питоне вызвать функцию из длл,если она не прописана в Су-файлах. К примеру, в Су.City есть только getBonusGoodHappiness(), а changeBonusGoodHappiness(int iChange) прописана только в Cv.City, в Cy.City её нет. Так вот,как бы её использовать без редактирования длл, а то пакет СДК больно неохота опять ставить.
Интересная идея для заработка
<div class='quotetop'>Цитата(Пашок * 30.7.2010, 19:04) [snapback]344547[/snapback]</div>В птоне можно вызвать только функции прописаные в CyCityInterface1.cppДавно хотел спросить у специалистов. Можно ли как нибудь в питоне вызвать функцию из длл,если она не прописана в Су-файлах. К примеру, в Су.City есть только getBonusGoodHappiness(), а changeBonusGoodHappiness(int iChange) прописана только в Cv.City, в Cy.City её нет.[/b]
Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
Мой мод
Доброго времени суток!
Возникла проблема, но как ни бился, ничего не выходит. Если жива еще тема и спецы, может кто подскажет?!
Цель: добавить возможность разрушать свои города в BTS
Реализация: ничего умнее не придумал, как в момент переименования города проверить имя, если оно равно 0 (ноль), то вызывать функцию kill.
Код из CvEventManager.py :
Проблема: В одиночной и сетевой игре все работает, но если играть через PitBoss, то после разрушения выскакивает ошибка синхронизации, при этом разрушение происходит только на моем компе, остальные видят город как и раньше...Код:def __eventEditCityNameApply(self, playerID, userData, popupReturn): 'Edit City Name Event' iCityID = userData[0] bRename = userData[1] player = gc.getPlayer(playerID) city = player.getCity(iCityID) cityNameOld = city.getName() cityName = popupReturn.getEditBoxString(0) if (cityName == "0"): if (city.getPopulation() < 4 and not city.isCapital()): message = "You have destroyed the city of %s!!!" %(cityNameOld,) CyInterface().getHeadSelectedCity().kill() CyInterface().addImmediateMessage(message,"AS2D_BOMBARDED") #gc.getActivePlayer().raze(city) else: if (len(cityName) > 30): cityName = cityName[:30] city.setName(cityName, not bRename)
1. Подскажите, может есть какая-то функция синхронизации...
2. gc.getActivePlayer().raze(city) тоже не работает... мало того, через 10 ходов владения городом city.canRaze становится false и функция raze не отрабатывает. до 10 ходов все ОК!
3. Ну и если совсем не лень, как можно было бы оформить данное решение более эстетично. CheckBox какой-нить повесить или кнопку в меню города? Примерчик бы.
Могу только на третий ответить. Там есть кнопка в верхнем правом углу экрана города. CvMainInterface.py
http://www.civfanatics.ru/threads/74...-Mod-2.4/page7
Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
Мой мод
Вот случайно нашел, может то что ты ищешь. CyGame().isPitbossHost() во всех случаях что мне встречались имеет вид
Везде используется для прерывания выполнения активных функций.Код:if (CyGame().isPitbossHost()): return
Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
Мой мод
Спасибо, но это совсем не то
Мне нужно не прервать функцию, а выполнить полностью и передать изменения серверу...
А если не получается прямо, может можно как-то вызвать событие, по которому выскакивает запрос на уничтожение или захват города?
Например, сделать владельцем города другого игрока (варвара) и поместить в него своего юнита... Криво, но хоть как-нибудь, потому как от использования питбосса не уйти.
Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
Мой мод
Цивилизации задаются в файле мод\Assets\XML\Civilizations\CIV4CivilizationInfos.xml (описание каждой цивилизации начинается <CivilizationInfo> и заканчивается </CivilizationInfo>)Сообщение от Oni15rus
ссылки тэгов начинающиеся на TXT_KEY_ находятся в файлах папки мод\Assets\XML\Text
ссылка тэга <DefaultPlayerColor> находится в файле мод\Assets\XML\Interface\CIV4PlayerColorInfos.xml, а там ссылки на файл мод\Assets\XML\Interface\CIV4ColorVals.xml
ссылка тэга <ArtDefineTag> находится в файле мод\Assets\XML\Art\CIV4ArtDefines_Civilization.xml
значение тэга <ArtStyleType> задается в мод\Assets\XML\GlobalTypes.xml в тэге <ArtStyleTypes> и используется в файлах мод\Assets\XML\Buildings\CIV4CityLSystem.xml и мод\Assets\XML\Buildings\CIV4PlotLSystem.xml. В этих же файлах могут используются (для дворца или других построек) значения тэга <LSystem> из файла мод\Assets\XML\Art\CIV4ArtDefines_Building.xml
ссылка тэга <UnitArtStyleType> находится в файле мод\Assets\XML\Civilizations\CIV4UnitArtStyleTypeInfos.xml
Лидеры задаются в файле мод\Assets\XML\Civilizations\CIV4LeaderHeadInfos.xml
ссылки тэгов начинающиеся на TXT_KEY_ находятся в файлах папки мод\Assets\XML\Text
ссылка тэга <ArtDefineTag> находится в файле мод\Assets\XML\Art\CIV4ArtDefines_Leaderhead.xml
Здания задаются в файле мод\Assets\XML\Buildings\CIV4BuildingInfos.xml
ссылки тэгов начинающиеся на TXT_KEY_ находятся в файлах папки мод\Assets\XML\Text
ссылка тэга <Class> находится в файле мод\Assets\XML\Buildings\CIV4BuildingClassInfos.xml
ссылки тэга <ArtDefineTag> находится в файле мод\Assets\XML\Art\CIV4ArtDefines_Building.xml и используется в файле мод\Assets\XML\Buildings\CIV4CityLSystem.xml
Юниты задаются в файле мод\Assets\XML\Units\CIV4UnitInfos.xml
ссылки тэгов начинающиеся на TXT_KEY_ находятся в файлах папки мод\Assets\XML\Text
ссылка тэга <Class> находится в файле мод\Assets\XML\Units\CIV4UnitClassInfos.xml
ссылки тэга <UnitMeshGroup> находится в файле мод\Assets\XML\Art\CIV4ArtDefines_Unit.xml
3D Модэли и кнопки находятся в папке мод\Assets\Art
Последний раз редактировалось NeseryozniyVET; 19.05.2011 в 20:49.
Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
Мой мод
Открой файл CIV4CivilizationInfos.xml и найди там Аргентину (скорей всего надо искать по слову ARGENTINA) и перенеси в соответствующий файл в другом моде. Потом запомни все названия ссылок тэгов начинающиеся на TXT_KEY_, это текстовые названия и описания, их тоже надо будет переносить из соответствующих файлов. Там же указаны лидеры, уникальные юниты, уникальные здания и стартовые технологии. По ссылке тэга <ArtDefineTag> в файле CIV4ArtDefines_Civilization.xml указаны адреса кнопок и 3D модэлей.
То же самое надо проделать и с цветом, лидерами, юнитами и зданиями.
Последний раз редактировалось NeseryozniyVET; 19.05.2011 в 20:51.
Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
Мой мод
Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
Мой мод