Para que serve o CashShopPackage.txt
O arquivo MuServer\Data\CashShop\CashShopPackage.txt define os pacotes oferecidos na Cash Shop: categoria, identificadores, moeda, preço do pacote, bônus de GoblinPoint e até dez produtos vinculados. Os atributos do item entregue ficam em CashShopProduct.txt. Um pacote pode conter um produto ou vários.
No arquivo original há 548 pacotes. Todos usam Coin = 508 (WCoinC), e o campo Bonus está em 0. O GameServer e o GameServerCS carregam esse arquivo quando a Cash Shop está habilitada por CashShopSwitch = 1 em seus respectivos GameServerInfo - Common.dat.
Formato de cada linha
Cat ID Main Item Coin Price Bonus PBase1 ... PBase10 PMain1 ... PMain10
Cada registro tem 27 números: sete campos iniciais, dez posições PBase e dez posições PMain, nessa ordem. Separe os valores com espaços ou tabulações; termine o arquivo com end. O texto após // é comentário e não integra os dados. Não elimine as posições vazias: elas devem continuar como 0.
| Campo | Significado |
|---|---|
Cat |
Código da categoria do pacote no catálogo. Preserve a associação com a categoria exibida pelo cliente. |
ID |
Identificador base do pacote (BaseIndex). |
Main |
Identificador principal do pacote (MainIndex). É usado pelo servidor para localizar o pacote na compra. Deve ser único. |
Item |
Identificador de item do registro do pacote. Ele não define, sozinho, o item entregue. Os produtos vinculados determinam a entrega. No catálogo original, todos os pacotes usam 1 aqui. |
Coin |
Moeda da cobrança: 508 = WCoinC, 509 = WCoinP, 0 = GoblinPoint. O arquivo original utiliza 508 em todos os pacotes. |
Price |
Preço para comprar o pacote inteiro, na moeda de Coin. |
Bonus |
GoblinPoint creditado após a compra. O catálogo original usa 0. |
PBase1 a PBase10 |
Identificadores base dos produtos nas dez posições do pacote. 0 deixa a posição vazia. |
PMain1 a PMain10 |
Identificadores principais correspondentes às mesmas posições. Se PMain for diferente de 0, o servidor procura o produto por esse identificador; caso contrário, procura pelo PBase da posição. |
O par PBaseN/PMainN deve apontar para uma entrada existente em CashShopProduct.txt. O servidor percorre as dez posições e inclui cada produto cujo PBaseN é diferente de 0. Não mova apenas um dos campos do par ao reorganizar um pacote.
Exemplo do arquivo original
31 128 128 1 508 25 0 1280 0 0 0 0 0 0 0 0 0 1280 0 0 0 0 0 0 0 0 0 // Small Axe
Esse pacote está na categoria 31, tem Main = 128, custa 25 WCoinC e contém um produto na primeira posição (PBase1 = 1280, PMain1 = 1280). As outras nove posições estão vazias. A linha de produto 1280 define o Small Axe e suas opções.
Preço do pacote e preço do produto
Na compra do pacote inteiro, o servidor cobra Price uma vez e registra todos os produtos vinculados na área de itens da Cash Shop do comprador. Quando o cliente compra apenas um produto de um pacote, o servidor usa o preço Value da linha correspondente em CashShopProduct.txt. A moeda continua sendo a definida em Coin no pacote. Em ambos os casos, um Bonus positivo credita GoblinPoint após a compra.
Itens comprados passam primeiro pela área de itens da Cash Shop. O jogador precisa resgatá-los ou usá-los; conforme o produto, isso entrega um item, aplica um efeito ou executa uma ação especial. Não confunda essa área com o inventário comum do personagem.
Antes de editar
- Faça uma cópia dos dois arquivos da pasta
CashShope mantenha seus identificadores sincronizados. - Para cada
PBaseNdiferente de0, confirme que existe o produto correspondente emCashShopProduct.txt. Não repitaMainentre pacotes. - Confira moeda, preço, bônus e produtos incluídos. Uma mudança no preço do pacote não muda automaticamente o preço de compra individual do produto.
- Recarregue CashShopPackage pelo menu de reload do GameServer que atende os jogadores; se alterou produtos ou vínculos, recarregue também CashShopProduct. Repita no GameServerCS se ele atender a loja.
- Teste a visualização no cliente, o saldo insuficiente, a compra e o resgate dos itens. A apresentação do catálogo no cliente também precisa corresponder aos identificadores configurados no servidor.