Jump to content

Elsa Mist

Members
  • Posts

    387
  • Joined

  • Last visited

  • Days Won

    6

Everything posted by Elsa Mist

  1. you should not create double request. https://rathena.org/board/topic/102902-all-in-one-npc/
  2. re-work again, and make sure the file name is exactly the same with the current. Trans background didnt do anything with the error.
  3. Its clearly say that you have unknown packets. Please double check your mmo.h & packet_db.txt
  4. miss read the section.
  5. //===== Hercules Script ====================================== //= Job Master //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.4 //============================================================ quiz_02,60,356,4 script Job Master 733,{ function Job_Menu; function A_An; mes "[Job Master]"; if (Class > Job_Soul_Linker) { mes "No more jobs are available."; close; } if (checkfalcon() || checkcart() || checkmount() || hascashmount()) { mes "Please remove your "+((checkfalcon())?"falcon":"")+((checkcart())?"cart":"")+((checkmount() || hascashmount())?"mount":"") +" before proceeding."; close; } if (.skill_point_check && SkillPoint > 0) { mes "Please use all your skill points before proceeding."; close; } .@eac = eaclass(); .@base = .third_classes ? roclass(.@eac&EAJ_UPPERMASK) : Class; if (.@base >= Job_Knight && .@base <= Job_Crusader2) { if (BaseLevel < .rebirth_blevel || JobLevel < .rebirth_jlevel) { .@blvl = .rebirth_blevel - BaseLevel; .@jlvl = .rebirth_jlevel - JobLevel; mes "You need " + (BaseLevel < .rebirth_blevel ? ((.rebirth_blevel - BaseLevel) +" more base levels "+ (JobLevel < .rebirth_jlevel ? "and " : "")) : "") + (JobLevel < .rebirth_jlevel ? (.rebirth_jlevel - JobLevel) +" more job levels " : "") + "to continue."; close; } if (Class > Job_Crusader2) { mes "Switch to third class?"; next; Job_Menu(roclass(.@eac|EAJL_THIRD)); close; } while (true) { mes "Select an option."; next; .@choice = select(" ~ ^0055FFRebirth^000000:"+(.third_classes ? " ~ ^FF0000Third Class^000000" : "")+": ~ ^777777Cancel^000000"); if (.@choice == 3) close; mes "[Job Master]"; mes "Are you sure?"; next; if (.@choice == 1) Job_Menu(Job_Novice_High); else Job_Menu(roclass(.@eac|EAJL_THIRD)); mes "[Job Master]"; } } .@job1 = roclass(.@eac|EAJL_2_1); .@job2 = roclass(.@eac|EAJL_2_2); if ((.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE) { .@newclass = roclass(.@eac|EAJL_THIRD); .@required_jlevel = 99; } else if (Class == Job_Ninja) { .@newclass = .@job1; .@required_jlevel = 70; } else if (Class == Job_Gunslinger) { .@newclass = .@job1; .@required_jlevel = 70; } if (.@newclass && .third_classes) { if (BaseLevel < .rebirth_blevel || JobLevel < .@required_jlevel) { mes "You need " + (BaseLevel < .rebirth_blevel ? ((.rebirth_blevel - BaseLevel) +" more base levels "+ (JobLevel < .@required_jlevel ? "and " : "")) : "") + (JobLevel < .@required_jlevel ? (.@required_jlevel - JobLevel) +" more job levels " : "") + "to continue."; close; } mes "Switch to "+jobname(.@newclass)+"?"; next; Job_Menu(.@newclass); close; } if (.@eac&EAJL_2) if (.@eac&(EAJL_UPPER|EAJL_BABY) || roclass(.@eac|EAJL_UPPER) == -1) { mes "No more jobs are available."; close; } if ((.@eac&EAJ_BASEMASK) == EAJ_NOVICE) { if (JobLevel < .jobchange_first) { mes "A job level of "+.jobchange_first+" is required to change into the 1st Class."; } else if (Class == Job_Novice_High && .linear_jobchange && lastJob) { mes "Switch classes now?"; next; Job_Menu(roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER)); } else if (Class == Job_Novice) { Job_Menu(Job_Swordman, Job_Mage, Job_Archer, Job_Acolyte, Job_Merchant, Job_Thief, Job_SuperNovice, Job_Taekwon, Job_Gunslinger, Job_Ninja, Job_Baby); } else if (Class == Job_Novice_High) { Job_Menu(Job_Swordman_High, Job_Mage_High, Job_Archer_High, Job_Acolyte_High, Job_Merchant_High, Job_Thief_High); } else if (Class == Job_Baby) { Job_Menu(Job_Baby_Swordman, Job_Baby_Mage, Job_Baby_Archer, Job_Baby_Acolyte, Job_Baby_Merchant, Job_Baby_Thief, Job_Super_Baby); } else { mes "An error has occurred."; } close; } if (roclass(.@eac|EAJL_2_1) == -1 || roclass(.@eac|EAJL_2_2) == -1) { mes "No more jobs are available."; } else if (!(.@eac&EAJL_2) && JobLevel < .jobchange_second) { mes "A job level of "+.jobchange_second+" is required to change into the 2nd Class."; } else if (.linear_jobchange && lastJob && (.@eac&EAJL_UPPER)) { mes "Switch classes now?"; next; Job_Menu(lastJob+Job_Novice_High); } else { Job_Menu(.@job1, .@job2); } close; function Job_Menu { while (true) { if (getargcount() > 1) { mes "Select a job."; .@menu$ = ""; for (.@i = 0; .@i < getargcount(); ++.@i) .@menu$ += " ~ "+jobname(getarg(.@i))+":"; .@menu$ += " ~ ^777777Cancel^000000"; next; .@newjob = getarg(select(.@menu$)-1, 0); if (!.@newjob) close; if ((.@newjob == Job_SuperNovice || .@newjob == Job_Super_Baby) && BaseLevel < .supernovice_level) { mes "[Job Master]"; mes "A base level of "+.supernovice_level+" is required to turn into a "+jobname(.@newjob)+"."; close; } mes "[Job Master]"; mes "Are you sure?"; next; } else { .@newjob = getarg(0); } if (select(" ~ Change into ^0055FF"+jobname(.@newjob)+"^000000 class: ~ ^777777"+(getargcount() > 1 ? "Go back" : "Cancel")+"^000000") == 1) { mes "[Job Master]"; mes "You are now "+A_An(jobname(.@newjob))+"!"; if (.@newjob == Job_Novice_High && .linear_jobchange) lastJob = Class; jobchange .@newjob; if (.@newjob == Job_Novice_High) resetlvl(1); if (.@newjob == Job_Baby) { resetlvl(4); SkillPoint = 0; } specialeffect2 EF_ANGEL2; specialeffect2 EF_ELECTRIC; if (.platinum) callsub Get_Platinum; close; } if (getargcount() == 1) return; mes "[Job Master]"; } end; } function A_An { setarray .@vowels$, "a", "e", "i", "o", "u"; .@firstletter$ = strtolower(charat(getarg(0), 0)); for (.@i = 0; .@i < getarraysize(.@vowels); ++.@i) { if (.@vowels$[.@i] == .@firstletter$) return "an "+getarg(0); } return "a "+getarg(0); } Get_Platinum: skill NV_FIRSTAID, 1, 0; if (BaseClass == Job_Novice) { if (Class != Job_SuperNovice) skill NV_TRICKDEAD, 1, 0; } else if (BaseClass == Job_Swordman) { skill SM_MOVINGRECOVERY, 1, 0; skill SM_FATALBLOW, 1, 0; skill SM_AUTOBERSERK, 1, 0; } else if (BaseClass == Job_Mage) { skill MG_ENERGYCOAT, 1, 0; } else if (BaseClass == Job_Archer) { skill AC_MAKINGARROW, 1, 0; skill AC_CHARGEARROW, 1, 0; } else if (BaseClass == Job_Acolyte) { skill AL_HOLYLIGHT, 1, 0; } else if (BaseClass == Job_Merchant) { skill MC_CARTREVOLUTION, 1, 0; skill MC_CHANGECART, 1, 0; skill MC_LOUD, 1, 0; } else if (BaseClass == Job_Thief) { skill TF_SPRINKLESAND, 1, 0; skill TF_BACKSLIDING, 1, 0; skill TF_PICKSTONE, 1, 0; skill TF_THROWSTONE, 1, 0; } if (BaseJob == Job_Knight) { skill KN_CHARGEATK, 1, 0; } else if (BaseJob == Job_Priest) { skill PR_REDEMPTIO, 1, 0; } else if (BaseJob == Job_Wizard) { skill WZ_SIGHTBLASTER, 1, 0; } else if (BaseJob == Job_Blacksmith) { skill BS_UNFAIRLYTRICK, 1, 0; skill BS_GREED, 1, 0; } else if (BaseJob == Job_Hunter) { skill HT_PHANTASMIC, 1, 0; } else if (BaseJob == Job_Assassin) { skill AS_SONICACCEL, 1, 0; skill AS_VENOMKNIFE, 1, 0; } else if (BaseJob == Job_Crusader) { skill CR_SHRINK, 1, 0; } else if (BaseJob == Job_Monk) { skill MO_KITRANSLATION, 1, 0; skill MO_BALKYOUNG, 1, 0; } else if (BaseJob == Job_Sage) { skill SA_CREATECON, 1, 0; skill SA_ELEMENTWATER, 1, 0; skill SA_ELEMENTGROUND, 1, 0; skill SA_ELEMENTFIRE, 1, 0; skill SA_ELEMENTWIND, 1, 0; } else if (BaseJob == Job_Rogue) { skill RG_CLOSECONFINE, 1, 0; } else if (BaseJob == Job_Alchemist) { skill AM_BIOETHICS, 1, 0; } else if (BaseJob == Job_Bard) { skill BA_PANGVOICE, 1, 0; } else if (BaseJob == Job_Dancer) { skill DC_WINKCHARM, 1, 0; } return; OnInit: .rebirth_blevel = 99; // Minimum base level to reborn OR change to third class .rebirth_jlevel = 50; // Minimum base job level to reborn OR change to third class .jobchange_first = 10; // Minimum job level to turn into 1st class .jobchange_second = 40; // Minimum job level to turn into 2nd class .third_classes = 1; // Enable third classes? (1: yes / 0: no) .supernovice_level = 45; // Minimum base level to turn into Super Novice .linear_jobchange = 1; // Enforce linear class changes? (1: yes / 0: no) .skill_point_check = 0; // Force player to use up all skill points? (1: yes / 0: no) .platinum = 0; // Get platinum skills automatically? (1: yes / 0: no) waitingroom " Job Master",0; end; } Lemme know if its not working.
  6. On your console ln -sf /usr/share/zoneinfo/Hongkong /etc/localtime you will need root access to see what exactly name that available in /usr/share/zoneinfo/
  7. https://github.com/rathena/rathena/blob/master/npc/scripts_athena.conf // --------------------- Battle Grounds ------------------------- // - Flavius ---------------------------------------------------- npc: npc/battleground/flavius/flavius_enter.txt npc: npc/battleground/flavius/flavius01.txt npc: npc/battleground/flavius/flavius02.txt // - Kreiger Von Midgard ---------------------------------------- npc: npc/battleground/kvm/kvm_enter.txt npc: npc/battleground/kvm/kvm_item_pay.txt npc: npc/battleground/kvm/kvm01.txt npc: npc/battleground/kvm/kvm02.txt npc: npc/battleground/kvm/kvm03.txt // - Tierra Gorge ----------------------------------------------- npc: npc/battleground/tierra/tierra_enter.txt npc: npc/battleground/tierra/tierra01.txt npc: npc/battleground/tierra/tierra02.txt // -------------------------------------------------------------- npc: npc/battleground/bg_common.txt Put this '//' in each line to disable the script.
  8. I think we already have it in our GIT? Outside prontera refiner, its a seperate NPC.
  9. are you sure that you already put the sprite according to the jobs like this data/sprite/<job dependent folder>/<job dependent prefix>_<gender><weapon suffix>.spr or you may want to try this https://rathena.org/board/topic/87228-weapon-sprite-generator/ Honestly im not even try it, but you can make a try.
  10. Hes using 2012-04-10. Please double check your idnum2itemdesctable.txt in your data. https://rathena.org/wiki/Custom_Items#idnum2itemdesctable.txt
  11. Examples: // MC_MAMMONITE,1,1,50 // In normal maps, players deal +50% damage to other players with Mammonite. // MO_EXTREMITYFIST,1,6,-50 // In PVP and GVG, players deal -50% (half) damage to other players with Asura Strike. // AB_ADORAMUS,1,6,50,0,10,15 // In PVP and GVG, players deal +50% damage to other players, +0% to mobs, +10% to bosses, and +15% to other with Adoramus. read the example given in the .txt.
  12. why dont u use this https://github.com/rathena/rathena/blob/master/db/skill_damage_db.txt insted of mods your source?
  13. what did you want actually? please be more specific. The script already show there is only one shop.
  14. https://github.com/rathena/FluxCP/blob/master/config/servers.php 'LoginServer' => array( 'Address' => '127.0.0.1', 'Port' => 6900, 'UseMD5' => false, 'NoCase' => true, // rA account case-sensitivity; Default: Case-INsensitive (true). 'GroupID' => 0, // Default account group ID during registration. //'Database' => 'ragnarok' ), 'CharMapServers' => array( array( 'ServerName' => 'FluxRO', 'Renewal' => true, 'MaxCharSlots' => 9, 'DateTimezone' => null, // Specifies game server's timezone for this char/map pair. (See: http://php.net/timezones) //'ResetDenyMaps' => 'sec_pri', // Defaults to 'sec_pri'. This value can be an array of map names. //'Database' => 'ragnarok', // Defaults to DbConfig.Database 'ExpRates' => array( 'Base' => 100, // Rate at which (base) exp is given 'Job' => 100, // Rate at which job exp is given 'Mvp' => 100 // MVP bonus exp rate ), 'DropRates' => array( // The rate the common items (in the ETC tab, besides card) are dropped 'Common' => 100, 'CommonBoss' => 100, // The rate healing items (that restore HP or SP) are dropped 'Heal' => 100, 'HealBoss' => 100, // The rate usable items (in the item tab other then healing items) are dropped 'Useable' => 100, 'UseableBoss' => 100, // The rate at which equipment is dropped 'Equip' => 100, 'EquipBoss' => 100, // The rate at which cards are dropped 'Card' => 100, 'CardBoss' => 100, // The rate adjustment for the MVP items that the MVP gets directly in their inventory 'MvpItem' => 100 ), 'CharServer' => array( 'Address' => '127.0.0.1', 'Port' => 6121 ), 'MapServer' => array( 'Address' => '127.0.0.1', 'Port' => 5121 ),
  15. Take this and upload at your FTP.
  16. // - Shop Currency can be either ItemID or Variable Name, but must write within Quotation Marks ( "" ) // Ex. of Variable. -> Zeny , #CASHPOINTS , #KAFRAPOINTS , CustomVariable , #CustomVariable Case 1: // Currency [ Item ID / Variable Name ] set @Currency$,"Zeny"; // Item ID Lists setarray @ItemLists[0],6153,7227; // Item Price setarray @ItemCost[0],100,1; break;
  17. heh... easy fix on it...! rAmod dosent support 2014 i believe. Correct me if im wrong? If yes, u need to modified your source and packet_db.txt to make it work.
  18. Yes, its seem like u have successfully. What i mean from zero is, re-do again from here ---> Debian OS remake again from phpmyadmin, cpanel, everything. Not just delete the trunk and pull again. NO. Everything.
  19. edit all item that you want to sell at item_db.txt. Change all the default price to what ever price you want. This case if you want to use NPC like your code above. // Structure of Database: // ID,AegisName,Name,Type,Buy,Sell,Weight,ATK[:MATK],DEF,Range,Slots,Job,Class,Gender,Loc,wLV,eLV[:maxLevel],Refineable,View,{ Script },{ OnEquip_Script },{ OnUnequip_Script } or use this script but it not a shop npc like your code above. Emistry script : // Settings : // - Only required to edit the ShopSetting() Function // Notes : You may also add / remove Menu ( If any ) // - Shop Currency can be either ItemID or Variable Name, but must write within Quotation Marks ( "" ) // Ex. of Variable. -> Zeny , #CASHPOINTS , #KAFRAPOINTS , CustomVariable , #CustomVariable // - ERROR Message are used to show Invalid Settings in your NPC. // Leave this alone... - shop Emistry_Shop -1,512:100 prontera,155,181,5 script Sample 757,{ function ShopSettings; function ValidateCost; function CurrencyInfo; function ClearData; function ValueConvert; function ErrorNotice; mes "Each Shop from the Menu may purchase using ^FF0000Different Currency^000000."; mes "^00FF00____________________________^000000"; mes "So,Which shop you would like to look at it"; next; // Menu Selection select("Shop 1","Shop 2","Shop 3"); ClearData(); ShopSettings( @menu ); npcshopitem "Emistry_Shop",512,100; npcshopdelitem "Emistry_Shop",512; for(set .@i,0; .@i < getarraysize( @ItemLists ); set .@i,.@i+1) npcshopadditem "Emistry_Shop",@ItemLists[.@i],@ItemCost[.@i]; mes "Okay...wait awhile"; mes "^00FF00____________________________^000000"; CurrencyInfo( @Currency$ ); mes "^00FF00____________________________^000000"; callshop "Emistry_Shop",1; npcshopattach "Emistry_Shop"; end; function ShopSettings { switch( getarg(0) ){ Case 1: // Currency [ Item ID / Variable Name ] set @Currency$,"7179"; // Item ID Lists setarray @ItemLists[0],6153,7227; // Item Price setarray @ItemCost[0],100,1; break; Case 2: // Currency [ Item ID / Variable Name ] set @Currency$,"7227"; // Item ID Lists setarray @ItemLists[0],2306,2302,2303,2304,2305,2301; // Item Price setarray @ItemCost[0],2,2,3,4,5,6; break; Case 3: // Currency [ Item ID / Variable Name ] set @Currency$,"#CASHPOINTS"; // Item ID Lists setarray @ItemLists[0],2306,2302,2303,2304,2305,2301; // Item Price setarray @ItemCost[0],20,22,34,445,52,641; break; // Case 4,5,6.....etc... default: ErrorNotice( "Invalid Menu Selection for Menu "+@menu+"." ); close; } if( @Currency$ == "" ) ErrorNotice( "Invalid Currency Setting in Menu "+@menu+" ." ); if( getarraysize( @ItemCost ) != getarraysize( @ItemLists ) || getarraysize( @ItemLists ) != getarraysize( @ItemCost ) ) ErrorNotice( "Missing or Extra Value of Item or Cost Settings in Menu "+@menu+" ." ); return; } function ErrorNotice { mes "^FF0000ERROR^000000 - "+getarg(0); mes "^00FF00____________________________^000000"; mes "Inform this Message to ^0000FFGame Staffs^000000 immediately !"; close; } function CurrencyInfo { if( getitemname( atoi( getarg(0) ) ) != "null" ){ mes "Item Currency : ^FF0000"+getitemname( atoi( getarg(0) ) )+"^000000"; mes "Available Amount : ^0000FF"+ValueConvert( countitem( atoi( getarg(0) ) ) )+"^000000"; }else if( getitemname( atoi( getarg(0) ) ) == "null" ){ mes "Variable Currency : ^FF0000"+getarg(0)+"^000000"; mes "Available Amount : ^0000FF"+ValueConvert( getd( getarg(0) ) )+"^000000"; } return; } function ValidateCost { if( getitemname( atoi( getarg(0) ) ) != "null" ){ if( countitem( atoi( getarg(0) ) ) < getarg(1) ) return 1; }else{ if( getd( getarg(0) ) < getarg(1) ) return 1; } return 0; } function ClearData { set @Currency$,""; set @TotalCost,0; deletearray @bought_nameid[0],getarraysize( @bought_nameid ); deletearray @bought_quantity[0],getarraysize( @bought_quantity ); deletearray @ItemLists[0],getarraysize( @ItemLists ); deletearray @ItemCost[0],getarraysize( @ItemCost ); return; } function ValueConvert { set .@num, atoi(""+getarg(0)); if ( .@num == 0 || .@num >= 2147483647 ) return getarg(0); set .@l, getstrlen(""+.@num); for ( set .@i,0; .@i < .@l; set .@i, .@i + 1 ) { set .@num$, .@num % pow(10,.@i+1) / pow(10,.@i) + .@num$; if ( (.@i+1) % 3 == 0 && .@i+1 != .@l ) set .@num$, ","+ .@num$; } return .@num$; } OnBuyItem: ShopSettings( @menu ); for(set @i,0; @i < getarraysize( @bought_nameid ); set @i,@i+1) for(set @j,0; @j < getarraysize( @ItemLists ); set @j,@j+1) if( @ItemLists[@j] == @bought_nameid[@i] ) set @TotalCost,@TotalCost + ( @ItemCost[@j] * @bought_quantity[@i] ); mes "^FF0000 BILLING LIST^000000"; mes "^00FF00____________________________^000000"; for( set @i,0; @i < getarraysize( @bought_nameid ); set @i,@i+1 ) mes "^FF0000"+@bought_quantity[@i]+" x ^0000FF"+getitemname( @bought_nameid[@i] )+"^000000"; mes "^00FF00____________________________^000000"; if( getitemname( atoi( @Currency$ ) ) != "null" ) mes "Total Cost : ^0000FF"+ValueConvert( @TotalCost )+" x "+getitemname( atoi( @Currency$ ) )+"^000000"; else if( getitemname( atoi( @Currency$ ) ) == "null" ){ mes "Total Cost : ^0000FF"+ValueConvert( @TotalCost )+" "+@Currency$+"^000000"; } mes "^00FF00____________________________^000000"; if( ValidateCost( @Currency$,@TotalCost ) ){ if( getitemname( atoi( @Currency$ ) ) != "null" ) mes "[ ^FF0000X^000000 ] Insufficient ^0000FF"+getitemname( atoi( @Currency$ ) )+"^000000"; else{ mes "[ ^FF0000X^000000 ] Insufficient ^0000FF"+@Currency$+"^000000"; } }else{ if( select( "^0000FFPurchase^000000:Cancel" ) == 1 ){ if( getitemname( atoi( @Currency$ ) ) != "null" ) delitem atoi( @Currency$ ),@TotalCost; else{ set getd( @Currency$ ),getd( @Currency$ ) - @TotalCost; } for(set @i,0; @i < getarraysize( @bought_nameid ); set @i,@i+1) getitem @bought_nameid[@i],@bought_quantity[@i]; message strcharinfo(0),"Purchased "+getarraysize( @bought_nameid )+" Items."; mes "Thank you for shopping."; } } ClearData(); close; }
  20. https://rathena.org/board/topic/79644-how-to-duplicate-an-existing-map/
  21. can u elaborate more? what kind of NPC did u want? any example?
  22. Did u mean u want to mod the source? I think better using like Stolao said in post#2
×
×
  • Create New...