Jump to content

Kiritoryu

Members
  • Posts

    59
  • Joined

  • Last visited

Posts posted by Kiritoryu

  1.  

    [Warning]: atcommand_config_read: can not set alias for non-existent command channel (conf/atcommand_athena.conf:59)
    [status]: Done reading '60' command aliases in 'conf/atcommand_athena.conf'.
    [Warning]: pc_groups:read_config: non-existent command name 'channel', removing... (conf/groups.conf:130)
    [Warning]: pc_groups:read_config: non-existent command name 'channel', removing... (conf/groups.conf:174)
    [Warning]: pc_groups:read_config: non-existent command name 'channels', removing... (conf/groups.conf:308)
    [Warning]: pc_groups:read_config: non-existent permission name 'channel_admin', removing... (conf/groups.conf:320)

    but i have channel.conf

    im using the latest rAthena

    Make sure you update your sources respectively (and don't forget to recompile) .. channel command and channel_admin permission are located in map/pc_groups.h and map/atcommand.c files - try to locate them here to make sure your files are up to date.

    Oh thanks.

    And i know why this happen. Haha.

    Im using eAmod as well

  2. [Warning]: atcommand_config_read: can not set alias for non-existent command channel (conf/atcommand_athena.conf:59)
    [status]: Done reading '60' command aliases in 'conf/atcommand_athena.conf'.
    [Warning]: pc_groups:read_config: non-existent command name 'channel', removing... (conf/groups.conf:130)
    [Warning]: pc_groups:read_config: non-existent command name 'channel', removing... (conf/groups.conf:174)
    [Warning]: pc_groups:read_config: non-existent command name 'channels', removing... (conf/groups.conf:308)
    [Warning]: pc_groups:read_config: non-existent permission name 'channel_admin', removing... (conf/groups.conf:320)


    but i have channel.conf

    im using the latest rAthena
  3. I need a baby job changer that doesnt have bug. Mine if i novice level, and i change to baby job. The stats points that are added reset-ed but the stats point that i didnt add stays. this allow in stats abuse. my server is 500/120 server with max stats 450 

    This is my script. Bugged.

     

    //////////////////////////////////////////////////////////////////////
    //////////////////////// aERO2 Corp. Scripts /////////////////////////
    //////////////////////////////////////////////////////////////////////
    ////Script:		Baby Job Master
    ////Writer:		yandols
    ////Version:	1.01
    ////Works with:	All versions
    ////Desc:		Job Master for Baby Class
    //////////////////////////////////////////////////////////////////////
    ////Version Info:
    ////	Not Available
    //////////////////////////////////////////////////////////////////////
    sanctum,245,137,6	script	Baby Job Master	96,{
    
    	if(SkillPoint != 0) goto Lskillpt;
    	if(@CharReborned==1) goto LAlreadyReborn;
    	if(baseLevel < 10) goto Lnotbabylevel;
    	if(@chardefsize==2)	goto Lnotitans;
    	mes "[Baby Job Master]";
    	mes "I am the Baby Job Master for this server.";
    	mes "Do you need a job change?";
    	next;
    	menu "Become baby",Lbabytime,"First Class",LFirstClass,"Second Class (2-1)",LSecondClass,"Second Class (2-2)",LSecondClass2;
    
    L_Fail:
    	mes "[Baby Job Master]";
    	mes "Only Novice can change into a baby!!";
    	close;
    
    LAlreadyReborn:
    	mes "[Baby Job Master]";
    	mes "You are reborn class, I cannot provide jobchange to reborn class.";
    	close;
    
    Lbabytime:
    	if(Class != 0) goto L_Fail;
    	if(Class==4023) goto LAlreadyNoob;
    	mes "[Baby Job Master]";
    	mes "You want to become a baby?";
    	mes "If you become baby you cannot reborn.";
    	next;
    	menu "Ok",ResetYes,"Cancel",ResetNo;
    	
    	ResetYes:
    	getitem 1202,1;
    	getitem 2302,1;
    	mes "[Baby Job Master]";
    	mes "Now you become a ^0000FFBaby^000000.";
    	jobchange 4023;
    	close;
    	
    	ResetNo:
    	goto LCancel;
    
    	LAlreadyNoob:
    		mes "[Baby Job Master]";
    		mes "You are already a baby.";
    		close;
    	
    	Lnotbabylevel:
    		mes "[Baby Job Master]";
    		mes "I am the Baby Job Master for this server.";
    		next;
    		mes "[Baby Job Master]";
    		mes "If you want to become a baby, you must be at least level 10 and not a titan.";
    		close;
    	
    	Lnotitans:
    		mes "[Baby Job Master]";
    		mes "Sorry, I can't help you.";
    		mes "Giants cannot become baby!!";
    		mes "Too big!!!";
    		close;
    
    LSnovice:
    	if(class !=4023) goto LHell;
    	if(baselevel<45) goto LHell;
    	getitem 1202,1;
    	getitem 2302,1;
    	mes "[Baby Job Master]";
    	mes "Now you become a ^0000FFSuper Baby^000000!!";
    	jobchange 4045;
    	close;
    LHell:
    	mes "[Baby Job Master]";
    	mes "- You have to be a baby novice";
    	mes "- You need to be at least BaseLvl 45.";
    	close;
    	
    LFirstClass:
    	if(class !=4023) goto Lnovice;
    	if(joblevel<10) goto Ljobten;
    	menu "Swordsman",LSword,"Mage",LMage,"Thief",LThief,"Merchant",LMerc,"Acolyte",LAco,"Archer",LArch,"Super Baby!!",LSnovice;
    
    Lnovice:
    	mes "[Baby Job Master]";
    	mes "You are not a baby novice.";
    	close;
    
    Ljobten:
    	mes "[Baby Job Master]";
    	mes "- You need to be at least JobLvl 10 before changing into the first class.";
    	close;
    	
    Lskillpt:
    	mes "[Error]";
    	mes "^FF0000Please use up all your skill points!^000000";
    	close;
    
    LTaekwon:
    	mes "[Job Master] ^FF0000";
    	mes "An error has occured, unable to jobchange. please send error report to eAthena Server.^000000";
    	close;
    	
    LGunz:
    	mes "[Job Master] ^FF0000";
    	mes "An error has occured, unable to jobchange. please send error report to eAthena Server.^000000";
    	close;
    	
    LNinja:
    	mes "[Job Master] ^FF0000";
    	mes "An error has occured, unable to jobchange. please send error report to eAthena Server.^000000";
    	close;
    
    LSword:
    	getitem 2304,1;
    	mes "[Baby Job Master]";
     	mes "Now you become a ^0000FFSwordman^000000.";
    	jobchange 4024;
    	close;
    
    LMage:
    	getitem 1602,1;
    	mes "[Baby Job Master]";
    	mes "Now you become a ^0000FFMage^000000.";
    	jobchange 4025;
    	close;
    
    LThief:
    	getitem 1214,1;
    	mes "[Baby Job Master]";
    	mes "Now you become a ^0000FFThief^000000.";
    	jobchange 4029;
    	close;
    
    LMerc:
    	getitem 1302,1;
    	mes "[Baby Job Master]";
    	mes "Now you become a ^0000FFMerchant^000000.";
    	jobchange 4028;
    	close;
    
    LAco:
    	getitem 1505,1;
    	mes "[Baby Job Master]";
    	mes "Now you become a ^0000FFAcolyte^000000.";
    	jobchange 4027;
    	close;
    
    LArch:
    	getitem 1702,1;
    	getitem 1750,100;
    	mes "[Baby Job Master]";
    	mes "Now you become a ^0000FFArcher^000000.";
    	jobchange 4026;
    	close;
    
    LCancel:
    	mes "[Baby Job Master]";
    	mes "Okay then.";
    	close;
    
    LSecondClass:
    	if(joblevel<50) goto Ljobforty;
    	menu "Knight",LKnight,"Wizard",LWizard,"Hunter",LHunter,"Blacksmith",LBlacksmith,"Assassin",LAssassin,"Priest",LPriest;
    
    Ljobforty:
    	mes "[Baby Job Master]";
    	mes "You must be at least JobLvl 40 before changing to 2nd class.";
    	close;
    
    LNotTaekwon:
    	mes "[Baby Job Master]";
    	mes "You are not a Taekwon.";
    	close;
    
    LStarglad:
    	goto LNotTaekwon;
    	mes "[Baby Job Master]";
    	mes "This job is not yet availible.";
    	close;
    
    LKnight:
    		if(class !=4024) goto LNotSword;
    		goto LKnight2;
    
    LNotSword:
    	mes "[Baby Job Master]";
    	mes "You are not a swordman.";
    	close;
    
    LKnight2:
    	getitem 1155,1;
    	mes "[Baby Job Master]";
    	mes "Now you become a ^0000FFKnight^000000.";
    	jobchange 4030;
    	close;
    
    	
    LHunter:
    		if(class !=4026) goto LNotArcher;
    		goto LHun2;
    
    LNotArcher:
    		mes "[Baby Job Master]";
    		mes "You are not an archer.";
    		close;
    
    LHun2:
    //	warp "in_hunter.gat",100,18;
    //	close;
    	mes "[Baby Job Master]";
    	mes "Now you become a ^0000FFHunter^000000.";
    	jobchange 4034;
    //	give_special 2;
    	close;
    
    LBlacksmith:
    	mes "[Baby Job Master]";
    		if(class !=4028) goto LNotMerc;
    		goto LBla2;
    
    LNotMerc:
    		mes "[Baby Job Master]";
    		mes "You are not a Merchant.";
    		close;
    
    LBla2:
    		getitem 1358,1;
    		mes "[Baby Job Master]";
    		mes "Now you become a ^0000FFBlacksmith^000000.";
    		jobchange 4033;
    		close;
    
    LAssassin:
    		if(class !=4029) goto LNotThief;
    		goto LAssass2;
    
    LNotThief:
    	mes "[Baby Job Master]";
    	mes "You are not a Thief.";
    	close;
    
    
    LAssass2:
    	getitem 1251,1;
    	mes "[Baby Job Master]";
    	mes "Now you become an ^0000FFAssassin^000000.";
    	jobchange 4035;
    	close;
    
    LPriest:
    		if(class !=4027) goto LNotAco;
    		goto LPri2;
    
    LNotAco:
    	mes "[Baby Job Master]";
    	mes "You are not an Acolyte.";
    	close;
    
    LPri2:
    	getitem 1550,1;
    	mes "[Baby Job Master]";
    	mes "Now you become a ^0000FFPriest^000000.";
    	jobchange 4031;
    	close;
    
    LWizard:
    		if(class !=4025) goto LNotMage;
    		goto LWiz2;
    
    LNotMage:
    	mes "[Baby Job Master]";
    	mes "You are not a Mage.";
    	close;
    
    LWiz2:
    	getitem 1608,1;
    	mes "[Baby Job Master]";
    	mes "Now you become a ^0000FFWizard^000000.";
    	jobchange 4032;
    	close;
    
    LSecondClass2:
    	if(joblevel<40) goto Ljobforty;
    	if(sex==0) goto LFsecond2;
    	if(sex==1) goto LMsecond2;
    
    LFsecond2:
    	menu "Crusader",LCrusader,"Sage",LSage,"Dancer",LDancer,"Alchemist",LAlchemist,"Rogue",LRogue,"Monk",LMonk,"Soul Linker",LSoulLink;
    	
    LMsecond2:
    	menu "Crusader",LCrusader,"Sage",LSage,"Bard",LBard,"Alchemist",LAlchemist,"Rogue",LRogue,"Monk",LMonk,"Soul Linker",LSoulLink;
    	
    LNotTaekwon2:
    	mes "[Baby Job Master]";
    	mes "You are not a Taekwon.";
    	close;
    
    LSoulLink:
    	goto LNotTaekwon2;
    	mes "[Baby Job Master]";
    	mes "This job is not yet availible.";
    	close;
    
    
    LCrusader:
    		if(class !=4024) goto LNotSword2;
    		goto LCrus2;
    
    LNotSword2:
    	mes "[Baby Job Master]";
    	mes "You are not a Swordman";
    	close;
    
    LCrus2:
    	getitem 1117,1;
    	mes "[Baby Job Master]";
    	mes "Now you become a ^0000FFCrusader^000000.";
    	jobchange 4037;
    	close;
    
    LBard:
    	if(class !=4026) goto LNotArch3;
    	goto LBard2;
    
    LNotArch3:
    	mes "[Baby Job Master]";
    	mes "You are not an Archer";
    	close;
    
    LBard2:
    	getitem 1902,1;
    	mes "[Baby Job Master]";
    	mes "Now you become a ^0000FFBard^000000.";
    	jobchange 4042;
    	close;
    
    LDancer:
    	if(class !=4026) goto LNotArch2;
    	goto LDanc2;
    
    LNotArch2:
    	mes "[Baby Job Master]";
    	mes "You are not an Archer";
    	close;
    
    LDanc2:
    	getitem 1951,1;
    	mes "[Baby Job Master]";
    	mes "Now you become a ^0000FFDancer^000000.";
    	jobchange 4043;
    	close;
    
    LAlchemist:
    	mes "[Baby Job Master]";
    	if(class !=4028) goto LNotMerc2;
    	goto LAlch2;
    
    LNotMerc2:
    	mes "[Baby Job Master]";
    	mes "You are not a Merchant";
    	close;
    
    LAlch2:
    	getitem 1358,1;
    	mes "[Baby Job Master]";
    	mes "Now you become a ^0000FFAlchemist^000000.";
    	jobchange 4041;
    	close;
    
    LRogue:
    	if(class !=4029) goto LNotThief2;
    	goto LRogue2;
    
    LNotThief2:
    	mes "[Baby Job Master]";
    	mes "You are not a Thief";
    	close;
    
    LRogue2:
    	getitem 1214,1;
    	mes "[Baby Job Master]";
    	mes "Now you become a ^0000FFRogue^000000.";
    	jobchange 4040;
    	close;
    
    LMonk:
    	if(class !=4027) goto LNotAco2;
    	goto LMonk2;
    
    LNotAco2:
    	mes "[Baby Job Master]";
    	mes "You are not an Acolyte";
    	close;
    
    LMonk2:
    	getitem 1802,1;
    	mes "[Baby Job Master]";
    	mes "Now you become a ^0000FFMonk^000000.";
    	jobchange 4038;
    	close;
    
    LSage:
    	if(class !=4025) goto LNotMage2;
    	goto LSage2;
    
    LNotMage2:
    	mes "[Baby Job Master]";
    	mes "You are not a Mage";
    	close;
    
    LSage2:
    	getitem 1550,1;
    	mes "[Baby Job Master]";
    	mes "Now you become a ^0000FFSage^000000.";
    	jobchange 4039;
    	close;
    
    }
    

     

     

  4. //===== rAthena Script ======================================= 
    // BattleGround System - KvM Entrance NPCs
    //===== By: ================================================== 
    //= L0ne_W0lf
    //===== Current Version: ===================================== 
    //= 1.1
    //===== Compatible With: ===================================== 
    //= rAthena 1.0
    //===== Description: ========================================= 
    //= [AEGIS Conversion]
    //= Kreiger Von Midgard Battleground Entrance NPCs
    //= Original NPCs scrapped from bg_common.
    //===== Additional Comments: ================================= 
    //= 1.0 First Version.
    //= 1.1 Corrected some typos, and shifted messages around.
    //=     Corrected iRO style quest log entries, however it's
    //=     advisable that you not use them, as they conflict.
    //============================================================
    
    // KvM Officer - Guillaume
    //============================================================
    bat_room,164,178,5	script	KVM Mercenary Officer#1	418,{
    	/*
    	set .@kvm,checkquest(6026,PLAYTIME);
    	if ((.@kvm == 0) || (.@kvm == 1)) {
    		mes "[Croix Mercenary Officer]";
    		mes "I know that you've already signed with the Croix. Go back and join their team. We will not accept traitors to fight for us.";
    		close;
    	}
    	else if (.@kvm == 2) erasequest 6026;
    	*/
    	set .@permit,checkquest(6025,PLAYTIME);
    	if ((.@permit == 0) || (.@permit == 1)) {
    		mes "[Guillaume Mercenary Officer]";
    		mes "It seems you have recently participated in a KVM battle. You must wait 5 minutes before signing up again.";
    		close;
    	}
    	else if (.@permit == 2) erasequest 6025;
    	mes "[Guillaume Mercenary Officer]";
    	mes "Let them know the real might of Guillaume!";
    	next;
    	switch(select("I will fight with you.:End Conversation.")) {
    	case 1:
    		mes "[Guillaume Mercenary Officer]";
    		mes "Show them how strong we are.";
    		mes "Today, everyone will hear the shout of triumph from Guillaume!";
    		close2;
    		//setquest 6025;
    		if (BaseLevel > 79)  warp "bat_room",169,223;
    		else if (BaseLevel < 60) warp "bat_room",197,223;
    		else warp "bat_room",225,223;
    		close;
    	case 2:
    		mes "[Guillaume Mercenary Officer]";
    		mes "We will win!";
    		close;
    	}
    }
    
    // Guillaume Knight - KvM
    //============================================================
    bat_room,167,178,5	script	Guillaume Knight#kvm	417,{
    	mes "[Guillaume Knight]";
    	mes "Hello.";
    	mes "What do you want to know?";
    	next;
    	switch(select("Apply for KVM.:What is KVM?:How do I participate in KVM?:I want to know my Kreiger Points.")) {
    	case 1:
    		mes "[Guillaume Knight]";
    		mes "Applications are not available yet.";
    		mes "To apply, you need to go to a KVM Mercenary Officer.";
    		close;
    	case 2:
    		mes "[Guillaume Knight]";
    		mes "KVM is the abbreviation of Kreiger Von Midgard.";
    		mes "Adventurer, are you aware that the way to the new world has been opened?";
    		next;
    		mes "[Guillaume Knight]";
    		mes "We, the Guillaume Administration, have several plans to advance to the new world.";
    		mes "And KVM is one of them.";
    		next;
    		mes "[Guillaume Knight]";
    		mes "It means that we, one of many countries in the Midgard continent,";
    		mes "have decided to employ many adventurers for the immediate advance to the new world.";
    		next;
    		mes "[Guillaume Knight]";
    		mes "Therefore, to select the best adventurers, we are holding the KVM.";
    		mes "We exspect responses from many adventurers.";
    		next;
    		mes "[Guillaume Knight]";
    		mes "And we will give them rewards for their participation!";
    		mes "As for the rewards, please contact a KVM Logistic Officer.";
    		close;
    	case 3:
    		mes "[Guillaume Knight]";
    		mes "Basically, KVM is a 5 on 5 battle.";
    		mes "First, you apply with a KVM receptionist, in a group or individually.";
    		next;
    		mes "[Guillaume Knight]";
    		mes "Group applications are for when you intend to enter the KVM with your party members,";
    		mes "and a personal application is for when you intend to enter the KVM individually.";
    		next;
    		mes "[Guillaume Knight]";
    		mes "Please apply with a KVM officer, and he will contact you later when you are in Prontera.";
    		next;
    		mes "[Guillaume Knight]";
    		mes "Then you enter and follow the instructions in the battlefield.";
    		next;
    		mes "[Guillaume Knight]";
    		mes "However, please be advised that unless you are in the KVM office, he cannot contact you.";
    		close;
    	case 4:
    		mes "[Guillaume Knight]";
    		mes "Your Kreiger Points are:";
    		mes ""+kvm_point+".";
    		close;
    	}
    }
    
    // KvM Officer - Croix
    //============================================================
    bat_room,164,121,1	script	KVM Mercenary Officer#2	414,{
    	/*
    	set .@kvm,checkquest(6025,PLAYTIME);
    	if ((.@kvm == 0) || (.@kvm == 1)) {
    		mes "[Croix Mercenary Officer]";
    		mes "I know that you've already signed with the Guillaume. Go back and join their team. We will not accept traitors to fight for us.";
    		close;
    	}
    	else if (.@kvm == 2) erasequest 6025;
    	*/
    	set .@permit,checkquest(6025,PLAYTIME);
    	if ((.@permit == 0) || (.@permit == 1)) {
    		mes "[Croix Mercenary Officer]";
    		mes "It seems you have recently participated in a KVM battle. You must wait 5 minutes before signing up again.";
    		close;
    	}
    	else if (.@permit == 2) erasequest 6025;
    	mes "[Croix Mercenary Officer]";
    	mes "Let them know the real might of Croix!";
    	next;
    	switch(select("I will fight with you.:End Conversation.")) {
    	case 1:
    		mes "[Croix Mercenary Officer]";
    		mes "Show them how strong we are.";
    		mes "Today, everyone will hear the shout of triumph from Croix!";
    		close2;
    		//setquest 6026;
    		if (BaseLevel > 79) warp "bat_room",169,207;
    		else if (BaseLevel < 60) warp "bat_room",197,207;
    		else warp "bat_room",225,207;
    		close;
    	case 2:
    		mes "[Croix Mercenary Officer]";
    		mes "We will win!";
    		close;
    	}
    }
    
    // Croix Knight - KvM
    //============================================================
    bat_room,167,121,1	script	Croix Knight#kvm	413,{
    	mes "[Croix Knight]";
    	mes "Hello.";
    	mes "What do you want to know?";
    	next;
    	switch(select("Apply for KVM.:What is KVM?:How do I participate in KVM?:I want to know my Kreiger Points.")) {
    	case 1:
    		mes "[Croix Knight]";
    		mes "Applications are not available yet.";
    		mes "To apply, you need to go to a KVM Mercenary Officer.";
    		close;
    	case 2:
    		mes "[Croix Knight]";
    		mes "KVM is the abbreviation of Kreiger Von Midgard.";
    		mes "Adventurer, are you aware that the way to the new world has been opened?";
    		next;
    		mes "[Croix Knight]";
    		mes "We, the Croix Administration, have several plans to advance to the new world.";
    		mes "And KVM is one of them.";
    		next;
    		mes "[Croix Knight]";
    		mes "It means that we, one of many countries in the Midgard continent,";
    		mes "have decided to employ many adventurers for the immediate advance to the new world.";
    		next;
    		mes "[Croix Knight]";
    		mes "Therefore, to select the best adventurers, we are holding the KVM.";
    		mes "We exspect responses from many adventurers.";
    		next;
    		mes "[Croix Knight]";
    		mes "And we will give them rewards for their participation!";
    		mes "As for the rewards, please contact a KVM Logistic Officer.";
    		close;
    	case 3:
    		mes "[Croix Knight]";
    		mes "Basically, KVM is a 5 on 5 battle.";
    		mes "First, you apply with a KVM receptionist, in a group or individually.";
    		next;
    		mes "[Croix Knight]";
    		mes "Group applications are for when you intend to enter the KVM with your party members,";
    		mes "and a personal application is for when you intend to enter the KVM individually.";
    		next;
    		mes "[Croix Knight]";
    		mes "Please apply with a KVM officer, and he will contact you later when you are in Prontera.";
    		next;
    		mes "[Croix Knight]";
    		mes "Then you enter and follow the instructions in the battlefield.";
    		next;
    		mes "[Croix Knight]";
    		mes "However, please be advised that unless you are in the KVM office, he cannot contact you.";
    		close;
    	case 4:
    		mes "[Croix Knight]";
    		mes "Your Kreiger Points are:";
    		mes ""+kvm_point+".";
    		close;
    	}
    }
    
    

     

     

  5. @Glitch_: I just read your post today, and I will look into it now.

    I forgot to put the variable name in quotes ... :("$#halloween_event"

    Here is your script with that fixed: http://rathena.kpaste.net/e752021?raw

    Wow, sometimes I look back at my scripts and think "I wrote that??!"

    I amaze myself XD

    AnnieRuru: now I see what you mean by Script Frenzy Mode /heh

    I wanna ask. How do i use check on ip and mac, & on the same time give to only new players register from today onwards - example

    Lets say i have 1000 accounts register in my sql db.

    i want the ACCOUNT_ID from 1001 only can receive the freebies. and also to check mac / ip at the same time?

    cause mine is a server that is already launch. and some players already have freebies.

    Or any other alternative to do this?

  6. I would like someone to help me with reflect skill ( of any kind, Pally's reflect, Orc_lord card reflect , VM reflect or any other possible reflect )

    A = Champ

    B = Pally

    C = LK

    D = Pally 2

    B devo A , and D devo C.

    Both pally is reflect skill is on. C Bowling bash B&A . C receives the reflect damage rather then his pally D. (Nor the D pally or the LK receive )

    Senario 2. A VS C on GVG. A with devo B , C is not. C wears VM or Orclord card. A asuras C but, A receive the reflect dmg from the vm or orclord . ( I want this B the pally to receive it)

    Dont mind purchasing it. PM me.

  7. http://pastebin.com/S6FcKnYf

    try modifying it

    for me it works perfectly fine

    been using it since before

    if you want to check logs

    check for these tables in your database

    gmspawner

    gmname

    pro's and cons

    about this cons

    sub gm's can spam this npc

    i haven't modified it to have an interval for the next request of the sub gm

    maybe you can work on that one

    is not appearing D: it says script loaded.

    i even tabbed the

    sec_pri,26,47,4 script GMSPAWNER 990,{

  8. How to disable kagerou and Oboro in this script.

    This is euphy all in 1 NPC

    if (getarraysize(.OnClick)) {
     if (.OnClick[0]) { specialeffect2 313; percentheal 100,100; }
     if (.OnClick[1]) { specialeffect2 42; sc_start SC_BLESSING,600000,10; specialeffect2 37; sc_start SC_INCREASEAGI,600000,10; }
     if (.OnClick[2] && getbrokenid(1)) { specialeffect2 101; atcommand "@repairall"; } }
    set .@menu$,"";
    for (set .@i,0; .@i < getarraysize(.MainMenu$); set .@i,.@i+1) {
     if (.MenuOption & pow(2,.@i))
      set .@menu$, .@menu$+" ~ "+.MainMenu$[.@i];
     set .@menu$, .@menu$+":"; }
    switch(select(.@menu$)) {
     case 1:
      function Job_Menu; function A_An;
      if (Class > 4049) {
    message strcharinfo(0),"No more jobs are available."; close; }
      if (checkfalcon() || checkcart() || checkriding() || ismounting()) {
    message strcharinfo(0),"Please remove your "+((checkfalcon())?"falcon":"")+((checkcart())?"cart":"")+((checkriding())?"Peco":"")+((ismounting())?"mount":"")+" before proceeding.";
    close; }
      if (.SkillPointCheck && SkillPoint) { message strcharinfo(0),"Please use all your skill points before proceeding."; close; }
      set .@eac, eaclass();
      set .@i, ((.ThirdClass)?roclass(.@eac&EAJ_UPPERMASK):Class);
      if (.@i > 6 && .@i < 22) {
    if (BaseLevel < .Rebirth[0] || JobLevel < .Rebirth[1]) {
     set .@blvl, .Rebirth[0]-BaseLevel; set .@jlvl, .Rebirth[1]-JobLevel;
     message strcharinfo(0),"You need "+((.@blvl>0)?.@blvl+" more base levels "+((.@jlvl>0)?"/ ":""):"")+((.@jlvl>0)?.@jlvl+" more job levels ":"")+"to continue.";
     close; }
    if (Class > 21) { Job_Menu(roclass(.@eac|EAJL_THIRD)); close; }
    while(1) {
     set .@i, select(" ~ ^0055FFRebirth^000000:"+((.ThirdClass)?" ~ ^FF0000Third Class^000000":"")+": ~ ^777777Cancel^000000");
     if (.@i==3) close;
     Job_Menu(((.@i==1)?4001:roclass(.@eac|EAJL_THIRD))); } }
      set .@j1, roclass(.@eac|EAJL_2_1); set .@j2,roclass(.@eac|EAJL_2_2);
      if ((.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE) setarray .@exp[0],roclass(.@eac|EAJL_THIRD),99;
      if (Class == Job_Ninja) setarray .@exp[0],.@j1,70;
      if (.@exp[0] && .ThirdClass) {
    if (BaseLevel < .Rebirth[0] || JobLevel < .@exp[1]) {
     set .@blvl, .Rebirth[0]-BaseLevel; set .@jlvl, .@exp[1]-JobLevel;
     message strcharinfo(0),"You need "+((.@blvl>0)?.@blvl+" more base levels "+((.@jlvl>0)?"/ ":""):"")+((.@jlvl>0)?.@jlvl+" more job levels ":"")+"to continue.";
     close; }
    Job_Menu(.@exp[0]); close; }
      if (.@eac&EAJL_2)
    if (.@eac&(EAJL_UPPER|EAJL_BABY) || roclass(.@eac|EAJL_UPPER) == -1) {
     message strcharinfo(0),"No more jobs are available."; close; }
      if ((.@eac&EAJ_BASEMASK) == EAJ_NOVICE) {
    if (JobLevel < .JobReq[0]) message strcharinfo(0),"A job level of "+.JobReq[0]+" is required to change into the 1st Class.";
    else if (Class == 4001 && .LastJob && lastJob) Job_Menu(roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER));
    else switch(Class) {
     case 0: Job_Menu(1,2,3,4,5,6,23,4046,24,25,4023);
     case 4001: Job_Menu(4002,4003,4004,4005,4006,4007);
     case 4023: Job_Menu(4024,4025,4026,4027,4028,4029,4045);
     default: message strcharinfo(0),"An error has occurred."; break; }
    close; }
      if (.@eac&EAJL_THIRD && Upper == 0) { // Non-trans third job
    if (BaseLevel < .Rebirth[0] || JobLevel < .Rebirth[1]) {
     set .@blvl, .Rebirth[0]-BaseLevel; set .@jlvl, .Rebirth[1]-JobLevel;
     mes "You need "+((.@blvl>0)?.@blvl+" more base levels "+((.@jlvl>0)?"/ ":""):"")+((.@jlvl>0)?.@jlvl+" more job levels ":"")+"to continue.";
     close;
    }
    Job_Menu(4001);
    close;
      }
      if (roclass(.@eac|EAJL_2_1) == -1 || roclass(.@eac|EAJL_2_2) == -1) message strcharinfo(0),"No more jobs are available.";
      else if (!(.@eac&EAJL_2) && JobLevel < .JobReq[1]) message strcharinfo(0),"A job level of "+.JobReq[1]+" is required to change into the 2nd Class.";
      else if (.LastJob && lastJob && (.@eac&EAJL_UPPER)) Job_Menu(lastJob+4001);
      else Job_Menu(.@j1,.@j2);
      close;
      function Job_Menu {
    if (getargcount() > 1) {
     set .@menu$,"";
     for(set .@i,0; .@i<getargcount(); set .@i,.@i+1)
      set .@menu$, .@menu$+" ~ "+jobname(getarg(.@i))+":";
     set .@menu$, .@menu$+" ~ ^777777Cancel^000000"; }
    while(1) {
     if (getargcount() > 1) {
      set .@i, getarg(select(.@menu$)-1,0);
      if (!.@i) close; }
     else set .@i, getarg(0);
     if ((.@i == 23 || .@i == 4045) && BaseLevel < .SNovice) {
      message strcharinfo(0),"A base level of "+.SNovice+" is required to turn into a "+jobname(.@i)+"."; }
     else if (select(" ~ Change into ^0055FF"+jobname(.@i)+"^000000 class: ~ ^777777Go back^000000")==1) {
      message strcharinfo(0),"Became "+A_An(jobname(.@i))+"!";
      if (.@i==4001 && .LastJob) set lastJob, Class;
      jobchange .@i;
      if (.@i==4001 || .@i==4023) resetlvl(1);
      specialeffect2 338; specialeffect2 432;
      if (.Platinum) Get_Platinum;
      close; }
     if (getargcount() == 1) return;
    } end; }
    

  9. Requesting a script that it will auto mute <minutes> , when a player is spamming skill over a certain <amount>

    Example. dangerous soul collect + critical explosion = 2 skills

    And will mute when spamm more then = 10 skills

    Mute minute increases if he continues to abuse skill spam.

    will be reset after 24 hours.

    Anyone?

  10. Answer ...

    //============================================================
    // Shop NPCs -- supplying no argument displays entire menu.
    // callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}};
    //============================================================
    dicastes01,279,157,0 script Scroll Shop#1 998,{ callfunc "qshop"; }
    

    Yeah i know that. i change it to other places. but it cant seem to work.

    i've change quest_shop & qshop to qshop1 & quest_shop1

    Im trying to say. I want to use this npc for a drif function.

    1st npc is the above script and is working fine - selling scrolls.

    2nd NPC is for doing quest's.

    But if i put it another place. it will clash together.\

    Here is my second script. Whats the problem

    //===== rAthena Script =======================================
    //= Euphy's Quest Shop
    //===== By: ==================================================
    //= Euphy
    //===== Current Version: =====================================
    //= 1.6
    //===== 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.
    //============================================================
    // Shop NPCs -- supplying no argument displays entire menu.
    // callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}};
    //============================================================
    dicastes01,228,197,5 script Quest Shop#2 958,{ callfunc "qshop"; }
    
    // Script Core
    //============================================================
    - script quest_shop47 -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,0;   // Show item IDs? (1: yes / 0: no)
    set .ShowZeny,0; // 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],"Quest A","Quest B","Quest C";
    // -----------------------------------------------------------
    //  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,30271,1,0,0,7289,400,7226,250,975,350,4001,99,703,350);
    Add(1,30613,1,0,0,7289,400,7226,250,976,350,4001,99,703,350);
    Add(1,30466,1,0,0,7289,400,7226,250,980,350,4001,99,703,350);
    Add(1,30098,1,0,0,7289,400,7226,250,978,350,4001,99,703,350);
    Add(1,30419,1,0,0,7289,400,7226,250,981,350,4001,99,703,350);
    Add(2,30110,1,0,0,7035,200,7152,470,975,400,4409,74);
    Add(2,30706,1,0,0,7035,200,7152,470,976,400,4409,74);
    Add(2,30179,1,0,0,7035,200,7152,470,978,400,4409,74);
    Add(2,30477,1,0,0,7035,200,7152,470,980,400,4409,74);
    Add(3,30707,1,0,0,7267,400,6032,470,975,500,4116,88,703,450);
    Add(3,30573,1,0,0,7267,400,6032,470,975,500,4116,88,703,450);
    Add(3,30572,1,0,0,7267,400,6032,470,975,500,4116,88,703,450);
    Add(3,30571,1,0,0,7267,400,6032,470,975,500,4116,88,703,450);
    Add(3,30570,1,0,0,7267,400,6032,470,975,500,4116,88,703,450);
    Add(3,30180,1,0,0,7267,400,6032,470,975,500,4116,88,703,450);
    Add(3,5426,1,0,0,7267,400,6032,470,975,500,4116,88,703,450);
    // -----------------------------------------------------------
    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:";
    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[1] & 1) || (@qe[1] & 256) || (@qe[1] & 512)) && @qe[2] > 0)
     set .@preview,1;
    addtimer 1000, strnpcinfo(0)+"::OnEnd";
    while(1) {
     switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[6])?" ~ 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 699;
      close;
     case 2:
      setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), 1;
      if (@qe[1] & 1) changelook LOOK_HEAD_BOTTOM, @qe[2];
      if (@qe[1] & 256) changelook LOOK_HEAD_TOP, @qe[2];
      if (@qe[1] & 512) changelook LOOK_HEAD_MID, @qe[2];
      break;
     case 3:
      close;
     }
    }
    OnEnd:
    if (@qe[6]) {
     changelook LOOK_HEAD_BOTTOM, @qe[3];
     changelook LOOK_HEAD_TOP, @qe[4];
     changelook LOOK_HEAD_MID, @qe[5];
    }
    deletearray @qe[0],7;
    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_shop47::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
    

  11. What things do i need to change to make this a different npc ?

    First NPC i use it for players to make scroll.

    Second i would like to make it for a quest shop.

    But it seems i cant get it work, It either mix together and one cant work or it cant even open.

    This is one of Euphy Scipt.

    //===== rAthena Script =======================================
    //= Euphy's Quest Shop
    //===== By: ==================================================
    //= Euphy
    //===== Current Version: =====================================
    //= 1.6
    //===== 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.
    //============================================================
    // Shop NPCs -- supplying no argument displays entire menu.
    // callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}};
    //============================================================
    dicastes01,279,157,0 script Scroll 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,0;   // Show item IDs? (1: yes / 0: no)
    set .ShowZeny,0; // 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],"Scroll","Linker","Converters";
    // -----------------------------------------------------------
    //  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,12216,150,0,0,671,2);
    Add(1,12215,150,0,0,671,2);
    Add(1,12219,150,0,0,671,2);
    Add(1,12220,100,0,0,671,2);
    Add(1,12217,100,0,0,671,2);
    Add(1,12218,100,0,0,671,2);
    Add(1,14516,100,0,0,671,2);
    Add(1,14588,5,0,0,671,1);
    Add(1,14589,5,0,0,671,1);
    Add(1,14590,5,0,0,671,1);
    Add(1,14591,5,0,0,671,1);
    Add(1,12150,7,0,0,671,1);
    Add(2,22000,10,0,0,671,1);
    Add(2,22001,10,0,0,671,1);
    Add(2,22002,10,0,0,671,1);
    Add(2,22003,10,0,0,671,1);
    Add(2,22004,10,0,0,671,1);
    Add(2,22005,10,0,0,671,1);
    Add(2,22006,10,0,0,671,1);
    Add(2,22007,10,0,0,671,1);
    Add(2,22008,10,0,0,671,1);
    Add(2,22009,10,0,0,671,1);
    Add(2,22010,10,0,0,671,1);
    Add(2,22011,10,0,0,671,1);
    Add(2,22012,10,0,0,671,1);
    Add(2,22013,10,0,0,671,1);
    Add(2,22014,10,0,0,671,1);
    
    Add(3,12114,50,0,0,671,1);
    Add(3,12115,50,0,0,671,1);
    Add(3,12116,50,0,0,671,1);
    Add(3,12117,50,0,0,671,1);
    // -----------------------------------------------------------
    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:";
    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[1] & 1) || (@qe[1] & 256) || (@qe[1] & 512)) && @qe[2] > 0)
     set .@preview,1;
    addtimer 1000, strnpcinfo(0)+"::OnEnd";
    while(1) {
     switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[6])?" ~ 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 699;
      close;
     case 2:
      setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), 1;
      if (@qe[1] & 1) changelook LOOK_HEAD_BOTTOM, @qe[2];
      if (@qe[1] & 256) changelook LOOK_HEAD_TOP, @qe[2];
      if (@qe[1] & 512) changelook LOOK_HEAD_MID, @qe[2];
      break;
     case 3:
      close;
     }
    }
    OnEnd:
    if (@qe[6]) {
     changelook LOOK_HEAD_BOTTOM, @qe[3];
     changelook LOOK_HEAD_TOP, @qe[4];
     changelook LOOK_HEAD_MID, @qe[5];
    }
    deletearray @qe[0],7;
    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
    

  12. prefer to use .mp3 extension

    and put to the BGM folder.

    you can add the script command : playBGM or playBGMall to change the BGM.

    .mp3 extension is better I think, because it support stereo sound and it only take small size. :D

    if you want to .wav format file,

    put into the /data/wav directory.

    and you can add the script command : soundeffect or soundeffect2

    read the script_commands.txt

    Where is the script commands. And how do i add the soundeffect thingy?

    Sorry imma noob at this :X

  13. Maybe he wants 100 golden coins as the prize for each castle that can be claimed on guild leader's room.

    (I'm changing my job to become a mind reader) :P

    If you guess right then he just need to change the drops of his treasure ( mob_db ) ^_^

    Where do i need to change it and how many do i need to change it?

    :X to make it 100 per castle

×
×
  • Create New...