Ir para conteúdo
  • Cadastre-se

(Resolvido)[PEDIDO] Ganhar recompensa ao matar jogador


Ir para solução Resolvido por Storm,

Posts Recomendados

Boa noite galera do TK utilizo tfs 8.60

Eu gostaria de um sistema de recompensa, se o jogador que morreu estiver com 

X storage o jogador que matou receberia esse item : 5943

Y storage o jogador que matou receberia esse item :  5808

caso o jogador que foi morto não tivesse nenhuma das duas storage o jogador que matou ele receberá esse item 5805

Rep ++

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

@OinomedRellik 

 

Script:

local config = {
	
	storageX = 1001,
	itemX = 5943,
	countX = 1,
	
	StorageY = 1002,
	itemY = 5808,
	countY = 1,
	
	item0 = 5805,
	count0 = 1	
}

function onKill(cid, target, lastHit)
	if isPlayer(target) then
		if getPlayerStorageValue(target, storageX) == 1 then
			doPlayerAddItem(cid, itemX, countX)
		elseif getPlayerStorageValue(target, storageY) == 1 then
			doPlayerAddItem(cid, itemY, countY)
		else
			doPlayerAddItem(cid, item0, count0)
		end
	end
	return true
end

 

XML:

<event type="kill" name="Recompensa" event="script" value="recompensa.lua"/>

 

Não se esqueça de registrar o comando abaixo no login.lua:

registerCreatureEvent(cid, "Recompensa")

 

Link para o post
Compartilhar em outros sites
5 minutos atrás, Storm disse:

@OinomedRellik 

 

Script:


local config = {
	
	storageX = 1001,
	itemX = 5943,
	countX = 1,
	
	StorageY = 1002,
	itemY = 5808,
	countY = 1,
	
	item0 = 5805,
	count0 = 1	
}

function onKill(cid, target, lastHit)
	if isPlayer(target) then
		if getPlayerStorageValue(target, storageX) == 1 then
			doPlayerAddItem(cid, itemX, countX)
		elseif getPlayerStorageValue(target, storageY) == 1 then
			doPlayerAddItem(cid, itemY, countY)
		else
			doPlayerAddItem(cid, item0, count0)
		end
	end
	return true
end

 

XML:


<event type="kill" name="Recompensa" event="script" value="recompensa.lua"/>

 

Não se esqueça de registrar o comando abaixo no login.lua:


registerCreatureEvent(cid, "Recompensa")

 

 

da um error

[Error - CreatureScript Interface]
data/creaturescripts/scripts/news/heartecerebro.lua:onKill
Description:
(luaDoPlayerAddItem) Item not found
 

Link para o post
Compartilhar em outros sites
local nomeItem, itemNull, qtd = "NOME DO ITEM", 5805, 1
local config = {
	[storageX] = {"NOME DO ITEM", {item_id, QTD}},
	[storageY] = {"NOME DO ITEM", {item_id, QTD}}
}

function onKill(cid, target, lastHit)
if (not isPlayer(cid)) or (not isPlayer(target)) then
	return true
end

  	for storage, itemId in pairs(config) do
  		if getPlayerStorageValue(cid, storage) ~= -1 then
    		doPlayerAddItem(cid, itemId[2])
      		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Você matou ".. getPlayerName(target) .." e recebeu ".. itemId[1] ..".")
      	else
    		doPlayerAddItem(cid, itemNull, qtd)
      		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Você matou ".. getPlayerName(target) .." e recebeu ".. nomeItem ..".")
      	end
    	break
  	end
  	return true
end

 

<event type="kill" name="killReward" event="script" value="killPlayer.lua"/>

 

registerCreatureEvent(cid, "killReward")

 

 

ItemNull = Caso o jogador não tenha nenhuma das storages

qtd = a quantidade do itemNull

 

StorageX e Y = Storage que você quer adicionar

item_id e QTD é os itens e a quantidade

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

 

Link para o post
Compartilhar em outros sites
13 minutos atrás, KOLISAO disse:

local itemNull, qtd = 5805, 1
local config = {
	[storageX] = {item_id, QTD},
	[storageY] = {item_id, QTD}
}

function onKill(cid, target, lastHit)
if (not isPlayer(cid)) or (not isPlayer(target)) then
	return true
end

  	for storage, itemId in pairs(config) do
  		if getPlayerStorageValue(cid, storage) ~= -1 then
    		doPlayerAddItem(cid, itemId[1], itemId[2])
      	else
    		doPlayerAddItem(cid, itemNull, qtd)
      	end
  	end
  	return true
end

 


<event type="kill" name="killReward" event="script" value="killPlayer.lua"/>

 


registerCreatureEvent(cid, "killReward")

 

 

o item sem storage tá entregando corretamente o problema é que lá na quantidade está [1] e está vindo [2] items

e será que tem como por para receber uma mensagem no default com cor orange  nas 3 recompensa?

Exemplo : você acaba de matar um player com X storage, Y storage ou sem storage

 

 

o meu tá dessa maneira e o item sem storage tá vindo 2 invez de 1

Spoiler

local itemNull, qtd = 5805, 1
local config = {
    [1001] = {5943, 1},
    [1002] = {5808, 1}
}

function onKill(cid, target, lastHit)
if (not isPlayer(cid)) or (not isPlayer(target)) then
    return true
end

      for storage, itemId in pairs(config) do
          if getPlayerStorageValue(cid, storage) ~= -1 then
            doPlayerAddItem(cid, itemId[1], itemId[2])
          else
            doPlayerAddItem(cid, itemNull, qtd)
          end
      end
      return true
end

 

Editado por OinomedRellik (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
9 minutos atrás, OinomedRellik disse:

o item sem storage tá entregando corretamente o problema é que lá na quantidade está [1] e está vindo [2] items

e será que tem como deixar uma mensagem para cada um dos 3? por exemplo você acaba de receber recompensa por matar X etc..

 

Atualizei o tópico!
Testa ai, só não entendi quem deve ter a storageValue, o jogador que matar ou oque morreu...

 

Link para o post
Compartilhar em outros sites
9 minutos atrás, KOLISAO disse:

Atualizei o tópico!
Testa ai, só não entendi quem deve ter a storageValue, o jogador que matar ou oque morreu...

 

por exemplo o jogador matar outro com a storage Y ai vem uma mensagem e quando ele mata um com a storage X vem outra diferente e quando mata um jogador sem as duas storage vem outra.

 

 

Mesmo com a storage escolhida vem o item que deveria vim só quando estava sem a storage

Editado por OinomedRellik (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Moderador
1 hora atrás, Storm disse:

@OinomedRellik 

 

Script:


local config = {
	
	storageX = 1001,
	itemX = 5943,
	countX = 1,
	
	StorageY = 1002,
	itemY = 5808,
	countY = 1,
	
	item0 = 5805,
	count0 = 1	
}

function onKill(cid, target, lastHit)
	if isPlayer(target) then
		if getPlayerStorageValue(target, config.storageX) == 1 then
			doPlayerAddItem(cid, config.itemX, config.countX)
		elseif getPlayerStorageValue(target, config.storageY) == 1 then
			doPlayerAddItem(cid, config.itemY, config.countY)
		else
			doPlayerAddItem(cid, config.item0, config.count0)
		end
	end
	return true
end

 

XML:


<event type="kill" name="Recompensa" event="script" value="recompensa.lua"/>

 

Não se esqueça de registrar o comando abaixo no login.lua:


registerCreatureEvent(cid, "Recompensa")

 

 

Só alterei uma coisinha, tenta esse.

Obs: code dessa pessoa aí que citei, se for resolvido, REP+ pra ela e não pra mim!

Editado por Movie (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
37 minutos atrás, OinomedRellik disse:

por exemplo o jogador matar outro com a storage Y ai vem uma mensagem e quando ele mata um com a storage X vem outra diferente e quando mata um jogador sem as duas storage vem outra.

 

 

Mesmo com a storage escolhida vem o item que deveria vim só quando estava sem a storage

 

Tenta agr

local nomeItem, itemNull, qtd = "NOME DO ITEM", 5805, 1
local config = {
	[storageX] = {"NOME DO ITEM", {item_id, QTD}},
	[storageY] = {"NOME DO ITEM", {item_id, QTD}}
}

function onKill(cid, target, lastHit)
if (not isPlayer(cid)) or (not isPlayer(target)) then
	return true
end

  	for storage, itemId in pairs(config) do
  		if getPlayerStorageValue(cid, storage) >= 1 then
    		doPlayerAddItem(cid, itemId[2])
      		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Você matou ".. getPlayerName(target) .." e recebeu ".. itemId[1] ..".")
      	else
    		doPlayerAddItem(cid, itemNull, qtd)
      		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Você matou ".. getPlayerName(target) .." e recebeu ".. nomeItem ..".")
      	end
    	break
  	end
  	return true
end

 

 

Link para o post
Compartilhar em outros sites
5 minutos atrás, KOLISAO disse:

Tenta agr


local nomeItem, itemNull, qtd = "NOME DO ITEM", 5805, 1
local config = {
	[storageX] = {"NOME DO ITEM", {item_id, QTD}},
	[storageY] = {"NOME DO ITEM", {item_id, QTD}}
}

function onKill(cid, target, lastHit)
if (not isPlayer(cid)) or (not isPlayer(target)) then
	return true
end

  	for storage, itemId in pairs(config) do
  		if getPlayerStorageValue(cid, storage) >= 1 then
    		doPlayerAddItem(cid, itemId[2])
      		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Você matou ".. getPlayerName(target) .." e recebeu ".. itemId[1] ..".")
      	else
    		doPlayerAddItem(cid, itemNull, qtd)
      		doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Você matou ".. getPlayerName(target) .." e recebeu ".. nomeItem ..".")
      	end
    	break
  	end
  	return true
end

 

 

mesma coisa, tando com a storage e mesmo assim recebo o item que não precisa de storage.

Link para o post
Compartilhar em outros sites

@OinomedRellik Testa aí, eu tinha esquecido de nomear as variáveis corretamente (muito tempo sem programar da nisso)

local config = {
	
	storageX = 1001,
	itemX = 5943,
	countX = 1,
	
	StorageY = 1002,
	itemY = 5808,
	countY = 1,
	
	item0 = 5805,
	count0 = 1	
}

function onKill(cid, target, lastHit)
	if isPlayer(target) then
		if getPlayerStorageValue(target, config.storageX) == 1 then
			doPlayerAddItem(cid, config.itemX, config.countX)
		elseif getPlayerStorageValue(target, config.storageY) == 1 then
			doPlayerAddItem(cid, config.itemY, config.countY)
		else
			doPlayerAddItem(cid, config.item0, config.count0)
		end
	end
	return true
end

 

Link para o post
Compartilhar em outros sites
8 horas atrás, Storm disse:

@OinomedRellik Testa aí, eu tinha esquecido de nomear as variáveis corretamente (muito tempo sem programar da nisso)


local config = {
	
	storageX = 1001,
	itemX = 5943,
	countX = 1,
	
	StorageY = 1002,
	itemY = 5808,
	countY = 1,
	
	item0 = 5805,
	count0 = 1	
}

function onKill(cid, target, lastHit)
	if isPlayer(target) then
		if getPlayerStorageValue(target, config.storageX) == 1 then
			doPlayerAddItem(cid, config.itemX, config.countX)
		elseif getPlayerStorageValue(target, config.storageY) == 1 then
			doPlayerAddItem(cid, config.itemY, config.countY)
		else
			doPlayerAddItem(cid, config.item0, config.count0)
		end
	end
	return true
end

 

 

tem como por para os três items items ficarem com essa descrição?

Esse eh o item de X. Que estava no level X no momento de ser assassinado por Y.

Link para o post
Compartilhar em outros sites

@OinomedRellik Testa aí, mas acho que não vai dar certo:

local config = {
	
	storageX = 1001,
	itemX = 5943,
	countX = 1,
	
	StorageY = 1002,
	itemY = 5808,
	countY = 1,
	
	item0 = 5805,
	count0 = 1	
}

function onKill(cid, target, lastHit)
	if isPlayer(target) then
		if getPlayerStorageValue(target, config.storageX) == 1 then
			local item = doPlayerAddItem(cid, config.itemX, config.countX)
			doSetItemSpecialDescription(item.uid, "Esse é o item de ".. getCreatureName(target) ..", que estava no level ".. getPlayerLevel(target) .." no momento de ser assassinado por ".. getCreatureName(cid) ..".")
		elseif getPlayerStorageValue(target, config.storageY) == 1 then
			local item = doPlayerAddItem(cid, config.itemY, config.countY)
			doSetItemSpecialDescription(item.uid, "Esse é o item de ".. getCreatureName(target) ..", que estava no level ".. getPlayerLevel(target) .." no momento de ser assassinado por ".. getCreatureName(cid) ..".")
		else
			local item = doPlayerAddItem(cid, config.item0, config.count0)
			doSetItemSpecialDescription(item.uid, "Esse é o item de ".. getCreatureName(target) ..", que estava no level ".. getPlayerLevel(target) .." no momento de ser assassinado por ".. getCreatureName(cid) ..".")
		end
	end
	return true
end

 

Link para o post
Compartilhar em outros sites
32 minutos atrás, Storm disse:

@OinomedRellik Testa aí, mas acho que não vai dar certo:


local config = {
	
	storageX = 1001,
	itemX = 5943,
	countX = 1,
	
	StorageY = 1002,
	itemY = 5808,
	countY = 1,
	
	item0 = 5805,
	count0 = 1	
}

function onKill(cid, target, lastHit)
	if isPlayer(target) then
		if getPlayerStorageValue(target, config.storageX) == 1 then
			local item = doPlayerAddItem(cid, config.itemX, config.countX)
			doSetItemSpecialDescription(item.uid, "Esse é o item de ".. getCreatureName(target) ..", que estava no level ".. getPlayerLevel(target) .." no momento de ser assassinado por ".. getCreatureName(cid) ..".")
		elseif getPlayerStorageValue(target, config.storageY) == 1 then
			local item = doPlayerAddItem(cid, config.itemY, config.countY)
			doSetItemSpecialDescription(item.uid, "Esse é o item de ".. getCreatureName(target) ..", que estava no level ".. getPlayerLevel(target) .." no momento de ser assassinado por ".. getCreatureName(cid) ..".")
		else
			local item = doPlayerAddItem(cid, config.item0, config.count0)
			doSetItemSpecialDescription(item.uid, "Esse é o item de ".. getCreatureName(target) ..", que estava no level ".. getPlayerLevel(target) .." no momento de ser assassinado por ".. getCreatureName(cid) ..".")
		end
	end
	return true
end

 

 

error que ocorre é esse

 

Spoiler

[Error - LuaInterface::loadFile] data/creaturescripts/scripts/news/heartecerebro.lua:21: ')' expected (to close '(' at line 20) near 'elseif'
[Error - Event::checkScript] Cannot load script (data/creaturescripts/scripts/news/heartecerebro.lua)
data/creaturescripts/scripts/news/heartecerebro.lua:21: ')' expected (to close '(' at line 20) near 'elseif'
 

 

e meu script tá desse jeito

Spoiler

local config = {
    
    storageX = 1001,
    itemX = 5808,
    countX = 1,
    
    storageY = 1005,
    itemY = 2320,
    countY = 1,
    
    item0 = 5943,
    count0 = 1    
}

function onKill(cid, target, lastHit)
    if isPlayer(target) then
        if getPlayerStorageValue(target, config.storageX) == 1 then
        local item = doPlayerAddItem(cid, config.itemX, config.countX)
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Você matou um {Membro da Akatsuki} e recebeu o Cerebro dele.")
            doSetItemSpecialDescription(item.uid, "Esse é o item de ".. getCreatureName(target) ..", que estava no level ".. getPlayerLevel(target) .." no momento de ser assassinado por ".. getCreatureName(cid)
        elseif getPlayerStorageValue(target, config.storageY) == 1 then
        local item1 = doPlayerAddItem(cid, config.itemY, config.countY)
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Você matou um {Membro da Anbu} e recebeu o Craneo dele.")
            doSetItemSpecialDescription(item1.uid, "Esse é o item de ".. getCreatureName(target) ..", que estava no level ".. getPlayerLevel(target) .." no momento de ser assassinado por ".. getCreatureName(cid)
        else
        local item2 = doPlayerAddItem(cid, config.item0, config.count0)
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Você matou um {Shinobi Neutro} e recebeu o Coração dele.")
            doSetItemSpecialDescription(item2.uid, "Esse é o item de ".. getCreatureName(target) ..", que estava no level ".. getPlayerLevel(target) .." no momento de ser assassinado por ".. getCreatureName(cid)
        end
    end
    return true
end

 

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

@OinomedRellik Você esqueceu de adicionar o ")" no final.

 

Spoiler

local config = {
    
    storageX = 1001,
    itemX = 5808,
    countX = 1,
    
    storageY = 1005,
    itemY = 2320,
    countY = 1,
    
    item0 = 5943,
    count0 = 1    
}

function onKill(cid, target, lastHit)
    if isPlayer(target) then
        if getPlayerStorageValue(target, config.storageX) == 1 then
        local item = doPlayerAddItem(cid, config.itemX, config.countX)
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Você matou um {Membro da Akatsuki} e recebeu o Cerebro dele.")
            doSetItemSpecialDescription(item.uid, "Esse é o item de ".. getCreatureName(target) ..", que estava no level ".. getPlayerLevel(target) .." no momento de ser assassinado por ".. getCreatureName(cid))
        elseif getPlayerStorageValue(target, config.storageY) == 1 then
        local item1 = doPlayerAddItem(cid, config.itemY, config.countY)
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Você matou um {Membro da Anbu} e recebeu o Craneo dele.")
            doSetItemSpecialDescription(item1.uid, "Esse é o item de ".. getCreatureName(target) ..", que estava no level ".. getPlayerLevel(target) .." no momento de ser assassinado por ".. getCreatureName(cid))
        else
        local item2 = doPlayerAddItem(cid, config.item0, config.count0)
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Você matou um {Shinobi Neutro} e recebeu o Coração dele.")
            doSetItemSpecialDescription(item2.uid, "Esse é o item de ".. getCreatureName(target) ..", que estava no level ".. getPlayerLevel(target) .." no momento de ser assassinado por ".. getCreatureName(cid))
        end
    end
    return true
end

 

 

Editado por Storm (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
4 minutos atrás, Storm disse:

@OinomedRellik Você esqueceu de adicionar o ")" no final.

 

  Ocultar conteúdo


local config = {
    
    storageX = 1001,
    itemX = 5808,
    countX = 1,
    
    storageY = 1005,
    itemY = 2320,
    countY = 1,
    
    item0 = 5943,
    count0 = 1    
}

function onKill(cid, target, lastHit)
    if isPlayer(target) then
        if getPlayerStorageValue(target, config.storageX) == 1 then
        local item = doPlayerAddItem(cid, config.itemX, config.countX)
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Você matou um {Membro da Akatsuki} e recebeu o Cerebro dele.")
            doSetItemSpecialDescription(item.uid, "Esse é o item de ".. getCreatureName(target) ..", que estava no level ".. getPlayerLevel(target) .." no momento de ser assassinado por ".. getCreatureName(cid))
        elseif getPlayerStorageValue(target, config.storageY) == 1 then
        local item1 = doPlayerAddItem(cid, config.itemY, config.countY)
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Você matou um {Membro da Anbu} e recebeu o Craneo dele.")
            doSetItemSpecialDescription(item1.uid, "Esse é o item de ".. getCreatureName(target) ..", que estava no level ".. getPlayerLevel(target) .." no momento de ser assassinado por ".. getCreatureName(cid))
        else
        local item2 = doPlayerAddItem(cid, config.item0, config.count0)
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Você matou um {Shinobi Neutro} e recebeu o Coração dele.")
            doSetItemSpecialDescription(item2.uid, "Esse é o item de ".. getCreatureName(target) ..", que estava no level ".. getPlayerLevel(target) .." no momento de ser assassinado por ".. getCreatureName(cid))
        end
    end
    return true
end

 

 

 

error 

Spoiler

[Error - CreatureScript Interface]
data/creaturescripts/scripts/news/heartecerebro.lua:onKill
Description:
data/creaturescripts/scripts/news/heartecerebro.lua:20: attempt to index local 'item' (a number value)
stack traceback:
        data/creaturescripts/scripts/news/heartecerebro.lua:20: in function <data/creaturescripts/scripts/news/heartecerebro.lua:15>
 

 

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

@OinomedRellik Tenta assim:

 

Spoiler

local config = {
    
    storageX = 1001,
    itemX = 5808,
    countX = 1,
    
    storageY = 1005,
    itemY = 2320,
    countY = 1,
    
    item0 = 5943,
    count0 = 1    
}

function onKill(cid, target, lastHit)
    if isPlayer(target) then
        if getPlayerStorageValue(target, config.storageX) == 1 then
        local item = doPlayerAddItem(cid, config.itemX, config.countX)
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Você matou um {Membro da Akatsuki} e recebeu o Cerebro dele.")
            doSetItemSpecialDescription(item, "Esse é o item de ".. getCreatureName(target) ..", que estava no level ".. getPlayerLevel(target) .." no momento de ser assassinado por ".. getCreatureName(cid))
        elseif getPlayerStorageValue(target, config.storageY) == 1 then
        local item1 = doPlayerAddItem(cid, config.itemY, config.countY)
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Você matou um {Membro da Anbu} e recebeu o Craneo dele.")
            doSetItemSpecialDescription(item1, "Esse é o item de ".. getCreatureName(target) ..", que estava no level ".. getPlayerLevel(target) .." no momento de ser assassinado por ".. getCreatureName(cid))
        else
        local item2 = doPlayerAddItem(cid, config.item0, config.count0)
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ORANGE, "Você matou um {Shinobi Neutro} e recebeu o Coração dele.")
            doSetItemSpecialDescription(item2, "Esse é o item de ".. getCreatureName(target) ..", que estava no level ".. getPlayerLevel(target) .." no momento de ser assassinado por ".. getCreatureName(cid))
        end
    end
    return true
end

 

 

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo