nemogu nikak zdelat' 4tobi range poleta nuke bila 5 ili 10, naprimer, podskazhite, gde izmenit'?
probival, nefiga ne rabotaet (((
pomoemu nuzhno sam doman ( air, land ili immoble ) delat' noviy, a eto uzhe mne ne po zubam ((
как зделать ядерный взрыв только на одну клето4ку ( без +1 в округе ).
тоесть если шмаляеш по городу ракетой то вокруг него никаких разрушений нету
CIV4UnitInfos : iNukeRange
Радиус поражения при ядерном ударе. В игре стоит "1". Если поменять на "0", будет наносить ущерб только одной клетке.
Если поменять на "10"+, то будет очищать континенты. Можно еще уровень ущерба от ядерных ударов повысить, и получится полный апокалипсис.
<div class='quotetop'>Цитата(Степаныч * 13.7.2007, 0:06) [snapback]190621[/snapback]</div>в СДК есть две функции, которые вызываются из движка - это:Эх спасибо и на этом... так хотелось сделать крутое оружие, а не эту пколку, ну так хоть радиус увеличу... А можно сделать, что бы она не на всю карту стреляла?
[/b]
CvSelectionGroup::canDoInterfaceMode() и
CvSelectionGroup::canDoInterfaceModeAt ()
Находятся оне в файле (соответственно) CvSelectionGroup.cpp
Так вот. первая функция служит для "включения" кнопки (Там много режимов, не только NUKE)
вторая - определяет уже конкретно, какой тайл ты собираешься бомбить.
Если правильно переписать вторую функцию, то можно ограничить радиус действия NUKE.
Но, там есть подводные камни. Карта - круговая. Т.е. Если твоя NUKE будет стоять рядом с границей карты, то надо правильно обработать радиус... (Допустим - ты стоишь на карте с коорд. Х = 2, а стрельнуть хочешь, где то по последнему или рядом с ними тайлу, на карте оне расположены рядом, но, координата второго тайла будет где то Х = 63 (для мини карт)).
Но, в самом СДК есть функция generatePatch(), которая поможет тебе определить, сколько "шагов" до нужного тебе тайла... Так что - дерзай!
З.Ы. Но для АИ используются свои функции определения (АИ не использует интерфейс) Поэтому их тож надо будет переписать, а то АИ получит преимущество...
Программирование - это не то, что ты думаешь.... - Это то, что думает о тебе компьютер.
http://blacksun.civfanatics.ru
-------------------------------------------------
MTDG2 - [civ]christianity[/civ]Монархия
---------------------------------
Председатель CFR Awards 2007
---------------------------------
Председатель CFR Awards 2008
А можно подождать 10 дней и посмотреть как это сделано в BtS для тактической ракеты.
Разумеется, это непохоже на беспорядочные, неорганизованные выборы у древних, когда – смешно сказать – даже неизвестен был заранее самый результат выборов.
Строить государство на совершенно неучитываемых случайностях, вслепую – что может быть бессмысленней?
И вот всё же, оказывается, нужны были века, чтобы понять это.
© Александр Григорьевич Лукашенко (первый Благодетель Единого Государства выбранный единогласно на безальтернативной основе)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Вы знаете, мне честно говоря, уже задолбало читать все это - тут нет ничего умного.
Найдитесь, хоть кто нибудь разумный и о разумном начните разговор. © Vigo
<div class='quotetop'>Цитата(DrLexus * 20.7.2007, 16:24) [snapback]191790[/snapback]</div>И дырки в земле делает ... (как в Альфа центавре)Кстати если получится то сделаю разрушительную силу ракеты очень сильную. Так как в жизни ядерный удар действительно сметает всё и вся
[/b]
Программирование - это не то, что ты думаешь.... - Это то, что думает о тебе компьютер.
http://blacksun.civfanatics.ru
-------------------------------------------------
MTDG2 - [civ]christianity[/civ]Монархия
---------------------------------
Председатель CFR Awards 2007
---------------------------------
Председатель CFR Awards 2008
<div class='quotetop'>Цитата(NeverMind * 4.7.2007, 16:33) [snapback]189716[/snapback]</div>[quote]
В XML можно максимально повысить ущерб от ядерных взрывов, но вряд ли города будут полностью уничтожаться. Я давно когда тестировал - уменьшало любой город до 1.
GlobalDefines.xml:
[code]
<div class='quotetop'>Цитата</div>NUKE_FALLOUT_PROB - вероятность появления радиации (загрязнения) на тайле в зоне ядерного взрыва.Вот полная функция по ядерному удару
[codebox]void CvPlot::nukeExplosion(int iRange, CvUnit* pNukeUnit)
{
CLLNode<IDInfo>* pUnitNode;
CvCity* pLoopCity;
CvUnit* pLoopUnit;
CvPlot* pLoopPlot;
CLinkList<IDInfo> oldUnits;
CvWString szBuffer;
int iNukeDamage;
int iNukedPopulation;
int iDX, iDY;
int iI;
GC.getGameINLINE().changeNukesExploded(1);
for (iDX = -(iRange); iDX <= iRange; iDX++)
{
for (iDY = -(iRange); iDY <= iRange; iDY++)
{
pLoopPlot = plotXY(getX_INLINE(), getY_INLINE(), iDX, iDY);
if (pLoopPlot != NULL)
{
// if we remove roads, don't remove them on the city... XXX
pLoopCity = pLoopPlot->getPlotCity();
if (pLoopCity == NULL)
{
if (!(pLoopPlot->isWater()) && !(pLoopPlot->isImpassable()))
{
if (NO_FEATURE == pLoopPlot->getFeatureType() || !GC.getFeatureInfo(pLoopPlot->getFeatureType()).isNukeImmune())
{
if (GC.getGameINLINE().getSorenRandNum(100, "Nuke Fallout") < GC.getDefineINT("NUKE_FALLOUT_PROB"))
{
pLoopPlot->setImprovementType(NO_IMPROVEMENT);
pLoopPlot->setFeatureType((FeatureTypes)(GC.getDefineINT("NUKE_FEATURE")));
}
}
}
}
oldUnits.clear();
pUnitNode = pLoopPlot->headUnitNode();
while (pUnitNode != NULL)
{
oldUnits.insertAtEnd(pUnitNode->m_data);
pUnitNode = pLoopPlot->nextUnitNode(pUnitNode);
}
pUnitNode = oldUnits.head();
while (pUnitNode != NULL)
{
pLoopUnit = ::getUnit(pUnitNode->m_data);
pUnitNode = oldUnits.next(pUnitNode);
if (pLoopUnit != NULL)
{
if (pLoopUnit != pNukeUnit)
{
if (!pLoopUnit->isNukeImmune() && !pLoopUnit->isDelayedDeath())
{
iNukeDamage = (GC.getDefineINT("NUKE_UNIT_DAMAGE_BASE") + GC.getGameINLINE().getSorenRandNum(GC.getDefineINT("NUKE_UNIT_DAMAGE_RAND_1"), "Nuke Damage 1") + GC.getGameINLINE().getSorenRandNum(GC.getDefineINT("NUKE_UNIT_DAMAGE_RAND_2"), "Nuke Damage 2"));
if (pLoopCity != NULL)
{
iNukeDamage *= max(0, (pLoopCity->getNukeModifier() + 100));
iNukeDamage /= 100;
}
if (pLoopUnit->canFight() || pLoopUnit->airBaseCombatStr() > 0)
{
pLoopUnit->changeDamage(iNukeDamage, ((pNukeUnit != NULL) ? pNukeUnit->getOwnerINLINE() : NO_PLAYER));
}
else if (iNukeDamage >= GC.getDefineINT("NUKE_NON_COMBAT_DEATH_THRESHOLD"))
{
pLoopUnit->kill(false, ((pNukeUnit != NULL) ? pNukeUnit->getOwnerINLINE() : NO_PLAYER));
}
}
}
}
}
if (pLoopCity != NULL)
{
for (iI = 0; iI < GC.getNumBuildingInfos(); ++iI)
{
if (pLoopCity->getNumRealBuilding((BuildingTypes)iI) > 0)
{
if (!(GC.getBuildingInfo((BuildingTypes) iI).isNukeImmune()))
{
if (GC.getGameINLINE().getSorenRandNum(100, "Building Nuked") < GC.getDefineINT("NUKE_BUILDING_DESTRUCTION_PROB"))
{
pLoopCity->setNumRealBuilding(((BuildingTypes)iI), pLoopCity->getNumRealBuilding((BuildingTypes)iI) - 1);
}
}
}
}
iNukedPopulation = ((pLoopCity->getPopulation() * (GC.getDefineINT("NUKE_POPULATION_DEATH_BASE") + GC.getGameINLINE().getSorenRandNum(GC.getDefineINT("NUKE_POPULATION_DEATH_RAND_1"), "Population Nuked 1") + GC.getGameINLINE().getSorenRandNum(GC.getDefineINT("NUKE_POPULATION_DEATH_RAND_2"), "Population Nuked 2"))) / 100);
iNukedPopulation *= max(0, (pLoopCity->getNukeModifier() + 100));
iNukedPopulation /= 100;
pLoopCity->changePopulation(-(min((pLoopCity->getPopulation() - 1), iNukedPopulation)));
}
}
}
}
gDLL->getEventReporterIFace()->nukeExplosion(this, pNukeUnit);
}[/codebox]
По населению:
- Базовые потери - процент 30+R1(20)+R2(20) от населения города, R - случайные числа из 20.
- Бобмбоубежище снижает полученное число на 50%
Итого: потери населения при ядерном ударе варьируются в пределах 30-70%, и 15-35% - в городе с бомбоубежищем. При этом город не может быть уничтожен, т.е население не опускается ниже 1.[/b]
Я сам создал пару сценариев про ядерную войну. ВСЕ они проходят одинаково:
Я объявляю врагам войну выжигаю их территорию и бросаюсь на ней уничтожив ядерными ударами ихнюю армию.А тупой(причём тупой на всех уровнях сложности) бот скидывает все свои бомбы на мои города. Потом я уничтожаю обессиленного бота во время экономического коллапса(ввиду резкого увеличения державы: города не содержат сами себя) и глобального потепления(то есть опустынивания). Всё скучно и банально.
Ранее это сообщение открывало тему, которая называлась "Ядерная война... Скучно это... ".
Соединил с предыдущей аналогичной темой.
Хальк Юсдаль