VO
talkaction

Adicionar Items ao Depot do Jogador[Online/Offline]

Por Vodkart, 07 de ago. de 2013 em Actions e Talkactions

script
13
5.3k
VodkartV
07 de agosto de 2013 às 20:08

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 Agosto 7 por Vodkart

07 de agosto de 2013 às 20:15

Funfo 100% VLW

 

@Edit Limit Rep amanho eu do

Editado Agosto 7 por SkyDarkyes

SlicerS
07 de agosto de 2013 às 20:19

po tinha q humilhar oq eu fiz? ;x tu eh muito malvado kk'

07 de agosto de 2013 às 22:14

Cara não vod a REP porque ta faltando kkkk.

 

Mais amanhã passo aqui e coloco o seu, ótimo trabalho, perfeito para sistemas de DONATE manuais.

3 semanas depois...
LumusL
25 de agosto de 2013 às 10:54

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...

VodkartV
26 de agosto de 2013 às 18:57

assim que puder eu atualizo, estou sem tempo. mtos trabalhos na faculdade '-'

 

rep+ pela sugestão

MaenilseM
27 de agosto de 2013 às 15:23

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

LumusL
30 de agosto de 2013 às 22:22

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 Agosto 30 por Fawz

3 meses depois...
24 de novembro de 2013 às 22:02

 

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 Novembro 24 por DaniloARodrigues

LanceFakeL
27 de novembro de 2013 às 14:40

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 Novembro 27 por LanceFake

27 de novembro de 2013 às 14:48

/\ Aqui funcionou de boa.

VincV
30 de novembro de 2013 às 12:13

lol, tira esse loop da função(tá feio esse pog)...

usa direto o item e a count.

8 anos depois...
DilooowD
13 de dezembro de 2021 às 15:35
Em 07/08/2013 em 20:15, SkyDarkyes disse:

Funfo 100% VLW

 

@Edit Limit Rep amanho eu do

Tfs 1.2 conseguir adaptar?