Ir para conteúdo
  • 2 Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

[Source + Release] Servidor WYD 7.69 para GNU/Linux e Windows.


kernellpanic
 Compartilhar

Posts Recomendados

15 horas atrás, kernellpanic disse:

Não tem binários Windows exceto o wyd.exe
Sugiro escanear com antivírus atualizado.
Links para download: 

É necessário se cadastrar para acessar o conteúdo.

 

 

 

Instalação WYD Linux mais simples e direta através do script bash install_wyd_linux.sh 

O script monta o ambiente sem forçar compilação, instala dependências e deixa o servidor pronto para configurar. Ele cria o mysql.txt para o servidor se conectar ao banco, com usuário, senha e nome do schema, e também atualiza o server.txt do cliente para apontar para o IP do servidor.

No cliente, o server.txt define o endereço do servidor que o jogo vai usar. Na parte do servidor, o mysql.txt garante que DBSrv e TMSrv consigam acessar o MySQL com as credenciais certas.

Decidi user um .txt no cliente para facilitar os testes.

Bugs: Com certeza tem bastante, mas menos do que na versão original.
As skills 9 e 10 estão implementadas (sinceramente nao testei todas ainda).
Minha ideia é criar um gerenciamento via web, visto que a versão console (esta) não tem as mesmas informaçoes que a versão Windows. 
Toda a parte gráfica foi removida e roda direto pelo terminal.
Tem um binário tmlinux (cliente). Pode ignorar. É só uma tentativa ousada de portar o cliente.
O Cliver é 6000. 
Ao compilar no Windows ele cria o diretório que indica ser versão 7.69
 

Foi criado um arquivo ShimWin32 para tratar da compatibilidade e traduçao das chamadas WIn32 pra POSIX.

A vantagem é que não preciso reescrever a lógica toda. O código continua igual, eu só traduzo a camada de API. Compile uma vez com o shim e pronto, roda em Linux mantendo tudo que funciona no Windows.

Em resumo:

  • setup feito sem precisar compilar agora;
  • banco MySQL configurado automaticamente;
  • mysql.txt criado para o WYD acessar o DB;
  • server.txt do cliente ajustado para o IP certo.

Assim, a configuração fica prática e você não precisa editar tudo na mão.

  •  
  •  
  •  
  •  

É necessário se cadastrar para acessar o conteúdo.

É necessário se cadastrar para acessar o conteúdo.




Créditos:  (Nomes encontrados no código) 
Se tiver mais alguém, basta avisar.

  • Victor Klafke
  • Charles TheHouse
  • TRAE.AI
  • GLM 5.1 Plus

Interface SexyCode

  • Curtir 9
  • Amei 1
  • Haha 1
Link para o comentário
Compartilhar em outros sites

13 minutos atrás, xaxa333 disse:

Interface SexyCode

Eu tinha baixado uma release dele, tinha visto interface bem parecida nos vídeos.
Mas tinha tanta falha que até o WYD.exe dava erro de memória.
Ainda to pra consertar aquela base e liberar aqui.
Mas é muito boa mesmo. Se foi realmente ele quem fez aquilo, meus parabéns.
Agora eu decidi dar uma olhada no MYTH e ver o que dá pra fazer.

Link para o comentário
Compartilhar em outros sites

8 horas atrás, junzzzz26 disse:

can you teach how it its install_wyd_linux.sh, i cant open data base to edit and debug it. thank you,

I'm not sure what you mean regarding the .sh script and the database. You can find the database in Release/sqlserver.sql. Both the script and the .sql file are text files. Could you elaborate on your concern? The script is fully functional.1gxFoIa.png

 

 

 

EDIT:

 

Pra corrigir o ItemList.csv, conversa o ItemList.bin do cliente para csv e use no servidor.

Código do conversor:

 

#!/usr/bin/env python3
from __future__ import annotations

import argparse
import struct
from pathlib import Path


MAX_ITEMLIST = 6500
ITEMLIST_ENTRY_SIZE = 140
ITEMLIST_XOR = 0x5A
MAX_STATICEFFECT = 12


def parse_effect_names(path: Path) -> dict[int, str]:
    effects: dict[int, str] = {}
    for raw_line in path.read_text("latin1", errors="replace").splitlines():
        line = raw_line.strip()
        if not line.startswith("#define "):
            continue
        parts = line.split()
        if len(parts) < 3:
            continue
        name = parts[1]
        try:
            value = int(parts[2])
        except ValueError:
            continue
        effects.setdefault(value, name)
    return effects


def decode_item_entry(blob: bytes, item_id: int) -> dict[str, object]:
    offset = item_id * ITEMLIST_ENTRY_SIZE
    raw = bytes(b ^ ITEMLIST_XOR for b in blob[offset : offset + ITEMLIST_ENTRY_SIZE])
    fmt = "<64s" + "h" * 8 + "h" * (MAX_STATICEFFECT * 2) + "i" + "h" * 4
    values = struct.unpack(fmt, raw)

    name = values[0].split(b"\0", 1)[0].decode("latin1", errors="replace")
    effects = []
    base = 9
    for idx in range(MAX_STATICEFFECT):
        effect_type = values[base + idx * 2]
        effect_value = values[base + idx * 2 + 1]
        effects.append((effect_type, effect_value))

    return {
        "name": name,
        "mesh": values[1],
        "texture": values[2],
        "visual_effect": values[3],
        "req_lvl": values[4],
        "req_str": values[5],
        "req_int": values[6],
        "req_dex": values[7],
        "req_con": values[8],
        "effects": effects,
        "price": values[33],
        "unique": values[34],
        "pos": values[35],
        "extra": values[36],
        "grade": values[37],
    }


def encode_csv_line(item_id: int, item: dict[str, object], effect_names: dict[int, str]) -> str:
    fields = [
        str(item_id),
        str(item["name"]),
        f"{item['mesh']}.{item['texture']}",
        f"{item['req_lvl']}.{item['req_str']}.{item['req_int']}.{item['req_dex']}.{item['req_con']}",
        str(item["unique"]),
        str(item["price"]),
        str(item["pos"]),
        str(item["extra"]),
        str(item["grade"]),
    ]

    for effect_type, effect_value in item["effects"]:
        if effect_type == 0:
            continue
        fields.append(effect_names.get(effect_type, f"EF_UNKNOWN_{effect_type}"))
        fields.append(str(effect_value))

    return ",".join(fields)


def main() -> int:
    parser = argparse.ArgumentParser(description="Exporta ItemList.bin para ItemList.csv.")
    parser.add_argument("input_bin", type=Path, help="Caminho do ItemList.bin")
    parser.add_argument("output_csv", type=Path, help="Caminho de saida do CSV")
    parser.add_argument(
        "--effect-header",
        type=Path,
        default=Path("LinuxServer/Chengdu/tmsrv/win_src/Code/ItemEffect.h"),
        help="Caminho do ItemEffect.h",
    )
    parser.add_argument(
        "--include-empty",
        action="store_true",
        help="Inclui entradas vazias no CSV",
    )
    args = parser.parse_args()

    effect_names = parse_effect_names(args.effect_header)
    blob = args.input_bin.read_bytes()

    lines: list[str] = []
    for item_id in range(MAX_ITEMLIST):
        item = decode_item_entry(blob, item_id)
        if not args.include_empty and not item["name"]:
            continue
        lines.append(encode_csv_line(item_id, item, effect_names))

    args.output_csv.parent.mkdir(parents=True, exist_ok=True)
    args.output_csv.write_text("\n".join(lines) + "\n", encoding="latin1", errors="replace")

    print(f"Entradas exportadas: {len(lines)}")
    print(f"Saida: {args.output_csv}")
    return 0


if __name__ == "__main__":
    raise SystemExit(main())
 

Editado por kernellpanic
Link para o comentário
Compartilhar em outros sites

6 horas atrás, CerolFinin disse:

é dele mesmo kkk,ele que aplica varios golpes kkk

Tenho a  base que ele liberou. Tem mais bugs que código. Deve ser um recurso.
Se eu conseguir consertar eu libero.
 

Link para o comentário
Compartilhar em outros sites

Em 10/04/2026 em 15:00, junzzzz26 disse:

sorry im wrong, the correct question to you is how to open like Server.sln to edit the source code. thank you

Open VSCODE, TRAE IDE or CURSOR and open the project folder containing the source code.

Link para o comentário
Compartilhar em outros sites

19 horas atrás, 3118886 disse:

Pode rodar, mas tem vazamento de memória muito forte

Sim. Esse muito forte ainda tá light comparado com o "Original".
Fiz mais melhorias e depois eu atualizo aqui.

Em 13/04/2026 em 13:29, junzzzz26 disse:

i see but dont have source for client bro,.

You`re right.

É necessário se cadastrar para acessar o conteúdo.

  • Curtir 13
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

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.