PDA

Просмотр полной версии : Условие победы - взятие города N



Termitnik
02.05.2007, 21:29
Есть город, изначально на карте расположенный. Условие победы - взятие этого города. Где копать?

Solver
03.05.2007, 02:44
Проще всего через CvEventManager.py. Определяется переменная, в которой координаты города. В функции onCityAcquired производится проверка координат взятого города - в случае совпадения, дает победу.

Линник
03.05.2007, 04:03
Возможно однозначно - Райе кучу подобных условий в своем моде сделал.

Blacksun
03.05.2007, 04:19
<div class='quotetop'>Цитата(Solver * 3.5.2007, 2:44) 179514</div>

Проще всего через CvEventManager.py. Определяется переменная, в которой координаты города. В функции onCityAcquired производится проверка координат взятого города - в случае совпадения, дает победу.
[/b]

Solver!

Сделал бы ты описание Питоновских функций. (Хотя бы - что знаешь). У нас и тема такая есть...
Называется "Осваиваем Питон". Ну, сам то Питон мож осваивать и не надо а вот цивовские файлы Питона - хотелось бы. :worthy:

Solver
03.05.2007, 04:24
Представляешь, сколько у меня на это времени уйдет :)? Список функций:

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:

Solver
03.05.2007, 16:02
Раз список видел, значит понятно, насколько трудоемко было бы полное описание питоновских функций. Я промострел эту питоновскую тему тут, но не вижу новых сообщений / конкретных вопросов. К СДК то же самое относится.

Blacksun
06.05.2007, 20:26
<div class='quotetop'>Цитата(Solver * 3.5.2007, 16:02) 179628</div>

Раз список видел, значит понятно, насколько трудоемко было бы полное описание питоновских функций. Я промострел эту питоновскую тему тут, но не вижу новых сообщений / конкретных вопросов. К СДК то же самое относится.
[/b]

Тогда конкретный вопрос... Когда что вызывается (из движка) - Последовательность действий.
Пример. (Предыдущий). Ограничить число сетлеров легко (1 - 2 строчки простого кода), Но, ГДЕ ЭТО СДЕЛАТЬ. Это обычно приходится искать... Если СДК я могу посмотреть с помощью дебагера, то Питон - не могу посмотреть никак... (Если только нет конкретных вызовов Питоновских функций из СДК).

Solver
06.05.2007, 22:27
Надеюсь, вопрос правильно понял.

Например, я хотел бы этих сеттлеров ограничить Питоном, но не знаю, где искать место вставки кода. Я бы начал с того, что просмотрел код СДК, где определяется, можно ли строить юнит. Нахожу 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:

Solver
06.05.2007, 22:47
Я лично считаю организацию СДК очень хорошей. Почти всегда быстро накожу то, что хочу - хорошые названия функций, итд.

Конечно, можно запустить поиск по всему проекту на gDLL->getPythonIFace()->callFunction - тогда будут видны места вызова питонобских функций из СДК.

Blacksun
06.05.2007, 22:54
<div class='quotetop'>Цитата(Solver * 6.5.2007, 22:47) 180159</div>

Я лично считаю организацию СДК очень хорошей. Почти всегда быстро накожу то, что хочу - хорошые названия функций, итд.

Конечно, можно запустить поиск по всему проекту на gDLL->getPythonIFace()->callFunction - тогда будут видны места вызова питонобских функций из СДК.
[/b]

Кроме этих вызовов - есть еще многие другие... (Я например, пытаюсь сделать то, чего нет в СДК, но с помощью тех функций, которые есть в СДК. Так как - я хакер, поэтому приходится писать свои функции, которые, не идут в разрез с функциями СДК (Одну и ту же проблему мона решить разными способами). И поэтому... у меня ... получается (Плох тот хакер, который пытается писать свои функции)...(Которых нет, в данной проге... (Используй то, что есть!))

Solver
06.05.2007, 22:57
Ну если конкретные вопросы типа этого возникают, то я сюда иногда заглядываю. E-mail у меня тоже есть :)

Blacksun
06.05.2007, 23:11
<div class='quotetop'>Цитата(Solver * 6.5.2007, 22:57) 180162</div>

Ну если конкретные вопросы типа этого возникают, то я сюда иногда заглядываю. E-mail у меня тоже есть :)
[/b]


Хорошо, если ты мне поможешь в будующем, но, на сегодня, я решил все проблемы, которые меня интересовали... Дело осталось за малым, найти время - дописать то, что я уже продумал.... (И проверил...) (Старая школа... Такого - чичас не встретишь... Если бы встретил - передал бы все свои знания...)

razer
07.05.2007, 01:22
<div class='quotetop'>Цитата(Solver * 6.5.2007, 22:57) 180162</div>

Ну если конкретные вопросы типа этого возникают, то я сюда иногда заглядываю. E-mail у меня тоже есть :)
[/b]

Ухты, а ты в Firaxis работаешь? :)

Solver
07.05.2007, 02:47
Консультирую.