-
Quem está por aqui 0 membros estão online
- Nenhum usuário registrado visualizando esta página.
- 0
Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.
Pergunta
querestico 0
Olá, pessoal!
Sou novo no fórum e na programação, mas vi que as pessoas ajudam bastante por aqui, por isso resolvi criar o post.
Tenho um servidor particular, apenas para brincar com alguns amigos, mas não conseguimos criar itens celestiais. Tentei mais de 50 vezes, todas resultaram em falha. Como não entendo muito da programação, tentei corrigir algumas coisas no _MSG_CombineItemOdin.cpp, mas ainda assim, não consegui resolver.
Não faço ideia de como consertar.
Esse é meu primeiro post, então não sei direito qual é o procedimento para pedir ajuda. Devo enviar o arquivo aqui? Apenas colar o código? Como fazer para pedir ajuda a vocês?
De qualquer maneira, vou postar o início do código desse arquivo, até o ponto onde estão as funções do item celestial para vocês olharem.
Conto com a sua paciência, e agradeço desde já!
#include "ProcessClientMessage.h"
void Exec_MSG_CombineItemOdin(int conn, char *pMsg)
{
MSG_CombineItem *m = (MSG_CombineItem*)pMsg;
for (int i = 0; i < MAX_COMBINE; i++)
{
if (m->Item.sIndex == 0)
continue;
int invPos = m->InvenPos;
if (invPos < 0 || invPos >= pMob[conn].MaxCarry)
{
RemoveTrade(conn);
return;
}
if (memcmp(&pMob[conn].MOB.Carry[invPos], &m->Item, sizeof(STRUCT_ITEM)))
{
MyLog(LogType::Combines, "err,msg_CombineOdin - item remove or changed.", pUser[conn].AccountName, 0, pUser[conn].IP);
SendClientSignalParm(conn, ESCENE_FIELD, _MSG_CombineComplete, 0);
return;
}
}
int combine = GetMatchCombineOdin(m->Item);
if (combine == 2)
{
int sAgua = 0;
int sTerra = 0;
int sSol = 0;
int sVento = 0;
if(m->Item[3].sIndex == 5334 || m->Item[4].sIndex == 5334 || m->Item[5].sIndex == 5334 || m->Item[6].sIndex == 5334)
sAgua = 1;
if(m->Item[3].sIndex == 5335 || m->Item[4].sIndex == 5335 || m->Item[5].sIndex == 5335 || m->Item[6].sIndex == 5335)
sTerra = 1;
if(m->Item[3].sIndex == 5336 || m->Item[4].sIndex == 5336 || m->Item[5].sIndex == 5336 || m->Item[6].sIndex == 5336)
sSol = 1;
if(m->Item[3].sIndex == 5337 || m->Item[4].sIndex == 5337 || m->Item[5].sIndex == 5337 || m->Item[6].sIndex == 5337)
sVento = 1;
if((sAgua && (sTerra == 0 || sSol == 0 || sVento == 0)) || (sTerra && (sAgua == 0 || sSol == 0 || sVento == 0)) || (sSol && (sAgua == 0 || sTerra == 0 || sVento == 0)) || (sVento && (sAgua == 0 || sTerra == 0 || sSol == 0)))
{
SendClientSignalParm(conn, ESCENE_FIELD, _MSG_CombineComplete, 0);
return;
}
}
if (combine == 2 && (BASE_GetItemSanc(&m->Item[2]) >= REF_15 || BASE_GetItemAbility(&m->Item[2], EF_MOBTYPE) == 3))
{
SendClientSignalParm(conn, ESCENE_FIELD, _MSG_CombineComplete, 0);
return;
}
if (combine == 4 && (pMob[conn].MOB.CurrentScore.Level != 39 || pMob[conn].Extra.QuestInfo.Celestial.Lv40 == 1 || pMob[conn].Extra.ClassMaster != CELESTIAL))
{
SendClientSignalParm(conn, ESCENE_FIELD, _MSG_CombineComplete, 0);
return;
}
if (combine == 11 && (pMob[conn].Extra.ClassMaster == MORTAL || pMob[conn].Extra.ClassMaster == ARCH || BASE_GetItemSanc(&pMob[conn].MOB.Equip[15]) >= 9))
{
SendClientSignalParm(conn, ESCENE_FIELD, _MSG_CombineComplete, 0);
return;
}
for (int i = 0; i < MAX_COMBINE; i++)
{
if (m->Item.sIndex == 0)
continue;
memset(&pMob[conn].MOB.Carry[m->InvenPos], 0, sizeof(STRUCT_ITEM));
SendItem(conn, ITEM_PLACE_CARRY, m->InvenPos, &pMob[conn].MOB.Carry[m->InvenPos]);
}
for (int i = 0; i < MAX_COMBINE; i++)
{
if (m->Item.sIndex)
{
char itemlog[2048];
BASE_GetItemCode(&m->Item, itemlog);
strcat(temp, itemlog);
}
}
srand(time(NULL) /0.7432524524515122 - (rand() % 62325928) * .124323);
int _rand = rand() % 91;
if (combine == 1)//Item celestial
{
// if (_rand <= g_pOdinRate[combine] || LOCALSERVER)
// {
memcpy(&pMob[conn].MOB.Carry[m->InvenPos[1]], &m->Item[1], sizeof(STRUCT_ITEM));
pMob[conn].MOB.Carry[m->InvenPos[1]].sIndex = g_pItemList[m->Item[0].sIndex].Extra;
BASE_SetItemSanc(&pMob[conn].MOB.Carry[m->InvenPos[1]], 0, 0);
char tt[256];
SendNotice(g_pMessageStringTable[_SS_Combin_12Succ]);
SendClientSignalParm(conn, ESCENE_FIELD, _MSG_CombineComplete, 1);
sprintf(temp, "%s ", pUser[conn].AccountName);
BASE_GetItemCode(&pMob[conn].MOB.Carry[m->InvenPos[1]], tt);
strcat(temp, tt);
MyLog(LogType::Combines, "*** Combine odin item celestial sucess ***", pUser[conn].AccountName, 0, pUser[conn].IP);
SendItem(conn, ITEM_PLACE_CARRY, m->InvenPos[1], &pMob[conn].MOB.Carry[m->InvenPos[1]]);
return;
/* }
else
{
memcpy(&pMob[conn].MOB.Carry[m->InvenPos[1]], &m->Item[1], sizeof(STRUCT_ITEM));
SendItem(conn, ITEM_PLACE_CARRY, m->InvenPos[1], &pMob[conn].MOB.Carry[m->InvenPos[1]]);
sprintf(temp, "%s", g_pMessageStringTable[_NN_CombineFailed]);
SendClientMsg(conn, temp);
SendClientSignalParm(conn, ESCENE_FIELD, _MSG_CombineComplete, 2);
Editado por queresticoMyLog(LogType::Combines, "*** Combine odin item celestial fail ***", pUser[conn].AccountName, 0, pUser[conn].IP);
return;
} */
}
Clique aqui e adquira suas medalhas
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da Conversa
Você pode postar agora e se cadastrar mais tarde. Cadastre-se Agora para publicar com Sua Conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.