Erreur code ressources - MOD eXpedition v1.2.2

Démarré par Santoryu, 07 Juin 2020, 15:50:57

« précédent - suivant »

Santoryu

Bonjour à tous,

Je viens de mettre à dispo pour mon alliance un OGSpy sur serveur dédié. Pour l'installation, quelques petites batailles de version avec php sinon tout s'est bien passé.
Par contre je me heurte à un bug concernant le mod eXpedition, impossible de lui faire prendre en compte les messages de gain ressources. Tous les autres types de messages d'expédition passent (vaisseaux, retard, pirates, aliens...) mais pas les ressources.

Dans les logs erreur, j'ai ce message :
PHP Warning:  preg_match(): Compilation failed: escape sequence is invalid in character class at offset 33 in /opt/ogspy/mod/expedition/_xtense.php on line 187

La ligne 187 correspond à la première ligne de ce bloc...
                else if(preg_match($regexRess, $content, $expRess) != 0){
                        logging("RESSOURCES");
                        logging("Ressources1 : ".$expRess[1]);
                        logging("Ressources2 : ".$expRess[2]);
                        //      L`attaquant obtient Antimatière (AM) 310.Extrait du journal
                        log_('debug', $expRess[2]);
                        if(preg_match("/Métal/", $expRess[1]))
                        {
                                $typeRess = 0;
                                $met = str_replace('.','', $expRess[2]);
                                $cri = 0;
                                $deut = 0;
                                $antimat = 0;
                        }
                        if(preg_match("/Cristal/", $expRess[1]))
                        {
                                $typeRess = 1;
                                $met = 0;
                                $cri = str_replace('.','', $expRess[2]);
                                $deut = 0;
                                $antimat = 0;
                        }
                        if(preg_match("/Deutérium/", $expRess[1]))
                        {
                                $typeRess = 2;
                                $met = 0;
                                $cri = 0;
                                $deut = str_replace('.','', $expRess[2]);
                                $antimat = 0;
                        }
                        if(preg_match("/Antimatière/", $expRess[1]))
                        {
                                $typeRess = 3;
                                $met = 0;
                                $cri = 0;
                                $deut = 0;
                                $antimat = str_replace('.','', $expRess[2]);
                        }
                        if($typeRess == -1)
                        {
                                die("Parsing Error");
                        }

                        logging("Ressources : Insertion table : ".TABLE_EXPEDITION);
                        $query =
                                        "INSERT INTO ".TABLE_EXPEDITION."
                                        (user_id, date, pos_galaxie, pos_sys, type)
                                        VALUES ($uid, $timestamp, $galaxy, $system, 1)";
                        $db->sql_query($query);
                        $idInsert = $db->sql_insertid();
                        logging("Ressources : Insertion table : ".TABLE_EXPEDITION." = OK");
                        logging("Ressources : Insertion table : ".TABLE_EXPEDITION_RESS);
                        $query =
                                "INSERT INTO ".TABLE_EXPEDITION_RESS."
                                (id_eXpedition, typeRessource, metal, cristal, deuterium, antimatiere)
                                VALUES ($idInsert, $typeRess, $met, $cri, $deut, $antimat)";
                        $db->sql_query($query);
                        logging("Ressources : Insertion table : ".TABLE_EXPEDITION_RESS." = OK");
                        return true;
                }


Quelqu'un aurait une idée?
Merci

DarkNoon

Hello

La correction a été identifiée. La publication est proche ;-)
Héberger votre OGSpy : Hébergement

roms0406

Bonjour,

Oui en effet c'est un problème lié à la version 7.4 de php, un changement dans la syntaxe qui fait que ça ne fonctionne plus normalement.
C'est toujours fonctionnel avec les versions antérieures de php, je n'ai pas eu trop le temps de m'y metttre ces derniers temps, je vais essayer de corriger ça au plus vite ;)

DarkNoon

Héberger votre OGSpy : Hébergement

Obscur

Hello,

Je ne sais pas si c'est toujours d'actualité, mais le problème est effectivement lié aux échappements (et à ce qui doit maintenant être échappé) des caractères des regex sur la version 7.4 de php.
J'avais réussi à faire marcher le truc en bidouillant la ligne 74 du fichier xtense.php dans le dossier du mod extension:
J'ai remplacé:

$regexRess  = "/L`attaquant\sobtient\s(\S+)\s[\(\AM\)]*\s?([\d+\.+]*)/";

Par la ligne suivante:

$regexRess  = "/L`attaquant\sobtient\s(\S+)\s[\\\(\\\AM\\\)]*\s?([\d+\.+]*)/";


Je partage à tout hasard, si ça peut servir à quelqu'un  :)

DarkNoon

Héberger votre OGSpy : Hébergement