
Solutions
-
Wise's post in (Resolvido)(SPELL) Puxando Target Pra Perto Do Player was marked as the answerpulltarget.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> -
Wise's post in (Resolvido)[PEDIDO]Talkaction 8.54 was marked as the answerbuyvoc.lua (data/talkactions/scripts):
local tab = { [1] = {item = {1234, 5}}, -- [vocid] = {item = {itemid, count}}, [2] = {item = {1234, 5}}, [3] = {item = {1234, 5}} } function onSay(cid, words, param, channel) local p = string.explode(param, " ") if(param == "") then return doPlayerSendCancel(cid, "Enter the vocation number that you want to buy.") end if not (tab[tonumber(p[1])]) then return doPlayerSendCancel(cid, "Vocation not found.") end if(p[2]) then return doPlayerSendCancel(cid, "Invalid parameter specified.") end if(tonumber(p[1])) then if(doPlayerRemoveItem(cid, tab[tonumber(p[1])].item[1], tab[tonumber(p[1])].item[2]) == true) then doPlayerSetVocation(cid, tonumber(p[1])) doSendMagicEffect(getThingPos(cid), CONST_ME_GIFT_WRAPS) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You bought a new vocation!!") else doPlayerSendCancel(cid, "You need "..tab[tonumber(p[1])].item[2].." "..getItemNameById(tab[tonumber(p[1])].item[1]).." to buy this vocation.") end end return true end
Tag - talkactions.xml (data/talkactions):
<talkaction words="!buyvoc" event="script" value="buyvoc.lua"/>
Parâmetro de uso:
!buyvoc number
Ex: !buyvoc 3
-
Wise's post in (Resolvido)[PEDIDO] Script comando /servesave was marked as the answerScript de talkaction padrão da maioria dos servidores..
serversave.lua (data/talkactions/scripts):
local savingEvent = 0 function onSay(cid, words, param, channel) if(isNumber(param)) then stopEvent(savingEvent) save(tonumber(param) * 60 * 1000) else doSaveServer() end return true end function save(delay) doSaveServer() if(delay > 0) then savingEvent = addEvent(save, delay, delay) end end
tag - talkactions.xml (data/talkactions):
<talkaction log="yes" words="/serversave" access="4" event="script" value="serversave.lua"/> -
Wise's post in (Resolvido)Delay em scripts was marked as the answerVocê pode usar um addEvent para que execute uma função após um período de tempo estipulado (delay em milissegundos).
Dê uma olhada nesse tutorial, deve te ajudar.
-
Wise's post in (Resolvido)Tile ou teleport que manda o player para sua cidade de origem was marked as the answertowntile.lua (data/movements/scripts):
function onStepIn(cid, item, pos, fromPos) if isPlayer(cid) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você foi teleportado para a cidade onde você reside.") end return true end
tag no movements.xml (data/movements):
<movevent type="StepIn" actionid="ACTIONID" event="script" value="towntile.lua"/> Corrigi 1 erro de auto-complementar do meu corretor que trocou uma palavra importante..pronto, taí.
-
Wise's post in (Resolvido)[Pedido] Script de porta! Alguem poderia me ajudar! was marked as the answerlvldoor.lua (data/actions/scripts):
function onUse(cid, item, fromPos, item2, toPos) lvl = 1000 if getPlayerLevel(cid) >= lvl then doTeleportThing(cid, toPos) doSendMagicEffect(fromPos, CONST_ME_MAGIC_BLUE) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Você precisa de level '..lvl..' para poder abrir a porta.') doSendMagicEffect(fromPos, CONST_ME_POFF) end return true end
Adicione a tag ao arquivo actions.xml (data/actions):
<action actionid="ACTIONID" event="script" value="lvldoor.lua"/> -
Wise's post in (Resolvido)[Pedido] Comando (URGENTE) was marked as the answerportalevento.lua
local appear = {x=123, y=456, z=7, stackpos=253} local destination = {x=123, y=456, z=7, stackpos=253} local gsto = 34567 function onSay(cid, words, param, channel) local e = getTileItemById(appear, 1387) if param == "" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Digite !evento on - para criar um portal para o evento e !evento off - para deletar o portal do evento.") return 1 end if param == "on" and getGlobalStorageValue(gsto) < 1 then setGlobalStorageValue(gsto, 1) doCreateTeleport(1387, destination, appear) broadcastMessage("O portal para a Área de Eventos foi aberto!", MESSAGE_STATUS_WARNING) else doPlayerSendCancel(cid, "Já há um Evento em andamento, desative-o para poder iniciar outro.") end if param == "off" and getGlobalStorageValue(gsto) > 0 and e then setGlobalStorageValue(gsto, -1) doRemoveItem(e.uid, 1) broadcastMessage("O portal para a Área de Eventos foi fechado pelo Administrador!", MESSAGE_STATUS_WARNING) else doPlayerSendCancel(cid, "Não há nenhum Evento em andamento.") end return 1 end
tag (talkactions.xml):
<talkaction log="yes" words="!evento" access="4" event="script" value="portalevento.lua"/>
Parâmetros
!evento on
!evento off
Não testei
local appear = onde o portal será criado
local destination = para onde o portal leva
-
Wise's post in (Resolvido)[Pedido 3x] NPC,Mapa,Distro was marked as the answerPaisagista.xml
<?xml version="1.0" encoding="UTF-8"?> <npc name="Paisagista" walkinterval="0" floorchange="0"> <health now="150" max="150"/> <look type="121" head="0" body="0" legs="0" feet="0" addons="0"/> </npc>
Informante.xml
<?xml version="1.0" encoding="UTF-8"?> <npc name="Informante" script="data/npc/scripts/informante.lua" walkinterval="3000" floorchange="0"> <health now="100" max="100"/> <look type="292" head="0" body="0" legs="0" feet="0"/> <parameters> <parameter key="message_greet" value="Ola |PlayerName|! Bem vindo a loja de points, aqui voce podera comprar coisas com points. Diga {mais}! " /> <parameter key="message_decline" value="Goodbye!" /> <parameter key="module_keywords" value="1" /> <parameter key="keywords" value="mais;premium;ofertas" /> <parameter key="keyword_reply1" value="Quer saber sobre, novas {ofertas} ou {premium} account?" /> <parameter key="keyword_reply2" value="Para comprar premium account diga !buypremium e pronto, lembre-se de que voce comprara premium com dinheiro e nao com points." /> <parameter key="keyword_reply3" value="Novas ofertas surgirao com o tempo." /> </parameters> </npc>
informante.lua (data/npc/scripts):
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:addModule(FocusModule:new())
Sobre o baú móvel e pegável:
Você vai precisar dos programas ObjectBuilder e Item Editor. Após ter feito o download deles e etc:
Item Editor
1) Vá até a o diretório onde você instalou seu ItemEditor e crie uma pasta com a número da versão do seu tibia.spr/tibia.dat do seu client. Por exemplo, se for 8.54, crie uma pasta nomeada por: 854 e cole o .dat e .spr nela.
2) Abra o Item editor, aperte CTRL+O e selecione o items.otb do seu servidor (data/items).
3) Os dados serão carregados..em seguida, procure pelo ID/sprite do item que você deseja alterar os atributos (no lado esquerdo <) e selecione ele.
4) No lado direito > aparecerão todos os dados do item selecionado. Em Attributes, apenas deixe marcadas as opções Unpassable, Block Pathfinder e Has Elevation (dessa forma, eles não poderam pegar o item/movê-lo/passar sobre ele/etc, e o item terá uma elevação caso seja sobreposto em algum outro item).
5) Salve a edição (CTRL+S).
Object Builder
1) Abra o programa, aperte CTRL+O, selecione pela pasta com os arquivos do seu client descompactados e clique em Load.
2) Depois que os dados carregarem, no lado < esquerdo procure onde está "Items", pela sprite/ID do item que você quer alterar as propriedades.
3) Após encontrar o item desejado, clique duas vezes sobre a imagem dele ou clique com o botão direito do mouse e em seguinda clique sobre Edit.
4) Clique na aba Properties e deixe marcadas apenas as opções Has Elevation, Container e Block Pathfinder.
5) Compile (CTRL+S).
O erro é no mapa, você provavelmente não deve ter feito a "entrada" de algumas houses, como indicam os erros no distro.
Após você ter posto todos os sqms do interior da house, você precisa clicar em Select Exit (na aba House Palette) e selecionar o sqm em frente a porta da house, que irá ficar como se um fluído tivesse caído ali. Criando essas "entradas" das houses que o distro acusou como não definidas, você conseguirá resolver os erros.
Dá uma olhada nesse tutorial aqui, talvez ajude.
Não testei nada, mas espero que ajude
-
Wise's post in (Resolvido)Mudar efeito da wand was marked as the answermas que demônio.. local ef, sh, dmg = CONST_ME_SOUND_BLUE, CONST_ANI_SMALLICE, COMBAT_ICEDAMAGE function onUseWeapon(cid, var) min, max = 500, 700 target = getCreatureTarget(cid) if target ~= 0 then doSendDistanceShoot(getThingPos(cid), getThingPos(target), sh) addEvent(doAreaCombatHealth, 100, cid, dmg, getThingPos(target), 0, -min, -max, ef) end return 1 end
-
Wise's post in (Resolvido)Efeito Visual do Outfit was marked as the answerVocê poderá ver o nome do arquivo Lua no fim da tag. Pegue o script dentro dele e poste aqui.
Aliás, você quer removê-lo..então basta retirar as tags que contenham o nome do arquivo Lua desse script do seu creaturescripts.xml
Acredito que o outro que você citou, de adicionar atributos com determinado outfit full, não tem nada a ver com esse outro. Então se você remover, o seu script de atributos irá continuar executando normalmente no seu servidor.
Editei a resposta anterior..basta retirar as tags para desativá-lo, amigo.
E pelo que vi..deve ter uma segunda tag além dessa que citei acima, acredito que deve ter uma expecífica pra função onLogin.
Então..não se esqueça de retirá-la também.