Jump to content

Mabuhay

Members
  • Posts

    446
  • Joined

  • Last visited

  • Days Won

    34

Posts posted by Mabuhay

  1. 8 hours ago, razermantis said:

    Can someone guide me how to put capped damage to all skills

    Example

    Bowling Bash = 80,000 Maxed damage ( Edited stats will do nothing ) Maximum Damage
    Falcon Assult = 120,000 Maxed damage ( Edited stats will do nothing ) Maximum Damage

    Cart Termination = 180,000 Maxed damage ( Edited stats will do nothing ) Maximum Damage

    Asura Strike = 999,999 Maxed damage ( Edited stats will do nothing ) Maximum Damage

    I've done this before but. sadly i forgot it. it's been 7 years
     

    Look for this on battle.cpp :

    static void battle_calc_weapon_final_atk_modifiers(struct Damage* wd, struct block_list *src,struct block_list *target,uint16 skill_id,uint16 skill_lv)

    Add this.. ( remove + ) :

    	// Skill damage adjustment
    	if ((skill_damage = battle_skill_damage(src, target, skill_id)) != 0)
    		ATK_ADDRATE(wd->damage, wd->damage2, skill_damage);
    	
    +	if (skill_id == MO_EXTREMITYFIST) 
    +		wd->damage = cap_value(wd->damage, INT_MIN, 999999 ); //  capped to 999,999
    	

    Do the same to other skills on your list.

  2. Hi, so, I decided to compile all my releases here for easier view to those who wants to see my works.

    Just click on the link to see its description. Enjoy and hope these would help!

    ================================================================================================================================================

    Free Releases :

    I am constantly checking both script request and script support. Whichever takes my interest, I will post and release here. If you have cool Event Ideas ( at least cool for me ), don't hesitate to drop me a DM. Or if you have an old event lying around needing some updates, I'd gladly take a look at it.

    ================================================================================================================================================

    Showcase :

    [Video] War Arena + Spectator mode

    Spoiler

     

    [Video] Punching Bag with Param Setter

    Spoiler

    Set your own punching bag parameter as desired to test your damage. This is a modification of Punching Bag from Secret with damage counter.

     

     

    [Video] WoE : Longest Def Ranking + Reward

    Spoiler

    Longest Def Reward

    1. Rewards longest def guild
    2. Stores data by Castle, Guild and Date
    3. Gepard Reward Check
    4. WoE Ranker
      • can sort using castle or guild
      • only castle or guild with data will appear in the menu
    5. Can manually delete the records via npc
      • can be reset by castle
      • can be reset by date
      • can reset everything
    6. Added Agit Points Ranking System
      • Guild will earn +1 points for longest def
      • +2 points for castle owner

     

    [Video] WoE : Time-based Participation Reward

    Spoiler
    • Reward Participating players depending on their current play time during WoE
    • Idled players will have their timers paused until they moved once again
    • Added Gepard Reward Check
    • Easily configured

     

     

     

    All of these showcased scripts are found here https://mabuhay-solution.com/product-category/npc-scripts/

    There are also script videos found in my YouTube channel https://www.youtube.com/channel/UCfGxj9_ifGQoL_Ug0dtHYDg

    • Upvote 5
    • Love 2
    • MVP 1
  3. 32 minutes ago, Danieljo1994 said:

    I did ,

    Warning max lvl invalid 255 max 175,

    Is'nt rule system in my client RO?

    IMG_20191219_172200.jpg

    No you did not. 

    After changing values in map.h

    Open your complier and build your source files once again 

  4. 1 hour ago, Danieljo1994 said:

    Help me i can change my max level,

    Always invalid max lvl in server

    Iam done follow the right rules,

    Src-Map-maph-change max lvl

    Battle/client/change max lvl

    Db/exp

    Db/import/exp

    And the result always invalid max level

    Please HELP ME ?

    did you compile?

  5. 10 hours ago, Naruto said:
    
    //===== Rogue ==============================
    //-- RG_BACKSTAB
    212,0,500,0,0,0,0
    //-- RG_RAID
    214,0,0,0,5000,30000,0
    //-- RG_STRIPEWEAPON
    215,1000,1000,0,75000:90000:105000:120000:135000,0,0
    //-- RG_STRIPSHIELD
    216,1000,1000,0,75000:90000:105000:120000:135000,0,0
    //-- RG_STRIPWEAPON
    217,1000,1000,0,75000:90000:105000:120000:135000,0,0

     

    no striparmor but 2 stripweapon 

     

    thank you and good day

    Probably typo?

    215,1,6,1,0,0x1,0,5,1,no,0,0,0,weapon,0,0x0,		RG_STRIPWEAPON,Divest Weapon
    
    217,1,6,1,0,0x1,0,5,1,no,0,0,0,weapon,0,0x0,		RG_STRIPARMOR,Divest Armor

     

  6. 1 hour ago, exchisu said:

    Hi all, i was looking for a Welcome pack script with a itembound  (getitembound) i was trying somes but i get errors so...

    Want a Welcome Pack NPC one per IP with itembound

     

    Thanks!

    prontera,150,180,0	script	Welcome Pack NPC	123,{
    	.@ip$ = replacestr(getcharip(),".","s");
    	if (getd("$ip_"+.@ip$)) { // edit message here.
    		mes "You have claimed your reward.";
    		close;
    	}
    	mes "Here you go.";
    	close2;
    	setd "$ip_"+.@ip$, 1;
    	// add items here..
    	getitembound 1202, 1, Bound_Account;
    	end;
    }

     

    • Upvote 2
  7. 10 hours ago, Mihael said:

    Hi boomers, i need a script (uh... really?)

    Yewah UwU.

    Description Event Poring Hunter

    • The event happens every 1 hour.
    • 5 minutes to start the event access to the map is allowed to players and the global message is sent to the server "Poring Hunter : The event will start in 5 minutes, talk to me in prontera to enter!".
    • With the event enabled, npc will display a menu with the option to "join to event" that will teleport the player to the "pvp_n_1-2" map.
    • The player can only access the event map if he has nothing in his inventory (alt + e).
    • After 5 minutes access to the map is closed and the global message is sent to the server "Poring Hunter : The portal for the event has been closed, the event has started, good luck to all players!".
    • The event starts more only if 1 player is on the map "pvp_n_1-2". If no player has entered the event it is canceled and a global message is sent to the server "Poring Hunter : Event has been canceled due to lack of players".
    • Starting the event, Porings, Poporings and Drops will be invoked on map "pvp_n_1-2".
    • Porings grant 1 point when killed, Drops 5 points, Poporings -10 points.
    • By killing the monsters you will be informed how many points you have per dispbottom "You have "x" Point(s)".
    • Players will have 3 minutes to get as many points as possible.
    • The player who gets the most points within 3 minutes will be the winner of the event.
    • The winner of the event will be announced with a global message "Poring Hunter : The event is over, and the winner is player "Player Name" with "Number of Points". He must speak to me in prontera to receive his prize."
    • A few seconds after the winner is announced, all players on the "pvp_n_1-2" map will be taken to prontera 150 150 and the event ends.
    • The winning player must go to npc in prontera and request their prize. 100x Yggdrasil Fruits (Item 607).

    Here.

    I did follow most of it except for reward. I automatically sent the reward to player. 

    There are instructions in the script if you wish to change some stuff.

    Tested and should work on latest client rathena.

    I will only support bug fixes, modifications wont be entertained.

    This will be added on my Event Manager soon.

    poring_hunter.txt

    • Upvote 1
    • MVP 1
  8. @Mael's thing is correct. No need for src mod and stuff because it is already implemented in rAthena since 2014.

    // When a player teleports, changes maps, or logs in, will they face the direction they were facing before warped?
    // Official: Disabled, players always face North.
    spawn_direction: 0

    just set spawn_direction to 1.

  9. 42 minutes ago, gidzdlcrz said:
      Hide contents
    
    
    //===== rAthena Script =======================================
    //= Euphy's Quest Shop
    //===== By: ==================================================
    //= Euphy
    //===== Current Version: =====================================
    //= 1.6b
    //===== Compatible With: =====================================
    //= rAthena SVN r16862+
    //===== Description: =========================================
    //= A dynamic quest shop based on Lunar's, with easier config.
    //= Includes support for multiple shops & cashpoints.
    //= Item Preview script by ToastOfDoom.
    //===== Additional Comments: =================================
    //= 1.0 Initial script.
    //= 1.2 Added category support.
    //= 1.3 More options and fixes.
    //= 1.4 Added debug settings.
    //= 1.5 Replaced categories with shop IDs.
    //= 1.6 Added support for purchasing stackables.
    //= 1.6a Added support for previewing costumes and robes.
    //= 1.6b Added 'disable_items' command.
    //============================================================
    
    // Shop NPCs -- supplying no argument displays entire menu.
    //	callfunc "pshop"{,<shop ID>{,<shop ID>{,...}}};
    //============================================================
    prontera,143,125,6	script	Donation Shop#1	564,{ callfunc "pshop"; }
    
    
    // Script Core
    //============================================================
    -	script	donation_shop	-1,{ 
    function Add; function Chk; function Slot; function A_An;
    OnInit:
    	freeloop(1);
    
    // -----------------------------------------------------------
    //  Basic shop settings.
    // -----------------------------------------------------------
    
    	set .Announce,1;	// Announce purchased 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],"First Edition Items";
    
    // -----------------------------------------------------------
    //  Donation 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,32001,1,0,0,7179,1);
    	Add(1,32002,1,0,0,7179,1);
    	Add(1,32003,1,0,0,7179,1);
    	Add(1,32004,1,0,0,7179,1);
    	Add(1,32005,1,0,0,7179,1);
    	Add(1,2646,1,0,0,7179,1);
    
    
    // -----------------------------------------------------------
    
    	freeloop(0);
    	set .menu$,"";
    	for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) {
    		set .menu$, .menu$+.Shops$[.@i]+":";
    		npcshopdelitem "pshop"+.@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 "pshop"+.@i,1;
    	npcshopattach "pshop"+.@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 "[Donation Shop]";
    	mes "Item: ^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"")+Slot(.@q[0])+"^000000";
    	mes "Requirements:";
    	disable_items;
    	if (.@q[4]) mes " > "+Chk(Zeny,.@q[4]*.@q[1])+(.@q[4]*.@q[1])+" Zeny^000000";
    	if (.@q[5]) mes " > "+Chk(getd(.Points$[0]),.@q[5]*.@q[1])+(.@q[5]*.@q[1])+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+(.@q[5]*.@q[1])+")^000000";
    	if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2)
    		mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000";
    	next;
    	setarray @qe[1], getiteminfo(.@q[0],5), getiteminfo(.@q[0],11);
    	if (@qe[2] > 0 && ((@qe[1] & 1) || (@qe[1] & 256) || (@qe[1] & 512) || (@qe[1] & 1024) || (@qe[1] & 2048) || (@qe[1] & 4096) || (@qe[1] & 4) || (@qe[1] & 8192)))
    		set .@preview,1;
    	addtimer 1000, strnpcinfo(0)+"::OnEnd";
    	while(1) {
    		switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[7])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) {
    		case 1:
    			if (@qe[0]) { 
    				mes "[Donation Shop]";
    				mes "You're missing one or more";
    				mes "^FF0000 Proof of Donation^000000.";
    				close;
    			}
    			if (!checkweight(.@q[0],.@q[2])) {
    				mes "[Donation 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 purchased "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):(getitemname(.@q[0])))+"!",0;
    			specialeffect2 EF_FLOWERLEAF;
    			close;
    		case 2:
    			setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), getlook(LOOK_ROBE), 1;
    			if ((@qe[1] & 1) || (@qe[1] & 4096)) changelook LOOK_HEAD_BOTTOM, @qe[2];
    			else if ((@qe[1] & 256) || (@qe[1] & 1024)) changelook LOOK_HEAD_TOP, @qe[2];
    			else if ((@qe[1] & 512) || (@qe[1] & 2048)) changelook LOOK_HEAD_MID, @qe[2];
    			else if ((@qe[1] & 4) || (@qe[1] & 8192)) changelook LOOK_ROBE, @qe[2];
    			break;
    		case 3:
    			close;
    		}
    	}
    
    OnEnd:
    	if (@qe[7]) {
    		changelook LOOK_HEAD_BOTTOM, @qe[3];
    		changelook LOOK_HEAD_TOP, @qe[4];
    		changelook LOOK_HEAD_MID, @qe[5];
    		changelook LOOK_ROBE, @qe[6];
    	}
    	deletearray @qe[0],8;
    	end;
    
    function Add {
    	if (getitemname(getarg(1)) == "null") {
    		debugmes "Quest reward #"+getarg(1)+" invalid (skipped).";
    		return;
    	}
    	setarray .@j[0],getarg(2),getarg(3),getarg(4);
    	for(set .@i,5; .@i<getargcount(); set .@i,.@i+2) {
    		if (getitemname(getarg(.@i)) == "null") {
    			debugmes "Quest requirement #"+getarg(.@i)+" invalid (skipped).";
    			return;
    		} else
    			setarray .@j[.@i-2],getarg(.@i),getarg(.@i+1);
    	}
    	copyarray getd(".q_"+getarg(1)+"[0]"),.@j[0],getarraysize(.@j);
    	npcshopadditem "pshop"+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	pshop	{
    	deletearray @i[0],getarraysize(@i);
    	for(set .@i,0; .@i<getargcount(); set .@i,.@i+1)
    		set @i[.@i],getarg(.@i);
    	doevent "donation_shop::OnMenu";
    	end;
    }
    
    
    // Dummy shop data -- copy as needed.
    //============================================================
    -	shop	pshop1	-1,909:-1
    -	shop	pshop2	-1,909:-1
    -	shop	pshop3	-1,909:-1
    -	shop	pshop4	-1,909:-1
    -	shop	pshop5	-1,909:-1

     

    This is the script im using on my server right now. I want to put pub on it. But the problem is i dont know where to put the

    
    OnInit:
    waitingroom "Donation Shop",0;
    end;

    Can you help me?

     

    And also. When im using @reloadnpc the items in the Donation Shop will become jellopy. I should use @reload script to have it fully functional again. ---> Is this normal?

    // Shop NPCs -- supplying no argument displays entire menu.
    //	callfunc "pshop"{,<shop ID>{,<shop ID>{,...}}};
    //============================================================
    prontera,143,125,6	script	Donation Shop#1	564,{ callfunc "pshop"; OnInit: waitingroom "Donate Shop",0; }

    I think @reloadnpc is buggy when used to refresh an npc with waiting rooms. Better use @reloadscript. 

    • Upvote 1
  10. 2 hours ago, Sirique said:

    Yeah that I figured it would be the best way to go, so I would simply like have to use the item available in the wheel that has the more weight right?


    Kind Regards,

    Sirique

    Alternatively, you may check the players current weight.. like maybe players must have less than 75% of max weight, so add something like :

    if ( Weight >= MaxWeight - (MaxWeight / 4) ) {
    	mes "You must at least 25% of your current weight available.";
    	close;
    }

    Edit: Ehh, I'm not sure if the mes implies the correct meaning on what I wanted to say xD

    • Love 1
  11. 2 hours ago, Mihael said:

    Hi boomers,
    I am creating an offer npc that appears 1 time each month, and would like to put a code inside the waitroom that shows the amount of days left until the start of that offer.

    Like this:

    Day 1:

    
    Next Offer Appears in: 30D at 21:00

    Automatic in Day 2:

    
    Next Offer Appears in: 29D at 21:00

    Automatic in Day 3:

    
    Next Offer Appears in: 28D at 21:00

    In last Day:

    
    OFFER DAY !!!

    How could I do this?

    Something like this:

    prontera,154,184,0	script	Test CountDown	123,{
    	end;
    OnInit: // when npc is initiated..
    OnHour00: // resets every 00:00
    	delwaitingroom;
    	.@end_day = 20; // 20th day of the month is the end time.
    	.@time = gettime(DT_DAYOFMONTH);
    	if ( .@end_day > .@time ) {
    		waitingroom "Next offer appears in  "+(.@end_day-.@time)+"D at 21:00",0; // Before offer day
    	} else if ( .@end_day == .@time ) {
    		waitingroom "OFFER DAY!",0; // During offer day
    	} else {
    		waitingroom "OFFER EXPIRED!",0; // After offer day
    	}
    	end;
    }
    

     

    • MVP 1
  12.  

    2 hours ago, Ryo Osaki said:

    PER ACCOUNT

    Can't you read the script you made posted? You are offering service (in your signature) yet you still dont know how to work with variables?

    Variables
    ---------
    
    The meat of every programming language is variables - places where you store
    data.
    
    In the rAthena scripting language, variable names are not case sensitive.
    
    Variables are divided into and uniquely identified by the combination of:
    prefix  - determines the scope and extent (or lifetime) of the variable
    name    - an identifier consisting of '_' and alphanumeric characters
    postfix - determines the type of the variable: integer or string
    
    Scope can be:
    global    - global to all servers
    local     - local to the server
    account   - attached to the account of the character identified by RID
    character - attached to the character identified by RID
    npc       - attached to the NPC
    scope     - attached to the scope of the instance
    
    Extent can be:
    permanent - They still exist when the server resets.
    temporary - They cease to exist when the server resets.
    
    Prefix: scope and extent
    nothing  - A permanent variable attached to the character, the default variable
               type. They are stored by char-server in the `char_reg_num` and
               `char_reg_str`.
    "@"      - A temporary variable attached to the character.
               SVN versions before 2094 revision and RC5 version will also treat
               'l' as a temporary variable prefix, so beware of having variable
               names starting with 'l' if you want full backward compatibility.
    "$"      - A global permanent variable.
               They are stored by map-server in database table `mapreg`.
    "$@"     - A global temporary variable.
               This is important for scripts which are called with no RID
               attached, that is, not triggered by a specific character object.
    "."      - A NPC variable.
               They exist in the NPC and disappear when the server restarts or the
               NPC is reloaded. Can be accessed from inside the NPC or by calling
               'getvariableofnpc'. Function objects can also have .variables which
               are accessible from inside the function, however 'getvariableofnpc'
               does NOT work on function objects.
    ".@"     - A scope variable.
               They are unique to the instance and scope. Each instance has its
               own scope that ends when the script ends. Calling a function with
               callsub/callfunc starts a new scope, returning from the function
               ends it. When a scope ends, its variables are converted to values
               ('return .@var;' returns a value, not a reference).
    "'"      - An instance variable.
               These are used with the instancing system and are unique to each
               instance type. Can be accessed from inside the instance or by calling
               'getvariableofinstance'.
    "#"      - A permanent local account variable.
               They are stored by char-server in the `acc_reg_num` table and
               `acc_reg_str`.
    "##"     - A permanent global account variable stored by the login server.
               They are stored in the `global_acc_reg_num` table and
    		   `global_acc_reg_str`.
               The only difference you will note from normal # variables is when
               you have multiple char-servers connected to the same login server.
               The # variables are unique to each char-server, while the ## variables
               are shared by all these char-servers.
    
    Postfix: integer or string
    nothing - integer variable, can store positive and negative numbers, but only
              whole numbers (so don't expect to do any fractional math)
    '$'     - string variable, can store text
    
    Examples:
      name  - permanent character integer variable
      name$ - permanent character string variable
     @name  - temporary character integer variable
     @name$ - temporary character string variable
     $name  - permanent global integer variable
     $name$ - permanent global string variable
    $@name  - temporary global integer variable
    $@name$ - temporary global string variable
     .name  - NPC integer variable
     .name$ - NPC string variable
    .@name  - scope integer variable
    .@name$ - scope string variable
     'name  - instance integer variable
     'name$ - instance string variable
     #name  - permanent local account integer variable
     #name$ - permanent local account string variable
    ##name  - permanent global account integer variable
    ##name$ - permanent global account string variable
    
    If a variable was never set, it is considered to equal zero for integer
    variables or an empty string ("", nothing between the quotes) for string
    variables. Once you set it to that, the variable is as good as forgotten
    forever, and no trace remains of it even if it was stored with character or
    account data.

     

     

    2 hours ago, Ryo Osaki said:

    AND IF YOU GET IT, ACCOUNT BOUNDED

    *getitembound <item id>,<amount>,<bound type>{,<account ID>};
    *getitembound "<item name>",<amount>,<bound type>{,<account ID>};
    
    This command behaves identically to 'getitem', but the items created will be
    bound to the target character as specified by the bound type. All items created
    in this manner cannot be dropped, sold, vended, auctioned, or mailed, and in
    some cases cannot be traded or stored.
    
    Valid bound types are:
     Bound_Account : Account Bound item
     Bound_Guild   : Guild Bound item
     Bound_Party   : Party Bound item
     Bound_Char    : Character Bound item
    
    ---------------------------------------
    
    *getitembound2 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<bound type>{,<account ID>};
    *getitembound2 "<item name>",<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<bound type>{,<account ID>};
    *getitembound3 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<bound type>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<account ID>};
    *getitembound3 "<item name>",<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>,<bound type>,<RandomIDArray>,<RandomValueArray>,<RandomParamArray>{,<account ID>};
    
    This command behaves identically to 'getitem2', but the items created will be
    bound to the target character as specified by the bound type. All items created
    in this manner cannot be dropped, sold, vended, auctioned, or mailed, and in
    some cases cannot be traded or stored.
    
    For a list of bound types see 'getitembound'.
    
    'getitembound3' is advance version of 'getitembound2' that also use Item Random Option as additional values.
    <RandomIDArray>    : Array variable of ID for item random option, see db/[pre-]re/item_randomopt_db.txt
    <RandomValueArray> : Array variable of item random option's value.
    <RandomParamArray> : Array variable of item random option's param.
    
    Example to get Crimson Weapon with Ghost property:
    	// +9 Crimson Dagger [2]
    	setarray .@OptID[0],RDMOPT_WEAPON_ATTR_TELEKINESIS;
    	setarray .@OptVal[0],0;
    	setarray .@OptParam[0],0;
    	getitembound3 28705,1,1,9,0,0,0,0,0,BOUND_CHAR,.@OptID,.@OptVal,.@OptParam;

     

    Or download this in-case you didnt see this in your server files :

    script_commands.txt

    Spoiler
    
    //===== rAthena Documentation================================
    //= rAthena Script Commands
    //===== By:==================================================
    //= rAthena Dev Team
    //===== Last Updated:========================================
    //= 20180831
    //===== Description:=========================================
    //= A reference manual for the rAthena scripting language.
    //= Commands are sorted depending on their functionality.
    //===========================================================
    
    This document is a reference manual for all the scripting commands and functions
    available in rAthena. It is not a simple tutorial. When people tell you to
    "Read The F***ing Manual", they mean this.
    
    This is not a place to teach you basic programming. This document will not teach
    you basic programming by itself. It's more of a reference for those who have at
    least a vague idea of what they want to do and want to know what tools they have
    available to do it. We've tried to keep it as simple as possible, but if you
    don't understand it, getting a clear book on programming in general will help
    better than yelling around the forum for help.
    
    A little learning never caused anyone's head to explode.

     

     

  13. 8 hours ago, Humble_Bee said:

    I've been having trouble finding the formulas for the core stats (str, dex, luk….). Can someone tell me where they are? I'd like to adjust a few (like lowering the hit bonus from luk and etc). Thanks!

    status.cpp.. There are comments in the code as to what it adjusts and etc.. I cannot point it out to you now cuz i am on mobile. I am about to go to work in a bit.

×
×
  • Create New...