Solutions
-
Xagah's post in (Resolvido)[ACTION] remover potion flask was marked as the answerBah, desculpe, mas claro que não!
@77mateus77, só remova esta linha:
doPlayerAddItem(cid,potion.emptyId, 1) e boa.
Ajudei? Rep++
-
Xagah's post in (Resolvido)(Gesior) Não consigo acessar conta do admin no site. was marked as the answerO 'xampp' gerencia um banco de dados. A conta que precisa está dentro deste banco.
Assim, vc usará o Xampp para acessar esta conta.
Para isto, abra o 'xampp', depois vá no seu navegador (Google Chrome, Mozilla Firefox, Internet Explorer) e escreva: localhost/phpmyadmin
Irá abrir uma página, parecida com esta baixo. No canto esquerdo da tela, na primeira tabela (se não me engano) tem uma tabela 'accounts'. Abra-a e cole uma 'screeshot' dela para que eu possa vê-la.
Ajudei? Rep++
-
Xagah's post in (Resolvido)Como abrir Client do WoNO no OB (Object Builder) was marked as the answer@SomeBody, faça este
Depois,dentro da pasta do 'Object Builder', vá no arquivo 'versions.xml' e mude:
<version value="854" string="8.54 v3" dat="4B28B89E" spr="4B1E2C87" otb="17"/> Para:
<version value="854" string="8.54 v3" dat="4B28B8A6" spr="4B1E2C87" otb="17"/> E salve.
Aí é só abrir a pasta onde colocou os arquivos que fez o 'download.
-
Xagah's post in (Resolvido)Exp stage não atualiza no site was marked as the answerOlá @77mateus77, boa noite.
Dentro da programação tudo é possível mas, dentro da grande maioria dos 'sites' que conheço esta parte de 'stages' é feita manualmente, ou seja, você precisa inseri um por um.
Não se trata de 'script' de atualização automática.
Ajudei? Rep+!
-
Xagah's post in (Resolvido)Como botar pra quando criar conta receber 5 dias de VIP was marked as the answerVá no arquivo 'config.php' e encontre:
$config['site']['newaccount_premdays'] = 5; Coloque quanto dias precisa.
-
Xagah's post in (Resolvido)[AJUDA] [Error - Npc interface] was marked as the answerCara, vc usa o 'NotePad C++' para abrir arquivos?
Se sim, abra-o, aperte 'CTRL + SHIFT + F' e irá aparecer esta tela. No lugar de Localizar coloque ' keyword_reply1', depois aperte no lugar da seta verde:
Irá aparecer esta tela. Selecione a pasta do seu 'server':
Depois aperte no lugar indicado pela seta 'vermelha'.
Aguarde alguns instantes. O resultado aparecerá desta forma:
Veja nas linhas indicadas em verde se, em algum lugar, está escrito 'keyword_reply1'. Se houver, dê um clique duplo na linha que o 'script' irá abrir. Mude onde houve tal frase para 'keyword_reply' (somente). Salve e teste o server.
Se não funcionar volte.
Ajudei ou esclareci? Rep+
-
Xagah's post in (Resolvido)Editar Esse Script was marked as the answerTenta lá:
function onUse(cid, item, frompos, item2, topos) local wall1 = {x=88, y=188, z=7, stackpos=1} local wall2 = {x=88, y=189, z=7, stackpos=1} local getwall1 = getThingfromPos(wall1) local getwall2 = getThingfromPos(wall2) local tempo = 2 -- temop em minutos aqui para as magic walls voltarem local storage = 45001 -- Escolha um GlobalStorage para armazenas o momento. Um número menor que 65000 local minutos = 2 -- Quantidade de minutos que a alavanca ficará indisponível time = os.time() function remove() local itemA = getThingFromPos(wall1) local itemB = getThingFromPos(wall2) doRemoveItem(itemA.uid, 1) doRemoveItem(itemB.uid, 1) return true end if item.uid == 60010 and (item.itemid == 9825 or item.itemid == 9826) then if (getGlobalStorageValue(storage)+(minutos*60) < time) then setGlobalStorageValue(storage, os.time()) doCreateItem(13017,1,wall1) doCreateItem(13017,1,wall2) doPlayerSendTextMessage(cid,22,"Uma nova passagem foi aberta!") addEvent(remove,tempo*60*1000) if (item.itemid == 9825) then doTransformItem(item.uid,item.itemid+1) else doTransformItem(item.uid,item.itemid-1) end else addEvent(doSendMagicEffect, 550, getPlayerPosition(cid), CONST_ME_POFF) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Esta alavanca poderá voltar a ser utilizada em "..getGlobalStorageValue(storage)+(minutos*60)..".") return false end doPlayerSendTextMessage(cid,22,"Não é possivel realizar esta ação.") end end
-
Xagah's post in (Resolvido)doChangeTypeItem - Desaparece o item was marked as the answerNão Rolou. Tive que criar uma função de Create item tal com tal type.
Mas valeus mesmo assim.
Tópico Resolvido.
-
Xagah's post in (Resolvido)Ajuda com o RME (Tool's no Mapa) was marked as the answerOlá, boa noite.
Aperta a Tecla "S" que aparece as áreas especiais.
Para remover, aperte a tecla "T" que aparecerão as ferramentas. Selecione umas delas, segure a tecla "CTRL" e clique sobre a área.
Faça isto com as demais áreas.
Abraço.
-
Xagah's post in (Resolvido)Dúvidas sobre mapas prontos was marked as the answerSão estes mesmos.
.otbm ==> Todos os sprites e suas posições;
-spawn ==> Local onde os "monsters" irão ficar;
-house ==> Onde serão as casas e onde são as portas;
-
Xagah's post in (Resolvido)[POKETIBIA] Corpo do Pokémon não aparece. was marked as the answerOlá, bom dia.
Colega, entendo muito de OT, mas pouco do Pokemon. Vou falar algumas coisas e, por analogia, faça o mais próximo possível.
Cada pokemón tem o seu próprio arquivo. Você pode encontrar eles na pasta data > monsters.
Abra, neste caso, o do Pinsir, por exemplo. Acredito que deve estar Pinsir.xml.
Dentro do Arquivo vc vai encontrar deste modo:
<?xml version="1.0" encoding="UTF-8"?> <monster name="Deathbringer" nameDescription="deathbringer" race="undead" experience="5100" speed="300" manacost="0"> <health now="10000" max="10000"/> <look type="231" corpse="7349"/> ... Ali onde está <look type=''231" é que vc deve colocar a "roupa" do seu monsters.
O problema é que o seu client não deve estar sendo compatível com o OT que vc baixou. Para saber exatamente no seu faça o download do DatEditor.
Download: DatEditor (Link Direto)
Scan: Scan do Arquivo
Agora vá em File > Open > (selecione seu .spr e seu .dat). Ao lado de Open seleciona a Opcão 760 (apta para o Tibia 8.54).
Vá, ao lado direito inferior, e desça a barra até o final. Vai ser a parte de effects. Vá subindo aos poucos até encontrar o monstro que deseja.
Quando encontrar, clique sobre a imagem dele e pegue a seguinte informação:
Por exemplo, no caso acima eu selecionei o Ferumbras, o LookType dele é 229.
No local marcado em vermelho vc pega o número da "roupa" de seu Pokemón e já era!
Se não der certo volta aqui. Abraço.
-
Xagah's post in (Resolvido)Erro no Script was marked as the answerOlá, bom dia.
A função elseif complementa um if, e este não existe ali.
Insira isto e veja o que dá:
local strg = divulgue local texto = "Curta nossa pagina no Facebook." function onUse(cid, item, frompos, item2, topos) if (getPlayerStorageValue(cid, strg)~= 2) then if getPlayerStorageValue(cid, strg) == 0 then setPlayerStorageValue(cid, strg, 1) doPlayerSendTextMessage(cid, 23, texto) else doPlayerSendCancel(cid, "Voce ja clicou, agora va pegar sua recompensa no NPC Rey.") end else getPlayerStorageValue(cid, strg) == 2 then doPlayerSendCancel(cid, "Voce ja pegou sua recompensa por ajudar na divulgacao.") return true end Se não der certo volte aqui.
Abraço.
-
Xagah's post in (Resolvido)Rain System was marked as the answerOlá, bom dia.
Há várias maneiras, mas para fazer chover em um andar inteiro é interessante vc usar o script do Kaotar (de outro Fórum).
Primeiro passo:
Vá em Data > Lib > (crie um arquivo chamado rain.lua e cole isto dentro)
-- Features: -- chance = OBJECT.chance = INT -- createItem = OBJECT.createItem = {chance = INT, item = {itemid = INT, type = INT}} Rain = {ignoreIds = {4526}} function Rain:new() local obj = {} setmetatable(obj, self) self.__index = self return obj end function Rain:getPositionInArea(fromPos, toPos) self.positions = {} for Y = fromPos.y, toPos.y do for X = fromPos.x, toPos.x do if (getTileThingByPos({x=X, y=Y, z=7, stackpos=0}).itemid ~= 0) then if not (string.match(string.lower(getItemNameById(getTileThingByPos({x=X, y=Y, z=7, stackpos=0}).itemid)), "water")) then table.insert(self.positions, {x=X, y=Y, z=Z}) end end end end return true end function Rain:doRain(position, disteffect, effect) if (self.duraction ~= self.executed) then local chance = self.chance or 100 if (math.random(0, 1000) <= chance) then for Z = 0, 7 do if (getTileThingByPos(({x = position.x, y = position.y, z = Z})).itemid ~= 0) then doSendDistanceShoot({x = position.x - 7, y = position.y - 5, z = Z}, {x = position.x, y = position.y, z = Z}, disteffect) doSendMagicEffect({x = position.x, y = position.y, z = Z}, effect) if (self.createItem) then if (math.random(0, 1000) <= self.createItem.chance) then if (isInArray(self.ignoreIds, getTileThingByPos({x=X, y=Y, z=Z, stackpos=0}).itemid) == FALSE) then local item = doCreateItem(self.createItem.item.itemid, self.createItem.item.type, {x=position.x, y=position.y, z=Z}) doDecayItem(item) end end end break end end end return true else return false end end function Rain:start(positions, effects, duraction, delay, var) self:getPositionInArea(positions.fromPos, positions.toPos) if not (self.positions[1]) then return false end self.delay = delay self.var = var or self self.effects = effects self.duraction = duraction self.executed = 0 addEvent(doCallback, self.delay, {var=self.var}) return true end function doCallback(p) for _, v in pairs(p.var.positions) do if not (p.var:doRain(v, p.var.effects.disteffect, p.var.effects.effect)) then return true end end addEvent(doCallback, p.var.delay, {var=p.var}) p.var.executed = p.var.executed+1 end 2º Vá na pasta Data > GlobalEvents > (crie um arquivo chamado rain.lua e cole isto dentro)
local rain = Rain:new() function onThink(interval, lastExecution) local minX = 990 local minY = 993 local maxX = 1008 local maxY = 1006 local frompos = {x=math.random(minX, maxX), y=math.random(minY, maxY), z=7} local topos = {x=math.random(frompos.x, maxX), y=math.random(frompos.y, maxY), z=7} local effects = { snow = { disteffect = CONST_ANI_SNOWBALL, effect = CONST_ME_ENERGYAREA }, rain = { disteffect = CONST_ANI_ICE, effect = CONST_ME_LOSEENERGY } } random = math.random(0, 10) if (random == 0) then rain.chance = math.random(10,50) rain:start({fromPos = frompos, toPos = topos}, effects.snow, 300, math.random(100, 500)) else rain.chance = math.random(40,100) rain.createItem = {chance = math.random(0,10), item = {itemid = 2016, type = 1}} rain:start({fromPos = frompos, toPos = topos}, effects.rain, math.random(300, 1000), math.random(100, 350)) end return TRUE end 3º Vá no arquivo Data > GlobalEvents > globalevents.lua e adicione isto dentro:
<globalevent name="rain" interval="200" event="script" value="rain.lua"/> Obs: o interval é o tempo que dura o SEU efeito em milisegundos. Ou seja, se vc cronometrou 3 segundos, vc deve colocar alí 3000.
4º - Vá em sua pasta Data > Lib > (crie um arquivo chamado rain.lua e cole isto:
-- Features: -- chance = OBJECT.chance = INT -- createItem = OBJECT.createItem = {chance = INT, item = {itemid = INT, type = INT}} Rain = {ignoreIds = {4526}} function Rain:new() local obj = {} setmetatable(obj, self) self.__index = self return obj end function Rain:getPositionInArea(fromPos, toPos) self.positions = {} for Y = fromPos.y, toPos.y do for X = fromPos.x, toPos.x do if (getTileThingByPos({x=X, y=Y, z=7, stackpos=0}).itemid ~= 0) then if not (string.match(string.lower(getItemNameById(getTileThingByPos({x=X, y=Y, z=7, stackpos=0}).itemid)), "water")) then table.insert(self.positions, {x=X, y=Y, z=Z}) end end end end return true end function Rain:doRain(position, disteffect, effect) if (self.duraction ~= self.executed) then local chance = self.chance or 100 if (math.random(0, 1000) <= chance) then for Z = 0, 7 do if (getTileThingByPos(({x = position.x, y = position.y, z = Z})).itemid ~= 0) then doSendDistanceShoot({x = position.x - 7, y = position.y - 5, z = Z}, {x = position.x, y = position.y, z = Z}, disteffect) doSendMagicEffect({x = position.x, y = position.y, z = Z}, effect) if (self.createItem) then if (math.random(0, 1000) <= self.createItem.chance) then if (isInArray(self.ignoreIds, getTileThingByPos({x=X, y=Y, z=Z, stackpos=0}).itemid) == FALSE) then local item = doCreateItem(self.createItem.item.itemid, self.createItem.item.type, {x=position.x, y=position.y, z=Z}) doDecayItem(item) end end end break end end end return true else return false end end function Rain:start(positions, effects, duraction, delay, var) self:getPositionInArea(positions.fromPos, positions.toPos) if not (self.positions[1]) then return false end self.delay = delay self.var = var or self self.effects = effects self.duraction = duraction self.executed = 0 addEvent(doCallback, self.delay, {var=self.var}) return true end function doCallback(p) for _, v in pairs(p.var.positions) do if not (p.var:doRain(v, p.var.effects.disteffect, p.var.effects.effect)) then return true end end addEvent(doCallback, p.var.delay, {var=p.var}) p.var.executed = p.var.executed+1 end Agora seu sistema está montado.
A partir de de agora é configurar.
Tem que configurar pois o "system" segue coordenadas, logo vc deve inserir as do seu mapa!
Assim, vá no arquivo Data > Globalevents > rain.lua e edite o seguinte:
local minX = Posição 'x' mínima, ou seja, inferior direita;
local minY = Posição 'y' mínima, também inferior direita;
local maxX = Posição 'x' máxima, superior esquerda;
local maxY = Posição 'y' máxima, superior esquerda tb
Não é necessário editar o andar, já está "setado" para o 7.
Além de tudo, você ainda pode configurar a "chance" de chover. Pra isto vc pode inserir, dentro do:
data > globalevents > globalevents.xml
Na linha que comentamos acima o código:
rain.chance = Math.random (20.100) Modifique o 20, que é a chance de ocorrer.
Bom, penso que é isto. Testei aqui no meu server, funcionou. Maaas... fica a dica, quanto maior foi a área que chovia, maior era o "lag".
Eu configurei em áreas remotas (ilhas, cidades, etc.) de tempos em tempos. É um efeito legal, mas pode consumir mais memRam do que imagina.
Qualquer coisa volte aqui.
-
Xagah's post in (Resolvido)[NPC] Não detecta itens na mochila was marked as the answerConsegui a resposta. O modules estava errado. Não havia disponível do correto na Net.
Tópico resolvido. Caso alguém tenha interesse, entre em contato comigo.
-
Xagah's post in (Resolvido)Export MiniMap was marked as the answerVá em:
File > Export > Export Minimap > (Abrirá uma Janela)
Na Opção:
Floor Options
Selecione: Ground Floor ( Que é o andar térreo).
Na opção Browse escolha onde o arquivo será salvo.
Se e finalize com "ok". Se o mapa for muito grande, seu programa poderá demorar para abrir o arquivo.
Se seu Mapa realmente tiver algo irá aparecer.
Acredito que seja isto.
Posta o que conseguiu aqui.
-
Xagah's post in (Resolvido)[SUPORTE] RME - Houses was marked as the answerVocê pode ver as coordenadas no arquivo que fica na pasta worl > houses > veja o nome da house (pelo distro) e pegue as coordenadas lá.
Caso as coordenadas sejam "zeradas" simplesmente delete do arquivo.
E sim, se apertar Ctrl + T e der um duplo clique na casa com o tal nome vc será direcionado para a casa com erro.
-
Xagah's post in (Resolvido)Duvida para por area pvp was marked as the answerVc provavelmente não "prencheu" a área com o terrain correto.
Aperte e letra "T" e depois selecione PVP (Bandeirinha Vermelha).