Ir para conteúdo

kttallan

Infante
  • Total de itens

    1574
  • Registro em

  • Última visita

  • Dias Ganhos

    16

Histórico de Reputação

  1. Upvote
    kttallan recebeu reputação de InsanezBanker em Como por servidor online sem hamachi e ip changer com internet compartilhada   
    Bom cara há varias tutorias no forum, nessa área aqui.
     
    Mais isso varia muito, se você quer um servidor só para jogar com os amigos talvez conseguira. Mais para algo mais sério terá que comprar um VPS.
  2. Upvote
    kttallan recebeu reputação de InsanezBanker em [BUG BATTLE WINDOW] Poketibia   
    Creio que esse problema seja no OTcliente, no modules/game_battle deve ser por lá tenho quase certeza porém não sei manjo o suficiente para tentar te ajudar.
  3. Upvote
    kttallan recebeu reputação de Wase Wiss em Como por servidor online sem hamachi e ip changer com internet compartilhada   
    Bom cara há varias tutorias no forum, nessa área aqui.
     
    Mais isso varia muito, se você quer um servidor só para jogar com os amigos talvez conseguira. Mais para algo mais sério terá que comprar um VPS.
  4. Upvote
    kttallan recebeu reputação de Luga03 em Lib luaXml - lua for xml - functions   
    Parabéns otimo tutorial, sempre quiz saber como usar xml's .
  5. Upvote
    kttallan deu reputação a Bodak Reborn em Preço do item no look   
    Yo boyz! 
    Eu estava atrás desse sistema há um tempo e não achava em lugar nenhum. Estudei bastante sobre lua e depois de um tempo eu consegui fazer eu mesmo, então vou disponibilizá-lo para vocês.
    Eu testei o sistema em PDA (PokeXCyan) TFS 1.0, mas deve funcionar para outras bases. O script em si não é complexo, é apenas chato de adicionar os itens na tabela. Eu vou deixar a tabela que eu fiz com os itens que tem no servidor para qual eu fiz o script aqui embaixo como spoiler, para caso você queira poupar tempo.
    Essa tabela deve ser adicionada no começo do código em creaturescripts/look.lua.
    Caso queira adicionar o sistema para pokémon também, basta você pegar a tabela que está localizada em npc/pokemon seller.lua.
     
    Ao código:
    Em look.lua, procure por:
    elseif getItemAttribute(thing.uid, "unique") then substitue o
    else return trueend que está "linkado" a esse IF por
    elseif NPCPrice[iname.name] then local qnt = 0 if thing.type == 0 then qnt = 1 else qnt = thing.type end local p = getThingPos(thing.uid) local calculo = NPCPrice[iname.name].price * qnt table.insert(str, "You see ") if thing.type > 1 then table.insert(str, thing.type.." "..iname.plural..".") else table.insert(str, iname.article.." "..iname.name..".") end table.insert(str, "\n"..iname.description.." Price: $"..calculo..".") if getPlayerGroupId(cid) >= 4 and getPlayerGroupId(cid) <= 6 then table.insert(str, "\nItemID: ["..thing.itemid..]") table.insert(str, "\nPosition: ["..p.x..]["..p.y..]["..p.z..]") end sendMsgToPlayer(cid, MESSAGE_INFO_DESCR, table.concat(str)) return false else return true end Ficando assim:
     
    Caso queira que o preço no look funcione para pokémon também, procure por
    table.insert(str, "It is genderless.") tem 3 linhas iguais a esse no look.lua. A linha na qual eu me refiro é a primeira encontrada no arquivo.
     
    Depois do end, adicione:
     
    local boosts = getItemAttribute(thing.uid, "boost") or 0 local precocertos = 0 if boosts > 50 then precocertos = ((gastostones[50] * 5) * 400) + ((boosts - 50) * 100000) else precocertos = ((gastostones[boosts] * 5) * 400) end if getItemAttribute (thing.uid, "ehditto") then pokename = "Ditto" end local pokeCost = pokePrice[pokename] or math.floor(pokes[pokename].level * 150) if pokename == "Ditto" then table.insert (str, " Not sellable.") elseif pokes[pokename] then if boosts == 0 then table.insert (str, " Price: $"..pokeCost) else table.insert (str, " Price: $"..pokeCost.. " + $"..precocertos.. " (BOOST)") end end  
    E pronto, o preço no look está adicionado ao seu servidor.
     
    @EDIT:
    Vou postar também o script do Pokémon Seller, porque ele estava bugado no meu servidor, provavelmente estará no servidor de vocês também.
    npcs/scripts
    pokemon seller.lua
     
     

  6. Upvote
    kttallan deu reputação a Bodak Reborn em Addon System (Fly, ride, surf, look e evolution)   
    Yo boyz!
    Eu estava procurando um Addon System funcional e vi que todos tinham bugs, então eu peguei um código que achei em outro fórum, corrigi os bugs e fiz para que o sistema funcione com fly, ride, surf, look e que o addon suma quando o pokémon evoluir. Também é possível substituir um addon por outro, sem que o pokémon fique com o addon antigo.
    São muitos arquivos envolvidos, então, se eu esquecer algo e o sistema não esteja 100%, por favor, me fale.
    Deixei alguns exemplos no código para caso você esteja com preguiça e queira testar, além de comentar como adicionar novos addons.
     
    OBS: Eu testei apenas em PDA PokexCyan (TFS 0.3.6).
     
     
    actions/scripts
    nome_arquivo.lua
    local addons = {[14876] = {pokemon = "Shiny Charizard" , looktype = 1950},[12344] = {pokemon = "Pidgeot" , looktype = 205},[13990] = {pokemon = "Pidgeot" , looktype = 201},--[ID do item] = {nome do pokémon, looktype},}local function getOldAddon (looktype) for index, value in pairs (addons) do if value.looktype == looktype then return index end endendfunction onUse(cid, item, fromPosition, itemEx, toPosition) local numero = addons[item.itemid].looktype local pb = itemEx.uid local pk = addons[item.itemid].pokemon if not isPokeball(itemEx.itemid) then doPlayerSendCancel(cid, "Você só poder usar este item em uma poke ball.") return true end if getPlayerSlotItem (cid, 8).uid == pb and (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 63215) >= 1) then doPlayerSendCancel (cid, "Desmonte do seu pokémon e volte-o para a poke ball.") return true end if getItemAttribute(pb, "addon") and getItemAttribute(pb, "addon") == numero then doPlayerSendCancel(cid, "Seu pokémon já está com este addon.") return true end if #getCreatureSummons(cid) > 0 then doPlayerSendCancel(cid, "Por favor, volte o seu pokémon para a poke ball.") return true end if getItemAttribute(pb, "poke") ~= pk then doPlayerSendCancel(cid, "Desculpe, você não pode adicionar este addon neste pokémon.") return true end if getItemAttribute (pb, "addon") and getItemAttribute (pb, "addon") > 1 then doPlayerSendTextMessage(cid, 27, "Você substituiu um "..getItemNameById (getOldAddon (getItemAttribute (pb, "addon"))).." por um "..getItemNameById (item.itemid).."!") else doPlayerSendTextMessage(cid, 27, "Agora seu pokémon usará este "..getItemNameById (item.itemid).."!") end doRemoveItem(item.uid, 1) doSetItemAttribute(pb, "addon", numero) return trueend  
    actions.xml:
    <action itemid="13989;12344;13990;ID do item; ID do item;" event="script" value="nome_arquivo.lua"/>  
    em actions/order.lua, abaixo de:
    if not isCreature(pk) then pk = doCreateMonster(pokemon, backupPos) if not isCreature(pk) then doPlayerSendCancel(cid, "You can't stop flying/riding here.") return true end doConvinceCreature(cid, pk) end  
    adicione:
    local pb = getPlayerSlotItem(cid, 8).uid local flyAdd = flysAddon[getItemAttribute (pb, "addon")] local rideAdd = ridesAddon[getItemAttribute (pb, "addon")] if flyAdd then if getItemAttribute(pb, "addon") > 1 then doSetCreatureOutfit(pk, {lookType = getItemAttribute (pb, "addon")}, -1) end elseif rideAdd then if getItemAttribute(pb, "addon") > 1 then doSetCreatureOutfit(pk, {lookType = getItemAttribute (pb, "addon")}, -1) end end  
    em lib/configuration.lua, será necessário adicionar três tabelas, uma para fly, outra para ride e outra para surf. Nesta tabela, o nome do pokémon não é requirido, o que talvez faça você se perder. Se você achar necessário, comente com "--" o nome do pokémon.
    Exemplo:
    [205] = {540}, -- Pidgeot[850] = {210}, -- Dragonair procure por: flys
    e acima disso adicione:
    flysAddon = {[205] = {540},[201] = {541},--[número do looktype do addon] = {looktype do addon voando}}  
    procure por: rides
    e acima disso adicione:
    ridesAddon = {[556] = {555},--[número do looktype do addon] = {looktype do addon montado}}  
    procure por: rides
    e acima disso adicione:
    surfsAddon = {[201] = {541},[552] = {553},--[número do looktype do addon] = {looktype do addon nadando}}  
    em lib/order.lua, procure por:
    elseif skill == "fly" then  
    e abaixo adicione:
    local pb = getPlayerSlotItem(cid, 8).uid if getItemAttribute(pb, "addon") < 1 then doSetCreatureOutfit(cid, {lookType = flys[getPokemonName(getCreatureSummons(cid)[1])][1] + 351}, -1) else doSetCreatureOutfit(cid, {lookType = flysAddon[getItemAttribute (pb, "addon")][1]}, -1) end  
    depois, no mesmo arquivo, procure por:
    elseif skill == "ride" then  
    e abaixo adicione:
    local pb = getPlayerSlotItem(cid, 8).uid if getItemAttribute(pb, "addon") < 1 then doSetCreatureOutfit(cid, {lookType = rides[getPokemonName(getCreatureSummons(cid)[1])][1] + 351}, -1) else doSetCreatureOutfit(cid, {lookType = ridesAddon[getItemAttribute (pb, "addon")][1]}, -1) end  
    em movements/surf.lua, procure por:
    if getPlayerStorageValue(cid, 6598754) == 1 or getPlayerStorageValue(cid, 6598755) == 1 then doPlayerSendCancel(cid, "You can't do it while in the PVP Zone!") --alterado v1.7 doTeleportThing(cid, fromPosition, false)return trueend  
    e abaixo adicione:
    local pb = getPlayerSlotItem(cid, 8).uid if getItemAttribute(pb, "addon") < 1 then doSetCreatureOutfit(cid, {lookType = surfs[getPokemonName(getCreatureSummons(cid)[1])].lookType}, -1)else doSetCreatureOutfit(cid, {lookType = surfsAddon[getItemAttribute(pb, "addon")][1]}, -1)end  
    logo abaixo disso, vocês vão encontrar:
    (isso não envolve o funcionamento do sistema de addon, mas é um bug que eu achei no meu surf. Todos os pokémon tinham velocidade fixa de 1500.)
    local speed = 75 + PlayerSpeed + getSpeed(getCreatureSummons(cid)[1]) * 8 * speedRate  
    substitua por:
    local speed = 75 + PlayerSpeed + surfs[getPokemonName(getCreatureSummons(cid)[1])].speed * 8 * speedRate  
    no mesmo arquivo, procure por:
    if getItemAttribute(item.uid, "nick") then doCreatureSay(cid, getItemAttribute(item.uid, "nick")..", I'm tired of surfing!", 1) else doCreatureSay(cid, getItemAttribute(item.uid, "poke")..", I'm tired of surfing!", 1) end doSummonMonster(cid, pokemon) local pk = getCreatureSummons(cid)[1]  
    e abaixo adicione:
    local pb = getPlayerSlotItem(cid, 8).uid if surfsAddon[getItemAttribute(pb, "addon")] then if getItemAttribute(pb, "addon") > 1 then doSetCreatureOutfit(pk, {lookType = getItemAttribute(pb, "addon")}, -1) end end  
     
    em actions/goback.lua, procure por:
    doSendMagicEffect(getCreaturePosition(pk), effect)  
    abaixo adicione:
    local pk = getCreatureSummons(cid)[1] local pb = getPlayerSlotItem(cid, 8).uid local look = getItemAttribute(pb, "addon") if not look then doSetItemAttribute(pb, "addon", 0) end if look and look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end  
    em actions/evolution.lua, procure por:
    local ball = getPlayerSlotItem(cid, 8).uid  
    há 12 linhas iguais a essa nesse arquivo e embaixo de TODAS elas, adicione:
    doItemSetAttribute (ball, "addon", 0)  
    em creaturescripts/look.lua, procure por:
    if getItemAttribute(thing.uid, "gender") == SEX_MALE then table.insert(str, "It is male.") elseif getItemAttribute(thing.uid, "gender") == SEX_FEMALE then table.insert(str, "It is female.") else table.insert(str, "It is genderless.") end  
    se novamente, esse código aparece duas vezes no arquivo.
    E também, novamente, embaixo dos dois, adicione:
    if getItemAttribute(thing.uid, "addon") then if flysAddon[getItemAttribute (thing.uid, "addon")] or ridesAddon[getItemAttribute (thing.uid, "addon")] or surfsAddon[getItemAttribute (thing.uid, "addon")] then if getItemAttribute(thing.uid, "addon") > 1 then table.insert(str, " Has the addon "..getItemNameById (getAddonId (getItemAttribute (thing.uid, "addon")))..".") end end end  
    E no começo desse arquivo, adicione:
    local addons = {[14876] = {pokemon = "Shiny Charizard" , looktype = 1950},[12344] = {pokemon = "Pidgeot" , looktype = 205},[13990] = {pokemon = "Pidgeot" , looktype = 201},--[ID do item] = {nome do pokémon, looktype},}local function getAddonId (looktype) for index, value in pairs (addons) do if value.looktype == looktype then return index end endend  
    a tabela "addons" deve ser a mesma que a do actions/addon.lua. Então, quando você adicionar algo no addon.lua, deverá adicionar também no look.lua.
     
    em login.lua, procure por:
    doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1)  
    e substitua por:
    if getItemAttribute(item.uid, "addon") < 1 then doSetCreatureOutfit(cid, {lookType = flys[poke][1] + 351}, -1) else doSetCreatureOutfit(cid, {lookType = flysAddon[getItemAttribute (item.uid, "addon")][1]}, -1) end  
    procure por:
    doSetCreatureOutfit(cid, {lookType = surfs[poke].lookType + 351}, -1  
    substitua por:
    if getItemAttribute(item.uid, "addon") < 1 then doSetCreatureOutfit(cid, {lookType = surfs[poke].looktype + 351}, -1) else doSetCreatureOutfit(cid, {lookType = surfsAddon[getItemAttribute (item.uid, "addon")][1]}, -1) end  
    procure por:
    doSetCreatureOutfit(cid, {lookType = rides[poke][1] + 351}, -1)  
    substitua por:
    if getItemAttribute(item.uid, "addon") < 1 then doSetCreatureOutfit(cid, {lookType = rides[poke][1] + 351}, -1) else doSetCreatureOutfit(cid, {lookType = ridesAddon[getItemAttribute (item.uid, "addon")][1]}, -1) end  
  7. Upvote
    kttallan recebeu reputação de Janjos em Website Pokemon Mega (Show Off)   
    Muito bom mano 10/10.
  8. Upvote
    kttallan recebeu reputação de Janjos em Website Pokemon Mega (Show Off)   
    Curti muito mano, tenta preencher a área a baixo do login e menu com alguma coisa para não ficar esse vazio.
  9. Upvote
    kttallan deu reputação a Farathor em [Creaturescripts] Auto Bless   
    Olá, este é um script que adiciona todas as bless em jogadores que tiverem o level menor que o configurado
    em creaturescripts/scripts crie um arquivo chamado autoBless.lua e cole isso:

     
    local blessings = {1, 2, 3, 4, 5}local level = 150function onLogin(cid)    if getPlayerLevel(cid) <= level then        for cont = 1, table.maxn(blessings) do         doPlayerAddBlessing(cid, blessings[cont])            end  doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você recebeu todas as blessings por causa que é nivel menor que "..level.."!")    endend  
    em creaturescripts.xml adicione a seguinte tag:
    <event type="death" name="autoBless" event="script" value="autoBless.lua"/>  
    em creaturescripts/scripts no arquivo login.lua adicione a seguinte tag:
    registerCreatureEvent(cid, "autoBless")
  10. Upvote
    kttallan deu reputação a Poccnn em Tutorial Coroutine Lua   
    Fala Xtibianos. 
    Nesse tutorial, gostaria de explicar um pouco sobre coroutine e seu uso. 
     
    Irei começar com uma lista de funções da coroutine. 
     
    Irei começa falando sobre a principal função da coroutine. 
     
    No corpo dessa função, voce precisa declarar pontos para "suspender" a execução da coroutine. 
     
    Ao criar a coroutine, ela se encontra no estado "suspended", ou seja, parada/pausada. 

    para iniciar a coroutine, voce precisa ativar ela usando a função: 
     
    Além de ativar/reativar a coroutine, você passa valores para a função da coroutine. 
    A primeira ativação da coroutine, os argumentos passados não poderão ser modificados, ficam estáticos nos parâmetros da função. 
     
     
    Veja que o resultado da segunda chamada não coincidem com os valores passados. Isso se dá devido aos parâmetros da função impregada na coroutine, não modificar seus valores. uma vez declarados os valores, eles não poderão ser modificados. 
     
    uma chamada de coroutine a mais da quantidade de yield's existente na coroutine.
     
    Como demonstrado acima, ao exceder a quantidade de yield's, ela retorna essa mensagem (sem disparar erro no console). 
     
    Agora você deva estar se perguntando: Então como fazer para pegar os valores que são passados em cada ativação? 

    Vou explicar agora: 
    a função yield pega os valores fornecidos e retorna-os; então você pode pegar esses valores usando variaveis para armazena-los. 
     
     
    Mas, no corpo da função criada para a coroutine, você pode fazer chamadas a funções, pegar valores de variaveis globais, etc; sempre usando a função yield para "suspender" a coroutine. 
     
     
    Agora só falta comentar sobre a função: 
     
    Assim como coroutine.create, a função auxiliar coroutine.wrap cria uma nova co-rotina, mas ao invés de retornar uma referência para a co-rotina, retorna uma função que, quando chamada, (re)invoca a co- rotina. 

    De forma geral, a função coroutine.wrap oferece uma maior conveniência que coroutine.create; ela provê exatamente o que é usualmente necessario: uma função para reativar uma co-rotina. Por outro lado, o uso das funções coroutine.create e coroutine.resume permite o gerenciamento de erros (funções estas que não podem ser usada por wrap). 
     

    A função retornada por coroutine.wrap não captura erros; qualquer erro provocado pela execução da co-rotina é propagado a seu chamador. 
     
    É isso ai pessoal, espero que tenham gostado. qualquer duvida, sugestão ou critica, deixem nos comentários. 
     
  11. Upvote
    kttallan recebeu reputação de Tetoxd em Dúvida - Mapa Editor   
    Coloque seu mapa na parte world, troque pelo nome que está no config.lua
    Em seguida vá no seu map editor e pegue a pos, abra seu sql ou mysql na parte de player's mude seu personagem para a pos x, y, z correspondente.
  12. Upvote
    kttallan recebeu reputação de Administrador em Dúvida - Mapa Editor   
    Coloque seu mapa na parte world, troque pelo nome que está no config.lua
    Em seguida vá no seu map editor e pegue a pos, abra seu sql ou mysql na parte de player's mude seu personagem para a pos x, y, z correspondente.
  13. Upvote
    kttallan recebeu reputação de Lenhador em Dicas ao Mappear   
    Eu fazia isso mas depois cai na real que não tem muito sentido...
     
    @Topic Muito bom as dicas poderam ajudar bastante, outra boa dica é evitar mappear em onBoard pois iaso limita sua criatividade..
  14. Upvote
    kttallan recebeu reputação de Luga03 em Show Off - Aprendiz/Poke   
    Entendi, é dificil mesmo mappear em off-board mas o resultado é impressionante. Com bastante pratica você nem perceberá mais esse contratempo.
  15. Upvote
    kttallan recebeu reputação de Lenhador em Show Off - Aprendiz/Poke   
    Entendi, é dificil mesmo mappear em off-board mas o resultado é impressionante. Com bastante pratica você nem perceberá mais esse contratempo.
  16. Upvote
    kttallan deu reputação a UntFrc em Santuario Mistico (Cave/Hunt) 8.60   
    Santuário Mistico

    Download: Aqui
    Scan: Aqui

    Imagens:
     

     
     

     
     

     


     
  17. Upvote
    kttallan deu reputação a miupinho em [ Aula 1] #Swords - Academia do Pixel   
    Valeu garoto, estamos aqui pra isso!
  18. Upvote
    kttallan deu reputação a miupinho em [ Aula 1] #Swords - Academia do Pixel   
    [ Aula 1 ] #Swords - Academia do Pixel
     
     
    Bem vindo todos ao primeiro tutorial da academia do pixel,neste tutorial iremos aprender como criar e desenvolver espadas,uma tema que é de interesse de muitas pessoas.
    Espero que nesta primeira aula todos se esforcem bastante pois no final da semana suas artes serão expostas e julgadas por membros do fórum inclusive eu.
     
     
    ----------------------------------------------------------------------------------------------------------------------------------------
          - Moldando Outline -
    ----------------------------------------------------------------------------------------------------------------------------------------
     
     
    • Para começarmos devemos abrir o paint e selecionar a ferramenta do quadrado e fazer um quadrado de tamanho 32x32,pois esse é tamanho padrão de itens do tibia.
     

     
    • Começando outline iremos fazer ela de cima para baixo pelo fio da espada,usando o lápis vamos posicionando os pixels corretamente...
     

     
    • Lembrem-se que o fio nunca deve ser muito grande nem muito pequeno,mas sim de um tamanho médio considerando que o fio deve ter mais ou menos o dobro do tamanho do cabo (isso pode variar)...
     

     
    • Com o fio definido iremos começar o cabo da espada,o cabo em si deve não deve ser muito largo nem muito curto ele deve estar encaixado harmonicamente com a espada.É importante entender de maneira realista como o cabo funciona por exemplo,um cabo muito pequeno não seria confortável de segurar e um cabo muito deixaria a espada muito pesada.
     

     
    ----------------------------------------------------------------------------------------------------------------------------------------
          - Colaboração -
    ----------------------------------------------------------------------------------------------------------------------------------------
     
    • As espadas seguem um padrão básico para gerar corte,todas em geral seguem um padrão de alto contraste pois o metal está presente em quase todas as espadas.O metal é um material que recebe bastante luminosidade então para alcançarmos o ponto chave das espadas devemos prestar atenção no contraste,que significa que devemos usar cores com diferencial de luminosidade grande.
     
    • Sabemos também que a luz está em todo o lugar,partindo deste conceito o metal recebe luz porém a luz é de alguma cor,seja do sol a luz amarelada,seja do céu a luzazulada ou de outros focos de luz que podem ter as mais variadas cores.
    Partindo desse conhecimento devemos entender que nunca se deve usar cores que tenham nenhuma saturação pois a saturação age como brilho e da vivacidade para nossa arte.
     
    • No exemplo,monto minha paleta com diferencial de Luminosidade +40 ou seja, a cada cor eu aumento 40 pontos de luminosidade seguindo 20 na 1ª cor,60 na 2ª cor,100 na 3ª cor e assim por diante.
     
    • A saturação eu deixo 26 ponto pois mais para frente iremos abordar esse assunto,por enquanto deixemos com pouca saturação.
    A matriz é a grade de cor, eu deixo 160 pois é a grade da cor azul,outra grade de matriz boa é a 45 que seria do amarelo.Não necessariamente deve-se trabalhar com essas grades,contudo são as que se encaixam melhores no metal.
     

     
    ----------------------------------------------------------------------------------------------------------------------------------------
          - Gerando Corte -
    ----------------------------------------------------------------------------------------------------------------------------------------
    O corte da espada é característico por apresentar bastante contraste e respeitar o foco de luz que vem do noroeste.No exemplo a seguir os passos de como gerar um corte simples. Não exatamente o corte deve seguir esse padrão dividido no meio,muitas espadas podem possuir corte apenas nas laterais...
     

         
    ----------------------------------------------------------------------------------------------------------------------------------------
        - Cabo -
    ----------------------------------------------------------------------------------------------------------------------------------------
     O cabo tem muito mais a ver com criatividade do que com técnica.Geralmente os cabos são dourados ou de bronze,grande parte deles possuem jóias no centro como no exemplo que fiz.  

     
    Bom espero que tenham compreendido um pouco do tutorial, abaixo vou deixar 4 outlines de espadas para usarem como base, se quiserem.
     

    fonte: Madarada
  19. Upvote
    kttallan deu reputação a Felipe Moraes em [Linux] Comandos   
    Segue alguns dos comandos mais utilizados no linux.
    Achei na internet e resolvi compartilhar.
     

  20. Upvote
    kttallan deu reputação a L3K0T em Npc Simples que da item se for level 25+   
    <?xml version="1.0" encoding="UTF-8"?><npc name="Recompensa" script="data/npc/scripts/recompensa.lua" walkinterval="0" speed="0" floorchange="0">    <health now="100" max="100"/>    <look type="100"/>    <parameters>        <parameter key="message_greet" value=" Olá [PLAYERNAME]  Carrego pedras muito preciosas comigo e posso te dar uma se você for digno e for level 25+ você acha que pode ter esse level ?"/>    </parameters></npc> local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function onCreatureAppear(cid)                npcHandler:onCreatureAppear(cid)            endfunction onCreatureDisappear(cid)            npcHandler:onCreatureDisappear(cid)            endfunction onCreatureSay(cid, type, msg)            npcHandler:onCreatureSay(cid, type, msg)        endfunction onThink()                    npcHandler:onThink()                    endfunction creatureSayCallback(cid, type, msg)    if(not npcHandler:isFocused(cid)) thenreturn falseendlocal talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cidif msgcontains(msg, "yes") thenfile = io.open('comand.txt','r')itemxx = 11441stor = getPlayerStorageValue(cid,3561)if stor == -1 thenif getPlayerLevel(cid) >= 25 thendoPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Olá treinador ["..getCreatureName(cid).."] você é level 25 + e como recompensa te dou um pedra de evolução use ela como quiser até mais treinador")doPlayerAddItem(cid,itemxx,1)setPlayerStorageValue(cid,3561,1)elsedoPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Voce já recebeu a recompensa")endelsedoPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Desculpe mais você não e digno e não tem level 25+ tente avançar de level e venha falar comigo novamente boa sorte treinador.")endreturn trueendendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new())  
  21. Upvote
    kttallan deu reputação a nbb147 em Npc Simples que da item se for level 25+   
    cria um arquivo xml com o nome "npc", na pasta npcs e coloca isso dentro:
     
    <?xml version="1.0" encoding="UTF-8"?><npc name="NPC" script="data/npc/scripts/NPC.lua" walkinterval="2000" floorchange="0">    <mana now="100" max="100"/>    <health now="100" max="100"/>    <look type="100"/>    <parameters>        <parameter key="module_shop" value="0" />        <parameter key="message_greet" value=" Ola |PLAYER|, carrego pedras muito preciosas comigo e posso te dar uma se você for digno e for level 25+ voce acha que pode ter esse level? " />    </parameters></npc>  
    cria um arquivo lua com o nome "npc", na pasta npcs/scripts e coloca isso dentro:
    local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endfunction creatureSayCallback(cid, type, msg)local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cidif(not npcHandler:isFocused(cid)) thenreturn falseendif getPlayerStorage(cid, 5151) == 1 thennpcHandler:say("Você já recebeu o item.", cid)return falseendlocal iditem = 1234 -- id do item que o player irá receberlocal quant =  1 -- quantidade de itensif msgcontains(msg, "yes") or msgcontains(msg, "sim") thenif getPlayerLevel(cid) >= 25 thennpcHandler:say("Ótimo treinador, você é level 25+ e como recompensa te dou um pedra de evolução use ela como quiser até mais treinador .", cid)doPlayerAddItem(cid, iditem, quant )setPlayerStorageValue(cid, 5151, 1)elseselfSay('Desculpe mas você não é digno e não tem level 25+ tente avançar de level e venha falar comigo novamente boa sorte treinador.', cid)return trueendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new())  
  22. Upvote
    kttallan recebeu reputação de Alphapetboy em [DxP] Exclusivo Poketibia OpenSource+Cliente+Site+DB   
    @Drakopoulos
    Esse do mega o segundo hit é referente a quantidade de offense que tem nas configurações dele..
     
    Todos os bugs citados @Alphapetboy grande maioria é configuraveis, sobre o nome dos pokemons estarem superior a sprite é porquê o cliente da v3 está. Como posso dizer mais desatualizado vou deixar aqui o meu exe do OTcliente.
     
    Executavel
  23. Upvote
    kttallan deu reputação a JairKevick em Pokémon Fire World Layout   
    http://www.mediafire.com/download/le2tljm8a8ofhcx/Pokémon+Fire+World.rar
     
     
  24. Upvote
    kttallan deu reputação a Poccnn em [Pedido] Storage por tempo   
    Já que vai existir um metodo para verificar a storage, então apenas adicione ao player a storage com certo tempo.
     
    Para saber se já passou o tempo, é só fazer essa verificação:
     
  25. Upvote
    kttallan deu reputação a Erimyth em RIDERSWAR - PROJETO 1.0   
    VOCÊ APOIA ESSE PROJETO ?
     
     
    Ola Amigos, bem vindos ao RidersWar. Um novo Baiak com muita diversão, missões e quests para você.
     
    Hoje procuramos ótimos servidores baiak para diversão e guerra, e dificilmente encontramos algo de qualidade né? Mais hoje venho iniciar uma discusão com todos os membros do Xtibia.
    A equipe do Riderswar Esta pensando em criar uma parceria de disponibilização de servidor com direito oficiais ao Xtibia e Otpanel, pensando em liberar o download do projeto completo com site e todas as funções gratuitamente para os clientes Otpanel, ou seja: Todos os clientes terão disponível em seu Otpanel o Novo Riderswar 8.60 Versão 1.0

    O intuito do projeto hoje é oferecer aos amigos do Xtibia e clientes do otpanel um baiak completo e sem bugs com suporte e atualizações mensais. "estamos recebendo colaboradores para ajudar no crescimento do projeto"

    O Riderswar é resultado de em média 6 meses de trabalho e dedicação.
    Tentamos inovar, trazer sistemas exclusivos, e apesar de ser Baiak ainda troucemos quests- tasks- missões com histórias em RPG, além de muita War o player terá que provar ser um ótimo jogador e um grande guerreiro para conseguir completar nossas quests.
     
    Conheça abaixo um pouco sobre o RidersWar.
    MAIS DE 100 -  TELEPORTS, HUNTS E QUESTS
     
    Eventos:
    Battlefield - Objetivo é Capturar a bandeira do Time adversário Zombie Event - Objetivo é fujir dos Zombies , não deixe que te peguem, o ultimo a ficar na arena e o vencedor CityWar - Objetivo é matar a maior quantidade de players no eventos em 10 minutos, o Top frags é o vencedor Dota - Objetivo é destruir os Geradores da sua cor, o primeiro grupo a destruir os 3 geradores é o vencedor. Quests Especiais:
    Pits of Inferno (POI) Anihilator (Anihi) Inquisition (Inqui) Quests de addon Especial Anihilator the returns Task Legendary Task Epic Task de Paciência Portais do Inferno New Spell Quest Room Quest VIP 1 -  Para Free Cidades:
    Blood City - Free Rider City -  premium Gengia  - Free Aurora  - VIP 1 -  FREE  
    Sistemas:
    Soma de Equação do 2° Grau -  o Servidor te permite fazer soma de equação do segundo grau alem de jogar você pode estudar sobre equação no Riderswar. Venha se divertir aprender e curtir as maiores aventuras que esperam por você... 
      Encantamento de Itens Legendary -  os Players podem encantar seus Itens do Shopping em um item legendary os tornando mais fortes e grandes guerreiros. Maker Supreme armor 30% - Este Maker pode ser usado em uma armor Legendary e se tornar supreme te dando+ 30% de vida e mana Maker Speed Attack 2.5 - Este Maker pode ser utilizados em Weapons Vips dando a elas um attack speed de 2.5
      Heart f Infernia - Este Coração de fogo da ao player 20% de Experiencia ao ser equipado no slot de flechas, Duração de 12 horas. caso nao use nao gasta. Double Exp Potion -  Este potion da ao player Double exp por 1 Hora Super Doll -  Utilize este doll, e tenha change de ganhar um addon especial... São 1 entre 6 addons especiais que você pode ganhar aleatoriamente. Cada jogador tem direito a usar 1x . Tornando os addons exclusivos para cada player. 
      War System -  Marque guerras e desafie outras guilds  no Riderswar Cast System -  Ustilize o cast  com o comando /cast on e transmita sua aventura ao vivo in-game Castle Land  -  Castelo pode ser dominado pela guild dando acesos a hunts privadas Rider Map save -  Item Vip ao qual te da a possibilidade de salvar sua posição e retornar quando precisar. Super seguro  contra Bugs HUNT  privada -  O Player compra acesso a uma hunt sozinho... Onde ninguém mais pode entrar. Teleports Expert -  Teleports capazes de te levar onde você precisa...   
     
    UM TRAILER ANTIGO -  TIVEMOS ALGUNS UPDATES APÓS ESTA GRAVAÇÃO , EM BREVE NOVO VIDEO.
     

     
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...