Jump to content

narien123

Members
  • Posts

    39
  • Joined

  • Last visited

Posts posted by narien123

  1.  

     

     

    dont know if it works, u can just give it a try

    - script LevelAnnouncer -1,{
    
    if(BaseLevel == 60) {
    announce ""+strcharinfo(0)+" have reach level 60!";
    end;
    }
    if(BaseLevel == 70) {
    announce "Congratulation "+strcharinfo(0)+"have reach level 70!";
    end;
    }
    if(BaseLevel == 80) {
    announce "Congratulation "+strcharinfo(0)+"have reach level 80!";
    end;
    }
    if(BaseLevel == 90) {
    announce "Congratulation "+strcharinfo(0)+"have reach level 90!";
    end;
    }
    if(BaseLevel == 99{
    
    announce "Congratulation "+strcharinfo(0)+"have reach level 99!";
    end;
    }
    }
    
    - script LevelAnnouncer -1,{
    
    if(BaseLevel == 60) {
    getitem 909,1;
    announce ""+strcharinfo(0)+" have reach level 60!";
    end;
    }
    if(BaseLevel == 70) {
    getitem 909,1;
    announce "Congratulation "+strcharinfo(0)+"have reach level 70!";
    end;
    }
    if(BaseLevel == 80) {
    getitem 909,1;
    announce "Congratulation "+strcharinfo(0)+"have reach level 80!";
    end;
    }
    if(BaseLevel == 90) {
    getitem 909,1;
    announce "Congratulation "+strcharinfo(0)+"have reach level 90!";
    end;
    }
    if(BaseLevel == 99{
    getitem 909,1;
    announce "Congratulation "+strcharinfo(0)+"have reach level 99!";
    end;
    }
    }
    

    if like this will work ?

     

     

    You can use this:

    -    script    LevelAnnouncer    -1,{
    
    if(BaseLevel == 175) {
    getitem 2357,1;
    getitem 2524,1;
    getitem 2421,1;
    getitem 2115,1;
    announce "Good work! " + strcharinfo(0) + " have reach the max level!",bc_all;
    end;
    }
    }

    Just edit the lines.

     

    the script dont have error , but it's dont work ..

  2.  

    dont know if it works, u can just give it a try

    - script LevelAnnouncer -1,{
    
    if(BaseLevel == 60) {
    announce ""+strcharinfo(0)+" have reach level 60!";
    end;
    }
    if(BaseLevel == 70) {
    announce "Congratulation "+strcharinfo(0)+"have reach level 70!";
    end;
    }
    if(BaseLevel == 80) {
    announce "Congratulation "+strcharinfo(0)+"have reach level 80!";
    end;
    }
    if(BaseLevel == 90) {
    announce "Congratulation "+strcharinfo(0)+"have reach level 90!";
    end;
    }
    if(BaseLevel == 99{
    
    announce "Congratulation "+strcharinfo(0)+"have reach level 99!";
    end;
    }
    }
    
    - script LevelAnnouncer -1,{
    
    if(BaseLevel == 60) {
    getitem 909,1;
    announce ""+strcharinfo(0)+" have reach level 60!";
    end;
    }
    if(BaseLevel == 70) {
    getitem 909,1;
    announce "Congratulation "+strcharinfo(0)+"have reach level 70!";
    end;
    }
    if(BaseLevel == 80) {
    getitem 909,1;
    announce "Congratulation "+strcharinfo(0)+"have reach level 80!";
    end;
    }
    if(BaseLevel == 90) {
    getitem 909,1;
    announce "Congratulation "+strcharinfo(0)+"have reach level 90!";
    end;
    }
    if(BaseLevel == 99{
    getitem 909,1;
    announce "Congratulation "+strcharinfo(0)+"have reach level 99!";
    end;
    }
    }
    

    if like this will work ?

  3. (2^10) 1024 = Costume Upper headgear
    (2^11) 2048 = Costume Middle headgear
    (2^12) 4096 = Costume Lower headgear

    how about Upper Mid
                   Lower Mid
                   Upper Lower
                   U,L,M

  4. item_noequip.txt
    2607,6 // ClipID
    conf/mapflag/restricted.txt
    "map_name"<TAB>mapflap<TAB>restricted    6

    i already do the same thing . before yesterday , but still wont work , its only dont have effect , i want after u enter pvp/gvg map , the eq will auto uneq

  5. //=	Zaha Doll hat Quest======================
    //= By: Rain=============================
    //= Version 1.0==========================
    //=======================================
    
    xmas_dun02,36,225,4	script	Lady Trisha	906,{	
    	mes "^FF0000[Trisha]^000000"; 
    	mes "Hi, don't you love toys!"; 
    	mes "Hahahaha, I love this place."; 
    	mes "So many elves to make all the toys I want.";
    	next; 
    	mes "Oooo, you make me to make you a doll ^^.";
    	mes "Okay, I'll craft you a ^FF0000Zaha Doll Hat^000000 ";
    	next;
    	menu "Requirements",L_Bl, "Make Item",-,"Cancel",L_Cancel;
    
    	mes "^FF0000[Trisha]^000000";
    	mes "Good good, let me just check"; 
    	next;
    	if(countitem(4052)<1|| countitem(2607)<1 || countitem(7277)<50) || countitem(592)<1)  || Zeny < 1000000 goto L_NoMake; 
    	delitem 4052,1;
    	delitem 2607,1;
    	delitem 7277,50;
    	delitem 592,3;
    	set Zeny, Zeny-1000000;
    	mes "^FF0000[Trisha]^000000";
    	mes "Give me a second.....";
    	next;
    	getitem 5464,1;
    	mes "^FF0000[Trisha]^000000";
    	mes "Have fun with Zaha ^.^";
    	close;
    
    L_NoMake:
    	mes "^FF0000[Trisha]^000000";
    	mes "You don't have the requirements.";
    	mes "Please come back another time...";
    	close;
    
    L_Bl: 
    	mes "^FF0000[Trisha]^000000";
    	mes "Ok all you have to do is collect:"; 
    	mes "^362ED6 50 Munak Doll^000000"; 
    	mes "^362ED6 3 Jam Pancake (moscovia quest)^000000"; 
    	mes "^362ED6 1 Elder Willow Card^000000";
    	mes "^362ED6 1 Clip[1]^000000";
    	mes "and of course 1,000,000 zeny";
    	next;
    	menu "Accept",-, "Leave",L_Leave;
    
    	mes "^FF0000[Trisha]^000000";
    	mes "Did you not hear me the first time?";
    	close;
    
    L_Leave:
    	mes "^FF0000[Trisha]^000000";
    	mes "Maybe another time?";
    	close;
    
    L_Cancel:
    	mes "^FF0000[Trisha]^000000";
    	mes "Aw, what a shame";
    	mes	"Come back anytime ^.^";
    	close;
    }
    
    

    script.png

  6. Try this:

    morocc,155,99,4	script	party_dungeon_warper	96,{
    	.@nom$ = "["+strnpcinfo(0)+"]";
    	mes .@nom$;
    	mes "Hello there, I'm in charge of managing the entrance to "+.dungeon_name$+".";
    	next;
    	mes .@nom$;
    	mes "I can only give access to a party of ^0000ff"+.min_party_size+" players or more^000000.";
    	mes "Only the ^0000ffparty leader^000000 can ask for the entrance access.";
    	mes "";
    	mes "^ff0000It costs "+.amount+" "+getitemname(.item)+" to reserve an access.^000000";
    	next;
    	mes .@nom$;
    	if (.Dungeon) { //someone is in the dungeon
    		mes "A group of "+.PlayerCount+" players has currently access to the dungeon";
    		mes .AlivePlayerCount+" of them are still alive";
    		mes "^0000ff"+.WaitingCount+"^000000 group(s) are waiting for the entrance access.";
    	}
    	else mes "No one is currently in the dungeon.";
    	mes "";
    	mes "What do you want to do?";
    	getpartymember getcharid(1),1 ; getpartymember getcharid(1),2;
    	for ( .@i = 0; .@i < $@partymembercount; .@i++ )
    		if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) )
    			.@count_online++;
    	.@DungeonReserved = 0;
    	for (.@i = 0 ; .@i < getarraysize(.PartyIDs) ; .@i++)
    		if (getcharid(1) == .PartyIDs[.@i])
    			.@DungeonReserved = 1;
    	switch(select("Enter the dungeon:Reserve access:Leave")) { next ; mes .@nom$;
    
    	case 1:
    	if (!.@DungeonReserved) { //the dugeon isn't reserved yet
    		mes "You didn't reserve access yet.";
    		mes "Please reserve access before entering the dungeon.";
    		close;
    	}
    	else if (.PartyIDs[0] != getcharid(1)) { //dungeon reserved but in the waiting room
    		mes "You are in the waiting list sir, you cannot enter the dungeon yet.";
    		mes "Your position in the waiting list : ^0000ff"+callsub(S_Position,getcharid(1))+"^000000.";
    		mes "You will be informed when you can enter the dungeon.";
    		close;
    	}
    	else if (@dungeon == 0) { //player already died in the dungeon
    		mes "You already died in the dungeon and so cannot enter it again.";
    		close;
    	}
    	else if (@warped == 1) { //player warped out of the dungeon
    		mes "You warped out of the dungeon and so cannot enter it again.";
    		close;
    	}
    	@warped = 1;
    	.PlayerCount = .@count_online;
    	.EnteredPlayers++ ; .AlivePlayerCount++;
    	warp .warpzone$,.warpx,.warpy;
    	end;
    	
    	case 2:
    	if (.@DungeonReserved) { //has already reserved access
    		mes "You already reserved access to the dungeon.";
    		mes "Your position in the waiting list : ^0000ff"+callsub (S_Position,getcharid(1))+"^000000.";
    		if (callsub (S_Position,getcharid(1))) mes "You will be informed when you can enter the dungeon.";
    		close;
    	}
    	else if (.@count_online < .min_party_size) { //not enough players online or not in a party
    		mes "You need a party of "+.min_party_size+" players online to reserve the dungeon.";
    		close;
    	}
    	else if (getpartyleader(getcharid(1),1) != getcharid(3)) { //not party leader
    		mes "Only the party leader can reserve access to the dungeon.";
    		close;
    	}
    	else if (getarraysize(.PartyIDs)) { //people already waiting
    		setarray .PartyIDs[getarraysize(.PartyIDs)] , getcharid(1);
    		mes "You successfully reserved the entrance.";
    		mes "Your position in the waiting list : ^0000ff"+callsub (S_Position,getcharid(1))+"^000000.";
    		mes "You will be informed when you can enter the dungeon.";
    		close;
    	}
    	if (countitem(.item) < .amount) {
    		mes "You don't have "+.amount+" "+getitemname(.item)+".";
    		mes "^ff0000It costs "+.amount+" "+getitemname(.item)+" to reserve an access.^000000";
    		close;
    	}
    	delitem .item,.amount;
    	.Dungeon = 1;
    	setarray .PartyIDs[0] , getcharid(1);
    	mes "^ff0000You can now enter the dungeon.^000000";
    	mes "If none of the party members enter the dungeon before "+.delay+" minutes, the dungeon will be automatically closed.";
    	initnpctimer ; .TimeDelay = 0;
    	addrid(2,0,.PartyIDs[0]) ; @dungeon = 1 ; @warped = 0;
    	end;
    	
    	case 3:
    	end;
    	}
    
    OnTimer300000:
    	.TimeDelay = 1;
    	if (.AlivePlayerCount == 0) callsub S_NextParty;
    	end;
    
    S_Position:
    	for (.@i = 0 ; .@i < getarraysize(.PartyIDs) ; .@i++) if (.PartyIDs[.@i] == getarg(0)) .@j = .@i;
    	return .@j;
    
    S_CheckCount:
    	debugmes "checkcount";
    	if (.AlivePlayerCount == 0 /*|| (.Delay && .AlivePlayerCount == .EnteredPlayers)*/) callsub S_NextParty;
    	return;
    
    S_NextParty:
    	addrid(2,0,.PartyIDs[0]);
    	announce "Everyone is dead, you lost access to the dungeon.";
    	deletearray .PartyIDs[0],1;
    	if (.PartyIDs[0]) {
    		detachrid ; addrid(2,0,.PartyIDs[0]);
    		announce "Your party can now enter the dungeon.",bc_self;
    		announce "Please enter it before a "+.delay+" minutes delay, else you will loose access.",bc_self;
    		initnpctimer;
    		.TimeDelay = 0;
    	}
    	end;
    	
    OnPCDieEvent:
    	getmapxy(.@map$,.@x,.@y,0);
    	if (.@map$ == .warpzone$) @dungeon = 0 ; .AlivePlayerCount -= 1 ; warp .exitzone$,.exitx,.exity ; callsub S_CheckCount;
    	end;
    	
    OnPCLogoutEvent: //if player logs out in the dungeon, he's counted as dead
    	getmapxy(.@map$,.@x,.@y,0);
    	if (.@map$ == .warpzone$) @dungeon = 0 ; .AlivePlayerCount -= 1 ; callsub S_CheckCount;
    	end;
    
    OnPCLoginEvent: //if player logs in in the dungeon, he's warped out of it
    	getmapxy(.@map$,.@x,.@y,0);
    	if (.@map$ == .warpzone$) warp .exitzone$,.exitx,.exity;
    	end;
    	
    OnInit:
    //===============================set this up==========================================
    	.dungeon_name$ = "the Fire dungeon";
    	.item = 671; //item required (gold coin)
    	.amount = 1; //amount required
    	.min_party_size = 1; //minimum amount of players needed to enter the dungeon
    	.delay = 5; //delay after wich dungeon is closed if all the players in it are dead
    	.warpzone$ = "mus_arena01" ; .warpx = 62 ; .warpy = 48; //entrance warp coordinates
    	.exitzone$ = "mus_arena03" ; .exitx = 116 ; .exity = 193; //exit coordinates
    //=============================end of user setup======================================
    	mapwarp .warpzone$,.exitzone$,.exitx,.exity;
    	.Dungeon = .PlayerCount = .AlivePlayerCount = .WaitingCount = 0;
    	setarray .PartyIDs[0],0;
    }
    

    It's not the final product cause I couldn't test it to its limits so it may have bugs xd

    tell me if it works for you and if you want to add/change anything.

     

    don't forget to edit the user setup, the NPC location and the NPC sprite ID.

    Cant Click it .. i think it's not complete 

  7.  

     

     

     

    -    script    Anti Bot    -1,{

    OnNPCKillEvent:

        if(getgmlevel() > 0) end;

        set @kill,@kill+1;

        if(@kill >= rand(200,201)) goto Check;

        end;

    OnPCLoginEvent:

    Check:

        if(getgmlevel() > 0) end;

        getmapxy .@map$, .@x, .@y, 0;

        if (.@map$=="jawaii") end;

        if(checkcart() == 1) set @cart,1;

        if(checkfalcon() == 1) set @falcon,1;

        if(checkriding() == 1) set @riding,1;

        atcommand "@option 2 0 0";

        atcommand "@battleignore";

        setoption 0x2,1;

        sc_start sc_berserk, 1000000000, 1;

        mes "[Anti Bot]";

        mes "Bot checking time";

        mes "Please input the number you see";

        next;

        switch( rand(1,9) ) {

        case 1:

            mes "#################^83F52C##^000000################";

            mes "###############^83F52C####^000000################";

            mes "#################^83F52C##^000000################";

            mes "#################^83F52C##^000000################";

            mes "#################^83F52C##^000000################";

            mes "#################^83F52C##^000000################";

            mes "###############^83F52C######^000000##############";

            input @num;

            if(@num == 1) break;

            atcommand "@kick "+strcharinfo(0);

            end;

        case 2:

            mes "#############^83F52C#######^000000###############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "###################^83F52C##^000000##############";

            mes "#############^83F52C#######^000000###############";

            mes "############^83F52C##^000000#####################";

            mes "############^83F52C##^000000#####################";

            mes "############^83F52C#########^000000##############";

            input @num;

            if(@num == 2) break;

            atcommand "@kick "+strcharinfo(0);

            end;

        case 3:

            mes "#############^83F52C#######^000000###############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "###################^83F52C##^000000##############";

            mes "#############^83F52C#######^000000###############";

            mes "###################^83F52C##^000000##############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "#############^83F52C#######^000000###############";

            input @num;

            if(@num == 3) break;

            atcommand "@kick "+strcharinfo(0);

            end;

        case 4:

            mes "############^83F52C##^000000#####################";

            mes "############^83F52C##^000000####^83F52C##^000000###############";

            mes "############^83F52C##^000000####^83F52C##^000000###############";

            mes "############^83F52C##^000000####^83F52C##^000000###############";

            mes "############^83F52C#########^000000##############";

            mes "##################^83F52C##^000000###############";

            mes "##################^83F52C##^000000###############";

            input @num;

            if(@num == 4) break;

            atcommand "@kick "+strcharinfo(0);

            end;

        case 5:

            mes "############^83F52C########^000000###############";

            mes "############^83F52C##^000000#####################";

            mes "############^83F52C##^000000#####################";

            mes "############^83F52C#######^000000################";

            mes "##################^83F52C##^000000###############";

            mes "############^83F52C##^000000####^83F52C##^000000###############";

            mes "#############^83F52C######^000000################";

            input @num;

            if(@num == 5) break;

            atcommand "@kick "+strcharinfo(0);

            end;

        case 6:

            mes "#############^83F52C#######^000000###############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "############^83F52C##^000000#####################";

            mes "############^83F52C########^000000###############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "#############^83F52C######^000000################";

            input @num;

            if(@num == 6) break;

            atcommand "@kick "+strcharinfo(0);

            end;

        case 7:

            mes "############^83F52C########^000000###############";

            mes "############^83F52C##^000000####^83F52C##^000000###############";

            mes "################^83F52C##^000000#################";

            mes "###############^83F52C##^000000##################";

            mes "###############^83F52C##^000000##################";

            mes "###############^83F52C##^000000##################";

            mes "###############^83F52C##^000000##################";

            input @num;

            if(@num == 7) break;

            atcommand "@kick "+strcharinfo(0);

            end;

        case 8:

            mes "#############^83F52C#######^000000###############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "#############^83F52C#######^000000###############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "#############^83F52C#######^000000###############";

            input @num;

            if(@num == 8) break;

            atcommand "@kick "+strcharinfo(0);

            end;

        case 9:

            mes "#############^83F52C#######^000000###############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "#############^83F52C########^000000##############";

            mes "###################^83F52C##^000000##############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "#############^83F52C#######^000000###############";

            input @num;

            if(@num == 9) break;

            atcommand "@kick "+strcharinfo(0);

            end;

        }

        next;

        mes "[Anti Bot]";

        mes "Thank you for your patience, you can now move on.";

        atcommand "@option 0 0 0";

        atcommand "@battleignore";

        setoption 0x2,0;

        sc_end sc_berserk;

        percentheal 100,100;

        set @kill,0;

        if(@cart == 1) {

            setcart;

            set @cart,0;

        }

        if(@falcon == 1) {

            setfalcon;

            set @falcon,0;

        }

        if(@riding == 1) {

            setriding;

            set @riding,0;

        }

        close;

    }

    Change 

     

     

      if(@kill >= rand(200,201)) goto Check;

        end;

     to Every 15 minute 

     

     

    Hi man, all botteres can bypass any script-based anti-bots systems.

    Your system is possible easy to bypass (if you want, i can show you).

     

    You just make a sad life for your players, not for your botters.

    Try better some professional protection. For example Hashield

     

    My problem is they using auto click on Fishing ..

  8. callshop "qshop"+.@i,1;
    npcshopattach "qshop"+.@i;
    

    Then you have to find qshop1, qshop2 and qshop3 to delete all the items from them

     

    Else you can replace this:

    // Add(<shop number>,<reward ID>,<reward amount>,<Zeny cost>,<point cost>,
    //     <required item ID>,<required item amount>{,...});
    // Shop number corresponds with order above (default is 1).
    // Note: Do NOT use a reward item more than once!
     
    	Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2);
    	Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600);
    	Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1);
    	Add(1,5045,1,0,0,2252,1,1054,450,943,1200);
     
    	Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10);
    	Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10);
     
    	Add(3,531,1,3,0,512,1,713,1);
    	Add(3,532,1,3,0,513,1,713,1);
    	Add(3,533,1,3,0,514,1,713,1);
    	Add(3,534,1,3,0,515,1,713,1);
     
    // --------------------------------------------------
    	for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1)
    		npcshopdelitem "qshop"+.@i,909;
    	end;
    }
    

    to this:

    // Add(<shop number>,<reward ID>,<reward amount>,<Zeny cost>,<point cost>,
    //     <required item ID>,<required item amount>{,...});
    // Shop number corresponds with order above (default is 1).
    // Note: Do NOT use a reward item more than once!
    
    // --------------------------------------------------
    for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) {
            npcshopitem "qshop"+.@i,512,10;
            npcshopdelitem "qshop"+.@i,512;
    }
     
    	Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2);
    	Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600);
    	Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1);
    	Add(1,5045,1,0,0,2252,1,1054,450,943,1200);
     
    	Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10);
    	Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10);
     
    	Add(3,531,1,3,0,512,1,713,1);
    	Add(3,532,1,3,0,513,1,713,1);
    	Add(3,533,1,3,0,514,1,713,1);
    	Add(3,534,1,3,0,515,1,713,1);
     
    	end;
    }
    

    Doing so will erase the 3 qshops before adding items to them.

     

    i found out , i have another npc ( full headgear quest npc ) i think this npc eq mix with the new one i just create/

  9. // Add(<shop number>,<reward ID>,<reward amount>,<Zeny cost>,<point cost>,
    //     <required item ID>,<required item amount>{,...});
    // Shop number corresponds with order above (default is 1).
    // Note: Do NOT use a reward item more than once!
     
    	Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2);
    	Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600);
    	Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1);
    	Add(1,5045,1,0,0,2252,1,1054,450,943,1200);
     
    	Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10);
    	Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10);
     
    	Add(3,531,1,3,0,512,1,713,1);
    	Add(3,532,1,3,0,513,1,713,1);
    	Add(3,533,1,3,0,514,1,713,1);
    	Add(3,534,1,3,0,515,1,713,1);
    

    You just have to edit these.

     

    the problem is the headgear that not on the list also showing

  10. //===== eAthena Script =======================================
    //= Euphy's Quest Shop
    //===== By: ==================================================
    //= Euphy
    //===== Current Version: =====================================
    //= 1.4a - eAthena
    //===== Description: =========================================
    //= A dynamic quest shop based on Lunar's, with easier config.
    //= Includes support for multiple shops & cashpoints.
    //= Item Preview script by ToastOfDoom.
    //============================================================
    					
    prontera,150,183,6	script	Quest Shop	998,{
    function Add; function Chk; function Slot; function A_An;
    
    	if(.Shops$ != "") set .@i,1;
    	else {
    		set .@menu$,"";
    		for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1)
    			set .@menu$, .@menu$+.Shops$[.@i]+":";
    		set .@i, select(.@menu$); }
    	dispbottom "Select one item at a time.";
    	callshop "qshop"+.@i,1;
    	npcshopattach "qshop"+.@i;
    	end;
    
    function Add {
    	if (getitemname(getarg(1))=="null") {
    		debugmes "Quest reward #"+getarg(1)+" invalid (skipped)."; return; }
    	for(set .@n,5; .@n<127; set .@n,.@n+2) {
    		if (!getarg(.@n,0)) break;
    		if (getitemname(getarg(.@n))=="null") {
    			debugmes "Quest requirement #"+getarg(.@n)+" invalid (skipped)."; return; } }
    	for(set .@i,2; .@i<.@n; set .@i,.@i+1)
    		set getd(".q_"+getarg(1)+"["+(.@i-2)+"]"), getarg(.@i);
    	npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0);
    	sleep 1;
    	return; }
    function Chk {
    	if (getarg(0)<getarg(1)) { set @qe0,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),11)>0) 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); }
    
    OnBuyItem:
    	set .@q[0],@bought_nameid;
    	copyarray .@q[1],getd(".q_"+@bought_nameid+"[0]"),getarraysize(getd(".q_"+@bought_nameid+"[0]"));
    	if (!.@q[1]) { message strcharinfo(0),"An error has occurred."; end; }
    	mes "[Quest Shop]";
    	mes "Reward: ^0055FF"+((.@q[1]>1)?.@q[1]+"x ":"")+Slot(.@q[0])+"^000000";
    	mes "Requirements:";
    	if (.@q[2]) mes " > "+Chk(Zeny,.@q[2])+.@q[2]+" Zeny^000000";
    	if (.@q[3]) mes " > "+Chk(getd(.Points$[0]),.@q[3])+.@q[3]+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+.@q[3]+")^000000";
    	if (.@q[4]) for(set .@i,4; .@i<getarraysize(.@q); set .@i,.@i+2)
    		mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1])+((.DisplayID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+.@q[.@i+1]+")^000000";
    	next;
    	set @qe1, getiteminfo(.@q[0],5); set @qe2, getiteminfo(.@q[0],11);
    	addtimer 1000, strnpcinfo(1)+"::OnEnd";
    	while(1){
    		switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((((@qe1&1) || (@qe1&256) || (@qe1&512)) && @qe2>0 && !@qe6)?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) {
    			case 1:
    				if (@qe0) { 
    					mes "[Quest Shop]";
    					mes "You're missing one or more quest requirements.";
    					close; }
    				if (!checkweight(.@q[0],.@q[1])) {
    					mes "[Quest Shop]";
    					mes "^FF0000You need "+(((.@q[1]*getiteminfo(.@q[0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000";
    					close; }
    				if (.@q[2]) set Zeny, Zeny-.@q[2];
    				if (.@q[3]) setd .Points$[0], getd(.Points$[0])-.@q[3];
    				if (.@q[4]) for(set .@i,4; .@i<getarraysize(.@q); set .@i,.@i+2)
    					delitem .@q[.@i],.@q[.@i+1];
    				getitem .@q[0],.@q[1];
    				if (.Announce) announce strcharinfo(0)+" has created "+A_An(getitemname(.@q[0]))+"!",0;
    				specialeffect2 699;
    				close;
    			case 2:
    				set @qe3, getlook(3); set @qe4, getlook(4); set @qe5, getlook(5);
    				if (@qe1&1) atcommand "@changelook 3 "+@qe2;
    				if (@qe1&256) atcommand "@changelook 1 "+@qe2;
    				if (@qe1&512) atcommand "@changelook 2 "+@qe2;
    				set @qe6,1;
    				break;
    			case 3:
    				close; } }
    OnEnd:
    	if (@qe6) { atcommand "@changelook 3 "+@qe3; atcommand "@changelook 1 "+@qe4; atcommand "@changelook 2 "+@qe5; }
    	for(set .@i,0; .@i<7; set .@i,.@i+1) setd "@qe"+.@i,0;
    	end;
    OnInit:
    // --------------------- Config ---------------------
    // Custom points, if needed: "<variable>","<name to display>"
    	setarray .Points$[0],"#CASHPOINTS","Cash Points";
    
    	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 .DisplayID,0;	// Show item IDs? (1: yes / 0: no)
    	set .ShowZeny,0;	// Show Zeny cost, if any? (1: yes / 0: no)
    
    // Shop categories, if needed: "<Shop 1>","<Shop 2>"{,...};
    // Duplicate dummy data for any additional shops (bottom of script).
    // If no categories, use the second line instead (remove //).
    
    	setarray .Shops$[1],"Headgears","Weapons","Other";
    	// set .Shops$,"n/a";
    
    // Add(<shop number>,<reward ID>,<reward amount>,<Zeny cost>,<point cost>,
    //     <required item ID>,<required item amount>{,...});
    // Shop number corresponds with order above (default is 1).
    // Note: Do NOT use a reward item more than once!
    
    	Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2);
    	Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600);
    	Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1);
    	Add(1,5045,1,0,0,2252,1,1054,450,943,1200);
    
    	Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10);
    	Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10);
    
    	Add(3,531,1,3,0,512,1,713,1);
    	Add(3,532,1,3,0,513,1,713,1);
    	Add(3,533,1,3,0,514,1,713,1);
    	Add(3,534,1,3,0,515,1,713,1);
    
    // --------------------------------------------------
    	for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1)
    		npcshopdelitem "qshop"+.@i,909;
    	end;
    }
    
    

    i want to remove all the Headgear .. but where to ?

    screenxero021.jpg

  11. From the top of my head it should roughly be something like this..

    Insert in on_equip script:

    if(getequipid(EQI_ACC_L == 2629) || getequipid(EQI_ACC_R == 2629)) {calfunc "Example";}

    Put this in your custom NPC scripts.

    function script Example {
      unequip(EQI_ACC_L) && unequip(EQI_ACC_R);
      message strcharinfo(0),"Cant Wear More than 2 Megingjard.";
    }

    Take a look at doc/script_commands.txt for further documentation. Let me know if it works.

    Im using 3Ceam , Dont have on_equip 

  12.  

     

    -    script    Anti Bot    -1,{

    OnNPCKillEvent:

        if(getgmlevel() > 0) end;

        set @kill,@kill+1;

        if(@kill >= rand(200,201)) goto Check;

        end;

    OnPCLoginEvent:

    Check:

        if(getgmlevel() > 0) end;

        getmapxy .@map$, .@x, .@y, 0;

        if (.@map$=="jawaii") end;

        if(checkcart() == 1) set @cart,1;

        if(checkfalcon() == 1) set @falcon,1;

        if(checkriding() == 1) set @riding,1;

        atcommand "@option 2 0 0";

        atcommand "@battleignore";

        setoption 0x2,1;

        sc_start sc_berserk, 1000000000, 1;

        mes "[Anti Bot]";

        mes "Bot checking time";

        mes "Please input the number you see";

        next;

        switch( rand(1,9) ) {

        case 1:

            mes "#################^83F52C##^000000################";

            mes "###############^83F52C####^000000################";

            mes "#################^83F52C##^000000################";

            mes "#################^83F52C##^000000################";

            mes "#################^83F52C##^000000################";

            mes "#################^83F52C##^000000################";

            mes "###############^83F52C######^000000##############";

            input @num;

            if(@num == 1) break;

            atcommand "@kick "+strcharinfo(0);

            end;

        case 2:

            mes "#############^83F52C#######^000000###############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "###################^83F52C##^000000##############";

            mes "#############^83F52C#######^000000###############";

            mes "############^83F52C##^000000#####################";

            mes "############^83F52C##^000000#####################";

            mes "############^83F52C#########^000000##############";

            input @num;

            if(@num == 2) break;

            atcommand "@kick "+strcharinfo(0);

            end;

        case 3:

            mes "#############^83F52C#######^000000###############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "###################^83F52C##^000000##############";

            mes "#############^83F52C#######^000000###############";

            mes "###################^83F52C##^000000##############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "#############^83F52C#######^000000###############";

            input @num;

            if(@num == 3) break;

            atcommand "@kick "+strcharinfo(0);

            end;

        case 4:

            mes "############^83F52C##^000000#####################";

            mes "############^83F52C##^000000####^83F52C##^000000###############";

            mes "############^83F52C##^000000####^83F52C##^000000###############";

            mes "############^83F52C##^000000####^83F52C##^000000###############";

            mes "############^83F52C#########^000000##############";

            mes "##################^83F52C##^000000###############";

            mes "##################^83F52C##^000000###############";

            input @num;

            if(@num == 4) break;

            atcommand "@kick "+strcharinfo(0);

            end;

        case 5:

            mes "############^83F52C########^000000###############";

            mes "############^83F52C##^000000#####################";

            mes "############^83F52C##^000000#####################";

            mes "############^83F52C#######^000000################";

            mes "##################^83F52C##^000000###############";

            mes "############^83F52C##^000000####^83F52C##^000000###############";

            mes "#############^83F52C######^000000################";

            input @num;

            if(@num == 5) break;

            atcommand "@kick "+strcharinfo(0);

            end;

        case 6:

            mes "#############^83F52C#######^000000###############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "############^83F52C##^000000#####################";

            mes "############^83F52C########^000000###############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "#############^83F52C######^000000################";

            input @num;

            if(@num == 6) break;

            atcommand "@kick "+strcharinfo(0);

            end;

        case 7:

            mes "############^83F52C########^000000###############";

            mes "############^83F52C##^000000####^83F52C##^000000###############";

            mes "################^83F52C##^000000#################";

            mes "###############^83F52C##^000000##################";

            mes "###############^83F52C##^000000##################";

            mes "###############^83F52C##^000000##################";

            mes "###############^83F52C##^000000##################";

            input @num;

            if(@num == 7) break;

            atcommand "@kick "+strcharinfo(0);

            end;

        case 8:

            mes "#############^83F52C#######^000000###############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "#############^83F52C#######^000000###############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "#############^83F52C#######^000000###############";

            input @num;

            if(@num == 8) break;

            atcommand "@kick "+strcharinfo(0);

            end;

        case 9:

            mes "#############^83F52C#######^000000###############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "#############^83F52C########^000000##############";

            mes "###################^83F52C##^000000##############";

            mes "############^83F52C##^000000#####^83F52C##^000000##############";

            mes "#############^83F52C#######^000000###############";

            input @num;

            if(@num == 9) break;

            atcommand "@kick "+strcharinfo(0);

            end;

        }

        next;

        mes "[Anti Bot]";

        mes "Thank you for your patience, you can now move on.";

        atcommand "@option 0 0 0";

        atcommand "@battleignore";

        setoption 0x2,0;

        sc_end sc_berserk;

        percentheal 100,100;

        set @kill,0;

        if(@cart == 1) {

            setcart;

            set @cart,0;

        }

        if(@falcon == 1) {

            setfalcon;

            set @falcon,0;

        }

        if(@riding == 1) {

            setriding;

            set @riding,0;

        }

        close;

    }

    Change 

     

     

      if(@kill >= rand(200,201)) goto Check;

        end;

     to Every 15 minute 

  13. I started to work on the script this evening, here is what I planned to do, please tell me if that's what you're looking for:

     

    the NPC will allow a party leader of a 3 or more online players group to go into the dungeon untill every member is dead. Costs 1 gold coin.

    Only one group can be allowed to be in the dungeon at the same time.

    If a group is already in the dungeon, you will be placed in a queue and informed when t's your turn to go into the dungeon.

     

    -Once a group is given access, if no member goes into the dungeon after a certain delay, the access will be given to the next group.

    -If someone dies in the dungeon, he and every of his characters cannot access it again.

    -If someone logs out in the dungeon, he's counted as dead and so cannot enter it again. On relog he'll be warped to somewhere else.

    -After a certain delay, if only 2 of 3 members entered the dungeon but died in, the dungeon closes for the current group.

     

    Is it good for you or do you want to modify/add anything?

     

    I don't think I'll have time to script this week so you may have to wait for the week-end to get it, sorry :P

    it's ok take your time .. that's all i need ^^ 

  14. I need a few details because I'm an idiot  :P

     

    I think making an instance is not necessary because want you want to do seems pretty basic,but it depends on how you want to do it.

     

    When you make a reservation and get access to the dungeon, would you have access to it for a duration or till everybody dies? If you die in the dungeon can you still access it?

    Is the gold coin required for each party member or just for the party leader?

    Do you really want it to be a quest (maybe with a reward) or just an access giving.

     

    With this, I think I'll be able to make what you want.

    Only  Party Leader pay for the entry , Till Everyone die , cant access after u die ,  no need reward , it's only for access 

    thx you for willing to help me with it .. i try alot of it but seem bug / erro , coz im using 3ceam 140 stable .

    I need a few details because I'm an idiot  :P

     

    I think making an instance is not necessary because want you want to do seems pretty basic,but it depends on how you want to do it.

     

    When you make a reservation and get access to the dungeon, would you have access to it for a duration or till everybody dies? If you die in the dungeon can you still access it?

    Is the gold coin required for each party member or just for the party leader?

    Do you really want it to be a quest (maybe with a reward) or just an access giving.

     

    With this, I think I'll be able to make what you want.

    warp to this mus_arena01 62 48

    the exit will be mus_arena03 116 193

    thx you

×
×
  • Create New...