Advertisement
johnlol

Sala_De_Suporte

Aug 2nd, 2023
895
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VeriLog 9.57 KB | Gaming | 0 0
  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.     OnInit:
  98.     waitingroom "Support Room",0;
  99.     end;
  100. }
  101.  
  102. // NPC da Sala de Suporte (para GMs)
  103. prt_in,290,137,2    script  Funcionária Kafra#SalaSupGM    117,{
  104.  
  105.     cutin "kafra_01",2;
  106.     while (1) {
  107.         mes "[Funcionária Kafra]";
  108.         if (getgroupid() < $lowest_gm) {
  109.             mes "Desculpe ^0000FF"+strcharinfo(0)+"^000000, mas estou a serviço dos membros da equipe do servidor.";
  110.             close2;
  111.             cutin "", 255;
  112.             end;
  113.         }
  114.         if (($sup_sala$ == "fechada") || (@menu == 3)) {
  115.             mes "A sala de suporte está "+($sup_sala$ == "fechada" ? "^FF0000":"^00DD00")+$sup_sala$+"^000000, desejas realmente "+($sup_sala$ == "fechada" ? "^00DD00abrir":"^FF0000fechar")+"^000000?";
  116.             next;
  117.             if (select("Sim.:Não.") == 1) {
  118.                 deletearray $sup_espera[0],getarraysize($sup_espera);
  119.                 set $sup_sala$,($sup_sala$ == "fechada" ? "aberta":"fechada");
  120.                 set $sup_salain,0;
  121.                 announce strcharinfo(0)+": A Sala de Suporte foi "+$sup_sala$+($sup_sala$ == "fechada" ? ".":", fale com o NPC para entrar!"),bc_all;
  122.                 close2;
  123.                 cutin "", 255;
  124.                 end;
  125.             }
  126.             next;
  127.             mes "[Funcionária Kafra]";
  128.         }
  129.         mes "O que você deseja fazer?";
  130.         next;
  131.         if(select("Chamar o próximo jogador.:Ver a lista de espera.:"+($sup_sala$ == "fechada" ? "Abrir":"Fechar")+" a Sala de Suporte.:Cancelar.") == 4) {
  132.             close2;
  133.             cutin "", 255;
  134.             end;
  135.         }
  136.         if (@menu <= 2) {
  137.             if (!getarraysize($sup_espera)) {
  138.                 mes "[Funcionária Kafra]";
  139.                 mes "Não há nenhum jogador na lista de espera"+(($sup_sala$ == "aberta") ? ", o que você ac  ha de fechar a Sala de Suporte?":".");
  140.             } else {
  141.                 mes "[Funcionária Kafra]";
  142.                 if ((@menu == 1) && ($sup_sala$ == "aberta")) {
  143.                     mes "Próximo atendimento: "+$sup_espera[0];
  144.                     mes "Atendimentos pendentes: "+(getarraysize($sup_espera)-1);
  145.                     close2;
  146.                     cutin "", 255;
  147.                     goto OnCall;
  148.                 }
  149.                 if ((@menu == 2) && ($sup_sala$ == "aberta"))
  150.                     for (set .@i,0; .@i < getarraysize($sup_espera); set .@i,.@i + 1) mes (.@i+1)+" "+$sup_espera[.@i];
  151.                 mes "---------------------------";
  152.                 mes "Atendimentos pendentes: "+getarraysize($sup_espera);
  153.                 next;
  154.                 mes "[Funcionária Kafra]";
  155.                 mes "Se você acha que a fila está muito grande, posso fechar as inscrições, mas manter a sala aberta, o que você acha?";
  156.                 next;
  157.                 mes "[Funcionária Kafra]";
  158.                 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.";
  159.                 if (select("Sim, por favor.:Não, obrigado.") == 1) {
  160.                     set $sup_salain,1;
  161.                     announce strcharinfo(0)+": A Sala de Suporte continua aberta, porém as inscrições para entrar já estão encerradas.",0;
  162.                 }
  163.             }
  164.             next;
  165.         }
  166.     }
  167.  
  168. OnCall:
  169.     set .sup_atend,0;
  170.     if (!getarraysize($sup_espera)) goto OnNoService;
  171.     sleep 2000;
  172.     initnpctimer;
  173.     npctalk "Chamando próximo jogador...";
  174.     set .sup_atend,$sup_espera[0];
  175.     deletearray $sup_espera[0],1;
  176.     if (!attachrid(.sup_atend)) {
  177.         sleep 2000;
  178.         npctalk "Chamada sem resposta, jogador offline!";
  179.         goto OnCall;
  180.     }
  181.     attachrid(.sup_atend);
  182.     cutin "kafra_01",2;
  183.     mes "[Funcionária Kafra]";
  184.     mes "A Sala de Suporte já está disponível!";
  185.     mes "Deseja entrar para receber o seu atendimento?!";
  186.     mes "^ff0000( Responda em 60 segundos! )^000000";
  187.     if (select("Sim, por favor.:Não, obrigado.") == 2) {
  188.         close2;
  189.         cutin "", 255;
  190.         if (.sup_atend == getcharid(3)) {
  191.             npctalk "A chamada foi recusada.";
  192.             goto OnCall;
  193.         }
  194.         end;
  195.     }
  196.     if (.sup_atend == getcharid(3)) {
  197.         close2;
  198.         cutin "", 255;
  199.         npctalk "A chamada foi aceita, teleportando jogador...";
  200.         stopnpctimer;
  201.         sleep2 3000;
  202.         warp "prt_in",284,126;
  203.     }
  204.     next;
  205.     mes "[Funcionária Kafra]";
  206.     mes "Você demorou para responder este chamado, o seu nome foi removido da lista de espera.";
  207.     close2;
  208.     cutin "", 255;
  209.     end;
  210.  
  211. OnTimer5000:
  212.     npctalk "Chamada realizada... aguardando resposta.";
  213.     goto OnCall;
  214.  
  215. OnTimer15000:
  216.     npctalk "Estou aguardando a 15 segundos e ainda não obtive resposta do jogador!";
  217.     goto OnCall;
  218.    
  219. OnTimer30000:
  220.     npctalk "Estou aguardando a 30 segundos e ainda não obtive resposta do jogador!";
  221.     goto OnCall;
  222.  
  223. OnTimer45000:
  224.     npctalk "Estou aguardando a 45 segundos e ainda não obtive resposta do jogador!";
  225.     goto OnCall;
  226.  
  227. OnTimer60000:
  228.     stopnpctimer;
  229.     npctalk "Aguardei a chamada ser atendida por 60 segundos, infelizmente tive que retirá-lo da fila.";
  230.     goto OnCall;
  231.  
  232. OnNoService:
  233.     stopnpctimer;
  234.     sleep 2000;
  235.     npctalk "Não há nenhum jogador na lista de espera, o que você acha de fechar a Sala de Suporte?";
  236.     end;
  237.    
  238. OnAdd:
  239.     npctalk "Um novo jogador entrou na lista de espera. ("+getarraysize($sup_espera)+" atendimento"+((getarraysize($sup_espera) == 1) ? ")":"s)");
  240.     end;
  241.  
  242. OnRemove:
  243.     if (!getarraysize($sup_espera)) goto OnNoService;
  244.     npctalk "Um jogador removeu seu nome da lista de espera. ("+getarraysize($sup_espera)+" atendimento"+((getarraysize($sup_espera) == 1) ? ")":"s)");
  245.     end;
  246.  
  247. OnInit:
  248.     set $sup_sala$,"fechada";
  249.     set .sup_atend,0;
  250.     deletearray $sup_espera[0],getarraysize($sup_espera);
  251.     set $lowest_gm,80;
  252.     end;
  253.  
  254. }
  255.  
  256. // Portal para saída
  257. prt_in,283,122,4    warp    Sala de Suporte#warp    1,1,prontera,150,160
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement