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

[Error - CreatureScript Interface]

Cracudoo

New Member
Joined
Jan 22, 2017
Messages
32
Reaction score
0
[2:11:13.834] [Error - CreatureScript Interface] [2:11:13.834] data/creaturescripts/scripts/playerdeath.lua:eek:nDeath [2:11:13.834] Description: [2:11:13.834] (luaGetCreatureName) Creature not found [2:11:13.834] [Error - CreatureScript Interface] [2:11:13.834] data/creaturescripts/scripts/playerdeath.lua:eek:nDeath [2:11:13.834] Description: [2:11:13.834] (luaGetCreatureName) Creature not found [2:11:13.834] [Error - CreatureScript Interface] [2:11:13.834] data/creaturescripts/scripts/playerdeath.lua:eek:nDeath [2:11:13.834] Description: [2:11:13.834] (luaGetCreatureName) Creature not found [2:11:13.834] [Error - CreatureScript Interface] [2:11:13.834] data/creaturescripts/scripts/playerdeath.lua:eek:nDeath [2:11:13.834] Description: [2:11:13.834] data/creaturescripts/scripts/playerdeath.lua:32: attempt to call field 'executeQuery' (a nil value) [2:11:13.834] stack traceback: [2:11:13.834] data/creaturescripts/scripts/playerdeath.lua:32: in function

deathBroadcast.lua
Code:
local config = {
   affected = 10, -- how many players (deathAssits) from table deathList should this script be executed for?

   killStorageValue = 3943,
   deathStorageValue = 3944,

   -- commands for the texts (those inside of ||, example: |KILLS| to show skills): KILLS, KILLERNAME, TARGETNAME
   rewardItem = {
       use = true,
       itemid = 5953,
       minLevel = false, -- false if you don't want any level req
       minLevelDiff = false, -- false if you don't want any level diff req (negative numbers allowed).
       text = "This is a gift to |KILLERNAME| [|KILLERLEVEL|] for killing |TARGETNAME| [|TARGETLEVEL|]"
   },

   killMessage = {
       use = true,
       text = "You owned |TARGETNAME|! You have now |KILLERKILLS| kills!",
       messageClass = MESSAGE_STATUS_CONSOLE_BLUE
   },

   broadcastMessage = {
       use = true,
       minLevel = 350, -- false if you don't want any level req
       minLevelDiff = false, -- false if you don't want any level diff req (negative numbers allowed).
       text = "|KILLERNAME| [|KILLERLEVEL|] just killed |TARGETNAME| [|TARGETLEVEL|]!",
       messageClass = MESSAGE_STATUS_WARNING
   },

   killerAnimation = {
       use = true,
       text = "Frag!", -- Only 9 letters! No "commands" here.
       color = 215
   },

   targetAnimation = {
       use = true,
       text = "Owned!", -- Only 9 letters! No "commands" here.
       color = 215
   }
}

function onDeath(cid, corpse, deathList)
   for i = 1, math.min(config.affected, getConfigInfo('deathAssistCount')) do
       local killer = deathList[i]
       if(isPlayer(killer) == TRUE) then
           local targetKills = math.max(0, getPlayerStorageValue(cid, config.killStorageValue)) + 1
           local targetDeaths = math.max(0, getPlayerStorageValue(cid, config.deathStorageValue)) + 1

           local killerKills = math.max(0, getPlayerStorageValue(killer, config.killStorageValue)) + 1
           local killerDeaths = math.max(0, getPlayerStorageValue(killer, config.deathStorageValue)) + 1
          
           doCreatureSetDropLoot(cid, true)

           setPlayerStorageValue(killer, config.killStorageValue, targetKills)
           setPlayerStorageValue(cid, config.deathStorageValue, targetDeaths)

           local killerLevel = getPlayerLevel(killer)
           local targetLevel = getPlayerLevel(cid)
           local levelDiff = targetLevel - killerLevel

           local values = {
               ["KILLERKILLS"] = killerKills,
               ["KILLERDEATHS"] = killerDeaths,
               ["KILLERNAME"] = getCreatureName(killer),
               ["KILLERLEVEL"] = killerLevel,

               ["TARGETKILLS"] = targetKills,
               ["TARGETDEATHS"] = targetDeaths,
               ["TARGETNAME"] = getCreatureName(cid),
               ["TARGETLEVEL"] = targetLevel
           }

           function formateString(str)
               return(str:gsub("|([A-Z]+)|", (function(a) return values[a] end)))
           end

           if(config.rewardItem.use and (not config.rewardItem.minLevel or targetLevel >= config.rewardItem.minLevel) and (not config.rewardItem.minLevelDiff or levelDiff >= config.rewardItem.minLevelDiff)) then
               local uid = doPlayerAddItem(killer, config.rewardItem.itemid, 1)
            doItemSetAttribute(uid, "description", formateString(config.rewardItem.text))
            doItemSetAttribute(uid, "aid", "2222")
           end
           if(config.killMessage.use) then
               doPlayerSendTextMessage(killer, config.killMessage.messageClass, formateString(config.killMessage.text))
           end
           if(config.broadcastMessage.use and (not config.broadcastMessage.minLevel or getPlayerLevel(cid) >= config.broadcastMessage.minLevel) and (not config.broadcastMessage.minLevelDiff or levelDiff >= config.broadcastMessage.minLevelDiff)) then
               broadcastMessage(formateString(config.broadcastMessage.text), config.broadcastMessage.messageClass)
           end
           if(config.killerAnimation.use) then
               doSendAnimatedText(getCreaturePosition(killer), config.killerAnimation.text, config.killerAnimation.color)
           end
           if(config.targetAnimation.use) then
               doSendAnimatedText(getCreaturePosition(cid), config.targetAnimation.text, config.targetAnimation.color)
           end
       end
   end

   return true
end

playerdeath.lua
Code:
local config = {
   deathListEnabled = getBooleanFromString(getConfigInfo('deathListEnabled')),
   sqlType = getConfigInfo('sqlType'),
   maxDeathRecords = getConfigInfo('maxDeathRecords')
}

config.sqlType = config.sqlType == "sqlite" and DATABASE_ENGINE_SQLITE or DATABASE_ENGINE_MYSQL

function onDeath(cid, corpse, lastHitKiller, mostDamageKiller)
   if(config.deathListEnabled ~= TRUE) then
       return
   end

   local hitKillerName = "field item"
   local damageKillerName = ""
   if(lastHitKiller ~= FALSE) then
       if(isPlayer(lastHitKiller) == TRUE) then
           hitKillerName = getPlayerGUID(lastHitKiller)
       else
           hitKillerName = getCreatureName(lastHitKiller)
       end

       if(mostDamageKiller ~= FALSE and mostDamageKiller ~= lastHitKiller and getCreatureName(mostDamageKiller) ~= getCreatureName(lastHitKiller)) then
           if(isPlayer(mostDamageKiller) == TRUE) then
               damageKillerName = getPlayerGUID(mostDamageKiller)
           else
               damageKillerName = getCreatureName(mostDamageKiller)
           end
       end
   end

   db.executeQuery("INSERT INTO `player_deaths` (`player_id`, `time`, `level`, `killed_by`, `altkilled_by`) VALUES (" .. getPlayerGUID(cid) .. ", " .. os.time() .. ", " .. getPlayerLevel(cid) .. ", " .. db.escapeString(hitKillerName) .. ", " .. db.escapeString(damageKillerName) .. ");")
   local rows = db.getResult("SELECT `player_id` FROM `player_deaths` WHERE `player_id` = " .. getPlayerGUID(cid) .. ";")
   if(rows:getID() ~= -1) then
       local amount = rows:getRows(true) - config.maxDeathRecords
       if(amount > 0) then
           if(config.sqlType == DATABASE_ENGINE_SQLITE) then
               for i = 1, amount do
                   db.executeQuery("DELETE FROM `player_deaths` WHERE `rowid` = (SELECT `rowid` FROM `player_deaths` WHERE `player_id` = " .. getPlayerGUID(cid) .. " ORDER BY `time` LIMIT 1);")
               end
           else
               db.executeQuery("DELETE FROM `player_deaths` WHERE `player_id` = " .. getPlayerGUID(cid) .. " ORDER BY `time` LIMIT " .. amount .. ";")
           end
       end
   end
end
 
Last edited:
Yeah nice, and?

This error in the distro when some player dies

[2:11:13.834] [Error - CreatureScript Interface] [2:11:13.834] data/creaturescripts/scripts/playerdeath.lua:eek:nDeath [2:11:13.834] Description: [2:11:13.834] (luaGetCreatureName) Creature not found [2:11:13.834] [Error - CreatureScript Interface] [2:11:13.834] data/creaturescripts/scripts/playerdeath.lua:eek:nDeath [2:11:13.834] Description: [2:11:13.834] (luaGetCreatureName) Creature not found [2:11:13.834] [Error - CreatureScript Interface] [2:11:13.834] data/creaturescripts/scripts/playerdeath.lua:eek:nDeath [2:11:13.834] Description: [2:11:13.834] (luaGetCreatureName) Creature not found [2:11:13.834] [Error - CreatureScript Interface] [2:11:13.834] data/creaturescripts/scripts/playerdeath.lua:eek:nDeath [2:11:13.834] Description: [2:11:13.834] data/creaturescripts/scripts/playerdeath.lua:32: attempt to call field 'executeQuery' (a nil value) [2:11:13.834] stack traceback: [2:11:13.834] data/creaturescripts/scripts/playerdeath.lua:32: in function
 
Back
Top