AK

Vocação Vip Por Database

Por Akiles III, 17 de fev. de 2011 em Archived

4
1.2k
Akiles IIIA
17 de fevereiro de 2011 às 01:33

Seguinte, eu tenho o seguinte scrip para que quando algum player colocar VIP ele automaticamente receba a vocação VIP:

 

function onLogin(cid)    

if vip.hasVip(cid) == TRUE then  
if(isInArray({5, 6, 7, 8}, getPlayerVocation(cid))) then    
doPlayerSetVocation(cid,getPlayerVocation(cid)+4)    
end  
elseif vip.hasVip(cid) == FALSE then   
if(isInArray({9, 10, 11, 12}, getPlayerVocation(cid))) then  
doPlayerSetVocation(cid,getPlayerVocation(cid)-4)  
end  
end     
return TRUE   
end

 

O problema é que esse scrip não altera nada no banco de dados, assim quando olhamos no site o player ainda continua como Elite Knight etc... Na database um Elite Knight por exemplo possue vocação 4 e promotion 1. Eu precisaria mudar a vocação para 8 e o promotion continuar 1. Dessa forma apareceria no site a vocação VIP.

 

Resumindo, preciso de um scrip que seja algo assim:

 

function onLogin(cid)    

if vip.hasVip(cid) == TRUE then  
if(isInArray({5, 6, 7, 8}, getPlayerVocation(cid))) then    
DB.STORAGE +4 NO CAMPO VOCAÇÃO
end  
elseif vip.hasVip(cid) == FALSE then   
if(isInArray({9, 10, 11, 12}, getPlayerVocation(cid))) then  
DB.STORAGE -4 NO CAMPO VOCAÇÃO  
end  
end     
return TRUE   
end

 

Alguém poderia me ajudar?

Editado Fevereiro 17 por Akiles III

VodkartV
17 de fevereiro de 2011 às 11:03

tenta assim:

 

function onLogin(cid)    

if vip.hasVip(cid) == TRUE then  
if getPlayerPromotionLevel(cid) == 1 then    
setPlayerPromotionLevel(cid, 2)  
end  
elseif vip.hasVip(cid) == FALSE then   
if getPlayerPromotionLevel(cid) == 2 then 
setPlayerPromotionLevel(cid, 1) 
end  
end     
return TRUE   
end

Akiles IIIA
17 de fevereiro de 2011 às 14:26

Ele não reconheceu o promotion 2 como +4 na vocação. Ao fazer isso o player ficou: You see yourself. You are .

Ele chegou a mudar no database pra promotion 2, mas no site ficou em branco a parte da vocação também.

 

O que eu não entendo é como o script anterior "pega" a vocation 5, 6, 7 e 8 sendo que no database fica como a vocação 1, 2, 3 e 4 com promotion 1. Além disso é como se a mudança fosse apenas enquanto o char está logado, pq nada muda na database. E o script que vc me passou mecheu na databse, mas o que eu uso não meche, só muda a vocação no game. ;S

VodkartV
17 de fevereiro de 2011 às 15:00

você pode até mecher na database do player mais ele vai ter que estar offline

 

vou passar uma função que eu fiz,você pode tentar adptar com o primeiro script para ve se funciona.

 

 

function doPlayerChangeVocation(cid, vocation)
local pid = getPlayerGUID(cid)  
doRemoveCreature(cid,true)
db.executeQuery("UPDATE `players` SET `vocation` = ".. vocation .." WHERE `id` = "..pid)
return TRUE
end