Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 08/09/10 em todas áreas

  1. DevilMoon

    [ Action ]Pokeball System

    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..
    3 pontos
  2. fsg

    [Iniciante] Dicas Para Treiners Naturais

    Dicas para Treiners Naturais A intenção deste tutorial é mostrar aos mappers, iniciantes ou não, como pode ser feito áreas para treino naturais, ou seja, um lugar para os players treinar sem ser exatamente com treiner monk. Você deve estar se perguntando: "Porque vou me dar ao trabalho de criar algo assim se com um monte de treiner monk num prédio é mais fácil?" Não existe uma resposta especifica para esta pergunta, mas veja bem, se utilizar a idéia deste tutorial você poderá fazer um mapa diferente, bonito e inovador, a idéia deste tutorial não é lhe ensinar "tin tin por tin tin", mas dar uma visão diferente sobre treiners. -A caverna do treino: Na imagem abaixo mostro onde o player irá treinar. Se você reparar bem, há "cantos" onde o player pode ficar que somente duas criaturas irão ataca-lo. -Veja a outra imagem: As bolinhas vermelhas é a posição do player e os quadrados verdes são onde os slimes (ou outra criaturas) ficariam. Tibia possui muita variedade de criaturas, e com a edição podemos criar um número infinito delas. Há a possibilidade de fazer várias áreas diferentes, não só com slimes, mas com rotworms, cyclops, tudo que for favorável ao treino de skills. -Cave de rotworms: Tudo o que precisamos fazer como mapper é dar ao jogador a possibilidade do treino, moldando o mapa para tal e adicionando o monstro certo. Talvez seja necessário um editada nos monstros, como os slimes, crie um monstro chamado Slime Mother e faça-o summonar slimes normais, assim os players saberão quem é o slime que não poderão atacar. Crie uma Rotworm Queen que sumonne Rotworms ou Carrion Worms, ou até mesmo uma máquina que sumonne dwarfs. -Localização: Acho que é importante ressaltar que não ficaria legal colocar esses treiners naturais no meio da cidade com uma plaquinha dizendo: "Treiners Here!" Legal mesmo é colocar eles no meio de uma hunt, dentro de uma caverna, fazer com que o player VEJA que ali ele pode treinar. -Considerações finais: Bem, espero que esse tutorial tenha dado boas dicas a todos vocês e espere ver serves com treiners assim, bem natural. Abraços!
    3 pontos
  3. Zutun

    Women Stock Pack

    Esse é mais legal que o último haaha, mas ainda tem um melhor, que eu posto em alguns dias Preview: 4Shared bjos
    1 ponto
  4. luisfe23

    Letras De Gelatina

    Fala Éks Tibianos... Neste tutorial veremos como criar letras com aspecto de gelatina para o photoshop. • Letras de Gelatina • 01. Pressione Ctrl+N par criar uma novo documento, defina um tamanho qualquer, modo de cor em RGB com 72 dpi's, pressione Ok, pressione a letra G do teclado para selecionar a Gradient Tool, defina o gradiente com as cores #e1ff01 e #95ec00, escolha o modo Radial e aplique o gradiente como na foto abaixo. 02. Pressione Ctrl+Shift+Alt+N para criar uma nova layer, escolha a cor #F3FF8D, pressione a letra B do teclado para selecionar a Brush Tool, escolha um brush de tamanho médio e pontas duras, variandos o tamanho crie diversos pontos como na foto abaixo. 03. Agora vá em Filter> Blur> Gaussian Blur, defina os valores abaixo e pressione Ok. 04. Pressione Ctrl+J para duplicar a layer, reduza a opacidade da layer para 20%, pressione a letra V do teclado para selecionar a Move Tool, mova a layer para baixo e depois cerca de 20 pixels para a esquerda. 05. Pressione a letra D do teclado para resetar as cores de Foreground e Background para preto e branco, pressione a letra T do teclado para selecionar a Horizontal Type Tool e escreva um texto qualquer como na foto abaixo. 06. Defina o Fill da layer em 0%, vá em Layer> Layer Style> Drop Shadow, Layer> Layer Style> Gradient Overlay, Layer> Layer Style> Stroke e defina os valores abaixo. 07. Sua palavra deverá ficar como a da foto abaixo. 08. Agora pressione Ctrl+J para duplicar a layer, clique com o botão direito do mouse sobre a layer e escolha a opção Clear Layer Styles, vá em Layer> Layer Style> Bevel and Emboss e defina os valores abaixo. 09. Sua imagem deverá ficar como a da foto abaixo. 10. (Opcional) Pressione a letra T do teclado para selecionar a Horizontal Type Tool novamente e escreva outra palavra, aplique os mesmos procedimentos usados anteriormente mas desta vez mude a cor do gradiente usado para vermelho. 11. Com a tecla Ctrl pressionada clique sobre a miniatura da layer das duas layers de texto para ativar a seleção ao redor das palavras. 12. Pressione a letra L do teclado para selecionar a Lasso Tool, marque a opção Subtract from Selection, crie uma seleção nas partes que você deseja eliminar da seleção e vá moldando de acordo como desejar, tente deixar a seleção como na foto abaixo. 13. Pressione Ctrl+Shift+Alt+N para criar uma nova layer, pressione a letra D do teclado para resetar as cores de Foreground e Background para preto e branco, pressione a letra X do teclado para alternar as cores de Foreground e Background, sua cor de Foreground deve ser a branca, pressione Alt+Backspace (a tecla acima do Enter) ou pressione a letra G do teclado para selecionar a Paint Bucket Tool e clique dentro da seleção para preencher com a seleção com a cor branca, defina a opacidade da layer em 20% e no final sua palavra estará como a da foto abaixo. Créditos luisfe23 TutoriaisPhotoshop Stunningmesh Gostou? REP+++ Abraços e até o próximo tutorial.
    1 ponto
  5. 139

    Criando Wand...

    Estou fazendo esse tutorial porque os que eu vi não explicam tanta coisa junta... Nesse tutorial irei mostrar como fazer uma wand que hita por LEVEL e MAGIC LEVEL ou um determinado hit tipo 250 à 450 e como mudar os efeitos. Primeiro vá em data/weapons/weapons.xml e cole : Explicações: AAA = ID da Wand. BBB = Números de sqms que o hit da wand vai alcançar. CCC = Lvl minimo para o player usar a wand. DDD = Mana que o player vai gastar por cada hit da wand. EXHAUSTION="0" = Ai você escolhe o tempo entre cada ataque da wand, no caso 0 significa que vai dearcordo com a velocidade da vocação, bom pra ot com fast attack. Agora vá em data/weapons/weapons.script copie qualquer arquivo que esteja la dentro, apague tudo que estiver escrito, renomeie para solar wand e cole : local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 39 setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 30) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -2, -200, -4, 220) function onUseWeapon(cid, var) return doCombat(cid, combat, var) end Assim estara hitando deacordo com level e magic level. -2, -200, -4, 200, é o dano da wand deacordo com level e magic level do player, aumente ou diminua o 2 e o 4, para mudar o hit por level e o 200 e 220 para mudar o hit por ml, lembrando quanto maior o número maior o hit. E para os que insistem em dizer que assim só está hitando por ml crie um sorcerer lv 100 com ml 50 e um sorcerer lv 500 com ml 50 e veja a diferença dos hits entre os dois chares. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 39) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 30) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 0, -250, 0, -450) function onUseWeapon(cid, var) return doCombat(cid, combat, var) end Assim estara hitando um hit pré determinado como o da wand of inferno de 55 a 75, no caso é de 250 a 450, para mudar basta aumentar ou diminuir o 250 ou o 450, lembrando que o número menor deve ser o da esquerda no caso o 250. Explicações: PHYSICALDAMAGE: PHYSICALDAMAGE quer dizer hit fisico você pode mudar para por exemplo: ICEDAMAGE (hit de gelo como o da EXORI FRIGO) - FIREDAMAGE (hit de fogo como o da EXEVO FLAM HUR) - EARTHDAMAGE (hit de terra como o da EXORI TERA) - DEATHDAMAGE (hit de morte como o da SUDDEN DEATH RUNE, a SD )- HOLYDAMAGE (hit divino como o da EXEVO MAS SAN , EXORI SAN) - ENERGYDAMAGE (hit de energia como o da EXORI VIS, EXEVO GRAN VIS LUX). SOBRE O 30: É o efeito que a wand lança até chegar ao player o (shootype se tratando de items.xml e distance effects em scripts em geral para quem não sabe), podem mudar se quiserem. Confira a lista de de distance effects nesse tópico: Effects e Distance Effects SOBRE O 39: É o efeito que ira acontecer quando o distance effect da wand chegar no player exemplo a SD lança uma caveira que quando atinge o player some e surge uma bola negra, no caso o efeito 39 "é" a nossa bola negra. Pode mudar deacordo com o efeito desejado. Agora vá em item.xml procure o item que você escolheu para ser a wand e faça isso: <item id="ID da wand" article="the" name="Nome da Wand"> <attribute key="description" value="Comentario que aparece quando você da look na wand."/> <attribute key="weight" value="2300"/> <attribute key="weaponType" value="wand"/> <attribute key="range" value="O mesmo valor de alcançe que você botou no weapons.xml"/> </item> Créditos: Meus. - Atualizado para ots versão 8.60 -
    1 ponto
  6. Atenção! Este tópico contém muitas (25 imagens = 41.559.864 bits) imagens, algumas em tamanho G, então se alguma delas não carregar, atualize a pagina no seu navegador. Obrigado pela atenção. Imagem por: Kaonic [Construções] Construções no Tibia são como na vida real, não se pode viver sem elas. No inicio o jogador nasce no templo, que é talvez o lugar mais importante e visitado do servidor, todos passam por ele no começo e é onde você renasce depois de morrer, também é onde você foge daquele Power abuser fdpfdpfdpfdp. Em segundo lugar na escala de importância vem o Depot, é onde você guarda seus itens mais preciosos (se você não tiver uma casa), onde você faz aquela feirinha maneirinha pra vender seus itens. Temos também as casas, que, com camas, servem pra regeneração fácil e rápida de stamina ou soul, servem pra guardar seus itens, fazer inveja em quem você odeia, brincar de casa da Barbie, etc. Enfim, construções no Tibia são mesmo importantes. Templos: Começaremos pelo, na minha opinião, o lugar mais importante de um servidor. Como você já sabe, templos são aqueles lugares sagrados onde os players nascem e renascem. Claro que esta não é uma construção, mas templos não precisam ser necessariamente quadrados, simétricos e "sem vida". A historia do templo acima, por exemplo, diz que no passado ele era um "templo de verdade", mas devido a ataques simultâneos de bombas atômicas Magos, o templo foi destruído, e mesmo assim os habitantes não quiseram abandoná-lo, por ser um templo sagrado e possuidor de forças sobrenaturais. Templos e construções são diferentes em cada tipo de cidade, cidades desérticas tendem a ter templos com paredes no estilo "egypt wall" e "egypt Stone wall", cidades em selvas usam templos de bambu, as construções em cidades de gelo possuem paredes de madeira, e assim sucessivamente. Dica: Em cidades pequenas, templos devem ser pequenos, e em cidades grandes, templos devem ser grandes, respectivamente. Este é o templo do popular Alissow OTS, como podem ver é um templo simples e totalmente retangular, mas mesmo assim não é feio – pelo menos eu acho que não é. Vocês aprenderão mais sobre construções quadradas um pouco mais abaixo. Casas: As casas precisam ter: - Pilares, para garantir o sustento da construção, como está indicado em vermelho. Isto não é obrigatório, apenas se tiver algo "solto por ai" que necessite alguma sustentação. - Janelas nos telhados e nas paredes – indicação em verde - dão um charme a mais na sua casa, além de permitir a visualização dos players de dentro e fora da mesma. - Uma porta, logicamente, para o player entrar e sair da casa. - E por ultimo enfeite da maneira que quiser, sempre respeitando a coerência (Leia Detalhes mais abaixo). Telhados: Em sua construção você pode usar diversos tipos de telhados, em casas pequenas eu aconselho o seguinte tipo de telhado: Em construções maiores, é aconselhável usar um telhado baixo, pois o alto pode ficar alto demais, resultando num mapa feio. Também é válido utilizar pedras e plantas nos telhados. Detalhes: Detalhes em construções são uma coisa muito simples, geralmente usa-se tochas, janelas, portas, musgos, flores, plantas, etc. OBS: Tochas em paredes de madeira são prejudiciais à saúde das mesmas, por isso o ministério da saúde recomenda o uso de lâmpadas. Veja alguns exemplos de detalhes nas construções: Observe que nesta casa temos plantas nas paredes, plantas no telhado, além de musgos nas paredes e uma calha com um barril de água, muito comum em casas de toda parte do mundo. Rçrç Nesta, temos um contraste de paredes, além de musgos e chaminés nos telhados. Construções Grandes: Os castelos (eu adoro esse mapa) também fazem parte do mundo tibiano, os reinos precisam ter uma fortaleza que sirva de uma moradia digna para o seu rei e seus seguidores. Observe como as paredes foram usadas. Tamanhos. Eu vejo bastante gente fazendo casas extremamente gigantescas, quadradas ou curvas e com apenas uma porta e uma janela. A não ser que você queira criar monstros lá dentro, 13x13 SQMs já é grande o suficiente para uma casa grande e 6x7 para uma casa normal. Se você não sabe o que é SQM, preste atenção: SQM significa Square Metre, que em português, significa Metro quadrado. Passando para o Tibia, um player ocupa um SQM, assim como um Demon (ou qualquer outro monstro) também ocupa um SQM. Um pedaço de chão ou uma parede Também possuem 1 SQM. Uma casa grande no tamanho certo. Uma casa grotesca do jeito totalmente errado. Quadrado X Curvo: Quando se fala em construções quadradas a primeira coisa que vem à cabeça é que é um mapa muito simples, feio e... quadrado (what?), o que não é verdade. Construções curvas atrapalham a jogabilidade, acompanhe. Mapa 1: A primeira vista você poderá dizer que é um mapa muito simples, feio e quadrado, continue acompanhando. Mapa 2: Qual dos dois mapas é mais bonito? Qual deles suporta mais items? Com certeza é a casa quadrada certo? Por isso pense bem antes de querer fazer algo "incomum". Isso não quer dizer que deve-se fazer tudo quadrado, algumas curvinhas às vezes também deixam um mapa bonito: Aplicando a "técnica do olha e faz" também é possível fazer lindas construções e com formas diferentes. Observe: Depois: É certo que um servidor sem construções não funcionará como deveria, ele ficará totalmente incompleto, os players precisam de um lugar bonito pra renascer, precisam de um depósito seguro para guardar seus items, precisam de casas para viver e de qualquer forma essas construções precisam ser bem feitas, seja para atrair o publico ou para simplesmente mostrar seu trabalho. ______________________________________________________________________________ Considerações finais: Os mapas não ficaram muito beeem feitos, alguns deles serviram apenas de demonstração. Gostou do artigo? Deseja criticar? Elogiar? Comente
    1 ponto
  7. WooX

    Colocando Comando !spells

    Desculpe-me Prometo Que Vou Melhorar!
    1 ponto
  8. Zutun

    Sound

    bjos
    1 ponto
  9. tp.lua local tpId = 1387 local tps = { ["Pythius The Rotten"] = {pos = {x=319, y=841, z=15}, toPos = {x=160, y=54, z=7}, time = 30}, } function removeTp(tp) local t = getTileItemById(tp.pos, tpId) if t then doRemoveItem(t.uid, 1) doSendMagicEffect(tp.pos, CONST_ME_POFF) end end function onDeath(cid) local tp = tps[getCreatureName(cid)] if tp then doCreateTeleport(tpId, tp.toPos, tp.pos) doCreatureSay(cid, "O teleport irá sumir em "..tp.time.." segundos.", TALKTYPE_ORANGE_1) addEvent(removeTp, tp.time*1000, tp) end return TRUE end explicação: {pos = {x=319, y=841, z=15} = ----------- onde o Teleport irá abrir toPos = {x=160, y=54, z=7} ------- onde o teleport vai leva eles time = 30 -- tempo em segundos que o teleport ficará aberto em creaturescript adicione: <event type="death" name="tp" event="script" value="tp.lua"/> no arquivo.xml do seu monstro adicione: <script> <event name="tp"/> </script>
    1 ponto
  10. amigo tenta assim, não sei si vai funcionar, to no trabalho, e olhei correndo rs': local config = { teleportId = 1387, bosse = "Pythius The Rotten" } local portal_in_pos = {x = 319, y = 841, z = 15} function onDeath(cid, corpse, killer) registerCreatureEvent(cid, "PythiusDead") if config.bosse == getCreatureName(cid) then local position = portal_in_pos teleport = doCreateItem(config.teleportId,1,position) doSetItemActionId(config.teleportId, 9022) end return TRUE end creio que ainda falta algo ;x ajuda ae VodKart duhshsdusduh' abraço
    1 ponto
  11. Vodkart

    Vodkart Olha Ai

    seu iria ficar assim: local config = { tempo = 30 -- Tempo em minutos } local rate = 1.5 function onLogin(cid) if (isPlayer(cid) == TRUE) then if getPlayerStorageValue(cid, 13540) - os.time() >= 1 then exp = addEvent(doPlayerSetExperienceRate(cid, rate), config.tempo*60*1000, cid) doPlayerSendTextMessage(cid, 22, "você tem "..((rate - 1)*100).."% de exp por ".. config.tempo .." minutos.") end end return TRUE end
    1 ponto
  12. va em: C:\xampp\htdocs\config procure essa linha: ['site']['send_emails provavelmente do lado tara 0 coloque 1. e mude a essa linha tambem ['site']['mail_address do lado escreva seu e-mail para que as pessoas possam lhe identificar. pronto (;
    1 ponto
  13. Lordfire

    O Fim Dos Gamemasters!

    3 gms brazukas: Nazzurok, Vauban e Virgilius Sinceramente? Vou sentir falta de Aestyn e Borr, só. Nunca falei com os outros e nunca vi eles fazendo nada.
    1 ponto
  14. luisfe23

    Votação Ads #33

    1º Zutun 2º Luisfe23 3º ChocolateLaka
    1 ponto
  15. nessapcs11

    Votação Ads #33

    1-ChocolateLaka 2-Zutun 3-Luisfe23 que foi e_e
    1 ponto
  16. Oneshot

    Diferença Entre Cid E Uid?

    cid - Abreviação de creatureid, é a criatura que executará a função e por sua vez, todo o bloco programado. Por exemplo: function onUse(cid) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você usou o item") return true end Isso significa que a criatura executora, ao usar um item, irá receber a mensagem. uid - Abreviação de uniqueid, é um número próprio de cada "coisa" do servidor, daí o nome uniqueid que significa ID único. Por exemplo, funciona quando você quer "editar" os atributos de um item, apenas um item, e não todos do servidor. function onUse(item) doItemSetAttribute(item.uid, "attack", 500) return true end Abraços.
    1 ponto
  17. Zutun

    Ads#33

    pena por poucos participantes ;/
    1 ponto
  18. Dobol

    Sleeper Map 0.6 [8.62] Oficial

    Sim, está complicado eliminar esses Crashs. Acho que todos nós teremos que esperar, pois está com muito problemas. Por isso adicioneo o download do 0.5 em 8.57, assim todos podem usar esses recursos sem dar Debugs. Desculpe o transtorno.
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...