Heartfelt
Members-
Posts
31 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Heartfelt
-
How to make this Sender NPC work with newer version of SQL table?
Heartfelt posted a question in Scripting Support
i want to use this NPC i found on rathena on my server. the use of this NPC is to transfer cash points or zeny to other players prontera,45,99,2 script Transfer Angel 437,{ start: mes "[Transfer Angel]"; mes "Hello " + strcharinfo(0) + ","; mes "What can I do for you?"; next; menu "Cash Transfer",cashi,"Zeny Transfer",zenyi,"Leave",L_Leave; cashi: mes "[Transfer Angel]"; if (#CASHPOINTS==0){ mes "Sorry but you don't have any Cash Points."; next; goto start; } mes "Please enter the char's name:"; mes "(You have " + #CASHPOINTS + " Cash Points)"; input .@name$; query_sql "SELECT `account_id`,`name` FROM `char` WHERE `name` = '"+escape_sql(.@name$)+"'", .@account_id,.@name$; next; if (!.@account_id) { mes "[Transfer Angel]"; mes "^FF0000Char name does not exist.^000000"; close; } else if (.@account_id==getcharid(3)) { mes "[Transfer Angel]"; mes "Why would you send points to yourself?"; next; goto cashi; } cashsend: mes "[Transfer Angel]"; mes "How many Cash Points to send?"; mes "You'r sending to: ^0000FF"+.@name$+"^000000"; mes "(You have: " + #CASHPOINTS + " Cash Points)"; mes "(Type 0 to cancel)"; input .@amt; if (.@amt == 0) close; next; if (.@amt < 1) { mes "[Transfer Angel]"; mes "^0000FFPlease enter a positive number^000000."; next; goto cashsend; } else if (.@amt > #CASHPOINTS) { mes "[Transfer Angel]"; mes "^0000FFYou do not have that many Cash Points.^000000 The max you can send is: "+#CASHPOINTS; next; goto cashsend; } mes "[Transfer Angel]"; mes "Send "+.@amt+" Cash Points to ^0000FF"+.@name$+"^000000?"; menu "Yes",yy,"Back to Menu",nn; yy: // save their Account ID and name set .@AID, playerattached(); set .@send_name$, strcharinfo(0); // subtract their Cash Points set #CASHPOINTS, #CASHPOINTS - .@amt; // transfer the Cash Points if (attachrid(.@account_id)) { // if they are logged in set #CASHPOINTS, #CASHPOINTS + .@amt; dispbottom .@send_name$ + " sent you " + .@amt + " Cash Points! Total = " + #CASHPOINTS; } else { // if they are offline, query_sql if( query_sql("SELECT account_id FROM global_reg_value WHERE str='#CASHPOINTS' AND account_id="+.@account_id, .@account_id) ) query_sql "UPDATE global_reg_value SET `value`=`value`+"+.@amt+" WHERE str='#CASHPOINTS' AND account_id="+.@account_id; else query_sql "INSERT INTO global_reg_value (str,`value`,`type`,account_id) VALUES ('#CASHPOINTS',"+.@amt+",2,"+.@account_id+")"; } attachrid(.@AID); next; mes "[Transfer Angel]"; mes "Transfer successful!"; next; goto start; L_Leave: mes "[Transfer Angel]"; mes "Have a nice day"; close; zenyi: mes "[Transfer Angel]"; if (zeny==0){ mes "Sorry but you don't have any Zeny."; next; goto start; } mes "Please enter the char's name:"; input .@name$; query_sql "SELECT `char_id`,`account_id`,`name` FROM `char` WHERE `name` = '"+escape_sql(.@name$)+"'", .@char_id,.@account_id,.@name$; next; if (!.@account_id) { mes "[Transfer Angel]"; mes "^FF0000Char name does not exist.^000000"; close; } else if (.@char_id==getcharid(0)) { mes "[Transfer Angel]"; mes "Why would you send zeny to yourself?"; next; goto zenyi; } zenysend: mes "[Transfer Angel]"; mes "How much Zeny to send?"; mes "You'r sending to: ^0000FF"+.@name$+"^000000"; mes "(You have: "+Zeny+" Zeny)"; mes "(Type 0 to cancel)"; input .@amt; if (.@amt == 0) close; next; if (.@amt < 1) { mes "[Transfer Angel]"; mes "^0000FFPlease enter a positive number.^000000"; next; goto zenysend; } else if (.@amt > Zeny) { mes "[Transfer Angel]"; mes "^0000FFYou do not have that much zeny.^000000 The max you can send is: "+Zeny; next; goto zenysend; } mes "[Transfer Angel]"; mes "Send "+.@amt+" Zeny to ^0000FF"+.@name$+"^000000?"; menu "Yes",yy2,"Back to Menu",nn; nn: next; goto start; yy2: // save their Account ID and name set .@AID, playerattached(); set .@send_name$, strcharinfo(0); // subtract their zeny set Zeny, Zeny - .@amt; // transfer the money if (attachrid(.@account_id)) { if (getcharid(0)==.@char_id) { // if they are logged in, on the right char set Zeny, Zeny + .@amt; dispbottom .@send_name$ + " sent you " + .@amt + " zeny!"; } else { // logged in, but on wrong char query_sql "UPDATE `char` SET `zeny`=`zeny`+'"+.@amt+"' WHERE `char_id`='"+.@char_id+"'"; } } else { // if they are offline, query_sql query_sql "UPDATE `char` SET `zeny`=`zeny`+'"+.@amt+"' WHERE `char_id`='"+.@char_id+"'"; } attachrid(.@AID); next; mes "[Transfer Angel]"; mes "Transfer successful!"; next; goto start; } however this part is not working, when i send it to an offline player there is no "global_reg_value" in my sql table, instead i have "acc_reg_num" that stores the Cashpoint of each account here is how the "acc_reg_num table looks like so,which part do i need to modify? thanks in advance for helping -
I found this on herc, but it seems like it doenst work on rathena can someone give a working version of this script?? this is the original script i got from herc // --- //= Cash Point Manager v1.0 [Rokimoki] // * Add Cash Points // * Delete Cash Points // * Watch Cash Points // * Notify the player if an admin has added/deleted some cash to you. // * If the player is online it will tell which GM did. // * If the player is NOT online will show a notification when logged in but will not tell the GM who did it. // * Logs system. Must be 'log_npc: true' in conf/map/logs.con file. // -> If somebody put wrong password in whisp system. // -> If add/delete cash points. // --- //= This works if you are online or not, if online don't use SQL if offline use SQL. // --- //= v2.0 [Rokimoki] // * Recycled this old script and adapted to Hercules database // * Transtaled to English // --- - script donations -1,{ OnWhisperGlobal: if (getgmlevel() < 90) { // If you are not admin just tell you how many cash you have. dispbottom "Your have: [" + #CASHPOINTS + "] CashPoints."; end; } // End if if (strcmp(@whispervar0$,"yourpassword") != 0) { // Password system, change 'yourpassword' for any password you want logmes "User: " +strcharinfo(0) +" with account_id: " +getcharid(3) +" typed a wrong password, he wrote: " +@whispervar0$; // Just for watch if bruteforcing or something end; } // End if deletearray .@username$[0], 128; // Debug deletearray .@accid[0], 128; set .@npcName$, "[^0000FFCashPoint Manager^000000]"; mes .@npcName$; mes "Hi, I am your assistant, tell me what you need please..."; next; switch (select("Add Cash Points:Delete Cash Points:Watch Cash Points:End")) { case 1: // Add cash points callfunc("CashPoints",1); break; case 2: // Delete cash points callfunc("CashPoints",2); break; case 3: // Watch cash points callfunc("CashPoints",3); break; case 4: // Close mes "Good bye..."; break; } // End switch close; OnPCLoginEvent: // Offline notifications if (#CASHPOINTS < lastCash) dispbottom "Some administrator deleted some CashPoints, current balance: [" + #CASHPOINTS +"], before: [" + lastCash + "]"; else if (#CASHPOINTS > lastCash) dispbottom "Some administrator added some CashPoints, current balance: [" + #CASHPOINTS +"], before: [" + lastCash + "]"; set lastCash, #CASHPOINTS; end; } // End Script function script CashPoints { mes .@npcName$; mes "I need to ask you something..."; next; mes .@npcName$; if (select("Select by character name:Select by login username") == 1) { mes "Input character name: "; next; input .@charName$; query_sql "SELECT `account_id` FROM `char` WHERE `name` = '" +escape_sql(.@charName$) +"'", .@accid[0]; } else { mes "Input login username: "; next; input .@loginName$; query_sql "SELECT `account_id` FROM `login` WHERE `userid` = '" +escape_sql(.@loginName$) +"'", .@accid[0]; } // End if if (!.@accid[0]) { mes "Invalid information, error occurred: account or character not found."; close; } // End if if (getarg(0) == 3) { // Watch Cash Points if (isloggedin(.@accid[0])) { // If player is online // Save GM information set .@gm$, strcharinfo(0); set .@id, getcharid(3); detachrid; // Attach player in this script attachrid(.@accid[0]); set .@cash, #CASHPOINTS; // Save Cash Points amount detachrid; attachrid(.@id); mes .@npcName$; mes "This player has: [^FF0000" +.@cash +"^000000] Cash Points."; } else { // If offline query_sql "SELECT `value` FROM `acc_reg_num_db` WHERE `key` = '#CASHPOINTS' AND `account_id` = " +.@accid[0], .@value[0]; // Save Cash Points amount if (!.@value[0]) mes "He has [^FF00000^000000] Cash Points."; // 0 cash else mes "He has [^FF0000" +.@value[0] +"^000000] Cash Points."; // if he has cash } // End if close; } // End if mes .@npcName$; mes "Input Cash Point amount, range: 1~100"; // Change here too if you want to show proper information next; input .@amount, -1000, 1000; // Debug if (.@amount < 1 || .@amount > 100) { // Define in this if the amount you want to limit (just the right part) mes .@npcName$; mes "Invalid amount, input in the proper range told."; close; } // End if if (isloggedin(.@accid[0])) { // If player is online // Save GM information set .@gm$, strcharinfo(0); set .@id, getcharid(3); detachrid; // Attach player attachrid(.@accid[0]); set .@cash, #CASHPOINTS; // Save current cash if (getarg(0) == 1) { // Add cash set #CASHPOINTS, #CASHPOINTS + .@amount; // Add cash dispbottom "This admin: [" + .@gm$ +"] added: " +.@amount +" cash points, current balance: [" +#CASHPOINTS + "]"; // Online notification } else if (getarg(0) == 2) { // Delete cash if (.@cash <= 0) { detachrid; attachrid(.@id); mes .@npcName$; mes "You can not delete cash points, this player has no cash points."; close; } else if (.@cash - .@amount < 0) { detachrid; attachrid(.@id); mes .@npcName$; mes "You can not delete more cash than he already has, you are allowed to remove: [^FF0000" +.@cash +"^000000] cash points."; close; } // End if set #CASHPOINTS, #CASHPOINTS - .@amount; // Delete cash dispbottom "This admin [" + .@gm$ +"] deleted: " +.@amount +" cash points, current balance: " +#CASHPOINTS; // Online notification set .@action, 1; // Cash deleted flag } // End if detachrid; attachrid(.@id); } else { // If offline query_sql "SELECT `key` FROM `acc_reg_num_db` WHERE `account_id` = " + .@accid[0], .@username$[0]; // check current cash if (.@username$[0] != "#CASHPOINTS") { // If empty, never had Cash Points if (getarg(0) == 1) { // add cash query_sql "INSERT INTO `acc_reg_num_db`(`account_id`, `key`, `index`, `value`) VALUES ('" + .@accid[0] + "','#CASHPOINTS','0','" + .@amount + "')"; // create the data } else { // delete cash mes .@npcName$; mes "You can not delete cash points, this player has no cash points."; close; } // End if } else { // Player had or has Cash Points if (getarg(0) == 1) { // add cash query_sql "UPDATE `acc_reg_num_db` SET `value` = `value` + '" +.@amount +"' WHERE `key` = '#CASHPOINTS' and `account_id` = '" +.@accid[0] +"'"; // update cash } else { // delete cash query_sql "SELECT `value` FROM `acc_reg_num_db` WHERE `key` = '#CASHPOINTS' and `account_id` = " +.@accid[0], .@value[0]; // check current cash mes .@npcName$; if (.@value[0] <= 0) { mes "You can not delete cash points, this player has no cash points."; close; } else if (.@value[0] - .@amount < 0) { mes "You can not delete more cash than he already has, you are allowed to remove: [^FF0000" + .@value[0] + "^000000] cash points."; close; } // End if query_sql "UPDATE `acc_reg_num_db` SET `value` = `value` - '" + .@amount + "' WHERE `key` = '#CASHPOINTS' and `account_id` = '" + .@accid[0] + "'"; set .@action, 1; // Cash deleted flag } // End if } // End if } // End if // Saving logs if (!.@action) logmes "User: " + strcharinfo(0) + " with account_id: " + getcharid(3) + " added " + .@amount +" Cash Points to: " + .@accid[0]; else logmes "User: " + strcharinfo(0) + " with account_id: " + getcharid(3) + " removed " + .@amount +" Cash Points to: " + .@accid[0]; mes "Cash Points successfully sent, when the players log in will receive a notification, thanks for using this service."; return; } // End function Thanks in advance!
-
is there any way to fix this error sir? @crazyarashi
-
i just installed grf editor on my laptop. this one i used on my Desktop and completely works fine but on my laptop an error message pop up everytime i launch the app after i close the error message pop up the grf editor runs anyone knows why? and how to fix this issue? thx
-
prontera,156,178,5 script ldfhsdfkljs 100,{ mes "do you want to enchant your equipment ?"; next; .@s = select( .menu$ ) -1; if ( !getequipisequiped( .const_equip[.@s] ) || .const_equip[.@s] == EQI_HAND_L && getiteminfo( getequipid( EQI_HAND_L ),2 ) != 5 ) { mes "you did not equip an "+ .menu_name$[.@s] +" at the moment"; close; } .@id = getequipid( .const_equip[.@s] ); .@ref = getequiprefinerycnt( .const_equip[.@s] ); .@card1 = getequipcardid( .const_equip[.@s], 0 ); .@card2 = getequipcardid( .const_equip[.@s], 1 ); .@card3 = getequipcardid( .const_equip[.@s], 2 ); .@card4 = getequipcardid( .const_equip[.@s], 3 ); if ( .@card1 == 255 || .@card1 == 254 ) { mes "I can't enchant a signed equipment"; close; } if ( .@card4 ) { mes "this armor has already enchanted"; close; } .@rand = rand(.totalchance); while ( ( .@rand = .@rand - .rate[.@r] ) >= 0 ) .@r++; .@o = rand(0,5); // orb of str/int/dex .... delitem2 .@id, 1,1, .@ref, 0, .@card1, .@card2, .@card3, 0; getitem2 .@id, 1,1, .@ref, 0, .@card1, .@card2, .@card3, 4700 + .@o * 10 + .@r; equip .@id; close; OnInit: setarray .rate, 55,50,45,40,35; // rate of getting +1 is 55%, +2 is 50% .... +10 is 10% ... setarray .const_equip, EQI_ARMOR, EQI_HAND_L, EQI_GARMENT, EQI_SHOES; setarray .menu_name$, "Armor", "Shield", "Garment", "Shoes"; .menu$ = implode( .menu_name$,":" ); while ( .@i < 10 ) { .totalchance = .totalchance + .rate[.@i]; .@i++; } end; } as the title says, i want to make this script only for enchanting upper costume headgear also i want to make it only maximum to +3 Attribute thanks
-
the thing is, the total aspd gained with this stats 153 AGI and 127 Dex is not accurate. any idea on why?
-
question : Ice Pick damage with modifier card doesn't work?
Heartfelt posted a question in General Support
why does icepick {1} doesn't work with modifier card such as strouf card / hydra card? my server is pre-renewal. does anyone have any kind of formula or calculator for this? thanks -
yes its pre renewal sir, i use gm account to match the status only, thats why its more than 100
-
i found a little bug here Im using Sniper job 99 70 level it seems like this status doesn't give the correct number of ASPD with 153 AGI and 127 Dex it should be 187 ASPD i dont use any other aspd % bonus eqiupment, this is pure from agi and dex stat only it appears that the flee is not accurate as well, it should be 254 any idea? thanks
-
hello everyone i have a costume in my ragnarok server using this item script, to make wearer apprearance become 3rd job if(roclass(eaclass()|EAJL_UPPER)) changebase BaseJob; but it does not work for ninja and gunslinger how can i make it work for ninja to look like kagerou / oboro? and gunslinger to look like rebellion ? Thanks in advance
-
-
is it possible to give 1 second delay on /sit usage? and is it possible to give delay to /sit after using a skill? thanks
-
i need a script that will announce it when a player gets a card from a monster but i cant use the conf because my drop card is 0,5 % so i just want to make it specific to cards only
-
i want to edit the message in this error box that says "cannot init d3d or GRF File has problem" i want it to say other words instead how can i do this ? thanks
-
hateffect visible when character using skill hide/cloaking
Heartfelt posted a question in General Support
how to fix hateffect being visible when character using skill hide/cloaking? but some of them are fine for example HAT_EF_DOUBLEGUMGANG is visible when using cloaking but HAT_EF_Blessing_Of_Angels is just fine, its not visible when cloaking please help thx -
how to make Invasion event NPC triggered by GM instead of autostart?
Heartfelt replied to Heartfelt's question in Scripting Support
thanks sir -
how to make Invasion event NPC triggered by GM instead of autostart?
Heartfelt replied to Heartfelt's question in Scripting Support
thanks for replying sir i'd like to know how to do it sir? i've been receiving error so many times trying to get it done ? -
i want to change this auto event to event only start when GM want to start it this is the script - script TownInvasion -1,{ OnClock0000: OnClock1130: OnClock1630: OnClock2230: for(.@i = 0; .@i < 1; .@i++) { //Spawn on 4 towns .Town_Invade$ = .Town$[rand(getarraysize(.Town$))]; announce .Town_Invade$+" Guard: Help us! Our town is being invaded by Monster! Please Help us now!",bc_blue|bc_all; sleep 10000; announce .Town_Invade$+" Guard: Help us! Smash their Heads using your Weapon!!!",bc_blue|bc_all; sleep 8000; announce .Town_Invade$+" Guard: Come here!! Bring warrior! Kill these monsters!",bc_blue|bc_all; for(.@ix = 0; .@ix < 30; .@ix++) { //MvP spawner monster .Town_Invade$,0,0,"--ja--",.MvP[rand(getarraysize(.MvP))],1,strnpcinfo(1)+"::OnInvadeDeath"; } for(.@iy = 0; .@iy < 10; .@iy++) { //Mob spawner monster .Town_Invade$,0,0,"--ja--",-1,1,strnpcinfo(1)+"::OnMobsDeath"; } } end; OnInvadeDeath: .@RandMvP = rand(getarraysize(.Prize)); getitem .Prize[.@RandMvP],.PAmt[.@RandMvP]; end; OnMobsDeath: .@RandMob = rand(getarraysize(.Prize2)); getitem .Prize2[.@RandMob],.PAmt2[.@RandMob]; end; OnInit: //Towns to Invade setarray .Town$[0],"prontera","izlude","geffen","payon"; //MvPs to summon setarray .MvP[0],1196,1197,1483,1778; //Prize to give MVP setarray .Prize[0],7929; setarray .PAmt[0],10; //Prize to give Mobs setarray .Prize2[0],7929; setarray .PAmt2[0],10; end; } please help thanks a lot
-
- Id: 19266 AegisName: Survive_Circlet_ Name: Survivor's Circlet Type: Armor Weight: 500 Defense: 10 Slots: 1 Locations: Head_Top: true EquipLevelMin: 1 Refineable: true View: 1220 Script: | how can i add 15% chance of gaining 20% of magic attack for 3 seconds every time the wearer receive any damage? please help thanks
-
Debug in Card Recycle NPC. how to fix this?
Heartfelt replied to Heartfelt's question in Scripting Support
anyone please? -
any way to fix this thing? happens when i exchange cards for points im using this script //===== rAthena Script ======================================= //= Card Trader //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.1 //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= //= Exchange cards for points. //============================================================ prontera,277,268,3 script Card Trader 743,{ mes "[Card Trader]"; mes "Hi, "+strcharinfo(0)+"!"; mes "What can I do for you?"; next; switch(select(" > Information: > Trade in cards: > Point shop (^0055FF"+getd(.Points$)+"^000000): > Leave")) { case 1: mes "[Card Trader]"; mes "Do you find that you've got"; mes "useless cards lying around?"; mes "I'll be glad to take them off"; mes "your hands!"; next; mes "[Card Trader]"; mes "I'll give you ^0055FF"+.Points[0]+" Point"+((.Points[0] == 1)?"":"s")+"^000000 for each"; mes "card you give me, and"; mes "You can trade those points"; mes "for items later on."; mes "How does that sound?"; next; close; case 2: mes "[Card Trader]"; mes "Select the cards you"; mes "want to trade in."; if (.Level) { mes " "; mes "They must be dropped"; mes "by monsters of level"; mes .Level+" and above."; } deletearray @sold_nameid[0],getarraysize(@sold_nameid); callshop "card_shop",2; npcshopattach "card_shop"; end; case 3: mes "[Card Trader]"; mes "You have ^0055FF"+getd(.Points$)+"^000000 Point"+((getd(.Points$) == 1)?".":"s."); callshop "card_shop",1; npcshopattach "card_shop"; end; case 4: mes "[Card Trader]"; mes "*yawn*"; mes "See you later!"; next; close; } OnSellItem: mes "Cards to sell:"; mes "-----------------------------------"; for(set .@i,0; .@i<getarraysize(@sold_nameid); set .@i,.@i+1) if (@sold_nameid[.@i] > 4000 && @sold_nameid[.@i] < 4700) { if (.Level) { query_sql("SELECT `LV` FROM `mob_db` WHERE `DropCardid` = "+@sold_nameid[.@i],.@lv); if (.@lv < .Level) { dispbottom getitemname(@sold_nameid[.@i])+" is under the minimum level."; continue; } } set .@card_id[getarraysize(.@card_id)], @sold_nameid[.@i]; set .@card_amt[getarraysize(.@card_amt)], @sold_quantity[.@i]; set .@mvp, compare(.MVP$,""+@sold_nameid[.@i]); mes ((.@mvp)?" ^FF0000":" ^777777")+@sold_quantity[.@i]+"x "+getitemname(@sold_nameid[.@i])+"^000000"; set .@card_total, .@card_total+(@sold_quantity[.@i]*((.@mvp)?.Points[1]:.Points[0])); } deletearray @sold_nameid[0], getarraysize(@sold_nameid); deletearray @sold_quantity[0], getarraysize(@sold_quantity); if (!.@card_id) { mes " ^777777(none)^000000"; next; close; } mes " "; mes "--- Total: ^0055FF"+.@card_total+" points.^000000 ---"; next; if(select(" > ^0055FFComplete trade...^000000: > ^777777Cancel^000000") == 2) { mes "[Card Trader]"; mes "Oh, okay..."; next; close; } for(set .@i,0; .@i<getarraysize(.@card_id); set .@i,.@i+1) delitem .@card_id[.@i],.@card_amt[.@i]; setd .Points$, getd(.Points$)+.@card_total; mes "[Card Trader]"; mes "All done!"; next; close; OnBuyItem: for(set .@i,0; .@i<getarraysize(@bought_nameid); set .@i,.@i+1) for(set .@j,0; .@j<getarraysize(.Shop); set .@j,.@j+2) if (@bought_nameid[.@i] == .Shop[.@j]) { set .@cost, .@cost+(.Shop[.@j+1]*@bought_quantity[.@i]); break; } if (.@cost > getd(.Points$)) { mes "[Card Trader]"; mes "You don't have enough Points."; } else { mes "Items purchased:"; mes "-----------------------------------"; for(set .@i,0; .@i<getarraysize(@bought_nameid); set .@i,.@i+1) { getitem @bought_nameid[.@i], @bought_quantity[.@i]; mes " ^777777"+@bought_quantity[.@i]+"x "+getitemname(@bought_nameid[.@i])+"^000000"; } mes " "; mes "---------- Total: ^0055FF"+.@cost+" pt.^000000 -------"; setd .Points$, getd(.Points$)-.@cost; } deletearray @bought_nameid[0], getarraysize(@bought_nameid); deletearray @bought_quantity[0], getarraysize(@bought_quantity); next; close; OnInit: set .Level,0; // Minimum monster level to trade corresponding cards. set .Points$,"#Card_Points"; // Variable to store points. setarray .Shop[0], // Card Shop items: <ID>,<point cost> 7227,50, 20191,150, setarray .Points[0],1,1; // Points per <normal card>,<MVP card> set .MVP$, // List of MVP cards. "4121,4123,4128,4131,4132,4134,4135,4137,4142,4143,4144,4145,4146,4147,4148,4168,4236,"+ "4241,4263,4276,4302,4305,4318,4324,4330,4342,4357,4359,4361,4363,4365,4399,4403,4407"; npcshopdelitem "card_shop",909; for(set .@i,0; .@i<getarraysize(.Shop); set .@i,.@i+2) npcshopadditem "card_shop",.Shop[.@i],.Shop[.@i+1]; end; } - shop card_shop -1,909:364 thanks
-
so im using this NPC but it seems that when i use lord knight with the rune knight costume it doesn't show the dragon. but the character still in the status of riding a peco peco any way to fix? thanks //===== rAthena Script ======================================= //= Dress Room //===== Description ========================================== //= Dress room NPC that allows players to disguise as another //= class in their classline. //===== By: ================================================== //= Secret's Scripting Service //===== Changelog: =========================================== //= 1.0 Initial version. [Secret] //===== License: ============================================= // Copyright 2018 Jittapan P. // // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), //= to deal in the Software without restriction, including without limitation the rights to use, //= copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, //= and to permit persons to whom the Software is furnished to do so, subject to the following conditions: //= //= The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. //= //= THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, //= EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, //= FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. //= IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, //= DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, //= TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. //============================================================ morocc,167,95,4 script Dress Room#sc 2_M_DYEINGER,{ function RestrictClass; function HasjROCostume; function ChangeAppr; function RestrictClass { .@eaj = eaclass(); if(.@eaj&EAJ_BASEMASK == EAJ_NOVICE) return 0; if(.@eaj&EAJL_2 && roclass(.@eaj|EAJL_UPPER) != -1){ return 1; } return 0; } function HasjROCostume { switch(roclass(eaclass()&EAJ_UPPERMASK|EAJL_THIRD)) { case Job_Guillotine_Cross: case Job_Genetic: case Job_Royal_Guard: case Job_Arch_Bishop: case Job_Mechanic: case Job_Ranger: case Job_Minstrel: case Job_Wanderer: case Job_Warlock: // Uncomment lines below to enable certain job when their respective jRO costume is released and you patched the sprite in your client. //case Job_Sorcerer: //case Job_Sura: //case Job_Rune_Knight: return 1; default: return 0; } } function ChangeAppr { if(Zeny < .cost_dressroom) { mes .n$; mes "You don't have enough Zeny."; close; } switch(getarg(1)){ case 0: // Normal Mode setlook LOOK_BODY2,0; changebase getarg(0); set baselook, getarg(0); break; case 1: // jRO Mode if(!HasjROCostume()) return; changebase roclass(eaclass()|EAJL_THIRD); setlook LOOK_CLOTHES_COLOR,0; setlook LOOK_BODY2,!(getlook(LOOK_BODY2)); //atcommand "@bodystyle " + !(getlook(LOOK_BODY2)); baselook = 0; break; } Zeny -= .cost_dressroom; mes .n$; mes "Here you are!"; close; } .@TYPE_CHANGEBASE = 0; .@TYPE_SETLOOK = 1; mes .n$; if(!RestrictClass()){ mes "Your class isn't allowed to use this NPC."; close; } mes "I can change your appearance to another class of your classline at a cost of ^FF0000" + callfunc("F_InsertComma",.cost_dressroom) + "^000000z!"; if(HasjROCostume()){ mes "I also have a brand new costume for your class!"; } mes "Which class do you want to change your appearance to?"; next; switch(select(jobname(roclass(eaclass()&EAJ_UPPERMASK)),jobname(roclass(eaclass()&EAJ_UPPERMASK|EAJL_UPPER)),jobname(roclass(eaclass()|EAJL_THIRD)),HasjROCostume() ? getlook(LOOK_BODY2) ? "Restore costume" : "New jRO costume" : "")) { case 1: ChangeAppr(roclass(eaclass()&EAJ_UPPERMASK),.@TYPE_CHANGEBASE); break; case 2: ChangeAppr(roclass(eaclass()&EAJ_UPPERMASK|EAJL_UPPER),.@TYPE_CHANGEBASE); break; case 3: ChangeAppr(roclass(eaclass()|EAJL_THIRD),.@TYPE_CHANGEBASE); break; case 4: ChangeAppr(0,.@TYPE_SETLOOK); break; } close; OnPCLoginEvent: if(baselook && .dress_perma){ changebase baselook; } end; OnInit: .n$ = "[Dress Room]"; // NPC Name .cost_dressroom = 10000; // Cost .dress_perma = 1; }
-
How to make list of quest item requirement Descending?
Heartfelt replied to Heartfelt's question in Scripting Support
thanks a lot sir it's fixed now