shakal1994
Member
- Joined
- Nov 20, 2020
- Messages
- 79
- Reaction score
- 15
hello my heroes
I'm trying to adjust my powergamers in Znote AAC, but I'm facing a difficulty.
My server is based on Celohe's TFS 1.2, downgrade to 8.0
I'm not sure if it's the globalevents, or the html page.
The problem is the following, when I run the query in the DB
But if a player enters level 8 and dies, it gives a bug.
I already know that the problem is that negative exp, but I really wanted to solve this
Here is the error that appears when someone has negative exp
Globalevents
html
I'm trying to adjust my powergamers in Znote AAC, but I'm facing a difficulty.
My server is based on Celohe's TFS 1.2, downgrade to 8.0
I'm not sure if it's the globalevents, or the html page.
The problem is the following, when I run the query in the DB
At first it works.UPDATE znote_players AS z INNER JOIN players AS p ON p.id = z.player_id SET z.exphist_lastexp = p.experience;
But if a player enters level 8 and dies, it gives a bug.
I already know that the problem is that negative exp, but I really wanted to solve this
Here is the error that appears when someone has negative exp
Powergamers
string(435) "SELECTa
.id
,b
.player_id
,a
.name
,a
.vocation
,a
.level
,a
.group_id
,a
.experience
,b
.exphist_lastexp
,b
.exphist1
,b
.exphist2
,b
.exphist3
,b
.exphist4
,b
.exphist5
,b
.exphist6
,b
.exphist7
, (a
.experience
-b
.exphist_lastexp
) ASexpdiff
FROMplayers
a
JOINznote_players
b
ONa
.id
=b
.player_id
WHEREa
.group_id
< 2 ORDER BYexpdiff
DESC LIMIT 20"
(query - SQL error)
Type: select_multi (select multiple rows from database)
BIGINT UNSIGNED value is out of range in '(old
.a
.experience
-old
.b
.exphist_lastexp
)'
Globalevents
local function getEternalStorage(key, parser)
local value = result.getDataString(db.storeQuery("SELECTvalue
FROMznote_global_storage
WHEREkey
= ".. key .. ";"), "value")
if not value then
if parser then
return false
else
return -1
end
end
return tonumber(value) or value
end
local function setEternalStorage(key, value)
if getEternalStorage(key, true) then
db.query("UPDATEznote_global_storage
SETvalue
= '".. value .. "' WHEREkey
= ".. key .. ";")
else
db.query("INSERT INTOznote_global_storage
(key
,value
) VALUES (".. key ..", ".. value ..");")
end
return true
end
function onThink(interval, lastExecution, thinkInterval)
if tonumber(os.date("%d")) ~= getEternalStorage(23856) then
setEternalStorage(23856, (tonumber(os.date("%d"))))
db.query("UPDATEznote_players
SETonlinetime7
=onlinetime6
,onlinetime6
=onlinetime5
,onlinetime5
=onlinetime4
,onlinetime4
=onlinetime3
,onlinetime3
=onlinetime2
,onlinetime2
=onlinetime1
,onlinetime1
=onlinetimetoday
,onlinetimetoday
=0;")
db.query("UPDATEplayers
SETexphist7
= players.exphist6,exphist6
= players.exphist5,exphist5
= players.exphist4,exphist4
= players.exphist3,exphist3
= players.exphist2,exphist2
= players.exphist1,exphist1
= GREATEST(players.experience - players.exphist_lastexp, 0),exphist_lastexp
= players.experience;")
end
db.query("UPDATEznote_players
SETonlinetimetoday
=onlinetimetoday
+ 60,onlinetimeall
=onlinetimeall
+ 60 WHEREplayer_id
IN (SELECTplayer_id
FROMplayers_online
WHEREplayers_online
.player_id
=znote_players
.player_id
)")
return true
end
html
<?php
require_once 'engine/init.php';
include 'layout/overall/header.php';
if (!$config['powergamers']['enabled']) {
echo 'This page has been disabled at config.php.';
include 'layout/overall/footer.php';
exit();
}
?>
<div class="panel">
<div class="page-header"><h3>Powergamers</h3></div>
<?php
$limit = $config['powergamers']['limit'];
$days = isset($_POST['days']);
$today = true;
if ($days) {
$selected = ($_POST['days']);
$days = (int) $selected[1];
$vocation = (int) $selected[0];
if ($days > 0)
$today = false;
} else {
$znotePlayers = mysql_select_multi('SELECTa
.id
,b
.player_id
,a
.name
,a
.vocation
,a
.level
,a
.group_id
,a
.experience
,b
.exphist_lastexp
,b
.exphist1
,b
.exphist2
,b
.exphist3
,b
.exphist4
,b
.exphist5
,b
.exphist6
,b
.exphist7
, (a
.experience
-b
.exphist_lastexp
) ASexpdiff
FROMplayers
a
JOINznote_players
b
ONa
.id
=b
.player_id
WHEREa
.group_id
< 2 ORDER BYexpdiff
DESC LIMIT '.$limit);
}
$limit = $config['powergamers']['limit'];
if(!empty($days) && !empty($vocation))
$znotePlayers = mysql_select_multi('SELECTa
.id
,b
.player_id
,a
.name
,a
.vocation
,a
.level
,a
.group_id
,a
.experience
,b
.exphist_lastexp
,b
.exphist1
,b
.exphist2
,b
.exphist3
,b
.exphist4
,b
.exphist5
,b
.exphist6
,b
.exphist7
, (a
.experience
-b
.exphist_lastexp
) ASexpdiff
FROMplayers
a
JOINznote_players
b
ONa
.id
=b
.player_id
WHEREa
.group_id
< 2 ANDa
.vocation
='. (int)$vocation .' ORa
.vocation
='. ((int)$vocation +4) .' ORDER BYexphist' . (int)$days . '
DESC LIMIT '.$limit);
elseif(empty($days) && !empty($vocation)) {
$znotePlayers = mysql_select_multi('SELECTa
.id
,b
.player_id
,a
.name
,a
.vocation
,a
.level
,a
.group_id
,a
.experience
,b
.exphist_lastexp
,b
.exphist1
,b
.exphist2
,b
.exphist3
,b
.exphist4
,b
.exphist5
,b
.exphist6
,b
.exphist7
, (a
.experience
-b
.exphist_lastexp
) ASexpdiff
FROMplayers
a
JOINznote_players
b
ONa
.id
=b
.player_id
WHEREa
.group_id
< 2 ANDa
.vocation
='. (int)$vocation .' ORa
.vocation
='. ((int)$vocation +4) .' ORDER BYexpdiff
DESC LIMIT '.$limit);
}elseif(!empty($days) && empty($vocation))
$znotePlayers = mysql_select_multi('SELECTa
.id
,b
.player_id
,a
.name
,a
.vocation
,a
.level
,a
.group_id
,a
.experience
,b
.exphist_lastexp
,b
.exphist1
,b
.exphist2
,b
.exphist3
,b
.exphist4
,b
.exphist5
,b
.exphist6
,b
.exphist7
, (a
.experience
-b
.exphist_lastexp
) ASexpdiff
FROMplayers
a
JOINznote_players
b
ONa
.id
=b
.player_id
WHEREa
.group_id
< 2 ORDER BYexphist' . (int)$days . '
DESC LIMIT '.$limit);
else
$znotePlayers = mysql_select_multi('SELECTa
.id
,b
.player_id
,a
.name
,a
.vocation
,a
.level
,a
.group_id
,a
.experience
,b
.exphist_lastexp
,b
.exphist1
,b
.exphist2
,b
.exphist3
,b
.exphist4
,b
.exphist5
,b
.exphist6
,b
.exphist7
, (a
.experience
-b
.exphist_lastexp
) ASexpdiff
FROMplayers
a
JOINznote_players
b
ONa
.id
=b
.player_id
WHEREa
.group_id
< 2 ORDER BYexpdiff
DESC LIMIT '.$limit);
$showVoc = (!empty($vocation)) ? $vocation : 0;
?>
<form class="form form-inline" action="" method="post">
<div class="col sm-4">
<center>
<select class="form-control" name="days[]">
<option value="" selected="all">All</option>
<option value="1">Sorcerers</option>
<option value="2">Druids</option>
<option value="3">Paladins</option>
<option value="4">Knights</option>
<option value="none">No vocation</option>
</select>
<select class="form-control" name="days[]">
<option value="" selected="Today">Today</option>
<option value="1">Yesterday</option>
<option value="2">2 days ago</option>
<option value="3">3 days ago</option>
</select>
<input type="submit" class="btn btn-primary"><br>
<?php echo ($showVoc > 0) ? 'Showing only <b>'. strtolower(vocation_id_to_name($vocation)).'s</b> and' : 'Showing <b>all</b> vocations and'; ?>
<?php echo ($days > 0) ? 'sorted by <b>'. $days .'</b> days': 'sorted by <b>today</b>'; ?>.
</center>
</div>
</form>
<table class="table table-striped">
<td width="5%"><center>#</center></td>
<td>Name</td>
<?php
for($i = 3; $i >= 2; $i--)
echo ($days == $i) ? '<td class="pull-right" width="70%"><b>'.$i.' Days Ago</b></td>' : '';
echo ($days == 1) ? '<td class="pull-right" width="70%"><b>Yesterday</b></td>' : '';
echo ($today) ? '<td class="pull-right" width="70%"><b>Today</b></td>' : '';
echo ($days == 4) ? '<td class="pull-right" width="70%"><b>Total</b></td>' : '';
echo '</tr>';
$number_of_rows = 0;
if($znotePlayers) {
foreach($znotePlayers as $player)
{
$number_of_rows++;
echo '<td><center>'. $number_of_rows . '.</center></td>';
echo '<td><a href="characterprofile.php?name=' .$player['name']. '">' .$player['name']. '</a>';
echo '<br> '. ($player['level']. ' '.htmlspecialchars(vocation_id_to_name($player['vocation'])) ).' ';
echo ($days == 3) ? '<td><center>'. number_format($player['exphist3']) .'</center></td>' : '';
echo ($days == 2) ? '<td><center>'. $player['exphist2'] .'</center></td>' : '';
echo ($days == 1) ? '<td><center>'. $player['exphist1'] .'</center></td>' : '';
echo ($today == true) ? '<td><center>'. ($player['experience']-$player['exphist_lastexp']) .'</center></td>' : '';
echo '</tr>';
}
}
?>
</table>
<br>
</div>
<?php
include 'layout/overall/footer.php';