/* __ __ / / )_/ ' ( _ _ ' _/ _ (__. (__/ /()/)/ __)( / //)/_) / 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 // - ,{,,...}; setarray .itens[0], 12208, 150, 14592, 150, 12103, 250; //---------------------------------------------------- //==================================================== // Conquistas //==================================================== // ,; // 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 */