
Tudo que lordzetros postou
-
Fly System com modal 1.3
Introdução Estive procurando no fórum e não encontrei esse sistema de TP para versões com modal, aliás, até achei um semelhante, só que possuía algumas instabilidades e também com uma ideia de waypoints (que estava também fazendo dessa forma, mas não vem ao caso o motivo disso não ser viável no Tibia). O que trago aqui é algo mais simples, porém o necessário. O sistema de TP é muito importante em alguns servidores que fogem um pouco de RPG (não que seja exclusivamente para estes), ele possibilita viagens de um local para outro em instantes, como por exemplo, do Templo para o Depot ou para qualquer outra localização configurada no script (a seu gosto). Uma coisa adicional que coloquei no script, foi de listar também a house do jogador que utilizar o comando, onde você poderá configurar se será necessário pagar ou não para o mesmo ser teleportado, enfim, dê uma olhada no código depois, tá tudo comentado. Informações do sistema - Locais configuráveis - Configurável se é necessário pagar ou não para determinado local - Configurável a quantidade de dinheiro de cada local - Condições ao utilizar o comando (Protect Zone e tempo para utilizar o comando novamente) - É requisitado o jogador está possuindo a quantia necessária para o teleport Instalação 1 - crie um arquivo chamado teleportSystem.lua em data/talkactions/scripts/ e cole o código abaixo: 2 - Em seguida, cole este trecho de código em data/talkactions/talkactions.xml abaixo de algum semelhante: 3 - Agora crie um arquivo chamado modalTpSystem.lua em data/creaturescripts/scripts/ e cole o código abaixo nele: 4 - E para finalizar, cole este código em data/creaturescripts/creaturescripts.xml abaixo de um semelhante: Explicação do script A única coisa que você vai mexer é no teleportSystem, onde terá a opção de configurar os preços, locais, etc. Configurando as houses: houses_modal = Se será habilitado o player teleportar para a house dele house_pago = Se será pago o teleport para a house house_custo = Custo do teleport para a house, caso seja pago Configurando o local: nome = Nome do local a ser mostrado na janela pago = Se ele vai ser pago ou não, coloque false caso queira que não cobre nada do jogador custo = Caso tenha colocado como pago, o custo do teleport para o local pos = Posição do local (X,Y,Z) Quando for adicionar outro, copie esta mesma parte acima e altera o número [3] para [4] e os outros dados também, assim por diante. O restante também tá explicado no script, basta ler. Demonstração UTILIZE O COMANDO !fly Enfim, script simples, tem para outras versões, mas como falei, não tinha encontrado ainda para 1.x com esse funcionamento. Qualquer coisa, só comentar, .
- Lothus Online™ - Project RPG
-
Problema com sistema de tp via Modal Window
Substitua seu talkaction por este: -- Em talkactions local modaldialog = { title = "Quick Access", message = "Where are you going?", buttons = { { id = 1, text = "Go" }, { id = 2, text = "Cancel" }, }, buttonEnter = 1, buttonEscape = 2, choices = { { id = 1, text = "Dorion" }, { id = 2, text = "Thais" }, { id = 3, text = "Mirand Theraan" }, { id = 4, text = "Saari" }, { id = 5, text = "Alfon" }, { id = 6, text = "Venonh" }, { id = 7, text = "Infernium" }, { id = 8, text = "Anknor" }, { id = 9, text = "Yalahar" }, { id = 10, text = "Smallville" }, { id = 11, text = "Flam" }, { id = 12, text = "Farmine" }, { id = 13, text = "Roshamuul" }, { id = 14, text = "Gray Island" }, { id = 15, text = "Goroma" } }, popup = false } function onSay(player, words, param) if (Tile(player:getPosition()):hasFlag(TILESTATE_PROTECTIONZONE)) then modalWindow = ModalWindow(1003, modaldialog.title, modaldialog.message) if modalWindow:getId() == 1003 then for _, v in ipairs(modaldialog.buttons) do modalWindow:addButton(v.id, v.text) end for _, v in ipairs(modaldialog.choices) do modalWindow:addChoice(v.id, v.text) end modalWindow:setDefaultEnterButton(modaldialog.buttonEnter) modalWindow:setPriority(modaldialog.popup) modalWindow:setDefaultEscapeButton(modaldialog.buttonEscape) end modalWindow:sendToPlayer(player) player:registerEvent("ModalTP") else player:sendCancelMessage("You need to be in a safe zone to use teleport system.") end return false end
-
PZ locked magic wall tfs 1.3
No TFS 1.3 não tem função para adicionar o pzLocked que gostaria no jogador, portanto, modifique sua source com essas alterações: em Luascript.h static int luaPlayerPzLocked(lua_State* L); E em Luascript.cpp (cole abaixo de um semelhante) Código 1: registerMethod("Player", "pzLock", LuaScriptInterface::luaPlayerPzLocked); Código 2 (abaixo/acima de um semelhante também): int LuaScriptInterface::luaPlayerPzLocked(lua_State* L) { // player:pzLock(true/false, default = false) Player* player = getUserdata<Player>(L, 1); if (!player) { lua_pushnil(L); return 1; } bool pzLock = getBoolean(L, 2, false); player->pzLocked = pzLock; return 1; } E para finalizar, vai na sua spell de magic wall e deixe desta forma: local combat = Combat() combat:setParameter(COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY) combat:setParameter(COMBAT_PARAM_CREATEITEM, ITEM_MAGICWALL) function onCastSpell(creature, variant, isHotkey) creature:pzLock(true) return combat:execute(creature, variant) end
-
Anel de Sauron
@Eduardozim if (target->isInGhostMode() && targetPlayer->getAccountType() < ACCOUNT_TYPE_GAMEMASTER && targetPlayer->getAccountType() < ACCOUNT_TYPE_GOD) { Tá estranho essa verificação, no caso, você está bloqueando hit para todos os players que não são GOD (e estão invisível - detalhe: targetPlayer não foi instanciado na função), não acha? Posso está enganado, mas... se quer que o hit seja bloqueado apenas para GM para cima e que estejam invisíveis, seria mais ou menos assim: if (target->getPlayer() && target->isInGhostMode() && target->getPlayer()->getAccountType() > ACCOUNT_TYPE_SENIORTUTOR) {
-
Alterar Attack Speed Na Sources
Pasta da sua source/vocation.h Uma variável chamada attackSpeed
-
[Limite Skill] Colocar Limite em Skills
Só lhe ajudei em corrigir o erro, o crédito dos scripts é seu. ?
-
Telara-ATS
Triste ver gente só cobrando... e mal agradecem ao colega por disponibilizar um conteúdo muito bacana. Tão fácil dizer 'por favor', 'obrigado por compartilhar', etc...
-
doRemoveCreature
Acredito que assim ficaria mais simples: Edição feita. @Vodkart observou um detalhe, acredito que já esteja corrigido. @agbuk faça o teste, colega.
-
(Resolvido)[Erro] Script deixa você com Pontos negativo
@Phineasz Por nada. Se quer um script melhor e mais eficiente, faça as alterações que trabalham com DB que @Vodkart postou e também no creature. Só uma dica.
-
(Resolvido)[Erro] Script deixa você com Pontos negativo
@Phineasz O problema está aí, colega, kkkk. A ideia do script, acredito eu, seja em que o jogador compre o documento por x points, assim ele pode efetuar a troca com algum outro player, no qual, esse documento continuará valendo x points. Veja: Quando o jogador digitar 'yes', o script criará o documento e em seguida dará ao jogador, mas ao mesmo tempo, está removendo do jogador o valor dos pontos 'trocados'. doPlayerRemovePoints(cid, Count_Points) Entendeu? @Phineasz Acabei de ver o script do creaturescripts, e realmente ele tá fazendo o check dos points, então, no caso, remova a linha do código do NPC a qual citei acima... doPlayerRemovePoints(cid, Count_Points)
-
(Resolvido)[Erro] Script deixa você com Pontos negativo
Tenho dúvida: O cara tava com 0 points e conseguiu comprar o documento de x points? Se sim, o problema está aí... o npc apenas remove os pontos que o player selecionou e em seguida dá o item para o jogador. O check está sendo quando ele tenta negociar com outro player, mas daí, ele já tinha o documento que descontou dos pontos no banco de dados dele...
-
[TFS 1.3] TARO EVENT - Novo evento para OT
@Phineasz Quando eu achar uma base boa, kkkk. (acabei perdendo meus arquivos de servidores 8.6).
-
Dúvida: storage e 'key char'
Sobre o segundo, acredito que seja possível sim, em C++ tem-se a possibilidade de você pegar o nome do computador, usuário e outras informações (até mesmo do hardware, como o da placa mãe - GamersClub utiliza deste método para identificar cheaters que já foram banidos -). Com isso, basta você armazenar no banco de dados essas informações de cada jogador e fazer com que seja trabalhada de uma forma que quando o player for banido, seja lançada a identificação do mesmo na blacklist. Dá um pouco de trabalho, mas é algo que rende bastante para novas ideias do servidor, como baú diário de forma precisa e dentre outros...
-
(Resolvido)Colocar mais players em um evento
- [SHOW-OFF] Pokémon Heroes [TFS 1.3] PxG-like
Vou acompanhar, gostei de que esteja trabalhando com TFS 1.3, talvez eu me interesse mais por derivados.- /adm para virar GOD /player para virar PLAYER
Simples, porém útil. Muito bom, precisamos de mais conteúdos para 1.x.- Como registrar um ganho de Xp no login.lua
Bom, você disse que não sabe COMO fazer, então estou supondo que tenha conhecimento de mexer no script, correto? A função que você irá utilizar é onLogin (que pode ser no login.lua), mas recomendo utilizar no mesmo script. Verifique ao player logar, se o (valor do storage - os.time()) for maior do que 0, pois se for, quer dizer que ainda há tempo para o player com extraxp, com isso você usa o addEvent com a função de encerrar o bônus de xp que é dada pela mesma fórmula: valor do storage - os.time(), no qual irá retornar em SEGUNDOS, porém, o addEvent trabalha com mili, ou seja, valor do storage - os.time() * 1000 No script tá uma zona, cara, recomendo procurar outro... Esse while aí vai matar o teu servidor, temos a função onThink para creatures também.- Underscore Layout
Quem tiver esse cara na equipe, pode dormir sossegado.- [TFS 1.3] TARO EVENT - Novo evento para OT
@Yinz Opa, valeu! Se tem o selo de qualidade do Yinz, então tá valendo! haha, ?. Abç.- [TFS 1.3] TARO EVENT - Novo evento para OT
* Apresentação * Bom, galera, tá tudo explicado no vídeo de como funciona o evento [Manual e Automático], como configurar o arquivo e tudo mais. Arquivos do evento estão anexado no tópico, assim como o vírus scan também, :). * Vídeo * * Comandos * !taro abrir Utilizado por staffs para abrir o evento [Manual] !taro fechar Utilizado por staffs para fechar o evento [Manual] !taro encerrar Utilizado por staffs para encerrar o evento [Manual] !taro kick,nome_jogador Utilizado por staffs e PLAYERS para kickar alguém do evento * Links * Vírus scan: https://www.virustotal.com/pt/file/7b30879de2745ef020a06de135dae7bd80673eb0d5d2f80b22b1f2a6db5158e0/analysis/1548894947/ Download: Taro Event - Lordzetros.zip Dúvidas, sugestões, críticas ou bugs? Deixe abaixo,- (Resolvido)Erro Script Wand - TFS 1.3
@BilauX local min, max = 5000000,5000000 --Ataque mínimo e ataque máximo local w = { [1] = {ef = 46, sh = 29, dmg = COMBAT_FIREDAMAGE}, } function onUseWeapon(player, variant) local effect = player:getStorageValue(4561) local target = Creature(variant:getNumber()) if target then local wx = w[effect] or w[math.random(#w)] local target_pos = target:getPosition() player:getPosition():sendDistanceEffect(target_pos, wx.sh) addEvent(function() doAreaCombatHealth(player:getId(), wx.dmg, target_pos, 0, -min, -max, wx.ef) end, 100) end return true end- (Resolvido)Loteria - TFS 1.3
@BilauX Por nada. Segue script do tópico: local rewards = { {9002, 1}, {9004, 1}, {9693, 1}, {2160, 100}, } local function get_players() local t = {} for _, c in ipairs(Game.getPlayers()) do if (c:getGroup():getId() == 1) then table.insert(t, c) end end return t end function onTime(interval) local players = get_players() if (#players > 0 and #rewards > 0) then local uid, n = math.random(1, #players), math.random(1, #rewards) local ganhador = players[uid] local reward, count = rewards[n][1], rewards[n][2] if (ganhador and reward and count) then ganhador:addItem(reward, count) Game.broadcastMessage('O player '.. ganhador:getName()..' recebeu '.. count .. ' '..ItemType(reward):getName()..' na loteria.', MESSAGE_STATUS_WARNING) end end return true end- (Resolvido)AJUDA SCRIPT - TFS 1.3 - ADDON
-- female, male local outfits = { ["citizen"] = {136, 128}, ["hunter"] = {137, 129}, ["mage"] = {138, 130}, ["knight"] = {139, 131}, ["noblewoman"] = {140, 132}, ["summoner"] = {141, 133}, ["warrior"] = {142, 134}, ["barbarian"] = {147, 143}, ["druid"] = {148, 144}, ["wizard"] = {149, 145}, ["oriental"] = {150, 146}, ["pirate"] = {155, 151}, ["assassin"] = {156, 152}, ["beggar"] = {157, 153}, ["shaman"] = {158, 154}, ["norsewoman"] = {252, 251}, ["nightmare"] = {269, 268}, ["jester"] = {270, 273}, ["brotherhood"] = {279, 278}, ["demonhunter"] = {288, 289}, ["yalaharian"] = {324, 325}, ["warmaster"] = {336, 335}, ["wayfarer"] = {366, 367}, ["afflicted"] = {431, 430}, ["elementalist"] = {433, 432}, ["deepling"] = {464, 463}, ["insectoid"] = {466, 465}, ["red baron"] = {471, 472}, ["crystal warlord"] = {513, 512}, ["soil guardian"] = {514, 516}, } local addondoll_id = 9693 function onSay(player, words, param) if player:getItemCount(addondoll_id) < 0 then player:sendCancelMessage("Voce nao tem addon doll!") return false end local split = param:split(",") local addonType = split[1] if not addonType then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Por favor utilize o comando corretamente. !addon first, mage") return false end addonType = addonType:lower() if addonType ~= "first" and addonType ~= "second" or split[2] == nil then player:sendCancelMessage("Por favor use o comando corretamente. Exemplo: !addon first,mage") return false end local outfitName = split[2] local outfit = outfits[outfitName:lower()] if not outfit then player:sendCancelMessage("Não existe nenhuma Outfit com esse nome.") return false end local type = (addonType == "first" and 1) or 2 local ps = (player:getSex() == 1 and 2) or 1 if player:hasOutfit(outfit[ps], type) then player:sendCancelMessage("Voce ja tem este addon") return false end player:removeItem(addondoll_id, 1) player:getPosition():sendMagicEffect(CONST_ME_GIFT_WRAPS) player:addOutfitAddon(outfit[1], type) player:addOutfitAddon(outfit[2], type) player:sendTextMessage(MESSAGE_INFO_DESCR, string.format('Você recebeu o %s do Addon %s.', addonType:lower(), outfitName:lower())) return false end- Melhorar a melhor resposta na seção de suporte
Apoiado. - [SHOW-OFF] Pokémon Heroes [TFS 1.3] PxG-like
Informação Importante
Confirmação de Termo