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

Frags and deathlist problem , bug error!!! Help

kamiko

New Member
Joined
Apr 5, 2010
Messages
18
Reaction score
0
I have stupid error on my server.. If someone kill other player he'll have sentence that he have frag, but in !frags he have 0 frags and in frags list its 0 too. Players can kill as much as they want and dont have rs , bs or ban.. What is wrong? And dont show deathlist on the page of ots. Maybe is it error in database or acc maker ?? Please help me! Sorry i have bad english ;/
 
Deathlist.lua

Code:
-- [( Created by: GT Thionix, edited by: DoidinMapper for XTibia.com )] --
function onSay(cid, words, param, channel)
local config = {displayLimit = 10}
local target = db.getResult("SELECT `name`, `id` FROM `players` WHERE `name` = " .. db.escapeString(param) .. ";")
if(target:getID() == -1) then
doPlayerSendCancel(cid, "A player with that name does not exist.")
return TRUE
end
local targetName = target:getDataString("name")
local targetGUID = target:getDataInt("id")
target:free()
local str = ""
local deaths = db.getResult("SELECT `time`, `level`, `killed_by`, `altkilled_by` FROM `player_deaths` WHERE `player_id` = " .. targetGUID .. " ORDER BY `time` DESC;")
if(deaths:getID() ~= -1) then
local n = 0
local breakline = ""
repeat
n = n + 1
if(str ~= "") then
breakline = "\n"
end
local time = os.date("%d %B %Y %X ", deaths:getDataInt("time"))
local level = deaths:getDataInt("level")
local lastHitKiller = deaths:getDataString("killed_by")
local mostDamageKiller = deaths:getDataString("altkilled_by")
local killed = ""
if(tonumber(lastHitKiller)) then
killed = getPlayerNameByGUID(tonumber(lastHitKiller))
else
killed = getArticle(lastHitKiller) .. " " .. string.lower(lastHitKiller)
end
if(mostDamageKiller ~= "") then
if(tonumber(mostDamageKiller)) then
killed = killed .. " and by " .. getPlayerNameByGUID(tonumber(mostDamageKiller))
else
killed = killed .. " and by " .. getArticle(mostDamageKiller) .. " " .. string.lower(mostDamageKiller)
end
end
str = str .. breakline .. " " .. time .. " Died at Level " .. level .. " by " .. killed .. "."
until not(deaths:next()) or n > config.displayLimit
deaths:free()
else
str = "No deaths recorded."
end
doPlayerPopupFYI(cid, "Deathlist for player: " .. targetName .. ".\n\n" .. str)
return TRUE
end
 
part of config.lua
Code:
-- Unjustified kills
	useFragHandler = true
	redSkullLength = 2 * 24 * 60 * 60
	blackSkullLength = 4 * 24 * 60 * 60
	dailyFragsToRedSkull = 7
	weeklyFragsToRedSkull = 30
	monthlyFragsToRedSkull = 300
	dailyFragsToBlackSkull = 14
	weeklyFragsToBlackSkull = 60
	monthlyFragsToBlackSkull = 600
	dailyFragsToBanishment = 20
	weeklyFragsToBanishment = 40
	monthlyFragsToBanishment = 400
	blackSkulledDeathHealth = 40
	blackSkulledDeathMana = 0
	useBlackSkull = true
	advancedFragList = true

	-- Banishments
	notationsToBan = 3
	warningsToFinalBan = 4
	warningsToDeletion = 5
	banLength = 7 * 24 * 60 * 60
	killsBanLength = 1 * 24 * 60 * 60
	finalBanLength = 30 * 24 * 60 * 60
	ipBanishmentLength = 5 * 24 * 60 * 60
	broadcastBanishments = true
	maxViolationCommentSize = 200
	violationNameReportActionType = 2
	autoBanishUnknownBytes = false

	-- Battle
	worldType = "open"
	protectionLevel = 50
	pvpTileIgnoreLevelAndVocationProtection = true
	pzLocked = 60 * 1000
	huntingDuration = 60 * 1000
	criticalHitChance = 7
	criticalHitMultiplier = 1
	displayCriticalHitNotify = false
	removeWeaponAmmunition = true
	removeWeaponCharges = true
	removeRuneCharges = true
	whiteSkullTime = 10 * 60 * 1000
	noDamageToSameLookfeet = false
	showHealingDamage = true
	showHealingDamageForMonsters = false
	fieldOwnershipDuration = 5 * 1000
	stopAttackingAtExit = false
	loginProtectionPeriod = 10 * 1000
	deathLostPercent = 10
	stairhopDelay = 2 * 1000
	pushCreatureDelay = 2 * 1000
	deathContainerId = 1987
	gainExperienceColor = 215
	addManaSpentInPvPZone = true
	squareColor = 0
	allowFightback = true


my deathlist.lua in talkactions
Code:
local config = {
	deathAssistCount = getConfigValue('deathAssistCount') + 1,
	maxDeathRecords = getConfigValue('maxDeathRecords'),
	limit = ""
}
if(config.deathAssistCount > 0) then
	config.limit = " LIMIT 0, " .. config.deathAssistCount
end

function onSay(cid, words, param, channel)
	local target = db.getResult("SELECT `name`, `id` FROM `players` WHERE `name` = " .. db.escapeString(param) .. ";")
	if(target:getID() == -1) then
		doPlayerSendCancel(cid, "A player with that name does not exist.")
		return true
	end

	local targetName, targetId = target:getDataString("name"), target:getDataInt("id")
	target:free()

	local str, deaths = "", db.getResult("SELECT `id`, `date`, `level` FROM `player_deaths` WHERE `player_id` = " .. targetId .." ORDER BY `date` DESC LIMIT 0, " .. config.maxDeathRecords)
	if(deaths:getID() ~= -1) then
		repeat
			local killers = db.getResult("SELECT environment_killers.name AS monster_name, players.name AS player_name FROM killers LEFT JOIN environment_killers ON killers.id = environment_killers.kill_id LEFT JOIN player_killers ON killers.id = player_killers.kill_id LEFT JOIN players ON players.id = player_killers.player_id WHERE killers.death_id = " .. deaths:getDataInt("id") .. " ORDER BY killers.final_hit DESC, killers.id ASC" .. config.limit)
			if(killers:getID() ~= -1) then
				if(str ~= "") then
					str = str .. "\n" .. os.date("%d %B %Y %X ", deaths:getDataLong("date"))
				else
					str = os.date("%d %B %Y %X ", deaths:getDataLong("date"))
				end

				local count, i = killers:getRows(false), 0
				repeat
					local monster = killers:getDataString("monster_name")
					if(i == 0 or i == (count - 1)) then
						monster = string.gsub(monster:gsub("an ", ""), "a ", "")
					end

					if(killers:getDataString("player_name") ~= "") then
						if(i == 0) then
							str = str .. "Killed at level " .. deaths:getDataInt("level") .. " by:\n  "
						elseif(i == count) then
							str = str .. " and by "
						elseif(i % 4 == 0) then
							str = str .. ",\n  "
						else
							str = str .. ", "
						end

						if(monster ~= "") then
							str = str .. monster .. " summoned by "
						end

						str = str .. killers:getDataString("player_name")
					else
						if(i == 0) then
							str = str .. "Died at level " .. deaths:getDataInt("level") .. " by:\n  "
						elseif(i == count) then
							str = str .. " and by "
						elseif(i % 4 == 0) then
							str = str .. ",\n  "
						else
							str = str .. ", "
						end

						str = str .. monster
					end

					i = i + 1
					if(i == count) then
						str = str .. "."
					end
				until not(killers:next())
				killers:free()
			end
		until not(deaths:next())
		deaths:free()
	else
		str = "No deaths recorded."
	end

	doPlayerPopupFYI(cid, "Deathlist for player: " .. targetName .. ".\n\n" .. str)
	return true
end

killstatictic.php
PHP:
<?PHP
$players_deaths = $SQL->query('SELECT `player_deaths`.`id`, `player_deaths`.`date`, `player_deaths`.`level`, `players`.`name`, `players`.`world_id` FROM `player_deaths` LEFT JOIN `players` ON `player_deaths`.`player_id` = `players`.`id` ORDER BY `date` DESC LIMIT 0,'.$config['site']['last_deaths_limit']);
$players_deaths_count = 0;
if(!empty($players_deaths))
{
	foreach($players_deaths as $death)
	{
		$players_deaths_count++;
		if(is_int($players_deaths_count / 2))
			$bgcolor = $config['site']['darkborder'];
		else
			$bgcolor = $config['site']['lightborder'];

		$players_rows .= '<TR BGCOLOR="'.$bgcolor.'"><TD WIDTH="30"><center>'.$players_deaths_count.'.</center></TD><TD WIDTH="125"><small>'.date("j.m.Y, G:i:s",$death['date']).'</small></TD><TD><a href="?subtopic=characters&name='.urlencode($death['name']).'"><b>'.$death['name'].'</b></a> ';
		$killers = $SQL->query("SELECT environment_killers.name AS monster_name, players.name AS player_name, players.deleted AS player_exists
FROM killers LEFT JOIN environment_killers ON killers.id = environment_killers.kill_id
LEFT JOIN player_killers ON killers.id = player_killers.kill_id LEFT JOIN players ON players.id = player_killers.player_id
WHERE killers.death_id = '".$death['id']."' ORDER BY killers.final_hit DESC, killers.id ASC")->fetchAll();

		$i = 0;
		$count = count($killers);
		foreach($killers as $killer)
		{
			$i++;
			if($killer['player_name'] != "")
			{
				if($i == 1)
					$players_rows .= "killed at level <b>".$death['level']."</b>";
				else if($i == $count)
					$players_rows .= " and";
				else
					$players_rows .= ",";

				$players_rows .= " by ";
				if($killer['monster_name'] != "")
					$players_rows .= $killer['monster_name']." summoned by ";

				if($killer['player_exists'] == 0)
					$players_rows .= "<a href=\"index.php?subtopic=characters&name=".urlencode($killer['player_name'])."\">";

				$players_rows .= $killer['player_name'];
				if($killer['player_exists'] == 0)
					$players_rows .= "</a>";
			}
			else
			{
				if($i == 1)
					$players_rows .= "died at level <b>".$death['level']."</b>";
				else if($i == $count)
					$players_rows .= " and";
				else
					$players_rows .= ",";

				$players_rows .= " by ".$killer['monster_name'];
			}
		}

		$players_rows .= '.</TD><TD>'.$config['site']['worlds'][(int)$death['world_id']].'</TD></TR>';
	}
}

if($players_deaths_count == 0)
	$main_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><TD CLASS=white><B>Last Deaths</B></TD></TR><TR BGCOLOR='.$config['site']['darkborder'].'><TD><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=1><TR><TD>No one died on '.$config['server']['serverName'].'.</TD></TR></TABLE></TD></TR></TABLE><BR>';
else
	$main_content .= '<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><TD CLASS=white><B>Last Deaths</B></TD></TR></TABLE><TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>'.$players_rows.'</TABLE>';
?>

frags.php
PHP:
<?php 
$main_content .= '<div style="text-align: center; font-weight: bold;">Top 30 frags on ' . $config['server']['serverName'] . '</div> 
<table border="0" cellspacing="1" cellpadding="4" width="100%"> 
    <tr bgcolor="' . $config['site']['vdarkborder'] . '"> 
        <td class="white" style="text-align: center; font-weight: bold;">Name</td> 
        <td class="white" style="text-align: center; font-weight: bold;">Frags</td> 
    </tr>'; 

$i = 0; 
foreach($SQL->query('SELECT `p`.`name` AS `name`, COUNT(`p`.`name`) as `frags` 
    FROM `killers` k 
    LEFT JOIN `player_killers` pk ON `k`.`id` = `pk`.`kill_id` 
    LEFT JOIN `players` p ON `pk`.`player_id` = `p`.`id` 
WHERE `k`.`unjustified` = 1 AND `k`.`final_hit` = 1 
    GROUP BY `name` 
    ORDER BY `frags` DESC, `name` ASC 
    LIMIT 0,30;') as $player) 
{ 
    $i++; 
    $main_content .= '<tr bgcolor="' . (is_int($i / 2) ? $config['site']['lightborder'] : $config['site']['darkborder']) . '"> 
        <td><a href="?subtopic=characters&name=' . urlencode($player['name']) . '">' . $player['name'] . '</a></td> 
        <td style="text-align: center;">' . $player['frags'] . '</td> 
    </tr>'; 
} 

$main_content .= '</table>'; 
?>

And what is wrong?? What have i to change ?? Help please :)
 
-- [( Created by: GT Thionix, edited by: DoidinMapper for XTibia.com )] --
-- [( Created by: GT Thionix, edited by: DoidinMapper for XTibia.com )] --
-- [( Created by: GT Thionix, edited by: DoidinMapper for XTibia.com )] --
-- [( Created by: GT Thionix, edited by: DoidinMapper for XTibia.com )] --
-- [( Created by: GT Thionix, edited by: DoidinMapper for XTibia.com )] --
-- [( Created by: GT Thionix, edited by: DoidinMapper for XTibia.com )] --
-- [( Created by: GT Thionix, edited by: DoidinMapper for XTibia.com )] --
-- [( Created by: GT Thionix, edited by: DoidinMapper for XTibia.com )] --
-- [( Created by: GT Thionix, edited by: DoidinMapper for XTibia.com )] --
kkkkk'
he took this script from a forum in Brazil
 
talkactions/deathlist.lua

Lua:
local config = {
	deathAssistCount = getConfigValue('deathAssistCount') + 1,
	maxDeathRecords = getConfigValue('maxDeathRecords'),
	limit = ""
}
if(config.deathAssistCount > 0) then
	config.limit = " LIMIT 0, " .. config.deathAssistCount
end

function onSay(cid, words, param, channel)
	local target = db.getResult("SELECT `name`, `id` FROM `players` WHERE `name` = " .. db.escapeString(param) .. ";")
	if(target:getID() == -1) then
		doPlayerSendCancel(cid, "A player with that name does not exist.")
		return true
	end

	local targetName, targetId = target:getDataString("name"), target:getDataInt("id")
	target:free()

	local str, deaths = "", db.getResult("SELECT `id`, `date`, `level` FROM `player_deaths` WHERE `player_id` = " .. targetId .." ORDER BY `date` DESC LIMIT 0, " .. config.maxDeathRecords)
	if(deaths:getID() ~= -1) then
		repeat
			local killers = db.getResult("SELECT environment_killers.name AS monster_name, players.name AS player_name FROM killers LEFT JOIN environment_killers ON killers.id = environment_killers.kill_id LEFT JOIN player_killers ON killers.id = player_killers.kill_id LEFT JOIN players ON players.id = player_killers.player_id WHERE killers.death_id = " .. deaths:getDataInt("id") .. " ORDER BY killers.final_hit DESC, killers.id ASC" .. config.limit)
			if(killers:getID() ~= -1) then
				if(str ~= "") then
					str = str .. "\n" .. os.date("%d %B %Y %X ", deaths:getDataLong("date"))
				else
					str = os.date("%d %B %Y %X ", deaths:getDataLong("date"))
				end

				local count, i = killers:getRows(false), 0
				repeat
					local monster = killers:getDataString("monster_name")
					if(i == 0 or i == (count - 1)) then
						monster = string.gsub(monster:gsub("an ", ""), "a ", "")
					end

					if(killers:getDataString("player_name") ~= "") then
						if(i == 0) then
							str = str .. "Killed at level " .. deaths:getDataInt("level") .. " by:\n  "
						elseif(i == count) then
							str = str .. " and by "
						elseif(i % 4 == 0) then
							str = str .. ",\n  "
						else
							str = str .. ", "
						end

						if(monster ~= "") then
							str = str .. monster .. " summoned by "
						end

						str = str .. killers:getDataString("player_name")
					else
						if(i == 0) then
							str = str .. "Died at level " .. deaths:getDataInt("level") .. " by:\n  "
						elseif(i == count) then
							str = str .. " and by "
						elseif(i % 4 == 0) then
							str = str .. ",\n  "
						else
							str = str .. ", "
						end

						str = str .. monster
					end

					i = i + 1
					if(i == count) then
						str = str .. "."
					end
				until not(killers:next())
				killers:free()
			end
		until not(deaths:next())
		deaths:free()
	else
		str = "No deaths recorded."
	end

	doPlayerPopupFYI(cid, "Deathlist for player: " .. targetName .. ".\n\n" .. str)
	return true
end

@edit
config.lua

-- Deathlist
deathListEnabled = true
deathListRequiredTime = 1 * 60 * 1000
deathAssistCount = 2
maxDeathRecords = 5
 
Back
Top