Postado Março 12, 2019 6 anos Olá pessoa, estou aqui outra vez trazendo o código semanal, para essa semana vou apresentar uma modificação nas sources que permite que o attack speed do jogador seja modificado. Para fazer isso, é necessário primeiro compilar as sources que permitam essa funcionalidade. Então abra o arquivo player.cpp e de CTRL + F na função uint32_t Player::getAttackSpeed() const e substitua por: uint32_t Player::getAttackSpeed() const { int32_t attackSpeedValue = 0; std::string value; this->getStorage("8500", value); if (value != "-1") { attackSpeedValue = atoi(value.c_str()) * 5; } int32_t vocationAttackSpeed = vocation->getAttackSpeed(); if (attackSpeedValue > vocationAttackSpeed/2){ attackSpeedValue = vocationAttackSpeed/2; } return vocation->getAttackSpeed() - attackSpeedValue; } Lembrando que esse script foi feito e testado a partir das sources: tfs 0.4 rev 3884 e também tfs 0.4 rev 3777. Porém deve com poucas modificações deve funcionar em outras versões. O que ele faz: ele verifica o valor da storage número 8500 do jogador e faz o seguinte cálculo: attackSpeedDaVocacao - valorStorage * 5 Sendo que o máximo de speed attack que o jogador pode atingir é o dobro da configurada na sua vocação. Após isso é só compilar e utilizar em qualquer outro script, para aumentar o speed attack do jogador. Para fazer isso é só alterar o valor da storage número 8500 do player. Para utilizar isso, pode ser criada uma spell, eu fiz da seguinte maneira: 1) Na sua pasta de spells crie um arquivo e coloque isso dentro: local config = { time = 3, -- segundos que ira durar o efeito value = 100 -- quantos milisegundos / 5 que ira aumentar } function onCastSpell(cid, var) setPlayerStorageValue(cid, 8500, config.value); addEvent(finishSpell, config.time, cid) doSendMagicEffect(getPlayerPosition(cid), 11) return true end function finishSpell(cid) if (isCreature(cid)) then setPlayerStorageValue(cid, 8500, 0) doSendMagicEffect(getPlayerPosition(cid), 4) end end 2) Configure no spells.xml: <instant name="Nome da spell" words="exeta kor" lvl="25" manapercent="20" prem="1" aggressive="0" exhaustion="1000" needlearn="0" event="script" value="caminho de onde voce deixou o codigo"> <vocation id="4"/> </instant> Porém fazendo isso tem um problema, caso o jogador solte a spell e deslogue, ele ficaria para sempre com a attack speed daquela forma.. Então vamos adicionar no login.lua o seguinte: if getPlayerStorageValue(cid, 8500) ~= 0 then setPlayerStorageValue(cid, 8500, 0) end Pronto, agora você pode utilizar uma spell que aumenta o speed attack do seu personagem. Para criar itens que deem attack speed: 1) Após compilar as sources, crie um arquivo em movements e coloque o seguinte código: local items = { [2500] = 5, -- amazon armor, onde 2500 e o id da amazon armor e 5 e a quantidade de attack speed /5 do que vai ser aumentado [2499] = 10, -- amazon helmet, 2499 e o id do helmet e 10 a quantidade de attack speed/5 do que vai ser aumentado [2506] = 15 -- dragon scale helmet, igual aos de cima.. } local config = { storage = 8500, } function onEquip(cid, item, slot) local quantity = (items[item.itemid]); setPlayerStorageValue(cid, (config.storage), quantity) return true end function onDeEquip(cid, item, slot) local quantity = (items[item.itemid]) setPlayerStorageValue(cid, (config.storage), 0) return true end 2) Em movements.xml adicione: <movevent type="Equip" itemid="ID DO ITEM" slot="armor" function="onEquipItem" script="caminho do scriot" /> <movevent type="DeEquip" itemid="ID DO ITEM" slot="armor" function="onDeEquipItem" script="caminho do script" /> Note que você precisa apenas um arquivo .lua para todas as configurações de itens.. É isso ai, lembrando que as TFS testadas foram 0.4 rev 3884 e 0.4 rev 3777. Qualquer modificação que vocês quiserem para tfs 0.4, deixem nos comentários. Caso alguém não saiba compilar, sigam esse tutorial:https://tibiaking.com/forums/topic/33548-dev-c-compilando-tfs-no-windows/ Toda terça-feira um tópico novo: Descanso para curar mana (Spell): https://tibiaking.com/forums/topic/94615-spell-descanso-para-curar-mana/ Peça sua spell (Suporte): https://tibiaking.com/forums/topic/84162-peça-sua-spell/ Chuva de flechas (Spell): https://tibiaking.com/forums/topic/72232-chuva-de-flechas-spell/ Doom (Spell): https://tibiaking.com/forums/topic/51622-doom-spell/ Utilização do VS Code (Infra): https://tibiaking.com/forums/topic/94463-utilizando-o-visual-studio-code-notepad-nunca-mais/ SD com Combo (Spell): https://tibiaking.com/forums/topic/94520-sd-modificada/ Alteração attack speed (C++): https://tibiaking.com/forums/topic/94714-c-attack-speed-spells-itens-e-onde-você-quiser/ Bônus de Speed (NPC): https://tibiaking.com/forums/topic/94809-npc-concede-bônus-aos-players/
Postado Março 13, 2019 6 anos Parabéns, seu tópico de conteúdo foi aprovado! Muito obrigado pela sua contribuição, nós do Tibia King agradecemos. Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP. Spoiler Congratulations, your content has been approved! Thank you for your contribution, we of Tibia King we are grateful. Your content will help many other users, you received +1 REP. Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas. discord.gg/phJZeHa2k4 Projeto ATS (Naruto) Informações Abaixo Facebook Youtube Discord Tutoriais / Conteúdos Clique Aqui
Postado Março 25, 2019 6 anos ../../src/player.cpp:4116: error: prototype for 'uint32_t Player::getAttackSpeed() const' does not match any in class 'Player' ../../src/player.h:670: error: candidate is: uint32_t Player::getAttackSpeed() mingw32-make: *** [obj//player.o] Error 1 Tentando compilar em 0.3.6 8.54
Postado Maio 3, 2019 6 anos Autor opa, só vi hoje, manda ai o seu método que calcula attack speed por favor Toda terça-feira um tópico novo: Descanso para curar mana (Spell): https://tibiaking.com/forums/topic/94615-spell-descanso-para-curar-mana/ Peça sua spell (Suporte): https://tibiaking.com/forums/topic/84162-peça-sua-spell/ Chuva de flechas (Spell): https://tibiaking.com/forums/topic/72232-chuva-de-flechas-spell/ Doom (Spell): https://tibiaking.com/forums/topic/51622-doom-spell/ Utilização do VS Code (Infra): https://tibiaking.com/forums/topic/94463-utilizando-o-visual-studio-code-notepad-nunca-mais/ SD com Combo (Spell): https://tibiaking.com/forums/topic/94520-sd-modificada/ Alteração attack speed (C++): https://tibiaking.com/forums/topic/94714-c-attack-speed-spells-itens-e-onde-você-quiser/ Bônus de Speed (NPC): https://tibiaking.com/forums/topic/94809-npc-concede-bônus-aos-players/
Postado Agosto 16, 2020 4 anos @Reds a source que uso já existe modificações na uint32_t Player::getAttackSpeed() const uint32_t Player::getAttackSpeed() const { int32_t SpeedAttack; SpeedAttack = getSkill(SKILL_FIST, SKILL_LEVEL); if(SpeedAttack < 10) SpeedAttack = 3000; else if(SpeedAttack >= 10 && SpeedAttack < 20) SpeedAttack = 2800; else if(SpeedAttack >= 20 && SpeedAttack < 30) SpeedAttack = 2600; else if(SpeedAttack >= 30 && SpeedAttack < 40) SpeedAttack = 2400; else if(SpeedAttack >= 40 && SpeedAttack < 50) SpeedAttack = 2200; else if(SpeedAttack >= 50 && SpeedAttack < 60) SpeedAttack = 2000; else if(SpeedAttack >= 60 && SpeedAttack < 70) SpeedAttack = 1800; else if(SpeedAttack >= 70 && SpeedAttack < 80) SpeedAttack = 1600; else if(SpeedAttack >= 80 && SpeedAttack < 90) SpeedAttack = 1400; else if(SpeedAttack >= 90 && SpeedAttack < 100) SpeedAttack = 1200; else if(SpeedAttack >= 100 && SpeedAttack < 110) SpeedAttack = 1000; else if(SpeedAttack >= 110 && SpeedAttack < 120) SpeedAttack = 800; else if(SpeedAttack >= 120 && SpeedAttack < 130) SpeedAttack = 600; else SpeedAttack = 400; return SpeedAttack; } existe alguma forma de conciliar as duas?
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.