Ir para conteúdo
  • Cadastre-se

OTClient [otcv8] Como utilizar - Ip fixo, spr, encrypt, auto update


Posts Recomendados

Muchas gracias amigo por responder, ahora adjuntaré aquí mi archivo "init.lua", "advanced_updater", y una captura de pantalla para que puedas ver la carpeta api

 

 

"init.lua"

 

             

-- If you don't use updater or other service, set it to updater = ""
Services = {
  website = "http://www.vagosclub.cl/", -- currently not used
  updater = "http://www.vagosclub.cl/api/updater_advanced.php",
  stats = "",
  crash = "",
  feedback = "",
  status = ""
}

-- Servers accept http login url, websocket login url or ip:port:version
Servers = {
  VagosClub = "www.vagosclub.cl:7171:860"
}

--USE_NEW_ENERGAME = true -- uses entergamev2 based on websockets instead of entergame
ALLOW_CUSTOM_SERVERS = false -- if true it shows option ANOTHER on server list

g_app.setName("VagosClub V.1.0.0")
-- CONFIG END

-- print first terminal message

if not g_resources.directoryExists("/data") then
  g_logger.fatal("Data dir doesn't exist.")
end

if not g_resources.directoryExists("/modules") then
  g_logger.fatal("Modules dir doesn't exist.")
end

-- settings
g_configs.loadSettings("/config.otml")

-- set layout
local settings = g_configs.getSettings()
local layout = DEFAULT_LAYOUT
if g_app.isMobile() then
  layout = "mobile"
elseif settings:exists('layout') then
  layout = settings:getValue('layout')
end
g_resources.setLayout(layout)

-- load mods
g_modules.discoverModules()
g_modules.ensureModuleLoaded("corelib")
  
local function loadModules()
  -- libraries modules 0-99
  g_modules.autoLoadModules(99)
  g_modules.ensureModuleLoaded("gamelib")

  -- client modules 100-499
  g_modules.autoLoadModules(499)
  g_modules.ensureModuleLoaded("client")

  -- game modules 500-999
  g_modules.autoLoadModules(999)
  g_modules.ensureModuleLoaded("game_interface")

  -- mods 1000-9999
  g_modules.autoLoadModules(9999)
end

-- report crash
if type(Services.crash) == 'string' and Services.crash:len() > 4 and g_modules.getModule("crash_reporter") then
  g_modules.ensureModuleLoaded("crash_reporter")
end

-- run updater, must use data.zip
if type(Services.updater) == 'string' and Services.updater:len() > 4 
  and g_resources.isLoadedFromArchive() and g_modules.getModule("updater") then
  g_modules.ensureModuleLoaded("updater")
  return Updater.init(loadModules)
end

loadModules()

 

UPDATER_ADVANCED

 

<?php
// CONFIG
$files_dir = "/var/htdocs/api/files";
$files_url = "http://www.vagosclub.cl/api/files";
$files_and_dirs = array("init.lua", "data", "modules", "layouts");
$checksum_file = "checksums.txt";
$checksum_update_interval = 60; // seconds
$binaries = array(
    "WIN32-WGL" => "otclient_gl.exe",
    "WIN32-EGL" => "otclient_dx.exe",
    "WIN32-WGL-GCC" => "otclient_gcc_gl.exe",
    "WIN32-EGL-GCC" => "otclient_gcc_dx.exe",
    "X11-GLX" => "otclient_linux",
    "X11-EGL" => "otclient_linux",
    "ANDROID-EGL" => "", // we can't update android binary
    "ANDROID64-EGL" => "" // we can't update android binary
);
// CONFIG END

function sendError($error) {
    echo(json_encode(array("error" => $error)));
    die();    
}

$data = json_decode(file_get_contents("php://input"));
//if(!$data) {
//    sendError("Invalid input data");
//}

$version = $data->version ?: 0; // APP_VERSION from init.lua
$build = $data->build ?: ""; // 2.4, 2.4.1, 2.5, etc
$os = $data->os ?: "unknown"; // android, windows, mac, linux, unknown
$platform = $data->platform ?: ""; // WIN32-WGL, X11-GLX, ANDROID-EGL, etc
$args = $data->args; // custom args when calling Updater.check()
$binary = $binaries[$platform] ?: "";

$forVersion = "";
if($args && $args->version) {
    $forVersion = strval($args->version);
}

$cache = null;
$cache_file = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $checksum_file;
if (file_exists($cache_file) && (filemtime($cache_file) + $checksum_update_interval > time())) {
    $cache = json_decode(file_get_contents($cache_file), true);
}
if(!$cache) { // update cache
    $dir = realpath($files_dir);
    $rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS));
    $cache = array(); 
    foreach ($rii as $file) {
        if (!$file->isFile())
            continue;
        $path = str_replace($dir, '', $file->getPathname());
        $path = str_replace(DIRECTORY_SEPARATOR, '/', $path);
        $cache[$path] = hash_file("crc32b", $file->getPathname()); 
    }
    file_put_contents($cache_file . ".tmp", json_encode($cache));
    rename($cache_file . ".tmp", $cache_file);
}
$ret = array("url" => $files_url, "files" => array(), "keepFiles" => empty($forVersion) ? false : true);
foreach($cache as $file => $checksum) {
    $base = trim(explode("/", ltrim($file, "/"))[0]); 
    if(strpos($file, "data/things") !== false && (empty($forVersion) || strpos($file, $forVersion) === false)) {
        continue;
    }
    if(in_array($base, $files_and_dirs)) {
        $ret["files"][$file] = $checksum;
    }
    if($base == $binary && !empty($binary)) {
        $ret["binary"] = array("file" => $file, "checksum" => $checksum);
    }
}

echo(json_encode($ret, JSON_PRETTY_PRINT));

?>

 

FILES

 

 

Sin título.png

muito obrigado antecipadamente amigo @marcoshps11

 

Editado por vagosclub2 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Respostas 95
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

* Áudio de saudação *   Neste tutorial, irei ensinar alguns passos inicias para utilizar o OTClientV8   1º Passo: Como fixar ip e colocar a spr no local correto   - Faço

a utilização e testes que fiz foram em linux, utilizando nginx pensei que você ainda soubesse como publicou isso <- no caso o problema é algo com seu webserver, por isso não sei te informar, c

fiquei esperando surgir uma voz bonita mas nem audio tem, decepcionado.. Obrigado pelo guia @marcoshps11, otcv8 é muito bacana, eu sempre uso quando precisa logar em algum Ot. Com certeza va

Posted Images

3 horas atrás, XGaduX disse:

@marcoshps11 como que criptografa a versão mobile?

 

Faça o mesmo processo, a diferença é que você vai substituir os arquivos que estão no data do mobile pelo o que você criptografou no pc

22 minutos atrás, vagosclub2 disse:

Muchas gracias amigo por responder, ahora adjuntaré aquí mi archivo "init.lua", "advanced_updater", y una captura de pantalla para que puedas ver la carpeta api

 

 

"init.lua"

 


             

-- If you don't use updater or other service, set it to updater = ""
Services = {
  website = "http://www.vagosclub.cl/", -- currently not used
  updater = "http://www.vagosclub.cl/api/updater_advanced.php",
  stats = "",
  crash = "",
  feedback = "",
  status = ""
}

-- Servers accept http login url, websocket login url or ip:port:version
Servers = {
  VagosClub = "www.vagosclub.cl:7171:860"
}

--USE_NEW_ENERGAME = true -- uses entergamev2 based on websockets instead of entergame
ALLOW_CUSTOM_SERVERS = false -- if true it shows option ANOTHER on server list

g_app.setName("VagosClub V.1.0.0")
-- CONFIG END

-- print first terminal message

if not g_resources.directoryExists("/data") then
  g_logger.fatal("Data dir doesn't exist.")
end

if not g_resources.directoryExists("/modules") then
  g_logger.fatal("Modules dir doesn't exist.")
end

-- settings
g_configs.loadSettings("/config.otml")

-- set layout
local settings = g_configs.getSettings()
local layout = DEFAULT_LAYOUT
if g_app.isMobile() then
  layout = "mobile"
elseif settings:exists('layout') then
  layout = settings:getValue('layout')
end
g_resources.setLayout(layout)

-- load mods
g_modules.discoverModules()
g_modules.ensureModuleLoaded("corelib")
  
local function loadModules()
  -- libraries modules 0-99
  g_modules.autoLoadModules(99)
  g_modules.ensureModuleLoaded("gamelib")

  -- client modules 100-499
  g_modules.autoLoadModules(499)
  g_modules.ensureModuleLoaded("client")

  -- game modules 500-999
  g_modules.autoLoadModules(999)
  g_modules.ensureModuleLoaded("game_interface")

  -- mods 1000-9999
  g_modules.autoLoadModules(9999)
end

-- report crash
if type(Services.crash) == 'string' and Services.crash:len() > 4 and g_modules.getModule("crash_reporter") then
  g_modules.ensureModuleLoaded("crash_reporter")
end

-- run updater, must use data.zip
if type(Services.updater) == 'string' and Services.updater:len() > 4 
  and g_resources.isLoadedFromArchive() and g_modules.getModule("updater") then
  g_modules.ensureModuleLoaded("updater")
  return Updater.init(loadModules)
end

loadModules()

 

UPDATER_ADVANCED

 


<?php
// CONFIG
$files_dir = "/var/htdocs/api/files";
$files_url = "http://www.vagosclub.cl/api/files";
$files_and_dirs = array("init.lua", "data", "modules", "layouts");
$checksum_file = "checksums.txt";
$checksum_update_interval = 60; // seconds
$binaries = array(
    "WIN32-WGL" => "otclient_gl.exe",
    "WIN32-EGL" => "otclient_dx.exe",
    "WIN32-WGL-GCC" => "otclient_gcc_gl.exe",
    "WIN32-EGL-GCC" => "otclient_gcc_dx.exe",
    "X11-GLX" => "otclient_linux",
    "X11-EGL" => "otclient_linux",
    "ANDROID-EGL" => "", // we can't update android binary
    "ANDROID64-EGL" => "" // we can't update android binary
);
// CONFIG END

function sendError($error) {
    echo(json_encode(array("error" => $error)));
    die();    
}

$data = json_decode(file_get_contents("php://input"));
//if(!$data) {
//    sendError("Invalid input data");
//}

$version = $data->version ?: 0; // APP_VERSION from init.lua
$build = $data->build ?: ""; // 2.4, 2.4.1, 2.5, etc
$os = $data->os ?: "unknown"; // android, windows, mac, linux, unknown
$platform = $data->platform ?: ""; // WIN32-WGL, X11-GLX, ANDROID-EGL, etc
$args = $data->args; // custom args when calling Updater.check()
$binary = $binaries[$platform] ?: "";

$forVersion = "";
if($args && $args->version) {
    $forVersion = strval($args->version);
}

$cache = null;
$cache_file = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $checksum_file;
if (file_exists($cache_file) && (filemtime($cache_file) + $checksum_update_interval > time())) {
    $cache = json_decode(file_get_contents($cache_file), true);
}
if(!$cache) { // update cache
    $dir = realpath($files_dir);
    $rii = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS));
    $cache = array(); 
    foreach ($rii as $file) {
        if (!$file->isFile())
            continue;
        $path = str_replace($dir, '', $file->getPathname());
        $path = str_replace(DIRECTORY_SEPARATOR, '/', $path);
        $cache[$path] = hash_file("crc32b", $file->getPathname()); 
    }
    file_put_contents($cache_file . ".tmp", json_encode($cache));
    rename($cache_file . ".tmp", $cache_file);
}
$ret = array("url" => $files_url, "files" => array(), "keepFiles" => empty($forVersion) ? false : true);
foreach($cache as $file => $checksum) {
    $base = trim(explode("/", ltrim($file, "/"))[0]); 
    if(strpos($file, "data/things") !== false && (empty($forVersion) || strpos($file, $forVersion) === false)) {
        continue;
    }
    if(in_array($base, $files_and_dirs)) {
        $ret["files"][$file] = $checksum;
    }
    if($base == $binary && !empty($binary)) {
        $ret["binary"] = array("file" => $file, "checksum" => $checksum);
    }
}

echo(json_encode($ret, JSON_PRETTY_PRINT));

?>

 

FILES

 

 

Sin título.png


Aparentemente é um problema ou com a versão do xampp ou versão do PHP, você pode acessar o link do updater pelo navegar e verificar os erros

Link para o post
Compartilhar em outros sites
29 minutos atrás, marcoshps11 disse:

 

Haz el mismo proceso, la diferencia es que reemplazarás los archivos que están en los datos del móvil por el que encriptaste en la pc


Aparentemente é um problema ou com a versão do xampp ou versão do PHP, você pode acessar o link do updater pelo navegar e verificar os erros

 

Obrigado por responder amigo, acredite, estou tentando ver esse tópico há 2 dias, mas gostaria de saber de que tipo de xampp vou precisar? , Estou usando o ZNOTE ACC. Isso influencia alguma coisa?

Estou usando a versão XAMPP:

xampp-windows-x64-7.3.27-0-VC15-installer

Espero que você possa me ajudar. Muito obrigado antecipadamente @marcoshps11

Link para o post
Compartilhar em outros sites
52 minutos atrás, vagosclub2 disse:

 

Obrigado por responder amigo, acredite, estou tentando ver esse tópico há 2 dias, mas gostaria de saber de que tipo de xampp vou precisar? , Estou usando o ZNOTE ACC. Isso influencia alguma coisa?

Estou usando a versão XAMPP:

xampp-windows-x64-7.3.27-0-VC15-installer

Espero que você possa me ajudar. Muito obrigado antecipadamente @marcoshps11

 

isso foge do meu conhecimento, é uma questão web, fica aberto caso alguém da área posso ajuda-lo 

@Endless talvez saiba

Editado por marcoshps11 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
49 minutos atrás, marcoshps11 disse:

 

isso foge do meu conhecimento, é uma questão web, fica aberto caso alguém da área posso ajuda-lo 

@Endless talvez saiba

oh amigo, pensei que você ainda soubesse como publicou isso ... mas quais programas você recomenda usar para fazer como está? @marcoshps11

Link para o post
Compartilhar em outros sites
17 minutos atrás, vagosclub2 disse:

oh amigo, pensei que você ainda soubesse como publicou isso ... mas quais programas você recomenda usar para fazer como está? @marcoshps11

 

a utilização e testes que fiz foram em linux, utilizando nginx

pensei que você ainda soubesse como publicou isso <- no caso o problema é algo com seu webserver, por isso não sei te informar, como falei, foge da minha área ( web ) 

Link para o post
Compartilhar em outros sites
33 minutos atrás, marcoshps11 disse:

 

a utilização e testes que fiz foram em linux, utilizando nginx

pensei que você ainda soubesse como publicou isso <- no caso o problema é algo com seu webserver, por isso não sei te informar, como falei, foge da minha área ( web ) 

talvez seja porque eu trabalho com WINDOWS

2 horas atrás, marcoshps11 disse:

 

a utilização e testes que fiz foram em linux, utilizando nginx

pensei que você ainda soubesse como publicou isso <- no caso o problema é algo com seu webserver, por isso não sei te informar, como falei, foge da minha área ( web ) 

Olha, eu encontrei esse erro, você acha que pode me orientar?

 


Notice: Trying to get property 'version' of non-object in C:\xampp\htdocs\api\updater.php on line 30

Notice: Trying to get property 'build' of non-object in C:\xampp\htdocs\api\updater.php on line 31

Notice: Trying to get property 'os' of non-object in C:\xampp\htdocs\api\updater.php on line 32

Notice: Trying to get property 'platform' of non-object in C:\xampp\htdocs\api\updater.php on line 33

Notice: Trying to get property 'args' of non-object in C:\xampp\htdocs\api\updater.php on line 34

Notice: Undefined index: in C:\xampp\htdocs\api\updater.php on line 35

Fatal error: Uncaught RuntimeException: Directory name must not be empty. in C:\xampp\htdocs\api\updater.php:44 Stack trace: #0 C:\xampp\htdocs\api\updater.php(44): RecursiveDirectoryIterator->__construct('') #1 {main} thrown in C:\xampp\htdocs\api\updater.php on line 44

 

Link para o post
Compartilhar em outros sites
16 horas atrás, vagosclub2 disse:

talvez seja porque eu trabalho com WINDOWS

Olha, eu encontrei esse erro, você acha que pode me orientar?

 



Notice: Trying to get property 'version' of non-object in C:\xampp\htdocs\api\updater.php on line 30

Notice: Trying to get property 'build' of non-object in C:\xampp\htdocs\api\updater.php on line 31

Notice: Trying to get property 'os' of non-object in C:\xampp\htdocs\api\updater.php on line 32

Notice: Trying to get property 'platform' of non-object in C:\xampp\htdocs\api\updater.php on line 33

Notice: Trying to get property 'args' of non-object in C:\xampp\htdocs\api\updater.php on line 34

Notice: Undefined index: in C:\xampp\htdocs\api\updater.php on line 35

Fatal error: Uncaught RuntimeException: Directory name must not be empty. in C:\xampp\htdocs\api\updater.php:44 Stack trace: #0 C:\xampp\htdocs\api\updater.php(44): RecursiveDirectoryIterator->__construct('') #1 {main} thrown in C:\xampp\htdocs\api\updater.php on line 44

 

 

Maninho, pela 3º vez vou te falar que isso é questão web e não é a minha área. 

Link para o post
Compartilhar em outros sites

Estou com um problema q o personagem fica no teleport mas n é teleportado, após subir no teleport

o jogo freeza e tem q deslogar para voltar, qndo volta ta na location do teleport

 

image.thumb.png.45b690acc2350bfb403e5396f028563e.png

 

 

EDIT: CONSEGUI RESOLVER> 

 

Editado por Orientalz (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 3 weeks later...

olá. Estava a procura desse cliente, e só foi pesquisar que encontrei esse tutorial, estou tentando colocar um server on. baixei uma versão 1.4 do tfs e tava suave, eu tava usando um otclient antigo, porém quando tento entrar no server com esse cliente, as sprites bugam, meio que o mapa fica com várias linhas, e a cada passo tenho que deslogar pra voltar. alguma forma de resolver? supostamente o things do 10.98 é a mesma que já veio nesse ot. mas buga mesmo assim. 

Link para o post
Compartilhar em outros sites
  • 1 month later...
Em 02/06/2021 em 09:32, Standard disse:

É possível aumentar o tamanho da tela desse OTClient v8 ? (extender a tela) ?

 

Sim, ele já tem essa feature pronta, basta configurar o seu servidor para isso.

no git do tfs v8 já tem um commit com a modificação necessária, só reproduzir em sua base e modificar caso necessário 

Link para o post
Compartilhar em outros sites
Em 07/06/2021 em 10:54, marcoshps11 disse:

 

Sim, ele já tem essa feature pronta, basta configurar o seu servidor para isso.

no git do tfs v8 já tem um commit com a modificação necessária, só reproduzir em sua base e modificar caso necessário 

 

Só que todos os tutoriais que eu vi é necessário mudar na source, e esse OTClient ai não foram liberadas 100% das sources né, ou estou enganado ?

Link para o post
Compartilhar em outros sites
28 minutos atrás, Standard disse:

 

Só que todos os tutoriais que eu vi é necessário mudar na source, e esse OTClient ai não foram liberadas 100% das sources né, ou estou enganado ?

 

Então, conforme eu falei, o otclientV8 "já tem essa feature PRONTA", basta APENAS alterar a SOURCE DO OTSERV e essa alteração necessária está separado em um commit do tfs do v8

Link para o post
Compartilhar em outros sites
55 minutos atrás, marcoshps11 disse:

 

Então, conforme eu falei, o otclientV8 "já tem essa feature PRONTA", basta APENAS alterar a SOURCE DO OTSERV e essa alteração necessária está separado em um commit do tfs do v8

 

Ah sim, só que esse commit é para tfs 1.3, teria algum tutorial para tfs 0.4 para o OTClient v8 ? Já estou procurando aqui mas se você souber como achar de uma maneira mais fácil e mandar eu agradeço

Editado por Standard (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
6 minutos atrás, Standard disse:

 

Ah sim, só que esse commit é para tfs 1.3, teria algum tutorial para tfs 0.4 para o OTClient v8 ? Já estou procurando aqui mas se você souber como achar de uma maneira mais fácil e mandar eu agradeço

 

desconheço um tutorial especificamente para esta versão, mas certamente a conversão será relativamente simples de fazer

Link para o post
Compartilhar em outros sites
7 minutos atrás, marcoshps11 disse:

 

desconheço um tutorial especificamente para esta versão, mas certamente a conversão será relativamente simples de fazer

 

Eu tenho um pouco de experiência já em modificar as sources e estou tentando aqui, mas não ta dando certo não, e quando ocorre vários erros igual está ocorrendo ai eu já me perco kkkk

Link para o post
Compartilhar em outros sites
  • 3 months later...
5 horas atrás, Standard disse:

A parte do update funciona se eu quiser testar colocando o site como se estivesse no meu PC ? Usando XAMPP e o os links como "localhost/api/files" por exemplo

 

Sim, basta especificar o path corretamente 

2 horas atrás, underpunk disse:

essa encriptação encripta tambem a spr?

 

edit? ja tirei a duvida, sim encrypta a spr tambem.

 

?

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por Jordan422
      Fala comunidade do Tibia King! Eu sei que tem alguém ai escondido que manja muito de modules do Otclient... Se você é essa pessoa, então pode me ajudar e ainda ser pago por isso!
       
      Estou com um projeto de servidor 8.0 já rodando a mais de 2 meses, old school 8.0 com Prey System. Porém essa prey está faltando três funcionalidades do global que são essenciais ( marcado em vermelho na imagem )
       
      Isso ai já tá meio caminho andado, já estou com o código responsável por essas 3 funcionalidades na source e no módulo da prey do meu TFS, só falta passar essas informações para o Otclient.
       
      Ta interessado? Me adiciona no discord: mythh9257
       
       
       
      Nosso projeto: https://tibiaremains.com/
       

    • Por maikon1993
      Fala galerinha de boas ?
       
      Preciso de ajuda, preciso de um macro para otcV8, que faça um item dar use no outro.
      Exemplo: Tem um item no servidor "spellswand" e ela é usada para vender item, dando "use" nela e no item que quer vender, queria deixar isso automático, se alguém poder me ajudar agradeço.
    • Por AddroJhonny
      Andei buscando de tudo que é forma para que o minimap fique com a imagem já liberada, assim como é no PxG. Porém, não encontrei em nenhum lugar alguma instrução. Comecei a mexer no arquivo minimap.lua e consegui avançar em algo.
       
      Meu script ficou assim:
      function updateCameraPosition() local player = g_game.getLocalPlayer() if not player then return end local pos = player:getPosition() if not pos then return end if not minimapWidget:recursiveGetChildById('posLabel') then local minimap = g_ui.createWidget('Minimap', minimapWidget) minimapWidget:setImageSource('/mapa/pisos/piso1') minimapWidget:setId('posLabel') minimapWidget:setOpacity(0.3) minimapWidget:centerInPosition(map, {x = 1015, y=1012, z=7}) end if not minimapWidget:isDragging() then if not fullmapView then minimapWidget:setCameraPosition(player:getPosition()) end minimapWidget:setCrossPosition(player:getPosition()) end minimapPos = minimapWindow:recursiveGetChildById('posLabel') minimapPos:setText('X:'..pos.x..' Y:'..pos.y..' Z:'..pos.z) if minimapWidget:getCameraPosition().z ~= 7 then local minimap = minimapWidget:recursiveGetChildById('posLabel') minimap:setVisible(false) minimapWidget:setColor('black') end end  
      Agora a imagem realmente está aparecendo no minimap com transparência... e quase perfeito. Mas ainda falta conseguir fazer ela acompanhar a posição do player no lugar de ficar aberto por inteiro.
       
      Segue como ficou:
       

       
      Alguém consegue ajudar a melhor maneira de fazer isso? Ou se fiz errado também...
       
      Ty.
    • Por brunei
      Olá galera bom dia , boa tarde e boa noite a todos !
      venho trazer meu primeiro projeto para contribuir com o TK , se trata de um modulo bastante util 
      como é minha primeira vez trazendo algo aqui , talvez eu esqueça de algo , sem enrolação vamos la.

      o modulo é um Shiny Ditto Memory para PDA ,o melhor é que nao precisa de source e é bem simples de instalar !

      1° ponto - Adicionar o memory sistem por TalkAction do @zipter98 (fiz algumas correçoes e melhorias no script para funcionar de uma melhor forma com o modulo)

      em Talkactions.xml adicione a tag :  <talkaction words="/memory;!memory" event="script" value="sdittomemory.lua"/>
       
      2° - Em talkaction/script ,crie um arquivo sdittomemory.lua e cole esse script : 
       
      em : local cd = 2 (em segundos) mude para o numero que desejar como cooldown para efetuar a troca .
      Para efetuar a troca o pokemon precisa esta com os Moves 100% ,caso contrario ira mandar uma mensagem de bloqueio.
       

      3° - em somefunctions.lua adicione essas funçoes !

       
      tem umas correções q eu mesmo fiz no ditto system e shiny ditto system ,e é necessario pro modulo funcionar 100% .

      4° - extraia e adicione o arquivo na pasta Modulos do seu OTClient !

      pronto , com isso vai funcionar o modulo 
       

       
      1 - no icone salvar , vc consegue salvar o pokemon que o ditto esta transformado em cada slot (pokebola) e reverter o ditto.
      2 - no icone check , vc consegue remover uma memoria ou checar quais memorias o seu ditto esta usando.
      3 - e no icone transformar vc transforma em cada memoria salva no s.ditto e tbm consegue reverter para virar um pokemon novo sem usar a memori etc..

      entao é isso galera , espero que seja util .

      CREDITOS :
      @zipter98 
      @usoparagames Eu
      game_memory.rar
    • Por Gryffindori
      Já procurei à fundo mas não achei nada resolvido sobre isso, sempre que vou compilar acaba dando o erro. Alguém tem alguma solução?
       
      Problema - > . C2139 'OTMLNode': an undefined class is not allowed as an argument to compiler intrinsic type trait '__is_convertible_to' (compiling source file ..\src\client\localplayer.cpp) type_traits 325
       


×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo