Ir para conteúdo

PoRaI

Administrador
  • Total de itens

    121
  • Registro em

  • Última visita

  • Dias Ganhos

    18

Posts postados por PoRaI

  1. Citar

    local tempo = 30       -- tempo da outfit e outfit de cada voc durante o uso
    local config = {
    [1] = 21,  
    [2] = 27,  
    [3] = 22,  
    [4] = 23,  
    [5] = 25,  
    [6] = 26, 
    [7] = 24,
    [8] = 11
    }

    local combat = createCombatObject()
    setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

    local disable = createConditionObject(CONDITION_PACIFIED)
    setConditionParam(disable, CONDITION_PARAM_TICKS, 30000)
    setCombatCondition(combat, disable)

    local templo = {x=1041,y=972,z=8}
     
    local function onCastSpell2(cid, target)
        doSendMagicEffect(getThingPos(cid), 54)
        doTeleportThing(cid,templo)
        doSendMagicEffect(getThingPos(cid), 54)
        doCreatureSetNoMove(cid, false)
    end
     

    function onCastSpell(cid, var)

        if getCreatureCondition(cid, CONDITION_INFIGHT) then

            return false

        end
        local currcolor = getCreatureOutfit(cid)
        local roupa = {lookType = config[getPlayerVocation(cid)], lookHead = currcolor.lookHead, lookBody = currcolor.lookBody, lookLegs = currcolor.lookLegs, lookFeet = currcolor.lookFeet} 
        doCreatureSetNoMove(cid, true)
        addEvent(onCastSpell2, 30000, cid, target)
        doSetCreatureOutfit(cid, roupa, tempo*1000)
        addEvent(doCreatureSay, 0, cid, "30", TALKTYPE_MONSTER)
        addEvent(doCreatureSay, 5000, cid, "25", TALKTYPE_MONSTER)
        addEvent(doCreatureSay, 10000, cid, "20", TALKTYPE_MONSTER)
        addEvent(doCreatureSay, 15000, cid, "15", TALKTYPE_MONSTER)
        addEvent(doCreatureSay, 20000, cid, "10", TALKTYPE_MONSTER)
        addEvent(doCreatureSay, 25000, cid, "5", TALKTYPE_MONSTER)
        addEvent(doCreatureSay, 26000, cid, "4", TALKTYPE_MONSTER)
        addEvent(doCreatureSay, 27000, cid, "3", TALKTYPE_MONSTER)
        addEvent(doCreatureSay, 28000, cid, "2", TALKTYPE_MONSTER)
        addEvent(doCreatureSay, 29000, cid, "1", TALKTYPE_MONSTER)

        return doCombat(cid, combat, var)
    end

     


    testa ae

     

     

  2. Em 04/10/2017 at 16:49, Ceetros disse:

    Quem disse que espero algo em troca?

    A idéia do TPS é ser um servidor comunitário, com a comunidade toda ajudando.

    Mas pelo visto a comunidade só tem otadmin, ou pessoas que só querem tudo na mão,  incluo as pessoas que falaram que vão ajudar.

    Inclusive um deles é da equipe do xtibia :)

     

    Logo, caso você ache que eu quero reconhecimento ou algo do gênero, pode começar a ignorar meus tópicos, jaé?


    Você acha mesmo que vão começar a contribuir só porque você criou um repositório no Github? Só vão contribuir quando você realmente criar UMA BASE DE POKÉMON. Isso não é uma base de Pokémon. Você só ta saindo ""programando"" aleatoriamente (sinceramente, se eu fosse pegar pra fazer algo nesse projeto, eu refaria basicamente tudo que você fez, lol) sem pensar na funcionalidade e usabilidade de adicionar coisas futuramente, ninguém vai usar isso até então. Você tá achando que quando postaram o otclient juntou um monte de programador pra ajudar do nada? Não. Começaram a ajudar porque já tinham algo. Antes de tudo, crie um roteiro de desenvolvimento PRA VOCÊ (querendo ou não você acaba sendo a pessoa mais influente, então na teoria, você precisa e vai acabar produzindo mais que todos), um exemplo de como fiz e segui no meu projeto:

     

    * Pokeball class

    * Pokemon class
    * Go/back
    Sistema de moves pro player
    * Sistema de moves pro pokemon selvagem

    Refazer o sistema de conditions do Tibia

    * Order

    * Catch

    Em ordem e só passar pro próximo caso o sistema esteja 100%. Mas provavelmente você vai ignorar e eu provavelmente não estarei mais acompanhar o tópico, rs.

  3. Cara, então, vou dar duas dicas (acho que até o momento é só isso):
    1º Defina uma linha que você irá seguir, nem todo mundo pensa da sua forma. Com o que será parecido? Pxg? Jogos da Nintendo? ou qual sua ideia? Deixe explicito isso.
    2º Tenha metas, faça só o que é necessário no momento.

        Tava dando uma olhada e você colocou coisas como: "gympoke" e tipo... não faça isso cara, tem sistemas muito mais importante pra você pensar, tenha um foco e não perca ele se não você vai levar muito mais tempo para produzir, não deixe as coisas pela metade. E outra, não é nem de perto a melhor maneira de criar esse sistema, então, tenha foco para futuramente você focar nisso que você pode acabar tendo até uma ideia melhor.

     

    Não me leve a mal, rofl. Futuramente irei contribuir, mas antes preciso terminar meu projeto que alias, só falta o balanceamento que é a parte mais complicada.

  4. 1 hora atrás, Dandjes disse:


    Funcionou normal. 


    Nenhuma dessas duas outras opções funcionaram no script de change vocation, porém no comando de deathlist funcionou. Pelo que eu percebi nada funciona quando a questão é o script alterar algo na database. =/

    Erro:

    
    [Error - Action Interface] 
    [22/09/2017 21:47:55] data/actions/scripts/changevoc.lua:onUse
    [22/09/2017 21:47:55] Description: 
    [22/09/2017 21:47:55] data/actions/scripts/changevoc.lua:58: attempt to concatenate a boolean value
    [22/09/2017 21:47:56] stack traceback:
    [22/09/2017 21:47:56]     data/actions/scripts/changevoc.lua:58: in function <data/actions/scripts/changevoc.lua:1>

     


    Aí é o script que tá com erro. É aquele mesmo do outro tópico? Afinal, pq você não usa aquele que eu mandei?


    Edit:
    Ele tá dando erro porque você tenta usar a função: getPlayerGUID(cid) depois que removeu a criatura, então a função vai retornar um valor boleano falso.
    Troca os: " .. getPlayerGUID(cid) .. " por " .. pid .. "

  5. Mano, faz o seguinte... Coloca isso aqui em /data/lib/012-table.lua:

    function table.val_to_str ( v )
      if "string" == type( v ) then
        v = string.gsub( v, "\n", "\\n" )
        if string.match( string.gsub(v,"[^'\"]",""), '^"+$' ) then
          return "'" .. v .. "'"
        end
        return '"' .. string.gsub(v,'"', '\\"' ) .. '"'
      else
        return "table" == type( v ) and table.tostring( v ) or
          tostring( v )
      end
    end
    
    function table.key_to_str ( k )
      if "string" == type( k ) and string.match( k, "^[_%a][_%a%d]*$" ) then
        return k
      else
        return "[" .. table.val_to_str( k ) .. "]"
      end
    end
    
    function table.tostring( tbl )
      local result, done = {}, {}
      for k, v in ipairs( tbl ) do
        table.insert( result, table.val_to_str( v ) )
        done[ k ] = true
      end
      for k, v in pairs( tbl ) do
        if not done[ k ] then
          table.insert( result,
            table.key_to_str( k ) .. "=" .. table.val_to_str( v ) )
        end
      end
      return "{" .. table.concat( result, "," ) .. "}"
    end


    Crie um script qualquer com isso aí:

    print(table.tostring(db))


    e posta aqui o resultado que aparecer no seu console.

  6. local vocation_table = {
       [37001] = 1,
       [37011] = 2,
       [37012] = 3,
       [37013] = 4,
    }
    
    function onUse(cid, item, frompos, item2, topos)
       local voc = vocation_table[item.uid]
       if voc then
          if getPlayerVocation(cid) == voc then
             return doPlayerSendCancel(cid, "Você não pode trocar para a mesma vocação.")
          elseif getPlayerVocation(cid) == 0 then
             return doPlayerSendCancel(cid, "Você precisa ter uma vocação para ser outra.")
          elseif getCreatureCondition(cid, CONDITION_INFIGHT) then
             return doPlayerSendCancel(cid, "Você não pode trocar de vocação em combate.")
          end
          local pid = getPlayerGUID(cid)
          local level = math.max(1, getPlayerLevel(cid) - 8)
    
          local vocationInfo = getVocationInfo(voc)
          local hpLevel = vocationInfo.healthGain * level
          local manaLevel = vocationInfo.manaGain * level
    
          local baseInfo = getVocationInfo(0)
          local baseHp = baseInfo.healthGain * 8
          local baseMana = baseInfo.manaGain * 8
    
          doSendMagicEffect(topos, 14)
    
          setCreatureMaxHealth(cid, baseHp + hpLevel)
          setCreatureMaxMana(cid, baseMana + manaLevel)
    
          doPlayerSetVocation(cid, voc)
          doRemoveCreature(cid)
    
          local executeQuery = db.executeQuery or db.query
          executeQuery("UPDATE `player_skills` SET `value` = '10', count = '0' WHERE `player_id` = '".. pid .."';")
          executeQuery("UPDATE `players` SET `maglevel` = '0', `manaspent` = '0' WHERE `id` = '".. pid .."';")
       end
       return true
    end


    Eu refiz o seu script, não sei se vai ajudar no seu caso.

    O que imagino que possa ser é: você ter criado uma variável chamada db e ter dado conflito com a tabela de funções db, sei lá.

    E também, se possível, envia seu luascript.cpp pra eu dar uma olhada aí.

  7. A blacklist.xml e o version.xml da otland ta offline. É algo bem inútil que enfiaram na source.

    Pra evitar esse erro e se você tiver as sources aí, vai no arquivo otserv.cpp e comenta da linha:

     

    std::cout << ">> Checking software version... ";

     

    até as linhas:

    startupErrorMessage("Unable to fetch blacklist!");}

     

    /* assim que comenta
    dae é só você comentar da linha x que mandei até a linha y */

  8. local pausa = 120*60*1000 -- (1000 = 1 segundos) Tempo que o script durarálocal texto = "You have 3 times more experience for 60 minutes, do not logout or else you will loose the bonus."local exp = 2.0 -- O quanto que você quer que dobre sua experiencia, por exemplo 2 é 2x as rates do seu server.function onUse(cid, item, frompos, item2, topos)   if item.itemid == 7443 then      doRemoveItem(item.uid, 1)      doPlayerSetExperienceRate(cid, exp)      doSendMagicEffect(frompos, 13)      doPlayerSendTextMessage(cid, 22, texto)      addEvent(potion, pausa, cid)   endendfunction potion(cid)   local textofinal = "Your bonus time is gone." -- Texto que irá receber quando o efeito da potion acabar.   local expfinal   = 1 --Não mude, isso é para a experiencia voltar ao normal.   if isPlayer(cid) then      doPlayerSetExperienceRate(cid, expfinal)      doPlayerSendTextMessage(cid, 22, textofinal)   endend

     

  9. Sistema de Aura

    bJebguO.gif LdBdcAu.gif

    É possível configurar a espessura da Aura por um script, sem precisar editar a source do cliente. Foi desenvolvido pra um servidor de Pokémon.

     

    Sistema de Shop 

    YJLXZj6.png

    A diferença desse sistema de Shop pelos que tem na net é que esse faz conexão com o servidor. Você pode adicionar novos itens, adicionar promoções, etc, sem os players precisarem atualizar o cliente.

  10. Eu lembro SADLKmAWElmd.
    Só não lembro se foi no Kpdo, NPO ou Svke... e também lembro dos fóruns, rofl. Acho que lembro que a última coisa q te mandei na época do MSN foi o sistema de Pokedex ASDLKMLFSKFTL old.

    A quanto tempo, rofl.  E obg. sz

  11. Obrigado pessoal, zdflkzmsd. Só uma coisa que esqueci de mencionar: não sou eu quem faz o Design. Geralmente quando me pedem um módulo fazem o Design dele por mim no Photoshop e me mandam o PSD. Eu basicamente replico, rofl.

  12. Oi, eu sou o Porai e quero mostrar através deste tópico alguns sistemas que já desenvolvi. (estou tentando me vender :X)

    Estou atuando como freelancer, para mais informações, PM.

     

    OTPiece/Pirate King Online:

    Spoiler

     

    Pet System (Módulo/Sistema)

    Spoiler

     

    Dgem1jL.png
     

    Criatura que segue o player, dá auto-loot nos itens configurados e possui slots limitados. Quando acabar os slots o auto-loot não irá mais funcionar. O botão deposit items transfere os items para o depot, cada pet com um tempo determinado. Se você estiver em frente ao depot o tempo de deposito será instantâneo.

     

     

    Sistema de Market (Módulo)

    Spoiler

     

    CR2gCNy.png

    Comprar e vender itens. Expiram em 60 horas.

     


    Sistema de Task (Módulo)

    Spoiler

     

    RYIGi0k.png

     

    Sistema de task para recompensa os jogadores com task points por matar criaturas. Task points podem ser trocados por outras coisas, tipo: XP, Itens, etc.

     


    Quest Log (Módulo)

    Spoiler

     

    vGhGFjh.png

     

    Sistema de quest log com suporte a tradução. Mostra marcações no minimap, ações baseadas em storages, etc.

     


    Sistema de Imbuir Itens (Módulo)

    Spoiler

     

    AhwoadI.png

     

    Sistema de encantar itens, igual o do Tibia Global. A diferença é que você pode usar Pirate Dust para aumentar o tempo dos encantos.

     


    Sistema de Profissão (Módulo)

    Spoiler

     

    NHxn3SP.png
    Craftar itens baseado na sua profissão, skills da profissão e cada item com seu tempo. Pirate Dust aumenta o tempo do encanto do Imbuing, no sistema de profissão ele reduz o tempo de craftar um item.

     

    Outros

    Spoiler

     

    gf3u3aB.png

    1 - Controlar a velocidade dos efeitos in-game.

    2 - Sistema de pulo.

    3 - Sistema de shield. (quase um utamo, só que tem um efeito visual na vida e não usa a mana, é um sistema novo)

     

     

     

     

     

    Fairy Tail Online:

    Spoiler

     

    Modulo de Guild Task (Request Board)

    Spoiler

     

    tUvGKpy.png

    Cada guilda possui seu request board e ao iniciar um task ela irá sumir para os outros membros. São limitadas. Todos os dias uma guilda ganha um numero X de tasks novas.

     

     

     

    Outros

    Spoiler

     

    zXNwKMk.png

    1 - Paperdoll. (Equipar um item e aparecer no personagem criando qualquer combinação de roupa)

    2 - O sistema de efeitos é um pouco mais complexo: é possível alterar se ele vai aparecer em cima/baixo de criatura/item, velocidade e também cor (igual mask das outfits, td in-game).

    3 - Outro tipo de configuração em efeitos: seguirem o player e não ficarem para trás.

    4 - Sistema de canais. Sistema de instancia (?). Geralmente quando querem fazer um lugar onde só pode ter 1 player (tipo uma dungeon), utilizam mapas duplicados... e para não precisar duplicar mapas o sistema foi criado.

    5 - Barra de ação. A cada cor representa uma ação e ela pode ter qualquer cor. Exemplo: rage em monstros (vermelha), exhaust em ações (branco), etc. 

     

     

     

    Outros:

    Spoiler

    Sistema de Aura

    bJebguO.gif LdBdcAu.gif

    É possível configurar a espessura da Aura por um script, sem precisar editar a source do cliente. Foi desenvolvido pra um servidor de Pokémon.

     

    Sistema de Shop

    YJLXZj6.png

    A diferença desse sistema de Shop pelos que tem na net é que esse faz conexão com o servidor. Você pode adicionar novos itens, adicionar promoções, etc, sem os players precisarem atualizar o cliente.

     

    Meu módulos geralmente são sempre client/server side para evitar eventuais atualizações no cliente, caso queira adicionar novas informações.

    Tenho beeeem mais coisa....... mas isso é bem cansativo de postar.

     

    Discord: Porai#4377

  • Quem Está Navegando   0 membros estão online

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