Ir para conteúdo

Wise

Membro
  • Registro em

  • Última visita

Tudo que Wise postou

  1. itemtile.lua (data/movements/scripts): local item = {5432, 1} -- {itemID, count} function onStepIn(cid, item, pos, fromPos) if isPlayer(cid) and getPlayerItemCount(cid, item[1]) < item[2] then doTeleportThing(cid, frompos) doSendMagicEffect(frompos, CONST_ME_POFF) doPlayerSendCancel(cid, "You can't enter without "..item[2].." "..getItemNameById(item[1]).." in your backpack.") end doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end Tag - movements.xml (data/movements): <movevent type="StepIn" actionid="ACTIONID" event="script" value="itemtile.lua"/>
  2. Não precisa, eu mesmo posso fazer isso. Faz o seguinte, pega os meus códigos como base e desenvolve um melhor, pô. Cansei dessas citações insignificantes. Exato, acabei digitando errado.
  3. Círculos que brilham? Explique melhor, não sei do que se trata. Dê mais detalhes ou até imagens, se possível.
  4. @maiconmnt Substitua o action script por esse: -- Coded by Suicide local tab = { boss = "Infernatil", -- "Monster Name" storages = {27771, 27772}, -- {globalstorage, storage} apos = {x=1882, y=2080, z=14}, -- pos x, y, z que o player será teleportado ao puxar a alavanca rangex = {x=123, y=456, z=7}, -- pos x, y, z do sqm do canto superior da área (total) rangey = {x=321, y=654, z=7}, -- pos x, y, z do sqm do canto inferior da área (total) atime = 10 -- tempo máximo de permanência na arena, em minutos } -- xWhiteWolfs functions \/ function isOnSameFloor(fromPos, toPos) return fromPos.z == toPos.z and true or false end function isEven(arg) return arg % 2 == 0 and true or false end function getMiddlePos(fromPos, toPos) if not isOnSameFloor(fromPos, toPos) then return false end local middle = {x = 0, y = 0, z = 0} middle.x = isEven(fromPos.x + toPos.x) and (fromPos.x + toPos.x)/2 or math.floor((fromPos.x + toPos.x)/2) + 1 middle.y = isEven(fromPos.y + toPos.y) and (fromPos.y + toPos.y)/2 or math.floor((fromPos.y + toPos.y)/2) + 1 middle.z = fromPos.z or toPos.z return middle end function clearArea(middlePos, rangex, rangey, mob, player) for i = -rangex, rangex do for j = -rangey, rangey do pos = {x = middlePos.x + i, y = middlePos.y + j, z = middlePos.z} creature = getTopCreature(pos).uid if isMonster(creature) and mob then doSendMagicEffect(getThingPos(creature), 14) addEvent(doCreateMonster, 1000, tab.boss, pos) doRemoveCreature(creature) end if isPlayer(creature) and player then doSendMagicEffect(getThingPos(creature), 14) doTeleportThing(creature, getTownTemplePosition(getPlayerTown(creature))) end end end return true end function getDistanceRadius(fromPos, toPos) if not isOnSameFloor(fromPos, toPos) then return false end local distance = getDistanceBetween(fromPos, toPos) return isEven(distance) and (distance/2) or math.floor(distance/2) + 1 end -- xWhiteWolfs functions /\ function onUse(cid, item, frompos, item2, topos) if getGlobalStorageValue(tab.storage[1]) - os.time() < 1 then setGlobalStorageValue(tab.storages[1], os.time() + (tab.atime * 60)) setPlayerStorageValue(cid, tab.storages[2], 1) local rx = getDistanceRadius(tab.rangex, tab.rangey) addEvent(clearArea, 1000, getMiddlePos(tab.rangex, tab.rangey), rx, rx, true, false) doTeleportThing(cid, tab.apos) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "E que comece o desafio!!") else doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Há alguém fazendo a Quest.") end return true end E obrigado, xWhiteWolf.
  5. Como xWhiteWolf disse, só foi essa falta de desatenção minha, faltou apenas um s em uma checagem de uma função do script dos creature events. Já corrigi. Eu sei cara, vou refazer. @maiconmnt Vou rever tudo, logo edito.
  6. Seguinte, remova todos os scripts relacionados a essa sua arena, pra evitar possíveis erros. Remova também o monstro da arena pelo RME, não vai ser necessário. Adicione esse script ao arquivo da sua alavanca (action script): -- Coded by Suicide local tab = { boss = "Infernatil", -- "Monster Name" storages = {27771, 27772}, -- {globalstorage, storage} apos = {x=1882, y=2080, z=14}, -- pos x, y, z que o player será teleportado ao puxar a alavanca rangex = {x=123, y=456, z=7}, -- pos x, y, z do sqm do canto superior da área (total) rangey = {x=321, y=654, z=7}, -- pos x, y, z do sqm do canto inferior da área (total) atime = 10 -- tempo máximo de permanência na arena, em minutos } -- xWhiteWolfs functions \/ function isOnSameFloor(fromPos, toPos) return fromPos.z == toPos.z and true or false end function isEven(arg) return arg % 2 == 0 and true or false end function getMiddlePos(fromPos, toPos) if not isOnSameFloor(fromPos, toPos) then return false end local middle = {x = 0, y = 0, z = 0} middle.x = isEven(fromPos.x + toPos.x) and (fromPos.x + toPos.x)/2 or math.floor((fromPos.x + toPos.x)/2) + 1 middle.y = isEven(fromPos.y + toPos.y) and (fromPos.y + toPos.y)/2 or math.floor((fromPos.y + toPos.y)/2) + 1 middle.z = fromPos.z or toPos.z return middle end function clearArea(middlePos, rangex, rangey, mob, player) for i = -rangex, rangex do for j = -rangey, rangey do pos = {x = middlePos.x + i, y = middlePos.y + j, z = middlePos.z} creature = getTopCreature(pos).uid if isMonster(creature) and mob then doSendMagicEffect(getThingPos(creature), 14) addEvent(doCreateMonster, 1000, tab.boss, pos) doRemoveCreature(creature) end if isPlayer(creature) and player then doSendMagicEffect(getThingPos(creature), 14) doTeleportThing(creature, getTownTemplePosition(getPlayerTown(creature))) end end end return true end function getDistanceRadius(fromPos, toPos) if not isOnSameFloor(fromPos, toPos) then return false end local distance = getDistanceBetween(fromPos, toPos) return isEven(distance) and (distance/2) or math.floor(distance/2) + 1 end -- xWhiteWolfs functions /\ function onUse(cid, item, frompos, item2, topos) if getGlobalStorageValue(tab.storage[1]) - os.time() < 1 then setGlobalStorageValue(tab.storages[1], os.time() + (tab.atime * 60)) setPlayerStorageValue(cid, tab.storages[2], 1) local rx = getDistanceRadius(tab.rangex, tab.rangey) addEvent(clearArea, 1000, getMiddlePos(tab.rangex, tab.rangey), rx, rx, true, false) doTeleportThing(cid, tab.apos) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "E que comece o desafio!!") else doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Há alguém fazendo a Quest.") end return true end Apenas substitua o que continha no meu outro script dos creature events, por esse script: -- Coded by Suicide local tab = { storages = {27771, 27772, 27773}, -- {globalstorage, storage} boss = "Infernatil", -- "Monster Name" roompos = {x=123, y=456, z=7}, -- pos x, y, z da sala da recompensa que o player será teleportado msgs = {"Você sobreviveu ao BOSS, agora pegue a recompensa.", "Você sobreviveu mais uma vez, porém não vai receber outra recompensa.", "O tempo para matar o BOSS se esgotou, tente novamente."} -- menssagens {"nunca matou o boss antes", "já matou o boss antes", "esgotou o tempo de permanência"} } function onKill(cid, target, lastHit) if getCreatureName(target) == tab.boss and getPlayerStorageValue(cid, tab.storages[2]) > 0 then if getPlayerStorageValue(cid, tab.storages[3]) < 1 then setGlobalStorageValue(tab.storages[1], -1) setPlayerStorageValue(cid, tab.storages[2], -1) setPlayerStorageValue(cid, tab.storages[3], 1) doTeleportThing(cid, tab.roompos) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, tab.msgs[1]) else setGlobalStorageValue(tab.storages[1], -1) setPlayerStorageValue(cid, tab.storages[2], -1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, tab.msgs[2]) end end return true end function onThink(cid) if getGlobalStorageValue(tab.storages[1]) - os.time() < 1 and getPlayerStorageValue(cid, tab.storages[2]) > 0 then setGlobalStorageValue(tab.storages[1], -1) setPlayerStorageValue(cid, tab.storages[2], -1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, tab.msgs[3]) end return true end function onDeath(cid) if getPlayerStorageValue(cid, tab.storages[2]) > 0 then setGlobalStorageValue(tab.storages[1], -1) setPlayerStorageValue(cid, tab.storages[2], -1) end return true end function onLogout(cid) if getPlayerStorageValue(cid, tab.storages[2]) > 0 then setGlobalStorageValue(tab.storages[1], -1) setPlayerStorageValue(cid, tab.storages[2], -1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true end Adicione as tags - creaturescripts.xml (data/creaturescripts): <event type="think" name="ArenaTime" script="survivalarena.lua"/> <event type="kill" name="ArenaKill" script="survivalarena.lua"/> <event type="death" name="ArenaDeath" script="survivalarena.lua"/> <event type="logout" name="ArenaLogout" script="survivalarena.lua"/> E não se esqueça dos registros dos creature events em login.lua (data/creaturescripts/scripts): registerCreatureEvent(cid, "ArenaTime") registerCreatureEvent(cid, "ArenaKill") registerCreatureEvent(cid, "ArenaDeath") Enquanto a configuração da tabela da action script (rangex/rangey), faça como o exemplo (totalmente desproporcional que eu "desenhei"): rangex -- pos do sqm do canto superior da arena; rangey -- pos do sqm do canto inferior da arena. Agradecimentos ao meu professor e grande amigo, xWhiteWolf, pelas 5 funções dele que usei num dos scripts. Não testei, mas tudo coincide. Espero que ajude.
  7. Essas spells foram muito bem feitas, mas não coincidem com o pedido. As que você citou são spells de área, ele pediu uma spell própria pra um target.
  8. pulltarget.lua (data/spells/scripts): function onCastSpell(cid, var) local pos = getClosestFreeTile(cid, getCreaturePosition(cid), false) if not pos then doPlayerSendCancel(cid, "There's no room to pull the target.") end doTeleportThing(variantToNumber(var), pos) doSendMagicEffect(variantToNumber(var), CONST_ME_TELEPORT) return true end Tag - spells.xml (data/scripts): <instant name="INSTANTSPELLNAME" words="SPELLNAME" lvl="100" mana="1000" aggressive="1" range="7" blockwalls="1" needtarget="1" exhaustion="1500" needlearn="0" event="script" value="pulltarget.lua"> <vocation id="1"/> <vocation id="2"/> <vocation id="3"/> <vocation id="4"/> </instant>
  9. cantequip.lua (data/movements/scripts): function onEquip(cid, item, slot) doPlayerSendCancel(cid, "You can't equip this item in that slot.") return false end Tags - movements.xml (data/movements): <movevent type="Equip" itemid="XXXX" slot="hand" event="script" value="cantequip.lua"/> <movevent type="Equip" itemid="XXXX" slot="shield" event="script" value="cantequip.lua"/>
  10. @mateusak Cara, você usou o meu script com um creature event (kill) que teleporta o player à posição da town dele assim que ele mata o boss, então porquê usar também um movement script de portal? Acho que não tem a necessidade de usar um addEvent no action script da alavanca, da pra simplificar com uma storage temporária. De qualquer forma.. @maiconmnt Assim que eu estiver com um pouco mais de tempo, faço o script pra você.
  11. Não vejo erros nos scripts, tudo coincide. Você está usando essa mesma global storage em outros scripts? Tente alterar os valores dos dois tipos de storages (global e storage), colocando os mesmos nas duas tabelas de ambos os scripts. É a única possibilidade aparente..que essa global storage já esteja sendo usada, já que não há erros. Desnecessário, na minha opinião.
  12. Wise postou uma resposta no tópico em Suporte Tibia OTServer
    Esse script não convém com o pedido do membro: Você só pegou o que contém no arquivo do NPC Johnny e colou aqui.
  13. Desculpem, eu li errado. Slot 10/CONST_SLOT_AMMO é o slot da munição, está certo. Basta usar a variável de verificação do membro acima.
  14. Wise postou uma resposta no tópico em Suporte Tibia OTServer
    Só uma observação, faltou retirar a última vírgula pra encerrar a tabela. @jonei Modifiquei o meu script. Enquanto ao seu erro, verifique se você configurou todos os parâmetros das vocações corretamente em seu vocations.xml (data/XML).
  15. Como ele citou que precisa remover certa quantidade em gold bars, provavelmente o servidor dele não deve usar gold coins e sim dollars. Além de que desse modo também precisaria configurar tanto o valor quanto a mensagem, então eu simplifiquei tudo com alguns valores e funções. Acho que isso não convém com o tópico, mas beleza. Vou ver sim.
  16. Você só vai precisar alterar o seu action script e adicionar 3 creature events. Remova o seu script de movement e o portal da arena. Substitua o seu script da alavanca por este (data/actions/scripts): local tab = { storages = {55554, 55553}, -- {globalstorage, storage}, pos = {x=1882, y=2080, z=14}, -- pos x, y, z que o player será teleportado msgs = {"E que comecem os jogos!!", "Há alguém fazendo a Quest."} -- menssagens {"ao puxar", "aguardando"} } function onUse(cid, item, frompos, item2, topos) if getGlobalStorageValue(tab.storages[1]) < 1 then setGlobalStorageValue(tab.storages[1], 1) setPlayerStorageValue(cid, tab.storages[2], 1) doTeleportThing(cid, tab.pos) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, tab.msgs[1]) else doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, tab.msgs[2]) end return true end survivalarena.lua (data/creaturescripts/scripts): local tab = { storages = {55554, 55553}, -- {globalstorage, storage}, boss = "Infernatil", -- "Monster Name", reward = {2160, 50}, -- a recompensa {itemid, count}, msg = "Parabéns, você conseguiu sobreviver e recebeu sua recompensa." } function onKill(cid, target, lastHit) if getCreatureName(target) == tab.boss and getPlayerStorageValue(cid, tab.storages[2]) > 0 then setGlobalStorageValue(tab.storages[1], -1) setPlayerStorageValue(cid, tab.storages[2], -1) doPlayerAddItem(cid, tab.reward[1], tab.reward[2]) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, tab.msg) end return true end function onDeath(cid) if getPlayerStorageValue(cid, tab.storages[2]) > 0 then setGlobalStorageValue(tab.storages[1], -1) setPlayerStorageValue(cid, tab.storages[2], -1) end return true end function onLogout(cid) if getPlayerStorageValue(cid, tab.storages[2]) > 0 then setGlobalStorageValue(tab.storages[1], -1) setPlayerStorageValue(cid, tab.storages[2], -1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true end Adicione os registros dos creature events (kill/death) no arquivo login.lua (data/creaturescripts/scripts): registerCreatureEvent(cid, "ArenaKill") registerCreatureEvent(cid, "ArenaDeath") Tags - creaturescripts.xml (data/creaturescripts): <event type="kill" name="ArenaKill" script="survivalarena.lua"/> <event type="death" name="ArenaDeath" script="survivalarena.lua"/> <event type="logout" name="ArenaLogout" script="survivalarena.lua"/>
  17. É, faria. Fiz isso rápido e nem me incomodei com a questão, até porque não é nada significativa, apenas um detalhe interpretativo. Da pra adaptar de outra forma, no entanto, vai estender um pouco mais o script, não precisando de uma equação pra dar o resultado e com uma verificação desnecessária (na minha opinião). Mas, tudo bem: local price = 5 -- quantidade em crystal coins (gold bars, no caso) function onSay(cid, words, param, channel) if getTilePzInfo(getThingPos(cid)) then if isPlayerPzLocked(cid) then if doPlayerRemoveMoney(cid, price * 10000) then doRemoveCondition(cid, CONDITION_INFIGHT) else doPlayerSendCancel(cid, "You need "..price.." gold bars to remove your battle.") end else doPlayerSendCancel(cid, "You are not in battle.") end else doPlayerSendCancel(cid, "You can only remove your battle in a protection zone.") end return true end PS: desse modo, a talkaction só vai reconhecer que o player tem dinheiro se tiver a determinada quantidade em gold bars (ID 2160), somente em gold bars. Corrigi uma função do script que eu havia confundido antes, li o pedido errado.
  18. rebattle.lua (data/talkactions/scripts): local price = 50000 -- 50k/5cc/5gb function onSay(cid, words, param, channel) if getCreatureCondition(cid, CONDITION_INFIGHT) then if doPlayerRemoveMoney(cid, price) == true then doRemoveCondition(cid, CONDITION_INFIGHT) else doPlayerSendCancel(cid, "You don't have enough money to remove your battle.") end else doPlayerSendCancel(cid, "You are not in battle.") end return true end Tag - talkactions.xml (data/talkactions): <talkaction words="!rebattle" event="script" value="rebattle.lua"/>
  19. Simplifiquei o script citado pelo membro acima. playerspeed.lua (data/creaturescripts/scripts): local ps = { [10] = {speed = 238}, [50] = {speed = 318}, [100] = {speed = 418}, [200] = {speed = 618}, [300] = {speed = 818}, [400] = {speed = 1018}, [500] = {speed = 1218}, [600] = {speed = 1418} } function onAdvance(cid, skill, oldLevel, newLevel) local s, l = getCreatureSpeed(cid), ps[getPlayerLevel(cid)] if skill == SKILL__LEVEL and newLevel >= l then doChangeSpeed(cid, (s - s) + l.speed) end return true end Registro do creature event no login.lua (data/creaturescripts/scripts): registerCreatureEvent(cid, "PlayerSpeed") Tag - creaturescripts.xml (data/creaturescripts): <event type="advance" name="PlayerSpeed" event="script" value="playerspeed.lua"/>
  20. Wise postou uma resposta no tópico em Suporte Tibia OTServer
    @mateusak Talvez ele não tenha encontrado e veio então fazer um pedido, o fórum serve propriamente pra isso. @mazonifelipe Dá uma olhada nesse sistema, veja se te serve de ajuda.
  21. Wise postou uma resposta no tópico em Suporte Tibia OTServer
    Só complementando a resposta do membro acima. Adicione as tags - actions.xml (data/actions): <action itemid="18516;18448;18449;18447;22608;5907;13295;13293;13298;13247;13305;13291;13307;13292;13294;13536;13539;13538;13535;13498;13537;13938;13508;13939;15545;15546;20138" event="script" value="mounts.lua"/> ou (se preferir), as tags de forma mais organizada: <action itemid="18516" script="mounts.lua"/> <action itemid="18448" script="mounts.lua"/> <action itemid="18449" script="mounts.lua"/> <action itemid="18447" script="mounts.lua"/> <action itemid="22608" script="mounts.lua"/> <action itemid="5907" script="mounts.lua"/> <action itemid="13295" script="mounts.lua"/> <action itemid="13293" script="mounts.lua"/> <action itemid="13298" script="mounts.lua"/> <action itemid="13247" script="mounts.lua"/> <action itemid="13305" script="mounts.lua"/> <action itemid="13291" script="mounts.lua"/> <action itemid="13307" script="mounts.lua"/> <action itemid="13292" script="mounts.lua"/> <action itemid="13294" script="mounts.lua"/> <action itemid="13536" script="mounts.lua"/> <action itemid="13539" script="mounts.lua"/> <action itemid="13538" script="mounts.lua"/> <action itemid="13535" script="mounts.lua"/> <action itemid="13498" script="mounts.lua"/> <action itemid="13537" script="mounts.lua"/> <action itemid="13938" script="mounts.lua"/> <action itemid="13508" script="mounts.lua"/> <action itemid="13939" script="mounts.lua"/> <action itemid="15545" script="mounts.lua"/> <action itemid="15546" script="mounts.lua"/> <action itemid="20138" script="mounts.lua"/> mounts.lua foi o nome que eu designei para o arquivo, altere como preferir.
  22. Vou usar os aneis de ID 7697 (anel inativo), 7698 (anel ativo) como exemplo. expring.lua (data/movements/scripts): local tab = { perc = 1.2, -- 1.2 = 20% etime = {30, 15551} -- {seconds, storage} } function onEquip(cid, item, slot) if exhaustion.check(cid, tab.etime[2]) then doPlayerSendCancel(cid, "You must wait "..tab.etime[1].." seconds before inserting/removing the ring again.") return false end if getConfigValue("experienceStages") == "yes" then doPlayerSetExperienceRate(cid, getExperienceStage(getPlayerLevel(cid))*tab.perc) else doPlayerSetExperienceRate(cid, getConfigValue("rateExperience")*tab.perc) end doTransformItem(item.uid, item.itemid + 1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your experience was increased by "..((tab.perc - 1)*100).."%.") doDecayItem(item.uid) return true end function onDeEquip(cid, item, slot) doPlayerSetExperienceRate(cid, 1.0) doTransformItem(item.uid, item.itemid - 1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your experience is back to normal.") exhaustion.set(cid, tab.etime[2], tab.etime[1]) return true end Tags - movements.xml (data/movements): <movevent type="Equip" itemid="7697" slot="ring" event="script" value="expring.lua"/> <movevent type="DeEquip" itemid="7698" slot="ring" event="script" value="expring.lua"/> items.xml Procure pelo ID do anel "inativo"/fora do slot (usei o ID 7697 como exemplo) e substitua o script do item pelos códigos seguintes: <item id="7697" article="a" name="experience ring"> <attribute key="weight" value="80" /> <attribute key="slotType" value="ring" /> <attribute key="transformEquipTo" value="7698" /> <attribute key="stopduration" value="1" /> <attribute key="showduration" value="1" /> </item> Faça o mesmo com o ID do item "ativo"/ao ser posto no slot/equipado (usei o ID 7698 como exemplo): <item id="7698" article="a" name="experience ring"> <attribute key="weight" value="80" /> <attribute key="description" value="This ring increases the experience." /> <attribute key="slotType" value="ring" /> <attribute key="decayTo" value="0" /> <attribute key="transformDeEquipTo" value="7697" /> <attribute key="duration" value="3600" /> <attribute key="showduration" value="1" /> </item> Já enquanto ao exhausted de Equip/DeEquip, coloquei uma checagem pra que ele não equipe diretamente, só após os 30 segundos. Já pra retirar o item, não vejo porquê haver um intervalo.
  23. local pos = { {x=153, y=47, z=7}, } function onThink() for i = 1, #pos do doSendAnimatedText(pos[i], "CasteGuild", TEXTCOLOR_DARKRED) end return true end Altere onde está TEXTCOLOR_DARKRED pela cor desejada, sendo uma variável ou algarismo. Algumas opções: TEXTCOLOR_BLACK = 0 TEXTCOLOR_BLUE = 5 TEXTCOLOR_GREEN = 18 TEXTCOLOR_TEAL = 35 TEXTCOLOR_LIGHTGREEN = 66 TEXTCOLOR_DARKBROWN = 78 TEXTCOLOR_LIGHTBLUE = 89 TEXTCOLOR_DARKPURPLE = 112 TEXTCOLOR_BROWN = 120 TEXTCOLOR_GREY = 129 TEXTCOLOR_DARKRED = 144 TEXTCOLOR_DARKPINK = 152 TEXTCOLOR_PURPLE = 154 TEXTCOLOR_DARKORANGE = 156 TEXTCOLOR_RED = 180 TEXTCOLOR_PINK = 190 TEXTCOLOR_ORANGE = 192 TEXTCOLOR_DARKYELLOW = 205 TEXTCOLOR_YELLOW = 210 TEXTCOLOR_WHITE = 215 TEXTCOLOR_NONE = 255 Se preferir optar por textos animados com cores aleatórias (na minha opinião, fica mais simples): local pos = { {x=153, y=47, z=7}, } function onThink() for i = 1, #pos do doSendAnimatedText(pos[i], "CasteGuild", math.random(1, 255)) end return true end
  24. bctile.lua (data/movements/scripts): function onStepIn(cid, item, pos, frompos) local msg = 'O player '..getCreatureName(cid)..' entrou no castelo secreto.' if isPlayer(cid) then doBroadcastMessage(msg, MESSAGE_STATUS_WARNING) end return true end Tag - movements.xml (data/movements): <movevent type="StepIn" actionid="ACTIONID" event="script" value="bctile.lua"/>
  25. function onUse(cid, item, frompos, item2, topos) local tab = { lvl = 300, msg = "Apenas players até o level "..tab.lvl.." podem entrar." } if getPlayerLevel(cid) <= tab.lvl then doTeleportThing(cid, topos) doSendMagicEffect(frompos, CONST_ME_MAGIC_BLUE) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, tab.msg) doSendMagicEffect(frompos, CONST_ME_POFF) end return true end Isso não convém com o pedido.

Informação Importante

Confirmação de Termo