Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 04/06/15 in all areas

  1. This project is a docker container running Ubuntu, Apache 2, MySQL 5, PHP5, FluxCP, rAthena char-server, rAthena map-server, and rAthena login-server, snapshotted at the moment just before setup begins. A 1-click (really copy-and-paste one command) way to run rAthena that still gives the user the option to modify if they want to - just swap out the rAthena git repo URL for your custom repo URL. That's right: all the ease of use of pre-compiled binaries with all the transparency and customization of open-source in one standardized, portable, stable, current package. 1) Install docker as described at http://www.docker.com/ 2) forward TCP 20000-20005 to your docker host. 3) Copy and paste this into your docker host terminal: docker run -it -p 20000:80 -p 20001:443 -p 20002:3306 -p 20003:5121 -p 20004:6121 -p 20005:6900 -v ~/Desktop/datastore/:/datastore/ -v ~/Desktop/datastore/etc-apache2/:/datastore/etc/apache2/ -v ~/Desktop/datastore/etc-mysql/:/datastore/etc/mysql/ -v ~/Desktop/datastore/usr-bin-rathena/:/datastore/usr/bin/rathena/ -v ~/Desktop/datastore/var-lib-mysql/:/datastore/var/lib/mysql/ --name Aegis georgegeorgulasiv/tritogeneia ... and wait a few minutes. When the terminal stops scrolling, proceed to step 4). 4) In your browser, open: (IP or hostname of the docker host):20000 5) As your password use: secretpassword 6) Give it your mysql login and password. Both are : ragnarok Your server is live. Github page for this project: http://github.com/VirtualEstatePlanner/Tritogeneia Dockerhub page for this project (featuring trusted Automated Builds) http://registry.hub.docker.com/u/georgegeorgulasiv/tritogeneia/
    1 point
  2. Guess that's how it should be: //<?> -o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o \\ // Blacksmith/Card Removal Npc V.2.0 \\ // by Luther \\ //<?> -o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o \\ // Blacksmith/Card Removal Npc V.2.0 \\ // by Luther \\ // Credit To : Mytzer,TyrNemisis,ShadowMaster and \\ // who ever made the Item Identifyer Deckard Cain. \\ // Whoms Scripts were used in making this npc. \\ // Also ToastOfDoom and Chachi911 for helping Debug it\\ // (V.2.0 Uses the original eAthena Refine Script that\\ //can have its rates configured in the refine_db.txt) \\ // -o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o \\ prontera,166,231,3 script Refiner 85,{ set .soundef_number, .soundef_number + 1; switch (.soundef_number) { case 1: soundeffect "hollen2.wav",0; break; case 2: soundeffect "hollen3.wav",0; break; case 3: soundeffect "hollen4.wav",0; break; case 4: soundeffect "hollen5.wav",0; break; } if (.soundef_number >= 3) { set .soundef_number, 0; } end; callfunc "refinemainx","Advanced Hollgrehenn",1; end; } //============================================================ //= Main Refiner Function //============================================================ //= To allow auto safe refining/multiple refining set the //= 0 after Melchior to '1' in the function call. //= To Change the Name of the NPC, just Edit it in the //= Beginning of the Script and the Melchior part of the //= Call function. //============================================================ function script refinemainx { set .@features,getarg(1); mes "[" + getarg(0) + "]"; mes "I can Refine, Extract Cards, Identify Items, and Repair Broken Items ^FF0000which of my services are you interested in?^000000"; menu "Refining",L_Refine,"Item Repair",L_Repair; L_Refine: mes "refining eh?"; next; mes "[" + getarg(0) + "]"; mes "I can refine all kinds of weapons, armor and equipment, so let me"; mes "know what you want me to refine."; next; setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3"; set .@menu$,""; for( set .@i,1; .@i <= 10; set .@i,.@i+1 ) { if( getequipisequiped(.@i) ) set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]"; set .@menu$, .@menu$ + ":"; } set .@part,select(.@menu$); if(!getequipisequiped(.@part)) { mes "[" + getarg(0) + "]"; mes "You're not wearing"; mes "anything there that"; mes "I can refine."; emotion 6; close; } //Check if the item is refinable... if(!getequipisenableref(.@part)) { mes "[" + getarg(0) + "]"; mes "I don't think I can"; mes "refine this item at all..."; close; } //Check if the item is identified... (Don't know why this is in here... but kept it anyway) if(!getequipisidentify(.@part)) { mes "[" + getarg(0) + "]"; mes "You can't refine this"; mes "if you haven't appraised"; mes "it first. Make sure your"; mes "stuff is identified before"; mes "I can refine it."; close; } //Check to see if the items is already +10 if(getequiprefinerycnt(.@part) >= 10) { mes "[" + getarg(0) + "]"; mes "I can't refine this"; mes "any more. This is as"; mes "refined as it gets!"; close; } set .@refineitemid, getequipid(.@part); // save id of the item set .@refinerycnt, getequiprefinerycnt(.@part); //save refinery count switch(getequipweaponlv(.@part)){ case 0: //Refine Armor set .@price,2000; set .@material,985; set .@safe,4; break; case 1: //Refine Level 1 Weapon set .@price,50; set .@material,1010; set .@safe,7; break; case 2: //Refine Level 2 Weapon set .@price,200; set .@material,1011; set .@safe,6; break; case 3: //Refine Level 3 Weapon set .@price,5000; set .@material,984; set .@safe,5; break; case 4: //Refine Level 4 Weapon set .@price,20000; set .@material,984; set .@safe,4; break; case 5: //Refine other stuff? set .@price,2000; set .@material,985; set .@safe,4; break; } if(.@features != 1) { mes "[" + getarg(0) + "]"; mes "To refine this I need"; mes "one ^003366"+getitemname(.@material)+"^000000 and"; mes "a service fee of " + .@price + " Zeny."; mes "Do you really wish to continue?"; next; if(select("Yes:No") == 2){ mes "[" + getarg(0) + "]"; mes "Yeah..."; mes "There's no need to"; mes "rush. Take your time."; close; } if(getequippercentrefinery(.@part) < 100) { mes "[" + getarg(0) + "]"; mes "Oh no! If I continue to"; mes "refine this, there's a risk it could"; switch(.@material) { case 985: mes "be destroyed! That means that ^FF0000this equipment^000000, and ^FF0000any cards^000000 or special properties added to this armor, ^FF0000will be gone^000000."; break; default: mes "be destroyed, and you'd ^FF0000lose the weapon^000000, any ^FF0000cards in the weapon^000000,"; mes "or any added special properties."; break; } next; mes "["+getarg(0)+"]"; mes "I can't make it any clearer."; mes "Once a weapon is destroyed,"; mes "there's no getting it back."; mes "You really have a chance to"; mes "^FF0000lose this weapon^000000 forever."; mes "Do you still want to refine?"; next; if(select("Yes:No") == 2){ mes "[" + getarg(0) + "]"; mes "I completely agree..."; mes "I might be a great refiner, but sometimes even I make mistakes."; close; } } if((countitem(.@material) < 1) || (Zeny < .@price)) { mes "[" + getarg(0) + "]"; mes "You don't seem to have"; mes "enough Zeny or "+getitemname(.@material)+"..."; mes "Go get some more. I'll be"; mes "here all day if you need me."; close; } set Zeny,Zeny-.@price; delitem .@material,1; if(getequipisequiped(.@part) == 0) { // hacker has removed the item (not changed, why?) mes "[" + getarg(0) + "]"; mes "Look here... you don't have any Items on..."; close; } if(getequiprefinerycnt(.@part) != .@refinerycnt || getequipid(.@part) != .@refineitemid) { // hacker has changed the item mes "[" + getarg(0) + "]"; Emotion e_an; mes "Wait a second..."; mes "Do you think I'm stupid?!"; mes "You switched the item while I wasn't looking! Get out of here!"; close; } if(getequippercentrefinery(.@part) <= rand(100)) { failedrefitem .@part; mes "[" + getarg(0) + "]"; set .@emo,rand(1,5); if (.@emo == 1) { Emotion e_cash; } else { Emotion e_swt; } set .@lose,rand(1,3); if (.@lose == 1) { mes "OH! MY GOD!"; mes "Damn it! Not again!"; mes "I'm terribly sorry, but you know practice does make perfect."; mes "Um, right? Heh heh..."; } else if(.@lose == 2) { mes "Nooooooo!"; mes "It broke!"; mes "I-I'm sorry!"; } else { mes "Crap!"; mes "It couldn't take"; mes "much more tempering!"; mes "Sorry about this..."; } close; } mes "["+getarg(0)+"]"; successrefitem .@part; Emotion e_heh; set .@win,rand(1,3); if (.@win == 1) { mes "Perfect!"; mes "Heh heh!"; mes "Once again,"; mes "flawless work"; mes "from the master~"; } else if(.@win == 2) { mes "Success...!"; mes "Yet again, my amazing"; mes "talent truly dazzles"; mes "and shines today."; } else { mes "Heh heh!"; mes "I'm all done."; mes "No doubt, my work is"; mes "to your satisfaction."; mes "Sheer, utter perfection~"; } close; } // New Refining Functions ======================== if(getequiprefinerycnt(.@part) < .@safe) { mes "[" + getarg(0) + "]"; mes "I can refine this to the safe limit or a desired number of times... it's your choice..."; next; set .@menu2,select("To the safe limit please.","I'll decide how many times.","I've changed my mind..."); } else set .@menu2,2; switch(.@menu2){ case 1: set .@refinecnt,.@safe - getequiprefinerycnt(.@part); break; case 2: next; mes "[" + getarg(0) + "]"; mes "So how many times would you like me to refine your item?"; next; input .@refinecnt; set .@refinecheck,.@refinecnt + getequiprefinerycnt(.@part); if (.@refinecnt < 1 || .@refinecheck > 10) { mes "[" + getarg(0) + "]"; mes "I can't refine this item that many times."; close; } if(.@refinecheck > .@safe) { set .@refinecheck,.@refinecheck - .@safe; mes "[" + getarg(0) + "]"; mes "This will try to refine the equipment " + .@refinecheck + " times past the safe limit. Your equipment may be destroyed... is that ok?"; next; if(select("Yes...","No...") == 2){ mes "[" + getarg(0) + "]"; mes "You said so..Hmm so be it..."; close; } } break; case 3: next; mes "[" + getarg(0) + "]"; mes "You said so..Hmm so be it..."; close; } set .@fullprice,.@price * .@refinecnt; mes "[" + getarg(0) + "]"; mes "That will cost you " + .@refinecnt + " " + getitemname(.@material) + " and " + .@fullprice + " Zeny. Is that ok?"; next; if(select("Yes","No...") == 2){ mes "[" + getarg(0) + "]"; mes "You said so..Hmm so be it..."; close; } if(countitem(.@material) < .@refinecnt || Zeny < .@fullprice) { mes "[" + getarg(0) + "]"; mes "Is that all you got? Unfortunately I can't work for you at a lower price. Try putting yourself in my shoes."; close; } set Zeny,Zeny - .@fullprice; delitem .@material,.@refinecnt; while(.@refinecnt){ if (getequipisequiped(.@part) == 0) { mes "[" + getarg(0) + "]"; mes "Look here... you don't have any Items on..."; close; } if (getequipid(.@part) != .@refineitemid || (.@menu2 == 1 && getequippercentrefinery(.@part) < 100)) { mes "[" + getarg(0) + "]"; mes "Clan... No, but Did you imagine I could be so stupid !?!"; mes "You have changed it..."; mes "Go out before I stun you with my Hammer!!!"; close; } mes "Clang, clang!!!"; if(.@menu2 == 2 && getequippercentrefinery(.@part) <= rand(100)) { failedrefitem .@part; emotion 23; mes "[" + getarg(0) + "]"; mes "WAHHHH!!! I'm so sorry... I warned you this could happen..."; set .@refinecnt,.@refinecnt - 1; if(.@refinecnt == 0) close; mes "Here's the unused Zeny and Material back..."; getitem .@material,.@refinecnt; set .@fullprice,.@refinecnt * .@price; set Zeny,Zeny + .@fullprice; close; } successrefitem .@part; emotion 21; set .@refinecnt,.@refinecnt - 1; next; } mes "[" + getarg(0) + "]"; mes "All finished... Come again soon."; close; L_Repair: mes "Repairing it is!"; next; if (getbrokenid(1) == 0) goto L_Waste; mes "[" + getarg(0) + "]"; mes "Each repair costs 2000 zeny would you like to repair an item now?"; menu "Yes",L_RepairItem,"No",L_Bye; L_RepairItem: if(zeny < (2000)) goto L_NoZeny; mes "Select the item to repair from the menu."; set @choice, select(getitemname(getbrokenid(1)), getitemname(getbrokenid(2)), getitemname(getbrokenid(3)), getitemname(getbrokenid(4)), getitemname(getbrokenid(5)), getitemname(getbrokenid(6)), getitemname(getbrokenid(7)), getitemname(getbrokenid(8)), getitemname(getbrokenid(9)), getitemname(getbrokenid(10))); set zeny, zeny - 2000; repair(@choice); goto L_Repaired; L_Waste: mes "[" + getarg(0) + "]"; mes "Do not waste my time, you have no items in need of repair."; close; L_Repaired: mes "[" + getarg(0) + "]"; mes "Your item has been repaired, please be more careful."; close; } Didn't try it but the structure seems ok this way.
    1 point
  3. This is actually a scripting question and would be better handled there. But I'll answer it here. To increase an item relative to it's refine rate, you need to use the getrefine() command. A great example of this is the Kathryne Keyron Card. To increase damage against Demi Human. bonus2 bAddRace,RC_DemiHuman,getrefine(); Likewise, to do the opposite: bonus2 bSubRace, RC_DemiHuman,getrefine(); Keep in mind: bAddRace is only for Physical Attacks as per the documentation. I haven't tested if the reduction is the same, however, there is a bAddRace2 option, so if the first one doesn't work for you, you can always add a "2" to the end of it.
    1 point
  4. Common Patch: - Spring event started. -> Period: 4/01/2015 until 4/29/2015 -> In payon (archer guild map) and prontera you can get large flowers. -> In prontera you can get a new costume. - Required items (maybe the amount??) and reward giving NPC PLUTO_09 in Episode 15.x are modified. - Fixed a bug with the minimap instance [Nidhoggur's Nest]. Mains Server: - Three Master Package VI sales event started. -> Period: 4/01/2015 until 4/15/2015 - The possibility of increasing the duration of some buff , with the new NPC of Malangdo on the 2 floor of paradise. -> You can increase the length of some buffs to an hour. -> Effect of increasing the walk speed is also added for 10 minutes. - Item List: -> 6 Mysterious Water of Life -> Gin Mysterious Water of Life. -> 6 Large Life Potion -> Gin Large Life Potion. -> 6 Small Life Potion -> Gin Small Life Potion. -> 2 Almighty -> Gin Almighty. -> 4 ASPD Enhanced Potion -> Gin ASPD Enhanced Potion. - Ends the lucky roulette system -> Items are removed: [Gold/Silve/Bronze roulette coin] - Exchange card event started. -> Period: 4/01/2015 until 4/08/2015. Sakray Server: Mechanic modified skill: [Pile Bunker] skill add 3 new weapons. -> (Pile Bunker S, Pile Bunker P, Pile Bunker T).
    1 point
×
×
  • Create New...