Tudo que GamerGoiano postou
- [OTX2 8.6] NTO BATTLE (NOVIDADE) ATUALIZADO
-
Liberando portas 7171, 7172 e 8080 no Windows 10 + Modem Vivo
Dica: Linux mais Barato Servidor no EUA é mais barato que no BR, e os players não ficam tão lagados
-
Liberando portas 7171, 7172 e 8080 no Windows 10 + Modem Vivo
@gprada A maioria das provesoras de hoje em dia, não possuem portas liberadas, tem que ligar no provedor Só configurando o roteador não resolve
-
ADAPTAÇÃO NO CLIENTE
Edita o console.lua Função de: desativar/ativar o chat com o CTRL F em um botão: function hotkeyToggleChat() consoleToggleChat:setChecked(not consoleToggleChat:isChecked()) if consoleToggleChat:isChecked() then disableChat() else enableChat() end end Ai no começo na onde ta os outros atalhos, coloca esse: g_keyboard.bindKeyPress('CTRL+F', hotkeyToggleChat)
-
Equipe para Poketibia TFS 1.4 10.98 / 1.5 8.60
Estou afim de fazer um poketibia do 0 (sem pegar nada de PDA / DXP) Tenho conhecimento mediano em C++, C#, Lua e PHP Não sei qual versão vou fazer ainda, será discutido com a equipe Em pauta: TFS 1.4 10.98 / 1.5 8.60 No momento preciso de alguém que me ajude com adição de itens de poketibia no tibia cru para fazer e ficar testando os sistemas. Envie os seguintes dados: Nome: Idade: Contato (Discord ou Whatsapp): Experiência: (Fale sobre algum conhecimento que voce tem)
-
[AJUDA] Potion Exp
Opção 1: local function getPlayerData(guid) if not expPotions.playerData[guid] then expPotions.playerData[guid] = {} for itemId in pairs(potions) do expPotions.playerData[guid][itemId] = {rate = 0, duration = 0} end end return expPotions.playerData[guid] end function expPotions:onUse(cid, item, fromPosition, itemEx, toPosition) local itemId = item.itemid local potion = potions[itemId] if not potion then return false end if getPlayerLevel(cid) < potion.needLevel then doPlayerSendCancel(cid, ('Você precisa ser level %d+ para usar esta potion.'):format(potion.needLevel)) return true end local guid = getPlayerGUID(cid) local playerData = getPlayerData(guid) local expData = playerData[itemId] local now = os.time() if expData.duration > now then doCreatureSay(cid, 'Aguarde o bônus atual acabar para usar novamente.', TALKTYPE_ORANGE_1, false, cid) return true end expData.rate = expData.rate + potion.rate expData.duration = potion.duration + now doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, ('Agora você tem +%d%% de experiência por %s.'):format( potion.rate * 100, string.diff(potion.duration, true) )) doRemoveItem(item.uid, 1) return true end function expPotions:onLogin(cid) local guid = getPlayerGUID(cid) getPlayerData(guid) return true end Opção 2: local function getPlayerData(guid) if not expPotions.playerData[guid] then expPotions.playerData[guid] = {} for itemId in pairs(potions) do expPotions.playerData[guid][itemId] = {rate = 0, duration = 0} end end return expPotions.playerData[guid] end function expPotions:onUse(cid, item, fromPosition, itemEx, toPosition) local itemId = item.itemid local potion = potions[itemId] if not potion then return false end if getPlayerLevel(cid) < potion.needLevel then doPlayerSendCancel(cid, ('Você precisa ser level %d+ para usar esta potion.'):format(potion.needLevel)) return true end local guid = getPlayerGUID(cid) local playerData = getPlayerData(guid) local expData = playerData[itemId] local now = os.time() if expData.duration > now then doCreatureSay(cid, 'Aguarde o bônus atual acabar para usar novamente.', TALKTYPE_ORANGE_1, false, cid) return true end expData.rate = expData.rate + potion.rate expData.duration = potion.duration + now doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, ('Agora você tem +%d%% de experiência por %s.'):format( potion.rate * 100, string.diff(potion.duration, true) )) doRemoveItem(item.uid, 1) -- Salvar as informações na storage Game.setStorageValue(cid, 'expPotion_' .. itemId .. '_rate', expData.rate) Game.setStorageValue(cid, 'expPotion_' .. itemId .. '_duration', expData.duration) return true end function expPotions:onLogin(cid) local guid = getPlayerGUID(cid) local playerData = getPlayerData(guid) -- Restaurar as informações da storage for itemId in pairs(potions) do local rate = Game.getStorageValue(cid, 'expPotion_' .. itemId .. '_rate') local duration = Game.getStorageValue(cid, 'expPotion_' .. itemId .. '_duration') if rate ~= nil and duration ~= nil then playerData[itemId].rate = rate playerData[itemId].duration = duration end end return true end function expPotions:onDeath(cid, corpse, killer) -- Limpar as informações das poções ativas ao morrer local guid = getPlayerGUID(cid) local playerData = getPlayerData(guid) for itemId in pairs(potions) do playerData[itemId].rate = 0 playerData[itemId].duration = 0 Game.setStorageValue(cid, 'expPotion_' .. itemId .. '_rate', nil) Game.setStorageValue(cid, 'expPotion_' .. itemId .. '_duration', nil) end return true end function expPotions:onSay(cid, words, param) local str = 'Experience Potion Combos:\n' local playerData = self.playerData[getPlayerGUID(cid)] if playerData then for itemId, expData in pairs(playerData) do str = str .. ('\n%s - %d%%'):format(getItemInfo(itemId).name, expData.rate * 100) end end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, str) return true end function expPotions:getCombo(cid) local playerData = self.playerData[getPlayerGUID(cid)] local potionsCombo = 1 if playerData then for itemId, expData in pairs(playerData) do potionsCombo = potionsCombo + expData.rate end end return potionsCombo end function expPotions:onLook(cid, thing, position, lookDistance) if not isPlayer(thing) then return false end local combo = self:getCombo(thing) if combo > 1 then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, ('Combo de Experiência: +%d%%'):format((combo - 1) * 100)) end return false end function expPotions:onLogin(cid) local guid = getPlayerGUID(cid) self.playerData[guid] = {} for itemId in pairs(potions) do self.playerData[guid][itemId] = {rate = 0, duration = 0} end return true end function expPotions:onLogout(cid) local guid = getPlayerGUID(cid) self.playerData[guid] = nil return true end function expPotions:onDeath(cid, corpse, killer) local guid = getPlayerGUID(cid) self.playerData[guid] = nil return true end
-
erro nas criaturas
De qual TFS pra qual TFS?
-
Addons Store (duvida)
actions.xml <action uniqueid="12001" event="script" value="outfits.lua"/> -- Hunter outfits.lua function onUse(cid, item, frompos, item2, topos) if item.uid == 12001 then if getPlayerStorageValue(cid, 12010) == -1 then doPlayerSendTextMessage(cid, 21, "You now have the Hunter Outfit!") doPlayerAddOutfitId(cid, 2, 3) setPlayerStorageValue(cid, 12010, 1) doSendMagicEffect(getCreaturePosition(cid), math.random(1, 67)) else doPlayerSendTextMessage(cid, 25, "You Already have the Hunter Outfit.") end end end
-
ALGUEM PODE AJUDAR O SCRIPT SIMPLES
E ta registrado no xml ?
-
ALGUEM PODE AJUDAR O SCRIPT SIMPLES
Ve se ta funcionando esse código abaixo: function onRemoveItem(creature, item, tile, fromPosition, toPosition) local itemid = item.itemid if itemid >= 1 and itemid <= 30000 then Game.sendAnimatedText(creature:getPosition(), getItemName(itemid), TEXTCOLOR_ORANGE) end end
-
Movements script
TEsta ai @Felippe Reine014 local condition = Condition(CONDITION_OUTFIT) condition:setOutfit({lookType=138}) condition:setTicks(-1) function onStepIn(creature, item, position, fromPosition) if not creature:isPlayer() then return false end local prevOutfit = creature:getOutfit() creature:addCondition(condition) local newOutfit = {lookType=138, addons=prevOutfit.addons} creature:setOutfit(newOutfit) return true end function onStepOut(creature, item, position, fromPosition) if not creature:isPlayer() then return false end creature:removeCondition(CONDITION_OUTFIT) local prevOutfit = creature:getOutfit() prevOutfit.lookType=prevOutfit.lookType creature:setOutfit(prevOutfit) return true end
-
(Help) Alguem me ajuda com esse erro
Voce tentou colocar cooldown nas pokebolas, pra evitar esse erro? acho que com o código que te passei ja resolve, pois só vai conseguir usar a pokebola denovo em 3 segundos local cooldown = 3 -- tempo em segundos de exaustão local exhaust = exhaustion.get(cid, 6666) or 0 -- obtém a exaustão atual do jogador if exhaust + cooldown > os.time() then -- se o jogador ainda estiver exausto doPlayerSendCancel(cid, "You must wait "..cooldown.." seconds before using this item again.") -- exibe a mensagem de espera return true -- interrompe a execução da função end exhaustion.set(cid, 6666, os.time() + cooldown) -- define a nova exaustão do jogador
-
(Help) Alguem me ajuda com esse erro
Me manda seu some functions.lua @S H I O N Sabe me dizer o que acontece, o que voce tenta fazer que da o erro luagetcreaturehealth creature not found ?
-
[NPCS] System Erro
@Muvuka posta aqui o código do script do seu npc se voce modificou e do arquivo .lua que ta ocasionando esse erro
-
[AJUDA] Cobrar Taxa na Venda de Char Site
Mande o seu código completo para eu ver como ficou
-
[AJUDA] Cobrar Taxa na Venda de Char Site
Recomende usar VSCODE ou Notepad++ para editar códigos assim, voce comeu alguma letra ali no código @yuriowns
-
[TUTORIAL] Criando site com Znote AAC para TFS 1.2
O Tutorial foi feito por mim, qualquer dúvida pode postar nos comentários. 1. Instale o Xampp atual e instale https://www.apachefriends.org/pt_br/index.html 2. Va em C:\xampp e abra o xampp-control.exe 3. Inicie o Apache e o MySQL 4. Baixe o Znote AAC (É o mais fácil de usar) https://github.com/Znote/ZnoteAAC 5. Va até C:\xampp\htdocs e apague tudo que está la dentro 6. Extraia o site Znote AAC que voce baixou, copia todo o conteúdo e cola dentro da pasta htdocs. Ficando assim: 7. Acesse http://127.0.0.1/phpmyadmin e clique em Novo 8. Escreva o nome do banco de dados, eu escolhi Tibia e no lado direito escolha Agrupamento (Collation) e clique em Criar. 9. Clique no banco de dados que voce criou no menu esquerdo (Tibia) e clique em Importar . 10. Clique em escolher arquivo e selecione o arquivo de banco de dados no seu computador 11. Escolha o arquivo schema.sql que está na pasta tfs 1.2 do servidor do link e clique em Executar (ta no final da página o botão) https://www.xtibia.com/forum/topic/250614-tfs-12-1098-sources-otclient-com-tela-maior/ 12. Acesse http://127.0.0.1/ e copie tudo do quadrado Basta clicar no quadrado e dar CTRL A e CTRL C 13. Volte no phpmyadmin, clique no banco de dados que criamos (Tibia) e clique no botão SQL 14. Cole o conteúdo que voce copiou e clique em executar e espere carregar 15. Va em C:\xampp\htdocs e abra o arquivo config.php "Recomendo abrir com o notepad ++ pra ficar mais didático para principiantes" 16. Faça essas mudanças: Troque a linha 21 e 22 pro titulo e descrição do site. Linha 23 $config['site_url'] = "http://demo.znote.eu"; Troque http://demo.znote.eu por http://127.0.0.1 Linha 26 $config['server_path'] = ''; Coloque dentro de aspas o diretório do seu servidor, por exemplo: 'C:\Users\Braz\Desktop\tfs 1.2 + otclient\tfs 1.2 Linhas 33 $config['sqlUser'] = 'tfs13'; Troca tfs13 por root Linha 36 $config['sqlPassword'] = 'tfs13'; Apague tfs13 Linha 39 $config['sqlDatabase'] = 'tfs13'; Troque tfs13 por Tibia (É o banco de dados que criamos) 17. O site ja está funcionando, agora va na pasta do servidor e abra o config.lua e deixe igual está embaixo e salve. 18. Pronto! Agora seu site vai usar o banco de dados para criar contas e seu servidor está preparado para reconhecer as contas e personagens criados.
-
source sem o .dev
Esses servidores de dragon ball não tem nenhuma modificação na source, basta voce pegar qualquer servidor 8.60 (ja tem o .exe pra abrir o server ai nem precisa compilar) E ai voce só vai precisar converter o Tibia.SPR (gráfico do jogo) pra 8.60 com o object builder Única modificação que pode ter na source é de attackspeed mas da pra refazer mais atualizado Pega esse TFS 04 860 e as dlls, pega o executavel .exe e coloca na pasta do servidor do Dragon Ball Ai voce ja aproveita o Otclient
-
source sem o .dev
Esses servidores de dragon ball não tem nenhuma modificação na source, basta voce pegar qualquer TFS 0.4 8.60 ou TFS 1.0 8.60 (ja tem o .exe pra abrir o server ai nem precisa compilar) E ai voce só vai precisar converter o Tibia.SPR (gráfico do jogo) pra 8.60 com o object builder Única modificação que pode ter na source é de attackspeed mas da pra refazer mais atualizado
-
source sem o .dev
Baixa algum projeto atualizado, voce quer abrir servidor de que?
-
[PEDIDO] PAGAMENTO AUTOMÁTICO VIA PIX
Vocês precisam se registrar em algum banco tipo MercadoPago, Picpay, etc para ter acesso ao API/TOKENS Esse aqui é um exemplo do Banco Central Tem que trocar: sua_chave_pix e sua_autorizacao <?php // Dados da transação $valor = 10.00; // valor da transação $chavePix = "sua_chave_pix"; // chave Pix do recebedor $descricao = "Pagamento de teste"; // descrição da transação // Monta o payload da transação $payload = [ "valor" => [ "original" => (string) $valor ], "chave" => $chavePix, "solicitacaoPagador" => $descricao ]; // Codifica o payload em JSON $payload = json_encode($payload); // Faz a requisição para a API do Banco Central $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => "https://api-pix.gerencianet.com.br/v2/cob", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => $payload, CURLOPT_HTTPHEADER => [ "Content-Type: application/json", "Authorization: Bearer sua_autorizacao" ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "Erro na requisição: " . $err; } else { $resposta = json_decode($response, true); // Se a requisição foi bem sucedida, exibe o QR Code para o usuário if ($resposta["status"] == "ATIVA") { echo '<img src="' . $resposta["qrcode"]["imagemQrcode"] . '">'; } else { echo "Erro na criação da cobrança: " . $resposta["mensagem"]; } } Além disso, para conseguir o token, tem que se registrar no portal do desenvolvedor para conseguir ClientID e ClientSecret Como conseguir a autorização: <?php // Dados da sua aplicação $clientID = "seu_client_id"; $clientSecret = "seu_client_secret"; // Monta o payload para a obtenção do token $payload = [ "grant_type" => "client_credentials" ]; // Codifica o payload em JSON $payload = json_encode($payload); // Faz a requisição para a API do Banco Central $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => "https://oauth.hm.bb.com.br/oauth/token", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => $payload, CURLOPT_HTTPHEADER => [ "Content-Type: application/json", "Authorization: Basic " . base64_encode($clientID . ":" . $clientSecret) ], ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "Erro na requisição: " . $err; } else { $resposta = json_decode($response, true); // Armazena o token de autorização $token = $resposta["access_token"]; // Usa o token na requisição de pagamento via Pix // ... }
-
erro no console cast
Voce ta ligando o servidor com banco de dados .s3db? @Vitorelias
-
(Help) Alguem me ajuda com esse erro
Coloca 1 linha depois da function onuse Vai adicionar cooldown de 3 segundos no goback Faz o teste e me diz se deu certo @S H I O N local cooldown = 3 -- tempo em segundos de exaustão local exhaust = exhaustion.get(cid, 6666) or 0 -- obtém a exaustão atual do jogador if exhaust + cooldown > os.time() then -- se o jogador ainda estiver exausto doPlayerSendCancel(cid, "You must wait "..cooldown.." seconds before using this item again.") -- exibe a mensagem de espera return true -- interrompe a execução da função end exhaustion.set(cid, 6666, os.time() + cooldown) -- define a nova exaustão do jogador
-
nao consigo soltar magic wall black skull ajuda
Manda o spells.XML e o .lua da spell
-
[AJUDA] Cobrar Taxa na Venda de Char Site
Troca: $players_from_logged_acc = $account_logged->getPlayersList(); $players_from_logged_acc->addOrder(new SQL_Order(new SQL_Field('name'), SQL_Order::ASC)); $main_content .= '<center><center>Select the character you want to sell<br><form action="index.php?subtopic=buychar" method="post"><select name="char">'; foreach ($players_from_logged_acc as $player) { $main_content .= '<option value="' . $player->getName() . '">' . $player->getName() . '</option>'; } $main_content .= '</select>'; $main_content .= '<center>Enter the value in Tibia Coins<br><input type="text" name="price" maxlength="5" size="10" > </center><br>'; $main_content .= '<center><input type="submit" name="submit" value="Sell character"></TD></TR></center>'; $main_content .= '</form> </tbody> Por: $players_from_logged_acc = $account_logged->getPlayersList(); $players_from_logged_acc->addOrder(new SQL_Order(new SQL_Field('name'), SQL_Order::ASC)); $main_content .= '<center><center>Select the character you want to sell<br><form action="index.php?subtopic=buychar" method="post"><select name="char">'; foreach ($players_from_logged_acc as $player) { $main_content .= '<option value="' . $player->getName() . '">' . $player->getName() . '</option>'; } $main_content .= '</select>'; $main_content .= '<center>Enter the value in Tibia Coins<br><input type="text" name="price" maxlength="5" size="10" > </center><br>'; // Verifica se o jogador tem 50 pontos para vender o personagem if($account_logged->getCustomField("points") >= 50) { $main_content .= '<center><input type="submit" name="submit" value="Sell character"></TD></TR></center>'; $main_content .= '</form> </tbody>'; } else { $main_content .= '<center>You need 50 points to sell your character. </center>'; } Agora para remover os 50 pontos do jogador Troque: if ($char && $price && $check == 1) { if (is_numeric(trim($_POST['price']))) { $check2 = $SQL->query("SELECT * FROM `players` WHERE `name` = '$char'"); foreach ($check2 as $re) { $voc = $re['vocation']; $oid = $re['account_id']; } $check1 = $SQL->query("UPDATE `players` SET `account_id` = 1 WHERE `name` = '$char'"); $check3 = $SQL->query("INSERT INTO `sellchar` VALUES ('','$char','$voc','$price','1','$oid')"); $main_content .= '<b><center>Character successfully added to sale, Thanks!</b></center>'; header("Location: index.php?subtopic=buychar"); } else { $main_content .= '<b><center>Price in numbers!!</b></center>'; } } else { $main_content .= '<center><h2>' . $mensagem . '</h2></center>'; } } } Por: if ($char && $price && $check == 1) { if (is_numeric(trim($_POST['price']))) { $check2 = $SQL->query("SELECT * FROM `players` WHERE `name` = '$char'"); foreach ($check2 as $re) { $voc = $re['vocation']; $oid = $re['account_id']; } // Verifica se o jogador tem 50 pontos para vender o personagem if($account_logged->getCustomField("points") >= 50) { // Desconta os 50 pontos do jogador $account_logged->setCustomField("points", $account_logged->getCustomField("points") - 50); $check1 = $SQL->query("UPDATE `players` SET `account_id` = 1 WHERE `name` = '$char'"); $check3 = $SQL->query("INSERT INTO `sellchar` VALUES ('','$char','$voc','$price','1','$oid')"); $main_content .= '<b><center>Character successfully added to sale, Thanks!</b></center>'; header("Location: index.php?subtopic=buychar"); } else { $main_content .= '<b><center>You need 50 points to sell your character.</b></center>'; } } else { $main_content .= '<b><center>Price in numbers!!</b></center>'; } } else { $main_content .= '<center><h2>' . $mensagem . '</h2></center>'; }