Ir para conteúdo

Eskylo

Visconde
  • Total de itens

    477
  • Registro em

  • Última visita

  • Dias Ganhos

    5

Posts postados por Eskylo

  1. Esse é o caminho, criar um script do tipo ondeath, as vezes já existe algum que vc pode utilizar ou criar do zero mesmo

     

    A primeira coisa que deve fazer é checar se o player morreu no fly/ride/surf

     

    SE SIM, aí aplicar o tratamento do BACK, para que a pokebola possa ser usada pra soltar o poke quando ele nascer de novo.

     

    Não tenho certeza se é só copiar/colar, as vezes precisa de uma pequena alteração.

     

    Se precisar vai postando os scripts que vamos tentando te ajudar

  2. Realmente é uma função que pode pesar se vc configurar um área muito grande.

     

    Acho que a tentativa mais fácil aqui é vc verificar se esse for

    for i = 0, 255 do
    

    é realmente necessário... as vezes os monstros ficam em um só stackpos, porque monstros não andam um sobre os outros, e player tbm não pode atravessar monstro, acho que só empilharia (usaria mais de um stack) se tivesse uma escada descendo nessa área, algo assim. Só não lembro pra te dizer em qual stackpos os monstros ficam por padrão.

     

    Se você souber, e não tiver escadas nessa área, sugiro com primeira tentativa, configurar o stackpos e tirar esse for.

     

    Como segunda tentativa, o ideal seria rever como surgem esses monstros que voce está removendo, se for spawn normal acho que não teria como, mas se esses monstros  surgirem com uma alavanca daria pra salvar o ID deles e depois remover por ID, em vez de scanear o mapa atrás dele, mas aqui teria uma pouco mais de trabalho

  3. Faz um tempo que não mexo com poketibia, então não consigo te ajudar completamente, mas vou tentar te dar uma luz.

     

    Quando o player solta o poke, o sistema atualiza o status da pokebola, dizendo que agora o poke está fora.

     

    Quando o play chama o poke de volta, o sistema atualiza o status da pokebola, salvando que agora o poke está dentro.

     

    Pra usar surf/fly/ride o player solta o poke, e monta nele, ou seja, o sistema acha que o poke está fora da pokebola.

     

    Se ele morre, o sistema ainda acha que o poke está fora. É preciso fazer um tratamento no sistema dizendo que se morreu o poke volte pra dentro da pokebola.

     

    Como procuraria resolver isso:

     

    Criando um script de morte, quando o player morrer, verifica se ele estava em fly/surf/ride, SE estava, então volta o poke pra pokebola.

     

    Ou seja, criar um script de onDeath, e copiar parte do go/back, na verdade só o back, que é voltar pra pokebola.

  4. no map do seu server tem um npc chamado Jeronimo e quando o server vai carregar o mapa ele não tá achando o arquivo do npc que deveria existir.

     

    soluções:

     

    - remova o npc do mapa ou encontre/crie o arquivo xml e coloque na pasta npcs

  5. script II

    local holes =  {15469, 15460}function onUse(cid, item, fromPosition, itemEx, toPosition)if getPlayerStorageValue (cid, 54548) < 1 then ---- nova storage de aventureirodoPlayerSendCancel(cid, "Voce precisa ser Teacher!")return trueendif getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 or getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 75846) >= 1 orgetPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 or getPlayerStorageValue (cid, 98752) >= 1  then   --alterado v1.9   return doPlayerSendCancel(cid, "impossivel fazer isso agora.")endif(isInArray (holes, itemEx.itemid)) then    if not isCreature(itemEx.uid) then        if not (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1) then                                                        toPos = getThingPosition(itemEx.uid)                        fromPos = getCreaturePosition(cid)                            if getDirectionTo(fromPos, toPos) == getCreatureLookDirection(cid) then                                --quantItem = math.random(1, ProfessionLib.quantMax)                                doCreatureSetNoMove(cid, true)                                                                                                                                local tmp = getCreatureOutfit(cid)if getPlayerSex(cid) == 1 thentmp.lookType = 2508elsetmp.lookType = 2509end      doSetCreatureOutfit(cid, tmp, -1)      setPlayerStorageValue(cid, 98752, 1)                                  local newId = itemEx.itemid + 1--------------------------------------------------                                function fim(cid,toPos)       local rand = math.random(2, 6)                                doPlayerAddItem(cid, 15457, rand)                                doRemoveCondition(cid, CONDITION_OUTFIT)                                doCreatureSetNoMove(cid, false)                                setPlayerStorageValue(cid, 98752, -1)                                doTransformItem(getThingFromPos(toPos).uid, newId)                                doDecayItem(getThingFromPos(toPos).uid)end addEvent(fim, 8*1000,cid,toPos)                                --------------------------------------------------                                                                                        else                                doPlayerSendCancel(cid, "Voce percisa ficar de frente para esse item!")                            end                        else                            doPlayerSendCancel(cid, "Voce so pode cavar de frente!")                        end                    else                    doPlayerSendCancel(cid, "Voce precisa ser proficional na area para fazer isso!")                end                else    doPlayerSendCancel(cid, "isso nao e erva!")    end    return trueend

     

  6. tem que usar opcode pra mandar pro client os ids dos itens (client id) e as quantidades que vieram no loot

     

    ai com um modulo do otclient vc faz os itens aparecer na tela com background transparente

     

    eu nao sou muito bom com client, se nao eu faria o codigo, mas a logica é essa

  7.     $retorno_host = $host; // Local da base de dados MySql    $retorno_database = $db; // Nome da base de dados MySql    $retorno_usuario = $user; // Usuario com acesso a base de dados MySql    $retorno_senha = $passwd;  // Senha de acesso a base de dados MySql

     

  8. Tenta debugar o script pra tentar achar o erro, exemplo

     

    function onStatsChange(cid, attacker, type, combat, value)    if isMonster(cid) then        print('cid is monster')    end    if isMonster(attacker) then        print('attacker is monster')    end    if isMonster(attacker) and isMonster(cid) then        return false    end    return trueend

     

    observa o que aparece no distro quando um summon ataca um monstro e vice-versa, se não aparecer nada também é sinal de algo errado, talvez o erro até seja nas sources.

  9. function onKill(cid, target)local killer = Creature(cid)if not killer:isPlayer() then	return trueendtarget = Monster(target)    if (target ~= nil) then        local mt = MonsterType(target:getName())        if mt:useRewardChest() then            local loot = BossLoot:new(target)            if loot then                local corpse = Item(doCreateItem(MonsterType(target:getName()):getCorpseId(), 1, target:getPosition()))                doDecayItem()                target:setDropLoot(false)                loot:updateDamage()                loot:setRewards()		loot:addRewards()                corpse:setAttribute('aid', 21584)            end        end    end	return trueend

    Coloquei uma verificação na onkill, mas não tenho certeza se o problema está aqui mesmo. O script de 1 bag por boss deu certo?

  10. local bagId = 2000 -- coloque o id da bagfunction BossLoot:addRewards()    if self.players and self.players[1] and self.players[1][3] then        for i, playertab in ipairs(self.players) do            local player = Player(playertab[1])            if player then                local str = "The following items are available in your reward chest: "                local bagUid = Game.createItem(bagId, 1)                for i, lootTable in ipairs(playertab[3]) do                    local item = bagUid:addItem(lootTable[1].itemId, math.ceil(lootTable[2]))                    if item then                        str = str .. item:getNameDescription() .. ", "                    end                end                player:addItemRewardBag(bagUid)                str = str:sub(1, #str-2)                player:sendTextMessage(MESSAGE_EVENT_ADVANCE, str)            end        end    else        error("Error")    endend
    function Player:addItemRewardBag(item)local rewardbag = self:getDepotChest(99, true)    return rewardbag:addItemEx(item)end

    substitui essas 2 funções

     

    faz muito tempo que não mexo com tfs 1.x então pode ser que dê algum erro, mas tentei D:

  • Quem Está Navegando   0 membros estão online

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