Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

deathnoterpg

[Resolvido] Recuperação de HP automaticamente (RPG BROWSER)

Recommended Posts

Ajudando o colega, fui atrás de alguma forma que poderia ser feito, porém não consegui concluir realmente o que ele quer, segue o que foi feito até agora:

 

config.php

<?php
$limit = 1; 
$host = "...";
$user = "...";
$pass = "...";
$db = "...";

$connection = @mysql_connect($host, $user, $pass) or die("Unable to connect to database!");
@mysql_select_db($db, $connection) or die("Unable to select database!");
?>

 

index.php

<?php
// Primeiramente conecta no banco de dados e puxa os valores hp e maxhp conforme o id do usuário conectado
include ('config.php');
$q = mysql_query("SELECT * FROM players WHERE id = 1") or die(mysql_error());
while($f = mysql_fetch_assoc($q)) {
$hp = $f['hp'];
$maxhp = $f['maxhp']; }
?>

<script language=JavaScript>
// A seguir vem o javascript que identifica o maximo de hp e o hp cadastrado no banco e começa a fazer a contagem até chegar no máximo do hp //
var maxhp = <?php echo $maxhp; ?>;
var hp = <?php echo $hp; ?>;

function startCountdown(){
      if(hp < maxhp){
              hp = hp + 1;
              numberCountdown.innerText = '' + hp;
              setTimeout('startCountdown()',1000);	    
      }
}
</SCRIPT>

<FONT face=verdana color=#1e90ff size=2>
<DIV id=numberCountdown align=center></DIV></FONT>

O resultado é o seguinte:

http://revistahei.dominiotemporario.com/teste/teste.php

Agora precisa encontrar uma forma de atualizar no banco de dados a cada 1 de hp que sobe que eu não consegui fazer.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talvez isso ajude.

 

Você pode garantir, ao que parece, a permissão EVENT para o usuário em questão ou, se for o caso, a permissão SUPER, que é a que está sendo requisitada.

 

[EDIT]

 

Instalei o MySQL aqui só pra testar esses exemplos e, de fato, está dando um errinho na sintaxe, não sei se tem a ver com a versão do MySQL (instalei a 5.1).

 

O erro apresentado é de que a coluna points é desconhecida na cláusula where, quase como se o DECLARE estivesse sendo ignorado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Loucura .. sinceramente gente, aqui não deu erro algum .. :o

C:\Users\Andrey>cd ..

C:\Users>cd ..

C:\>cd \dev\mysql\bin\

C:\dev\mysql\bin>mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.41 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use players;
Database changed

mysql> show tables;
+-------------------+
| Tables_in_players |
+-------------------+
| users             |
+-------------------+
1 row in set (0.00 sec)

mysql> drop event addHealthPoints;
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter $$
mysql> CREATE EVENT `addHealthPoints` ON SCHEDULE EVERY 1 MINUTE ON COMPLETION NOT PRESERVE ENABLE
   -> DO BEGIN
   ->         DECLARE points INT(11) DEFAULT '50';
   ->         UPDATE `players`.`users` SET `users`.`hp` = `users`.`hp` + points
   ->         WHERE `users`.`hp` != `users`.`maxhp` + points AND `users`.`hp` + points <= `users`.`maxhp`;
   -> END $$
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;

mysql> show events;
+---------+-----------------+----------------+-----------+-----------+------------+----------+----------------+-------+------+---------+
| Db      | Name            | Definer        | Time zone | Type      | Execute at | Interval | Interval field | Starts| Ends | Status  | 
+---------+-----------------+----------------+-----------+-----------+------------+----------+----------------+-------+------+---------+
| players | addHealthPoints | root@localhost | SYSTEM    | NULL      | 1          | MINUTE   | NULL           | NULL  | NULL |ENABLED  |
+---------+-----------------+----------------+-----------+-----------+------------+----------+----------------+-------+------+---------+
1 row in set (0.02 sec)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talves.. uma outra solução, e se não recuperasse automaticamente só parecesse isso?

 

eu explico, e se tivessse uma campo restrido o ultimo atualização do hp foi mostrado? então quando qq um visualisa-se executasse um comando para visualizar o hp, ANTES de se exebido ele calcularia a dif de tempo que teve da ultima atualização, calcularia o qto ele recuperou, somaria na qtdade, mudadaria a data da atualização e dai mostrasse o hp já recuperado.

Não funcionaria?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andrey, aora que foi incluído a alteração do delimiter a ser utilizado, o erro que reportei sumiu, e o evento foi criado com sucesso.

 

Porém, já espere vários minutos e um SELECT simples continua com as informações inalteradas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você criou evento pra teste ? falta habilitar o scheduler pra eventos ..

set global event_scheduler = 'on';

 

Enfim .. o delemiter foi adicionado pois no MySQL Command Line, o ponto é virgula prevalece como delemitador de cada linha

então, se você cria um SQL grande, e tenta executar direto no CTRL + C, CTRL + V sem delemiter, pra indicar o inicio ou fim do SQL, você não vai conseguir criar, vai dar erro ..

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

C:\Users\Andrey>cd ..

C:\Users>cd ..

C:\>cd \dev\mysql\bin\

C:\dev\mysql\bin>mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.41 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> select @@event_scheduler;
+-------------------+
| @@event_scheduler |
+-------------------+
| OFF               |
+-------------------+
1 row in set (0.01 sec)

mysql> set global event_scheduler = 'on';
Query OK, 0 rows affected (0.02 sec)

mysql> select @@event_scheduler;
+-------------------+
| @@event_scheduler |
+-------------------+
| ON                |
+-------------------+
1 row in set (0.00 sec)

mysql>

 

:huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.