
Tudo que WooX postou
-
(Resolvido)script pra explorar 100% do mapa
O seu funciona de maneira linear, se seu mapa não possui voids entre areas talvez o seu seja sim mais rápido, mas o dele é mais eficiente de um modo geral pois tenta teleportar o player apenas para lugares em que ele pode de fato pisar e faz outras verificações de segurança, a chance é bem remota mas seu script pode teleportar o player pra cima de um teleporte e não abrir certa parte do mapa por exemplo. Em outra oportunidade faça o teste em outro mapa, de preferencia um mapa com muitas ilhas e pouca água em volta, seu mapa de 15x20k levou mais de 3 horas pra scannear 13% do mapa, no benchmark dele ele scanneou um mapa global full de 173MB em 33 minutos.
-
SPELL/ Cancelar Target
-
Spell que bloqueia o target do player
Não é necessário, da pra fazer utilizando o callback onTargetCreature. Fiz com base na spell "exevo gran mas vis" do Tibia, os parâmetros da spell podem ser alterados. --[[ <instant name="Remove Target" words="gtfo" lvl="55" mana="650" selftarget="1" prem="0" exhaustion="1800" needlearn="0" event="script" value="support/remove_target.lua"> <vocation id="1"/> <vocation id="5"/> </instant> ]] local config = { blockTarget = true, blockTime = 5, -- Segundos affectAllies = false, affectTargetCasterOnly = false -- Se marcado como true ira remover o target somente de quem estiver atacando o usuario da spell } local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS) setAttackFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 8, 5, 7, 11) function onTargetCreature(cid, target) if config.affectTargetCasterOnly and getCreatureTarget(target) ~= cid then return false end if not config.affectAllies then local partyMembers = getPartyMembers(cid) if getPlayerGuildId(cid) == getPlayerGuildId(target) or isInArray(partyMembers, target) then return false end end if config.blockTarget then setPlayerStorageValue(target, 234512, os.time() + config.blockTime) end --errors(false) doPlayerTargetCreature(target, target) --errors(true) return true end setCombatCallback(combat, CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature") local area = createCombatArea(AREA_CROSS6X6) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end
-
Anti Map-Tracker [8.54 & 8.60]
solução simples e eficiente, ta de parabéns.
-
(Resolvido)script pra explorar 100% do mapa
Bom, outros alem de você vieram me pedir o link também, hoje eu vi que recentemente um membro da equipe postou um link para o dito fórum, então acho que não teria problema eu postar também. https://otland.net/threads/tfs-1-2-minimap-generator-map-scanner.262275/
-
(Resolvido)script pra explorar 100% do mapa
Me recordo de uma versão feita pelo Gesior na gringa, na época cheguei a testar e era bem eficiente, não sei se posso mandar link de outro forum aqui, te mandei por mensagem privada.
-
Gesior - Classic-Yurots 2019
Sim, mas tudo que o site faz é "comunicar" ao servidor os items a serem entregues, o site faz isso adicionando as informações na tabela z_ots_comunication, eu testei aqui e essa parte está funcionando corretamente tanto pra items de quantidade como pra items dentro de container, se a entrega não está sendo realizada é um problema do seu servidor e não do site.
-
Gesior - Classic-Yurots 2019
A entrega de items é feita pelo server não pelo site.
-
AJUDA PORFAVOR
Muito estranho, certifique-se de que a guild aparece no banco de dados após a criação.
-
[TFS 0.x] Função doPlayerTargetCreature
Daria sim, como mencionado acima seria só fazer o player targetar a si mesmo, a source faz o resto do trabalho e cancela o target dele.
- Habdel Show-off
-
Depot Locker System
Não sou eu no vídeo, é o @Yan Liima. Acredito que seja alguma injeção de DLL no client, tenta mandar uma mensagem pra ele.
-
[CreatureScript] Sugestão de balanceamento
Apenas complementando a explicação do @Movie, a função que busca o valor de uma storage pode retornar tanto nil (nulo) ou -1 quando o jogador não possui essa storage, e qualquer valor que não seja nulo vai fazer o if retornar verdadeiro, seja esse valor 0 ou até mesmo valores negativos.
-
[TFS 0.x] Função doPlayerTargetCreature
Essa função adiciona ou altera o alvo de um jogador, ou seja faz ele atacar quem você definir. A utilidade da função depende da sua criatividade, daria pra fazer uma talkaction onde o player pode escolher seu target "!attack Joaozinho" ou uma spell de Genjutsu para derivados de Naruto onde altera o target do alvo, fazendo ele pensar que está atacando alguém quando na verdade está atacando outro, o limite das possibilidades é sua criatividade. Sim, daria.
-
[TFS 0.x] Função doPlayerTargetCreature
Pois é, eu fiquei até surpreso de não existir essa função visto que já existe em C++ na source. Eu estou escrevendo um evento que talvez precisasse manipular o target do player e ai percebi que não tinha nenhuma função Lua pra isso, no fim acabei decidindo nem usar isso ai mas decidi postar, pode acabar sendo útil pra alguém.
-
[TFS 0.x] Função doPlayerTargetCreature
doPlayerTargetCreature(cid, target) Essa função adiciona um target ao jogador ou altera caso este já possua um target. Instalação No arquivo luascript.cpp da source procure por: //doPlayerFollowCreature(cid, target) lua_register(m_luaState, "doPlayerFollowCreature", LuaInterface::luaDoPlayerFollowCreature); Acima adicione: //doPlayerTargetCreature(cid, target) lua_register(m_luaState, "doPlayerTargetCreature", LuaInterface::luaDoPlayerTargetCreature); Depois procure por: int32_t LuaInterface::luaDoPlayerFollowCreature(lua_State* L) E adicione acima: int32_t LuaInterface::luaDoPlayerTargetCreature(lua_State* L) { //doPlayerTargetCreature(cid, target) ScriptEnviroment* env = getEnv(); Creature* creature = env->getCreatureByUID(popNumber(L)); if(!creature) { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); return 1; } Player* player = env->getPlayerByUID(popNumber(L)); if(!player) { errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND)); lua_pushboolean(L, false); return 1; } lua_pushboolean(L, g_game.playerSetAttackedCreature(player->getID(), creature->getID())); return 1; } Agora no arquivo luascript.h da source procure por: static int32_t luaDoPlayerFollowCreature(lua_State* L); E adicione acima: static int32_t luaDoPlayerTargetCreature(lua_State* L); Pronto, agora basta compilar e a função vai estar pronta pra ser usada.
-
AJUDA PORFAVOR
É necessário reiniciar o processo do mysql após rodar essa query e o servidor precisa estar offline. service mysql restart Não entendi, você quer criar mais de uma guild no mesmo char?
-
Depot Locker System
Feito. Boa, valeu.
-
Depot Locker System
Verifica se o callback onTextEdit existe no TFS 0.3.6, busca por ele no arquivo creatureevent.cpp da sua source.
-
Depot Locker System
Não, acho mais pratico pro jogador escrever a senha no quadro do que digitar talkaction + senha, mas posso fazer uma pra contornar esse problema no TFS 0.4 e inferiores.
-
Depot Locker System
Tem sim, pra utilizar a função doShowTextDialog da maneira como está no sistema você vai precisar alterar ela na source, o @Yan Liima me alertou sobre isso até no TFS 0.4 e adicionou as alterações na source editada por ele, da uma olhada lá. https://github.com/YaanLiima/3996/commit/2038e058cc46afd58f9d7c1e8838093f4809dcaf Como alternativa você pode usar um quadro real ao invés da função doShowTextDialog, basta alterar a variável de configuração useBoard para true na lib do sistema. Não, a criação e alteração de senhas funciona através do NPC.
-
Depot Locker System
Ta usando TFS 0.4 né?
-
ERRO GESIOR Guild with ID 0 doesn't exist.
O problema pode ter sido com uma coluna em especifico e não com a tabela guilds toda, por isso recomendei descobrir o problema através do debug, mas se deu bom beleza.
-
[novo] » Mapas do Nolis
O que você faz é arte, impecável. Muito foda esse mapa, não vejo a hora de ver online.
-
ERRO GESIOR Guild with ID 0 doesn't exist.
manda o erro.