

Racaae
Members-
Posts
212 -
Joined
-
Last visited
-
Days Won
31
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Racaae
-
Hi prontera,161,220,5 script Top 2 who died the most 4_BOARD3,{ mes "[Top 2 who died the most]"; .@nb = query_sql( "SELECT count(2) as deaths, (SELECT name FROM `char` where char_id = died_id) FROM diedlog GROUP BY died_id ORDER BY deaths DESC LIMIT 2", .@kills, .@name$ ); query_sql( "SELECT count(2) as deaths FROM diedlog where died_id = '" + getcharid(0) + "'", .@personal ); if (.@nb) { for ( .@i = 0; .@i < .@nb; ++.@i ) mes F_GetNumSuffix(.@i+1) + " ^0000FF" + .@name$[.@i] + "^000000 - "+ .@kills[.@i] + " death" + (.@kills==1?"":"s"); } else mes "no entry"; mes " ", "Your deaths : " + .@personal; if (getgroupid() > 80) { if (select("Cancel.", "^FF0000Reset^000000") == 2) { query_sql(" TRUNCATE TABLE `diedlog`; "); mes "Reset done."; } } close; OnInit: query_sql("CREATE TABLE IF NOT EXISTS `diedlog` (`id` mediumint(9) unsigned NOT NULL auto_increment, `date` datetime NOT NULL, `died_id` int(11) NOT NULL default '0', PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1;"); end; OnPCDieEvent: query_sql("INSERT INTO `diedlog` (`date`, `died_id`) VALUES (now(), '" + getcharid(0) + "');"); end; }
-
Yes, you can make the item cast on self. Please follow the instructions to set this thing. Open the file \db\import\item_db.yml and add this code at the end of the file. - Id: 690000 AegisName: SL_SOULLINKER_Scroll Name: Spirit of the Soul Linker Type: DelayConsume Buy: 1000 Weight: 10 Flags: BuyingStore: true NoUse: Sitting: true Script: | itemskill "SL_SOULLINKER",5; Open your iteminfo file on YourGameClientFolder\System\itemInfo and add this: [690000] = { unidentifiedDisplayName = "Spirit of the Soul Linker Scroll", unidentifiedResourceName = "ºÒÀÇÁÖ¹®¼", unidentifiedDescriptionName = { "" }, identifiedDisplayName = "Spirit of the Soul Linker Scroll", identifiedResourceName = "ºÒÀÇÁÖ¹®¼", identifiedDescriptionName = { "A spell scroll which was made by the essence of ancient magic.", "_______________________", "^0000CCType:^000000 Magic scroll", "^0000CCCast:^000000 Level 5 Soul Linker Spirit", "^FF0000Must be cast on a Soul Linker class.^000000", "^0000CCWeight:^000000 1" }, slotCount = 0, ClassNum = 0, costume = false }, Then restart the server and reopen your game. Try using @item 690000 to receive the item and test it.
-
Help - Script to equip an item and transform it into a visual class
Racaae replied to Kater's topic in Script Releases
Sorry. Also replace Type: Armor to Type: Shadowgear. -
Help - Script to equip an item and transform it into a visual class
Racaae replied to Kater's topic in Script Releases
Change Both_Accessory to Shadow_Right_Accessory or Shadow_Left_Accessory. \doc\item_db.txt Locations: Equipment's placement. Head_Top - Upper Headgear Head_Mid - Middle Headgear Head_Low - Lower Headgear Armor - Armor Right_Hand - Weapon Left_Hand - Shield Garment - Garment/Robe Shoes - Shoes Right_Accessory - Accessory Right Left_Accessory - Accessory Left Costume_Head_Top - Costume Top Headgear Costume_Head_Mid - Costume Mid Headgear Costume_Head_Low - Costume Low Headgear Costume_Garment - Costume Garment/Robe Ammo - Ammo Shadow_Armor - Shadow Armor Shadow_Weapon - Shadow Weapon Shadow_Shield - Shadow Shield Shadow_Shoes - Shadow Shoes Shadow_Right_Accessory - Shadow Accessory Right (Earring) Shadow_Left_Accessory - Shadow Accessory Left (Pendant) Both_Hand - Right_Hand + Left_Hand Both_Accessory - Right_Accessory + Left_Accessory -
Help - Script to equip an item and transform it into a visual class
Racaae replied to Kater's topic in Script Releases
Hi. Example: - Id: 2609 AegisName: Skul_Ring Name: Skull Ring Type: Armor Locations: Both_Accessory: true Script: | changebase 4023; UnEquipScript: | changebase Class; -
Hi. Open \db\import\skill_db.yml and add this code at the end of the file. Body: - Id: 461 Description: Spirit of the Soul Linker Flags: NoTargetSelf: false Then restart your server or use @reloadskilldb.
-
I get warped and the announce just fine. ShadowClone_Slain should be 1. Remove the whole killedgid line, it is most likely the cause of your error. ShadowClone_Slain = 0 //challenge not completed ShadowClone_Slain = XXXXXXX //challenge ongoing ShadowClone_Slain = 1 //challenge completed
-
Hi. Use a invencible hidden monster, give it use invisible skill and earthquake. Summon it wherever you want. It will look like the main monster casts the skill. Example: \db\re\mob_db.yml - Id: 3038 AegisName: HIDDEN_MOB7 Name: Monster 7 JapaneseName: Hidden Mob 7 Level: 151 Hp: 10000 Attack: 500 Defense: 200 MagicDefense: 100 Str: 100 Agi: 100 Vit: 100 Int: 100 Dex: 400 Luk: 100 AttackRange: 1 SkillRange: 12 ChaseRange: 12 Size: Small Race: Formless Element: Ghost ElementLevel: 4 WalkSpeed: 1000 Class: Boss Modes: Aggressive: true IgnoreMagic: true IgnoreMelee: true IgnoreMisc: true IgnoreRanged: true \db\re\mob_skill_db.txt 3038,Hidden Mob 7@NPC_INVISIBLE,idle,353,1,10000,0,30000,yes,self,always,0,,,,,,, 3038,Hidden Mob 7@NPC_INVISIBLE,attack,353,1,10000,0,30000,yes,self,always,0,,,,,,, 3038,Hidden Mob 7@NPC_HELLBURNING,idle,719,1,10000,0,3000,yes,self,always,0,,,,,,, 3038,Hidden Mob 7@NPC_HELLBURNING,attack,719,1,10000,0,3000,yes,self,always,0,,,,,,, Script prontera,155,145,5 script Test#bssk03 2362,{ npctalk "Walk close to me in the next 10 seconds and you will burn!"; .@event$ = strnpcinfo(0) + "::OnMyMobDead"; monster "prontera",155,148, "#f_w_1",3038,1, .@event$; monster "prontera",158,145, "#f_w_1",3038,1, .@event$; monster "prontera",155,142, "#f_w_1",3038,1, .@event$; monster "prontera",152,145, "#f_w_1",3038,1, .@event$; sleep 10000; killmonster "prontera", .@event$; npctalk "It's safe now..."; end; OnMyMobDead: end; }
-
Hi. Your clone command is setting the event label in a incorret way. getcharid and setcharid are also showing errors. The remaining code is fine. You can use OnPCDieEvent to trigger the clone death when the player dies. Check the script below. Feel free to ask anything about it. prt_fild01,76,171,5 script Kelly 4_F_KHELLY,{ // Check if the player has already defeated the shadow clone if (ShadowClone_Slain == 1) { mes "[NPC Challenge]"; mes "Congratulations! You have already defeated your own clone."; close; } // Check if the player is fighting the shadow clone if (unitexists(ShadowClone_Slain)) { npctalk "Defeat your own clone to pass this challenge.", strnpcinfo(0), bc_self; end; } mes "[NPC Challenge]"; mes "Hello, adventurer. Are you ready for the next test?"; next; mes "[NPC Challenge]"; mes "To pass this test, you will have to face your greatest weakness: yourself."; next; mes "[NPC Challenge]"; mes "Now, get ready..."; next; mes "[NPC Challenge]"; mes "I have summoned a shadowy clone of you. Only you can see it and defeat it."; next; mes "[NPC Challenge]"; mes "Defeat your own clone to pass this challenge."; close2; // Get the name of the player interacting with the NPC set .@player_name$, strcharinfo(0); // Call the @clone command to summon the shadow clone ShadowClone_Slain = clone("anrydrago", 76, 171, strnpcinfo(0) + "::OnEvilClone_Event", getcharid(0), 0, 0); end; OnEvilClone_Event: if (playerattached() == 0) end; if (killedgid != ShadowClone_Slain) end; mes "[Shadow Clone Event]"; mes "You have defeated your own clone. Congratulations!"; next; // Mark that the player has slain the shadow clone //setcharid(0, "ShadowClone_Slain", 1); ShadowClone_Slain = 1; // Teleport the player to Prontera warp "prontera", 150, 150; close; OnPCDieEvent: if (strcharinfo(3) == strnpcinfo(4) && ShadowClone_Slain > 1 && unitexists(ShadowClone_Slain)) { unitkill ShadowClone_Slain; ShadowClone_Slain = 0; announce strnpcinfo(1) + " : The clone defeated you...", bc_self; } end; }
-
Hi. You can use getstatus command to check if player used Battle Manual. *getstatus(<effect type>{,<type>{,<char_id>}}) Retrieve information about a specific status effect when called. Depending on <type> specified the function will return different information. Possible <type> values: - 0 or undefined: whether the status is active - 1: the val1 of the status if (getstatus(SC_EXPBOOST)) BaseExp = BaseExp + 100 + 50 * getmonsterinfo(killedrid, 3); Example: - script 175Exp -1,{ OnNPCKillEvent: if (getmonsterinfo(killedrid, 1) < 70) end; if (BaseLevel >= 99 && BaseLevel <= 120) { .@base_bonus = 100; .@job_bonus = 50; } else if (BaseLevel >= 120 && BaseLevel <= 139) { .@base_bonus = 3000; .@job_bonus = 2500; } else if (BaseLevel >= 140 && BaseLevel <= 159) { .@base_bonus = 3000; .@job_bonus = 1500; } else if (BaseLevel >= 160 && BaseLevel <= 180) { .@base_bonus = 40000; .@job_bonus = 6000; } else if (BaseLevel >= 180 && BaseLevel <= 199) { .@base_bonus = 200000; .@job_bonus = 8000; } else if (BaseLevel >= 200 && BaseLevel <= 250) { .@base_bonus = 600000; .@job_bonus = 300000; } if (getstatus(SC_EXPBOOST)) { .@base_bonus += getstatus(SC_EXPBOOST,1); .@job_bonus += getstatus(SC_EXPBOOST,1); } .@base_total = .@base_bonus * getmonsterinfo(killedrid, MOB_BASEEXP); .@job_total = .@job_bonus * getmonsterinfo(killedrid, MOB_JOBEXP); getexp2 .@base_total,.@job_total; end; }
-
Aumenta a quantidade de pontos para distribuir nas habilidades
Racaae replied to maciel's question in Suporte ao Desenvolvimento
Hi, this area of the forum is primarily for use in English. There is a specific area for using Portuguese. You could change the maximum level of each class to match the amount of points you need, but I think that would be too much work. Maybe an NPC that gives more points to the player who needs it, I made one for you to test. PT: Oi, essa área do fórum é para uso principal em inglês. Tem a área especíifica para usar portugûes. Você poderia mudar o nível máximo de cada classe para corresponder com a quantidade de ponto que precisa, mas acho que daria muito trabalho. Pode ter um NPC que dá mais pontos para o player que precisar, fiz um para você testar. //===== Script for rAthena by Racaae ========================= //= https://rathena.org/board/topic/142172-aumenta-a-quantidade-de-pontos-para-distribuir-nas-habilidades/ //============================================================ gonryun,153,115,5 script Mestre das Habilidades 4_M_FAIRYSCHOLAR,{ .@extra_point = 50; //Quantos pontos o NPC oferece .@job_level = 130; //nível de classe máximo if (!SkillPoint && JobLevel >= .@job_level) { npctalk "Eu lhe conçedo conhecimento!!", strnpcinfo(0), bc_self; SkillPoint += .@extra_point; specialeffect2 EF_BASH3D6; specialeffect2 EF_ITEM315; specialeffect2 1044; specialeffect2 1044; sleep2 3000; emotion ET_DELIGHT; npctalk "Aproveite seus pontos de habilidade.", strnpcinfo(0), bc_self; end; } cutin "ep14_robert1", 1; mes "[" + strnpcinfo(1) + "]"; mes "Olá, já pensou em como seria se você pudesse aprender TODAS as habilidades da sua classe?"; mes "Estou aqui para ajudar nisso!"; next; mes "[" + strnpcinfo(1) + "]"; mes "Quando você chegar ao ^FF8000nível máximo de classe e estiver sem pontos de habilidades^000000, venha falar comigo para eu lhe conceder ^000088pontos de habilidade extras^000000."; next; mes "[" + strnpcinfo(1) + "]"; mes "Quantas vezes você precisar, de graça e sem pegadinhas."; mes "Faço isso apenas com o intuito de proporcionar para você a melhor experiência!"; close3; } -
prontera,150,150,5 script YouTubeReward 123,{ goto Main; // Configuration OnInit: // YouTube video link set .video_link$, "https://www.youtube.com/your_video_link"; // Code to be entered by the player set .correct_code$, "your_code_here"; // Cash points reward set .cash_points_reward, 100; end; // Main script Main: mes "[YouTube Reward NPC]"; if (youtube_reward == 1) { mes "You have already received your reward for watching the video."; close; } mes "Hello, adventurer!"; mes "Watch the following YouTube video and find the hidden code to receive a reward."; mes "<URL>Video link<INFO>" + .video_link$ + "</INFO></URL>"; next; if (select("I watched the video.", "Cancel") == 2) close; mes "[YouTube Reward NPC]"; mes "Enter the code you found in the video:"; input @code$; clear; if (@code$ == .correct_code$) { mes "[YouTube Reward NPC]"; mes "Congratulations! You have entered the correct code."; mes "Here is your reward."; // Give the player cash points set #CASHPOINTS, #CASHPOINTS + .cash_points_reward; set youtube_reward, 1; // Mark the player as having received the reward close; } else { mes "[YouTube Reward NPC]"; mes "Sorry, that code is incorrect. Please watch the video and try again."; close; } }
-
-
The new enchant system cannot be opened/used correctly...
Racaae replied to redwingangel's question in Source Support
@reloaditemdb -
Refine? Do you mean identify? Any warning on the map-server console? Which Kafra NPC you talking? This should work only on the default/commom ones.
-
Hi, find in \npc\kafras\functions_kafras.txt .@menu$ = implode(.@K_Menu0$,":"); And insert above it: .@s = getarraysize(.@K_Menu0$); .@K_Menu0$[.@s] = .@K_Menu0$[.@s-1]; .@K_Menu0$[.@s-1] = "Identify items (100z each)"; Find: else if (.@K_Menu0$[.@j] == "Use Guild Storage") { callfunc "F_KafStor",1,0; next; } And insert below it: else if (.@K_Menu0$[.@j] == "Identify items (100z each)") { callfunc "F_KafIdentify"; next; } Also insert this at the end of the file: //=================================================== // Identify Items Function //=================================================== function script F_KafIdentify { .@zeny = 100; .@i = identifyall(false); mes "[Kafra Employee]"; mes "The cost for identify each item is " + .@zeny + "z."; if (.@i) { mes "You have " + F_InsertPlural(.@i, "unidentified item") + "."; mes "Are you sure you want to pay ^0000FF" + .@zeny * .@i + "z^000000?"; next; if(select("Yes.", "No, I changed my mind.") == 1) { if (Zeny < .@zeny * .@i) { mes "[Kafra Employee]"; mes "I'm sorry, but you don't have enough zeny."; return; } Zeny -= .@zeny * .@i; identifyall; mes "[Kafra Employee]"; mes "All your items have been identified."; mes "Thank you for using the Kafra Services!"; } } else mes "You have no unidentified items in your inventory."; return; } Or just replace the whole file:functions_kafras.txt
-
Hi. aura_vips2.txt
-
Quests, Games: sader's hunting quest
Racaae replied to sader1992's topic in Game, Event, Quest Script Releases
Hi, each category needs a unique .variable, it cannot be shared. AddCata("Level 150",.TransMedium AddCata("Level 160",.TransMedium AddCata("Level 170",.TransMedium AddCata("Level 180",.TransMedium AddCata("Level 190",.TransMedium In the example above only the last loaded category (Level 190) gets the variable .TransMedium. The previous ones remain empty. I edited the script to support more .variables for each AddMob. It's just a workaround so I don't know if that will work for you. Syntax example: //AddMob(<.var>,<mob id>,<min count>,<max count> {,<extra .var{,<extra .var...}}); AddMob(.Hard,1219,25,50); AddMob(.Trans,1098,25,50,Trans110,Trans120); AddMob(.TransNormal,1219,25,50,.TransNor140); AddMob(.TransMedium,1716,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); //===== rAthena Script ======================================= //= saders hunting quest //===== By: ================================================== //= Sader1992 //https://rathena.org/board/profile/30766-sader1992/ //===== Current Version: ===================================== //= 5.2 //===== Compatible With: ===================================== //= rAthena Project //https://rathena.org/board/files/file/3579-saders-hunting-quest/ //https://github.com/sader1992/sader_scripts //===== Description: ========================================= //============================================================ //============================================================ - pointshop Hunting_Quest_Shop -1,#HUNT_Q_POINTS,512:1; //Account Based Shop //- pointshop Hunting_Quest_Shop -1,HUNT_Q_POINTS,512:1; //Character Based Shop prt_in,40,115,4 script Legendary Monster Hunter 667,{ function Ac; mes "Your Quest Progress:"; for(.@i=0;.@i<getarraysize(.CataName$);.@i++){ if(getd(Ac() + "COM_" + .@i)){ mes .CataName$[.@i] + ": Complete"; setd Ac() + "POINTS",getd(Ac() + "POINTS") + .CataRP[.@i]; if(.ExpServerRate){ getexp .CataBXP[.@i],.CataJXP[.@i]; }else{ getexp2 .CataBXP[.@i],.CataJXP[.@i]; } if(getd(".IRD_" + .@i)){ for(.@j=0;.@j<getarraysize(getd(".IRD_" + .@i));.@j++){ getitem(getd(".IRD_" + .@i + "[" + .@j + "]"),getd(".CRD_" + .@i + "[" + .@j + "]")); } } setd(Ac() + "CD_" + .@i,gettimetick(2) + (.CataCD[.@i] * 60 * 60)); setd(Ac() + "COM_" + .@i,false); setd(Ac() + "ID_" + .@i,0); setd(Ac() + "C_" + .@i,0); setd(Ac() + "CC_" + .@i,0); continue; } .@CD = getd(Ac() + "CD_" + .@i); if(.@CD > gettimetick(2)){ mes .CataName$[.@i] + ": " + gettimestr("%Y-%m/%d %H:%M:%S",21,.@CD); continue; } if(getd(Ac() + "ID_" + .@i)){ mes .CataName$[.@i] + "(" + getd(Ac() + "CC_" + .@i) + "/" + getd(Ac() + "C_" + .@i) + ") " + strmobinfo(1,getd(Ac() + "ID_" + .@i)); continue; } mes .CataName$[.@i] + ": None"; } .@s1 = select("Open Shop:" + implode(.CataName$,":")) -2; clear; if(.@s1 == -1){ callshop "Hunting_Quest_Shop",1; end; } .@CD = getd(Ac() + "CD_" + .@s1); if(.@CD > gettimetick(2)){ mes "you are under the cooldown effect"; mes "try again after " + gettimestr("%Y-%m/%d %H:%M:%S",21,.@CD); end; } if(getd(Ac() + "ID_" + .@s1)){ mes "Your Quest Progress:"; mes "(" + getd(Ac() + "CC_" + .@s1) + "/" + getd(Ac() + "C_" + .@s1) + ") " + strmobinfo(1,getd(Ac() + "ID_" + .@s1)); if(.AllowDeleteQuest){ mes "would you like to delete the quest?"; if(select("yes:no") == 2) end; mes "by deleting the quest you wont get any reward"; if(.ApplyCoolDownOnDelete) mes "and the cooldown will be applied!"; mes "Are you sure!?"; if(select("yes:no") == 2) end; clear; if(.ApplyCoolDownOnDelete){ setd(Ac() + "CD_" + .@s1,gettimetick(2) + (.CataCD[.@s1] * 60 * 60)); } setd(Ac() + "ID_" + .@s1,0); setd(Ac() + "C_" + .@s1,0); setd(Ac() + "CC_" + .@s1,0); mes "your quest has been deleted!"; end; } end; } if(BaseLevel < .CataMN_L[.@s1] || BaseLevel > .CataMX_L[.@s1]){ mes "you need to be between level " + .CataMN_L[.@s1] + " And " + .CataMX_L[.@s1] + " to get this quest!"; end; } mes "would you like to get a quest?"; if(select("yes:no") == 2) end; copyarray(.@mid,getd(".m_id_" + .@s1),getarraysize(getd(".m_id_" + .@s1))); mes .@s1 + " " + .@mid[0] + " " + .@mid[1]; .@r = rand(getarraysize(.@mid)); copyarray(.@mmn,getd(".m_mn_" + .@s1),getarraysize(getd(".m_mn_" + .@s1))); copyarray(.@mmx,getd(".m_mx_" + .@s1),getarraysize(getd(".m_mx_" + .@s1))); setd(Ac() + "ID_" + .@s1,.@mid[.@r]); setd(Ac() + "C_" + .@s1,rand(getd(".m_mn_" + .@s1 + "[" + .@r + "]"),getd(".m_mx_" + .@s1 + "[" + .@r + "]"))); setd(Ac() + "CC_" + .@s1,0); mes "Please Kill:"; mes "(" + getd(Ac() + "CC_" + .@s1) + "/" + getd(Ac() + "C_" + .@s1) + ") " + strmobinfo(1,getd(Ac() + "ID_" + .@s1)); end; OnNPCKillEvent: for(.@i=0;.@i<getarraysize(.CataName$);.@i++){ if(getd(Ac() + "ID_" + .@i) == killedrid && !getd(Ac() + "COM_" + .@i)){ setd(Ac() + "CC_" + .@i,getd(Ac() + "CC_" + .@i) + 1); dispbottom "Hunting Quest [" + .CataName$[.@i] + "]: (" + getd(Ac() + "CC_" + .@i) + "/" + getd(Ac() + "C_" + .@i) + ") " + strmobinfo( 1,getd(Ac() + "ID_" + .@i)); if(getd(Ac() + "CC_" + .@i) >= getd(Ac() + "C_" + .@i)){ dispbottom "Your " + .CataName$[.@i] + " Hunting Quest is Done."; setd(Ac() + "COM_" + .@i,true); } } } end; OnHuntingCheck: dispbottom "Your Hunting Quest Progress:"; for(.@i=0;.@i<getarraysize(.CataName$);.@i++){ if(getd(Ac() + "COM_" + .@i)){ dispbottom .CataName$[.@i] + ": Complete"; continue; } .@CD = getd(Ac() + "CD_" + .@i); if(.@CD > gettimetick(2)){ dispbottom .CataName$[.@i] + ": " + gettimestr("%Y-%m/%d %H:%M:%S",21,.@CD); continue; } if(getd(Ac() + "ID_" + .@i) == killedrid && !getd(Ac() + "COM_" + .@i)){ dispbottom .CataName$[.@i] + "(" + getd(Ac() + "CC_" + .@i) + "/" + getd(Ac() + "C_" + .@i) + ") " + strmobinfo(1,getd(Ac() + "ID_" + .@i)); continue; } dispbottom .CataName$[.@i] + ": None"; } end; function Ac { if(.AccountBase) return "#" + .variable_name$; return .variable_name$; } function AddCata { .@s = getarraysize(.CataName$); set getarg(1),.@s; .CataName$[.@s] = getarg(0); .CataMN_L[.@s] = getarg(2); .CataMX_L[.@s] = getarg(3); .CataCD[.@s] = getarg(4); .CataBXP[.@s] = getarg(5); .CataJXP[.@s] = getarg(6); .CataRP[.@s] = getarg(7); for(.@i=8;.@i<getargcount();.@i+=2){ .@s2 = getarraysize(getd(".IRD_" + .@s)); setd ".IRD_" + .@s + "[" + .@s2 + "]",getarg(.@i); setd ".CRD_" + .@s + "[" + .@s2 + "]",getarg(.@i+1); } return; } function AddMob { for (.@i = 0; .@i < getargcount(); .@i++) { .@s = getarraysize(getd(".m_id_" + getarg(.@i))); setd ".m_id_" + getarg(.@i) + "[" + .@s + "]",getarg(1); setd ".m_mn_" + getarg(.@i) + "[" + .@s + "]",getarg(2); setd ".m_mx_" + getarg(.@i) + "[" + .@s + "]",getarg(3); if (.@i == 0) .@i = 3; } return; } OnInit: .AccountBase = false;//wither or not the quests are on account or on character .ExpServerRate = true;//get exp according to the server rate? .AllowDeleteQuest = true;//allow player to delete his quest without getting the reward .ApplyCoolDownOnDelete = true;//wither or not apply cooldown on deleting the quest. .variable_name$ = "#HUNT_Q_POINTS"; //keep in mind if you changed this you need to change the points in the shop! bindatcmd("MyQuest",strnpcinfo(3)+"::OnHuntingCheck",0,250); freeloop(1); //You can add as much categories as you want! //recommended not more then 25! //.VAR MUST BE UNIQUE FOR EACH CATEGORY //AddCata(<"name">,<.var>,<mini level>,<max level>,<cooldown in hours>,<base exp reward>,<job exp reward>,<point reward>,<ITEM ID>,<COUNT>{,<ITEM ID>,<COUNT>{,<ITEM ID>,<COUNT>}}) AddCata("Easy",.Easy,10,99,0,500,500,10,673,5,12210,0,676,1); AddCata("Normal",.Normal,30,99,0,2500,2500,30,673,10,12210,0,670,1); AddCata("Hard",.Hard,70,150,0,10000,10000,50,673,20,677,1,670,rand(0,2)); AddCata("Undead Easy",.UndeadOne,10,99,0,500,500,10,673,5,677,0,676,1); AddCata("Undead Normal",.UndeadTwo,30,99,0,2500,2500,20,673,10,677,0,670,1); AddCata("Undead Hard",.UndeadThree,70,99,0,10000,10000,30,673,20,677,1,670,rand(0,2)); AddCata("Level 99",.Trans,99,150,0,4000000,4000000,30,673,30,677,1,670,2); AddCata("Level 110",.Trans110,110,150,1,10000000,10000000,30,673,30,677,1,670,2); AddCata("Level 120",.Trans120,120,250,1,20000000,20000000,30,673,30,677,1,670,2); AddCata("Level 130",.TransNormal,130,250,1,40000000,40000000,30,673,30,677,1,670,2); AddCata("Level 140",.TransNor140,140,250,1,150000000,60000000,30,673,30,677,1,670,2); AddCata("Level 150",.TransMedium,150,250,1,200000000,80000000,30,673,30,677,1,670,2); AddCata("Level 160",.TransMed160,160,250,1,400000000,100000000,30,673,30,677,1,670,2); AddCata("Level 170",.TransMed170,170,250,1,800000000,1500000000,30,673,30,677,1,670,2); AddCata("Level 180",.TransMed180,180,250,1,1800000000,1800000000,30,673,30,677,1,670,2); AddCata("Level 190",.TransMed190,190,250,1,50000000000,50000000000,30,673,30,677,1,670,2); AddCata("MVP",.TransMVP,200,250,0,1000000000000,1000000000000,30,673,50,12210,1,677,5,670,4); AddCata("Indeterminate",.Indeterminate,66,250,0,1000000,1000000,20,673,25,677,5,670,2); //You can add as much mobs as you want! //AddMob(<.var>,<mob id>,<min count>,<max count> {,<extra .var{,<extra .var...}}); AddMob(.Easy,1052,25,75); AddMob(.Easy,1076,25,75); AddMob(.Easy,1015,25,75); AddMob(.Easy,1014,25,75); AddMob(.Easy,1055,25,75); AddMob(.Easy,1019,25,75); AddMob(.Easy,1178,25,75); AddMob(.Easy,1023,25,75); AddMob(.Easy,1153,25,75); AddMob(.Easy,1060,25,75); AddMob(.Easy,1013,25,75); AddMob(.Easy,1127,25,75); AddMob(.Easy,1106,25,75); AddMob(.Easy,1028,25,75); AddMob(.Easy,1026,25,75); AddMob(.Easy,1053,25,75); AddMob(.Easy,1031,25,75); AddMob(.Easy,1024,25,75); AddMob(.Easy,1052,25,75); AddMob(.Easy,1077,25,75); AddMob(.Easy,1033,25,75); AddMob(.Easy,1141,25,75); AddMob(.Easy,1613,25,75); AddMob(.Easy,1139,25,75); AddMob(.Easy,1152,25,75); AddMob(.Easy,1243,25,75); AddMob(.Normal,1146,50,100); AddMob(.Normal,1016,50,100); AddMob(.Normal,1177,25,75); AddMob(.Normal,1044,25,75); AddMob(.Normal,1273,25,75); AddMob(.Normal,1188,25,75); AddMob(.Normal,1170,25,75); AddMob(.Normal,1248,25,75); AddMob(.Normal,1164,25,75); AddMob(.Normal,1417,25,75); AddMob(.Normal,1628,25,75); AddMob(.Normal,1041,25,75); AddMob(.Normal,1261,25,75); AddMob(.Normal,1032,25,75); AddMob(.Normal,1249,25,75); AddMob(.Normal,1215,25,75); AddMob(.Normal,1140,25,75); AddMob(.Normal,1836,25,75); AddMob(.Normal,1036,25,75); AddMob(.Normal,1143,25,75); AddMob(.Normal,1776,25,75); AddMob(.Normal,1616,25,75); AddMob(.Normal,1102,25,75); AddMob(.Normal,1155,25,75); AddMob(.Normal,1517,25,75); AddMob(.Normal,1189,25,75); AddMob(.Normal,1493,25,75); AddMob(.Normal,1213,25,75); AddMob(.Normal,1149,25,75); AddMob(.Normal,1512,25,75); AddMob(.Normal,1369,25,75); AddMob(.Normal,1193,25,75); AddMob(.Normal,1117,25,75); AddMob(.Hard,1206,25,50); AddMob(.Hard,1154,25,50); AddMob(.Hard,1883,25,50); AddMob(.Hard,1321,25,50); AddMob(.Hard,1504,25,50); AddMob(.Hard,1314,25,50); AddMob(.Hard,1317,25,50); AddMob(.Hard,1297,25,50); AddMob(.Hard,1310,25,50); AddMob(.Hard,1365,25,50); AddMob(.Hard,1617,25,50); AddMob(.Hard,1318,25,50); AddMob(.Hard,1717,25,50); AddMob(.Hard,1372,25,50); AddMob(.Hard,1316,25,50); AddMob(.Hard,1366,25,50); AddMob(.Hard,1148,25,50); AddMob(.Hard,1219,25,50); AddMob(.Trans,1098,25,50,.Trans110,.Trans120); AddMob(.Trans,1315,25,50,.Trans110,.Trans120); AddMob(.Trans,1714,25,50,.Trans110,.Trans120); AddMob(.Trans,1319,25,50,.Trans110,.Trans120); AddMob(.Trans,1366,25,50,.Trans110,.Trans120); AddMob(.Trans,1505,25,50,.Trans110,.Trans120); AddMob(.Trans,1148,25,50,.Trans110,.Trans120); AddMob(.Trans,1316,25,50,.Trans110,.Trans120); AddMob(.Trans,1376,25,50,.Trans110,.Trans120); AddMob(.TransNormal,1716,25,50,.TransNor140); AddMob(.TransNormal,1713,25,50,.TransNor140); AddMob(.TransNormal,1769,25,50,.TransNor140); AddMob(.TransNormal,1098,25,50,.TransNor140); AddMob(.TransNormal,1315,25,50,.TransNor140); AddMob(.TransNormal,1714,25,50,.TransNor140); AddMob(.TransNormal,1319,25,50,.TransNor140); AddMob(.TransNormal,1376,25,50,.TransNor140); AddMob(.TransNormal,1866,25,50,.TransNor140); AddMob(.TransNormal,1867,25,50,.TransNor140); AddMob(.TransNormal,2017,25,50,.TransNor140); AddMob(.TransNormal,1206,25,50,.TransNor140); AddMob(.TransNormal,1154,25,50,.TransNor140); AddMob(.TransNormal,1883,25,50,.TransNor140); AddMob(.TransNormal,1321,25,50,.TransNor140); AddMob(.TransNormal,1504,25,50,.TransNor140); AddMob(.TransNormal,1314,25,50,.TransNor140); AddMob(.TransNormal,1317,25,50,.TransNor140); AddMob(.TransNormal,1297,25,50,.TransNor140); AddMob(.TransNormal,1310,25,50,.TransNor140); AddMob(.TransNormal,1365,25,50,.TransNor140); AddMob(.TransNormal,1617,25,50,.TransNor140); AddMob(.TransNormal,1318,25,50,.TransNor140); AddMob(.TransNormal,1717,25,50,.TransNor140); AddMob(.TransNormal,1372,25,50,.TransNor140); AddMob(.TransNormal,1316,25,50,.TransNor140); AddMob(.TransNormal,1366,25,50,.TransNor140); AddMob(.TransNormal,1148,25,50,.TransNor140); AddMob(.TransNormal,1219,25,50,.TransNor140); AddMob(.TransMedium,1716,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1713,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1759,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1786,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1769,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1098,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1315,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1714,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1319,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1376,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1866,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1867,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,2017,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1716,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1713,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1759,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1786,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1769,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1098,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1315,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1714,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1319,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1376,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1866,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1867,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1310,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1365,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1617,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1318,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1717,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1372,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1316,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1366,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1148,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1219,25,50,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1268,1,3,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1720,1,3,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMedium,1289,1,3,.TransMed160,.TransMed170,.TransMed180,.TransMed190); AddMob(.TransMVP,1511,1,2); AddMob(.TransMVP,1785,1,5); AddMob(.TransMVP,1389,1,2); AddMob(.TransMVP,1112,1,2); AddMob(.TransMVP,1252,1,2); AddMob(.TransMVP,1251,1,2); AddMob(.TransMVP,1147,1,2); AddMob(.TransMVP,1159,1,2); AddMob(.TransMVP,1038,1,2); AddMob(.TransMVP,1087,1,2); AddMob(.TransMVP,1150,1,2); AddMob(.TransMVP,1086,1,2); AddMob(.TransMVP,1115,1,2); AddMob(.TransMVP,1150,1,2); AddMob(.TransMVP,1159,1,2); AddMob(.TransMVP,1583,1,2); AddMob(.TransMVP,1492,1,2); AddMob(.TransMVP,1190,1,2); AddMob(.TransMVP,1511,1,2); AddMob(.Indeterminate,1033,200,300); AddMob(.Indeterminate,1057,200,300); AddMob(.Indeterminate,1784,200,300); AddMob(.Indeterminate,1178,200,300); AddMob(.Indeterminate,1067,200,300); AddMob(.Indeterminate,1153,200,300); AddMob(.Indeterminate,1023,200,300); AddMob(.Indeterminate,1044,200,300); AddMob(.Indeterminate,1165,200,300); AddMob(.Indeterminate,1164,200,300); AddMob(.Indeterminate,1041,200,300); AddMob(.Indeterminate,1032,200,300); AddMob(.Indeterminate,1249,200,300); AddMob(.Indeterminate,1376,25,50); AddMob(.Indeterminate,1098,25,50); AddMob(.Indeterminate,1366,25,50); AddMob(.UndeadOne,1076,25,75); AddMob(.UndeadOne,1015,25,75); AddMob(.UndeadOne,1064,25,75); AddMob(.UndeadOne,1153,25,75); AddMob(.UndeadOne,1071,25,75); AddMob(.UndeadOne,1152,25,75); AddMob(.UndeadOne,1028,25,75); AddMob(.UndeadOne,1026,25,75); AddMob(.UndeadOne,1169,25,75); AddMob(.UndeadTwo,1016,25,75); AddMob(.UndeadTwo,1188,25,75); AddMob(.UndeadTwo,1041,25,75); AddMob(.UndeadTwo,1032,25,75); AddMob(.UndeadTwo,1036,25,75); AddMob(.UndeadTwo,1616,25,75); AddMob(.UndeadTwo,1192,25,75); AddMob(.UndeadTwo,1512,25,75); AddMob(.UndeadTwo,1117,25,75); AddMob(.UndeadThree,1132,25,75); AddMob(.UndeadThree,1297,25,75); AddMob(.UndeadThree,1098,25,75); AddMob(.UndeadThree,1401,25,75); AddMob(.UndeadThree,1505,25,75); AddMob(.UndeadThree,1219,25,75); end; } -
atcommand "<command>"; Hi, atcommand has no parameter for char/account ID. Find: .@command$ = "@summony " + .@mob_id + " " + .@qty; atcommand(.@command$, getcharid(3)); Replace: .@command$ = "@summony " + .@mob_id + " " + .@qty + " " + getcharid(3); atcommand(.@command$);
-
Hi //===== rAthena Script by Racaae ============================= //= https://rathena.org/board/topic/142092-reputation-increase-by-podszeny-script/ //============================================================ prontera,170,181,4 script Reputation Increaser 4_EP19_IWIN,{ .@zeny_cost = 2000000; //Zeny amount needed to increase rep .@zeny_reputation = 10; //how much rep player get using item .@item_cost = 5; //item amount needed to increase rep .@item_reputation = 100;//how much rep player get using item .@item_id = 7179; //Proof of Donation ID // <Reputation ID>, "<Name>", <Max Limit>; setarray .@rep$, 3, "Grey Wolf Village", 4000, 4, "Ice Castle", 2000; disable_items; cutin "ep19_iwin04.png", 2; mes "[Reputation Increaser]"; if (getarraysize(.@rep$) > 3) mes "Hello, I can ^FF8000increase your reputation^000000 in some areas if you are willing to invest ^FF8000POD or Zeny^000000."; else mes "Hello, I can ^FF8000increase your reputation^000000 in the " + .@rep$[1] + " if you are willing to invest ^FF8000POD or Zeny^000000."; next; switch(select("How does that work?", (.@zeny_cost?"Invest Zeny":""), (.@item_cost?"Invest POD":""), "Finish conversation")) { case 1: mes "[Reputation Increaser]"; mes "I'm here to collect investment from adventurers, therefore increasing their reputation with the area."; if (getarraysize(.@rep$) > 3) { mes "Available areas:"; for (.@i = 0; .@i < getarraysize(.@rep$); .@i+=3) mes "- " + .@rep$[.@i+1]; } next; mes "[Reputation Increaser]"; if (.@zeny_cost) mes "For each ^000088" + F_InsertComma(.@zeny_cost) + "z^000000 you give me, your reputation increases by ^FF0000" + F_InsertComma(.@zeny_reputation) + " points^000000."; if (.@item_cost) { mes "For ^000088" + F_InsertComma(.@item_cost) + "^000000 " + mesitemlink(.@item_id); mes "you give me, your reputation increases by ^FF0000" + F_InsertComma(.@item_reputation) + " points^000000."; } next; mes "[Reputation Increaser]"; if (getarraysize(.@rep$) > 3) { mes "I can increase reputation up to a max. No investments can be made when you reach it."; for (.@i = 0; .@i < getarraysize(.@rep$); .@i+=3) mes "- " + .@rep$[.@i+1] + " Max: " + .@rep$[.@i+2]; } else mes "I can increase reputation up to a max " + .@rep$[2] + ". No investments can be made when you reach it."; close3; case 2: .@zeny = true; break; case 4: mes "[Reputation Increaser]"; mes "Please do come back, Have a nice day!"; close3; } if (getarraysize(.@rep$) > 3) { mes "[Reputation Increaser]"; mes "Which area will you invest?"; .@menu$ = ""; for (.@i = 0; .@i < getarraysize(.@rep$); .@i += 3) .@menu$ += .@rep$[.@i+1] + ":"; .@s = (select(.@menu$) - 1) * 3; clear; } mes "[Reputation Increaser]"; if (get_reputation_points(atoi(.@rep$[.@s])) >= (atoi(.@rep$[.@s+2]))) { mes "I can only increase your reputation in the " + .@rep$[.@s+1] + " up to " + .@rep$[.@s+2] + " points."; mes "No investments can be made anymore."; close3; } if (.@zeny) { mes "For each ^000088" + F_InsertComma(.@zeny_cost) + "z^000000 you give me, your reputation increases by ^FF0000" + F_InsertComma(.@zeny_reputation) + " points^000000."; if (Zeny < .@zeny_cost) { mes "^FF0000You don't have enough Zeny.^000000"; close3; } } else { mes "For ^000088" + F_InsertComma(.@item_cost) + "^000000 " + mesitemlink(.@item_id); mes "you give me, your reputation increases by ^FF0000" + F_InsertComma(.@item_reputation) + " points^000000."; if (countitem(.@item_id) < .@item_cost) { mes "^FF0000You don't have enough POD.^000000"; close3; } } switch(select("Invest 1 time", "Input how many times", "Cancel")) { clear; case 1: .@t = 1; mes "[Reputation Increaser]"; break; case 2: mes "[EXAMPLES]"; for (.@i = 1; .@i < 11; .@i++) { if (.@zeny) mes .@i + ": ^000088" + F_InsertComma(.@zeny_cost * .@i) + "z^000000 > ^FF0000" + F_InsertComma(.@zeny_reputation * .@i) + " reputation"; else mes .@i + ": ^000088" + F_InsertComma(.@item_cost * .@i) + " POD^000000 > ^FF0000" + F_InsertComma(.@item_reputation * .@i) + " reputation"; if (.@i == 3) .@i = 4; if (.@i == 5) .@i = 9; } mes "^FF0000(Enter '0' to cancel the transaction)^000000"; input .@t; if (.@t < 1) close3; clear; mes "[Reputation Increaser]"; if (.@zeny) { if (.@t * .@zeny_cost > Zeny) { .@t = Zeny / .@zeny_cost; mes "You don't have enough Zeny for that."; mes "The closest amount you can invest is " + F_InsertComma(.@zeny_cost * .@t) + "z."; } } else if (.@t * .@item_cost > countitem(.@item_id)) { .@t = countitem(.@item_id) / .@item_cost; mes "You don't have enough POD for that."; mes "The closest amount you can invest is " + F_InsertComma(.@item_cost * .@t) + " POD."; } break; case 3: mes "[Reputation Increaser]"; mes F_Bye; close3; } if (.@zeny) mes "Are you sure you want to invest ^000088" + F_InsertComma(.@zeny_cost * .@t) + "z^000000 to receive ^FF0000" + F_InsertComma(.@zeny_reputation * .@t) + " reputation points^000000 in the " + .@rep$[.@s+1] + "?"; else mes "Are you sure you want to invest ^000088" + F_InsertComma(.@item_cost * .@t) + " POD^000000 to receive ^FF0000" + F_InsertComma(.@item_reputation * .@t) + " reputation points^000000 in the " + .@rep$[.@s+1] + "?"; next; if (select("No, cancel.", "Yes, continue!") == 1) close3; mes "[Reputation Increaser]"; if ((.@zeny && (get_reputation_points(atoi(.@rep$[.@s])) + (.@t * .@zeny_reputation) > atoi(.@rep$[.@s+2]))) || (!.@zeny && (get_reputation_points(atoi(.@rep$[.@s])) + (.@t * .@item_reputation) > atoi(.@rep$[.@s+2])))) { emotion ET_OTL; mes "Sorry. That amount of reputation would exceed the maximum " + .@rep$[.@s+2] + " I can increase."; close3; } if (.@zeny) { if (Zeny < .@zeny_cost * .@t) { mes "^FF0000You don't have enough Zeny...^000000"; close3; } .@getRep = .@zeny_reputation * .@t; Zeny -= .@zeny_cost * .@t; } else { if (countitem(.@item_id) < .@item_cost * .@t) { mes "^FF0000You don't have enough POD...^000000"; close3; } .@getRep = .@item_reputation * .@t; delitem .@item_id, .@item_cost * .@t; } add_reputation_points(atoi(.@rep$[.@s]), .@getRep); mes "It is done! Thank you!"; mes " "; mes "^0000FFYour reputation in the " + .@rep$[.@s+1] + " increases by " + F_InsertComma(.@getRep) + " points^000000."; specialeffect2 EF_STEALCOIN; emotion ET_DELIGHT; close3; }
- 1 reply
-
- 1
-
-
Hola //===== rAthena Script ======================================= //= https://rathena.org/board/topic/142082-pedido-npc-refinador-agregar-bonus/ //============================================================ prontera,170,181,4 script Refinador 4_4JOB_MAURA,{ .@max = 10; //max refino disable_items; cutin "4job_maura_01.PNG",2; mes "[Refinador]"; mes "Hola. Puedo refinar tus equipos ^0000FFsin que se rompan^000000, que ^0000FFno cobre nada^000000 y te deje ^0000FFelegir a qué nivel sube (+1 ~ +" + .@max + ")^000000!"; mes "Por favor elige el equipo."; setarray .@position$[1],"Head upper","Armor","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head middle","Head lower"; setarray .@indices[1], EQI_HEAD_TOP, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R, EQI_HEAD_MID, EQI_HEAD_LOW; for ( .@i = 1; .@i <= 10; ++.@i ) .@menu$ += .@position$[.@i] + " [" + (getequipisequiped(.@indices[.@i]) ? getequipname(.@indices[.@i]) : .@position$[.@i] + "- Nada") + "]:"; .@part = .@indices[ select(.@menu$) ]; clear; if (!getequipisequiped(.@part)) { mes "[Refinador]"; mes "Tienes que equipar el equipo que quieres refinar."; close3; } if (!getequipisenableref(.@part)) { emotion ET_OTL; mes "[Refinador]"; mes "Oh lo siento."; mes "Este artículo es imposible de refinar."; close3; } .@refineitemid = getequipid(.@part); // save id of the item .@refinerycnt = getequiprefinerycnt(.@part); //save refinery count setarray .@card[0], getequipcardid(.@part,0), getequipcardid(.@part,1), getequipcardid(.@part,2), getequipcardid(.@part,3); mes "[Refinador]"; mes "A qué nivel quieres refinar tu " + .@position$[@menu] + "?"; input .@r; clear; if (.@r < 1) { mes "[Refinador]"; mes "Sólo puedo refinar de +1 a +" + .@max + "."; close3; } if (.@r > .@max) { mes "[Refinador]"; mes "Solo puedo refinar desde hasta +" + .@max + "."; if (select("Refinar a +" + .@max + ".", "No importa.") == 2) close3; .@r = .@max; } if (getequiprefinerycnt(.@part) == .@r) { emotion ET_PROFUSELY_SWEAT; mes "[Refinador]"; mes "^8B4513Este artículo ya está refinado al nivel que deseas...^000000"; close3; } // anti-hack if (callfunc("F_IsEquipIDHack", .@part, .@refineitemid) || callfunc("F_IsEquipRefineHack", .@part, .@refinerycnt) || callfunc("F_IsEquipCardHack", .@part, .@card[0], .@card[1], .@card[2], .@card[3])) { next; emotion ET_FRET; mes "[Refinador]"; mes "Espera un segundo..."; mes "¡¿Crees que soy estúpido?!"; mes "¡Cambiaste el objeto mientras yo no miraba! ¡Fuera de aquí!"; close3; } if (getequiprefinerycnt(.@part) > .@r) downrefitem .@part, getequiprefinerycnt(.@part) - .@r; else successrefitem .@part, .@r - getequiprefinerycnt(.@part); emotion ET_DELIGHT; specialeffect EF_SUI_EXPLOSION; mes "[Refinador]"; mes "Muy bien, aquí está ~"; close3; } Puedes usar el sistema de Random Options.
-
Hi, find the line with // unhide npc and add: setbattleflag( "base_exp_rate", getbattleflag("base_exp_rate") * 2 ); setbattleflag( "job_exp_rate", getbattleflag("job_exp_rate") * 2 ); setbattleflag( "quest_exp_rate", getbattleflag("quest_exp_rate") * 2 ); Now find the line with // hidenpc and add: setbattleflag( "base_exp_rate", getbattleflag("base_exp_rate") / 2 ); setbattleflag( "job_exp_rate", getbattleflag("job_exp_rate") / 2 ); setbattleflag( "quest_exp_rate", getbattleflag("quest_exp_rate") / 2 );
-
How To Make My Custom Quest As Individual Quest
Racaae replied to Dolphin86's question in Scripting Support
Like Chaos mentioned, each quest need it's own variable to register each cooldown time. Try using tr0n's Questboard, it does what you want and it is easy to add/edit quests. Find these lines to see the examples: AddHunting("Prontera Field 01",11340,1,21,"40221|40222",1,0,2100,2100,1002,300,1007,300,1008,300); AddCollect("Foliage Gathering",1,11,"40221",1,0,2100,2100,705,10,707,10,7100,10,706,1); -
Añade en \db\import\mob_db.yml - Id: 3747 AegisName: E_COWRAIDERS1 Drops: - Item: Calf_Anaconda Rate: 5 - Item: Calf_Python Rate: 5 - Id: 3748 AegisName: E_COWRAIDERS2 Drops: - Item: Calf_Deathadder Rate: 5 - Item: Calf_Kingcobra Rate: 5 - Id: 3749 AegisName: E_COWRAIDERS3 Drops: - Item: Calf_Diamondback Rate: 5
-
Custom Quest Description Not Showing - RecommendedQuestInfoList_True_EN.lub
Racaae replied to Dolphin86's question in Database Support
Hi, RecommendedQuestInfoList and OngoingQuestInfoList have some little different fields. Try using QuestInfo1 instead of Description. Example: RecommendedQuestInfoList = {} RecommendedQuestInfoList = { [1] = { Title = "Prontera Field 01", IconName = "ico_nq.bmp", NpcSpr = "4_M_JOB_HUNTER", NpcNavi = "moc_para01", NpcPosX = 39, NpcPosY = 36, BgName = "reco_01.bmp", QuestInfo1 = { "Hunt following monster list.", "300 Poring", "300 Pupa", "300 Fabre" }, QuestInfo2 = { "Quest reset at 24 hours and account bounded.", }, QuestInfo3 = { "^ff0000This page is intended for exclusive content news. Please note that completing quests will not remove them from this page.^000000" }, Summary = "Quest reset at 24 hours and account bounded.", RewardEXP = "2100", RewardJEXP = "2100", RewardItemList = { {ItemID = 40221, ItemNum = 1}, {ItemID = 40222, ItemNum = 1} }, } }