• 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!

2 Helps znote highscores

warriorfrog

Active Member
Joined
Jul 29, 2015
Messages
334
Reaction score
35
I need 2 helps in my znote highscores:

1- Flags are not showing, every show a broke img

2- Filter for country is not working
When you select you can choose, filter to
type(experience,skill) / Page(1,2,3...) / vocation / country

Type,Page,Vocation is working
But for country is not

highscores.php
http://hastebin.com/butagedeje.bash
 
The generated URL filepath to the flag image files is probably what is wrong here. What url do you use when you enter your Znote AAC installation?
 
It could be beneficial to give us an url to your website so we could have a look at how the flags in the highscores currently breaks.

Znote could you please take a look on code?
On my highscores.php
http://hastebin.com/ehaxokezid.bash

To fix problem:

2- Filter for country is not working

I think my problem is i need to make a:
PHP:
$from = ???

Like on lines:
PHP:
    // Fetch highscore type
    $voc = (isset($_GET['vocation'])) ? (int)getValue($_GET['vocation']) : 5;
    $type = (isset($_GET['type'])) ? (int)getValue($_GET['type']) : 7;


To fix
1- Flags are not showing, every show a broke img

I've tried to add:
PHP:
$account_data = user_znote_account_data($profile_data['account_id'], 'flag');

But still not showing flag on highscores.php, but working on characterprofile.php
wtf


characterprofile.php:
http://hastebin.com/orejometoq.xml
 
You probably need to modify the queries inside the function fetchAllScores so the player data returned includes their flags.

Highscores.php:

Remove:
PHP:
$account_data = user_znote_account_data($profile_data['account_id'], 'flag');

Replace:
PHP:
<td><?php echo '<img src="flags/' . $account_data['flag'] . '.png">'; ?></td>

With:
PHP:
<td><?php echo '<img src="flags/' . $scores[$type][$i]['flag'] . '.png">'; ?></td>

Edit function in engines/function/users.php:

PHP:
function fetchAllScores($rows, $tfs, $g, $v = -1) {
// Return scores ordered by type and vocation (if set)
$data = array();
if ($tfs == 'TFS_10') {
// Generate SQL WHERE-clause for vocation if $v is set
$v = ($v > -1) ? 'AND `vocation` = '. intval($v) : NULL;
$data[1] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_club` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_club` DESC LIMIT 0, $rows;");
$data[2] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_sword` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_sword` DESC LIMIT 0, $rows;");
$data[3] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_axe` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_axe` DESC LIMIT 0, $rows;");
$data[4] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_dist` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_dist` DESC LIMIT 0, $rows;");
$data[5] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_shielding` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_shielding` DESC LIMIT 0, $rows;");
$data[6] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_fishing` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_fishing` DESC LIMIT 0, $rows;");
$data[7] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `experience`, `level` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `experience` DESC LIMIT 0, $rows;");
$data[8] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `maglevel` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `maglevel` DESC LIMIT 0, $rows;");
$data[9] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_fist` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_fist` DESC LIMIT 0, $rows;");
} else {
// Generate SQL WHERE-clause for vocation if $v is set
$v = ($v > -1) ? 'AND `p`.`vocation` = '. intval($v) : NULL;
$data[9] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 0 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
$data[1] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 1 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
$data[2] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 2 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
$data[3] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 3 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
$data[4] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 4 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
$data[5] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 5 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
$data[6] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 6 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
$data[7] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `experience`, `level` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `experience` DESC limit 0, $rows;");
$data[8] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `maglevel` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `maglevel` DESC limit 0, $rows;");
}
return $data;
}
// END HIGHSCORE FUNCTIONS

There are several queries here, if we break up the first query to several lines to make it easier to read, it looks like this:
PHP:
SELECT `id`, `name`, `vocation`, `skill_club` AS `value`
FROM `players`
WHERE `group_id` < $g $v
ORDER BY `skill_club` DESC LIMIT 0, $rows;
We probably need to edit every query so they retrieve the players country code.

# Give players table the p prefix:
PHP:
FROM `players` as `p`

# Add player table prefix to player table related columns
PHP:
SELECT `p`.`name`

# Inner join the znote accounts table, give the accounts table prefix za
PHP:
INNER JOIN `znote_accounts` AS `za`

# Logically link together the players table correctly with the znote_accounts table:
PHP:
ON `p`.`account_id` = `za`.`account_id`

# Select the flag column
PHP:
`za`.`flag`

# Sample query for club fighting:

# BEFORE modifications:
PHP:
SELECT `id`, `name`, `vocation`, `skill_club` AS `value`
FROM `players`
WHERE `group_id` < $g $v
ORDER BY `skill_club` DESC LIMIT 0, $rows;

# AFTER modifications:
PHP:
SELECT `za`.`flag`, `p`.`id`, `p`.`name`, `p`.`vocation`, `p`.`skill_club` AS `value`
FROM `players` AS `p`
INNER JOIN `znote_accounts` AS `za`
ON `p`.`account_id` = `za`.`account_id`
WHERE `group_id` < $g $v
ORDER BY `skill_club` DESC LIMIT 0, $rows;

Do this with the 9 queries that corresponds with your TFS version. (the first 9 queries if you use TFS 1.0+, the last 9 queries if you use TFS 0.2/3/4).

Flush the cache by removing all lines in highscores.cache.php so the file is completely empty and refresh the highscores page to see the results.
 
You probably need to modify the queries inside the function fetchAllScores so the player data returned includes their flags.

Highscores.php:

Remove:
PHP:
$account_data = user_znote_account_data($profile_data['account_id'], 'flag');

Replace:
PHP:
<td><?php echo '<img src="flags/' . $account_data['flag'] . '.png">'; ?></td>

With:
PHP:
<td><?php echo '<img src="flags/' . $scores[$type][$i]['flag'] . '.png">'; ?></td>

Edit function in engines/function/users.php:

PHP:
function fetchAllScores($rows, $tfs, $g, $v = -1) {
// Return scores ordered by type and vocation (if set)
$data = array();
if ($tfs == 'TFS_10') {
// Generate SQL WHERE-clause for vocation if $v is set
$v = ($v > -1) ? 'AND `vocation` = '. intval($v) : NULL;
$data[1] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_club` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_club` DESC LIMIT 0, $rows;");
$data[2] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_sword` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_sword` DESC LIMIT 0, $rows;");
$data[3] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_axe` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_axe` DESC LIMIT 0, $rows;");
$data[4] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_dist` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_dist` DESC LIMIT 0, $rows;");
$data[5] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_shielding` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_shielding` DESC LIMIT 0, $rows;");
$data[6] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_fishing` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_fishing` DESC LIMIT 0, $rows;");
$data[7] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `experience`, `level` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `experience` DESC LIMIT 0, $rows;");
$data[8] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `maglevel` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `maglevel` DESC LIMIT 0, $rows;");
$data[9] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `skill_fist` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `skill_fist` DESC LIMIT 0, $rows;");
} else {
// Generate SQL WHERE-clause for vocation if $v is set
$v = ($v > -1) ? 'AND `p`.`vocation` = '. intval($v) : NULL;
$data[9] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 0 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
$data[1] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 1 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
$data[2] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 2 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
$data[3] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 3 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
$data[4] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 4 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
$data[5] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 5 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
$data[6] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 6 AND `p`.`group_id` < $g $v ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
$data[7] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `experience`, `level` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `experience` DESC limit 0, $rows;");
$data[8] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `maglevel` AS `value` FROM `players` WHERE `group_id` < $g $v ORDER BY `maglevel` DESC limit 0, $rows;");
}
return $data;
}
// END HIGHSCORE FUNCTIONS

There are several queries here, if we break up the first query to several lines to make it easier to read, it looks like this:
PHP:
SELECT `id`, `name`, `vocation`, `skill_club` AS `value`
FROM `players`
WHERE `group_id` < $g $v
ORDER BY `skill_club` DESC LIMIT 0, $rows;
We probably need to edit every query so they retrieve the players country code.

# Give players table the p prefix:
PHP:
FROM `players` as `p`

# Add player table prefix to player table related columns
PHP:
SELECT `p`.`name`

# Inner join the znote accounts table, give the accounts table prefix za
PHP:
INNER JOIN `znote_accounts` AS `za`

# Logically link together the players table correctly with the znote_accounts table:
PHP:
ON `p`.`account_id` = `za`.`account_id`

# Select the flag column
PHP:
`za`.`flags`

# Sample query for club fighting:

# BEFORE modifications:
PHP:
SELECT `id`, `name`, `vocation`, `skill_club` AS `value`
FROM `players`
WHERE `group_id` < $g $v
ORDER BY `skill_club` DESC LIMIT 0, $rows;

# AFTER modifications:
PHP:
SELECT `za`.`flags`, `p`.`id`, `p`.`name`, `p`.`vocation`, `p`.`skill_club` AS `value`
FROM `players` AS `p`
INNER JOIN `znote_accounts` AS `za`
ON `p`.`account_id` = `za`.`account_id`
WHERE `group_id` < $g $v
ORDER BY `skill_club` DESC LIMIT 0, $rows;

Do this with the 9 queries that corresponds with your TFS version. (the first 9 queries if you use TFS 1.0+, the last 9 queries if you use TFS 0.2/3/4).

Flush the cache by removing all lines in highscores.cache.php so the file is completely empty and refresh the highscores page to see the results.

I'll use the same highscores.php i liked the idea

But znote... I've change:
PHP:
<td><?php echo '<img src="flags/' . $account_data['flag'] . '.png">'; ?></td>
To
PHP:
<td><?php echo '<img src="flags/' . $scores[$type][$i]['flag'] . '.png">'; ?></td>

And flags still not showing...

And the part to change in user.php was to hard to i understand, i'm sorry, could you explain for noobs like me?
I'm not use 1.0, i'm using 0.4 i need to edit it:
PHP:
    } else {
       $data[9] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 0 AND `p`.`group_id` < $g ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
       $data[1] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 1 AND `p`.`group_id` < $g ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
       $data[2] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 2 AND `p`.`group_id` < $g ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
       $data[3] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 3 AND `p`.`group_id` < $g ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
       $data[4] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 4 AND `p`.`group_id` < $g ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
       $data[5] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 5 AND `p`.`group_id` < $g ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
       $data[6] = mysql_select_multi("SELECT `s`.`player_id` AS `id`, `s`.`value` AS `value`, `p`.`name` AS `name`, `p`.`vocation` AS `vocation` FROM `player_skills` AS `s` LEFT JOIN `players` AS `p` ON `s`.`player_id`=`p`.`id` WHERE `s`.`skillid` = 6 AND `p`.`group_id` < $g ORDER BY `s`.`value` DESC LIMIT 0, $rows;");
       $data[7] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `experience`, `level` AS `value` FROM `players` WHERE `group_id` < $g ORDER BY `experience` DESC limit 0, $rows;");
       $data[8] = mysql_select_multi("SELECT `id`, `name`, `vocation`, `maglevel` AS `value` FROM `players` WHERE `group_id` < $g ORDER BY `maglevel` DESC limit 0, $rows;");
   }
 
Back
Top