Ir para conteúdo
  • Cadastre-se

(Resolvido)Trocar premium points no trade


Ir para solução Resolvido por Ed.Specter,

Posts Recomendados

adiciona a função que citei.

 

e vê se funciona esse aqui:

talkactions

function onSay(cid, words, param, param2, channel)

local t = string.explode(param, ",")
local target = getCreatureByName(t[1])
local points = tonumber(t[2])
local item = 2233
local storage = 21223

if(param == '') then
	return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.")
end

if (target ~= nil) and isPlayer(target) and not isPlayerGhost(target) then
	if (points ~= nil) and (type(points) == 'number') and (points>0) then
		if getPlayerVipPoints(cid) > points then
			local addItem = doPlayerAddItem(cid, item, 1)
			doStartTrade(cid, target, addItem)
			doItemSetAttribute(addItem, "description", "Transferência de "..points.." premium points.")
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você deu trade no jogador "..getPlayerName(target)..", com a intenção de trocar "..points.." premium points.")
			doPlayerSendTextMessage(target, MESSAGE_INFO_DESCR, "O Jogador "..getPlayerName(cid).." deu trade em você, e está disposto a trocar "..points.." premium points.")
			setPlayerStorageValue(cid, storage, points)
		else
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem essa quantidade de premium points.")
		end
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")
	end
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")
end

return true
end

 

creaturescripts:

function onTradeAccept(cid, target, item)

local storage = 21223

local sto = getPlayerStorageValue(cid, storage)
if sto > 0 then
	doPlayerRemoveVipPoints(cid, sto)
	doPlayerAddVipPoints(target, sto)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você trocou "..sto.." premium points, Parabéns.")
	doPlayerSendTextMessage(target, MESSAGE_STATUS_CONSOLE_BLUE, "Você realizou uma troca e adquiriu "..sto.." premium points, Parabéns.")
	setPlayerStorageValue(cid, storage, 0)
end

return true
end

 

nesse caso você vai usar !trade NomeDoOutroPlayer, Quantidade de points. Exemplo: !trade Eduardo, 3

 

acho que deu pra ter uma boa base de como funciona..

não entendi direito esse do npc

download.jpg

Link para o post
Compartilhar em outros sites
7 minutos atrás, Ed.Specter disse:

adiciona a função que citei.

 

e vê se funciona esse aqui:

talkactions


function onSay(cid, words, param, param2, channel)

local t = string.explode(param, ",")
local target = getCreatureByName(t[1])
local points = tonumber(t[2])
local item = 2233
local storage = 21223

if(param == '') then
	return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.")
end

if (target ~= nil) and isPlayer(target) and not isPlayerGhost(target) then
	if (points ~= nil) and (type(points) == 'number') and (points>0) then
		if getPlayerVipPoints(cid) > points then
			local addItem = doPlayerAddItem(cid, item, 1)
			doStartTrade(cid, target, addItem)
			doItemSetAttribute(addItem, "description", "Transferência de "..points.." premium points.")
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você deu trade no jogador "..getPlayerName(target)..", com a intenção de trocar "..points.." premium points.")
			doPlayerSendTextMessage(target, MESSAGE_INFO_DESCR, "O Jogador "..getPlayerName(cid).." deu trade em você, e está disposto a trocar "..points.." premium points.")
			setPlayerStorageValue(cid, storage, points)
		else
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem essa quantidade de premium points.")
		end
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")
	end
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")
end

return true
end

 

creaturescripts:


function onTradeAccept(cid, target, item)

local storage = 21223

local sto = getPlayerStorageValue(cid, storage)
if sto > 0 then
	doPlayerRemoveVipPoints(cid, sto)
	doPlayerAddVipPoints(target, sto)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você trocou "..sto.." premium points, Parabéns.")
	doPlayerSendTextMessage(target, MESSAGE_STATUS_CONSOLE_BLUE, "Você realizou uma troca e adquiriu "..sto.." premium points, Parabéns.")
	setPlayerStorageValue(cid, storage, 0)
end

return true
end

 

nesse caso você vai usar !trade NomeDoOutroPlayer, Quantidade de points. Exemplo: !trade Eduardo, 3

 

acho que deu pra ter uma boa base de como funciona..

não entendi direito esse do npc

Booa, pow é chato mais faz um Tutorial ae com a base no que falei tambem, o do NPC, tipo...

O Transfer Points Documento vai ser vendido junto com o NPC que vende Parcel!

Só vai adicionar para ele vender um certo ID, um ID de uma folha, um Jornal, entendeu? Vamos dizer que esse documento se chama "Transfer Points Documento", você compra esse "Jornal" no npc sem valer nada, você da look, só aparece o nome do Item e o peso!

Ae com uma Talkactions por exemplo "!transfer 11 points documento" ae esse documento iria passar ter 11 Points nele entendeu?

Tipo a pessoa da Look e iria aparecer a quantidade de Points que aquele Documento passou a ter, claro que só ia transferir pontos para o Documento caso ele tenha essses pontos para ser transferido né..

 

                                                           

55f6tc.gif                     

Link para o post
Compartilhar em outros sites
7 horas atrás, Digoshow disse:

Booa, pow é chato mais faz um Tutorial ae com a base no que falei tambem, o do NPC, tipo...

O Transfer Points Documento vai ser vendido junto com o NPC que vende Parcel!

Só vai adicionar para ele vender um certo ID, um ID de uma folha, um Jornal, entendeu? Vamos dizer que esse documento se chama "Transfer Points Documento", você compra esse "Jornal" no npc sem valer nada, você da look, só aparece o nome do Item e o peso!

Ae com uma Talkactions por exemplo "!transfer 11 points documento" ae esse documento iria passar ter 11 Points nele entendeu?

Tipo a pessoa da Look e iria aparecer a quantidade de Points que aquele Documento passou a ter, claro que só ia transferir pontos para o Documento caso ele tenha essses pontos para ser transferido né..

 

posta o npc. faço pra vc.

7 horas atrás, Digoshow disse:

Booa, pow é chato mais faz um Tutorial ae com a base no que falei tambem, o do NPC, tipo...

O Transfer Points Documento vai ser vendido junto com o NPC que vende Parcel!

Só vai adicionar para ele vender um certo ID, um ID de uma folha, um Jornal, entendeu? Vamos dizer que esse documento se chama "Transfer Points Documento", você compra esse "Jornal" no npc sem valer nada, você da look, só aparece o nome do Item e o peso!

Ae com uma Talkactions por exemplo "!transfer 11 points documento" ae esse documento iria passar ter 11 Points nele entendeu?

Tipo a pessoa da Look e iria aparecer a quantidade de Points que aquele Documento passou a ter, claro que só ia transferir pontos para o Documento caso ele tenha essses pontos para ser transferido né..

 

fiz aqui, não testei tudo...
testa tudo ai, e se achar qualquer bug me avisa!
desculpem a bagunça, faz um tempo que não faço um script assim..

 

em data/talkactions/scripts cria um arquivo lua e coloca isso dentro:

Spoiler

local item_Id = 2161 -- id do item para a transferencia

function checkItem(cid, item1)

tabelaItem = {}

for i = 0, getContainerSize(item1.uid)-1 do
    local item2 = getContainerItem(item1.uid, i)
        if not isContainer(item2.uid) then
            if item2.itemid == item_Id and item2.actionid <= 0 then
                table.insert(tabelaItem, item2)
                break
            end
        else
            if getContainerSize(item2.uid) > 0 then
                checkItem(cid, item2)
            end
        end
end

end

function transf(cid, points, itemx)
    doItemSetAttribute(itemx.uid, "aid", points)
    doItemSetAttribute(itemx.uid, "description", "Nesse item contem "..points.." premium points.")
    doPlayerRemoveVipPoints(cid, points)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você tranferiu "..points.." premium points para o item "..getItemNameById(item_Id)..".")
end

function onSay(cid, words, param, param2, channel)

local item_Id = 2161 -- id do item para a transferencia
tabelaItem = {}

if(param == '') then
    return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.")
end

local points = tonumber(param)

if (type(points) == 'number') and (points>0) then
    if getPlayerVipPoints(cid) > points then
        if getPlayerItemCount(cid, item_Id) > 0 then
            for i=1, 10 do
                local item1 = getPlayerSlotItem(cid, i)
                if item1.itemid > 0 then
                    if isContainer(item1.uid) then
                        if getContainerSize(item1.uid) > 0 then
                            checkItem(cid, item1)
                        end
                    else
                        if item1.itemid == item_Id and item1.actionid <= 0 then
                            table.insert(tabelaItem, item1)
                            break
                        end
                    end
                end
            end
            if #tabelaItem > 0 then
                transf(cid, points, tabelaItem[1])
            else
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O(s) item(s) "..getItemNameById(item_Id).." que você tem já contem premium points.")
            end    
        else
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem o item "..getItemNameById(item_Id).." que é necessário para a tranferencia.")
        end
    else
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem essa quantidade de premium points.")
    end
else
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")
end

return true
end

 

em talkactions.xml coloca a tag:

talkaction words="!transferir(ou oq vc desejar)" event="script" value="NomeDoArquivo.lua"/>

 

em data/actions/scripts cria um arquivo.lua e coloca isso dentro:

Spoiler

function onUse(cid, item, frompos, item2, topos)

local points = item.actionid

if points > 0 then
    doPlayerAddVipPoints(cid, points)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você recebeu "..points.." premium points.")
    doSendMagicEffect(getCreaturePosition(cid), 30)
    doRemoveItem(item.uid)
end

return true
end

 

em actions.xml coloca a tag:

<action itemid="2161(id do item)" script="NomeDoArquivo.lua"/>

 

ai é só colocar o item pra vender no npc, ou como você desejar que os players consigam o item.

Editado por Ed.Specter (veja o histórico de edições)

download.jpg

Link para o post
Compartilhar em outros sites

Eu não pude testar ainda, vou ver se arrumo algo pra testar sem site, ae eu aviso aqui!!!

 

Porem amigo, porque você não faz um Tutorial, seria ótimo e bem organizado alem de ser um bom Tutorial..

Ou se quiser eu faço e coloco seus Creditos!

 

                                                           

55f6tc.gif                     

Link para o post
Compartilhar em outros sites
1 hora atrás, Digoshow disse:

Eu não pude testar ainda, vou ver se arrumo algo pra testar sem site, ae eu aviso aqui!!!

 

Porem amigo, porque você não faz um Tutorial, seria ótimo e bem organizado alem de ser um bom Tutorial..

Ou se quiser eu faço e coloco seus Creditos!

 

testa se funcionar, pode postar.

download.jpg

Link para o post
Compartilhar em outros sites
  • 1 month later...
  • 5 months later...
  • 5 weeks later...

no caso, o player ao dar trade normal com o (item) na bag, sem usar comando simplesmente voce usar a simples ação de dar trade no player seria uma action ? 

Link para o post
Compartilhar em outros sites
  • 4 weeks later...
Em 19/12/2016 em 18:05, Ed.Specter disse:

adiciona a função que citei.

 

e vê se funciona esse aqui:

talkactions


function onSay(cid, words, param, param2, channel)

local t = string.explode(param, ",")
local target = getCreatureByName(t[1])
local points = tonumber(t[2])
local item = 2233
local storage = 21223

if(param == '') then
	return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.")
end

if (target ~= nil) and isPlayer(target) and not isPlayerGhost(target) then
	if (points ~= nil) and (type(points) == 'number') and (points>0) then
		if getPlayerVipPoints(cid) > points then
			local addItem = doPlayerAddItem(cid, item, 1)
			doStartTrade(cid, target, addItem)
			doItemSetAttribute(addItem, "description", "Transferência de "..points.." premium points.")
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você deu trade no jogador "..getPlayerName(target)..", com a intenção de trocar "..points.." premium points.")
			doPlayerSendTextMessage(target, MESSAGE_INFO_DESCR, "O Jogador "..getPlayerName(cid).." deu trade em você, e está disposto a trocar "..points.." premium points.")
			setPlayerStorageValue(cid, storage, points)
		else
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem essa quantidade de premium points.")
		end
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")
	end
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")
end

return true
end

 

creaturescripts:


function onTradeAccept(cid, target, item)

local storage = 21223

local sto = getPlayerStorageValue(cid, storage)
if sto > 0 then
	doPlayerRemoveVipPoints(cid, sto)
	doPlayerAddVipPoints(target, sto)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você trocou "..sto.." premium points, Parabéns.")
	doPlayerSendTextMessage(target, MESSAGE_STATUS_CONSOLE_BLUE, "Você realizou uma troca e adquiriu "..sto.." premium points, Parabéns.")
	setPlayerStorageValue(cid, storage, 0)
end

return true
end

 

nesse caso você vai usar !trade NomeDoOutroPlayer, Quantidade de points. Exemplo: !trade Eduardo, 3

 

acho que deu pra ter uma boa base de como funciona..

não entendi direito esse do npc

analisando nova mente o script funciona porem, nao e por comando e apenas colocar um item no trade e ele transferir como points seria tudo um creature script!!!!!

Link para o post
Compartilhar em outros sites
  • 3 years later...
Em 19/12/2016 em 18:05, Ed.Specter disse:

adiciona a função que citei.

 

e vê se funciona esse aqui:

talkactions


function onSay(cid, words, param, param2, channel)

local t = string.explode(param, ",")
local target = getCreatureByName(t[1])
local points = tonumber(t[2])
local item = 2233
local storage = 21223

if(param == '') then
	return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command requires param.")
end

if (target ~= nil) and isPlayer(target) and not isPlayerGhost(target) then
	if (points ~= nil) and (type(points) == 'number') and (points>0) then
		if getPlayerVipPoints(cid) > points then
			local addItem = doPlayerAddItem(cid, item, 1)
			doStartTrade(cid, target, addItem)
			doItemSetAttribute(addItem, "description", "Transferência de "..points.." premium points.")
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você deu trade no jogador "..getPlayerName(target)..", com a intenção de trocar "..points.." premium points.")
			doPlayerSendTextMessage(target, MESSAGE_INFO_DESCR, "O Jogador "..getPlayerName(cid).." deu trade em você, e está disposto a trocar "..points.." premium points.")
			setPlayerStorageValue(cid, storage, points)
		else
			doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem essa quantidade de premium points.")
		end
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")
	end
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.")
end

return true
end

 

creaturescripts:


function onTradeAccept(cid, target, item)

local storage = 21223

local sto = getPlayerStorageValue(cid, storage)
if sto > 0 then
	doPlayerRemoveVipPoints(cid, sto)
	doPlayerAddVipPoints(target, sto)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você trocou "..sto.." premium points, Parabéns.")
	doPlayerSendTextMessage(target, MESSAGE_STATUS_CONSOLE_BLUE, "Você realizou uma troca e adquiriu "..sto.." premium points, Parabéns.")
	setPlayerStorageValue(cid, storage, 0)
end

return true
end

 

nesse caso você vai usar !trade NomeDoOutroPlayer, Quantidade de points. Exemplo: !trade Eduardo, 3

 

acho que deu pra ter uma boa base de como funciona..

não entendi direito esse do npc

Desculpe reviver o tópico, alguém consegue passar esse scripts para tfs 1.3, eu já passei a função doStartTrade para tfs 1.3 só preciso do scripts agr.

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