• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

top guild effects

jel

Member
Joined
Mar 22, 2014
Messages
302
Reaction score
12
Does anyone help me with this error?

top guild effects

thanks !!!
--<globalevent name="topguild" interval="10000" event="script" value="topguild.lua"/>--

local function getTopGuild()
local query = "SELECT g.id AS id, g.name AS name, COUNT(g.name) as frags FROM players p LEFT JOIN player_deaths pd ON pd.killed_by = p.name LEFT JOIN guild_membership gm ON p.id = gm.player_id LEFT JOIN guilds g ON gm.guild_id = g.id WHERE g.id > 0 AND pd.unjustified = 1 GROUP BY name ORDER BY frags DESC, name ASC LIMIT 4;"
local queryResult = db.storeQuery(query)
if queryResult then
local guildID = result.getDataInt(queryResult, "id")
result.free(queryResult)
return guildID
end
return false
end

function onThink(interval, lastExecution, toPosition, fromPosition, cid)
local topGuild = getTopGuild()
for _, cid in ipairs(Game.getPlayers()) do
if getPlayerGuildId(cid) == topGuild then
targetPlayer:sendTextMessage(MESSAGE_EVENT_ADVANCE, "top guild")
end
end
return true
end
 

Attachments

  • capture-20190301-185132.png
    capture-20190301-185132.png
    15.9 KB · Views: 13 · VirusTotal
Solution
This is like mixed TFS 0.3.6/0.4 and TFS 1.x code....

Code:
function getTopGuild()
    local query = "SELECT g.id AS id, g.name AS name, COUNT(g.name) as frags FROM players p LEFT JOIN player_deaths pd ON pd.killed_by = p.name LEFT JOIN guild_membership gm ON p.id = gm.player_id LEFT JOIN guilds g ON gm.guild_id = g.id WHERE g.id > 0 AND pd.unjustified = 1 GROUP BY name ORDER BY frags DESC, name ASC LIMIT 4;"
    local queryResult = db.storeQuery(query)
        if queryResult then
            local guildID = result.getDataInt(queryResult, "id")
            result.free(queryResult)
        return guildID
        end
return false
end

function onThink(interval, lastExecution, toPosition, fromPosition, cid)
local topGuild = getTopGuild()...
This is like mixed TFS 0.3.6/0.4 and TFS 1.x code....

Code:
function getTopGuild()
    local query = "SELECT g.id AS id, g.name AS name, COUNT(g.name) as frags FROM players p LEFT JOIN player_deaths pd ON pd.killed_by = p.name LEFT JOIN guild_membership gm ON p.id = gm.player_id LEFT JOIN guilds g ON gm.guild_id = g.id WHERE g.id > 0 AND pd.unjustified = 1 GROUP BY name ORDER BY frags DESC, name ASC LIMIT 4;"
    local queryResult = db.storeQuery(query)
        if queryResult then
            local guildID = result.getDataInt(queryResult, "id")
            result.free(queryResult)
        return guildID
        end
return false
end

function onThink(interval, lastExecution, toPosition, fromPosition, cid)
local topGuild = getTopGuild()

if not topGuild or topGuild == -1 then
    print("Your SQL query doesn't work. Start here.")
return false
end

for i, v in ipairs(Game.getPlayers()) do
    if getPlayerGuildId(v) == topGuild then
        doPlayerSendTextMessage(v, MESSAGE_EVENT_ADVANCE, "Top Guild")
    end
end
return true
end
 
Solution
This is like mixed TFS 0.3.6/0.4 and TFS 1.x code....

Code:
function getTopGuild()
    local query = "SELECT g.id AS id, g.name AS name, COUNT(g.name) as frags FROM players p LEFT JOIN player_deaths pd ON pd.killed_by = p.name LEFT JOIN guild_membership gm ON p.id = gm.player_id LEFT JOIN guilds g ON gm.guild_id = g.id WHERE g.id > 0 AND pd.unjustified = 1 GROUP BY name ORDER BY frags DESC, name ASC LIMIT 4;"
    local queryResult = db.storeQuery(query)
        if queryResult then
            local guildID = result.getDataInt(queryResult, "id")
            result.free(queryResult)
        return guildID
        end
return false
end

function onThink(interval, lastExecution, toPosition, fromPosition, cid)
local topGuild = getTopGuild()

if not topGuild or topGuild == -1 then
    print("Your SQL query doesn't work. Start here.")
return false
end

for i, v in ipairs(Game.getPlayers()) do
    if getPlayerGuildId(v) == topGuild then
        doPlayerSendTextMessage(v, MESSAGE_EVENT_ADVANCE, "Top Guild")
    end
end
return true
end
How can I get the effect on the player, instead of the message?
 
change
doPlayerSendTextMessage(v, MESSAGE_EVENT_ADVANCE, "Top Guild")
to
doSendMagicEffect(getPlayerPosition(v), 25)

change the 25 to what ever effect you want.
 
change
doPlayerSendTextMessage(v, MESSAGE_EVENT_ADVANCE, "Top Guild")
to
doSendMagicEffect(getPlayerPosition(v), 25)

change the 25 to what ever effect you want.
has as a to leave the player a msg type this?
player: say ('TOP!', TALKTYPE_MONSTER_SAY)
 
Back
Top