Jump to content
  • 0
Sign in to follow this  
Kuroyama

No treasure box when using @reloadscript

Question

When the server restart or used @reloadscript the Guild Master cannot get any treasure box.

This happen always when I restart the server.

Any help for this? I even tried to change

 - script Gld_Trea_Spawn::Gld_Trea_Spawn -1,{
end;

OnClock2000: <--- to make it 10pm

but whenever I reload or server restart, treasure box is not showng

Share this post


Link to post
Share on other sites

6 answers to this question

Recommended Posts

  • 0

well of course it doesn't last through `@reloadscript`

because it uses `$@var` type, temporary global variable

https://github.com/HerculesWS/Hercules/blob/stable/npc/woe-fe/agit_main.txt#L1263-L1279

so you need to change them into `$var` type variable, and add OnInit: just above OnClock0001: label to spawn treasure box

 

this is script support so assume you know how to do it yourself

Share this post


Link to post
Share on other sites
  • 0

I don't know how to do it myself. ms annie. Is it okay to request another thread on the request section for this concern?

I don't want this script to be affected by @reloadscrip and I am afraid of having reported as spam. D:

I'll just wait for your reply.

Share this post


Link to post
Share on other sites
  • 0
On 10/5/2020 at 5:42 PM, AnnieRuru said:

Hi ms. @AnnieRuru, it's still having an issue. When the server restarted or @reloadscript has been used, castle won't give treasure box/drop or completely no treasure chest at all.

Already tried to live server. Sorry for late update also.

Share this post


Link to post
Share on other sites
  • 0

yeah upon re-read it again, seem like what I did was, once the guild master claimed the treasure, forever no treasure chest spawn

 

so let's reaffirm the theory, OFFICIALLY

-> the treasure chest are only spawn every 12:01am

-> if the guild master killed it, it will respawn on next 12:01am

-> if the guild master didn't kill it, it won't respawn on next 12:01am

-> if server restart, the treasure chest are gone <-- OFFICIAL

 

since you want unofficial behavior anyway - how about let's do unofficial way
 

revert your agit_main.txt to original then apply this

https://gist.github.com/AnnieRuru/aef19ddbaf2bd1f432bd53ea78a32d5d

 

what this does ->

1. every time the server restart, it respawn the treasure chest, whether the guild master killed it or not
-> the treasure chest are respawn every 12:01am AND server restart

-> if the guild master forgot to kill treasure chest, it will respawn upon server restart

-> the guild master that ALREADY kill treasure chest, it will ALSO respawn upon server restart, they get 2x for that day

2.  everytime the server restart, and 12:01am if the guild master invested in economy and defence, the value also gone up

 

 

if you still want to separate the OnInit and OnClock, I just realize needs to set another server variable

1 for day, 1 for treasure, I don't want to do that unpaid (needs to rewrite that whole damn function)

so let's keep things simple for everyone

 

-	script	main	FAKE_NPC,{
OnClock0000:
	for (.@i = 0; .@i < 4; ++.@i) {
		if ((.treasure & (1<<.@i)) == 0) {
			monster "prontera", 150+.@i, 185, "Treasure Chest", 1354,1, strnpcinfo(NPC_NAME)+"::OnTreasureDied"+.@i;
			.treasure |= (1<<.@i);
		}
	}
	end;
OnTreasureDied0: .treasure &= ~1; end;
OnTreasureDied1: .treasure &= ~2; end;
OnTreasureDied2: .treasure &= ~4; end;
OnTreasureDied3: .treasure &= ~8; end;
	end;
}

prontera,155,180,5	script	next day	1_F_MARIA,{
	donpcevent "main::OnClock0000";
}

prontera,149,180,5	script	cleanmap	1_F_MARIA,{
	cleanmap strcharinfo(PC_MAP);
}

prontera,151,180,5	script	mobcount	1_F_MARIA,{
	dispbottom getunits(BL_MOB, .@a, 0, "prontera") +"";
}

nvm let me try again

-	script	sdfksdjf	1_F_MARIA,{
OnInit:
OnClock0000:
	for (.@i = 0; .@i < 4; ++.@i) {
		if ($killedday[.@i] != atoi(gettimestr("%Y%m%d", 20))) {
			monster "prontera", 150 +.@i, 185, "Treasure Chest", 1354,1, strnpcinfo(NPC_NAME)+"::OnTreasureDied"+ .@i;
		}
	}
	end;
OnTreasureDied0: $killedday[0] = atoi(gettimestr("%Y%m%d", 20)); end;
OnTreasureDied1: $killedday[1] = atoi(gettimestr("%Y%m%d", 20)); end;
OnTreasureDied2: $killedday[2] = atoi(gettimestr("%Y%m%d", 20)); end;
OnTreasureDied3: $killedday[3] = atoi(gettimestr("%Y%m%d", 20)); end;
	end;
}

prontera,155,180,5	script	debug	1_F_MARIA,{
	dispbottom $killedday[0] +"";
	dispbottom $killedday[1] +"";
	dispbottom $killedday[2] +"";
	dispbottom $killedday[3] +"";
}

prontera,149,180,5	script	reset	1_F_MARIA,{
	deletearray $killedday;
}

now combine these 2 scripts

Edited by AnnieRuru

Share this post


Link to post
Share on other sites
  • 0

I suddenly remember I did this stuff years ago, forgot where is the topic
or maybe its in eathena forum which already gone

yeah suddenly it came back to me
 

https://gist.github.com/AnnieRuru/aef19ddbaf2bd1f432bd53ea78a32d5d

 

REALLY TESTED IT THIS TIME

screen2020Hercules002.jpg

note in the screenshot, I change my computer time to 12:00am and wait until it respawn,

now its evening here but I change my computer time just to test the OnClock0001: works

Edited by AnnieRuru

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.