Ou, se não, tente:
doStartTrade(cid, getPlayerByName(name), document)
Por igorlabanca, 07 de jan. de 2014 em Scripts
Ou, se não, tente:
doStartTrade(cid, getPlayerByName(name), document)
info
Grupo: Campones
Registrado: 06/01/14
Posts: 45
Reputação: +1

Opa Opa estamos quase lá...
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 Janeiro 26 por igorlabanca
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 Janeiro 27 por xotservx
info
Grupo: Campones
Registrado: 06/01/14
Posts: 45
Reputação: +1

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
info
Grupo: Lenda
Registrado: 03/10/06
Posts: 2.6k
Reputação: +309
Gênero: Masculino
Char no Tibia: Knight Orion

Tenta trocar
doRemoveItem(item.uid)por
doRemoveItem(item.uid, 1)Perto do final. Achei um script aqui de outra coisa que exigia a quantidade.
info
Grupo: Campones
Registrado: 06/01/14
Posts: 45
Reputação: +1

Deu o mesmo erro.
Esse script funciona, porem só funciona se o ultimo player que der accept for o dono do Item, caso não seja o script nem executa ![]()
info
Grupo: Campones
Registrado: 06/01/14
Posts: 45
Reputação: +1

É 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)
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
info
Grupo: Campones
Registrado: 06/01/14
Posts: 45
Reputação: +1

O script está pronto.
Podem fechar o tópico.
info
Grupo: Conde
Registrado: 29/04/09
Posts: 904
Reputação: +389
Char no Tibia: Jabuti Selvagem

Poste o script para que pessoas que tenham a mesma dúvida que vc possam usar, contribuindo com a comunidade ![]()
info
Grupo: Campones
Registrado: 06/01/14
Posts: 45
Reputação: +1

Infelizmente não tenho permissão para postar...
o autor do script pediu.
não concordo muito com isso, porém não posso fazer nada
info
Grupo: Herói
Registrado: 22/04/11
Posts: 2.5k
Reputação: +293
Gênero: Masculino
Char no Tibia: Thyn Zare

O script está pronto.
Podem fechar o tópico.
Fechando..
Tópico movido para a seção de dúvidas e pedidos resolvidos.
info
Grupo: Conde
Registrado: 29/04/09
Posts: 904
Reputação: +389
Char no Tibia: Jabuti Selvagem
=P era nisso aí mesmo que eu tinha dúvida na função... Não sei como ela pede o item
tenta mudar essa linha
deixa ela assim