Просмотр полной версии : Требуется помощь: Ошибка в TurnDamage
Хотел вернуть "TurnDamage" в CivIVCol, но получил такой error message при компиляции:
CvUnit.cpp
Line: 802
Message: error C2664: 'CvUnit::changeDamage' : cannot convert parameter 2 from 'PlayerTypes' to 'CvUnit *'|
[code]
NeseryozniyVET
12.02.2010, 02:40
<div class='quotetop'>Цитата(kabjans * 12.2.2010, 0:03) 324841</div>
cannot convert parameter 2 from 'PlayerTypes' to 'CvUnit *'|
802: changeDamage(GC.getFeatureInfo(eFeature).getTurnDamage(), NO_PLAYER);[/b]
Неможет конвертировать второй параметр из 'PlayerTypes' в 'CvUnit *'
NO_PLAYER это PlayerTypes
Просмотри параметры для PlayerTypes цывы и колонизации.
pashaintel
12.02.2010, 09:20
Видимо,вместо NO_PLAYER нужно прописать юнита,который получает повреждение. Посмотри использование changeDamage в колонизации методом поиска.
<div class='quotetop'>Цитата(NeseryozniyVET * 12.2.2010, 2:38) 324842</div>
<div class='quotetop'>Цитата(kabjans * 12.2.2010, 0:03) 324841
cannot convert parameter 2 from 'PlayerTypes' to 'CvUnit *'|
802: changeDamage(GC.getFeatureInfo(eFeature).getTurnDamage(), NO_PLAYER);[/b]
Неможет конвертировать второй параметр из 'PlayerTypes' в 'CvUnit *'
NO_PLAYER это PlayerTypes
Просмотри параметры для PlayerTypes цывы и колонизации.
[/b][/quote]
А можно по-подробнее. В Циве 3250 ссылок на PlayerTypes, в Колонизации - 1903. В каком файле и что собственно смотреть?
<div class='quotetop'>Цитата(Пашок * 12.2.2010, 9:18) 324850</div>
Видимо,вместо NO_PLAYER нужно прописать юнита,который получает повреждение. Посмотри использование changeDamage в колонизации методом поиска.
[/b]
Вряд ли это возможно. Ведь идея вернуть "TurnDamage" в Колонизацию связана с тем, что каждый юнит, попавший на определенную клетку, получает повреждение. К примеру, корабль, попавший в шторм на море теряет несколько процентов прочности. Или сухопутный юнит, оказавшийся в пустыне или болоте, также теряет силу. И как в таком случает прописывать юниты? Они же совершенно различные.
Кроме того в Колонизации changeDamage относится к случаю боестолкновения, когда есть атакующий юнит и соответственно есть защищающийся юнит. Например changeDamage(iAttackerDamage, pDefender). Случая, когда юнит получает повреждения от самого факта нахождения на "опасной" клетке там, естественно нет.
NeseryozniyVET пишет, что это означает "cannot convert parameter 2 from 'PlayerTypes' to 'CvUnit *' = Не может конвертировать второй параметр из 'PlayerTypes' в 'CvUnit *'".
Поэтому возможно решение надо искать в том, что выдает Build log. А именно в этой фразе:
<div class='quotetop'>Цитата</div>
"Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast"[/b]
Я тут поискал на интернете, что значат "reinterpret_cast", "C-style cast" и "function-style cast". Тут (http://www.cppreference.com/wiki/keywords/reinterpret_cast) нашел, к примеру это:
<div class='quotetop'>Цитата</div>[quote]reinterpret_cast
Syntax:
[code]
NeseryozniyVET
12.02.2010, 11:36
PlayerTypes - это игрок, в питон кодах обычно обозначается переменной ePlayer и является целым числом (> -1, NO_PLAYER = -1).
Параметры игрока в SDK описуются в файле CvPlayer.h и CvPlayer.cpp
В \Sid Meier's Civilization 4\Beyond the Sword\CvGameCoreDLL\CvPlayer.cpp понятие "Damage" встречается лишь
- при взятии или защите города (void CvPlayer::acquireCity) и
- при получении Goody (bool CvPlayer::canReceiveGoody).
Даже упоминания о получения повреждений от нахождении на клетке там нет.
В Колонизации ситуация практически аналогичная.
NeseryozniyVET
12.02.2010, 17:34
Посмотри описание функции changeDamage(int, ePlayer); Найди какиe параметры ePlayer она использует, и посмотри есть ли они в CyPlayer.h
pashaintel
12.02.2010, 20:28
kabjans!! Никого не слушай и не трать время попусту. Итак,компилятор выдал тебе:
Message: error C2664: 'CvUnit::changeDamage' : cannot convert parameter 2 from 'PlayerTypes' to 'CvUnit *'|
Это значит,что он не может конвертировать 'PlayerTypes' в 'CvUnit *'. То есть вместо игрока должен быть указан юнит (CvUnit *).
Если ты пишешь свой код в CvUnit.cpp, попробуй переписать вот так:
changeDamage(GC.getFeatureInfo(eFeature).getTurnDamage(), this);
Если это не будет работать, выложи здесь свой код поподробнее.
P.S. Ты абсолютно прав в том,что в колонизации <div class='quotetop'>Цитата</div>
changeDamage относится к случаю боестолкновения, когда есть атакующий юнит и соответственно есть защищающийся юнит. Например changeDamage(iAttackerDamage, pDefender).[/b] В своём собственном посте ты описал правильную подачу этой функции. То есть ,для того,чтобы она работала нужно указать два параметра: количественное значение ущерба и юнит,который этот ущерб получает. И поверь,этой функции абсолютно по барабану, от какого <div class='quotetop'>Цитата</div>
факта [/b] она работает. Главное,указать ущерб и юнита,который его получает.
<div class='quotetop'>Цитата(Пашок * 12.2.2010, 20:26) 324899</div>
kabjans!! Никого не слушай и не трать время попусту. Итак,компилятор выдал тебе:
Message: error C2664: 'CvUnit::changeDamage' : cannot convert parameter 2 from 'PlayerTypes' to 'CvUnit *'|
Это значит,что он не может конвертировать 'PlayerTypes' в 'CvUnit *'. То есть вместо игрока должен быть указан юнит.
Если ты пишешь свой код в CvUnit.cpp, попробуй переписать вот так:
changeDamage(GC.getFeatureInfo(eFeature).getTurnDamage(), this);
Если это не будет работать, выложи здесь свой код поподробнее.
[/b]
Спасибо, Пашок!
Твой код
changeDamage(GC.getFeatureInfo(eFeature).getTurnDamage(), this);
позволил компилировать дальше. :applau2:
Дошел до CyPlot.cpp и снова ошибка, что для меня нормально. Сейчас разбираться буду с ней.
Последние известия с фронта:
Скомпилировал! 0 errors 0 warmings.
ОГРОМНОЕ СПАСИБО!!! :worthy:
Можно продолжать работу дальше.
pashaintel
12.02.2010, 21:10
поздравления :applau2: !
Ты сначала этот то код проверь,работает или нет :secret:
<div class='quotetop'>Цитата(Пашок * 12.2.2010, 21:08) 324904</div>
поздравления :applau2: !
Ты сначала этот то код проверь,работает или нет :secret:
[/b]
Пока это только голая CvGameCoreDLL.dll. Сейчас собираю XML и ART части. Лишь когда они будут готовы, можно будет запустить и проверить работоспособность (запустится ли) и правильность функционирования.
pashaintel
12.02.2010, 21:18
<div class='quotetop'>Цитата(kabjans * 12.2.2010, 20:15) 324906</div>
<div class='quotetop'>Цитата(Пашок * 12.2.2010, 21:08) 324904
поздравления :applau2: !
Ты сначала этот то код проверь,работает или нет :secret:
[/b]
Пока это только голая CvGameCoreDLL.dll. Сейчас собираю XML и ART части. Лишь когда они будут готовы, можно будет запустить и проверить работоспособность (запустится ли) и правильность функционирования.
[/b][/quote]
Удачи :bye:
Ввел шторм для пробы. Загнал каравеллу в точку шторма.
Далее хроника с места события.
ход......состояние каравеллы
0...................3/3
1...................2.4/3
2...................2.1/3
3................... 1.8/3
4...................1.5/3
5...................1.2/3
Шторм отступил на соседнюю клетку и на каравелле открыли по этому случаю бочонок рома. Надо поторопиться и успеть к ним в кают компанию, пока они весь ром не выпили без меня. :win:
Еще раз ОГРОМНОЕ СПАСИБО за помощь!
pashaintel
12.02.2010, 22:42
:bayan: Пришли,пожалуйста,бутылочку бандеролью :biglol: , только ценной,а то на почте выпьют :boo:, у них там тоже функция changeDamage неплохо работает
Снимки шторма
http://img715.imageshack.us/img715/8459/stormj.th.jpg (http://img715.imageshack.us/img715/8459/stormj.jpg)
и рифов из Колонизации.
http://img175.imageshack.us/img175/8488/reefs.th.jpg (http://img175.imageshack.us/img175/8488/reefs.jpg)
Рифы мне не очень нравятся)
Supremator
13.02.2010, 15:23
Это похоже на астеройды.
<div class='quotetop'>Цитата(Павел I * 13.2.2010, 12:10) 324962</div>
Рифы мне не очень нравятся)
[/b]
<div class='quotetop'>Цитата(Gx710 * 13.2.2010, 15:21) 324986</div>
Это похоже на астеройды.
[/b]
Правильно, это и есть астероиды. А те рифы, что я нашел, были сделаны из "меди". Они вообще розовыми появились на экране, как цветочная клумба. Смотрелось сие "чудо" просто ужасно. Поэтому я перепробовал массу вариантов и остановился на астероидах. Они более всего напоминают рифы.
Кстати, из шторма очень легко сделал "грозу". Это и для моря-океана, и для суши. Ходить под ней можно без минусов, но 5% TurnDamage есть. Плюс сейчас буду давать минусы к добыче ресурсов на клетках в случае начала шторма или грозы на ней.
Нашел еще пару интересных возможностей в данном моде.
Во-первых, шторм на море у побережья может уменьшить отдачу еды с морских клеток, что абсолютно логично. Причем это можно очень просто менять самому в настройках. Я свел отдачу при шторме к нулю. Объяснение простое: шторм и корабли стоят у пирса.
Аналогично шторму ввел для суши и моря "дождь с грозой". Урон юнитам и недобор с клеток минимальный.
Во-вторых, в моде можно не только негативные явления природы типа шторма или грозы вводить, но и положительные. Я ввел для пробы "встречный ветер" (естественно без минусов по повреждению), который дает плюс 1 к скорости движения корабля. Все прекрасно работает.
Но тут возник вопрос.
При наведении мыши на клетку со штормом появляется красная надпись "Damage per Turn 15%".
Я не нашел источник, откуда она берется. Сама надпись - это TXT_KEY_PLOT_DAMAGE из CIV4GameText.....xml. Но откуда она идет?
Кроме того непонятно откуда идет именно красный цвет. Меня это интересует, потому что для "встречного ветра" я хотел бы ввести надпись зеленым цветом.
Кто-нибудь знает где копать? Поиск в питоне и xml файлах Цивилизации (искал по "TXT_KEY_PLOT_DAMAGE") ничего не дал. По идее из Питона команда должна идти, но там, хоть тресни, ее нет.
pashaintel
14.02.2010, 01:59
Посмотри в CvGameTextMgr.cpp
<div class='quotetop'>Цитата(Пашок * 14.2.2010, 1:57) 325040</div>
Посмотри в CvGameTextMgr.cpp
[/b]
Нашел! Точно и там же цвет задается.
Там так дано:
[code]
pashaintel
14.02.2010, 02:22
<div class='quotetop'>Цитата(kabjans * 14.2.2010, 1:13) 325042</div>
<div class='quotetop'>Цитата(Пашок * 14.2.2010, 1:57) 325040
Посмотри в CvGameTextMgr.cpp
[/b]
Нашел! Точно и там же цвет задается.
Там так дано:
[code]
<div class='quotetop'>Цитата(Пашок * 14.2.2010, 2:20) 325044</div>
<div class='quotetop'>Цитата(kabjans * 14.2.2010, 1:13) 325042
<div class='quotetop'>Цитата(Пашок * 14.2.2010, 1:57) 325040
Посмотри в CvGameTextMgr.cpp
[/b]
Нашел! Точно и там же цвет задается.
Там так дано:
Надо попробовать. По идее должно получиться, если с грамматикой ничего не наврал. У меня iDamage = -1 при "встречном ветре".
[/b][/quote]
В таком случае эта строка у тебя будет отображаться у каждой клетки,там где надо и там,где не надо.
[/b][/quote]
Почему? У меня получилось именно на клетке со "встречным ветром." Цвет зеленый и надпись та, что мне надо. На соседней, где шторм, там красная надпись. На других вообще без надписей.
Я проверил только на море, так как "встречного ветра" на суше у меня естественно нет.
http://img138.imageshack.us/img138/8103/tailwind.th.jpg (http://img138.imageshack.us/img138/8103/tailwind.jpg)
Где-то на форуме при обсуждении одного из модов, представленных тут, вычитал фразу о том, что AI обходит опасные участки типа снегов. Причем сделано это не тупым запретом на проход по снегу, а AI именно знает, что там опасно, и поэтому обходит.
Целый час искал, читая форум, но никак не найти, где это было сделано. Кто-нибудь знает, в каком из модов это есть?
Заранее спасибо.
Хальк Юсдаль
14.02.2010, 22:05
<div class='quotetop'>Цитата(kabjans * 14.2.2010, 20:16) 325145</div>
Где-то на форуме при обсуждении одного из модов, представленных тут, вычитал фразу о том, что AI обходит опасные участки типа снегов. Причем сделано это не тупым запретом на проход по снегу, а AI именно знает, что там опасно, и поэтому обходит.
[/b]
Файл GlobalDefines.xml. Значение PATH_DAMAGE_WEIGHT изменяется на нужное, в данном случае 500000 кажется. Цифру эту опытным путем вывел васака.
P.S. Странно, текст сообщения при отправке удвоился.
<div class='quotetop'>Цитата(Хальк Юсдаль * 14.2.2010, 22:03) 325158</div>
<div class='quotetop'>Цитата(kabjans * 14.2.2010, 20:16) 325145
Где-то на форуме при обсуждении одного из модов, представленных тут, вычитал фразу о том, что AI обходит опасные участки типа снегов. Причем сделано это не тупым запретом на проход по снегу, а AI именно знает, что там опасно, и поэтому обходит.
[/b]
Файл GlobalDefines.xml. Значение PATH_DAMAGE_WEIGHT изменяется на нужное, в данном случае 500000 кажется. Цифру эту опытным путем вывел васака.
P.S. Странно, текст сообщения при отправке удвоился.
[/b][/quote]
Большое спасибо, Хальк Юсдаль, за подсказку. Я совершенно точно помнил, что читал об этом на русском языке, а значит на нашем форуме, вот только где точно найти никак не мог. Сейчас поэкспериментирую на штормах и рифах....
Powered by vBulletin® Version 4.1.9 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot