Issue information

Issue ID
#7841
Status
Fixed
Severity
None
Started
Lelouch
Nov 19, 2013 7:47
Last Post
Haru
Dec 5, 2013 8:54
Confirmation
N/A

Lelouch - Nov 19, 2013 7:47

After killing all the monster in Floor Lvl 45 there are no warp portal leading to Lvl 46 and also i've noticed this when entering "[Admin] Lelouch of the party, , is entering the dungeon, Endless Tower." i think it should be "[Admin] Lelouch of the party,<Party Name>, is entering the dungeon, Endless Tower.". Please see pictures below...

[spoiler][img]http://i237.photobucket.com/albums/ff212/sai4455/screenUraniumRORenewal003.jpg[/img]
[img]http://i237.photobucket.com/albums/ff212/sai4455/screenUraniumRORenewal002.jpg[/img][/spoiler]

This post has been edited by Lelouch on Nov 19, 2013 7:48

LuLu - Nov 23, 2013 14:12

yes. i have this problem also. exactly at lvl 45.

Haru - Nov 25, 2013 4:01

Confirmed both points.

Part 1:[code=auto:0]2@tower,355,138,0 duplicate(1FGate102tower) WARPNPCFGate102tower WARPNPC,2,2 [/code]should be 45FGate102Tower instead.

Part 2:[code=auto:0]L_Enter: if (has_instance("1@tower") == "") { mes "The memorial dungeon " + .@md_name$ + " does not exist."; mes "The party leader did not generate the dungeon yet."; close; } else { mapannounce "e_tower", strcharinfo(0)+" of the party, "+.@p_name$+", is entering the dungeon, Endless Tower.",bc_map,"0x00ff99",FW_NORMAL,12; if (getarg(1)) { set etower_timer,gettimetick(2); setquest 60200; setquest 60201; } warp "1@tower",52,354; if (getarg(0) == 0) close; else end; } [/code]This label gets called through callsub, but it relies on .@ variables (which are, by definition, out of scope, when it gets called as a subroutine). That's of course a very bad idea. It should be rewritten so that it takes those values through getarg instead.

Haru - Nov 26, 2013 2:35

Part 1 was fixed by Kisuka in commit 6309eba. Leaving this open for Part 2.

Lelouch - Nov 26, 2013 2:53

I see thanks Haru and also Kisuka :D

Patskie - Dec 1, 2013 8:38

Instead of .@variables we can use .variables


Not tested :[code=auto:0] e_tower,81,105,0 script Tower Protection Stone 2_MONEMUS,{ set .@party_id,getcharid(1); set .p_name$,getpartyname(.@party_id); set .md_name$,"Endless Tower"; set .@etower_timer,checkquest(60200,PLAYTIME); // 1 week set .@etower_timer2,checkquest(60201,PLAYTIME); // 4 hours if (!instance_check_party(.@party_id,2)) { mes "Make or join a party with more than 1 member and try again."; close; } if (.@etower_timer == -1) { if (getcharid(0) == getpartyleader(.@party_id,2)) { mes "Confirmed the party has been made. Would you like to reserve entrance to the Endless Tower?"; next; switch(select("Generate dungeon "+.md_name$+":Enter the dungeon:Return to Alberta:Cancel")) { case 1: set .@instance, instance_create(.md_name$,.@party_id); if (.@instance < 0) { mes "Party Name: "+.p_name$; mes "Party Leader: "+strcharinfo(0); mes "^0000ff"+.md_name$+" ^000000- Reservation Failed!"; close; } mes "^0000ff"+.md_name$+"^000000 - Try to reserve"; mes "After making a reservation, you have to talk to NPC behind and select the menu 'Enter the Dungeon' to enter the dungeon."; for( set .@i, 1; .@i <= 6; set .@i, .@i + 1 ) { if( instance_attachmap(.@i + "@tower", .@instance) == "" ) { mes "^0000ff"+.md_name$+" ^000000- Reservation Failed!"; instance_destroy(.@instance); close; } } instance_set_timeout 14400,300,.@instance; instance_init(.@instance); close; case 2: callsub L_Enter,0,1; case 3: mes "I will move you to Alberta."; close2; warp "alberta",223,36; end; case 4: close; } } switch(select("Enter the "+.md_name$+":Return to Alberta:Cancel")) { case 1: callsub L_Enter,1,1; case 2: mes "I will move you to Alberta."; close2; warp "alberta",223,36; end; case 3: end; } } else if ((.@etower_timer >= 0) && (.@etower_timer2 < 2)) { mes "If you have the dungeon generated already, you can enter it. "; next; switch(select("Enter the "+.md_name$+":Return to Alberta:Cancel")) { case 1: callsub L_Enter,0,0; case 2: mes "I will move you to Alberta."; close2; warp "alberta",223,36; end; case 3: break; } close; } else if ((.@etower_timer >= 0) && (.@etower_timer < 2) && (.@etower_timer2 == 2)) { set .@dun_lim_time,etower_timer+604800; // 1 week set .@dun_lim_time2,etower_timer+14400; // 4 hours set .@dun_cur_time,gettimetick(2); set .@dun_ent_t,(.@dun_lim_time - .@dun_cur_time); set .@dun_h,(.@dun_ent_t / 3600); set .@dun_m,(.@dun_ent_t - (.@dun_h * 3600)) / 60; set .@dun_s,.@dun_ent_t - ((.@dun_h * 3600) + (.@dun_m * 60)); mes "Due to the tower's aftereffects, you cannot enter the dungeon right now, " + .@dun_h + "hours " + .@dun_m + "minutes " + .@dun_s + "seconds left to enter the next dungeon."; next; mes "It is dangerous here. Let me move you to Alberta."; close2; warp "alberta",223,36; end; } else { set etower_timer,0; erasequest 60200; erasequest 60201; mes "^0000ffThe records and after effects related to the Endless Tower have been removed. You can generate and enter the Endless Tower again.^000000"; close; } L_Enter: if (has_instance("1@tower") == "") { mes "The memorial dungeon " + .md_name$ + " does not exist."; mes "The party leader did not generate the dungeon yet."; close; } else { mapannounce "e_tower", strcharinfo(0)+" of the party, "+.p_name$+", is entering the dungeon, Endless Tower.",bc_map,"0x00ff99",FW_NORMAL,12; if (getarg(1)) { set etower_timer,gettimetick(2); setquest 60200; setquest 60201; } warp "1@tower",52,354; if (getarg(0) == 0) close; else end; } } [/code]

M45T3R - Dec 3, 2013 13:05

Bump? I also have this problem xD

Haru - Dec 5, 2013 8:54

Fixed in [url="https://github.com/HerculesWS/Hercules/commit/5e9a2d434f522d1407b8764581473307293e921f"]https://github.com/HerculesWS/Hercules/commit/5e9a2d434f522d1407b8764581473307293e921f[/url] (thanks to Patskie)

This post has been edited by Haru on Dec 5, 2013 8:55