Ir para conteúdo

Featured Replies

Postado

050-fuction 

 


function getGuildNameByID(gid) -- By Killua
    local query = db.getResult("SELECT `name` FROM `guilds` WHERE `id` = '"..gid.."'")
    if query:getID() == -1 then
        return false
    end
    local name = query:getDataString("name")
    query:free()
    return name
end

function isWalkable(pos, creature, proj, pz)
    if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
    if getTopCreature(pos).uid > 0 and creature then return false end
    if getTileInfo(pos).protection and pz then return false, true end
    local n = not proj and 3 or 2
    for i = 0, 255 do
        pos.stackpos = i
        local tile = getTileThingByPos(pos)
        if tile.itemid ~= 0 and not isCreature(tile.uid) then
            if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
                return false
            end
        end
    end
    return true
end

function isInArray(array, value, caseSensitive)
    if(caseSensitive == nil or caseSensitive == false) and type(value) == "string" then
        local lowerValue = value:lower()
        for _, _value in ipairs(array) do
            if type(_value) == "string" and lowerValue == _value:lower() then
                return true
            end
        end
    else
        for _, _value in ipairs(array) do
            if (value == _value) then return true end
        end
    end

    return false
end

ARMY = {
    [1] = {50, 350, "Soldado Raso", 1}, -- [Número] = {Pontos Kill, Points para UP, "Nome",PLATINIUM COINS POR KILL},
    [2] = {50, 1500, "Soldado de Primeira Classe", 50000000},
    [3] = {50, 2000, "Cabo", 60000000},
    [4] = {50, 3000, "Sargento", 70000000},
    [5] = {50, 3500, "Sargento-Ajudante 1", 90000000},
    [6] = {50, 5000, "Sargento-Ajudante 2", 11000000},
    [7] = {50, 5500, "Sargento-Chefe", 15000000},
    [8] = {50, 6000, "Sargento-Mestre 1", 18000000},
    [9] = {50, 6500, "Sargento-Mestre 2", 20000000},
    [10] = {50, 7000, "Sargento-Mestre 3", 22000000},
    [11] = {50, 7600, "Sargento-Mestre 4", 24000000},
    [12] = {50, 8200, "Sargento-Mor do Comando", 26000000},
    [13] = {50, 9000, "Segundo-Tenente 1", 28000000},
    [14] = {50, 9600, "Segundo-Tenente 2", 30000000},
    [15] = {50, 10200, "Segundo-Tenente 3", 32000000},
    [16] = {50, 11000, "Segundo-Tenente 4", 34000000},
    [17] = {50, 11500, "Primeiro-Tenente 1", 36000000},
    [18] = {50, 12000, "Primeiro-Tenente 2", 38000000},
    [19] = {50, 13000, "Primeiro-Tenente 3", 40000000},
    [20] = {50, 14000, "Primeiro-Tenente 4", 45000000},
    [21] = {50, 15000, "Primeiro-Tenente 5", 55000000},
    [22] = {50, 16000, "Capitao 1", 60000000},
    [23] = {50, 17000, "Capitao 2", 70000000},
    [24] = {50, 18000, "Capitao 3", 80000000},
    [25] = {50, 19000, "Capitao 4", 90000000},
    [26] = {50, 20000, "Capitao 5", 100000000},
    [27] = {50, 21000, "Major 1", 110000000},
    [28] = {50, 21500, "Major 2", 120000000},
    [29] = {50, 22000, "Major 3", 130000000},
    [30] = {50, 23000, "Major 4", 140000000},
    [31] = {50, 23500, "Major 5", 150000000},
    [32] = {50, 24000, "Tenente-Coronel 1", 160000000},
    [33] = {50, 25000, "Tenente-Coronel 2", 170000000},
    [34] = {50, 26000, "Tenente-Coronel 3", 180000000},
    [35] = {50, 27000, "Tenente-Coronel 4", 190000000},
    [36] = {50, 28000, "Tenente-Coronel 5", 200000000},
    [37] = {50, 29000, "Coronel 1", 210000000},
    [38] = {50, 30000, "Coronel 2", 220000000},
    [39] = {50, 31000, "Coronel 3", 230000000},
    [40] = {50, 32000, "Coronel 4", 400000000},
    [41] = {50, 35000, "Coronel 5", 500000000},
    [42] = {50, 100000, "General", 1000000000},
    
    
}                           
ARMY_LEVEL = 2014159
ARMY_EXPERIENCE = 2014160

function doAddPoints(cid, points)
db.executeQuery("UPDATE `accounts` SET `premium_points` = `premium_points` + " .. points .. " WHERE `id` = " .. getPlayerAccountId(cid) .. ";")
end

function doPlayerGiveItem(cid, itemid, amount, subType)
    local item = 0
    if(isItemStackable(itemid)) then
        item = doCreateItemEx(itemid, amount)
        if(doPlayerAddItemEx(cid, item, true) ~= RETURNVALUE_NOERROR) then
            return false
        end
    else
        for i = 1, amount do
            item = doCreateItemEx(itemid, subType)
            if(doPlayerAddItemEx(cid, item, true) ~= RETURNVALUE_NOERROR) then
                return false
            end
        end
    end

    return true
end


function doPlayerGiveItemContainer(cid, containerid, itemid, amount, subType)
    for i = 1, amount do
        local container = doCreateItemEx(containerid, 1)
        for x = 1, getContainerCapById(containerid) do
            doAddContainerItem(container, itemid, subType)
        end

        if(doPlayerAddItemEx(cid, container, true) ~= RETURNVALUE_NOERROR) then
            return false
        end
    end

    return true
end

function doPlayerTakeItem(cid, itemid, amount)
    return getPlayerItemCount(cid, itemid) >= amount and doPlayerRemoveItem(cid, itemid, amount)
end

function doPlayerSellItem(cid, itemid, count, cost)
    if(not doPlayerTakeItem(cid, itemid, count)) then
        return false
    end

    if(not doPlayerAddMoney(cid, cost)) then
        error('[doPlayerSellItem] Could not add money to: ' .. getPlayerName(cid) .. ' (' .. cost .. 'gp).')
    end

    return true
end

function doPlayerWithdrawMoney(cid, amount)
    if(not getBooleanFromString(getConfigInfo('bankSystem'))) then
        return false
    end

    local balance = getPlayerBalance(cid)
    if(amount > balance or not doPlayerAddMoney(cid, amount)) then
        return false
    end

    doPlayerSetBalance(cid, balance - amount)
    return true
end

function doPlayerDepositMoney(cid, amount)
    if(not getBooleanFromString(getConfigInfo('bankSystem'))) then
        return false
    end

    if(not doPlayerRemoveMoney(cid, amount)) then
        return false
    end

    doPlayerSetBalance(cid, getPlayerBalance(cid) + amount)
    return true
end

function doPlayerAddStamina(cid, minutes)
    return doPlayerSetStamina(cid, getPlayerStamina(cid) + minutes)
end

function isPremium(cid)
    return (isPlayer(cid) and (getPlayerPremiumDays(cid) > 0 or getBooleanFromString(getConfigValue('freePremium'))))
end

function getMonthDayEnding(day)
    if(day == "01" or day == "21" or day == "31") then
        return "st"
    elseif(day == "02" or day == "22") then
        return "nd"
    elseif(day == "03" or day == "23") then
        return "rd"
    end

    return "th"
end

function getMonthString(m)
    return os.date("%B", os.time{year = 1970, month = m, day = 1})
end

function getArticle(str)
    return str:find("[AaEeIiOoUuYy]") == 1 and "an" or "a"
end

function doNumberFormat(i)
    local str, found = string.gsub(i, "(%d)(%d%d%d)$", "%1,%2", 1), 0
    repeat
        str, found = string.gsub(str, "(%d)(%d%d%d),", "%1,%2,", 1)
    until found == 0
    return str
end

function doPlayerAddAddons(cid, addon)
    for i = 0, table.maxn(maleOutfits) do
        doPlayerAddOutfit(cid, maleOutfits[i], addon)
    end

    for i = 0, table.maxn(femaleOutfits) do
        doPlayerAddOutfit(cid, femaleOutfits[i], addon)
    end
end

function getTibiaTime(num)
    local minutes, hours = getWorldTime(), 0
    while (minutes > 60) do
        hours = hours + 1
        minutes = minutes - 60
    end

    if(num) then
        return {hours = hours, minutes = minutes}
    end

    return {hours =  hours < 10 and '0' .. hours or '' .. hours, minutes = minutes < 10 and '0' .. minutes or '' .. minutes}
end

function doWriteLogFile(file, text)
    local f = io.open(file, "a+")
    if(not f) then
        return false
    end

    f:write("[" .. os.date("%d/%m/%Y %H:%M:%S") .. "] " .. text .. "\n")
    f:close()
    return true
end

function getExperienceForLevel(lv)
    lv = lv - 1
    return ((50 * lv * lv * lv) - (150 * lv * lv) + (400 * lv)) / 3
end

function doMutePlayer(cid, time)
    local condition = createConditionObject(CONDITION_MUTED, (time == -1 and time or time * 1000))
    return doAddCondition(cid, condition, false)

end

function doSummonCreature(name, pos)
    local cid = doCreateMonster(name, pos, false, false)
    if(not cid) then
        cid = doCreateNpc(name, pos)
    end

    return cid
end

function getPlayersOnlineEx()
    local players = {}
    for i, cid in ipairs(getPlayersOnline()) do
        table.insert(players, getCreatureName(cid))
    end

    return players
end

function getPlayerByName(name)
    local cid = getCreatureByName(name)
    return isPlayer(cid) and cid or nil
end

function isPlayer(cid)
    return isCreature(cid) and cid >= AUTOID_PLAYERS and cid < AUTOID_MONSTERS
end

function isPlayerGhost(cid)
    if(not isPlayer(cid)) then
        return false
    end

    return getCreatureCondition(cid, CONDITION_GAMEMASTER, GAMEMASTER_INVISIBLE) or getPlayerFlagValue(cid, PLAYERFLAG_CANNOTBESEEN)
end

function isMonster(cid)
    return isCreature(cid) and cid >= AUTOID_MONSTERS and cid < AUTOID_NPCS
end

function isNpc(cid)
    -- Npc IDs are over int32_t range (which is default for lua_pushnumber),
    -- therefore number is always a negative value.
    return isCreature(cid) and (cid < 0 or cid >= AUTOID_NPCS)
end

function isUnderWater(cid)
    return isInArray(underWater, getTileInfo(getCreaturePosition(cid)).itemid)
end

function doPlayerAddLevel(cid, amount, round)
    local experience, level, amount = 0, getPlayerLevel(cid), amount or 1
    if(amount > 0) then
        experience = getExperienceForLevel(level + amount) - (round and getPlayerExperience(cid) or getExperienceForLevel(level))
    else
        experience = -((round and getPlayerExperience(cid) or getExperienceForLevel(level)) - getExperienceForLevel(level + amount))
    end

    return doPlayerAddExperience(cid, experience)
end

function doPlayerAddMagLevel(cid, amount)
    local amount = amount or 1
    for i = 1, amount do
        doPlayerAddSpentMana(cid, getPlayerRequiredMana(cid, getPlayerMagLevel(cid, true) + 1) - getPlayerSpentMana(cid), false)
    end

    return true
end

function doPlayerAddSkill(cid, skill, amount, round)
    local amount = amount or 1
    if(skill == SKILL__LEVEL) then
        return doPlayerAddLevel(cid, amount, round)
    elseif(skill == SKILL__MAGLEVEL) then
        return doPlayerAddMagLevel(cid, amount)
    end

    for i = 1, amount do
        doPlayerAddSkillTry(cid, skill, getPlayerRequiredSkillTries(cid, skill, getPlayerSkillLevel(cid, skill) + 1) - getPlayerSkillTries(cid, skill), false)
    end

    return true
end

function isPrivateChannel(channelId)
    return channelId >= CHANNEL_PRIVATE
end

function doBroadcastMessage(text, class)
    local class = class or MESSAGE_STATUS_WARNING
    if(type(class) == 'string') then
        local className = MESSAGE_TYPES[class]
        if(className == nil) then
            return false
        end

        class = className
    elseif(class < MESSAGE_FIRST or class > MESSAGE_LAST) then
        return false
    end

    for _, pid in ipairs(getPlayersOnline()) do
        doPlayerSendTextMessage(pid, class, text)
    end

    print("> Broadcasted message: \"" .. text .. "\".")
    return true
end

function doPlayerBroadcastMessage(cid, text, class, checkFlag, ghost)
    local checkFlag, ghost, class = checkFlag or true, ghost or false, class or TALKTYPE_BROADCAST
    if(checkFlag and not getPlayerFlagValue(cid, PLAYERFLAG_CANBROADCAST)) then
        return false
    end

    if(type(class) == 'string') then
        local className = TALKTYPE_TYPES[class]
        if(className == nil) then
            return false
        end

        class = className
    elseif(class < TALKTYPE_FIRST or class > TALKTYPE_LAST) then
        return false
    end

    for _, pid in ipairs(getPlayersOnline()) do
        doCreatureSay(cid, text, class, ghost, pid)
    end

    print("> " .. getCreatureName(cid) .. " broadcasted message: \"" .. text .. "\".")
    return true
end

function doCopyItem(item, attributes)
    local attributes = ((type(attributes) == 'table') and attributes or { "aid" })

    local ret = doCreateItemEx(item.itemid, item.type)
    for _, key in ipairs(attributes) do
        local value = getItemAttribute(item.uid, key)
        if(value ~= nil) then
            doItemSetAttribute(ret, key, value)
        end
    end

    if(isContainer(item.uid)) then
        for i = (getContainerSize(item.uid) - 1), 0, -1 do
            local tmp = getContainerItem(item.uid, i)
            if(tmp.itemid > 0) then
                doAddContainerItemEx(ret, doCopyItem(tmp, true).uid)
            end
        end
    end

    return getThing(ret)
end

function doSetItemText(uid, text, writer, date)
    local thing = getThing(uid)
    if(thing.itemid < 100) then
        return false
    end

    doItemSetAttribute(uid, "text", text)
    if(writer ~= nil) then
        doItemSetAttribute(uid, "writer", tostring(writer))
        if(date ~= nil) then
            doItemSetAttribute(uid, "date", tonumber(date))
        end
    end

    return true
end

function getItemWeightById(itemid, count, precision)
    local item, count, precision = getItemInfo(itemid), count or 1, precision or false
    if(not item) then
        return false
    end

    if(count > 100) then
        -- print a warning, as its impossible to have more than 100 stackable items without "cheating" the count
        print('[Warning] getItemWeightById', 'Calculating weight for more than 100 items!')
    end

    local weight = item.weight * count
    return precission and weight or math.round(weight, 2)
end

function choose(...)
    local arg, ret = {...}

    if type(arg[1]) == 'table' then
        ret = arg[1][math.random(#arg[1])]
    else
        ret = arg[math.random(#arg)]
    end

    return ret
end

function doPlayerAddExpEx(cid, amount)
    if(not doPlayerAddExp(cid, amount)) then
        return false
    end

    local position = getThingPosition(cid)
    doPlayerSendTextMessage(cid, MESSAGE_EXPERIENCE, "You gained " .. amount .. " experience.", amount, COLOR_WHITE, position)

    local spectators, name = getSpectators(position, 7, 7), getCreatureName(cid)
    for _, pid in ipairs(spectators) do
        if(isPlayer(pid) and cid ~= pid) then
            doPlayerSendTextMessage(pid, MESSAGE_EXPERIENCE_OTHERS, name .. " gained " .. amount .. " experience.", amount, COLOR_WHITE, position)
        end
    end

    return true
end

function getItemTopParent(uid)
    local parent = getItemParent(uid)
    if(not parent or parent.uid == 0) then
        return nil
    end

    while(true) do
        local tmp = getItemParent(parent.uid)
        if(tmp and tmp.uid ~= 0) then
            parent = tmp
        else
            break
        end
    end

    return parent
end

function getItemHolder(uid)
    local parent = getItemParent(uid)
    if(not parent or parent.uid == 0) then
        return nil
    end

    local holder = nil
    while(true) do
        local tmp = getItemParent(parent.uid)
        if(tmp and tmp.uid ~= 0) then
            if(tmp.itemid == 1) then -- a creature
                holder = tmp
                break
            end

            parent = tmp
        else
            break
        end
    end

    return holder
end

function valid(f)
    return function(p, ...)
        if(isCreature(p)) then
            return f(p, ...)
        end
    end
end

function addContainerItems(container,items)
    local items_mod = {}
    for _, it in ipairs(items) do
        if( isItemStackable(it.id) and it.count > 100) then
            local c = it.count
            while( c > 100 ) do
                table.insert(items_mod,{id = it.id,count = 100})
                c = c - 100
            end
            if(c > 0) then
                table.insert(items_mod,{id = it.id,count = c})
            end
        else
            table.insert(items_mod,{id = it.id,count = 1})
        end
    end

    local free = getContainerCap(container.uid) - (getContainerSize(container.uid) )
    local count = math.ceil(#items_mod/ free)
    local main_bp = container.uid
    local insert_bp = main_bp
    local counter = 1
    for c,it in ipairs(items_mod) do
        local _c = isItemStackable(it.id) and (it.count > 100 and 100 or it.count) or 1
        if count > 1 then
            if (counter < free) then
                doAddContainerItem(insert_bp, it.id, _c)
            else
                insert_bp = doAddContainerItem(insert_bp, container.itemid, 1)
                count = (#items_mod)-(free-1)
                free = getContainerCap(insert_bp) 
                count = math.ceil(count/ free)
                doAddContainerItem(insert_bp, it.id, _c)
                counter = 1
            end
            counter = counter + 1
        else
            doAddContainerItem(insert_bp, it.id, _c)
        end
    end

    return main_bp
end

 

se não funcionar remova a função no login.lua mesmo, se acontece erros poste aqui 

  • Respostas 7
  • Visualizações 824
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Essa função serve pra que? O erro acontece só quando o account manager loga? ou qualquer player?  if(not isPlayerGhost(cid)) then         doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TE

  • @Noob II para verificar se quem está logando está em modo ghost(/ghost).   @Yago Blind. Remove essa função do seu config.lua: if(not isPlayerGhost(cid)) then doSendMagicEffect(getCreat

  • @Yago Blind. tem certeza que não são outros erros ? Afinal esse script é simples, ele não afeta em nada no servidor, ele só manda um efeitozinho na hora que logamos, nada mais que isso. Então seu serv

Posted Images

Postado

@Yago Blind. tem certeza que não são outros erros ? Afinal esse script é simples, ele não afeta em nada no servidor, ele só manda um efeitozinho na hora que logamos, nada mais que isso. Então seu server está bugado, pois adicionar ou remover somente essas 3x linhas não afeta em nada, ou você está tirando algo a mais!

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Postado
  • Autor
2 horas atrás, KotZletY disse:

@Yago Blind. tem certeza que não são outros erros ? Afinal esse script é simples, ele não afeta em nada no servidor, ele só manda um efeitozinho na hora que logamos, nada mais que isso. Então seu server está bugado, pois adicionar ou remover somente essas 3x linhas não afeta em nada, ou você está tirando algo a mais!

 

Cara tive que arancar todos os eventos do meu servidor... e consegui resolver,  vou ter q adicionar um por um e vê aonde ta o erro... REP+ pela tentativa de ajuda.

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo