Ir para conteúdo

[Talkaction] Dar Itens Diretamente No Inventário Do Player.


Fakezim

Posts Recomendados

Olá pessoal \o/.

Hoje vim trazer um script que fiz atoa, porém, bastante útil. O script funciona assim : você dá um item diretamente a um player pré-determinado, ao invés de ter que ir ao player, jogar no chão e ele ter que pegar. Pode-se usar o script através da seguinte maneira : "/presente player,itemid ou itemname,quantidade". Por exemplo : /presente Player,crystal coin,100 ou /presente Player,2160,100. Então, sem mais enrolação, vamos ao script :

 

Crie um arquivo chamando senditemtoplayer.lua e coloque isto dentro dele :

function onSay(cid, words, param)
if (param == "") then
  doPlayerSendCancel(cid, "É necessário escrever o nome de um player, e um item")
 return TRUE
  end  
p = string.explode(param, ",")
local player = getPlayerByName(p[1])
local ret = RETURNVALUE_NOERROR
local tmp = getCreaturePosition(player)

  if player then
	  else
  doPlayerSendCancel(cid, "Este player não existe.")
  return TRUE
  end

local create = tonumber(p[2])
if not create then
create = getItemIdByName(p[2], FALSE)
 if(create == LUA_ERROR) then
	 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este item não existe.")
					  return TRUE
 end
end
local countitem = 100
		 if (p[3]) then
			countitem = p[3]
		 end		
local item = doCreateItemEx(create, countitem)
if(p[4] and getBooleanFromString(p[4]) == TRUE) then
 if(p[5] and getBooleanFromString(p[5]) == TRUE) then
  tmp = getPlayerLookPos(player)
 end
	  ret = doTileAddItemEx(tmp, item)
else
 ret = doPlayerAddItemEx(player, item, TRUE)
end
if(ret ~= RETURNVALUE_NOERROR) then
 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O ID: " .. p[2].." não existe.")
 else
 doSendMagicEffect(getCreaturePosition(player), 13)
 doSendMagicEffect(getCreaturePosition(cid), 12)
 doCreatureSay(player, "Você recebeu um presente do ".. getCreatureName(cid) .. " ", TALKTYPE_ORANGE_1) -- Aqui é a mensagem que o player receberá ao receber o item.
 return TRUE
end
return true
end

 

Vá em talkactions.xml e cole esta tag :

<talkaction log="yes" access="5" words="/presente" event="script" value="senditemtoplayer.lua"/>

 

Você pode livremente editar o acess mínimo, ou o que vai aparecer quando você der um item ao player.

Então, é isso pessoal, muito obrigado pela atenção a vocês que leram até aqui.

Editado por Fakezim
Link para o comentário
Compartilhar em outros sites

Bom trabalho!

É muito util para eventos não automatizados e etc.

 

Adiantando as dúvidas dos outros usúarios:

Funciona com o Player receptor Off?

Link para o comentário
Compartilhar em outros sites

Nos ultimos tempos tenho visto que Tibia nao so Passou de um jogo como tantos outros e se transformou em uma visao de INOVAÇÃO,

Se alguem HOJE quer que o OTserver Sobreviva, se Diferencie a Outros é preciso INOVAR

Deixo Assim a Palavra INOVAÇÃO Como Ponto Forte para 2012 e que Novos Scripts Surjam de um Pensamento de INOVAÇOES, Esta Preparado para 2012?

ENTAO INOVE!

Fakezin Recebe os Aplausos da Hard , Feliz 2012.

 

Atenciosamente,

Hard

Link para o comentário
Compartilhar em outros sites

Bom trabalho!

É muito util para eventos não automatizados e etc.

 

Adiantando as dúvidas dos outros usúarios:

Funciona com o Player receptor Off?

Não, funciona apenas para players online.

Link para o comentário
Compartilhar em outros sites

if (param == "") then

doPlayerSendCancel(cid, "É necessário escrever o nome de um player, e um item")

return TRUE

end

p = string.explode(param, ",")

local player = getPlayerByName(p[1])

local ret = RETURNVALUE_NOERROR

local tmp = getCreaturePosition(player)

 

if player then

else

doPlayerSendCancel(cid, "Este player não existe.")

return TRUE

end

 

local create = tonumber(p[2])

if not create then

create = getItemIdByName(p[2], FALSE)

if(create == LUA_ERROR) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este item não existe.")

return TRUE

end

end

local countitem = 100

if (p[3]) then

countitem = p[3]

end

local item = doCreateItemEx(create, countitem)

if(p[4] and getBooleanFromString(p[4]) == TRUE) then

if(p[5] and getBooleanFromString(p[5]) == TRUE) then

tmp = getPlayerLookPos(player)

end

ret = doTileAddItemEx(tmp, item)

else

ret = doPlayerAddItemEx(player, item, TRUE)

end

if(ret ~= RETURNVALUE_NOERROR) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O ID: " .. p[2].." não existe.")

else

doSendMagicEffect(getCreaturePosition(player), 13)

doSendMagicEffect(getCreaturePosition(cid), 12)

doCreatureSay(player, "Você recebeu um presente do ".. getCreatureName(cid) .. " :D", TALKTYPE_ORANGE_1) -- Aqui é a mensagem que o player receberá ao receber o item.

return TRUE

end

return true

end

[/code]

 

Onde eu boto isso aki em cima?

 

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
  • 5 months later...
  • 2 weeks later...

Bom script' funcionou direitinho, uma dica, alguns iniciantes nao saberão onde criar a pasta senditemtoplayer.lua, procure explicar mais !

 

OTIMO SCRIPT

Bom, no início do tópico está escrito [TalkActions], cuja os usuários já saberão onde colocar o script.

Muito bom Reputado funcionou direitinho aqui no meu ot 8.60.

Você reviveu um tópico que estava inativo a quase 5 meses. Cuidado! Você pode ser alertado por isso.

 

@tópic

Script tá bem legal. Eu havia postado um script parecido aki alguns tempos atrás na minha conta antiga, cuja eu perdi a senha.

http://www.xtibia.co...ms-aos-players/

Tá aqui o link, o meu ficou mais simples de editar. Enfin, parabéns.

 

cara uma perguntinha esse script ele cria um item dentro do inventario do outro player ou transfere um item do seu inventario pro inventario do outro player?

Ele cria um item no iventário do jogador. Você não precisa ter o item, para dar o mesmo ao jogador.

Abraços.

Editado por LucasCorrea
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...