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

!deathlist improvement

sestorme

Member
Joined
Dec 9, 2011
Messages
272
Reaction score
6
Location
Birmingham, UK
I am trying to add an extra condition to !deathlist script that will check target player storage whether !deathlist should be displayed or not. However, I don't know how to set this:

Lua:
if getPlayerStorageValue(target, 1110) <= 1 then

(cid, 1110) of course won't work. What must I put there? Thanks, rep'd.
 
Well, I thought everyone's got a !deathlist code :)

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 or his data is hidden with XM202 module.")
		
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
 
Simply, instead of this:

doPlayerSendCancel(cid, "A player with that name does not exist or his data is hidden with XM202 module.")

I want to add an extra condition to check if checked player used certain item.
 
as far i understand, you want players to check other players deathlist only if target has X storage = 1, right?

here it is,

Lua:
local config = {
	deathAssistCount = getConfigValue('deathAssistCount') + 1,
	maxDeathRecords = getConfigValue('maxDeathRecords'),
	limit = "",
	storage = 73484,
	msg = "You may not see deathlist of this player."
}
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()

	if not (getPlayerStorageValue(getPlayerByNameWildcard(targetName), config.storage) == 1) then
		doPlayerSendCancel(cid, config.msg)
		return true
	end	
	
	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
 
Back
Top Bottom