

Vyserion
Members-
Posts
21 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Vyserion
-
Hello community, How can I make this poring race scripts to trigger only two times a day at random times? prontera,114,154,5 script Poring Race 568,{ if( .access_Prace == 0 ) { mes "[Event Employee: Poring Race]"; mes "Poring Race has ended."; close; } mes "[Event Employee: Poring Race]"; mes "Do you want to participate on Poring Race?"; if( select( "Yes","No" ) -1 ) { next; mes "[Event Employee: Poring Race]"; mes "See you again next time!"; close; } if( .access_Prace == 0 ) { next; mes "[Event Employee: Poring Race]"; mes "..."; mes "..."; mes "Cheater!!~~"; close; } close2; @prace_winner$ = ""; warp "p_track01",52,41; end; // OnInit: OnClock1434: if( gettime(3)%2 ) end; set .access_Prace, 1; announce "Event Employee [Poring Race]: Poring Race is about to begin. To participate kindly approach me at Event Room or use @event",0; setnpctimer 100000,"Bidder#prace0"; startnpctimer "Bidder#prace0"; end; OnPraceEnd: set .access_Prace, 0; announce "Event Employee [Poring Race]: Poring Race is over! Thank you for participating.",0; end; } p_track01,58,41,3 script Bidder#prace0 877,{ function checkevent; if( getstrlen( @prace_winner$ ) ) { mes "[Event Employee: Poring Race Bidder]"; mes "You have choose ^00bb00"+ @prace_winner$ +"^000000"; close; } else if ( checkevent() || .start ) { mes "[Event Employee: Poring Race Bidder]"; mes "There is a race in progress..."; close; } else if( !getvariableofnpc( .access_Prace,"Poring Race" ) ) { mes "[Event Employee: Poring Race Bidder]"; mes "There is no race."; close; } mes "[Event Employee: Poring Race Bidder]"; mes "Choose the poring you want to bet:"; mes "It will cost "+ .zeny_req +" Zeny."; .@s = select( .menu_$ ); if( .@s == 7 ) { next; mes "[Event Employee: Poring Race Bidder]"; mes "Goodbye."; close; } .@c$ = .monst_$[ .@s -1 ]; if ( checkevent() ) { next; mes "[Event Employee: Poring Race Bidder]"; mes "..."; mes "..."; mes "Cheater!!~~"; close; } else if( Zeny < .zeny_req ) { next; mes "[Event Employee: Poring Race Bidder]"; mes "You don't have enough Zeny."; close; } Zeny -= .zeny_req; @prace_winner$ = .@c$; .prace_bidders[ .prace_bets ] = getcharid(3); .prace_bets++; next; mes "[Event Employee: Poring Race Bidder]"; mes "[Event Employee: Poring Race Bidder]: I have "+ .prace_bets +" bets."; initnpctimer; npctalk "[Event Employee: Poring Race Bidder]: I got "+ strcharinfo(0) +" bet!"; close; OnTimer60000: npctalk "[Event Employee: Poring Race Bidder]: I got "+ .prace_bets +" 's bets. Anyone else?"; end; OnTimer80000: npctalk "[Event Employee: Poring Race Bidder]: The race will start soon. Last chance."; end; OnTimer90000: stopnpctimer; .start = 1; mapannounce "p_track01","Porings, on your marks...",1,0xFFAB54; sleep 2500; for( .@i = 3; .@i > 0; .@i-- ) { mapannounce "p_track01","..."+ .@i +"...",1,0xFFAB54; sleep 1000; } donpcevent strnpcinfo(0) +"::OnStartRace"; sleep 1000; mapannounce "p_track01","Gooo!!!",1,0xFFAB54; end; OnTimer320000: mapwarp "p_track01","prontera",142,170; donpcevent "Poring Race::OnPraceEnd"; .prace_winner$ = ""; .start = .prace_bets = 0; donpcevent strnpcinfo(0) +"::OnReturnRace"; end; OnStartRace: callsub L_label, "OnRace"; OnStopRace: callsub L_label, "OnStop"; OnReturnRace: callsub L_label, "OnReturn"; L_label: donpcevent "Metaling#prace3::"+ getarg(0); donpcevent "Poring#prace1::"+ getarg(0); donpcevent "Poporing#prace6::"+ getarg(0); donpcevent "Angeling#prace2::"+ getarg(0); donpcevent "Santa Poring#prace5::"+ getarg(0); donpcevent "Deviling#prace4::"+ getarg(0); if( getarg(0) == "OnStop" && .prace_winner$ != "" ) callsub L_WinRace; end; L_WinRace: mapannounce "p_track01", "The winner is "+ .prace_winner$,1,0xFFAB54; donpcevent strnpcinfo(0) +"::OnChequeo"; sleep 3000; donpcevent strnpcinfo(0) +"::OnReturnRace"; sleep 10000; mapwarp "p_track01","prontera",142,170; donpcevent "Poring Race::OnPraceEnd"; .prace_winner$ = ""; .start = .prace_bets = 0; end; OnChequeo: for( .@i = 0 ; .@i < getarraysize( .prace_bidders ); .@i++ ) { if( attachrid( .prace_bidders[.@i] ) && getstrlen( @prace_winner$ ) ) { dispbottom "The winner is "+ .prace_winner$ +" and you have bet for "+ @prace_winner$ +"."; if( @prace_winner$ == .prace_winner$ ) { dispbottom "You have won!"; mapannounce "p_track01"," Congratulations! "+ strcharinfo(0) +" has won!",1,0xFFAB54; getitem .item_gained, .item_num_gain; emotion 21,1; } else { dispbottom "You have lost."; emotion 28,1; } @prace_winner$ = ""; } } deletearray .prace_bidders; end; OnInit: .zeny_req = 10000000; .item_gained = 36008; .item_num_gain = 5; setarray .monst_$,"Poring","Angeling","Metaling","Deviling","Santa Poring","Poporing","None"; .menu_$ = implode( .monst_$, ":" ); end; function checkevent { getmapxy .@mapname$, .@x1, .@y, 1, "Poring#prace1"; getmapxy .@mapname$, .@x2, .@y, 1, "Angeling#prace2"; getmapxy .@mapname$, .@x3, .@y, 1, "Metaling#prace3"; getmapxy .@mapname$, .@x4, .@y, 1, "Deviling#prace4"; getmapxy .@mapname$, .@x5, .@y, 1, "Santa Poring#prace5"; getmapxy .@mapname$, .@x6, .@y, 1, "Poporing#prace6"; .@t = ( .@x1 + .@x2 + .@x3 + .@x4 + .@x5 + .@x6 ) != 58 * 6; return .@t; } } //----------------------------------- // Racer NPC's //----------------------------------- - script pori_race -1,{ OnRace: initnpctimer; end; OnStop: stopnpctimer; end; OnReturn: sleep 1000; while( strnpcinfo(1) != .monst$[ .@i ] ) .@i++; movenpc strnpcinfo(3), 58, .walk_t[.@i]; end; OnTimer1100: getmapxy .@mapname$,.@x,.@y,1, strnpcinfo(3); if( rand(100) < .prace_random ) npcwalkto .@x-1, .@y; .@r = rand( .prace_random2 ); if ( .@x -1 == 29 ) { while( strnpcinfo(1) != .monst$[ .@i ] ) .@i++; set getvariableofnpc( .prace_winner$, "Bidder#prace0" ), .monst$[ .@i ]; emotion 29; donpcevent "Bidder#prace0::OnStopRace"; end; } stopnpctimer; setnpctimer .@r; startnpctimer; end; OnInit: deletearray .walk_t; deletearray .monst$; setarray .walk_t, 38, 36, 34, 32, 30, 28; setarray .monst$, "Poring", "Angeling", "Metaling", "Deviling", "Santa Poring", "Poporing"; .prace_random = 70; .prace_random2 = 600; end; } p_track01,58,38,2 duplicate(pori_race) Poring#prace1 1002 p_track01,58,36,2 duplicate(pori_race) Angeling#prace2 1096 p_track01,58,34,2 duplicate(pori_race) Metaling#prace3 1613 p_track01,58,32,2 duplicate(pori_race) Deviling#prace4 1582 p_track01,58,30,2 duplicate(pori_race) Santa Poring#prace5 1062 p_track01,58,28,2 duplicate(pori_race) Poporing#prace6 1031 p_track01,78,42,0 warp p_track002 1,3,prontera,156,191 p_track01 mapflag nobranch p_track01 mapflag noicewall p_track01 mapflag nomemo p_track01 mapflag noreturn p_track01 mapflag noteleport p_track01 mapflag nowarpto p_track01 mapflag nowarp p_track01 mapflag noskill p_track01 mapflag pvp off p_track01 mapflag nosave Thanks.
-
Hello community, I've recently applied manually the Refine UI system (https://github.com/rathena/rathena/pull/2494/files) and I noticed something very unusual. For Gakkung - Level 3 Weapon the first upgrade attempt bonus is 10 instead of 5 (pre-re settings) and for the next attempts, the weapon is upgraded by multiplies of 5 as it should be. It happens the same with other type of weapon level where the first attempt is doubled. I'm using latest rAthena version. db/pre-re/refine.yml Does anyone knows how to fix this? Thanks.
-
Hello, there! I have an idea of a town/dungeon warps rotation on a Warper NPC that chooses a few destinations from a random list that change everyday. I've been trying to do this will simple script but I'm not able to. Does anyone has the desire and time to do it for me? I appreciate it.
-
Utility: sader's Level Up Reward Job/Base
Vyserion replied to sader1992's topic in Utility Script Releases
Hello @sader1992! I had this applied on my server but the player is getting the rewards every level from 10 to 19. How can I make the user get the rewards when reaching level 10 and/or passing over the level? For example, if it is a mid-rates, the character could skip from level 8 to level 30 and without taking the level 10 reward. Regards! -
Hello guys, I'm using a rAthena version from 6 months ago, downloaded from official github (can't determine version), however, when I use a dead branch on a map with "nobranch mapflag" the monsters are actually spawned but the item is not consumed. I keep on using it but does not consume it. EDIT: I tried to duplicate the item with another Item ID and it worked, however, is not being considered for the "nobranch" mapflag, so I think something is wrong with the mapflag itself being linked to item 604. Any idea how to fix it? or where to look at? This is the item_db script: 604,Branch_Of_Dead_Tree,Dead Branch,2,50,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ monster "this",-1,-1,"--ja--",-1,1,""; },{},{} Does anyone have any clue on how to fix it?
-
Hello! Anyone knows how to remove the error message? Without erasing it on conf/map_msg_por.conf.
-
Hello community, How can I make the plants from Biocannibalize skill to be resummoned (kill the previous one and relocate the new one) without having to kill the plant to place another one. I think we need to change it here, but I don't know what exactly to touch. case AM_CANNIBALIZE: { int summons[5] = { MOBID_G_MANDRAGORA, MOBID_G_HYDRA, MOBID_G_FLORA, MOBID_G_PARASITE, MOBID_G_GEOGRAPHER }; int class_ = skill_id==AM_SPHEREMINE?MOBID_MARINE_SPHERE:summons[skill_lv-1]; enum mob_ai ai = (skill_id == AM_SPHEREMINE) ? AI_SPHERE : AI_FLORA; struct mob_data *md; // Correct info, don't change any of this! [celest] md = mob_once_spawn_sub(src, src->m, x, y, status_get_name(src), class_, "", SZ_SMALL, ai); if (md) { md->master_id = src->id; md->special_state.ai = ai; if( md->deletetimer != INVALID_TIMER ) delete_timer(md->deletetimer, mob_timer_delete); md->deletetimer = add_timer (gettick() + skill_get_time(skill_id,skill_lv), mob_timer_delete, md->bl.id, 0); mob_spawn (md); //Now it is ready for spawning. } } break; Anyone could help?
-
Hello guys! How can I make an item to be protected from Steal skill? For example a special drop to avoid any exploits. Regards
-
Hello community, I spent more than 24 hours trying to change the client icon but I couldn't. I tried in two ways: 1. Diffing the client before changing the icon with ResHacker and 2. Changing the icon with ResHacker before diffing the client and still cannot make it work. The client just gets screwed. I followed these steps with other client versions (that I don't need) just to discard options, and they work perfectly fine. Apparently, is the 2018-06-20 version which is making trouble. I also tried with 2018-06-21 and still the same. When I try to diff the exe after changing the icon, these errors appears and many many more. Anyone can help? .
-
Olá @Gladius Você sabe como remover a mensagem de erro?
-
Hello community! I'm looking for a script that can reset status points by 10 only. For example, to only reset 10 points from either Str, Agi, Vit, Dex, Int or Luk and return equivalent status points. Is it possible?
-
Hello there! I applied this patch and everything seems to work perfectly fine, however, when I want to make a random group to apply different values, it would just apply the first one of each group (RDMOPT_DAMAGE_PROPERTY_GROUND_USER in this case), for example: RDMOPTG_Crimson_Weapon_3,1,RDMOPT_DAMAGE_PROPERTY_GROUND_USER,5,0,10 RDMOPTG_Crimson_Weapon_3,1,RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET,5,0,10 RDMOPTG_Crimson_Weapon_3,1,RDMOPT_DAMAGE_PROPERTY_WATER_TARGET,5,0,10 RDMOPTG_Crimson_Weapon_3,1,RDMOPT_DAMAGE_PROPERTY_FIRE_USER,5,0,10 For this specific group, it is intended that one of these four values would apply randomly to an specific weapon, but, after applying the patch, the first in these lines will only apply. The other three effects are not being taken into consideration when dropping the weapon. Does someone have any idea what might be causing this or any work-around?
-
Hello guys! I've been trying to get the topic's title result but I have failed in all my attempts. I want the skill to reduce the caster's HP to half upon activation, and then I will continue adding new skill effects, but I can't get to the first result. This is how I go so far: case AC_SACRIFICEPOWER: { int hp = sstatus->max_hp; hp = hp*50/100; status_zap(src, hp, 0); } break; But, it is not working as intended. Is not halving my HP at all... Just reducing it for x rate... or even killing my character when full HP. Any ideas?
-
Hi @Functor, I'm wondering how do you know where and what to edit exactly. I'm trying to edit the radius of the skill MG_FROSTDIVER to 5x5. For future references, what should I look for on hex to edit the radius of any skill? Regards!
-
Hi guys! Is it possible to add a timer for a clif_speciallefect on src or client-side? I want to give a skill an effect like Berserk/Frenzy of Lord Knight and effect to be active as long as SC_STATUS is active too. When the skill effect deactivates also the visual effect. Skill Examples: Energy Coat, Frenzy, Mental Strength, etc... How can I do that?
-
Hello @Haziel! Based on your explanation, I made the skill effect be shown upon using the skill, however, when the SC effect is over, the special effect remains on until I relog or change map. How do I make the effect last until SC has ended?
-
Hi community, After following each of the steps of this guide: https://github.com/rathena/rathena/wiki/Adding_new_skills, and re-checking each step to make sure I'm not missing anything, I can't get to the result of upgrading skill level at all. The skill just grays out when I click on "Apply" to effect changes, as shown below: It is important to mention that, whenever I use @useskill 8444 1 "Nickname", the skill effect actually triggers, however, I can't lvup the skill on the skill tree. I'd very happy if you guys could give me a hand on this. I'm really tired of searching for a solution here. rAthena version: I'm using the latest rAthena version on git. Client version: 2018-06-20d (I've tried with 2018-06-21 and other 2018 versions already.) Src Files skill.cpp skill.hpp status.hpp status.cpp DB Files skill_tree.txt skill_db.yml Lua Files skilldescript.lub skillinfolist.lub skillid.lub skilltreview.lub
-
Hello! Is there any command to check IP or MAC in src to avoid giving for example, x stats to dual logins? Thanks.
-
Hello guys! How can I do to make Bowling Bash stun the target with a chance, when being knocked back against a wall? case KN_BOWLINGBASH: case MS_BOWLINGBASH: { int min_x,max_x,min_y,max_y,i,c,dir,tx,ty; // Chain effect and check range gets reduction by recursive depth, as this can reach 0, we don't use blowcount c = (skill_lv-(flag&0xFFF)+1)/2; // Determine the Bowling Bash area depending on configuration if (battle_config.bowling_bash_area == 0) { // Gutter line system min_x = ((src->x)-c) - ((src->x)-c)%40; if(min_x < 0) min_x = 0; max_x = min_x + 39; min_y = ((src->y)-c) - ((src->y)-c)%40; if(min_y < 0) min_y = 0; max_y = min_y + 39; } else if (battle_config.bowling_bash_area == 1) { // Gutter line system without demi gutter bug min_x = src->x - (src->x)%40; max_x = min_x + 39; min_y = src->y - (src->y)%40; max_y = min_y + 39; } else { // Area around caster min_x = src->x - battle_config.bowling_bash_area; max_x = src->x + battle_config.bowling_bash_area; min_y = src->y - battle_config.bowling_bash_area; max_y = src->y + battle_config.bowling_bash_area; } // Initialization, break checks, direction if((flag&0xFFF) > 0) { // Ignore monsters outside area if(bl->x < min_x || bl->x > max_x || bl->y < min_y || bl->y > max_y) break; // Ignore monsters already in list if(idb_exists(bowling_db, bl->id)) break; // Random direction dir = rnd()%8; } else { // Create an empty list of already hit targets db_clear(bowling_db); // Direction is walkpath dir = (unit_getdir(src)+4)%8; } // Add current target to the list of already hit targets idb_put(bowling_db, bl->id, bl); // Keep moving target in direction square by square tx = bl->x; ty = bl->y; for(i=0;i<c;i++) { // Target coordinates (get changed even if knockback fails) tx -= dirx[dir]; ty -= diry[dir]; // If target cell is a wall then break if(map_getcell(bl->m,tx,ty,CELL_CHKWALL)) break; skill_blown(src,bl,1,dir,BLOWN_NONE); int count; // Splash around target cell, but only cells inside area; we first have to check the area is not negative if((max(min_x,tx-1) <= min(max_x,tx+1)) && (max(min_y,ty-1) <= min(max_y,ty+1)) && (count = map_foreachinallarea(skill_area_sub, bl->m, max(min_x,tx-1), max(min_y,ty-1), min(max_x,tx+1), min(max_y,ty+1), splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY, skill_area_sub_count))) { // Recursive call map_foreachinallarea(skill_area_sub, bl->m, max(min_x,tx-1), max(min_y,ty-1), min(max_x,tx+1), min(max_y,ty+1), splash_target(src), src, skill_id, skill_lv, tick, (flag|BCT_ENEMY)+1, skill_castend_damage_id); // Self-collision if(bl->x >= min_x && bl->x <= max_x && bl->y >= min_y && bl->y <= max_y) skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,(flag&0xFFF)>0?SD_ANIMATION|count:count); break; } } #ifndef RENEWAL // Original hit or chain hit depending on flag skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,(flag&0xFFF)>0?SD_ANIMATION:0); #endif } break;
-
Hello community! I have a question, since I just spent a couple of hours solving it but no success. Based on this skill src, where or how do I make ONLY the caster receive the movement speed bonus instead of the whole party? sc_start(src,bl,SC_SPEEDUP1,100,30,3000); case PR_MAGNIFICAT: if( sd == NULL || sd->status.party_id == 0 || (flag & 1) ) clif_skill_nodamage(bl, bl, skill_id, skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv))); else if( sd ) party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id); break; Thanks!
-
Hello guys! I just setup my Ragnarok Online private server locally, and, everything seems fine until I select my character and client starts loading the map and then client stops working. I'm using the latest rAthena version since I just downloaded it 12 hours ago from git. Client version 2018-06-20d. <?xml version="1.0" encoding="euc-kr" ?> <clientinfo> <desc>Server RO</desc> <servicetype>korea</servicetype> <servertype>sakray</servertype> <connection> <display>Server RO</display> <balloon>Great Server</balloon> <address>127.0.0.1</address> <port>6900</port> <version>55</version> <langtype>1</langtype> <aid> <admin>2000001</admin> </aid> <registrationweb>https://none.com</registrationweb> </connection> </clientinfo> Any idea what could be happening? I tried to change the character last map saved on db with different maps and still not loading. ?