Líderes
-
Mateus Robeerto
HéroiPontos335Total de itens -
-
-
MaXwEllDeN
HéroiPontos1185Total de itens
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 08/24/23 em todas áreas
-
[TFS 1x] IncreaseMagicPercent
[TFS 1x] IncreaseMagicPercent
luanluciano93 e um outro reagiu a Mateus Robeerto por uma resposta no tópico
2 pontosPara quem deseja utilizar o 'IncreaseMagicPercent' no arquivo items.xml, que aumenta o dano mágico em porcentagem No arquivo game.cpp depois. Player* attackerPlayer; if (attacker) { attackerPlayer = attacker->getPlayer(); } else { attackerPlayer = nullptr; } Player* targetPlayer = target->getPlayer(); if (attackerPlayer && targetPlayer && attackerPlayer->getSkull() == SKULL_BLACK && attackerPlayer->getSkullClient(targetPlayer) == SKULL_NONE) { return false; } damage.primary.value = std::abs(damage.primary.value); damage.secondary.value = std::abs(damage.secondary.value); int32_t healthChange = damage.primary.value + damage.secondary.value; if (healthChange == 0) { return true; } adicionar // Inc Magic by lursky auto originList = { ORIGIN_RANGED, ORIGIN_MELEE, ORIGIN_CONDITION }; auto it = std::find(originList.begin(), originList.end(), damage.origin); if (attackerPlayer && it == originList.end()) { int32_t magicPercentBonus = 0; for (int32_t slot = CONST_SLOT_FIRST; slot <= CONST_SLOT_LAST; ++slot) { Item* item = attackerPlayer->inventory[slot]; if (item) { const ItemType& iiType = Item::items[item->getID()]; const int32_t& slotPosition = item->getSlotPosition(); if (iiType.increaseMagicPercent && (iiType.slotPosition & slotPosition)) { magicPercentBonus += iiType.increaseMagicPercent; } } } if (magicPercentBonus > 0) { damage.primary.value += damage.primary.value * (magicPercentBonus / 100.0f); } } No arquivo item.cpp post edit: Deve ter colocado duas vezes, ok? É só procurar no item.cpp essa linha e adicionar. Repita a busca pela mesma linha e adicione para exibir 'inc magic'. Pronto depois. if (it.abilities) { for (uint8_t i = SKILL_FIRST; i <= SKILL_LAST; i++) { if (!it.abilities->skills[i]) { continue; } if (begin) { begin = false; s << " ("; } else { s << ", "; } s << getSkillName(i) << ' ' << std::showpos << it.abilities->skills[i] << std::noshowpos; } adicionar. if (it.increaseMagicPercent) { if (begin) { begin = false; s << " ("; } else { s << ", "; } s << "Inc.Magic " << std::showpos << it.increaseMagicPercent << '%' << std::noshowpos; } No arquivo items.cpp depois. {"worth", ITEM_PARSE_WORTH}, adicionar: { "increasemagicpercent", ITEM_PARSE_INCREASEMAGICPERCENT }, Novamente, no arquivo items.cpp: depois. case ITEM_PARSE_SUPPRESSCURSE: { if (valueAttribute.as_bool()) { abilities.conditionSuppressions |= CONDITION_CURSED; } break; } adicionar. case ITEM_PARSE_INCREASEMAGICPERCENT: { it.increaseMagicPercent = pugi::cast<int32_t>(valueAttribute.value()); break; } No arquivo items.h depois. uint64_t worth = 0; adicionar. int32_t increaseMagicPercent = 0; Novamente, no arquivo items.h: after. ITEM_PARSE_WORTH, adicionar: ITEM_PARSE_INCREASEMAGICPERCENT, FIM É só recompilar e testar Como funciona usar esses atributos? Veja aqui um exemplo item id="xxx" name="teste robe"> <attribute key="weight" value="7100"/> <attribute key="armor" value="18"/> <attribute key="slotType" value="body"/> <attribute key="increaseMagicPercent" value="50"/> </item> Obs: Esses adições na source foram feitas por Mateus Roberto, e Lurskcy fez uma correção de erro que estava causando um .crash no arquivo games.cpp. Está funcionando bem. Espero que gostem2 pontos -
(Resolvido)[SQLite] -=[TFS]=- 0.4 8.60 COMO EU COLOCO PRA INDENTIFICA O NOME DO PERSONAGEM NESSE SCRIPT
-- Cassino System by LucasHere function onUse(cid, item, frompos, item2, topos) pos1 = {x=256, y=344, z=7, stackpos=1} -- posição que vai criar os itens pos2 = {x=257, y=344, z=7, stackpos=1} pos3 = {x=258, y=344, z=7, stackpos=1} local config = { moneyneed = 2000, -- amount of VIP coins needed to play } local premios = { [2189] = 1, [6529] = 1, [2546] = 1, [2352] = 1, [2545] = 1, [8851] = 1, [7424] = 1, [7735] = 1, [8293] = 1, [7450] = 1, [8931] = 1, [8856] = 1 } function additem(cid, premios) local playerName = getPlayerName(cid) -- Get the player's name for itemId, quantity in pairs(premios) do doPlayerAddItem(cid, itemId, quantity) end doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, playerName .. " apostou no cassino e ganhou todos os itens.") end if item.itemid == 1945 and getPlayerItemCount(cid, 11192) < config.moneyneed then doPlayerSendCancel(cid, "Desculpe, você não tem moedas VIP suficientes para jogar!") return true end if item.itemid == 1945 then doTransformItem(item.uid, 1946) doPlayerRemoveItem(cid, 11192, config.moneyneed) local premioItems = premios addEvent(doCreateItem, 0, premioItems, pos1) addEvent(doCreateItem, 1000, premioItems, pos2) addEvent(doCreateItem, 2000, premioItems, pos3) addEvent(additem, 2000, cid, premioItems) return true end local item0 = getThingfromPos(pos1) local item1 = getThingfromPos(pos2) local item2 = getThingfromPos(pos3) if item.itemid == 1946 then doTransformItem(item.uid, 1945) if item0.itemid ~= 0 then doRemoveItem(item0.uid, 1) end if item1.itemid ~= 0 then doRemoveItem(item1.uid, 1) end if item2.itemid ~= 0 then doRemoveItem(item2.uid, 1) end else doTransformItem(item.uid, 1945) end return true end1 ponto
-
(Resolvido)[SQLite] -=[TFS]=- 0.4 8.60 Se sabe coloca esse script pra somente usar level 717217 e com a storage vip 13545 e só se tiver premium
Ja resolvi eu tenho storage lekot.1 ponto
-
(Resolvido)[SQLite] -=[TFS]=- 0.4 8.60 Se sabe coloca esse script pra somente usar level 717217 e com a storage vip 13545 e só se tiver premium
vc tbm tem a storage?1 ponto
-
[TFS 1x] IncreaseMagicPercent
[TFS 1x] IncreaseMagicPercent
Mateus Robeerto reagiu a Underewar por uma resposta no tópico
1 pontoObrigado por compartilhar!1 ponto -
(Resolvido)REVSCRIPT TFS 1.5
(Resolvido)REVSCRIPT TFS 1.5
Underewar reagiu a Mateus Robeerto por uma resposta no tópico
1 pontoVou postar aqui para vocês, é baseado no 7.92 e se chama 'IncreaseMagicPercent". Acabei de postar aqui. Dê uma olhada para que você possa adicionar à sua source https://tibiaking.com/forums/topic/111320-increasemagicpercent-tfs-1x/1 ponto -
Onde criar actions no tibia 13.20, source canary
Onde criar actions no tibia 13.20, source canary
Underewar reagiu a Mateus Robeerto por uma resposta no tópico
1 pontoProvavelmente é o RevScript mesmo. Apenas dê uma olhada aqui. https://github.com/opentibiabr/canary/tree/main/data-otservbr-global/scripts/actions ou https://github.com/opentibiabr/canary/tree/main/data-canary/scripts/actions1 ponto -
Onde criar actions no tibia 13.20, source canary
Bom primeiramente sugiro que tenha o datapack original que pode ser obtido no github oficial do projeto link abaixo. https://github.com/opentibiabr/canary Tendo a plena certeza de estar utilizando a base original e atualizada o sistema de revscript permite você ter um arquivo em qualquer lugar e ter mais de um tipo de função no mesmo script ou seja eu posso ter 1 action, 1 talkaction etc... ou até mais de 1 no mesmo arquivo.lua Sabendo disso a melhor forma é copiar um action que já existe de base e editar ou pode fazer um do zero vou deixar um exemplo de um abaixo. Obs: Sugiro utilizar o caminho de data-otservbr-global/scripts/custom/nomedoscript.lua ou data-canary/scripts/custom/nomedoscript.lua nesse caminho é a pasta custom onde tem apenas conteúdo custom é separada para isso então caso utilize o github desktop ou comando para manter o repositório atualizado não irá afetar a pasta custom com todo o seu conteúdo custom. Exemplo: local config = { [ITEM_GOLD_COIN] = {changeTo = ITEM_PLATINUM_COIN}, [ITEM_PLATINUM_COIN] = {changeBack = ITEM_GOLD_COIN, changeTo = ITEM_CRYSTAL_COIN}, [ITEM_CRYSTAL_COIN] = {changeBack = ITEM_PLATINUM_COIN} } local goldConverter = Action() function goldConverter.onUse(player, item, fromPosition, target, toPosition, isHotkey) local coin = config[target.itemid] if not coin then return false end local charges = item:getCharges() if coin.changeTo and target.type == 100 then target:remove() player:addItem(coin.changeTo, 1) item:transform(item:getId(), charges -1) elseif coin.changeBack then target:transform(target.itemid, target.type - 1) player:addItem(coin.changeBack, 100) item:transform(item:getId(), charges -1) else return false end if charges == 0 then item:remove() end return true end goldConverter:id(23722, 25719) goldConverter:register() Explicação: O revscript é bem simples tirando todo o conteúdo ele se resume em: - local goldConverter = Action() Essa parte você determina que o goldConverter vai ser um action - goldConverter:id(23722, 25719) Nessa parte você determina quais itens vão ser utilizados no caso como é o gold converter vai ser o gold coin e o platinum coin -goldConverter:register() Essa parte registra todo o escopo do goldConverter como script não precisando do action.xml apenas o arquivo.lua1 ponto
-
Criando Hotkeys
Criando Hotkeys
BonasxD reagiu a EdsonJunior por uma resposta no tópico
1 pontoÉ um modo bem simples que se encontra no próprio Elfbot Ng. Aqui está um tutorial com imagens: Vá em Hotkeys e Clique em Create Hotkey. A opção em vermelho é para ser manual por exemplo se for cria uma hotkey para usar Utani gran hur,Manual ela ficaria assim " stronghaste " e você teria que aperta toda hora pra ele fazer , agora no automatico ficaria assim " auto 200 stronghaste " por que auto 200 ? Por que auto é para usar toda vez que acaba e 200 é o tempo que ele vai usar no caso 200 seria 2 milésimos , ideal para certas hotkeys. No caso vou fazer uma hotkey para usar Utito tempo quando tiver com 290 de mana. A hotkey terá de ficar assim auto 200 mphigher 290 say 'utito tempo' Como está marcado em roxo no caso Say seria pra falar utito tempo. Depois disso perguntara oque ele irá falar como eu disse será utito tempo. Nossa Hotkey está evoluindo após dizer oque ele irá falar aparecerá uma lista de scripts e eles teram uma explicação de como ser usados ao lado, como eu disse no caso vou usar o " mphigher " e abaixo terá uma caixa pra dizer quanto de mana irá precisar como eu disse será 290 , mais você pode trocar o valor. Na próxima não precisamos acrescentar mais nada pois nosso script já está pronto. Na próxima etapa veremos que terminamos nosso script embaixo terá 2 opções a serem escolhidas a que está em roxo é para terminamos o nosso script a que está em vermelho é para que voce queira adicionar mais alguma coisa. Espero que gostem. Créditos Kaisac ~1 ponto -
(Resolvido)[Script] Npc Teleport
(Resolvido)[Script] Npc Teleport
B i e LL reagiu a MaXwEllDeN por uma resposta no tópico
1 pontolocal DESTINO = {x = 160, y = 54, z = 7} -- POSIÇÃO DE DESTINO local SAFFRON = {x = 160, y = 54, z = 7} -- POSIÇÃO DE Saffron local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg:lower()) end function onThink() npcHandler:onThink() end local talkState = {} function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, "sim") or msgcontains(msg, "yes") then selfSay("Aí está!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, DESTINO) doSendMagicEffect(DESTINO, 10) elseif msgcontains(msg, "nao") or msgcontains(msg, "no") then selfSay("Aí está!", cid) doSendMagicEffect(getThingPos(cid), 10) npcHandler:releaseFocus(cid) doTeleportThing(cid, SAFFRON) doSendMagicEffect(SAFFRON, 10) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Amigo, aprenda a usar vírgulas. Por causa da falta delas não entendi bem o que você queria.1 ponto