Tuto prix de Tazou pour une actualisation automatique. Alors pour résumer, il se base (donc il a un précision lié à la présence de joueurs) Il surcharge pas du tout le serveur et tres simple a mettre en place. Actuellement, il se base sur l'heure. (On pourra le faire évoluer sur une date précise ou par minute, à voir) But : Pouvoir lancer une fonction interne du jeu, une requête SQL ou modifier une variable a une heure précise. A noter que je travail toujours dessus, la c'est juste un version Beta. (j'ai vu un bug possible que je corrigerais dans la prochaine version) N'hésitez pas a donner des idées. Seul défaut, il utilise le moteur du jeu pour faire ses actions. Donc il est limité aux actions des joueurs. (mais je l'ai sur mon serveur depuis 5 jours et pour l'instant ca marche nickel)
Passons au tuto : ouvrer le fichier common.php Chercher CheckPlanetUsedFields($planetrow);
ajouter après EmulatecronJob(date('G'));
ouvrer le fichier includes/todofleetcontrol.php ajouter après le dernier "include($xnova_root_path ......" include($xnova_root_path . 'includes/functions/cronjob.'.$phpEx);
Créer un fichier cronjob.php inclus dans includes/functions/ Et mettez ceci dedans: <?php
/** * cronjob.php by Ze Tazou (www.united-gamers.fr) * * This plugin emulate cron job * No real cronjob, i can do this with shmop_open, etc.. but not the time to do this now * */ function EmulatecronJob ($LocalHeure) { global $phpEx, $xnova_root_path, $lang, $game_config, $Hourlycronjob; if (isset($game_config['cron_heure'])==false) { doquery("INSERT INTO {{table}} SET `config_name` ='cron_heure', `config_value` = '" .$LocalHeure."'", 'config'); $query = doquery("SELECT * FROM {{table}}",'config'); while ( $row = mysql_fetch_assoc($query) ) { $game_config[$row['config_name']] = $row['config_value']; } } // Tazou on forme la mise à jour de l heure si il y a un pb. if ($LocalHeure==$game_config['cron_heure']) { if (isset($Hourlycronjob)==true) { if (count($Hourlycronjob)) { for ( $IDCron = 1; $IDCron < (count($Hourlycronjob)+1); $IDCron++) { if ($Hourlycronjob[$IDCron]['Heure']=="*" || $Hourlycronjob[$IDCron]['Heure']==$LocalHeure) { $functoexec = ''; switch ($Hourlycronjob[$IDCron]['Type']) { // 1 on execute une fonction, 2 on met une valeur , 3 On exectute une requete case 1: $functoexec = $Hourlycronjob[$IDCron]['Execute']."(".$Hourlycronjob[$IDCron]['Parametres'].");"; break; case 2: $functoexec = $Hourlycronjob[$IDCron]['Execute']."='".$Hourlycronjob[$IDCron]['Parametres']."';"; break; case 3: $functoexec = "doquery("".$Hourlycronjob[$IDCron]['Execute']."", '".$Hourlycronjob[$IDCron]['Parametres']."');"; break; } eval($functoexec); } } } } // Tazou On ajoute la prochaine heure de mise à jour if ($LocalHeure==23) { $LocalHeuremodif=0; } else { $LocalHeuremodif=$LocalHeure+1; } doquery("UPDATE {{table}} SET `config_value` = '" .$LocalHeuremodif ."' WHERE `config_name` ='cron_heure'", 'config');
} } ?> Maintenant on va planifier les fonctions Noter que ceci sont des exemples..
ouvrir le fichier /includes/vars.php chercher $reslist['build'] ajouter AVANT $Hourlycronjob = array ( //1 => array( 'Heure' => '13', 'Type' => 3, 'Execute' => 'UPDATE {{table}} SET `config_value` = 'forum_url' WHERE `config_name` ='http://www.united-gamers.fr/forum/viewforum.php?f=62'', 'Parametres' =>'config'), //2 => array( 'Heure' => '*', 'Type' => 1, 'Execute' => 'StatsManuelle', 'Parametres' =>'true'), //3 => array( 'Heure' => '8', 'Type' => 1, 'Execute' => 'StatsManuelle', 'Parametres' =>'true'), ); Attention ceci sont des exemples, Heure peut etre de 0 a 23 (*=toutes les heures) Type : 1 = exécute une fonction, 2 = modifie une variable, 3 exécute une requête. vous devez respecter (1,2,3,4..) dans l'ordre de vos planifications |