Louis T Steinhil Posted May 3, 2023 Group: Members Topic Count: 21 Topics Per Day: 0.01 Content Count: 90 Reputation: 12 Joined: 06/22/13 Last Seen: 47 minutes ago Share Posted May 3, 2023 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: Spoiler .@bonus_hp_rate += 0; // The zero / "0" is calculated in % .@bonus_dmg_rate += 0; .@bonus_damagetaken += 0; .@bonus_hit += 0; .@bonus_str += 0; .@bonus_agi += 0; .@bonus_vit += 0; .@bonus_int += 0; .@bonus_dex += 0; .@bonus_luk += 0; This part is for the difficulty settings and adding stats to the monsters: Spoiler // Difficulty Function //============================================================ function script F_Tower_Monster_Summon { .@map$ = getarg(0, ""); .@x1 = getarg(1, 0); .@y1 = getarg(2, 0); .@x2 = getarg(3, 0); .@y2 = getarg(4, 0); .@mob_name$ = getarg(5, 0); .@mob_id = getarg(6, 0); .@amount = getarg(7, 0); .@label$ = getarg(8, ""); switch('level_mode){ case 1://Easy .@bonus_hp_rate += 0; .@bonus_dmg_rate += 0; .@bonus_damagetaken += 0; .@bonus_hit += 0; .@bonus_str += 0; .@bonus_agi += 0; .@bonus_vit += 0; .@bonus_int += 0; .@bonus_dex += 0; .@bonus_luk += 0; break; case 2://Veteran .@bonus_hp_rate += 100; .@bonus_dmg_rate += 100; .@bonus_damagetaken += -10; .@bonus_hit += 100; .@bonus_str += 100; .@bonus_agi += 100; .@bonus_vit += 100; .@bonus_int += 100; .@bonus_dex += 100; .@bonus_luk += 100; break; case 3://Nightmare .@bonus_hp_rate += 250; .@bonus_dmg_rate += 250; .@bonus_damagetaken += -20; .@bonus_hit += 250; .@bonus_str += 250; .@bonus_agi += 250; .@bonus_vit += 250; .@bonus_int += 250; .@bonus_dex += 250; .@bonus_luk += 250; break; case 4://Hell .@bonus_hp_rate += 500; .@bonus_dmg_rate += 500; .@bonus_damagetaken += -30; .@bonus_hit += 500; .@bonus_str += 500; .@bonus_agi += 500; .@bonus_vit += 500; .@bonus_int += 500; .@bonus_dex += 500; .@bonus_luk += 500; break; case 5://Torment .@bonus_hp_rate += 1000; .@bonus_dmg_rate += 1000; .@bonus_damagetaken += -40; .@bonus_hit += 1000; .@bonus_str += 1000; .@bonus_agi += 1000; .@bonus_vit += 1000; .@bonus_int += 1000; .@bonus_dex += 1000; .@bonus_luk += 1000; break; } deletearray $@mobid,getarraysize($@mobid); areamonster .@map$, .@x1, .@y1, .@x2, .@y2, .@mob_name$, .@mob_id, .@amount, .@label$; copyarray .@GID, $@mobid, getarraysize($@mobid); if(!.@bonus_hp_rate&& !.@bonus_dmg_rate&& !.@bonus_damagetaken&& !.@bonus_hit&& !.@bonus_str&& !.@bonus_agi&& !.@bonus_vit&& !.@bonus_int&& !.@bonus_dex&& !.@bonus_luk) return; getunitdata .@GID, .@ST; if(.@bonus_hp_rate){ .@HP = .@ST[UMOB_MAXHP] + ((.@ST[UMOB_MAXHP] * .@bonus_hp_rate ) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_MAXHP, .@HP); setunitdata(.@GID[.@i], UMOB_HP, .@HP); } } if(.@bonus_dmg_rate){ .@ATKMIN = .@ST[UMOB_ATKMIN] + ((.@ST[UMOB_ATKMIN] * .@bonus_dmg_rate) /100); .@ATKMAX = .@ST[UMOB_ATKMAX] + ((.@ST[UMOB_ATKMAX] * .@bonus_dmg_rate) /100); .@MATKMIN = .@ST[UMOB_MATKMIN] + ((.@ST[UMOB_MATKMIN] * .@bonus_dmg_rate) /100); .@MATKMAX = .@ST[UMOB_MATKMAX] + ((.@ST[UMOB_MATKMAX] * .@bonus_dmg_rate) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_ATKMIN, .@ATKMIN); setunitdata(.@GID[.@i], UMOB_ATKMAX, .@ATKMAX); setunitdata(.@GID[.@i], UMOB_MATKMIN, .@MATKMIN); setunitdata(.@GID[.@i], UMOB_MATKMAX, .@MATKMAX); } } if(.@bonus_damagetaken){ .@DAMAGETAKEN = .@ST[UMOB_DAMAGETAKEN] + ((.@ST[UMOB_DAMAGETAKEN] * .@bonus_damagetaken) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_DAMAGETAKEN, .@DAMAGETAKEN); } } if(.@bonus_hit){ .@HIT = .@ST[UMOB_HIT] + ((.@ST[UMOB_HIT] * .@bonus_hit) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_HIT, .@HIT); } } if(.@bonus_str){ .@STR = .@ST[UMOB_STR] + ((.@ST[UMOB_STR] * .@bonus_str) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_STR, .@STR); } } if(.@bonus_agi){ .@AGI = .@ST[UMOB_AGI] + ((.@ST[UMOB_AGI] * .@bonus_agi) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_AGI, .@AGI); } } if(.@bonus_vit){ .@VIT = .@ST[UMOB_VIT] + ((.@ST[UMOB_VIT] * .@bonus_vit) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_VIT, .@VIT); } } if(.@bonus_int){ .@INT = .@ST[UMOB_INT] + ((.@ST[UMOB_INT] * .@bonus_int) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_INT, .@INT); } } if(.@bonus_dex){ .@DEX = .@ST[UMOB_DEX] + ((.@ST[UMOB_DEX]) * .@bonus_dex) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_DEX, .@DEX); } } if(.@bonus_luk){ .@LUK = .@ST[UMOB_LUK] + ((.@ST[UMOB_LUK] * .@bonus_luk) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_LUK, .@LUK); } } return; } This part is for the rewards: It gives #INSTANCEPOINTS and EXP depending on the difficulty you're on. Spoiler // Reward Function //============================================================ function script F_Tower_Reward { setarray .@rewards[1],1,3,6,12,24; setarray .@modes$[1],"Easy Mode","Veteran Mode","Nightmare Mode","Hell Mode","Torment Mode"; setarray .@bonusExp[1],653047446,672905476,843378037,6160565694,45000661693; 'rewardz = .@rewards['level_mode]; 'modez$ = .@modes$['level_mode]; 'bonuzExp = .@bonusExp['level_mode]; 'party_id = instance_live_info(ILI_OWNER); getpartymember 'party_id, 1; getpartymember 'party_id, 2; 'map$ = instance_mapname("6@tower"); copyarray .@CID,$@partymembercid,$@partymembercount; copyarray .@AID,$@partymemberaid,$@partymembercount; for(.@i=0;.@i<getarraysize(.@CID);.@i++){ if(isloggedin(.@AID[.@i],.@CID[.@i])){ if(strcharinfo(3,.@CID[.@i]) == 'map$){ set(#INSTANCEPOINTS,(getvar(#INSTANCEPOINTS,.@CID[.@i]) + 'rewardz),.@CID[.@i]); announce "The party [ "+ getpartyname('party_id) +" ] has defeated Endless Tower on " + 'modez$ + ".",bc_all; message strcharinfo(0,.@CID[.@i]),"You've been granted " + 'rewardz + " Instance Points."; message strcharinfo(0,.@CID[.@i]),"You now have " + getvar(#INSTANCEPOINTS,.@CID[.@i]) + " Instance Points"; getexp 'bonuzExp,'bonuzExp,.@CID[.@i]; } } } return; } I assigned a monster (1613 : metalling) to show us that the stats boost really works: Spoiler //if(unitexists(.@GID)){ // if(.@mob_id == 1613){ // debugmes "BEFORE UMOB_MAXHP " + .@ST[UMOB_MAXHP]; // debugmes "BEFORE UMOB_ATKMIN " + .@ST[UMOB_ATKMIN]; // debugmes "BEFORE UMOB_ATKMAX " + .@ST[UMOB_ATKMAX]; // debugmes "BEFORE UMOB_MATKMIN " + .@ST[UMOB_MATKMIN]; // debugmes "BEFORE UMOB_MATKMAX " + .@ST[UMOB_MATKMAX]; // debugmes "BEFORE UMOB_HIT " + .@ST[UMOB_HIT]; // debugmes "BEFORE UMOB_STR " + .@ST[UMOB_STR]; // debugmes "BEFORE UMOB_AGI " + .@ST[UMOB_AGI]; // debugmes "BEFORE UMOB_VIT " + .@ST[UMOB_VIT]; // debugmes "BEFORE UMOB_INT " + .@ST[UMOB_INT]; // debugmes "BEFORE UMOB_DEX " + .@ST[UMOB_DEX]; // debugmes "BEFORE UMOB_LUK " + .@ST[UMOB_LUK]; // } // } //if(unitexists(.@GID)){ // if(.@mob_id == 1613){ // getunitdata .@GID, .@ST2; // debugmes "AFTER UMOB_MAXHP " + .@ST2[UMOB_MAXHP]; // debugmes "AFTER UMOB_ATKMIN " + .@ST2[UMOB_ATKMIN]; // debugmes "AFTER UMOB_ATKMAX " + .@ST2[UMOB_ATKMAX]; // debugmes "AFTER UMOB_MATKMIN " + .@ST2[UMOB_MATKMIN]; // debugmes "AFTER UMOB_MATKMAX " + .@ST2[UMOB_MATKMAX]; // debugmes "AFTER UMOB_HIT " + .@ST2[UMOB_HIT]; // debugmes "AFTER UMOB_STR " + .@ST2[UMOB_STR]; // debugmes "AFTER UMOB_AGI " + .@ST2[UMOB_AGI]; // debugmes "AFTER UMOB_VIT " + .@ST2[UMOB_VIT]; // debugmes "AFTER UMOB_INT " + .@ST2[UMOB_INT]; // debugmes "AFTER UMOB_DEX " + .@ST2[UMOB_DEX]; // debugmes "AFTER UMOB_LUK " + .@ST2[UMOB_LUK]; // } //} 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 2 Quote Link to comment Share on other sites More sharing options...
Tiki59 Posted May 3, 2023 Group: Members Topic Count: 1 Topics Per Day: 0.00 Content Count: 21 Reputation: 1 Joined: 02/03/16 Last Seen: 5 hours ago Share Posted May 3, 2023 Nice ! Thx bro ! I tested the script and i have some errors in my console Quote Link to comment Share on other sites More sharing options...
Louis T Steinhil Posted May 27, 2023 Group: Members Topic Count: 21 Topics Per Day: 0.01 Content Count: 90 Reputation: 12 Joined: 06/22/13 Last Seen: 47 minutes ago Author Share Posted May 27, 2023 On 5/4/2023 at 12:50 AM, Tiki59 said: Nice ! Thx bro ! I tested the script and i have some errors in my console Increase your Event Queue https://rathena.org/board/topic/126700-warning-npc_event-players-event-queue-is-full-cant-add-event-onpcloadmapevent/ 1 Quote Link to comment Share on other sites More sharing options...
AinsLord Posted June 2, 2023 Group: Members Topic Count: 257 Topics Per Day: 0.08 Content Count: 737 Reputation: 18 Joined: 11/21/15 Last Seen: 20 hours ago Share Posted June 2, 2023 (edited) On 5/3/2023 at 5:07 PM, Louis T Steinhil said: 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: Reveal hidden contents .@bonus_hp_rate += 0; // The zero / "0" is calculated in % .@bonus_dmg_rate += 0; .@bonus_damagetaken += 0; .@bonus_hit += 0; .@bonus_str += 0; .@bonus_agi += 0; .@bonus_vit += 0; .@bonus_int += 0; .@bonus_dex += 0; .@bonus_luk += 0; This part is for the difficulty settings and adding stats to the monsters: Reveal hidden contents // Difficulty Function //============================================================ function script F_Tower_Monster_Summon { .@map$ = getarg(0, ""); .@x1 = getarg(1, 0); .@y1 = getarg(2, 0); .@x2 = getarg(3, 0); .@y2 = getarg(4, 0); .@mob_name$ = getarg(5, 0); .@mob_id = getarg(6, 0); .@amount = getarg(7, 0); .@label$ = getarg(8, ""); switch('level_mode){ case 1://Easy .@bonus_hp_rate += 0; .@bonus_dmg_rate += 0; .@bonus_damagetaken += 0; .@bonus_hit += 0; .@bonus_str += 0; .@bonus_agi += 0; .@bonus_vit += 0; .@bonus_int += 0; .@bonus_dex += 0; .@bonus_luk += 0; break; case 2://Veteran .@bonus_hp_rate += 100; .@bonus_dmg_rate += 100; .@bonus_damagetaken += -10; .@bonus_hit += 100; .@bonus_str += 100; .@bonus_agi += 100; .@bonus_vit += 100; .@bonus_int += 100; .@bonus_dex += 100; .@bonus_luk += 100; break; case 3://Nightmare .@bonus_hp_rate += 250; .@bonus_dmg_rate += 250; .@bonus_damagetaken += -20; .@bonus_hit += 250; .@bonus_str += 250; .@bonus_agi += 250; .@bonus_vit += 250; .@bonus_int += 250; .@bonus_dex += 250; .@bonus_luk += 250; break; case 4://Hell .@bonus_hp_rate += 500; .@bonus_dmg_rate += 500; .@bonus_damagetaken += -30; .@bonus_hit += 500; .@bonus_str += 500; .@bonus_agi += 500; .@bonus_vit += 500; .@bonus_int += 500; .@bonus_dex += 500; .@bonus_luk += 500; break; case 5://Torment .@bonus_hp_rate += 1000; .@bonus_dmg_rate += 1000; .@bonus_damagetaken += -40; .@bonus_hit += 1000; .@bonus_str += 1000; .@bonus_agi += 1000; .@bonus_vit += 1000; .@bonus_int += 1000; .@bonus_dex += 1000; .@bonus_luk += 1000; break; } deletearray $@mobid,getarraysize($@mobid); areamonster .@map$, .@x1, .@y1, .@x2, .@y2, .@mob_name$, .@mob_id, .@amount, .@label$; copyarray .@GID, $@mobid, getarraysize($@mobid); if(!.@bonus_hp_rate&& !.@bonus_dmg_rate&& !.@bonus_damagetaken&& !.@bonus_hit&& !.@bonus_str&& !.@bonus_agi&& !.@bonus_vit&& !.@bonus_int&& !.@bonus_dex&& !.@bonus_luk) return; getunitdata .@GID, .@ST; if(.@bonus_hp_rate){ .@HP = .@ST[UMOB_MAXHP] + ((.@ST[UMOB_MAXHP] * .@bonus_hp_rate ) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_MAXHP, .@HP); setunitdata(.@GID[.@i], UMOB_HP, .@HP); } } if(.@bonus_dmg_rate){ .@ATKMIN = .@ST[UMOB_ATKMIN] + ((.@ST[UMOB_ATKMIN] * .@bonus_dmg_rate) /100); .@ATKMAX = .@ST[UMOB_ATKMAX] + ((.@ST[UMOB_ATKMAX] * .@bonus_dmg_rate) /100); .@MATKMIN = .@ST[UMOB_MATKMIN] + ((.@ST[UMOB_MATKMIN] * .@bonus_dmg_rate) /100); .@MATKMAX = .@ST[UMOB_MATKMAX] + ((.@ST[UMOB_MATKMAX] * .@bonus_dmg_rate) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_ATKMIN, .@ATKMIN); setunitdata(.@GID[.@i], UMOB_ATKMAX, .@ATKMAX); setunitdata(.@GID[.@i], UMOB_MATKMIN, .@MATKMIN); setunitdata(.@GID[.@i], UMOB_MATKMAX, .@MATKMAX); } } if(.@bonus_damagetaken){ .@DAMAGETAKEN = .@ST[UMOB_DAMAGETAKEN] + ((.@ST[UMOB_DAMAGETAKEN] * .@bonus_damagetaken) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_DAMAGETAKEN, .@DAMAGETAKEN); } } if(.@bonus_hit){ .@HIT = .@ST[UMOB_HIT] + ((.@ST[UMOB_HIT] * .@bonus_hit) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_HIT, .@HIT); } } if(.@bonus_str){ .@STR = .@ST[UMOB_STR] + ((.@ST[UMOB_STR] * .@bonus_str) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_STR, .@STR); } } if(.@bonus_agi){ .@AGI = .@ST[UMOB_AGI] + ((.@ST[UMOB_AGI] * .@bonus_agi) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_AGI, .@AGI); } } if(.@bonus_vit){ .@VIT = .@ST[UMOB_VIT] + ((.@ST[UMOB_VIT] * .@bonus_vit) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_VIT, .@VIT); } } if(.@bonus_int){ .@INT = .@ST[UMOB_INT] + ((.@ST[UMOB_INT] * .@bonus_int) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_INT, .@INT); } } if(.@bonus_dex){ .@DEX = .@ST[UMOB_DEX] + ((.@ST[UMOB_DEX]) * .@bonus_dex) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_DEX, .@DEX); } } if(.@bonus_luk){ .@LUK = .@ST[UMOB_LUK] + ((.@ST[UMOB_LUK] * .@bonus_luk) /100); for(.@i=0;.@i<getarraysize(.@GID);.@i++){ setunitdata(.@GID[.@i], UMOB_LUK, .@LUK); } } return; } This part is for the rewards: It gives #INSTANCEPOINTS and EXP depending on the difficulty you're on. Reveal hidden contents // Reward Function //============================================================ function script F_Tower_Reward { setarray .@rewards[1],1,3,6,12,24; setarray .@modes$[1],"Easy Mode","Veteran Mode","Nightmare Mode","Hell Mode","Torment Mode"; setarray .@bonusExp[1],653047446,672905476,843378037,6160565694,45000661693; 'rewardz = .@rewards['level_mode]; 'modez$ = .@modes$['level_mode]; 'bonuzExp = .@bonusExp['level_mode]; 'party_id = instance_live_info(ILI_OWNER); getpartymember 'party_id, 1; getpartymember 'party_id, 2; 'map$ = instance_mapname("6@tower"); copyarray .@CID,$@partymembercid,$@partymembercount; copyarray .@AID,$@partymemberaid,$@partymembercount; for(.@i=0;.@i<getarraysize(.@CID);.@i++){ if(isloggedin(.@AID[.@i],.@CID[.@i])){ if(strcharinfo(3,.@CID[.@i]) == 'map$){ set(#INSTANCEPOINTS,(getvar(#INSTANCEPOINTS,.@CID[.@i]) + 'rewardz),.@CID[.@i]); announce "The party [ "+ getpartyname('party_id) +" ] has defeated Endless Tower on " + 'modez$ + ".",bc_all; message strcharinfo(0,.@CID[.@i]),"You've been granted " + 'rewardz + " Instance Points."; message strcharinfo(0,.@CID[.@i]),"You now have " + getvar(#INSTANCEPOINTS,.@CID[.@i]) + " Instance Points"; getexp 'bonuzExp,'bonuzExp,.@CID[.@i]; } } } return; } I assigned a monster (1613 : metalling) to show us that the stats boost really works: Reveal hidden contents //if(unitexists(.@GID)){ // if(.@mob_id == 1613){ // debugmes "BEFORE UMOB_MAXHP " + .@ST[UMOB_MAXHP]; // debugmes "BEFORE UMOB_ATKMIN " + .@ST[UMOB_ATKMIN]; // debugmes "BEFORE UMOB_ATKMAX " + .@ST[UMOB_ATKMAX]; // debugmes "BEFORE UMOB_MATKMIN " + .@ST[UMOB_MATKMIN]; // debugmes "BEFORE UMOB_MATKMAX " + .@ST[UMOB_MATKMAX]; // debugmes "BEFORE UMOB_HIT " + .@ST[UMOB_HIT]; // debugmes "BEFORE UMOB_STR " + .@ST[UMOB_STR]; // debugmes "BEFORE UMOB_AGI " + .@ST[UMOB_AGI]; // debugmes "BEFORE UMOB_VIT " + .@ST[UMOB_VIT]; // debugmes "BEFORE UMOB_INT " + .@ST[UMOB_INT]; // debugmes "BEFORE UMOB_DEX " + .@ST[UMOB_DEX]; // debugmes "BEFORE UMOB_LUK " + .@ST[UMOB_LUK]; // } // } //if(unitexists(.@GID)){ // if(.@mob_id == 1613){ // getunitdata .@GID, .@ST2; // debugmes "AFTER UMOB_MAXHP " + .@ST2[UMOB_MAXHP]; // debugmes "AFTER UMOB_ATKMIN " + .@ST2[UMOB_ATKMIN]; // debugmes "AFTER UMOB_ATKMAX " + .@ST2[UMOB_ATKMAX]; // debugmes "AFTER UMOB_MATKMIN " + .@ST2[UMOB_MATKMIN]; // debugmes "AFTER UMOB_MATKMAX " + .@ST2[UMOB_MATKMAX]; // debugmes "AFTER UMOB_HIT " + .@ST2[UMOB_HIT]; // debugmes "AFTER UMOB_STR " + .@ST2[UMOB_STR]; // debugmes "AFTER UMOB_AGI " + .@ST2[UMOB_AGI]; // debugmes "AFTER UMOB_VIT " + .@ST2[UMOB_VIT]; // debugmes "AFTER UMOB_INT " + .@ST2[UMOB_INT]; // debugmes "AFTER UMOB_DEX " + .@ST2[UMOB_DEX]; // debugmes "AFTER UMOB_LUK " + .@ST2[UMOB_LUK]; // } //} 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/2023 Category Games, Events, Quests Video Content Author Ylen X. Walker sorry to bump in to this post can i ask how can i put item as a reward for the party who cleared the ET like 1 - 3 random items for whole party drop by NS or automatically transfer to party leaders inv EDIT: i hope there is also for nidhogg nest Edited June 2, 2023 by AinsLord Quote Link to comment Share on other sites More sharing options...
Louis T Steinhil Posted June 2, 2023 Group: Members Topic Count: 21 Topics Per Day: 0.01 Content Count: 90 Reputation: 12 Joined: 06/22/13 Last Seen: 47 minutes ago Author Share Posted June 2, 2023 setarray .@item[1],[item_id],[item_id],[item_id],[item_id],[item_id]; ....... message strcharinfo(0,.@CID[.@i]),"You now have " + getvar(#MEMORIALDUNGEONPOINTS,.@CID[.@i]) + " Memorial Dungeon Points"; ..... getitem .@item['level_mode],1,.@AID[.@i]; You can declare it something like this. Just look for the function reward. You'll follow Quote Link to comment Share on other sites More sharing options...
Legend Posted June 7, 2023 Group: Members Topic Count: 3 Topics Per Day: 0.00 Content Count: 11 Reputation: 0 Joined: 04/04/17 Last Seen: August 31, 2023 Share Posted June 7, 2023 I have a problem with your endless tower script. The monsters are only born in the easy level, in the other levels only the first monster of each line is born Quote Link to comment Share on other sites More sharing options...
Legend Posted June 7, 2023 Group: Members Topic Count: 3 Topics Per Day: 0.00 Content Count: 11 Reputation: 0 Joined: 04/04/17 Last Seen: August 31, 2023 Share Posted June 7, 2023 case 1://Normal .@bonus_hp_rate += 0; .@bonus_dmg_rate += 0; .@bonus_damagetaken += 0; .@bonus_def += 0; .@bonus_mdef += 0; .@bonus_hit += 0; .@bonus_flee += 0; Is there a way to add level bonuses to the monster? Quote Link to comment Share on other sites More sharing options...
Louis T Steinhil Posted June 7, 2023 Group: Members Topic Count: 21 Topics Per Day: 0.01 Content Count: 90 Reputation: 12 Joined: 06/22/13 Last Seen: 47 minutes ago Author Share Posted June 7, 2023 8 hours ago, Legend said: case 1://Normal .@bonus_hp_rate += 0; .@bonus_dmg_rate += 0; .@bonus_damagetaken += 0; .@bonus_def += 0; .@bonus_mdef += 0; .@bonus_hit += 0; .@bonus_flee += 0; Is there a way to add level bonuses to the monster? Did you mean increase base level of monsters? UMOB_LEVEL Quote Link to comment Share on other sites More sharing options...
Dev j Posted July 29, 2023 Group: Members Topic Count: 17 Topics Per Day: 0.05 Content Count: 79 Reputation: 1 Joined: 06/22/23 Last Seen: Sunday at 04:22 PM Share Posted July 29, 2023 Hello can you help. sometimes portal not showing when i clear mobs on the current level Quote Link to comment Share on other sites More sharing options...
AinsLord Posted July 29, 2023 Group: Members Topic Count: 257 Topics Per Day: 0.08 Content Count: 737 Reputation: 18 Joined: 11/21/15 Last Seen: 20 hours ago Share Posted July 29, 2023 (edited) @Louis T Steinhil what is this error it seems some floors have it too 21/27/59/70/72/76/98 Floors and i cant proceed to the NS floor after finishing the 100F Edited July 29, 2023 by AinsLord Quote Link to comment Share on other sites More sharing options...
AinsLord Posted July 30, 2023 Group: Members Topic Count: 257 Topics Per Day: 0.08 Content Count: 737 Reputation: 18 Joined: 11/21/15 Last Seen: 20 hours ago Share Posted July 30, 2023 bump @Louis T Steinhil is it really spam-able entry after finishing the dungeon? after clicking the destroy instance you can enter again or generate again? thanks Quote Link to comment Share on other sites More sharing options...
Yukaiii Posted August 10, 2023 Group: Members Topic Count: 48 Topics Per Day: 0.01 Content Count: 110 Reputation: 9 Joined: 11/20/13 Last Seen: 8 hours ago Share Posted August 10, 2023 (edited) Could someone explain to me how to fix these errors? Edited August 10, 2023 by Yukaiii Quote Link to comment Share on other sites More sharing options...
Rynbef Posted August 10, 2023 Group: Forum Moderator Topic Count: 44 Topics Per Day: 0.01 Content Count: 898 Reputation: 119 Joined: 05/23/12 Last Seen: 14 hours ago Share Posted August 10, 2023 (edited) On makeitem u have to change 2048 to true. Change disablenpc(); to disablenpc; The warnings already describes what u have to do. Rynbef~ Edited August 10, 2023 by Rynbef Quote Link to comment Share on other sites More sharing options...
Louis T Steinhil Posted August 13, 2023 Group: Members Topic Count: 21 Topics Per Day: 0.01 Content Count: 90 Reputation: 12 Joined: 06/22/13 Last Seen: 47 minutes ago Author Share Posted August 13, 2023 On 7/30/2023 at 7:31 PM, AinsLord said: bump @Louis T Steinhil is it really spam-able entry after finishing the dungeon? after clicking the destroy instance you can enter again or generate again? thanks It's for GM's only. Normal players doesn't have that choice. Quote Link to comment Share on other sites More sharing options...
Louis T Steinhil Posted August 13, 2023 Group: Members Topic Count: 21 Topics Per Day: 0.01 Content Count: 90 Reputation: 12 Joined: 06/22/13 Last Seen: 47 minutes ago Author Share Posted August 13, 2023 On 7/29/2023 at 11:44 PM, AinsLord said: @Louis T Steinhil what is this error it seems some floors have it too 21/27/59/70/72/76/98 Floors and i cant proceed to the NS floor after finishing the 100F It has to do with the number of monsters being summoned. If you reduce the numbers being summoned that error will go away. I don't know how to fix that coz its src code. Quote Link to comment Share on other sites More sharing options...
Rynbef Posted August 13, 2023 Group: Forum Moderator Topic Count: 44 Topics Per Day: 0.01 Content Count: 898 Reputation: 119 Joined: 05/23/12 Last Seen: 14 hours ago Share Posted August 13, 2023 (edited) The for loops have a limit to prevent endless loops. The warning shows "Infinity loop" on big for loops. Add before for loop: freeloop(1); and after the for loop add: freeloop(0); Rynbef~ Edited August 13, 2023 by Rynbef Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.