Postado Junho 18Jun 18 Machado de uma mao ,martelo de uma maoalguns arcosAlgumas varinhas uso afiles do Happy
Postado Sábado em 22:224 dias atrás Autor então pensei que era ontem troquei o client full continua a mesma coisa consegui da um jeito no axe e na varinha que estava segurando errado agora falta o arco de uma mao e as garras elas ficam mudando de posição conforme eu ando, troco de habilidade, troco de item de uma mao
Postado Sábado em 22:584 dias atrás Estava com o mesmo problema, o geito foi mexer na leitura dos pivos na source
Postado Domingo em 00:574 dias atrás Autor então consegui ajeitar dessa forma procurei por case sinWA1:item de uma mão puxei referencia da espadanão sei se é o correto mais eu fiz nao deu nenhum dc e nem diferença nos itenstinha muito item bugado inclusive arcos.. então quem passar por isso ja sabe como corrigir
Postado Segunda em 01:463 dias atrás Autor Fiz da forma errada a forma correta e essa case sinWA1: { if (hand == ITEM_CLASS_WEAPON_ONE) { dwActItemCode = sinWA1 | sin03; } else { dwActItemCode = sinWA1 | sin05; } } break; case sinWC1: { dwActItemCode = sinWC1 | sin03; } break; case sinWH1: { if (hand == ITEM_CLASS_WEAPON_ONE) { dwActItemCode = sinWH1 | sin26; } else { dwActItemCode = sinWH1 | sin25; } } break; case sinWM1: { if (hand == ITEM_CLASS_WEAPON_ONE) { dwActItemCode = sinWM1 | sin20; } else { dwActItemCode = sinWM1 | sin08; } } break; case sinWP1: { if (hand == ITEM_CLASS_WEAPON_ONE) { dwActItemCode = sinWP1 | sin01; } else { dwActItemCode = sinWP1 | sin04; } } break; case sinWS1: { switch (dwActItemCode & 0x0000FFFF) { case sin04: case sin08: case sin10: case sin13: case sin17: case sin20: dwActItemCode = sinWS1 | sin04; break; default: if (hand == ITEM_CLASS_WEAPON_ONE) { dwActItemCode = sinWS1 | sin04; // WS102 arco 1 mão } else { dwActItemCode = sinWS1 | sin05; // arco 2 mãos } } break; } break; case sinWS2: { if (hand == ITEM_CLASS_WEAPON_ONE) { dwActItemCode = sinWS2 | sin01; } else { dwActItemCode = sinWS2 | sin05; } } break; case sinWT1: { dwActItemCode = sinWT1 | sin01; } break; }So não consegui colocar o arco de uma mao ele nao fica certo
Postado Segunda em 17:063 dias atrás Por favor, utilize a opção de bloco de código ao postar trechos de código em suas mensagens.
Postado Segunda em 20:552 dias atrás maninho , se eu não me engano as magia tbm Estão invertidas da uma olhada nas classes ai.
Postado 17 horas atrás17 horas atrás Vamos la vou tentar de uma forma mais simples explicar como as animaçoes funcionam para tentar ajudar a todos, Ate porque quem numca do nada tem o personagem atacando errado ou executando uma animaçao randomica.Vamos começar pela diferença entre .in e .inxO arquivo .in e o arquivo de texto puro, aquele que a gente consegue ler e editar de forma mais facil. La a gente usa comando tipo *착용무기 (arma equipada) e coloca a categoria do item. Exemplo WA101.O arquivo .inx é o arquivo binario. Aquele que o jogo realmente roda de forma mais very fast e mais buniss.Ta mas aonde a treta começa?Quando o jogo le o .in para criar o arquivo .inx ele nao salva a palavra "WA101", em vez disso, o codigo vai lá na sua tabela global de items (sItem) e faz um scann loop procurando a sua categoria WA101 e "anota" somente o numero da posiçao dele (ID/Index) Exemplo WA101 esta na posiçao 0 , Ou seja qual for a sua posiçao na tabela.O mesmo esquema acontence para as listas de Skills a (SkillDataCode).Ta mas porque caralhos as animaçoes realmente bugam ?Imagina comigo que o Inx foi gerado que a posiçao do machado do pristonpro foi gerado na posiçao 50, E do nada voce foi la e mudou sua tabela e agora ele esta na posiçao 65.Entao logo veja que o item ja nao e o mesmo a posiçao 50 pode ser uma staff um hammer ou um item premium enfim seja la o que for.Logo ele vai reconhecer uma animaçao errada como pode ver no exemplo abaixo se ele nao encontra ele faz um rand() nas animaçoes.if ( FindCnt ) ChangeMotion( FoundNum[(rand()%FindCnt)] , AnimDispMode ); // ROLETA RUSSA! Alem disso existe um bug principalmente depois que foi adicionado as novas classes e novas skills como a guerreira.Muitos hoje ainda utilizam os .inx dos servidor como KPT ou BPT cada um tem suas preferencias.Esses Inx ja compilados ja estao com as posiçoes de items ja definidas no .inx compilado como por exemploAssassin tem seus itens no index da tabela 345~~381Shaman tem seus itens no index da tabela 308~~344Guerreira tem seus itens no index de tabela 382~~418#define MOTION_TOOL_MAX 104 #define MOTION_SKIL_MAX 8 struct smMOTIONINFO { // ... outros dados ... int ItemCodeCount; BYTE ItemCodeList[MOTION_TOOL_MAX]; // O PROBLEMA TÁ AQUI DWORD dwJobCodeBit; BYTE SkillCodeList[MOTION_SKIL_MAX]; // ... outros dados ... };Repara naquele BYTE ItemCodeList. Na programação, uma variável do tipo BYTE só aguenta números de 0 a 255.Veja que o index dos motions ja gerado estao fora do range suportado ,E o BYTE simplesmente não consegue ler. Ele "estoura" o limite (dá overflow), salva um número bizarro no lugar e caga a animação inteira.Espero que consigam entender um pouco e tenham a curiosidade de entender um pouco mais e fazerem da forma correta para que todas as animaçoes realmente funcionem de forma correta.Abraço do God...
Machado de uma mao ,
martelo de uma mao
alguns arcos
Algumas varinhas
uso afiles do Happy