viewing paste Sistema de Fidelidade | Athena

Posted on the | Last edited on
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210
/*
            __         __          
     /   /  )_/ '  (  _ _ ' _/ _ 
    (__.  (__/ /()/)/  __)( / //)/_)  
                              /    
    
    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 */
Viewed 1289 times, submitted by Envolvents.