Jump to content

Emistry

Forum Moderator
  • Posts

    9,746
  • Joined

  • Days Won

    305

Everything posted by Emistry

  1. in this scenario, it make no different, but if you are switching to quest_db then you had to rewrite the script and clientside quest info files.
  2. if (rand(1,100) > getd("[email protected]"[email protected]+"[0]")) { for(set [email protected],0; [email protected]<getarraysize([email protected]); set [email protected],[email protected]+2) { getitem [email protected][[email protected]], [email protected][[email protected]+1]; if([email protected][0]) setarray [email protected][0], [email protected][[email protected]], [email protected][[email protected]+1]; } } else{ for(set [email protected],1; [email protected]<getarraysize(getd("[email protected]"[email protected])); set [email protected],[email protected]+2) { getitem getd("[email protected]"[email protected]+"["[email protected]+"]"), getd("[email protected]"[email protected]+"["+([email protected]+1)+"]"); if ([email protected][0]) { set [email protected],[email protected]; setarray [email protected][0], getd("[email protected]"[email protected]+"["[email protected]+"]"), getd("[email protected]"[email protected]+"["+([email protected]+1)+"]"); break; } } } change to if (rand(1,100) < getd("[email protected]"[email protected]+"[0]")) { for(set [email protected],1; [email protected]<getarraysize(getd("[email protected]"[email protected])); set [email protected],[email protected]+2) { getitem getd("[email protected]"[email protected]+"["[email protected]+"]"), getd("[email protected]"[email protected]+"["+([email protected]+1)+"]"); if ([email protected][0]) { set [email protected],[email protected]; setarray [email protected][0], getd("[email protected]"[email protected]+"["[email protected]+"]"), getd("[email protected]"[email protected]+"["+([email protected]+1)+"]"); break; } } }
  3. getitem2 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account ID>};
  4. 1. if you are checking for total of item count in current inventory getinventorylist; dispbottom "Your inventory has "+ @inventorylist_count +" items"; 2. if you are checking whether the player can hold the upcoming rewards if (checkweight(512, 100)) { getitem 512, 100; } else { dispbottom "You cant hold 100x Apple."; }
  5. *getequiprandomoption(<equipment index>,<index>,<type>{,<char id>}); Returns value of an attribute of a random option on an equipped item. See 'getequipid' for a full list of valid equipment slots. index parameter can be 0 to MAX_ITEM_RDM_OPT-1 (default 0-4). For valid attribute types, see `getrandomoptinfo` command reference. or *getinventorylist {<char_id>}; This command sets a bunch of arrays with a complete list of whatever the invoking character has in their inventory, including all the data needed to recreate these items perfectly if they are destroyed. Here's what you get: @inventorylist_option_id1[] - first array of random option IDs @inventorylist_option_value1[] - first array of random option values @inventorylist_option_parameter1[] - first array of random option parameters @inventorylist_option_id2[] - second array of random option IDs @inventorylist_option_value2[] - second array of random option values @inventorylist_option_parameter2[] - second array of random option parameters @inventorylist_option_id3[] - third array of random option IDs @inventorylist_option_value3[] - third array of random option values @inventorylist_option_parameter3[] - third array of random option parameters @inventorylist_option_id4[] - fourth array of random option IDs @inventorylist_option_value4[] - fourth array of random option values @inventorylist_option_parameter4[] - fourth array of random option parameters @inventorylist_option_id5[] - fifth array of random option IDs @inventorylist_option_value5[] - fifth array of random option values @inventorylist_option_parameter5[] - fifth array of random option parameters not available check for card id instead. *getequipcardid(<equipment slot>,<card slot>) Returns value from equipped item slot in the indicated slot (0, 1, 2, or 3). This function returns CARD ID, CARD0_FORGE, CARD0_CREATE, or CARD0_PET (for card 0, if the item is produced). It's useful for when you want to check whether an item contains cards or if it's signed. or getinventorylist
  6. default come with the Quest System, not showscript(...)
  7. SELECT .... FROM .... ORDER BY <column_name> update your SQL query to sort the ordering, or remove the ORDER BY ... DESC
  8. https://github.com/rathena/rathena/wiki/diff or ask the file author for assistance.
  9. sell it as a custom item box. add the item box into the quest shop add the script that give refined item into the item_db
  10. when your character are muted, it cant use command or chat. try replace the atcommand with these sc_start SC_MUTE, 10800000, 0; sc_end SC_MUTE; if you want a better approach, then use the setpcblock instead. *setpcblock <type>,<state>{,<account ID>}; *getpcblock {<account ID>}; 'setpcblock' command prevents/allows the player from doing the given <type> of action according to the <state> during the player session (note: @reloadscript removes all <type> except PCBLOCK_IMMUNE). The <type> values are bit-masks, multiples of <type> can be added to change the player action. The action is blocked when the <state> is true, while false allows the action again. 'getpcblock' command return the bit-mask value of the currently enabled block flags. Available <type>: PCBLOCK_MOVE Prevent the player from moving. PCBLOCK_ATTACK Prevent the player from attacking. PCBLOCK_SKILL Prevent the player from using skills/itemskills. PCBLOCK_USEITEM Prevent the player from using usable items. PCBLOCK_CHAT Prevent the player from sending global/guild/party/whisper messages. PCBLOCK_IMMUNE Prevent the player from being hit by monsters. PCBLOCK_SITSTAND Prevent the player from sitting/standing. PCBLOCK_COMMANDS Prevent the player from using atcommands/charcommands. PCBLOCK_NPCCLICK Prevent the player from clicking/touching any NPC/shop/warp. PCBLOCK_EMOTION Prevent the player from using emotions. PCBLOCK_NPC Simulate NPC interaction. Useful for NPC with no mes window. Sum of PCBLOCK_MOVE|PCBLOCK_SKILL|PCBLOCK_USEITEM|PCBLOCK_COMMANDS|PCBLOCK_NPCCLICK. PCBLOCK_ALL Sum of all the flags. Examples: // Make the attached player invulnerable to monster (same as @monsterignore) setpcblock PCBLOCK_IMMUNE, true; // Prevents the attached player from attacking and using skills setpcblock PCBLOCK_ATTACK|PCBLOCK_SKILL, true; // Re-enables attack, skills and item use setpcblock PCBLOCK_ATTACK|PCBLOCK_SKILL|PCBLOCK_USEITEM, false; // getpcblock related checks if (getpcblock() & PCBLOCK_IMMUNE) mes "You are invulnerable!"; if (getpcblock() & (PCBLOCK_MOVE|PCBLOCK_SITSTAND)) mes "You can't walk or sit."; if ((getpcblock() & (PCBLOCK_ATTACK|PCBLOCK_SKILL)) == 0) mes "You can attack and use skills."; if (getpcblock() & PCBLOCK_CHAT) mes "You can't chat.";
  11. something like this ? prontera,155,181,5 script Sample 757,{ [email protected] = select(.menu$) - 1; [email protected] = getarraysize(getd(".array_"+.class[[email protected]])); copyarray [email protected], getd(".array_"+.class[[email protected]]), [email protected]; for ([email protected] = 0; [email protected] < [email protected]; [email protected]++) { if (!countitem([email protected][[email protected]])) getitem [email protected][[email protected]], 1; if (!isequipped([email protected][[email protected]])) equip [email protected][[email protected]]; } mes "You have equipped your gear."; close; function func_EquipClassItem { [email protected] = getarg(0, 0); [email protected] = getargcount(); for ([email protected] = 1; [email protected] <= [email protected]; [email protected]++) [email protected][[email protected] - 1] = getarg([email protected], 0); copyarray .array copyarray getd(".array_"[email protected]), [email protected], [email protected] - 1; .menu$ = .menu$ + jobname([email protected]) + ":"; .class[getarraysize(.class)] = [email protected]; return; } OnInit: // func_EquipClassItem(<class>, <item_list>,...,<item_list>); func_EquipClassItem(Job_Champion, 2289, 2202, 5377, 1517, 2104, 2404); end; }
  12. https://rathena.org/board/jobs_available/
  13. your packetver value aren't configured correctly according to your hexed client, or vice versa https://github.com/rathena/rathena/blob/master/src/config/packets.hpp#L16
  14. just configure your GM group properly with the necessary atcommands. https://github.com/rathena/rathena/blob/master/conf/groups.conf
  15. since its just one item as currency/requirement. just use itemshop instead. https://rathena.org/board/topic/90173-item-and-point-shop/
  16. if (pc_readaccountreg(sd, add_str("#bank_eligible")) <= 0) { clif_messagecolor(&sd->bl, color_table[COLOR_RED], "You haven't open a bank account yet.", false, SELF); // Banking is disabled }
  17. instead of using the atcommand, might as well just consider enable the config to auto loot all drops from mob kill ? https://github.com/rathena/rathena/blob/master/conf/battle/drops.conf#L10-L11
  18. bindatcmd "shower",strnpcinfo(3)+"::OnShower", 99;
  19. data\texture\effect\servant_demolition\data\texture\effect\servant_demolition\servant_demolition_rightdown\sav_helix_04.bmp based on this path, i dont think you added the file based on the structure correctly. perhaps it should be data\texture\effect\servant_demolition\servant_demolition_rightdown\sav_helix_04.bmp
  20. Emistry

    classic

    you can easily found it by searching the forum
  21. may try this //--- Bitmasks ---- // 1 - Accessory 1 // 2 - Accessory 2 // 4 - Footgear(shoes, boots) // 8 - Garment(mufflers, hoods, manteaux) // 16 - Lower Headgear(beards, some masks) // 32 - Middle Headgear(masks, glasses) // 64 - Upper Headgear // 128 - Armor(jackets, robes) // 256 - Left hand(weapons, shields) // 512 - Right hand(weapons) function script RefineFunc { for (set [email protected],EQI_ACC_L; [email protected] <= EQI_HAND_R; set [email protected],[email protected] + 1) set [email protected]$,[email protected]$ +((getarg(2) & pow(2,([email protected])) && getequiprefinerycnt([email protected]) >= getarg(3) && getequiprefinerycnt([email protected]) < getarg(4) && getequipisequiped([email protected]))?"^FF0000+"+getequiprefinerycnt([email protected])+" ^0000FF"+getequipname([email protected])+" "+(getitemslots(getequipid([email protected]))?"["+getitemslots(getequipid([email protected]))+"]":"")+"^000000":"")+":"; set [email protected],select([email protected]$); mes "Required ^FF0000"+getarg(1)+" x "+getitemname(getarg(0))+"^000000"; if (getarg(5) == 1 && !getequipisenableref([email protected])) mes "I cant refine this items. Because it is ^FF0000Un-Refineable^000000."; else{ if (select("^FF0000Refine^000000:Cancel") == 2) close; if (countitem(getarg(0)) < getarg(1)) close; delitem getarg(0),getarg(1); if (rand(100) < getarg(7)){ if (getarg(6)) while(getequiprefinerycnt([email protected]) < getarg(4)) successrefitem ([email protected]); else successrefitem ([email protected]); mes "You have refined : "; mes "^FF0000+"+getequiprefinerycnt([email protected])+" ^0000FF"+getequipname([email protected])+"^000000"; } else { failedrefitem ([email protected]); mes "Sorry, Failed in Refine and Equipment...Destroyed."; } } close; }
  22. may try something like this prontera,155,181,5 script Sample 757,{ for ([email protected] = bStr; [email protected] <= bLuk; [email protected]++) [email protected][[email protected] - bStr] = readparam([email protected]); mes "Select the stats to reset to 1."; do { [email protected]$ += "Str - "+ [email protected][0] + ":"; [email protected]$ += "Vit - "+ [email protected][1] + ":"; [email protected]$ += "Int - "+ [email protected][2] + ":"; [email protected]$ += "Agi - "+ [email protected][3] + ":"; [email protected]$ += "Dex - "+ [email protected][4] + ":"; [email protected]$ += "Luk - "+ [email protected][5] + ":"; [email protected]$ += "Reset"; [email protected] = select([email protected]$); [email protected][[email protected]] = 1; } while ([email protected] <= 6); resetstatus; for ([email protected] = bStr; [email protected] <= bLuk; [email protected]++) { while (readparam([email protected]) < [email protected][[email protected] - bStr]) statusup [email protected]; } end; }
  23. change if(Hunter) { mes "You have killed ^880000"+HuntCount+"^000000/^0000FF"+Amt+"^000000 "+getmonsterinfo(Hunt,0)+"s, keep it up!"; close; } into if(Hunter && gettimetick(2) < HuntDelay) { mes "You have killed ^880000"+HuntCount+"^000000/^0000FF"+Amt+"^000000 "+getmonsterinfo(Hunt,0)+"s, keep it up!"; close; }
  24. 1000% = 10 times of your current item drop rate so 0.05% * 10 = 0.50% 3000% = 30 times of your current item drop rate so 0.03% * 30 = 0.90%
  25. prontera,164,173,3 script Refiner 826,{ mes "^3355FF[%100 Refiner]^000000"; mes "This Lets you refine your item to the max"; mes " You Need "+.amount+"x "+getitemname(.item_id)+" to use my Service"; next; mes "Choose the item to refine"; mes "Choose Wisely"; mes "Dont Ask For refine"; mes "On GameMasters"; mes "Think Before you refine an item"; next; for ([email protected] = 0; [email protected] < .eqi_size; [email protected]++) { if (getequipid(.eqi[[email protected]]) != -1) [email protected]$ = [email protected]$ + F_getpositionname(.eqi[[email protected]]) + " - " +getitemname(getequipid(.eqi[[email protected]])); [email protected]$ += ":"; } [email protected] = select([email protected]$) - 1; [email protected] = getequiprefinerycnt(.eqi[[email protected]]); if (countitem(.item_id) < .amount) { mes "You didnt have enough "+.amount+"x "+getitemname(.item_id); } else if ([email protected] >= 20) { mes "Your item already reached max refine."; } else { delitem .item_id, .amount; if ([email protected] < 10) { successrefitem .eqi[[email protected]], (10 - [email protected]); } else { successrefitem .eqi[[email protected]]; } announce "["+strcharinfo(0)+"], Thanks for using my great service :)).", bc_self; } close; OnInit: .item_id = 7179; .amount = 10; setarray .eqi, EQI_HEAD_TOP, EQI_HEAD_MID, EQI_HEAD_LOW, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R; .eqi_size = getarraysize(.eqi); end; }
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.