Amigo eu resolvi isso no meu server criando uma storage para cada profissao. Isso geralmente acontece quando uma profissao e alterada do anda, nao descobri ainda como acontece, mas com esta storage, o player ao logar, no login.lua tem um campo que verifica a storage e seta a vocacao correta, nao tendo mais problemas com isso.
Eu tenho vocacoes vip entao fiz assim:
if getPlayerStorageValue(cid,12081) == 1 and promo == 0 then
doPlayerSetVocation(cid, 1)
elseif getPlayerStorageValue(cid,12081) == 1 and promo == 1 then
doPlayerSetVocation(cid, 5)
elseif getPlayerStorageValue(cid,12081) == 1 and promo == 2 then
doPlayerSetVocation(cid, 9)
elseif getPlayerStorageValue(cid,12082) == 1 and promo == 0 then
doPlayerSetVocation(cid, 2)
elseif getPlayerStorageValue(cid,12082) == 1 and promo == 1 then
doPlayerSetVocation(cid, 6)
elseif getPlayerStorageValue(cid,12082) == 1 and promo == 2 then
doPlayerSetVocation(cid, 10)
elseif getPlayerStorageValue(cid,12083) == 1 and promo == 0 then
doPlayerSetVocation(cid, 3)
elseif getPlayerStorageValue(cid,12083) == 1 and promo == 1 then
doPlayerSetVocation(cid, 7)
elseif getPlayerStorageValue(cid,12083) == 1 and promo == 2 then
doPlayerSetVocation(cid, 11)
elseif getPlayerStorageValue(cid,12084) == 1 and promo == 0 then
doPlayerSetVocation(cid, 4)
elseif getPlayerStorageValue(cid,12084) == 1 and promo == 1 then
doPlayerSetVocation(cid, 8)
elseif getPlayerStorageValue(cid,12084) == 1 and promo == 2 then
doPlayerSetVocation(cid, 12)
end
Quando se cria o char no site ele ja seta a storage conforme a vocacao e quando loga ele ja verifica esta storage e caso esteja errado ele altera, geralmente estas mudanças acontecem apos o save global.
Ate mais.