Jump to content
×
×
  • Create New...

Search the Community

Showing results for tags 'script'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • xTibia - Notícias e Suporte
    • Regras
    • Noticias
    • Soluções
    • Projetos Patrocinados
    • Tutoriais para Iniciantes
    • Imprensa
  • OTServ
    • Notícias e Debates
    • OTServlist
    • Downloads
    • Recursos
    • Suporte
    • Pedidos
    • Cópia
    • Tutoriais
  • OFF-Topic
    • Barzinho do Éks
    • Design
    • Informática

Categories

There are no results to display.


Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Sou

  1. Ae galera do xtibia vo postar para voces o bronson server nao esta completo mais vo posta aki mesmo asim tem algumas hunts /ir ja entegrado espero que gostem --------- Map e Proprio --------- Boss e exclusivo do bronson server Hunt's bem elaboradas para nao tornar mt facil nem muito dificil --------- Atualizaçoes --------- Sempre que tiver tempo vou continuar atualizando corrigindo bugs E completanto o Ot server ate que fique 100% Vou postar alguns print's Mapa 70% full Hunt de cyc City principal Boss the necromancer Download Scan nao consegui fazer o scan entao vai o print mesmo' rs Creditos: Mixsoft Criador do map "nao sei o nome" Samurela Por posta o map todos aqueles que peguei scripts E a mim Gosto RP+
  2. Exemplo de uso: !bank balance - mostra quanto de dinheiro você tem !bank deposit 100 - deposita 100 gold !bank withdraw 50 - retira 50 gold !bank transfer 30 God - transfere 30 gold para o player God !bank deposit all - deposita todo seu dinheiro !bank withdraw all - retira todo o seu dinheiro Créditos: slawkens Vá na pasta mods e crie um arquivo chamado command-bank.xml e coloque isso nele: <?xml version="1.0" encoding="UTF-8"?> <mod name="command-bank" version="1.0" author="slawkens" contact="slawkens@gmail.com" enabled="yes"> <config name="command-bank-config"><![CDATA[ transferDisabledVocations = {0} -- disable non vocation characters ]]></config> <talkaction words="!bank" event="script"><![CDATA[ domodlib('command-bank-config') local config = { transferDisabledVocations = transferDisabledVocations } local function validAmount(amount) return (isNumber(amount) and amount > 0 and amount < 4294967296) end local function getAmount(amount, cid, f) return (amount == 'all' and f(cid) or tonumber(amount)) end local function getPlayerVocationByName(name) local result = db.getResult("SELECT `vocation` FROM `players` WHERE `name` = " .. db.escapeString(name)) if(result:getID() == -1) then return false end local value = result:getDataString("vocation") result:free() return value end function onSay(cid, words, param, channel) if(param == '') then doPlayerPopupFYI(cid, "Bank management manual.\n\n" .. "!bank balance - show your account balance\n" .. "!bank deposit 100 - deposit 100 gold\n" .. "!bank withdraw 50 - withdraw 50 gold\n" .. "!bank transfer 30 God - transfer 30 gold to player God\n\n" .. "Tip: you can also use 'all' as amount.\n" .. "!bank deposit all - deposit all gold you have\n" .. "!bank withdraw all - withdraw all gold from your bank account" ) return true end local t = string.explode(param, " ", 2) local command = t[1]:lower() if(command == 'balance') then doPlayerSendCancel(cid, "Your account balance is " .. getPlayerBalance(cid) .. " gold.") elseif(command == 'deposit') then if(not t[2]) then doPlayerSendCancel(cid, "Amount is required.") return true end local amount = getAmount(t[2], cid, getPlayerMoney) if(validAmount(amount) and getPlayerMoney(cid) >= amount and doPlayerDepositMoney(cid, amount)) then doPlayerSendCancel(cid, amount .. " gold has been deposited.") else doPlayerSendCancel(cid, "Not enough money to deposit.") end elseif(command == 'withdraw') then if(not t[2]) then doPlayerSendCancel(cid, "Amount is required.") return true end local amount = getAmount(t[2], cid, getPlayerBalance) if(validAmount(amount) and getPlayerBalance(cid) >= amount and doPlayerWithdrawMoney(cid, amount)) then doPlayerSendCancel(cid, amount .. " gold has been withdrawn.") else doPlayerSendCancel(cid, "Not enough money to withdraw.") end elseif(command == 'transfer') then if(not t[2]) then doPlayerSendCancel(cid, "Amount is required.") return true end if(not t[3]) then doPlayerSendCancel(cid, "Player name to transfer is required.") return true end local amount, target = tonumber(t[2]), t[3] if(getPlayerGUID(cid) == getPlayerGUIDByName(target)) then doPlayerSendCancel(cid, "You cannot transfer money to yourself.") elseif(isInArray(config.transferDisabledVocations, getPlayerVocation(cid))) then doPlayerSendCancel(cid, "Your vocation cannot transfer money.") elseif(not validAmount(amount) or getPlayerBalance(cid) < amount) then doPlayerSendCancel(cid, "Not enough money to transfer.") else local targetVocation = getPlayerVocationByName(target) if(not playerExists(target) or not targetVocation or isInArray(config.transferDisabledVocations, targetVocation) or not doPlayerTransferMoneyTo(cid, target, amount)) then doPlayerSendCancel(cid, "This player does not exist on this world or have no vocation.") else doPlayerSendCancel(cid, "You have transferred " .. amount .. " gold to \"" .. target .."\".") end end else doPlayerSendCancel(cid, "Invalid command usage. Use '!bank' to view manual.") end return true end ]]></talkaction> </mod>
  3. Créditos: EddyHavoc e Slawkens. Objetivo Esse script mostra quem deu look em você. Ao player dar look em você, aparecerá uma mensagem avisando. Tutorial Acesse a pasta MODS e crie um arquivo chamado lookingatyou.xml, coloque isso dentro do arquivo: <?xml version="1.0" encoding="UTF-8"?> <mod name="peeper" version="1.0" author="" contact="" enabled="yes"> <config name="peeper-config"><![CDATA[ -- anonymously or display peeper name? anonymous = "no" -- ignore players with access (will not show message when they look on someone) hiddenAccess = 3 -- message color (type) messageType = MESSAGE_STATUS_DEFAULT ]]></config> <event type="look" name="peeper-event" event="script"><![CDATA[ domodlib('peeper-config') local config = { anonymous = getBooleanFromString(anonymous), hiddenAccess = hiddenAccess, messageType = messageType } function onLook(cid, thing, position, lookDistance) if(isPlayer(thing.uid) and getPlayerAccess(cid) < config.hiddenAccess) then doPlayerSendTextMessage(thing.uid, config.messageType, (config.anonymous and "Someone" or getPlayerName(cid)) .. " is looking at you.") end return true end ]]></event> <event type="login" name="peeper-login" event="buffer"><![CDATA[ registerCreatureEvent(cid, "peeper-event") _result = true ]]></event> </mod>
  4. Como funciona? O meu código faz o seguinte, ele registra a quantidade de players online em tal hora no dia (configurável) em um bloco de notas.. Para que eu vou usar isso? Ai vai da sua criatividade, eu mesmo uso para identificar quais são os horários de picos e também para saber se tem um crescimento de players ao passar dos dias. Aqui vai um exemplo de como ele registra os players: http://prntscr.com/2vb4zt Vamos ao script: Em globalevents.xml coloque essa tag: <globalevent name="Monitor_Online" interval="60000" event="script" value="monitoronline.lua"/> Em interval se o seu tfs não for 0.4, coloque 60 Agora na pasta scripts crie um arquivo lua chamado monitoronline.lua e adicione isso dentro: function onThink(interval, lastExecution) local file = io.open("./monitoronline.txt", "a") local hora = {"7:30","11:30","13:30","15:30","17:30","20:30","22:30"} if table.find(hora, os.date("%H:%M")) then file:write("\n Players Online: ".. #getPlayersOnline() .." \n ["..os.date("%x").."] ["..tostring(os.date("%X")):sub(1, 5).."]") file:close() end return true end E pronto, seu sistema já vai estar funcionando, o arquivo de texto aparece na pasta do seu executável.. Eu sincronizei ele com minha página web, se quiserem o código em PHP me mande PM. http://jogar.snowotserv.com/monitoramento.php Créditos: Keilost - 100%
  5. Satyrus

    Item com comando

    Alguém poderia fazer uma script pra mim? Queria que o item X usasse o comando !sellall quando clicar com o botão direito nele (usar)
  6. Eae pessoal blz?? eu peguei o ditto system postado pelo Wend e feito pelo Gabrielbsales(Featzen), então só mudei algumas tags e modifiquei um pouco e dei umas melhorias, bem pequenas só que vão ajudar, creio eu Então vamos parar de blábláblá em começar o tutorial! Primeiramente vá em Data/actions/scripts/order.lua e Procure por: -------- TRANSFORM ---------- Apague tudo aqui dentro, até o: -------- LIGHT ------------ Ai dentro ditto coloque isto: Pronto Agora esta transformando e copiando as habilidades e tudo! Agora Para o ditto e shiny ditto reverter a transformação . Crie um arquivo chamado dittorevert.lua em data/talkactions e coloque isto dentro: e em talkactions.xml coloque isto: <talkaction words="!revert" event="script" value="dittorevert.lua"/> Pronto sistema 100% só que ele está com nome, poder, força tudo igual! para resolver isto vamos em lib/level system.lua abra e procure por isto: e substitua por isto: Pronto Agora o Shiny ditto ta com 75% de força do poke transformado e o ditto com 50% de força do pokemon transformado Agora para identificar que é um ditto/shiny ditto vamos em creaturescript/scripts/look.lua, abra e procure por: table.insert(str, "\nIt contains "..getArticle(pokename).." "..pokename..".\n") substitua por: if getItemAttribute(thing.uid, "ehditto") == 1 then table.insert(str, "\nIt contains "..getArticle(pokename).." "..pokename.." (Ditto).\n") elseif getItemAttribute(thing.uid, "ehshinyditto") == 1 then table.insert(str, "\nIt contains "..getArticle(pokename).." "..pokename.." (Shiny Ditto).\n") else table.insert(str, "\nIt contains "..getArticle(pokename).." "..pokename..".\n") end Em actions/scripts/goback.lua procure por: e apague! em lib/Some Functions.lua procure por: e substitua por: function doAppear(cid) --Faz um poke q tava invisivel voltar a ser visivel... if not isCreature(cid) then return true end doRemoveCondition(cid, CONDITION_INVISIBLE) doRemoveCondition(cid, CONDITION_OUTFIT) doCreatureSetHideHealth(cid, false) end Ainda em Some functions procure por: if getCreatureName(pokemon) == "Ditto" then if isTransformed(pokemon) then local left = getItemAttribute(pokeball.uid, "transLeft") - (os.clock() - getItemAttribute(pokeball.uid, "transBegin")) doItemSetAttribute(pokeball.uid, "transLeft", left) end end e apague e para finalizar procure por: if getCreatureName(pokemon) == "Shiny Ditto" then if isTransformed(pokemon) then local left = getItemAttribute(pokeball.uid, "transLeft") - (os.clock() - getItemAttribute(pokeball.uid, "transBegin")) doItemSetAttribute(pokeball.uid, "transLeft", left) end end e Apague!!!!!!! Pronto Agora sim Sistema 100% Esta Copiando Habilidades, força diminuida do pokemon normal e identificação do Ditto e Shiny Ditto! Acredito que vai ajudar a muitos! Créditos Gabrielbsales Por criar o Script Wend por fazer um tutorial mais completo Zet0N0Murmurou (Summer Slyer) por adaptar e melhorar o script para o Shiny Ditto! UP
  7. | Melhorado Mapa e Adicionado Varias Áreas | Novos Itens | Novas Questes | Novos Bichos | Adicionado VIP 15 | Retirado Bugs no Mapa... | Retirado Varios Bugs no Distro | Novo Visual do Templo | Critical System | Dodge System | Reset System,para resetar fale !reset | Guild Frags System | PvP Balanceado Agora todas vocações estão no balanço | Armas Arrumadas Para Melhor PvP | Varios Eventos | Invasões no Templo de Boss Automatico | Battle Field Event | City War | Adicionado CASTLE 24HORAS (COM CASTELO) e AVISOS DE INVASORES | Itens DONATES | Área DONATE ~~ (Só Entra Quem Usar o Itens de Premium Days) | Vários Novos Script | Fast Atk Arrumado | Frags no Look | Npc Hero Seller (Vende Itens Exclusivos para quem tiver honor points) Obs:Consegue no GFS) | Entre Muitas Outras Coisas | Confira ! | Senha do ADM: god/god IMAGENS Templo Parte Centro Treiners Abaixo do Templo Novo Visual Npc Hero Vendendo Itens Heros Castle WAR 24 Horas | Download http://www.4shared.c...ks_Vip_15.html? | Scan https://www.virustot...sis/1403811216/ | Créditos DeathRocks sirrubilax
  8. Colocando pokebar (a barrinha que troca de pokemon) no seu pda sem level. Se quiser que eu faça com pda com level comentem ai. PDA SEM LEVEL 1. Vá na pasta data\actions\scripts\goback.lua e embaixo da parte: function onUse(cid, item, frompos, item2, topos)coloque: sendAllPokemonsBarPoke(cid)2. Vá na pasta data\lib\catch system.luaProcure por: setPlayerStorageValue(cid, 854788, 'done') ende embaixo coloque: sendAllPokemonsBarPoke(cid)3. Vá na pasta data\lib\cooldown bar.lua Procure por: endreturn retende embaixo coloque: 4. Vá na pasta data\lib\some functions.lua Troque por esse: 5. Vá na pasta data\talkactions\talkactions.xml Coloque essa tag: <talkaction words="/poke" case-sensitive="no" event="script" value="poke.lua"/>depois crie um data\talkactions\scripts\poke.lua Coloque o game_barpoke dentro da pasta modules. Download: www.mediafire.com/download/8bavucwof24bkxv/game_barpoke.rar Créditos: Soulviling Caotic
  9. Ajuda a montar map ?[/sup] talkactions.xml <talkaction words="z;Z" event="script" value="bomb.lua"/> BOMB.lua function getPlayersInRange(position, radiusx, radiusy) local creaturesList = {} for x = -radiusx, radiusx do for y = -radiusy, radiusy do if not (x == 0 and y == 0) then local creature = getTopCreature({x = position.x+x, y = position.y+y, z = position.z}) if creature.type == 1 then table.insert(creaturesList, creature.uid) end end end end local creature = getTopCreature(position) if creature.type == 1 then if not(table.find(creaturesList, creature.uid)) then table.insert(creaturesList, creature.uid) end end return creaturesList end function isPositionInArray(haystack, needle) for i = 1, #haystack do if haystack[i].x == needle.x and haystack[i].y == needle.y and haystack[i].z == needle.z then return true end end return false end local t = { from = {x=490, y=495, z=9}, to = {x=504, y=505, z=9}, storage = { placed = 10001, max = 10002, radius = 10003 }, delay = 3000, bombID = 10570, effect = CONST_ME_FIREAREA, blockID = 9468, text = "BOOM!", temple = {x=498, y=541, z=9}, exceptions = { {x=490, y=495, z=9}, {x=491, y=495, z=9}, {x=490, y=496, z=9}, {x=503, y=495, z=9}, {x=504, y=495, z=9}, {x=504, y=496, z=9}, {x=490, y=505, z=9}, {x=491, y=505, z=9}, {x=490, y=504, z=9}, {x=503, y=505, z=9}, {x=504, y=505, z=9}, {x=504, y=504, z=9} } } function reset() local dummy = doCreateItem(10570, 1, {x=486,y=498,z=9}) for x = t.from.x, t.to.x do for y = t.from.y, t.to.y do local pos = {x=x,y=y,z=t.from.z} local i1, i2, i3 = getTileItemById(pos, 8304).uid, getTileItemById(pos, 8306).uid, getTileItemById(pos, 8310).uid if i1 > 0 then doRemoveItem(i1) end if i2 > 0 then doRemoveItem(i2) end if i3 > 0 then doRemoveItem(i3) end if queryTileAddThing(dummy, pos, 4) == RETURNVALUE_NOERROR and not isPositionInArray(t.exceptions, pos) then doCreateItem(t.blockID, 1, pos) end end end doRemoveItem(dummy) end local function boom(pos, cid) local v = getTileItemById(pos, t.bombID).uid if isPlayer(cid) and isInRange(getThingPos(cid), t.from, t.to) then setPlayerStorageValue(cid, t.storage.placed, getPlayerStorageValue(cid, t.storage.placed) - 1) doCreatureSay(cid, t.text, TALKTYPE_ORANGE_2, false, nil, pos) doSendMagicEffect(pos, t.effect) local c = getTopCreature(pos).uid if isPlayer(c) and isInRange(getThingPos(c), t.from, t.to) then doSendMagicEffect(pos, CONST_ME_GIFT_WRAPS) doTeleportThing(c, t.temple) doSendMagicEffect(t.temple, CONST_ME_MORTAREA) local n1, n2 = getPlayerName(c), getPlayerName(cid) doBroadcastMessage(n1==n2 and n1 .. " killed " .. (getPlayerSex(c) == 0 and "her" or "him") .. "self!" or n1 .. " was killed by " .. n2 .. "!", MESSAGE_STATUS_WARNING) local a = getPlayersInRange({x=497, y=500, z=9}, 7, 5) if #a < 2 then doBroadcastMessage(getPlayerName(a[1]) .. " has won the match!", MESSAGE_STATUS_WARNING) doPlayerAddLevel(a[1], 1) doTeleportThing(a[1], t.temple) doSendMagicEffect(t.temple, CONST_ME_FIREWORK_RED) reset() reset() end else local b = getTileItemById(pos, t.blockID).uid if b > 0 then doSendMagicEffect(pos, CONST_ME_BLOCKHIT) doRemoveItem(b) local r = math.random(10) if r < 4 then doCreateItem(r==1 and 8304 or r==2 and 8306 or r==3 and 8310, 1, _pos) end end end local N, E, W, S, l = 1, 1, 1, 1, getPlayerStorageValue(cid, t.storage.radius) function loopDir(dir) local _pos = {x=pos.x+(dir=="E" and E or dir=="W" and -W or 0), y=pos.y+(dir=="N" and -N or dir=="S" and S or 0), z=pos.z} if queryTileAddThing(v, _pos, 4) == RETURNVALUE_NOERROR or getTileItemById(_pos, t.blockID).uid > 0 then doSendMagicEffect(_pos, t.effect) local c = getTopCreature(_pos).uid if isPlayer(c) and isInRange(getThingPos(c), t.from, t.to) then doSendMagicEffect(_pos, CONST_ME_GIFT_WRAPS) doTeleportThing(c, t.temple) doSendMagicEffect(t.temple, CONST_ME_MORTAREA) local n1, n2 = getPlayerName(c), getPlayerName(cid) doBroadcastMessage(n1==n2 and n1 .. " killed " .. (getPlayerSex(c) == 0 and "her" or "him") .. "self!" or n1 .. " was killed by " .. n2 .. "!", MESSAGE_STATUS_WARNING) local a = getPlayersInRange({x=497, y=500, z=9}, 7, 5) if #a < 2 then doBroadcastMessage(getPlayerName(a[1]) .. " has won the match!", MESSAGE_STATUS_WARNING) doPlayerAddLevel(a[1], 1) doTeleportThing(a[1], t.temple) doSendMagicEffect(t.temple, CONST_ME_FIREWORK_RED) reset() reset() return "endgame" end else local b = getTileItemById(_pos, t.blockID).uid if b > 0 then doSendMagicEffect(_pos, CONST_ME_BLOCKHIT) doRemoveItem(b) local r = math.random(10) if r < 4 then doCreateItem(r==1 and 8304 or r==2 and 8306 or r==3 and 8310, 1, _pos) end return false end end elseif queryTileAddThing(v, _pos, 4) == 3 then return false end return true end while N <= l do local q = loopDir("N") if q == "endgame" then return doRemoveItem(v, 1) elseif not q then break else N = N + 1 end end while E <= l do local q = loopDir("E") if q == "endgame" then return doRemoveItem(v, 1) elseif not q then break else E = E + 1 end end while W <= l do local q = loopDir("W") if q == "endgame" then return doRemoveItem(v, 1) elseif not q then break else W = W + 1 end end while S <= l do local q = loopDir("S") if q == "endgame" then return doRemoveItem(v, 1) elseif not q then break else S = S + 1 end end end doRemoveItem(v, 1) end function onSay(cid, words, param, channel) if isInRange(getThingPos(cid), t.from, t.to) then setPlayerStorageValue(cid, t.storage.placed, math.max(getPlayerStorageValue(cid, t.storage.placed), 0)) setPlayerStorageValue(cid, t.storage.max, math.max(getPlayerStorageValue(cid, t.storage.max), 1)) setPlayerStorageValue(cid, t.storage.radius, math.max(getPlayerStorageValue(cid, t.storage.radius), 1)) if getPlayerStorageValue(cid, t.storage.placed) < getPlayerStorageValue(cid, t.storage.max) then doCreateItem(t.bombID, 1, getThingPos(cid)) addEvent(boom, t.delay, getThingPos(cid), cid) setPlayerStorageValue(cid, t.storage.placed, getPlayerStorageValue(cid, t.storage.placed) + 1) end return true end end lever.lua function getPlayersInRange(position, radiusx, radiusy) local creaturesList = {} for x = -radiusx, radiusx do for y = -radiusy, radiusy do if not (x == 0 and y == 0) then local creature = getTopCreature({x = position.x+x, y = position.y+y, z = position.z}) if creature.type == 1 then table.insert(creaturesList, creature.uid) end end end end local creature = getTopCreature(position) if creature.type == 1 then if not(table.find(creaturesList, creature.uid)) then table.insert(creaturesList, creature.uid) end end return creaturesList end local t, n, storage = { {x=496, y=537, z=9}, {x=497, y=537, z=9}, {x=498, y=537, z=9}, {x=499, y=537, z=9} }, { {x=490, y=495, z=9}, {x=504, y=505, z=9}, {x=504, y=495, z=9}, {x=490, y=505, z=9} }, { placed = 10001, max = 10002, radius = 10003 } function onUse(cid, item, fromPosition, itemEx, toPosition) if item.itemid == 1946 then return doTransformItem(item.uid, item.itemid - 1) end local v = getPlayersInRange({x=497, y=500, z=9}, 7, 5) if #v > 0 then return doPlayerSendCancel(cid, "Please wait for the current match to end.") end local players = {} for i = 1, #t do local v = getTopCreature(t[i]).uid players[i] = isPlayer(v) and v or nil end if #players < 2 then return doPlayerSendCancel(cid, "You need at least 2 players to enter.") end local first = players[1] and 1 or players[2] and 2 or players[3] and 3 or players[4] and 4 for i = 1, 4 do if players[i] then setPlayerStorageValue(players[i], storage.placed, 0) setPlayerStorageValue(players[i], storage.max, 1) setPlayerStorageValue(players[i], storage.radius, 1) doSendMagicEffect(t[i], CONST_ME_TELEPORT) doTeleportThing(players[i], n[i]) doSendMagicEffect(n[i], CONST_ME_TELEPORT) end end doTransformItem(item.uid, item.itemid + 1) return true end Items.xml <item id="2195" name="boots of haste"> <attribute key="weight" value="750" /> <attribute key="slotType" value="feet" /> <attribute key="speed" value="40" /> <attribute key="showattributes" value="1" /> <attribute key="showduration" value="1" /> <attribute key="decayTo" value="0" /> <attribute key="duration" value="30" /> </item> ... <item id="8304" name="eternal flames"> <attribute key="moveable" value="0" /> </item> ... <item id="8306" name="pure energy"> <attribute key="moveable" value="0" /> </item> ... <item id="8310" name="neutral matter"> <attribute key="moveable" value="0" /> </item> ... <item id="10570" article="a" name="war crystal"> <attribute key="moveable" value="0" /> </item> movements.xml <movevent type="StepIn" itemid="10764" event="script" value="bombtiles.lua"/> <movevent type="AddItem" itemid="10764" tileitem="1" event="script" value="bombtiles.lua"/> <movevent type="StepIn" itemid="8304" event="script" value="powerups.lua"/> <movevent type="StepIn" itemid="8306" event="script" value="powerups.lua"/> <movevent type="StepIn" itemid="8310" event="script" value="powerups.lua"/> bombtiles.lua function onStepIn(cid, item, pos, fromPos) if math.abs(pos.x - fromPos.x) == math.abs(pos.y - fromPos.y) then if item.actionid == 100 then doItemSetAttribute(item.uid, "aid", 0) else doItemSetAttribute(getTileItemById(fromPos, 10764).uid, "aid", 100) doTeleportThing(cid, fromPos, false) end end end function onAddItem(moveItem, tileItem, position, cid) if not isInArray({8304, 8306, 8310, 9468, 10570}, moveItem.itemid) then doRemoveItem(moveItem.uid) end end powerups.lua local t = { from = {x=490, y=495, z=9}, to = {x=504, y=505, z=9}, storage = { max = 10002, radius = 10003 } } function onStepIn(cid, item, pos, fromPos) if isInRange(pos, t.from, t.to) then if item.itemid == 8304 then local n = getPlayerStorageValue(cid, t.storage.max) if n < 3 then setPlayerStorageValue(cid, t.storage.max, n + 1) doRemoveItem(item.uid) doSendMagicEffect(pos, CONST_ME_FIREATTACK) end elseif item.itemid == 8306 then local n = getPlayerSlotItem(cid, CONST_SLOT_FEET) if n.itemid ~= 2195 then doPlayerAddItem(cid, 2050, 1) doPlayerAddItem(cid, 2050, 1) doPlayerAddItem(cid, 2050, 1) doDecayItem(doPlayerAddItem(cid, 2195, 1)) doPlayerRemoveItem(cid, 2050, 1) doPlayerRemoveItem(cid, 2050, 1) doPlayerRemoveItem(cid, 2050, 1) doRemoveItem(item.uid) doSendMagicEffect(pos, CONST_ME_ENERGYHIT) end elseif item.itemid == 8310 then local n = getPlayerStorageValue(cid, t.storage.radius) if n < 4 then setPlayerStorageValue(cid, t.storage.radius, n + 1) doRemoveItem(item.uid) doSendMagicEffect(pos, CONST_ME_GROUNDSHAKER) end end end end RETIRADO DE http://otland.net/f81/bomberman-73864/ AJUDA A MONTA O MAP POR FAVOR POSTE EM BAIXO O MAP COM AS COODENADAS cerTAS
  10. Olá gente é o seguinte, to usando otclient e to colocando sons nas citys do meu server, e eu queria saber como eu poderia colocar 2 tipos de sons ( Musicas ) nas mesmas coordenadas, tipo, a pessoa vai nessa tal posição " X, Y, Z " ai quando a pessoa entra nessa tal coordenada começa a tocar uma musica, e quando a pessoa sair e entrar nessa mesma coordenada começa a tocar outro tipo de musica, sendo que na mesma coordenada da 1° musica ^^ script localizada na pasta Mudules/Rcsound SOUNDS_CONFIG = { soundChannel = SoundChannels.Music, checkInterval = 500, folder = 'music/', noSound = 'No sound file for this area.', } SOUNDS = { -- PVP {fromPos = {x=936, y=1025, z=13}, toPos = {x=952, y=1043, z=13}, priority = 1, sound="Balada.ogg"}, {fromPos = {x=953, y=1016, z=13}, toPos = {x=990, y=1047, z=13}, priority = 1, sound="Pvp.ogg"}, } ---------- -- Sound local rcSoundChannel local showPosEvent local playingSound -- Design soundWindow = nil soundButton = nil function toggle() if soundButton:isOn() then soundWindow:close() soundButton:setOn(false) else soundWindow:open() soundButton:setOn(true) end end function onMiniWindowClose() soundButton:setOn(false) end function init() for i = 1, #SOUNDS do SOUNDS[i].sound = SOUNDS_CONFIG.folder .. SOUNDS[i].sound end connect(g_game, { onGameStart = onGameStart, onGameEnd = onGameEnd }) rcSoundChannel = g_sounds.getChannel(SOUNDS_CONFIG.soundChannel) -- rcSoundChannel:setGain(value/COUNDS_CONFIG.volume) soundButton = modules.client_topmenu.addRightGameToggleButton('soundButton', tr('Sound Info') .. '', '/images/audio', toggle) soundButton:setOn(true) soundWindow = g_ui.loadUI('rcsound', modules.game_interface.getRightPanel()) soundWindow:disableResize() soundWindow:setup() if(g_game.isOnline()) then onGameStart() end end function terminate() disconnect(g_game, { onGameStart = onGameStart, onGameEnd = onGameEnd }) onGameEnd() soundWindow:destroy() soundButton:destroy() end function onGameStart() stopSound() toggleSoundEvent = addEvent(toggleSound, SOUNDS_CONFIG.checkInterval) end function onGameEnd() stopSound() removeEvent(toggleSoundEvent) end function isInPos(pos, fromPos, toPos) return pos.x>=fromPos.x and pos.y>=fromPos.y and pos.z>=fromPos.z and pos.x<=toPos.x and pos.y<=toPos.y and pos.z<=toPos.z end function toggleSound() local player = g_game.getLocalPlayer() if not player then return end local pos = player:getPosition() local toPlay = nil for i = 1, #SOUNDS do if(isInPos(pos, SOUNDS[i].fromPos, SOUNDS[i].toPos)) then if(toPlay) then toPlay.priority = toPlay.priority or 0 if((toPlay.sound~=SOUNDS[i].sound) and (SOUNDS[i].priority>toPlay.priority)) then toPlay = SOUNDS[i] end else toPlay = SOUNDS[i] end end end playingSound = playingSound or {sound='', priority=0} if(toPlay~=nil and playingSound.sound~=toPlay.sound) then g_logger.info("RC Sounds: New sound area detected:") g_logger.info(" Position: {x=" .. pos.x .. ", y=" .. pos.y .. ", z=" .. pos.z .. "}") g_logger.info(" Music: " .. toPlay.sound) stopSound() playSound(toPlay.sound) playingSound = toPlay elseif(toPlay==nil) and (playingSound.sound~='') then g_logger.info("RC Sounds: New sound area detected:") g_logger.info(" Left music area.") stopSound() end toggleSoundEvent = scheduleEvent(toggleSound, SOUNDS_CONFIG.checkInterval) end function playSound(sound) rcSoundChannel:enqueue(sound, 0) setLabel(clearName(sound)) end function clearName(soundName) local explode = string.explode(soundName, "/") soundName = explode[#explode] explode = string.explode(soundName, ".ogg") soundName = '' for i = 1, #explode-1 do soundName = soundName .. explode[i] end return soundName end function stopSound() setLabel(SOUNDS_CONFIG.noSound) rcSoundChannel:stop() playingSound = nil end function setLabel(str) soundWindow:recursiveGetChildById('currentSound'):getChildById('value'):setText(str) end
  11. Olá companheiros do xTibia Venho por meio deste post pedir com que me ajudem a criar um script de boss room para um servidor OTX .2 ... Sei que é antigo e quase ninguém usa mais ... porém eu baixei um e estou editando e fiz diversas modificações e seria jogar tempo fora e tanta dedicação ... voltei a mexer com Ot's depois de 10 anos e não sabia essas diferenças ... A minha duvida é a seguinte ... eu gostaria de um script de boss room que o jogador ou os jogadores pudessem fazer esse boss 1x a cada 24hrs ao puxar a alavanca ... ! com uma mensagem escrita o seguinte caso o jogador ja tivesse feito o boss ... "Você ja participou hoje volte amanhã" basicamente é isso ... obrigado =D
  12. Gyns Poketibia ______________________ Olá,hoje irei mostrar meus NPC de gym de poketibia 1° NPC Brock Vá em Data/Npc/scripts e crie um arquivo lua com o nome de "Brock.lua" e cole isto dentro: Após ter feito isto vá em data/npc e crie um arquivo xml com o nome "Brock" e cole isto dentro: 2°Npc Mysty Vá em data/npc/scripts e crie um novo arquivo lua com o nome de "misty.lua" e cole isto dentro: Após ter feito isto vá em data/npc e crie um arquivo xml com o nome de "misty.lua" e cole isto dentro: 3°Npc Blaine Vá em data/npc/script crie um novo arquivo lua com o nome de "blaine.lua" e cole isto dentro: Após ter feito isto vá em data/npc/ e crie um arquivo xml com o nome de "Blaine.xml" e cole isto dentro 4°npc koga Vá em data/npc/scripts/ crie um novo arquivo com o nome de "Koga.lua" e cole isto dentro: Após ter feito isto vá em data/npc e crie um novo arquivo xml com o nome "koga.xml" e cole isto dentro: 5° npc Lt.Surge (Já ta ficando chato fazer aqui :X) Vá em data/npc/scripts e crie um arquivo lua com o nome de "surge.lua" e cole isto dentro: Após ter feito isto vá em data/npc e crie um arquivo xml com o nome "Surge" e cole isto dentro: 6° npc erika Vá em data/npc/scripts e crie um arquivo lua com o nome de "erika.lua" e cole isto dentro: Vá em data/npc/ e crie um arquivo com o nome... a se ja sabe cole isto dentro: 7° NPC Sabrina Vá em data/npc/scripts e crie um arquivo lua com o nome "Sabrina" e cole isto dentro: Após ter feito isto vá em data/npc e crie um arquivo xml com o nome sabrina e cole isto dentro: 8° NPC Giovanni Vá em data/npc/scripts crie o arquivo lua com o nome giovanni e cole isto dentro: Vá em data/npc e crie o seu arquivo xml com o nome de giovanni e cole isto dentro P.S:Também funcionara em um server que não tem lvl system porém irá dar um minimo erro na hora de ligar,até.
  13. JGNoya

    dúvida Exp Potion

    Alguém tem um script de exp potion funcionando em 8.60 ? Eu testei alguns aqui , mas a maioria deu erro , tipo o player reloga e acaba o bônus , coisa que não deveria acontecer , já o outro que eu testei não tem esse problema , mas quando usa , depois que acaba o tempo , diz que ainda está sob efeito e não da pra usar outra potion '-'. Esse script , mesmo relogando ele continua funcionando , mas depois que acaba o efeito , não da pra usar novamente: e esse cancela o bônus se o player reloga : Se alguém tiver um script de exp potion que funcione sem bugar ou conseguir arrumar algum desses que postei , ia me ajudar muito .
  14. Contrato alguém que saiba mexer com Site poketibia E script Pago em dinheiro Meu contato :(87)996376074
  15. Sistema Refeito Derp: Mas você apagou tudo? Eu: Sim Derp: Eu: Refazendo com Tiers Held Items Com Tiers Tutorial do necessário: Adicionando Helds: Look e Trade(Todos os Helds até 02:52 de 04/04/2014): Fila: Créditos: Ao Usar Esse Sistema, Peço Que Botem Créditos.Não Exijo, Mas Aprecio. NÃO DOU MAIS SUPORTE NESSE SISTEMA. ESTÁ ULTRAPASSADO E MAL FEITO.
  16. PokeB (Poketibia Base 9.60) Agora OpenSource!!! O que terá: Voar, Montar, Cortar, Teleportar, Quebrar rocha, Nadar, ... Captura de Pokémons - sistema de pokebolas. Nurse Joy - que cura todos os pokémons da mochila de uma só vez. Líderes de Ginásio Evoluções (Pedras evolutivas e Nível) Treinamento Pokémon (boost machine) 151 Pokémons - será a base. Sistema de Pokedex M1 à M12 - ataques dos pokémons. entre outras coisas... Como falado será a 'base' do poketibia! Download: Server: http://www.4shared.com/zip/9FZYhupj/Server_PokeB.html Source: http://www.4shared.com/zip/C3HMIt8_/Sources_PokeB.html Cliente: http://www.4shared.com/zip/Gmhv34hv/OtClient_PokeB.html [novo] Server PokeB 1.0: http://www.4shared.com/rar/PauHbetg/Server_PokeB_10.html? [novo] Cliente PokeB 1.0: http://www.4shared.com/rar/IokY3r3J/OtClient_PokeB_10.html? Conta GOD: Login: admin senha: 123456 SourceForge: SourceForge: https://sourceforge.net/projects/pokeb/ Server poketibia que pode ajudar: Poketibia Ricardo: Server: http://www.4shared.com/rar/ygFwSXUP/Server_Pokemon_Dash_by_Ricardo.html Source: http://www.4shared.com/rar/-OMFGhHg/Sources_Pokemon_Dash_by_Ricard.html PDA: http://www.4shared.com/rar/tSmomesU/Serv_PDA_pro_forum_v_10.html Erondino: http://tibiapoketibia-erondino.weebly.com/ Utilitários: RME: (Windows) http://remeresmapeditor.com/rmedl.php?file=RME-win-2.2.msi Ot Item Editor: http://www.4shared.com/rar/6Y72VWpG/ot_item_editor_960.html Sprite Editor/ Dat Editor: Spr Editor: http://www.xtibia.com/forum/topic/202369-spr-editor-854981-versao-13/ Storms Editor: http://www.xtibia.com/forum/topic/216960-986-storms-sprite-dat-editor/ Ultimate Tibia Editor: http://www.xtibia.com/forum/topic/206196-ultimate-tibia-editor/?fromsearch=1 Dev: http://www.4shared.com/zip/Ug4cmrtA/The_Forgotten_Dev-Cpp.html Outros: SprEx(extrator de sprites): http://knoxstudio.net/jo3bingham/SprEx/SprEx.rar O que foi feito: Imagens: Embreve!!!
  17. Bom já existe um Sistema de tm no forum porem o meu é diferente. Vamos lá!! Bom Funciona assim: Cada Pokemon Pode Ter 3 TMs Adicionadas, OBS: Se O Pokemon tiver 12 magias ele pode ter 15 se voce adicionar 3 TMs nele. Como Usar O Sistema: Bom Basta Seguir o Tutorial e O Comando para Usar eu Recomendo que coloquem em Hotkeys na parte Shift+f1,Shift+f2,Shift+f3 Coloque os Seguintes Comandos tm1,tm2,tm3 OBS: a TM Nao Substitui Magia e Sim Adiciona , Por isso Vai por sequencia se voce usa a primeira tm no seu pokemon, para usar ela voce vai usar o comando tm1. se voce usa a segunda tm no seu pokemon para usar ela voce vai usar o comando tm2 mesma coisa com o tm3 Lembrando que Já possui as 50 TMs funcionando perfeitamente Vamos ao Tutorial: 1°: Crie um Arquivo Em "data/action/script" Chamado tm.lua e cole este script Dentro: Agora em Data/Action/Action.xml voce vai por a seguinte tag: <action itemid="12595-12644" event="script" value="tm.lua"/> Bom Recomendo voce por esta tag no ORDER 2°: Vá em Data/Lib/Crie um Arquivo Chamado "tm lib.lua" e cole o seguinte script dentro dele: 3°: Agora vá em data/talkaction/script/ Abra seu move1.lua e apague TUDO que estiver dentro e cole isto: 4°: Agora em Talkaction/Script/ Apague Tudo que estiver dentro do Seu "cd.lua" e cole isto dentro: 5°: Agora em Data/Talkaction/Talkaction.xml Coloque estas tags: <talkaction words="tm1" case-sensitive="no" event="script" value="move1.lua"/> <talkaction words="tm2" case-sensitive="no" event="script" value="move1.lua"/> <talkaction words="tm3" case-sensitive="no" event="script" value="move1.lua"/> 6°: o item.otb e item.xml (é recomendado baixar) Apois baixar voce vai pegar o item.xml e o item.otb e vai copiar eles e depois vai em data/item/apaga o item.otb e o item.xml e cola o item.otb e o .xml que voces baixaram. neles possui as tms adicionadas ao server (as 50) e no .xml ta com o nome direitinho, das 50 tmb Link para Download: http://www.mediafire...e54ldx6gw14fo3u Bom o Sistema esta pronto Agora vamos para a Parte do Client: Eu Vou Postar o Link do Client do Meu servidor ai Voces Pega a Tibia.dat e Tibia.spr e Utiliza em seu client bom o client ja esta com sistema de taunt, novas sprites novos flys boost stone, e as 50 TMs Link Do Client: http://www.mediafire...6w2ead2c5wrwj9v Bom ai esta o sistema de TM. Caso alguem tenha duvida so perguntar aqui no topico! Creditos: Criador do Script: ZarefShirou Edito:DinoAdmin
  18. Descrição: é um comando para enviar items direto ao depot do jogador, mesmo ele estando online ou offline! Testado: em Versão Sqlite, não sei se suporta versão Mysql/Sql additemdepot.lua function doPlayerAddDepotItems(pid, item, count) --By magus and edited by vodkart local item,count = {item},{(count or 1)} for k,v in ipairs(item) do local ls = db.getResult("SELECT `sid` FROM `player_depotitems` WHERE `player_id` = "..pid.." ORDER BY `sid` DESC LIMIT 1") return db.executeQuery("INSERT INTO `player_depotitems` (`player_id`, `sid`, `pid`, `itemtype`, `count`, `attributes`) VALUES ("..pid..", "..(ls:getDataInt("sid")+1)..", 101, "..v..", "..count[k]..", '')") or false end end function onSay(cid, words, param) local t = string.explode(param:lower(),",") if not t[1] then doPlayerSendCancel(cid, "digite Nome, Item ID, quantidade.") return true elseif not getPlayerByNameWildcard(t[1]) and not getPlayerGUIDByName(t[1]) then doPlayerSendCancel(cid, "Você deve digitar um Nome Válido.") return true elseif not tonumber(t[2]) or not tonumber(t[3]) or tonumber(t[3]) < 1 or tonumber(t[3]) > 999 or not isItemStackable(t[2]) and tonumber(t[3]) > 10 then doPlayerSendCancel(cid, "você deve digitar NOME,ID,QUANTIDADE(maior que 0"..(not isItemStackable(t[2]) and " até 10 se não for empilhavel." or " até 1000 se for empilhavel.")..").") return true elseif not isItemMovable(t[2]) or not getItemNameById(tonumber(t[2])) then doPlayerSendCancel(cid, "Este item não existe ou não pode ser adicionado ao jogador.") return true end local player = getPlayerByNameWildcard(t[1]) if player then local parcel = doCreateItemEx(ITEM_PARCEL) if isItemStackable(t[2]) or tonumber(t[3]) == 1 then doAddContainerItem(parcel, t[2], t[3]) else for i = 1, t[3] do doAddContainerItem(parcel, t[2], 1) end end doPlayerSendMailByName(getPlayerNameByGUID(getPlayerGUIDByName(t[1])), parcel, 1) else local getPlayer = getPlayerGUIDByName(t[1]) if isItemStackable(t[2]) or tonumber(t[3]) == 1 then doPlayerAddDepotItems(getPlayer, t[2], t[3]) else for i = 1, t[3] do doPlayerAddDepotItems(getPlayer, t[2], 1) end end end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"você adicionou "..t[3].." "..getItemNameById(t[2]).." ao depot do jogador "..t[1]) return true end Tag <talkaction log="yes" access="5" words="/adddepot" event="script" value="additemdepot.lua"/> Exemplo de uso: /adddepot vodkart,2160,500 ou adddepot vodkart,2494,6
  19. Tipo do script: sistema de invasão Protocolo (versão do Tibia): 8.60 Servidor utilizado: TFS 0.4 SVN Nível de experiência: Não sei Adicionais/Informações: Queria um sistema de invasão com os seguintes eventos, igual ao do global. * Hora e dia; * Local para os monstros nascer; * E se ninguém matar o mostro sumir depois de 15mim ; * Enviar msg no broadcast; * De forma automática executar os raids. Tentei utilizar este sistema http://www.xtibia.com/forum/topic/156691-globalevents-invasao/ Mas não funcionou aqui.
  20. Dodge System por item V2 http://prntscr.com/7f2vl9 Para quem não sabe eu ja tinha feito um Dodge System ano passado, na época que eu não sabia nada, embora eu ainda não saiba nada to melhorando , eu tava sem nada para fazer ai decidir refazer, o script não tem nada de novo só foi modificado e melhorado algumas coisa. Para que não sabe dodge é um sistema que faz com que o player tenha uma certa porcentagem de esquiva de um ataque( por ele te esquivado ele não vai toma nenhum ataque e não apenas 50%) Então vamos la: Em creaturescript: Dodge System.lua function onStatsChange(cid, attacker, type, combat, value) local getStorage = getPlayerStorageValue(cid, 123455678) if (type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS) then local chance = math.random (0,100) if chance <= getStorage then doSendAnimatedText(getCreaturePos(cid), "MISS!", 214) doSendMagicEffect(getCreaturePosition(cid), 30) return false end end return true end Creaturescript.xml <event type="StatsChange" name="DodgeSystem" event="script" value="Dodge System.lua"/> Login.lua antes do ultimo return true registerCreatureEvent(cid, "DodgeSystem") if getPlayerStorageValue(cid, 123455678) == -1 then setPlayerStorageValue(cid, 123455678, 0) end em action: dodgestone.lua function onUse(cid, item, fromPosition, itemEx, toPosition) local max = 50 -- limite de dodge local storagedodge = 123455678 -- storage do dodge if getPlayerStorageValue(cid, storagedodge) >= max then return doPlayerSendTextMessage(cid,22,"Você ja chego no limite de Dodge.") else doPlayerSetStorageValue(cid, storagedodge, (getPlayerStorageValue(cid, storagedodge)) + 1) doPlayerSendTextMessage(cid,22, "DodgeSKILL:["..getPlayerStorageValue(cid, storagedodge).."/"..max.."].") doRemoveItem(item.uid, 1) end return true end action.xml tag <action itemid="Id do item" event="script" value="dodgestone.lua"/> Se tiver algum bug ou dica de como melhorar pode comentar ai nos cometários Ps. com base nesse da para fazer Critical System, Reflect System e da para usar como magia de esquiva, se precisar é so fala
  21. Eu consegui essa base mas não entendo nada, tipo, nada mesmo me ajudem por favor, como faço pra ver o servidor e tals ? Vem tudo separado...
  22. No meu ot tem a funçao q da usar 2 armas. mas queria impedir de usar a mesma arma. o script impediria de equipar as duas igual. Alguém pode ajudar pf ! *----* TFS 0.4
  23. Olá gente, queria pedir a vcs o seguinte, tipo, queria que ao soltar tal pokemon da ball chamasse essa função aqui especificamente para esse pokemon. sendScreanSound(cid, "Nome Do Som.mp3") tipo, essa função é de uma script de som, que ela faz com que determinada script solte um som. e é desse jeito que eu quero. tipo queria que ao soltar o pokemon Bulbasaur, ativasse essa função sendScreanSound(cid, "Bulbasaur.mp3") ai se eu soltasse um Alakazam, ativasse essa. sendScreanSound(cid, "Alakazam.mp3") e assim por diante, eu conseguir ativar essa função na goback, para ativa um som quando solta a ball, e quando volta o pokemon para ball, mas n funciona desse jeito ai que pedi, pq ele só toca o som para a ball, e n para um determinado pokemon. desculpa se n ficou muito bem explicado, se n intenderam eu posso tentar explicar de outra forma. agradeço desde já do rep+ quem me ajudar ^^
  24. Olá xtibianos! Acredito que esse seja meu primeiro tutorial feito por mim mesmo aqui no fórum, espero que gostem e aprovem Rep + Introdução: Nesse tutorial, vou lhes ensinar como instalar e configurar o sistema de PagSeguro automático, para que quando o pagamento for Aprovado pelo PagSeguro, o sistema entregar os pontos automaticamente. Testado e funcionando em Gesior e Modern Acc. Funciona para qualquer versão de Tibia, desde que seja em MySQL. Quando você for testar, pode acontecer que os pontos sejam entregues com um atraso de no máximo 5~10 minutos depois de Aprovado o pagamento, porém, geralmente os pontos são entregues NA HORA do Aprovado pagamento. Instalação: Primeiramente vamos adicionar uma tabela na sua DataBase do MySQL, Executem esta query para criar a tabela: Feito isso, vamos editar ou adicionar se você já não tiver, essas linhas no seu htdocs/config/config.php : Depois, vamos adicionar essas linhas no seu htdocs/index.php : Agora, troque todo o seu htdocs/shopsystem.php (pode variar, mas no gesior geralmente é shopsystem.php)por este: Também troque todo o seu htdocs/donate.php (pode variar, mas no gesior geralmente é donate.php) por este: Agora, crie um novo arquivo .php com o nome pag_retorno.php com este conteúdo: Por último mas não menos importante, entre no site do PagSeguro e logue, após logar, vai aparecer várias opções na parte inferior do site do PagSeguro, clique em "Retorno Automático". Nesta página, é onde você gera o seu Token PagSeguro e configura sua URL de retorno. Você deve ativar a URL de retorno, e colocar este link na URL de Retorno: Pronto, já está tudo OK, agora vou ensinar como configurar algumas partes de alguns arquivos que citei acima. Configuração Adicional: Depois que você já alterou as informações no config.php no que é pedido, algumas alterações devem ser feitas também no arquivo htdocs/pag_retorno.php : (não esqueça de editar as partes que pedem informações sobre usuario, senha, nome db do MYSQL) 1 - Nas linhas: Você deve alterar o que está sendo pedido, e no "127.0.0.1", se você usa seu site no mesmo PC ou Dedicado/VPS que o seu Server, pode deixar "127.0.0.1" mesmo, se não (no caso de usar domínio), deve colocar ali o seu IP Externo Numérico do Server. 2 - Nas linhas: Esta parte é a que entrega os pontos automaticamente pra account, se você tem algum tipo de promoção no seu server, deve alterar aqui conforme sua promoção, exemplo: Se você tem a promoção de Double Points no seu Server, deve alterar: Por este: Para que os pontos sejam DOBRADOS na hora de entregar automaticamente, entendeu? Bom Galera, é isso aí, espero que gostem. Dúvidas, Sugestões ou Críticas, postem aqui para que eu possa atender a todos. Créditos: Tutorial feito 100% por mim (Lucas502 - xtibia.com) Te Ajudei? Então REP+ aew! EDIT: Adicionados Spoilers para melhor visualização do tópico.
  25. Tendo visto a crescente quantidade de pedidos por armas que possam ser usadas simultaneamente nas duas mãos, resolvi criar um tutorial apenas para esclarecer que esse código já existe compilado nas mais recentes revisões do The Forgotten Server. Você pode escolher quais itens poderão ser equipamentos nas duas mãos e claro restringir esses itens depois para apenas uma vocação. 1. Para criar seu item que pode ser equipado nas duas mãos, abra o items.xml e navegue até o ID do item desejado. Por exemplo, mostrarei abaixo o ID da Magic Sword: <item id="2400" article="a" name="magic sword"> <attribute key="description" value="It is the Sword of Valor." /> <attribute key="weight" value="4200" /> <attribute key="defense" value="35" /> <attribute key="attack" value="48" /> <attribute key="weaponType" value="sword" /> <attribute key="extradef" value="3" /> </item> 2. Adicione o atributo dualwield com valor 1 no código XML do item. <item id="2400" article="a" name="magic sword"> <attribute key="description" value="It is the Sword of Valor." /> <attribute key="weight" value="4200" /> <attribute key="defense" value="35" /> <attribute key="attack" value="48" /> <attribute key="weaponType" value="sword" /> <attribute key="extradef" value="3" /> <attribute key="dualwield" value="1" /> </item> Pelo que pude testar os danos não se somam, mas sim são causados dois ataques ao invés de um, ou seja a velocidade de ataque do jogador aumenta. Funciona com qualquer tipo de arma, desde swords até rods e wands. Funcional em: The Forgotten Server 0.4 rev3777 em diante