За последние 24 часа нас посетили 50073 программиста и 1758 роботов. Сейчас ищут 999 программистов ...

Хелп ми

Тема в разделе "PHP для новичков", создана пользователем StepanAMK, 20 авг 2016.

  1. StepanAMK

    StepanAMK Новичок

    С нами с:
    24 июн 2016
    Сообщения:
    138
    Симпатии:
    5
    Привет всем, подскажите пожалуйста есть игра в ней есть бой где игроки бьют босса когда у боса здоровья 0 бой заканчивается и он пропадает и не восстанавливается сам я хочу что бы к примеру в 18:00 каждый день происходит автоматически запрос в базу данных где здоровья босса восстанавливается сразу, запрос я отдельным скриптом уже прописал если зайти на этот скрипт то босс восстановится и снова появится.. Но как это сделать автоматически?

    Вот сам запрос в БД

    PHP:
    1. <?php
    2. $aluko = mysql_fetch_assoc(mysql_query("SELECT * FROM `aluko` ORDER BY `id` LIMIT 1"));
    3. echo "<table class='post'>";
    4.  
    5. if($aluko['health']<1){
    6.  
    7. echo "Он васкрес!";
    8. mysql_query("UPDATE `aluko` SET `health` = `health` + '1000000' WHERE `id` LIMIT 1");
    9.  
    10. }
    11.  
    12. echo "
    13. <form action='game_nac.php?take' method='post'><br/>
    14. <span class='btn'><span class='end'><center><input class='label' type='submit' value='Воскресить начальника'></center></span></span></form></div>
    15. </form></center></div>";
    16.    
    17. ?>
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
  3. StepanAMK

    StepanAMK Новичок

    С нами с:
    24 июн 2016
    Сообщения:
    138
    Симпатии:
    5
    на хостинге имеется crontab вбиваю ему запрос по протаколу http указываю ссылку на срипт который прибовляет хп у босса и нечего не происходит
     
  4. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Зачем? Почему просто не указать путь к файлу?
     
  5. StepanAMK

    StepanAMK Новичок

    С нами с:
    24 июн 2016
    Сообщения:
    138
    Симпатии:
    5
    просто это где указать?
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    В момент убийства можно его родить в 18:00 и забить. А показывать мобов только которые уже родились =) удобняк.
     
  7. StepanAMK

    StepanAMK Новичок

    С нами с:
    24 июн 2016
    Сообщения:
    138
    Симпатии:
    5
    код скинуть покажи куда прописать и что что бы так было в 18:00 он лечился
     
  8. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    И скорее всего, что на хостинге имеется панель управления и с большой вероятностью там есть раздел, который называется а ля "Планировщик заданий". У каждой панели свой интерфейс, но суть сводится к одному: выставить время и прописать команду. Для команды отводится текстовое поле. Вот туда и пишите. Вот, к примеру, как это выглядит в ISPManager 5 [​IMG]
     
  9. StepanAMK

    StepanAMK Новичок

    С нами с:
    24 июн 2016
    Сообщения:
    138
    Симпатии:
    5
    Вот настроил а смысла нет выбрал "Произвольная команда" и вставил тупо ссылку указал повторять 1 раз в минуту

    Безымянный.png
    --- Добавлено ---
    а если русками зайти на эту ссылку то всё гуд
     
  10. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Желательно с умом. Команда имеет примерно такой вид
    Код (Text):
    1. /usr/local/bin/php /home/myaccount/mydomain.com/public_html/cron.php > /dev/null
    /usr/local/bin/php - путь к интерпретатору PHP(зависит от настроек сервера)
    /home/myaccount/mydomain.com/public_html/cron.php - путь к требуемому скрипту,начиная от корневого каталога сервера(не аккаунта)
    > - перенаправление стандартного вывода(результата) /dev/null - в никуда
    --- Добавлено ---
    P.S. В принципе, есть вариант и с указанием URL, но честно говоря, я никогда не пробовал. Команда в этом случае, может быть примерно такой:
    Код (Text):
    1. wget -O - http://mydomain.com/cron.php >/dev/null 2>&1
     
  11. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    просто ставишь в бд запись про моба. В поле "показывать после" у него "2016-08-22 18:00:00", а выбираешь ты только тех, кто уже родился
    --- Добавлено ---
    потом ставишь дату смерти, кто убил, и т.п. БД будет пухнуть, но на деле это не страшно, зато куча статы есть. :D
     
  13. bikerlex

    bikerlex Активный пользователь

    С нами с:
    2 дек 2014
    Сообщения:
    344
    Симпатии:
    40
    Из постов сложилось впечатление, что ты хочешь ресать ему ХП в любом случаи. А если его в этот момент кто-то добивает, а тут хренак и фул ХП? Несправедливо. Надеюсь я ошибся.
     
  14. StepanAMK

    StepanAMK Новичок

    С нами с:
    24 июн 2016
    Сообщения:
    138
    Симпатии:
    5
    его полюбому убьют в тот момент хочу что бы он каждый день в 18:00 по МСК ресал ему хп вот и всё думаю слодно будет за сутки не убить
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вот я и предлагаю когда грохнули - заносить в бд запись. Т.е. если его не убили - запись не появится и он не реснется. Так что он будет жить. Долго. Можно будет даже стату высчитать, сколько он пожил и когда.
     
  16. bikerlex

    bikerlex Активный пользователь

    С нами с:
    2 дек 2014
    Сообщения:
    344
    Симпатии:
    40
    Может и не сложно. Я привел маловероятный, но возможный случай. Юзеры тебя за такое гнилыми помидорами закидают. )
    Вон @igordata предлагает решение этой проблемы.
     
  17. StepanAMK

    StepanAMK Новичок

    С нами с:
    24 июн 2016
    Сообщения:
    138
    Симпатии:
    5
    ну будет запись и что дальше как он будет понимать что ему надо реснутся
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    просто при заходе на страницу в запросе к бд бы выбираешь только тех мобов у которых дата рождения больше чем сейчас, но дата смерти нулл.
     
    askanim нравится это.
  19. StepanAMK

    StepanAMK Новичок

    С нами с:
    24 июн 2016
    Сообщения:
    138
    Симпатии:
    5
    что то я если честно не понял как так сделать то
    --- Добавлено ---
    у меня только 1 босс и он респается каждый день в 18:00
     
  20. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ты не читаешь, ты просто пропускаешь те куски, что тебе не понятны. Нужно заставить себя вчитаться.

    Тебе нужна База Данных, далее БД.

    Из БД ты выбираешь мобов при заходе на страницу. Тех, которые уже родились.
     
  21. StepanAMK

    StepanAMK Новичок

    С нами с:
    24 июн 2016
    Сообщения:
    138
    Симпатии:
    5
    Это понятно, но как заставить этих мобов возрадится в 18:00 по мск
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    забей. тебе нужен не только художник, но и кто-то, кто тебя научит базовым вещам.
     
  23. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @StepanAMK Так если ты хочешь запустить, cronTab на бегете, то тебе сначала нужно позвонить в тех поддержку, там указан их номер и сказать, что у тебя не работает крон, после чего они попросят тебя написать тикет. Потом они починят крон для тебя и он чудесно заработает. У меня таже история была, когда я шедулер ларавеля пытался запустить ) При этом я тебя обрадую, если у тебя не выделенный сервер и не vds. То в ручную ты запустить крон не сможешь, т.е через терминал. У тебя просто прав нету. Ну в общем после нескольких часов *бли мозгов они тебе его починят и всё будет окай.
    --- Добавлено ---
    @StepanAMK


    Ваще круто... Знаешь! Это гениально просто... :D
    --- Добавлено ---
    Плохо читаешь :)

    Когда убивают моба ты записываешь тек дату в дату смерти!
    А у него есть ещё дата возрождения.

    То есть когда кто-то заходит например на локу, то ты делаешь запрос к бд, на мобов у которых Дата возрождения меньше текущей даты, но дата смерти Null.

    Т.есть следуем логике нам нужно как-то поставить дату смерти в Null после того как его убили. А когда это нужно сделать?

    И тут меня осенило нужен третий пункт. Нужна дата смерти, время респа и дата возрождения.
    А теперь смотри алгоритм.
    Убили моба, записал дату смерти прибавил время респа и записал в дату возрождения. После чего ты при заходе в локу ты спрашиваешь сервер, Дата возрождения > Тек дата ? и всё.

    И как бы по сути можно даже в null не вводить, но если ты прямо в прямом смысле возрождаешь боса, то пиши ещё проверки, например:

    Дата. Возрождения > тек.Дата ?

    Если да

    пишем в бд, дата смерти Null, а если она null то показываем всем, и все остальные уже по дате смерти в нулл видят мобиков,

    Т.есть тебе нужна первая проверка на воскрешение, а вторая на показ, если воскрешать ещё рано, если воскрешать не кого, то алгоритм пропускаешь и сразу выводишь мобов с дата смерти Null, как бы так ещё можно типа быстрее будет чем вариант без null... Но на самом деле надо потестить, скока время займёт алгоритм возрождения :D
     
    #23 askanim, 22 авг 2016
    Последнее редактирование: 22 авг 2016