Advertisement
johnlol

sala_de_suporte

Jul 2nd, 2020
1,833
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //  ________________________________________________________
  2. // |                     __     __ __               __      |
  3. // |   .---.-.----.----.|  |--.|__|  |_.-----.----.|  |_    |
  4. // |   |  _  |   _|  __||     ||  |   _|  -__|  __||   _|   |
  5. // |   |___._|__| |____||__|__||__|____|_____|____||____|   |
  6. // |                                                        |
  7. // |--------------------------------------------------------|
  8. // | Nome do Script: Sala de Suporte                        |
  9. // |--------------------------------------------------------|
  10. // | Criado por: Architect [archscripter@yahoo.com.br]      |
  11. // |--------------------------------------------------------|
  12. // | Versão: 1.8                                            |
  13. // |--------------------------------------------------------|
  14. // | Descrição: Pacote de NPCs de uma Sala de Suporte.      |
  15. // |--------------------------------------------------------|
  16. // | Changelog:                                             |
  17. // | 1.0 Script Criado [Architect]                          |
  18. // | 1.1 Adição da variável para determinar o número máximo |
  19. // | de atendimentos [Architect]                            |
  20. // | 1.2 Script reformulado [Architect]                     |
  21. // | 1.3 Removido o chamado automático para dar mais tempo  |
  22. // | ao GM se organizar [Architect]                         |
  23. // | 1.4 Removido o Whisper para melhor interação com o     |
  24. // | NPC/Sala de Suporte [Architect]                        |
  25. // | 1.5 Sistema de Espera adicionado [Architect]           |
  26. // | (Agradecimento especial ao Floozie pela sugestão!)     |
  27. // | 1.6 Adição da opção de encerrar as inscrições para     |
  28. // | suporte, mas continuar com a fila de atendimento, e    |
  29. // | avisos para indicar aguardo de atendimento e recusa de |
  30. // | chamadas [Architect]                                   |
  31. // | 1.7 Pequenas otimizações e alertas para entradas e     |
  32. // | saídas de jogadores da fila de atendimento [Architect] |
  33. // | 1.8 Script adaptado ao Novo Sistema de GM [Architect]  |
  34. // |--------------------------------------------------------|
  35. // | - Anotações                                            |
  36. // | A BattleFlag "lowest_gm_level" deixou de existir,      |
  37. // | resultando na perda de uma das funções deste script.   |
  38. // | Futuramente espero contar com alguma BattleFlag, mas   |
  39. // | Por hora, utilize a variável '$lowest_gm' na linha 248 |
  40. // | para "resolver" esse problema.                         |
  41. // |________________________________________________________|
  42.  
  43. // NPC de Entrada para a Sala de Suporte
  44. prontera.gat,147,160,5  script  Sala de Suporte 117,{
  45.  
  46.     cutin "kafra_01",2;
  47.     mes "[Funcionária Kafra]";
  48.     mes "Olá ^0000FF"+strcharinfo(0)+"^000000.";
  49.     mes "A Sala de Suporte está "+($sup_sala$ == "fechada" ? "^FF0000":"^00DD00")+$sup_sala$+"^000000.";
  50.     if (getgroupid() >= $lowest_gm) {
  51.         if (select("Entrar na Sala de Suporte.:Cancelar.") == 1) warp "prt_in",284,126;
  52.         close2;
  53.         cutin "", 255;
  54.         end;       
  55.     }
  56.     if ($sup_sala$ == "aberta") {
  57.         next;
  58.         mes "[Funcionária Kafra]";
  59.         mes "Com a intenção organizar o nosso atendimento, pedimos para que todos aguardem o nosso chamado.";
  60.         next;
  61.         mes "[Funcionária Kafra]";
  62.         mes "Para ser chamado você precisa constar na nossa lista de espera.";
  63.         mes "Deseja por seu nome na lista de espera e aguardar alguns instantes?";
  64.         next;
  65.         if (select("Sim, por favor!:Não, obrigado.") == 2) {
  66.             close2;
  67.             cutin "", 255;
  68.             end;
  69.         }
  70.         mes "[Funcionária Kafra]";
  71.         for (set .@i,0; .@i < getarraysize($sup_espera); set .@i,.@i + 1) {
  72.             if ($sup_espera[.@i] == getcharid(3)) {
  73.                 mes "O seu nome já está na lista de espera.";
  74.                 mes "Aguarde alguns instantes e logo você será chamado!";
  75.                 next;
  76.                 if (select("Ok, vou esperar:Quero sair da lista de espera.") == 1) close;
  77.                 mes "[Funcionária Kafra]";
  78.                 deletearray $sup_espera[.@i],1;
  79.                 mes "Pronto, o seu nome foi removido da lista de espera.";
  80.                 close2;
  81.                 cutin "", 255;
  82.                 donpcevent "Sala de Suporte#gm::OnRemove";
  83.                 end;
  84.             }
  85.         }
  86.         set $sup_espera[getarraysize($sup_espera)],getcharid(3);
  87.         mes "Certo, seu nome está na lista de espera.";
  88.         mes "Quando você for chamado, uma mensagem aparecerá à você sem a necessidade de permanecer esperando na sala, mas cuidado com o tempo! Após o chamado você terá apenas 60 segundos para responder.";
  89.         close2;
  90.         cutin "", 255;
  91.         donpcevent "Sala de Suporte#gm::OnAdd";
  92.         end;
  93.     }
  94.     close2;
  95.     cutin "", 255;
  96.     end;
  97. }
  98.  
  99. // NPC da Sala de Suporte (para GMs)
  100. prt_in,290,137,2    script  Funcionária Kafra#SalaSupGM    117,{
  101.  
  102.     cutin "kafra_01",2;
  103.     while (1) {
  104.         mes "[Funcionária Kafra]";
  105.         if (getgroupid() < $lowest_gm) {
  106.             mes "Desculpe ^0000FF"+strcharinfo(0)+"^000000, mas estou a serviço dos membros da equipe do servidor.";
  107.             close2;
  108.             cutin "", 255;
  109.             end;
  110.         }
  111.         if (($sup_sala$ == "fechada") || (@menu == 3)) {
  112.             mes "A sala de suporte está "+($sup_sala$ == "fechada" ? "^FF0000":"^00DD00")+$sup_sala$+"^000000, desejas realmente "+($sup_sala$ == "fechada" ? "^00DD00abrir":"^FF0000fechar")+"^000000?";
  113.             next;
  114.             if (select("Sim.:Não.") == 1) {
  115.                 deletearray $sup_espera[0],getarraysize($sup_espera);
  116.                 set $sup_sala$,($sup_sala$ == "fechada" ? "aberta":"fechada");
  117.                 set $sup_salain,0;
  118.                 announce strcharinfo(0)+": A Sala de Suporte foi "+$sup_sala$+($sup_sala$ == "fechada" ? ".":", fale com o NPC para entrar!"),bc_all;
  119.                 close2;
  120.                 cutin "", 255;
  121.                 end;
  122.             }
  123.             next;
  124.             mes "[Funcionária Kafra]";
  125.         }
  126.         mes "O que você deseja fazer?";
  127.         next;
  128.         if(select("Chamar o próximo jogador.:Ver a lista de espera.:"+($sup_sala$ == "fechada" ? "Abrir":"Fechar")+" a Sala de Suporte.:Cancelar.") == 4) {
  129.             close2;
  130.             cutin "", 255;
  131.             end;
  132.         }
  133.         if (@menu <= 2) {
  134.             if (!getarraysize($sup_espera)) {
  135.                 mes "[Funcionária Kafra]";
  136.                 mes "Não há nenhum jogador na lista de espera"+(($sup_sala$ == "aberta") ? ", o que você ac  ha de fechar a Sala de Suporte?":".");
  137.             } else {
  138.                 mes "[Funcionária Kafra]";
  139.                 if ((@menu == 1) && ($sup_sala$ == "aberta")) {
  140.                     mes "Próximo atendimento: "+$sup_espera[0];
  141.                     mes "Atendimentos pendentes: "+(getarraysize($sup_espera)-1);
  142.                     close2;
  143.                     cutin "", 255;
  144.                     goto OnCall;
  145.                 }
  146.                 if ((@menu == 2) && ($sup_sala$ == "aberta"))
  147.                     for (set .@i,0; .@i < getarraysize($sup_espera); set .@i,.@i + 1) mes (.@i+1)+" "+$sup_espera[.@i];
  148.                 mes "---------------------------";
  149.                 mes "Atendimentos pendentes: "+getarraysize($sup_espera);
  150.                 next;
  151.                 mes "[Funcionária Kafra]";
  152.                 mes "Se você acha que a fila está muito grande, posso fechar as inscrições, mas manter a sala aberta, o que você acha?";
  153.                 next;
  154.                 mes "[Funcionária Kafra]";
  155.                 mes "Esta função deve ser utilizada para agilizar a finalização do serviço, pois ^FF0000não pode ser desfeita sem o fechamento da sala^000000.";
  156.                 if (select("Sim, por favor.:Não, obrigado.") == 1) {
  157.                     set $sup_salain,1;
  158.                     announce strcharinfo(0)+": A Sala de Suporte continua aberta, porém as inscrições para entrar já estão encerradas.",0;
  159.                 }
  160.             }
  161.             next;
  162.         }
  163.     }
  164.  
  165. OnCall:
  166.     set .sup_atend,0;
  167.     if (!getarraysize($sup_espera)) goto OnNoService;
  168.     sleep 2000;
  169.     initnpctimer;
  170.     npctalk "Chamando próximo jogador...";
  171.     set .sup_atend,$sup_espera[0];
  172.     deletearray $sup_espera[0],1;
  173.     if (!attachrid(.sup_atend)) {
  174.         sleep 2000;
  175.         npctalk "Chamada sem resposta, jogador offline!";
  176.         goto OnCall;
  177.     }
  178.     attachrid(.sup_atend);
  179.     cutin "kafra_01",2;
  180.     mes "[Funcionária Kafra]";
  181.     mes "A Sala de Suporte já está disponível!";
  182.     mes "Deseja entrar para receber o seu atendimento?!";
  183.     mes "^ff0000( Responda em 60 segundos! )^000000";
  184.     if (select("Sim, por favor.:Não, obrigado.") == 2) {
  185.         close2;
  186.         cutin "", 255;
  187.         if (.sup_atend == getcharid(3)) {
  188.             npctalk "A chamada foi recusada.";
  189.             goto OnCall;
  190.         }
  191.         end;
  192.     }
  193.     if (.sup_atend == getcharid(3)) {
  194.         close2;
  195.         cutin "", 255;
  196.         npctalk "A chamada foi aceita, teleportando jogador...";
  197.         stopnpctimer;
  198.         sleep2 3000;
  199.         warp "prt_in",284,126;
  200.     }
  201.     next;
  202.     mes "[Funcionária Kafra]";
  203.     mes "Você demorou para responder este chamado, o seu nome foi removido da lista de espera.";
  204.     close2;
  205.     cutin "", 255;
  206.     end;
  207.  
  208. OnTimer5000:
  209.     npctalk "Chamada realizada... aguardando resposta.";
  210.     goto OnCall;
  211.  
  212. OnTimer15000:
  213.     npctalk "Estou aguardando a 15 segundos e ainda não obtive resposta do jogador!";
  214.     goto OnCall;
  215.    
  216. OnTimer30000:
  217.     npctalk "Estou aguardando a 30 segundos e ainda não obtive resposta do jogador!";
  218.     goto OnCall;
  219.  
  220. OnTimer45000:
  221.     npctalk "Estou aguardando a 45 segundos e ainda não obtive resposta do jogador!";
  222.     goto OnCall;
  223.  
  224. OnTimer60000:
  225.     stopnpctimer;
  226.     npctalk "Aguardei a chamada ser atendida por 60 segundos, infelizmente tive que retirá-lo da fila.";
  227.     goto OnCall;
  228.  
  229. OnNoService:
  230.     stopnpctimer;
  231.     sleep 2000;
  232.     npctalk "Não há nenhum jogador na lista de espera, o que você acha de fechar a Sala de Suporte?";
  233.     end;
  234.    
  235. OnAdd:
  236.     npctalk "Um novo jogador entrou na lista de espera. ("+getarraysize($sup_espera)+" atendimento"+((getarraysize($sup_espera) == 1) ? ")":"s)");
  237.     end;
  238.  
  239. OnRemove:
  240.     if (!getarraysize($sup_espera)) goto OnNoService;
  241.     npctalk "Um jogador removeu seu nome da lista de espera. ("+getarraysize($sup_espera)+" atendimento"+((getarraysize($sup_espera) == 1) ? ")":"s)");
  242.     end;
  243.  
  244. OnInit:
  245.     set $sup_sala$,"fechada";
  246.     set .sup_atend,0;
  247.     deletearray $sup_espera[0],getarraysize($sup_espera);
  248.     set $lowest_gm,80;
  249.     end;
  250. }
  251.  
  252. // Portal para saída
  253. prt_in,283,122,4    warp    Sala de Suporte#warp    1,1,prontera,156,191
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement