• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • New resources must be posted under Resources tab. A discussion thread will be created automatically, you can't open threads manually anymore.

TalkAction (6.1) Cyber's REPSystem w/Opinion Points for 0.4 && mAAC

Is this the best reputation system?

  • Yes.

    Votes: 131 66.2%
  • No.

    Votes: 30 15.2%
  • It's good but can be improved.

    Votes: 37 18.7%

  • Total voters
    198
  • Poll closed .
Status
Not open for further replies.
Warning: include(rep.php) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\index.php on line 114

Warning: include() [function.include]: Failed opening 'rep.php' for inclusion (include_path='.;C:\xampp\php\pear\') in C:\xampp\htdocs\index.php on line 114
Can U help me? :(
My ots: http://bubbleots.servegame.com/index.php?subtopic=rep
 
@up: place all the php files in their respective location
 
@up: the script isn't bugged. What happens is that the Gesior AAC has been deeply updated and one part of it isn't compatible with the function or the code in mine. I've been using old Gesior AAC for TFS 0.3.6 outdated since Nov.2009 and I've had no bug at all.

You can fix that 'image' issue by replacing your htdocs/config-and-functions.php with this:

PHP:
<?PHP
// ###################### CONFIG ########################
//load page config file
$config['site'] = parse_ini_file('config/config.ini');
include('config/config.php');
//check install
if($config['site']['install'] != "no")
{
    header("Location: install.php");
    exit;
}
//load server config
$config['server'] = parse_ini_file($config['site']['server_path'].'config.lua');
if(isset($config['server']['mysqlHost']))
{
    //new (0.2.6+) ots config_serv2.lua file
    $mysqlhost = $config['server']['mysqlHost'];
    $mysqluser = $config['server']['mysqlUser'];
    $mysqlpass = $config['server']['mysqlPass'];
    $mysqldatabase = $config['server']['mysqlDatabase'];
}
elseif(isset($config['server']['sqlHost']))
{
    //old (0.2.4) ots config_serv2.lua file
    $mysqlhost = $config['server']['sqlHost'];
    $mysqluser = $config['server']['sqlUser'];
    $mysqlpass = $config['server']['sqlPass'];
    $mysqldatabase = $config['server']['sqlDatabase'];
}
$sqlitefile = $config['server']['sqliteDatabase'];
$passwordency = '';
if(strtolower($config['server']['useMD5Passwords']) == 'yes' || strtolower($config['server']['passwordType']) == 'md5')
    $passwordency = 'md5';
if(strtolower($config['server']['passwordType']) == 'sha1')
    $passwordency = 'sha1';
// loads #####POT mainfile#####
include('pot/OTS.php');
// PDO and POT connects to database
$ots = POT::getInstance();
if(strtolower($config['server']['sqlType']) == "mysql")
{
    //connect to MySQL database
    try
    {
        $ots->connect(POT::DB_MYSQL, array('host' => $mysqlhost, 'user' => $mysqluser, 'password' => $mysqlpass, 'database' => $mysqldatabase) );
    }
    catch(PDOException $error)
    {
        echo 'Database error - can\'t connect to MySQL database. Possible reasons:<br>1. MySQL server is not running on host.<br>2. MySQL user, password, database or host isn\'t configured in: <b>'.$config['site']['server_path'].'config_serv2.lua</b> .<br>3. MySQL user, password, database or host is wrong.';
        exit;
    }
}
elseif(strtolower($config['server']['sqlType']) == "sqlite")
{
    //connect to SQLite database
    $link_to_sqlitedatabase = $config['site']['server_path'].$sqlitefile;
    try
    {
        $ots->connect(POT::DB_SQLITE, array('database' => $link_to_sqlitedatabase));
    }
    catch(PDOException $error)
    {
        echo 'Database error - can\'t open SQLite database. Possible reasons:<br><b>'.$link_to_sqlitedatabase.'</b> - file isn\'t valid SQLite database.<br><b>'.$link_to_sqlitedatabase.'</b> - doesn\'t exist.<br><font color="red">Wrong PHP configuration. Default PHP does not work with SQLite databases!</font>';
        exit;
    }
}
else
{
    echo 'Database error. Unknown database type in <b>'.$config['site']['server_path'].'config_serv2.lua</b> . Must be equal to: "<b>mysql</b>" or "<b>sqlite</b>". Now is: "<b>'.strtolower($config['server']['sqlType']).'"</b>';
    exit;
}

$SQL = POT::getInstance()->getDBHandle();
$layout_name = "layouts/".$layout_name = $config['site']['layout'];;
$layout_ini = parse_ini_file($layout_name.'/layout_config.ini');
foreach($layout_ini as $key => $value)
    $config['site'][$key] = $value;
//###################### FUNCTIONS ######################
function isPremium($premdays, $lastday)
{
    return ($premdays - (date("z", time()) + (365 * (date("Y", time()) - date("Y", $lastday))) - date("z", $lastday)) > 0);
}
//save config in ini file
function saveconfig_ini($config)
{
    $file = fopen("config/config.ini", "w");
    foreach($config as $param => $data)
    {
$file_data .= $param.' = "'.str_replace('"', '', $data).'"
';
    }
    rewind($file);
    fwrite($file, $file_data);
    fclose($file);
}
//return password to db
function password_ency($password)
{
    $ency = $GLOBALS['passwordency'];
    if($ency == 'sha1')
        return sha1($password);
    elseif($ency == 'md5')
        return md5($password);
    elseif($ency == '')
        return $password;
}
//delete player with name
function delete_player($name) {
    $SQL = $GLOBALS['SQL'];
    $player = new OTS_Player();
    $player->find($name);
    if($player->isLoaded()) {
        try { $SQL->query("DELETE FROM player_skills WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
        try { $SQL->query("DELETE FROM guild_invites WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
        try { $SQL->query("DELETE FROM player_items WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
        try { $SQL->query("DELETE FROM player_depotitems WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
        try { $SQL->query("DELETE FROM player_spells WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
        try { $SQL->query("DELETE FROM player_storage WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
        try { $SQL->query("DELETE FROM player_viplist WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
        try { $SQL->query("DELETE FROM player_deaths WHERE player_id = '".$player->getId()."';"); } catch(PDOException $error) {}
        try { $SQL->query("DELETE FROM player_deaths WHERE killed_by = '".$player->getId()."';"); } catch(PDOException $error) {}
        $rank = $player->getRank();
        if(!empty($rank)) {
            $guild = $rank->getGuild();
            if($guild->getOwner()->getId() == $player->getId()) {
                $rank_list = $guild->getGuildRanksList();
                if(count($rank_list) > 0) {
                    $rank_list->orderBy('level');
                    foreach($rank_list as $rank_in_guild) {
                        $players_with_rank = $rank_in_guild->getPlayersList();
                        $players_with_rank->orderBy('name');
                        $players_with_rank_number = count($players_with_rank);
                        if($players_with_rank_number > 0) {
                            foreach($players_with_rank as $player_in_guild) {
                                $player_in_guild->setRank();
                                $player_in_guild->save();
                            }
                        }
                        $rank_in_guild->delete();
                    }
                    $guild->delete();
                }
            }
        }
        $player->delete();
        return TRUE;
    }
}

//delete guild with id
function delete_guild($id) {
    $guild = new OTS_Guild();
    $guild->load($id);
    if($guild->isLoaded()) {
        $rank_list = $guild->getGuildRanksList();
        if(count($rank_list) > 0) {
            $rank_list->orderBy('level');
            foreach($rank_list as $rank_in_guild) {
                $players_with_rank = $rank_in_guild->getPlayersList();
                if(count($players_with_rank) > 0) {
                    foreach($players_with_rank as $player_in_guild) {
                        $player_in_guild->setRank();
                        $player_in_guild->save();
                    }
                }
                $rank_in_guild->delete();
            }
        }
        $guild->delete();
        return TRUE;
    }
    else
        return FALSE;
}

//is it valid nick?
function check_name($name)//sprawdza name
{
  $temp = strspn("$name", "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM- [ ] '");
  if ($temp != strlen($name)) {
    return false;
  }
  else
  {
    $ok = "/[a-zA-Z ']{1,25}/";
    return (preg_match($ok, $name))? true: false;
  }
}

//is it valid nick?
function check_account_name($name)//sprawdza name
{
  $temp = strspn("$name", "QWERTYUIOPASDFGHJKLZXCVBNM0123456789");
  if ($temp != strlen($name))
    return false;
  if(strlen($name) > 32)
    return false;
  else
  {
    $ok = "/[A-Z0-9]/";
    return (preg_match($ok, $name))? true: false;
  }
}

//is it valid nick for new char?
function check_name_new_char($name)//sprawdza name
{
    $name_to_check = strtolower($name);
    //first word can't be:
    //names blocked:
    $names_blocked = array('gm','cm', 'god', 'tutor');
    $first_words_blocked = array('gm ','cm ', 'god ','tutor ', "'", '-');
    //name can't contain:
    $words_blocked = array('gamemaster', 'game master', 'game-master', "game'master", '--', "''","' ", " '", '- ', ' -', "-'", "'-", 'fuck', 'sux', 'suck', 'noob', 'tutor');
    foreach($first_words_blocked as $word)
        if($word == substr($name_to_check, 0, strlen($word)))
            return false;
    if(substr($name_to_check, -1) == "'" || substr($name_to_check, -1) == "-")
        return false;
    if(substr($name_to_check, 1, 1) == ' ')
        return false;
    if(substr($name_to_check, -2, 1) == " ")
        return false;
    foreach($names_blocked as $word)
        if($word == $name_to_check)
            return false;
    foreach($GLOBALS['config']['site']['monsters'] as $word)
        if($word == $name_to_check)
            return false;
    foreach($GLOBALS['config']['site']['npc'] as $word)
        if($word == $name_to_check)
            return false;
    for($i = 0; $i < strlen($name_to_check); $i++)
        if($name_to_check[$i-1] == ' ' && $name_to_check[$i+1] == ' ')
            return false;
    foreach($words_blocked as $word)
        if (!(strpos($name_to_check, $word) === false))
            return false;
    for($i = 0; $i < strlen($name_to_check); $i++)
        if($name_to_check[$i] == $name_to_check[($i+1)] && $name_to_check[$i] == $name_to_check[($i+2)])
            return false;
    for($i = 0; $i < strlen($name_to_check); $i++)
        if($name_to_check[$i-1] == ' ' && $name_to_check[$i+1] == ' ')
            return false;
    $temp = strspn("$name", "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM- '");
    if ($temp != strlen($name))
        return false;
    else
    {
        $ok = "/[a-zA-Z ']{1,25}/";
        return (preg_match($ok, $name))? true: false;
    }
}

//is rank name valid?
function check_rank_name($name)//sprawdza name
{
  $temp = strspn("$name", "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789-[ ] ");
  if ($temp != strlen($name)) {
    return false;
  }
  else
  {
    $ok = "/[a-zA-Z ]{1,60}/";
    return (preg_match($ok, $name))? true: false;
  }
}
//is guild name valid?
function check_guild_name($name)
{
  $temp = strspn("$name", "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789- ");
  if ($temp != strlen($name)) {
    return false;
  }
  else
  {
    $ok = "/[a-zA-Z ]{1,60}/";
    return (preg_match($ok, $name))? true: false;
  }
}
//is it valid password?
function check_password($pass)//sprawdza haslo
{
  $temp = strspn("$pass", "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890");
  if ($temp != strlen($pass)) {
  return false;
  }
  else
  {
  $ok = "/[a-zA-Z0-9]{1,40}/";
  return (preg_match($ok, $pass))? true: false;
  }
}
//is it valid e-mail?
function check_mail($email)//sprawdza mail
{
  $ok = "/[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z]{2,4}/";
  return (preg_match($ok, $email))? true: false;
}

//################### DISPLAY FUNCTIONS #####################
//return shorter text (news ticker)
function short_text($text, $chars_limit) 
{
  if (strlen($text) > $chars_limit) 
    return substr($text, 0, strrpos(substr($text, 0, $chars_limit), " ")).'...';
  else return $text;
}
//return text to news msg
function news_place() {
if($GLOBALS['subtopic'] == "latestnews") {
//add tickers to site - without it tickers will not be showed
//$news .= $GLOBALS['news_content'];
/*
//featured article
$layout_name = $GLOBALS['layout_name'];
$news .= '  <div id="featuredarticle" class="Box">
    <div class="Corner-tl" style="background-image:url('.$layout_name.'/images/content/corner-tl.gif);"></div>
    <div class="Corner-tr" style="background-image:url('.$layout_name.'/images/content/corner-tr.gif);"></div>
    <div class="Border_1" style="background-image:url('.$layout_name.'/images/content/border-1.gif);"></div>
    <div class="BorderTitleText" style="background-image:url('.$layout_name.'/images/content/title-background-green.gif);"></div>
    <img class="Title" src="'.$layout_name.'/images/strings/headline-featuredarticle.gif" alt="Contentbox headline" />
    <div class="Border_2">
      <div class="Border_3">
        <div class="BoxContent" style="background-image:url('.$layout_name.'/images/content/scroll.gif);">
<div id=\'TeaserThumbnail\'><img src="'.$layout_name.'/images/news/features.jpg" width=150 height=100 border=0 alt="" /></div><div id=\'TeaserText\'><div style="position: relative; top: -2px; margin-bottom: 2px;" >
<b>Tutaj wpisz tytul</b></div>
tutaj wpisz tresc newsa<br>
zdjecie laduje sie w <i>tibiacom/images/news/features.jpg</i><br>
skad sie laduje mozesz zmienic linijke ponad komentarzem
</div>        </div>
      </div>
    </div>
    <div class="Border_1" style="background-image:url('.$layout_name.'/images/content/border-1.gif);"></div>
    <div class="CornerWrapper-b"><div class="Corner-bl" style="background-image:url('.$layout_name.'/images/content/corner-bl.gif);"></div></div>
    <div class="CornerWrapper-b"><div class="Corner-br" style="background-image:url('.$layout_name.'/images/content/corner-br.gif);"></div></div>
  </div>';
 */
}
return $news;
}
//set monster of week
function logo_monster() {
    return str_replace(" ", "", trim(mb_strtolower($GLOBALS['layout_ini']['logo_monster'])));
}
$statustimeout = 1;
foreach(explode("*", str_replace(" ", "", $config['server']['statusTimeout'])) as $status_var)
    if($status_var > 0)
        $statustimeout = $statustimeout * $status_var;
$statustimeout = $statustimeout / 1000;
$config['status'] = parse_ini_file('config/serverstatus');
if($config['status']['serverStatus_lastCheck']+$statustimeout < time())
{
    $config['status']['serverStatus_checkInterval'] = $statustimeout+3;
    $config['status']['serverStatus_lastCheck'] = time();
    $info = chr(6).chr(0).chr(255).chr(255).'info';
    $sock = @fsockopen("127.0.0.1", $config['server']['statusPort'], $errno, $errstr, 1);
    if ($sock)
    {
        fwrite($sock, $info); 
        $data=''; 
        while (!feof($sock))
            $data .= fgets($sock, 1024);
        fclose($sock);
        preg_match('/players online="(\d+)" max="(\d+)"/', $data, $matches);
        $config['status']['serverStatus_online'] = 1;
        $config['status']['serverStatus_players'] = $matches[1];
        $config['status']['serverStatus_playersMax'] = $matches[2];
        preg_match('/uptime="(\d+)"/', $data, $matches);
        $h = floor($matches[1] / 3600);
        $m = floor(($matches[1] - $h*3600) / 60);
        $config['status']['serverStatus_uptime'] = $h.'h '.$m.'m';
        preg_match('/monsters total="(\d+)"/', $data, $matches);
        $config['status']['serverStatus_monsters'] = $matches[1];
    }
    else
    {
        $config['status']['serverStatus_online'] = 0;
        $config['status']['serverStatus_players'] = 0;
        $config['status']['serverStatus_playersMax'] = 0;
    }
    $file = fopen("config/serverstatus", "w");
    foreach($config['status'] as $param => $data)
    {
$file_data .= $param.' = "'.str_replace('"', '', $data).'"
';
    }
    rewind($file);
    fwrite($file, $file_data);
    fclose($file);
}

//PAGE VIEWS COUNTER :)
$views_counter = "usercounter.dat";
// checking if the file exists
if (file_exists($views_counter)) {
    // het bestand bestaat, waarde + 1
    $actie = fopen($views_counter, "r+"); 
    $page_views = fgets($actie, 9); 
    $page_views++; 
    rewind($actie); 
    fputs($actie, $page_views, 9); 
    fclose($actie); 
}
else
{ 
    // the file doesn't exist, creating a new one with value 1
    $actie = fopen($views_counter, "w"); 
    $page_views = 1; 
    fputs($actie, $page_views, 9); 
    fclose($actie); 
} 
function makeOrder($arr, $order, $default) {
    // Function by Colandus!
    $type = 'asc';
    if(isset($_GET['order'])) {
        $v = explode('_', strrev($_GET['order']), 2);
        if(count($v) == 2)
            if($orderBy = $arr[strrev($v[1])])
                $default = $orderBy;
                $type = (strrev($v[0]) == 'asc' ? 'desc' : 'asc');
    }
    
    return 'ORDER BY ' . $default . ' ' . $type;
}

function getOrder($arr, $order, $this) {
    // Function by Colandus!
    $type = 'asc';
    if($orderBy = $arr[$this])
        if(isset($_GET[$order])) {
            $v = explode('_', strrev($_GET[$order]), 2);
            if(strrev($v[1]) == $this)
                $type = (strrev($v[0]) == 'asc' ? 'desc' : 'asc');
        }
    
    return $this . '_' . $type;
}  

function write($text) {
    $GLOBALS['main_content'] .= $text;
}

function error($text, $return = null) {
    $err = '<span style="color: red; font-style: italic;">' . $text . '</span>';
    $GLOBALS['ERROR'] = $err;

    if($return === true)
        return $err;
    elseif($return === null)
        write($err);
}

function get_title_color() {
    return $GLOBALS['config']['site']['vdarkborder'];
}

function get_color($set = false) {
    static $i = 0;
    if($set !== false)
        $i = $set;
    return $GLOBALS['config']['site'][($i++ % 2 ? 'light' : 'dark') . 'border'];
}  

function getPlayerSpeed($level)
{
    $formula = 220 + (2 * ($level - 1));
    return $formula;
}

//THE Players'REP++ System by Cybermaster
//Function by MakroMango 
function reputation($rep)
    {
        $images = array('<img src="rep/rep-.png" />', '<img src="rep/rep0.gif"/>', '<img src="rep/rep+.gif" />');
        $ranks = array(
            'Power Abuser' => array(null, -5000, $images[0].$images[0].$images[0].$images[0].$images[0].$images[0].$images[0]),
            'Evil' => array(-4999, -1500, $images[0].$images[0].$images[0].$images[0].$images[0].$images[0]),
            'Gangster' => array(-1499, -1000, $images[0].$images[0].$images[0].$images[0].$images[0]),
            'Villian' => array(-999, -500, $images[0].$images[0].$images[0].$images[0]),
            'PK' => array(-499, -300, $images[0].$images[0].$images[0]),
            'Bad Guy' => array(-499, -300, $images[0].$images[0]),
            'Noob' => array(-299, 299, $images[1]),
            'Well-Known' => array(300, 499, $images[2].$images[2]),
            'Popular' => array(500, 999, $images[2].$images[2].$images[2]),
            'Hailed' => array(1000, 1499, $images[2].$images[2].$images[2].$images[2]),
            'The Best' => array(1500, 1999, $images[2].$images[2].$images[2].$images[2].$images[2]),
            'Hero' => array(2000, 4999, $images[2].$images[2].$images[2].$images[2].$images[2].$images[2]),
            'Legendary Hero' => array(5000, null, $images[2].$images[2].$images[2].$images[2].$images[2].$images[2].$images[2])
        );

        foreach($ranks as $rank => $values)
        {
            if($values[0] == null)
            {
                if($rep <= $values[1])
                {
                    return array($rank, $values[2]);
                }
            }
            elseif($values[1] == null)
            {
                if($rep >= $values[0])
                {
                    return array($rank, $values[2]);
                }
            }
            else
            {
                if($rep >= $values[0] and $rep <= $values[1])
                {
                    return array($rank, $values[2]);
                }
            }
        }
    }  
?>

I might add an update later, but I need a lot of time for it.
 
@up
the code needs an update, which i'll make later
 
Other great idea is add the reputation system in the forum, the rank and the points, im made my own script to that, and working in the botton of REP++.

dibujoln.jpg


Of course im edited the img of the ranks and other things.

@Cyber: You may add an option in the php code to hidde the GM CM or GODS, for example

PHP:
$showstaff = 0; // 1 if you like show staff in rank
if($showstaff == 0)
{
$searchinsql = 3; //Senor tutor or less
}else
{
$searchinsql = 6; //God or less
}

//in select the top of reputation, searh where group_id < $searchingsql

With this option the GOD can decide if he likee appear in the ranks or not.
 
Last edited:
Other great idea is add the reputation system in the forum, the rank and the points, im made my own script to that, and working in the botton of REP++.

dibujoln.jpg


Of course im edited the img of the ranks and other things.

yup, i've done the same thing with mine
i might publish the code

i was thinking in making a paralel vbulletin rep system in php, related with ot
 
Uhm, would this work with Spomots, i cleaned up that distro a little, put it online, people like it, and id like to se up this system for them

Thanks, please send pivate message thanks
(rep+)
 
Uhm, would this work with Spomots, i cleaned up that distro a little, put it online, people like it, and id like to se up this system for them

Thanks, please send pivate message thanks
(rep+)
I don't know what Spomots is, but I assume that it is TFS distro-based. And I have made a very clear tutorial to install the sys into an OT, since I don't have to do it.
 
Oh, is that already implemented?

Cyber, how do i remove account manager and samples from the list?
The wrotsrepped image is not loading :(

" WHERE `name` != "Rook Sample" AND `name` != "Druid Sample" AND `name` != "Sorcerer Sample" AND `name` != "Paladin Sample" AND `name` != "Knight Sample" AND `name` != "GOD Lw" AND `name` != "Account Manager" "

i need these players to be not shown ^^ thx
 
Maybe the worse is not loading because there isnt any?
 
Maybe the worse is not loading because there isnt any?
read some posts before, i'm tired explaining why the pics are not being shown
 
Oh, is that already implemented?

Cyber, how do i remove account manager and samples from the list?
The wrotsrepped image is not loading :(

" WHERE `name` != "Rook Sample" AND `name` != "Druid Sample" AND `name` != "Sorcerer Sample" AND `name` != "Paladin Sample" AND `name` != "Knight Sample" AND `name` != "GOD Lw" AND `name` != "Account Manager" "

i need these players to be not shown ^^ thx

what about the account manager etc?
a waste of codes
Code:
..WHERE `id` > 6 and `access` = 1
compare now
 
ok, so where do i paste this code ? and, i trying to findo in the pages what i asked about the image but there are 32 pages, couldnt you just say ?
 
Status
Not open for further replies.
Back
Top