Por favor alguém ajuda, tou precisando muito....
Sistema de vender premium por trade
Por igorlabanca, 07 de jan. de 2014 em Scripts
info
Grupo: Campones
Registrado: 06/01/14
Posts: 45
Reputação: +1

info
Grupo: Campones
Registrado: 06/01/14
Posts: 45
Reputação: +1

UP
vou fazer, add skype: xotservx.miiller, e sim vc vai precisar da função do Oneshot
Editado Janeiro 20 por xotservx
info
Grupo: Campones
Registrado: 06/01/14
Posts: 45
Reputação: +1

Fico no aguardo, ja te add no skype ![]()
Poderia disponibilizar o script preciso dele tbm !
info
Grupo: Campones
Registrado: 06/01/14
Posts: 45
Reputação: +1

Eu ainda estou no aguardo ![]()
infelizmente a galera expert do xtibia não tem dado muita atenção aqui no forum.
Com isso o open source fica um pouco quebrado, pq muitos querem pagamentos por isso...
info
Grupo: Conde
Registrado: 29/04/09
Posts: 904
Reputação: +389
Char no Tibia: Jabuti Selvagem

Cara eu fiz aqui mas não testei e tem duas coisas que preciso saber. Primeira: vc tem a função doStartTrade do Oneshot instalada? Segunda: quando eu uso essa função abre a janela de trade e eu ofereço o item que eu escolhi na função, mas como o target escolhe o item que ele oferece?
De qualquer jeito, aqui está o código, teste e poste o resultado. Fiz ele com base no addVip
crie sellpremium.lua em data/talkactions/scripts e coloca
function onSay(cid, words, param, channel)
if param == "" then
doPlayerSendCancel(cid, "Para vender seus dias de premium account, diga /trade premium dias playerName.")
return true
end
if param:lower():find('premium') == 1 and 3 then
local _,_,id,name = param:lower():find('premium (%d+) (.+)')
name = name or ""
id = tonumber(id or 1) or 1
if tonumber(id) == nil or getPlayerByName(name) == false then
return doPlayerSendTextMessage(cid,25,"Voce fez algo errado. Para vender seus dias de premium diga /trade premium dias playerName.")
end
if isPlayer(getPlayerByName(name)) then
if getPlayerPremiumDays(cid) < tonumber(id) then
doPlayerSendCancel(cid, "Voce tem menos que " .. tonumber(id) .. " dias de premium.")
return false
end
local document = doPlayerAddItem(cid, 1952, 1)
local days = doItemSetAttribute(document, "description", tonumber(id))
doStartTrade(cid, getPlayerByName(name), days)
doPlayerSendTextMessage(cid, 25, "O jogador " .. name .. " quer te vender " .. tonumber(id) .. " dias de Premium Acount.")
else
doPlayerSendTextMessage(cid,22,name.." nao esta online ou nao existe.")
end
end
return true
end
tag no talkactions.xml
<talkaction log="yes" words="/trade" event="script" value="sellpremium.lua" />Em data/creaturescripts/scripts cria sellpremium.lua e coloca:
function onTradeAccept(cid, target, item, targetItem)
local days = string.sub(getItemDescriptions(item.uid), 1, 2)
if isPlayer(cid) and isPlayer(target) then
if item.itemid == 1952 then
doPlayerAddPremiumDays(cid, -days)
doPlayerAddPremiumDays(target, days)
doPlayerSendTextMessage(cid, 25, "Voce vendeu " .. days .. " de Premium Account para " .. getCreatureName(target) .. "!")
doPlayerSendTextMessage(target, 25, "Voce comprou " .. days .. " de Premium Account do jogador " .. getCreatureName(cid) .. "!")
end
end
return true
end
No login.lua vc registra essa linha junto com as outras dessaregisterCreatureEvent(cid, "sellPremium")Em creaturescripts.xml vc coloca
<event type="tradeaccept" name="sellPremium" event="script">Acho muito difícil isso funcionar... Mas tenta aí e me avisa.
Editado Janeiro 26 por Killua
info
Grupo: Campones
Registrado: 06/01/14
Posts: 45
Reputação: +1

Primeira: vc tem a função doStartTrade do Oneshot instalada?
Sim, tenho,
Segunda: quando eu uso essa função abre a janela de trade e eu ofereço o item que eu escolhi na função, mas como o target escolhe o item que ele oferece?
Isso não sei...
Aconteceu o seguinte, eu falei /trade 2 playername, não aconteceu nada, o comando ate executou, porém não fez nada e nenhum erro na distro.
info
Grupo: Conde
Registrado: 29/04/09
Posts: 904
Reputação: +389
Char no Tibia: Jabuti Selvagem

Tem que ser /trade premium 2 playername
info
Grupo: Campones
Registrado: 06/01/14
Posts: 45
Reputação: +1

Aconteceu o seguinte
Toda vez que eu falo
/trade premium 2 playername
O item do id 1952 é gerado, porém não na janela de trade e sim na minha backpack. (obs: não contem premium nem nada, apenas o item)
E da esse erro na distro:
[13:48:18.817] [Error - TalkAction Interface] [13:48:18.818] data/talkactions/scripts/sellpremium.lua:onSay [13:48:18.819] Description: [13:48:18.821] data/talkactions/scripts/sellpremium.lua:23: attempt to concatena te local 'days' (a boolean value) [13:48:18.822] stack traceback: [13:48:18.822] data/talkactions/scripts/sellpremium.lua:23: in function <data/t alkactions/scripts/sellpremium.lua:1>
Editado Janeiro 26 por igorlabanca
Vou fazer seu script quando chegar em casa, depois do trabalho.
Att,
Garou.
info
Grupo: Campones
Registrado: 06/01/14
Posts: 45
Reputação: +1

info
Grupo: Conde
Registrado: 29/04/09
Posts: 904
Reputação: +389
Char no Tibia: Jabuti Selvagem

Editei meu post lá em cima pra corrigir esse meu erro bobo... Mas mesmo assim acho que não vai funcionar. Testa aí, se não funcionar vamo deixa o garou fazer msm pq n entendo direito da função dele
info
Grupo: Campones
Registrado: 06/01/14
Posts: 45
Reputação: +1

O erro foi parecido só que agr aparece as msgs... porém ainda não da trade com o item, apenas gera o item sem nada :x
Erro Console
[19:52:37.043] [Error - TalkAction Interface] [19:52:37.045] data/talkactions/scripts/sellpremium.lua:onSay [19:52:37.047] Description: [19:52:37.051] (luaDoStartTrade) Item not found






info
Grupo: Campones
Registrado: 06/01/14
Posts: 45
Reputação: +1
Recentemente o membro Oneshot criou uma função de trade
Gostaria de saber se com essa função é possível criar um sistema de vender premium através de um comando por trade,ao qual os players podem vender premium através do trade do tibia.
Funcionaria mais ou menos assim:

O comando seria
!tradepremium PLAYER, quantidade de premium
exemplo: !tradepremium Two Pac, 10
Com isso o item que conteria a premium sumiria assim que o player receber o item e a premium entraria na sua conta.
O player que vendeu a premium obviamente que a premium seria retirada da sua conta.
OBS:
O mínimo de premium para vender seria de 2 dias, obviamente que o sistema tem que checar quantos dias de premium teria o player.
Caso seja possível coloquem algumas mensagens quando as operações acontecerem,
exemplo:
"Você recebeu 10 dias de premium, deslogue para ativar a premium."
"A Premium foi transferida."
"Você não tem dias de premium suficiente"
"O mínimo de vip para ser transferido é de 2 dias"
Creio que é um sistema bastante interessante, e isso estimula a compra de premium no servidor.
Obrigado
Mãos a obra !
Editado Janeiro 7 por igorlabanca