Ir para conteúdo
View in the app

A better way to browse. Learn more.

priston.pro

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

estou com um problema no modo que segura os itens estão todos errados

Featured Replies

Postado
  • 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
  • Autor

então consegui ajeitar dessa forma

procurei por case sinWA1:

image.png

item de uma mão puxei referencia da espada

não sei se é o correto mais eu fiz nao deu nenhum dc e nem diferença nos itens

image.png

tinha muito item bugado inclusive arcos.. então quem passar por isso ja sabe como corrigir

Postado
  • 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

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.

  1. Vamos começar pela diferença entre .in e .inx

    O 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 exemplo

Assassin tem seus itens no index da tabela 345~~381
Shaman tem seus itens no index da tabela 308~~344
Guerreira 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...

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Cadastre-se Agora para publicar com Sua Conta.

Visitante
Responder

Account

Navigation

Pesquisar

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.