Ir para conteúdo

Vip System By Account V1.0


Kydrai

Posts Recomendados

Oi cara.

Estou com uma duvida um pouco mais aprofundada.

Estou a combinar este vip system com o gesior

Mudei as tables premdays para vipsystem, assim, o valor vai direto para a tabela do vip system.

Só que vejamos:

 

Percebi que seu vip system nao funciona como dias normais, e sim como um numero grande.

Por exemplo:

 

Se eu adicionar 15 dias em um jogador, eu vou no mysql e encontro o seguinte valor no viptime

viptime 1287808282

 

Se eu adicionar 30 dias em um jogador, eu vou no mysql e encontro o seguinte valor no viptime

viptime 1289104983

 

Consegui fazer um multiplicador no shopsystem.php, que vai multiplicar os dias comprados para xega nesse grande valor.

 

Mas a pergunta é:

 

Que conta louca é feita para chegar neste numero enorme?

 

Veja, no seu script diz

days * 24 * 60 * 60

 

Só que 15 * 24 * 60 * 60 é igual a 1296000 e não a 1287808282.

 

Gostaria de saber qual a linha de raciocinio para chegar neste valor para chegar em um multiplicador comum e colocar no gesior para que a viptime seja comprada diretamente pelo site.

 

Muito obrigado por postar este sistema!

Estou no aguardo da resposta!

Obrigado pela atenção!

Link para o comentário
Compartilhar em outros sites

@xkvD

Na verdade não é adicionado somente o tempo da vip.

os.time() + (days * 24 * 60 * 60) = tempo atual do relógio no seu servidor + dias de vip

Todo esse tempo está em segundos.

Se quiser usar no php pode usar time() -> link

Link para o comentário
Compartilhar em outros sites

@xkvD

Na verdade não é adicionado somente o tempo da vip.

os.time() + (days * 24 * 60 * 60) = tempo atual do relógio no seu servidor + dias de vip

Todo esse tempo está em segundos.

Se quiser usar no php pode usar time() -> link

 

hmm legal

 

mais qual o formato da data? é sómente as horas ou tem o dia,mes e ano?

po exemplo eu vo adicionar 15 dias

 

15 * 24 * 60 * 60

igual a 1296000

 

ai eu vo por no php:

 

['days']*24*60*60 + time() ??????????????????

 

tipo qual o formato q eh esse time entendeu, por exemplo

 

10082010120000 ???

 

10/08/2010 12:00:00 ??? seria isso tudo em segundos??

 

 

Gostaria se funciona se eu usar o ['days']*24*60*60 + time()

ou oque eu teria que fazer para somar a data toda junto a contagem de dias para o vip time?

 

EDIT:

 

Estava vendo akele link e me deparei com isto

 

int time ( void )

 

Returns the current time measured in the number of seconds since the Unix Epoch (January 1 1970 00:00:00 GMT).

 

 

Ele pega a quantidade de segundos desde 1970 até hoje o.O

Colocando isto no shopsystem.php olha oque da

 

['days']*24*60*60 + time()

 

O numero no banco de dados aparece 2147483647

e no tibia...

 

Você possui 9965 dia(s) de vip. Ela irá durar até 19/01/38 01:14:07.

 

E agora josé?

 

AEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE

 

 

Acho que consegui atravez do date()

 

('viptime')*(24*60*60)+(date());

 

Ai da o numero certinho dos dias vips :D

 

 

 

Vo fazer uns ultimos testes!

 

 

 

MUITO obrigado cara!

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

  • 2 weeks later...

A o vip funciopna normal prtocolo 8.6 soq ue tem um problema a porta que voce recomenda usar e uma porcaria tipo se ta em ciam da porta se voce da use ela troca de porta e vai trocando de monte so tile ta funcionando direito

Link para o comentário
Compartilhar em outros sites

oi amigo, desculpa desenterrar o topico novamente, mais estou com um problemão, denovo.

 

Veja se pode me tirar essa duvida rapida.

Estou a incluir os dias vip no banco de dados, ja tentei com time(), date(), e tudo quanto eh tipo de comando do php.

 

Gostaria de saber como fazer pra incluir os dias vips direto no mysql pelo gesior.

Nao entendi aquela de os.time e timeNow

Estou tentando fazer das seguintes formas e nao obtive sucesso em nenhuma:

 

$buy_offer['days']*(24*60*60)+time(); ---------------- FAIL

$buy_offer['days']*(24*60*60)+date(); ---------------- FAIL

$buy_offer['days']*(24*60*60)+date(u); ---------------- FAIL

$buy_offer['days'(24*60*60)+date(u)]; ---------------- FAIL

 

 

E por ai vai, tentei de toda forma e nao consegui.

 

Sabe qual o comando corredo que eu teria que estar fazendo para incluir os dias no banco de dados?

 

Aguardo atentamente pela resposta, obrigado.

Link para o comentário
Compartilhar em outros sites

Você quer adicionar os dias pelo site?

Se for isso, o código lua ta assim:

local daysValue = days * 24 * 60 * 60
local vipTime = getVipTimeByAccount(acc)
local timeNow = os.time()
local time = getVipDaysByAccount(acc) == 0 and (timeNow + daysValue) or (vipTime + daysValue)

Logo, o php deveria ser algo assim:

if(dias_de_vip == 0)
{
   $tempo = dias*(24*60*60)+time();
else
{
   $tempo = dias*(24*60*60)+valor_viptime_db;
}
atualizar viptime no db colocando $tempo no valor;

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

Então, pelo que eu entendi do shop system, essa seria a parte que vai jogar o valor no banco de dados, correto?

Então, aonde eu encaixaria a formula?

 

		


if($buy_offer['type'] == 'pacc') {
									$player_viptime = $buy_player_account->getCustomField('viptime');		
$player_lastlogin = $buy_player_account->getCustomField('lastday');
$save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_pacc').' (id, to_name, to_account, from_nick, from_account, price, pacc_days, trans_state, trans_start, trans_real) VALUES (NULL, '.$SQL->quote($buy_player->getName()).', '.$SQL->quote($buy_player_account->getId()).', '.$SQL->quote($buy_from).',  '.$SQL->quote($account_logged->getId()).', '.$SQL->quote($buy_offer['points']).', '.$SQL->quote($buy_offer['days']).', \'realized\', '.$SQL->quote(time()).', '.$SQL->quote(time()).');';
									$SQL->query($save_transaction);
									$buy_player_account->setCustomField('viptime', $player_viptime+$buy_offer['days']);


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

O viptime é um sistema que conta por segundos no caso tem que transformar segundos em dias o gesior é configurado pra add dias 1 = 1 dia normal. então você tem que tranforma os segundos em dias ex:

 

86400 seg = 1 dia

 

15 dias = 1296000 segundos.

 

Tenta bota assim no shopsystem.php

 

                                        if($buy_offer['type'] == 'pacc') {
                                           $player_viptime = $buy_player_account->getCustomField('viptime');
                                           $player_lastlogin = $buy_player_account->getCustomField('lastday');
                                           $save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_pacc').' (id, to_name, to_account, from_nick, from_account, price, pacc_days, trans_state, trans_start, trans_real) VALUES (NULL, '.$SQL->quote($buy_player->getName()).', '.$SQL->quote($buy_player_account->getId()).', '.$SQL->quote($buy_from).',  '.$SQL->quote($account_logged->getId()).', '.$SQL->quote($buy_offer['points']).', '.$SQL->quote($buy_offer['days']).', \'realized\', '.$SQL->quote(time()).', '.$SQL->quote(time()).');';
                                           $SQL->query($save_transaction);
                                           if($player_viptime > 0)
                                               $buy_player_account->setCustomField('viptime', $player_viptime + $buy_offer['days'] * 86400);
                                           else
                                               $buy_player_account->setCustomField('viptime', time() + $buy_offer['days'] * 86400);
                                           $buy_player_account->setCustomField('premium_points', $user_premium_points-$buy_offer['points']);
                                           $user_premium_points = $user_premium_points - $buy_offer['points'];
                                           if ($player_vipdays >= 1) {
                                           }
                                           $main_content .= '<center><h2>VIP Days added!</h2><b>'.$buy_offer['days'].' days</b> of VIP days added to the account of player <b>'.$buy_player->getName().'</b> for <b>'.$buy_offer['points'].' premium points</b> from your account.<br />Now you have <b>'.$user_premium_points.' premium points</b>.<br><br><a href="index.php?subtopic=shopsystem">Go to Shop Site</a><br>';
                                           }

Link para o comentário
Compartilhar em outros sites

@xkvD

Acredito que ficaria assim:

if($buy_offer['type'] == 'pacc') {
$player_viptime = $buy_player_account->getCustomField('viptime');               
$player_lastlogin = $buy_player_account->getCustomField('lastday');
$save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_pacc').' (id, to_name, to_account, from_nick, from_account, price, pacc_days, trans_state, trans_start, trans_real) VALUES (NULL, '.$SQL->quote($buy_player->getName()).', '.$SQL->quote($buy_player_account->getId()).', '.$SQL->quote($buy_from).',  '.$SQL->quote($account_logged->getId()).', '.$SQL->quote($buy_offer['points']).', '.$SQL->quote($buy_offer['days']).', \'realized\', '.$SQL->quote(time()).', '.$SQL->quote(time()).');';
$SQL->query($save_transaction);

$timeNow = time();
$days = ceil(($player_viptime - $timeNow)/(24*60*60));
$tempo;
if($days <= 0)
	$tempo = dias*(24*60*60)+$timeNow;
else
	$tempo = dias*(24*60*60)+$player_viptime;

$buy_player_account->setCustomField('viptime', $tempo);

Link para o comentário
Compartilhar em outros sites

Primeiramente desculpa pelo double post.

 

este topico resolveu meu problema, minha logica estava certa, eu só estava errando na sintaxe.

e tambem tive que mudar os campos de vip_time para viptime

 

 

http://www.xtibia.com/forum/topic/142729-gesior-acc-vendedo-vip-pelo-pacc/

 

 

 

 

Obrigado!

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...