Просмотр полной версии : Условие победы - взятие города N
Termitnik
02.05.2007, 21:29
Есть город, изначально на карте расположенный. Условие победы - взятие этого города. Где копать?
Проще всего через CvEventManager.py. Определяется переменная, в которой координаты города. В функции onCityAcquired производится проверка координат взятого города - в случае совпадения, дает победу.
Возможно однозначно - Райе кучу подобных условий в своем моде сделал.
Blacksun
03.05.2007, 04:19
<div class='quotetop'>Цитата(Solver * 3.5.2007, 2:44) 179514</div>
Проще всего через CvEventManager.py. Определяется переменная, в которой координаты города. В функции onCityAcquired производится проверка координат взятого города - в случае совпадения, дает победу.
[/b]
Solver!
Сделал бы ты описание Питоновских функций. (Хотя бы - что знаешь). У нас и тема такая есть...
Называется "Осваиваем Питон". Ну, сам то Питон мож осваивать и не надо а вот цивовские файлы Питона - хотелось бы. :worthy:
Представляешь, сколько у меня на это времени уйдет :)? Список функций:
http://civilization4.net/files/modding/PythonAPI/
И это функции СДК, доступные через Питон, не описывая сами файлы. Тем более я по русски пишу жуть как медленно, через транслитератор еще. Я то сюда иногда заглядываю, если есть конкретные вопросы с не длинными ответами, то рад написать.
Blacksun
03.05.2007, 05:41
<div class='quotetop'>Цитата(Solver * 3.5.2007, 4:24) 179522</div>
Представляешь, сколько у меня на это времени уйдет :)? Список функций:
http://civilization4.net/files/modding/PythonAPI/
И это функции СДК, доступные через Питон, не описывая сами файлы. Тем более я по русски пишу жуть как медленно, через транслитератор еще. Я то сюда иногда заглядываю, если есть конкретные вопросы с не длинными ответами, то рад написать.
[/b]
Этот список я видел.
Чем хороша VS 2003 - это тем, что можно найти любую функцию (по списку классов), найти все вызовы этой функции и, в конце концов понять, что она делает. С Питоновскими сложнее, там нет такой оболочки, чтобы делала поиск по всем файлам, да и многие ф-ции просто скрыты в движке. (Видно, что файл цепляется, а в папках его нет). Отсюда все сложности с Питоном... :nerves:
Раз список видел, значит понятно, насколько трудоемко было бы полное описание питоновских функций. Я промострел эту питоновскую тему тут, но не вижу новых сообщений / конкретных вопросов. К СДК то же самое относится.
Blacksun
06.05.2007, 20:26
<div class='quotetop'>Цитата(Solver * 3.5.2007, 16:02) 179628</div>
Раз список видел, значит понятно, насколько трудоемко было бы полное описание питоновских функций. Я промострел эту питоновскую тему тут, но не вижу новых сообщений / конкретных вопросов. К СДК то же самое относится.
[/b]
Тогда конкретный вопрос... Когда что вызывается (из движка) - Последовательность действий.
Пример. (Предыдущий). Ограничить число сетлеров легко (1 - 2 строчки простого кода), Но, ГДЕ ЭТО СДЕЛАТЬ. Это обычно приходится искать... Если СДК я могу посмотреть с помощью дебагера, то Питон - не могу посмотреть никак... (Если только нет конкретных вызовов Питоновских функций из СДК).
Надеюсь, вопрос правильно понял.
Например, я хотел бы этих сеттлеров ограничить Питоном, но не знаю, где искать место вставки кода. Я бы начал с того, что просмотрел код СДК, где определяется, можно ли строить юнит. Нахожу CvCity::canTrain(), там два раза происходит вызов питоновских функций в блоках:
if(GC.getUSE_CAN_TRAIN_CALLBACK())
и
if(GC.getUSE_CANNOT_TRAIN_CALLBACK())
Вижы, что код в этих блоках вызывает питон, например:
gDLL->getPythonIFace()->callFunction(PYGameModule, "cannotTrain", argsList2.makeFunctionArgs(), &lResult);
Где PYGameModule равно CvGameInterface. В файле CvGameInterface.py вижу, что cannotTrain - функция модуля gameUtils. Соотвественно, понимаю, что код надо вставлять в функцию cannotTrain файла gameUtils.py.
Blacksun
06.05.2007, 22:44
Спасиб! Просто СДК настолько обширно, чито, это мона обнаружить тока при пристальных поисках... (Когда просматриваиваешь СДК в поисках чего то другого - это ускользает из поиска зрения....) :nerves:
Я лично считаю организацию СДК очень хорошей. Почти всегда быстро накожу то, что хочу - хорошые названия функций, итд.
Конечно, можно запустить поиск по всему проекту на gDLL->getPythonIFace()->callFunction - тогда будут видны места вызова питонобских функций из СДК.
Blacksun
06.05.2007, 22:54
<div class='quotetop'>Цитата(Solver * 6.5.2007, 22:47) 180159</div>
Я лично считаю организацию СДК очень хорошей. Почти всегда быстро накожу то, что хочу - хорошые названия функций, итд.
Конечно, можно запустить поиск по всему проекту на gDLL->getPythonIFace()->callFunction - тогда будут видны места вызова питонобских функций из СДК.
[/b]
Кроме этих вызовов - есть еще многие другие... (Я например, пытаюсь сделать то, чего нет в СДК, но с помощью тех функций, которые есть в СДК. Так как - я хакер, поэтому приходится писать свои функции, которые, не идут в разрез с функциями СДК (Одну и ту же проблему мона решить разными способами). И поэтому... у меня ... получается (Плох тот хакер, который пытается писать свои функции)...(Которых нет, в данной проге... (Используй то, что есть!))
Ну если конкретные вопросы типа этого возникают, то я сюда иногда заглядываю. E-mail у меня тоже есть :)
Blacksun
06.05.2007, 23:11
<div class='quotetop'>Цитата(Solver * 6.5.2007, 22:57) 180162</div>
Ну если конкретные вопросы типа этого возникают, то я сюда иногда заглядываю. E-mail у меня тоже есть :)
[/b]
Хорошо, если ты мне поможешь в будующем, но, на сегодня, я решил все проблемы, которые меня интересовали... Дело осталось за малым, найти время - дописать то, что я уже продумал.... (И проверил...) (Старая школа... Такого - чичас не встретишь... Если бы встретил - передал бы все свои знания...)
<div class='quotetop'>Цитата(Solver * 6.5.2007, 22:57) 180162</div>
Ну если конкретные вопросы типа этого возникают, то я сюда иногда заглядываю. E-mail у меня тоже есть :)
[/b]
Ухты, а ты в Firaxis работаешь? :)
Powered by vBulletin® Version 4.1.9 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot