

Racaae
Members-
Posts
263 -
Joined
-
Last visited
-
Days Won
41
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Racaae
-
Hi! CLEAR_NPC works, but it will put a "npc click bubble" inside the portal which can be annoying. I recommend using signboardlist:
-
How to add random 10% chance on my current script?
Racaae replied to Dolphin86's question in Scripting Support
Hi, find this line: setarray(getd("$wrkb_" + .@wrkb_id + "_products"),40036,1, 40011, 1); and replace to: if (countitem(40101) && rand(100) < 10) { // if have Butchering T2 has 10% chance to get the following items setarray(getd("$wrkb_" + .@wrkb_id + "_products"),40036,1, 948,1, 929,1); } else { // Butchering 1 list / commom items setarray(getd("$wrkb_" + .@wrkb_id + "_products"),40036,1, 40011, 1); } -
Use Custom Command To Recall NPC Massage And check Item To Display Text
Racaae replied to Dolphin86's question in Script Requests
- script StatusMessage#command HIDDEN_WARP_NPC,{ OnMenu: mes "=== " + strcharinfo(0) + " status ==="; switch(select("- Weapon Skill", "- Bow Skill", "- Cancel")) { case 1: if (countitem(40040)) { mes "Your ^0000FFWeapon Skill^000000 is Lvl 1."; } else { mes "^FF0000You don't have this Skill.^000000"; } break; case 2: if (countitem(40041)) { mes "Your ^0000FFBow Skill^000000 is Lvl 1."; } else { mes "^FF0000You don't have this Skill.^000000"; } break; case 3: close; } switch(select("- Check other skill:- Cancel")) { case 1: clear; goto OnMenu; case 2: close; } OnInit: .@command$ = "status"; //CHANGE HERE @COMMAND TO SEE MESSAGE bindatcmd .@command$,strnpcinfo(3)+"::OnMenu"; end; } -
Hi, Your current script don't support 0% fail chance. Find rand(100) and change to rand(1,100)
-
Hi. Where's the code?
-
Don't worry too much about the english The chests appear everyday at 00:01 (midnight) automatic. The server needs to be running at this exact time for this to happen. You can change when they spawn in the same files you modified before.
-
Yeah
-
Hi. Add in \db\import\item_db.yml - Id: 4399 AegisName: Thanatos_Card Script: | if (BaseJob != Job_Monk) { bonus bDefRatioAtkClass,Class_All; bonus bSPDrainValue,-1; bonus bDef,-30; bonus bFlee,-30; }
-
Hi If you want to remove investment in castle: Find in these two files: \npc\guild\agit_main.txt (WOE 1) and/or \npc\guild2\agit_main_se.txt (WOE 2) set .@Treasure,getcastledata(strnpcinfo(2),CD_CURRENT_ECONOMY)/5+4; And add this in the next line: .@Treasure = 24; //always spawn 24 treasures. (máx:24) Find in \npc\re\guild3\agit_main_te.txt (WOE 3) .@treasure_num = ( 4 + ( .@economy /5 ) ) *3;// x3 <-> data[] size And add this in the next line: .@treasure_num = 24; //always spawn 24 treasures. (máx:24) ------------------------------------------------------- Or if you want to accelerate the investment in castle: Find in these two files: \npc\guild\agit_main.txt (WOE 1) and/or \npc\guild2\agit_main_se.txt (WOE 2) set .@Economy,GetCastleData(strnpcinfo(2),CD_CURRENT_ECONOMY); And add this in the next line: .@Economy += 10; //accelerate the investment. +=(add) or *=(multiplication) Find in \npc\re\guild3\agit_main_te.txt (WOE 3) .@economy_today = getcastledata(.@map$,CD_INVESTED_ECONOMY); And add this in the next line: .@economy_today *= 2; //accelerate the investment. +=(add) or *=(multiplication) ------------------------------------------------------- To modify treasure drops: C:\Users\Ema\Documents\Alex\rag\rAthena2021\db\(pre-)re\mob_db.yml Each castle has it's own treasure box with different items. Find the Treasure Chest you want to change the contents and replace the IDs in the Drops: section. Treasure IDs:
-
Hi set .@menu$, ""; for (.@i = 0; .@i < getarraysize(.orbs); .@i++) { .@qty = countitem(.orbs[.@i]); if (.@qty) .@menu$ += getitemname(.orbs[.@i])+" x"+.@qty+":"; else .@menu$ += ":"; } if(.@menu$=="") { mes .npc$; mes "Hmm, you don't seem to have any enchantment orbs."; close; } mes .npc$; mes "Please, select an enchantment from the menu."; next; select(.@menu$); set .@itm, .orbs[@menu-1]; OnInit: setarray .orbs, 4702,4712,4722,4732,4742,4752,4767,4834; end;
-
Hi, Find this line: mes "Only for character with level 99 and above"; Change to: else mes "Only for character with level 99 and above";
-
Yes you can //Examples setunitdata(getnpcid(0), UNPC_HAIRSTYLE, 2); setunitdata(getnpcid(0), UNPC_HAIRCOLOR, 5); setunitdata(getnpcid(0), UNPC_HEADTOP, 547); setunitdata(getnpcid(0), UNPC_HEADMIDDLE, 0); setunitdata(getnpcid(0), UNPC_HEADBOTTOM, 0); setunitdata(getnpcid(0), UNPC_CLOTHCOLOR, 1); setunitdata(getnpcid(0), UNPC_ROBE, 4);
-
Hi, put this in your OnInit: label setunitdata(getnpcid(0), UNPC_CLASS, 1); setunitdata(getnpcid(0), UNPC_SEX, 1); //0=female 1=male
-
Use makeitem instead of getitem. Example: if (rand(100) < 10) { getunitdata killedgid, .@data; makeitem 45018,1, mapid2name(.@data[UMOB_MAPID]),.@data[UMOB_X],.@data[UMOB_Y], true; }
-
change OnMinute00 to specific time in a day LMS script
Racaae replied to Heartfelt's question in Scripting Support
Hi. Find this line: .@time = gettimetick(2); And add above it: if (gettime(DT_HOUR) != 13 && gettime(DT_HOUR) != 17 && gettime(DT_HOUR) != 19) end; -
Use rand command before giving the item. Example: - script satan -1,{ OnNPCKillEvent: if ( killedrid != 31001 ) end; if ( getcharid(1) ) { getpartymember getcharid(1), 1; getpartymember getcharid(1), 2; for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { // what happens if someone in the party member is offline =/ .@partymemberaid[.@c] = $@partymemberaid[.@i]; .@c++; } } //Party has 10% chance to get the item 45018 if (rand(100) < 10) getitem 45018, 1, .@partymemberaid[ rand( .@c ) ]; announce "Party ["+ strcharinfo(1) +"] has killed "+ getmonsterinfo( killedrid, MOB_NAME ) +" at "+ strcharinfo(3), 0; } else { //Players without party has 15% chance to get the item 45018 if (rand(100) < 15) getitem 45018, 1; announce "Player ["+ strcharinfo(0) +"] has killed "+ getmonsterinfo( killedrid, MOB_NAME ) +" at "+ strcharinfo(3), 0; } end; }
-
How to make list of quest item requirement Descending?
Racaae replied to Heartfelt's question in Scripting Support
Hi, find these lines: 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"; And replace with: if (.@q[6]) for(.@i = (getarraysize(.@q) - 2); .@i >= 6; .@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"; 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[4]) mes " > "+Chk(Zeny,.@q[4]*.@q[1])+(.@q[4]*.@q[1])+" Zeny^000000"; -
Hi, the script is working fine here. Try changing that line to: if ( killedrid != 31001 ) end; - script satan -1,{ OnNPCKillEvent: if ( killedrid != 1002 ) end; if ( getcharid(1) ) { getpartymember getcharid(1), 1; getpartymember getcharid(1), 2; for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { // what happens if someone in the party member is offline =/ .@partymemberaid[.@c] = $@partymemberaid[.@i]; .@c++; } } getitem 45018, 1, .@partymemberaid[ rand( .@c ) ]; announce "Party ["+ strcharinfo(1) +"] has killed "+ getmonsterinfo( killedrid, MOB_NAME ) +" at "+ strcharinfo(3), 0; } else { getitem 45018, 1; announce "Player ["+ strcharinfo(0) +"] has killed "+ getmonsterinfo( killedrid, MOB_NAME ) +" at "+ strcharinfo(3), 0; } end; }
-
Share your script here please
-
Hi, You need to fix your getmonsterinfo. If you want this to trigger only for a specific mvp, you have two options: if ( getmonsterinfo( killedrid, MOB_NAME ) != "Wounded Morocc" ) end; or if ( getmonsterinfo( killedrid, MOB_ID) != 31001 ) end; If you want this to trigger for ANY mvp: if ( !getmonsterinfo( killedrid, MOB_MVPEXP ) ) end;
-
Count total of silver coins got in fishing per week and upload it in database
Racaae replied to CyanZoldyck's question in Script Requests
Hi. Find this line getitem 30203,2; //Fish with Blue Back And insert this below: .@silver_coins = 2; //coins fished just now $fishing_total += .@silver_coins; //server total .@current_points = 0; //anti bug query_sql "SELECT `points` FROM `fishing_rank` WHERE `player_id` = '"+getcharid(0)+"'", .@current_points; if (.@current_points) query_sql "UPDATE `fishing_rank` SET `points` = " + (.@current_points + .@silver_coins) + ", `last_fished` = now() WHERE `player_id` = '"+getcharid(0)+"'"; else query_sql "INSERT INTO fishing_rank VALUES ( "+ getcharid(0) +", "+ .@silver_coins +", now() )"; And put this NPC: -
NPC: barter,yml (bartershop only supports 5 item requirements max, some dyestuffs requires more than that).
-
switch (BaseJob) { case Job_Alchemist: .@s = 445; break; case Job_Monk: .@s = 447; break; case Job_Star_Gladiator:.@s = 448; break; case Job_Sage: .@s = 449; break; case Job_Crusader: .@s = 450; break; case Job_SuperNovice: .@s = 451; break; case Job_Knight: .@s = 452; break; case Job_Wizard: .@s = 453; break; case Job_Priest: .@s = 454; break; case Job_Bard: case Job_Dancer: .@s = 455; break; case Job_Rogue: .@s = 456; break; case Job_Assassin: .@s = 457; break; case Job_Blacksmith: .@s = 458; break; case Job_Hunter: .@s = 460; break; case Job_Soul_Linker: .@s = 461; break; default: if (Upper == 1 && BaseLevel < 70) .@s = 494; } if (.@s) { sc_start4 SC_SPIRIT, 350000, 5, .@s, 0, 0; specialeffect2 503; }
-
I duplicated the shop so there's two of the same: "vip_shop" (can buy) and "see_shop" (can't buy). The NPC will open "see_shop" for Non-VIPs.