DI

[Pedido] Talkaction De Promotion

Por Diego Rulez, 24 de abr. de 2012 em Scripts

otserv
tibia
script
17
2.5k
Diego RulezD
24 de abril de 2012 às 04:45

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

VildenV
24 de abril de 2012 às 13:59

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 Abril 24 por Vilden

Diego RulezD
24 de abril de 2012 às 16:02

Infelizmente não funcionou.

caoticC
24 de abril de 2012 às 16:41

talvez voce usa um sistema vip diferente se voce usar fale como funciona se for por storage manda o numero da storage que nos iremos realizar o script.

Diego RulezD
24 de abril de 2012 às 19:16

A storage é 15000

caoticC
24 de abril de 2012 às 20:48

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

Diego RulezD
24 de abril de 2012 às 21:02

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 Abril 24 por Diego_o

MulizeuM
24 de abril de 2012 às 21:37
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

Diego RulezD
24 de abril de 2012 às 21:44

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 Abril 24 por Diego_o

MulizeuM
24 de abril de 2012 às 22:04

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"/>

Diego RulezD
24 de abril de 2012 às 22:28

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 Abril 24 por Diego_o

VildenV
25 de abril de 2012 às 00:35

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

Diego RulezD
25 de abril de 2012 às 01:11

Ainda não foi.. Ele ta adicionando certo, só vip usa.. Mas quando reloga a promote sai..

MulizeuM
25 de abril de 2012 às 11:52
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 Abril 25 por mulizeu

Diego RulezD
25 de abril de 2012 às 22:21

Não resolveu.. Ainda volta para segunda vocação.