Jump to content

Recommended Posts

Posted

File Name: Vendor Control

File Submitter: Emistry

File Submitted: 12 Jul 2013

File Category: Utilities

Content Author: Emistry

 

A script that basically used to control messy vendors in your server.

Included one helper npc that enable Vendor to pick their spot easily.

 

( A Screenshot from a Server that using this scripts )

wTJFzSl.jpg

 

Click here to download this file

https://rathena.org/board/index.php?/files/file/2933-%7B?%7D/

Posted

Hi Emistry, i tried the advance breaker i got error, i guess it's the mob?

 

 

instead of 3000 in the guide i change it with 3009

 

but when i warped in to the place it keeps me from getting error..

Posted

Hi Emistry, i tried the advance breaker i got error, i guess it's the mob?

 

 

instead of 3000 in the guide i change it with 3009

 

but when i warped in to the place it keeps me from getting error..

i think it's because of the mob sprite..somehow the error will be shown randomly when you are using emprerium sprite with other mob id ...

you can just change the mob id / sprite to any other you want ...

  • 2 weeks later...
Posted

Hi Emistry, in your script Wiki Monster Event, how do i disable for the element, level, size questions ?

 

 

prontera,155,167,5    script    Monster Wiki    439,{
while( 1 ){
mes "Event Status : "+((!.WikiStatus )?"^FF0000OFF":"^0000FFON")+" ^000000";
mes "^00FF00_______________________________^000000";
mes "How may i assist you, ^0000FF"+strcharinfo(0)+"^000000 ?";
next;
switch( select( ( !.WikiStatus || !.MonsterID )?"":"Write Answer",
                "^00FF00Information^000000",
                ( getgmlevel() < 60 )?"":"^FF0000[GM]^000000 "+(( !.WikiStatus )?"Start Event":"Stop Event"),
                ( getgmlevel() < 80 )?"":"^FF0000[GM]^000000 Setting" )){
Case 1:
    if( getgmlevel() >= 80 ) mes "Answer : ^FF0000"+.Answer$+"^000000";
    switch( .Mode ){
        Case 0:
            mes "Please Input the ^FF0000NAME^000000 of monster.";
            mes "^0000FFRemind^000000 : It is ^FF0000Case-Sensitive^000000";
            mes "Example : ^0000FFPoring^000000";
            break;
        Case 1:    
            mes "Please Input the ^FF0000LEVEL^000000 of monster.";
            mes "Example. ^0000FF10 / 20 / 35 / 75^000000";
            set .Hint,getmonsterinfo( .MonsterID,1 ) - rand(30);
            mes "^FF0000Hint^000000 : Between "+( (( .Hint ) < 1 )?"0":.Hint)+" ~ "+( getmonsterinfo( .MonsterID,1 ) + rand(30) )+" ";
            break;
        Case 2:
            mes "Please Input the ^FF0000SIZE^000000 of monster.";
            mes "^0000FFRemind^000000 : It is ^FF0000Case-Sensitive^000000";
            mes "Example. ^0000FFSmall / Medium / Large^000000";
            break;
        Case 3:
            mes "Please Input the ^FF0000RACE^000000 of monster.";
            mes "^0000FFRemind^000000 : It is ^FF0000Case-Sensitive^000000";
            mes "^FF0000List of Available Answer^000000";
            mes "^00FF00_______________________________^000000";
            for( set .@i,0; .@i < getarraysize( .Race$ ); set .@i,.@i + 1 ){
                mes " - ^0000FF"+.Race$[.@i]+"^000000";
                }
            break;
        Case 4:    
            mes "Please Input the ^FF0000ELEMENT^000000 of monster.";
            mes "^0000FFRemind^000000 : It is ^FF0000Case-Sensitive^000000";
            mes "^FF0000List of Available Answer^000000";
            mes "^00FF00_______________________________^000000";
            for( set .@i,0; .@i < getarraysize( .Element$ ); set .@i,.@i + 1 ){
                mes " - ^0000FF"+.Element$[.@i]+"^000000";
                }
            break;
        }
    input @Guess$;
    if( .MonsterID == 0 || @Guess$ != .Answer$ ){
        mes "Sorry, you are ^FF0000WRONG^000000 or ^FF0000Too Late^000000 for the Answer.";
        close;
    }else{
        mes "^FF0000Correct^000000 !! I wonder how good are you in this.";
        stopnpctimer;
        getitem $WikiItemID,$WikiAmount;
        close2;
        setnpcdisplay( strnpcinfo(0),rand( 436,439 ) );
        announce "You're Right [ "+strcharinfo(0)+" ] . The Answer is [ "+.Answer$+" ]",bc_npc,0xED1ADC;
        set .MonsterID,0;
        doevent strnpcinfo(0)+"::OnStart";
    }
    end;
    
Case 2:
    mes "This is a ^FF0000Monster Wiki^000000";
    mes "I will ask you everything about ^FF0000Monster^000000.";
    mes "^00FF00_______________________________^000000";
    mes "The ^0000FFQuestions^000000 could be either in ^FF0000Name , Race , Element , Level , Size ^000000 of Monster.";
    next;
    break;
Case 3:
    if( !$WikiRound || getitemname( $WikiItemID ) == "null" ){
        mes "Please Configure your ^FF0000NPC Setting^000000 before you start.";
        next;
        break;
        }
    set .WikiStatus,( .WikiStatus )?"0":"1";
    mes "Event is now "+( .WikiStatus )?"^0000FFStarted":"^FF0000Stopped"+"^000000";
    announce "Monster Wiki Event is now "+( .WikiStatus )?"Started":"Stopped"+"^000000",bc_blue;
    close2;
    if( .WikiStatus ){
        set .Round,0;
        doevent strnpcinfo(0)+"::OnStart";
        }
    end;
Case 4:
    while( 1 ){
    mes "How can i assist you ^FF0000GM^000000?";
    next;
    switch( select( "Prize [ ^0000FF"+$WikiAmount+" x "+getitemname( $WikiItemID )+"^000000 ]",
                    "Round [ ^0000FF"+$WikiRound+"^000000 ]",
                    "^0000FFBack^000000" )){
        Case 1:
            mes "Input the ^FF0000Item ID^000000";
            do{
                input $WikiItemID,501,32767;
            }while( getitemname( $WikiItemID ) == "null" );
            mes "Input the ^FF0000Amount^000000";
            input $WikiAmount,1,32767;
            next;
            break;
        Case 2:
            mes "Input the ^FF0000Max. Round^000000";
            input $WikiRound,1,50;
            next;
            break;
        Case 3:
            mes "Redirect back to menu...";
            next;
            }
            break;
        }
    break;
    }
}


OnMinute00:
for( set .@i,3; .@i > 0 ; set .@i,.@i - 1 ){
announce "Monster Wiki Event will take place in Prontera within "+.@i+" Minutes",bc_blue;
sleep 60000;
}
set .Round,0;
set .WikiStatus,1;


OnStart:
sleep2 5000;
set .Round,.Round + 1;
if( .Round > $WikiRound ){
mapannounce .Map$,"Monster Wiki Event has Ended. Thank for Participate in this Event.",bc_map,0x7766EE;
set .WikiStatus,0;
sleep2 5000;
//mapwarp .Map$,"prontera",155,171;
setnpcdisplay( strnpcinfo(0),rand( 436,439 ) );
}else{
npctalk "Round [ "+.Round+" ] within 5 Seconds.";
sleep2 5000;
    do{
        set .MonsterID,rand( 1001,2380 );
    }while( getmonsterinfo( .MonsterID,0 ) == "null" || getmonsterinfo( .MonsterID,0 ) == "" || getmonsterinfo( .MonsterID,1 ) == -1 );
    set .Mode,rand(5);
    switch( .Mode ){
        Case 0:    set .Answer$, getmonsterinfo( .MonsterID,0 );    break;    // Name
        //Case 1:    set .Answer$, getmonsterinfo( .MonsterID,1 );    break;    // Level
        //Case 2:    set .Answer$, .Size$[ getmonsterinfo( .MonsterID,18 ) ];    break;    // Size
        //Case 3:    set .Answer$, .Race$[ getmonsterinfo( .MonsterID,19 ) ];    break;    // Race
        Case 4:    set .Answer$, .Element$[ getmonsterinfo( .MonsterID,20 ) ];    break;    // Element
        }
    setnpcdisplay( strnpcinfo(0),.MonsterID );
    npctalk "Click me to view the Question of this Round..";
    initnpctimer;
}
end;


OnTimer10000:
    npctalk "20 Seconds to go...";
    end;


OnTimer20000:
    npctalk "10 Seconds to go...";
    end;


OnTimer30000:
mapannounce .Map$,"Time's Up. All Failed in this Round.",bc_map,0x00FF00;
donpcevent strnpcinfo(0)+"::OnStart";
set .MonsterID,0;
stopnpctimer;
end;


OnInit:
OnWhisperGlobal:
set .Map$,"prontera";
setarray .Size$[0],"Small","Medium","Large";
setarray .Race$[0],"Formless","Undead","Brute","Plant","Insect","Fish","Demon","Demi Human","Angel","Dragon";
setarray .Element$[0],"Neutral","Water","Earth","Fire","Wind","Poison","Holy","Dark","Spirit","Undead";
end;
    
    
}
 

 

Posted

change to

    set .Mode,rand(2);
    switch( .Mode ){
        Case 0:    set .Answer$, getmonsterinfo( .MonsterID,0 );    break;    // Name
        Case 1:    set .Answer$, .Element$[ getmonsterinfo( .MonsterID,20 ) ];    break;    // Element
        }
Posted

One Click Auto +4 refiner NPC (any equip) do you have this kind of script sir???????

search script request forum...or other ....

Posted (edited)
[09/Aug 17:24][Debug]: status_change_timer: Null pointer id: 110024029 data: 1 bl-type: 2
[09/Aug 17:24][Debug]: status_change_timer: Null pointer id: 110024036 data: 1 bl-type: 2
[09/Aug 17:24][Debug]: status_change_timer: Null pointer id: 110024027 data: 1 bl-type: 2
[09/Aug 17:24][Debug]: status_change_timer: Null pointer id: 110024020 data: 1 bl-type: 2
[09/Aug 17:25][Debug]: status_change_timer: Null pointer id: 110024032 data: 1 bl-type: 2
[09/Aug 17:25][Debug]: status_change_timer: Null pointer id: 110024039 data: 1 bl-type: 2
[09/Aug 17:26][Debug]: status_change_timer: Null pointer id: 110024028 data: 1 bl-type: 2
[09/Aug 17:26][Debug]: status_change_timer: Null pointer id: 110024030 data: 1 bl-type: 2

 

I had this debug from Dota Runes script (I think).. Because after a while, the Runes NPC won't appear for last few days. I need to reload the script.

 

But today, I've waited about 6 hours and just now the debug from above appear on map-server. But this time, the Runes NPC are still working. It's really makes me confuse why for the past few days, I need to reload the script because the Runes NPC didn't show up after a minute. Is this related to that debug?

 

EDIT 1 : Ahh~ I don't know if this was the real problems. Is it? > http://rathena.org/board/tracker/issue-7499-status-change-timer-weird/

 

EDIT 2 : I've leave the script running for almost a day then when I'm online. This problem happend :

 

vKF2VlP.png

 

NPC won't appear after a minute. So, I need to @loadnpc again..

 

Here's the script :dota_runes.txt

Edited by uDe
  • 1 month later...
Posted

Script Updated !

 

 

This script will limit the inventory of player if the player bring exceeded / insufficient limitation items into the map.
 
For Example :
Guild_vs5 can only bring 100 Yggdrasilberry.
But player bring 101 Yggdrasilberry into the map, and he/she will be kicked out from the map.
or maybe..
Player must bring minimum of 1 Red Potion...
etc....
 
Configuration :
// GM Level to Bypass
.gm_level = 99;
// Check Every X Seconds
.check_delay = 5;
// Apply on Which Maps and what Zone No.
setarray .map$, // "<mapname>","<zone number>",
    "guild_vs1","0",
    "guild_vs2","1",
    "guild_vs3","2",
    "guild_vs4","3",
    "guild_vs5","4";
Zone Settings :
// Zone List + Limited Items for each zone. (max 63 item per zone)
// AddLimitedItem( <zone>,<item>,<limit>,..,<item>,<limit> );
AddLimitedItem( 0,4049,2 );
AddLimitedItem( 1,607,2,608,3,4002,1 );
AddLimitedItem( 2,607,5,608,1,4002,1,5022,1 );
AddLimitedItem( 3,607,1,608,0,5022,-2,7227,1,4002,1 );
AddLimitedItem( 4,607,1,608,0,5022,-2,7227,1,4002,-4 );
  •  
  • Positive = Player can only bring Maximum of that amount of items.
  • Negative = Player must have the Minimum amount of that items.
  • 0 = Totally Disabled, player cant bring any of it.
 
 
 
 
 

  • 3 weeks later...
Posted

Suggestion for your refining script:

Edit an item for argument 8

That the drop succeschance (not to break the item) is only given when you have an special item. (this will get lost after you failed refining.) in other words this item will protect your item of breaking

When you leave this item id = 0 it works like it already does yet

  • 2 weeks later...
Posted

@limited item script bug

You can bring a limited item/s inside the restricted map

 

how to reproduce:

1. Warp to restricted map/limited item map.

2. Stay for a minute or so.

3. You can now click close button.

4. Successfully smuggled the limited item/s.

 

 

Posted (edited)

Hi emistry,i have load SQL table but still get this error


[SQL]: DB error - Table 'serversg85.E-Inquiry' doesn't exist
[Debug]: at script.c:14874 - SELECT `ID` FROM `E-Inquiry` WHERE `Status` = 0 AND `Sender_ID`='2000000'
[Debug]: Source (NPC): E-Inquiry (invisible/not on a map)
[SQL]: DB error - Table 'serversg85.E-Inquiry' doesn't exist
[Debug]: at script.c:14874 - SELECT `ID` FROM `E-Inquiry` WHERE `Status` = 1 AND `Sender_ID`='2000000'
[Debug]: Source (NPC): E-Inquiry (invisible/not on a map)
[SQL]: DB error - Table 'serversg85.E-Inquiry' doesn't exist
[Debug]: at script.c:14874 - SELECT `ID` FROM `E-Inquiry` WHERE `Status` = 2 AND `Sender_ID`='2000000'
[Debug]: Source (NPC): E-Inquiry (invisible/not on a map)
[SQL]: DB error - Table 'serversg85.E-Inquiry' doesn't exist
[Debug]: at script.c:14874 -  SELECT `ID`,`Title`,`Message`,`Inquiry_Time`,`Reply`,`Reply_Time`,`Reply_Name` FROM `E-Inquiry` WHERE `Status`= 0 AND `Sender_ID`='2000000'
[Debug]: Source (NPC): E-Inquiry (invisible/not on a map)
[SQL]: DB error - Table 'serversg85.E-Inquiry' doesn't exist
[Debug]: at script.c:14874 - SELECT `ID` FROM `E-Inquiry` WHERE `Status` = 0 AND `Sender_ID`='2000000'
[Debug]: Source (NPC): E-Inquiry (invisible/not on a map)
[SQL]: DB error - Table 'serversg85.E-Inquiry' doesn't exist
[Debug]: at script.c:14874 - SELECT `ID` FROM `E-Inquiry` WHERE `Status` = 1 AND `Sender_ID`='2000000'
[Debug]: Source (NPC): E-Inquiry (invisible/not on a map)
[SQL]: DB error - Table 'serversg85.E-Inquiry' doesn't exist
[Debug]: at script.c:14874 - SELECT `ID` FROM `E-Inquiry` WHERE `Status` = 2 AND `Sender_ID`='2000000'
[Debug]: Source (NPC): E-Inquiry (invisible/not on a map)
[SQL]: DB error - Table 'serversg85.E-Inquiry' doesn't exist
[Debug]: at script.c:14874 - INSERT INTO `E-Inquiry` ( `Sender_ID`,`Sender_Name`,`Title`,`Message`,`Status`,`Inquiry_Time` ) VALUES ( 2000000,' Ë£îë ','adsads','asadada ',0,'2013-10-16 01:36:47' )
[Debug]: Source (NPC): E-Inquiry (invisible/not on a map)
[SQL]: DB error - Table 'serversg85.E-Inquiry' doesn't exist
[Debug]: at script.c:14874 - SELECT `ID` FROM `E-Inquiry` WHERE `Status` = 0 AND `Sender_ID`='2000000'
[Debug]: Source (NPC): E-Inquiry (invisible/not on a map)
[SQL]: DB error - Table 'serversg85.E-Inquiry' doesn't exist
[Debug]: at script.c:14874 - SELECT `ID` FROM `E-Inquiry` WHERE `Status` = 1 AND `Sender_ID`='2000000'
[Debug]: Source (NPC): E-Inquiry (invisible/not on a map)
[SQL]: DB error - Table 'serversg85.E-Inquiry' doesn't exist
[Debug]: at script.c:14874 - SELECT `ID` FROM `E-Inquiry` WHERE `Status` = 2 AND `Sender_ID`='2000000'
[Debug]: Source (NPC): E-Inquiry (invisible/not on a map)

Edited by Emistry
added code bbcode.
Posted

it's unable to remove it unless you disabled that skill or have some sort of custom mod ...

 

beside..the price wont be affected when you buy the items.

Posted (edited)

Hey Emistry, just wanna say, you've done good. There are a lot of great scripts here. So in return I just wanted to say thank you, and also, you have a " small " typo in your E-Inquiry script.

set .@Select,select(( .@Title$ == "" )?"[ ^FF0000Incomplete^000000 ] Title":"[ ^0000FFCompleted^000000 ] Title",
( .@Message$ == "" )?"[ ^FF0000Incomplete^000000 ] Message":"[^0000FFCompleted^000000 ] Title",

You'll notice here that ( at line 91 ) you have Completed Title twice, where it should say Message. Keep up the good work.

 

Also, this is just a suggestion to improve your E-Inquiry script.

During this process of creating the message:

			Case 2:
				mes "Briefly explain what's your Problem.";
				set .@i,0;
				do{
					input getd(".@Message"+.@i+"$");
					set .@Message$,.@Message$ + getd(".@Message"+.@i+"$")+" ";
					set .@Continue,select("Complete:Continue Messages");
				}while( .@Continue == 2 );
				break;

You should change it to this:

			Case 2:
				mes "Briefly explain what's your Problem.";
				set .@i,0;
				do{
					input getd(".@Message"+.@i+"$");
					set .@Message$,.@Message$ + getd(".@Message"+.@i+"$")+" ";
					next;
					mes "^00FF00____________________________^000000";
					mes "^FF0000Title^000000 : "+.@Title$;
					mes "^00FF00____________________________^000000";
					mes "^FF0000Messages^000000 : "+.@Message$;
					mes "^00FF00____________________________^000000";
					set .@Continue,select("Complete:Continue Messages");
				}while( .@Continue == 2 );
				break;

So that, after updating the message the player is able to see the changes before sending it.

Keep in mind this suggestion is not needed, but would be an over all improvement to an already great script.

Edited by GmOcean

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...