Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 06/01/10 em todas áreas
-
PokeBall System! Ola Xtibianos, Vim hoje postar um Famoso Script de Pokeball System feito pelo Genioso Nahruto, claro pedi a autorização dele para postar. A Todos que forem pegar Scripts de outras Pessoas, lembre-se de sempre pedir autorização e claro colocar os creditos. Para Tfs: 0.34 , 0.35 e 0.36 Essas Forao Testadas E Funfo. Versoes: 8.42 - 8.50 - 8.52 - 8.54 - 8.6. Ots Testados: Snowz Yurots - Alissow Server - Styller Yurots Primeiramente Vamos Fuçar em Function.lua, se voce nao Sabe onde fica vá em: Data>Lib>Function.lua Abra e Coloque Isto: _warpzone = 2147483648 -- start storing strings here (THIS IS THE ABSOLUTE MAXIMUM VALUE FOR THIS) _maxlength = 1024 -- multiply by 3 to get the true length. setPlayerStorageInteger = setPlayerStorageValue getPlayerStorageInteger = getPlayerStorageValue function setPlayerStorageString(cid, key, value) if #value > (_maxlength-1) * 3 - 1 then -- Last word is reserved for 0 termination of the string. error("Storage string is too long") end if key > _warpzone / _maxlength then error("Storage string key is too large (" .. key .. ")") end key = _warpzone + key * _maxlength local word = 0 local wordwrap = 0 local wordcount = 0 local i = 1 while i <= #value do local byte = string.byte(string.sub(value, i, i)) word = bit.bor(word, bit.lshift(byte, wordwrap)) wordwrap = wordwrap + 8 if wordwrap == 24 then --[[ In the ideal world we would be able to store 4 characters per word, however, as the default return value for getPlayerStorageValue is -1, we cant use the last bit. ]]-- setPlayerStorageInteger(cid, key + wordcount, word) word = 0 wordwrap = 0 wordcount = wordcount + 1 end i = i + 1 end -- store the last word setPlayerStorageInteger(cid, key + wordcount, word) end function getPlayerStorageString(cid, key) if key > _warpzone / _maxlength then error("Storage string key is too large (" .. key .. ")") end key = _warpzone + key * _maxlength local wordcount = 0 local str = "" while true do if wordcount >= _maxlength then break end local word = getPlayerStorageInteger(cid, key + wordcount) if word == -1 then -- end of string break else -- Extract the 3 characters from the value byte = bit.band(word, 255) if byte == 0 then break else str = str .. string.char(byte) end byte = bit.rshift(bit.band(word, 65280), 8) if byte == 0 then break else str = str .. string.char(byte) end byte = bit.rshift(bit.band(word, 16711680), 16) if byte == 0 then break else str = str .. string.char(byte) end end wordcount = wordcount + 1 end return str end E Isso! function doConvinceSummon(cid, creature, amount, pos) summonplayerpos = {x=pos.x, y=pos.y, z=pos.z, stackpos=253} summonplayer = getThingfromPos(summonplayerpos) if(summonplayer ~= nil and summonplayer.itemid > 0) then doPlayerSendCancel(cid,"There is not enough room to summon here.") ret = 0 else convince = doSummonCreature(creature, pos) doConvinceCreature(cid, convince) ret = 1 end return ret end Agora Vamos Fazer o Script Vá em Pasta do Seu Ot > Data > Actions > Scripts Crie uma Pasta chamada pokeball.lua e bote isso dentro local notAllowed = {"Ferumbras", "Demon"} local storage = { status = 25650, pokeName = 25651 } local actionid_used = 7510 function onUse(cid, item, fromPos, item2, toPos) local pokeballStatus = getPlayerStorageValue(cid, storage.status) local pokeName = getPlayerStorageString(cid, storage.pokeName) pos = getPlayerPosition(cid) pos.stackpos = 0 if pokeballStatus == -1 then toPos.stackpos = 253 local pokeThing = getThingfromPos(toPos) if isCreature(pokeThing.uid) == TRUE then if isPlayer(pokeThing.uid) == FALSE then local pokename_ = getCreatureName(pokeThing.uid) if item.actionid ~= actionid_used then -- local maxHealth = 400 -- local creatureHealth = getCreatureHealth(pokeThing.uid) -- local divNum = (string.len(maxHealth)-1)^2 -- local result = math.floor((creatureHealth/divNum)/10) -- local chance = math.random(1, math.random(4, math.random(7, math.max(result, 7)))) -- if chance == result then if isInTable(notAllowed, pokename_) == TRUE then doPlayerSendCancel(cid, "You cannot catch this creature") else setPlayerStorageString(cid, storage.pokeName, pokename_) doRemoveCreature(pokeThing.uid) doSendDistanceShoot(fromPos, toPos, 37) setPlayerStorageValue(cid, storage.status, 1) doSetItemSpecialDescription(item.uid, "it contains a " .. pokename_ .. ".") doSetItemActionId(item.uid, actionid_used) end -- else -- doSendMagicEffect(fromPos, 2) -- doPlayerSendCancel(cid, "The Pokemom Escaped") -- end elseif item.actionid == actionid_used and pokename_ == pokeName then doPlayerSay(cid, pokeName .. " Back!!", TALKTYPE_SAY) doRemoveCreature(pokeThing.uid) doSetItemSpecialDescription(item.uid, "it contains a " .. pokename_ .. ".") setPlayerStorageValue(cid, storage.status, 1) doSendDistanceShoot(fromPos, toPos, 37) else doSendMagicEffect(fromPos, 2) doPlayerSendCancel(cid, "This pokeball is already used") end else doPlayerSendCancel(cid, "You cannot catch this creature") end else doPlayerSendCancel(cid, "Creature not found") end elseif pokeballStatus == 1 then summons = getCreatureSummons(cid) -- if #summons >= 2 then -- doPlayerSendCancel(cid, "You cannot call more pokemons") -- else doConvinceSummon(cid, pokeName, 0, toPos) doSendDistanceShoot(fromPos, toPos, 37) doPlayerSay(cid, pokeName .. " Go!!", TALKTYPE_SAY) setPlayerStorageValue(cid, storage.status, -1) doSetItemSpecialDescription(item.uid, "it is empty.") -- end end else return 1 end function isInTable(t, val) for _, v in pairs(t) do if v == val then return TRUE end end return LUA_ERROR end para TFS local notAllowed = {"Ferumbras", "Demon"} local storage = { status = 15244, pokeName = 15212 } local actionid_used = 7510 function onUse(cid, item, fromPos, item2, toPos) local pokeballStatus = getPlayerStorageValue(cid, storage.status) local pokeName = getPlayerStorageString(cid, storage.pokeName) pos = getPlayerPosition(cid) pos.stackpos = 0 if pokeballStatus <= 0 then toPos.stackpos = 253 local pokeThing = getThingfromPos(toPos) if isCreature(pokeThing.uid) == TRUE then if isPlayer(pokeThing.uid) == FALSE then local pokename_ = getCreatureName(pokeThing.uid) if item.actionid ~= actionid_used then -- local maxHealth = 400 -- local creatureHealth = getCreatureHealth(pokeThing.uid) -- local divNum = (string.len(maxHealth)-1)^2 -- local result = math.floor((creatureHealth/divNum)/10) -- local chance = math.random(1, math.random(4, math.random(7, math.max(result, 7)))) -- if chance == result then if isInTable(notAllowed, pokename_) == TRUE then doPlayerSendCancel(cid, "You cannot catch this creature") else setPlayerStorageString(cid, storage.pokeName, pokename_) doRemoveCreature(pokeThing.uid) doSendDistanceShoot(fromPos, toPos, 37) setPlayerStorageValue(cid, storage.status, 1) doSetItemSpecialDescription(item.uid, "it contains a " .. pokename_ .. ".") doSetItemActionId(item.uid, actionid_used) end -- else -- doSendMagicEffect(fromPos, 2) -- doPlayerSendCancel(cid, "The Pokemom Escaped") -- end elseif item.actionid == actionid_used and pokename_ == pokeName then doCreatureSay(cid, pokeName .. " Back!!", TALKTYPE_SAY) doRemoveCreature(pokeThing.uid) doSetItemSpecialDescription(item.uid, "it contains a " .. pokename_ .. ".") setPlayerStorageValue(cid, storage.status, 1) doSendDistanceShoot(fromPos, toPos, 37) else doSendMagicEffect(fromPos, 2) doPlayerSendCancel(cid, "This pokeball is already used") end else doPlayerSendCancel(cid, "You cannot catch this creature") end else doPlayerSendCancel(cid, "Creature not found") end elseif pokeballStatus == 1 then -- summons = doCreatureSummons(cid) -- if #summons >= 2 then -- doPlayerSendCancel(cid, "You cannot call more pokemons") -- else doConvinceSummon(cid, pokeName, 0, toPos) doSendDistanceShoot(fromPos, toPos, 37) doCreatureSay(cid, pokeName .. " Go!!", TALKTYPE_SAY) setPlayerStorageValue(cid, storage.status, 0) doSetItemSpecialDescription(item.uid, "it is empty.") -- end end return 1 end function isInTable(t, val) for _, v in pairs(t) do if v == val then return TRUE end end return LUA_ERROR end Agora Vamos Adicionar as Tags, vá em Data>Actions.xml e Adicione as Tags Corretas´ <action itemid="xxxx" script="pokeball.lua" allowfaruse="1" blockwalls="1" /> [font-"Georgia"]em <action itemid="xxxx" nos 4 X voce coloca o Number Id Do seu Item que Será como uma "Pokeball"[/font] Oque o Script Faz Realmente: - Guarda monstros dentro de objetos e salva seu status, você pode colocar pra salvar em qlqr objeto.. seria ótimo para projetos pokemons.. Creditos: Nahruto Print Screen's: Snorlax Saindo da Pokeball: Snorlax Voltando para a Pokeball Look da Pokeball ( o Player so Ve assim You See a Pokeball , Have Snorlax )] Lembrando que eu nao Adicionei o Efeito da Pokeball Abrindo e Jogando o Monstro. Para fazer este Tipo de efeito voce vai ter que saber direitinho o LookType da Pokeball Fechando e Saindo, e transformar para um efeito e depois modificar no Script, aqui no xtibia Existe varios Tutoriais explicando isto, é so procurar! Gostou? Clica no Ali em Baicho para me Ajudar! Abraços..2 pontos
-
[Tutorial] Calabouços
aguinho600 reagiu a Koddy por um tópico no fórum
Saudações XTibianos! Venho aqui para abrir a sua mente! Fazê-lo esquecer de todo e qualquer tipo de Prisão que você sequer já viu. Levei um tempo para criá-lo, mas valeu a pena. O meu único pedido é que acompanhe este tutorial até o fim, e ao postar, não esqueça de desabilitar sua assinatura, se possuir imagens. Primeiramente, gostaria de me desculpar pela quantidade de imagens. Foi com a intenção de garantir o aprendizado de todos vocês, leitores. Se alguma imagem não abrir por inteira, atualize seu navegador. Caso o problema continue, selecione a imagem com o botão direito, e clique em Mostrar Imagem. Se mesmo assim o erro persistir, formate o seu computador. Aviso: Este tutorial envolverá outros quatro tutoriais, que serão citados ao longo de sua confortável leitura. Todos eles se encontram aqui mesmo no XTibia, na sessão "Tutoriais de Mapping". Calabouços "Calabouço é o andar mais profundo de um castelo, geralmente utilizado como prisão (como na bastilha), como armazém ou como porão. É descrito em filmes e livros de terror como um lugar com pouca iluminação, muito empoeirado e de difícil acesso." Fonte: Wikipédia Como podemos ver, calabouços são locais no subsolo, ou seja, estão abaixo do nível do mar. E tem como uma de suas utilidades, a prisão. Vamos aprender hoje, a criar um calabouço simples; com uma prisão e um pequeno armazém. Abra seu RME, e crie uma entrada "escondida" para o calabouço, um pouco longe de sua cidade. Será para lá que os prisioneiros irão; em um local isolado. Obs: Em hipótese alguma crie sua prisão ao céu aberto, estilo Yurots. Esse tipo de prisão não é atual, e por não possuir nada de medieval (ou mitológico), não se assemelha em nada com o Tibia. Crie uma área montanhosa ao ar livre para a entrada do calabouço. Coloque pedras, plantas ou árvores para dificultar o acesso, fazendo o jogador andar em diagonal, por exemplo. No caso, fiz uma Montanha de Terra. Se quiser fazer também, mas tem difículdades, aconselho dar uma lida neste tutorial, também feito por mim. Segue abaixo uma pequena lista de ID's que foram utilizados na imagem acima, que podem facilitar a criação de sua passagem para o seu calabouço. Para que a escada "embutida" na montanha funcione, visite este tutorial feito por Kyvorgury, que apesar de simples é bem útil. Créditos à ele. Após criar a entrada para seu calabouço, vamos ao andar inferior. Crie o formato dele, e depois detalhe-o. Caso queira ajuda na criação dela ou na decoração, visite os tutoriais feitos anteriormente por mim: Formando Caves e Detalhando Caves. Lembrando que ao terminar este andar, citarei mais uma vez alguns ID's que foram utilizados. Veja uma imagem de como ficou o piso inferior, feito ao meu estilo. Como podem ver, utilizei tochas nas paredes, algumas raízes de árvores, sempre com pedras. Obs: Os suportes para o carvão não são necessários, inclusive não sei se ficaram bem sendo utilizados aqui, mas como não há outro sprite parecido, usei ele mesmo. Se for um bom spriter, ou caso haja um na sua equipe, tente fazer algo parecido com as tochas da primeira imagem. E continue fazendo o caminho, não muito comprido, nem muito curto. Faça um caminho razoável até o andar inferior. Um comprimento suficiente para fazer o prisioneiro transpirar para chegar, mas não que faça com que ele seja carregado pelo guarda até chegar ao seu local. Como prometido, segue mais uma lista com parte dos ID's que foram utilizados neste andar. No andar inferior, crie uma passagem para os jogadores poderem transitar, e não se esqueça de adicionar o mais importante, as grades! Se tiver dificuldade na criação de uma 'gaiola', segue a dica de como fazê-la. (Faça-as fechadas, deixei aberta pois não há nenhum preso no momento, e é só para demonstração. Após fazer uma área com várias prisões, adicione os detalhes básicos. Crie mais e mais 'compartimentos', caso falte espaço, faça-os no piso inferior. Não se esqueça agora, de adicionar uma "cama" para o prisioneiro, e adicionar os balcões citados penúltima imagem. Adicione também alguns esqueletos, tanto na parede como no chão. Segue aqui alguns ID's que podem ser uilizados. Os ID's da última coluna serão utilizados agora, na criação do seu armazém. O barril d'água foi feito para chuva, mas pode servir de estoque para os condenados. Se quiser fazer o armazém cercado por parede, fique a vontade, só fique atento para não colocar uma parede muito esquisita. No armazém, recomendo fazer um estoque de água (com os dois tipos de barris), e também uma pequena quantidade de armas, para que os guardas do calabouço possam se equipar. Faça o acesso ao armazém com uma grade também, ou com uma porta trancada, que necessite de uma chave para realizar a passagem. É isso aí galera. Acabou. Espero que tenham gostado deste tutorial, e peço que não esqueçam de desabilitar a assinatura, na hora de comentar (sei que vão). Peço desculpas se ficou muito cansativo, mas espero que tenham entendido a ideia de um calabouço. Façam como quiserem. Refaçam. Inventem. Faça o seu próprio Calabouço ao seu estilo. Segue aí mais duas imagens do Calabouço. E... Dica: Em nenhuma das imagens acima me lembrei de utilizar teias de aranha. Elas caem super bem, desde que não seja em excesso, perto das grades dos prisioneiros. Principalmente dentro do armazém, próximo aos móveis e objetos. Obrigado por acompanhar o meu Tutorial até aqui, e peço: não esqueça de criticar. Tem algo que não gostou nas imagens acima? Algum 'bug' na criação do seu Calabouço? Quer elogiar? Faça como queira, apenas não deixe de comentar. Abraços, e até a próxima!1 ponto -
Isso ai galera, eu estarei sortiando toda a semana 1 mes de premium time e no final do mes 3 meses de premium times! Para participar, basta apenas deixar o nome do seu char UNHIDEN!Lembrando que apenas FREE ACCOUNTS podem concorrer, a sua conta deve ter sido criada a 6 meses e a do xtibia a pelo menos 1 mes!Vou fazer o sorteio por uma loteria, no tibialotery. Serao apenas 50 concorrentes por semana entao seja rapido!A de 3 meses nao tera limite de concorrentes. Lembrando, NAO PEDIREI EM NENHUM MOMENTO QUALQUER INFORMACAO SOBRE A SUA CONTA E SENHA. O Pagamento sera assim: Voce vai cadastrar uma conta no boacompra, vai fazer o pedido da premium time de um mes, e me mandar o boleto por MSN.Eu irei pagar, e no praso de 1 dia util voce recebera a premium.Lembrando que pagamentos por boleto nao podem ser cancelados, e a premium time ja vai direto para a sua conta nao precisa confirmar e so logar! Quem quiser participar deixa uma resposta como o modelo a seguir Nome do char: Data de criacao da conta no tibia: Data de criacao da conta no xtibia: O numero que deseja de 1 a 50(apenas 1 por pessoa): Porque eu mereco ganhar uma premium time do Andrew_? Lembrando que o sorteio sera feito no tibialotery entao a resposta do quinto item nao ira interferir na suas chances, coloquei-a ali para ver se vale a pena dar as premiums.Lembrando VOCE PRECISA SER FREE ACCOUNT PARA PARTICIPAR E EU VOU CONFERIR CADA UM! http://tibialottery.com/view/63738 1) 2)KiNNa 3) 4) 5)XJhoow 6) 7)Caicheiro 8) 9) 10) 11) 12) 13)Lopoi2 14) 15) 16) 17)moskitinho 18) 19)Kyvorgury 20) 21) 22) 23) 24) 25) 26) 27)Won Helder 28) 29) 30) 31) 32) 33)Eduen 34) 35) 36) 37) 38) 39) 40)Souwillian 41) 42) 43) 44) 45) 46) 47) 48) 49) 50) E o resultado SAIU VAMOS AOS PREMIOS! O sorteio será realizado HOJE AS 8 DA NOITE!1 ponto
-
1 ponto
-
Stum (Para Versões 8.50+)
ciappabrother reagiu a MatheusGlad por um tópico no fórum
Kara aqui a magia nem rodou, pois voce entrou em varias contradiçoes no nome do combat, tem partes qeu bota distanceCombat e outras combatDist. E a constante do DISTANCEEFFECT,CONST_ANI_PHYSICAL nao existe a constante ANI PHYSICAL nos distanceeffect. Script funfando: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_STUN) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.6, 0, -0.7, 0) local combatDist = createCombatObject() setCombatParam(combatDist, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combatDist, COMBAT_PARAM_EFFECT, CONST_ME_STUN) setCombatParam(combatDist, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLHOLY) setCombatFormula(combatDist, COMBAT_FORMULA_LEVELMAGIC, -0.4, 0, -0.5, 0) local condition = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition, CONDITION_PARAM_TICKS, 20000) setConditionParam(condition, CONDITION_PARAM_SPEED, -70) setConditionFormula(condition, -0.4, 0, -0.5, 0) setCombatCondition(combat, condition) function onCastSpell(cid, var) if(variantToNumber(var) ~= 0) then return doCombat(cid, combatDist, var) end return doCombat(cid, combat, var) end Eu botei no distance effect um SMALLHOLY porque tem uma semelhança com a CONST ME STUN.1 ponto
Líderes está configurado para São Paulo/GMT-03:00