Forum
Arquivo => SE Extreme 1 => Ajuda e Dúvidas => Topic started by: Morgan on October 14, 2009, 20:50:21
-
Ando as voltas com um ficheiro de excel que calcule a produção em função do nivel de uma mina
Vamos por partes:
XML
Aqui encontram-se as funções principais usadas para a produção:
(Os dados de produção base e inflação de produção do planet são os dados no XML)
//Recebe a produção base, o nível, o rácio de produção do planeta e (1 + (nível da tecnologia de energia * 0.02))
function getProduction($bp, $level, $planetRacio, $renergy) {
$racioValues = array(1.13, 1.13, 1.125, 1.122, 1.15, 1.127);
for($i = 0; $i < count($racioValues); $i++) { //Para cada economia
$prod = $bp[$i] * ($level + 1);
if($level < 5) $prod *= pow(($racioValues[$i] * 2) - 1, $level);
else $prod *= pow(($racioValues[$i] * 2) - 1, 4) * pow($racioValues[$i], ($level - 4));
if($i != 5) { //Não é a energia
//As produções positivas são afectadas segundo os rácios dos Planetas
if($prod > 0) $prod *= $planetRacio[$i];
} else {
if($prod > 0) $prod *= $renergy;
}
$production[$i] = round($prod, 5);
}
return $production;
}
//Os paineis solares são tratados de modo diferente
//Recebe o número do planeta, o nível dos paineís e (1 + (nível da tecnologia de energia * 0.02))
function getSolarPlantProduction($numplanet, $level, $renergy) {
$solarplant = array(0, 80, 15, 20, 10, 0, 0, 0, 0, 0);
$racio = 1.127;
$prod = $renergy * $solarplant[$numplanet] * ($level + 1);
if($level < 0) return 0;
elseif($level < 5) $prod *= pow(($racio * 2) - 1, $level);
else $prod *= pow(($racio * 2) - 1, 4) * pow($racio, ($level - 4));
return array(0, 0, 0, 0, 0, round($prod, 5));
}
Algum voluntário para traduzir isto?
Aguns dados:
- Produção base de metal é 20
- Racio da terra é 1
- Inflacção é 1,5
- Racio interno é 1,3
Produção de uma mina de metal na terra, por nivel:
1 20
2 50
3 95
4 160
5 252
6 342
7 451
8 582
9 740
10 929
-
Trocando por miudos.
Queres um folha de excell, que te mostre as produções das minas, certo?
-
sim
Mina de metal = 36....calcula a produção e indica
* extras apenas dá até nivel 10
-
sim
Mina de metal = 36....calcula a produção e indica
* extras apenas dá até nivel 10
Já carregaste alguma vez no mais? :P
- Inflacção é 1,5
Essa inflação é no preço, não é usada na produção.
-
Não acredito que o morgan, nunca viu o "mais". :O
-
já :P
a questão não é essa
para aquilo que estou a fazer queria ter um ficheiro que colocados os niveis de edificios de produção, tivesse logo o valor de produção desse mesmo nivel
*a parte de conversão da produção em creditos é basica e o que queria simular era diferentes escolhas de evolução de minas e o seu impacto na produção...não propriamente de recursos mas de creditos (via racios ideais)
* * Grosso modo diferentes niveis de produção de minas ( mix de diamante, metal) etc e qual a melhor combinação para cada colonia
Só estou encalhado nas formulas de produções. Posso obter via tabela /hiper via jogo/extras mas não queria ter referencias externas , ficar-me só for formulas
-
Ando baralhadissimo, por isso não sei se entendi bem. :'(
O que queres, é, um file excell, que tenha as minas (todas elas), com todos os níveis, e de preferência com a produção diferente por planeta.
Fora isso, a produção delas em créditos, via rácios ideais.
Exemplo:
Nível | Diamante | Créditos |
1 | 20 | 40 |
2 | 50 | 100 |
3 | 95 | 190 |
«Valores aleatórios»
É isto que pretendes?
-
esqueçe os creditos que só complicas..isso fica para depois
Tens uma folha que com 3x colunas - Edificios, nivel, produção
Ao colocar o nivel em cada celula ele indica a produção...
Exemplo
Mina metal = 30 = 32.107
Mina Diamante = 27 = 10.013
....
...
Simples :-)
-
getProduction:
Dados de entrada:
PRODUCAO_BASE[6]: cada posição para um recurso (M, D, H, Z, N, E)
NIVEL: Nível do edifício do recurso a testar - 1
(ex: Mina de metal nível 10 -> NIVEL = 9)
RACIO_PLANETA[6]: Produção dos recursos do planeta a testar (M, D, H, Z, N, E)
ENERGIA: (1 + (nível da tecnologia de energia * 0.02))
Outro possível dado de entrada:
MULTIPLICADOR_VELOCIDADE:
num sistema a 30x = 30
num sistema normal = 1
Constante:
RACIO_VALUES[6]:
= array(1.13, 1.13, 1.125, 1.122, 1.15, 1.127)
Retorna:
PRODUCOES[6]:
Algoritmo:
POR CADA ECONOMIA (incluindo a energia) as recurso
PRODUCAO = PRODUCAO_BASE[recurso] * (NIVEL + 1)
SE NIVEL < 5
PRODUCAO = PRODUCAO * POTENCIA de ((RACIO_VALUES[recurso] * 2) - 1) ao NIVEL
CASO CONTRARIO
PRODUCAO = PRODUCAO *
POTENCIA de ((RACIO_VALUES[recurso] * 2) - 1) a 4 *
POTENCIA de RACIO_VALUES[recurso] a (NIVEL - 4)
SE recurso = energia
SE PRODUCAO > 0
PRODUCAO = PRODUCAO * ENERGIA
CASO CONTRARIO
SE PRODUCAO > 0
PRODUCAO = PRODUCAO * RACIO_PLANETA[recurso]
PRODUCOES[recurso] = ARREDONDAMENTO da (PRODUCAO * MULTIPLICADOR_VELOCIDADE) a 5 casas decimais
retorna PRODUCOES
No fundo o que isto faz é, dando os dados do planeta e o nível de uma mina, devolve as produções de todos os recursos se a sua mina estivesse a esse nível.
EDIT: O MULTIPLICADOR_VELOCIDADE só funca nas produções, não na energia, logo deveria haver mais um "If" pelo meio.
-
getSolarPlantProduction:
Dados de entrada:
PLANETA_ID: Número do planeta, de 1 a 9 (depende do sistema). Posição 0 mão corresponde a nenhum planeta.
ex: Planeta Terra -> = 3
NIVEL: Nível da Planta solar - 1
ENERGIA: (1 + (nível da tecnologia de energia * 0.02))
Constantes:
SOLAR_PLANT[10] (1 por planeta): Produção das plantas solares em cada planeta
= array(0, 80, 15, 20, 10, 0, 0, 0, 0, 0);
RACIO
= 1.127;
Retorna o valor da energia produzida.
Algoritmo:
PRODUCAO = ENERGIA * SOLAR_PLANT[PLANETA_ID] * (NIVEL + 1)
SE NIVEL < 0
PRODUCAO = 0
CASO CONTRARIO
SE NIVEL < 5
PRODUCAO = PRODUCAO * POTENCIA de (RACIO * 2 - 1) a NIVEL
CASO CONTRARIO
PRODUCAO = PRODUCAO *
POTENCIA de (RACIO * 2 - 1) a 4 *
POTENCIA de RACIO por (NIVEL - 4)
retorna ARREDONDAMENTO da PRODUCAO a 5 casas decimais