-
Posts
170 -
Joined
-
Last visited
-
Days Won
7
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by _Terra
-
Fixed. itemInfo.lua
-
Por algum motivo quando um edita o arquivo do iteminfo novo, alguns itens corrompe. Procura o erro com CTRL + H e procura o num que diz no erro "138717"
-
Default Job Master disable regular 3rd class
_Terra replied to KidoSang's question in Scripting Support
Find: // Checks if the player can change to third class. // Note: This does not include the level checks. function Can_Change_Third { // To change to third class you either need to be: // * Second Class // * Transcendent Second Class // * Baby Second Class if( !.ThirdClass ) return false; // Third job change disabled if( !(eaclass()&EAJL_2) ) return false; // Not second Class if( eaclass()&EAJL_THIRD ) return false; // Already Third Class if( roclass(eaclass()|EAJL_THIRD) < 0 ) return false; // Job has no third Class if( (eaclass()&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE ) return false; // Exp. Super Novice equals 3rd Cls, but has it's own case if( Is_Baby() && (!.BabyClass || !.BabyThird) ) return false; // No Baby (Third) change allowed return true; } Replace if( !(eaclass()&EAJL_2) ) to if( !(eaclass()&EAJL_UPPER) ) // Checks if the player can change to third class. // Note: This does not include the level checks. function Can_Change_Third { // To change to third class you either need to be: // * Second Class // * Transcendent Second Class // * Baby Second Class if( !.ThirdClass ) return false; // Third job change disabled if( !(eaclass()&EAJL_UPPER) ) return false; // Not second Class if( eaclass()&EAJL_THIRD ) return false; // Already Third Class if( roclass(eaclass()|EAJL_THIRD) < 0 ) return false; // Job has no third Class if( (eaclass()&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE ) return false; // Exp. Super Novice equals 3rd Cls, but has it's own case if( Is_Baby() && (!.BabyClass || !.BabyThird) ) return false; // No Baby (Third) change allowed return true; } -
- script refresh_pvp -1,{ OnInit: bindatcmd "refresh",strnpcinfo(0) +"::OnRefresh"; end; OnRefresh: if( getmapflag( strcharinfo(3),mf_pvp ) ) { message strcharinfo(0),"@refresh is not allowed in pvp map."; end; } else { message strcharinfo(0),"You must wait 4 seconds for re-use this command."; if (@refdelay) end; set @refdelay, 1; atcommand "@refresh"; sleep2 4000; // 4sec Delay set @refdelay, 0; end; } } Tested and works fine
-
You need put [true, true] (@command, #command) ex: warp: [true, true]
-
Help! Disguise to Doram item accessory
_Terra replied to pueblodefairy's topic in Sección de Scripts
Te hice un ejemplo para el Accessory custom que quieres hacer: 2627,Belt,Belt,4,20000,,1200,,0,,4,0xFFFFFFFF,63,2,136,,25,0,0,{},{ changebase 4218; },{ changebase Class; } -
Hi, i have a problem that I have not been able to solve. I want make Hatred Level 1 only for players and all classes, that only receive 50% more damage. Hatred Level 2: only for monsters, that only receive 200% more damage. Hatred Level 3: only for emperium, that only receive 500% more damage. Thank you for your time o/
-
Hello, you can do in src/map/pc.cpp (Don't forget recompile) Search: if(sd->bl.prev == NULL || pc_isdead(sd)) return; and add below: if(sd->status.base_level >= 99) base_exp = 0; Tested and works fine. Original Topic.
-
You can do this in src/map/status.cpp and search: // Strip skills, need to divest something or it fails. case SC_STRIPWEAPON: if (sd && !(flag&SCSTART_LOADED)) { // Apply sc anyway if loading saved sc_data short i; opt_flag = 0; // Reuse to check success condition. if(sd->bonus.unstripable_equip&EQP_WEAPON) return 0; i = sd->equip_index[EQI_HAND_L]; if (i>=0 && sd->inventory_data[i] && sd->inventory_data[i]->type == IT_WEAPON) { opt_flag|=1; pc_unequipitem(sd,i,3); // Left-hand weapon } i = sd->equip_index[EQI_HAND_R]; if (i>=0 && sd->inventory_data[i] && sd->inventory_data[i]->type == IT_WEAPON) { opt_flag|=2; pc_unequipitem(sd,i,3); } if (!opt_flag) return 0; } if (tick == 1) return 1; // Minimal duration: Only strip without causing the SC break; case SC_STRIPSHIELD: if( val2 == 1 ) val2 = 0; // GX effect. Do not take shield off.. else if (sd && !(flag&SCSTART_LOADED)) { short i; if(sd->bonus.unstripable_equip&EQP_SHIELD) return 0; i = sd->equip_index[EQI_HAND_L]; if ( i < 0 || !sd->inventory_data[i] || sd->inventory_data[i]->type != IT_ARMOR ) return 0; pc_unequipitem(sd,i,3); } if (tick == 1) return 1; // Minimal duration: Only strip without causing the SC break; case SC_STRIPARMOR: if (sd && !(flag&SCSTART_LOADED)) { short i; if(sd->bonus.unstripable_equip&EQP_ARMOR) return 0; i = sd->equip_index[EQI_ARMOR]; if ( i < 0 || !sd->inventory_data[i] ) return 0; pc_unequipitem(sd,i,3); } if (tick == 1) return 1; // Minimal duration: Only strip without causing the SC break; case SC_STRIPHELM: if (sd && !(flag&SCSTART_LOADED)) { short i; if(sd->bonus.unstripable_equip&EQP_HELM) return 0; i = sd->equip_index[EQI_HEAD_TOP]; if ( i < 0 || !sd->inventory_data[i] ) return 0; pc_unequipitem(sd,i,3); } if (tick == 1) return 1; // Minimal duration: Only strip without causing the SC break; And replace with this: // Strip skills, need to divest something or it fails. case SC_STRIPWEAPON: if (sd && !(flag&SCSTART_LOADED)) { // Apply sc anyway if loading saved sc_data short i; opt_flag = 0; // Reuse to check success condition. if(sd->bonus.unstripable_equip&EQP_WEAPON) return 0; i = sd->equip_index[EQI_HAND_L]; if (i>=0 && sd->inventory_data[i] && sd->inventory_data[i]->type == IT_WEAPON) { pc_unequipitem(sd,i,3); // Left-hand weapon } i = sd->equip_index[EQI_HAND_R]; if (i>=0 && sd->inventory_data[i] && sd->inventory_data[i]->type == IT_WEAPON) { pc_unequipitem(sd,i,3); } } if (tick == 1) return 1; // Minimal duration: Only strip without causing the SC break; case SC_STRIPSHIELD: if (sd && !(flag&SCSTART_LOADED)) { short i; opt_flag = 0; // Reuse to check success condition. if(sd->bonus.unstripable_equip&EQP_SHIELD) return 0; i = sd->equip_index[EQI_HAND_L]; if (i>=0 && sd->inventory_data[i] && sd->inventory_data[i]->type == IT_ARMOR) { pc_unequipitem(sd,i,3); } } if (tick == 1) return 1; // Minimal duration: Only strip without causing the SC break; case SC_STRIPARMOR: if (sd && !(flag&SCSTART_LOADED)) { short i; opt_flag = 0; // Reuse to check success condition. if(sd->bonus.unstripable_equip&EQP_ARMOR) return 0; i = sd->equip_index[EQI_ARMOR]; if (i>=0 && sd->inventory_data[i] && sd->inventory_data[i]->type == IT_ARMOR) { pc_unequipitem(sd,i,3); } } if (tick == 1) return 1; // Minimal duration: Only strip without causing the SC break; case SC_STRIPHELM: if (sd && !(flag&SCSTART_LOADED)) { short i; opt_flag = 0; // Reuse to check success condition. if(sd->bonus.unstripable_equip&EQP_HELM) return 0; i = sd->equip_index[EQI_HEAD_TOP]; if (i>=0 && sd->inventory_data[i] && sd->inventory_data[i]->type == IT_ARMOR) { pc_unequipitem(sd,i,3); } } if (tick == 1) return 1; // Minimal duration: Only strip without causing the SC break; Tested and works fine ?
-
Problema com a habilidade destino das carta
_Terra replied to Israel's topic in Suporte a Configurações
Olá, você pode retirar essa condição em src/map/skill.cpp e procura a linha: status_change_clear_buffs(target, SCCB_BUFFS | SCCB_CHEM_PROTECT); e remove "SCCB_CHEM_PROTECT" status_change_clear_buffs(target, SCCB_BUFFS); Não se esqueça de recompilar seu server. -
Search src/config/renewal.hpp and comment with // (don't forget recompile). //#define RENEWAL //#define RENEWAL_CAST //#define RENEWAL_DROP //#define RENEWAL_EXP //#define RENEWAL_LVDMG //#define RENEWAL_ASPD //#define RENEWAL_STAT
-
You can do manually looking in: db/(pre-re or re)/mob_db.txt db/(pre-re or re)/item_bluebox.txt db/(pre-re or re)/item_giftbox.txt db/(pre-re or re)/item_violetbox.txt db/(pre-re or re)/item_db.txt npc/anything with shops
-
monster belzebu id: 1874 is knocking down my game
_Terra replied to ADM Ytallo's question in General Support
Test in another map and write @disguise 1874 if you keep giving an error, it's because you do not have the sprite of Beelzebub in your kRO. Probably, they had already answered you above. Maybe it's that you do not have updated your kRO. I recommend you download this: Or download RSU updater: http://nn.ai4rei.net/dev/rsu/ -
How can I enable the Doram in Pre-renewal character creation?
_Terra replied to Rizz's question in Client-side Support
src/char/char.cpp and search: !(start_job == JOB_SUMMONER && (charserv_config.allowed_job_flag&2))) Change (charserv_config.allowed_job_flag&2))) to (charserv_config.allowed_job_flag&1))) !(start_job == JOB_SUMMONER && (charserv_config.allowed_job_flag&1))) Don't forget recompile your server. -
How to Enabled Fire Pillar in Land Protection
_Terra replied to n3ySkie's question in Source Support
db/import/skill_db.txt and paste: 80,9,8,2,3,0x20,1:1:1:1:1:2:2:2:2:2:2,10,3:4:5:6:7:8:9:10:11:12,yes,0,0x2000,5,magic,0,0x1, WZ_FIREPILLAR,Fire Pillar src/map/skill.cpp Find this line: case WZ_FIREPILLAR: if( map_getcell(src->m, x, y, CELL_CHKLANDPROTECTOR) ) return NULL; if((flag&1)!=0) limit=1000; val1=skill_lv+2; break; And comment below case WZ_FIREPILLAR: //if( map_getcell(src->m, x, y, CELL_CHKLANDPROTECTOR) ) //return NULL; if((flag&1)!=0) limit=1000; val1=skill_lv+2; break; Search this: //It deletes everything except traps and barriers if ((!(skill_get_inf2(unit->group->skill_id)&(INF2_TRAP)) && !(skill_get_inf3(unit->group->skill_id)&(INF3_NOLP))) || unit->group->skill_id == WZ_FIREPILLAR || unit->group->skill_id == GN_HELLS_PLANT) { if (skill_get_unit_flag(unit->group->skill_id)&UF_RANGEDSINGLEUNIT) { if (unit->val2&UF_RANGEDSINGLEUNIT) skill_delunitgroup(unit->group); } else skill_delunit(unit); return 1; } break; and remove: unit->group->skill_id == WZ_FIREPILLAR || //It deletes everything except traps and barriers if ((!(skill_get_inf2(unit->group->skill_id)&(INF2_TRAP)) && !(skill_get_inf3(unit->group->skill_id)&(INF3_NOLP))) || unit->group->skill_id == GN_HELLS_PLANT) { if (skill_get_unit_flag(unit->group->skill_id)&UF_RANGEDSINGLEUNIT) { if (unit->val2&UF_RANGEDSINGLEUNIT) skill_delunitgroup(unit->group); } else skill_delunit(unit); return 1; } break; Then recompile your server, i've tested by myself. Hope it helps. -
I tested custom BGM and seems works fine. Maybe you put the song name with the extension, playBGMall "bio5.mp3"; and should be playBGMall "bio5";
-
You had an extra TAB in prontera,147,170,4 and you miss , in "Poison Bottle to Item Ticket" C_4; and should be "Poison Bottle to item Ticket",C_4; C_OW you miss put : Btw, i recommend you use switch(select in menu tab, is more easy to use and less tedious. I made an example script to help you: prontera,150,171,4 script Item Trader 622,{ disable_items; disable_command; mes "[^711872Trader^000000]"; mes "Hello hello Hello!"; switch(select("Item Ticket to Yggdrasil Berry:Item Ticket to Poison Bottle:Yggdrasil Berry to Item Ticket:Poison Bottle to Item Ticket:- Close.")) { case 1: if (checkweight(607,100) == 0 ) goto C_OW; if(countitem(7284)<1) goto C_NI; delitem 7284,1; getitem 607,100; mes "[^711872Trader^000000]"; mes "[There you go!]"; close; case 2: if (checkweight(678,30) == 0 ) goto L_OW; if(countitem(7284)<1) goto C_NI; delitem 7284,1; getitem 678,300; next; mes "[^711872Trader^000000]"; mes "[There you go!]"; close; case 3: next; if(countitem(607)<100) goto C_NI; delitem 607,100; getitem 7284,1; mes "[^711872Trader^000000]"; mes "[There you go!]"; close; case 4: next; if(countitem(678)<30) goto C_NI; delitem 678,30; getitem 7284,1; mes "[^711872Trader^000000]"; mes "[There you go!]"; close; case 5: next; mes "[^711872Trader^000000]"; mes "See ya!"; close; C_OW: next; mes "[^711872Trader^000000]"; mes "Sorry you're overweight"; close; C_NI: next; mes "[^711872Trader^000000]"; mes "[You don't have the items]"; close; } } I recommend you use disable_items; and disable_command; to prevent exploits. hope it helped you. ?
-
Hope this helps:
-
https://github.com/rathena/rathena/pull/3548
-
reload script problem with hunting mission and quest shop
_Terra replied to crossworld's question in Scripting Support
You tried with @reloadscript? -
You can put the condition in src/map/skill.cpp (See Magenta Skill from Ranger). For unit skills you can browse in db/skill_unit_db.txt.
-
You can edit in skill_db.txt Search: 485,-2,6,1,-1,0x0,0,10,1,no,0,0,0,weapon,0,0x0, WS_CARTTERMINATION,Cart Termination And add: 485,-2,6,1,-1,0x0,0,10,1,no,0,0,0,weapon,0,0x200000, WS_CARTTERMINATION,Cart Termination
-
prontera,112,167,5 script Removedora de Cartas 856,{ Main: mes "[^FF0000Yuna^000000]"; mes "Hola! ^FF0000 "+strcharinfo(0)+"^000000 que te trae por aca?. Quieres remover alguna carta para tu nueva build?"; mes "No te preocupes que yo nunca fallo!"; mes "Dime que necesitas!"; next; switch(select("Quiero remover una Carta.:No, gracias.")) { case 1: mes "[^FF0000Yuna^000000]"; mes "Veamos examinare tus equipos... que lugar deseas retirar?"; next; setarray .@position$[1], "Casco","Armadura","Mano Izquierda","Mano Derecha","Manta","Zapatos","Acc. Izquierdo","Acc. Derecho","Aura","Alas"; set .@menu$,""; for( set .@i,1; .@i <= 10; set .@i,.@i+1 ) { if( getequipisequiped(.@i) ) set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[^FF0000" + getequipname(.@i) + "^000000]"; set .@menu$, .@menu$ + ":"; } set .@part,select(.@menu$); if(!getequipisequiped(.@part)) { mes "[^FF0000Yuna^000000]"; mes "Young one... Your not wearing anything there that I can remove cards from."; close; } if(getequipcardcnt(.@part) == 0) { mes "[^FF0000Natsuki^000000]"; mes "Me has venido a jugar una broma verdad? , tu equipo actual no trae ninguna carta!!"; close; } set .@cardcount,getequipcardcnt(.@part); if (!checkweight(1202,(.@cardcount+1))) { mes "^3355FFAguarda un momento..."; mes "Yo no puedo darte mis servicios"; mes "por la simple razon"; mes "de que has llegado a un peso 50% o 90% que no es considerable"; mes "Si tienes items que no tienen valor mejor vendelos en algun npc mercader cercano"; mes "y vuelve a hablarme denuevo."; close; } mes "[^FF0000Yuna^000000]"; mes "Este item contiene " + .@cardcount + " cartas dentro de este equipo. Deseas retirarlas?"; next; if(select("De acuerdo!:No, mejor olvidalo") == 2) { mes "[^FF0000Natsuki^000000]"; mes "Muy bien, si no quieres retirar alguna carta no hay problema, ya sabes en donde estoy!"; close; } next; successremovecards .@part; mes "[^FF0000Yuna^000000]"; mes "Listo! he podido remover sus cartas satisfactoriamente!."; next; goto Main; case 2: mes "[^FF0000Yuna^000000]"; mes "Muy bien, si no quieres retirar alguna carta no hay problema, ya sabes en donde estoy."; close; } }
-
HP bar visibility on non-party member: client 2018-06-20
_Terra replied to Slyx's question in Client-side Support
In conf/groups.conf you can modify who can see hp bar (?) EX: id: 10 name: "Law Enforcement" inherit: ( "Support" ) level: 2 commands: { hide: true follow: true kick: true disguise: true fakename: true option: true speed: true warp: true kill: true recall: true ban: true block: true jail: true jailfor: true mute: true storagelist: true cartlist: true itemlist: true stats: true } log_commands: true permissions: { join_chat: true kick_chat: true hide_session: true who_display_aid: true hack_info: true any_warp: true view_hpmeter: true <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< } }, -
It gives you an error because there is no weapon sprite for the Christmas class. Is same when you are Swordman and you have equipped Knife and you use Monk Suit, Monk's do not use knifes XD. Try this: 30502,Poção_do_Ilusionista_Noel,Poção do Ilusionista Noel,0,,,10,,,,,0xFFFFFFFF,63,2,,,,,,{},{ sc_start4 SC_XMAS,60000,0,0,0,1; },{ sc_end SC_XMAS; }