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

C++ Keep skull if player log out but lost just if player dies

CipsoftStinks

www.relicaria.com
Joined
Oct 1, 2016
Messages
946
Solutions
3
Reaction score
138
Location
Argentina
Hello im using tfs 0.3.7

HELP

Im trying to make a war server 7.72 im looking for a source edition at my player.cpp
i want that if a player log out the could keep the skull and lost it only if he dies
i've already edited my player.cpp to avoid get yellow skull if he attack other player and redskull could kept the items if he lost... but im having troubles while im trying to make possible the above menthioned
im plaining to use the skull sys mod
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Skull System" version="1.0" author="Skyforever" contact="tibiaking.com" enabled="yes">
<config name="SkullC_func"><![CDATA[
function setSkullColor(cid)
local t = {
[{5,10}] = 1,
[{11,15}] = 2,
[{16,20}] = 3,
[{21,25}] = 4,
[{26,math.huge}] = 5
}
for var, ret in pairs(t) do
if getPlayerFrags(cid) >= var[1] and getPlayerFrags(cid) <= var[2] then
doCreatureSetSkullType(cid, ret)
end
end
end
function getPlayerFrags(cid)
local time = os.time()
local times = {today = (time - 86400), week = (time - (7 * 86400))}
local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC")
if(result:getID() ~= -1) then
repeat
local content = {date = result:getDataInt("date")}
if(content.date > times.today) then
table.insert(contents.day, content)
elseif(content.date > times.week) then
table.insert(contents.week, content)
else
table.insert(contents.month, content)
end
until not result:next()
result:free()
end
local size = {day = table.maxn(contents.day),week = table.maxn(contents.week),month = table.maxn(contents.month)}
return size.day + size.week + size.month
end
]]></config>
<event type="login" name="SkullLogin" event="script"><![CDATA[
domodlib('SkullC_func')
function onLogin(cid)
registerCreatureEvent(cid, "ColorKill")
setSkullColor(cid)
return true
end]]></event>
<event type="kill" name="ColorKill" event="script"><![CDATA[
domodlib('SkullC_func')
function onKill(cid, target)
if isPlayer(cid) and isPlayer(target) then
doCreatureSetSkullType(target, 0)
addEvent(setSkullColor, 100, cid)
end
return true
end]]></event>
</mod>

and this is my edited player.cpp
//////////////////////////////////////////////////////////////////////// // Ope - Pastebin.com

anyone who can guide me?
regards
 
Remove anything related to killticks or skulltime then use Lua to set and remove skull upon kill/death
 
Remove anything related to killticks or skulltime then use Lua to set and remove skull upon kill/death
well i was looking more into my players.cpp
i was looking i have nothing related to kill ticks

but recently i've found this

Code:
void Player::setSkullEnd(time_t _time, bool login, Skulls_t _skull)
{
    if(g_game.getWorldType() != WORLDTYPE_OPEN
        || hasFlag(PlayerFlag_NotGainInFight) ||
        hasCustomFlag(PlayerCustomFlag_NotGainSkull))
        return;

    bool requireUpdate = false;
    if(_time > time(NULL))
    {
        requireUpdate = true;
        setSkull(_skull);
    }
    else if(skull == _skull)
    {
        requireUpdate = true;
        setSkull(SKULL_NONE);
        _time = 0;
    }

    if(requireUpdate)
    {
        skullEnd = _time;
        if(!login)
            g_game.updateCreatureSkull(this);
    }
}

u have an idea how to edit this ? to make possible wha im looking for ? (something as the server that you sold)


regards
 
If you're uncertain just remove it from loadPlayer/savePlayer or w/e it might be called in IOPlayer/IOData
 
Back
Top