Kommunauty
Connexion
Inscription

[TUTO]v1.0] Nouvelle version du Tchat


Anonyme Messages : 0

Nouvelle version du Tchat

Date de sortie : 14/05/2010

Base : Xnova 0.8 SP1

Auteur : Winjet

Version : 1.0

Nouvelles fonctionnalités :

- Gestion des accents

- Suppression automatique des messages de plus de 3 jours

- Affichage de la date et de l'heure selon le fuseau horaire de Paris

Si votre univers dispose de joueurs n'ayant pas le même fuseau horaire, vous pouvez venir me demander de l'aide sur la manière de procéder

- Liste des joueurs connectés sur le Tchat

- Couleur unique pour chaque membre du staff (Administrateur, Opérateur, Modérateur)

- Possibilité d'envoyer un MP en cliquant sur le pseudo d'un joueur

- Ascenseur qui apparait lorsqu'il y a pas assez de place pour faire apparaitre tous les messages

- Idem pour la liste des connectés

La prochaine version permettra au staff de modérer le Tchat

On commence

Oups, j'allais oublié le screen

Cette fois, on commence

chat.php :

<?php

    /**
     * chat.php
     *
     * @version 1.0
     * @copyright 2008 by e-Zobar for XNova
     *
     * Modifié par Winjet
     */
    
    define('INSIDE'  , true);
    define('INSTALL' , false);

    $xnova_root_path = './';
    include($xnova_root_path . 'extension.inc');
    include($xnova_root_path . 'common.' . $phpEx);

    includeLang('chat');
    $BodyTPL = gettemplate('chat_body');

    $nick = $user['username'];
    $parse = $lang;

    $NbreDaysDelMsg = 3;
    $QryDeleteOldMsg = <<<SQL
                                DELETE FROM {{table}}
                                WHERE         `timestamp` <= UNIX_TIMESTAMP(NOW()) - (3600 * 24 * {$NbreDaysDelMsg});
SQL;
    
    // Les messages datant de plus de 3 jours
    // sont effacés
    doquery($QryDeleteOldMsg, 'chat');
    
    $QrySelectUsers = <<<SQL
                                SELECT         `id`, `username`, `authlevel`
                                FROM         {{table}}
                                WHERE         (`current_page` LIKE '%chat_msg.php%' OR `current_page` LIKE '%chat.php%') AND
                                            `onlinetime` >= UNIX_TIMESTAMP(NOW()) - 300
                                ORDER BY     `username` ASC;
SQL;
    
    // On récupère les joueurs qui sont sur le chat
    // il y a moins de 5 minutes
    $Result = doquery($QrySelectUsers, 'users');
    
    $parse['UsersConnected'] = "";
    
    while( $TheUser = mysql_fetch_array($Result) )
    {
        // Couleur personnalisée selon
        // le rang du joueur
        
        if ($TheUser['authlevel'] == 3)
            $color = "#FF0000";
        elseif ($TheUser['authlevel'] == 2)
            $color = "#660066";
        elseif ($TheUser['authlevel'] == 1)
            $color = "#006600";
        else
            $color = "#FFFFFF";
            
        $parse['UsersConnected'] .= <<<TXT
                                            <tr align="left">
                                                <td class="c" style="background-image: none; border: 0px;"><a href="messages.php?mode=write&id={$TheUser['id']}" style="color: {$color};">{$TheUser['username']}</a></td>
                                            </tr>
TXT;
    }
    
    $page = parsetemplate($BodyTPL, $parse);
    display($page, $lang['Chat'], false);

// Shoutbox by e-Zobar - Copyright XNova Team 2008
// Modifié par Winjet
?>

chat_add.php

<?php

/**
 * chat_add.php
 *
 * @version 1.0
 * @copyright 2008 by e-Zobar for XNova
 *
 * Modifié par Winjet
 */

define('INSIDE'  , true);
define('INSTALL' , false);

$xnova_root_path = './';
include($xnova_root_path . 'extension.inc');
include($xnova_root_path . 'common.' . $phpEx);

    // On récupère les informations du message et de l'envoyeur
    if (isset($_POST["msg"]) && isset($user['username']))
    {
       $nick = trim (str_replace ("+","plus",$user['username']));
       $msg  = trim (str_replace ("+","plus",$_POST["msg"]));
       $msg  = addslashes ($_POST["msg"]);
       $nick = addslashes ($user['username']);
    }
    else {
       $msg="";
       $nick="";
    }

    // Ajout du message dans la database
    if ( !empty($msg) && !empty($nick) ) {
       $query = doquery("INSERT INTO {{table}}(user, message, timestamp) VALUES ('".$nick."', '".$msg."', '".time()."')", "chat");
    }

// Shoutbox by e-Zobar - Copyright XNova Team 2008
// Modifié par Winjet
?>

chat_msg.php

<?php

    /**
     * chat_msg.php
     *
     * @version 1.0
     * @copyright 2008 by e-Zobar for XNova
     *
     * Modifié par Winjet
     */

    define('INSIDE'  , true);
    define('INSTALL' , false);

    $xnova_root_path = './';
    include($xnova_root_path . 'extension.inc');
    include($xnova_root_path . 'common.' . $phpEx);

    // On selectionne les messages présents dans la base de donnée
    $QrySelectMsg = <<<SQL
                            SELECT         c.user         AS `user`,
                                        c.message     AS `message`,
                                        c.timestamp AS `timestamp`,
                                        u.authlevel AS `authlevel`,
                                        u.id         AS `id`
                            FROM         {{table}}chat AS c
                            JOIN         {{table}}users AS u ON c.user = u.username
                            ORDER BY     `messageid` ASC;
SQL;

    $query = doquery($QrySelectMsg, '');
    while( $v = mysql_fetch_array($query) )
    {
        // On se protège de certaines données
        // dangereuses
        $nick = htmlentities($v['user']);
        $msg = htmlentities(utf8_decode($v['message']));
        $timestamp = intval($v['timestamp']);
        $authlevel = intval($v['authlevel']);
        $id = intval($v['id']);

        // Les différentes polices (gras, italique, couleurs, etc...)
        $msg=preg_replace("#[a=(ft|https?://)(.+)](.+)[/a]#isU", "<a href="$1$2" target="_blank">$3</a>", $msg);
        $msg=preg_replace("#[b](.+)[/b]#isU","<b>$1</b>",$msg);
        $msg=preg_replace("#[i](.+)[/i]#isU","<i>$1</i>",$msg);
        $msg=preg_replace("#[u](.+)[/u]#isU","<u>$1</u>",$msg);
        $msg=preg_replace("#[c=(blue|yellow|green|pink|red|orange)](.+)[/c]#isU","<font color="$1">$2</font>",$msg);

        // Les smileys avec leurs raccourcis
        $msg=preg_replace("#:c#isU","<img src="images/smileys/cry.png" align="absmiddle" title=":c" alt=":c">",$msg);
        $msg=preg_replace("#:/#isU","<img src="images/smileys/confused.png" align="absmiddle" title=":/" alt=":/">",$msg);
        $msg=preg_replace("#o0#isU","<img src="images/smileys/dizzy.png" align="absmiddle" title="o0" alt="o0">",$msg);
        $msg=preg_replace("#^^#isU","<img src="images/smileys/happy.png" align="absmiddle" title="^^" alt="^^">",$msg);
        $msg=preg_replace("##isU","<img src="images/smileys/lol.png" align="absmiddle" title="" alt="">",$msg);
        $msg=preg_replace("##isU","<img src="images/smileys/neutral.png" align="absmiddle" title="" alt="">",$msg);
        $msg=preg_replace("#:)#isU","<img src="images/smileys/smile.png" align="absmiddle" title=":)" alt=":)">",$msg);
        $msg=preg_replace("#:o#isU","<img src="images/smileys/omg.png" align="absmiddle" title=":o" alt=":o">",$msg);
        $msg=preg_replace("##isU","<img src="images/smileys/tongue.png" align="absmiddle" title="" alt="">",$msg);
        $msg=preg_replace("#:(#isU","<img src="images/smileys/sad.png" align="absmiddle" title=":(" alt=":(">",$msg);
        $msg=preg_replace("#;)#isU","<img src="images/smileys/wink.png" align="absmiddle" title=";)" alt=";)">",$msg);
        $msg=preg_replace("#:s#isU","<img src="images/smileys/shit.png" align="absmiddle" title=":s" alt=":s">",$msg);
        $msg=preg_replace("#xnova#","<a href="http://www.xnova.fr">XNova</a>",$msg);

        // Couleur personnalisée selon
        // le rang du joueur

        if ($authlevel == 3)
            $color = "#FF0000";
        elseif ($authlevel == 2)
            $color = "#660066";
        elseif ($authlevel == 1)
            $color = "#006600";
        else
            $color = "#FFFFFF";
            
        date_default_timezone_set("Europe/Paris");        
        $TimeText = strftime("[%d/%m/%Y]", $timestamp) . ' ' . strftime("[%H:%M]", $timestamp);
            
        // Affichage du message
        $msg = <<<TXT
                        <div align="left">
                            {$TimeText} <a href="messages.php?mode=write&id={$id}" style="color: {$color};">{$nick}</a> > {$msg}<br />
                        </div>
TXT;
        print stripslashes($msg);
    }
    // Shoutbox by e-Zobar - Copyright XNova Team 2008
    // Modifié par Winjet
?>

templates/OpenGame/chat_body.tpl

<script language="JavaScript" type="text/javascript" src="scripts/chat.js"></script>

<table align="center">
    <tbody>
        <tr>
            <td class="c">
                <b>{chat_disc}</b>
            </td>
            <td class="c" width="150">Liste des connectés</td>
        </tr>

        <tr>
            <th width="500">
                <div id="shoutbox" style="margin: 5px; vertical-align: text-top; height: 305px; overflow:visible;"></div>
            </th>
            <th valign="top" width="150" style="overflow:hidden;">
                <table>
                    {UsersConnected}
                </table>
            </th>
        </tr>

        <tr>
            <th colspan="2">{chat_message} : <input name="msg" type="text" id="msg" size="130" maxlength="100" onKeyPress="if(event.keyCode == 13){ addMessage(); } if (event.keyCode==60 || event.keyCode==62) event.returnValue = false; if (event.which==60 || event.which==62) return false;"> <input type="button" name="send" value="{chat_send}" id="send" onClick="addMessage()"></th>
        </tr>
    </tbody>
</table>

<br />

<table width="355" align="center">
    <tbody>
        <tr>
            <td colspan="2" class="c">
                <b>{chat_short}</b>
            </td>
        </tr>

        <tr>
            <th colspan="2">
                <img src="images/smileys/cry.png" align="absmiddle" title=":c" alt=":c" width="12" height="12" onClick="addSmiley(':c')" />
                <img src="images/smileys/confused.png" align="absmiddle" title=":/" alt=":/" width="12" height="12" onClick="addSmiley(':/')" />
                <img src="images/smileys/dizzy.png" align="absmiddle" title="o0" alt="o0" width="12" height="12" onClick="addSmiley('o0')" />
                <img src="images/smileys/happy.png" align="absmiddle" title="^^" alt="^^" width="12" height="12" onClick="addSmiley('^^')" />
                <img src="images/smileys/lol.png" align="absmiddle" title="" alt="" width="12" height="12" onClick="addSmiley('')" />
                <img src="images/smileys/neutral.png" align="absmiddle" title="" alt="" width="12" height="12" onClick="addSmiley('')" />
                <img src="images/smileys/smile.png" align="absmiddle" title=":)" alt=":)" width="12" height="12" onClick="addSmiley(':)')" />
                <img src="images/smileys/omg.png" align="absmiddle" title=":o" alt=":o" width="12" height="12" onClick="addSmiley(':o')" />
                <img src="images/smileys/tongue.png" align="absmiddle" title="" alt="" width="12" height="12" onClick="addSmiley('')" />
                <img src="images/smileys/sad.png" align="absmiddle" title=":(" alt=":(" width="12" height="12" onClick="addSmiley(':(')" />
                <img src="images/smileys/wink.png" align="absmiddle" title=";)" alt=";)" width="12" height="12" onClick="addSmiley(';)')" />
                <img src="images/smileys/shit.png" align="absmiddle" title=":s" alt=":s" width="12" height="12" onClick="addSmiley(':s')" />
            </th>
        </tr>

        <tr>
            <th width="60">
                <b>{chat_text}</b><br />
                <i>{chat_text}</i><br />
                <u>{chat_text}</u><br />
                <a href="http://www.site.com" target="_blank">{chat_text}</a><br />
                <font color="red">{chat_text}</font>
            </th>

            <th>
                [b]{chat_text}[/b]<br />
                [i]{chat_text}[/i]<br />
                [u]{chat_text}[/u]<br />
                [a=http://www.site.com]{chat_text}[/a]<br />
                [c=blue|yellow|green|pink|red|orange]{chat_text}[/c]
            </th>
        </tr>
    </tbody>
</table>
dimanche 17 octobre 2010

Anonyme Messages : 0

comment trouvez vous le tuto ?

lundi 18 octobre 2010

Alexou Messages : 2507

J'trouve que WinJet a fait un bon tuto

mardi 19 octobre 2010

Anonyme Messages : 0

je vais le lui dire

mardi 19 octobre 2010 (Dernière édition mercredi 20 octobre 2010)

Courroux Messages : 2209

Ouais, je trouve aussi

jeudi 21 octobre 2010

Bliinfo Messages : 174

#1 sur 2009.2

Modifier

    $xnova_root_path = './';
    include($xnova_root_path . 'extension.inc');
    include($xnova_root_path . 'common.' . $phpEx);

Par :

require_once dirname(__FILE__) .'/common.php';
lundi 1 novembre 2010

Mizur Messages : 6618

Et où est ce qu'on modifie ça, Bliinfo?

mercredi 3 novembre 2010

Courroux Messages : 2209

Dans chat.php

mercredi 3 novembre 2010

Bliinfo Messages : 174

oups désolé dans :

chat.php

chat_add.php

lundi 8 novembre 2010

vortex Messages : 10

Bonsoir par contre j'ai une erreur:

Unknown column 'current_page' in 'where clause'
SELECT `id`, `username`, `authlevel`
FROM game_users
WHERE (`current_page` LIKE '%chat_msg.php%' OR `current_page` LIKE '%chat.php%') AND
`onlinetime` >= UNIX_TIMESTAMP(NOW()) - 300
ORDER BY `username` ASC;

Quelqu'un pourrait me mettre cela sous forme de requête svp? car directement dans phpmyadmin cela ne marche pas..

Cordialement

lundi 4 avril 2011

Page suivante »