me passa Skype PM ai
Printable View
me passa Skype PM ai
Grow Lancer é Season 10 amigo. Esta Season 9 é a base da 10, 11 e 12 que a IGCN vende, assim você pode encontrar alguma linha sobre a GL nos arquivos, mas ela não existe neles.Citação:
Originally Posted by kkovas [Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...] Tem Como diminuir o uso da memoria ?
As únicas maneiras de amenizar são:Citação:
Originally Posted by wemerson [Only registered and activated users can see links. Click Here To Register...]
Desativar o Server Battle Core (e com isso o evento todo);
Incluir o GS Market no GameServer (assim será menos um GameServer rodando, tem na Net um GS com market já incluso);
Otimizar o código dos GameServer (por meio da Source e manjano bem de programação);
Acima da Season 8 é tudo assim, pois são muitos eventos, Itens, etc... adicionados nas novas versões e fazendo com que mais Ram seja necessária para o gerenciamento e tudo.
Minhas Desculpas . pois verifiquei tudo aqui e confundi o post .pois estou utilizando uma versão Season 10 de outro post e nao percebi essa minha falha no acompanhamento do post , eis o motivo de eu estar usando a GL normalmente
Meu Deus essa VPS tem quanto de RAM kkkk amigo no arquivo GameServer.ini em cada pasta de GameServer com tem 3 linhas onde pode da uma reduzida no uso porem essa reduzida reduz tambem o limite de players limite de monstros e limite de summon alguma coisa.. as linhas são essas:Citação:
Originally Posted by wemerson [Only registered and activated users can see links. Click Here To Register...]
PlayerCount = 1000
MonsterCount = 11500
SummonMonsterCount = 500
Quanto menos o valores menor sera o uso de RAM.
[Only registered and activated users can see links. Click Here To Register...] kkk que brisa levei reconect e duplicou o char kkkk
toda vez que leva reconect da isso kkkk
Bug visual do cliente, apenas você vê, outros players não, pelo menos em outras Seasons, testa aí com outra conta. Normal neste novo sistema de reconnect.Citação:
Originally Posted by wemerson [Only registered and activated users can see links. Click Here To Register...]
Pessoal eu percebi que em CashShop não ta aparecendo a moeda WCoin (P)
Como posso por pra ela aparecer ali logo abaixo de WCoin (C)?
[Only registered and activated users can see links. Click Here To Register...]
Se não me falha a memória é no arquivo Text_por.bmd (ou _eng dependendo da linguagem que está usando), a linha deve ter sido apagada. Se não me engano também, a IGCN só usa 2 moedas, tem que ver nos arquivos.Citação:
Originally Posted by kkovas [Only registered and activated users can see links. Click Here To Register...]
EDIT:
Fui dar uma olhada e realmente só usa 2 moedas, pessoal em outro fórum estava tentando fazer uma bambiarra para add a WCoin(P).
### MonsterGPInfo::Monster ###
// Index: Index of a monster, refer to IGC_MonsterList.xml
// MapNumber: Map number a kill of specified monster will result in award of configured coin type and value, -1 for all maps
// CoinType:
// 0: WCoin(C) - WCoin for Season 8 and later
// 1: WCoin(P) - available for Season 6 only ---> Apenas a Season 6 tem a 3º moeda.
// 2: Goblin Point
// CoinValue: Amount of coins to award with
// Enable: Defines whether the configured entry is enabled or not, 0/1
duplica o proprio char kk :/ tristeCitação:
Originally Posted by andredeco [Only registered and activated users can see links. Click Here To Register...]
Citação:
Originally Posted by andredeco [Only registered and activated users can see links. Click Here To Register...]
No arquivo IGC_CashShop.ini tem as seguintes linhas abaixo onde o mesmo esta desativado por CoinAdder = 0 nessas linha eu entendo que no evento X eu ganho tanto de prontos em WCoin (P) então ela existe no servidor e no SQL tambem tem tabela criada pra essa moeda, então mesmo assim não há possibilidade de adicionar essa moeda ao cashshop no season9?
;----------------------------------------------------------------------
;-- Enables coin reward for specified event winners, 0/1
;-- ~ NOTE ~ Coin reward for monsters can be configured via ItemBags
;----------------------------------------------------------------------
CoinAdder = 0
;----------------------------------------------------------------------
;-- Coin type to award with:
;-- 0 - WCoin(C) - WCoin for Season 8 and later
;-- 1 - WCoin(P) - available for S6E3 only
;-- 2 - Goblin Point
;----------------------------------------------------------------------
CoinAddType = 1
;----------------------------------------------------------------------
;-- Coins count to award with - per event type
;----------------------------------------------------------------------
CoinAddBC = 6 ; Blood Castle
CoinAddDS = 6 ; Devil Square
CoinAddCC = 8 ; Chaos Castle
CoinAddCW = 35 ; CryWolf
CoinAddNM = 35 ; Nightmare
CoinAddIT = 10 ; Illusion Temple Classic
CoinAddDG = 5 ; Dopple Ganger
CoinAddIF = 7 ; Imperial Fort
Isso mesmo, ali também menciona que a WCoin(P) só está funcional na Season 6. Você que teria que configurar aqui:Citação:
Originally Posted by kkovas [Only registered and activated users can see links. Click Here To Register...]
;----------------------------------------------------------------------
;-- Coin type to award with:
;-- 0 - WCoin(C) - WCoin for Season 8 and later
;-- 1 - WCoin(P) - available for S6E3 only
;-- 2 - Goblin Point
;----------------------------------------------------------------------
CoinAddType = 1
Para a moeda 0 ou 2.
Derrepente pode fazer um teste, configurar por exemplo ao matar o Erohin ganha X WCoin(P) e ver se as moedas serão adicionadas na tabela do SQL. Se eu fosse você deixava pra lá pois uma terceira moeda é tão inútil que foi removida das últimas Seasons. Basta uma moeda para $ e outra para Eventos (Goblin Points).
@[Only registered and activated users can see links. Click Here To Register...] o VIPSystem não esta funcionando corretamente quando chega na hora determinada pro bônus noturno o servidor não envia a mensagem pro cliente informando o bônus e também não ha nenhum alteração de exp ou drop.
Outra coisa no /reset ele ta resetando normal porem ele não acrescenta o 200 pontos que é especificado em PointPerReset = 200
tem como corrigir isso já que você tem a source?
Pls fix cannot open vault and move command in loren market
bom dia pessoal. mais alguem com esse problemas?
[Only registered and activated users can see links. Click Here To Register...]
server full com apenas uma pessoa on quando vai logar mais 1 da server full.
você precisa definir o número de pessoas is not problemCitação:
Originally Posted by lico [Only registered and activated users can see links. Click Here To Register...]
@[Only registered and activated users can see links. Click Here To Register...], entao brother ja esta em 1000 players mas mesmo assim esta dando server full!!! tem mais algum lugar para mudar? obrigado desde ja.
Não conheço os arquivos IGCN haverá uma resposta de um membro do grupoCitação:
Originally Posted by lico [Only registered and activated users can see links. Click Here To Register...]
Tem um bug no DataServer que não está fixado. Vá no meu Tópico é baixe o Muserver e copie a pasta do Dataserver. Não esqueça de configurar nela o IP etc...Citação:
Originally Posted by djagripnos [Only registered and activated users can see links. Click Here To Register...]
Resolvido.
@[Only registered and activated users can see links. Click Here To Register...]era o gs que nao dava certo. peguei o do seu post funcionou normal. obrigado
@[Only registered and activated users can see links. Click Here To Register...],
estou com um problema onde ao passar um item no trade informa que o inventário esta full.
Alguma solução?
bom dia estou testando esse gs mais ao clica no editor de contas ele fala que nao conecto ao banco de dados ja mudei a senha em configura mais continua do mesmo jeito ja segui tutorial do mento mais nada tbm 1 vez aqui no forum desculpa se postei errado
boa tarde bom depois de muita dor de cabeça consegui resolver :D onde ta Address eu tirei o (local) e deixei que nem aii em baixo mais acho que so e tira os ( ) que ja resolve
Username = sa ; User to connect to the Database
Password = ; Password to connect to the Database
Address = 127.0.0.1 ; (local) if the SQL Server is in the same PC and User
Port = 1433 ; TCP Port to use to connect to the SQL Server
MuOnlineDatabase = [MuOnline] ; Database name for main MuOnline database - add [ ] to the value if the database name contain numbers or special characters
Me_MuOnlineDatabase = [MuOnline] ; Database name for your Accounts (MEMB_INFO and MEMB_STAT tables) - add [ ] to the value if the database name contain numbers or special characters
EventsDatabase = [Events] ; Database name for Events database - add [ ] to the value if the database name contain numbers or special characters
RankingDatabase = [Ranking] ; Database name for Ranking database - add [ ] to the value if the database name contain numbers or special characters
BattleCoreDatabase = [BattleCore]
pls share source
Alguem poderia adicionar a esse muserver um custum que tem no Zteam que eu acho muito interessante para bonificar players em eventos.
e o MonsterSpawner.xml
em Vermelho e define um item que quando ele e dropado vai criar um Spot Temporário
em Amarelo e definido o mostro que vai spawnar e tambem a quantidade e o tempo de duração.
em Verde e definido se o spor criado vai ser privado ou nao(se for privado so quem dropou o item pode atacar os m onstros.
em Azul e definido se a party de quem dropo o item vai poder atacar.
em Laranja e definido se a guilde de quem dropo o item vai poder atacar.
<monsterspawner>
<!-- example, elite yeti -->
<item type="14" index="300">
<spawn monster="20" count="30" duration="60" />
<!-- rules for use this spot (false: any user can attack, true: only owner & by rules) -->
<private active="true">
<party>true</party>
<guild>false</guild>
</private>
</item>
<!-- example, mutant -->
<item type="14" index="301">
<spawn monster="62" count="30" duration="60" />
<!-- rules for use this spot (false: any user can attack, true: only owner & by rules) -->
<private active="true">
<party>true</party>
<guild>false</guild>
</private>
</item>
<!-- example, fire golem -->
<item type="14" index="302">
<spawn monster="291" count="30" duration="60" />
<!-- rules for use this spot (false: any user can attack, true: only owner & by rules) -->
<private active="true">
<party>true</party>
<guild>false</guild>
</private>
</item>
</monsterspawner>
aqui fica os código que eu pegue da source da Zteam
MonsterSpawner.cppMonsterSpawner.hCódigo HTML:
#include "stdafx.h"
#include "MonsterSpawner.h"
#include "GameMain.h"
#include "..\pugixml\pugixml.hpp"
MonsterSpawnerMng* MonsterSpawnerMng::m_Instance = NULL;
MonsterSpawnerMng::MonsterSpawnerMng() {
m_WorkPool.clear();
//m_ItemData.clear();
}
MonsterSpawnerMng::~MonsterSpawnerMng() {
// lifetime instance...
}
void MonsterSpawnerMng::Load() {
m_Loaded = false;
Init();
Read(gDirPath.GetNewPath(FILE_CUSTOM_MONSTERSPAWNER));
}
void MonsterSpawnerMng::Init() {
m_ItemData.clear();
}
void MonsterSpawnerMng::Read(const char *File) {
using namespace pugi;
xml_document Document;
xml_parse_result Result = Document.load_file(File);
if (Result.status != status_ok) {
MsgBox("[MonsterSpawnerMng] File %s not found!", File);
return;
}
xml_node nodeMain = Document.child("monsterspawner");
for (xml_node nodeIt = nodeMain.child("item"); nodeIt; nodeIt = nodeIt.next_sibling()) {
MonsterSpawnerItemInfo newItem = { 0 };
newItem.itemCategory = nodeIt.attribute("type").as_int(-1);
newItem.itemIndex = nodeIt.attribute("index").as_int(-1);
newItem.spawnMonsterId = nodeIt.child("spawn").attribute("monster").as_int(-1);
newItem.spawnMonsterCount = nodeIt.child("spawn").attribute("count").as_int(-1);
newItem.spawnDuration = nodeIt.child("spawn").attribute("duration").as_int(-1);
newItem.isPrivate = nodeIt.child("private").attribute("active").as_bool();
newItem.isPrivateParty = nodeIt.child("private").child("party").text().as_bool();
newItem.isPrivateGuild = nodeIt.child("private").child("guild").text().as_bool();
m_ItemData.push_back(newItem);
}
LogAddTD("[MonsterSpawnerMng] loaded %d node(s)", m_ItemData.size());
m_Loaded = true;
}
void MonsterSpawnerMng::procRun() {
for (size_t i = 0; i < m_WorkPool.size(); i++) {
if (m_WorkPool[i].isEmpty()) {
continue;
}
if (m_WorkPool[i].isExpired()) {
LogAddTD("[MonsterSpawnerMng] [%s] spot duration is expired, slot cleared",
m_WorkPool[i].ownerName.c_str());
m_WorkPool[i].clearSlot();
}
}
}
void MonsterSpawnerMng::procRegen(short MonsterIndex) {
gObj[MonsterIndex].X = gObj[MonsterIndex].StartX;
gObj[MonsterIndex].Y = gObj[MonsterIndex].StartY;
gObj[MonsterIndex].MTX = gObj[MonsterIndex].X;
gObj[MonsterIndex].MTY = gObj[MonsterIndex].Y;
gObj[MonsterIndex].m_ActState.Emotion = 1;
gObj[MonsterIndex].m_ActState.EmotionCount = 1;
}
bool MonsterSpawnerMng::procCreate(short UserIndex, int ItemCode) {
MonsterSpawnerItemInfo* tmpItemInfo = getItemInfo(ItemCode);
if (tmpItemInfo == NULL) {
return false;
}
int tmpSlotIndex = getEmptySlot();
if (tmpSlotIndex == -1) {
MonsterSpawnerWorkNode newNode;
newNode.setSlot(UserIndex, tmpItemInfo);
m_WorkPool.push_back(newNode);
} else {
m_WorkPool[tmpSlotIndex].setSlot(UserIndex, tmpItemInfo);
}
LogAddTD("[MonsterSpawnerMng] [%s][%s] spot has been created (monster: %d, count: %d, duration: %d, map: %d (%d:%d))",
gObj[UserIndex].AccountID, gObj[UserIndex].Name, tmpItemInfo->spawnMonsterId, tmpItemInfo->spawnMonsterCount,
tmpItemInfo->spawnDuration, gObj[UserIndex].MapNumber, gObj[UserIndex].X, gObj[UserIndex].Y);
return true;
}
bool MonsterSpawnerMng::isPrivate(short UserIndex, short MonsterIndex) {
LPOBJ tmpAttacker = &gObj[UserIndex];
LPOBJ tmpMonster = &gObj[MonsterIndex];
LPOBJ tmpOwner = NULL;
MonsterSpawnerWorkNode* tmpNode = NULL;
MonsterSpawnerItemInfo* tmpItem = NULL;
for (size_t i = 0; i < m_WorkPool.size(); i++) { // select node
if (m_WorkPool[i].isMonster(MonsterIndex)) {
tmpNode = &m_WorkPool[i];
break;
}
}
if (tmpNode == NULL) { // node not founded, spot unblocked
return false;
}
if (tmpNode->isOwner(tmpAttacker->Name)) { // owner
return false;
}
tmpItem = getItemInfo(tmpNode->itemCode);
if (tmpItem == NULL) { // rules for node not founded, spot unblocked
return false;
}
if (!tmpItem->isPrivate) { // spot not privated by rules
return false;
}
for (int i = OBJ_STARTUSERINDEX; i < OBJMAX; i++) { // select live owner
if (gObj[i].Connected >= PLAYER_PLAYING) {
if (tmpNode->isOwner(gObj[i].Name)) {
tmpOwner = &gObj[i];
break;
}
}
}
if (tmpOwner == NULL) { // spot have owner, but owner is offline, cant check rules - block by rules
MsgOutput(UserIndex, "Monster is privated by %s", tmpNode->ownerName.c_str());
return true;
}
if (tmpItem->isPrivateParty && tmpOwner->PartyNumber >= 0) { // spot is not privated for party members
if (tmpOwner->PartyNumber == tmpAttacker->PartyNumber) {
return false;
}
}
if (tmpItem->isPrivateGuild && tmpOwner->GuildNumber > 0) { // spot is not privated for guild members
if (tmpOwner->GuildNumber == tmpAttacker->GuildNumber) {
return false;
}
}
MsgOutput(UserIndex, "Monster is privated by %s", tmpNode->ownerName.c_str());
return true;
}
bool MonsterSpawnerMng::isEventMonster(short MonsterIndex) {
for (size_t i = 0; i < m_WorkPool.size(); i++) {
if (m_WorkPool[i].isMonster(MonsterIndex)) {
return true;
}
}
return false;
}
bool MonsterSpawnerMng::isKeyItem(int ItemCode) {
if (getItemInfo(ItemCode) != NULL) {
return true;
}
return false;
}
int MonsterSpawnerMng::getEmptySlot() {
for (size_t i = 0; i < m_WorkPool.size(); i++) {
if (m_WorkPool[i].isEmpty()) {
return i;
}
}
return -1;
}
MonsterSpawnerItemInfo* MonsterSpawnerMng::getItemInfo(int ItemCode) {
if (!m_Loaded) {
return NULL;
}
for (size_t i = 0; i < m_ItemData.size(); i++) {
if (ITEMGET(m_ItemData[i].itemCategory, m_ItemData[i].itemIndex) == ItemCode) {
return &m_ItemData[i];
}
}
return NULL;
}
Código HTML:
#pragma once
// import
#include "user.h"
// data
struct MonsterSpawnerItemInfo {
short itemIndex;
short itemCategory;
short spawnMonsterId;
short spawnMonsterCount;
short spawnDuration;
bool isPrivate;
bool isPrivateParty;
bool isPrivateGuild;
};
struct MonsterSpawnerWorkNode { // maybe better use class & ptr instance...
MonsterSpawnerWorkNode() {
ownerName.reserve(MAX_ACCOUNT_LEN + 1);
monsterPool.clear();
itemCode = -1;
tickEnd = 0;
}
void setSlot(short UserIndex, MonsterSpawnerItemInfo* itemInfo) {
if (UserIndex < 0 || UserIndex > OBJMAX) {
return;
}
LPOBJ tmpUser = &gObj[UserIndex];
if (tmpUser == NULL) {
return;
}
ownerName.assign(tmpUser->Name);
itemCode = ITEMGET(itemInfo->itemCategory, itemInfo->itemIndex);
tickEnd = GetTickCount() + (itemInfo->spawnDuration * 60 * 1000);
setSpot(UserIndex, itemInfo);
}
void clearSlot() {
ownerName.assign("");
itemCode = -1;
tickEnd = 0;
clearSpot();
monsterPool.clear();
}
void setSpot(short UserIndex, MonsterSpawnerItemInfo* itemInfo) {
if (UserIndex < 0 || UserIndex > OBJMAX) {
return;
}
LPOBJ tmpUser = &gObj[UserIndex];
if (tmpUser == NULL) {
return;
}
for (int i = 0; i < itemInfo->spawnMonsterCount; i++) {
int tmpMonsterIndex = gObjAddMonster(tmpUser->MapNumber);
if (tmpMonsterIndex < 0) {
return;
}
gObj[tmpMonsterIndex].m_PosNum = -1;
gObj[tmpMonsterIndex].X = tmpUser->X + rand() % 2;
gObj[tmpMonsterIndex].Y = tmpUser->Y + rand() % 2;
gObj[tmpMonsterIndex].MapNumber = tmpUser->MapNumber;
gObj[tmpMonsterIndex].TX = gObj[tmpMonsterIndex].X;
gObj[tmpMonsterIndex].TY = gObj[tmpMonsterIndex].Y;
gObj[tmpMonsterIndex].m_OldX = gObj[tmpMonsterIndex].X;
gObj[tmpMonsterIndex].m_OldY = gObj[tmpMonsterIndex].Y;
gObj[tmpMonsterIndex].StartX = gObj[tmpMonsterIndex].X;
gObj[tmpMonsterIndex].StartY = gObj[tmpMonsterIndex].Y;
gObj[tmpMonsterIndex].m_ActState.Emotion = 1;
gObj[tmpMonsterIndex].m_ActState.EmotionCount = 15;
gObj[tmpMonsterIndex].Dir = rand() % 8;
gObjSetMonster(tmpMonsterIndex, itemInfo->spawnMonsterId);
monsterPool.push_back(tmpMonsterIndex);
}
}
void clearSpot() {
for (size_t i = 0; i < monsterPool.size(); i++) {
gObjViewportListProtocolDestroy(&gObj[monsterPool[i]]);
gObjViewportClose(&gObj[monsterPool[i]]);
gObjDel(monsterPool[i]);
gObj[monsterPool[i]].Live = 0;
gObj[monsterPool[i]].DieRegen = 1;
}
}
bool isOwner(char* OwnerName) {
if (ownerName.compare(OwnerName) == NULL) {
return true;
}
return false;
}
bool isMonster(short MonsterIndex) {
for (size_t i = 0; i < monsterPool.size(); i++) {
if (monsterPool[i] == MonsterIndex) {
return true;
}
}
return false;
}
bool isEmpty() {
if (isOwner("")) {
return true;
}
return false;
}
bool isExpired() {
if (GetTickCount() >= tickEnd) {
return true;
}
return false;
}
std::string ownerName;
std::vector<short> monsterPool;
int itemCode;
DWORD tickEnd;
};
// monster spawner by item drop impletation
class MonsterSpawnerMng {
public:
MonsterSpawnerMng();
~MonsterSpawnerMng();
void Load();
void Init();
void Read(const char* File);
void procRun();
void procRegen(short MonsterIndex);
bool procCreate(short UserIndex, int ItemCode);
bool isPrivate(short UserIndex, short MonsterIndex);
bool isEventMonster(short MonsterIndex);
bool isKeyItem(int ItemCode);
int getEmptySlot();
MonsterSpawnerItemInfo* getItemInfo(int ItemCode);
// singleton
static MonsterSpawnerMng* getInstance() {
if (m_Instance == NULL) {
m_Instance = new MonsterSpawnerMng();
}
return m_Instance;
}
private:
static MonsterSpawnerMng* m_Instance;
std::vector<MonsterSpawnerWorkNode> m_WorkPool;
std::vector<MonsterSpawnerItemInfo> m_ItemData;
private:
bool m_Loaded;
};
Alguém sabe como corrigir isso?
[Only registered and activated users can see links. Click Here To Register...]
Já conseguir ajeita a tradução porem o item que ele pede não consigo de forma alguma...
Alguma solução?
Galera... já tentei de tudo aqui, o que fosse imaginável fazer, e só tomo disconnect quando tento acessar o servidor... alguém sabe o que pode ser?
Alguma configuração errada com IP.... Tá ligando o servidor no seu PC ou em um dedicado?Citação:
Originally Posted by jrland [Only registered and activated users can see links. Click Here To Register...]
PC comum... já tive servidor, muitos anos... já revi todas as configs... mas não achei nada que tivesse dado errado, usei no-ip, usei ip fixo, local, configurei arquivos hosts e nada... tentei mudar ip direto no main via editor hexa. na dll, no .bmd e de nenhum jeito conecta... server abre normal, tudo liga 100% mas quando vou conectar, o cliente carrega e da dc antes de aparecer a lista de servidores...
alguém pode arruma o link do cliente, esta OFF
Link off morpheus poderia arrumar ai
link die 0000000000000000000000000000
Fix link plis
Por favor alguem pode atualizar os links pois tentei fazer o download e alguns estão offline.
@[Only registered and activated users can see links. Click Here To Register...] eai parceiro lembra de mim ? Poderia
Me informar qual sql e melhor pra essa versão ?
Te mandei um alô no Skype vou voltar a ativa
@[Only registered and activated users can see links. Click Here To Register...] Reupload Link Is error
@[Only registered and activated users can see links. Click Here To Register...] pode up novos Links Quais foi os updade e melhorias da vs original do [Only registered and activated users can see links. Click Here To Register...]
new links please! thanks!