Показать сообщение отдельно

  #8  
Старый 21.09.2024, 19:08
Artemis_37
Участник форума
Регистрация: 22.01.2024
Сообщений: 189
С нами: 1216576

Репутация: 95
По умолчанию

Цитата:
Сообщение от Gaikotsu  

мне кажется или ты вон в loadNpcsForDay как раз по всем зонам пробегаешься циклом и потому у тебя и везде спавн идет?
почему вместо этого просто одну не выбирать, случайным образмо там или последовательно.

З.Ы. в люцере поддержки групп спавнов нет кстати что ли? а то вместо подгрузки разных файлов спавнов можно было бы манипулировать посто спавном/деспавном по именам групп.
Хорошая идея с названиями групп.

HTML:


Код:

Также я могу использовать спаун с помощью cron, но он подходит только для рейдовых боссов.

В отношении loadNpcsForDay я сделал некоторые изменения.

Java:


Код:
// Load NPCs for the current day from XML files
public
static
void
loadNpcsForDay
(
String
dayName
)
{
// Define zone names for each day and load respective XML files
String
[
]
zones
=
{
"devilsisle"
,
"cruma_marshlands"
,
"pagan_temple"
,
"ruins_of_despair"
}
;
// Despawn NPCs for the previous days
for
(
String
zone
:
zones
)
{
if
(
!
zone
.
equals
(
dayName
)
)
{
despawnNpcsFromZone
(
zone
)
;
// Despawn NPCs that are not for the current day
}
}
// Now, spawn NPCs for the current day
String
filename
=
DATA_PATH
+
dayName
+
"_"
+
"zone"
+
".xml"
;
spawnNpcsFromXml
(
filename
,
dayName
)
;
// Announce the new active zone to players
Announcements
.
getInstance
(
)
.
announceByCustomMessage
(
"CustomZonesEvent.ZoneActive."
+
dayName
,
null
)
;
}
// Spawn NPCs from the given XML file
private
static
void
spawnNpcsFromXml
(
String
filename
,
String
zoneName
)
{
try
{
// Initialize the XML parser
DocumentBuilderFactory
factory
=
DocumentBuilderFactory
.
newInstance
(
)
;
DocumentBuilder
builder
=
factory
.
newDocumentBuilder
(
)
;
Document
doc
=
builder
.
parse
(
new
File
(
filename
)
)
;
NodeList
spawnList
=
doc
.
getElementsByTagName
(
"spawn"
)
;
List

spawnedNpcs
=
new
ArrayList
<>
(
)
;
for
(
int
i
=
0
;
i
 element inside 
NodeList
npcList
=
spawnElement
.
getElementsByTagName
(
"npc"
)
;
for
(
int
j
=
0
;
j

{
// Despawn the NPC and respawn it after the delay
if
(
!
npc
.
isDeleted
(
)
)
{
npc
.
deleteMe
(
)
;
}
spawnAndRespawnNpc
(
npcId
,
x
,
y
,
z
,
respawnTime
)
;
// Recursively respawn the NPC
}
,
respawnTime
*
1000L
)
;
// Convert respawn time to milliseconds
return
npc
;
// Return the spawned NPC
}
Если хотите, я могу выслать вам полный код для ознакомления (если вам интересно).
 
Ответить с цитированием