Ir para conteúdo

End Vip End Promotion


felipedorgas

Posts Recomendados

gostaria que esse script feito pelo kydrai, alem de teleporta o player pra uma city free ele tira a promotion vip

 

9 volte pra 5

10 volte pra 6

11 volte pra 7

12 volte pra 8

 

function onLogin(cid) 
       if getVipTime(cid) > 0  and isVip(cid) == FALSE then 
               local townid = 1 
               doPlayerSetTown(cid, townid) 
               local templePos = getTownTemplePosition(getPlayerTown(cid)) 
               doTeleportThing(cid, templePos, false) 
               setVipTime(cid, 0) 
               doTeleportPlayers(cid, templePos) 
               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua Vip acabou!") 
       else 
               local duration = getVipDate(cid) 
               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or "")) 
       end 
       return TRUE 
end

 

vlw

Link para o comentário
Compartilhar em outros sites

@TOPIC

function onLogin(cid)
if getVipTime(cid) > 0  and isVip(cid) == FALSE then
	local townid = 1
	doPlayerSetTown(cid, townid)
	local templePos = getTownTemplePosition(getPlayerTown(cid))
	doTeleportThing(cid, templePos, false)
               if(isInArray({9, 10, 11, 12}, getPlayerVocation(cid))) then 
		doPlayerSetVocation(cid, voc-4)
	end
	setVipTime(cid, 0)
	doTeleportPlayers(cid, templePos)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua Vip acabou!")
else
	local duration = getVipDate(cid)
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or ""))
end
return TRUE
end

 

@Kakilo

 

sim funciona em servidores 8.54+

 

e aconselho a usar no seu servidor,esse sistema é melhor que o do MOCK.

 

flw

Link para o comentário
Compartilhar em outros sites

esqueci que identificar a variavel

 

function onLogin(cid) 
       if getVipTime(cid) > 0  and isVip(cid) == FALSE then 
               local townid = 1 
               doPlayerSetTown(cid, townid) 
               local templePos = getTownTemplePosition(getPlayerTown(cid)) 
               doTeleportThing(cid, templePos, false)
               local voc = getPlayerVocation(cid)
               if(isInArray({9, 10, 11, 12}, getPlayerVocation(cid))) then  
                       doPlayerSetVocation(cid, voc-4) 
               end 
               setVipTime(cid, 0) 
               doTeleportPlayers(cid, templePos) 
               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua Vip acabou!") 
       else 
               local duration = getVipDate(cid) 
               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or "")) 
       end 
       return TRUE 
end

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

Cara modifiquei este aki, ele vai remover a 'promotion', e voltar pra vocação inicial do player.

 

ex: se o player é Master sorcerer, o script vai remover a promotion, e ele voltará a ser Sorcerer.

 

se é elder druid, voltara a ser druid, e assim vai xD

 

function onLogin(cid)
       if getVipTime(cid) > 0  and isVip(cid) == FALSE then
               local townid = 1
               doPlayerSetTown(cid, townid)
               local templePos = getTownTemplePosition(getPlayerTown(cid))
               doTeleportThing(cid, templePos, false)
	        setVipTime(cid, 0)
               doTeleportPlayers(cid, templePos)
               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua Vip acabou!")

       else
               local duration = getVipDate(cid)
               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or ""))
       end
	 if (getVipTime(cid) > 0  and isVip(cid) == FALSE) and (getPlayerPromotionLevel(cid) > 1) then
               setPlayerPromotionLevel(cid, getPlayerPromotionLevel(cid)-1)
			end
       return TRUE
end

 

abraço.

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

aqui funfo :X

 

function onLogin(cid)  
       if getVipTime(cid) > 0  and isVip(cid) == FALSE then  
               local townid = 1  
               doPlayerSetTown(cid, townid)  
               local templePos = getTownTemplePosition(getPlayerTown(cid))  
               doTeleportThing(cid, templePos, false) 
        if isInArray({9,10,11,12}, getPlayerVocation(cid)) then 
           doPlayerSetVocation(cid,getPlayerVocation(cid)-4) 
               end  
               setVipTime(cid, 0)  
               doTeleportPlayers(cid, templePos)  
               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua Vip acabou!")  
       else  
               local duration = getVipDate(cid)  
               doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or ""))  
       end  
       return TRUE  
end

Link para o comentário
Compartilhar em outros sites

MarcelloMkez, obrigado, + seu script n funcionou :S

 

Vodkart, ainda não deu, + percebi uma coisa, ele tira promotion do primeiro char que eu logo...

 

eu to fazendo teste com 3 chars vip+promotion, ele só tira a promotion do primeiro char que eu logo, os outros 2 continua promotion.

 

 

espero q com essa informação da pra finaliza o script :thumbsupsmiley:

Link para o comentário
Compartilhar em outros sites

function onLogin(cid)

         if getVipTime(cid) > 0  and isVip(cid) == FALSE then
           local townid = 1
           doPlayerSetTown(cid, townid)
           local templePos = getTownTemplePosition(getPlayerTown(cid))
           doTeleportThing(cid, templePos, false)
           setVipTime(cid, 0)             doTeleportPlayers(cid, templePos)
           doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua Vip acabou!")

         else
           local duration = getVipDate(cid)
           doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui   "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or ""))
          return TRUE
          end

       function backPromotion(cid)
          setPlayerPromotionLevel(cid, getPlayerPromotionLevel(cid)-1)
          doRemoveCreature(cid)
         return TRUE 
end

        local time = 5     --[[ Tempo que o player será deslogado para mudar a vocação, em segundos.]]
     if (getVipTime(cid) > 0  and isVip(cid) == FALSE) and (getPlayerPromotionLevel(cid) > 1) then
        doPlayerPopupFYI(cid, "'Você será deslogado em "..time.." segundos para retornar as configurações de Free Account.'")
        addEvent(backPromotion, time*1000, cid)
       end
      return TRUE
     end

 

bom refiz o script, agora tem que funcionar né possivel =x

 

abraço.

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

nada marcelo, esperei esses 5 segundos, + n deu

 

12:58 Você possui 0 dia(s) de vip. 12:58 You see yourself. You are an elite knight [VIP].

 

12:59 Você possui 0 dia(s) de vip. 12:59 You see yourself. You are an elder druid [VIP].

 

tpw, eu penso assim, vcs conseguiram tira promotion de 1 char só, e o kydrai conseguiu teleporta todos os players da conta pra town id X, então não n dava pra usa a msm função pra tira todas promotion da conta?

 

seria q n prescisa add alguma coisa na database mysql?

 

vlw pela paciencia

Link para o comentário
Compartilhar em outros sites

Tenta assim:

function onLogin(cid) 
if getVipTime(cid) > 0  and isVip(cid) == FALSE then 
	local townid = 1 
	doPlayerSetTown(cid, townid) 
	local templePos = getTownTemplePosition(getPlayerTown(cid)) 
	doTeleportThing(cid, templePos, false) 
	setVipTime(cid, 0) 
	doTeleportPlayers(cid, templePos)
	local voc = getPlayerVocation(cid)
	if isInArray({9, 10, 11, 12}, voc) then
		doPlayerSetVocation(cid, voc-4)
	end
	db.executeQuery("UPDATE `players` SET `vocation` = (`vocation`-4) WHERE `account_id` = "..getPlayerAccountId(cid).." AND `vocation` >= 9 AND `vocation` <= 12;")
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua Vip acabou!") 
else 
	local duration = getVipDate(cid) 
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or "")) 
end 
return TRUE 
end

 

Só não sei se tem que mexer na coluna vocation ou promotion.

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

kydrai, não deu :worriedsmiley:

 

msm coisa, só o 1° char que eu logo fica sem promotion,

 

e ainda, eu relogo e a promotion volta.

 

 

olha eese topico, vc consegiu ajuda esse cara,

 

+ ele usa premmy em fez de vip,

 

+ o id de promotion é a msm, tem q volta de 2 para a 1

 

http://www.xtibia.com/forum/topic/126300-script-que-baixe-promotion-de-2-para-1-caso-player-esteja-free-account/

 

eu tentei usa o login.lua dele

+ deu erro aqui no meu executavel

 

vlw

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

Nem precisava usar o sql ali.

Faz assim:

function onLogin(cid)
       if isVip(cid) == FALSE and getPlayerPromotionLevel(cid) == 2 then
               doPlayerSetPromotionLevel(cid, 1)
       end
       return TRUE
end

Ou então:

function onLogin(cid)
       local voc = getPlayerVocation(cid)
       if isInArray({9, 10, 11, 12}, voc) and isVip(cid) == FALSE then
               doPlayerSetVocation(cid, voc-4)
       end
       return TRUE
end

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...