Ir para conteúdo

Featured Replies

Postado
  • Autor
12 horas atrás, dominus disse:

Primeiramente: essa funcao getplayerdamagepercent (), eu desconheço. Se não gerou erro no distro, logo ela existe, mas pode ser que ela execute de uma forma distinta da que tu queres.

Isso tem que ser analisado. 

 

Creaturescript/script/login.lua:

registerCreatureEvent(cid, "GuildMotd") 
registerCreatureEvent(cid, "deathPlayer") 
 

Isso faz com que seja registrado no player um evento do creaturescript como: premmy account, rook system, etc... 

Nesse caso nos exemplos acima são os dois eventos que estão adicionado em creaturescript.xml com os seus respectivos nomes (um nome para cada evento).

 

Ao adicionar um novo script em creaturescript voce tem que adicionar esse evento não só no arquivo creaturescript.xml como também no login.lua.

 

O script que você postou, eu creio que esteja certo, mesmo desconhecendo essa função getplayerdamagepercent.

 

será que poderia me ajudar com isso fazendo um teste?
o máximo que aconteceu foi o mostro desaparecer quando morre sem deixar corpo, é como se eu tivesse dado um  /r  nele
estou precisando muito desse script e por mais que eu mecha nele não vai, registrei no login.lua e continua do mesmo jeito, sem erro

outra coisa o xp de quando se mata um monstro é dividido de acordo com a quantidade de dano que cada jogador deu nele e quem dar mais rit fica com o loot certo? sera que é possivel usar a mesma função pra isso que eu quero?, no caso n daria a xp mas dependendo da quantidade de dano viria os itens, não sei vou começar a estudar o xp, mas se der por favor da uma mãozinha nesse scrip??
é o script que mais da dor de cabeça

  • Respostas 60
  • Visualizações 2.1k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • @xWhiteWolf me ajuda aqui mano http://www.tibiaking.com/forum/topic/67062-subir-escada-bug/#comment-385003

  • Esse error se deu por causa da função isCreature(monster) que está retornando um valor falso, ou seja, não é um monstro que está na variável "monster" da função.    No caso dele estar sumind

  • Fiz uma modificação no script:     Ps: muda "isplayeron ()" por: "getCreatureName ()"

Postado

Para termos sucesso na elaboração desse script, é necessário saber se essa função: getplayerdamagepercent existe e funciona da forma requerida.

 

A maior dificuldade é a elaboração dessa função que haveriguará o dano percentual de cada atacante do mesmo.

 

Por demais é revelante.

 

Poccnn.

Postado
  • Autor
Em 30/01/2016 17:47:42, dominus disse:

Para termos sucesso na elaboração desse script, é necessário saber se essa função: getplayerdamagepercent existe e funciona da forma requerida.

 

A maior dificuldade é a elaboração dessa função que haveriguará o dano percentual de cada atacante do mesmo.

 

Por demais é revelante.

 

Poccnn.

sera que podemos usar a mesma função do xp? aqui esta o script do xp

POKEEXP.LUA

Spoiler

local function playerAddExp(cid, exp)
    doPlayerAddExp(cid, exp)
    doSendAnimatedText(getThingPos(cid), exp, 215)
end


function onDeath(cid, corpse, deathList)
        
    --if not isCreature(cid) then return true end
    if isSummon(cid) or not deathList or getCreatureName(cid) == "Evolution" then return true end --alterado v1.8

    -------------Edited Golden Arena-------------------------   --alterado v1.7 \/\/
    if getPlayerStorageValue(cid, 22546) == 1 then
       setGlobalStorageValue(22548, getGlobalStorageValue(22548)-1)
       if corpse.itemid ~= 0 then doItemSetAttribute(corpse.uid, "golden", 1) end  --alterado v1.8    
    end   
    if getPlayerStorageValue(cid, 22546) == 1 and getGlobalStorageValue(22548) == 0 then
       local wave = getGlobalStorageValue(22547)
       for _, sid in ipairs(getPlayersOnline()) do
           if isPlayer(sid) and getPlayerStorageValue(sid, 22545) == 1 then
              if getGlobalStorageValue(22547) < #wavesGolden+1 then
                 doPlayerSendTextMessage(sid, 20, "Wave "..wave.." will begin in "..timeToWaves.."seconds!")   
                 doPlayerSendTextMessage(sid, 28, "Wave "..wave.." will begin in "..timeToWaves.."seconds!")
                 addEvent(creaturesInGolden, 100, GoldenUpper, GoldenLower, false, true, true)
                 addEvent(doWave, timeToWaves*1000)
              elseif getGlobalStorageValue(22547) == #wavesGolden+1 then
                 doPlayerSendTextMessage(sid, 20, "Você foi o último sobrevivente da Golden arena tome sua recompensa!")
                 doPlayerAddItem(sid, 2152, getPlayerStorageValue(sid, 22551)*2)    --premio
                 setPlayerStorageValue(sid, 22545, -1)
                 doTeleportThing(sid, getClosestFreeTile(sid, posBackGolden), false)
                 setPlayerRecordWaves(sid)
              end
           end
       end
       if getGlobalStorageValue(22547) == #wavesGolden+1 then
          endGoldenArena()
       end
    end
    ---------------------------------------------------   /\/\
    local givenexp = getWildPokemonExp(cid)
    ---local killer = getItemAttribute(corpse.uid, "corpseowner")  

if givenexp > 0 then
for a = 1, #deathList do
local pk = deathList[a]
---
local list = getSpectators(getThingPosWithDebug(pk), 30, 30, false)
if isCreature(pk) then
   local expTotal = math.floor(givenexp * getDamageMapPercent(pk, cid))
   local party = getPartyMembers(pk)
   if isInParty(pk) and getPlayerStorageValue(pk, 4875498) <= -1 then
      expTotal = math.floor(expTotal/#party)         --alterado v1.6.1
      for i = 1, #party do
          if isInArray(list, party) then             
if getPlayerLevel(pk) <= 50 then
             playerAddExp(party, expTotal * 200)  
elseif getPlayerLevel(pk) >= 51 and getPlayerLevel(pk) <= 75 then
             playerAddExp(party, expTotal * 130)
elseif getPlayerLevel(pk) >= 76 and getPlayerLevel(pk) <= 100 then
             playerAddExp(party, expTotal * 80)
elseif getPlayerLevel(pk) >= 101 and getPlayerLevel(pk) <= 150 then
             playerAddExp(party, expTotal * 40)
elseif getPlayerLevel(pk) >= 151 and getPlayerLevel(pk) <= 250 then
             playerAddExp(party, expTotal * 20)
elseif getPlayerLevel(pk) >= 251 and getPlayerLevel(pk) <= 350 then
             playerAddExp(party, expTotal * 10)
elseif getPlayerLevel(pk) >= 351 then
             playerAddExp(party, expTotal * 5)
             end
          end
      end
   elseif not isInParty(pk) then
if getPlayerLevel(pk) <= 50 then
playerAddExp(pk, math.floor(200 * givenexp * getDamageMapPercent(pk, cid)))
elseif getPlayerLevel(pk) >= 51 and getPlayerLevel(pk) <= 75 then
playerAddExp(pk, math.floor(130 * givenexp * getDamageMapPercent(pk, cid)))
elseif getPlayerLevel(pk) >= 76 and getPlayerLevel(pk) <= 100 then
playerAddExp(pk, math.floor(80 * givenexp * getDamageMapPercent(pk, cid)))
elseif getPlayerLevel(pk) >= 101 and getPlayerLevel(pk) <= 150 then
playerAddExp(pk, math.floor(40 * givenexp * getDamageMapPercent(pk, cid)))
elseif getPlayerLevel(pk) >= 151 and getPlayerLevel(pk) <= 250 then
playerAddExp(pk, math.floor(20 * givenexp * getDamageMapPercent(pk, cid)))
elseif getPlayerLevel(pk) >= 251 and getPlayerLevel(pk) <= 350 then
playerAddExp(pk, math.floor(10 * givenexp * getDamageMapPercent(pk, cid)))
elseif getPlayerLevel(pk) >= 351 then
playerAddExp(pk, math.floor(5 * givenexp * getDamageMapPercent(pk, cid)))
return true end      
   end       
end
end
end

    if isNpcSummon(cid) then
        local master = getCreatureMaster(cid)
        doSendMagicEffect(getThingPos(cid), getPlayerStorageValue(cid, 10000))
        doCreatureSay(master, getPlayerStorageValue(cid, 10001), 1)
        doRemoveCreature(cid)
    return false
    end
if corpse.itemid ~= 0 then   --alterado v1.8
   doItemSetAttribute(corpse.uid, "level", getPokemonLevel(cid))
   doItemSetAttribute(corpse.uid, "gender", getPokemonGender(cid))  
end
return true
end

 

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo