1. Bitcoin адрес для пожертвований: 1dapfB97R98wg8J3hknWpMDJ7P61CWjNn
    Скрыть объявление
  2. Участникам форума доступна Skype конференция. Присоединяйтесь!
  3. Наши основные группы и каналы: VK, Twitter. Подписывайтесь!
  4. Скрыть объявление

Регенерация HP + фреймы [by AlexPro]

Тема в разделе "Готовые модули", создана пользователем ActualizeR, 1 мар 2010.

  1. ActualizeR

    ActualizeR Школьник

    Репутация

    0 / 5


    Данный модуль выполняет регенерацию жизней, а также позволяет вынести полоски хп+манны в другой фрейм

    в buttons.php (файл где у нас будут находится полоски)
    PHP:
    1. $stat = mysql_fetch_array(mysql_query("SELECT * FROM `person` WHERE `user` = '".addslashes($_COOKIE['user'])."' AND `pass` = '".addslashes($_COOKIE['pass'])."' LIMIT 1"));
    2. include('person/func/changed.php');
    3.  
    4. ?>
    5.  
    6. <script language=JavaScript>
    7. var rnd = Math.random();
    8. //-- Смена хитпоинтов
    9. var delay = 6;      // Каждые 18сек. увеличение HP на 1%
    10. var redHP = 0.33;   // меньше 30% красный цвет
    11. var yellowHP = 0.66;// меньше 60% желтый цвет, иначе зеленый
    12. var TimerOn = -1;   // id таймера
    13. var tkHP, maxHP;
    14. var speed=100;
    15. var mspeed=100;
    16.  
    17. function setHP(value, max, newspeed) {
    18.     tkHP=value; maxHP=max;
    19.     if (newspeed==0) TimerOn = -1;
    20.     if (TimerOn>=0) { clearTimeout(TimerOn); TimerOn=-1; }
    21.     speed=newspeed;
    22.     setHPlocal();
    23. }
    24. function setHPlocal() {
    25.     if (tkHP>maxHP) { tkHP=maxHP; TimerOn=-1;} else {TimerOn=0;}
    26.     var le=Math.round(tkHP)+"/"+maxHP;
    27.     le=153;
    28.     var sz1 = Math.round((le/maxHP)*tkHP);
    29.     var sz2 = le - sz1;
    30.    
    31.     document.getElementById('HP').width=sz1;
    32.     document.getElementById('HP2').innerHTML=Math.round(tkHP)+"/"+maxHP;
    33.    
    34.     tkHP = (tkHP+(maxHP/100)*speed/1000);
    35.     if (TimerOn!=-1) {TimerOn=setTimeout('setHPlocal()', delay*100)};
    36. }
    37.  
    38. var Mdelay = 6;
    39. var MTimerOn = -1;  // id таймера
    40. var tkMana, maxMana;
    41.  
    42. function setMana(value, max, newspeed) {
    43.     tkMana=value; maxMana=max;
    44.     if (newspeed==0) MTimerOn = -1;
    45.     if (MTimerOn>=0) { clearTimeout(MTimerOn); MTimerOn=-1; }
    46.     if (newspeed < 1) newspeed=1;
    47.     mspeed=newspeed;
    48.     setManalocal();
    49. }
    50.  
    51. function setManalocal() {
    52.     if (maxMana==0) return(0);
    53.     if (tkMana>maxMana) { tkMana=maxMana; MTimerOn=-1; } else {MTimerOn=0;}
    54.     var le=Math.round(tkMana)+"/"+maxMana;
    55.     le=153;
    56.     var sz1 = Math.round( ( le / maxMana ) * tkMana);
    57.     var sz2 = le - sz1;
    58.  
    59.     document.getElementById('MP').width=sz1;
    60.     document.getElementById('MP2').innerHTML=Math.round(tkMana)+"/"+maxMana;
    61.        
    62.     tkMana = (tkMana+(maxMana/1000)*mspeed/100);
    63.     if (MTimerOn!=-1) {MTimerOn=setTimeout('setManalocal()', Mdelay*100);};
    64. }
    65. </script>
    добавляем полоски
    PHP:
    1. <div style="position: absolute; top: 32px; left: 91px; z-index:1; width: 153; height: 7; border: 0px solid #fff; font-size: 6pt; font-family: Verdana; color: #fff; text-align: left;"><img src="images/hp.gif" id=HP height=7 width=0 ></div>
    2. <div style="position: absolute; top: 32px; z-index:2; left: 91px; width: 153; height: 7; border: 0px solid #fff; font-size: 6pt; font-family: Verdana; color: #fff; text-align: center;" id=HP2></div>
    3.  
    4.  
    5. <div style="position: absolute; top: 42px; left: 91px; z-index:1; width: 153; height: 7; border: 0px solid #fff; font-size: 6pt; font-family: Verdana; color: #fff; text-align: left;"><img src="images/mp.gif" id=MP height=7 width=0 ></div>
    6. <div style="position: absolute; top: 42px; z-index:2; left: 91px; width: 153; height: 7; border: 0px solid #fff; font-size: 6pt; font-family: Verdana; color: #fff; text-align: center;" id=MP2></div>
    делаем визуальное восстановление (должно находиться под полосками)
    PHP:
    1. <script>setHP('.$stat['hp_now'].','.$stat['hp_max'].',120);</script>
    2. <script>setMana('.$stat['energy_now'].','.$stat['energy_max'].',120);</script>
    создаем папку undead_functions, в ней файл hp_regen.php

    PHP:
    1. <?
    2.  
    3. function update_hp ($id, $hp_now, $hp_max, $cure_time)
    4. {
    5.     if ($hp_now < $hp_max)
    6.     {
    7.         // задаем время восстановления всех хп
    8.         $all_heal_time = 600;
    9.         // высчитуем сколько хп необходимо восстановить
    10.         $need_hp = $hp_max - $hp_now;
    11.         // высчитуем время восстановления 1го хп
    12.         $one_hp_time = $all_heal_time / $hp_max;
    13.         // высчитываем время, которое будет затрачено на восстановление недостающих хп
    14.         $need_hp_time = $one_hp_time * $need_hp;
    15.         // добавляем к текущему времени полученое значение
    16.         $time_hp = floor(time() + $need_hp_time);
    17.         // если необходимо лечение
    18.         if ($cure_time == 0)
    19.         {
    20.             // если не задано время восстановления - задаем его, что приводик к началу отсчета времени на восстановление
    21.             // обновляем в базе время восстановления хп
    22.             mysql_query("UPDATE person SET cure_hp = ".$time_hp." WHERE id = ".$id." ");
    23.         }
    24.         else
    25.         {
    26.             if (time() > $cure_time)
    27.             {
    28.                 // если время на восстановление хп уже прошло - восстанавливаем все хп
    29.                 mysql_query("UPDATE person SET cure_hp = 0, hp_now = ".$hp_max." WHERE id = ".$id." ");
    30.                 $hp_now = $hp_max;
    31.             }
    32.             else
    33.             {
    34.                 // высчитываем разницу во времени
    35.                 $need_time_to_cure = $cure_time - time();
    36.                 // узнаем сколько хп нам необходимо восстановить за прошедшее время
    37.                 $need_hp_to_cure = ceil($need_time_to_cure / $one_hp_time);
    38.                 // обновляем базу данных :)
    39.                 mysql_query("UPDATE person SET hp_now = ".($hp_max - $need_hp_to_cure)." WHERE id = ".$id." ");
    40.                 $hp_now = $hp_max - $need_hp_to_cure;
    41.             }
    42.         }
    43.        
    44.     }
    45.     return $hp_now;
    46. }
    47.  
    48. function update_mp ($id, $hp_now, $hp_max, $cure_time)
    49. {
    50.     if ($hp_now < $hp_max)
    51.     {
    52.         // задаем время восстановления всех хп
    53.         $all_heal_time = 600;
    54.         // высчитуем сколько хп необходимо восстановить
    55.         $need_hp = $hp_max - $hp_now;
    56.         // высчитуем время восстановления 1го хп
    57.         $one_hp_time = $all_heal_time / $hp_max;
    58.         // высчитываем время, которое будет затрачено на восстановление недостающих хп
    59.         $need_hp_time = $one_hp_time * $need_hp;
    60.         // добавляем к текущему времени полученое значение
    61.         $time_hp = floor(time() + $need_hp_time);
    62.         // если необходимо лечение
    63.         if ($cure_time == 0)
    64.         {
    65.             // если не задано время восстановления - задаем его, что приводик к началу отсчета времени на восстановление
    66.             // обновляем в базе время восстановления хп
    67.             mysql_query("UPDATE person SET cure_mp = ".$time_hp." WHERE id = ".$id." ");
    68.         }
    69.         else
    70.         {
    71.             if (time() > $cure_time)
    72.             {
    73.                 // если время на восстановление хп уже прошло - восстанавливаем все хп
    74.                 mysql_query("UPDATE person SET cure_mp = 0, energy_now = ".$hp_max." WHERE id = ".$id." ");
    75.                 $hp_now = $hp_max;
    76.             }
    77.             else
    78.             {
    79.                 // высчитываем разницу во времени
    80.                 $need_time_to_cure = $cure_time - time();
    81.                 // узнаем сколько хп нам необходимо восстановить за прошедшее время
    82.                 $need_hp_to_cure = ceil($need_time_to_cure / $one_hp_time);
    83.                 // обновляем базу данных :)
    84.                 mysql_query("UPDATE person SET energy_now = ".($hp_max - $need_hp_to_cure)." WHERE id = ".$id." ");
    85.                 $hp_now = $hp_max - $need_hp_to_cure;
    86.             }
    87.         }
    88.        
    89.     }
    90.     $energy_max = $hp_now;
    91.     return $energy_max;
    92. }
    93.  
    94.  
    95. ?>
    везде где нужно что бы регело хп добавляем после
    PHP:
    1. include 'preson/func/changed.php';
    вот это
    PHP:
    1.  
    2.     if ($stat['battle'] < 1)
    3.     {
    4.         include 'undead_functions/hp_regen.php';
    5.  
    6.         $hp_now = update_hp($stat['id'], $stat['hp_now'], $stat['hp_max'], $stat['cure_hp']);
    7.         $stat['hp_now'] = $hp_now;
    8.    
    9.         $mp_now = update_mp($stat['id'], $stat['energy_now'], $stat['energy_max'], $stat['cure_mp']);
    10.         $stat['energy_now'] = $mp_now;
    11.  
    12.         echo '
    13.        <script>top.frames["buttons"].setHP('.$stat['hp_now'].','.$stat['hp_max'].',120);</script>
    14.        <script>top.frames["buttons"].setMana('.$stat['energy_now'].','.$stat['energy_max'].',120);</script>
    15.        ';
    16.     }
    17.  
    при заходе в бой (смотря у кого как сделано, но я думаю придется засовывать в battle.php)

    PHP:
    1.     echo '
    2.    <script>top.frames["buttons"].setHP('.$stat['hp_now'].','.$stat['hp_max'].',0);</script>
    3.    <script>top.frames["buttons"].setMana('.$stat['energy_now'].','.$stat['energy_max'].',0);</script>
    4.    ';
    мод выносить за пределы форума запрещено

    :bv:

  2. ALIGARX

    ALIGARX Старейшина

    Репутация

    21 / 11


    Огооо вотето да! Добрый скрыпт... Десь я такий код уже бачив один в один... мабудь скамуниздили чи шо...

     
    Последнее редактирование модератором: 1 мар 2010
  3. CTAPu4OK

    CTAPu4OK КтапичОК О_О Старейшина

    Репутация

    160 / 328


    Поставил себе реген, работает отлично, но не отоброжает полоски =(
    У меня не ИВ, самопись, в js шарю плохо, не посылать!
    HTML:
    1. <tr>
    2. <td align="right"><img src="img/other/25_25_stats_s.gif"></td>
    3. <td><div style="z-index:1; width: 153; height: 7; border: 0px solid #fff; font-size: 6pt; font-family: Verdana; color: #fff; text-align: left;"><img src="img/hp.gif" id=HP height=7 width=0 ></div>
    4. <div style="z-index:2; left: 91px; width: 153; height: 7; border: 0px solid #fff; font-size: 6pt; font-family: Verdana; color: #fff; text-align: center;" id=HP2></div>
    5. <script>setHP('.$username['hp_now'].','.$username['hp_max'].',120);</script>
    6. </td>
    7. <td>&nbsp;</td>
    8. </tr>
    9. <tr>
    10. <td align="right"><img src="img/other/25_25_stats_m.gif"></td>
    11. <td><div style="z-index:1; width: 153; height: 7; border: 0px solid #fff; font-size: 6pt; font-family: Verdana; color: #fff; text-align: left;"><img src="img/mp.gif" id=MP height=7 width=0 ></div>
    12. <div style="z-index:2; left: 91px; width: 153; height: 7; border: 0px solid #fff; font-size: 6pt; font-family: Verdana; color: #fff; text-align: center;" id=MP2></div>
    13. <script>setMana('.$username['energy_now'].','.$username['energy_max'].',120);</script></td>
    14. <td>&nbsp;</td>
    15. </tr>
    JS не редактировал, переместил его в hp.js, но и при вставке на главную изменений нету.
    п.с. Игра на фреймах

    [​IMG]

     
  4. Kinder-SURPRISE

    Kinder-SURPRISE Новичок

    Репутация

    0 / 0


    Жесть! Что ты написал, нереально разобрать!

     
  5. ALIGARX

    ALIGARX Старейшина

    Репутация

    21 / 11


    :) Писалось для Андедки (он понял на тот момент:) )