
stauro
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
stauro recebeu reputação de MasterteoxBr em Global 8.6 com varias atualizações do 12Mano só ver qual é a numeração do signature do dat e spr no object builder e editar o item editor e o object builder pra aceitar aquela numeração, simples e facil.
Faça a mesma coisa no item editor
-
stauro recebeu reputação de MasterteoxBr em Global 8.6 com varias atualizações do 12Encontrei, procure por: milq.ddns.net
É somente este único ip
-
stauro deu reputação a tvrzerah em Global 8.6 com varias atualizações do 12Só pra mim que deu inúmeros erros na hora de iniciar o servidor?
Monstros faltando Functions faltando e dando erro no console Erro no creaturescripts/login.lua entre outros
-
stauro deu reputação a luanluciano93 em [TFS 1.x] Removendo House por Tempo OFFOlá, esse script é usada para que o player que fique offline pelo tempo editado, perca a house automaticamente.
Em globalevents/scripts/ crie um arquivo chamado doCheckHouses.lua e coloque esse código dentro:
-- <globalevent type="startup" name="doCheckHouses" script="doCheckHouses.lua" /> local function doCheckHouses() local dias = 3 local tempo = os.time() - (dias * 24 * 60 * 60) local registros = db.storeQuery("SELECT `houses`.`owner`, `houses`.`id` FROM `houses`,`players` WHERE `houses`.`owner` != 0 AND `houses`.`owner` = `players`.`id` AND `players`.`lastlogin` <= " .. tempo .. ";") if registros ~= false then local count = 0 print('house leave code') repeat count = count + 1 local owner = result.getNumber(registros, "owner") local houseId = result.getNumber(registros, "id") local house = House(houseId) if house and (owner > 0) then print(house:getName()) house:setOwnerGuid(0) end until not result.next(registros) print('house leave house count:' .. count) result.free(registros) end end function onStartup() addEvent(doCheckHouses, 60 * 1000) return true end A tag do globalevents.xml esta no script como comentário, é só adiciona-lá.
Para editar o tempo (em dias) que se o jogador ficar offline ele perderá a house é nessa linha:
local dias = 3 OBS: Esse script é iniciado junto com o servidor, logo após aparecerá na distro as houses removidas e a quantidade total.
Créditos: Luan e Cristofer.
-
stauro deu reputação a Lyu em EMOTE SPELLS DINÂMICO!Fala clã, tudo bom? Então, vi esse tal emote spells em um servidor e decidi fazer, e também, compartilhá-lo com vocês ?
O que é?
É um código simpleszinho que possibilita players escolherem a cor da mensagem das spells por meio de comando, LARANJA ou AMARELO, como nas imagens abaixo:
Vamos aos códigos..
abra game.cpp, na função playerSaySpell, procure por:
if (result == TALKACTION_BREAK) { if (!g_config.getBoolean(ConfigManager::EMOTE_SPELLS)) { return internalCreatureSay(player, TALKTYPE_SAY, words, false); } else { return internalCreatureSay(player, TALKTYPE_MONSTER_SAY, words, false); } } else if (result == TALKACTION_FAILED) { return true; }
e substitua por:
if (result == TALKACTION_BREAK) { int32_t value; player->getStorageValue(203500, value); return internalCreatureSay(player, value == 1 ? TALKTYPE_MONSTER_SAY : TALKTYPE_SAY, words, false); } else if (result == TALKACTION_FAILED) { return true; }
Beleza, agora precisamos de uma talkaction para fazer a alteração de storage, vamos lá..
data/talkactions/scripts/emotespells.lua:
function onSay(player) local switch = player:getStorageValue(203500) == -1 and 1 or -1 player:sendTextMessage(MESSAGE_INFO_DESCR, 'emote spells: (' .. (switch == 1 and 'monster_say' or 'say') .. ')') player:setStorageValue(203500, switch) end
data/talkactions/talkactions.xml:
<talkaction words="!emotespells" script="emotespells.lua"/>
Agora só compilar as sources e pronto?
Versão do TFS: 1.3
Créditos: Lyu (isme)
-
stauro recebeu reputação de luanluciano93 em [revscript] Trade Offline TFS 1.3+Fala galerinha da TK!!!
Com a grande ajuda do @luanluciano93 adaptamos definitivamente para o TFS 1.3, pois ele havia testado apenas em TFS 1.5!
Segue o arquivo TRADE_OFFLINE.LUA e os arquivos PHP também adaptado para a versão.
Colocar os arquivos paginationClass.php e mysql_db.php na pasta "classes"
Obs: Não esqueça de editar o arquivo mysql_db.php de acordo com a sua database: NOME DA DATABASE e USUÁRIO.
Arquivo tradeoff.php vc joga na pasta "pages"
O arquivo tradeoff.lua vc joga na pasta do seu ot em: data/scripts/talkactions
Em data/lib/core/player.lua vc adiciona a seguinte função:
function Player.removeTotalMoney(self, amount) local moneyCount = self:getMoney() local bankCount = self:getBankBalance() if amount <= moneyCount then self:removeMoney(amount) return true elseif amount <= (moneyCount + bankCount) then if moneyCount ~= 0 then self:removeMoney(moneyCount) local remains = amount - moneyCount self:setBankBalance(bankCount - remains) self:sendTextMessage(MESSAGE_INFO_DESCR, ("Paid %d from inventory and %d gold from bank account. Your account balance is now %d gold."):format(moneyCount, amount - moneyCount, self:getBankBalance())) return true else self:setBankBalance(bankCount - amount) self:sendTextMessage(MESSAGE_INFO_DESCR, ("Paid %d gold from bank account. Your account balance is now %d gold."):format(amount, self:getBankBalance())) return true end end return false end function Player.getTotalMoney(self) return self:getMoney() + self:getBankBalance() end
E é isso galera, bom uso
tradeoff.lua tradeoff.php mysql_db.php paginationClass.php
-
stauro deu reputação a luanluciano93 em [TFS 1.5 - 8.60] STYLLER OT - 2023STYLLER OT - 2023 - TFS 1.5 (8.60)
Olá pessoal, hoje venho apresentar meu projeto open para vocês. Sou muito fã do mapa STYLLER, sempre em horas vagas procurava joga-lo, para quem não conhece: é um servidor estilo baiak com mais RPG, e como tenho me interessado pelas engines 1.X, resolvi criar um projeto de servidor Styller usando o TFS 1.5 para versão 8.60. O projeto está sendo desenvolvido no github (projeto github) onde posto atualizações diárias (changelog). Vocês podem postar dúvidas, erros/bugs, dicas e qualquer outra coisa aqui no tópico ou criar um issue no github. Lembre-se de dar FOLLOW no projeto no github e SEGUIR o projeto aqui no fórum para acompanhar as atualizações.
Informações do Servidor e Sistemas:
Versão: 8.60 Engine: TFS 1.5 MillhioreBT Downgrade - Branch: main (Nov 11, 2023, 104 commits) Informações. Atualizações. Server Info:
Dúvidas, erros, dicas e contribuições:
Caso tenha dúvidas, ou queira resolver algum bug/erro, dar dicas para o projeto, ou também ajudar em sua construção, crie um issue / pull requests pelo github ou use esse tópico.
Website compatível:
ZnoteACC - ranch: v2 (Jul 10, 2022, 613 commits) Créditos:
luanluciano93 GOD Bon (mapa yourots) MillhioreBT, Nekiro e TFS team (pela engine do servidor) leoloko12 (mapa styller) outros Download:
Todos os arquivos, libs e executável (para windows) estão no repositório do projeto no github (que é onde eu atualizo constantemente), basta fazer o download lá e juntar com a primeira parte.
- LINK GITHUB DO PROJETO STYLLER: https://github.com/luanluciano93/styller
Clique em CODE e depois Download ZIP
Imagens:
-
stauro recebeu reputação de Cat em [revscript] Trade Offline TFS 1.3+Eu criei um arquivo lua em data/scripts/talkactions e quando executo o comando em jogo, por exemplo, !tradeoff add, boots of haste acontece esse erro. Não entendi os comandos desse sistema, pois tento colocar valor e tal e aparece a msg da quantidade de itens agrupáveis
-
stauro recebeu reputação de Vodkart em (Resolvido)ESCONDER SAMPLESFala como arrumou seu arrombado ¬¬
-
stauro deu reputação a luanluciano93 em TFS 1.3 - TradeOffEu fiz, mas estou aguardando autorização do dono do post para divulgar.
-
stauro deu reputação a luanluciano93 em Trade Offline V2.0Refiz grande parte do script e atualizei para a versão em revscript (TFS 1.3+). Peço a permissão ao dono do tópico para eu criar um novo tópico do sistema que atualizei ou, se preferir, postar aqui.
-
stauro recebeu reputação de WooX em Erro ao comprar backpack de potions ou runasOlha amigo, de 10 tópicos que eu abro aqui, 9 eu acabo resolvendo sozinho, porque essa comunidade BR só quer cobrar pelo problema, não me ajudam em 99% dos casos. Aprendi quase tudo sozinho!!! Mesmo não sabendo nada de Lua e C++. Então não da nem vontade de falar como resolvi, mas não serei cuzão, porque continuarei abrindo tópicos e a gente nunca sabe o dia de amanhã.
Resolvi da seguinte forma: em data/npc/lib/npcsystem/modules.lua eu alterei tudo que estava como "Item_Shopping_Bag" para "Item_Backpack".
Levei mais de 1 mês pra descobrir isso, data do post é de outubro e estamos em dezembro, é foda viu.
-
stauro recebeu reputação de Under em [Resolvido] Erro site GesiorComo resolve eu não sei, não manjo de programação. Mas com esse configlua.php resolveu o problema:
<?php if(!defined('INITIALIZED')) exit; // NOT SAFE CLASS, LUA CONFIG CAN BE EXECUTED AS PHP CODE class ConfigLUA { private $config; public function __construct($path = false) { if($path) $this->loadFromFile($path); } public function loadFromFile($path) { if(Website::fileExists($path)) { $content = Website::getFileContents($path); $this->loadFromString($content); } else { throw new InvalidArgumentException('#C-2 LUA config file doesn\'t exist. Path: <b>' . $path . '</b>'); } } public function fileExists($path) { return Website::fileExists($path); } public function loadFromString($string) { $lines = explode("\n", $string); if(count($lines) > 0) foreach($lines as $ln => $line) { $tmp_exp = explode('=', $line, 2); if(count($tmp_exp) >= 2) { $key = trim($tmp_exp[0]); if(substr($key, 0, 2) != '--') { $value = trim($tmp_exp[1]); if(is_numeric($value)) $this->config[ $key ] = (float) $value; elseif(in_array(substr($value, 0 , 1), array("'", '"')) && in_array(substr($value, -1 , 1), array("'", '"'))) $this->config[ $key ] = (string) substr(substr($value, 1), 0, -1); elseif(in_array($value, array('true', 'false'))) $this->config[ $key ] = ($value == 'true') ? true : false; else { foreach($this->config as $tmp_key => $tmp_value) // load values definied by other keys, like: dailyFragsToBlackSkull = dailyFragsToRedSkull $value = str_replace($tmp_key, $tmp_value, $value); try { $ret = @eval("return $value;"); if ((string)$ret == '') // = parser error { throw new RuntimeException( '#C-1 - Line <b>' . ($ln + 1) . '</b> of LUA config file is not valid [key: <b>' . $key . '</b>]' ); } $this->config[$key] = $ret; } catch(ParseError $e) { // skip LUA table errors } } } } } } public function getValue($key) { if(isset($this->config[ $key ])) return $this->config[ $key ]; else throw new RuntimeException('#C-3 Config key <b>' . $key . '</b> doesn\'t exist.'); } public function isSetKey($key) { return isset($this->config[ $key ]); } public function getConfig() { return $this->config; } }
-
stauro deu reputação a Toruk em Erro database... Gerando sempre o mesmo idALTER TABLE `z_shop_offer` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1;
-
stauro deu reputação a MatteusDeli em Erro script lootring@stauro Boa noite, tente adicionar essa tag no final antes de fechar o </monster> de qualquer arquivo xml da pasta monster (por exemplo amazon.xml) para ver se vai acontecer esse erro.
No NomeDoEventoRegistrado você coloca o nome que você registrou no login.lua ou no creaturescripts.xml que faz executar esse script.
<script> <event name="NomeDoEventoRegistrado"/> </script>
-
stauro deu reputação a Endless em [Pedido] Proteger Sevidor Contra AtaquePelo visto tu nem procurou no fórum então amigo... Percebi no seu perfil, que cada peido que tu solta, tu vem no fórum pedir papel. Não acha meio errado isso não? Já pensou na possibilidade de estudar 1 pouco sobre o tema? Entender o que é ddos, como se proteger, quais ferramentas existem open sources, ferramentas gratuitas que você pode utilizar e abusar das configurações, firewall que vem no linux que tu poderia configurá-lo de forma simples. Existem N formas de tratar esse tema e que não é apenas "awin como posso corrigir". Todo problema que tu se depara, tu vem no tibiaking pedir pra alguém resolver pra ti, sempre com o argumento "Eu procurei, mas não achei" não amigo, tu não procurou, porque se tivesse procurado, teria achado ¬¬
Abaixo tem 1 tópico sobre 1 mod no apache, vai resolver seu problema, mas pelo amor de deus, começa a procurar as coisas antes de vir no fórum igual 1 parasita apenas para extrair o que você precisa, para VOCÊ ganhar $$...
https://tibiaking.com/forums/topic/102167-proteção-contra-ddos-utilizando-mod_evasive-no-apache/
-
stauro deu reputação a luangop em addManaSpentInPvPZone = falsecondition.cpp
na função
bool ConditionRegeneration::executeCondition(Creature* creature, int32_t interval)
Se não tiver conhecimento de C++, poste aqui a função toda para que eu analise. Lembrando que alterações na source requer compilar novamente depois.
-
stauro deu reputação a luangop em addManaSpentInPvPZone = falseSó essa parte:
bool ConditionRegeneration::executeCondition(Creature* creature, int32_t interval) { internalHealthTicks += interval; internalManaTicks += interval; if(internalHealthTicks >= healthTicks) { internalHealthTicks = 0; creature->changeHealth(healthGain); } if(internalManaTicks >= manaTicks) { internalManaTicks = 0; creature->changeMana(manaGain); } return ConditionGeneric::executeCondition(creature, interval); }
Muda para isso:
bool ConditionRegeneration::executeCondition(Creature* creature, int32_t interval) { internalHealthTicks += interval; internalManaTicks += interval; if(creature->getZone() != ZONE_PROTECTION) { if(internalHealthTicks >= healthTicks) { internalHealthTicks = 0; creature->changeHealth(healthGain); } if(internalManaTicks >= manaTicks) { internalManaTicks = 0; creature->changeMana(manaGain); } } return ConditionGeneric::executeCondition(creature, interval); }
Não esqueça de compilar novamente.
-
stauro deu reputação a Toruk em Alguém sabe me dizer se paypal entrega os premium points automatico? Tipo o retpagseguro.phpEntrega sim. Só procurar por "paypal IPN".
-
stauro deu reputação a Marvok em Castle + Server Save (Guild dominante perde o dominio no server save)em globalevents.xml <globalevent name="nomedoscript" type="shutdown" event="script" value="nomedoscript.lua"/>
Cria um scipt com nome que você quiser: function onShutdown() setGlobalStorageValue(COH_STATUS, 0) return true end
-
stauro deu reputação a Vodkart em [Mod] Automatic Raids [Dia E Hora Marcada]Automatic Raids.xml
<?xml version="1.0" encoding="UTF-8"?> <mod name="Automatic Raids" version="1.0" author="Vodkart And xotservx" contact="tibiaking.com" enabled="yes"> <config name="raids_func"><![CDATA[ days = { ["Monday"] = { ["21:30"] = {nome = "Orshabaal", pos = {fromPosition = {x=184, y=55, z=7},toPosition = {x=188, y=58, z=7}},m = {"5 Fire Devil", "2 Orshabaal"}, Time = 15}, ["21:33"] = {nome = "Dragon", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}},m = {"100 Dragon"}, Time = 20} }, ["Sunday"] = { ["10:08"] = {nome = "Demon", pos = {fromPosition = {x=202, y=11, z=7},toPosition = {x=204, y=12, z=7}}, m = {"1 Demon"}, Time = 15}, ["10:46"] = {nome = "Hydra", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}}, m = {"7 Hydra", "4 Cyclops"}, Time = 20} } } ]]></config> <globalevent name="AutomaticRaids" interval="60" event="script"><![CDATA[ domodlib('raids_func') function onThink(interval, lastExecution) if days[os.date("%A")] then hours = tostring(os.date("%X")):sub(1, 5) tb = days[os.date("%A")][hours] if tb then function removeCreature(tb) for x = ((tb.pos.fromPosition.x)-10), ((tb.pos.toPosition.x)+10) do for y = ((tb.pos.fromPosition.y)-10), ((tb.pos.toPosition.y)+10) do local m = getTopCreature({x=x, y=y, z= tb.pos.fromPosition.z}).uid if m ~= 0 and isMonster(m) then doRemoveCreature(m) end end end end doBroadcastMessage("The invasion of " .. tb.nome .. " started") for _,x in pairs(tb.m) do for s = 1, tonumber(x:match("%d+")) do pos = {x = math.random(tb.pos.fromPosition.x, tb.pos.toPosition.x), y = math.random(tb.pos.fromPosition.y, tb.pos.toPosition.y), z = tb.pos.fromPosition.z} doSummonCreature(x:match("%s(.+)"), pos) end end addEvent(removeCreature, tb.Time*60*1000, tb) end end return true end ]]></globalevent> </mod> Configuração: days = { ["Monday"] = { ["21:30"] = {nome = "Orshabaal", pos = {fromPosition = {x=184, y=55, z=7},toPosition = {x=188, y=58, z=7}},m = {"5 Fire Devil", "2 Orshabaal"}, Time = 1}, ["21:33"] = {nome = "Dragon", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}},m = {"100 Dragon"}, Time = 2} }, ["Tuesday"] = { ["10:44"] = {nome = "Demon", pos = {fromPosition = {x=184, y=55, z=7},toPosition = {x=188, y=58, z=7}}, m = {"5 Demon", "8 Fire Devil"}, Time = 1}, ["10:46"] = {nome = "Hydra", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}}, m = {"7 Hydra", "4 Cyclops"}, Time = 2} } } ["DIA"] = { ["HORA DA INVASÃO"] = {nome = "NOME DA INVASÃO", pos = {começo e final da área}, monster = {"MONSTROS"}, Time = para remover os monstro} } O dia da invasão é colocada entre " " e somente dia em inglês e a primeira letra maiúscula, exemplo: "Saturday" Depois são as hora da invasão, que é colocada entre " " e somente a hora e minuto, segundos não precisa exemplo: "15:00" As Posições estão entre { } adicionando as posições x, y e z, é o começo e final da área exemplo: pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}} fromPosition -- começo da área onde vai acontecer a raid toPosition -- final da área onde vai acontecer a raid Os monters tem um modo especial de configurar, vc coloca entre { }, e cada monstro entre " ", e entre as " " vc adiciona "QUANTIDADE MONSTRO", e para adicionar mais tipos de monstro se separa por virgulas, exemplo: {"40 Water Elemental", "5 Cyclops"} Time é uma função extra, é para caso ninguém participe do evento os monstros não fiquem pelo mapa, e é em minutos, exemplo: Time = 15
-
stauro recebeu reputação de Toruk em NPC Tapete/BarcoNo fim das contas era a coordenada mesmo, mano. Mil perdões hehehe, as vezes a gente precisa de uma segunda voz pra mandar a gente fazer o óbvio. Muito obrigado!