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

HELP ! Broadcast at Kill and Death

CollapserMemory

New Member
Joined
Dec 4, 2014
Messages
66
Reaction score
1
[30/07/2015 21:41:56] [Error - CreatureScript Interface]
[30/07/2015 21:41:57] data/creaturescripts/scripts/playerdeath.lua:eek:nDeath
[30/07/2015 21:41:57] Description:
[30/07/2015 21:41:57] (internalGetPlayerInfo) Player not found when requesting player info #3

[30/07/2015 21:41:57] [Error - CreatureScript Interface]
[30/07/2015 21:41:57] data/creaturescripts/scripts/playerdeath.lua:eek:nDeath
[30/07/2015 21:41:57] Description:
[30/07/2015 21:41:57] data/creaturescripts/scripts/playerdeath.lua:21: attempt to concatenate a boolean value
[30/07/2015 21:41:57] stack traceback:
[30/07/2015 21:41:57] data/creaturescripts/scripts/playerdeath.lua:21: in function <data/creaturescripts/scripts/playerdeath.lua:9>

--- The CreatureScript --
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 = getCreatureName(lastHitKiller)
else
hitKillerName = getCreatureName(lastHitKiller)
end
end
doBroadcastMessage(""..getPlayerName(cid).." ["..getPlayerLevel(cid).."] Foi Morto Pelo(a) "..hitKillerName.." ["..getPlayerLevel(lastHitKiller).."].")
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:
without the periods for the code tags ;)

still looking over the code.

Edit:
what's at line 21
[30/07/2015 23:08:44] [Warning - BaseEvents::loadFromXml] Cannot open creaturescripts.xml file.
[30/07/2015 23:08:44] Line: 21, Info: Couldn't find end of Start Tag event line 21
 
Last edited:
I need to know what's at line 21 in playerdeath.lua :p
i no register correct in XML haha '-' now i correct but see a new error.
Code:
[30/07/2015 23:14:34] [Error - LuaScriptInterface::loadFile] data/creaturescripts/scripts/playerdeath.lua:43: '<eof>' expected near 'end'
[30/07/2015 23:14:34] [Warning - Event::loadScript] Cannot load script (data/creaturescripts/scripts/playerdeath.lua)
[30/07/2015 23:14:34] data/creaturescripts/scripts/playerdeath.lua:43: '<eof>' expected near 'end'
 
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 = getCreatureName(lastHitKiller)
        else
            hitKillerName = getCreatureName(lastHitKiller)
        end
    end
    doBroadcastMessage(""..getPlayerName(cid).." ["..getPlayerLevel(cid).."] Foi Morto Pelo(a) "..hitKillerName.." ["..getPlayerLevel(lastHitKiller).."].")
    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

    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
 
[31/07/2015 01:00:35] [Error - CreatureScript Interface]
[31/07/2015 01:00:35] data/creaturescripts/scripts/playerdeath.lua:onDeath
[31/07/2015 01:00:35] Description:
[31/07/2015 01:00:35] (luaGetCreatureName) Creature not found

[31/07/2015 01:00:35] [Error - CreatureScript Interface]
[31/07/2015 01:00:35] data/creaturescripts/scripts/playerdeath.lua:onDeath
[31/07/2015 01:00:35] Description:
[31/07/2015 01:00:35] (internalGetPlayerInfo) Player not found when requesting player info #3

[31/07/2015 01:00:35] [Error - CreatureScript Interface]
[31/07/2015 01:00:35] data/creaturescripts/scripts/playerdeath.lua:onDeath
[31/07/2015 01:00:35] Description:
[31/07/2015 01:00:35] data/creaturescripts/scripts/playerdeath.lua:20: attempt to concatenate a boolean value
[31/07/2015 01:00:35] stack traceback:
[31/07/2015 01:00:35] data/creaturescripts/scripts/playerdeath.lua:20: in function <data/creaturescripts/scripts/playerdeath.lua:7>
[31/07/2015 01:00:36] Test has logged out.
[31/07/2015 01:01:00] Test has logged in.
 
something there is not quite right.
just above that line put this:
Code:
print(getPlayerName(cid), getPlayerLevel(cid), hitKillerName, getPlayerLevel(lastHitKiller))

Tell me what it prints in the console.
 
something there is not quite right.
just above that line put this:
Code:
print(getPlayerName(cid), getPlayerLevel(cid), hitKillerName, getPlayerLevel(lastHitKiller))

Tell me what it prints in the console.
[31/07/2015 01:21:40] [Error - CreatureScript Interface]
[31/07/2015 01:21:40] data/creaturescripts/scripts/playerdeath.lua:onDeath
[31/07/2015 01:21:40] Description:
[31/07/2015 01:21:40] (internalGetPlayerInfo) Player not found when requesting player info #3

[31/07/2015 01:21:40] [Error - CreatureScript Interface]
[31/07/2015 01:21:40] data/creaturescripts/scripts/playerdeath.lua:onDeath
[31/07/2015 01:21:40] Description:
[31/07/2015 01:21:40] data/creaturescripts/scripts/playerdeath.lua:21: attempt to concatenate a boolean value
[31/07/2015 01:21:40] stack traceback:
[31/07/2015 01:21:40] data/creaturescripts/scripts/playerdeath.lua:21: in function <data/creaturescripts/scripts/playerdeath.lua:7>
[31/07/2015 01:21:40] Vinny has logged out.
 
See All Creature Script ---
on creaturescriptsXML
Code:
<?xml version="1.0" encoding="UTF-8"?>
<creaturescripts>
    <event type="login" name="PlayerLogin" event="script" value="login.lua"/>
    <event type="login" name="MutePlayer" event="script" value="mute_check.lua"/>
    <event type="login" name="Lowlevellock" event="script" value="lowlevellock.lua"/>
    <event type="kill" name="MonsterPortal" event="script" value="portals.lua"/>

    <event type="think" name="ZombieThink" event="script" value="zombie/onthink.lua"/>
    <event type="statschange" name="ZombieAttack" event="script" value="zombie/onattack.lua"/>
    <event type="death" name="ZombieDeath" event="script" value="zombie/ondeath.lua"/>

    <event type="joinchannel" name="GuildMotd" event="script" value="guildmotd.lua"/>
    <event type="receivemail" name="Mail" event="script" value="mail.lua"/>
    <event type="reportbug" name="SaveReportBug" script="reportbug.lua"/>
    <event type="advance" name="AdvanceSave" event="script" value="advancesave.lua"/>

    <event type="login" name="Antimagebomb" event="script" value="Antimagebomb.lua"/>
    <event type="think" name="Idle" event="script" value="idle.lua"/>
    <event type="think" name="SkullCheck" event="script" value="skullcheck.lua"/>
    <event type="advance" name="SpellUp" event="script" value="spellup.lua"/>
    <event type="death" name="PlayerDeath" event="script" value="playerdeath.lua"/>
</creaturescripts>
On Login Lua
Code:
local config = {
    loginMessage = getConfigValue('loginMessage'),
    useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))
}

function onLogin(cid)
    if (getConfigValue("accountManager") == FALSE and getCreatureName(cid) == "Account Manager") then
        return false
    end

    local loss = getConfigValue('deathLostPercent')
    if(loss ~= nil) then
        doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 1)
    end

    local accountManager = getPlayerAccountManager(cid)
    if(accountManager == MANAGER_NONE) then
        local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
        if(lastLogin > 0) then
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
            str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
        else
            str = str .. " Please choose your outfit."
            doPlayerSendOutfitWindow(cid)
        end

        doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
    elseif(accountManager == MANAGER_NAMELOCK) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?")
    elseif(accountManager == MANAGER_ACCOUNT) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to manage your account and if you want to start over then type 'cancel'.")
    else
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to create an account or type 'recover' to recover an account.")
    end

    if(not isPlayerGhost(cid)) then
        doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
    end

    registerCreatureEvent(cid, "Mail")
    registerCreatureEvent(cid, "GuildMotd")
    registerCreatureEvent(cid,'SpellUp')
    registerCreatureEvent(cid, "ZombieAttack")


    registerCreatureEvent(cid, "Idle")
    if(config.useFragHandler) then
        registerCreatureEvent(cid, "SkullCheck")
    end

    registerCreatureEvent(cid, "ReportBug")
    registerCreatureEvent(cid, "AdvanceSave")
        registerCreatureEvent(cid, "PlayerDeath")
    return true
end
On 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 = getCreatureName(lastHitKiller)
        else
            hitKillerName = getCreatureName(lastHitKiller)
        end
    end
print(getPlayerName(cid), getPlayerLevel(cid), hitKillerName, getPlayerLevel(lastHitKiller))
    doBroadcastMessage(""..getPlayerName(cid).." ["..getPlayerLevel(cid).."] Foi Morto Pelo(a) "..hitKillerName.." ["..getPlayerLevel(lastHitKiller).."].")
    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

    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
 
Back
Top