Para que serve o ShopManager.txt
O arquivo MuServer\Data\ShopManager.txt liga um índice de loja a uma classe de NPC. O GameServer usa esse índice para encontrar a loja em MuServer\Data\Shop. Ele não define os itens vendidos nem cria o NPC no mapa; essas configurações ficam em outros arquivos ou sistemas.
Cada linha de loja tem cinco valores, separados por espaços ou tabulações:
Index Npc Map X Y // Comentário opcional
Termine a lista com end, como no arquivo original. Linhas iniciadas por // são comentários e ajudam a identificar a loja.
O que significa cada coluna
| Coluna | Significado |
|---|---|
Index |
Número da loja. Use um índice único de 0 a 99. O arquivo de itens correspondente em Data\Shop usa três dígitos no início do nome: índice 0 → 000 - Nome da loja.txt. Scripts também podem abrir uma loja diretamente por esse número. |
Npc |
Classe do NPC, conforme os dados de monstros/NPCs do servidor. É a classe, não o número da posição em que ele foi colocado no mapa. Não use * para tentar representar todas as classes. |
Map |
Número do mapa para uma correspondência exata. * indica que a linha não exige um mapa específico. |
X, Y |
Coordenadas para uma correspondência exata. * indica que a linha não exige aquelas coordenadas específicas. |
// Comentário |
Texto para quem edita o arquivo; não é o nome exibido dentro da loja. |
No arquivo original, * é lido como -1. Por isso, uma linha com * em mapa e coordenadas funciona como associação geral pela classe do NPC, explicada abaixo.
Como o servidor escolhe a loja
- Primeiro, o servidor procura uma linha em que classe, mapa, X e Y coincidam exatamente com o NPC.
- Se não houver coincidência exata, procura uma linha com a mesma classe de NPC e usa a primeira pelo menor
Index. - Se a classe não estiver cadastrada, o NPC não recebe um índice de loja pelo
ShopManager.txt.
Portanto, preencher Map, X e Y dá prioridade àquela posição, mas não impede que outros NPCs da mesma classe recebam uma loja pela regra geral. O ShopManager.txt também não controla onde o NPC aparece no mapa.
Exemplo ilustrativo, com um índice adicional fictício:
0 251 * * * // Loja geral da classe 251
30 251 0 124 143 // Loja diferente para esta posição exata
end
Nesse exemplo, a classe 251 em mapa 0, X 124, Y 143 usa a loja 30. Nas demais posições, usa a loja 0. Para o exemplo funcionar, devem existir os arquivos de itens 000 - ...txt e 030 - ...txt na pasta Data\Shop. Não copie essas linhas para sua instalação sem conferir os NPCs e as lojas existentes.
Relação com a pasta Shop e com scripts
O Index precisa existir no ShopManager.txt para que o GameServer carregue o arquivo correspondente em Data\Shop. Os nomes dos arquivos seguem o padrão NNN - Nome.txt, com três dígitos, espaço, hífen e espaço. Mantenha apenas um arquivo para cada índice.
Uma loja também pode ser aberta por um script usando diretamente o índice, sem depender da conversa normal com o NPC. Na configuração atual, o evento Crazy Shop usa o índice 26 e carrega 026 - Crazy Shop.txt. Os itens e as seções internas dessas lojas serão explicados no guia da pasta Shop.
Ao editar
- Faça uma cópia do arquivo e preserve os índices das lojas já usadas por NPCs ou scripts.
- Ao criar uma loja, escolha um índice livre, crie seu arquivo de itens em
Data\Shope configure separadamente o NPC ou script que vai abri-la. - Uma entrada sem arquivo de itens correspondente não oferece uma loja funcional. O arquivo original contém uma entrada de teste; não a use como referência de loja pronta.
- Aplique alterações de associação em uma manutenção planejada do GameServer e do GameServerCS. O índice é atribuído aos NPCs quando são criados; recarregar somente o texto não atualiza os NPCs que já estão no mapa.
- Depois, teste a conversa com o NPC ou a abertura pelo script e confirme que a loja certa apresenta os itens esperados.