eStalker
Mar 24 2005, 15:58
Насколько снижается цена теха при продвижении по дереву развития?
Например есть тех
0 3 0 5 0 0
цена 100ресов
как она измениться взависимости от развития энергии, или биологии,
или оружия, или оружия(+1) и конструкции(+2)
ну все варианты перечислять бессмысленно - основное правило какое?
Korsar
Mar 25 2005, 02:27
если не ошибаюсь, цена теха = исходной цене + константа * число изученных техов
Musoid
Mar 25 2005, 04:28
ИМХО не так просто.
С уважением.
Ну примерно так:
CODE
for(BYTE c=0;c<eTechnology::m_Counter;c++){
for(BYTE i=0;i<m_Category[c].m_Counter;i++){
TBaseTechnology* pSItem = TTechnology::This->Technology(c,i);
TBaseTechnology* pPItem = Technology(c,i); if(NOT pPItem) continue;
if(pPItem==NULL OR (pPItem->m_Flags&TBaseTechnology::FLG_MaxCheapen)) continue;
// Расчет уменьшения цены постройки технологии
long SDelta = LONG_MAX;
for(BYTE f=0;f<eFieldOfStudy::m_Counter;f++){
// Поиск наименьшего превышения уровня технологий по всем полям
short LDelta = (short)(dLevels[f] - pPItem->m_ResearchLevel[f]);
if(LDelta==0 AND pPItem->m_ResearchLevel[f]>0)
break;
else if(LDelta<SDelta)
SDelta = LDelta;
}
if(f!=eFieldOfStudy::m_Counter) continue;
SDelta*=4; // 4% за каждое превышение
if(SDelta>76){
pPItem->m_Flags|=TBaseTechnology::FLG_MaxCheapen;
SDelta = 76;
}
// Уменьшение цены
for(BYTE m=0;m<eConstructionCost::m_Counter;m++){
long newCost = pSItem->m_Cost[m] - SDelta * pSItem->m_Cost[m] / 100;
pPItem->m_Cost[m] = (short)iif(newCost<1 AND pSItem->m_Cost[m]>0,1,newCost);
}
}
}
Korsar
Mar 25 2005, 07:27
нерпавильно понял вопрос - показалось, что речь шла об удорожании изучения самого теха
eStalker
Mar 25 2005, 08:20
Спасибо Alex, красивый ответ.. только плохо понятный 8-) это вообще что за язык?? 8-))
Musoid
Mar 25 2005, 08:22
Насколько я вижу, это Си.
С уважением.
AlexSmall
Mar 25 2005, 08:31
Это вообще-то С++. Но насколько я понял, речь то все таки шла не об уменшении цени постройки конкретного теха, а об увеличении цены других техов при изучении например какого-то одного(или нескольких соседних).
Так что вопрос пока не отвечен...
eStalker
Mar 25 2005, 09:19
вопрос был мой! и как раз про снижение цены теха, а не увеличения его исследования,
Alex вполне ответил на него, только C++ какой то кривой...
P.S. Кол-во МИНЕРАЛОВ уменьшается в той-же пропорции?
Ты поокуратней про C++, это ХМ писал.
А это по второму вопросу:
CODE
struct eConstructionCost{
enum{
Ironium,
Uranium,
Liberium,
Resource,
m_Counter
};
Ну если ты все понял, может всем остальным по-русски напишешь, а то лениво. Потомки оценят.
Stratus
Mar 25 2005, 12:27
QUOTE(Korsar @ Mar 25 2005, 04:27 AM)
если не ошибаюсь, цена теха = исходной цене + константа * число изученных техов
мну думать что после lvl 10 формула уже другая
...и скорее всего там число изученных техов превращается в число изученных техов для данной области
Ну уж тогда я и по второму вопросу выложу все карты, авось ХМ не обидется:
CODE
double LevelCost(BYTE field)const{
const bFieldOfStudy &fs = m_FS[field];
return floor((StandardCost(fs.m_Level)+fs.m_Level*fs.m_AdditiveCost)*fs.m_RaceCoeff);
}
CODE
void TResearch::RecalculateACost(){
for(BYTE f=0;f<eFieldOfStudy::m_Counter;f++){
long ACost = 0;
for(BYTE s=0;s<eFieldOfStudy::m_Counter;s++){
if(s==f) continue;
ACost+=(m_FS[s].m_Level-1)*10;
}
m_FS[f].m_AdditiveCost = ACost;
}
}
"Истина где-то рядом"
кстати.. а можно переделать техэдитор, чтобы он под новый клиент работал?
можно, хотя там вся трабла в картинках - оставь старые bmp и все будет работать
Valerich
Feb 10 2006, 11:20
QUOTE(Alex @ Mar 25 2005, 13:17)
Ну если ты все понял, может всем остальным по-русски напишешь, а то лениво. Потомки оценят.
Поддерживаю!
Тоже интересно будет почитать в переводе, а то в подлиннике что-то смысел не улавливаю.
Weonard
Feb 11 2006, 12:07
Ща ХМ увидит такое количество кусков сурца сервера и хватится за голову(или за топор... =) ).
lonewolf
Apr 3 2006, 13:41
QUOTE(Alex @ Mar 25 2005, 13:17)
может всем остальным по-русски напишешь, а то лениво. Потомки оценят.
для этого желательно хоть примерно знать что такое m_Counter, чем eTechnology отличается от TTechnology и TBaseTechnology, что делает TTechnology::This->Technology(c,i); когда верно условие (NOT pPItem)... иначе "хливкие шорьки пырялись по наве, и хрюкотали зелюки как мюмзики в мове"
Это "lo-fi" версия форума. Для просмотра полной версии для получения большей информации, форматирования и просмотра изображений, пожалуйста
нажмите сюда.