Users level 2Moons v2.0

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Users level 2Moons v2.0

    Idea tomada del WOA de xterium
    BD

    SQL-Query

    1. ALTER TABLE uni1_users ADD `level_exp` int(11) UNSIGNED NOT NULL DEFAULT '0';
    2. ALTER TABLE uni1_users ADD `level_exp_current` float UNSIGNED NOT NULL DEFAULT '0';
    3. ALTER TABLE uni1_users ADD `level_exp_max` int(11) UNSIGNED NOT NULL DEFAULT '3600';
    Añadir al final de AbstractGamePage.class.php

    PHP Source Code

    1. protected function LevelUP()
    2. {
    3. global $USER;
    4. $db = Database::get();
    5. //Nivel de Usuario
    6. if ($USER['level_exp_current'] >= $USER['level_exp_max']){
    7. $new_experience = $USER['level_exp_current'] - $USER['level_exp_max'];
    8. $new_exp_max = $USER['level_exp_max'] + 1450/2 ;
    9. $sql = "UPDATE %%USERS%% SET level_exp_current = :new_experience, level_exp_max = :new_exp_max, level_exp = level_exp + 1 WHERE id = :userId;";
    10. $db->update($sql, array(
    11. ':new_experience' => $new_experience,
    12. ':new_exp_max' => $new_exp_max,
    13. ':userId' => $USER['id']
    14. ));
    15. }
    16. }
    Display All
    Buscar dentro del archivo AbstractGamePage.class.php

    PHP Source Code

    1. $this->getCronjobsTodo();
    Añadir después

    PHP Source Code

    1. $this->LevelUP();




    Para mostrar los niveles en las estadísticas debes hacer lo siguiente

    Buscar el archivo ShowStatisticsPage.class.php dentro del case 1:

    PHP Source Code

    1. u.username,
    Agregar después

    PHP Source Code

    1. u.level_exp

    Las dos veces que sale

    Luego dentro de primer

    PHP Source Code

    1. $RangeList[] = array(
    Añadir

    PHP Source Code

    1. 'level' => $StatRow['level_exp'],



    Ir al shared.statistics.playerTable.tpl añadir a tu gusto

    HTML Source Code

    1. <div class="{if $RangeInfo.level >= 31}i-stripe-31{else}i-stripe-{$RangeInfo.level}{/if}"></div>
    2. nvl.{$RangeInfo.level}
    3. </div>
    Añadir a tu estilo dentro de ingames.css


    CSS Source Code

    1. .i-stripe-0{background-image:url(stripe/0.png)}
    2. .i-stripe-1{background-image:url(stripe/1.png)}
    3. .i-stripe-2{background-image:url(stripe/2.png)}
    4. .i-stripe-3{background-image:url(stripe/3.png)}
    5. .i-stripe-4{background-image:url(stripe/4.png)}
    6. .i-stripe-5{background-image:url(stripe/5.png)}
    7. .i-stripe-6{background-image:url(stripe/6.png)}
    8. .i-stripe-7{background-image:url(stripe/7.png)}
    9. .i-stripe-8{background-image:url(stripe/8.png)}
    10. .i-stripe-9{background-image:url(stripe/9.png)}
    11. .i-stripe-10{background-image:url(stripe/10.png)}
    12. .i-stripe-11{background-image:url(stripe/11.png)}
    13. .i-stripe-12{background-image:url(stripe/12.png)}
    14. .i-stripe-13{background-image:url(stripe/13.png)}
    15. .i-stripe-14{background-image:url(stripe/14.png)}
    16. .i-stripe-15{background-image:url(stripe/15.png)}
    17. .i-stripe-16{background-image:url(stripe/16.png)}
    18. .i-stripe-17{background-image:url(stripe/17.png)}
    19. .i-stripe-18{background-image:url(stripe/18.png)}
    20. .i-stripe-19{background-image:url(stripe/19.png)}
    21. .i-stripe-20{background-image:url(stripe/20.png)}
    22. .i-stripe-21{background-image:url(stripe/21.png)}
    23. .i-stripe-22{background-image:url(stripe/22.png)}
    24. .i-stripe-23{background-image:url(stripe/23.png)}
    25. .i-stripe-24{background-image:url(stripe/24.png)}
    26. .i-stripe-25{background-image:url(stripe/25.png)}
    27. .i-stripe-26{background-image:url(stripe/26.png)}
    28. .i-stripe-27{background-image:url(stripe/27.png)}
    29. .i-stripe-28{background-image:url(stripe/28.png)}
    30. .i-stripe-29{background-image:url(stripe/29.png)}
    31. .i-stripe-30{background-image:url(stripe/30.png)}
    32. .i-stripe-31{background-image:url(stripe/31.png)}
    Display All
    :thumbsup: :thumbsup: :thumbup: :thumbup: :thumbup:
    VERY SAD :/ :/ :/ :/
  • La experiencia debe añadirse a este campo level_exp_current
    Tu debes crear de que forma emplear para que el usuario obtenga experiencia para subir de nivel, por ejemplo que cuando gane una batalla obtenga X cantidad, en las expediciones, cumpliendo tareas. etc.
    Sube de nivel de forma automática, el usuario no tiene que hacer nada para que el sistema actualice su nivel. Solo debe acumular experiencia para que suba de nivel
    VERY SAD :/ :/ :/ :/
  • Buenas colegas.

    Viendo un poco el codigo de LevelUp de @yamilrh, me di cuenta que hay algunas cosas puestas por gusto o que, no se tomaron en cuenta a la hora de crear la funcion.

    PHP Source Code

    1. protected function LevelUP()
    2. {
    3. global $USER;
    4. $db = Database::get();
    5. //Nivel de Usuario
    6. if ($USER['level_exp_current'] >= $USER['level_exp_max']){
    7. $new_experience = $USER['level_exp_current'] - $USER['level_exp_max'];
    8. $new_exp_max = $USER['level_exp_max'] + 1450/2 ;
    9. $sql = "UPDATE %%USERS%% SET level_exp_current = :new_experience, level_exp_max = :new_exp_max, level_exp = level_exp + 1 WHERE id = :userId;";
    10. $db->update($sql, array(
    11. ':new_experience' => $new_experience,
    12. ':new_exp_max' => $new_exp_max,
    13. ':userId' => $USER['id']
    14. ));
    15. }
    16. }
    Display All


    Por ejemplo

    PHP Source Code

    1. $new_exp_max = $USER['level_exp_max'] + 1450 / 2;
    es lo mismo que decir

    PHP Source Code

    1. $new_exp_max = $USER['level_exp_max'] + 725;

    Deberia ser reemplazado por

    PHP Source Code

    1. $new_exp_max = ($USER['level_exp_max'] + 1450) / 2;
    Al igual que la consulta SQL deberia modificarse para poder aumentar realmente la experiencia necesitada por cada nuevo nivel.

    La anterior:

    PHP Source Code

    1. $sql = "UPDATE %%USERS%% SET level_exp_current = :new_experience, level_exp_max = :new_exp_max, level_exp = level_exp + 1 WHERE id = :userId;";
    2. $db->update($sql, array(
    3. ':new_experience' => $new_experience,
    4. ':new_exp_max' => $new_exp_max,
    5. ':userId' => $USER['id']
    6. ));

    La sugerencia nueva:

    PHP Source Code

    1. $sql = "UPDATE %%USERS%% SET level_exp_current = :new_experience, level_exp_max = level_exp_max + :new_exp_max, level_exp = level_exp + 1 WHERE id = :userId;";
    2. $db->update($sql, array(
    3. ':new_experience' => $new_experience,
    4. ':new_exp_max' => $new_exp_max,
    5. ':userId' => $USER['id']
    6. ));

    Espero sea tomada esta sugerencia. Saludos a todos
    Gestor de proyectos para xampp
    Cardinal System for XAMPP
  • Jekill wrote:

    La sugerencia nueva:


    $sql = "UPDATE %%USERS%% SET level_exp_current = :new_experience, level_exp_max = level_exp_max + :new_exp_max, level_exp = level_exp + 1 WHERE id = :userId;";
    $db->update($sql, array(
    ':new_experience' => $new_experience,
    ':new_exp_max' => $new_exp_max,
    ':userId' => $USER['id']
    ));
    Espero sea tomada esta sugerencia. Saludos a todos
    Son fórmulas la operación puede variar dependiendo del usuario, al final ahi divide primero y luego hace la suma.
    Tal y como esta funciona perfecto obteniendo la nueva experiencia.
    $new_exp_max = $USER['level_exp_max'] + 1450/2;
    Ya ahi tu le estas pasando el valor de level_exp_max, por lo que no es necesario volver a pasarlo en la sql. que no está mal como dices.

    Source Code

    1. $USER['level_exp_max'] = 1250
    2. $new_exp_max = 1250 + 1450 / 2;
    3. $sql = "UPDATE %%USERS%% SET level_exp_current = :new_experience, level_exp_max = 1250 + :new_exp_max, level_exp = level_exp + 1 WHERE id = :userId;";
    4. $db->update($sql, array(
    5. ':new_experience' => $new_experience,
    6. ':new_exp_max' => $new_exp_max,
    7. ':userId' => $USER['id']
    8. ));
    De todas forma cada cual puede cambiar la fórmula según su conveniencia y adaptarlo a sus necesidades
    VERY SAD :/ :/ :/ :/
  • yamilrh wrote:

    Jekill wrote:

    La sugerencia nueva:


    $sql = "UPDATE %%USERS%% SET level_exp_current = :new_experience, level_exp_max = level_exp_max + :new_exp_max, level_exp = level_exp + 1 WHERE id = :userId;";
    $db->update($sql, array(
    ':new_experience' => $new_experience,
    ':new_exp_max' => $new_exp_max,
    ':userId' => $USER['id']
    ));
    Espero sea tomada esta sugerencia. Saludos a todos
    Son fórmulas la operación puede variar dependiendo del usuario, al final ahi divide primero y luego hace la suma.Tal y como esta funciona perfecto obteniendo la nueva experiencia.
    $new_exp_max = $USER['level_exp_max'] + 1450/2;
    Ya ahi tu le estas pasando el valor de level_exp_max, por lo que no es necesario volver a pasarlo en la sql. que no está mal como dices.

    Source Code

    1. $USER['level_exp_max'] = 1250
    2. $new_exp_max = 1250 + 1450 / 2;
    3. $sql = "UPDATE %%USERS%% SET level_exp_current = :new_experience, level_exp_max = 1250 + :new_exp_max, level_exp = level_exp + 1 WHERE id = :userId;";
    4. $db->update($sql, array(
    5. ':new_experience' => $new_experience,
    6. ':new_exp_max' => $new_exp_max,
    7. ':userId' => $USER['id']
    8. ));
    De todas forma cada cual puede cambiar la fórmula según su conveniencia y adaptarlo a sus necesidades
    No estan mal, no se me entendio la explicacion. Se dividide primero 1450 /2 que es lo mismo que sumarle siempre 725.

    Por otra parte muestro un ejemplo con la funcion actual y luego otro con mi correccion.

    Ej original.
    CurrentLvl:1
    CurrentExp: 4000
    MaxExp: 3600

    NewCurrentExp: 4000 - 3600 = 400
    NewMaxExp: 3600 + 1450/2 = 4325
    NewLvl: 2

    Mi Sugerencia:

    CurrentLvl: 1
    CurrentExp: 4000
    MaxExp: 3600

    NewCurrentExp: 4000 - 3600 = 400
    NewMaxExp: (3600 + 1450) / 2 = 2525 + MaxExp = 6125
    NewLvl: 2

    La experiencia requerida por cada nuevo nivel es superior y el paso por niveles no es tan rapido. Fue solo eso y vuelvo a decir, es una sugerencia de codigo, exeptuando lo primero que SI es una correccion. No hay sentido alguno en dividir 2 numeros fijos cuando puedes poner el valor el cual siempre sera el mismo (725).
    Gestor de proyectos para xampp
    Cardinal System for XAMPP