Ir para conteúdo
  • 0

[Pedido] Talkaction De Promotion


Diego Rulez

Pergunta

Tipo do script: Talkaction

Protocolo (versão do Tibia): 8.60

Servidor utilizado: TFS 0.4

Nível de experiência: Medio

 

Estou tentando colocar um sistema de promoção em meu servidor para segunda vocação ir para a terceira vocação.

Abaixo o detalhes do que eu preciso.

 

Condição I : Quando acabar os dias vip o player voltar para a terceira vocação.

Condição II : Apenas players vips conseguirem se promover.

Condição II : Promover da vocação 5,6,7,8 para 9,10,11,11

 

Utilizo o sistema vip postado pelo Kydrai e a talkaction postada pelo Doidin, porém, o player vip tambem aparece a mensagem de "Você não é vip" e ele não consegue ser promovido.

 

-- [( Script created by Doidin and MatheusMkalo for XTibia.com )] --

function onSay(cid, words, param, channel)

 

local config = {

[1] = {level = 20, valor = 20000},

[2] = {level = 20, valor = 20000},

[3] = {level = 20, valor = 20000},

[4] = {level = 20, valor = 20000},

vipsconfig = {onlyvips = "yes", storagevip = 15000}, -- Apenas players vips "yes" ou "no" e o storage da vip.

onlypremmy = "yes" -- Apenas players premium accounts "yes" or "no".

}

 

if config.onlypremmy == "yes" and not isPremium(cid) then

return doPlayerSendTextMessage(cid, 23, "Sorry, only premium players.")

end

if config.vipsconfig.onlyvips == "yes" and getPlayerStorageValue(cid, config.vipsconfig.storagevip) - os.time() <= 0 then

return doPlayerSendTextMessage(cid, 23, "Sorry, only vips players.")

end

if config[getPlayerVocation(cid)] then

if getPlayerLevel(cid) >= config[getPlayerVocation(cid)].level then

if doPlayerRemoveMoney(cid, config[getPlayerVocation(cid)].valor) then

setPlayerPromotionLevel(cid, 1)

doPlayerSendTextMessage(cid, 22, "Congratulations, you have been successfully promoted!")

doSendMagicEffect(cid, 14)

else

doPlayerSendTextMessage(cid, 23, "You need "..config[getPlayerVocation(cid)].valor.." gold coins to promote.")

end

else

doPlayerSendTextMessage(cid, 23, "You need level "..config[getPlayerVocation(cid)].level.." to promote.")

end

else

doPlayerSendTextMessage(cid, 23, "Sorry, you already promoted.")

end

return TRUE

end

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Ve se funfa não sei usa arrays teste

 

promotion

 

function onSay(cid, words, param, channel)

local voc = {5,6,7,8}

if getPlayerVocation(cid) == voc and isVip(cid) and getPlayerItemCount(cid,grana) then

doPlayerSetVocation(cid,getPlayerVocation(cid)+4)

doPlayerSendTextMessage(cid, 22, "Você foi promovido.")

doPlayerRemoveItem(cid,2160,2)

doSendMagicEffect(cid, 14)

else

doPlayerSendTextMessage(cid, 22, "Você precisa de vip.")

end

end

 

______________________

 

fim de vip

 

 

 

local config =

{

pos = {x=32369, y=32241, z=7},

fim = "Sua VIP acabou e você foi teleportado para Thais."

}

 

function onLogin(cid)

if not isVip(cid) and getPlayerStorageValue(cid, 10015) > 0 then

doTeleportThing(cid, config.pos, false)

doPlayerSetTown(cid, 1)

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.fim)

setPlayerStorageValue(cid, 10015, 0)

elseif isVip(cid) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui " .. getVipDays(cid) .." dia(s) de premium restantes.")

setPlayerStorageValue(cid, 10015, 1)

end

return true

end

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

  • 0

descobri o erro do vilden

esqueceu o local grana

 

function onSay(cid, words, param, channel)

local voc = {5,6,7,8}

if getPlayerVocation(cid) == voc and isVip(cid) then

doPlayerSetVocation(cid,getPlayerVocation(cid)+4)

doPlayerSendTextMessage(cid, 22, "Você foi promovido.")

doPlayerRemoveItem(cid,2160,2)

doSendMagicEffect(cid, 14)

else

doPlayerSendTextMessage(cid, 22, "Você precisa de vip.")

end

end

 

 

agr tenta

Link para o comentário
Compartilhar em outros sites

  • 0

Ainda tá dando erro!!

Para players Free e VIP aparece a mesma coisa ainda. Aparece "Você precisa de vip".

Eu não entendo muito, mas aonde está a storage nesse ultimo script que você postou? Não seria isso que ta faltando?

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

  • 0
function onSay(cid, words, param, channel)
local voc = {5,6,7,8}
if isInArray(voc,getPlayerVocation(cid)) and isVip(cid) and doPlayerRemoveItem(cid,2160,2) then
doPlayerSetVocation(cid,getPlayerVocation(cid)+4)
doPlayerSendTextMessage(cid, 22, "Você foi promovido.")
doSendMagicEffect(cid, 14)
else
doPlayerSendTextMessage(cid, 22, "Você precisa de vip.")
end
return TRUE
end

Link para o comentário
Compartilhar em outros sites

  • 0

Porra mano até que enfim. Muito Obrigado, funcionou perfeitamente agora. Só uma dúvida:

- Quando acabar a VIP ele volta pra 2 vocação? (ed,ms,ek,rp)?

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

  • 0

nao pra isso tem que fazer uma função onLogin

 

para quando acabar vip eles voltarem a vocação de antes faz isso

 

crie um arquivo em creaturescript chamad Voc

 

coloque isso

 

function onLogin(cid)
if isVip(cid) == FALSE then
doPlayerSetVocation(cid,getPlayerVocation(cid)-4)
doPlayerSendTextMessage(cid,27,"Sua vocação retornou pois acabou sua vip")
end
registerCreatureEvent(cid,"Voc")
return TRUE
end

 

 

creaturescripts.xml coloque

 

<event type="login" name="Voc" script="Voc.lua"/>

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu pela ajuda, agora funcionou.

 

@EDIT

 

Está com aquele erro, de que quando reloga, ele volta pra 2 vocação. O resto funcionou, acredito que agora falta só corrigir alguma tag..

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

  • 0

function onLogin(cid)

if not isVip(cid) then

doPlayerSetVocation(cid,getPlayerVocation(cid)-4)

doPlayerSendTextMessage(cid,27,"Sua vocação retornou pois acabou sua vip")

end

registerCreatureEvent(cid,"Voc")

return TRUE

end

Link para o comentário
Compartilhar em outros sites

  • 0
function onLogin(cid)
if not isVip(cid) and getPlayerStorageValue(cid, 15000) < = 0 then
doPlayerSetVocation(cid,getPlayerVocation(cid)-4)
doPlayerSendTextMessage(cid,27,"Sua vocação retornou pois acabou sua vip")
end
registerCreatureEvent(cid,"Voc")
return TRUE
end

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

  • 0

Pra funcionar certinho essa essa talk de promotion aqui:

function onSay(cid, words, param, channel)
   local configs = {
   cost = 20000,
   level = 20
   }

   if isVip(cid) then
    if getPlayerLevel(cid) >= configs.level then
	    if getPlayerPromotionLevel(cid) == 1 then
		    if configs.cost <= 0 or doPlayerRemoveMoney(cid, configs.cost) then
			    setPlayerPromotionLevel(cid, 2)
		    else
			    doPlayerSendCancel(cid, "Voce nao tem o dinheiro suficiente que é " .. configs.cost .. " gold coins.")
		    end
	    else
		    doPlayerSendCancel(cid, "Voce ja é promoted.")
	    end
    else
	    doPlayerSendCancel(cid, "Voce precisa ser level " .. configs.level .. " ou maior para adiquirir a promotion.")
    end
   else
    doPlayerSendCancel(cid, "Voce precisa ser vip para adiquirir a promotion.")
   end
return TRUE
end

 

Para funcionar o player tem que estar com a primeira promotion jah, e nos vocations.xml os fromvoc="idvocação" devem estar corretos.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...