Líderes
-
xWhiteWolf
HéroiPontos3605Total de itens -
-
-
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 11/19/15 em todas áreas
-
Sistema de Reset 100%
Sistema de Reset 100%
bagulhoescroto reagiu a xWhiteWolf por uma resposta no tópico
1 pontoFala galera do TK, hoje vim pra trazer pra vocês um npc criado por mim e pelo Nogard numa madrugada aí para solucionar a dúvida de um cara no suporte. Eu dei uma melhorada no script original, tirei umas coisas repetidas e adicionei novas funções; Você agora pode configurar se quer que o preço aumente a cada reset, se quer que o level pra resetar aumente e se vc quer que a vida resete junto (e quanto % da vida atual será a vida após resetar). Testado em TFS 0.3.6, Versão 8.45 Sem mais delongas, vamos ao script. Antes de tudo crie um arquivo chamado reseter.lua na pasta data\npc\scripts\ e coloque isso daqui dentro dele: Você pode editar tudo mexendo aqui: local config = { minlevel = 150, --- level inical para resetar price = 10000, --- preço inicial para resetar newlevel = 20, --- level após reset priceByReset = 0, --- preço acrescentado por reset percent = 100, ---- porcentagem da vida/mana que você terá ao resetar (em relação à sua antiga vida total) levelbyreset = 0 --- quanto de level vai precisar a mais no próximo reset } Feito isso, crie agora o npc que irá utilizar esse script.. em data\npc crie um arquivo.xml chamado Reseter.xml e coloque isso dentro dele: Agora é só colocar o seu npc no mapa pelo mapa editor e curtir OBS 1: Se seu server for 8.6 ou maior troque no script.lua as funções db.executeQuery por db.query OBS 2: Esse script dava pra ser diminuido ainda mais mas por hora deixa ele assim, se vc tiver alguma proposta melhor por favor poste nos comentários que eu testo a sua versão e edito o tópico se for o caso. OBS 3: Não remova os créditos, isso é a coisa mais baixa e suja que alguém pode fazer.. eu scripto pra ajudar a comunidade do Tibia a evoluir e libero 99% doque eu faço, se vocês não removerem os créditos e não postarem em outros fórums sem minha permissão isso pode continuar assim. --- EDIT: Coloquei algumas imagens pra vcs verem como fica no server EDIT: Arrumei o problema de o npc não dar bye automáticamente qnd o player se afasta, bugando em algumas versões e impedindo de conversar com outros npcs. Apenas substituam o arquivo em scripts pela versão atualizada, grato. EDIT2: Novos erros arrumados, agora o NPC dá bye automaticamente e não buga qnd te reseta. EDIT3: Resolvido bug de dar hi, reset, yes várias vezes e derrubar o servidor (troque tanto o xml qnt o script do npc) O script também foi identado.1 ponto -
Dodge System 8.54+
Dodge System 8.54+
Leo Zanin reagiu a xWhiteWolf por uma resposta no tópico
1 pontoAe galera do TK, uns caras ficaram me mandando PM pedindo esse sistema aqui.. aparentemente tem em algum server e eles queriam replicar o sistema no OT deles. Não sei como funciona no outro server mas no script que eu fiz vai funcionar assim: Serão 100 livros que você poderá comprar de um npc específico, cada livro te dá 1 ponto a mais na skill Dodge e isso acarreta em 0.3% de chance a mais de desviar de um golpe e tomar só 50% de dano. Infelizmente eu nunca joguei no servidor que foi o pioneiro desse sistema (na vdd eu nem sei qual é) então eu não fiz igual o deles, na realidade o meu só funciona ao perder vida então se o mago usar utamo vita acabou os dodge's dele. Outra coisa importante é que o player tem uma chance rara de dar Dodge no Dodge, ou seja, levando 1/4 do dano. Só vai funcionar para ataques de criaturas, tanto melee quanto spells, ou seja, se o cara passar no fogo não tem chance dele desviar do dano Sem mais delongas, vamos ao script: Crie um arquivo chamado dodge.lua na pasta creaturescripts\scripts e coloque isso dentro dele: agora adicione essa linha no creaturescripts.xml: <event type="statschange" name="dodge" event="script" value="dodge.lua"/> em creaturescripts\scripts\login.lua adicione isso antes do ultimo return true: registerCreatureEvent(cid, "dodge") if getPlayerStorageValue(cid, 48902) == -1 then setPlayerStorageValue(cid, 48902, 0) end agora vá em actions.xml e adicione essa linha aqui: <action itemid="1950" script="dodgebook.lua"/> note que vc pode mudar o ID do livro a hora que vc quiser. em items.xml, procure o item com o ID que vc irá utilizar e deixe ele assim: <item id="1950" article="a" name="Skill Book [DODGE]"> <attribute key="weight" value="1300" /> </item> agora crie um arquivo chamado dodgebook em actions\scripts e coloque isso dentro dele: local config = { minlevel = 150, --- level que precisa pra comprar o livro price = 10000, --- preço do livro itemid = 1950 --- ID DO LIVRO } --- end config function getDodgeSkill(cid) dodgeskill = getPlayerStorageValue(cid, 48902) return dodgeskill end local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} -- OTServ event handling functions start 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 -- OTServ event handling functions end function creatureSayCallback(cid, type, msg) -- Place all your code in here. Remember that hi, bye and all that stuff is already handled by the npcsystem, so you do not have to take care of that yourself. if (not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'skill book') then if getDodgeSkill(cid) == dodgeskill then selfSay('You want to buy Skill Book [DODGE]? It will cost '..config.price..' gp\'s!', cid) talkState[talkUser] = 1 else selfSay('I couldnt acess your data bank!', cid) end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if getPlayerMoney(cid) < config.price then selfSay('Its necessary to have at least '..config.price..' gp\'s in order to buy the Skill Book!', cid) elseif getPlayerLevel(cid) < config.minlevel then selfSay('The minimum level for buying this skill book is '..config.minlevel..'!', cid) else doPlayerRemoveMoney(cid,config.price) doPlayerAddItem(cid, config.itemid, 1, TRUE) end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no')) and isInArray({1}, talkState[talkUser]) == TRUE then talkState[talkUser] = 0 selfSay('Ok.', cid) elseif msgcontains(msg, 'level') then selfSay('You have Leveled your Dodge Skill to ['..getDodgeSkill(cid)..'/100].', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) lembrando que no começo vc pode editar o preço, o level que precisa pra comprar a skill e o ID do livro que será usado (USE O MESMO ID NO ITEMS.XML E NO ACTIONS.) agora crie o npc dodgeseller.xml e coloque isso nele: <npc name="Dodge Skill Seller" script="data/npc/scripts/bookseller.lua" access="5" lookdir="1"> <health now="1000" max="1000"/> <look type="133" head="95" body="86" legs="86" feet="38" addons="3"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|. I've been waiting for you to come.. Say 'skill book' or 'level'" /> <parameter key="message_farewell" value="Cya folk." /> <parameter key="message_walkaway" value="How Rude!" /> </parameters> </npc> Explanações gerais: O sistema é bem simples (muito simples mesmo), ele pega o valor do storage do cara e multiplica por 3.. se isso for maior que um numero aleatório criado entre 0 e 1000 ele dá dodge e solta os efeitinhos lá do creaturescripts. Note que no nivel máximo o cara vai ter 100 de storagevalue e isso será multiplicado por 3 resultando em 300. Se 300 for maior que um valor aleatorio entre 0 e 1000 (30% de chance) você vai tomar apenas metade do dano. Vc pode editar a vontade e melhorar ele da forma que quiser, se vc quiser que todos os danos do player sejam passíveis de serem esquivados mude aqui: if type == STATSCHANGE_HEALTHLOSS and isCreature(attacker) then apenas retirando esse and isCreature(attacker), daí até dano de firefield vai dar pra dar dodge. Se você quiser adicionar classes que poderão usar (só knights e paladins por exemplo) só colocar isInArray({3,4,7,8}, getPlayerVocation(cid)) como condição na action. E se vc quiser que mago possa dar dodge mesmo com utamo vita (OQUE NÃO FAZ MUITO SENTIDO JÁ QUE O ESCUDO DE MANA FICA EM VOLTA DO PLAYER TEORICAMENTE, MAS TUDO BEM) é só colocar if type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS and isCreature(attacker) then Se você quiser que só ataques de Players sejam desviados ou só ataques de monstros é só trocar isCreature(attacker) por isMonster(attacker) ou isPlayer(attacker). Bom, isso é tudo, espero que vcs tenham curtido e qualquer coisa é só comentar ou me dar um Rep que ajuda pra caralho. Um abraço pra vocês. EDIT: Arrumei o problema de o npc não dar bye automáticamente qnd o player se afasta, bugando em algumas versões e impedindo de conversar com outros npcs. Apenas substituam o arquivo em scripts pela versão atualizada, grato.1 ponto -
Dodge System (Por Item)
Dodge System (Por Item)
NTORox OTServer reagiu a xWhiteWolf por uma resposta no tópico
1 pontoFala galera do TK, hoje vim trazer pra vocês à pedidos do grande @azzouks uma versão do meu Dodge System por equips. Explicação: É um sistema onde vc pode colocar uma % de esquiva nos itens e ao usá-los você ganha a chance de desviar dos ataques e levar somente metade do dano. Qualquer semelhança com esse > http://www.tibiaking.com/forum/topic/8223-mod-reflect-system-01/ < mod do @Aluccard não é mera coincidência, eu usei o mod dele como base pra fazer o meu *-* Sem mais delongas vamos ao script: Vá na pasta do seu server e abra uma pasta chamada "mods".. lá dentro crie um arquivo com o nome que vc quiser (sério) de extensão.xml e adicione o seguinte nele: Configurando: Se você não manja de script então eu sugiro que vcs só alterem essa parte aqui: em vermelho é o máximo que uma pessoa pode ter de dodge: se ela tiver usando um full set que deixe ela com um total de 99% de dodge ela só vai poder aproveitar 50%. Isso foi feito pra evitar um bug.. vocês podem se sentir livres pra alterar esse numero mas não coloquem nada muito grande pra evitar que seus servers explodam. em verde é a porcentagem do dano que vocês vao tomar ao desviar.. nesse caso os ataques que eu der dodge darão 50% do dano (0.5) em azul é a porcentagem inicial que todos os players vão ter. Por padrão está 0 mas se vc quiser que todos os players do seu server tenham 20% e que cada item dê 5% também é possível editando esse 0 pra 20. Feito isso vá em data\lib\function.lua e adicione essas linhas function getItemDodgePercent(itemuid) return getItemAttribute(itemuid, "dodgePercent") end function doPlayerAddDodgeItem(cid, itemid, percent) local item = doPlayerAddItem(cid, itemid) doItemSetAttribute(item, "description", "[Dodge: "..percent.."%]") doItemSetAttribute(item, "dodgePercent", percent) end Agora é só aproveitar no seu server.. toda vez que vc for usar num script vc poderá utilizar as funções getItemDodgePercent(item) e a doPlayerAddDodgeItem(cid, itemid, percent). Pra finalizar aqui tem um exemplo de uma quest que dá uma plate armor com 0.8% de dodge: Espero que gostem! EDITADO: Fiz um script de action pra ser uma pedra que vai dar dodge nos items. Ele tem muito que melhorar mas por ora ele tá 99% pronto pra ser colocado em algum server que utilize esse dodge system. function isHandItem(uid) -- NW based on Mock uid = uid or 0 if isInArray({1,2,3,4,5,6}, getItemWeaponType(uid)) then return true end return false end function getItemDodgePercent(itemuid) return getItemAttribute(itemuid, "dodgePercent") or 0 end function setItemDodgePercent(uid, percent) doItemSetAttribute(uid, "description", "[Dodge: "..percent.."%]") doItemSetAttribute(uid, "dodgePercent", percent) end function onUse(cid, item, fromPosition, itemEx, toPosition) level = 0 local upgrade = { [1] = {min = 1, max = 5, chance = 100}, [2] = {min = 5, max = 10, chance = 80}, [3] = {min = 10, max = 20, chance = 60}, [4] = {min = 20, max = 40, chance = 40}, [5] = {min = 40, max = 50, chance = 20} } function isWearing(uid) -- NW based on Mock uid = uid or 0 if isInArray({uid}, getPlayerSlotItem(cid, 1).uid) or isInArray({uid}, getPlayerSlotItem(cid, 4).uid) or isInArray({uid}, getPlayerSlotItem(cid, 7).uid) or isInArray({uid}, getPlayerSlotItem(cid, 8).uid) then return true end return false end if isHandItem(itemEx.uid) or isWearing(itemEx.uid) then local name = getItemName(itemEx.uid) local atual = math.floor(getItemDodgePercent(itemEx.uid)*10)/10 for i = 1, #upgrade do if string.find(tostring(name),"+".. i .."") then level = i end end if level >= #upgrade then doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Your item is already on max level, you can't upgrade it any further.") return true end if math.random(0,100) <= upgrade[level + 1].chance then doRemoveItem(item.uid, 1) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"You leveled your "..getItemNameById(itemEx.itemid).." to ".. level+1 ..".") setItemDodgePercent(itemEx.uid, atual + (math.random(upgrade[level+1].min,upgrade[level+1].max))/10) doItemSetAttribute(itemEx.uid,'name', getItemNameById(itemEx.itemid)..' +'..(level+1)) doSendMagicEffect(toPosition, math.random(28,30)) else doRemoveItem(itemEx.uid, 1) doRemoveItem(item.uid, 1) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Your "..getItemNameById(item.itemid).." has failed and destroyed your "..getItemNameById(itemEx.itemid).." in the process") doSendMagicEffect(toPosition, 4) end else doPlayerSendTextMessage(cid, 24,"You cant refine this item.") end return true end Note que pra colocar dodge num item ele tem que: Estar equipado se for qualquer tipo de armadura (legs, boots, helmet, armor) ou livremente (se for weapon/shield).. Necklaces, rings e pendants não são possíveis de colocar dodge.. se vc quiser que seja edita essa função dentro do script pros slots de ring e necklace mas eu não aconselharia a fazer isso. e no xml coloque: <action itemid="8306" script=upgraderock.lua"/>1 ponto -
[v32] GlobalFull 11/12 - New Asuras, Falcons, Warzones 4,5,6 . (Updates Frequentes)
[v32] GlobalFull 11/12 - New Asuras, Falcons, Warzones 4,5,6 . (Updates Frequentes)
anderson de souza reagiu a Qwizer por uma resposta no tópico
1 pontoGlobal 11/12x [v32] - New Falcons - New Asuras - Warzone 4,5,6 - Exercise Training - Raids 100% - Monstros 100% - Trainer Offline 100% - Trainer Online 100% - Taming system funcionando 100%; - Database completa - War System 100% - Global MAP Full - Store 100% - Imbuement - Prey System - Entre outros sistemas. Projeto no: GITHUB Scan Vírus Total IMAGES Créditos:1 ponto -
Sprites Digicerb
Sprites Digicerb
Sexyboyy reagiu a Thiago Rulexz por uma resposta no tópico
1 pontoBom a pedidos vim postar a sprite do digicerb... "mais a spr e dat dele já é publica mimimi" Somente até a versão 1.1 (Estou trazendo a Versão Oficial, que diga-se de passagem tirei do cliente dele hoje) Não faço ideia de que versão está o servidor dele... mais me pedirão as spr e dat... Vamos Lá xD (*OBS: Não funciona Object Builder, pelo menos aqui só funcionou no Dat Editor) Download SCAN Creditos Insaed Digiwo kbpaulo Digicerb Imagem1 ponto -
[TFS 1.2] Firestorm Event
1 pontoVideo de Demonstração ________________________________________________ data/firestorm_event.lua -- firestorm Variables fsJoinedCountGlobalStorage = 18900 --Player joined event count / recuento de players. fsJoinStorage = 18901 --player join storage / storage del jugador a unirse. fsMinPlayers = 2 --min players needed when time runout / minimo de players necesarios para comenzar el evento. fsMaxPlayers = 5 --max players to join / maximo de players. fsTrophy = 7369 --trophy itemid / itemid del premio(que no sea stackable). fsEventCountGlobalStorage = 18902 --firestorm Count (no move/no moverle). fsWaitMinutes = 1 --when event has opened, how long until it starts? / cuantos minutos tarde el evento en empezar. fsWaitingRoomPos = Position(1016, 940, 7) --middle of waiting room / punto medio de el cuarto de espera. fsArena = Position(991, 930, 7) --when even start where should player be teleported in the arena? / punto donde seran transportados los players. fsArenaFromPosition = Position(984, 925, 7) --pos of top left corner / posicion de esquina superior izquierda. fsArenaToPosition = Position(998, 935, 7) --pos of bottom right corner /posicion de esquina inferior derecha. fsMiddleEventArena = Position(991, 930, 7) --Middle pos of the arena / punto medio de la arena fsWaitingRoomRadiusX = 8 --depends how big the waiting room is 20sqm to x / depende de lo grande la sala de espera en x fsWaitingRoomRadiusY = 8 --depends how big the waiting room is 20sqm to y / depende de lo grande la sala de espera en y fsEventArenaRadiusX = 15 --Depends how big the firestorm arena is 50sqm to x / depende de lo grande de la arena en x fsEventArenaRadiusY = 15 --Depends how big the firestorm arena is 50sqm to y / depende de lo grande de la arena en y fsStartedGlobalStorage = 18903 -- Value: 0 == false, 1 == true, 2 == started --State of the event fsCreateTeleportPosition = Position(1000, 1000, 7) --Where should the teleport be created? / posicion donde sera creado el teleport? function startfirestorm() local specs = Game.getSpectators(fsWaitingRoomPos, false, true, 0, fsWaitingRoomRadiusX, 0, fsWaitingRoomRadiusY) if Game.getStorageValue(fsJoinedCountGlobalStorage) <= fsMinPlayers then for i = 1, #specs do specs[i]:teleportTo(specs[i]:getTown():getTemplePosition(), false) specs[i]:setStorageValue(fsJoinStorage, 0) end resetfsVariables() Game.broadcastMessage('firestorm Event failed to start, because of to little players joined the event!', MESSAGE_STATUS_WARNING) return true end for i = 1, #specs do local rX, rY, rZ rX = math.random(fsArenaFromPosition.x, fsArenaToPosition.x) rY = math.random(fsArenaFromPosition.y, fsArenaToPosition.y) rZ = math.random(fsArenaFromPosition.z, fsArenaToPosition.z) specs[i]:teleportTo(Position(rX, rY, rZ)) end Game.broadcastMessage("firestorm Event has started, good luck to all participant.", MESSAGE_STATUS_WARNING) Game.setStorageValue(fsStartedGlobalStorage, 2) doStartfirestorm() end function doStartfirestorm() if Game.getStorageValue(fsJoinedCountGlobalStorage) > fsMaxPlayers then return false end if Game.getStorageValue(fsStartedGlobalStorage) == 2 then local specs = Game.getSpectators(fsArena, false, true, 0, 10, 0, 10) for i = 1, #specs do local randX, randY, randZ randX = math.random(fsArenaFromPosition.x, fsArenaToPosition.x) randY = math.random(fsArenaFromPosition.y, fsArenaToPosition.y) randZ = math.random(fsArenaFromPosition.z, fsArenaToPosition.z) local randfire = Position(randX, randY, randZ) local randX1, randY1, randZ1 randX1 = math.random(fsArenaFromPosition.x, fsArenaToPosition.x) randY1 = math.random(fsArenaFromPosition.y, fsArenaToPosition.y) randZ1 = math.random(fsArenaFromPosition.z, fsArenaToPosition.z) local randfire1 = Position(randX1, randY1, randZ1) local creature, players = nil, Game.getPlayers() for i = 1, #players do creature = players[i] doSendDistanceShoot(fsArenaFromPosition, randfire, 4) doSendDistanceShoot(fsArenaToPosition, randfire, 4) doSendDistanceShoot(Position(998, 925, 7), randfire, 4) doSendDistanceShoot(Position(984, 935, 7), randfire, 4) doAreaCombatHealth(creature.uid, COMBAT_HOLYDAMAGE, randfire,randfire, -9999, -1000000,7) end end addEvent(doStartfirestorm, 500) end end function resetfsVariables() Game.setStorageValue(fsEventCountGlobalStorage, 0) Game.setStorageValue(fsJoinedCountGlobalStorage, 0) Game.setStorageValue(fsStartedGlobalStorage, 0) end creaturescripts/scriptsdofile('data/firestorm_event.lua') function onPrepareDeath(player, killer) local winner = 0 if player:getStorageValue(fsJoinStorage) >= 1 then Game.setStorageValue(fsJoinedCountGlobalStorage, Game.getStorageValue(fsJoinedCountGlobalStorage)-1) player:teleportTo(player:getTown():getTemplePosition()) player:setStorageValue(fsJoinStorage, 0) player:addHealth(player:getMaxHealth()) if Game.getStorageValue(fsJoinedCountGlobalStorage) <= 1 then --Event ended, someone won! local pla, play = nil, Game.getPlayers() for i = 1, #play do pla = play[i] if pla:getStorageValue(fsJoinStorage) == 1 then winner = pla:getId() break end end winner = Player(winner) if winner then winner:teleportTo(winner:getTown():getTemplePosition()) winner:addHealth(winner:getMaxHealth()) local trophy = winner:addItem(fsTrophy, 1) if trophy then trophy:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, '['.. winner:getName() ..'] has won the firestorm Event.') end Game.broadcastMessage(string.format('%s is the winner of firestorm Event', winner:getName()), MESSAGE_STATUS_WARNING) end resetfsVariables() end return false end return true end Creaturescripts/scripts dofile('data/firestorm_event.lua') function onPrepareDeath(player, killer) local winner = 0 if player:getStorageValue(fsJoinStorage) >= 1 then Game.setStorageValue(fsJoinedCountGlobalStorage, Game.getStorageValue(fsJoinedCountGlobalStorage)-1) player:teleportTo(player:getTown():getTemplePosition()) player:setStorageValue(fsJoinStorage, 0) player:addHealth(player:getMaxHealth()) if Game.getStorageValue(fsJoinedCountGlobalStorage) <= 1 then --Event ended, someone won! local pla, play = nil, Game.getPlayers() for i = 1, #play do pla = play if pla:getStorageValue(fsJoinStorage) == 1 then winner = pla:getId() break end end winner = Player(winner) if winner then winner:teleportTo(winner:getTown():getTemplePosition()) winner:addHealth(winner:getMaxHealth()) local trophy = winner:addItem(fsTrophy, 1) if trophy then trophy:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, '['.. winner:getName() ..'] has won the firestorm Event.') end Game.broadcastMessage(string.format('%s is the winner of firestorm Event', winner:getName()), MESSAGE_STATUS_WARNING) end resetfsVariables() end return false end return true end creaturescripts.xml <!-- firestorm --> <event type="prepareDeath" name="fire_event" script="xxxx.lua"/> login player:registerEvent("fire_event") globalevents/scripts dofile('data/firestorm_event.lua') function onThink(interval, lastExecution, thinkInterval) resetfsVariables() if Game.getStorageValue(fsStartedGlobalStorage) < 1 then local teleport = doCreateItem(11796,1,fsCreateTeleportPosition) if teleport then doSetItemActionId(teleport, 5499) doSendMagicEffect(fsCreateTeleportPosition, CONST_ME_TELEPORT) end local r_tp = Tile(fsCreateTeleportPosition):getItemById(11796) addEvent(function() r_tp:remove() getTileItemById(fsCreateTeleportPosition, 11796) end, 60 * 1000) addEvent(function() doSendMagicEffect(fsCreateTeleportPosition, CONST_ME_TELEPORT) end, 60 * 1000) end Game.setStorageValue(fsStartedGlobalStorage,1) print('firestorm Event has started & waiting for players to join! Min: '.. fsMinPlayers ..'/'.. fsMaxPlayers ..'.') Game.broadcastMessage('The firestorm Event has started! You have '.. fsWaitMinutes ..' minutes to join!', MESSAGE_STATUS_WARNING) addEvent(startfirestorm, fsWaitMinutes * 60 * 1000) return true end globalevents.xml <!-- FireStorm--> <globalevent name="firestorm_event" interval="72000000" script="xxxx.lua"/> movements/scripts dofile('data/firestorm_event.lua') function onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() if Game.getStorageValue(fsStartedGlobalStorage) == 2 then player:sendTextMessage(MESSAGE_INFO_DESCR, 'The Firestorm Event has already started.') player:teleportTo(fromPosition, true) return false end if Game.getStorageValue(fsStartedGlobalStorage) == 0 then player:sendTextMessage(MESSAGE_INFO_DESCR, 'The Firestorm Event has not started yet.') player:teleportTo(fromPosition, true) return false end if Game.getStorageValue(fsJoinedCountGlobalStorage) >= fsMaxPlayers then player:teleportTo(fromPosition, true) player:sendTextMessage(MESSAGE_INFO_DESCR, 'The Firestorm Event is already full! ['.. Game.getStorageValue(fsJoinedCountGlobalStorage) ..'/'.. fsMaxPlayers ..']') return false end player:teleportTo(fsWaitingRoomPos) Game.setStorageValue(fsJoinedCountGlobalStorage, Game.getStorageValue(fsJoinedCountGlobalStorage) + 1) Game.broadcastMessage(string.format('%s has joined the Firestorm Event! [%s/'.. fsMaxPlayers ..'].', player:getName(), Game.getStorageValue(fsJoinedCountGlobalStorage)), MESSAGE_STATUS_WARNING) player:setStorageValue(fsJoinStorage, 1) return true end Movements.xml <!-- firestorm --> <movevent event="StepIn" actionid="5499" script="xxxx.lua"/> ________________________________________________ Créditos: Scrappy Coco1 ponto
-
TFS 0.4 CAST
TFS 0.4 CAST
Lurk reagiu a luanluciano93 por uma resposta no tópico
1 pontoOlá pessoal, tive a iniciativa de criar esse tópico para atualizar e otimizar as sources do TFS 0.4 DEV que é uma das mais usadas no mundo do otserv. Conteúdo totalmente gratuito e pretendemos melhora-lo cada vez mais. Qualquer um pode colaborar, postando bugs, erros, otimizando códigos, comentar aqui no tópico, toda ajuda é bem vinda, vamos tornar essa a melhor source disponível. Conto com vocês. Versão do Tibia: 8.60 Alguns sistema já implementados na source: • TFS 0.4 DEV rev 3777 (by TFS Team) • Anti-Divulgação (.servegame, .no-ip, .net, .com, .org, .pl, .biz, .br, .sytes, .info) • War System • Cast System (by Summ) • Retirado bugs de anti-push .. • Retirado bugs de elfbot ... • Retirado erro de não aceitar outros items ... • Retirado erro de Malformed File ... • Add creatureevent onMoveItem() ... • Add função getCreaturePathTo () ... • E vários outros! Complementos: • Add cast System (passo a passo): [AQUI] • Pode add o comando na config.lua: healthHealingColor = COLOR_GREEN -- [podendo alterar a cor]. manaHealingColor = COLOR_DARKPURPLE -- [podendo alterar a cor]. Downloads: • Distro Compilada 32x • Distro Compilada 64x • Sources 7 TESTADO EM WINDOWS, DEBIAN 7.8, UBUNTU 12.04 E 14.05! • Compilar em Linux: • Erros para arrumar: Obrigado ao runeraserver pelo incentivo em fixa-la para linux E é isso pessoal, espero ter ajudado, abraços1 ponto -
[C++] doCreatureCastSpell(creature, spellName)
[C++] doCreatureCastSpell(creature, spellName)
Sexyboyy reagiu a Orochi Elf por uma resposta no tópico
1 ponto[C++] doCreatureCastSpell (0.3.6pl1) Escrito e testado: 0.3.6PL1 [8.54 - 8.60] Salve galera do TibiaKing, eu fui procurar na internet sobre essa função e vi que já tentaram cria-la, porém não conseguiram, ou se conseguiram nunca postaram. Então eu resolvi faze-la para vocês, e eu percebi que ninguém nunca tinha feito, por causa de uma dúvida, e um certo grau de dificuldade. Certamente, eu tive uma dificuldade no começo, porém ao desenvolver da função eu percebi que não era nada de mais. Então eu trago aqui pra vocês esta função, cuja a ideia é fazer com que a criatura (jogador ou monstro) a utilize uma magia pelo nome dela, importante lembrar que o nome da magia, não é as palavras mágicas, exemplo: "utani hur" é a palavra mágica e "haste" é o nome da magia. Enfim, sem mais delongas e vamos aos códigos Vá ao arquivo "LuaScript.cpp" e procure por: //doPlayerAddExperience(cid, amount) lua_register(m_luaState, "doPlayerAddExperience", LuaScriptInterface::luaDoPlayerAddExperience); E abaixo adicione: //doCreatureCastSpell // by OrochiElf. lua_register(m_luaState, "doCreatureCastSpell", LuaScriptInterface::luaDoCreatureCastSpell); Agora procure por: E abaixo adicione: int32_t LuaScriptInterface::luaDoCreatureCastSpell(lua_State* L) // by OrochiElf. { //doCreatureCastSpell(cid, spellname) std::string spellName = popString(L); ScriptEnviroment* env = getEnv(); if(Creature* creature = env->getCreatureByUID(popNumber(L))) { InstantSpell* spell = g_spells->getInstantSpellByName(spellName); if(!spell) { lua_pushboolean(L, false); return 1; } Creature* target = creature->getAttackedCreature(); if(target) spell->castSpell(creature, target); else spell->castSpell(creature, creature); lua_pushboolean(L, true); } else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Agora vá ao arquivo "LuaScript.h" e procure por: static int32_t luaDoPlayerAddItem(lua_State* L); E abaixo adicione: static int32_t luaDoCreatureCastSpell(lua_State* L); // by OrochiElf Exemplo, eu tenho um pet, e quero que ele utilize a magia de "utani hur" - "haste". Talkaction Code: function onSay(cid, words, param, channel) local summon = getCreatureSummons(cid)[1] if isCreature(summon) then doCreatureCastSpell(summon, "haste") end return true end Esta função é muito requisitada para fazer servidores de pokémon, evitando gambiarras. Que foi o motivo para qual eu desenvolvi ela Créditos. Tony Araújo (OrochiElf) 100%1 ponto -
OT Server "Analytics"
OT Server "Analytics"
dragonfight reagiu a Wolven por uma resposta no tópico
1 pontoEdit: Retomei o projeto do OTChecker, aprimorando o sistema de notificações e agora também coletando informações dos jogadores. https://otchecker.net1 ponto -
Experience System
Experience System
Yan Liima reagiu a xWhiteWolf por uma resposta no tópico
1 pontoEai galera, eu acabei criando um sistema bem legal que você mata certos bixos e acumula parte da experiencia deles na sua arma, por enquanto tá bem rudimentar mas eu gostaria de saber a opinião de vocês.. esses leveis a mais deveriam significar oque?? Comentem as sugestões doque vocês acham que o level da arma deveria influenciar no sistema que depois eu vejo de postar ele Uma arma +5 deveria ter oque em relação à uma arma que não tem level ainda? É isso que eu quero que vcs comentem com sugestões pra terminar o sistema. Aqui tá uma lista de coisas que eu pensei mas sintam-se livres pra falar opções que vcs considerem melhores: • Dropar mais gold dos monstros • Adicionar skills pro player • Aumentar vida/mana • Tirar mais dano (+ attack) • Deixar ele tomando alguma condition (poison/curse/fire/energy) • Liberar novas magias pro player • Ao clicar nela/Ao atacar soltar um efeito bonito • Fazer um efeito em area em volta do char que possuir uma arma de nivel alto • Aumentar a experiencia ganha • Roubar vida/Mana de quem atacar dependendo do level • Aumentar chance de critical dependendo do level Então, essas foram as coisas que eu pensei.. eu também fiz uma votação pra vcs colocarem se eu devo continuar com essa idéia ou se ela é uma merda auheuhuha1 ponto -
[Ajuda] Bike Slot
[Ajuda] Bike Slot
eliaszinho reagiu a Wlucas por uma resposta no tópico
1 pontoPode adicionar depois dessa linha function onUse(cid, item, itemEx, fromPosition, toPosition)1 ponto -
[Ajuda] Bike Slot
1 pontoClaro que posso ajudar pq não ne.. Desculpa a demora, estou pelo celular e ficou meio complicado arrumar o script kkkk.. Vamos lá Primeiro vamos no script da bike. Adicione isso. if item.uid ~= getPlayerSlotItem(cid, CONST_SLOT_RING).uid then ---Coloquei Slot RING pq nao sabia o nome do correto doPlayerSendCancel(cid, "Voc� deve colocar sua bike no local correto.") return TRUE end Agora em items.XML Procure pelo o id de sua bike e adicione. <attribute key="slotType" value="ring" /> Funcionou? Rep++1 ponto
-
como trocar a base do seu ot sever
como trocar a base do seu ot sever
danielbenassi reagiu a Wlucas por uma resposta no tópico
1 pontoClica no botao gostei.. Quanto ao tópico, o otserv que VC baixo é o que diríamos a base.. O que VC quer é editar a base e não troca-la. Se não for isso especifique-se melhor.1 ponto -
(Resolvido)Como faz pra checar storage em tabela?
Veja: local valor = config[getPlayerStorageValue(cid)] Você se esqueceu de determinar o parâmetro referente ao id da key a ter o valor retornado, por isso o nil citado. getPlayerStorageValue(cid, key) Faça uso de um escopo como o que o membro acima fez, para evitar demais erros.1 ponto
-
[POKETIBIA] Base
[POKETIBIA] Base
sirhallz reagiu a eliaszinho por uma resposta no tópico
1 pontomano eu tenho uma base com system lvl akeles q mostra na frente do pokemon ne ? so vc add os mega o servidor e 93 % sem bugs otimo server vem chat se enteressa1 ponto -
SQL Error (2003): Can't connect to MySQL server on 'localhost' (10061)
Vai na pasta do teu site.. E abri o arquivo config.php, verifica se o IP está correto. Ou melhor.. Ver se no config.lua do server a data base está correta, o nome da dB tem que ser a que tu criou no phpmyadmin1 ponto
-
SQL Error (2003): Can't connect to MySQL server on 'localhost' (10061)
sqlPass = "" senha do site1 ponto
-
My real glooth factory
1 pontoHello guys , srry i dont speak br but i want to post my project here. first look glooth factory by gbxx Update rooms + monsters This map is made by myself1 ponto
-
Cassino BBOT
Cassino BBOT
millus reagiu a Gusttavomarinho por uma resposta no tópico
1 pontonao e possivel fazer script de dicer ou cassino no bbot1 ponto -
(Resolvido)Como faz pra checar storage em tabela?
local config = { [3001] = {HP = 900}, -- [Storage] = {HP = Quantidade} [3002] = {HP = 780}, } function onUse(cid, item, frompos) local valor = config[getPlayerStorageValue(cid)] if valor then setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) +valor.HP) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) doSendMagicEffect(frompos, 10) doPlayerSendTextMessage(cid, 20, "Congratulations!") end return true end Só colocar o valor em questão if tabela[x] then print("foi") else print("n foi") end se X corresponder a algum índice da tabela, vai retornar algo, se não, nil, e nil é interpretado como false, no if do lua. @Flaah, não esqueça de remover o item, ou modificar o storage, para que o player não possa usar de novo quantas vezes quiser.1 ponto
-
Global FULL 8.60 | Zao, War System, Cast System...
Global FULL 8.60 | Zao, War System, Cast System...
AllessandroHost reagiu a tiroleivi por uma resposta no tópico
1 pontoBoa Tarde Galera, peço 1 pouco de paciência de vcs pq estou sem internet me mudei mo MT para GO e aqui para instalarem 1 internet aonde eu moro demora 45 Dias, assim que eu tiver com internet irei ajudar a todos. Skype : jean-marcel11 Facebook : [email protected] WhatsApp : (65) 9676-8458 (ON Quase Todo Tempo)1 ponto -
como trocar a base do seu ot sever
como trocar a base do seu ot sever
danielbenassi reagiu a vankk por uma resposta no tópico
1 pontoEsta é uma mensagem automática, este tópico foi movido para a área correta. Regras do fórum: http://www.tibiaking.com/forum/topic/1281-regras-gerais/#comment-7680 Este tópico foi movido: De: OTServ > Notícias e OTServ Geral Para: Suporte OTServ > OTServ > Suporte de OTServ Geral1 ponto -
como trocar a base do seu ot sever
como trocar a base do seu ot sever
danielbenassi reagiu a Pay My Pass por uma resposta no tópico
1 pontopor favor, explique melhor o que você está pedindo.1 ponto -
[v32] GlobalFull 11/12 - New Asuras, Falcons, Warzones 4,5,6 . (Updates Frequentes)
[v32] GlobalFull 11/12 - New Asuras, Falcons, Warzones 4,5,6 . (Updates Frequentes)
ivorlz reagiu a chefchanky por uma resposta no tópico
1 pontofiquei muito tempo longe de OT alguem pode me explicar como faço pra abrir o server tem tanta pasta que tem q baixa, que nao to entendenu mais nada kkkk1 ponto -
[AJUDA] como almentar o tamanho do meu mapa
[AJUDA] como almentar o tamanho do meu mapa
danielbenassi reagiu a rogylennon por uma resposta no tópico
1 pontoVa em em map, no canto superior esquerdo, depois clique em properties... e depois clique em seguida aumente o numero em "map dimension" e só !! o valor que vc alterou é o x e o y que foram almentados no seu map gostou ? deixa um gostei ><1 ponto -
Tanker Method
Tanker Method
Breniinx reagiu a xWhiteWolf por uma resposta no tópico
1 pontoFala galera do TibiaKing, vim trazer pra vocês uma magia bem simpleszinha mas que vai ajudar muita gente com aquelas dúvidas de funções que mudam outfit. Testado e funcionando em TFS 0.3.6 (8.54) Explicação: É uma spell que ao usar muda seu outfit para o de um warmaster (acho q é isso o nome), aumentando seu escudo e sua vida pelo preço de toda a sua mana. É uma spell excelente para servers com bastante RPG pois dá praticamente uma segunda vida ao player e permite que Knights virem exímios blockers nas quests da vida. Coloquei no meu server e graças a essa spell a galera conseguiu fazer a POI depois de quase 6 meses de server. Vale ressaltar que o player não ganha vida, apenas dobra a quantidade máxima e ele tem que healar a quantidade a mais que ele ganhou. spells\scripts\tanker.lua setConditionParam(condition, CONDITION_PARAM_TICKS, 60000) e doSetCreatureOutfit(cid, mtanker, 60000) e doSetCreatureOutfit(cid, ftanker, 60000) da mesma forma que você pode alterar a quantidade de shield e de vida que você ganha ao utilizá-la mas eu tenho razões pra acreditar que a forma atual dela é a ideal. Aqui no meu server ela tá definida para apenas Knights mas vocês podem editar isso a gosto. spells.xml <instant name="tanker" words="uteta gran vita" lvl="220" mana="300" prem="1" aggressive="0" selftarget="1" exhaustion="2000" needlearn="0" event="script" value="tanker.lua"> <vocation id="8"/> </instant> EDIT: Algumas imagens de como a magia funciona:1 ponto -
[LUA] Ban System 9.6+
[LUA] Ban System 9.6+
Vodkart reagiu a igorlabanca por uma resposta no tópico
1 pontoTem um erro nesse script, está dando para banir apenas uma conta... pois todos outros bans estavam indo com id 0 ai tava dando duplicate no banco de dados... logo para solucionar fiz uma gambiarra kk onde tem: return db.executeQuery("INSERT INTO `ban_table` (`account`, `added`, `expires`, `admin_id`, `comment`) VALUES ('".. accid .."', '".. os.time() .."', '".. time .."', '".. admin_id .."', '".. comment .."');") Substitui por: return db.executeQuery("INSERT INTO `ban_table` (`id`,`account`, `added`, `expires`, `admin_id`, `comment`) VALUES ('".. accid .."','".. accid .."', '".. os.time() .."', '".. time .."', '".. admin_id .."', '".. comment .."');")1 ponto -
Urgente Erro temple position is wrong contact with the administration
1 ponto
-
Erro no step 2.
1 pontoVerifica se no config.lua tenha essa linha ... se não adicione : passwordType = "sha1"1 ponto
-
[8.54] Servidor + Client Naruto B&W [EXCLUSIVO]
Agora deu certo. Vlw!! Rep+1 ponto
-
[8.54] Servidor + Client Naruto B&W [EXCLUSIVO]
Obrigado rsrs!! No Inicio eu tbm procurava um servidor assim @UP @UP @UP1 ponto
-
♥ Ediinsz WorkShop ♥
♥ Ediinsz WorkShop ♥
XikoFuraTripa reagiu a EdsonJunior por uma resposta no tópico
1 pontoApresentação: Olá meu nome é Edson Junior, algumas pessoas me conhecem, outras não. Bem, a fim de ajudar a comunidade BBot (que eu uso há muito tempo) eu decidi fazer uma "oficina", e o melhor, tudo será gratuito. Tudo vai ser atualizado, eu não vou usar meus scripts antigos, todos na versão 2014. Porque gratuito? Particularmente, eu odeio essa visão de o Tibia ser um negócio, isso é um jogo, é pra diversão. Knight´s Scripts Banner em construção Level 8-15 - Trolls Edron - Script Level 10-20 - Swamp Trolls Port Hope - Script Level 25-50 - Minotaurs Darashia - Script Level 15-30 - Rotworms Liberty Bay - Script Level 30-50 - Tortoise / Barbarians Fenrock - Script Level 100+ - Yielothax - Outra Dimensao Farmine - Script Level 20+ - Farmine Mines - Script Level 130+ - Lizard High Class - Script Level 50+ - Apes -1 - Script Level 150+ - Frost Dragons Okolnir - Script Paladin´s Scripts Banner em construção Level 9-15 - Rotworms Darashia - Script Level 40-60 - Mutated Humans Yalahar - Script Mage´s Script Banner em construção Level 60+ - Necromancer Drefia - Script Level 100+ - Yielothax - Outra dimensao Farmine - Script Level 20+ - Farmine Mines - Script Level 50+ - Earth Elementals Edron - Script Level 50+ - Dragon Lair (Sem DL) Edron - Script Level 50+ - Wailing Widow Cave - Script Level 100+ - Mountain Vengoth - Script1 ponto -
[DUVIDA] Tem como mudar o bradcasted message
Fmz,man,qualquer coisa to ae1 ponto
-
[DUVIDA] Tem como mudar o bradcasted message
[DUVIDA] Tem como mudar o bradcasted message
hulk6724 reagiu a In This Moment por uma resposta no tópico
1 pontose ele não sabe de nada cara como voçe quer que ele ache easy as coisas assim --' va em data/globalevents/scripts e abra os aquivos 1 por 1 e ache o que esta com a mensagem que voçe quer e poste aqui !1 ponto -
[v32] GlobalFull 11/12 - New Asuras, Falcons, Warzones 4,5,6 . (Updates Frequentes)
-1 pontos