Jump to content

Search the Community

Showing results for tags 'Scripting'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Tibia King
    • Rules
    • Portal
    • FeedBack
  • Open Tibia
    • Otserv
    • Tools
    • Codes
    • Clients
    • Maps
    • Websites
  • Management of Ot Servers
    • Otserv Discussions & Research
    • Support and Requests
    • Otserv Tutorials
  • Tibia and Bots
    • Tibia
    • Bots
  • Others
    • Announcements
    • Other Programming Languages
    • Graphics and Design
    • Playground (Off-topic)

Calendars

  • Official Calendar
  • OTServs Calendar
  • Several Calendars

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Localization


My character


Favorite OTServ


Bot preferred


Interests

Found 4094 results

  1. Gostaria de alterar a forma de pagamento desse npc, ao invés de pagar com money, queria que o script aceitasse uma moeda com id especifico tfs 0.5 exclusive edition ( OBS: Se alguém puder também fazer o favor de mover o tópico para tibia classico agradeço, acabei postando errado) local nme = getCreatureName(getNpcCid()) 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) NpcSystem.parseParameters(npcHandler,cid) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function onPlayerEndTrade(cid) npcHandler:onPlayerEndTrade(cid) end function onPlayerCloseChannel(cid) npcHandler:onPlayerCloseChannel(cid) 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 msgcontains(msg,"quest") then if getPlayerLevel(cid) >= 800 then selfSay(gm(cid,nme,1),cid) talkState[talkUser] = 20 else if isKnight(cid) then selfSay(gm(cid,nme,2),cid) talkState[talkUser] = 30 else selfSay(gm(cid,nme,3),cid) talkState[talkUser] = 40 end end elseif agreeNPC(msg) and talkState[talkUser] == 20 then if doPlayerRemoveMoney(cid,50000000) then doTeleportThing(cid,{x = 37556, y = 38925, z = 7}) selfSay(gm(cid,nme,5),cid) else selfSay(gm(cid,nme,6).." 50kk",cid) end elseif agreeNPC(msg) and talkState[talkUser] == 30 then if doPlayerRemoveMoney(cid,200000000) then doTeleportThing(cid,{x = 37556, y = 38925, z = 7}) selfSay(gm(cid,nme,5),cid) else selfSay(gm(cid,nme,6).." 200kk",cid) end elseif agreeNPC(msg) and talkState[talkUser] == 40 then if doPlayerRemoveMoney(cid,100000000) then doTeleportThing(cid,{x = 37556, y = 38925, z = 7}) selfSay(gm(cid,nme,5),cid) else selfSay(gm(cid,nme,6).." 100kk",cid) end elseif disagreeNPC(msg) and isInArray({20,30,40},talkState[talkUser]) then selfSay("Ok...",cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  2. .Qual servidor ou website você utiliza como base? Qual o motivo deste tópico? Está surgindo algum erro? Se sim coloque-o aqui. Você tem o código disponível? Se tiver publique-o aqui: function onSay(cid, words, param) if (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Você precisa está em área protegida para utilizar este comando.") return TRUE end if (getPlayerStorageValue(cid, 11548) >= os.time()) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED,"Por medidas de segurança você só pode utilizar este comando em " .. (getPlayerStorageValue(cid, 11548)-os.time()+(0)) .. " segundos.") return TRUE end if(param ~= "") and (param ~= "sd") and (param ~= "uh") and (param ~= "explo") and (param ~= "vip10") and (param ~= "vip30") and (param ~= "skillclub") and (param ~= "skillsword") and (param ~= "skillaxe") and (param ~= "skilldistance") and (param ~= "skillshielding") and (param ~= "magiclevel") and (param ~= "magiclevel5") and (param ~= "skillclub10") and (param ~= "skillsword10") and (param ~= "skillaxe10") and (param ~= "skilldistance10") and (param ~= "skillshielding10") and (param ~= "removerfrag") and (param ~= "novark") then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "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.") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "\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.") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "\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 100000k.") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O Item desejado não existe em nosso stock. Veja a cima os detalhes dos items disponíveis.") return TRUE end if(param == "") then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "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.\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.") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "\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.") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "\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 um frag por 100000k.") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "\nnovark = gera uma nova RK para sua account por 10 barras.\n") return TRUE end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "sd") then if getPlayerItemCount(cid, 9971) >= 50 then local bag = doPlayerAddItem(cid, 5926, 1) doAddContainerItem(bag, 2268, 2000) local bag = doPlayerAddItem(cid, 5926, 1) doAddContainerItem(bag, 2268, 2000) doPlayerRemoveItem(cid, 9971, 30) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns você comprou 4k de SD com sucesso.") setPlayerStorageValue(cid,11548,os.time()+30) return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "uh") then if getPlayerItemCount(cid, 9971) >= 30 then local bag = doPlayerAddItem(cid, 2002, 1) doAddContainerItem(bag, 2273, 2000) local bag = doPlayerAddItem(cid, 2002, 1) doAddContainerItem(bag, 2273, 2000) local bag = doPlayerAddItem(cid, 2002, 1) doAddContainerItem(bag, 2273, 2000) doPlayerRemoveItem(cid, 9971, 30) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns você comprou 6k de UH com sucesso.") setPlayerStorageValue(cid,11548,os.time()+10) return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "explo") then if getPlayerItemCount(cid, 9971) >= 10 then local bag = doPlayerAddItem(cid, 2001, 1) doAddContainerItem(bag, 2313, 2000) local bag = doPlayerAddItem(cid, 2001, 1) doAddContainerItem(bag, 2313, 2000) local bag = doPlayerAddItem(cid, 2001, 1) doAddContainerItem(bag, 2313, 2000) doPlayerRemoveItem(cid, 9971, 10) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns você comprou 6k de Explosion com sucesso.") setPlayerStorageValue(cid,11548,os.time()+30) return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "vip10") then if getPlayerItemCount(cid, 9971) >= 5 then doPlayerAddPremiumDays(cid, 10) doPlayerRemoveItem(cid, 9971, 5) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns você comprou 10 dias de vip com sucesso.") setPlayerStorageValue(cid,11548,os.time()+30) return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "vip30") then if getPlayerItemCount(cid, 9971) >= 10 then doPlayerAddPremiumDays(cid, 30) doPlayerRemoveItem(cid, 9971, 10) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns você comprou 30 dias de vip com sucesso.") setPlayerStorageValue(cid,11548,os.time()+30) return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "super divine axe") then if getPlayerItemCount(cid, 9971) >= 60 then local bag = doPlayerAddItem(cid, 1997, 1) local new_item = doAddContainerItem(bag, 8926, 1) doItemSetAttribute(new_item, "description", "Este item pode ser adquirido através do shopping. Adquirido dia " .. os.date("%d/%m/%Y - %X") .." por ".. getPlayerName(cid) ..". Serial: ".. getPlayerGUID(cid) ..".") doPlayerRemoveItem(cid, 9971, 60) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você comprou um super divine axe com sucesso.") setPlayerStorageValue(cid,11548,os.time()+30) return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "super divine staff") then if getPlayerItemCount(cid, 9971) >= 60 then local bag = doPlayerAddItem(cid, 1997, 1) local new_item = doAddContainerItem(bag, 8922, 1) doItemSetAttribute(new_item, "description", "Este item pode ser adquirido através do shopping. Adquirido dia " .. os.date("%d/%m/%Y - %X") .." por ".. getPlayerName(cid) ..". Serial: ".. getPlayerGUID(cid) ..".") doPlayerRemoveItem(cid, 9971, 60) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você comprou um super divine staff com sucesso.") setPlayerStorageValue(cid,11548,os.time()+30) return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "super divine club") then if getPlayerItemCount(cid, 9971) >= 60 then local bag = doPlayerAddItem(cid, 1997, 1) local new_item = doAddContainerItem(bag, 7423, 1) doItemSetAttribute(new_item, "description", "Este item pode ser adquirido através do shopping. Adquirido dia " .. os.date("%d/%m/%Y - %X") .." por ".. getPlayerName(cid) ..". Serial: ".. getPlayerGUID(cid) ..".") doPlayerRemoveItem(cid, 9971, 60) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você comprou um super divine club com sucesso.") setPlayerStorageValue(cid,11548,os.time()+30) return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "super divine sword") then if getPlayerItemCount(cid, 9971) >= 60 then local bag = doPlayerAddItem(cid, 1997, 1) local new_item = doAddContainerItem(bag, 7403, 1) doItemSetAttribute(new_item, "description", "Este item pode ser adquirido através do shopping. Adquirido dia " .. os.date("%d/%m/%Y - %X") .." por ".. getPlayerName(cid) ..". Serial: ".. getPlayerGUID(cid) ..".") doPlayerRemoveItem(cid, 9971, 60) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você comprou um super divine sword com sucesso.") setPlayerStorageValue(cid,11548,os.time()+30) return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "super divine crossbow") then if getPlayerItemCount(cid, 9971) >= 60 then local bag = doPlayerAddItem(cid, 1997, 1) local new_item = doAddContainerItem(bag, 8851, 1) doItemSetAttribute(new_item, "description", "Este item pode ser adquirido através do shopping. Adquirido dia " .. os.date("%d/%m/%Y - %X") .." por ".. getPlayerName(cid) ..". Serial: ".. getPlayerGUID(cid) ..".") doPlayerRemoveItem(cid, 9971, 60) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você comprou um super divine crossbow com sucesso.") setPlayerStorageValue(cid,11548,os.time()+30) return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "livro nivel 6") then if getPlayerItemCount(cid, 9971) >= 60 then local bag = doPlayerAddItem(cid, 1997, 1) local new_item = doAddContainerItem(bag, 8921, 1) doItemSetAttribute(new_item, "description", "Este item pode ser adquirido através do shopping. Adquirido dia " .. os.date("%d/%m/%Y - %X") .." por ".. getPlayerName(cid) ..". Serial: ".. getPlayerGUID(cid) ..".") doPlayerRemoveItem(cid, 9971, 60) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você comprou um livro nivel 6 com sucesso.") setPlayerStorageValue(cid,11548,os.time()+30) return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "magiclevel") then if getPlayerMagLevel(cid) >= 200 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode ter magic level acima de 200.") return TRUE end if(not isSorcerer(cid) and not isDruid(cid) and not isInfernalist(cid)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Somente Sorcerers, Druids e Infernalists podem comprar magic level.") return TRUE end if getPlayerItemCount(cid, 9971) >= 3 then local pid = getPlayerGUID(cid) doPlayerRemoveItem(cid, 9971, 3) setPlayerStorageValue(cid,11548,os.time()+0) doRemoveCreature(cid) db.query("UPDATE `players` SET `maglevel` = `maglevel` + 1 WHERE `id` = "..pid) return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 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 end if not isDrunou(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Somente Drunous podem comprar skill de club.") return TRUE end if getPlayerItemCount(cid, 9971) >= 1 then local pid = getPlayerGUID(cid) local club = getPlayerSkillLevel(cid, SKILL_CLUB) doPlayerRemoveItem(cid, 9971, 1) setPlayerStorageValue(cid,11548,os.time()+0) doRemoveCreature(cid) db.query("UPDATE `player_skills` SET `value` = " .. (club + 1) .. ", `count` = 0 WHERE `skillid` = 1 and `player_id` = " .. pid .. ";") return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "skillsword") then if getPlayerSkillLevel(cid, SKILL_SWORD) >= 350 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode ter skill acima de 350.") return TRUE end if not isKnight(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Somente Knights podem comprar skill de sword.") return TRUE end if getPlayerItemCount(cid, 9971) >= 1 then local pid = getPlayerGUID(cid) local sword = getPlayerSkillLevel(cid, SKILL_SWORD) doPlayerRemoveItem(cid, 9971, 1) setPlayerStorageValue(cid,11548,os.time()+0) doRemoveCreature(cid) db.query("UPDATE `player_skills` SET `value` = " .. (sword + 1) .. ", `count` = 0 WHERE `skillid` = 2 and `player_id` = " .. pid .. ";") return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "skillaxe") then if getPlayerSkillLevel(cid, SKILL_AXE) >= 350 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode ter skill acima de 350.") return TRUE end if not isKnight(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Somente Knights podem comprar skill de axe.") return TRUE end if getPlayerItemCount(cid, 9971) >= 1 then local pid = getPlayerGUID(cid) local axe = getPlayerSkillLevel(cid, SKILL_AXE) doPlayerRemoveItem(cid, 9971, 1) setPlayerStorageValue(cid,11548,os.time()+0) doRemoveCreature(cid) db.query("UPDATE `player_skills` SET `value` = " .. (axe + 1) .. ", `count` = 0 WHERE `skillid` = 3 and `player_id` = " .. pid .. ";") return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "skilldistance") then if getPlayerSkillLevel(cid, SKILL_DISTANCE) >= 350 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode ter skill acima de 350.") return TRUE end if not isPaladin(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Somente Paladins podem comprar skill de distance.") return TRUE end if getPlayerItemCount(cid, 9971) >= 1 then local pid = getPlayerGUID(cid) local distance = getPlayerSkillLevel(cid, SKILL_DISTANCE) doPlayerRemoveItem(cid, 9971, 1) setPlayerStorageValue(cid,11548,os.time()+0) doRemoveCreature(cid) db.query("UPDATE `player_skills` SET `value` = " .. (distance + 1) .. ", `count` = 0 WHERE `skillid` = 4 and `player_id` = " .. pid .. ";") return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "skillshielding") then if getPlayerSkillLevel(cid, SKILL_SHIELD) >= 350 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode ter skill acima de 350.") return TRUE end if(not isPaladin(cid) and not isKnight(cid) and not isDrunou(cid)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Somente Paladins, Knights e Drunous podem comprar skill de shield.") return TRUE end if getPlayerItemCount(cid, 9971) >= 1 then local pid = getPlayerGUID(cid) local shield = getPlayerSkillLevel(cid, SKILL_SHIELD) doPlayerRemoveItem(cid, 9971, 1) setPlayerStorageValue(cid,11548,os.time()+0) doRemoveCreature(cid) db.query("UPDATE `player_skills` SET `value` = " .. (shield + 1) .. ", `count` = 0 WHERE `skillid` = 5 and `player_id` = " .. pid .. ";") return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "magiclevel5") then if getPlayerMagLevel(cid) >= 196 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode ter magic level acima de 200.") return TRUE end if(not isSorcerer(cid) and not isDruid(cid) and not isInfernalist(cid)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Somente Sorcerers, Druids e Infernalists podem comprar magic level.") return TRUE end if getPlayerItemCount(cid, 9971) >= 15 then local pid = getPlayerGUID(cid) doPlayerRemoveItem(cid, 9971, 15) setPlayerStorageValue(cid,11548,os.time()+0) doRemoveCreature(cid) db.query("UPDATE `players` SET `maglevel` = `maglevel` + 5 WHERE `id` = "..pid) return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "skillclub10") then if getPlayerSkillLevel(cid, SKILL_CLUB) >= 341 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode ter skill acima de 350.") return TRUE end if not isDrunou(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Somente Drunous podem comprar skill de club.") return TRUE end if getPlayerItemCount(cid, 9971) >= 10 then local pid = getPlayerGUID(cid) local club = getPlayerSkillLevel(cid, SKILL_CLUB) doPlayerRemoveItem(cid, 9971, 10) setPlayerStorageValue(cid,11548,os.time()+0) doRemoveCreature(cid) db.query("UPDATE `player_skills` SET `value` = " .. (club + 10) .. ", `count` = 0 WHERE `skillid` = 1 and `player_id` = " .. pid .. ";") return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "skillsword10") then if getPlayerSkillLevel(cid, SKILL_SWORD) >= 341 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode ter skill acima de 350.") return TRUE end if not isKnight(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Somente Knights podem comprar skill de sword.") return TRUE end if getPlayerItemCount(cid, 9971) >= 10 then local pid = getPlayerGUID(cid) local sword = getPlayerSkillLevel(cid, SKILL_SWORD) doPlayerRemoveItem(cid, 9971, 10) setPlayerStorageValue(cid,11548,os.time()+0) doRemoveCreature(cid) db.query("UPDATE `player_skills` SET `value` = " .. (sword + 10) .. ", `count` = 0 WHERE `skillid` = 2 and `player_id` = " .. pid .. ";") return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "skillaxe10") then if getPlayerSkillLevel(cid, SKILL_AXE) >= 341 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode ter skill acima de 350.") return TRUE end if not isKnight(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Somente Knights podem comprar skill de axe.") return TRUE end if getPlayerItemCount(cid, 9971) >= 10 then local pid = getPlayerGUID(cid) local axe = getPlayerSkillLevel(cid, SKILL_AXE) doPlayerRemoveItem(cid, 9971, 10) setPlayerStorageValue(cid,11548,os.time()+0) doRemoveCreature(cid) db.query("UPDATE `player_skills` SET `value` = " .. (axe + 10) .. ", `count` = 0 WHERE `skillid` = 3 and `player_id` = " .. pid .. ";") return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "skilldistance10") then if getPlayerSkillLevel(cid, SKILL_DISTANCE) >= 341 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode ter skill acima de 350.") return TRUE end if not isPaladin(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Somente Paladins podem comprar skill de distance.") return TRUE end if getPlayerItemCount(cid, 9971) >= 10 then local pid = getPlayerGUID(cid) local distance = getPlayerSkillLevel(cid, SKILL_DISTANCE) doPlayerRemoveItem(cid, 9971, 10) setPlayerStorageValue(cid,11548,os.time()+0) doRemoveCreature(cid) db.query("UPDATE `player_skills` SET `value` = " .. (distance + 10) .. ", `count` = 0 WHERE `skillid` = 4 and `player_id` = " .. pid .. ";") return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "skillshielding10") then if getPlayerSkillLevel(cid, SKILL_SHIELD) >= 341 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode ter skill acima de 350.") return TRUE end if(not isPaladin(cid) and not isKnight(cid) and not isDrunou(cid)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Somente Paladins, Knights e Drunous podem comprar skill de shield.") return TRUE end if getPlayerItemCount(cid, 9971) >= 10 then local pid = getPlayerGUID(cid) local shield = getPlayerSkillLevel(cid, SKILL_SHIELD) doPlayerRemoveItem(cid, 9971, 10) setPlayerStorageValue(cid,11548,os.time()+0) doRemoveCreature(cid) db.query("UPDATE `player_skills` SET `value` = " .. (shield + 10) .. ", `count` = 0 WHERE `skillid` = 5 and `player_id` = " .. pid .. ";") return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "removerfrag") then if getPlayerItemCount(cid, 2160) >= 10 then doPlayerRemoveItem(cid, 2160, 100000) db.query("UPDATE `killers` SET `unjustified` = 0 WHERE `unjustified` = 1 AND `id` IN (SELECT `kill_id` FROM `player_killers` WHERE `player_id` = " .. getPlayerGUID(cid) .. ") LIMIT 1;") setPlayerStorageValue(cid,11548,os.time()+30) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns você removeu seus frags com sucesso.") return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") return TRUE end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- if(param == "novark") then if getPlayerItemCount(cid, 9971) >= 10 then setPlayerRecoveryKey(cid) doPlayerRemoveItem(cid, 9971, 10) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "ATENÇÃO! Esta será a única vez que sua RK será mostrada, portanto, anote-a em um lugar seguro fora de seu computador!\n" .. setPlayerRecoveryKey(cid) .. "") setPlayerStorageValue(cid,11548,os.time()+30) return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não possui a quantidade necessária para comprar.") end end return TRUE end Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  3. .Qual servidor ou website você utiliza como base? Baiak Wake Qual o motivo deste tópico? Está surgindo algum erro? Se sim coloque-o aqui. Estou com problema no meu systema de vip, ele está todo perfeito em relação adicionar [VIP] name, e Tirar [VIP] quando acabar a vip, só estou com problema em uma scripts que peguei de checkvip, ela server como uma proteção de criações de chares exemplo se meu nick é [VIP] roberto, se eu criar Roberto, a scripts vai perdir para Mudar de Nome através de !unlock Name Só se eu criar o char Roberto e não logar, o char dar erro na distro, e depois que der SS ou servidor reiniciar, consigo entrar no char e andar normalmente. no caso eu queria que esta scripts desse uma opção de mudança de 1 minuto, se caso ele não mudasse de nome e passe 1minuto se tivesse off ou não, o char seria deletado @Storm Data/Creaturescripts/Checkname.lua local tempo = 30 -- em segundos para kickar o player function onLogin(cid) if isVipName(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Your name is invalid. Use !unlock NewCharName to unlock your char name. You will be kicked in ".. tempo .." seconds.") doCreatureSetNoMove(cid, true) addEvent(doRemoveCreature, tempo*1000, cid, true) end return true end function isVipName(cid) local list = {} local query = db.getResult("SELECT `name` FROM `players` WHERE `group_id` < 2 ") if (query:getID() == -1) then return true end repeat local name = query:getDataString("name") table.insert(list, name) until not query:next() for _, names in pairs(list) do if names:find("[VIP]") then names = names:gsub("%[VIP] ", "") if getPlayerName(cid) == names then return true end end end query:free() return false end Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  4. Olá Tks, Estou com um problema, adicionei uma nova moeda no meu servidor (source), porém o change gold não está funcionando. local config = { [ITEM_GOLD_COIN] = {changeTo = ITEM_PLATINUM_COIN}, [ITEM_PLATINUM_COIN] = {changeBack = ITEM_GOLD_COIN, changeTo = ITEM_CRYSTAL_COIN}, [ITEM_CRYSTAL_COIN] = {changeBack = ITEM_PLATINUM_COIN, changeTo = ITEM_GOLDEN_BAR}, [ITEM_GOLDEN_BAR] = {changeBack = ITEM_CRYSTAL_COIN} } function onUse(player, item, fromPosition, target, toPosition, isHotkey) local coin = config[item:getId()] if coin.changeTo and item.type == 100 then item:remove() player:addItem(coin.changeTo, 1) elseif coin.changeBack then item:remove(1) player:addItem(coin.changeBack, 100) else return false end return true end
  5. .tenho um servidor que estou com sistema de reset sem storage, e estou tentando criar magias de acordo com o reset do player, consegui criar a magia mas quando o player com "1" resets solta a magia não sai nada alguem poderia me ajudar por favor ? Esta é a magia me ajudem plizzz
  6. Bom dia pessoal, olha eu de novo ai :D Então, dessa vez irei pedir uma ajuda, pois ja tentei de tudo. tenho um evento chamado war Arena, nele são divididos 2 times(vermelho, azul), e o nome ja diz war arena, entao o objetivo é matar o outro time. bem... até ai tudo bem, o evento esta em perfeito estado, mas sendo que se eu entrar com 1 player no evento, ele fica preso la dentro, pois o sistema não reconhece que ele sobrou na war, pois não matou ninguém. gostaria de pedir para implementar no meu script uma função para anular o evento quando tiver 1 ou 0 players na sala de espera. abaixo o script globalevents: local configWar = { MessageType = MESSAGE_INFO_DESCR, wallPos = {x=512,y=846,z=5,stackpos=1}, wallPos1 = {x=513,y=846,z=5,stackpos=1}, wallPos2 = {x=513,y=847,z=5,stackpos=1}, wallPos3 = {x=513,y=848,z=5,stackpos=1}, wallPos4 = {x=513,y=849,z=5,stackpos=1}, wallPos5 = {x=512,y=849,z=5,stackpos=1}, AccessMessage = "Only Gods and Gamemasters can execute an event!", FirstMessage = "Event Notice!", SecondMessage = "War Arena has been opened to join go through the portal on the top floor of depot.", ThirdMessage = "War Arena will begin in 5 minutes!", FourthMessage = "War Arena will begin in 3 minutes!", ClosingMessage = "War Arena will close and begin in 1 minute!", CloseMessage = "War Arena portal has closed and the event has begun!" } local waitingRoomFrompos = {x=617, y=625, z=7, stackpos=253} local waitingRoomTopos = {x=652, y=654, z=7, stackpos=253} --Functions for war. function EventNotice11(cid) addEvent(EventNotice21,5000,cid) doBroadcastMessage(configWar.FirstMessage,configWar.MessageType) end function EventNotice21(cid) addEvent(EventNotice31,10*1000,cid) doBroadcastMessage(configWar.SecondMessage,configWar.MessageType) end function EventNotice31(cid) addEvent(EventNotice41,120*1000,cid) doBroadcastMessage(configWar.ThirdMessage,configWar.MessageType) end function EventNotice41(cid) addEvent(EventNotice51,120*1000,cid) doBroadcastMessage(configWar.FourthMessage,configWar.MessageType) end function EventNotice51(cid) addEvent(EventNotice61,60*1000,cid) doBroadcastMessage(configWar.ClosingMessage,configWar.MessageType) end function EventNotice61(cid) doCreateItem(1600,1,configWar.wallPos) doCreateItem(1595,1,configWar.wallPos1) doCreateItem(1596,1,configWar.wallPos2) doCreateItem(1596,1,configWar.wallPos3) doCreateItem(1601,1,configWar.wallPos4) doCreateItem(1600,1,configWar.wallPos5) doBroadcastMessage(configWar.CloseMessage,configWar.MessageType) addEvent(BeginWAR,5*1000,cid) end --Start for War Event function BeginWAR(cid) for _, pid in ipairs(getPlayersOnline()) do if isInArea(getPlayerPosition(pid), waitingRoomFrompos, waitingRoomTopos) then doTeleportThing(pid, {x=635,y=614,z=7,stackpos=1}, false) end end end function SetEventWAR(cid) setGlobalStorageValue(1005, 0)--WAR end local WAR = 0 local eventType = getGlobalStorageValue(1005) function onThink(cid, item, fromPosition, toPosition) if getGlobalStorageValue(1005) <= WAR then doRemoveItem(getThingFromPos(configWar.wallPos).uid,1) doRemoveItem(getThingFromPos(configWar.wallPos1).uid,1) doRemoveItem(getThingFromPos(configWar.wallPos2).uid,1) doRemoveItem(getThingFromPos(configWar.wallPos3).uid,1) doRemoveItem(getThingFromPos(configWar.wallPos4).uid,1) doRemoveItem(getThingFromPos(configWar.wallPos5).uid,1) setGlobalStorageValue(1005, 1) setGlobalStorageValue(2001, 0) setGlobalStorageValue(2002, 0) addEvent(EventNotice11,2000,cid) setGlobalStorageValue(28000, os.time(t)) else doBroadcastMessage('Event System:\nEvent System Error, Please notify staff.') end return 1 end
  7. ola pessoal. estou editando o meu sistema de torneio. ele esta funcionando tudo certo 100%. so tem um unico problema. o torneio tem um tempo de 10 minutos para cada batalha 1x1, se passa esse tempo e não houver campeão os 2 players vão ser teleportados para fora do torneio. e aiii que ta o bug. quando isso acontece os 2 players ficam bugado, e se eles morrer para monstros ou para players eles ficam imortal e não morre, e aparece esse erro abaixo na distro: caso alguem possa me ajudar agradeço muito!. doTeleportThing(tid, TOURNEY_CONFIG.ARENA.FIGHT[1]) doPlayerSendTextMessage(tid, MESSAGE_INFO_DESCR, "IT'S TIME!") doRemovePlayerTourney(tid) else doRemovePlayerTourney(tid) if #getPlayersTourneyByLevel(t.level) == 0 then check_again = true break end end end end elseif #tourney_players >= TOURNEY_CONFIG.GROUP then g = doPlayersGroups(tourney_players, TOURNEY_CONFIG.GROUP)[1] for i = 1, TOURNEY_CONFIG.GROUP do if isPlayer(g) then if (not isInArray(TOURNEY_CONFIG.NOT_ALLOWED, getCreatureSkullType(g))) then doCreatureSetPartyShield(g, (shield == SHIELD_YELLOW and SHIELD_BLUE or SHIELD_YELLOW)) doTeleportThing(g, TOURNEY_CONFIG.ARENA.FIGHT[1]) doPlayerSendTextMessage(g, MESSAGE_INFO_DESCR, "IT'S TIME!") doRemovePlayerTourney(g) else doRemovePlayerTourney(g) if #getPlayersTourneyByLevel(t.level) == 0 then check_again = true break end end end end doSendMagicEffect(TOURNEY_CONFIG.ARENA.FIGHT[1], CONST_ME_TELEPORT) else for i = 1, #players do doTeleportThing(players, TOURNEY_CONFIG.ARENA.EXIT) doPlayerSendTextMessage(players, MESSAGE_STATUS_CONSOLE_ORANGE, "Voc� n�o tem mais oponentes para lutar.") doCreatureSetPartyShield(players, SHIELD_NONE) end doSendMagicEffect(TOURNEY_CONFIG.ARENA.EXIT, CONST_ME_TELEPORT) end end if check_again == true then local new_players = getPlayersInArea(TOURNEY_CONFIG.ARENA.AREA[1], TOURNEY_CONFIG.ARENA.AREA[2]) for i = 1, #new_players do doTeleportThing(new_players, TOURNEY_CONFIG.ARENA.EXIT) doPlayerSendTextMessage(new_players, MESSAGE_STATUS_CONSOLE_ORANGE, "Voc� n�o tem mais oponentes para lutar.") doCreatureSetPartyShield(new_players, SHIELD_NONE) end doSendMagicEffect(TOURNEY_CONFIG.ARENA.EXIT, CONST_ME_TELEPORT) end return true end:onKill Description: [string "LuaInterface::loadBuffer"]:27: attempt to index local 't' (a nil value) stack traceback: [string "LuaInterface::loadBuffer"]:27: in function <[string "LuaInterface::loadBuffer"]:2>
  8. TFS EXCLUSIVE EDTION 0.5 tentei varios scripts do forum e nenhum funciona, o problema é que também não aparece erros na distro, se alguem puder me ajudar a fazer esse script funcionar agradeço
  9. .Qual servidor ou website você utiliza como base? TFS 0.36 Qual o motivo deste tópico? Amuleto com error de charge e o look fecha o tibia Está surgindo algum erro? Se sim coloque-o aqui. Você tem o código disponível? Se tiver publique-o aqui: Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  10. .Qual servidor ou website você utiliza como base? Poke Skyfall Qual o motivo deste tópico? scripting que teleporta o player ao clica no items Está surgindo algum erro? Se sim coloque-o aqui. [09/07/2020 11:37:31] [Error - LuaScriptInterface::loadFile] data/actions/scripts/Corda.lua:3: '(' expected near 'onUse' [09/07/2020 11:37:31] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/Corda.lua) [09/07/2020 11:37:31] data/actions/scripts/Corda.lua:3: '(' expected near 'onUse' Você tem o código disponível? Se tiver publique-o aqui: local newpos= {x = 1153, y = 954, z = 7}, -- posicao que o player deve ir ao clica na corda -- function onUse(cid, newPosition, toPosition) getPlayerStorage(cid,12345) =1 then doPlayerTeleportThing(cid, newpos), doplayerItemsTeleportitems(cid,12716) then -- 12716 id do items -- end end Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  11. .Qual servidor ou website você utiliza como base? Baiak Wake Pasta/Libs: if not RealCastle then RealCastle = { openStorage = 722374, guildStorage = 722375, dateStorages = {722376,722377,722378} } function RealCastle:isInside(cid) local thingPos = getThingPos(cid) local areas = { {{x = 1921, y = 484, z = 6}, {x = 2098, y = 607, z = 6}}, {{x = 2187, y = 396, z = 6}, {x = 2264, y = 511, z = 6}}, {{x = 2442, y = 416, z = 4}, {x = 2604, y = 521, z = 4}}, {{x = 2446, y = 391, z = 5}, {x = 2619, y = 543, z = 5}}, {{x = 2091, y = 449, z = 6}, {x = 2166, y = 508, z = 6}}, {{x = 1907, y = 606, z = 6}, {x = 2099, y = 735, z = 6}}, {{x = 2653, y = 442, z = 6}, {x = 2741, y = 559, z = 6}}, {{x = 2653, y = 442, z = 5}, {x = 2741, y = 559, z = 5}}, {{x = 2653, y = 442, z = 4}, {x = 2741, y = 559, z = 5}}, {{x = 2277, y = 613, z = 7}, {x = 2462, y = 716, z = 7}}, {{x = 2277, y = 613, z = 6}, {x = 2462, y = 716, z = 6}}, {{x = 2277, y = 613, z = 5}, {x = 2462, y = 716, z = 5}}, {{x = 2277, y = 613, z = 4}, {x = 2462, y = 716, z = 4}}, {{x = 2242, y = 723, z = 6}, {x = 2442, y = 894, z = 6}}, {{x = 2255, y = 804, z = 7}, {x = 2282, y = 832, z = 7}}, {{x = 2103, y = 638, z = 6}, {x = 2262, y = 740, z = 6}}, {{x = 2103, y = 638, z = 7}, {x = 2262, y = 740, z = 7}}, {{x = 1899, y = 590, z = 7}, {x = 2102, y = 730, z = 7}}, {{x = 2130, y = 781, z = 7}, {x = 2210, y = 923, z = 7}}, {{x = 2240, y = 835, z = 7}, {x = 2304, y = 916, z = 7}}, {{x = 1927, y = 739, z = 5}, {x = 2043, y = 927, z = 5}} } for _, area in next, areas do if isInRange(thingPos, area[1], area[2]) then return true end end if (thingPos.x >= 2288 and thingPos.x <= 2364 and thingPos.y >= 433 and thingPos.y <= 509) or (thingPos.x >= 2148 and thingPos.x <= 2189 and thingPos.y >= 641 and thingPos.y <= 679) or (thingPos.x >= 2229 and thingPos.x <= 622 and thingPos.y >= 2320 and thingPos.y <= 704) then return true end return false end function RealCastle:getAllPlayers() local players = {} for _, pid in next, getPlayersOnline() do if self:isInside(pid) then table.insert(players, pid) end end return players end function RealCastle:removePlayers(messageType, message) local players = self:getAllPlayers() for _, pid in next, players do doPlayerSetPzLocked(pid, false) doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid))) if type(messageType) == "string" and messageType == "popup" then doPlayerPopupFYI(pid, message) else doPlayerSendTextMessage(pid, messageType, message) end end end function RealCastle:open() setGlobalStorageValue(self.openStorage, 1) setGlobalStorageValue(self.guildStorage, EMPTY_STORAGE) self:removePlayers("popup", "[War Castle] O domínio de sua guild pelo castelo acabou e você foi trazido a seu Templo.") end function RealCastle:close() setGlobalStorageValue(self.openStorage, EMPTY_STORAGE) local tomorrow = getTomorrowsDate() local tomorrowString = tomorrow[1].."/"..tomorrow[2].."/"..tomorrow[3] for i = 1, 3 do setGlobalStorageValue(self.dateStorages, tomorrow) end local guild_id = getGlobalStorageValue(self.guildStorage) local guild_name = "" if guild_id ~= EMPTY_STORAGE then guild_name = getGuildNameByID(guild_id) self:removePlayers(MESSAGE_STATUS_CONSOLE_ORANGE, "[War Castle] A batalha pelo domínio do castelo se encerrou com vitória da guild "..guild_name.." e você foi trazido a seu Templo.") doBroadcastMessage("[War Castle] A batalha terminou e a guild vencedora foi "..guild_name.."! Todos os jogadores dessa guild agora podem aproveitar o castelo até amanhã às 21:00!") else guild_name = "Castelo LIVRE" self:removePlayers(MESSAGE_STATUS_CONSOLE_ORANGE, "[War Castle] A batalha pelo domínio do castelo se encerrou e "..guild_name.." ficou com o domínio. Você foi trazido a seu Templo.") doBroadcastMessage("[War Castle] A batalha terminou e nenhuma guild conseguiu dominar o castelo! Amanhã às 21:00 haverá uma nova batalha!") end db.query("DELETE FROM real_castle WHERE world_id = '"..getWorldId().."'") db.query("INSERT INTO real_castle (guild_name, guild_id, tomorrow, world_id) VALUES ('"..guild_name.."', '"..guild_id.."', '"..tomorrowString.."', '"..getWorldId().."')") doSaveServer() end function RealCastle:broadcast(message) for _, pid in next, self:getAllPlayers() do doPlayerSendTextMessage(pid, MESSAGE_STATUS_WARNING, message) end end function RealCastle:domain(cid) setGlobalStorageValue(self.guildStorage, getPlayerGuildId(cid)) self:broadcast("[War Castle] O jogador ["..getPlayerName(cid).."] da guild ["..getPlayerGuildName(cid).."] dominou o castelo! As outras guilds têm até às 21:59 para conseguir tirar o domínio deles, não desistam!") end function RealCastle:isDominating(cid) return getPlayerGuildId(cid) == getGlobalStorageValue(self.guildStorage) end function RealCastle:isOpen() return getGlobalStorageValue(self.openStorage) ~= EMPTY_STORAGE end function RealCastle:checkLogin(cid) if self:isInside(cid) then if not self:isDominating(cid) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doPlayerPopupFYI(cid, "[War Castle] Você foi removido do castelo pois ele não pertence mais a sua guild.") end end return true end function RealCastle:announce(message, times) if times == 0 then return true end doBroadcastMessage(message) addEvent(self.announce, 5*60000 , self, message, (times - 1)) end function RealCastle:checkOnTime() if self:isOpen() then self:close() else self:open() self:announce("[War Castle] O acesso à área de dominar do castelo está liberado até às 22:00. Boa sorte a todas as guilds!", 11) for i = 1, 4 do addEvent(doBroadcastMessage, 500000 * i, "[War Castle] O acesso à área de dominar do castelo está liberado até as 22:00. Boa sorte a todas as guilds!") end end return true end function RealCastle:checkOnUse(cid, item, frompos, item2, topos) if item.uid == 61466 then local guild_id = getGlobalStorageValue(self.guildStorage) local guild = guild_id > 1 and "a guild "..getGuildNameByID(guild_id).." possui o domínio" or "nenhuma guild possui o domínio do castelo" local time = getGlobalStorageValue(self.dateStorages[1]).."/"..getGlobalStorageValue(self.dateStorages[2]).."/"..getGlobalStorageValue(self.dateStorages[3]) local domain = self:isOpen() and "as guilds estão batalhando pelo domínio do castelo" or guild local msg = " ----------[War Castle]---------\n\n\nAtualmente "..domain..".\n\nPróxima batalha: "..time.." às 21:00." doShowTextDialog(cid,8977,msg) return true end if not self:isOpen() then doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid))) return true end if not self:isDominating(cid) then self:domain(cid) doSendMagicEffect(getThingPos(cid), CONST_ME_CRAPS) else doSendMagicEffect(cid, item, frompos, item2, topos, CONST_ME_POFF) doPlayerSay(cid,"[War Castle] Sua guild já está com o domínio do castelo!", TALKTYPE_ORANGE_1) end return true end function RealCastle:checkStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if item.actionid == 61465 then if self:isOpen() then if getPlayerGuildId(cid) > 0 then if getPlayerLevel(cid) >= 200 then doSendMagicEffect(getThingPos(cid), 13) return true else doTeleportThing(cid, fromPosition) doSendMagicEffect(fromPosition, CONST_ME_POFF) doPlayerSay(cid,"[War Castle] Somente jogadores com level 200 ou mais podem batalhar pelo castelo!", TALKTYPE_ORANGE_1) end else doTeleportThing(cid, fromPosition) doSendMagicEffect(fromPosition, CONST_ME_POFF) doPlayerSay(cid,"[War Castle] Somente jogadores com guild podem batalhar pelo castelo!", TALKTYPE_ORANGE_1) end else doTeleportThing(cid, fromPosition) doSendMagicEffect(fromPosition, CONST_ME_POFF) doPlayerSay(cid,"[War Castle] O castelo não está aberto para invasões!", TALKTYPE_ORANGE_1) end elseif item.actionid == 61466 then if self:isDominating(cid) then doSendMagicEffect(getThingPos(cid), 14) doPlayerSay(cid,"Bem vindo ao War Castle!", TALKTYPE_ORANGE_1) return true end if self:isOpen() then doTeleportThing(cid, fromPosition) doSendMagicEffect(fromPosition, CONST_ME_POFF) doPlayerSay(cid,"[War Castle] Não é permitido entrar no castelo enquanto as guilds estão batalhando pelo seu domínio.", TALKTYPE_ORANGE_1) else local guild_id = getGlobalStorageValue(self.guildStorage) doTeleportThing(cid, {x = toPosition.x, y = toPosition.y + 2, z = toPosition.z}) doSendMagicEffect({x = toPosition.x, y = toPosition.y + 2, z = toPosition.z}, CONST_ME_FIREAREA) doPlayerSay(cid, guild_id ~= EMPTY_STORAGE and "[War Castle] Somente membros da guild ["..getGuildNameByID(guild_id).."] podem entrar." or "[War Castle] Somente membros da guild dominante podem entrar.", TALKTYPE_ORANGE_1) end end return true end end Pasta/Globalevents/realCastleClose: function onTime() RealCastle:close() return true end Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  12. .Qual servidor ou website você utiliza como base? otserv global 12x TFS 1.3 Qual o motivo deste tópico? To com esse problema nesse script. A ideia é qnd o player morrer, ele vai ser teleportado pro templo com vida e mana cheia e nao vai perder lvl nem bless. Oq ta acontecendo é q o player ta sendo teleportado pro templo qnd morre, ta enchendo a vida, mas a mana nao ta enchendo. E fica dando esse error na distro : Está surgindo algum erro? Se sim coloque-o aqui. Você tem o código disponível? Se tiver publique-o aqui: function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if isPlayer(cid) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doCreatureAddHealth(cid, getCreatureMaxHealth(cid), 65535, 256, true) doCreatureAddMana(cid, getCreatureMaxMana(cid) return false end return true end No creaturescripts.xml ficou assim : <event type="preparedeath" name="DeadTP" script="tp_morte.lua"/> e adicionei no loginevents.lua tb "DeadTP",
  13. Estou com um problema no boss Tarbaz da Ferumbras Quest, pois quando algum player não consegue matar em tempo, e é teleportado pra fora, gera este erro no log. Parece que o problema está nesta função que retira os players da sala e limpa ela. addEvent(clearForgotten, 30 * 1 * 1000, Position(33446, 32833, 11), Position(33515, 32875, 12), Position(33319, 32318, 13)) item:transform(9826) elseif item.itemid == 9826 then item:transform(9825) end return true end Alguém sabe ajudar? ultilizo as ultimas versões do OTX.
  14. Então pessoal, venho aqui mais uma vez para pedir uma ajuda e espero conseguir a atenção de um de vcs. bom, estou com um problema sobre as charges dos meus amuletos, meu mapa tem um amuleto chamado Elven Amulet e Star Amulet, eu queria esses dois itens com 1000 cargas, mas eu mudo tudo e eles só ficam com 100. o que eu posso fazer para eles ficarem com 1000 cargas? <item id="2131" article="a" name="star amulet"> <attribute key="weight" value="270" /> <attribute key="slotType" value="necklace" /> <attribute key="charges" value="1000" /> <attribute key="showcharges" value="1" /> <attribute key="absorbPercentEarth" value="90" /> <attribute key="showattributes" value="1" /> <item id="2198" article="an" name="elven amulet"> <attribute key="weight" value="270" /> <attribute key="slotType" value="necklace" /> <attribute key="charges" value="1000" /> <attribute key="showcharges" value="1" /> <attribute key="absorbPercentAll" value="5" /> <attribute key="showattributes" value="1" /> ahhh ja ia me esquecendo... na verdade pra conseguir esses itens eu fiz um Shopping de itens para ser comprado com um Click, gastando event tokens, ou seja, o player entra nessa loja , clica no equipamento que ele quer, gasta o event tokens e o item vai para a bolsa dele, mas os amuletos vem com 100 cargas tambem. o SSA tem 15 cargas, eu compro e ele vem certinho 15 cargas. irei postar o script da compra tambem. function onUse(cid, item) local item = 2131 --El Item que dará local iten = 9020 --El Item que quitará local cant = 1 --La cantidad de Items que dará local camt = 25 --La cantidad de Items que quitará local texto = "Você comprou star amulet. Custou 25 Tokens." --El texto que saldrá cuando obtengas el objeto local texto2 = "Tokens insuficientes. Precisa de 25 Tokens para comprar star amulet." --El texto que saldrá si NO tienes los items necesarios local efecto = 15 --El efecto que saldrá cuando obtengas el objeto (solo pon numeros entre el 0 y el 68) if doPlayerRemoveItem(cid,iten,camt) == TRUE then doPlayerSendTextMessage(cid,22,texto) doPlayerAddItem(cid,item,cant) doSendMagicEffect(getCreaturePosition(cid), efecto) else doPlayerSendTextMessage(cid,22,texto2) end return TRUE end ____________________________________________________________________ function onUse(cid, item) local item = 2198 --El Item que dará local iten = 9020 --El Item que quitará local cant = 1 --La cantidad de Items que dará local camt = 15 --La cantidad de Items que quitará local texto = "Você comprou elven amulet. Custou 15 Tokens." --El texto que saldrá cuando obtengas el objeto local texto2 = "Tokens insuficientes. Precisa de 15 Tokens para comprar elven amulet." --El texto que saldrá si NO tienes los items necesarios local efecto = 15 --El efecto que saldrá cuando obtengas el objeto (solo pon numeros entre el 0 y el 68) if doPlayerRemoveItem(cid,iten,camt) == TRUE then doPlayerSendTextMessage(cid,22,texto) doPlayerAddItem(cid,item,cant) doSendMagicEffect(getCreaturePosition(cid), efecto) else doPlayerSendTextMessage(cid,22,texto2) end return TRUE end
  15. Galera como posso colocar exausted ou limite de venda de itens nesse npc? ex: apenas vender 50 itens por segundos por aii.. Motivo ( quando um player tem varios itens e vai vender pro npc, gera um lag enorme no server ) Script: 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 local shopModule = ShopModule:new() npcHandler:addModule(shopModule) shopModule:addBuyableItem({'jashin amulet'}, 2138, 20000, 1, 'jashin amulet') shopModule:addSellableItem({'orochimaru tunic'}, 2534, 30000, 'orochimaru tunic') shopModule:addSellableItem({'anbu mask'}, 2518, 30000, 'anbu mask') shopModule:addSellableItem({'anbu armor'}, 2393, 30000, 'anbu armor') shopModule:addSellableItem({'icy legs'}, 2428, 30000, 'icy legs') shopModule:addSellableItem({'elite anbu mask'}, 2451, 30000, 'elite anbu mask') shopModule:addSellableItem({'chouji armor'}, 8852, 30000, 'chouji armor') shopModule:addSellableItem({'dual slayer eletrik'}, 7868, 30000, 'dual slayer eletrik') shopModule:addSellableItem({'haku armor'}, 2422, 30000, 'haku armor') shopModule:addSellableItem({'orochimaru boots'}, 8869, 30000, 'orochimaru boots') shopModule:addSellableItem({'anbu mask'}, 2518, 30000, 'anbu mask') shopModule:addSellableItem({'dark legs'}, 7386, 30000, 'dark legs') shopModule:addSellableItem({'bandana'}, 2381, 30000, 'bandana') shopModule:addSellableItem({'akatsuki tunic'}, 2395, 30000, 'akatsuki tunic') shopModule:addSellableItem({'taijutsu legs'}, 8868, 30000, 'taijutsu legs') shopModule:addSellableItem({'dual slayer'}, 7875, 30000, 'dual slayer') shopModule:addSellableItem({'gaara legs'}, 7457, 30000, 'gaara legs') shopModule:addSellableItem({'sasuke legrobe'}, 7389, 30000, 'sasuke legrobe') shopModule:addSellableItem({'war coat'}, 2141, 30000, 'war coat') shopModule:addSellableItem({'leaft jounin protector'}, 7427, 30000, 'leaft jounin protector') shopModule:addSellableItem({'dual slayer'}, 7867, 30000, 'dual slayer') shopModule:addSellableItem({'dual katana imperium'}, 7379, 30000, 'dual katana imperium') shopModule:addSellableItem({'hyuuga glove'}, 2383, 30000, 'hyuuga glove') shopModule:addSellableItem({'akatsuki boots'}, 2529, 30000, 'akatsuki boots') npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  16. Boa galera estou com um erro em actions.lua do meu servidor tfs 1.3 preciso de ajuda não consegui resolver esse erro. action.lua Erro: Lua Script Error: [Action Interface] data/actions/scripts/tools/shovel.lua:onUse data/actions/lib/actions.lua:322: attempt to index local 'player' (a nil value) stack traceback: [C]: in function '__index' data/actions/lib/actions.lua:322: in function <data/actions/lib/actions. lua:219> Alguém me da essa força tem meu like vlw.
  17. Boa noite Rapaziada! Estou com duvida quanto ao calculo do tempo. Por exemplo oberon timer OberonTimer, os.time() + 20 * 60 * 3600) -- + 20 * 60 * 3600 Quanto tempo é? Gostaria por exemplo que pudesse ser feito de 2 em 2 horas. Grato!
  18. Diga em poucas palavras a base utilizada (Nome do servidor ou nome do website). Ex. TFS 1.3; Base: Otx server Qual erro está surgindo/O que você procura? Talkaction para pegar loot somente ao abrir corpo. A maioria dos scripts de autoloot pegam quando o monstro morre Você tem o código disponível? Se tiver publique-o aqui: Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  19. Eu queria que a minha sword vip, tivesse a chance de bater um 'exori', mas to tendo problemas com isso, botei o codigo aí embaixo, tipo, se eu boto a area igual tem nas spells (AREA_SQUARE1X1), dá o erro: LuaScriptInterface::luaCombatSetArea(). Area not found Aí eu tentei botar que nem o da burst arrow: area = createCombatArea({ {1, 1, 1}, {1, 3, 1}, {1, 1, 1} }) Aí não dá erro, mas, o "exori" funciona como se fosse o target q usasse, meio q "explode" nele. Alguem sabe como posso fazer isso, ou, pelo menos, algum comando que eu comando q eu consiga pegar a posição do player q tá atacando? local combat = createCombatObject() combat:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) combat:setParameter(COMBAT_PARAM_BLOCKARMOR, true) combat:setFormula(COMBAT_FORMULA_SKILL, 0, 0, 1, 0) local combat2 = createCombatObject() local area = createCombatArea(AREA_SQUARE1X1) combat2:setParameter(COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) combat2:setParameter(COMBAT_PARAM_EFFECT, CONST_ME_HITAREA) combat2:setParameter(COMBAT_PARAM_BLOCKARMOR, true) combat2:setArea(area) function onGetFormulaValues2(player, skill, attack, factor) local skillTotal = skill * attack local levelTotal = player:getLevel() / 5 return -(((skillTotal * 0.07) + 7) + (levelTotal)), -(((skillTotal * 0.09) + 11) + (levelTotal)) end setCombatCallback(combat2, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues2") function onUseWeapon(cid, var, player, creature) local chance = math.random(2) if chance <= 2 then doCombat(cid, combat2, var) else doCombat(cid, combat, var) end return true end
  20. Bom, to tentando fazer um script aqui, tá tudo pronto, só to tendo um pequeno problema, o addEvent, não envia esse "me", a storage no caso, e além disso, nada do que eu conheça, lê ela, queria um jeito de usar o spectators pra achar, mas nao consegui adaptar, como fazer? obs: Só vai ter uma pessoa nessa area; Na real, são 32 opções, só simplifiquei essas 2 primeiras, mas todas nesse mesmo esquema; Meu excutavel é o otservbr, 12.31 local hunts = { [1] = {4, "Glooth Anemone", "Glooth Bandit", "Glooth Brigand" }, [2] = {5, "Vicious Squire", "Hero", "Vile Grandmaster", "Renegade Knight" } } function onUse(player, item, fromPosition, target, toPosition, isHotkey, cid) local rangeX = 2 local rangeY = 2 local centerPosition1 = Position((pPos.x+4), pPos.y, pPos.z) local pPos = player:getPosition() local me = player:getStorageValue(991968668) if pPos.y == 5003 then if (player:getStorageValue(991968667) == 1) then addEvent(spawnMonsters1, 100, centerPosition1, rangeX, rangeY, pPos, me) end end end function spawnMonsters1(centerPosition1, rangeX, rangeY, pPos, me) local b = me local hunt = hunts[b] local monstrorand = math.random(2, hunt[1]) local sumon = hunt[monstrorand] local monstros = 5 local spectators, spectator = Game.getSpectators(centerPosition1, false, false, rangeX, rangeX, rangeY, rangeY) if (#spectators - 1) < monstros then Game.createMonster(sumon, centerPosition1) end addEvent(spawnMonsters1, 100, centerPosition1, rangeX, rangeY, pPos) end Print do erro:
  21. Olá, estou tentando adaptar o onlook do script de marriage com npc do @Vodkart pra tambem mostrar o numero de reset do player, cheguei nesse código aqui doPlayerSetSpecialDescription(thing.uid,'\n'..(getPlayerSex(thing.uid) == 0 and 'She' or 'He')..' is married to '..getPartner(thing.uid)'. [Resets: '..math.max(0,(tonumber(getCreatureStorage(thing.uid,378378)) or 0))..']') mas to tendo esse erro [20:39:05.320] [Error - CreatureScript Interface] [20:39:05.324] domodlib('marry_func') [20:39:05.326] function onLook(cid, thing, position, lookDistance) [20:39:05.329] if isPlayer(thing.uid) and isMarried(thing.uid) then [20:39:05.332] doPlayerSetSpecialDescription(thing.uid,'\n'..(getPlayerSex(thing.uid) == 0 and 'She' or 'He')..' is married to '..getPartner(thing.uid)'. [Resets: '..math.max(0,(tonumber(getCreatureStorage(thing.uid,378378)) or 0))..']') [20:39:05.343] end [20:39:05.344] return true [20:39:05.345] end:onLook [20:39:05.347] Description: [20:39:05.348] [string "LuaInterface::loadBuffer"]:4: attempt to call a string value [20:39:05.352] stack traceback: [20:39:05.376] [string "LuaInterface::loadBuffer"]:4: in function <[string "LuaInterface::loadBuffer"]:2> aqui o look da função dele sem alteração minha function onLook(cid, thing, position, lookDistance) if isPlayer(thing.uid) and isMarried(thing.uid) then doPlayerSetSpecialDescription(thing.uid,'.\n'..(getPlayerSex(thing.uid) == 0 and 'She' or 'He')..' is married to '..getPartner(thing.uid)) end return true nvm era um ponto faltando........ era um ponto faltando nvm
  22. Hello.I have problem with bestiary system.I copied all files form other engine. These are:C:\Users\Kuba\Desktop\OTS2\data\modules\scripts\bestiary\bestiary.lua https://justpaste.it/9ix67 <-- File is too big to post here C:\Users\Kuba\Desktop\OTS2\data\modules\scripts\bestiary\assets.lua: https://justpaste.it/8pg6t Ofc in modules.xml : Code: <!-- Bestiary --> <module type="recvbyte" byte="225" script="bestiary/bestiary.lua" /> <module type="recvbyte" byte="226" script="bestiary/bestiary.lua" /> <module type="recvbyte" byte="227" script="bestiary/bestiary.lua" /> <module type="recvbyte" byte="228" script="bestiary/bestiary.lua" /> I also added two tables to my database: https://imgur.com/PACMdlO https://imgur.com/QZIRDJU And next:C:\Users\Kuba\Desktop\OTS2\data\creaturescripts\scripts\others\bestiaryadd.lua: function onKill(cid, target) if (not isMonster(target)) then return false end if getCreatureName(target) == "Chicken" and getPlayerStorageValue(cid, 15001) < 2 then setPlayerStorageValue(cid, 15001, 2) doCreatureSay(cid, "You have added the creature 'Chicken' to your bestiary.", TALKTYPE_ORANGE_1) end return true end and ofc creaturescripts.xml: <!-- Bestiary --> <event type="kill" name="BestiaryOnKill" script="others/bestiaryadd.lua"/> Before I added these of all, I did have empty popup windows Charms and Bestiary in Client, after add this I have these windows the same as Real Tibia but when I kill X monster I didnt have yellow frame on Bestiary Button and dont have unlocked monster also.Can somebody help me with that?Regards
  23. No Servidor DXP quando eu coloco um item no depot do cp, relogo, ele continua lá normal.. mas quando reinicio o servidor o item some do depot. Alguem teria uma solução pra isso?
  24. Boa tarde, galera! Acho que o título já está bem informativo ķkkk Mas É o seguinte, Alguém conseguiria fazer um script que certas vocações, ao morrer, não perdessem mais skill? Mas continuasse a perder level...

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia começando do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer fazer um plano publicitário para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução!

×
×
  • Create New...