Ir para conteúdo

Adicionar Items ao Depot do Jogador[Online/Offline]


Vodkart

Posts Recomendados

Descrição: é um comando para enviar items direto ao depot do jogador, mesmo ele estando online ou offline!

 

Testado: em Versão Sqlite, não sei se suporta versão Mysql/Sql

 

additemdepot.lua
function doPlayerAddDepotItems(pid, item, count) --By magus and edited by vodkart
local item,count = {item},{(count or 1)}
    for k,v in ipairs(item) do
    local ls = db.getResult("SELECT `sid` FROM `player_depotitems` WHERE `player_id` = "..pid.." ORDER BY `sid` DESC LIMIT 1")
    return db.executeQuery("INSERT INTO `player_depotitems` (`player_id`, `sid`, `pid`, `itemtype`, `count`, `attributes`) VALUES ("..pid..", "..(ls:getDataInt("sid")+1)..", 101, "..v..", "..count[k]..", '')") or false
    end
end
function onSay(cid, words, param)
local t = string.explode(param:lower(),",")
if not t[1] then doPlayerSendCancel(cid, "digite Nome, Item ID, quantidade.") return true
elseif not getPlayerByNameWildcard(t[1]) and not getPlayerGUIDByName(t[1]) then doPlayerSendCancel(cid, "Você deve digitar um Nome Válido.") return true 
elseif not tonumber(t[2]) or not tonumber(t[3]) or tonumber(t[3]) < 1 or tonumber(t[3]) > 999 or not isItemStackable(t[2]) and tonumber(t[3]) > 10 then doPlayerSendCancel(cid, "você deve digitar NOME,ID,QUANTIDADE(maior que 0"..(not isItemStackable(t[2]) and " até 10 se não for empilhavel." or " até 1000 se for empilhavel.")..").") return true
elseif not isItemMovable(t[2]) or not getItemNameById(tonumber(t[2])) then  doPlayerSendCancel(cid, "Este item não existe ou não pode ser adicionado ao jogador.") return true
end
local player = getPlayerByNameWildcard(t[1])
if player then
local parcel = doCreateItemEx(ITEM_PARCEL)
if isItemStackable(t[2]) or tonumber(t[3]) == 1 then
doAddContainerItem(parcel, t[2], t[3])
else
for i = 1, t[3] do
doAddContainerItem(parcel, t[2], 1)
end
end
doPlayerSendMailByName(getPlayerNameByGUID(getPlayerGUIDByName(t[1])), parcel, 1)
else
local getPlayer = getPlayerGUIDByName(t[1])
if isItemStackable(t[2]) or tonumber(t[3]) == 1 then
doPlayerAddDepotItems(getPlayer, t[2], t[3])
else
for i = 1, t[3] do
doPlayerAddDepotItems(getPlayer, t[2], 1)
end
end
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"você adicionou "..t[3].." "..getItemNameById(t[2]).." ao depot do jogador "..t[1])
return true
end
Tag
<talkaction log="yes" access="5" words="/adddepot" event="script" value="additemdepot.lua"/>
Exemplo de uso:
/adddepot vodkart,2160,500
ou
adddepot vodkart,2494,6
Editado por Vodkart
Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...

Teria como colocar pra quando o jogador viesse a logar, ele receba uma mensagem assim:

Olá Fawz, você recebeu uma demon legs enquanto estava deslogado. Para pega-la, basta ir ao DP da cidade de Thais.

Olá Fawz, você recebeu um golden helmet..

Olá Fawz, você recebeu 100k...

Link para o comentário
Compartilhar em outros sites

da pra dar uma adaptada nele pra mysql nao? to usando mysql agr.

Tome.

 

 

 

function doPlayerAddDepotItems(pid, item, count) --By magus and edited by vodkart

local item,count = {item},{(count or 1)}
for k,v in ipairs(item) do
local ls = db.getResult("SELECT `sid` FROM `player_depotitems` WHERE `player_id` = "..pid.." ORDER BY `sid` DESC LIMIT 1")
return db.query("INSERT INTO `player_depotitems` (`player_id`, `sid`, `pid`, `itemtype`, `count`, `attributes`) VALUES ("..pid..", "..(ls:getDataInt("sid")+1)..", 101, "..v..", "..count[k]..", '')") or false
end
end
function onSay(cid, words, param)
local t = string.explode(param:lower(),",")
if not t[1] then doPlayerSendCancel(cid, "digite Nome, Item ID, quantidade.") return true
elseif not getPlayerByNameWildcard(t[1]) and not getPlayerGUIDByName(t[1]) then doPlayerSendCancel(cid, "Você deve digitar um Nome Válido.") return true
elseif not tonumber(t[2]) or not tonumber(t[3]) or tonumber(t[3]) < 1 or tonumber(t[3]) > 999 or not isItemStackable(t[2]) and tonumber(t[3]) > 10 then doPlayerSendCancel(cid, "você deve digitar NOME,ID,QUANTIDADE(maior que 0"..(not isItemStackable(t[2]) and " até 10 se não for empilhavel." or " até 1000 se for empilhavel.")..").") return true
elseif not isItemMovable(t[2]) or not getItemNameById(tonumber(t[2])) then doPlayerSendCancel(cid, "Este item não existe ou não pode ser adicionado ao jogador.") return true
end
local player = getPlayerByNameWildcard(t[1])
if player then
local parcel = doCreateItemEx(ITEM_PARCEL)
if isItemStackable(t[2]) or tonumber(t[3]) == 1 then
doAddContainerItem(parcel, t[2], t[3])
else
for i = 1, t[3] do
doAddContainerItem(parcel, t[2], 1)
end
end
doPlayerSendMailByName(getPlayerNameByGUID(getPlayerGUIDByName(t[1])), parcel, 1)
else
local getPlayer = getPlayerGUIDByName(t[1])
if isItemStackable(t[2]) or tonumber(t[3]) == 1 then
doPlayerAddDepotItems(getPlayer, t[2], t[3])
else
for i = 1, t[3] do
doPlayerAddDepotItems(getPlayer, t[2], 1)
end
end
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"você adicionou "..t[3].." "..getItemNameById(t[2]).." ao depot do jogador "..t[1])
return true

 

end

 

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

  • 2 months later...

 

Descrição: é um comando para enviar items direto ao depot do jogador, mesmo ele estando online ou offline!

 

Testado: em Versão Sqlite, não sei se suporta versão Mysql/Sql

 

additemdepot.lua
function doPlayerAddDepotItems(pid, item, count) --By magus and edited by vodkart
local item,count = {item},{(count or 1)}
    for k,v in ipairs(item) do
    local ls = db.getResult("SELECT `sid` FROM `player_depotitems` WHERE `player_id` = "..pid.." ORDER BY `sid` DESC LIMIT 1")
    return db.executeQuery("INSERT INTO `player_depotitems` (`player_id`, `sid`, `pid`, `itemtype`, `count`, `attributes`) VALUES ("..pid..", "..(ls:getDataInt("sid")+1)..", 101, "..v..", "..count[k]..", '')") or false
    end
end
function onSay(cid, words, param)
local t = string.explode(param:lower(),",")
if not t[1] then doPlayerSendCancel(cid, "digite Nome, Item ID, quantidade.") return true
elseif not getPlayerByNameWildcard(t[1]) and not getPlayerGUIDByName(t[1]) then doPlayerSendCancel(cid, "Você deve digitar um Nome Válido.") return true 
elseif not tonumber(t[2]) or not tonumber(t[3]) or tonumber(t[3]) < 1 or tonumber(t[3]) > 999 or not isItemStackable(t[2]) and tonumber(t[3]) > 10 then doPlayerSendCancel(cid, "você deve digitar NOME,ID,QUANTIDADE(maior que 0"..(not isItemStackable(t[2]) and " até 10 se não for empilhavel." or " até 1000 se for empilhavel.")..").") return true
elseif not isItemMovable(t[2]) or not getItemNameById(tonumber(t[2])) then  doPlayerSendCancel(cid, "Este item não existe ou não pode ser adicionado ao jogador.") return true
end
local player = getPlayerByNameWildcard(t[1])
if player then
local parcel = doCreateItemEx(ITEM_PARCEL)
if isItemStackable(t[2]) or tonumber(t[3]) == 1 then
doAddContainerItem(parcel, t[2], t[3])
else
for i = 1, t[3] do
doAddContainerItem(parcel, t[2], 1)
end
end
doPlayerSendMailByName(getPlayerNameByGUID(getPlayerGUIDByName(t[1])), parcel, 1)
else
local getPlayer = getPlayerGUIDByName(t[1])
if isItemStackable(t[2]) or tonumber(t[3]) == 1 then
doPlayerAddDepotItems(getPlayer, t[2], t[3])
else
for i = 1, t[3] do
doPlayerAddDepotItems(getPlayer, t[2], 1)
end
end
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"você adicionou "..t[3].." "..getItemNameById(t[2]).." ao depot do jogador "..t[1])
return true
end
Tag
<talkaction log="yes" access="5" words="/adddepot" event="script" value="additemdepot.lua"/>
Exemplo de uso:
/adddepot vodkart,2160,500
ou
adddepot vodkart,2494,6

 

 

 

Coloquei ele e tal, até funfa os comandos e diz que add, mas quando abro o depot ele não tem nada '-'

 

@edit

 

Retiro o que disse :) Funfou aqui xD Valeu mesmo

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

vodkart não ta funcionando pra players offline cara.. testei em serv 8.60!! o item só é enviado quando o player ta on!! vê se da pra ajeitar lek eu agradeceria muito :DD vlw abraços.. aguardando!!

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

  • 8 years later...
×
×
  • Criar Novo...