Postado Junho 3, 2022 3 anos Boa noite amigos, venho me deparando com um problema bem chatinho sobre a VIP system de meu servidor, já tentei mesclar vários scripts que encontrei aqui no TibiaKing, porém não obtive sucesso com nenhum deles, o problema é mais ou menos assim: Eu só consigo passar para a área VIP após usar o item que me dá 1 ou 15 dias de VIP, até ai tudo certo, porém na teoria quando algum player fosse VIP, ele ganharia 20% a mais de XP, mas está dando 20% a mais para todos, até pra quem não é VIP, caso queiram saber qual script eu uso para a VIP ou para a porcentagem de xp bônus podem me pedir que eu mando. Outro problema que venho enfrentando relacionado a VIP system é no site, mesmo após usar o item e já ser VIP, continua informando que não é, segue a imagem abaixo: De qualquer forma já agradeço a atenção de todos!
Postado Junho 3, 2022 3 anos Poste seu sistema de VIP, de Exp para VIP e a página do site para verificarmos.
Postado Junho 3, 2022 3 anos Autor 51 minutos atrás, daviscript disse: Poste seu sistema de VIP, de Exp para VIP e a página do site para verificarmos. VIP do site: Spoiler /*Vip Status*/ if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD>Vip Status:</TD><TD>'; $main_content .= ($account->getPlayerVip_Time()) ? '<b><font color="green">VIP</font></b>' : '<b><font color="red">NOT VIP</font></b>'; Adicionar dias de VIP: Spoiler function onAdvance(cid, oldlevel, newlevel) days = 2 daysvalue = days*3600*24 storageplayer = getPlayerStorageValue(player,13540) timenow = os.time() if storageplayer == -1 or storageplayer == 0 then time = timenow+daysvalue else time = storageplayer+daysvalue end if getPlayerLevel(cid) == 180 and getPlayerStorageValue(cid,9090) == -1 then setPlayerStorageValue(cid,13540,time) setPlayerStorageValue(cid,9090,1) doPlayerSendTextMessage(cid,22, "Voc� recebeu dois dias de Vip.") end return TRUE end Bônus de XP para vips: Spoiler function onLogin(cid) local rate = 1.2 -- 20% 1.5 = 50% 2.0 = 100% local config = { welvip = "Voce tem "..((rate - 1)*100).."% de exp! Aproveite as vantagens dos dias premio!", not_vip = "Ola jogador Aproveite as vantagens de ter dias premios na sua conta, voce ganhara 50% mais de xp e 5% de catch, tera acesso a cidades premio, la encontra-se ilhas dos mais fortes pokemons, varias quests e muito mais...", s = 33339, } if getPlayerPremiumDays(cid) >= 1 then doPlayerSetExperienceRate(cid, rate) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.welvip) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.not_vip) end return TRUE end Tem uma parte do config.php que diz o seguinte: Spoiler $config['site']['show_vip_status'] = 1;// show vip status, 1 = yes, 0 = no $config['site']['show_vip_storage'] = 88888;// the storage of vip Não sei se isso muda algo... Editado Junho 3, 2022 3 anos por yuriowns (veja o histórico de edições)
Postado Junho 3, 2022 3 anos 10 horas atrás, yuriowns disse: $config['site']['show_vip_storage'] = 88888;// the storage of vip storage que mostra no site = 88888 10 horas atrás, yuriowns disse: getPlayerStorageValue(player,13540) storage que teu item adiciona = 13540 10 horas atrás, yuriowns disse: getPlayerPremiumDays(cid isso é uma função da source/DB que pega a coluna "premdays 10 horas atrás, yuriowns disse: ($account->getPlayerVip_Time()) isso é outra coluna da DB chamada "vip_time" mano, pra te ajudar nisso teria que colocar tudo ser apenas uma coisa só kkkkkkkkk, como vc usa item, provavelmente vc não usa o premium days da source (esse eh o sistema que o global usa), e nem o viptime que aparece no site troque isso: 10 horas atrás, yuriowns disse: $main_content .= ($account->getPlayerVip_Time()) ? '<b><font color="green">VIP</font></b>' : '<b><font color="red">NOT VIP</font> por isso: $main_content .= ($player->getStorage(13450) > 0) ? '<font color="#00CD00" style="text-shadow: 1px 1px #014b01;"><b>VIP Account</b></font>' : '<font color="#FF0000" style="text-shadow: 1px 1px #580208;"><b>Not Vip</b></font>'; troque isso: 10 horas atrás, yuriowns disse: getPlayerPremiumDays(cid) por isso: getPlayerStorageValue(cid, 13450) ja vai funcionar no site e no ot, porém usar varios arquivos que contenham dentro "function onLogin()" eu não recomendo, principalmente esse de alterar a rate imagina que vc tem 5 arquivos que alteram a rate do player, todos vão atualizar quando o player logar, porem todos vão pegar a rate fixa "1.2" por exemplo, o mais facil era colocar essa rate pra atualizar diretamente no arquivo login.lua, qualquer coisa chama no PV que te dou umas ajudas mano.
Postado Junho 3, 2022 3 anos Autor 4 horas atrás, FeeTads disse: storage que mostra no site = 88888 storage que teu item adiciona = 13540 isso é uma função da source/DB que pega a coluna "premdays isso é outra coluna da DB chamada "vip_time" mano, pra te ajudar nisso teria que colocar tudo ser apenas uma coisa só kkkkkkkkk, como vc usa item, provavelmente vc não usa o premium days da source (esse eh o sistema que o global usa), e nem o viptime que aparece no site troque isso: por isso: $main_content .= ($player->getStorage(13450) > 0) ? '<font color="#00CD00" style="text-shadow: 1px 1px #014b01;"><b>VIP Account</b></font>' : '<font color="#FF0000" style="text-shadow: 1px 1px #580208;"><b>Not Vip</b></font>'; troque isso: por isso: getPlayerStorageValue(cid, 13450) ja vai funcionar no site e no ot, porém usar varios arquivos que contenham dentro "function onLogin()" eu não recomendo, principalmente esse de alterar a rate imagina que vc tem 5 arquivos que alteram a rate do player, todos vão atualizar quando o player logar, porem todos vão pegar a rate fixa "1.2" por exemplo, o mais facil era colocar essa rate pra atualizar diretamente no arquivo login.lua, qualquer coisa chama no PV que te dou umas ajudas mano. na verdade o item que utilizo para dar as vips é este: obs: ainda não está dando certo Spoiler function onUse(cid, item, fromPosition, itemEx, toPosition) local config={ removeOnUse = "yes" -- remover quando usar ("yes" or "no") } local days = 1 -- coloque os dias que ser�o a VIP! local daysvalue = days * 24 * 60 * 60 local storageplayer = getPlayerStorageValue(cid, 13450) local timenow = os.time() if getPlayerStorageValue(cid, 13450) - os.time() <= 0 then time = timenow + daysvalue else time = storageplayer + daysvalue end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dia(s) de VIP no seu character.") setPlayerStorageValue(cid, 13500, time) local quantity = math.floor((getPlayerStorageValue(cid, 13450) - timenow)/(24 * 60 * 60)) doSendMagicEffect(getPlayerPosition(cid), math.random(28,30)) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Dia(s) de VIP restantes: ".. quantity .." dia(s).") if (config.removeOnUse == "yes") then doRemoveItem(item.uid, 1) end return TRUE end Peço desculpas pelo erro. Editado Junho 3, 2022 3 anos por yuriowns (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.