Open Manuestaire opened 11 years ago
Voy avanzando con el código, pero me gustaría hablar con @NiciusB a ver si voy bien...
<?php
//calculamos los modificadores para el daño y la defensa
$mod_ata = ((3*($lvlsabot^1.3635))/(2*$lvlsabot)); //se calcula el modificador respecto al nivel de sabotage
$mod_def = ((3*($lvldefen^1.3635))/(2*$lvldefen)); //se calcula el modificador respecto al nivel de defensa
//calculamos el daño y defensa de cada tipo de unidad
$ata_sabot = ($sabot_base_ata * $mod_ata); //se calcula el ataque de cada saboteador
$def_sabot = ($sabot_base_def * $mod_def); //se calcula la defensa de cada saboteador
$ata_gang = ($gang_base_ata * $mod_ata);
$def_gang = ($gang_base_def * $mod_ata);
$ata_guard = ($guard_base_ata * $mod_def); //se calcula el ataque de cada guardia
$def_guard = ($guard_base_def * $mod_def); //se calcula la defensa de cada guardia
$ata_antidist = ($antitist_base_ata * $mod_def);
$def_antidist = ($antidist_base_def * $mod_def);
function distribute_damage($num_unidad1,$num_unidad2) // ATENCIÓN: la primera unidad siempre recibe más daño que la segunda.
{
if (!($num_unidad1 + $num_unidad2)) { //en php 0 se evalua como FALSE.
throw new Exception('División por cero.'); //al lanzar una excepción, la ejecución se para hasta llegar a un catch.
}
else {
return (($num_unidad1 * 1.1)/($num_unidad1 + $num_unidad2));
//$damagetoguard = 1 - $damagetoantidist;
}
}
//en caso de ataque tipo 1 (sabotaje > defensores atacan primero)
//ronda 1 (atacan los defensores)
/* preparamos los valores necesarios para el ataque */
$damage_guard = $num_guard * $ata_guard;
$damage_antidist = $num_antidist * $ata_antidist;
$damage_of_defenders = $damage_guard + $damage_antidist;
$damage_to_gang = distribute_damage($num_gang,$num_sabot);
$damage_to_sabot = 1 - $damage_to_gang;
/* calculamos el ataque */
$num_gang = floor(($num_gang * $def_gang - $damage_to_gang * $damage_of_defenders)/$def_gang);
$num_sabot = floor(($num_sabot * $def_sabot - $damage_to_sabot * $damage_of_defenders)/$def_sabot);
//ronda 2 (atacan los atacantes)
if($numsabos>0){
$damage_sabot = $numsabot * $atasabot;
$damageofgang = $num000 * $ata000;
$damageofatackerstot = $damageofsabot + $damageofgang;
if($numantidist > 0) {//función externa, aquí calculamos el tanto por uno de daño que reciben los antidisturbios, el resto lo absorben los guardias.
$damagetoantidist = distribute_damage($num_antidist,$num_guard);
}else{
}
$numantdist = int((($numantidist * $defantidist) - ($damagetoantidist * $damageofatackerstot)) / $defantidist);
$numguard = int((($numguard * $defguard) - ($damagetoguard * $damageofatackerstot)) / $defguard);
}else{
//defensor gana
calculofama($variable,$variable2);
}
//ronda 3 (atacan defensores otra vez)
if($numguard>0){
$numsabos = int(($numsabot * $defsabot) - ($numguard * $ataguard));
}else{
//atacante gana
calculoedificios($numsabot,$edifobjetivo);
}
//ronda 4 (atacante ataca por última vez)
if($numsabos>0){
$numguard = int(($numguard * $defguard) - ($numsabos * $atasabot));
//calcular daño a edificios, botín etc
}else{
//defensor gana
}
?>
Nota: con esta otra formula, los modificadores llegarían a 10 en lugar de a 8: 3( x ^1.4119544)/(2 *x ) ó 3( x ^1.411954371)/(2 *x )
yo ya me empiezo a perder xD
Simulador de ataques: http://megacorporation.conpingo.com/sabotajes/
<?php
$sabot_base_ata =10; // aun falta definirlos
$sabot_base_def =5;
$gang_base_ata =15;
$gang_base_def =10;
$poli_base_ata =5;
$poli_base_def =10;
$antitist_base_ata =10;
$antidist_base_def =15;
//calculamos los modificadores para el daño y la defensa
$mod_ata = ((3*(pow($lvlsabot,1.3635)))/(2*$lvlsabot)); //se calcula el modificador respecto al nivel de sabotage
$mod_def = ((3*(pow($lvldefen,1.3635)))/(2*$lvldefen)); //se calcula el modificador respecto al nivel de defensa
//calculamos el daño y defensa de cada tipo de unidad
$ata_sabot = ($sabot_base_ata * $mod_ata); //se calcula el ataque de cada saboteador
$def_sabot = ($sabot_base_def * $mod_def); //se calcula la defensa de cada saboteador
$ata_gang = ($gang_base_ata * $mod_ata);
$def_gang = ($gang_base_def * $mod_ata);
$ata_poli = ($poli_base_ata * $mod_def); //se calcula el ataque de cada policia
$def_poli = ($poli_base_def * $mod_def); //se calcula la defensa de cada policia
$ata_antidist = ($antitist_base_ata * $mod_def);
$def_antidist = ($antidist_base_def * $mod_def);
function distribute_damage($num_unidad1,$num_unidad2) // ATENCIÓN: la primera unidad siempre recibe más daño que la segunda.
{
if (!($num_unidad1 + $num_unidad2)) { //en php 0 se evalua como FALSE.
throw new Exception('División por cero.'); //al lanzar una excepción, la ejecución se para hasta llegar a un catch.
}
else {
return (($num_unidad1 * 1.1)/($num_unidad1 + $num_unidad2));
//$damagetopoli = 1 - $damagetoantidist;
}
}
function any_alive($num_unidad1, $num_unidad2)
{
return (($num_unidad1 > 0) or ($num_unidad2 > 0));
}
echo("Ronda 0");
echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");
//en caso de ataque tipo 1 (sabotaje > defensores atacan primero)
//ronda 1 (atacan los defensores)
/* preparamos los valores necesarios para el ataque */
$damage_poli = $num_poli * $ata_poli;
$damage_antidist = $num_antidist * $ata_antidist;
$damage_of_defenders = $damage_poli + $damage_antidist;
$damage_to_gang = distribute_damage($num_gang,$num_sabot);
$damage_to_sabot = 1 - $damage_to_gang;
/* calculamos el ataque */
$num_gang = floor(($num_gang * $def_gang - $damage_to_gang * $damage_of_defenders)/$def_gang);
$num_sabot = floor(($num_sabot * $def_sabot - $damage_to_sabot * $damage_of_defenders)/$def_sabot);
echo("Ronda 1");
echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");
//ronda 2 (atacan los atacantes)
if(any_alive($num_gang,$num_sabot)){
$damage_sabot = $num_sabot * $ata_sabot;
$damage_gang = $num_gang * $ata_gang;
$damage_of_atackers = $damage_sabot + $damage_gang;
$damage_to_antidist = distribute_damage($num_antidist,$num_poli);
$damage_to_poli = 1 - $damage_to_antidist;
/*Calculamos la segunda ronda*/
$num_antdist = floor(($num_antidist * $def_antidist - $damage_to_antidist * $damage_of_atackers) / $def_antidist);
$num_poli = floor(($num_poli * $def_poli - $damage_to_poli * $damage_of_atackers) / $def_poli);
echo("Ronda 2");
echo("poli: $num_poli , antidist: $num_antidist ,gang: $num_gang ,sabot: $num_sabot");
}else{
//calculofama($variable,$variable2);
echo("El defensor gana");
}
//ronda 3 (atacan defensores otra vez)
if($numpoli>0){
$numsabos = int(($numsabot * $defsabot) - ($numpoli * $atapoli));
}else{
//atacante gana
calculoedificios($numsabot,$edifobjetivo);
}
//ronda 4 (atacante ataca por última vez)
if($numsabos>0){
$numpoli = int(($numpoli * $defpoli) - ($numsabos * $atasabot));
//calcular daño a edificios, botín etc
}else{
//defensor gana
}
?>
Actualizada la web, pero el codigo tiene algunos fallos ;D
No es int(, es floor( te olvidaste de poner comillas en echo("Ronda 1"); y otras
jaja pero por lo demas esta bien
Faltan algunas cosillas todavía de código a partir del jueves espero terminarlo...
EDIT: he corregido esa parte del código que no había llegado aún.
<?php
/*Contantes:*/
$sabot_base_ata =5;
$sabot_base_def =1;
$gang_base_ata =3;
$gang_base_def =3;
$poli_base_ata =3;
$poli_base_def =3;
$antitist_base_ata =1;
$antidist_base_def =5;
//calculamos los modificadores para el daño y la defensa
$mod_ata = ((3*(pow($lvlsabot,1.3635)))/(2*$lvlsabot)); //se calcula el modificador respecto al nivel de sabotage
$mod_def = ((3*(pow($lvldefen,1.3635)))/(2*$lvldefen)); //se calcula el modificador respecto al nivel de defensa
//calculamos el daño y defensa de cada tipo de unidad
$ata_sabot = ($sabot_base_ata * $mod_ata); //se calcula el ataque de cada saboteador
$def_sabot = ($sabot_base_def * $mod_def); //se calcula la defensa de cada saboteador
$ata_gang = ($gang_base_ata * $mod_ata);
$def_gang = ($gang_base_def * $mod_ata);
$ata_poli = ($poli_base_ata * $mod_def); //se calcula el ataque de cada policia
$def_poli = ($poli_base_def * $mod_def); //se calcula la defensa de cada policia
$ata_antidist = ($antitist_base_ata * $mod_def);
$def_antidist = ($antidist_base_def * $mod_def);
function distribute_damage($num_unidad1,$num_unidad2) // ATENCIÓN: la primera unidad siempre recibe más daño que la segunda.
{
if (!($num_unidad1 + $num_unidad2)) { //en php 0 se evalua como FALSE.
throw new Exception('División por cero.'); //al lanzar una excepción, la ejecución se para hasta llegar a un catch.
}
else {
return (($num_unidad1 * 1.1)/($num_unidad1 + $num_unidad2));
//$damagetopoli = 1 - $damagetoantidist;
}
}
function any_alive($num_unidad1, $num_unidad2)
{
return (($num_unidad1 > 0) or ($num_unidad2 > 0));
}
echo("Ronda 0");
echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");
//en caso de ataque tipo 1 (sabotaje > defensores atacan primero)
//ronda 1 (atacan los defensores)
/* preparamos los valores necesarios para el ataque */
$damage_poli = $num_poli * $ata_poli;
$damage_antidist = $num_antidist * $ata_antidist;
$damage_of_defenders = $damage_poli + $damage_antidist;
$damage_to_gang = distribute_damage($num_gang,$num_sabot);
$damage_to_sabot = 1 - $damage_to_gang;
/* calculamos el ataque */
$num_gang = floor(($num_gang * $def_gang - $damage_to_gang * $damage_of_defenders)/$def_gang);
$num_sabot = floor(($num_sabot * $def_sabot - $damage_to_sabot * $damage_of_defenders)/$def_sabot);
/*Reiniciamos los valores neativos a 0*/
if($num_gang < 1){ $num_gang = 0;}
if($num_sabot < 1){ $num_sabot = 0;}
echo("<br> Ronda 1 <br>");
echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");
//ronda 2 (atacan los atacantes)
if(any_alive($num_gang,$num_sabot)){
$damage_sabot = $num_sabot * $ata_sabot;
$damage_gang = $num_gang * $ata_gang;
$damage_of_atackers = $damage_sabot + $damage_gang;
$damage_to_antidist = distribute_damage($num_antidist,$num_poli);
$damage_to_poli = 1 - $damage_to_antidist;
/*Calculamos la segunda ronda*/
$num_antdist = floor(($num_antidist * $def_antidist - $damage_to_antidist * $damage_of_atackers) / $def_antidist);
$num_poli = floor(($num_poli * $def_poli - $damage_to_poli * $damage_of_atackers) / $def_poli);
echo("<br> Ronda 2 <br>");
echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");
}else{
//calculofama($variable,$variable2);
echo("El defensor gana");
}
/*Reiniciamos los valores neativos a 0*/
if($num_antidist < 1){ $num_antidist = 0;}
if($num_poli < 1){ $num_poli = 0;}
//ronda 3 (atacan defensores otra vez)
if(anyalive($num_antidist,$num_poli)){
$damage_poli = $num_poli * $ata_poli;
$damage_antidist = $num_antidist * $ata_antidist;
$damage_of_defenders = $damage_poli + $damage_antidist;
$damage_to_gang = distribute_damage($num_gang,$num_sabot);
$damage_to_sabot = 1 - $damage_to_gang;
/* calculamos el ataque */
$num_gang = floor(($num_gang * $def_gang - $damage_to_gang * $damage_of_defenders)/$def_gang);
$num_sabot = floor(($num_sabot * $def_sabot - $damage_to_sabot * $damage_of_defenders)/$def_sabot);
/*Reiniciamos los valores neativos a 0*/
if($num_gang < 1){ $num_gang = 0;}
if($num_sabot < 1){ $num_sabot = 0;}
echo("<br> Ronda 3 <br>");
echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");
}else{
//atacante gana
echo("El atacante gana");
//calculoedificios($numsabot,$edifobjetivo);
}
//ronda 4 (atacante ataca por última vez)
if($numsabos>0){
$numpoli = int(($numpoli * $defpoli) - ($numsabos * $atasabot));
//calcular daño a edificios, botín etc
}else{
//defensor gana
}
?>
/*Contantes:*/
$sabot_base_ata =5;
$sabot_base_def =1;
$gang_base_ata =3;
$gang_base_def =3;
$poli_base_ata =3;
$poli_base_def =3;
$antitist_base_ata =1;
$antidist_base_def =5;
//calculamos los modificadores para el daño y la defensa
$mod_ata = ((3*(pow($lvlsabot,1.3635)))/(2*$lvlsabot)); //se calcula el modificador respecto al nivel de sabotage
$mod_def = ((3*(pow($lvldefen,1.3635)))/(2*$lvldefen)); //se calcula el modificador respecto al nivel de defensa
//calculamos el daño y defensa de cada tipo de unidad
$ata_sabot = ($sabot_base_ata * $mod_ata); //se calcula el ataque de cada saboteador
$def_sabot = ($sabot_base_def * $mod_def); //se calcula la defensa de cada saboteador
$ata_gang = ($gang_base_ata * $mod_ata);
$def_gang = ($gang_base_def * $mod_ata);
$ata_poli = ($poli_base_ata * $mod_def); //se calcula el ataque de cada policia
$def_poli = ($poli_base_def * $mod_def); //se calcula la defensa de cada policia
$ata_antidist = ($antitist_base_ata * $mod_def);
$def_antidist = ($antidist_base_def * $mod_def);
function distribute_damage($num_unidad1,$num_unidad2) // ATENCIÓN: la primera unidad siempre recibe más daño que la segunda.
{
if (!($num_unidad1 + $num_unidad2)) { //en php 0 se evalua como FALSE.
throw new Exception('División por cero.'); //al lanzar una excepción, la ejecución se para hasta llegar a un catch.
}
else {
return (($num_unidad1 * 1.1)/($num_unidad1 + $num_unidad2));
//$damagetopoli = 1 - $damagetoantidist;
}
}
function any_alive($num_unidad1, $num_unidad2)
{
return (($num_unidad1 > 0) or ($num_unidad2 > 0));
}
echo("Ronda 0 <br>");
echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");
//en caso de ataque tipo 1 (sabotaje > defensores atacan primero)
//ronda 1 (atacan los defensores)
/* preparamos los valores necesarios para el ataque */
$damage_poli = $num_poli * $ata_poli;
$damage_antidist = $num_antidist * $ata_antidist;
$damage_of_defenders = $damage_poli + $damage_antidist;
$damage_to_gang = distribute_damage($num_gang,$num_sabot);
$damage_to_sabot = 1 - $damage_to_gang;
/* calculamos el ataque */
$num_gang = floor(($num_gang * $def_gang - $damage_to_gang * $damage_of_defenders)/$def_gang);
$num_sabot = floor(($num_sabot * $def_sabot - $damage_to_sabot * $damage_of_defenders)/$def_sabot);
/*Reiniciamos los valores neativos a 0*/
if($num_gang < 1){ $num_gang = 0;}
if($num_sabot < 1){ $num_sabot = 0;}
echo("<br> Ronda 1 <br>");
echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");
//ronda 2 (atacan los atacantes)
if(any_alive($num_gang,$num_sabot)){
$damage_sabot = $num_sabot * $ata_sabot;
$damage_gang = $num_gang * $ata_gang;
$damage_of_atackers = $damage_sabot + $damage_gang;
$damage_to_antidist = distribute_damage($num_antidist,$num_poli);
$damage_to_poli = 1 - $damage_to_antidist;
/*Calculamos la segunda ronda*/
$num_antdist = floor(($num_antidist * $def_antidist - $damage_to_antidist * $damage_of_atackers) / $def_antidist);
$num_poli = floor(($num_poli * $def_poli - $damage_to_poli * $damage_of_atackers) / $def_poli);
/*Reiniciamos los valores neativos a 0*/
if($num_antidist < 0){ $num_antidist = 0;}
if($num_poli < 0){ $num_poli = 0;}
echo("<br> Ronda 2 <br>");
echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");
}else{
//calculofama($variable,$variable2);
echo("El defensor gana");
}
//ronda 3 (atacan defensores otra vez)
if(any_alive($num_antidist,$num_poli)){
$damage_poli = $num_poli * $ata_poli;
$damage_antidist = $num_antidist * $ata_antidist;
$damage_of_defenders = $damage_poli + $damage_antidist;
$damage_to_gang = distribute_damage($num_gang,$num_sabot);
$damage_to_sabot = 1 - $damage_to_gang;
/* calculamos el ataque */
$num_gang = floor(($num_gang * $def_gang - $damage_to_gang * $damage_of_defenders)/$def_gang);
$num_sabot = floor(($num_sabot * $def_sabot - $damage_to_sabot * $damage_of_defenders)/$def_sabot);
/*Reiniciamos los valores neativos a 0*/
if($num_gang < 0){ $num_gang = 0;}
if($num_sabot < 0){ $num_sabot = 0;}
echo("<br> Ronda 3 <br>");
echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");
}else{
//atacante gana
echo("El atacante gana");
//calculoedificios($numsabot,$edifobjetivo);
}
//ronda 4 (atacante ataca por última vez)
if(any_alive($num_gang,$num_sabot)){
$damage_sabot = $num_sabot * $ata_sabot;
$damage_gang = $num_gang * $ata_gang;
$damage_of_atackers = $damage_sabot + $damage_gang;
$damage_to_antidist = distribute_damage($num_antidist,$num_poli);
$damage_to_poli = 1 - $damage_to_antidist;
/*Calculamos la segunda ronda*/
$num_antdist = floor(($num_antidist * $def_antidist - $damage_to_antidist * $damage_of_atackers) / $def_antidist);
$num_poli = floor(($num_poli * $def_poli - $damage_to_poli * $damage_of_atackers) / $def_poli);
/*Reiniciamos los valores neativos a 0*/
if($num_antidist < 1){ $num_antidist = 0;}
if($num_poli < 1){ $num_poli = 0;}
echo("<br> Ronda 4 <br>");
echo("policias: $num_poli, <br> antidisturbios: $num_antidist, <br> gangster: $num_gang, <br> saboteadores: $num_sabot");
}else{
//calculofama($variable,$variable2);
echo("El defensor gana");
}
exit;
}
?>
@NiciusB he actualizado el código en el simulador, pero en todos los tests, el número de antidisturbios no baja. Échale un vistazo por favor.
Solucionado!...
@NiciusB @DamageESP Ya está el código más o menos funcionando, faltan pequeños detalles. Pasaós por http://megacorporation.conpingo.com/sabotajes/ y haced simulaciones a ver como quereís que cambie el comportamiento...
He simulado este ataque:
Sabot: 5000 Gang:0 . Polis:10000 Antis:0
Y me da este error:
Fatal error: Uncaught exception 'Exception' with message 'División por cero.' in /home/conpingo/megacorporation/public_html/sabotajes/index.php:39 Stack trace: #0 /home/conpingo/megacorporation/public_html/sabotajes/index.php(105): distribute_damage(0, 0) #1 {main} thrown in /home/conpingo/megacorporation/public_html/sabotajes/index.php on line 39
Esa es una de las cosas que queda, esa excepción (definida por mi) salta para parar la ejecución si ($num_unidad1 + $num_unidad2) = 0. Así se evita que se siga ejecutando código hasta que se capture la excepción (que de momento no se hace) Así que eso es normal, allá donde se pare el texto, es hasta dónde llega.
A tener en cuenta:
EDIT: esta sería la simulación completa: Ronda 0 policias: 10000, antidisturbios: 0, gangster: 0, saboteadores: 5000 Ronda 1 policias: 10000, antidisturbios: 0, gangster: 0, saboteadores: 0El defensor gana Fatal error: Uncaught exception 'Exception' with message 'División por cero.' in /home/conpingo/megacorporation/public_html/sabotajes/index.php:39 Stack trace: #0 /home/conpingo/megacorporation/public_html/sabotajes/index.php(105): distribute_damage(0, 0) #1 {main} thrown in /home/conpingo/megacorporation/public_html/sabotajes/index.php on line 39
va pues testead, y decidme las cosas raras que veaís...
No termina, y en la ronda 3... ¡aparece un saboteador salvaje!: Ronda 0 policias: 2, antidisturbios: 10, gangster: 2, saboteadores: 10 Ronda 1 policias: 2, antidisturbios: 10, gangster: 1, saboteadores: 0 Ronda 2 policias: 1, antidisturbios: 9, gangster: 1, saboteadores: 0 Ronda 3 policias: 1, antidisturbios: 9, gangster: 0, saboteadores: 1 Ronda 4 policias: 0, antidisturbios: 8, gangster: 0, saboteadores: 1
WTF? qué valores le has metido?
policias: 2, antidisturbios: 10, gangster: 2, saboteadores: 10 sabotaje y defensa: 1
pues no sé de dónde sale el sabot ese, pero es el que hace que el script no acabe...
Vale creo haber encontrado el problema del saboteador salvaje, pero necesitaría hablar contigo para ver como solucionarlo...
Conectate al msn xD
Añado cosas a esto ya para que digáis, sobre todo lo último que acabo de añadir, lo de las guerras, ¿los robos no computan, o computan menos?
Bien, creo que está todo bien menos lo de computar en las guerras. Podría haber un contador de cada tipo.
Bueno ya está corregido desde hace unos días el error que comentaba @NiciusB así que seguid probando, mirad si está equilibrado, y si los resultados son razonables, para ver cómo hay que equilibrarlo...
@DamageESP @NiciusB Por favor simulad y probad cosas, a ver si os parece bien, quien mata mucho, quien mata poco, para ver como hay que equilibrarlo...
Saboteadores: 10 Gangsters: 12 Policías: 8 Antidisturbios: 1 Ataque: 1 Defensa:
Llega a la ronda 4 y no termina (al menos no dice que gane nadie). Quedan 4 gangsters y nadie mas
Vale, ese es un caso que queda por cubrir en el algoritmo (cuando el atacante gana en la última ronda). Si no me lo llegas a recordar igual se me olvidaba. Pero vamos que lo que me interesa es que opineís de si está balanceado, o si hay que cambiar alguna cosa... (probaz con distintos niveles de inves, etc...)
bueno, el defensor tiene una buena defensa, ya que ataca primero... pero creo que en general está bien. Podría dejarse así y luego cambiarlo si la gente se queja o si notamos algo raro xD
Voy a empezar a substituir los guardias y saboteadores por las 4 nuevas unidades. A partir de ahora no va a ser $user_datos['guardias'] si no $user_datos['uni_defensa1'] Los espias seguirán siendo $user_datos['espias']
EDIT: Ya puedes comprar y despedirlas EDIT2: Ya te cobran por sus salarios (Hay que cambiarlos en el archivo de constantes) EDIT3: En los espionajes te dicen las nuevas tropas EDIT4: El javascript ya te cobra por las nuevas tropas EDIT5: Los clanes ya tienen nuevas tropas y las generan EDIT6: Ya te recupera al pasar el dia el maximo de tropas para sacar
Vale y no podías haber puesto el nombre de la unidad??
Las nuevas tropas son completamente funcionales excepto en las operaciones, donde aún falta implementarlas junto con la nueva fórmula.
Lo de defensa2, o ataque1 es mejor en cuanto a cambio de nombre, por si en un futuro decidimos cambiarles el nomrbe
Solo faltan las investigaciones nuevas. Necesito saber cuales son
Eso se puede poner como queraís, no es más que modificar 4 ecuaciones...
Si, pero como iban a ser? xDD
Pues se puede poner las 2 que están, y una para cada tipo de unidad, o las cominaciones que queraís
Pues mañana o pasado si no hay mas ofertas, las pondré... Me hacen falta las variables (costes, porcentaje de mejora...)
He metido ya las 4 investigaciones en entrenar unidades, faltan los precios y meterlos en las ecuaciones
Bug crítico: cuando atacas y no romper edificios te sale como éxito igualmente, y ganas el dinero
Hay que poner un mínimo de unidades de ataque para que se complete la misión con éxito, y si sobrepasa el mínimo, que haya otro mínimo para que te de todo el dinero que puedes ganar, y si no sobrepasa ese mínimo, te de una determinada cantidad por saboteador enviado. No se si me explico xD Leedlo varias veces xDD
Yo no entender. Los mínimos ya están: si no llegan para romper un edificio, no ganarías xD
Y ahora, una vez pase el mínimo, necesita otro mínimo de saboteadores para llevarse todo el dinero. Por ejemplo: ataco con 1000 saboteadores, de los cuales necesito 900 para romper edificio. Entonces rompo el edificio, pero si me quedan 100 saboteadores y el botín es de 14 millones de €, no puedo llevarmelo todo ya que cada saboteador puede llevar como máximo (por ejemplo) 1 millon de €.
Y una cosa del minimo para romper edificio, si por ejemplo atacas a estancos, alomejor puedes romper uno, pero no los 10, esta eso puesto?
Podríamos cambiar el algoritmo para los edificios rotos para que se asemeje al de ataques.
Cuál es el problema de esto: Muchas veces, especialmente atacando industrias, ocurrirá que matemos todas las unidades enemigas, pero no haya suficientes unidades para poder tirar el edificio.
Eso no es un problema Manu, eso ha sido así de toda la vida xD Y sí, los ataques deberían de simularse asi, calculando la fuerza de las tropas y restandola con la de los edificios. Además, para eso sirve Infraestructuras xD
Pues si, me parece buena idea jaja ahora falta que manu nos haga el algoritmo xD
Dónde está el actual?, para fijarme cómo tiene que ir la cosa...
En principio el algoritmo es muy sencillo sólo me preocupan casos raros en los que pueda salir resultado negativo o cosas así...
Hay un pequeño problema, los guardias son demasiado fuertes....
Y eso que tengo las Técnicas de sabotaje al 39, y él las Técnicas de defensa al 21...
Según te vas acercando al nivel 50 las investigaciones son cada vez menos efectivas, por lo que la diferencia probablemente no sea tanta, a ver si alguno de los dos me puede decir los datos del ataque, es decir tropas atacantes y defensoras.
Los defensores eran: 10000 Policías 15000 Antidisturbios
¿Y si cambiamos el nombre de los saboteadores por ladrones o cualquier otra cosa? Creo que lleva a confusión, ya que si no me estoy equivocando los datos básicos eran:
Sabo: 5/1 Gang: 3/3 Poli: 3/3 Anti:1/5
Y vuelvo a decir: dónde está lo de calcular edificios e ingresos?
Está en el archivo /cron/minuto.php, en las función gana_atacante
Que falta por aquí?
Comentario 100!!!
Faltan cosas, pero quiero dejarlo para la alpha, para que la gente pueda probar, hay que comprobar el equilibro y ajustar parámetros, así como añadir las investigaciones individuales de cada unidad.
Posibilidad de añadir nuevas unidades, no exponenciales a las actuales:
Ejemplo una unidad mártir, con mucho daño y sin defensa. Una unidad tanque que sólo absorbe daño.