Jump to content

Notorius

Members
  • Posts

    106
  • Joined

  • Last visited

Everything posted by Notorius

  1. I used this from a user who uploaded it a little higher Extend Vending 1.7.0.diff
  2. solution: case SA_DISPELL: if (flag&1 || (i = skill_get_splash(skill_id, skill_lv)) < 1) { if (sd && dstsd && !map_flag_vs(sd->bl.m) && (!sd->duel_group || sd->duel_group != dstsd->duel_group) && (!sd->status.party_id || sd->status.party_id != dstsd->status.party_id)) break; // Outside PvP it should only affect party members and no skill fail message clif_skill_nodamage(src,bl,skill_id,skill_lv,1); if((dstsd && (dstsd->class_&MAPID_UPPERMASK) == MAPID_SOUL_LINKER) || (tsc && tsc->getSCE(SC_SPIRIT) && tsc->getSCE(SC_SPIRIT)->val2 == SL_ROGUE) //Rogue's spirit defends againt dispel. || rnd()%100 >= 50+10*skill_lv) { if (sd) clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); break; } if(status_isimmune(bl)) break; //Remove bonus berserk by Dispell if (dstsd) pc_bonus_script_clear(dstsd,BSF_REM_ON_DISPELL); if(!tsc || !tsc->count) break; for (const auto &it : status_db) { sc_type status = static_cast<sc_type>(it.first); if (!tsc->getSCE(SC_BERSERK)) continue; if (it.second->flag[SCF_NODISPELL]) continue; if (i == SC_BERSERK) tsc->getSCE(status)->val2 = 0; //Mark a dispelled berserk to avoid setting hp to 100 by setting hp penalty to 0. status_change_end(bl, status); status_percent_heal(bl, 100, 0); } //Statuses that can't be Dispelled for (const auto &it : status_db) { sc_type status = static_cast<sc_type>(it.first); if (!tsc->getSCE(status)) continue; if (it.second->flag[SCF_NODISPELL]) continue; switch (status) { // bugreport:4888 these songs may only be dispelled if you're not in their song area anymore case SC_WHISTLE: case SC_ASSNCROS: case SC_POEMBRAGI: case SC_APPLEIDUN: case SC_HUMMING: case SC_DONTFORGETME: case SC_FORTUNE: case SC_SERVICE4U: if (!battle_config.dispel_song || tsc->getSCE(status)->val4 == 0) continue; //If in song area don't end it, even if config enabled break; case SC_ASSUMPTIO: if( bl->type == BL_MOB ) continue; break; } if (i == SC_SATURDAYNIGHTFEVER) tsc->getSCE(status)->val2 = 0; //Mark a dispelled berserk to avoid setting hp to 100 by setting hp penalty to 0. status_change_end(bl, status); } break; }
  3. check in battle.c it could be this case SN_SHARPSHOOTING: if (src->type == BL_MOB) { // TODO: Did these formulas change in the renewal balancing? if (wd->miscflag & 2) // Splash damage bonus skillratio += -100 + 140 * skill_lv; else skillratio += 100 + 50 * skill_lv; break; }
  4. Hello Rathena, I have a problem and I hope you can help me. Now I have a problem trying to edit the function of the skill dispell when it is used on a player in a berserk state. The problem I want to solve is that when a player in a berserk state is Hit by the dispell ability, it remains at 0 hp and sp. What I want is when a dispell is fired at a player with dispell, it remains at 100% hp and 0 sp, any way to do it? I'm trying to edit here but can't get skill.c to work if (i == SC_BERSERK || i == SC_SATURDAYNIGHTFEVER) tsc->getSCE(status)->val2 = 0; //Mark a dispelled berserk to avoid setting hp to 100 by setting hp penalty to 0. status_change_end(bl, status);
  5. Well, I don't have much experience. I've never created a new job, but I think the easiest would be to use renewal and adapt your emludor to your needs.
  6. I imagine that it would be enough to add the jobs to the job_ tables and the skill tables and enable the third jobs in their job master
  7. hello rathena how to add this drop through this script to an mvp custom in mvp ladder? - script ifrit -1,{ OnNPCKillEvent: if ( killedrid != 31000 ) end; if ( getcharid(1) ) { getpartymember getcharid(1), 1; getpartymember getcharid(1), 2; for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { // what happens if someone in the party member is offline =/ .@partymemberaid[.@c] = $@partymemberaid[.@i]; .@c++; } } //Party has 10% chance to get the item 45018 if (rand(100) < 50) getitem F_Rand(45006,45007,45008,45009,45010,45011), 1, .@partymemberaid[ rand( .@c ) ]; announce "Party ["+ strcharinfo(1) +"] ha matado "+ getmonsterinfo( killedrid, MOB_NAME ) +" en "+ strcharinfo(3), 0; } else { //Players without party has 15% chance to get the item 45018 if (rand(100) < 50) getitem F_Rand(45006,45007,45008,45009,45010,45011), 1; announce "El jugador ["+ strcharinfo(0) +"] ha matado "+ getmonsterinfo( killedrid, MOB_NAME ) +" en "+ strcharinfo(3), 0; } end; } mvp ladder prontera,164,170,3 script MvP Ladder Warper 56,{ mes "[MvP Ladder Warper]"; mes "¿quieres entrar a MvP Ladder?"; next; switch(select("¡Sí, vamos!:Información.:Muéstrame el mejor record.:No.")) { case 1: break; case 2: mes "[MvP Ladder Warper]"; mes "En este juego, tu grupo tiene que matar a todos los MvP en orden ascendente, del más débil al más fuerte.."; if ( .finish_item_amount ) mes "Si su grupo puede terminar MVP Ladder, cada miembro ganará "+ callfunc("F_InsertPlural", .finish_item_amount, getitemname( .finish_item_id )) +"."; if ( .register_cost ) mes "But the entrance fee is "+ callfunc( "F_InsertComma", .register_cost ) +" zeny."; next; mes "[MvP Ladder Warper]"; mes "Pierdes el juego si no puedes terminar en "+ .timeout +" minutes, o si todo tu grupo es asesinado."; mes "Suerte!"; close; case 3: mes "[MvP Ladder Warper]"; if ( !$mvpladdderparty_time ) { mes "Nadie ha terminado este juego todavía.."; close; } mes "The best record is"; mes "[ "+( $mvpladdderparty_time / 60 )+" min "+( $mvpladdderparty_time % 60 )+" sec ]"; mes "By the party ^FF0000"+ $mvpladdderparty_name$ +"^000000."; .@size = getarraysize( $mvpladderparty_member$ ); for ( .@i = 0; .@i < .@size; .@i++ ) mes "^000000"+ ( .@i +1 ) +". ^0000FF"+ $mvpladderparty_member$[.@i]; if ( getgmlevel() < .gmlvlreset ) close; next; if ( select( "Close.", "Reset the record." ) == 1 ) close; if ( select( "Never mind.", "Realmente quiero restablecerlo." ) == 1 ) close; $mvpladdderparty_time = 0; $mvpladdderparty_name$ = ""; deletearray $mvpladderparty_member$[.@i]; mes "[MvP Ladder Warper]"; mes "Record reset successfully."; close; case 4: mes "[MvP Ladder Warper]"; mes "Regresa cuando seas mas fuerte.."; close; } if ( !getcharid(1) ) { mes "[MvP Ladder Warper]"; mes "Tienes que formar una party para jugar.."; close; } if ( is_party_leader() == false ) { mes "[MvP Ladder Warper]"; mes "Solo el líder de la party puede registrarse.."; close; } .@origin = getcharid(3); getpartymember getcharid(1), 1; getpartymember getcharid(1), 2; for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { attachrid $@partymemberaid[.@i]; if ( strcharinfo(3) == strnpcinfo(4) ) .@online++; } } attachrid .@origin; if ( $@partymembercount != .register_min ) { mes "[MvP Ladder Warper]"; mes "Tienes que formar una party con exactamente "+ .register_min +" miembros para jugar."; close; } else if ( .@online != .register_min ) { mes "[MvP Ladder Warper]"; mes "Tu party debe tener "+ .register_min +" miembros en línea en el mapa '"+ strnpcinfo(4) +"'."; close; } else if ( .register_cost && Zeny < .register_cost ) { mes "[MvP Ladder Warper]"; mes "No tienes suficiente zeny. Por favor, vuelve cuando lo tengas."; close; } else if ( .party_id ) { mes "[MvP Ladder Warper]"; mes "Lo siento, pero un grupo está jugando actualmente. Por favor espera hasta que terminen."; mes "Gracias."; close; } else if( #mvp_ladder_delay >= gettimetick(2) ){ mes "regresa en 1 hora."; mes "Time left: "+( #mvp_ladder_delay - gettimetick(2) )+" second."; close; } #mvp_ladder_delay = gettimetick(2) + 3600; Zeny -= .register_cost; announce "The party ["+ strcharinfo(1) +"] a entrado a MvP ladder.", bc_all; set .party_id, getcharid(1); set .@time_enter, gettimetick(2); for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { attachrid $@partymemberaid[.@i]; if ( strcharinfo(3) == strnpcinfo(4) ) { announce "Tienes "+ .timeout +" minutos para completar "+ .totalround +" rounds.", bc_self; .@name$[.@c] = strcharinfo(0); .@c++; } } } cleanmap .eventmap$; warpparty .eventmap$, 0,0, .party_id, strnpcinfo(4); donpcevent strnpcinfo(0)+"::OnMvpDead"; sleep .timeout * 60000; if ( .round == .totalround +1 ) { getpartymember .party_id, 1; getpartymember .party_id, 2; mapannounce .eventmap$, "Felicidades ... Pudiste derrotar a todos los MVPs!", bc_map; for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { attachrid $@partymemberaid[.@i]; if ( strcharinfo(3) == .eventmap$ ) getitem .finish_item_id, .finish_item_amount; } } set .@timeused, gettimetick(2) - .@time_enter; if ( .bonus_item_amount && .@timeused < .bonus_time * 60 ) { mapannounce .eventmap$, "Se le recompensa con un artículo de bonificación por completar la escalera dentro de "+ .bonus_time +" minutes.", bc_map; for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { attachrid $@partymemberaid[.@i]; if ( strcharinfo(3) == .eventmap$ ) getitem .bonus_item_id, .bonus_item_amount; } } } if ( !$mvpladdderparty_time || .@timeused < $mvpladdderparty_time ) { mapannounce .eventmap$, "And you broke the record! [ "+( .@timeused / 60 )+" min "+( .@timeused % 60 )+" sec ]", bc_map; set $mvpladdderparty_time, .@timeused; set $mvpladdderparty_name$, getpartyname( .party_id ); copyarray $mvpladderparty_member$, .@name$, .register_min; } else mapannounce .eventmap$, "Time used [ "+( .@timeused / 60 )+" min "+( .@timeused % 60 )+" sec ]", bc_map; sleep 10000; announce "The party ["+ getpartyname( .party_id ) +"] ha terminado el MvP ladder!", bc_all; } else announce "The party ["+ getpartyname( .party_id ) +"] ha fallado el MvP ladder.", bc_all; mapwarp .eventmap$, .map$, .x, .y; killmonsterall .eventmap$; .party_id = .round = 0; end; OnMvpDead: if (mobcount(.eventMap$,strnpcinfo(0)+"::OnMvpDead") > 0) { end; } getpartymember .party_id, 1; getpartymember .party_id, 2; .round++; if ( .round >= 2 && .round != .totalround +1 && .round_item_amount ) { for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { attachrid $@partymemberaid[.@i]; if ( strcharinfo(3) == .eventmap$ ) getitem .round_item_id, .round_item_amount; } } } if ( .round == .totalround +1 ) { awake strnpcinfo(0); end; } else if ( .round == .totalround ) mapannounce .eventmap$, "La ronda final comenzará en "+ .delay +" seconds...", bc_map; else mapannounce .eventmap$, "Ronda inicial "+ .round +" in "+ .delay +" seconds...", bc_map; sleep .delay * 1000; if ( .mvpid[.round] == 1646 ) // pick random Bio3 MVP .mvpid[.round] = rand(1646,1651); monster .eventmap$,0,0, "--ja--", .mvpid[.round], 5, strnpcinfo(0)+"::OnMvpDead"; mapannounce .eventmap$, getmonsterinfo( .mvpid[.round], MOB_NAME ) +" has spawned!", bc_map|bc_blue; end; OnPCLogoutEvent: if ( hp > 0 ) .@less_one = 1; else end; OnPCDieEvent: if ( strcharinfo(3) != .eventmap$ || !getcharid(1) ) end; if ( getcharid(1) != .party_id ) end; getpartymember .party_id, 1; getpartymember .party_id, 2; for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { attachrid $@partymemberaid[.@i]; if ( strcharinfo(3) == .eventmap$ && hp > 0 ) .@alive++; } } if ( .@less_one ) .@alive--; if ( !.@alive ) { mapannounce .eventmap$, "Party wiped!", bc_map; sleep 10000; awake strnpcinfo(0); } end; OnInit: // Configurations ----------------------------------------------------- // Time limit (in minutes) // When time runs out, all players inside the room will be kicked out. // Do NOT set this to zero! set .timeout, 60; // entrance fee (in Zeny) set .register_cost, 20000000; // exact amount of party members needed to start the game set .register_min, 2; // id of each mvp. you can add more setarray .mvpid[1], 1086,// Golden Thief Bug 64 1115,// Eddga 65 1150,// Moonlight Flower 67 1159,// Phreeoni 69 1112,// Drake 70 1583,// Tao Gunka 70 1492,// Incantation Samurai 71 1046,// Doppelgangger 72 1252,// Garm 73 1418,// Evil Snake Lord 73 1059,// Mistress 74 1190,// Orc Lord 74 1087,// Orc Hero 77 1251,// Knight of Windstorm 77 1038,// Osiris 78 1658,// Ygnizem 79 1272,// Dark Lord 80 1871,// Fallen Bishop 80 1039,// Baphomet 81 1147,// Maya 81 1785,// Atroce 82 1389,// Dracula 85 1630,// Bacsojin 85 1885,// Gorynych 85 1623,// RSX 0806 86 1511,// Amon Ra 88 1688,// Lady Tanee 89 1768,// Gloom Under Night 89 1719,// Datale 90 1734,// Kiel D-01 90 1157,// Pharaoh 93 1373,// Lord of Death 94 1312,// Turtle General 97 1779,// Ktullanux 98 1874,// Beelzebub 98 1646,// Bio3 placeholder 99 1708,// Thanatos 99 1751,// Valkyrie Randgris 99 rand(2235,2241);// Ifrit 99 // number of rounds (default: 39) set .totalround, getarraysize(.mvpid) -1; // item reward for completing each round set .round_item_id, 675; set .round_item_amount, 5; // item reward for completing the entire ladder set .finish_item_id, 12130; set .finish_item_amount, 1; // bonus reward if ladder completed within a certain time (in minutes) set .bonus_time, 25; // if completed within 45 minutes, this reward is given set .bonus_item_id, 12130; set .bonus_item_amount, 1; // time delay between rounds, in seconds (default: 3) set .delay, 5; // minimum GM level to reset the best record set .gmlvlreset, 99; // event map set .eventmap$, "guild_vs2-2"; // mapflag configuration setarray .@mapflag, mf_nowarp, mf_nowarpto, mf_nosave, mf_nomemo, mf_noteleport, // mf_nopenalty, // disable exp loss mf_noreturn, // mf_nobranch, // mf_nomobloot, // disable monster drop loots, // mf_nomvploot, // 2 of these mf_partylock; // Config Ends -------------------------------------------------------------- mapannounce .eventmap$, "An administrator has refreshed the server. Please re-register. We apologize for the inconvenience.", bc_map; getmapxy .map$, .x, .y, BL_NPC; mapwarp .eventmap$, .map$, .x, .y; killmonsterall .eventmap$; .@size = getarraysize( .@mapflag ); for ( .@i = 0; .@i < .@size; .@i++ ) setmapflag .eventmap$, .@mapflag[.@i]; end; }
  8. I'm not sure but maybe I need to give permissions like this https://prnt.sc/Ki08XPBqdDgF
  9. solution: else if( #mvp_ladder_delay2 >= gettimetick(2) ){ mes "regresa en 12 horas."; mes "Time left: "+( #mvp_ladder_delay2 - gettimetick(2) )+" second."; close; } #mvp_ladder_delay2 = gettimetick(2) + 43200; delitem 675,200; announce "The party ["+ strcharinfo(1) +"] a entrado a MvP ladder.", bc_all; set .party_id, getcharid(1); set .@time_enter, gettimetick(2); for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { attachrid $@partymemberaid[.@i]; if ( strcharinfo(3) == strnpcinfo(4) ) { announce "Tienes "+ .timeout +" minutos para completar "+ .totalround +" rounds.", bc_self; .@name$[.@c] = strcharinfo(0); .@c++; } } }
  10. Hello, I have a problem. I am using two equal events, each one with its map, the mvp ladder, both have an interval time in which something like a delay can be used again, but I have a problem, the two events work independently, but they don't. I can make the delay different for both I'll call these mvp ladder1 and mvp ladder2 so I can be more clear with the error I'm getting mvp ladder1 has an interval time each time I can go back to 1 hour and mvp ladder2 It has a time of 12 hours and normally if I use mvp ladder1 I can re-enter the event after 1 hour has elapsed but that time is also counted in mvpl adder2 and if I do mvp ladder2 and finish it after this it tells me I have to wait 12 hours as it should be but now if I want to go back to mvp ladder 1 it tells me that I also have to wait 12 hours I upload photos and the scripts to try to be more clear MvP ladder1 https://prnt.sc/Rpf1jcUBRuPk else if( #mvp_ladder_delay >= gettimetick(2) ){ mes "regresa en 1 hora."; mes "Tiempo restante :^00FF00 "+( #mvp_ladder_delay - gettimetick(2) )+"^000000 segundos."; close; } #mvp_ladder_delay = gettimetick(2) + 3600; Zeny -= .register_cost; announce "The party ["+ strcharinfo(1) +"] a entrado a MvP ladder.", bc_all; set .party_id, getcharid(1); set .@time_enter, gettimetick(2); for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { attachrid $@partymemberaid[.@i]; if ( strcharinfo(3) == strnpcinfo(4) ) { announce "Tienes "+ .timeout +" minutos para completar "+ .totalround +" rounds.", bc_self; .@name$[.@c] = strcharinfo(0); .@c++; } } } mvp ladder2 https://prnt.sc/B7IL4B6BWPak else if( #mvp_ladder_delay >= gettimetick(2) ){ mes "regresa en 12 horas."; mes "Time left: "+( #mvp_ladder_delay - gettimetick(2) )+" second."; close; } #mvp_ladder_delay = gettimetick(2) + 43200; delitem 675,200; announce "The party ["+ strcharinfo(1) +"] a entrado a MvP ladder.", bc_all; set .party_id, getcharid(1); set .@time_enter, gettimetick(2); for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { attachrid $@partymemberaid[.@i]; if ( strcharinfo(3) == strnpcinfo(4) ) { announce "Tienes "+ .timeout +" minutos para completar "+ .totalround +" rounds.", bc_self; .@name$[.@c] = strcharinfo(0); .@c++; } } }
  11. how should i add it? Could you give me an example of how it should look inside the script?
  12. 108 / 5,000 Resultados de traducción Traducción star_border I must add it there or at the level that I need it an example as I tried to do it before and it didn't work either 4@tower,29,365,2 script Immortal Furnace#3 844,{ end; OnInstanceInit: callfunc "F_Tower_Monster", 76, instance_mapname("4@tower"), instance_npcname("Immortal Furnace#3")+"::OnMyMobDead"; end; OnMyMobDead: set .@map$, instance_mapname("4@tower"); set .@mob_dead_num,mobcount(.@map$,instance_npcname("Immortal Furnace#3")+"::OnMyMobDead"); if ( killedrid == 31000 ) { if ( getcharid(1) ) { getpartymember getcharid(1), 1; getpartymember getcharid(1), 2; for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { // what happens if someone in the party member is offline =/ .@partymemberaid[.@c] = $@partymemberaid[.@i]; .@c++; } } if (rand(100) < 10) getitem F_Rand(45006,45007,45008,45009,45010,45011), 1, .@partymemberaid[ rand( .@c ) ]; announce "Party ["+ strcharinfo(1) +"] ha matado "+ getmonsterinfo( killedrid, MOB_NAME ) +" en "+ strcharinfo(3), 0; } else { if (rand(100) < 10) getitem F_Rand(45006,45007,45008,45009,45010,45011), 1; announce "El jugador ["+ strcharinfo(0) +"] ha matado "+ getmonsterinfo( killedrid, MOB_NAME ) +" en "+ strcharinfo(3), 0; } } if (.@mob_dead_num < 1) { initnpctimer; //SetItemPartyInMap in_102floor 76 } else mapannounce .@map$,"Monstruos restantes en el nivel 76 - " + .@mob_dead_num,bc_map,"0x00ff99"; end; OnTimer5000: mapannounce instance_mapname("4@tower"),"Todos los monstruos del nivel 76 han sido derrotados.",bc_map,"0xffff00"; donpcevent instance_npcname("76FGate102tower")+"::OnEnable"; stopnpctimer; end; }
  13. could you give me an example?
  14. Hi, Rathena, I have a question. I want to make an mvp of an item drop randomly when you kill it in endless tower on the 80th floor. I'm trying to add a script but I don't know how to make it work. This is the script I want to add. endless: case 80: areamonster .@map$,352,351,362,387,"Blue Ifrit Shadow",31000,1,.@label$; break; my script: - script ifrit -1,{ OnNPCKillEvent: if ( killedrid != 31000 ) end; if ( getcharid(1) ) { getpartymember getcharid(1), 1; getpartymember getcharid(1), 2; for ( .@i = 0; .@i < $@partymembercount; .@i++ ) { if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) { // what happens if someone in the party member is offline =/ .@partymemberaid[.@c] = $@partymemberaid[.@i]; .@c++; } } if (rand(100) < 10) getitem F_Rand(45006,45007,45008,45009,45010,45011), 1, .@partymemberaid[ rand( .@c ) ]; announce "Party ["+ strcharinfo(1) +"] ha matado "+ getmonsterinfo( killedrid, MOB_NAME ) +" en "+ strcharinfo(3), 0; } else { if (rand(100) < 10) getitem F_Rand(45006,45007,45008,45009,45010,45011), 1; announce "El jugador ["+ strcharinfo(0) +"] ha matado "+ getmonsterinfo( killedrid, MOB_NAME ) +" en "+ strcharinfo(3), 0; } end; }
  15. Hi, Rathena, I need your help. I'm trying to limit a card that is only 2 can be equipped, and when more than 2 are equipped, the card bonus is nullified if you equip more than 2. Script: | if(isequippedcnt(4457) == 2) bonus2 bAddRace,RC_DemiHuman,30; bonus2 bAddRace,RC_Player_Human,30; if(isequippedcnt(4457) > 2) message strcharinfo(0),"Solo puedes equipar 2x "+getitemname(4457)+"! Tarjeta (s) adicional (es) ha sido deshabilitada.";
  16. https://github.com/rathena/rathena/pull/6562/commits/4e9e59712f216c73c4b5f4c4cdfac85291f5ce2a
  17. any solution? https://prnt.sc/bFQnbUW9KsYy
  18. case RG_BACKSTAP: { if (!check_distance_bl(src, bl, 0)) { #ifdef RENEWAL uint8 dir = map_calc_dir(src, bl->x, bl->y); short x, y; if (dir > 0 && dir < 4) x = -1; else if (dir > 4) x = 1; else x = 0; if (dir > 2 && dir < 6) y = -1; else if (dir == 7 || dir < 2) y = 1; else y = 0; if (battle_check_target(src, bl, BCT_ENEMY) > 0 && unit_movepos(src, bl->x + x, bl->y + y, 2, true)) { // Display movement + animation. #else uint8 dir = map_calc_dir(src, bl->x, bl->y), t_dir = unit_getdir(bl); if (bl->type == BL_SKILL) { // Changed Here (Removed Direction Check) #endif status_change_end(src, SC_HIDING, INVALID_TIMER); dir = dir < 4 ? dir+4 : dir-4; // change direction [Celest] unit_setdir(bl,dir); #ifdef RENEWAL clif_blown(src); #endif skill_attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag); } else if (sd) clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); } } break; This is the one that changed but the skill stopped working so I returned it to how it is, that is, like this case RG_BACKSTAP: { if (!check_distance_bl(src, bl, 0)) { #ifdef RENEWAL uint8 dir = map_calc_dir(src, bl->x, bl->y); short x, y; if (dir > 0 && dir < 4) x = -1; else if (dir > 4) x = 1; else x = 0; if (dir > 2 && dir < 6) y = -1; else if (dir == 7 || dir < 2) y = 1; else y = 0; if (battle_check_target(src, bl, BCT_ENEMY) > 0 && unit_movepos(src, bl->x + x, bl->y + y, 2, true)) { // Display movement + animation. #else uint8 dir = map_calc_dir(src, bl->x, bl->y), t_dir = unit_getdir(bl); if (!map_check_dir(dir, t_dir) || bl->type == BL_SKILL) { #endif status_change_end(src, SC_HIDING, INVALID_TIMER); dir = dir < 4 ? dir+4 : dir-4; // change direction [Celest] unit_setdir(bl,dir); #ifdef RENEWAL clif_blown(src); #endif skill_attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag); } else if (sd) clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); } } break; and I have the other one like this but that one did not change anything, it was the first one to change case RG_BACKSTAP: { if (check_distance_bl(src, target, 0)) return USESKILL_FAIL_MAX; } break;
  19. Hello, my server is pre-renewal and this is the only line that I can find the change for the second one that you sent me? case RG_BACKSTAP: { if (!check_distance_bl(src, bl, 0)) { #ifdef RENEWAL uint8 dir = map_calc_dir(src, bl->x, bl->y); short x, y; if (dir > 0 && dir < 4) x = -1; else if (dir > 4) x = 1; else x = 0; if (dir > 2 && dir < 6) y = -1; else if (dir == 7 || dir < 2) y = 1; else y = 0; if (battle_check_target(src, bl, BCT_ENEMY) > 0 && unit_movepos(src, bl->x + x, bl->y + y, 2, true)) { // Display movement + animation. #else uint8 dir = map_calc_dir(src, bl->x, bl->y), t_dir = unit_getdir(bl); if (!map_check_dir(dir, t_dir) || bl->type == BL_SKILL) { #endif status_change_end(src, SC_HIDING, INVALID_TIMER); dir = dir < 4 ? dir+4 : dir-4; // change direction [Celest] unit_setdir(bl,dir); #ifdef RENEWAL clif_blown(src); #endif skill_attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag); } else if (sd) clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); } } break;
  20. change: // Flee stat = status->flee; stat += level + status->agi; status->flee = cap_value(stat, 1, SHRT_MAX); to: // Flee stat = status->flee; stat += level/2 + status->agi; status->flee = cap_value(stat, 1, SHRT_MAX); Hit change: // Hit stat = status->hit; stat += level + status->dex; status->hit = cap_value(stat, 1, SHRT_MAX); To: // Hit stat = status->hit; stat += level/2 + status->dex; status->hit = cap_value(stat, 1, SHRT_MAX);
  21. resolved as follows lower it by 50%. sorry I'm still learning // Flee stat = status->flee; stat += level/2 + status->agi/2; status->flee = cap_value(stat, 1, SHRT_MAX);
  22. Hello, thank you very much, it worked perfectly. I have one more question, how do I reduce the bonus of the flee and the hit that is added from the base level? Let me explain my server is a max blvl 500 server and just for that reason it already gives me 500 hit and 500 flee how do I change this in half? https://prnt.sc/jNOo350bVXFD
  23. I think if it should be behind the target or in the case of my emulator if it should be behind I don't know how to edit it so that it works from any direction Relax-Ro 2023-04-28 01-52-37.mp4
×
×
  • Create New...