-ux-
Tipo de Conteúdo
Perfis
Fóruns
Atualizações
Quizzes
Store
Posts postados por -ux-
-
-
9 horas atrás, ProShow[XXI] disse:
Projeto incompleto Rogério Savaris W2PP
https://mega.nz/#!2LAXUQyY!QUTj3nn3nTvKDta-KD-i2mw-SRE57LkcQ6jaxC3wNmw
Está autorizado postar ?
-
Não é meu o código.. só estou repassando.
-
11 horas atrás, querotop disse:
Funcionou aqui. parab´´ens. Mas ela ta mal programada no tempo, de 4 em 4 segundos +/- ta recebendo itens com esse "if (pMob[bb].ProcessorCounter >= 10)" , no caso como eu colocaria pra ser 10m?
Não está mal programada, só não está no tempo que você deseja...
Tenta colocar 600...
- 1
-
Sabia que você tinha um bom coração ?
-
Em 19/05/2019 em 22:54, Shepher disse:
A W2PP é um emulador.
Você pode criar uma estrutura própria de conta sem ser necessário criar um segundo arquivo pra isso.Exatamente! Mas para quem não sabe fazer isso que você disse, salvar em outro arquivo é uma solução
-
Esse evento fecha o pvp de armia e começa a jogar itens no chão aleatoriamente... Coloque um npc na entrada do PVP cobrando uma "entrada"... ou apenas use a lógica para outras coisas.
Apenas se não já estiverem definidas:
É necessário se cadastrar para acessar o conteúdo.- Entre
- ou
- Cadastre-se
Código do evento:
É necessário se cadastrar para acessar o conteúdo.- Entre
- ou
- Cadastre-se
Obs.: Se já usar o código do prêmio por tempo de loja, é só colocar após o seu término.
- 16
- 1
- 1
-
1 hora atrás, Brayanxpc disse:
Amigo obrigado por postar, gostaria de saber se tu tem algo para a divina, na source que tem atualmente ela só funciona no personagem que a usa.
Mas não é assim que funciona?? Nunca vi usar em 1 e ativar em todos
-
37 minutos atrás, TEMPONUBLADO disse:
Testado porem uma pena deu erro amigo ? mesmo assim obg
Qual erro?
-
Só copiar e colar;
CitarCréditos: Não sei!
- 5
- 3
-
A função UserData da 756 salva a struct em um arquivo com o nome da acc.
Exemplo definindo valor na variável por char:
User[conn].CharacterInfo[pUser[conn].Slot].Profession.Profissao = 1;
Falta só colocar a função para quando deletar o char, zerar as variáveis. Porque como ela é declarada pelo slot, se criar um novo vai vir com as mesmas variáveis daquele slot.
CitarAdicionar no arquivo Server.h:
É necessário se cadastrar para acessar o conteúdo.- Entre
- ou
- Cadastre-se
Adicionar no arquivo _MSG_AccountLogin.cpp :
É necessário se cadastrar para acessar o conteúdo.- Entre
- ou
- Cadastre-se
Adicionar no arquivo Basedef.h
É necessário se cadastrar para acessar o conteúdo.- Entre
- ou
- Cadastre-se
Adicionar no arquivo Server.cpp:
É necessário se cadastrar para acessar o conteúdo.- Entre
- ou
- Cadastre-se
ainda no Server.cpp declare em baixo de "CUser pUser[MAX_USER];"
É necessário se cadastrar para acessar o conteúdo.- Entre
- ou
- Cadastre-se
Crie a pasta userdata:
\TMSrv\run\userdata
Se precisar... ProcessClientMessage.h:
É necessário se cadastrar para acessar o conteúdo.- Entre
- ou
- Cadastre-se
- 10
- 1
-
- 1
- 1
-
Poderia postar o cliente também?
-
Como faz pra dropar um item no chão, pode ser quando um mob morre, ou quando clica num npc...
Tentei usar a função do drop PK mas acho que não ta funcionando.
-
-
Tem como descobrir a coordenada de um mapa pra criar um teleporte para la pelo editor de mapas?
-
Tente isso:
char temp[128];
sprintf(temp, "../../Common/Logs/%s.txt", pUser[conn].AccountName);
FILE *fp;
fp = fopen(temp, "w");
Não há necessidade de verificar se o arquivo existe ou não, pois o fopen está criando o arquivo toda vez que a função é chamada.
Deu certo, vlw mesmo ;)
-
Quero criar um arquivo de texto com o nome da acc e salvar a quantidade de donates dentro dele quando alguma função é ativada. Por exemplo quando comprar um item donate..
Pesquisando na source, consegui fazer isso:
É necessário se cadastrar para acessar o conteúdo.- Entre
- ou
- Cadastre-se
Ele cria um arquivo com o nome "Teste.txt" e coloca os donates..
Eu sei que o fopen ele lê um arquivo, e quando não tem ele cria um..
Mas como faço pra criar o arquivo com o nome da acc?
-
Já consegui
-
Não estou conseguindo fazer funcionar o add de dano mágico na divina.
#pragma region Divina 7 15 30 Dias
if (Vol >= 64 && Vol <= 66)
{
int sAffect = GetEmptyAffect(conn, 34);
if (sAffect == -1 || pMob[conn].Affect[sAffect].Type == 34)
{
SendClientMessage(conn, g_pMessageStringTable[_NN_CantEatMore]);
SendItem(conn, m->SourType, m->SourPos, item);
return;
}
time(&pMob[conn].extra.DivineEnd);
if (Vol == 64)//7DD
pMob[conn].extra.DivineEnd += 60 * 60 * 24 * 8;
else if (Vol == 65)//15D
pMob[conn].extra.DivineEnd += 60 * 60 * 24 * 16;
else if (Vol == 66)//30D
pMob[conn].extra.DivineEnd += 60 * 60 * 24 * 31;
pMob[conn].Affect[sAffect].Type = 34;
pMob[conn].Affect[sAffect].Level = 1;
pMob[conn].Affect[sAffect].Value = 0;
pMob[conn].Affect[sAffect].Time = 2000000000;
BASE_GetHpMp(&pMob[conn].MOB, &pMob[conn].extra);
pMob[conn].GetCurrentScore(conn);
SendScore(conn);
sprintf(temp, "useitem,item divine type: %d", Vol-64);
ItemLog(temp, pUser[conn].AccountName, pUser[conn].IP);
if (amount > 1)
BASE_SetItemAmount(item, amount - 1);
else
memset(item, 0, sizeof(STRUCT_ITEM));
return;
}
#pragma endregion
else if (Type == 34)//Divina
{
int totalhp = ((MOB.CurrentScore.MaxHp / 10) * 2) + MOB.CurrentScore.MaxHp;
if (totalhp >= MAX_HP)
MOB.CurrentScore.MaxHp = MAX_HP;
else
MOB.CurrentScore.MaxHp = totalhp;
int totalmp = ((MOB.CurrentScore.MaxMp / 10) * 2) + MOB.CurrentScore.MaxMp;
if (totalmp >= MAX_MP)
MOB.CurrentScore.MaxMp = MAX_MP;
else
MOB.CurrentScore.MaxMp = totalmp;
int totaldn = ((MOB.CurrentScore.Damage / 10 ) * 2) + MOB.CurrentScore.Damage;
if (totaldn >= MAX_DAMAGE)
MOB.CurrentScore.MaxMp = MAX_DAMAGE;
else
MOB.CurrentScore.Damage = totaldn;
int totalmg = ((MOB.Magic / 100) * 10) + MOB.Magic;
if (totalmg >= MAX_DAMAGE_MG)
MOB.Magic = MAX_DAMAGE_MG;
else
MOB.Magic = totalmg;
- 1
-
Bom saber que deu certo e você está evoluindo, fico feliz em ver isso :)
Sobre isso, veja se tem acesso ao value ou algo assim, vê o que diferencia as composições uma da outra, tenta colocar para retornar uma mensagem quando clicar em compor, depois é só manipular as informações e indo com calma :)
Vlw irmão, vou tentar aqui. Até consegui editar todas. A da soul cria muitas possibilidades, só não conseguir criar a função pra nova que eu criei.. Mas vou tentando
-
Como coloco e altero a validade de um item. Por exemplo criar uma divina de 1h, criar um traje de 1 dia.
-
talvez seja mais facil colocar as funções em um npc ja existente.
Pode ser mais fácil.. mas pra quem não manja de C++ nem em um existente é fácil kkk
To quebrando a cabeça aqui.. não consigo achar onde define a função na source pra do mixlist.
-
Aquele editor não está 100% certo, é mais fácil dar uma olhada nele e estudar como é o .bin, eu sou um dos criadores de um e falta coisas nele!
Deu certo =D
Não faço a menor ideia de como editar o bin, abri com um editor hexa mas fica só uns dados loucos.. mas vou tentando aqui. Vou tentar pelo editor adicionar uma nova composição.Edit: Consegui adicionar no mixlist, agora vou tentar colocar a composição na source. Se eu conseguir posto aqui.
Tem como clonar o npc e as funções, tipo criar um novo igual a ehre mas com funções independentes?
- 1
-
Ajudante dando os buff de velo, dano, def e skill:
Citar//substituir na _MSG_Quest.cpp
#pragma region CARBUNCLE_WIND
case CARBUNCLE_WIND:
{
if (pMob[conn].extra.ClassMaster != MORTAL && pMob[conn].extra.ClassMaster != ARCH)
{
SendSay(npcIndex, g_pMessageStringTable[_NN_Level_Limit2]);
break;
}
if (pMob[conn].MOB.CurrentScore.Level >= 100)
{
SendSay(npcIndex, g_pMessageStringTable[_NN_Level_Limit2]);
break;
}
if(pMob[npcIndex].MOB.SkillBar[0] != 255)
SetAffect(conn, 41, 400, 100); //número da skill no skilldata, tempo de duração(400 da 128 segundos), level da skill
if(pMob[npcIndex].MOB.SkillBar[1] != 255)
SetAffect(conn, 43, 400, 100); //número da skill no skilldata, tempo de duração(400 da 128 segundos), level da skill
if(pMob[npcIndex].MOB.SkillBar[2] != 255)
SetAffect(conn, 44, 400, 100); //número da skill no skilldata, tempo de duração(400 da 128 segundos), level da skill
if(pMob[npcIndex].MOB.SkillBar[3] != 255)
SetAffect(conn, 45, 400, 100); //número da skill no skilldata, tempo de duração(400 da 128 segundos), level da skill
pMob[conn].GetCurrentScore(conn);
SendScore(conn);
sprintf(temp, g_pMessageStringTable[_SN_CARBUNCLEMSG], pMob[conn].MOB.MobName);
SendSay(npcIndex, temp);
sprintf(temp, "etc,carbuncle buff name:%s conn:%d", pMob[conn].MOB.MobName, conn);
Log(temp, "-system", 0);
} break;
#pragma endregion
Quest expulsando jogadores com level > 35:
No _MSG_Action.cpp procure por "_NN_Newbie_zone" e substitua a função em que ele se encontra por:
Citarif (m->TargetX != pMob[conn].TargetX || m->TargetY != pMob[conn].TargetY)
{
unsigned char mapAttribute = GetAttribute(m->TargetX, m->TargetY);
if (mapAttribute & 0x80 && (pMob[conn].MOB.CurrentScore.Level >=35 && pMob[conn].MOB.CurrentScore.Level <= 999 || pMob[conn].extra.ClassMaster != MORTAL)) //verifica o level
{
SendClientMessage(conn, g_pMessageStringTable[_NN_Newbie_zone]);
DoTeleport(conn, 2091 + rand() % 3, 2101 + rand() % 3); // teleporta pra armia
return;
}
- 1
NULL
em RPG Zone - Lixão
Postado
Muito top isso.. parabéns para quem fez. E obrigado por compartilhar.