Projeto Ot Enforced
-
Quem Está Navegando 0 membros estão online
Nenhum usuário registrado visualizando esta página.
-
Conteúdo Similar
-
Por FeeTads
SALVE rapaziada do TK, esses dias vim pensando em novos scripts pro meu OT, e em um deles eu precisava que determinada area não contasse frag pro player que matasse outros, PORÉM eu precisava que os players que morressem nessa area ainda assim tivessem as penalidades da sua morte, procurei por ai, achei alguns scripts que apenas tiravam o SKULL e não realmente o FRAG do player.
**script atualizado 22/10/2023** - melhorado e otimizado, levei o script pra puxar as infos por .lua / creatureScripts
vou disponibilizar o code aqui, e o que fazer pra determinada area não contar frag.
SOURCE OTX 2 / TFS 0.x, Funciona em TFS 1.x mudando as tags e ajeitando as sintaxes.
vá em creatureevent.cpp
procure por:
else if(type == "preparedeath") _type = CREATURE_EVENT_PREPAREDEATH;
Adiciona abaixo:
else if(type == "nocountfrag") _type = CREATURE_EVENT_NOCOUNTFRAG;
procure por:
case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath";
Adicione abaixo:
case CREATURE_EVENT_NOCOUNTFRAG: return "noCountFragArea";
procure por:
case CREATURE_EVENT_PREPAREDEATH: return "cid, deathList";
Adicione abaixo:
case CREATURE_EVENT_NOCOUNTFRAG: return "cid, target";
agora no mesmo arquivo, vá até o final do arquivo e adicione essa função:
uint32_t CreatureEvent::executeNoCountFragArea(Creature* creature, Creature* target) { //noCountFragArea(cid, target) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(creature->getPosition()); std::ostringstream scriptstream; scriptstream << "local cid = " << env->addThing(creature) << std::endl; scriptstream << "local target = " << env->addThing(target) << std::endl; if(m_scriptData) scriptstream << *m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ std::ostringstream desc; desc << creature->getName(); env->setEvent(desc.str()); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(creature->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(creature)); lua_pushnumber(L, env->addThing(target)); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::clog << "[Error - CreatureEvent::noCountFragArea] Call stack overflow." << std::endl; return 0; } }
agora vá em creatureevent.h
procure por:
CREATURE_EVENT_PREPAREDEATH
adicione abaixo:
CREATURE_EVENT_NOCOUNTFRAG
procure por:
uint32_t executePrepareDeath(Creature* creature, DeathList deathList);
Adicione abaixo:
uint32_t executeNoCountFragArea(Creature* creature, Creature* target);
agora vá em player.cpp
procure por:
bool Player::onKilledCreature(Creature* target, DeathEntry& entry)
abaixo de:
War_t enemy; if(targetPlayer->getEnemy(this, enemy)) { if(entry.isLast()) IOGuild::getInstance()->updateWar(enemy); entry.setWar(enemy); }
Adicione o seguinte código:
if (targetPlayer){ CreatureEventList killEvents = getCreatureEvents(CREATURE_EVENT_NOCOUNTFRAG); for (const auto &event : killEvents) { if (!event->executeNoCountFragArea(this, target)) { return true; } } }
//
Feito isso, tudo completo na sua source, agora é necessário adicionar o creaturescript dentro do servidor
vá até creaturescripts/scripts
crie um arquivo chamado, "noCountFragInArea.lua"
e dentro dele cole o código:
--[[ script feito por feetads / TibiaKing ]]-- --[[ discord: feetads / FeeTads#0246 ]]-- -- Add positions here for which you do not want to count frags local areas = { [1] = {from = {x = 91, y = 122, z = 7}, to = {x = 98, y = 127, z = 7}}, -- from = area superior esquerda / to = area inferior direita (formando um quadrado) } local onlyKillerInArea = false -- only killer need to be in area? function noCountFragArea(cid, target) if not isCreature(cid) or not isCreature(target) then return true end local posKiller = getPlayerPosition(cid) local posTarget = getPlayerPosition(target) for i = 1, #areas do local area = areas[i] if isInArea(posKiller, area.from, area.to) then if onlyKillerInArea then return false elseif isInArea(posTarget, area.from, area.to) then return false end end end return true end
agora em creaturescripts.xml
<event type="nocountfrag" name="fragarea" event="script" value="noCountFragInArea.lua"/>
agora em creaturescripts/scripts/login.lua
procure por OU semelhante a esse:
registerCreatureEvent(cid, "AdvanceSave")
e abaixo adicione:
registerCreatureEvent(cid, "fragarea")
//
Agora tudo certo, quando quiser adiciona uma area que não pega frag, vá até o script e apenas coloque a area, igual o demonstrado no script
Exemplo:
local areas = { [1] = {from = {x = 91, y = 122, z = 7}, to = {x = 98, y = 127, z = 7}}, [2] = {from = {x = 1000, y = 1000, z = 7}, to = {x = 1100, y = 1100, z = 7}}, }
assim somente colocando a area no script e abrindo o server ou dando /reload, já funcionará a area como não pegar frag.
Esse sistema pode ser bom pra areas de pvp ativo, onde você ainda quer que o player que morrer perca os atributos, como se fosse uma morte normal, porém não conta frag pra quem matar.
Bom pra sistemas tipo castle 48h (guild war), onde há diversas mortes e risco de pegar red, atrapalhando a war.
Façam bom proveito dos scripts, e deixem os créditos no script rsrs
**Eu fiz as alterações e o simples código por isso vim disponibilizar, créditos meus**
-
Por Tungsx
Boa noite a todos, poucos devem lembrar de mim, não por esse nick mas sim como Kevick. Algumas semanas atrás decidi pegar uma base antiga e voltar a mexer visando trazer um conteúdo para a comunidade, meu passado aqui foi meio obscuro com algumas tretas desnecessárias e falta de profissionalismo com a comunidade. a Base utilizada é a Dash Revolution do @Aberos e do @Valakinhas. Com o tempo aprendi mais sobre desenvolvimento e achei que era uma boa hora para botar a mão na massa, hoje eu não estarei liberando o download, peço que movam para a área correta mas assim que concluído o download será adicionado para vocês.
O que foi feito até o momento?
Como a base não tinha um código fonte liberado, peguei um TFS 0.3.6 limpo e comecei a fazer alguns sistemas no mesmo para que funcionasse 100%. Futuramente atualizarei os sistemas basicos como GO/BACK, SURF e FLY para que os mesmos se comuniquem no núcleo da engine. Sem enrolação vamos aos sistemas
Catch System igual ao PDA - 100% Order system - 100% Pokebar - 90% (irei refazer o design da mesma no futuro antes de postar) Movebar - 100% (mantive a antiga movebar e adicionei uma mais atual, deixando a disposição ao gosto de vocês) Evoluções e boost por stone - 100% Spawn de Shiny aleatoriamente com porcentagem - 100% Nick System - 100% nas source com callback em lua - 100% Ditto System - 100% Sistema de CAP contando ball igual ao PDA EX: 1 pokémon na bag = 1 de cap, 5 pokémons na bag = 5 de cap na contagem - 100% Pokedex - 100% (pretendo adicionar a da masterx antes de postar) Sistema de ginásio do pda usando as funções doSetAttackGym, doSetGym, doSetMonsterGym em C++ - 100% Move system refeito para mais facilidade ao adicionar o mesmo - 100% Icon System - 90%, falta alguns pokémons
Segue logo abaixo as imagens, assim que possível tiro mais prints e atualizo o tópico:
pokebar e movebar
Codigo do npc de Duel
Slot pokémon igual à pxg com contagem de ball / vida do pokémon sendo adicionada ainda
remake nas sprites padrões
Catch System com distance shoot
Toda colaboração será bem-vinda, quem sabe não sai algo bacana ai.
https://github.com/Kevick/PokemonDashRevolution
-
Por Morg
Olá galera do tk! Venho por meio desse tópico da oportunidade para vocês donos de servidores pedirem seus logos.
Estou precisando de novas artes para portfolio então achei interessante ajudar a comunidade.
Obs: Você pode pedir logo ou flyer de divulgação, lembrando que cada usuário só pode pedir uma opção.
LOGO
Prencha esse formulario se você quer um logo. Nome: Tematica do projeto: Textinho (Se você tem uma ideia de como quer seu logo escreve aqui uma breve explicação):
Flyer
Prencha esse formulario se você quer um flyer Logo (Se tiver um logo coloque em anexo, se não tiver irei utilizar uma font aleatoria): Data de lançamento: Informações Adicionais: Ip/Dominio: Versão: Print (Prints do otserver, lembrando que deve ter uma qualidade boa):
-
Por bkhere
Atualizações sobre , encontrei um grande amigo aqui no forum , então vamos fechar junto com o novo projeto
Atulizado dia 10/09/2021
www.real-age.online
OLD POST
salve meus queridos tibiakinganus
venho apresentar meu projeto vou , dar continuidade num projeto de 8 anos trabalhados e 12 anos retocando , isso mesmo 12 anos , retocando o projeto
estou precisando de membros na equipe , quem estiver interessado , a base do servidor é 8.60 - porém ele é 95% antibot , e o não tem HOTKEYS usando a base do 7.4
Rookgaard full graficos 7.4 + customs
emfim projeto é top , quem estiver interessado me CHAMA ! estarei postando em breve fotos
ROOKGAARD BEFORE EDITS
Bridge
Open
Doublet BEFORE EDIT
----
Segunda EDIÇÃO DOUBLET
Quest
You see a enchanted doublet (Arm:3).
It weighs 24.00 oz.
SEGUNDA EDIÇÃO DO TEMPLO DE ROOK
TEST LEVEL 130 - ML 35
SD COMUN "ADORI GRAN MORT" pensando ainda se venderemos ela no npc
TEST LEVEL 130 - ML 35 - COM ML MAIOR DANO MAIOR, PORÉM TAMBÉM CONTA LVL
SD ANTIGA DANO 7.4 "ADORI VITA VIS" NÃO VAI VENDER NO NPC SÓMENTE PLAYERS
-
Por fezeRa
Eu queria saber se tem como diminuir o tempo de frags no server?
Não é o tempo de red skull/white skull...
É o tempo de frags mesmo, tipo se eu matar um cara agora, daqui 1 hora vai sair o frag dele, ou daqui 2 hora, etc, tem como mudar isso?
-
Posts Recomendados