
Histórico de Curtidas
-
Yan Liima recebeu reputação de xainvi em [8.60] TFS 0.4 Rev3996 War & CastSalve salve pessoal, no inicio desse ano estava dando uma estudada e mexendo com a TFS 0.4 rev3884, e vi que havia alguns bugs e que não tinha Cast incluso. Com base nisso decidi atualizar e otimizar a source, já que ainda ela é uma das mais utilizadas no mundo de Otserv. Decidi compartilhar esse meu trabalho com vocês! Acredito que possa ser uma das melhores REV atualmente.
Conto com o seu feedback, caso haja algum bug, algo que tenha que mudar/optimizar, não exite em avisar aqui no tópico. Toda ajuda será bem vinda xD
The Forgotten Server, Tibia Versão: 8.60
O que contém nela?
Dentro da pasta contém o config.lua com todas as tag já adicionadas.
Não esquecam de executar a Query do Cast na sua DB:
Downloads uint8(Effects até 255)
Distro: TheForgottenServer.exe
Src + datapack: Source & Data
Recentes atualizações: GitHub
Downloads uint8 sem o CAST incluso
Distro: TheForgottenServer.exe
Src + datapack: Source & Data
-------------------------------------------------------
Downloads uint16(Effects até 65534)
Distro: TheForgottenServer.exe
Src + datapack: Source & Data
É necessário fazer a modificação do Hexadecimal no cliente. Aqui tem um já pronto: Cliente.exe(com mc) ou Cliente.exe(sem mc) (só será necessario se utilizar a src com o uint 16.)
Lembrado também que precisa utilizar a lib 000-constant.lua deste datapack.
-------------------------------------------------------
Scans:
Distro(uint8) & Distro(uint16)
Source
Cliente
Obs: Os virus detectado é um falso positivo, então não se preocupem!
A distro foi testada em Windows e em Linux Ubuntu 12.04, 14.04, em
ambos funcionaram muito bem!
É compatível com 16 também e o 18.04 é necessário fazer uma alteração que é possível encontrar no post desse tópico.
É possível compilar em Dev Cpp e Visual-Studio.
E para quem se interessa em saber onde se localiza os code do Cast, aqui está uma imagem. Você pode achar procurando por "//CAST"
Façam um ótimo aproveito ?
-
Yan Liima recebeu reputação de Under em [MY-AAC-GATEWAY + GESIOR BY CLYFE] MercadoPago Pix 100% Automático e Livre de SQL Injection (GRATIS!)Como o @Underewardisse é possível usar o HTTP apenas para teste, credenciais em produção o Mercado Pago exige que o site use HTTPS com certificado SSL/TLS válido. E sim, é possível usar HTTPS(443) com certificado no XAMPP bem simples, embora não recomendo usar XAMPP para servidor em produção, já que XAMPP é para ambiente de desenvolvimento. Se você utiliza Windows Server recomendo mudar para IIS do próprio sistema. Como o tópico não se trata de como resolver essa questão no XAMPP, recomendo criar um tópico referente a isso.
Edit: me toquei agora que você mencionou que utiliza xampp em casa, provavelmente seria Windows 10/11. Esquece o Windows Server
-
Yan Liima deu reputação a L3K0T em Instalando o Sistema "max_packets_per_seconds" contra Syn Flood no seu Servidor 0.xInstalando o Sistema max_packets_per_seconds no Servidor 0.x
Passo 1: Modificar o Connection.cpp
Abra o arquivo Connection.cpp. Procure pela função: void Connection::parseHeader(const boost::system::error_code& error) Antes da linha:
--m_pendingRead; try Adicione o seguinte código:
uint32_t timePassed = std::max<uint32_t>(1, (time(NULL) - m_timeConnected) + 1); if ((++m_packetsSent / timePassed) > static_cast<uint32_t>(g_config.getNumber(ConfigManager::MAX_PACKETS_PER_SECOND))) { std::cout << convertIPAddress(getIP()) << " disconnected for exceeding packet per second limit." << std::endl; close(); m_connectionLock.unlock(); return; } if (timePassed > 2) { m_timeConnected = time(NULL); m_packetsSent = 0; }
Passo 2: Modificar o Connection.h
Abra o arquivo Connection.h. Procure pela classe: class Connection : public boost::enable_shared_from_this<Connection>, boost::noncopyable Abaixo de:
m_protocol = NULL; Adicione:
m_packetsSent = 0; m_timeConnected = time(NULL); Abaixo de:
uint32_t m_refCount; Adicione:
time_t m_timeConnected; uint32_t m_packetsSent;
Passo 3: Modificar o ProtocolGame.cpp
Abra o arquivo ProtocolGame.cpp. Procure pela função: void ProtocolGame::parsePacket(NetworkMessage &msg) Abaixo de:
if(!player || !m_acceptPackets || g_game.getGameState() == GAME_STATE_SHUTDOWN || msg.getMessageLength() <= 0) return; Adicione:
uint32_t now = time(NULL); if(m_packetTime != now) { m_packetTime = now; m_packetCount = 0; } ++m_packetCount; if(m_packetCount > (uint32_t)g_config.getNumber(ConfigManager::MAX_PACKETS_PER_SECOND)) return;
Passo 4: Modificar o ProtocolGame.h
Abra o arquivo ProtocolGame.h. Procure por: ProtocolGame(Connection_ptr connection): Protocol(connection) Substitua:
m_eventConnect = 0; por:
m_eventConnect = m_packetCount = m_packetTime = 0; Procure por:
uint32_t m_eventConnect Substitua por:
uint32_t m_eventConnect, m_maxSizeCount, m_packetCount, m_packetTime;
Passo 5: Modificar o ConfigManager.cpp
Abra o arquivo ConfigManager.cpp. Procure por: m_loaded = true; Acima disso, adicione:
m_confNumber[MAX_PACKETS_PER_SECOND] = getGlobalNumber("max_packets_per_second", 500);
Passo 6: Modificar o ConfigManager.h
Abra o arquivo ConfigManager.h. Procure por LAST_NUMBER_CONFIG /* this must be the last one */ Acima disso, adicione:
MAX_PACKETS_PER_SECOND,
Passo 7: Modificar o config.lua
No arquivo config.lua do seu servidor, adicione: max_packets_per_second = 80 Lembrando que, quanto maior o número, mais pacotes a pessoa pode enviar sem ser desconectada.
Medidas para ajudar a proteger o servidor contra ataques de "packet flood" ou "SYN flood". Esses ataques envolvem o envio de um grande número de pacotes ao servidor em um curto espaço de tempo, com a intenção de sobrecarregar os recursos do servidor e causar falhas ou degradação no desempenho. Implementando o sistema max_packets_per_seconds, você está limitando o número de pacotes que cada conexão pode enviar por segundo. Isso ajuda a mitigar o impacto de ataques de flood, desconectando automaticamente conexões que excedem o limite configurado de pacotes por segundo. Essas mudanças melhoram a resiliência do seu servidor contra certos tipos de ataques de negação de serviço (DoS), contribuindo para a estabilidade e segurança do seu OTServer.
Créditos
@L3K0T por esse tutorial formatado.
@Yan Liima [TFS 0.4 REV3996] pelo código
-
Yan Liima recebeu reputação de Gabrielx17 em (Resolvido)Ajuda site Modern tfs 0.4 DBO@OrientalzVai no arquivo que te falei e substitui:
function generate_recovery_key() { $this->load->helper("form"); $ide = new IDE; $ide->requireLogin(); $this->load->model("Account_model");
POR:
function generate_recovery_key() { $this->load->helper("form"); $ide = new IDE; $ide->requireLogin(); $this->load->model("Account_model"); if($this->Account_model->getRecoveryKey($_SESSION['name'])) { alert("<b>You can't generate a new KEY</b>"); return false; }
-
Yan Liima recebeu reputação de L3K0T em [8.60] TFS 0.4 Rev3996 War & CastSalve salve pessoal, no inicio desse ano estava dando uma estudada e mexendo com a TFS 0.4 rev3884, e vi que havia alguns bugs e que não tinha Cast incluso. Com base nisso decidi atualizar e otimizar a source, já que ainda ela é uma das mais utilizadas no mundo de Otserv. Decidi compartilhar esse meu trabalho com vocês! Acredito que possa ser uma das melhores REV atualmente.
Conto com o seu feedback, caso haja algum bug, algo que tenha que mudar/optimizar, não exite em avisar aqui no tópico. Toda ajuda será bem vinda xD
The Forgotten Server, Tibia Versão: 8.60
O que contém nela?
Dentro da pasta contém o config.lua com todas as tag já adicionadas.
Não esquecam de executar a Query do Cast na sua DB:
Downloads uint8(Effects até 255)
Distro: TheForgottenServer.exe
Src + datapack: Source & Data
Recentes atualizações: GitHub
Downloads uint8 sem o CAST incluso
Distro: TheForgottenServer.exe
Src + datapack: Source & Data
-------------------------------------------------------
Downloads uint16(Effects até 65534)
Distro: TheForgottenServer.exe
Src + datapack: Source & Data
É necessário fazer a modificação do Hexadecimal no cliente. Aqui tem um já pronto: Cliente.exe(com mc) ou Cliente.exe(sem mc) (só será necessario se utilizar a src com o uint 16.)
Lembrado também que precisa utilizar a lib 000-constant.lua deste datapack.
-------------------------------------------------------
Scans:
Distro(uint8) & Distro(uint16)
Source
Cliente
Obs: Os virus detectado é um falso positivo, então não se preocupem!
A distro foi testada em Windows e em Linux Ubuntu 12.04, 14.04, em
ambos funcionaram muito bem!
É compatível com 16 também e o 18.04 é necessário fazer uma alteração que é possível encontrar no post desse tópico.
É possível compilar em Dev Cpp e Visual-Studio.
E para quem se interessa em saber onde se localiza os code do Cast, aqui está uma imagem. Você pode achar procurando por "//CAST"
Façam um ótimo aproveito ?
-
Yan Liima recebeu reputação de Maniaco em [8.60] TFS 0.4 Rev3996 War & CastSalve salve pessoal, no inicio desse ano estava dando uma estudada e mexendo com a TFS 0.4 rev3884, e vi que havia alguns bugs e que não tinha Cast incluso. Com base nisso decidi atualizar e otimizar a source, já que ainda ela é uma das mais utilizadas no mundo de Otserv. Decidi compartilhar esse meu trabalho com vocês! Acredito que possa ser uma das melhores REV atualmente.
Conto com o seu feedback, caso haja algum bug, algo que tenha que mudar/optimizar, não exite em avisar aqui no tópico. Toda ajuda será bem vinda xD
The Forgotten Server, Tibia Versão: 8.60
O que contém nela?
Dentro da pasta contém o config.lua com todas as tag já adicionadas.
Não esquecam de executar a Query do Cast na sua DB:
Downloads uint8(Effects até 255)
Distro: TheForgottenServer.exe
Src + datapack: Source & Data
Recentes atualizações: GitHub
Downloads uint8 sem o CAST incluso
Distro: TheForgottenServer.exe
Src + datapack: Source & Data
-------------------------------------------------------
Downloads uint16(Effects até 65534)
Distro: TheForgottenServer.exe
Src + datapack: Source & Data
É necessário fazer a modificação do Hexadecimal no cliente. Aqui tem um já pronto: Cliente.exe(com mc) ou Cliente.exe(sem mc) (só será necessario se utilizar a src com o uint 16.)
Lembrado também que precisa utilizar a lib 000-constant.lua deste datapack.
-------------------------------------------------------
Scans:
Distro(uint8) & Distro(uint16)
Source
Cliente
Obs: Os virus detectado é um falso positivo, então não se preocupem!
A distro foi testada em Windows e em Linux Ubuntu 12.04, 14.04, em
ambos funcionaram muito bem!
É compatível com 16 também e o 18.04 é necessário fazer uma alteração que é possível encontrar no post desse tópico.
É possível compilar em Dev Cpp e Visual-Studio.
E para quem se interessa em saber onde se localiza os code do Cast, aqui está uma imagem. Você pode achar procurando por "//CAST"
Façam um ótimo aproveito ?
-
Yan Liima recebeu reputação de daniel.braga989 em Liberar Personagem No Site Após MissõesUm rapaz me contactou uma vez para criar esse sistema, cheguei a fazer para Modern AAC , fiz por storage obviamente. Ficou show, porém o maluco simplesmente sumiu e não cheguei a enviar e nem receber haha. Mas sim, é uma ideia muito bacana. Os servidores hoje em dia são praticamente todos iguais, nada diferente nada inovador.
-
Yan Liima recebeu reputação de IGlanot em Script de recuperar stamina em zona protegidaUtilizei o script que eu ja tinha feito, apenas editei.
Bom não entendi aquele 0.5, mas vamos la...
em movements/scripts/ crie um arquivo.lua e cole isso dentro:
local config = { addStamina = 1, -- quantos de stamina irá adicionar delay = 1, -- tempo para adicionar a stamina em minutos msg = 0.5, -- Só pra exibição de valor mesmo... } stamina = {} local function staminadd(cid) if not isPlayer(cid) then stamina[cid] = nil return true end doPlayerSetStamina(cid, getPlayerStamina(cid) + config.addStamina) stamina[cid] = addEvent(staminadd, config.delay*60*1000, cid) end function onStepIn(cid) if isPlayer(cid) then if getTileInfo(getThingPos(cid)).protection then if getPlayerStorageValue(cid, sta) < os.time() then doPlayerSendTextMessage(cid, 20, "{Stamina Recovery} Sua stamina começou a se recuperar, o fator de recuperação é de "..config.msg.." em relação as condições normais.") setPlayerStorageValue(cid, sta, os.time() + 300) end stamina[cid] = addEvent(staminadd, config.delay*60*1000, cid) end end return true end function onStepOut(cid) if isPlayer(cid) then stopEvent(stamina[cid]) stamina[cid] = nil end return true end No seu movements.xml coloque isso:
<movevent type="StepIn" itemid="7351" event="script" value="arquivo.lua"/> <movevent type="StepOut" itemid="7351" event="script" value="arquivo.lua"/> Troque: 7351 pelo ID do seu tile(piso). Caso em outras zonas protegida o piso seja diferente só por assim, Ex: 7351-7352...
O delay da mensagem está setado para 5 minutos.
-
Yan Liima recebeu reputação de XFayzera em Os Npcs do meu ot param de pegar, ao dizer hi eles não pegam.Em \data\npc\lib\npcsystem tentem utilizar está LIB:
npchandler.lua
-
Yan Liima recebeu reputação de Gabrielx17 em Ajuda adicionar nova vocaçao Modern ACCé só editar no create.php por o ID da vocação e o nome.
system\application\views\create.php
-
Yan Liima recebeu reputação de Orientalz em Limite de players em guild websiteLimite máximo de players em guild WEBSITE ?
Bom, decidi postar essa modificação que fiz a muito tempo, pois vi que bastante gente queria
Para Modern AAC e vi que ninguém soube ajudar. Como é algo bem simples e ta parado aqui faz tempo
Decidi disponibilizar. Não só para Modern, mas para Gesior também!
Estarei disponibilizando de duas maneiras:
1º Será um valor configurado no proprio config.php, onde determinará o limite máximo de todas as guild.
2º A verificação será feita por DB, onde terá um valor padrão para cada guilda criada, podendo ser alterado o valor de membros maximo.
Ou seja, a guilda número UM pode ter máximo de 50 players, e a guilda número DOIS pode ter o máximo de 100.
Vocês pode ser criativos e vender items que aumenta o limite ou fazer eventos/sorteios para aumentar...
Enfim, vamos lá...
Primeira maneira:
Modern AAC:
Gesior:
Segunda maneira:
Modern AAC:
Gesior:
Prontinho galera!!!
Caso queiram para cmd in-game: LINK
-
Yan Liima deu reputação a BangxD em startupDatabaseOptimizationCaraca mano era isso msm muito obrigado mano vlw +
-
Yan Liima recebeu reputação de BangxD em startupDatabaseOptimization@BangxDisso não tem definido na source para ativar/desativar no config. Então nada do que tu ta tentando fazer irá resolver.
Da uma checada no seu server_config da database. Vê se está tudo certinho lá. Seta a versão da db com o valor 27.
server_config.sql
-
Yan Liima recebeu reputação de Etheron8 em [8.60] TFS 0.4 Rev3996 War & CastSalve salve pessoal, no inicio desse ano estava dando uma estudada e mexendo com a TFS 0.4 rev3884, e vi que havia alguns bugs e que não tinha Cast incluso. Com base nisso decidi atualizar e otimizar a source, já que ainda ela é uma das mais utilizadas no mundo de Otserv. Decidi compartilhar esse meu trabalho com vocês! Acredito que possa ser uma das melhores REV atualmente.
Conto com o seu feedback, caso haja algum bug, algo que tenha que mudar/optimizar, não exite em avisar aqui no tópico. Toda ajuda será bem vinda xD
The Forgotten Server, Tibia Versão: 8.60
O que contém nela?
Dentro da pasta contém o config.lua com todas as tag já adicionadas.
Não esquecam de executar a Query do Cast na sua DB:
Downloads uint8(Effects até 255)
Distro: TheForgottenServer.exe
Src + datapack: Source & Data
Recentes atualizações: GitHub
Downloads uint8 sem o CAST incluso
Distro: TheForgottenServer.exe
Src + datapack: Source & Data
-------------------------------------------------------
Downloads uint16(Effects até 65534)
Distro: TheForgottenServer.exe
Src + datapack: Source & Data
É necessário fazer a modificação do Hexadecimal no cliente. Aqui tem um já pronto: Cliente.exe(com mc) ou Cliente.exe(sem mc) (só será necessario se utilizar a src com o uint 16.)
Lembrado também que precisa utilizar a lib 000-constant.lua deste datapack.
-------------------------------------------------------
Scans:
Distro(uint8) & Distro(uint16)
Source
Cliente
Obs: Os virus detectado é um falso positivo, então não se preocupem!
A distro foi testada em Windows e em Linux Ubuntu 12.04, 14.04, em
ambos funcionaram muito bem!
É compatível com 16 também e o 18.04 é necessário fazer uma alteração que é possível encontrar no post desse tópico.
É possível compilar em Dev Cpp e Visual-Studio.
E para quem se interessa em saber onde se localiza os code do Cast, aqui está uma imagem. Você pode achar procurando por "//CAST"
Façam um ótimo aproveito ?
-
Yan Liima recebeu reputação de ChernobylAtlant em [COMPILAR] o que significa compilar um servidor?Compilar não significa proteger exatamente. Compilar significa unir vários arquivos em um só e transformar todo o código em uma linguagem no qual a máquina irá entender.
No caso do servidor iremos compilar toda a source(código fonte), que são vários arquivos com uma ou mais linguagem, e irá transformar em um único programa...
-
Yan Liima recebeu reputação de Tio Fake em [8.60] TFS 0.4 Rev3996 War & CastSalve salve pessoal, no inicio desse ano estava dando uma estudada e mexendo com a TFS 0.4 rev3884, e vi que havia alguns bugs e que não tinha Cast incluso. Com base nisso decidi atualizar e otimizar a source, já que ainda ela é uma das mais utilizadas no mundo de Otserv. Decidi compartilhar esse meu trabalho com vocês! Acredito que possa ser uma das melhores REV atualmente.
Conto com o seu feedback, caso haja algum bug, algo que tenha que mudar/optimizar, não exite em avisar aqui no tópico. Toda ajuda será bem vinda xD
The Forgotten Server, Tibia Versão: 8.60
O que contém nela?
Dentro da pasta contém o config.lua com todas as tag já adicionadas.
Não esquecam de executar a Query do Cast na sua DB:
Downloads uint8(Effects até 255)
Distro: TheForgottenServer.exe
Src + datapack: Source & Data
Recentes atualizações: GitHub
Downloads uint8 sem o CAST incluso
Distro: TheForgottenServer.exe
Src + datapack: Source & Data
-------------------------------------------------------
Downloads uint16(Effects até 65534)
Distro: TheForgottenServer.exe
Src + datapack: Source & Data
É necessário fazer a modificação do Hexadecimal no cliente. Aqui tem um já pronto: Cliente.exe(com mc) ou Cliente.exe(sem mc) (só será necessario se utilizar a src com o uint 16.)
Lembrado também que precisa utilizar a lib 000-constant.lua deste datapack.
-------------------------------------------------------
Scans:
Distro(uint8) & Distro(uint16)
Source
Cliente
Obs: Os virus detectado é um falso positivo, então não se preocupem!
A distro foi testada em Windows e em Linux Ubuntu 12.04, 14.04, em
ambos funcionaram muito bem!
É compatível com 16 também e o 18.04 é necessário fazer uma alteração que é possível encontrar no post desse tópico.
É possível compilar em Dev Cpp e Visual-Studio.
E para quem se interessa em saber onde se localiza os code do Cast, aqui está uma imagem. Você pode achar procurando por "//CAST"
Façam um ótimo aproveito ?
-
Yan Liima deu reputação a najatheus em Addon System - (PDA)System de addon, funciona da seguinte maneira:
- O item deve ser usado diretamente na pokebola, caso o player deseje colocar um novo addon no pokemon, evoluir ou transformar em shiny, devera ser utilizado o comando: !removeAddon
Instruções:
Insira na pasta datapack/actions/script/
Addon.lua
addonbox.lua
Insira na pasta datapack/lib/
Addon System.lua
Agora, em datapack/actions/actions.xml :
<action itemid="13103;13114;13107" event="script" value="Addon.lua"/> <!-- Aqui estarão os id dos addons que vão ser utilizados na pokebola --> <action itemid="2183" event="script" value="addonbox.lua"/> <!-- Id da addon box -->
Agora, em datapack/actions/scripts/goback.lua, abaixo de :
local pk = getCreatureSummons(cid)[1] if not isCreature(pk) then return true end Insira :
local pk = getCreatureSummons(cid)[1] if not isCreature(pk) then return true end local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) local addon = getItemAttribute(slot.uid, "pokeaddon") addonTransformOutfit(cid, addon, pokemon)
Agora, em datapack/actions/scripts/order.lua, abaixo de :
doSummonMonster(cid, pokemon) local pk = getCreatureSummons(cid)[1]
Insira :
local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) local addon = getItemAttribute(slot.uid, "pokeaddon") addonTransformOutfit(cid, addon, pokemon)
Agora, em datapack/actions/scripts/evolution.lua, abaixo de :
if not isMonster(item2.uid) or not isSummon(item2.uid) then return true end if #getCreatureSummons(cid) > 1 then return true --alterado v1.9 end Insira :
local poke_addon = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "pokeaddon") if(poke_addon)then return doPlayerSendCancel(cid, "Please remove addon before evolution, Command: !removeAddon") end
Agora, em datapack/actions/scripts/sh stone.lua, abaixo de :
if getPlayerSlotItem(cid, 8).uid == itemEx.uid then if #getCreatureSummons(cid) <= 0 then Insira :
local poke_addon = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "pokeaddon") if(poke_addon)then return doPlayerSendCancel(cid, "Please remove addon before evolution, Command: !removeAddon") end Agora, em datapack/creaturescripts/scripts/look.lua, abaixo de :
if getItemAttribute(thing.uid, "gender") == SEX_MALE then table.insert(str, "It is male.") elseif getItemAttribute(thing.uid, "gender") == SEX_FEMALE then table.insert(str, "It is female.") else table.insert(str, "It is genderless.") end Insira :
if(getItemAttribute(thing.uid, "pokeaddon"))then local table_addon = ADDON_CONFIG[getItemAttribute(thing.uid, "pokeaddon")] if not table_addon then return true end table.insert(str, "\n" .. "Addon : " .. table_addon.name_addon .. ".") end Agora, em datapack/lib/order.lua, abaixo de :
doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) setPlayerStorageValue(cid, 17000, 1) Insira :
local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) local addon = getItemAttribute(slot.uid, "pokeaddon") addonTransformOutfitAbility(cid, addon) Continuando em datapack/lib/order.lua, abaixo de :
elseif skill == "ride" then local pokemon = rides[getPokemonName(getCreatureSummons(cid)[1])] doChangeSpeed(cid, -getCreatureSpeed(cid)) local speed = 150 + PlayerSpeed + getSpeed(sid) * 5 * speedRate doChangeSpeed(cid, speed) setPlayerStorageValue(cid, 54844, speed) doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) setPlayerStorageValue(cid, 17001, 1) Insira :
addonTransformOutfitAbility(cid)
Agora, em datapack/movements/scripts/surf.lua, abaixo de:
doSetCreatureOutfit(cid, {lookType = surfs[getPokemonName(getCreatureSummons(cid)[1])].lookType + 351}, -1) doCreatureSay(cid, ""..getPokeName(getCreatureSummons(cid)[1])..", lets surf!", 1) doChangeSpeed(cid, -(getCreatureSpeed(cid))) Insira :
addonTransformOutfitAbility(cid) Continuando, em datapack/movements/script/surf.lua, abaixo de:
doSummonMonster(cid, pokemon) local pk = getCreatureSummons(cid)[1] Insira :
local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) local addon = getItemAttribute(slot.uid, "pokeaddon") addonTransformOutfit(cid, addon, pokemon) Agora, em datapack/talkactions/scripts/ crie um arquivo .lua, coloque dentro :
function onSay(cid, words, param, channel) if(#getCreatureSummons(cid) >=1)then return false end local slot = getPlayerSlotItem(cid, CONST_SLOT_FEET) if not slot then return false end local addon_ball = getItemAttribute(slot.uid, "pokeaddon") if(addon_ball)then removeAddon(cid,slot,addon_ball) return true end end Agora, em datapack/talkactions/talkactions.xml registre :
<talkaction words="!removeAddon" hide="yes" event="script" value="nome do arquivo.lua"/>
Configurações :
ADDON_CONFIG ={ [1] = { -- Type do attribute do addon addon1 = 2079, -- Id da outfit pokemon = "Blastoise", -- O pokemon name_addon = "Red ninja pack", -- Nome do addon habilidade = 2089, -- Id da outfit correspondente com sua habilidade }, } local addon_type = { [13114] = { -- Id do item pokemon_use = "Blastoise", -- O pokemon type = 1, -- Valor do attribute }, } Return_addon_table = { [1] = { -- Type do attribute retu = 13114, -- o id do item que o player vai ganhar }, } Creditos :
Sr. Naja
20210725_201402.mp4 -
Yan Liima recebeu reputação de isac001 em Limite de players em guild in-gameLimite máximo de players em guild in-game ?
Bom galera estou postando esse conteúdo como complemento do limite em WEBSITE
Ao utilizar !joinguild esse code verifica se a guilda já atingiu o limite máximo de membros(configurado)
Eu estarei disponibilizando de duas maneiras:
1º Será um valor configurado no proprio config.lua, onde determinará o limite máximo de todas as guild.(já incluido na 0.4 rev3996)
2º A verificação será feita por DB, onde terá um valor padrão para cada guilda criada, podendo ser alterado o valor de membros maximo.
Ou seja, a guilda número UM pode ter máximo de 50 players, e a guilda número DOIS pode ter o máximo de 100.
Vocês pode ser criativos e vender items que aumenta o limite ou fazer eventos/sorteios para aumentar...
Enfim, vamos lá...
Primeira maneira:
Segunda maneira:
Prontinho galera, espero que ajude algumas pessoas xD
-
Yan Liima recebeu reputação de Doidodepeda em KIKAR QUANDO ACABAR O TEMPOlocal config = { toKnow = 456789, storage = 789456, pos = {x = 402, y = 907, z = 7}, -- para onde o jogador será teleportado caso o tempo tenha acabado. } local function kickP(cid) if(isPlayer(cid)) then doRemoveCreature(cid) end end function onKill(cid, target, lastHit) if getPlayerStorageValue (cid, config.toKnow) == 1 then if getPlayerStorageValue (cid, config.storage) < os.time () then doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT) doRemoveCreature (cid) end end return true end function onThink(cid, interval) if getPlayerStorageValue (cid, config.toKnow) == 1 and getPlayerStorageValue (cid, config.storage) < os.time () then addEvent(kickP, 3000, cid) -- 3000 = 3 segundos. end return true end function onLogin(cid) if getPlayerStorageValue (cid, config.toKnow) == 1 then if getPlayerStorageValue (cid, config.storage) < os.time () then doTeleportThing (cid, config.pos) setPlayerStorageValue (cid, config.toKnow, 0) end end return true end
nova tag XML
<event type="think" name="Kickp" event="script" value="NOME_DO_SCRIPT.lua"/>
-
Yan Liima recebeu reputação de Doidodepeda em Adicionar mais horarios no script@Doidodepeda
<globalevent name="shutdown" time="05:50;17:00" event="script" value="shutdown.lua"/>
No XML só substituir.
-
Yan Liima recebeu reputação de Gustavo Castro em [Lua & C++] getOtsysTime() + getPlayerPing(cid) + doPlayerSendPing(cid)#Introdução
Bom hoje estarei trazendo aqui o sistema de Ping feito pelo Mock, com uma pequena adaptação feita por mim para funcionar em TFS 0.4(talvez podendo funcionar em outras)
Pois o que ele disponibilizou foi apenas para TFS 0.3.6 e nem foi muito utilizado pela comunidade. Muitos servidores daqui para download tem script no talk mas a lib está totalmente errada e não tem o code nas sources.
Esse sistema tem varias utilizades, podendo usar o comando !ping para verificar seu ms ou até mesmo por para kikar jogadores com ms muito alto...
Se você não sabe o cliente já tem um sistema de ping, e getOtsystime é como os.time () + os.clock (), você tem ano, mês, dia, hora, minutos, segundos, milisegundos...
Enfim chega de enrolação e vamos lá!
Code para TFS 0.4 e OTX:
Code para TFS 0.3.6
LIB:
Prontinho, agora seu servidor está pronto para utilizar as funções de Ping. Seja criativo!
Ahh você é daqueles que quer tudo na mão né? Aqui vai um talkactions para ver o ping.
Em talkactions/scripts crie um arquivo chamado playerping.lua, cole isto dentro:
-- Script by Yan Liima(Night for tibiaking.com) function onSay(cid, words, param, channel) local ms = ping.CheckPing(cid) doPlayerSendTextMessage(cid,22,"Ping aproximado --> ["..ms.."].") return true end Em talkactions.xml
<talkaction words="!ping" event="script" value="playerping.lua"/>
-
Yan Liima recebeu reputação de Gustavo Castro em Limite de players em guild websiteLimite máximo de players em guild WEBSITE ?
Bom, decidi postar essa modificação que fiz a muito tempo, pois vi que bastante gente queria
Para Modern AAC e vi que ninguém soube ajudar. Como é algo bem simples e ta parado aqui faz tempo
Decidi disponibilizar. Não só para Modern, mas para Gesior também!
Estarei disponibilizando de duas maneiras:
1º Será um valor configurado no proprio config.php, onde determinará o limite máximo de todas as guild.
2º A verificação será feita por DB, onde terá um valor padrão para cada guilda criada, podendo ser alterado o valor de membros maximo.
Ou seja, a guilda número UM pode ter máximo de 50 players, e a guilda número DOIS pode ter o máximo de 100.
Vocês pode ser criativos e vender items que aumenta o limite ou fazer eventos/sorteios para aumentar...
Enfim, vamos lá...
Primeira maneira:
Modern AAC:
Gesior:
Segunda maneira:
Modern AAC:
Gesior:
Prontinho galera!!!
Caso queiram para cmd in-game: LINK
-
Yan Liima recebeu reputação de Gustavo Castro em Limite de players em guild in-gameLimite máximo de players em guild in-game ?
Bom galera estou postando esse conteúdo como complemento do limite em WEBSITE
Ao utilizar !joinguild esse code verifica se a guilda já atingiu o limite máximo de membros(configurado)
Eu estarei disponibilizando de duas maneiras:
1º Será um valor configurado no proprio config.lua, onde determinará o limite máximo de todas as guild.(já incluido na 0.4 rev3996)
2º A verificação será feita por DB, onde terá um valor padrão para cada guilda criada, podendo ser alterado o valor de membros maximo.
Ou seja, a guilda número UM pode ter máximo de 50 players, e a guilda número DOIS pode ter o máximo de 100.
Vocês pode ser criativos e vender items que aumenta o limite ou fazer eventos/sorteios para aumentar...
Enfim, vamos lá...
Primeira maneira:
Segunda maneira:
Prontinho galera, espero que ajude algumas pessoas xD
-
Yan Liima recebeu reputação de Gustavo Castro em Guild.phpAcho que antes de fazer tal acusação é importante se informar direito. Se está com medo de executar algo, basta apenas procurar o significado na internet. Nunca vi o @Toruke o @Endlessquerer prejudicar alguém aqui no fórum, pelo menos até onde eu sei(não abertamente)... E comandos assim são comuns no Sistema Operacional do Linux, sempre será necessario dar tal permissão. Basta apenas saber usar com cuidado.
"Ahh mais no meu Windows, no xampp funcionava normal". São sistemas totalmente diferente.
E antes que diga mais alguma coisa:
-
Acho que antes de fazer tal acusação é importante se informar direito. Se está com medo de executar algo, basta apenas procurar o significado na internet. Nunca vi o @Toruke o @Endlessquerer prejudicar alguém aqui no fórum, pelo menos até onde eu sei(não abertamente)... E comandos assim são comuns no Sistema Operacional do Linux, sempre será necessario dar tal permissão. Basta apenas saber usar com cuidado.
"Ahh mais no meu Windows, no xampp funcionava normal". São sistemas totalmente diferente.
E antes que diga mais alguma coisa: