-
Posts
582 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by AinsLord
-
how can i make it like a item costume sprite for 4th job class? do i need to use 2020 or 2021 client for it? or is there any way to implement it on 2018 client? TIA
-
go here conf/battle/exp.conf find this use_statpoint_table: no check it if yes or no i forgot
-
use this code prontera,141,179,5 script Rebirth System 531,{ function checkItem; // check if player have all item required function colorItemrequired; // color the text. Red : not enough item, green otherwise function deleteItem; // delete all items required function displayItemneed; // display all items need at start function getItemReward; // give the items reward //function weightreq; // check if your current weight is highter than weight high novice [email protected] = eaclass(); if ( num_rebirth == .reset_max ) { mes "You can only rebirth x"+ .reset_max +"."; emotion e_gasp; close; } else if( BaseLevel < 255 || JobLevel < 120 || ( !( [email protected]&EAJL_2 ) || !Upper ) && ( Class != Job_Ninja && Class != Job_Gunslinger && Class != Job_Soul_Linker && Class != Job_Star_Gladiator) ) { mes "You must be rebirth max level/max job level."; close; } mes "Items need :"; displayItemneed(); next; switch( select( "^777777~ Rebirth", "~ Informations", "~ Rebirth ranking", "~ Good bye^000000" ) ) { case 1: checkItem(); deleteItem(); break; case 2: mes "You can only rebirth ^ff0000x"+ .reset_max +"^000000. You already rebirth ^ff0000x"+ num_rebirth +"^000000."; mes "Each rebirth you get ^ff0000"+ .num_status +"^000000 status points and after ^ff0000"+ .change_reward +"^000000 rebirth, you get only some items."; close; case 4: mes "Bye."; close; case 3: mes "TOP 50 of rebirth."; mes "Name - Number of rebirth"; [email protected] = query_sql( "select `name`, `num_rebirth` from `rebirth_system` order by `num_rebirth` desc limit 50", [email protected]$, [email protected] ); if( [email protected] ) { for( [email protected] = 0; [email protected] < [email protected]; [email protected]++ ) mes "^777777"+ ( [email protected] +1 ) +"^000000 : "+ [email protected]$[[email protected]] +" : ^FF0000"+ [email protected][[email protected]] +"^000000"; } else mes "^0000ff* the list is empty *^000000"; close; } num_rebirth += 1; if ( Upper ) { // just in case the user change the setting... lastJob = roclass( [email protected]&EAJ_UPPERMASK ); jobchange Job_Novice_High; } else jobchange Job_Novice; resetlvl 1; if ( num_rebirth < .change_reward ) { if ( Class == Job_Novice ) StatusPoint = 48; StatusPoint = StatusPoint + .num_status * num_rebirth; } else { StatusPoint = StatusPoint + .num_status * .change_reward; getItemReward(); query_sql "insert into `rebirth_system` ( `account_id`, `name`, `num_rebirth`, `last_ip` ) select "+ getcharid(3) +", '"+ escape_sql( strcharinfo(0) ) +"', '"+ num_rebirth +"',`login`.`last_ip` from `login` where `login`.`account_id` = "+ getcharid(3) +" on duplicate key update `rebirth_system`.`num_rebirth` = `rebirth_system`.`num_rebirth` +1"; announce "[ Rebirth system ] : "+ strcharinfo(0) +" Successfully Rebirth!", 0; close; } function checkItem { for ( ; [email protected] < .size_item; [email protected] += 2 ) if ( countitem( .item_req[[email protected]] ) < .item_req[ [email protected]+1 ] + num_rebirth ) { mes "You don't have enought "+ getitemname( .item_req[[email protected]] ) +". ^ff0000["+ countitem( .item_req[[email protected]] ) +"/"+ ( .item_req[ [email protected]+1 ] + num_rebirth ) +"]^000000"; close; } if ( num_rebirth >= .change_reward ) if ( .add_item_req[1] + num_rebirth - .change_reward > countitem( .add_item_req[0] ) ) { mes "You don't have enought "+ getitemname( .add_item_req[0] ) +". ^ff0000["+ countitem( .add_item_req[0] ) +"/"+ ( .add_item_req[1] + num_rebirth - .change_reward ) +"]^000000"; close; } return; } function colorItemrequired { if ( countitem( .item_req[ getarg(0) ] ) < .item_req[ getarg(0)+1 ] + num_rebirth ) return "^ff0000"; return "^00ff00"; } function deleteItem { for ( ; [email protected] < .size_item; [email protected] += 2 ) delitem .item_req[[email protected]], ( .item_req[ [email protected]+1 ] + num_rebirth ); if ( num_rebirth >= .change_reward ) delitem .add_item_req[0], ( .add_item_req[1] + num_rebirth - .change_reward ); return; } function displayItemneed { for ( ; [email protected] < .size_item; [email protected] += 2 ) mes colorItemrequired( [email protected] ) +" - x"+ ( .item_req[ [email protected]+1 ] + num_rebirth ) +" "+ getitemname( .item_req[[email protected]] ); if ( num_rebirth >= .change_reward ) { if ( .add_item_req[1] + num_rebirth - .change_reward > countitem( .add_item_req[0] ) ) [email protected]$ = "^ff0000"; else [email protected]$ = "^00ff00"; mes [email protected]$ +"- x"+ ( .add_item_req[1] + ( num_rebirth - .change_reward ) ) +" "+ getitemname( .add_item_req[0] ); } return; } function getItemReward { for ( ; [email protected] < .size_reward; [email protected] += 2 ) getitem .reward[[email protected]], .reward[ [email protected]+1 ]; return; } function weightreq { if ( Weight > 20000 ) { mes "You have too much items on you. Your weight will be too high after rebirth."; close; } return; } OnInit: .reset_max = 200; // how much reset max .change_reward = 150; // after 30 rebirth, change reward .num_status = 10; // + X number of status points // item required <item ID>, <number> setarray .item_req, 7179, 50, 7227, 50, 969, 300; .size_item = getarraysize( .item_req ); // additionnal items after rebirth >> .change_reward // <item ID>, <number> setarray .add_item_req, 7179, 100; // rewards <item ID>, <number> setarray .reward, 674, 50; .size_reward = getarraysize( .reward ); end; } and look for this part else if( BaseLevel < 255 || JobLevel < 120 ||
-
head is off while using mount for female novice sprite
AinsLord replied to AinsLord's question in Graphics Support
im not getting errors its like from 30-99 is the same hairstyle dunno why i followed all the necessary files where to put still not showing -
head is off while using mount for female novice sprite
AinsLord replied to AinsLord's question in Graphics Support
is this the one? coz just female novice have that kind of issue dunno why edit i fixed it i used the sprite from the data.grf and merge it in my grf thanks for the help now my only proble is adding this custom hairstyle its not showing from 30 to 100 XD data.rar -
head is off while using mount for female novice sprite
AinsLord posted a question in Graphics Support
as you can see in the image when i turn the character like that the head is off to its position but when like this seems no problem i tried to check the grf seems no problem anyone can help me with this TIA -
how do you usually convert .txt to .yaml try this one item_db.yml
-
Connecting different database IP to different Webhost/cpanel IP
AinsLord posted a question in Web Support
so im trying to connect my database which is on a different host IP to my webhost/cpanel IP im getting like [email protected]<IP address> access denied something is there like ways to make it connected? TIA additional question can i add fluxCP without Cpanel or webhosting? if yes how TIA agin -
seal item script help to make it tradeable
AinsLord replied to AinsLord's question in Scripting Support
yea somehow similar to this one and i cant find any sad the one that i found is like bound item ID then the req then the output box item inside the box is like listed in the item restrict txt file a bit hassle if one by one adding the item its like will require certain item/zeny before returning back as a box and for yea thats what i actually done the problem is the script i provided was single item changer only that means i can only change 1 bound item -
so i found this script here - script asdfasdf -1,{ mes "[ Trade ]"; mes "Need "+getitemname(.req_itm)+" x"+.req_amt; menu "Yes",-; if(countitem(.req_itm) < .req_amt || countitem(.bnd_itm) < 1){ mes "No pods"; mes "No card"; close; } mes "Got pods"; delitem .req_itm,.req_amt; getitem .get_itm,1; close; OnInit: .bnd_itm = 503; .req_itm = 501; .req_amt = 1000; .get_itm = 502; end; } is there some way to make this script like read the item that is account bounded or make this like i can add multiple items what i supposedly planning is like an item is account bounded then character will go to the NPC and the NPC will ask certain items to revert it to box and be traded since account bound items are not tradeable thanks in advance
-
is there like accumulative type of daily login script example: days 7 login reward is battle manual so day1 to day6 i logged in perfectly then 7days i skipped it then i logged in day 8 i still get the day 7 reward thou i wont get the day 8 reward thanks i hope my example is quite understanding hahah TIA
-
im just wondering if there is like an NPC/Script that can turn the character bound item to a like box to be traded ex: bounded sword the player just need to talk to NPC and the NPC will require certain amount of item to make it like sealed box of sword thanks in advance i just found this script here prontera,147,174,6 script Test 620,{ mes "[ Trade ]"; mes "Need "+getitemname(.req_itm)+" x"+.req_amt; menu "Yes",-; if(countitem(.req_itm) < .req_amt || countitem(.bnd_itm) < 1){ mes "No pods"; mes "No card"; close; } mes "Got pods"; delitem .req_itm,.req_amt; getitem .get_itm,1; close; OnInit: .bnd_itm = 1201; .req_itm = 501; .req_amt = 1; .get_itm = 502; end; } how can i add like multiple item to this script ty
-
how can i limit of level reset per character
AinsLord replied to AinsLord's question in Scripting Support
TYSM -
here the script im using prontera,143,173,5 script Level Reset 757,{ if (BaseLevel < 255||JobLevel < 120 ) { mes "You need to be at least level 255 and Job level 120."; } else if (select("Reset", "cancel") == 1) { resetlvl 1; RESET_COUNT++; StatusPoint += (RESET_COUNT * 10); // free 10 status point per reset. if (RESET_COUNT && RESET_COUNT % 10 == 0) { getitem 512, 10; // every 10 reset get apple. } } end; } is there a possible way to limit like 20 resets only per character ty in advance
-
Utility: Punching Bag with DPS counter
AinsLord replied to Secrets's topic in Utility Script Releases
might want to share just incase someone encounter the same problem -
Utility: Punching Bag with DPS counter
AinsLord replied to Secrets's topic in Utility Script Releases
nothing wrong with the script its the client version is the one that is not supported im using the stable 20180621aRagexe try to check the diff of your client in Nemo i haven't tried 2020 version of clients -
Utility: Punching Bag with DPS counter
AinsLord replied to Secrets's topic in Utility Script Releases
punch.txt just change the location of the dummy -
Utility: Punching Bag with DPS counter
AinsLord replied to Secrets's topic in Utility Script Releases
mine is still good im using latest rathena DPS details -
i dont know if this is common or not transparent slot in my inventory
AinsLord replied to AinsLord's question in General Support
still same i got to client diffs if its in my grf my other client diff should have it also -
i dont know if this is common or not transparent slot in my inventory
AinsLord posted a question in General Support
so i dunno what happen its just my inventory show like this a transparent slot already try to reconnect still same close the game still same anyone encounter this thanks -
Utility: All In One - Random Options Script
AinsLord replied to sader1992's topic in Utility Script Releases
i found out why it hangs it happens because of my phpmyadmin database thanks i love your script -
Utility: All In One - Random Options Script
AinsLord replied to sader1992's topic in Utility Script Releases
im using this sir @sader1992 at 1st it was working fine then several days after when i tried to put options after selecting proceed this happens it hangs cant move cant even TP nor chat i need to reboot the whole VPS to bring it back i dunno what happen i didnt change any codes or add anything i just created another NPC of it for addition ID option i forgot that ID 1 has the same item on the other NPC that has ID 2 like this NPC 1 //Creating Group id 1 , with Hat items inside. AddGroup(1,2220,2221,2222,2223); NPC 2 //Creating Group id 1 , with Hat items inside. AddGroup(2,2223); will that affect this DO NOT REUSE THE SAME ITEM ID IN DIFFERENT GROUP! -
Utility: All In One - Random Options Script
AinsLord replied to sader1992's topic in Utility Script Releases
it was working before but now when i tried it again seems after this part its not proceeding at all cant event teleport what seems to be the problem no error in the console here the code //===== rAthena Script ======================================= //= saders All in one Random Option Script //= Free Script!!!! //===== By: ================================================== //= sader1992 //= https://sader1992.com/ //= https://rathena.org/board/profile/30766-sader1992/ //= https://sader1992.com/?page=item&item=54 //= For more , check out here > //= https://sader1992.com/?page=ra_services //= https://sader1992.com/?page=store //= https://rathena.org/board/profile/30766-sader1992/content/?type=downloads_file //===== Current Version: ===================================== //= 1.0 //===== Compatible With: ===================================== //= rAthena Project //https://rathena.org/board/files/file/4309-all-in-one-random-options-script/ //https://github.com/sader1992/sader_scripts //===== Update Log: ========================================= //= Version 1.0 Creating the script. //===== Description: ========================================= //= This is a Highly Custumizable random option script //= you can reuse the script by just creating a new file with different setting!. //= read and understand the settings. //============================================================ prontera,127,170,7 script AllInOne_RandomOption 444,{ disable_items; function rnd; switch(select("Insert Random Options:Allowed Items List")){ case 1: mes "You must equip the item to appear here!"; for([email protected]=0;[email protected]<EQI_MAX;[email protected]++){ if(getequipisequiped([email protected])) { [email protected]$ += (inarray(.item_list,getequipid([email protected])) != -1?"^11AD09":"^F73831") + F_getpositionname([email protected]) + "-[" + getequipname([email protected]) + "]^000000"; [email protected] = true; } [email protected]$ += ":"; } if([email protected]){ mes "You have to equip the item you want to insert the random options into!."; end; } [email protected] = select([email protected]$) -1; clear; [email protected] = getequipid([email protected]); if(inarray(.item_list,[email protected]) == -1){ mes "Sorry , I cannot deal with this item!"; end; } [email protected] = .it[[email protected]]; if([email protected]){ mes "Something went wrong!"; end; } if(!getequiprandomoption([email protected],0,ROA_ID)){ [email protected] = .nz[[email protected]]; [email protected] = .nk[[email protected]]; [email protected] = .nc[[email protected]]; copyarray([email protected],getd(".ni_" + [email protected]),getarraysize(getd(".ni_" + [email protected]))); copyarray([email protected],getd(".na_" + [email protected]),getarraysize(getd(".na_" + [email protected]))); }else{ if(!.g_reroll[[email protected]]){ mes "Sorry , i cannot reroll the random options in this item!"; end; } [email protected] = .rz[[email protected]]; [email protected] = .rk[[email protected]]; [email protected] = .rc[[email protected]]; copyarray([email protected],getd(".ri_" + [email protected]),getarraysize(getd(".ri_" + [email protected]))); copyarray([email protected],getd(".ra_" + [email protected]),getarraysize(getd(".ra_" + [email protected]))); } mes "Selected Item [" + getequipname([email protected]) + "]"; mes "==== Cost ===="; if([email protected]) mes "Zeny: " + [email protected]; if([email protected]) mes "CashPoint: " + [email protected]; if([email protected]) mes .CustomPointsName$ + ": " + [email protected]; for([email protected]=0;[email protected]<getarraysize([email protected]);[email protected]++){ mes "(" + [email protected][[email protected]] + ") " + getitemname([email protected][[email protected]]); } if(!.KeepItemData){ mes "^E01E00You will loss all the refine and cards in the item if you continue.^000000"; } mes "Would you like to continue?"; if(select("Yes:No") == 2){ clear; mes "Ok, see you next time!"; end; } clear; if(Zeny < [email protected]){ mes "You don't have " + [email protected] + " Zeny"; [email protected] = true; } if(#CASHPOINTS < [email protected]){ mes "You don't have " + [email protected] + " CashPoints"; [email protected] = true; } if(getd(.CustomPointsVariable$) < [email protected]){ mes "You don't have " + [email protected] + " " + .CustomPointsName$; [email protected] = true; } for([email protected]=0;[email protected]<getarraysize([email protected]);[email protected]++){ if(countitem([email protected][[email protected]]) < [email protected][[email protected]]){ mes "You don't have (" + [email protected][[email protected]] + ") " + getitemname([email protected][[email protected]]); [email protected] = true; } } if([email protected]) end; [email protected] = getequiprefinerycnt([email protected]); for([email protected]=0;[email protected]<4;[email protected]++){ if(getequipcardid([email protected],[email protected])){ setd "[email protected]" + [email protected],getequipcardid([email protected],[email protected]); [email protected][getarraysize([email protected])] = true; } } copyarray([email protected]_id,getd(".ro_id_" + [email protected] + "_0"),getarraysize(getd(".ro_id_" + [email protected] + "_0"))); copyarray([email protected]_mn,getd(".ro_mn_" + [email protected] + "_0"),getarraysize(getd(".ro_mn_" + [email protected] + "_0"))); copyarray([email protected]_mx,getd(".ro_mx_" + [email protected] + "_0"),getarraysize(getd(".ro_mx_" + [email protected] + "_0"))); for([email protected]=1;[email protected]<6;[email protected]++){ copyarray(getd("[email protected]_id" + [email protected]),getd(".ro_id_" + [email protected] + "_" + [email protected]),getarraysize(getd(".ro_id_" + [email protected] + "_" + [email protected]))); copyarray(getd("[email protected]_mn" + [email protected]),getd(".ro_mn_" + [email protected] + "_" + [email protected]),getarraysize(getd(".ro_mn_" + [email protected] + "_" + [email protected]))); copyarray(getd("[email protected]_mx" + [email protected]),getd(".ro_mx_" + [email protected] + "_" + [email protected]),getarraysize(getd(".ro_mx_" + [email protected] + "_" + [email protected]))); } for([email protected]=1;[email protected]<6;[email protected]++){ if(rand(100) > getd(".s_" + [email protected] + "[" + [email protected] + "]")) break; if(getd(".ro_id_" + [email protected] + "_" + [email protected])){ if(!getarraysize(getd("[email protected]_id" + [email protected]))) break; [email protected] = rand(getarraysize(getd("[email protected]_id" + [email protected]))); [email protected]_id = getd("[email protected]_id" + [email protected] + "[" + [email protected] + "]"); [email protected]_vl = rnd(getd("[email protected]_mn" + [email protected] + "[" + [email protected] + "]"),getd("[email protected]_mx" + [email protected] + "[" + [email protected] + "]")); deletearray(getd("[email protected]_id" + [email protected] + "[" + [email protected] + "]"),1); deletearray(getd("[email protected]_mn" + [email protected] + "[" + [email protected] + "]"),1); deletearray(getd("[email protected]_mx" + [email protected] + "[" + [email protected] + "]"),1); }else{ if([email protected]_id) break; [email protected] = rand(getarraysize([email protected]_id)); [email protected]_id = [email protected]_id[[email protected]]; [email protected]_vl = rnd([email protected]_mn[[email protected]],[email protected]_mx[[email protected]]); if(!.g_reuse[[email protected]]){ deletearray([email protected]_id[[email protected]],1); deletearray([email protected]_mn[[email protected]],1); deletearray([email protected]_mx[[email protected]],1); } } if(.ex[[email protected]_id]){ for([email protected]=0;[email protected]<getarraysize([email protected]_id);[email protected]++){ if(.ex[[email protected]_id] == .ex[[email protected]_id[[email protected]]]){ [email protected] = true; } } } if([email protected]){ [email protected] = getarraysize([email protected]_id); [email protected]_id[[email protected]] = [email protected]_id; [email protected]_v[[email protected]] = [email protected]_vl; }else{ [email protected]; [email protected]++; if([email protected] > 50){ mes "Something went wrong , The server admin need to make sure that the config is done correctly!"; end; } } } if(Zeny < [email protected]) end; if(#CASHPOINTS < [email protected]) end; if(getd(.CustomPointsVariable$) < [email protected]) end; for([email protected]=0;[email protected]<getarraysize([email protected]);[email protected]++){ if(countitem([email protected][[email protected]]) < [email protected][[email protected]]){ end; } } // anti-hack if (callfunc("F_IsEquipIDHack", [email protected], [email protected]) || callfunc("F_IsEquipCardHack", [email protected], [email protected], [email protected], [email protected], [email protected])) { // anti-hack emotion ET_FRET; mes "Item Switch detected!"; end; } Zeny -= [email protected]; #CASHPOINTS-= [email protected]; setd(.CustomPointsVariable$,getd(.CustomPointsVariable$) - [email protected]); for([email protected]=0;[email protected]<getarraysize([email protected]);[email protected]++){ delitem([email protected][[email protected]],[email protected][[email protected]]); } if([email protected]_id){ specialeffect2 EF_REFINEOK; mes "Look Like you didn't get any random option, your luck is really bad!"; end; } delequip([email protected]); specialeffect2 EF_REFINEOK; if(.KeepItemData) getitem3([email protected],1,1,[email protected],0,[email protected],[email protected],[email protected],[email protected],[email protected]_id,[email protected]_v,[email protected]); else getitem3([email protected],1,1,0,0,0,0,0,0,[email protected]_id,[email protected]_v,[email protected]); equip([email protected]); mes "Done!"; end; case 2: mes "The list of the allowed items in this npc!"; for([email protected]=0;[email protected]<getarraysize(.item_list);[email protected]++){ mes "<ITEM>" + getitemname(.item_list[[email protected]]) + "[" + getitemslots(.item_list[[email protected]]) + "]<INFO>" + .item_list[[email protected]] + "</INFO></ITEM>"; if([email protected] >= 10 && !([email protected]%10)) next; } end; } end; function rnd { if(.HardBalance){ return rand(getarg(0),rand(getarg(0),getarg(1))); } return rand(getarg(0),getarg(1)); } function AddGroup { [email protected] = getarg(0); for([email protected]=1;[email protected]<getargcount();[email protected]++){ .it[getarg([email protected])] = [email protected]; .item_list[getarraysize(.item_list)] = getarg([email protected]); } return; } function AddGroupOption { [email protected] = getarg(0); .g_reroll[[email protected]] = getarg(1); .g_reuse[[email protected]] = getarg(2); return; } function AddGroupCost { [email protected] = getarg(0); .nz[[email protected]] = getarg(1); .nk[[email protected]] = getarg(2); .nc[[email protected]] = getarg(3); for([email protected]=4;[email protected]<getargcount();[email protected]+=2){ [email protected] = getarraysize(getd(".ni_" + [email protected])); setd(".ni_" + [email protected] + "[" + [email protected] + "]",getarg([email protected])); setd(".na_" + [email protected] + "[" + [email protected] + "]",getarg([email protected]+1)); } return; } function AddGroupReRollCost { [email protected] = getarg(0); .rz[[email protected]] = getarg(1); .rk[[email protected]] = getarg(2); .rc[[email protected]] = getarg(3); for([email protected]=4;[email protected]<getargcount();[email protected]+=2){ [email protected] = getarraysize(getd(".ri_" + [email protected])); setd(".ri_" + [email protected] + "[" + [email protected] + "]",getarg([email protected])); setd(".ra_" + [email protected] + "[" + [email protected] + "]",getarg([email protected]+1)); } return; } function AddGroupChance { [email protected] = getarg(0); .s_1[[email protected]] = getarg(1); .s_2[[email protected]] = getarg(2); .s_3[[email protected]] = getarg(3); .s_4[[email protected]] = getarg(4); .s_5[[email protected]] = getarg(5); return; } function AddOpt { [email protected] = getarg(0); [email protected] = getarg(1); [email protected] = getarraysize(getd(".ro_id_" + [email protected] + "_" + [email protected])); setd(".ro_id_" + [email protected] + "_" + [email protected] + "[" + [email protected] + "]",getarg(2)); setd(".ro_mn_" + [email protected] + "_" + [email protected] + "[" + [email protected] + "]",getarg(3)); setd(".ro_mx_" + [email protected] + "_" + [email protected] + "[" + [email protected] + "]",getarg(4)); return; } function AddExclusiveOpt { [email protected] = getarraysize(.exv); .exv[[email protected]] = true; for([email protected]=0;[email protected]<getargcount();[email protected]++){ .ex[getarg([email protected])] = [email protected]; } return; } OnInit: .exv = true;//DO NOT REMOVE THIS. .KeepItemData = true;//if this is 'false , the player will loss the refine+cards from the item when he use this npc. .CustomPointsVariable$ = "#COSTUMPOINTS";//The variable name of the costum points. .CustomPointsName$ = "Server RO Points";//The name of the costum points, this what the player will see. .HardBalance = true;//if this is true , it would be much harder to get high value in the random option. //AddGroup(<Group ID>,<ItemID>,<ItemID>,<ItemID>,<ItemID>,<ItemID>); /* AddGroup Doc <Group ID> = a number between 1 and MAX_INT64 DO NOT REUSE THE GROUP ID IN THE SAME FILE CONFIG! DO NOT REUSE THE SAME ITEM ID IN DIFFERENT GROUP! will create a group id you can add as many as you want items inside a group. */ //AddGroupOption(<Group ID>,<Allow ReRoll?true:false>,<Allow reuse already gotten option?true:false>,<Zeny Cost>,<CashPoint Cost>,<Custom Points Cost>,<Item1 ID Cost>,<Item1 Amount Cost>,<Item2 ID Cost>,<Item2 Amount Cost>,<....ETC>); /* AddGroupOption Doc <Group ID> = A group id that is already created in AddGroup()!. <Allow ReRoll?true:false> = allow reroll an item with random option or not <Allow reuse already gotten option?true:false> = for exammple if you have str in the options and the player gor it , can he get it again in another slot? */ //AddGroupCost(<Group ID>,<Zeny Cost>,<CashPoint Cost>,<Custom Points Cost>,<Item1 ID Cost>,<Item1 Amount Cost>,<Item2 ID Cost>,<Item2 Amount Cost>,<....ETC>); /* AddGroupCost Doc <Group ID> = A group id that is already created in AddGroup()!. <Zeny Cost> = the zeny cost (can be 0) <CashPoint Cost> = the cashpoints cost (can be 0) <Custom Points Cost> = if you are using costum points in the script , check out .CustomPointsVariable$ and .CustomPointsName$ at the start of the script (can be 0) <Item1 ID Cost> = the item cost <Item1 Amount Cost> = the item amount cost You can use as many item,amount cost at the end of the function. */ //AddGroupReRollCost(<Group ID>,<Zeny Cost>,<CashPoint Cost>,<Custom Points Cost>,<Item1 ID Cost>,<Item1 Amount Cost>,<Item2 ID Cost>,<Item2 Amount Cost>,<....ETC>); /* AddGroupReRollCost Doc <Group ID> = A group id that is already created in AddGroup()!. <Zeny Cost> = the zeny cost (can be 0) <CashPoint Cost> = the cashpoints cost (can be 0) <Custom Points Cost> = if you are using costum points in the script , check out .CustomPointsVariable$ and .CustomPointsName$ at the start of the script (can be 0) <Item1 ID Cost> = the item cost <Item1 Amount Cost> = the item amount cost You can use as many item,amount cost at the end of the function. */ //AddGroupChance(<Group ID>,<1st Option Chance>,<2nd Option Chance>,<3rd Option Chance>,<4th Option Chance>,<5th Option Chance>); /* AddGroupChance Doc <Group ID> = A group id that is already created in AddGroup()!. <1st Option Chance> = the Chance to get one of the random options in the slot 1 (can be 0) <2nd Option Chance> = the Chance to get one of the random options in the slot 2 (can be 0) <3rd Option Chance> = the Chance to get one of the random options in the slot 3 (can be 0) <4th Option Chance> = the Chance to get one of the random options in the slot 4 (can be 0) <5th Option Chance> = the Chance to get one of the random options in the slot 5 (can be 0) Keep inmind that if the player didn't get lucky for example at the slot 2 , all the chances after will be ignored you cannot skip a random option slot that would bug the game client. */ //AddOpt(<Group ID>,<Location>,<Random Option ID>,<Minimum Value>,<Maximum Value>); /* AddOpt Doc <Group ID> = A group id that is already created in AddGroup()!. <Location> = you can spisfiy random option to a location from 1 to 5 , but you can use 0 , if you used 0 it will apply to all locations that doesn't have spisfied random options. <Random Option ID> = random option id , you can use the id or the variable , check out the file /rathena/db/re/item_randomopt_db.yml <Minimum Value> = the minimum value <Maximum Value> = the maximum value */ //AddExclusiveOpt(<Random Option ID>,<Random Option ID>,<Random Option ID>,<Random Option ID>,<Random Option ID>); /* AddExclusiveOpt Doc this will help you to prevent a group of random opions typs in the same item in different slots for example RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET RDMOPT_DAMAGE_PROPERTY_WATER_TARGET RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET RDMOPT_DAMAGE_PROPERTY_FIRE_TARGET RDMOPT_DAMAGE_PROPERTY_WIND_TARGET RDMOPT_DAMAGE_PROPERTY_POISON_TARGET RDMOPT_DAMAGE_PROPERTY_SAINT_TARGET RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET if the player got 1 of them in a slot , he wont get another one to another slot */ //Example!!!> //this is just an example , this script allow you to create any random option system you want. //Creating Group id 1 , with Hat items inside. AddGroup(1,2220,2221,2222,2223); //Group id 1 Options AddGroupOption(1,true,false); //Group id 1 Cost AddGroupCost(1,50,0,0,0,0,0,0); //Group id 1 ReRoll Cost AddGroupReRollCost(1,50,0,0,0,0,0,0); //Group id 1 Chances. AddGroupChance(1,100,100,100,100,100); //Group id 1 Random Option List. location 0 mean all the slot locations AddOpt(1,0,RDMOPT_VAR_STRAMOUNT,1,100); AddOpt(1,0,RDMOPT_VAR_INTAMOUNT,1,100); AddOpt(1,0,RDMOPT_VAR_VITAMOUNT,1,100); AddOpt(1,0,RDMOPT_VAR_LUKAMOUNT,1,100); AddOpt(1,0,RDMOPT_VAR_AGIAMOUNT,1,100); AddOpt(1,0,RDMOPT_VAR_DEXAMOUNT,1,100); AddOpt(1,0,RDMOPT_VAR_MAXHPPERCENT,1,100); AddOpt(1,0,RDMOPT_VAR_MAXSPPERCENT,1,100); //those enchantment you wont get unless in slot 5 AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET,1,100); AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_WATER_TARGET,1,100); AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET,1,100); AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_FIRE_TARGET,1,100); AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_WIND_TARGET,1,100); AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_POISON_TARGET,1,100); AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_SAINT_TARGET,1,100); AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET,1,100); AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET,1,100); AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET,1,100); //this mean those random options cannot coexist in the same item!. AddExclusiveOpt(RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET, RDMOPT_DAMAGE_PROPERTY_WATER_TARGET, RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET, RDMOPT_DAMAGE_PROPERTY_FIRE_TARGET, RDMOPT_DAMAGE_PROPERTY_WIND_TARGET, RDMOPT_DAMAGE_PROPERTY_POISON_TARGET, RDMOPT_DAMAGE_PROPERTY_SAINT_TARGET, RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET, RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET, RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET); end; } this is a work of @sader1992 TIA EDIT: whole map server lags when i try to add option -
i tried to convert my icabits generated itemdb.txt to yml this what happens can anyone help me why it shows like this? thanks in advance PS: Fixed it for got to change its type to armor