Ir para conteúdo
  • Cadastre-se

(Resolvido)Setando storage por kill de monstro


Ir para solução Resolvido por Flavio S,

Posts Recomendados

Galera como faço para quando player matar um monstro digamos o demodras ou algum boss, for setado uma storage para o player?



Link para o post
Compartilhar em outros sites

Use a função onKill do CREATURESCRIPT. (ela é ativada toda vez que o jogador mata algum mostro ou outro jogador.

O script deve ficar assim:

AoMatar(jogador, vitima)

Se vitima é X então
  mudar storage (y, 1)
fim.

retornar verdadeiro
fim

Não vou fazer o script para você, pois acho que o pessoal do fórum deve aprender mais e pedir menos.

Se tiver interesse é só pesquisar, e com a base que dei irá conseguir fazer facilmente.

Link para o post
Compartilhar em outros sites
function onKill(cid, target)
local stg = 45010 -- valor da storage
if getCreatureName(target) == "Demodras" then  -- Nome do boss entre " ".
	setPlayerStorageValue(cid, stg, 1)
end
return true
end
<event type="kill" name="boss" script="boss.lua"/> 
<script>
<event name="boss"/>
</script> 
player:registerEvent("boss") 

Não testei.

Editado por Lumus (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Obrigado a voces dois, e luan eu adoro aprender xD, vamo que vamo muito obrigado mesmo a voces :) nao vou dar o rep + porque ja dei hoje.



Link para o post
Compartilhar em outros sites

@Lumus, ficou legal seu script, porém não precisa do <script> <event name="boss"/> </script>, porque isso é adicionado aos monstros quando eles irão executar alguma função do creaturescript.

(eu falei movements lá encima, ta errado, é creaturescript)

No caso, se fosse pela função onDeath (ao morrer) poderia colocar em X mostro, como é onKill (ao matar) quem vai executar a função é o player, e você ja esta registrando o evento nele pela função onLogin.
 

-- <event type="login" name="bossLogin" script="boss.lua"/> 
-- <event type="kill" name="bossKill" script="boss.lua"/> 

function onKill(cid, target)
	local storage = 45010 -- valor da storage
	if getCreatureName(target) == "Demodras" then  -- Nome do boss entre " ".
		setPlayerStorageValue(cid, storage, 1)
	end
	return true
end

function onLogin(cid)
	registerCreatureEvent(cid, "bossKill")
	return true
end
Link para o post
Compartilhar em outros sites

Luan sobre seu script, eu tentei modificar pra ele setar mais storage com mais monstro, mas nao deu certo, ficou assim

 

function onKill(cid, target)
    local storage = 45010 -- valor da storage

 local storage2 = 45012 -- valor da storage
    
if getCreatureName(target) == "Demodras" then -- Nome do boss entre " ".
        setPlayerStorageValue(cid, storage, 1)
   

elseif getCreatureName(target) == "Hide" then

setPlayerStorageValue(cid, storage2, 1)

end
    return true
end

 

mas nao deu certo... conssegue me ajudar? preciso colocar pra umas 10 bosses esse script..

 

E sobre essa parte do script -- <event type="login" name="bossLogin" script="boss.lua"/>  estava dando erro a iniciar o ot na distro dizendo boss.lua not found... ai tirei essa parte... mas ele continua setando o storage mais apenas do primeiro monstro, do segundo ele n seta, ja inverti os monstro tambem ai se eu boto o hide de começo ele seta só pro hide.

Editado por Gustavo12345 (veja o histórico de edições)


Link para o post
Compartilhar em outros sites

function onKill(cid, target)
local storage = 45010 -- valor da storage
if getCreatureName(target) == "Demodras1" or getCreatureName(target) == "Demodras2" or getCreatureName(target) == "Demodras3" or getCreatureName(target) == "Demodras4" or getCreatureName(target) == "Demodras5" or getCreatureName(target) == "Demodras6" or getCreatureName(target) == "Demodras7" or getCreatureName(target) == "Demodras8" or getCreatureName(target) == "Demodras9" or getCreatureName(target) == "Demodras10" then
setPlayerStorageValue(cid, storage, 1)
end
return true
end
function onLogin(cid)
registerCreatureEvent(cid, "bossKill")
return true
end

Editado por Vinicius Xxgamexx (veja o histórico de edições)

Ando devagar, porque já tive pressa. E levo esse sorriso, porque já chorei demais...

________________________________________________________________________________

Minhas Sprites:

Mega Metagross

Mega Abomasnow

Pack de Shinys

[Posso atualizá-lo com novos shinys a qualquer momento]

Tutoriais:

[Completo] Criando e adicionando um novo Pokémon

[Actions] Criando quest no RME

Editores Lua/Xml/Sync Entre outros:

Editores Win/Mac/Linux

Link para o post
Compartilhar em outros sites

if getCreatureName(target) == "Demodras1" or "Demodras2" or "Demodras3" or "Demodras4" or "Demodras5" or "Demodras6" or "Demodras7" or "Demodras8" or "Demodras9" or "Demodras10" then setPlayerStorageValue(cid, storage, 1)

LOL
 
 if getCreatureName(target) == "Demodras1" or getCreatureName(target) == "Demodras2" then
Link para o post
Compartilhar em outros sites

LOL

 

 if getCreatureName(target) == "Demodras1" or getCreatureName(target) == "Demodras2" then

Hehe meu professor de novo  :P, vlw luan

Ando devagar, porque já tive pressa. E levo esse sorriso, porque já chorei demais...

________________________________________________________________________________

Minhas Sprites:

Mega Metagross

Mega Abomasnow

Pack de Shinys

[Posso atualizá-lo com novos shinys a qualquer momento]

Tutoriais:

[Completo] Criando e adicionando um novo Pokémon

[Actions] Criando quest no RME

Editores Lua/Xml/Sync Entre outros:

Editores Win/Mac/Linux

Link para o post
Compartilhar em outros sites

^ da forma que estão seus script ao matar um player chamado "Demondras" o player vai ganhar a storage ...

tem que usar o :

isMonster(target)
Editado por Stinger (veja o histórico de edições)

I must not fear. Fear is the mind killer.

Link para o post
Compartilhar em outros sites

assim nao daria filho, setaria mesmo storage pra todos os monstros kkkk, eu quero um storage diferente pra cada monstro morto entende...



Link para o post
Compartilhar em outros sites

O script não foi feito por mim  :hum:

function onKill(cid, target, lastHit)

if not (isPlayer(cid) and isMonster(target)) then
return true
end

local tab = {
["Dragon"] = 3940,
["Hydra"] = 3941,
["Demon"] = 3942,
}

setPlayerStorageValue(cid, tab[getCreatureName(target)], 1)

return true
end

Ando devagar, porque já tive pressa. E levo esse sorriso, porque já chorei demais...

________________________________________________________________________________

Minhas Sprites:

Mega Metagross

Mega Abomasnow

Pack de Shinys

[Posso atualizá-lo com novos shinys a qualquer momento]

Tutoriais:

[Completo] Criando e adicionando um novo Pokémon

[Actions] Criando quest no RME

Editores Lua/Xml/Sync Entre outros:

Editores Win/Mac/Linux

Link para o post
Compartilhar em outros sites
  • Solução

^

 

A verificação isPlayer(cid) é desnecessária tendo em vista que um monstro não pode matar outro. E daria erro caso não existisse o monstro informado na tabela, quando fosse setar a storage ...

 

local tb = {
	-- ["MONSTER"] = STORAGE, não se esqueça da virgula que é essencial pra funcionar ...
	["Rat"] = 4651,

}

function onKill(cid, target)
	if not isMonster(target) then return false end

	local monster = tb[getCreatureName(target)]

	if monster then
		setPlayerStorageValue(cid, monster, 1)
	end
	
	return true
end

function onLogin(cid)
	registerCreatureEvent(cid, "bossKill")
	return true
end

I must not fear. Fear is the mind killer.

Link para o post
Compartilhar em outros sites

Stinger deu certo seu script, valeu cara, voce aprendeu fazer por conta ou estudo algum conteudo? abraços velho



Link para o post
Compartilhar em outros sites

^ Sim aprendi lendo e com os ensinamentos de várias pessoas aqui do fórum, aqui mesmo no fórum tem bastante conteúdo bacana que da pra aprender fácil.

I must not fear. Fear is the mind killer.

Link para o post
Compartilhar em outros sites

Pode crer, tenho uma duvida, o script funcionou perfeitamente para meu proposito, mas agora surgiu outra funçao que preciso que ele faça, depois de matar o boss e setar o storage queria que ele esperasse 60 segundos e automaticamente o player seria teleportado pra outro lugar, eu editei ele assim mas nao deu certo da erro depois que mata o monstro

 

local templo = { x = 32369, y = 32241, z = 7 }
local tb = {
    -- ["MONSTER"] = STORAGE, não se esqueça da virgula que é essencial pra funcionar ...
    ["The Old Widow"] = 11045,
    ["Hide"] = 11055,
    ["The Snapper"] = 11065,
    ["The Bloodtusk"] = 11075,
    ["Shardhead"] = 11085,
    ["Esmeralda"] = 11095,
    ["Thul"] = 11105,
    ["The Many"] = 11115,
    ["The Noxious Spawn"] = 11125,
    ["Stonecracker"] = 11135,
    ["Leviathan"] = 11145,
}

function onKill(cid, target)
    if not isMonster(target) then return false end

    local monster = tb[getCreatureName(target)]

    if monster then
        setPlayerStorageValue(cid, monster, 1)
        wait(60000)
        doTeleportThing(cid, templo)
    end
    
    return true
end



Link para o post
Compartilhar em outros sites
local templo = { x = 32369, y = 32241, z = 7 }
local time = 60
local tb = {
    -- ["MONSTER"] = STORAGE, não se esqueça da virgula que é essencial pra funcionar ...
    ["The Old Widow"] = 11045,
    ["Hide"] = 11055,
    ["The Snapper"] = 11065,
    ["The Bloodtusk"] = 11075,
    ["Shardhead"] = 11085,
    ["Esmeralda"] = 11095,
    ["Thul"] = 11105,
    ["The Many"] = 11115,
    ["The Noxious Spawn"] = 11125,
    ["Stonecracker"] = 11135,
    ["Leviathan"] = 11145,
}


function onKill(cid, target)
    if not isMonster(target) then return false end


    local monster = tb[getCreatureName(target)]


    if monster then
        setPlayerStorageValue(cid, monster, 1)
        addEvent(doTeleportThing(cid, templo), os.clock+time)
    end
    
    return true
end

Ando devagar, porque já tive pressa. E levo esse sorriso, porque já chorei demais...

________________________________________________________________________________

Minhas Sprites:

Mega Metagross

Mega Abomasnow

Pack de Shinys

[Posso atualizá-lo com novos shinys a qualquer momento]

Tutoriais:

[Completo] Criando e adicionando um novo Pokémon

[Actions] Criando quest no RME

Editores Lua/Xml/Sync Entre outros:

Editores Win/Mac/Linux

Link para o post
Compartilhar em outros sites
local templo = {x = 32369, y = 32241, z = 7}
local time = 1 -- Minutos 
local tb = {
    -- ["MONSTER"] = STORAGE, não se esqueça da virgula que é essencial pra funcionar ...
    ["The Old Widow"] = 11045,
    ["Hide"] = 11055,
    ["The Snapper"] = 11065,
    ["The Bloodtusk"] = 11075,
    ["Shardhead"] = 11085,
    ["Esmeralda"] = 11095,
    ["Thul"] = 11105,
    ["The Many"] = 11115,
    ["The Noxious Spawn"] = 11125,
    ["Stonecracker"] = 11135,
    ["Leviathan"] = 11145,
}

function onKill(cid, target)
    if not isMonster(target) then return false end

    local monster = tb[getCreatureName(target)]

    if monster then
        setPlayerStorageValue(cid, monster, 1)
        addEvent(function()
             if isPlayer(cid) then   
                  doTeleportThing(cid, templo)
             end
        end, time*60*1000)
    end
    
    return true
end

I must not fear. Fear is the mind killer.

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo