• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    PEDIDO WAR SYTEM Y SKULL SYSTEM TFS 0.4

    Compartir:

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    1PEDIDO WAR SYTEM Y SKULL SYSTEM TFS 0.4 Empty PEDIDO WAR SYTEM Y SKULL SYSTEM TFS 0.4 Vie Feb 20, 2015 12:06 pm

    ronny555

    ronny555
    Nuevo Miembro
    Nuevo Miembro
    hola gente de tibiaface e sonado con poner skull system y war system con shields ami ot war pero o e encontrado ningun script bueno quisiera saber si me pudieran ayudar gracias de antemano y espero que me puedan ayudar y como esta en el titulo uso TFS 0.4

    2 participantes

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    aqui tienes el war system si el ot ya esta compilado te servira este mods crrear un nuevo archivo con el nombre de War_System_Mod.xml

    Código:
    <?xml version="1.0" encoding="UTF-8"?>
    <mod name="The Forgotten WarSystem" version="1.0" author="Elf" contact="www.otland.net" enabled="yes">
       <GeneralInfo><![CDATA[
          MODScript by: Martyx and OTX Team
       ]]></GeneralInfo>
     
       <!-- ActiveEvents -->
       <globalevent name="war-system-start" type="start" event="script"><![CDATA[
          db.executeQuery("DELETE FROM `guild_wars` WHERE `status` = 0 AND `begin` < " .. (os.time() - 2 * 86400) .. ";")
          db.executeQuery("UPDATE `guild_wars` SET `status` = 5, `end` = " .. os.time() .. " WHERE `status` = 1 AND `end` > 0 AND `end` < " .. os.time() .. ";")
       ]]></globalevent>
     
       <how-use-the-system><![CDATA[
          How use commands:
          /war invite, guidname, fraglimit
             This will invite guildname to have war with a fraglimit.
             Example: /war invite, Pandemonium, 50
     
          /war cancel, guildname
             This will cancel the war invitation to the guild.
             Example: /war cance, Pandemonium
     
          /war accept, guildname
             This will accept the war invitation of the guild.
             Example: /war accept, Pandemonium
     
          /war reject, guildname
             This will reject the war invitation of the guild.
             Example: /war reject, Pandemonium
     
       Note: This mod only works with servers that have been compiled with "-D__WAR_SYSTEM__"
       ]]></how-use-the-system>
     
       <!-- Declare WarCommand -->
       <talkaction words="/war" channel="0" desc="(Guild channel command) War management." event="script"><![CDATA[
          function onSay(cid, words, param, channel)
             local guild = getPlayerGuildId(cid)
             if(not guild or getPlayerGuildLevel(cid) < GUILDLEVEL_LEADER) then
                doPlayerSendChannelMessage(cid, "", "You cannot execute this talkaction.", TALKTYPE_CHANNEL_W, 0)
                return true
             end
     
             local t = string.explode(param, ",")
             if(not t[2]) then
                doPlayerSendChannelMessage(cid, "", "Not enough param(s).", TALKTYPE_CHANNEL_W, 0)
                return true
             end
     
             local enemy = getGuildId(t[2])
             if(not enemy) then
                doPlayerSendChannelMessage(cid, "", "Guild \"" .. t[2] .. "\" does not exists.", TALKTYPE_CHANNEL_W, 0)
                return true
             end
     
             if(enemy == guild) then
                doPlayerSendChannelMessage(cid, "", "You cannot perform war action on your own guild.", TALKTYPE_CHANNEL_W, 0)
                return true
             end
     
             local enemyName, tmp = "", db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. enemy)
             if(tmp:getID() ~= -1) then
                enemyName = tmp:getDataString("name")
                tmp:free()
             end
     
             if(isInArray({"accept", "reject", "cancel"}, t[1])) then
                local query = "`guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild
                if(t[1] == "cancel") then
                   query = "`guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy
                end
     
                tmp = db.getResult("SELECT `id`, `begin`, `end`, `payment` FROM `guild_wars` WHERE " .. query .. " AND `status` = 0")
                if(tmp:getID() == -1) then
                   doPlayerSendChannelMessage(cid, "", "Currently there's no pending invitation for a war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0)
                   return true
                end
     
                if(t[1] == "accept") then
                   local _tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild)
                   local state = _tmp:getID() < 0 or _tmp:getDataInt("balance") < tmp:getDataInt("payment")
     
                   _tmp:free()
                   if(state) then
                      doPlayerSendChannelMessage(cid, "", "Your guild balance is too low to accept this invitation.", TALKTYPE_CHANNEL_W, 0)
                      return true
                   end
     
                   db.executeQuery("UPDATE `guilds` SET `balance` = `balance` - " .. tmp:getDataInt("payment") .. " WHERE `id` = " .. guild)
                end
     
                query = "UPDATE `guild_wars` SET "
                local msg = "accepted " .. enemyName .. " invitation to war."
                if(t[1] == "reject") then
                   query = query .. "`end` = " .. os.time() .. ", `status` = 2"
                   msg = "rejected " .. enemyName .. " invitation to war."
                elseif(t[1] == "cancel") then
                   query = query .. "`end` = " .. os.time() .. ", `status` = 3"
                   msg = "canceled invitation to a war with " .. enemyName .. "."
                else
                   query = query .. "`begin` = " .. os.time() .. ", `end` = " .. (tmp:getDataInt("end") > 0 and (os.time() + ((tmp:getDataInt("begin") - tmp:getDataInt("end")) / 86400)) or 0) .. ", `status` = 1"
                end
     
                query = query .. " WHERE `id` = " .. tmp:getDataInt("id")
                if(t[1] == "accept") then
                   doGuildAddEnemy(guild, enemy, tmp:getDataInt("id"), WAR_GUILD)
                   doGuildAddEnemy(enemy, guild, tmp:getDataInt("id"), WAR_ENEMY)
                end
     
                tmp:free()
                db.executeQuery(query)
                doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. msg, MESSAGE_EVENT_ADVANCE)
                return true
             end
     
             if(t[1] == "invite") then
                local str = ""
                   tmp = db.getResult("SELECT `guild_id`, `status` FROM `guild_wars` WHERE `guild_id` IN (" .. guild .. "," .. enemy .. ") AND `enemy_id` IN (" .. enemy .. "," .. guild .. ") AND `status` IN (0, 1)")
                   if(tmp:getID() ~= -1) then
                   if(tmp:getDataInt("status") == 0) then
                   if(tmp:getDataInt("guild_id") == guild) then
                      str = "You have already invited " .. enemyName .. " to war."
                   else
                      str = enemyName .. " have already invited you to war."
                   end
                   else
                      str = "You are already on a war with " .. enemyName .. "."
                   end
     
                   tmp:free()
                end
     
                if(str ~= "") then
                   doPlayerSendChannelMessage(cid, "", str, TALKTYPE_CHANNEL_W, 0)
                   return true
                end
     
                local frags = tonumber(t[3])
                if(frags ~= nil) then
                   frags = math.max(10, math.min(1000, frags))
                else
                   frags = 100
                end
     
                local payment = tonumber(t[4])
                if(payment ~= nil) then
                   payment = math.max(100000, math.min(1000000000, payment))
                   tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild)
     
                   local state = tmp:getID() < 0 or tmp:getDataInt("balance") < payment
                   tmp:free()
                   if(state) then
                      doPlayerSendChannelMessage(cid, "", "Your guild balance is too low for such payment.", TALKTYPE_CHANNEL_W, 0)
                      return true
                   end
     
                   db.executeQuery("UPDATE `guilds` SET `balance` = `balance` - " .. payment .. " WHERE `id` = " .. guild)
                else
                   payment = 0
                end
     
                local begining, ending = os.time(), tonumber(t[5])
                if(ending ~= nil and ending ~= 0) then
                   ending = begining + (ending * 86400)
                else
                   ending = 0
                end
     
                db.executeQuery("INSERT INTO `guild_wars` (`guild_id`, `enemy_id`, `begin`, `end`, `frags`, `payment`) VALUES (" .. guild .. ", " .. enemy .. ", " .. begining .. ", " .. ending .. ", " .. frags .. ", " .. payment .. ");")
                doBroadcastMessage(getPlayerGuildName(cid) .. " has invited " .. enemyName .. " to war till " .. frags .. " frags.", MESSAGE_EVENT_ADVANCE)
                return true
             end
     
             if(not isInArray({"end", "finish"}, t[1])) then
                return false
             end
     
             local status = (t[1] == "end" and 1 or 4)
             tmp = db.getResult("SELECT `id` FROM `guild_wars` WHERE `guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy .. " AND `status` = " .. status)
             if(tmp:getID() ~= -1) then
                local query = "UPDATE `guild_wars` SET `end` = " .. os.time() .. ", `status` = 5 WHERE `id` = " .. tmp:getDataInt("id")
                tmp:free()
                doGuildRemoveEnemy(guild, enemy)
                doGuildRemoveEnemy(enemy, guild)
     
                db.executeQuery(query)
                doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. (status == 4 and "mend fences" or "ended up a war") .. " with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE)
                return true
             end
     
             if(status == 4) then
                doPlayerSendChannelMessage(cid, "", "Currently there's no pending war truce from " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0)
                return true
             end
     
             tmp = db.getResult("SELECT `id`, `end` FROM `guild_wars` WHERE `guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild .. " AND `status` = 1")
             if(tmp:getID() ~= -1) then
                if(tmp:getDataInt("end") > 0) then
                   tmp:free()
                   doPlayerSendChannelMessage(cid, "", "You cannot request ending for war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0)
                   return true
                end
     
                local query = "UPDATE `guild_wars` SET `status` = 4, `end` = " .. os.time() .. " WHERE `id` = " .. tmp:getDataInt("id")
                tmp:free()
     
                db.executeQuery(query)
                doBroadcastMessage(getPlayerGuildName(cid) .. " has signed an armstice declaration on a war with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE)
                return true
             end
     
             doPlayerSendChannelMessage(cid, "", "Currently there's no active war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0)
             return true
          end
       ]]></talkaction>
     
       <talkaction words="/deathlist" event="script"><![CDATA[
          local config = {
             deathAssistCount = getConfigValue('deathAssistCount') + 1,
             maxDeathRecords = getConfigValue('maxDeathRecords'),
             limit = ""
          }
          if(config.deathAssistCount > 0) then
             config.limit = " LIMIT 0, " .. config.deathAssistCount
          end
     
          function onSay(cid, words, param, channel)
             local target = db.getResult("SELECT `name`, `id` FROM `players` WHERE `name` = " .. db.escapeString(param) .. ";")
             if(target:getID() == -1) then
                doPlayerSendCancel(cid, "A player with that name does not exist.")
                return true
             end
     
             local targetName, targetId = target:getDataString("name"), target:getDataInt("id")
             target:free()
     
             local str, deaths = "", db.getResult("SELECT `id`, `date`, `level` FROM `player_deaths` WHERE `player_id` = " .. targetId .." ORDER BY `date` DESC LIMIT 0, " .. config.maxDeathRecords)
             if(deaths:getID() ~= -1) then
                repeat
                   local killers = db.getResult("SELECT environment_killers.name AS monster_name, players.name AS player_name FROM killers LEFT JOIN environment_killers ON killers.id = environment_killers.kill_id LEFT JOIN player_killers ON killers.id = player_killers.kill_id LEFT JOIN players ON players.id = player_killers.player_id WHERE killers.death_id = " .. deaths:getDataInt("id") .. " ORDER BY killers.final_hit DESC, killers.id ASC" .. config.limit)
                   if(killers:getID() ~= -1) then
                      if(str ~= "") then
                         str = str .. "\n" .. os.date("%d %B %Y %X ", deaths:getDataLong("date"))
                      else
                         str = os.date("%d %B %Y %X ", deaths:getDataLong("date"))
                      end
     
                      local count, i = killers:getRows(false), 0
                      repeat
                         local monster = killers:getDataString("monster_name")
                         if(i == 0 or i == (count - 1)) then
                            monster = string.gsub(monster:gsub("an ", ""), "a ", "")
                         end
     
                         if(killers:getDataString("player_name") ~= "") then
                            if(i == 0) then
                               str = str .. "Killed at level " .. deaths:getDataInt("level") .. " by:\n  "
                            elseif(i == count) then
                               str = str .. " and by "
                            elseif(i % 4 == 0) then
                               str = str .. ",\n  "
                            else
                               str = str .. ", "
                            end
     
                            if(monster ~= "") then
                               str = str .. monster .. " summoned by "
                            end
     
                            str = str .. killers:getDataString("player_name")
                         else
                            if(i == 0) then
                               str = str .. "Died at level " .. deaths:getDataInt("level") .. " by:\n  "
                            elseif(i == count) then
                               str = str .. " and by "
                            elseif(i % 4 == 0) then
                               str = str .. ",\n  "
                            else
                               str = str .. ", "
                            end
     
                            str = str .. monster
                         end
     
                         i = i + 1
                         if(i == count) then
                            str = str .. "."
                         end
                      until not(killers:next())
                      killers:free()
                   end
                until not(deaths:next())
                deaths:free()
             else
                str = "No deaths recorded."
             end
     
             doPlayerPopupFYI(cid, "Deathlist for player: " .. targetName .. ".\n\n" .. str)
             return true
          end
       ]]></talkaction>
     
       <!-- Balance WarCommand -->
       <talkaction words="/balance" channel="0" desc="(Guild channel command) Balance War management." event="script"><![CDATA[
          local function isValidMoney(value)
             if(value == nil) then
                return false
             end
     
             return (value > 0 and value <= 99999999999999)
          end
     
          function onSay(cid, words, param, channel)
             local guild = getPlayerGuildId(cid)
             if(guild == 0) then
                return false
             end
     
             local t = string.explode(param, ' ', 1)
             if(getPlayerGuildLevel(cid) == GUILDLEVEL_LEADER and isInArray({ 'pick' }, t[1])) then
                if(t[1] == 'pick') then
                   local money = { tonumber(t[2]) }
                   if(not isValidMoney(money[1])) then
                      doPlayerSendChannelMessage(cid, '', 'Invalid amount of money specified.', TALKTYPE_CHANNEL_W, 0)
                      return true
                   end
     
                   local result = db.getResult('SELECT `balance` FROM `guilds` WHERE `id` = ' .. guild)
                   if(result:getID() == -1) then
                      return false
                   end
     
                   money[2] = result:getDataLong('balance')
                   result:free()
     
                   if(money[1] > money[2]) then
                      doPlayerSendChannelMessage(cid, '', 'The balance is too low for such amount.', TALKTYPE_CHANNEL_W, 0)
                      return true
                   end
     
                   if(not db.executeQuery('UPDATE `guilds` SET `balance` = `balance` - ' .. money[1] .. ' WHERE `id` = ' .. guild .. ' LIMIT 1;')) then
                      return false
                   end
     
                   doPlayerAddMoney(cid, money[1])
                   doPlayerSendChannelMessage(cid, '', 'You have just picked ' .. money[1] .. ' money from your guild balance.', TALKTYPE_CHANNEL_W, 0)
                else
                   doPlayerSendChannelMessage(cid, '', 'Invalid sub-command.', TALKTYPE_CHANNEL_W, 0)
                end
             elseif(t[1] == 'donate') then
                local money = tonumber(t[2])
                if(not isValidMoney(money)) then
                   doPlayerSendChannelMessage(cid, '', 'Invalid amount of money specified.', TALKTYPE_CHANNEL_W, 0)
                   return true
                end
     
                if(getPlayerMoney(cid) < money) then
                   doPlayerSendChannelMessage(cid, '', 'You don\'t have enough money.', TALKTYPE_CHANNEL_W, 0)
                   return true
                end
     
                if(not doPlayerRemoveMoney(cid, money)) then
                   return false
                end
     
                db.executeQuery('UPDATE `guilds` SET `balance` = `balance` + ' .. money .. ' WHERE `id` = ' .. guild .. ' LIMIT 1;')
                doPlayerSendChannelMessage(cid, '', 'You have transfered ' .. money .. ' money to your guild balance.', TALKTYPE_CHANNEL_W, 0)
             else
                local result = db.getResult('SELECT `name`, `balance` FROM `guilds` WHERE `id` = ' .. guild)
                if(result:getID() == -1) then
                   return false
                end
     
                doPlayerSendChannelMessage(cid, '', 'Current balance of guild ' .. result:getDataString('name') .. ' is: ' .. result:getDataLong('balance') .. ' bronze coins.', TALKTYPE_CHANNEL_W, 0)
                result:free()
             end
     
             return true
          end
       ]]></talkaction>
    </mod>


    y aqui tienes el skull sistem para en mods solo copia cuaqluier archivo y le pones el nombre de skullsistem.xml

    Código:
        <?xml version="1.0" encoding="ISO-8859-1"?>
        <mod name="Skull System" version="1.0" author="Skyforever" contact="otserv-es" 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>



    PEDIDO WAR SYTEM Y SKULL SYSTEM TFS 0.4 YNU5B25
    2 participantes
    http://www.tibiaface.com

    3PEDIDO WAR SYTEM Y SKULL SYSTEM TFS 0.4 Empty AYUDA! Vie Feb 20, 2015 11:16 pm

    ronny555

    ronny555
    Nuevo Miembro
    Nuevo Miembro
    mira el problema que tengo con la skull system me podrias ayudar?
    http://www.tibiaface.com/t706-cambios-c-para-ot-war

    2 participantes

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    amigo ahi tienes una guia como editar los sources o codigo fuente para luego compilarlo y crear tu exe lamentablente no tengo visual estidio y no podre ayudarte



    PEDIDO WAR SYTEM Y SKULL SYSTEM TFS 0.4 YNU5B25
    2 participantes
    http://www.tibiaface.com

    ronny555

    ronny555
    Nuevo Miembro
    Nuevo Miembro
    eso ise amigo y me salio un error :c

    2 participantes

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    ronny555 escribió:eso ise amigo y me salio un error :c

    al compilar que error



    PEDIDO WAR SYTEM Y SKULL SYSTEM TFS 0.4 YNU5B25
    2 participantes
    http://www.tibiaface.com

    Contenido patrocinado


    2 participantes

    Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje (Página 1 de 1.)

    Permisos de este foro:
    No puedes responder a temas en este foro.

     

    BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).