Jump to content
  • 0
Sign in to follow this  
himari

[Resolvido] Erro npc de fidelidade

Question

estou com um problema no NPC de fidelidade ele so ta contando o tempo online de accs de nivel 99 mais acc normal ele n ta contando o tempo alguem poderia ver isso pra mim por favor

Spoiler

/*
            __           __           
     /     /  )_/    '  (  _ _ ' _/ _ 
    (__.  (__/ /()/)/  __)( / //)/_)  
                              /       
    
    Cronus, bRA & rA.
    Description: Sistema de Fidelidade
    Author: Leandro Otoni
    Pedido: Biju, Ryuho e mais. '-'
    Version: 1.0
    
    Changelog:    
    1.0 Criação do NPC [L.Otoni]

*/
//=========================================
//    SQL
//    -    Copiar e colar no PhpMyAdmin
/*=========================================

    ALTER TABLE `login` 
    ADD `loyalty_minute` INT NOT NULL DEFAULT '0' , 
    ADD `loyalty_points` INT NOT NULL DEFAULT '0' ;

*/

// Quando player logar começa a contagem de tempo online.
// A cada hora ele ganha 1 ponto
// Premiações extras a cada meta completa
// A contagem é salva por conta
-    script    loyalty#controller    -1,{ OnInit:
//====================================================
//    Configurações Sistema Fidelidade
//====================================================
//----------------------------------------------------
//    1.    Quantidade de pontos de fidelidade por hora
    set .pontos, 1;            // Padrão: 1 ponto por hora
//----------------------------------------------------
//    2.    Permitir contagem de pontos em @at/Vending?
//    -    (0) Não permitir, (1) Permitir
    set .vending, 0;        // Padrão: (0) Não permitir
//----------------------------------------------------
//    3.    Utilizar Cash ao inves de Pontos de Fidelidade?
//    -    Caso ativado atribuirá a quantidade de pontos 
//        p/hora ao comando @cash, sendo assim a cada 1h
//        online o player recebe X de cash (rops).
//    -    (0) Não permitir, (1) Permitir
    set .cash, 0;            // Padrão: (0) Desativado
//----------------------------------------------------
//    4.    Ativa sistema de conquistas?
//    -    Pontos extra para cada conquista alcançada
//    -    (0) Desativar, (1) Ativar
    set .achievement, 1;    // Padrão: (1) Ativar
//----------------------------------------------------
//    5.    Ativar Loja Itens Fidelidade
//    -    (0) Desativar, (1) Ativar
    set .shop, 1;            // Padrão: (1) Ativar
//----------------------------------------------------
//    5.1    Itens Loja Fidelidade
//    -    <item_id>,<qtd_pontos>{<item_id>,<qtd_pontos>,...};
    setarray .itens[0], 501, 10, 502, 11, 503, 1000;
//----------------------------------------------------
//====================================================
//    Conquistas
//====================================================
//    <n° horas>,<quantidade pontos>;
//    6,5; 6 horas = 5 pontos.
//    Deixar (;) apenas no ultimo
    setarray .achievements[0],    6, 5,
                                12, 20,
                                24, 80,
                                48, 320,
                                96, 1280,
                                192, 5120,
                                384, 20480,
                                768, 81920; // Ultimo

//====================================================
//    IMPORTANTE: Não Alterar as linhas abaixo
//====================================================                                    
donpcevent "loyalty#agent::OnInit"; end; // Carregando Loja
//----------------------------------------------------
//    Contagem de minutos/pontos
OnPCLoginEvent:
    while(1)
    {
        sleep2 10000; // 1 minuto
        if(!checkvending() || .vending)
        {
            query_sql("UPDATE `login` SET `loyalty_minute` = `loyalty_minute` + '1' WHERE `account_id` = '"+getcharid(3)+"'");
            query_sql("SELECT `loyalty_minute` FROM `login` WHERE account_id = '"+getcharid(3)+"'",.@minuto);
            if( !(.@minuto%60) )
            {
                if( .cash ) atcommand "@cash " + .pontos + "";
                else query_sql("UPDATE `login` SET `loyalty_points` = `loyalty_points` + '"+.pontos+"' WHERE `account_id` = '"+getcharid(3)+"'");
                
                if( .achievement )
                {
                    for(set .@i, 0; .@i < getarraysize(.achievements); set .@i, .@i + 2)
                        if( .achievements[.@i] == ( .@minuto / 60 ) ) {
                            if( .cash ) atcommand "@cash " + .achievements[.@i+1];
                            else query_sql("UPDATE `login` SET `loyalty_points` = `loyalty_points` + "+.achievements[.@i+1]+" WHERE account_id = '"+getcharid(3)+"'");
                            announce "[Sistema de Fidelidade]: Conquista obtida, "+.achievements[.@i]+"h online, parabéns! Receba "+.achievements[.@i+1]+" Pontos de "+(.cash? "Cash" : "Fidelidade"),bc_self,0xBF5EFF;
                        }
                }
            }
        }
    }
end;
}

-    script    loyalty#agent    -1,{ 
    query_sql ("SELECT `loyalty_minute` / 60 , `loyalty_minute`, `loyalty_points` FROM `login` WHERE account_id = '"+getcharid(3)+"'",.@hora,.@minuto, @loyalty);
    set .npc$, "^6F34C2[Sistema de Fidelidade]^000000";
    mes .npc$;
    mes "Seja bem vind"+(Sex?"o":"a")+" ^ff0000"+strcharinfo(0)+"^000000!";
    mes "Tempo de Jogo: ^ff0000"+.@hora+" hora"+(.@hora > 1? "s" : "")+" e "+(.@minuto%60)+" minuto"+(.@minuto > 1? "s" : "")+"^000000.";
    mes "Pontos de Fidelidade: ^6F34C2"+ @loyalty + "^000000";
    mes "^F7AD00- Você pode acumular Pontos de Fidelidade permanecendo on-line.^000000";
    mes "^3487C2- Você pode resgartar diversos prêmios com Pontos de Fidelidade.^000000";
    next;
    switch(select("Sair"+( getvariableofnpc(.shop, "loyalty#controller") ? ":Resgatar Itens" : ":" )+( getvariableofnpc(.achievement, "loyalty#controller") ? ":Premiações Extras" : "" )))
    {
        case 1: { mes .npc$; mes "Tudo bem, tenha um bom dia."; close; }
        case 2: { mes .npc$; mes "É pra já, olha só os itens incríveis que temos em nossa lojinha. ^^"; close2; /*openshop("loyalty#shop");*/ goto OnShop; end; }
        case 3:
            mes .npc$;
            mes "Premiação Padrão";
            mes "^ff0000Por Hora:^000000 1 Ponto de Fidelidade.";
            mes " ";
            mes "Premiações Extras: " + ( .@hora < getelementofarray(getvariableofnpc(.achievements, "loyalty#controller"), (getarraysize(getvariableofnpc(.achievements,"loyalty#controller")) - 2 )) ? "^ff0000Incompleto!":"^00B0EFCompleto!") + "^000000";
            
            for(set .@i, 0; .@i < getarraysize(.achievement); set .@i, .@i + 2)
            {
                mes ( .@hora < .achievement[.@i] ? "^ff0000" + .achievement[.@i] + "h^000000: " : "^999999" + .achievement[.@i] + ": ")  + .achievement[.@i+1] + " Pontos de "+(getvariableofnpc(.cash,"loyalty#controller")? "Cash" : "Fidelidade")+".";
            }
            next;
            mes .npc$;
            mes "Continue juntando Pontos de Fidelidade e troque por itens incríveis aqui comigo. ^^";
            mes "Tenha um bom jogo e nos vemos por aí!";
            close;
    }
    
OnShop:
    callshop "loyalty#shop1",1;
    npcshopattach "loyalty#shop1";
end;
OnBuyItem:

    for(set .@i, 0; .@i < getarraysize(.itens); set .@i, .@i + 2)
        if( .itens[.@i] == @bought_nameid ) { set  @price, .itens[.@i+1]; }

    // Só por segurança.
    if(!@price) {dispbottom "Iten não encontrado!"; end; }
    
    if(@loyalty < @price) 
    {
        mes .npc$;
        mes "^F05754Me desculpe, mas você não tem pontos de Fidelidade o sufuciente!^000000";
        mes " ";
        mes "Pontos de Fidelidade: ^6F34C2"+ @loyalty + "^000000";
        mes "Preço do Item: ^ff0000"+ @price+"^000000";
        mes "^ff0000A sua compra foi cancelada!^000000";
        close;
        end;
    }
    
    query_sql("UPDATE `login` SET `loyalty_points` = `loyalty_points` - '"+@price+"' WHERE `account_id` = '"+getcharid(3)+"'");
    dispbottom "Você gastou "+@price+" ponto(s) de fidelidade e agora possui "+(@loyalty - @price)+" ponto(s)";
end;

// Carregando Confs
OnInit:
    npcshopdelitem "loyalty#shop1",501; // Removendo o item necessario para a criação da loja
    copyarray .achievement[0], getvariableofnpc(.achievements[0],"loyalty#controller"),getarraysize(getvariableofnpc(.achievements,"loyalty#controller"));
    copyarray .itens[0], getvariableofnpc(.itens[0],"loyalty#controller"),getarraysize(getvariableofnpc(.itens,"loyalty#controller"));
    
    // Adcionando os itens a loja
    for(set .@i, 0; .@i < getarraysize(.itens); set .@i, .@i + 2) 
        npcshopadditem "loyalty#shop1", .itens[.@i],.itens[.@i+1];
end;
}
//=================================================================
//    IMPORTANTE: Não apagar/alterar essa linha
//=================================================================
-    shop    loyalty#shop1    -1,501:50
//-----------------------------------------------------------------

/*
    Duplicates
*/
prontera,153,188,5    duplicate(loyalty#agent)    Sistema de Fidelidade#prt    833

/* Fim do NPC */

 

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Tente assim > http://upaste.me/b8e04135256c3ccec#

/*
			__		   __		   
	 /	 /  )_/	'  (  _ _ ' _/ _ 
	(__.  (__/ /()/)/  __)( / //)/_)  
							  /	   
	
	Cronus, bRA & rA.
	Description: Sistema de Fidelidade
	Author: Leandro Otoni
	Pedido: Biju, Ryuho e mais. '-'
	Version: 1.0
	
	Changelog:	
	1.0 Criação do NPC [L.Otoni]

*/
//=========================================
//	SQL
//	-	Copiar e colar no PhpMyAdmin
/*=========================================

	ALTER TABLE `login` 
	ADD `loyalty_minute` INT NOT NULL DEFAULT '0' , 
	ADD `loyalty_points` INT NOT NULL DEFAULT '0' ;

*/

// Quando player logar começa a contagem de tempo online.
// A cada hora ele ganha 1 ponto
// Premiações extras a cada meta completa
// A contagem é salva por conta
-	script	loyalty#controller	-1,{ OnInit:
//====================================================
//	Configurações Sistema Fidelidade
//====================================================
//----------------------------------------------------
//	1.	Quantidade de pontos de fidelidade por hora
	set .pontos, 1;			// Padrão: 1 ponto por hora
//----------------------------------------------------
//	2.	Permitir contagem de pontos em @at/Vending?
//	-	(0) Não permitir, (1) Permitir
	set .vending, 0;		// Padrão: (0) Não permitir
//----------------------------------------------------
//	3.	Utilizar Cash ao inves de Pontos de Fidelidade?
//	-	Caso ativado atribuirá a quantidade de pontos 
//		p/hora ao comando @cash, sendo assim a cada 1h
//		online o player recebe X de cash (rops).
//	-	(0) Não permitir, (1) Permitir
	set .cash, 0;			// Padrão: (0) Desativado
//----------------------------------------------------
//	4.	Ativa sistema de conquistas?
//	-	Pontos extra para cada conquista alcançada
//	-	(0) Desativar, (1) Ativar
	set .achievement, 1;	// Padrão: (1) Ativar
//----------------------------------------------------
//	5.	Ativar Loja Itens Fidelidade
//	-	(0) Desativar, (1) Ativar
	set .shop, 1;			// Padrão: (1) Ativar
//----------------------------------------------------
//	5.1	Itens Loja Fidelidade
//	-	<item_id>,<qtd_pontos>{<item_id>,<qtd_pontos>,...};
	setarray .itens[0], 12208, 150, 14592, 150, 12103, 250;
//----------------------------------------------------
//====================================================
//	Conquistas
//====================================================
//	<n° horas>,<quantidade pontos>;
//	6,5; 6 horas = 5 pontos.
//	Deixar ( apenas no ultimo
	setarray .achievements[0],	6, 5,
								12, 20,
								24, 80,
								48, 320,
								96, 1280,
								192, 5120,
								384, 20480,
								768, 81920; // Ultimo

//====================================================
//	IMPORTANTE: Não Alterar as linhas abaixo
//====================================================									
donpcevent "loyalty#agent::OnInit"; end; // Carregando Loja
//----------------------------------------------------
//	Contagem de minutos/pontos
OnPCLoginEvent:
	if(getgroupid() >= 0) {
	while(1)
	{
		sleep2 10000; // 1 minuto
		if(!checkvending() || .vending)
		{
			query_sql("UPDATE `login` SET `loyalty_minute` = `loyalty_minute` + '1' WHERE `account_id` = '"+getcharid(3)+"'");
			query_sql("SELECT `loyalty_minute` FROM `login` WHERE account_id = '"+getcharid(3)+"'",.@minuto);
			if( !(.@minuto%60) )
			{
				if( .cash ) 
				{
					atcommand "@cash " + .pontos + "";
				} 
				
				else
				{
					query_sql("UPDATE `login` SET `loyalty_points` = `loyalty_points` + '"+.pontos+"' WHERE `account_id` = '"+getcharid(3)+"'");
				}
				
				if( .achievement )
				{
					for(set .@i, 0; .@i < getarraysize(.achievements); set .@i, .@i + 2)
						if( .achievements[.@i] == ( .@minuto / 60 ) ) {
							if( .cash ) 
							{
								atcommand "@cash " + .achievements[.@i+1];
							}
							
							else query_sql("UPDATE `login` SET `loyalty_points` = `loyalty_points` + "+.achievements[.@i+1]+" WHERE account_id = '"+getcharid(3)+"'");
							announce "[Sistema de Fidelidade]: Conquista obtida, "+.achievements[.@i]+"h online, parabéns! Receba "+.achievements[.@i+1]+" Pontos de "+(.cash? "Cash" : "Fidelidade"),bc_self,0xBF5EFF;
						}
				}
			}
		}
	}
end;
}
}

-	script	loyalty#agent	-1,{
	if(getgroupid() >= 0) {
	query_sql ("SELECT `loyalty_minute` / 60 , `loyalty_minute`, `loyalty_points` FROM `login` WHERE account_id = '"+getcharid(3)+"'",.@hora,.@minuto, @loyalty);
	set .npc$, "^6F34C2[Sistema de Fidelidade]^000000";
	mes .npc$;
	mes "Seja bem vind"+(Sex?"o":"a")+" ^ff0000"+strcharinfo(0)+"^000000!";
	mes "Tempo de Jogo: ^ff0000"+.@hora+" hora"+(.@hora > 1? "s" : "")+" e "+(.@minuto%60)+" minuto"+(.@minuto > 1? "s" : "")+"^000000.";
	mes "Pontos de Fidelidade: ^6F34C2"+ @loyalty + "^000000";
	mes "^F7AD00- Você pode acumular Pontos de Fidelidade permanecendo on-line.^000000";
	mes "^3487C2- Você pode resgartar diversos prêmios com Pontos de Fidelidade.^000000";
	next;
	switch(select("Sair"+( getvariableofnpc(.shop, "loyalty#controller") ? ":Resgatar Itens" : ":" )+( getvariableofnpc(.achievement, "loyalty#controller") ? ":Premiações Extras" : "" )))
	{
		case 1: { mes .npc$; mes "Tudo bem, tenha um bom dia."; close; }
		case 2: { mes .npc$; mes "É pra já, olha só os itens incríveis que temos em nossa lojinha. ^^"; close2; /*openshop("loyalty#shop");*/ goto OnShop; end; }
		case 3:
			mes .npc$;
			mes "Premiação Padrão";
			mes "^ff0000Por Hora:^000000 1 Ponto de Fidelidade.";
			mes " ";
			mes "Premiações Extras: " + ( .@hora < getelementofarray(getvariableofnpc(.achievements, "loyalty#controller"), (getarraysize(getvariableofnpc(.achievements,"loyalty#controller")) - 2 )) ? "^ff0000Incompleto!":"^00B0EFCompleto!") + "^000000";
			
			for(set .@i, 0; .@i < getarraysize(.achievement); set .@i, .@i + 2)
			{
				mes ( .@hora < .achievement[.@i] ? "^ff0000" + .achievement[.@i] + "h^000000: " : "^999999" + .achievement[.@i] + ": ")  + .achievement[.@i+1] + " Pontos de "+(getvariableofnpc(.cash,"loyalty#controller")? "Cash" : "Fidelidade")+".";
			}
			next;
			mes .npc$;
			mes "Continue juntando Pontos de Fidelidade e troque por itens incríveis aqui comigo. ^^";
			mes "Tenha um bom jogo e nos vemos por aí!";
			close;
	}
	
OnShop:
	callshop "loyalty#shop1",1;
	npcshopattach "loyalty#shop1";
end;
OnBuyItem:

	for(set .@i, 0; .@i < getarraysize(.itens); set .@i, .@i + 2)
		if( .itens[.@i] == @bought_nameid ) { set  @price, .itens[.@i+1]; }

	// Só por segurança.
	if(!@price) {dispbottom "Iten não encontrado!"; end; }
	
	if(@loyalty < @price) 
	{
		mes .npc$;
		mes "^F05754Me desculpe, mas você não tem pontos de Fidelidade o sufuciente!^000000";
		mes " ";
		mes "Pontos de Fidelidade: ^6F34C2"+ @loyalty + "^000000";
		mes "Preço do Item: ^ff0000"+ @price+"^000000";
		mes "^ff0000A sua compra foi cancelada!^000000";
		close;
		end;
	}
	
	query_sql("UPDATE `login` SET `loyalty_points` = `loyalty_points` - '"+@price+"' WHERE `account_id` = '"+getcharid(3)+"'");
	dispbottom "Você gastou "+@price+" ponto(s) de fidelidade e agora possui "+(@loyalty - @price)+" ponto(s)";
end;

// Carregando Confs
OnInit:
	npcshopdelitem "loyalty#shop1",501; // Removendo o item necessario para a criação da loja
	copyarray .achievement[0], getvariableofnpc(.achievements[0],"loyalty#controller"),getarraysize(getvariableofnpc(.achievements,"loyalty#controller"));
	copyarray .itens[0], getvariableofnpc(.itens[0],"loyalty#controller"),getarraysize(getvariableofnpc(.itens,"loyalty#controller"));
	
	// Adcionando os itens a loja
	for(set .@i, 0; .@i < getarraysize(.itens); set .@i, .@i + 2) 
		npcshopadditem "loyalty#shop1", .itens[.@i],.itens[.@i+1];
end;
}
}
//=================================================================
//	IMPORTANTE: Não apagar/alterar essa linha
//=================================================================
-	shop	loyalty#shop1	-1,501:50
//-----------------------------------------------------------------

/*
	Duplicates
*/
prontera,153,188,5	duplicate(loyalty#agent)	Sistema de Fidelidade#pr	833

/* Fim do NPC */

Me diga no que deu.

  • Love 1

Share this post


Link to post
Share on other sites
  • 0
Aviso Automático
Tópico Fechado! Razão: Dúvida e/ou problema resolvido.

Se você não concorda com esta ação, vá até o Tribunal de Pequenas Causas.

Equipe Cronus Emulator.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

Seja bem vindo ao Cronus-Emulator.
É sempre um prazer te-lo conosco.
Você pode visualizar nossas áreas de suporte para encontrar suas soluções sem a necessidade de se registrar!
Registrando em nossa comunidade, você poderá conhecer mais sobre nosso projeto, criar tópicos, responder tópicos existentes, baixar milhares de recursos em nosso sistema de downloads, participar de nossa comunidade, customizar seu perfil e muito mais... Se você já possui uma conta, faça seu login - ou crie uma conta. Também temos integração com Google+ e Facebook.

×
×
  • Create New...