Jump to content

Tupac

Members
  • Posts

    101
  • Joined

  • Last visited

Posts posted by Tupac

  1. Help

    [Error]: Server received crash signal! Attempting to save all online characters!

    to use script:

    alberta,218,111,4	script	Pontos de Venda	757,{
    for( set .@i,1; .@i <= .count; set .@i,.@i + 1 ){
    	getmapxy( .@map$,.@x,.@y,1,"#vend_slot"+.@i );
    	if( !getareausers( .map$,.@x,.@y,.@x,.@y ) && .@x > 1 && .@y > 1 ){
    		 set .@available,.@available + 1;
    		 set .@menu$,.@menu$ + "Slot - "+.@i+":";
    	}else{
    		 set .@menu$,.@menu$ + ":";
    	}
    }
     
    if( !.@available ){
    	mes "Este slot está ocupado.";
    }else if( !getskilllv("MC_VENDING") ){
    	mes "Você não possui a habilidade ^0055FFComércio^000000.";
    }else{
    	mes "Slot Disponível: "+.@available;
    	mes "Por favor, escolha o seu Ponto de Venda.";
    	set .@i,select( .@menu$ );
    	getmapxy( .@map$,.@x,.@y,1,"#vend_slot"+.@i );
    	if( .@x == 1 || .@y == 1 ){
    		 mes "Este NPC está em local inválido...";
    	}else{
    		 warp .@map$,.@x,.@y;
    		 hideonnpc "#vend_slot"+.@i;
    	}
    }
    close;
     
    OnInit:
    sleep 1000;
    // Map for vending
    set .map$,"alberta";
    setcell .map$,0,0,284,365,cell_novending,1;
     
    // x and y horizone ..
    setarray .x_line,208,211,214,217,220,223,226,229;
    setarray .y_line,109,106,103,100,97,94;
     
    set .x_line_size,getarraysize( .x_line );
    set .y_line_size,getarraysize( .y_line );
    set .count,1;
    for( set .@x,0; .@x < .x_line_size; set .@x,.@x + 1 )
    	for( set .@y,0; .@y < .y_line_size; set .@y,.@y + 1 )
    		 if( checkcell( .map$,.x_line[.@x],.y_line[.@y],cell_chkpass ) ){
    				movenpc "#vend_slot"+.count,.x_line[.@x],.y_line[.@y];
    				setcell .map$,.x_line[.@x],.y_line[.@y],.x_line[.@x],.y_line[.@y],cell_novending,0;
    				set .count,.count + 1;
    		 }
    npctalk "Ponto de Venda: "+.count;
    donpcevent "::OnSetup";
    end;
    }
     
    -	script	vend_slot	-1,{
    getmapxy( .@map$,.@x,.@y,1 );
    if( !getskilllv("MC_VENDING") ){
    	mes "Você não possui a habilidade ^0055FFComércio^000000.";
    }else if( getareausers( .@map$,.@x,.@y,.@x,.@y ) ){
    	mes "Alguém já escolheu este local.";
    }else{
    	mes "Ponto de Venda : ^777777Disponível^000000";
    	mes "^0055FF[ Regras dos Pontos de Venda]^000000";
    	mes "^FF0000 ~ Nome adequado à loja.^000000";
    	mes "^FF0000 ~ Não ocupar espaço com vendas inúteis.^000000";
    	mes " ";
    	mes "^777777Os players que não seguirem estas regras serão devidamente punidos.^000000";
    	if( select( "Escolha o Ponto de Venda","Cancelar" ) == 1 ){
    		 warp .@map$,.@x,.@y;
    		 hideonnpc strnpcinfo(0);
    	}
    }
    close;
     
    OnSetup:
    getmapxy( .@map$,.@x,.@y,1 );
    set .@npcname$,strnpcinfo(0);
    while( .@map$ != "" ){
    	if( getareausers( .@map$,.@x,.@y,.@x,.@y ) ){
    		 hideonnpc .@npcname$;
    	}else{
    		 hideoffnpc .@npcname$;
    		 // specialeffect 313;
    	}
    	sleep 5000;
    }
    end;
    }
     
    // Add more if needed.
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot1	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot2	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot3	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot4	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot5	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot6	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot7	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot8	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot9	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot10	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot11	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot12	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot13	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot14	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot15	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot16	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot17	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot18	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot19	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot20	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot21	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot22	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot23	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot24	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot25	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot26	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot27	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot28	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot29	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot30	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot31	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot32	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot33	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot34	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot35	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot36	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot37	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot38	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot39	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot40	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot41	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot42	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot43	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot44	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot45	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot46	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot47	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot48	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot49	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot50	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot51	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot52	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot53	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot54	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot55	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot56	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot57	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot58	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot59	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot60	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot61	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot62	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot63	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot64	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot65	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot66	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot67	858
    alberta,1,1,4	duplicate(vend_slot)	#vend_slot68	858

     

  2. Script:

    //=============================================
    //== Script ~ brA || Encantador global ========
    //== Versão: ==================================
    //== 1.7
    //== Autor: ===================================
    //== CinquentaeUM || Vulthoom
    //=============================================
    prontera,150,150,3	script	Mago Negro	4_M_REPAIR,{
    // ==============================================================
    // CONFIGURAÇÕES GERAIS
    set .npc$,"[^0000FF Mago Negro ^000000]"; // NOME DO NPC
    set .item_id,7714; // ID DO ITEM QUE SERÁ COBRADO
    set .item_amount,1; // QUANTIDADE DO ITEM QUE SERÁ COBRADO
    // ==============================================================
    // CONFIGURAÇÕES DE CHANCE DE FALHA
    set @rate,42;
    // EX 1: @rate == 100 = 42% de sair algum enchant, 58% falhar.
    // EX 2: @rate == 42 = 100% de chance de sair algum enchant, 0% de falhar.
    // EX 3: @rate == 12 = 100% de chance de sair algum enchant, 0% de falhar. Apenas enchants de nível 5 e 4.
    // ==============================================================
    set @sys,1; // Se o equipamento tiver slot, não fará o enchant.
    // 1 para não encantar se tiver slot, 0 para encantar independente.
    // ==============================================================
    mes .npc$;
    mes "Gostaria de refinar o seu equipamento, usando um tipo de magia negra desconhecida?";
    next;
    mes .npc$;
    mes "Você vai precisar de " + .item_amount + "x - "+getitemname(.item_id)+".";
    mes "Deseja usar os meus poderes mágicos?";
    next;
    switch(select("Sim","Não")) {
    case 1:
    mes .npc$;
    mes "Se seu equipamento tiver algum refinamento ou cartas, será tudo perdido no processo.";
    mes "Selecione o item que você quer encantar.";
    next;
    menu getequipname(1),PART1,getequipname(2),PART2,getequipname(3),PART3,getequipname(4),PART4,getequipname(5),PART5,
    getequipname(6),PART6,getequipname(7),PART7,getequipname(8),PART8,getequipname(9),PART9,getequipname(10),PART10,"Eu mudei de idea.",L_Cancel;
    PART1: set @part,1; goto M_Check;
    PART2: set @part,2; goto M_Check;
    PART3: set @part,3; goto M_Check;
    PART4: set @part,4; goto M_Check;
    PART5: set @part,5; goto M_Check;
    PART6: set @part,6; goto M_Check;
    PART7: set @part,7; goto M_Check;
    PART8: set @part,8; goto M_Check;
    PART9: set @part,9; goto M_Check;
    PART10: set @part,10; goto M_Check;
    PART11: goto L_Cancel;
    case 2: goto L_Cancel;
    }
    M_Check:
    if (getequipisequiped(@part)) {
    set .@item, getequipid(@part);
    mes .npc$;
    mes "Deseja encantar: "+getitemname(.@item)+"?";
    mes "Lembre-se que você só pode ter ^FF0000UM^000000 desse item no inventário.";
    next;
    switch(select("Sim","Não")) {
    case 1:
    if(countitem(.@item) > 1) {
    mes .npc$; mes "Você tem itens demais. Volte com apenas UM.";
    close;
    }
    if(countitem(.@item) == 0) {
    mes .npc$;
    mes "Você não tem nenhum item. Volte depois.";
    close;
    }
    if(countitem(.item_id) < .item_amount) {
    mes .npc$;
    mes "Você não " + getitemname(.item_id) + " suficiente. Volte aqui quando tiver " + .item_amount + "x - " + .item_amount + ".";
    close;
    }
    if(@sys == 1 && getitemslots(.@item) > 0) {
    mes .npc$; mes "O equipamento não pode haver nenhum slot.";
    close;
    }
    mes .npc$;
    mes "Okay, vamos lá!!!";
    next;
    callsub S_EnchantArmor,.@item,@rate;
    case 2: goto L_Cancel;
    }
    }
    mes .npc$;
    mes "Eu não posso encantar o ar...";
    close;
    S_EnchantArmor:
    set .npc$,"[^0000FF Mago Negro ^000000]";
    set @itemid,getarg(0);
    set @failrate,getarg(1);
    nude;
    set @enc_ran,rand(1,@failrate);
    delitem .item_id, .item_amount;
    delitem @itemid,1;
    //+5
    if (@enc_ran == 1) set @addpart,4823;
    else if (@enc_ran == 2) set @addpart,4820;
    else if (@enc_ran == 3) set @addpart,4821;
    else if (@enc_ran == 4) set @addpart,4822;
    else if (@enc_ran == 5) set @addpart,4823;
    else if (@enc_ran == 6) set @addpart,4843;
    //+4
    else if (@enc_ran == 7) set @addpart,4844;
    else if (@enc_ran == 8) set @addpart,4807;
    else if (@enc_ran == 9) set @addpart,4823;
    else if (@enc_ran == 10) set @addpart,4834;
    else if (@enc_ran == 11) set @addpart,4835;
    else if (@enc_ran == 12) set @addpart,4836;
    //+3
    else if (@enc_ran == 13) set @addpart,4837;
    else if (@enc_ran == 14) set @addpart,4732;
    else if (@enc_ran == 15) set @addpart,4733;
    else if (@enc_ran == 16) set @addpart,4734;
    else if (@enc_ran == 17) set @addpart,4735;
    else if (@enc_ran == 18) set @addpart,4812;
    //+2
    else if ((@enc_ran == 19) || (@enc_ran == 20)) set @addpart,4826;
    else if ((@enc_ran == 21) || (@enc_ran == 22)) set @addpart,4827;
    else if ((@enc_ran == 23) || (@enc_ran == 24)) set @addpart,4712;
    else if ((@enc_ran == 25) || (@enc_ran == 26)) set @addpart,4713;
    else if ((@enc_ran == 27) || (@enc_ran == 28)) set @addpart,4714;
    else if ((@enc_ran == 29) || (@enc_ran == 30)) set @addpart,4715;
    //+1
    else if ((@enc_ran == 31) || (@enc_ran == 32)) set @addpart,4700;
    else if ((@enc_ran == 33) || (@enc_ran == 34)) set @addpart,4701;
    else if ((@enc_ran == 35) || (@enc_ran == 36)) set @addpart,4702;
    else if ((@enc_ran == 37) || (@enc_ran == 38)) set @addpart,4703;
    else if ((@enc_ran == 39) || (@enc_ran == 40)) set @addpart,4796;
    else if ((@enc_ran == 41) || (@enc_ran == 42)) set @addpart,4801;
    else {
    specialeffect2 EF_SUI_EXPLOSION;
    mes .npc$;
    mes "Bem, isso é muito ruim.";
    mes "Não consegui encantar seu equipamento.";
    close;
    }
    specialeffect2 EF_REPAIRWEAPON;
    mes .npc$;
    mes "Parece que tudo ocorreu bem.";
    mes "Você recebeu um adicional de: "+getitemname(@addpart);
    mes "Tome seu item!";
    getitem2 @itemid, 1, 1, 0, 0, 0, 0, 0, @addpart;
    close;
    L_Cancel:
    mes .npc$;
    mes "Okay. Volte quando precisar de algo.";
    close;
    }

    Ele esta equipando visuais, tirando slot e nao esta refinando equipamento com cartas. Gostaria que refinasse apenas armadura e hat meio.

  3. Hi , como faço a instalação deste plugin ?

    Quote

     

    No hercules tem uma wiki explicando e pesquisei aqui no forum alguns dizem que rathena não é compativel com plugins algo assim.

  4. Galera, gostaria de desativar alguns eventos e deixar apenas os:

    Emperium Event

    Zoombie Survival

    Dice event

    pvp event

    Monster counting

    disquise event

    Devil square

    Deste script: 

    Quote

     

    Mas é um script muito complexo, nem imagino como fazer sem dar error.

  5. On 12/25/2018 at 11:23 PM, Israel said:

    Olá Amigos cara eu sei que pode ser muito simples mas até agora não achei nada sobre galera eu queria configura os global da minha  Devil Square para fica apenas no mapa o rathena quando o evento estar acontecendo todos do serve sabe quem estar no evento gostaria que ficasse só para os jogadores que estar no mapa do evento e não fique manda para todo o servidor.

    COMO ESTAR 

    https://imgur.com/a/8TYeyId

     

    COMO EU GOSTARIA QUE FICASSE 

    https://imgur.com/a/RyEfPCQ

     

    Obrigado ?

    Ola poderia compartilhar este script, estou atras de uma DS com este mapa mas não encontro.

  6. 17 hours ago, Tanlor said:

    Mude isso:

    
    prontera,164,168,3	script	Loja MVP#3	873,{ callfunc "qshop",2; }

    Pra isso:

    
    prontera,164,168,3	script	Loja MVP#3	873,{ callfunc "qshop,3"; }

     

    Sugestão minha:

    Se você quiser as duas lojas no mesmo NPC - já que os itens são os mesmos, você quer apenas que o jogador selecione a "moeda de troca" - mude isso:

    
    prontera,164,168,3	script	Loja MVP#3	873,{ callfunc "qshop",2; }

    Pra isso:

    
    prontera,164,168,3	script	Loja MVP#3	873,{ callfunc "qshop",2,3; }

    E renomeie as lojas pro nome da moeda de Troca. Por exemplo, se os dois itens forem "Moeda Gato" e "Moeda Cachorro", sugiro que renomeie o nome das lojas disso:

    
    setarray .Shops$[1],"Topo","Meio","Baixo";

    Pra isso:

    
    setarray .Shops$[1],"Topo","Trocar por: Moeda Gato","Trocar por: Moeda Cachorro";

     

    Assim, quando o jogador clicar no NPC "Loja MVP" em prontera,164.168 , vai aparecer um Select com as opções: Trocar por: Moeda Gato  e Trocar por: Moeda Cachorro, e o jogador vai se orientar melhor.

    Se consegui te ajudar, só dar um Upvote pra reforçar. ?

    Não funcionou:  https://prnt.sc/mey7sw

  7. Error compress grf:

    --------------          Message          --------------
    Generic failure : a task in the thread pool has failed to finish properly. The current operation will be cancelled.
    --------------        Stack trace        --------------
       em GrfToWpfBridge.Application.DefaultErrorHandler._reportAnyManagedExceptions(String message, Exception exception, ErrorLevel errorLevel)
       em GrfToWpfBridge.Application.DefaultErrorHandler.Handle(Exception exception, ErrorLevel errorLevel)
       em ErrorManager.ErrorHandler.HandleException(String message, Exception exception)
       em GRF.Threading.GrfThreadPool`1.Start(Action`1 progressUpdate, Func`1 isCancelling, Boolean enableCpuPerformance, Boolean startThreads)
       em GRF.Core.GrfWriter._newFilesCopy(Container grf, Int32 numberOfFilesToCopy, Stream grfStream, UInt32 currentOffset)
       em GRF.Core.GrfWriter.WriteData(Container grf, Stream originalStream, Stream grfStream, Container grfAdd)
       em GRF.Core.Container._internalSave(String fileName, Container mergeGrf, SavingMode mode)
       em GRF.Core.Container._save(String fileName, Container mergeGrf, SavingMode mode)
       em GRF.Core.Container.Save(String fileName, Container mergeGrf, SavingMode mode, SyncMode syncMode)
       em GRF.Core.GrfHolder.Save(String fileName, SyncMode syncMode)
       em GRFEditor.EditorMainWindow.<>c__DisplayClass7.<_menuItemSaveAs_Click>b__5()
       em GRF.Threading.GrfThread.<>c__DisplayClass4.<Start>b__3()
       em System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       em System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       em System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       em System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       em System.Threading.ThreadHelper.ThreadStart()
    
    --------------         Exception         --------------
    System.Exception: Generic failure : a task in the thread pool has failed to finish properly. The current operation will be cancelled. ---> System.OverflowException: Operação aritmética resultou em um estouro.
       em GRF.Threading.ThreadCompressSmallFiles._start()
       --- Fim do rastreamento de pilha de exceções internas ---
    --------------          Message          --------------
    Operação aritmética resultou em um estouro.
    --------------      Inner exception      --------------
    System.OverflowException: Operação aritmética resultou em um estouro.
       em GRF.Threading.ThreadCompressSmallFiles._start()

    Folder size 7gb

  8. 1 hour ago, Tanlor said:

    Não entendi. Você quer que um NPC tenha a opção pra abrir as duas lojas? É isso?

    Estou tentando fazer com que o script haja 3 npcs com a mesma função qshop, 1° quest shop, 2° loja de moeda evento id 674, 3° loja de fragmento mvp id 28370.

    Quero vender os mesmos itens nas 3 lojas porem cada uma exigindo itens diferentes. Da forma que esta o script que postei o npc de loja de moeda eventa que exigiria o id 674 para fazer tal item esta exigindo o mesmo item da loja mvp o id 28370, isso so acontece quando repito os itens a ser vendido nas mesmas lojas, ex:

    Quest:

    Alice, id x, itens requeridos x, x, x, x;

    Loja evento

    Alice, id x, itens requeridos 674, quantidade 40

    Loja mvp

    Alice, id x, itens requeridos 28370, quantidade requerida 40

    Eu modifiquei para isto porem in-game clico no npc loja evento esta exigindo o mesmo item da loja mvp para fazer Alice, sendo que os ids estao diferente para cada npc.

  9. Eu utilizo este script:

    //===== rAthena Script =======================================
    //= Euphy's Quest Shop
    //===== By: ==================================================
    //= Euphy
    //===== Current Version: =====================================
    //= 1.6b
    //===== Compatible With: =====================================
    //= rAthena SVN r16862+
    //===== Description: =========================================
    //= A dynamic quest shop based on Lunar's, with easier config.
    //= Includes support for multiple shops & cashpoints.
    //= Item Preview script by ToastOfDoom.
    //===== Additional Comments: =================================
    //= 1.0 Initial script.
    //= 1.2 Added category support.
    //= 1.3 More options and fixes.
    //= 1.4 Added debug settings.
    //= 1.5 Replaced categories with shop IDs.
    //= 1.6 Added support for purchasing stackables.
    //= 1.6a Added support for previewing costumes and robes.
    //= 1.6b Added 'disable_items' command.
    //============================================================
    
    // Shop NPCs -- supplying no argument displays entire menu.
    //	callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}};
    //============================================================
    prontera,164,171,3	script	Quest Shop#1	998,{ callfunc "qshop",1; }
    prontera,0,0,3	script	Loja Evento#2	494,{ callfunc "qshop",2; }
    prontera,164,168,3	script	Loja MVP#3	873,{ callfunc "qshop",2; }
    
    
    // Script Core
    //============================================================
    -	script	quest_shop	-1,{ 
    function Add; function Chk; function Slot; function A_An;
    OnInit:
    
    
    // -----------------------------------------------------------
    //  Basic shop settings.
    // -----------------------------------------------------------
    
    	set .Announce,1;	// Announce quest completion? (1: yes / 0: no)
    	set .ShowSlot,1;	// Show item slots? (2: all equipment / 1: if slots > 0 / 0: never)
    	set .ShowID,1;  	// Show item IDs? (1: yes / 0: no)
    	set .ShowZeny,1;	// Show Zeny cost, if any? (1: yes / 0: no)
    	set .MaxStack,100;	// Max number of quest items purchased at one time.
    
    // -----------------------------------------------------------
    //  Points variable -- optional quest requirement.
    //	setarray .Points$[0],"<variable name>","<display name>";
    // -----------------------------------------------------------
    
    	setarray .Points$[0],"#CASHPOINTS","Cash Points";
    
    // -----------------------------------------------------------
    //  Shop IDs -- to add shops, copy dummy data at bottom of file.
    //	setarray .Shops$[1],"<Shop 1>","<Shop 2>"{,...};
    // -----------------------------------------------------------
    
    	setarray .Shops$[1],"Topo","Meio","Baixo";
    
    // -----------------------------------------------------------
    //  Quest items -- do NOT use a reward item more than once!
    //	Add(<shop ID>,<reward ID>,<reward amount>,
    //	    <Zeny cost>,<point cost>,
    //	    <required item ID>,<required item amount>{,...});
    // -----------------------------------------------------------
    
    
    	//quest
    	Add(1,5137,1,0,0,4523,10,7047,50,5141,1,1060,100);
    	Add(1,5170,1,0,0,5172,1,7063,100,982,1);
    	Add(1,5360,1,0,0,919,100,1096,100,7171,50,2213,1);
    	Add(1,5480,1,0,0,2233,1,916,100,983,10,982,10,976,10,975,10,978,10);
    	Add(1,18550,1,0,0,5170,1,7297,10,7291,10,7292,10);
    	Add(1,18561,1,0,0,5170,1,7297,5,7291,5,7292,5);
    	Add(1,5376,1,0,0,2255,1,983,10,7511,35,7340,35,923,25,1039,25);
    	Add(1,5361,1,0,0,5096,1,2218,1,911,10,507,75,7216,75,7563,150);
    	Add(1,5325,1,0,0,2263,5,2296,5,719,100,640,125);
    	Add(1,5463,1,0,0,975,5,976,5,978,5,979,5,981,5,983,5,982,5,980,5,1045,125);
    	
    	
    	//EVENTO
    	Add(2,2957,1,30,0,674,30);
    	Add(2,2958,1,30,0,674,30);
    	Add(2,2967,1,25,0,674,25);
    	Add(2,2969,1,25,0,674,25);
    	Add(2,5377,1,20,0,674,20);
    	Add(2,2985,1,35,0,674,35);
    	Add(2,2936,1,40,0,674,40);
    	Add(2,15052,1,30,0,674,30);
    	Add(2,2573,1,30,0,674,30);
    	Add(2,2589,1,45,0,674,45);
    	Add(2,18918,1,30,0,674,30);
    	Add(2,18859,1,30,0,674,30);
    	Add(2,18844,1,30,0,674,30);
    	Add(2,5495,1,30,0,674,30);
    	Add(2,2481,1,25,0,674,25);
    	Add(2,18522,1,38,0,674,38);
    	Add(2,18543,1,25,0,674,25);
    	Add(2,18892,1,30,0,674,30);
    	Add(2,18541,1,30,0,674,30);
    	Add(2,5374,1,35,0,674,35);
    	Add(2,18574,1,25,0,674,25);
    	Add(2,2177,1,23,0,674,23);
    	Add(2,2189,1,40,0,674,40);
    	Add(2,18910,1,27,0,674,27);
    	Add(2,18908,1,27,0,674,27);
    	Add(2,18507,1,40,0,674,40);
    	Add(2,19156,1,35,0,674,35);
    	Add(2,2782,1,10,0,674,10);
    	Add(2,20718,1,10,0,674,5);
    	
    	//MVP
    	Add(3,2957,1,30,0,28370,30);
    	Add(3,2958,1,30,0,28370,30);
    	Add(3,2967,1,25,0,28370,25);
    	Add(3,2969,1,25,0,28370,25);
    	Add(3,5377,1,20,0,28370,20);
    	Add(3,2985,1,35,0,28370,35);
    	Add(3,2936,1,40,0,28370,40);
    	Add(3,15052,1,30,0,28370,30);
    	Add(3,2573,1,30,0,28370,30);
    	Add(3,2589,1,45,0,28370,45);
    	Add(3,18918,1,30,0,28370,30);
    	Add(3,18859,1,30,0,28370,30);
    	Add(3,18844,1,30,0,28370,30);
    	Add(3,5495,1,30,0,28370,30);
    	Add(3,2481,1,25,0,28370,25);
    	Add(3,18522,1,38,0,28370,38);
    	Add(3,18543,1,25,0,28370,25);
    	Add(3,18892,1,30,0,28370,30);
    	Add(3,18541,1,30,0,28370,30);
    	Add(3,5374,1,35,0,28370,35);
    	Add(3,18574,1,25,0,28370,25);
    	Add(3,2177,1,23,0,28370,23);
    	Add(3,2189,1,40,0,28370,40);
    	Add(3,18910,1,27,0,28370,27);
    	Add(3,18908,1,27,0,28370,27);
    	Add(3,18507,1,40,0,28370,40);
    	Add(3,19156,1,35,0,28370,35);
    	Add(3,2782,1,10,0,28370,10);
    	Add(3,20718,1,10,0,28370,5);
    	
    	
    // -----------------------------------------------------------
    
    	freeloop(0);
    	set .menu$,"";
    	for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) {
    		set .menu$, .menu$+.Shops$[.@i]+":";
    		npcshopdelitem "qshop"+.@i,909;
    	}
    	end;
    
    OnMenu:
    	set .@size, getarraysize(@i);
    	if (!.@size) set .@i, select(.menu$);
    	else if (.@size == 1) set .@i, @i[0];
    	else {
    		for(set .@j,0; .@j<.@size; set .@j,.@j+1)
    			set .@menu$, .@menu$+.Shops$[@i[.@j]]+":";
    		set .@i, @i[select(.@menu$)-1];
    	}
    	deletearray @i[0],getarraysize(@i);
    	if (.Shops$[.@i] == "") {
    		message strcharinfo(0),"An error has occurred.";
    		end;
    	}
    	dispbottom "Select one item at a time.";
    	callshop "qshop"+.@i,1;
    	npcshopattach "qshop"+.@i;
    	end;
    
    OnBuyItem:
    	// .@q[] : RewardID, BoughtAmt, RewardAmt, BaseAmt, ReqZeny, ReqPts, { ReqItem, ReqAmt, ... }
    	setarray .@q[0],@bought_nameid[0],((@bought_quantity[0] > .MaxStack)?.MaxStack:@bought_quantity[0]);
    	copyarray .@q[3],getd(".q_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+.@q[0]));
    	set .@q[2],.@q[1]*.@q[3];
    	if (!.@q[2] || .@q[2] > 30000) {
    		message strcharinfo(0),"You can't purchase that many "+getitemname(.@q[0])+".";
    		end;
    	}
    	mes "[Quest Shop]";
    	mes "Reward: ^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"")+Slot(.@q[0])+"^000000";
    	mes "Requirements:";
    	disable_items;
    	if (.@q[4]) mes " > "+Chk(Zeny,.@q[4]*.@q[1])+(.@q[4]*.@q[1])+" Zeny^000000";
    	if (.@q[5]) mes " > "+Chk(getd(.Points$[0]),.@q[5]*.@q[1])+(.@q[5]*.@q[1])+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+(.@q[5]*.@q[1])+")^000000";
    	if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
    		mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000";
    	next;
    	setarray @qe[1], getiteminfo(.@q[0],5), getiteminfo(.@q[0],11);
    	if (@qe[2] > 0 && ((@qe[1] & 1) || (@qe[1] & 256) || (@qe[1] & 512) || (@qe[1] & 1024) || (@qe[1] & 2048) || (@qe[1] & 4096) || (@qe[1] & 4) || (@qe[1] & 8192)))
    		set .@preview,1;
    	addtimer 1000, strnpcinfo(0)+"::OnEnd";
    	while(1) {
    		switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[7])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) {
    		case 1:
    			if (@qe[0]) { 
    				mes "[Quest Shop]";
    				mes "You're missing one or more quest requirements.";
    				close;
    			}
    			if (!checkweight(.@q[0],.@q[2])) {
    				mes "[Quest Shop]";
    				mes "^FF0000You need "+(((.@q[2]*getiteminfo(.@q[0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000";
    				close;
    			}
    			if (.@q[4]) set Zeny, Zeny-(.@q[4]*.@q[1]);
    			if (.@q[5]) setd .Points$[0], getd(.Points$[0])-(.@q[5]*.@q[1]);
    			if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
    				delitem .@q[.@i],.@q[.@i+1]*.@q[1];
    			getitem .@q[0],.@q[2];
    			if (.Announce) announce strcharinfo(0)+" has created "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):A_An(getitemname(.@q[0])))+"!",0;
    			specialeffect2 EF_FLOWERLEAF;
    			close;
    		case 2:
    			setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), getlook(LOOK_ROBE), 1;
    			if ((@qe[1] & 1) || (@qe[1] & 4096)) changelook LOOK_HEAD_BOTTOM, @qe[2];
    			else if ((@qe[1] & 256) || (@qe[1] & 1024)) changelook LOOK_HEAD_TOP, @qe[2];
    			else if ((@qe[1] & 512) || (@qe[1] & 2048)) changelook LOOK_HEAD_MID, @qe[2];
    			else if ((@qe[1] & 4) || (@qe[1] & 8192)) changelook LOOK_ROBE, @qe[2];
    			break;
    		case 3:
    			close;
    		}
    	}
    
    OnEnd:
    	if (@qe[7]) {
    		changelook LOOK_HEAD_BOTTOM, @qe[3];
    		changelook LOOK_HEAD_TOP, @qe[4];
    		changelook LOOK_HEAD_MID, @qe[5];
    		changelook LOOK_ROBE, @qe[6];
    	}
    	deletearray @qe[0],8;
    	end;
    
    function Add {
    	if (getitemname(getarg(1)) == "null") {
    		debugmes "Quest reward #"+getarg(1)+" invalid (skipped).";
    		return;
    	}
    	setarray .@j[0],getarg(2),getarg(3),getarg(4);
    	for(set .@i,5; .@i<getargcount(); set .@i,.@i+2) {
    		if (getitemname(getarg(.@i)) == "null") {
    			debugmes "Quest requirement #"+getarg(.@i)+" invalid (skipped).";
    			return;
    		} else
    			setarray .@j[.@i-2],getarg(.@i),getarg(.@i+1);
    	}
    	copyarray getd(".q_"+getarg(1)+"[0]"),.@j[0],getarraysize(.@j);
    	npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0);
    	return;
    }
    
    function Chk {
    	if (getarg(0) < getarg(1)) {
    		set @qe[0],1;
    		return "^FF0000";
    	} else
    		return "^00FF00";
    }
    
    function Slot {
    	set .@s$,getitemname(getarg(0));
    	switch(.ShowSlot) {
    		case 1: if (!getitemslots(getarg(0))) return .@s$;
    		case 2: if (getiteminfo(getarg(0),2) == 4 || getiteminfo(getarg(0),2) == 5) return .@s$+" ["+getitemslots(getarg(0))+"]";
    		default: return .@s$;
    	}
    }
    
    function A_An {
    	setarray .@A$[0],"a","e","i","o","u";
    	set .@B$, "_"+getarg(0);
    	for(set .@i,0; .@i<5; set .@i,.@i+1)
    		if (compare(.@B$,"_"+.@A$[.@i])) return "an "+getarg(0);
    	return "a "+getarg(0);
    }
    }
    
    function	script	qshop	{
    	deletearray @i[0],getarraysize(@i);
    	for(set .@i,0; .@i<getargcount(); set .@i,.@i+1)
    		set @i[.@i],getarg(.@i);
    	doevent "quest_shop::OnMenu";
    	end;
    }
    // Dummy shop data -- copy as needed.
    //============================================================
    -	shop	qshop1	-1,909:-1
    -	shop	qshop2	-1,909:-1
    -	shop	qshop3	-1,909:-1

    Quero que o npc: Loja Evento#2 exija id 674, npc: Loja MVP#3 exije id 28370 para equipamentos iguais.

    Ou algum script que posso substituir um dos dois npc.

    Translate english:

    I use this

    <SCRIPT>

     

    require another item for different equipament

    npc Loja Evento#2 require  id 674,  npc Loja MVP#3 require  id 28370 for same equipaments.

    Or some script replace 

     

     

  10. Estou usando este script para quests:

    //===== rAthena Script =======================================
    //= Euphy's Quest Shop
    //===== By: ==================================================
    //= Euphy
    //===== Current Version: =====================================
    //= 1.6b
    //===== Compatible With: =====================================
    //= rAthena SVN r16862+
    //===== Description: =========================================
    //= A dynamic quest shop based on Lunar's, with easier config.
    //= Includes support for multiple shops & cashpoints.
    //= Item Preview script by ToastOfDoom.
    //===== Additional Comments: =================================
    //= 1.0 Initial script.
    //= 1.2 Added category support.
    //= 1.3 More options and fixes.
    //= 1.4 Added debug settings.
    //= 1.5 Replaced categories with shop IDs.
    //= 1.6 Added support for purchasing stackables.
    //= 1.6a Added support for previewing costumes and robes.
    //= 1.6b Added 'disable_items' command.
    //============================================================
    
    // Shop NPCs -- supplying no argument displays entire menu.
    //	callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}};
    //============================================================
    prontera,164,171,3	script	Quest Shop#1	998,{ callfunc "qshop"; }
    
    
    // Script Core
    //============================================================
    -	script	quest_shop	-1,{ 
    function Add; function Chk; function Slot; function A_An;
    OnInit:
    	freeloop(1);
    
    // -----------------------------------------------------------
    //  Basic shop settings.
    // -----------------------------------------------------------
    
    	set .Announce,1;	// Announce quest completion? (1: yes / 0: no)
    	set .ShowSlot,1;	// Show item slots? (2: all equipment / 1: if slots > 0 / 0: never)
    	set .ShowID,1;  	// Show item IDs? (1: yes / 0: no)
    	set .ShowZeny,1;	// Show Zeny cost, if any? (1: yes / 0: no)
    	set .MaxStack,100;	// Max number of quest items purchased at one time.
    
    // -----------------------------------------------------------
    //  Points variable -- optional quest requirement.
    //	setarray .Points$[0],"<variable name>","<display name>";
    // -----------------------------------------------------------
    
    	setarray .Points$[0],"#CASHPOINTS","Cash Points";
    
    // -----------------------------------------------------------
    //  Shop IDs -- to add shops, copy dummy data at bottom of file.
    //	setarray .Shops$[1],"<Shop 1>","<Shop 2>"{,...};
    // -----------------------------------------------------------
    
    	setarray .Shops$[1],"Topo","Meio","Baixo";
    
    // -----------------------------------------------------------
    //  Quest items -- do NOT use a reward item more than once!
    //	Add(<shop ID>,<reward ID>,<reward amount>,
    //	    <Zeny cost>,<point cost>,
    //	    <required item ID>,<required item amount>{,...});
    // -----------------------------------------------------------
    
    
    	
    	Add(1,5137,1,0,0,4523,10,7047,50,5141,1,1060,100);
    	Add(1,5170,1,0,0,5172,1,7063,100,982,1);
    	Add(1,5360,1,0,0,919,100,1096,100,7171,50,2213,1);
    	Add(1,5480,1,0,0,2233,1,916,100,983,10,982,10,976,10,975,10,978,10);
    	Add(1,18550,1,0,0,5170,1,7297,10,7291,10,7292,10);
    	Add(1,18561,1,0,0,5170,1,7297,5,7291,5,7292,5);
    	Add(1,5376,1,0,0,2255,1,983,10,7511,35,7340,35,923,25,1039,25);
    	Add(2,5361,1,0,0,5096,1,2218,1,911,10,507,75,7216,75,7563,150);
    	Add(2,5325,1,0,0,2263,5,2296,5,719,100,640,125);
    	Add(3,5463,1,0,0,975,5,976,5,978,5,979,5,981,5,983,5,982,5,980,5,1045,125);
    
    	
    
    // -----------------------------------------------------------
    
    	freeloop(0);
    	set .menu$,"";
    	for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) {
    		set .menu$, .menu$+.Shops$[.@i]+":";
    		npcshopdelitem "qshop"+.@i,909;
    	}
    	end;
    
    OnMenu:
    	set .@size, getarraysize(@i);
    	if (!.@size) set .@i, select(.menu$);
    	else if (.@size == 1) set .@i, @i[0];
    	else {
    		for(set .@j,0; .@j<.@size; set .@j,.@j+1)
    			set .@menu$, .@menu$+.Shops$[@i[.@j]]+":";
    		set .@i, @i[select(.@menu$)-1];
    	}
    	deletearray @i[0],getarraysize(@i);
    	if (.Shops$[.@i] == "") {
    		message strcharinfo(0),"An error has occurred.";
    		end;
    	}
    	dispbottom "Select one item at a time.";
    	callshop "qshop"+.@i,1;
    	npcshopattach "qshop"+.@i;
    	end;
    
    OnBuyItem:
    	// .@q[] : RewardID, BoughtAmt, RewardAmt, BaseAmt, ReqZeny, ReqPts, { ReqItem, ReqAmt, ... }
    	setarray .@q[0],@bought_nameid[0],((@bought_quantity[0] > .MaxStack)?.MaxStack:@bought_quantity[0]);
    	copyarray .@q[3],getd(".q_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+.@q[0]));
    	set .@q[2],.@q[1]*.@q[3];
    	if (!.@q[2] || .@q[2] > 30000) {
    		message strcharinfo(0),"You can't purchase that many "+getitemname(.@q[0])+".";
    		end;
    	}
    	mes "[Quest Shop]";
    	mes "Reward: ^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"")+Slot(.@q[0])+"^000000";
    	mes "Requirements:";
    	disable_items;
    	if (.@q[4]) mes " > "+Chk(Zeny,.@q[4]*.@q[1])+(.@q[4]*.@q[1])+" Zeny^000000";
    	if (.@q[5]) mes " > "+Chk(getd(.Points$[0]),.@q[5]*.@q[1])+(.@q[5]*.@q[1])+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+(.@q[5]*.@q[1])+")^000000";
    	if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
    		mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000";
    	next;
    	setarray @qe[1], getiteminfo(.@q[0],5), getiteminfo(.@q[0],11);
    	if (@qe[2] > 0 && ((@qe[1] & 1) || (@qe[1] & 256) || (@qe[1] & 512) || (@qe[1] & 1024) || (@qe[1] & 2048) || (@qe[1] & 4096) || (@qe[1] & 4) || (@qe[1] & 8192)))
    		set .@preview,1;
    	addtimer 1000, strnpcinfo(0)+"::OnEnd";
    	while(1) {
    		switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[7])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) {
    		case 1:
    			if (@qe[0]) { 
    				mes "[Quest Shop]";
    				mes "You're missing one or more quest requirements.";
    				close;
    			}
    			if (!checkweight(.@q[0],.@q[2])) {
    				mes "[Quest Shop]";
    				mes "^FF0000You need "+(((.@q[2]*getiteminfo(.@q[0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000";
    				close;
    			}
    			if (.@q[4]) set Zeny, Zeny-(.@q[4]*.@q[1]);
    			if (.@q[5]) setd .Points$[0], getd(.Points$[0])-(.@q[5]*.@q[1]);
    			if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
    				delitem .@q[.@i],.@q[.@i+1]*.@q[1];
    			getitem .@q[0],.@q[2];
    			if (.Announce) announce strcharinfo(0)+" has created "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):A_An(getitemname(.@q[0])))+"!",0;
    			specialeffect2 EF_FLOWERLEAF;
    			close;
    		case 2:
    			setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), getlook(LOOK_ROBE), 1;
    			if ((@qe[1] & 1) || (@qe[1] & 4096)) changelook LOOK_HEAD_BOTTOM, @qe[2];
    			else if ((@qe[1] & 256) || (@qe[1] & 1024)) changelook LOOK_HEAD_TOP, @qe[2];
    			else if ((@qe[1] & 512) || (@qe[1] & 2048)) changelook LOOK_HEAD_MID, @qe[2];
    			else if ((@qe[1] & 4) || (@qe[1] & 8192)) changelook LOOK_ROBE, @qe[2];
    			break;
    		case 3:
    			close;
    		}
    	}
    
    OnEnd:
    	if (@qe[7]) {
    		changelook LOOK_HEAD_BOTTOM, @qe[3];
    		changelook LOOK_HEAD_TOP, @qe[4];
    		changelook LOOK_HEAD_MID, @qe[5];
    		changelook LOOK_ROBE, @qe[6];
    	}
    	deletearray @qe[0],8;
    	end;
    
    function Add {
    	if (getitemname(getarg(1)) == "null") {
    		debugmes "Quest reward #"+getarg(1)+" invalid (skipped).";
    		return;
    	}
    	setarray .@j[0],getarg(2),getarg(3),getarg(4);
    	for(set .@i,5; .@i<getargcount(); set .@i,.@i+2) {
    		if (getitemname(getarg(.@i)) == "null") {
    			debugmes "Quest requirement #"+getarg(.@i)+" invalid (skipped).";
    			return;
    		} else
    			setarray .@j[.@i-2],getarg(.@i),getarg(.@i+1);
    	}
    	copyarray getd(".q_"+getarg(1)+"[0]"),.@j[0],getarraysize(.@j);
    	npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0);
    	return;
    }
    
    function Chk {
    	if (getarg(0) < getarg(1)) {
    		set @qe[0],1;
    		return "^FF0000";
    	} else
    		return "^00FF00";
    }
    
    function Slot {
    	set .@s$,getitemname(getarg(0));
    	switch(.ShowSlot) {
    		case 1: if (!getitemslots(getarg(0))) return .@s$;
    		case 2: if (getiteminfo(getarg(0),2) == 4 || getiteminfo(getarg(0),2) == 5) return .@s$+" ["+getitemslots(getarg(0))+"]";
    		default: return .@s$;
    	}
    }
    
    function A_An {
    	setarray .@A$[0],"a","e","i","o","u";
    	set .@B$, "_"+getarg(0);
    	for(set .@i,0; .@i<5; set .@i,.@i+1)
    		if (compare(.@B$,"_"+.@A$[.@i])) return "an "+getarg(0);
    	return "a "+getarg(0);
    }
    }
    
    function	script	qshop	{
    	deletearray @i[0],getarraysize(@i);
    	for(set .@i,0; .@i<getargcount(); set .@i,.@i+1)
    		set @i[.@i],getarg(.@i);
    	doevent "quest_shop::OnMenu";
    	end;
    }
    
    
    // Dummy shop data -- copy as needed.
    //============================================================
    -	shop	qshop1	-1,909:-1
    -	shop	qshop2	-1,909:-1
    -	shop	qshop3	-1,909:-1
    -	shop	qshop4	-1,909:-1
    -	shop	qshop5	-1,909:-1

    Funciona perfeitamente.

    Porem estou tentando usar o mesmo script para outros npc, quando upo essa script com nome de npc diferente os dois aparece os mesmos items ja alterei o 

    // Dummy shop data -- copy as needed.
    //============================================================
    -	shop	qshop1	-1,909:-1
    -	shop	qshop2	-1,909:-1
    -	shop	qshop3	-1,909:-1
    -	shop	qshop4	-1,909:-1
    -	shop	qshop5	-1,909:-1

    Para

    // Dummy shop data -- copy as needed.
    //============================================================
    
    -	shop	qshop1-2	-1,909:-1
    -	shop	qshop2-3	-1,909:-1
    -	shop	qshop3-4	-1,909:-1
    -	shop	qshop4-5	-1,909:-1
    -	shop	qshop5-6	-1,909:-1

    -	script	quest_shop	-1,{

    Para

    -    script    1_-1_0_0    -1,{

    Mas continua com o mesmo problema, esta funcionando 2 npcs como fosse apenas 1.

  11.  

    7 minutes ago, spawnn said:

    Apareceu o seguinte erro:

    
    [Warning]: Unexpected type for argument 1. Expected label, got C_NAME
    [Debug]: Data: variable name='extender' index=0
    [Debug]: Function: goto
    [Debug]: Source (NPC): FAKE_NPC (invisible/not on a map)
    [Error]: buildin_goto: Not a label
    [Debug]: Data: variable name='extender' index=0
    [Debug]: Source (NPC): FAKE_NPC (invisible/not on a map)

     

    Troquei 

    -	script	GerenciadorVip	FAKE_NPC,{

    Por:

    -	script	GerenciadorVip	-1,{

    Aparece o balão npc que foi inserido porém não insere e não apresenta nenhum erro no emulador.

  12. 20 hours ago, luizragna said:

    No meu servidor rathena eu atualizei o script, testa ele

    
    //==========================================================================================================================
    //				          Função que adiciona 15 dias Vip ao usuário
    //==========================================================================================================================
    
    function	script	vip1	{
    
    set $nivelVip, 1;
    set $diasVip, 1;
    set $verificaVip, 1;
    
    	//if (getgmlevel() == 1) goto extender;
    	if (getgmlevel() > 0)
    	{
    		getitem 30015,1;
    		mes "[Sistema VIP]";
    		mes "Você já é um Jogador VIP.";
    		mes " ";
    		mes "^696969(Ticket VIP devolvido)^000000";
    		close;
    	}
    	
    	query_sql "UPDATE `login` SET `group_id` = "+$nivelVip+", `dt_vip` = DATE_ADD(CURDATE(),INTERVAL "+$diasVip+" DAY) WHERE `group_id` = 0 AND `account_id` = "+getcharid(3);
    
    	dispbottom "^1874CDVip inserido com sucesso!^000000 Relogue seu personagem para ativa-lo.";
    	mes "Vip inserido com sucesso! Relogue seu personagem para ativa-lo.";
    	mes "Obrigado por ajudar o nosso Servidor!";
    	sleep2 2000;
    	close;
    	end;
    
    estender:
    
    	query_sql "UPDATE `login` SET `group_id` = "+$nivelVip+", `dt_vip` = DATE_ADD(`dt_vip`,INTERVAL "+$diasVip+" DAY) WHERE `group_id` = "+$nivelVip+" AND `account_id` = "+getcharid(3);
    
    	dispbottom "Vip estendido por mais "+$diasVip+" dias! Relogue seu personagem para ativa-lo.";
    	end;
    
    }
    //==========================================================================================================================
    //				          Função que adiciona 15 dias Vip ao usuário
    //==========================================================================================================================
    
    function	script	vip15	{
    
    set $nivelVip, 1;
    set $diasVip, 15;
    set $verificaVip, 1;
    
    	//if (getgmlevel() == 1) goto extender;
    	if (getgmlevel() > 0)
    	{
    		getitem 30002,1;
    		mes "[Sistema VIP]";
    		mes "Você já é um Jogador VIP.";
    		mes " ";
    		mes "^696969(Ticket VIP devolvido)^000000";
    		close;
    	}
    
    	query_sql "UPDATE `login` SET `group_id` = "+$nivelVip+", `dt_vip` = DATE_ADD(CURDATE(),INTERVAL "+$diasVip+" DAY) WHERE `group_id` = 0 AND `account_id` = "+getcharid(3);
    
    	dispbottom "^1874CDVip inserido com sucesso!^000000 Relogue seu personagem para ativa-lo.";
    	mes "Vip inserido com sucesso! Relogue seu personagem para ativa-lo.";
    	mes "Obrigado por ajudar o nosso Servidor!";
    	sleep2 2000;
    	close;
    	end;
    
    estender:
    
    	query_sql "UPDATE `login` SET `group_id` = "+$nivelVip+", `dt_vip` = DATE_ADD(`dt_vip`,INTERVAL "+$diasVip+" DAY) WHERE `group_id` = "+$nivelVip+" AND `account_id` = "+getcharid(3);
    
    	dispbottom "Vip estendido por mais "+$diasVip+" dias! Relogue seu personagem para ativa-lo.";
    	end;
    
    }
    
    //==========================================================================================================================
    //				          Função que adiciona 30 dias Vip ao usuário
    //==========================================================================================================================
    
    function	script	vip30	{
    
    set $nivelVip, 1;
    set $diasVip, 30;
    set $verificaVip, 1;
    
    	//if (getgmlevel() == 1) goto extender;
    	if (getgmlevel() > 0)
    	{
    		getitem 30003,1;
    		mes "[Sistema VIP]";
    		mes "Você já é um Jogador VIP.";
    		mes " ";
    		mes "^696969(Ticket VIP devolvido)^000000";
    		close;
    	}
    
    	query_sql "UPDATE `login` SET `group_id` = "+$nivelVip+", `dt_vip` = DATE_ADD(CURDATE(),INTERVAL "+$diasVip+" DAY) WHERE `group_id` = 0 AND `account_id` = "+getcharid(3);
    
    	dispbottom "^1874CDVip inserido com sucesso!^000000 Relogue seu personagem para ativa-lo.";
    	mes "Vip inserido com sucesso! Relogue seu personagem para ativa-lo.";
    	mes "Obrigado por ajudar o nosso Servidor!";
    	sleep2 2000;
    	close;
    	end;
    
    estender:
    
    	query_sql "UPDATE `login` SET `group_id` = "+$nivelVip+", `dt_vip` = DATE_ADD(`dt_vip`,INTERVAL "+$diasVip+" DAY) WHERE `group_id` = "+$nivelVip+" AND `account_id` = "+getcharid(3);
    
    	dispbottom "Vip estendido por mais "+$diasVip+" dias! Relogue seu personagem para ativa-lo.";
    	end;
    
    }
    
    //==========================================================================================================================
    //			    Função que controla a data de término da conta vip e anúncios ao logar
    //==========================================================================================================================
    
    -	script	GerenciadorVip	FAKE_NPC,{
    
    		OnPCLoginEvent:	
    
    set @site$, "www.celestero.tk";
    
    		query_sql "UPDATE `login` SET `group_id`= 0 WHERE `group_id` = "+$nivelVip+" AND (`dt_vip` IS NULL OR `dt_vip` < CURDATE())";
    		query_sql "SELECT (`dt_vip` IS NULL OR `dt_vip` < CURDATE()) FROM `login` WHERE `account_id` = "+getcharid(3), @verificaVip;
    
    		if (@verificaVip) {
    
    		dispbottom "Torne-se um(a) jogador(a) Vip e tenha benefícios esclusivos!";
    		dispbottom "Acesse "+@site$+" e saiba mais!";
    		end;
    
    }
    
    	query_sql "SELECT DATE_FORMAT(`dt_vip`, '%d/%m/%Y') FROM `login` WHERE `account_id` = "+getcharid(3), @dataVencimento$;
    
    	dispbottom "Sua conta Vip é válida até o dia "+@dataVencimento$+"";
    	end;
    
    }

    As funções são: vip1 , vip15 vip 30

    Apareceu o seguinte erro:

    [Warning]: Unexpected type for argument 1. Expected label, got C_NAME
    [Debug]: Data: variable name='extender' index=0
    [Debug]: Function: goto
    [Debug]: Source (NPC): FAKE_NPC (invisible/not on a map)
    [Error]: buildin_goto: Not a label
    [Debug]: Data: variable name='extender' index=0
    [Debug]: Source (NPC): FAKE_NPC (invisible/not on a map)

     

  13. Fala galera !

    Estou usando o seguinte script que peguei no fórum Brathena.

     

    function	script	vip	{
    
    set $nivelVip, 1;
    set $diasVip, 1;
    set $verificaVip, 1;
    
    if (getgroupid() == 1) goto extender;
    
    query_sql "UPDATE `login` SET `group_id` = "+$nivelVip+", `dt_vip` = DATE_ADD(CURDATE(),INTERVAL "+$diasVip+" DAY) WHERE `group_id` = 0 AND `account_id` = "+getcharid(3);
    
    dispbottom "Vip inserido com sucesso! Relogue seu personagem para ativá-lo.";
    end;
    
    estender:
    
    query_sql "UPDATE `login` SET `group_id` = "+$nivelVip+", `dt_vip` = DATE_ADD(`dt_vip`,INTERVAL "+$diasVip+" DAY) WHERE `group_id` = "+$nivelVip+" AND `account_id` = "+getcharid(3);
    
    dispbottom "Vip estendido por mais "+$diasVip+" dias! Relogue seu personagem para ativá-lo.";
    end;
    
    }
    
    //==========================================================================================================================
    // Função que adiciona 7 dias Vip ao usuário
    //==========================================================================================================================
    
    function	script	vip7	{
    
    set $nivelVip, 1;
    set $diasVip, 7;
    set $verificaVip, 1;
    
    if (getgroupid() == 1) goto extender;
    
    query_sql "UPDATE `login` SET `group_id` = "+$nivelVip+", `dt_vip` = DATE_ADD(CURDATE(),INTERVAL "+$diasVip+" DAY) WHERE `group_id` = 0 AND `account_id` = "+getcharid(3);
    
    dispbottom "Vip inserido com sucesso! Relogue seu personagem para ativá-lo.";
    end;
    
    estender:
    
    query_sql "UPDATE `login` SET `group_id` = "+$nivelVip+", `dt_vip` = DATE_ADD(`dt_vip`,INTERVAL "+$diasVip+" DAY) WHERE `group_id` = "+$nivelVip+" AND `account_id` = "+getcharid(3);
    
    dispbottom "Vip estendido por mais "+$diasVip+" dias! Relogue seu personagem para ativá-lo.";
    end;
    
    }
    
    //==========================================================================================================================
    // Função que adiciona 15 dias Vip ao usuário
    //==========================================================================================================================
    
    function	script	vip30	{
    
    set $nivelVip, 1;
    set $diasVip, 30;
    set $verificaVip, 1;
    
    if (getgroupid() == 1) goto extender;
    
    query_sql "UPDATE `login` SET `group_id` = "+$nivelVip+", `dt_vip` = DATE_ADD(CURDATE(),INTERVAL "+$diasVip+" DAY) WHERE `group_id` = 0 AND `account_id` = "+getcharid(3);
    
    dispbottom "Vip inserido com sucesso! Relogue seu personagem para ativá-lo.";
    end;
    
    estender:
    
    query_sql "UPDATE `login` SET `group_id` = "+$nivelVip+", `dt_vip` = DATE_ADD(`dt_vip`,INTERVAL "+$diasVip+" DAY) WHERE `group_id` = "+$nivelVip+" AND `account_id` = "+getcharid(3);
    
    dispbottom "Vip estendido por mais "+$diasVip+" dias! Relogue seu personagem para ativá-lo.";
    end;
    
    }
    
    //==========================================================================================================================
    // Função que controla a data de término da conta vip e anúncios ao logar
    //==========================================================================================================================
    
    -	script	GerenciadorVip	FAKE_NPC,{
    
    OnPCLoginEvent:
    
    set @site$, "www.nwpro.com";
    
    query_sql "UPDATE `login` SET `group_id`= 0 WHERE `group_id` = "+$nivelVip+" AND (`dt_vip` IS NULL OR `dt_vip` < CURDATE())";
    query_sql "SELECT (`dt_vip` IS NULL OR `dt_vip` < CURDATE()) FROM `login` WHERE `account_id` = "+getcharid(3), @verificaVip;
    
    if (@verificaVip) {
    
    dispbottom "Torne-se um(a) jogador(a) Vip e tenha benefícios esclusivos!";
    dispbottom "Acesse "+@site$+" e saiba mais!";
    end;
    
    }
    
    query_sql "SELECT DATE_FORMAT(`dt_vip`, '%d/%m/%Y') FROM `login` WHERE `account_id` = "+getcharid(3), @dataVencimento$;
    
    dispbottom "Sua conta Vip é válida até o dia "+@dataVencimento$+"";
    end;
    
    }

    SQL:

    ALTER TABLE `login` ADD `dt_vip` INT(4) NOT NULL DEFAULT '0';

    Item_db:

    7711, 'Ticket_VIP[1]', 'Ticket VIP[1]', 0, 10000, NULL, 10, NULL, NULL, NULL, NULL, 4294967295, 7, 2, NULL, NULL, NULL, NULL, NULL, 'callfunc "vip";', NULL, NULL);
    
    7712, 'Ticket_VIP[7]', 'Ticket VIP[7]', 0, 10000, NULL, 10, NULL, NULL, NULL, NULL, 4294967295, 7, 2, NULL, NULL, NULL, NULL, NULL, 'callfunc "vip7";', NULL, NULL);
    
    7713, 'Ticket_VIP[30]', 'Ticket VIP[30]', 0, 10000, NULL, 10, NULL, NULL, NULL, NULL, 4294967295, 7, 2, NULL, NULL, NULL, NULL, NULL, 'callfunc "vip30";', NULL, NULL);

    Quando uso o item aparece a mensagem:

    "Vip inserido com sucesso! Relogue seu personagem para ativá-lo."

    Porém não adiciona os dias vip, não aparece nenhuma alteração no map_server e  nada.

     

  14. Quando acesso meudominio.com.br/cp aparece o seguinte aviso

    Warning: Cannot modify header information - headers already sent by (output started at public_html/cp/themes/Drawmove_Free_FluxCP_Theme/header.php:6) in public_html/cp/lib/Flux/Template.php on line 790 .

    Algu=em sabe me dizer o proque?

×
×
  • Create New...