Ir para conteúdo

Vodkart

Héroi
  • Registro em

Solutions

  1. Vodkart's post in (Resolvido)Problema simples, talkaction was marked as the answer   
    function onSay(cid, words, param, channel) local t = string.explode(param:lower(), ",") local clans = {'Volcanic', 'Seavell', 'Orebound', 'Wingeon', 'Malefic', 'Gardestrike', 'Psycraft', 'Naturia', 'Raibolt'} if param == "" then sendMsgToPlayer(cid, 20, "Estao faltam os parametros! [clan name], [rank]") return true elseif not isInArray(clans, t[1], false) then sendMsgToPlayer(cid, 20, t[1].." nao é uma clan valido!") return true elseif not tonumber(t[2]) then sendMsgToPlayer(cid, 20, "Parametros errados! [clan name], [rank].") return true end local clan, rank = t[1], tonumber(t[2]) if getPlayerItemCount(cid, 2145) < 10 then doPlayerSendCancel(cid, "Você precisa de 10 diamonds para entrar em um clan.") return true elseif getPlayerLevel(cid) < 80 then doPlayerSendCancel(cid, "Você precisa estar no level 80.") return true end doPlayerSendTextMessage(cid, 27, "Agora você pertence ao clan "..clan..", rank: "..rank.."") doPlayerRemoveItem(cid, 2145, 10) setPlayerClan(cid, clan) setPlayerClanRank(cid, rank) return true end  
  2. Vodkart's post in (Resolvido)Só quero a TAG was marked as the answer   
  3. Vodkart's post in (Resolvido)AJUDA EM SCRIPT GUILDS was marked as the answer   
    executa no seu banco de dados:
     

    ALTER TABLE `guilds` ADD `frags` INT(11) NOT NULL DEFAULT 0; ALTER TABLE `guilds` ADD `acesstime` INT(15) NOT NULL DEFAULT 0;
  4. Vodkart's post in (Resolvido)Teleportar players de uma area X was marked as the answer   
    function onTime() local area = {{x=32592,y=32663,z=7},{x=32594,y=32666,z=7}} local topos = {x=32623, y=32660, z=7} local remove, clean = true, true for x = area[1].x - 1, area[2].x + 1 do for y = area[1].y - 1, area[2].y + 1 do local pos = {x=x, y=y, z=area[1].z} local m = getTopCreature(pos).uid if remove ~= false and m ~= 0 and isMonster(m) then doRemoveCreature(m) end if clean ~= false then doCleanTile(pos, false) end if m ~= 0 and isPlayer(m) then doTeleportThing(m, topos) end end end return true end
  5. Vodkart's post in (Resolvido)[DUVIDA] SCRIPT SÓ FUNCIONA DEPOIS DO RELOAD was marked as the answer   
    http://www.tibiaking.com/forum/topic/49367-toplevel-effect/page-4
     
    leia o primeiro post
  6. Vodkart's post in (Resolvido)Alguém me ajuda em um script npc was marked as the answer   
    local p_days = 1 -- edita aqui local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid)            npcHandler:onCreatureAppear(cid)        end function onCreatureDisappear(cid)        npcHandler:onCreatureDisappear(cid)        end function onCreatureSay(cid, type, msg)        npcHandler:onCreatureSay(cid, type, msg)    end function onThink()                npcHandler:onThink()                end function creatureSayCallback(cid, type, msg)     local msg = msg:lower()     local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid     if(not npcHandler:isFocused(cid)) then         return false     end     if msgcontains(msg, "sex change") then         if getPlayerPremiumDays(cid) >= p_days then             doPlayerSetSex(cid,getPlayerSex(cid) == 1 and 0 or 1)             doPlayerSendTextMessage(cid,22,"pronto troquei o seu sexo")             doSendMagicEffect(getCreaturePosition(cid),28)             doPlayerAddPremiumDays(cid, -p_days)         else             selfSay("você precisa ter no minimo "..p_days.." dias de premium para trocar de sexo", cid)             talkState[talkUser] = 0         end     return true     end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  7. Vodkart's post in (Resolvido)Alguém me ajuda com script ? was marked as the answer   
    kk, creio que era só colocar um 'return true'
     

    function getPlayerNameByGUID2(n) local c = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..n..";") if c:getID() == -1 then return "SQL_ERROR["..n.."]" end return c:getDataString("name") end   function onSay(cid, words, param)   if not vip.hasVip(cid) then doPlayerSendCancel(cid, "Você não é VIP!") return true end local max = 20 local letters_to_next = 20   local skills = { ['fist'] = 0, ['club'] = 1, ['sword'] = 2, ['axe'] = 3, ['distance'] = 4, ['shielding'] = 5, ['fishing'] = 6, ['dist'] = 4, ['shield'] = 5, ['fish'] = 6, } local name_now local name = "Highscore for level\n" local rkn = 0 local no_break = 0 param = string.lower(param) dofile('config.lua') if param == "" or param == "level" and ( param ~= "magic" and param == "ml") and skills[param] == nil then name = name.."\n" name = name.."Rank Level - Nome do Jogador\n" local v = db.getResult("SELECT `name`, `level`, `experience` FROM `players` WHERE `group_id` <= 3 ORDER BY `experience` DESC LIMIT 0,"..(max)..";") repeat no_break = no_break +1 if v:getID() == -1 then break end rkn = rkn+1 name_now, l = v:getDataString("name"), string.len(v:getDataString("name")) space = "" for i=1, letters_to_next-l do space = space.." " end name = name..rkn..". "..v:getDataInt("level") .." - "..name_now..space.." ".."\n"  if no_break >= 20 then break end until v:next() == false   elseif param == "magic" or param == "ml" then name = name.."\n" name = name.."Rank Magic - Nome do Jogador\n" local v = db.getResult("SELECT `name`, `level`, `maglevel` FROM `players` WHERE `group_id` <= 2 ORDER BY `maglevel` DESC LIMIT 0,"..(max)..";") repeat if v:getID() == -1 then break end rkn = rkn+1 name_now, l = v:getDataString("name"), string.len(v:getDataString("name")) space = "" for i=1, letters_to_next-l do space = space.." " end name = name..rkn..". "..v:getDataInt("maglevel").." - "..name_now..space.." ".." ".."".."\n"  until v:next() == false   elseif param == "reset" or param == "resets" then name = name.."\n" name = name.."Rank Reset - Nome do Jogador\n" local v = db.getResult("SELECT `player_id`, `value` FROM `player_storage` WHERE `key` = 2310 ORDER BY cast(value as INTEGER) DESC;") local kk = 0   repeat if kk == max or v:getID() == -1 then break end kk = kk+1 name_now, l = getPlayerNameByGUID2(v:getDataInt("player_id")), string.len(getPlayerNameByGUID2(v:getDataInt("player_id"))) space = "" for i=1, letters_to_next-l do space = space.." " end if name_now == nil then name_now = 'sql error['..v:getDataInt("player_id")..']' end name = name..kk..". "..v:getDataInt("value").." - "..name_now..space.." \n" until v:next() == false   elseif skills[param] ~= nil then name = name.."\n" name = name.."Rank "..param.." fighting - Nome do Jogador\n" local v = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = "..skills[param].." ORDER BY `value` DESC;") local kk = 0   repeat if kk == max or v:getID() == -1 then break end kk = kk+1 name_now, l = getPlayerNameByGUID2(v:getDataInt("player_id")), string.len(getPlayerNameByGUID2(v:getDataInt("player_id"))) space = "" for i=1, letters_to_next-l do space = space.." " end   if name_now == nil then name_now = 'sql error['..v:getDataInt("player_id")..']' end name = name..kk..". "..v:getDataInt("value").." - "..name_now..space.." \n" until v:next() == false end if name ~= "Highscore\n" then  doPlayerPopupFYI(cid, name) end   return true end
  8. Vodkart's post in (Resolvido)[Ajuda] Erro CreatureScript was marked as the answer   
    então vai em creaturescript e ve qual arquivo onLogin ta causando esse erro, ve qual deles adc item ao jogador.
     
    deve ser no firstItems
  9. Vodkart's post in (Resolvido)Problema com "Castle war 24hrs". was marked as the answer   
    só colocar no PVP tool Area no logout ¬¬
  10. Vodkart's post in (Resolvido)Urgente, bug no script !comprar was marked as the answer   
    SKILL_CLUB = "skill_club" SKILL_DISTANCE = "skill_dist" SKILL_SHIELD = "skill_shielding" SKILL_MAGLEVEL = "maglevel" SKILL_SWORD = "skill_sword" SKILL_AXE = "skill_axe" local tb = {     ["sd"] = {t= 1, bag = 5926, item= 2268, bag_quant = 2, price= 50, msg= "Parabéns você comprou 4k de SD com sucesso."},     ["uh"] = {t= 1, bag = 2002, item= 2273, bag_quant = 3, price= 30, msg= "Parabéns você comprou 6k de UH com sucesso."},     ["explo"] = {t= 1, bag = 2001, item= 2313, bag_quant = 3, price= 10, msg= "Parabéns você comprou 6k de Explosion com sucesso."},     ["super divine axe"] = {t= 2, item = 8926, price= 60, msg= "Você comprou um super divine axe com sucesso."},     ["super divine staff"] = {t= 2, item = 8922, price= 60, msg= "Você comprou um super divine staff com sucesso."},     ["super divine club"] = {t= 2, item = 7423, price= 60, msg= "Você comprou um super divine club com sucesso."},     ["super divine sword"] = {t= 2, item = 7403, price= 60, msg= "Você comprou um super divine sword com sucesso."},     ["super divine crossbow"] = {t= 2, item = 8851, price= 60, msg= "Você comprou um super divine crossbow com sucesso."},     ["livro nivel 6"] = {t= 2, item = 8921, price= 60, msg= "Você comprou um livro nivel 6 com sucesso."},     ["vip10"] = {t= 3, days= 10, price= 5},     ["vip30"] = {t= 3, days= 30, price= 10},     ["magiclevel"] = {t= 4, vocations = {1, 5, 2, 6, 11, 12}, voc_msg= "Somente Sorcerers, Druids e Infernalists podem comprar magic level.", lim = 200, lim_msg = "Você não pode ter magic level acima de 200.", price= 3, incre = 1, skill = SKILL_MAGLEVEL, skill_id = 7},     ["skillclub"] = {t= 5, vocations = {9, 10}, voc_msg= "Somente Drunous podem comprar skill de club.", lim = 350, price= 1, incre = 1, skill = SKILL_CLUB, skill_id = 1},     ["skillsword"] = {t= 5, vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de sword.", lim = 350, price= 1, incre = 1, skill = SKILL_SWORD, skill_id = 2},     ["skillaxe"] = {t=5 , vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de axe.", lim = 350, price= 1, incre = 1, skill = SKILL_AXE, skill_id = 3},     ["skilldistance"] = {t= 5, vocations = {3, 7}, voc_msg= "Somente Paladins podem comprar skill de distance.", lim = 350, price= 1, incre = 1, skill = SKILL_DISTANCE, skill_id = 4},     ["skillshielding"] = {t= 5, vocations = {3, 7, 4, 8, 9, 10}, voc_msg= "Somente Paladins, Knights e Drunous podem comprar skill de shield.", lim = 350, price= 1, incre = 1, skill = SKILL_SHIELD, skill_id = 5},     ["magiclevel5"] = {t= 4, vocations = {1, 5, 2, 6, 11, 12}, voc_msg= "Somente Sorcerers, Druids e Infernalists podem comprar magic level.", lim = 200, lim_msg = "Você não pode ter magic level acima de 200.", price= 15, incre = 5, skill = SKILL_MAGLEVEL, skill_id = 7},     ["skillclub10"] = {t= 5, vocations = {9, 10}, voc_msg= "Somente Drunous podem comprar skill de club.", lim = 350, price= 10, incre = 10, skill = SKILL_CLUB, skill_id = 1},     ["skillsword10"] = {t= 5, vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de sword.", lim = 350, price= 10, incre = 10, skill = SKILL_SWORD, skill_id = 2},     ["skillaxe10"] = {t=5 , vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de axe.", lim = 350, price= 10, incre = 10, skill = SKILL_AXE, skill_id = 3},     ["skilldistance10"] = {t= 5, vocations = {3, 7}, voc_msg= "Somente Paladins podem comprar skill de distance.", lim = 350, price= 10, incre = 10, skill = SKILL_DISTANCE, skill_id = 4},     ["skillshielding10"] = {t= 5, vocations = {3, 7, 4, 8, 9, 10}, voc_msg= "Somente Paladins, Knights e Drunous podem comprar skill de shield.", lim = 350, price= 10, incre = 10, skill = SKILL_SHIELD, skill_id = 5},     ["removerfrag"] = {t= 6, price= 10}, }   local storage = 45611   function onSay(player, words, param)       local pid = player:getGuid()     local tile = player:getTile()           if not tile:hasFlag(TILESTATE_PROTECTIONZONE) then         player:sendCancelMessage("Você precisa está em área protegida para utilizar este comando.")         return true     end       if player:getStorageValue(storage) >= os.time() then         player:sendCancelMessage("Por medidas de segurança você só pode utilizar este comando em " .. player:getStorageValue(storage)-os.time() .. " segundos.")         return true     end       if param == "" then         player:popupFYI("Para comprar digite !comprar (nome do item)\nOpcoes:\nsd = 4000 em SD por 50 barras.\nuh = 6000 em UH por 40 barras.\nexplo = 6000 em explosion por 10 barras.\nvip10 = 10 dias de vip por 5 barras.\nvip30 = 30 dias de vip por 10 barras.\ndivine staff = divine staff por 30 barras.\ndivine axe = divine axe por 30 barras.\nlivro nivel 6 = livro nivel 6 por 60 barras.\ndivine club = divine club por 30 barras.\ndivine sword = divine sword por 30 barras.\ndivine crossbow = divine crossbow por 30 barras.\nlivro nivel 5 = livro nivel 5 por 30 barras.\nsuper divine axe = super divine axe por 60 barras.\nsuper divine club = super divine club por 60 barras.\nsuper divine sword = super divine sword por 60 barras.\nsuper divine staff = super divine staff por 60 barras.\nsuper divine crossbow = super divine crossbow por 60 barras.\nskillclub = adiciona 1 skill club por 1 barras.\nskillsword = adiciona 1 skill sword por 1 barras.\nskillaxe = adiciona 1 skill axe por 1 barras.\nskilldistance = adiciona 1 skill distance por 1 barras.\nskillshielding = adiciona 1 skill shielding por 1 barras.\nmagiclevel = adiciona 1 magic level por 3 barras.\nmagiclevel5 = adiciona 5 magic level por 15 barras.\nskillclub10 = adiciona 10 skills club por 10 barras.\nskillsword10 = adiciona 10 skills sword por 10 barras.\nskillaxe10 = adiciona 10 skills axe por 10 barras.\nskilldistance10 = adiciona 10 skill distance por 10 barras.\nskillshielding10 = adiciona 10 skill shielding por 10 barras.\nremoverfrag = remove todos frags por 100k.\nO Item desejado não existe em nosso stock. Veja a cima os detalhes dos items disponíveis.")         return true     end       for f, v in pairs(tb) do         if param == f then             if v.t == 1 then                 if player:getItemCount(9971) >= v.price then                     local item_quant = (v.bag_quant * 2000)/100                     for x = 1, v.bag_quant do                             local bag = player:addItem(v.bag, 1)                             for i = 1, item_quant do                                 bag:addItem(v.item, 100)                             end                     end                     player:removeItem(9971, v.price)                     player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg)                     player:setStorageValue(storage, os.time()+30)                     break                 else                     player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")                 end             elseif v.t == 2 then                 if player:getItemCount(9971) >= v.price then                     item = player:addItem(v.item, 1)                     item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "Este item pode ser adquirido através do shopping. Adquirido dia " .. os.date("%d/%m/%Y - %X") .." por ".. player:getName() ..". Serial: ".. player:getGuid() ..".")                             player:removeItem(9971, v.price)                     player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg)                     player:setStorageValue(storage, os.time()+30)                     break                 else                     player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")                 end             elseif v.t == 3 then                 if player:getItemCount(9971) >= v.price then                     player:addPremiumDays(v.days)                     player:removeItem(9971, v.price)                     player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns você comprou " .. v.days .. " dias de vip com sucesso.")                     player:setStorageValue(storage, os.time()+30)                     break                 else                     player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")                 end             elseif v.t == 4 then                 if player:getBaseMagicLevel() >= v.lim then                     player:sendCancelMessage(v.lim_msg)                     return true                 end                   if not isInArray(v.vocations, player:getVocation():getId()) then                     player:sendCancelMessage(v.voc_msg)                     return true                 end                   if player:getItemCount(9971) >= v.price then                     player:removeItem(9971, v.price)                     player:setStorageValue(storage, os.time()+30)                     player:remove()                     db.query("UPDATE `players` SET ".. v.skill .. " = " .. v.skill .. " + " .. v.incre .. " WHERE `id` = ".. pid)                 else                     player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")                 end             elseif v.t == 5 then                 if not isInArray(v.vocations, player:getVocation():getId()) then                     player:sendCancelMessage(v.voc_msg)                     return true                 end                 if player:getItemCount(9971) >= v.price then                  if player:getSkillLevel(v.skill_id) < v.lim then                     player:removeItem(9971, v.price)                     player:setStorageValue(storage, os.time()+30)                     player:remove()                     db.query("UPDATE `players` SET ".. v.skill .. " = " .. v.skill .. " + " .. v.incre .. " WHERE `id` = ".. pid)                     else                  player:sendCancelMessage("Você não pode ter skill acima de ".. v.lim .. ".")                 end                 else                     player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")                 end             elseif v.t == 6 then                 if player:getItemCount(2160) >= v.price then                     player:removeItem(2160, v.price)                     player:setSkull(SKULL_NONE)                     player:setSkullTime(0)                     player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)                     player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your skull and frags has been removed!")                     player:setStorageValue(storage, os.time()+30)                     db.query("UPDATE `player_deaths` SET `unjustified` = 0 WHERE `unjustified` = 1 AND `killed_by` = " .. db.escapeString(player:getName()))                 else                     player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")                 end                 end         end     end          return false  end
  11. Vodkart's post in (Resolvido)da uma ajudinha ai os fodão! was marked as the answer   
    -- tabela adicionado ao configuration só procura por price = ..-- function onLook(cid, thing, position, lookDistance)                                                                                                                   local str = {} local iname = getItemInfo(thing.itemid)                                                                                           if not isCreature(thing.uid) then    if not iname or not iname.name then return true end    if isPokeball(thing.itemid) and getItemAttribute(thing.uid, "poke") then --alterado aki             local owner = getItemAttribute(thing.uid, "firstpoke")       local pokename = getItemAttribute(thing.uid, "poke")         if shinys[pokename] then          pokename = shinys[pokename]       end                 local ballName = iname.name       if getItemAttribute(thing.uid, 'ball') then          ballName = getItemAttribute(thing.uid, 'ball').. " ball"       end       table.insert(str, "You see "..iname.article.." "..ballName..".")        if getItemAttribute(thing.uid, "unique") then                             table.insert(str, " It's an unique item.")         end       table.insert(str, "\nContains "..getArticle(pokename).." "..pokename)                 if getItemAttribute(thing.uid, "nick") then          table.insert(str, " ("..getItemAttribute(thing.uid, "nick")..")")       end       local boost = getItemAttribute(thing.uid, "boost") or 0       if boost > 0 then          table.insert(str, " +"..boost)       end       table.insert(str, ".")                 doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))       return false            elseif string.find(iname.name, "fainted") or string.find(iname.name, "defeated") then           local name = iname.name             name = string.gsub(name, "fainted ", "")             name = string.gsub(name, "defeated ", "")             name = doCorrectPokemonName(name)       if shinys[name] then          name = shinys[name]       end       name = "fainted "..name:lower()                  table.insert(str, "You see "..iname.article.." "..name..". ")           if isContainer(thing.uid) then          table.insert(str, "(Vol: "..getContainerCap(thing.uid)..")")       end       table.insert(str, "\n")       if getItemAttribute(thing.uid, "gender") == SEX_MALE then          table.insert(str, "It is male.")       elseif getItemAttribute(thing.uid, "gender") == SEX_FEMALE then          table.insert(str, "It is female.")       else          table.insert(str, "It is genderless.")       end       doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))       return false    elseif isContainer(thing.uid) then    --containers       if iname.name == "dead human" and getItemAttribute(thing.uid, "pName") then          table.insert(str, "You see a dead human (Vol:"..getContainerCap(thing.uid).."). ")          table.insert(str, "You recognize ".. getItemAttribute(thing.uid, "pName")..". ".. getItemAttribute(thing.uid, "article").." was killed by a ")          table.insert(str, getItemAttribute(thing.uid, "attacker")..".")       else            table.insert(str, "You see "..iname.article.." "..iname.name..". (Vol:"..getContainerCap(thing.uid)..").")       end             if getPlayerGroupId(cid) >= 4 and getPlayerGroupId(cid) <= 6 then          table.insert(str, "\nItemID: ["..thing.itemid.."]")              local pos = getThingPos(thing.uid)          table.insert(str, "\nPosition: [X: "..pos.x.."][Y: "..pos.y.."][Z: "..pos.z.."]")        end       doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))       return false    else         local p = getThingPos(thing.uid)       table.insert(str, "You see ")       if thing.type > 1 then          table.insert(str, thing.type.." "..iname.plural..".")       else          table.insert(str, iname.article.." "..iname.name..".")       end       if getItemAttribute(thing.uid, "unique") then          table.insert(str, " It's an unique item.")       end       table.insert(str, "\n"..iname.description)       if getPlayerGroupId(cid) >= 4 and getPlayerGroupId(cid) <= 6 then          table.insert(str, "\nItemID: ["..thing.itemid.."]")          table.insert(str, "\nPosition: ["..p.x.."]["..p.y.."]["..p.z.."]")       end       sendMsgToPlayer(cid, MESSAGE_INFO_DESCR, table.concat(str))       return true    end end if not isPlayer(thing.uid) and not isMonster(thing.uid) then    --outros npcs    table.insert(str, "You see "..getCreatureName(thing.uid)..".")    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))    return false end if isPlayer(thing.uid) then      --player local player = thing.uid local vip = getPlayerPremiumDays(player) > 1 and "Premuim" or "Not Premuim"   local msg = ""..getCreatureName(player).."-Level "..getPlayerLevel(player).."-"..vip.."" --doShowLookPlayer(cid, player, msg) return false end if getCreatureName(thing.uid) == "Evolution" then return false end if not isSummon(thing.uid) then   --monstros       local pokename = getCreatureName(thing.uid)    if shinys[pokename] then           pokename = shinys[pokename]    end    table.insert(str, "You see a wild "..string.lower(pokename)..".\n")    table.insert(str, "Hit Points: "..getCreatureHealth(thing.uid).." / "..getCreatureMaxHealth(thing.uid)..".\n")    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))    return false elseif isSummon(thing.uid) and not isPlayer(thing.uid) then  --summons    local pokename = getCreatureName(thing.uid)    if shinys[pokename] then           pokename = shinys[pokename]    end               local boostlevel = getItemAttribute(getPlayerSlotItem(getCreatureMaster(thing.uid), 8).uid, "boost") or 0    if getCreatureMaster(thing.uid) == cid then           local myball = getPlayerSlotItem(cid, 8).uid           table.insert(str, "You see your "..string.lower(pokename)..".")           if boostlevel > 0 then                  table.insert(str, "\nBoost level: +"..boostlevel..".")           end           table.insert(str, "\nHit points: "..getCreatureHealth(thing.uid).."/"..getCreatureMaxHealth(thing.uid)..".")           doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, table.concat(str))    else           doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You see a "..string.lower(pokename)..".\nIt belongs to "..getCreatureName(getCreatureMaster(thing.uid))..".")    end    return false end return true end
  12. Vodkart's post in (Resolvido)[Ajuda] remover função de minimo de players na quest was marked as the answer   
    function HaveCreatureArena(area, remove, clean) -- função do Vodkart for x = area[1].x - 1, area[2].x + 1 do for y = area[1].y - 1, area[2].y + 1 do local pos = {x=x, y=y, z=area[1].z} local m = getTopCreature(pos).uid if remove ~= false and m ~= 0 and isMonster(m) then doRemoveCreature(m) end if clean ~= false then doCleanTile(pos, false) end end    end    end local t = { lvl = 100, area_from = {x = 33217, y = 31655, z = 13}, area_to = {x = 33224, y = 31663, z = 13}, entrada = { {x = 33225, y =31671, z = 13},-- pos players {x = 33224, y =31671, z = 13}, {x = 33223, y =31671, z = 13}, {x = 33222, y =31671, z = 13} }, saida = { {x = 33222, y = 31659, z = 13}, {x = 33221, y = 31659, z = 13}, {x = 33220, y = 31659, z = 13}, {x = 33219, y = 31659, z = 13} }, monstros = { {{x = 33220, y = 31657, z = 13}, "Demon"}, -- defina pos dos montros e nomes {{x = 33222, y = 31657, z = 13}, "Demon"}, {{x = 33219, y = 31661, z = 13}, "Demon"}, {{x = 33221, y = 31661, z = 13}, "Demon"}, {{x = 33223, y = 31659, z = 13}, "Demon"}, {{x = 33224, y = 31659, z = 13}, "Demon"} }  } function onUse(cid, item, fromPosition, itemEx, toPosition) local player_room, check = 0, {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getCreaturePosition(pid), t.area_from, t.area_to) then player_room = player_room + 1 end end if player_room > 0 then doPlayerSendCancel(cid, 'There is already a team in the quest room.') return true end for _, k in ipairs(t.entrada) do local x = getTopCreature(k).uid if(x ~= 0 and not isPlayer(x) or getPlayerLevel(x) < t.lvl) then doPlayerSendCancel(cid, 'alguém não possui level '..t.lvl..' ou mais.') return true end table.insert(check, x) end HaveCreatureArena({t.area_from, t.area_to}, true, true) -- remove monstros, itens for _, summon in pairs(t.monstros) do doCreateMonster(summon[2], summon[1]) end for i, tid in ipairs(check) do doSendMagicEffect(t.entrada[i], CONST_ME_POFF) doTeleportThing(tid, t.saida[i], false) doSendMagicEffect(t.saida[i], CONST_ME_ENERGYAREA) end doTransformItem(item.uid, item.itemid == 1945 and 1946 or 1945) return true end
  13. Vodkart's post in (Resolvido)[DÚVIDA] Executar na Database was marked as the answer   
    1° Abra o programa Sqlite 2° Selecione a database do seu server, o arquivo é esse ".s3db", por exemplo o "forgottenserver.s3db" 3° na parte superior do programa tem a aba "Tools",clica nela e seleciona "Open SQL query editor" ou (ALT + E) se preferir 4° Vai abrir uma janela branca,nela você coloca isso:   CREATE TABLE marriage_system (         id                INTEGER NOT NULL,         player_id INTEGER NOT NULL,         partner     VARCHAR( 255 ) NOT NULL,         marriage_date INTEGER NOT NULL,         PRIMARY KEY ( id ) );   5° Depois clica no ícone do raio ali na parte de cima ou aperta o botão F9 que vai fazer com que a query seja executada. 
  14. Vodkart's post in (Resolvido)Bug ao comprar skills was marked as the answer   
    if(param == "skillclub") then if getPlayerSkillLevel(cid, SKILL_CLUB) >= 350 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode ter skill acima de 350.") return true elseif not isDrunou(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Somente Drunous podem comprar skill de club.") return true elseif getCreatureCondition(cid, CONDITION_ATTRIBUTES) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode usar esse comando com condition de atributos.") return true elseif not doPlayerRemoveItem(cid, 9971, 1) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return true end local pid,club = getPlayerGUID(cid), getPlayerSkillLevel(cid, SKILL_CLUB) doRemoveCreature(cid) db.executeQuery("UPDATE `player_skills` SET `value` = " .. (club + 1) .. ", `count` = 0 WHERE `skillid` = 1 and `player_id` = "..pid) return true end
  15. Vodkart's post in (Resolvido)[PEDIDO] Add storage was marked as the answer   
    n tinha pensado nisso, vlw. já editei de novo
     
     
    @ -- editei de novo pq tinha faltando um "and"
     
    usa o que eu editei lá agr que é esse:
     

    local keywordHandler = KeywordHandler:new()  local npcHandler = NpcHandler:new(keywordHandler)  NpcSystem.parseParameters(npcHandler)  local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end  function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end  function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end  function onThink() npcHandler:onThink() end  function creatureSayCallback(cid, type, msg)  if(not npcHandler:isFocused(cid)) then  return false  end  local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid local msg, price = string.lower(msg), 200000 local team = {["blue"]  = {storage = 34789}, ["green"] = {storage = 34790}} if isInArray({'bilhete', 'ticket', 'tickets'}, msg) then npcHandler:say('Você quer participar de que time por '..price..'? se sim escolha um time: {blue} ou {green}', cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 then if team[msg] then if getGlobalStorageValue(34789) < 20 and getGlobalStorageValue(34790) < 20 then if getPlayerStorageValue(cid, 34789) <= 0 and getPlayerStorageValue(cid, 34790) <= 0 then if doPlayerRemoveMoney(cid, price) then setPlayerStorageValue(cid, team[msg].storage, 1) setGlobalStorageValue(team[msg].storage,getGlobalStorageValue(team[msg].storage) < 0 and 1 or getGlobalStorageValue(team[msg].storage)+1) npcHandler:say('aqui está seu bilhete.', cid) else npcHandler:say('you do not have enough money!', cid) talkState[talkUser] = 0  end else npcHandler:say('you already have ticket!', cid) talkState[talkUser] = 0  end else npcHandler:say('ticket esgotado!', cid) talkState[talkUser] = 0  end end elseif msg == "no" then  selfSay("Then not", cid)  talkState[talkUser] = 0  npcHandler:releaseFocus(cid)  end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  16. Vodkart's post in (Resolvido)[PEDIDO] Script Para Não Usar Magic Wall em Tal Área was marked as the answer   
    Data > Spells > scripts > attack > energy wall.lua
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGYBALL) setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 1495)   local area = createCombatArea(AREA_WALLFIELD, AREADIAGONAL_WALLFIELD) setCombatArea(combat, area)   function onCastSpell(cid, var) local block_area = { {{x=909,y=1019,z=7}, {x=1000,y=1019,z=7}}, -- pos começo e final da area {{x=156,y=1019,z=7}, {x=200,y=1019,z=7}}, {{x=200,y=1019,z=7}, {x=300,y=1019,z=9}} } for _, var in ipairs(block_area) do if isInRange(getCreaturePosition(cid), var[1], var[2]) then doPlayerSendCancel(cid, "você não pode jogar magic wall nesta area.") return false end end return doCombat(cid, combat, var) end
  17. Vodkart's post in (Resolvido)[AJUDA]Tile que só pode passar num intervalo de horario REP++ was marked as the answer   
    function onStepIn(cid, item, position, fromPosition) local hrs = tostring(os.date("%X")):sub(1, 5) if getPlayerGuildId(cid) == getGlobalStorageValue(castle.storage)  or getPlayerAccess(cid) >= 3 or getGlobalStorageValue(201307242201) - os.time() > 0 then return true elseif getPlayerGuildId(cid) == 0 or hrs > "19:00" and hrs < "22:00" then doTeleportThing(cid, fromPosition) doPlayerSendTextMessage(cid, 25, "Você não tem guild ou o castelo está fechado.") return true end setGlobalStorageValue(201307242201, os.time() + 1*60) doBroadcastMessage("O player ".. getPlayerName(cid) .." invadiu o castelo, contenham-no!", 25) return true end
  18. Vodkart's post in (Resolvido)Death Channel was marked as the answer   
    erro?
     
    registrou no login.lua?
      registerCreatureEvent(cid, "nome do event")   data/XML/channels.xml colocou      <channel id="10" active="no" name="Death Channel"/>   data/lib/constant.lua colocou   CHANNEL_DEATH = 10
  19. Vodkart's post in (Resolvido)Script não remove boss was marked as the answer   
    tenta assim
     

    local teleports = {     -- Tile UID = {storage of task, amount of monsters, monsters to spawn}     [14001] = {monsters = {"Leviathan"}, telePos = {x = 31914, y = 31071, z = 10}, spawnPos = {x = 31905, y = 31071, z = 10}, from = {x = 31900, y = 31064, z = 10}, to = {x = 31918, y = 31081, z = 10}},     [14002] = {monsters = {"The Noxious Spawn"}, telePos = {x = 32842, y = 32668, z = 11}, spawnPos = {x = 32842, y = 32673, z = 11}, from = {x = 32836, y = 32665, z = 11}, to = {x = 32849, y = 32677, z = 11}},     [14003] = {monsters = {"Necropharus"}, telePos = {x = 33028, y = 32427, z = 12}, spawnPos = {x = 33028, y = 32421, z = 12}, from = {x = 33020, y = 32415, z = 12}, to = {x = 33035, y = 32430, z = 12}},     [14004] = {monsters = {"The Horned Fox"}, telePos = {x = 32458, y = 31993, z = 9}, spawnPos = {x = 32458, y = 32004, z = 9}, from = {x = 32453, y = 31992, z = 9}, to = {x = 32464, y = 32008, z = 9}},     [14005] = {monsters = {"Lethal Lissy", "Ron The Ripper", "Deadeye Devious", "Brutus Bloodbeard"}, telePos = {x = 31975, y = 32896, z = 0}, spawnPos = {x = 31982, y = 32896, z = 0}, from = {x = 31972, y = 32890, z = 0}, to = {x = 31988, y = 32904, z = 0}},     [14007] = {monsters = {"The Snapper"}, telePos = {x = 32610, y = 32724, z = 8}, spawnPos = {x = 32611, y = 32727, z = 8}, from = {x = 32606, y = 32720, z = 8}, to = {x = 32620, y = 32733, z = 8}},     [14008] = {monsters = {"Hide"}, telePos = {x = 32815, y = 32704, z = 8}, spawnPos = {x = 32816, y = 32708, z = 8}, from = {x = 32810, y = 32701, z = 8}, to = {x = 32824, y = 32713, z = 8}},     [14012] = {monsters = {"Shardhead"}, telePos = {x = 32102, y = 31125, z = 2}, spawnPos = {x = 32101, y = 31130, z = 2}, from = {x = 32095, y = 31122, z = 2}, to = {x = 32108, y = 31136, z = 2}},     [14019] = {monsters = {"Esmeralda"}, telePos = {x = 32759, y = 31253, z = 9}, spawnPos = {x = 32759, y = 31256, z = 9}, from = {x = 32755, y = 31250, z = 9}, to = {x = 32764, y = 31259, z = 9}},     [14020] = {monsters = {"The Old Widow"}, telePos = {x = 32804, y = 32280, z = 8}, spawnPos = {x = 32800, y = 32280, z = 8}, from = {x = 32794, y = 32273, z = 8}, to = {x = 32807, y = 32288, z = 8}},     [14021] = {monsters = {"The Many"}, telePos = {x = 32921, y = 32894, z = 8}, spawnPos = {x = 32921, y = 32899, z = 8}, from = {x = 32915, y = 32891, z = 8}, to = {x = 32927, y = 32904, z = 8}},     [14506] = {monsters = {"Demodras"}, telePos = {x = 32748, y = 32287, z = 10}, spawnPos = {x = 32745, y = 32292, z = 10}, from = {x = 32738, y = 32283, z = 10}, to = {x = 32757, y = 32300, z = 10}},     [14505] = {monsters = {"Tiquandas Revenge"}, telePos = {x = 32888, y = 32580, z = 4}, spawnPos = {x = 32883, y = 32580, z = 4}, from = {x = 32881, y = 32578, z = 4}, to = {x = 32892, y = 32588, z = 4}},     [14022] = {monsters = {"Stonecracker"}, telePos = {x = 33259, y = 31695, z = 15}, spawnPos = {x = 33257, y = 31702, z = 15}, from = {x = 33252, y = 31691, z = 15}, to = {x = 33266, y = 31708, z = 15}}, } function HaveCreatureArena(area, remove, clean) local players = {} for x = area[1].x - 1, area[2].x + 1 do for y = area[1].y - 1, area[2].y + 1 do local pos = {x=x, y=y, z=area[1].z} local m = getTopCreature(pos).uid if m ~= 0 and isPlayer(m) then table.insert(players, m) end if remove ~= false and m ~= 0 and isMonster(m) then doRemoveCreature(m) end if clean ~= false then doCleanTile(pos, false) end end end return players end function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) local now = teleports[item.uid] if #HaveCreatureArena({now.from,now.to} , false, false) > 0 then doTeleportThing(cid, fromPosition, true) doPlayerSendCancel(cid, "Someone else is in the room.") return true end if getPlayerStorageValue(cid, item.uid + (item.uid < 14500 and 100 or 0)) == 1 then HaveCreatureArena({now.from,now.to}, true, true) setPlayerStorageValue(cid, item.uid + (item.uid < 14500 and 100 or 0), 2) doTeleportThing(cid, now.telePos) doSendMagicEffect(now.telePos, CONST_ME_TELEPORT) doSummonCreature(now.monsters[math.random(#now.monsters)], now.spawnPos) doSendMagicEffect(now.spawnPos, CONST_ME_TELEPORT) return true end doTeleportThing(cid, fromPosition, true) return true end
  20. Vodkart's post in (Resolvido)Script para mudança de nome de personagem was marked as the answer   
    é assim que funciona mesmo, o item é removido.
     

    item = { Id = 1111, count = 0, },  
    ai vc coloca o ITEM ID e a QUANTIDADE que serão removidos
  21. Vodkart's post in (Resolvido)(SCRIPTING) Pedido de edição básica nesse script. was marked as the answer   
    tenta assim
     

    local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler)     function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end   npcHandler:setMessage(MESSAGE_GREET, "Greetings |PLAYERNAME|. I sell many {addons}.")   function playerBuyAddonNPC(cid, message, keywords, parameters, node) if(not npcHandler:isFocused(cid)) then return false end if (parameters.confirm ~= true) and (parameters.decline ~= true) then if(getPlayerPremiumDays(cid) == 0) and (parameters.premium == true) then npcHandler:say('Sorry, but this addon is only for premium players!', cid) npcHandler:resetNpc() return true end if (getPlayerStorageValue(cid, parameters.storageID) ~= -1) then npcHandler:say('You already have this addon!', cid) npcHandler:resetNpc() return true end local itemsTable = parameters.items local items_list = '' if table.maxn(itemsTable) > 0 then for i = 1, table.maxn(itemsTable) do local item = itemsTable[i] items_list = items_list .. item[2] .. ' ' .. getItemNameById(item[1]) if i ~= table.maxn(itemsTable) then items_list = items_list .. ', ' end end end local text = '' if (parameters.cost > 0) and table.maxn(parameters.items) then text = items_list .. ' and ' .. parameters.cost .. ' gp' elseif (parameters.cost > 0) then text = parameters.cost .. ' gp' elseif table.maxn(parameters.items) then text = items_list end npcHandler:say('Did you bring me ' .. text .. ' for ' .. keywords[1] .. '?', cid) return true elseif (parameters.confirm == true) then local addonNode = node:getParent() local addoninfo = addonNode:getParameters() local items_number = 0 if table.maxn(addoninfo.items) > 0 then for i = 1, table.maxn(addoninfo.items) do local item = addoninfo.items[i] if (getPlayerItemCount(cid,item[1]) >= item[2]) then items_number = items_number + 1 end end end if(getPlayerMoney(cid) >= addoninfo.cost) and (items_number == table.maxn(addoninfo.items)) then doPlayerRemoveMoney(cid, addoninfo.cost) if table.maxn(addoninfo.items) > 0 then for i = 1, table.maxn(addoninfo.items) do local item = addoninfo.items[i] doPlayerRemoveItem(cid,item[1],item[2]) end end doPlayerAddOutfit(cid, addoninfo.outfit_male, addoninfo.addon) doPlayerAddOutfit(cid, addoninfo.outfit_female, addoninfo.addon) local outsex = getPlayerSex(cid) == 1 and addoninfo.outfit_male or addoninfo.outfit_female doCreatureChangeOutfit(cid,{lookType = outsex, lookHead = getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = addoninfo.addon}) doSendMagicEffect(getThingPos(cid),math.random(CONST_ME_MAGIC_BLUE, CONST_ME_MAGIC_GREEN)) setPlayerStorageValue(cid,addoninfo.storageID,1) npcHandler:say('Here you are.', cid) else npcHandler:say('You do not have needed cash!', cid) end npcHandler:resetNpc() return true elseif (parameters.decline == true) then npcHandler:say('Not interested? Maybe another addon?', cid) npcHandler:resetNpc() return true end return false end   local noNode = KeywordNode:new({'no'}, playerBuyAddonNPC, {decline = true}) local yesNode = KeywordNode:new({'yes'}, playerBuyAddonNPC, {confirm = true})   -- citizen (done) local outfit_node = keywordHandler:addKeyword({'first citizen addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, items = {}, outfit_female = 136, outfit_male = 128, addon = 1, storageID = 10001}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second citizen addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 136, outfit_male = 128, addon = 2, storageID = 10002}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- hunter (done) local outfit_node = keywordHandler:addKeyword({'first hunter addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 137, outfit_male = 129, addon = 1, storageID = 10003}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second hunter addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 137, outfit_male = 129, addon = 2, storageID = 10004}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- knight (done) local outfit_node = keywordHandler:addKeyword({'first knight addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 139, outfit_male = 131, addon = 1, storageID = 10005}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second knight addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 139, outfit_male = 131, addon = 2, storageID = 10006}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- mage (done) local outfit_node = keywordHandler:addKeyword({'first mage addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 138, outfit_male = 130, addon = 1, storageID = 10007}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second mage addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 138, outfit_male = 130, addon = 2, storageID = 10008}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)     -- summoner (done) local outfit_node = keywordHandler:addKeyword({'first summoner addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 141, outfit_male = 133, addon = 1, storageID = 10009}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second summoner addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 141, outfit_male = 133, addon = 2, storageID = 10010}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)     -- barbarian (done) local outfit_node = keywordHandler:addKeyword({'first barbarian addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 147, outfit_male = 143, addon = 1, storageID = 10011}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second barbarian addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 147, outfit_male = 143, addon = 2, storageID = 10012}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- druid (done) local outfit_node = keywordHandler:addKeyword({'first druid addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 148, outfit_male = 144, addon = 1, storageID = 10013}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second druid addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 148, outfit_male = 144, addon = 2, storageID = 10014}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- nobleman (done) local outfit_node = keywordHandler:addKeyword({'first nobleman addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, items = {}, outfit_female = 140, outfit_male = 132, addon = 1, storageID = 10015}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second nobleman addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, items = {}, outfit_female = 140, outfit_male = 132, addon = 2, storageID = 10016}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- oriental (done) local outfit_node = keywordHandler:addKeyword({'first oriental addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 150, outfit_male = 146, addon = 1, storageID = 10017}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second oriental addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 150, outfit_male = 146, addon = 2, storageID = 10018}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- warrior (done) local outfit_node = keywordHandler:addKeyword({'first warrior addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 142, outfit_male = 134, addon = 1, storageID = 10019}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second warrior addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 142, outfit_male = 134, addon = 2, storageID = 10020}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- wizard (done) local outfit_node = keywordHandler:addKeyword({'first wizard addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 149, outfit_male = 145, addon = 1, storageID = 10021}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second wizard addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 149, outfit_male = 145, addon = 2, storageID = 10022}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- assassin (done) local outfit_node = keywordHandler:addKeyword({'first assassin addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 156, outfit_male = 152, addon = 1, storageID = 10023}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second assassin addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 156, outfit_male = 152, addon = 2, storageID = 10024}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- beggar (done) local outfit_node = keywordHandler:addKeyword({'first beggar addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 157, outfit_male = 153, addon = 1, storageID = 10025}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second beggar addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 157, outfit_male = 153, addon = 2, storageID = 10026}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- pirate (done) local outfit_node = keywordHandler:addKeyword({'first pirate addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 155, outfit_male = 151, addon = 1, storageID = 10027}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second pirate addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 155, outfit_male = 151, addon = 2, storageID = 10028}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- shaman (done) local outfit_node = keywordHandler:addKeyword({'first shaman addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 158, outfit_male = 154, addon = 1, storageID = 10029}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second shaman addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 158, outfit_male = 154, addon = 2, storageID = 10030}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- norseman (done) local outfit_node = keywordHandler:addKeyword({'first norseman addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 252, outfit_male = 251, addon = 1, storageID = 10031}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second norseman addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 252, outfit_male = 251, addon = 2, storageID = 10032}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- jester (done)(custom) local outfit_node = keywordHandler:addKeyword({'first jester addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 270, outfit_male = 273, addon = 1, storageID = 10033}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second jester addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 270, outfit_male = 273, addon = 2, storageID = 10034}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- demonhunter (done)(custom) local outfit_node = keywordHandler:addKeyword({'first demonhunter addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 288, outfit_male = 289, addon = 1, storageID = 10035}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second demonhunter addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 288, outfit_male = 289, addon = 2, storageID = 10036}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- nightmare (done)(custom) local outfit_node = keywordHandler:addKeyword({'first nightmare addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 269, outfit_male = 268, addon = 1, storageID = 10037}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second nightmare addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 269, outfit_male = 268, addon = 2, storageID = 10038}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- brotherhood (done)(custom) local outfit_node = keywordHandler:addKeyword({'first brotherhood addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 279, outfit_male = 278, addon = 1, storageID = 10039}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second brotherhood addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 279, outfit_male = 278, addon = 2, storageID = 10040}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- yalaharian (done)(custom) local outfit_node = keywordHandler:addKeyword({'first yalaharian addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 324, outfit_male = 325, addon = 1, storageID = 10041}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second yalaharian addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 324, outfit_male = 325, addon = 2, storageID = 10042}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- Warmaster (done)(custom) local outfit_node = keywordHandler:addKeyword({'first warmaster addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 336, outfit_male = 335, addon = 1, storageID = 10043}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second warmaster addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 336, outfit_male = 335, addon = 2, storageID = 10044}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)   -- Wayfarer (done)(custom) local outfit_node = keywordHandler:addKeyword({'first wayfarer addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 366, outfit_male = 367, addon = 1, storageID = 10045}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode) local outfit_node = keywordHandler:addKeyword({'second wayfarer addon'}, playerBuyAddonNPC, {premium = false, cost = 100000, items = {}, outfit_female = 366, outfit_male = 367, addon = 2, storageID = 10046}) outfit_node:addChildKeywordNode(yesNode) outfit_node:addChildKeywordNode(noNode)     keywordHandler:addKeyword({'addons'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I can give you citizen, hunter, knight, mage, nobleman, summoner, warrior, barbarian, druid, wizard, oriental, pirate, assassin, beggar, shaman, norseman, nighmare, jester, yalaharian, brotherhood, warmaster and wayfarer addons. Type \'{help}\' for more information.'}) keywordHandler:addKeyword({'help'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'To buy the first addon say \'{first NAME addon}\', for the second addon say \'{second NAME addon}\'.'})   npcHandler:addModule(FocusModule:new())
  22. Vodkart's post in (Resolvido)[Erro] Globalevent was marked as the answer   
    intervalo a cada 5 segundos?? acho melhor colocar a cada 1 segundo mesmo.
    tem que ver se o seu servidor não é em milissegundos...
     
    tenta assim
     

    function onThink(interval, lastExecution) local wallpos, wallID = {x=296, y=451, z=7, stackpos=1}, 1515 function OpenAndCloseWall() if getTileItemById(wallpos, wallID).uid == 0 then doCreateItem(wallID, 1, wallpos) else doRemoveItem(getThingfromPos(wallpos).uid,1) doSendMagicEffect(wallpos, CONST_ME_POFF) end broadcastMessage(" Gran Castle ".. getTileItemById(wallpos, wallID).uid == 0 and "ABERTO" or "FECHADO" .."!", MESSAGE_EVENT_ADVANCE)  return true end if os.date("%A") == "Monday" then       if (os.date("%X") == "19:00:00") or (os.date("%X") == "19:00:05") then OpenAndCloseWall()       elseif (os.date("%X") == "20:00:00") or (os.date("%X") == "20:00:05") then OpenAndCloseWall()       end  end return TRUE end
  23. Vodkart's post in (Resolvido)[Talkactions] Remove Frags - Erro No Distro was marked as the answer   
    caralho, ajuda quem entende ok??
     
    quem leu o erro, entendeu que a função 'getPlayerFrags' não existe no server dele.
     
    é só adicionar na lib/functions isso:
     

    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  
    pqp meu deus, tão fácil...
  24. Vodkart's post in (Resolvido)[Resolvido] Pedido, Event OnTime was marked as the answer   
    para quem está com esse erro:



    É porque em servidores mais recentes não existe mais a função onTimer()

    então usem dessa forma:



    function onThink(interval, lastExecution) local days = 15*24*60*60 if tostring(os.date("%X")):sub(1, 5) == "00:00" then doSaveServer() local query = db.getResult("SELECT `owner`,`id` FROM `houses`;") if (query:getID() ~= -1) then while true do local own,houseid = query:getDataInt("owner"),query:getDataInt("id") local qry = db.getResult("SELECT `lastlogin` FROM `players` WHERE `id` = "..own) if(qry:getID() ~= -1) then last = tonumber(qry:getDataInt("lastlogin")) if last < os.time() - days then setHouseOwner(houseid, NO_OWNER_PHRASE,true) end end if not(query:next()) then break end end query:free() end end return true end globalevents.xml <globalevent name="HouseClean" interval="60" event="script" value="houseclean.lua"/>

    obs: está para executar as "00:00"
    qualquer coisa só mudar o horário, por exemplo:

    "22:00"
  25. Vodkart's post in (Resolvido)[Pedido] NPC Task System was marked as the answer   
    Mods:

    Task Kill.xml

    <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Task Kill" version="1.0" author="Vodkart" contact="tibiaking.com" enabled="yes"> <config name="KillM_func"><![CDATA[ tsk = { storages = {68754,68755}, task = {"dragon", 10}, -- nome do bixo e quantidade exp = 200, item = {2123,1} } ]]></config> <event type="login" name="AreKill" event="script"><![CDATA[ function onLogin(cid) registerCreatureEvent(cid, "CountTask") return true end]]></event> <event type="kill" name="CountTask" event="script"><![CDATA[ domodlib('KillM_func') function onKill(cid, target) if isMonster(target) then local n = string.lower(getCreatureName(target)) if n == tsk.task[1] and getPlayerStorageValue(cid, tsk.storages[2]) >= 1 then local contagem = getPlayerStorageValue(cid, tsk.storages[1]) if (contagem == -1) then contagem = 1 end if not tonumber(contagem) then return true end if contagem > tsk.task[2] then return true end setPlayerStorageValue(cid, tsk.storages[1], contagem+1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE,""..(contagem == tsk.task[2] and "Congratulations! You finished the task of "..n.."." or "defeated. Total [" .. contagem .. "/" .. tsk.task[2] .. "] " .. n .. ".").."") end end return true end]]></event> </mod> npc: domodlib('KillM_func') local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid local msg = string.lower(msg) if isInArray({"task","mission","missao"}, msg) then if not tonumber(getPlayerStorageValue(cid, tsk.storages[1])) then npcHandler:say("Você já terminou a task!", cid) elseif getPlayerStorageValue(cid, tsk.storages[2]) >= 1 then npcHandler:say("Você já matou "..tsk.task[2].." "..tsk.task[1].."? {yes}", cid) talkState[talkUser] = 2 else npcHandler:say("Você deseja fazer uma missão de matar "..tsk.task[2].." "..tsk.task[1].." e receber "..tsk.exp.." de experience e "..tsk.item[2].." "..getItemNameById(tsk.item[1]).."? {yes}", cid) talkState[talkUser] = 1 end elseif isInArray({"yes","sim"}, msg) and talkState[talkUser] > 0 then if talkState[talkUser] == 1 then npcHandler:say("Parabéns! Agora você está participando da task, volte quanto tiver terminado!", cid) setPlayerStorageValue(cid, tsk.storages[2], 1) else if getPlayerStorageValue(cid, tsk.storages[1]) >= tsk.task[2] then npcHandler:say("Obrigado guerreiro, aqui está sua recompensa!", cid) setPlayerStorageValue(cid, tsk.storages[1], "Finished") doPlayerAddExp(cid, tsk.exp) doPlayerAddItem(cid, tsk.item[1], tsk.item[2]) else npcHandler:say("Você ainda não terminou a sua task!", cid) end end talkState[talkUser] = 0 elseif msg == "no" then selfSay("Tudo bem então", cid) talkState[talkUser] = 0 npcHandler:releaseFocus(cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())

Informação Importante

Confirmação de Termo