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

CreatureEvent [TFS 1.2+] Show war frags on guild channel

Gesior.pl

Mega Noob&LOL 2012
Senator
Joined
Sep 18, 2007
Messages
2,964
Solutions
99
Reaction score
3,374
Location
Poland
GitHub
gesior
Someone asked me for code to show war frags on guild chat. I made it for him, but he said I can release it.

In file data/creaturescripts/scripts/playerdeath.lua replace:
Code:
if warId ~= false then
   db.asyncQuery("INSERT INTO `guildwar_kills` (`killer`, `target`, `killerguild`, `targetguild`, `time`, `warid`) VALUES (" .. db.escapeString(killerName) .. ", " .. db.escapeString(player:getName()) .. ", " .. killerGuild .. ", " .. targetGuild .. ", " .. os.time() .. ", " .. warId .. ")")
end
With:
Code:
if warId ~= false then
   local killerFrags = 0
   local targetFrags = 0

   resultId = db.storeQuery("SELECT COUNT(1) AS frags FROM `guildwar_kills` WHERE `warid` = " .. warId .. " AND `killerguild` = " .. killerGuild)
   if resultId ~= false then
      killerFrags = result.getNumber(resultId, "frags")
      result.free(resultId)
   end
   killerFrags = killerFrags + 1

   resultId = db.storeQuery("SELECT COUNT(1) AS frags FROM `guildwar_kills` WHERE `warid` = " .. warId .. " AND `killerguild` = " .. targetGuild)
   if resultId ~= false then
      targetFrags = result.getNumber(resultId, "frags")
      result.free(resultId)
   end

   local currentScoreKiller = "Current score: " .. killer:getGuild():getName() .. " - " .. killerFrags .. " : " .. targetFrags .. " - " .. player:getGuild():getName()
   sendGuildChannelMessage(killerGuild, TALKTYPE_CHANNEL_R1, killer:getName() .. " killed enemy " .. player:getName() .. " at level " .. player:getLevel() .. ". " .. currentScoreKiller)

   local currentScoreTarget = "Current score: " .. player:getGuild():getName() .. " - " .. targetFrags .. " : " .. killerFrags .. " - " .. killer:getGuild():getName()
   sendGuildChannelMessage(targetGuild, TALKTYPE_CHANNEL_R1, player:getName() .. " died at level " .. player:getLevel() .. " by enemy " .. killer:getName() .. ". " .. currentScoreTarget)

   db.asyncQuery("INSERT INTO `guildwar_kills` (`killer`, `target`, `killerguild`, `targetguild`, `time`, `warid`) VALUES (" .. db.escapeString(killerName) .. ", " .. db.escapeString(player:getName()) .. ", " .. killerGuild .. ", " .. targetGuild .. ", " .. os.time() .. ", " .. warId .. ")")
end

Tested on TFS 1.3 downgraded to 8.6 ( nekiro/forgottenserver (https://github.com/nekiro/forgottenserver/tree/8.6-downgrade) ).
 
Last edited:
Version that shows green message on center of screen of all guild members:
Code:
if warId ~= false then
   local killerFrags = 0
   local targetFrags = 0

   resultId = db.storeQuery("SELECT COUNT(1) AS frags FROM `guildwar_kills` WHERE `warid` = " .. warId .. " AND `killerguild` = " .. killerGuild)
   if resultId ~= false then
      killerFrags = result.getNumber(resultId, "frags")
      result.free(resultId)
   end
   killerFrags = killerFrags + 1

   resultId = db.storeQuery("SELECT COUNT(1) AS frags FROM `guildwar_kills` WHERE `warid` = " .. warId .. " AND `killerguild` = " .. targetGuild)
   if resultId ~= false then
      targetFrags = result.getNumber(resultId, "frags")
      result.free(resultId)
   end

   local currentScoreKiller = "Current score: " .. killer:getGuild():getName() .. " - " .. killerFrags .. " : " .. targetFrags .. " - " .. player:getGuild():getName()
   local killerGuildText = killer:getName() .. " killed enemy " .. player:getName() .. " at level " .. player:getLevel() .. ". " .. currentScoreKiller
   sendGuildChannelMessage(killerGuild, TALKTYPE_CHANNEL_R1, killerGuildText)
   for _, guildMember in pairs(killer:getGuild():getMembersOnline()) do
      guildMember:sendTextMessage(MESSAGE_INFO_DESCR, killerGuildText)
   end

   local currentScoreTarget = "Current score: " .. player:getGuild():getName() .. " - " .. targetFrags .. " : " .. killerFrags .. " - " .. killer:getGuild():getName()
   local targetGuildText = player:getName() .. " died at level " .. player:getLevel() .. " by enemy " .. killer:getName() .. ". " .. currentScoreTarget
   sendGuildChannelMessage(targetGuild, TALKTYPE_CHANNEL_R1, targetGuildText)
   for _, guildMember in pairs(player:getGuild():getMembersOnline()) do
      guildMember:sendTextMessage(MESSAGE_INFO_DESCR, targetGuildText)
   end

   db.asyncQuery("INSERT INTO `guildwar_kills` (`killer`, `target`, `killerguild`, `targetguild`, `time`, `warid`) VALUES (" .. db.escapeString(killerName) .. ", " .. db.escapeString(player:getName()) .. ", " .. killerGuild .. ", " .. targetGuild .. ", " .. os.time() .. ", " .. warId .. ")")
end
 
Back
Top