Ir para conteúdo
  • 0

Sistema de vender premium por trade


igorlabanca

Pergunta

Recentemente o membro Oneshot criou uma função de trade

http://www.xtibia.com/forum/topic/223158-dostarttradecid-target-item/

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:

yw9u.png


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 por igorlabanca
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Opa Opa estamos quase lá...

 

zipter e Killua

doStartTrade(cid, getPlayerByName(name), document)

Abriu a janela de trade contendo o documento, acontece que o item também foi criado na backpack, ele tem que ser criado apenas na janela do trade.

OBS: Ao dar look no document no trade, tem que aparecer a quantidade de dias que contem nele...

 

Também aceitei o trade com os dois chars para ver o que acontecia e ficou lá os dois aceitos (como se estivesse esperando o outro aceitar).

 

Deu esse erro na distro

[21:18:27.014] [Error - CreatureScript Interface]
[21:18:27.015] data/creaturescripts/scripts/sellpremium.lua:onTradeAccept
[21:18:27.016] Description:
[21:18:27.017] data/creaturescripts/scripts/sellpremium.lua:2: bad argument #1 t
o 'sub' (string expected, got table)
[21:18:27.019] stack traceback:
[21:18:27.020]  [C]: in function 'sub'
[21:18:27.021]  data/creaturescripts/scripts/sellpremium.lua:2: in function <dat
a/creaturescripts/scripts/sellpremium.lua:1>

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

  • 0

testa ae, cria um arquivo xml na pasta mod com nome de tradepremium.xml,

 

e cole o código:

<?xml version="1.0" encoding="UTF-8"?>
<mod name="tradePremium" enabled="yes" author="Miiller" forum="XTibia.com">

<config name="tradePremiumConfigs"><![CDATA[

minTradePremiumDays = 1 -- minimo de dias de premium que pode dar trade.
tradePremiumItemId = 7723 -- id do item q vai representar no trade.
minDistanceTrade = 5 -- distancia minima para trade.

]]></config>

<talkaction words="/tradepremium;!tradepremium" event="script"><![CDATA[
domodlib("tradePremiumConfigs")

    function onSay(cid, words, param)

	local paramTab = string.explode(param, ",")
	if #paramTab < 2 then
		return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid params: playername, premiumdays .")
	end
	if not getPlayerByName(paramTab[1]) then
		return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player not found.")
	end
	if not tonumber(paramTab[2]) then
		return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid days.")
	end
	if getPlayerTradeState(cid) >= 1 then
		return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are already in a trade.")
	end
	if getPlayerTradeState(getPlayerByName(paramTab[1])) >= 1 then
		return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "This player is already in a trade.")
	end
	if getDistanceBetween(getThingPos(cid), getThingPos(getPlayerByName(paramTab[1]))) > minDistanceTrade then
		return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You are far away from this Player.")
	end
	if getPlayerPremiumDays(cid) < tonumber(paramTab[2]) then
		return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You only have " .. getPlayerPremiumDays(cid) .. " days of premium.")
	end
	local itemTrade = doCreateItemEx(tradePremiumItemId)
	doSetItemSpecialDescription(itemTrade, "Transfer of " .. paramTab[2] .. " days of premium.")
	doStartTrade(cid, getPlayerByName(paramTab[1]), itemTrade)
	registerCreatureEvent(cid, "tradePremiumEvent")
	return true

end

]]></talkaction>

<creaturescript type="tradeaccept" name="tradePremiumEvent" event="script"><![CDATA[
function onTradeAccept(cid, target, item, targetItem)
	if item.itemid == tradePremiumItemId then
		if tonumber(getItemSpecialDescription(item.uid):match("%d+")) then
			local days = tonumber(getItemSpecialDescription(item.uid):match("%d+"))
			doPlayerAddPremiumDays(cid, -days)
                        doPlayerAddPremiumDays(target, days)
			doPlayerSendTextMessage(cid, 25, "You sell " .. days .. " days of Premium Account.")
                        doPlayerSendTextMessage(target, 25, "You buy " .. days .. " days of Premium Account.")
			unregisterCreatureEvent(cid, "tradePremiumEvent")
                        doRemoveItem(item.uid)
		end
	end
	return true
end
]]></creaturescript> </mod>
Editado por xotservx
Link para o comentário
Compartilhar em outros sites

  • 0

Unico erro apresentado no mod acima, foi que não remove o item ao aceitar o trade, ficando na backpack.
OBS: O item quando fica na backpack e eu faço alguma coisa com ele (use, move, trade e etc) da crash no servidor...

Fico no aguardo.

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

É Realmente esse bug também existe...
então no caso faltam resolver 2 bug's:

1-
Um player fala !tradepremium, fulano, 2 e o outro player da trade com qualquer item (funciona)

Um Player da trade com qualquer item e o outro fala !tradepremium fulano, 2 (não funciona)

2-

Ao player aceitar o trade o item não é removido e a premium não cai na acc do player. (o servidor da crash, quando a transferência é aceita)

Link para o comentário
Compartilhar em outros sites

  • 0

Aqui funciono normal, na transferencia ele funciona e transfere os pontos normalmente, e para remover o item eu fiz 1 globalevents e verifica se algum player tem esse item e remove ele a cada 1 ms, então é impossivel te-lo.

 

O Foda mesmo é a parte do TradeAccept que só funciona se o ultimo a dar accept for o dono do pergaminho caso contrario não funciona

Link para o comentário
Compartilhar em outros sites

  • 0

PqP é sacanagem né ? o mlk vem pede o script os cara ajuda e o mlk n posta poq o autor pediu ? no min vc comprou o script e por isso não vai posta ! bando de mercenario do krl --'

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...