-
Posts
181 -
Joined
-
Last visited
-
Days Won
13
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Louis T Steinhil
-
Hello guys, just need a bit of help with my instance entry mes "Confirmed the party has been made. Would you like to reserve entrance to the Endless Tower?"; next; switch(select( ( .@party_id && .@is_leader && !.@has_instance )? "Generate dungeon "+.@md_name$+": "", ( .@party_id && .@has_instance )? "Enter the dungeon": "", "Return to Alberta","Cancel")){ What could be the right one? Thanks in advance!
-
View File Endless Tower Instance with Difficulty Good day! I've been an observer since the beginning of time and I want to share this script hoping that it will help fellow human beings who need it. This was a paid script of mine and I hired @sader1992 to help me finish it in 2020. I'm hoping someone will improve the code in the near future with other stuff to give another flavor for Endless Tower. This works with the latest version of rAthena. Requirement: Y'all need this patch for +damage to work setunitdata script command monster stat recaulculation fixes #3968 About the script: It is simply Endless Tower with Easy, Veteran, Nightmare, Hell & Torment Difficulties. You can edit the values I pre-assigned: This part is for the difficulty settings and adding stats to the monsters: This part is for the rewards: It gives #INSTANCEPOINTS and EXP depending on the difficulty you're on. I assigned a monster (1613 : metalling) to show us that the stats boost really works: PS: I'm also integrating this to other instances. Maybe I'll post it if people requests it. Submitter Louis T Steinhil Submitted 05/02/23 Category Games, Events, Quests Video Content Author Ylen X. Walker
-
Version 1.2.0
636 downloads
Good day! I've been an observer since the beginning of time and I want to share this script hoping that it will help fellow human beings who need it. This was a paid script of mine and I hired @sader1992 to help me finish it in 2020. I'm hoping someone will improve the code in the near future with other stuff to give another flavor for Endless Tower. This works with the latest version of rAthena. Requirement: Y'all need this patch for +damage to work setunitdata script command monster stat recaulculation fixes #3968 About the script: It is simply Endless Tower with Easy, Veteran, Nightmare, Hell & Torment Difficulties. You can edit the values I pre-assigned: This part is for the difficulty settings and adding stats to the monsters: This part is for the rewards: It gives #INSTANCEPOINTS and EXP depending on the difficulty you're on. I assigned a monster (1613 : metalling) to show us that the stats boost really works: PS: I'm also integrating this to other instances. Maybe I'll post it if people requests it.Free -
Hello placid! Will you be able to share that here? thanks!
-
[Showcase] Instance Difficulty Settings
Louis T Steinhil replied to Easycore's topic in Source Releases
I had the same mod in my Endless Tower Instance just minus the debuff to the players. Keep it up sir! -
Hello do you have a list of UNPC_GROUP_ID with the corresponding emblems?
-
Request Auto Reward Zeny For Base Level
Louis T Steinhil replied to Dolphin86's question in Script Requests
Hello i tried this but it skips level 10 on multi level up enabled. I want to include level 10 also. -
kRO Sprite: 4th Jobs Corrected Sprites
Louis T Steinhil replied to ohyono's topic in Sprites & Pallette Downloads
Hello I did patch shared body palette 1 but it became all black. Any step by step or patch you can provide? Thanks in advance! -
Enchantgrade on low level weapons and armors in pre renewal
Louis T Steinhil posted a question in Database Support
Hello does anyone know how to edit this enchantgrade.yml to accept low level weapons and armors like knife and adventurer's suit and the bonus it gives in pre renewal? Thanks in advance! -
Client Auto Crash after login
Louis T Steinhil replied to Louis T Steinhil's question in Client-side Support
These are the patch that I have. I mean the patch that came from that Offline Server Newbie Pack, it has premade client that works well with my Ragnarok Folder. This is the client. It works well. But when I try diffing my own, it crashes after char creation. I also tried using WARP 2019 client is okay but 2020+ client it's the same crash. What do you think maybe the cause? -
Client Auto Crash after login
Louis T Steinhil replied to Louis T Steinhil's question in Client-side Support
Hello sir, I just copied this setup because when I tried the client from this post (https://board.herc.ws/topic/16607-ragnarok-offline-newbie-pack-2022-make-your-ro-server-in-less-then-5-minutes/) . It works well with my offline server. When I tried to diff the same client date, that crash always occurs on any client date I chose. Even the default client dates set on the said emulator. I got the latest Nemo also from this site http://nemo.herc.ws/downloads/ -
Please help. The patches I made were the recommended settings only. Client date is 2019-06-05 Thanks in advance! The error code:
-
Most Stable Client for Renewal now?
Louis T Steinhil replied to Eross's question in Client-side Support
-- -
very nice sir! Keep it up!
-
@autoattack random disconnect when being used on latest trunk
Louis T Steinhil posted a question in Source Support
Hey guys! Anyone encountering this? I've been auto-attacking monsters for about 30 mins then this shows up. I installed it on the latest rAthena version. What could be the cause? Code is originally from https://rathena.org/board/topic/71297-autoattack/ I Implemented this code: atcommand.cpp // Auto Attack --- put before all command static int buildin_autoattack_sub(struct block_list *bl,va_list ap) { int *target_id=va_arg(ap,int *); *target_id = bl->id; return 1; } void autoattack_motion(struct map_session_data* sd) { int i, target_id; if( pc_isdead(sd) || !sd->state.autoattack ) return; for(i=0;i<=9;i++) { target_id=0; map_foreachinarea(buildin_autoattack_sub, sd->bl.m, sd->bl.x-i, sd->bl.y-i, sd->bl.x+i, sd->bl.y+i, BL_MOB, &target_id); if(target_id){ unit_attack(&sd->bl,target_id,1); break; } target_id=0; } if(!target_id && !pc_isdead(sd) && sd->state.autoattack){ unit_walktoxy(&sd->bl,sd->bl.x+(rand()%2==0?-1:1)*(rand()%25),sd->bl.y+(rand()%2==0?-1:1)*(rand()%25),0); } return; } static TIMER_FUNC(autoattack_timer) { struct map_session_data *sd=NULL; sd=map_id2sd(id); if(sd==NULL || pc_isdead(sd) || !sd->state.autoattack ) return 0; if(sd->state.autoattack) { unit_stop_attack(&sd->bl); autoattack_motion(sd); if(DIFF_TICK(sd->autoattack_delay,gettick())> 0){ clif_authfail_fd(sd->fd, 15); return 0; } else{ add_timer(gettick()+1000,autoattack_timer,sd->bl.id,0); // 1000 is delay sd->autoattack_delay = gettick() + 1000; // 1000 is delay } } return 0; } ACMD_FUNC(autoattack) { nullpo_retr(-1, sd); if (sd->state.autoattack) { sd->state.autoattack = 0; unit_stop_attack(&sd->bl); clif_displaymessage(fd, "Auto Attack has been deactivated."); } else { sd->state.autoattack = 1; add_timer(gettick()+1000,autoattack_timer,sd->bl.id,0); clif_displaymessage(fd, "Auto Attack activated."); } return 0; } ACMD_FUNC(accinfo) { char query[NAME_LENGTH]; @@ -8827,6 +8881,7 @@ * Command reference list, place the base of your commands here **/ AtCommandInfo atcommand_base[] = { + ACMD_DEF(autoattack), ACMD_DEF2("warp", mapmove), ACMD_DEF(where), ACMD_DEF(jumpto), status.hpp OPTION_OKTOBERFEST = 0x10000000, OPTION_SUMMER2 = 0x20000000, + OPTION_AUTOATTACK = 0x40000000, pc.hpp struct map_session_data { struct block_list bl; struct unit_data ud; struct view_data vd; struct status_data base_status, battle_status; struct status_change sc; struct regen_data regen; struct regen_data_sub sregen, ssregen; + unsigned int autoattack_delay; // autoattack timer unsigned int killable : 1; unsigned int doridori : 1; unsigned int ignoreAll : 1; + unsigned int autoattack : 1; // autoattack unsigned int debug_remove_map : 1; // temporary state to track double remove_map's [FlavioJS] unsigned int buyingstore : 1; unsigned int lesseffect : 1; unsigned int vending : 1; -
What does it do sir?
-
Hey guys! Anyone encountering this? I've been auto-attacking monsters for about 30 mins then this shows up. I installed it on the latest rAthena version. What could be the cause?
-
-
4th Job Development Project
Louis T Steinhil replied to Rytech's topic in Project Concepts & In Progress
Cool Work! -
Good day sir / mam, what else am I missing in the code? Item link prints unknown item - script itemdescs -1,{ end; OnInit: bindatcmd "ii2",strnpcinfo(3)+"::OnAtcommand"; bindatcmd "itemdescription",strnpcinfo(3)+"::OnAtcommand"; end; OnAtcommand: mes "^3355FF[ Item Description Search ]^000000"; mes "What item are you looking for?"; input .@name$; .@qty = searchitem(.@matches[0],.@name$); mes "I found " + .@qty + " items:"; for (.@i = 0; .@i < .@qty; .@i++) // Display name (eg: "Apple[0]") mes "<ITEM>"+getitemname(.@matches[.@i]) +"<INFO>"+.@name$+"</INFO></ITEM> [" + getitemslots(.@matches[.@i]) + "]"; end; } -- This is not my original code. Code came from sir Nova. CTTO.
-
Good day! I'm having some issues regarding Endless Tower wherein after I defeated Entweihen Crothen, there's a chance that Naght Sieger will not appear and it will just send you back to alberta. I tried entering the memorial dungeon again and on the 99th Floor I can't get past it but there's a warp it gives me ashes of darkness that can be exploit over and over by just stepping into the portal.
-
Good day guys! Anyone can help me convert this to rathena compatability? Thanks in advance! //================= Hercules Script ======================================= //= _ _ _ //= | | | | | | //= | |_| | ___ _ __ ___ _ _| | ___ ___ //= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| //= | | | | __/ | | (__| |_| | | __/\__ \ //= \_| |_/\___|_| \___|\__,_|_|\___||___/ //================= License =============================================== //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= //= Copyright (C) 2017 Hercules Dev Team //= Copyright (C) 2017 Smokexyz //= //= Hercules is free software: you can redistribute it and/or modify //= it under the terms of the GNU General Public License as published by //= the Free Software Foundation, either version 3 of the License, or //= (at your option) any later version. //= //= This program is distributed in the hope that it will be useful, //= but WITHOUT ANY WARRANTY; without even the implied warranty of //= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //= GNU General Public License for more details. //= //= You should have received a copy of the GNU General Public License //= along with this program. If not, see <http://www.gnu.org/licenses/>. //========================================================================= //= Option Master (Item Options NPC @see db/item_options.conf) //================= Description =========================================== //= Select from a list of your equipments, one to enhance with up to 5 options. //= A list of the first 10 options are provided in this npc. //================= Current Version ======================================= //= 1.0 //========================================================================= prontera,153,180,4 script Option Master 4_DOG01,{ callsub(StartTalking); end; OnInit: /** * General Configuration */ /* Chance of the enhancement process to fail. (0 - 99 in percent) */ .chance_of_failure = 10; /* Delete the item on failure? (true/false) */ .delete_on_failure = true; /* Required amount of zeny for a try. */ .zeny_requirement = 100; /* Minimum amount of the bonus value. * For negative effects or certain bonuses that require negative values * Maximum possible value is -INT16_MAX) */ .minimum_bonus_amount = -100; // usually used with delay bonus options, although not provided in the script. /* Maximum amount of the bonus value. * Maximum possible value is INT16_MAX */ .maximum_bonus_amount = 100; /* Disable selection of bonus value (true/false) */ .enable_random_bonus = false; /* Item Option Descriptions */ setarray(.options$[0], "Max HP", "Max SP", "STR", "AGI", "VIT", "INT", "DEX", "LUK"); /* Item Option Constants */ setarray(.option_constants[0], VAR_MAXHPAMOUNT, VAR_MAXSPAMOUNT, VAR_STRAMOUNT, VAR_AGIAMOUNT, VAR_VITAMOUNT, VAR_INTAMOUNT, VAR_DEXAMOUNT, VAR_LUKAMOUNT); end; StartTalking: .@name$ = _("[ ^990099Option Master^000000 ]"); disable_items(); mes(.@name$); mesf("Hey there %s", strcharinfo(PC_NAME)); mes("There's a new-found method of adding options to an equipment that I have been working on."); next(); if (.enable_random_bonus) { mes(.@name$); mes("Equipment bonuses are added randomly per slot!"); mes("So if you wind up with a low amount of bonus, don't hesitate to override the slot."); next(); } mes(.@name$); mes("Would you like me to add extra stats to your equipment?"); next(); if (select("Of course!", "Meh, not right now.") == 2) { mes(.@name$); mes("Alright then, catch you later."); close(); } // Build the Menu. setarray(.@position$[1], "Head", "Body", "Left Hand", "Right Hand", "Robe", "Shoes", "Accessory 1", "Accessory 2", "Head 2", "Head 3"); .@menu$ = ""; for (.@i = 1; .@i <= 10; ++.@i) .@menu$ += ((getequipisequiped(.@i)) ? getequipname(.@i) : .@position$[.@i] + "-[Not equipped]") + ":"; // Select the part. .@equip_index = select(.@menu$); // Check if it's worn. if (!getequipisequiped(.@equip_index)) { mes(.@name$); mes("Brah, your item ain't equipped."); close(); // Check if it allows options } else if (!getequipisenableopt(.@equip_index)) { mes(.@name$); mes("Brah, this equip can't have options."); close(); // Check if equipment is identified. } else if (!getequipisidentify(.@equip_index)) { mes(.@name$); mes("Brah, this equip ain't identified."); close(); } // Present a list of currently infused options. do { .@menu$ = ""; .@used = false; // Build the menu of current options. for (.@i = 1; .@i <= MAX_ITEM_OPTIONS; ++.@i) { // call getequipoption(<equip_index>, <type>, <slot>); // if the return is <0, it's a script error. // if the return is 0, the slot is empty. // if the return is >0, the slot is unavailable. .@opt = getequipoption(.@equip_index, .@i, IT_OPT_INDEX); if (.@opt > 0) .@menu$ += (.@i) + ") " + .options$[.@opt - 1] + ":"; else .@menu$ += (.@i) + ") ^999999Empty^000000" + ":"; } // Option Slot is the actual option slot 0-MAX_ITEM_OPTIONS (@see mmo.h) .@option_slot = select(.@menu$); // Check for used slot and request user action if found. if (getequipoption(.@equip_index, .@option_slot, IT_OPT_INDEX) > 0) { mes(.@name$); mes("This slot is already used up!"); if (select("^990000Override the slot.^000000", "Choose again.") == 2) .@used = true; next(); } } while (.@used); // loop if the slot is not to be overridden // Present a list of available bonuses. mes(.@name$); mes("Which of the following item bonuses would you like to add to this item?"); next(); // Build the Options! .@menu$ = ""; for (.@i = 0; .@i < getarraysize(.options$); ++.@i) .@menu$ += (.@i + 1) + ") " + .options$[.@i] + ":"; do { // Select the options! .@option_variable = select(.@menu$); next(); mes(.@name$); mesf("You chose ^009900%s^000000!", .options$[.@option_variable - 1]); mes("Are you sure?"); next(); } while (select("Fo Shizzle.", "I'ma re-evaluate, brah.") == 2); // Select a bonus or randomise. if (.enable_random_bonus) { .@value = rand(.maximum_bonus_amount); } else { do { mes(.@name$); mesf("Please input the bonus amount of ^009900%s^000000 you want to add!", .options$[.@option_variable - 1]); mesf("(Min: %d, Max: %d)", .minimum_bonus_amount, .maximum_bonus_amount); .@ok = input(.@value, .minimum_bonus_amount, .maximum_bonus_amount); next(); } while (.@ok); } // If there's a chance of failure, inform the user. if (.chance_of_failure) { mes(.@name$); mes("Alright so,"); mes("I'll have you know..."); mesf("There's a ^990000%d%% chance of failure^000000.", .chance_of_failure); mes("Because, well... I didn't go to school."); next(); mes(.@name$); if (.delete_on_failure) { mes("If I fail, your item will break and it ^990000will be destroyed^000000!"); } mes("Are you still ready to go forward with this?"); next(); if (select("Fo shizzle.", "Hells naw, go back to school.") == 2) { mes(.@name$); mes("Geez, you don't have to be so harsh about it."); close(); } next(); } // If there's a Zeny Requirement, perform the usual. if (.zeny_requirement > 0) { mes(.@name$); mesf("You also have to pay %dZ.", .zeny_requirement); next(); if (select("Of course!", "No way!") == 2) { mes(.@name$); mes("Well, see you around then..."); close(); } if (Zeny < .zeny_requirement) { mes(.@name$); mes("You don't have enough Zeny!"); close(); } Zeny -= .zeny_requirement; } // Check if there's a chance of failure, set and roll the dice. if (.chance_of_failure && rand(100) <= .chance_of_failure) { mes(.@name$); mes("^990000I failed!^000000"); mes("Guess I should go back to school."); // Delete the item if flagged. if (.delete_on_failure) failedrefitem(.@equip_index); // Simulate failed refinement of the item and delete. } else { // Set the Item Option bonuses in the slot see db/item_options.conf for more info. setequipoption(.@equip_index, .@option_slot, .option_constants[.@option_variable - 1], .@value); mes(.@name$); mes("^009900Praise Jesus^000000"); mes("I have added an option to your item."); mes("My skills are flawless!"); } next(); mes(.@name$); mes("See you around!"); close(); }
-
[Showcase] Meteor Storm Custom Animation
Louis T Steinhil replied to vferrari's topic in Spriting & Palette Showcase
Hi guys how can I edit it like this? ^ This one only got the exclamation graphic but it doesn't have the meteor sprite -
Is it just me or I get kicked out of the server whenever I hit a wall. No errors on map server.