Tudo que Underewar postou
-
Adaptar esse sistema de mostrar dano por "porcentagem"
int32_t healthPercent = round((double)(healthChange) - target->getMaxHealth()); sprintf(buffer, "+%2fk%", healthPercent); trocar por: int32_t healthPercent = round((double)(damage) - target->getMaxHealth()); sprintf(buffer, "-%2f%k", healthPercent);
-
Adaptar esse sistema de mostrar dano por "porcentagem"
trocar por: int32_t healthPercent = round((double)(healthChange * 1) / target->getMaxHealth()); sprintf(buffer, "+%2fk%", healthPercent); trocar por: int32_t healthPercent = round((double)(damage * 1) / target->getMaxHealth()); sprintf(buffer, "-%2f%k", healthPercent);
-
Adaptar esse sistema de mostrar dano por "porcentagem"
- [Linux] Proteção contra DDOS usando Módulo Dos_Evasive do Apache
Ataques DoS (Denial of Service) e DDoS (Distributed DoS) De acordo com a definição do CERT (Computer Emergency Response Team), os ataques DoS (Denial of Service), também denominados Ataques de Negação de Serviços, consistem em tentativas de impedir usuários legítimos de utilizarem um determinado serviço de um computador. Para isso, são usadas técnicas que podem: sobrecarregar uma rede a tal ponto em que os verdadeiros usuários dela não consigam usá-la; derrubar uma conexão entre dois ou mais computadores; fazer tantas requisições a um site até que este não consiga mais ser acessado; negar acesso a um sistema ou a determinados usuários. Os ataques do tipo DoS mais comuns podem ser feitos devido a algumas características do protocolo TCP/IP (Transmission Control Protocol / Internet Protocol), sendo possível ocorrer em qualquer computador que o utilize. Uma das formas de ataque mais conhecidas é a SYN Flooding, onde um computador tenta estabelecer uma conexão com um servidor através de um sinal do TCP conhecido por SYN (Synchronize). Se o servidor atender o pedido de conexão, enviará ao computador solicitante um sinal chamado ACK (Acknowledgement). O problema é que em ataques desse tipo, o servidor não consegue responder a todas as solicitações e então passa a recusar novos pedidos. Outra forma de ataque comum é o UPD Packet Storm, onde um computador faz solicitações constantes para que uma máquina remota envie pacotes de respostas ao solicitante. A máquina fica tão sobrecarregada que não consegue executar suas funções. Ataques DDoS O DDoS, sigla para Distributed Denial of Service, é um ataque DoS ampliado, ou seja, que utiliza até milhares de computadores para atacar uma determinada máquina. Esse é um dos tipos mais eficazes de ataques e já prejudicou sites conhecidos, tais como os da CNN, Amazon, Yahoo, Microsoft e eBay. Para que os ataques do tipo DDoS sejam bem-sucedidos, é necessário que se tenha um número grande de computadores para fazerem parte do ataque. Uma das melhores formas encontradas para se ter tantas máquinas, foi inserir programas de ataque DDoS em vírus ou em softwares maliciosos. Em um primeiro momento, os hackers que criavam ataques DDoS tentavam "escravizar" computadores que agiam como servidores na internet. Com o aumento na velocidade de acesso à internet, passou-se a existir interesse nos computadores dos usuários comuns com acesso banda larga, já que estes representam um número muito grande de máquinas na internet. Para atingir a massa, isto é, a enorme quantidade de computadores conectados à internet, vírus foram e são criados com a intenção de disseminar pequenos programas para ataques DoS. Assim, quando um vírus com tal poder contamina um computador, este fica disponível para fazer parte de um ataque DoS e o usuário dificilmente fica sabendo que sua máquina está sendo utilizado para tais fins. Como a quantidade de computadores que participam do ataque é grande, é praticamente impossível saber exatamente qual é a máquina principal do ataque. Quando o computador de um internauta comum é infectado com um vírus com funções para ataques DoS, este computador passa a ser chamado de zumbi. Após a contaminação, os zumbis entram em contato com máquinas chamadas de mestres, que por sua vez recebem orientações (quando, em qual site/computador, tipo de ataque, entre outros) de um computador chamado atacante. Após receberem as ordens, os computadores mestres as repassam aos computadores zumbis, que efetivamente executam o ataque. Um computador mestre pode ter sob sua responsabilidade até milhares de computadores. Repare que nestes casos, as tarefas de ataque DoS são distribuídas a um "exército" de máquinas escravizadas. Daí é que surgiu o nome Distributed Denial of Service. Impedindo e detectando ataques DoS Apesar de não existir nenhum meio que consiga impedir totalmente um ataque DoS, é possível detectar a presença de ataques ou de computadores (zumbis) de uma rede que estão participando de um DDoS. Para isso, basta observar se está havendo mais tráfego do que o normal (principalmente em casos de sites, seja ele um menos conhecido, como o InfoWester, seja ele um muito utilizado, como o Google), se há pacotes TCP e UDP que não fazem parte da rede ou se há pacotes com tamanho acima do normal. Outra dica importante é utilizar softwares de IDS (Intrusion Detection System - Sistema de Identificação de Intrusos). Para prevenção, uma das melhores armas é verificar as atualizações de segurança dos sistemas operacionais e softwares utilizados pelos computadores. Muitos vírus aproveitam de vulnerabilidades para efetuar contaminações. Também é importante filtrar certos tipos de pacotes na rede e desativar serviços que não são usados. Fonte: http://www.infoweste...m/col091004.php Primeiramente use um servidor LINUX Dicas para se dificultar a ação de Ddos A equipe de segurança da LinuxSvr.Net tem algumas dicas aos clientes sel-managed. Utilize o Módulo Dos_Evasive (Apache) É importante saber que bloquear um ataque Ddos usando software é possível em apenas 20% dos casos, e que é necessário perícia e conhecimento técnico avançado para isso. Para saber mais: Atualizado 2023. Utilize o Módulo Dos_Evasive (Apache)- [AJUDA] Item ganha Spell
Assim que for aprovado esta aqui o sistema.- Item que reduz a perda de level/skill.
@ApacheBom dia! tenta este por favor, caso não funcione abre um tópico com seu pedido que te ajudo por la! local item_id,amount = 7721,1 function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if (isPlayer(cid) == TRUE) then if (getPlayerItemCount(cid,item_id,amount) then if (getCreatureSkullType(cid) == SKULL_RED or SKULL_BLACK) then doCreatureSetDropLoot(cid, FALSE) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_HOLYAREA) end if not(getPlayerBlessing(cid, bless[i])) then for i = 1, table.maxn(bless) do doPlayerAddBlessing(cid, bless[i]) end end end end return TRUE end- [Repositório de Scripts / CodeReview] Vamos Desenvolver Juntos?
@luanluciano93 quanto tempo hein! Bom ver que ainda tem boas pessoas na comunidade, obrigado pelo comentário! Você ta no rank dos melhores programadores aqui do fórum tmj(Minha opinião) aqui quem vos fala é Underewar- [Events] Stamina Regen On Target
O sistema funciona pelo Target do Monstro, e Regenera Stamina Points. Em events/scripts/creature.lua Vamos Adicionar a função a Baixo. No mesmo script vamos procurar por Creature:onTargetCombat(target) E colocar logo a baixo o seguinte script Onde está == "Trainer" Coloque o nome do trainer do seu servidor.- Problemas ao tentar entrar em uma conta
Coloque esse login.php na pasta raiz do seu website. https://github.com/opentibiabr/myaac-tibia12-login/releases/tag/2.0- Item que reduz a perda de level/skill.
Ele verifica se o jogador esta black ou red e caso estiver seta o drop loot para false, para dropar o item mude para true doCreatureSetDropLoot(cid, FALSE) Vou deixar aqui uma lista organizada das lua functions até a versão 0.3.6 da TFS pode te ajudar a implementar o sistema. Espero que te ajude.- Item que reduz a perda de level/skill.
procure pelo player.lua do seu servidor procure por : function Player:onLoseExperience(exp) return exp end E troque essa função por essa. function Player:onLoseExperience(exp) local Amulets = { [ITEMID] = {ExpLossProtection = 0.3, LoseAfter = true} [ITEMID] = {ExpLossProtection = 0, LoseAfter = false}, [ITEMID] = {ExpLossProtection = 1, LoseAfter = true } } local amulet = self:getSlotItem(CONST_SLOT_NECKLACE) if Amulets[amulet.itemid] then exp = exp * Amulets[amulet.itemid].ExpLossProtection if Amulets[amulet.itemid].LoseAfter then charges-1 end end return exp end Não sei se o código a cima funciona na tfs 0.4 no entanto é possivel fazer na tfs 0.4 CreatureScript XML: <event type="preparedeath" name="blessAmulet" script="script.lua"/> local bless = {1, 2, 3, 4, 5} local amulet = amulet id function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if (isPlayer(cid) == TRUE) then if (getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).itemid == amulet) then if (getCreatureSkullType(cid) == SKULL_RED or SKULL_BLACK) then doCreatureSetDropLoot(cid, FALSE) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_HOLYAREA) end if not(getPlayerBlessing(cid, bless[i])) then for i = 1, table.maxn(bless) do doPlayerAddBlessing(cid, bless[i]) end end end end return TRUE end- Adaptar esse sistema de mostrar dano por "porcentagem"
Erro meu tente este trocar por: int32_t healthPercent = round((double)(healthChange) / target->getMaxHealth()); sprintf(buffer, "+%.2f", healthPercent); trocar por: int32_t healthPercent = round((double)(damage) / target->getMaxHealth()); sprintf(buffer, "-%.2f", healthPercent);- Alguém me da uma ajuda com esse script por favor
Tá vamos la, o código esta totalmente correto e muito organizado parabéns, no entanto você esta inicializando uma speed nova para a montaria. Incluindo o player.h (acredito que você criou novos cpp e headers para criar este código) Acessamos a velocidade atual do jogador retornando ela e podemos usar como quiser para alterar, acredito que o calculo deva ser o base speed + o speed da mount e não iniciar ela em zero... int32_t ExtSpeed = 0; Acredito que você deveria setar o PLAYER_MAX_SPEED para realmente alterar velocidade máxima que o jogador deve ser da seguinte maneira, definido o player flag para a flag hasMaxSpeed in group or player constructor. if (!hasFlag(PlayerFlag_SetMaxSpeed)) { baseSpeed = vocation->getBaseSpeed();- [Resolvido] Erro site Gesior
@stauroEstá resolvido? se sim poderia compartilhar? como resolveu, obg!- Item que reduz a perda de level/skill.
Qual source você ?- Aumentar dano por reset
Cria um creaturescript verificando o login dos jogadores por storage, ou uma tabela de storages chamada reset, e verifica o nivel do reset que o jogador esta por storage, você pode atribuir ao jogador usando o seguinte código. Adicionando no combat.cpp Nas funções CombatHealthFunc and CombatManaFunc Procure por: int32_t change = 0; if(Combat2Var* var = (Combat2Var*)data) { change = var->change; E no final do escopo ou seja quando a chave fechar } Cole isso: if(caster && caster->getPlayer()) { std::string value; caster->getStorage("ResetStorageValue", value); int32_t plus = (int32_t)(atoi(value.c_str())); int32_t resetpower = plus *2.5 ; if(plus > 0 && params.combatType != COMBAT_HEALING ) change = (int32_t)std::ceil (change + change * resetpower /100); } Em caster -> getStorage é a storage que o jogador ganha no reset. resetpower = plus * 2.5 é a formula. change = (change + change * resetpower / 100) é o calculo .- Adaptar esse sistema de mostrar dano por "porcentagem"
Eu não testei no entanto oque eu fiz foi o seguinte. Isso imprimirá o valor de "total" (é o que % é, em seguida, o total faz) com 2 pontos flutuantes seja exibido (é o que .2f faz). trocar por: int32_t healthPercent = round((double)(healthChange) / target->getMaxHealth()); sprintf(buffer, "+%.2f", healthPercent); trocar por: int32_t healthPercent = round((double)(damage) / target->getMaxHealth()); sprintf(buffer, "-%.2f", healthPercent);- Duvida, como faço para colocar esse storage?
@isac001Se você quer adicionar a `storage` ao matar o monstro, pode procurar nos seus `creature-events(creatureScripts)`. este scripts como você disse é apenas do NPC. Este scripts acima esta apenas verificando se o jogador iniciou a `storage` e sumonando o monstro caso seja verdadeiro, pude ver que o código também contem um pequeno contador para o npc voltar ao estado normal. addEvent(function() doCreateNpc(name, pos) end ,time*60*1000)- [Repositório de Scripts / CodeReview] Vamos Desenvolver Juntos?
Este repositório foi movido para um novo linkhttps://github.com/organizations/openistibia- [10.98][TFS 1.2] PokeDash Pota v1.0 - Server, Client, Sources, Site, Map editor e Item editor
A continuidade será dada!- [Repositório de Scripts / CodeReview] Vamos Desenvolver Juntos?
A Organização O Projeto Olá venho aqui fornecer a todos um repositório que estou começando fazer code views de todos os códigos lua que julgar interessante para um sistema de RPG Este é o local onde podem ser vistos os PR e os CodeReviews. Fiquem livres para utilizar os códigos da melhor maneira possivel. Quer interagir? bom então eu te convido a fazer parte da organização deixando seu nick no github aqui em baixo ou me mandando uma pm! todos serão bem vindos! PRS Me ajude a desenvolver criando um Issue e fazendo seu pedido, tente preencher todas as lacunas ao fazer o pedido para não gastarmos tempo com issues inúteis Usando este repositório podemos desenvolver projetos sólidos e muitos scripts uteis para a comunidade, assim como esses que vocês viram a cima muitos outros serão adicionados para a tfs 1.4, espero todos la no github VLW clan tmj! Todo o projeto estára atualizado com a ultima branch da tfs de acordo com o docker. Podemos verificar dependências e reportas caso a tfs faça alguma alteração em suas libs poderemos saber neste repositório através do workflow- [NÃO desista do SONHO]SALVE comunidade
@AlissowUma ótima fase da nossa vida, muito aprendizado. Gratidão! só pra levar em consideração foi uma tfs 8.5 do mapa alissow o primeiro servidor que eu compilei! Lembro até hoje eu abrir na lan house as 07 da manha fechava as 18 o servidor, e mantia ele com "donate" que os caras colocavam na maquina para eu poder rodar o server/jogar! hahahah!- [NÃO desista do SONHO]SALVE comunidade
GitHub Underewar Fala pessoal, anos se passaram e estamos aqui até hoje, bom eu nunca imaginei chegar tão longe assim e hoje eu sinto falta de desenvolver servidores de tibia kkkkk. Galera o lance é o seguinte eu sempre programei para 'tibia' e agora eu realizei uma meta que é quase um sonho. Bom fica o salve pra comunidade que durante muito tempo me ajudou estou aqui com total gratidão a todas as pessoas que me ajudaram quando eu não sabia nada. Um abraço pro @Alissow@Vodkart@daniel@arthurluna@anafee Enfim queria poder marcar todos aqui galera um abraço! vocês fazem parte da minha história !- Curso Gratis Basico Criadores de Otservers tfs 1.4
Vídeos liberados guys, aproveitem o conteúdo. Todo dia um vídeo novo é liberado gratuitamente.- RPG Server (outworld) TFS 1.2
Oi sou designer faço tudo no CS6. Te mandei pm. - [Linux] Proteção contra DDOS usando Módulo Dos_Evasive do Apache
Informação Importante
Confirmação de Termo