Histórico de Curtidas
-
Cook recebeu reputação de Danihcv em [ Pedido ] Sistema de VIP que da pra vender em siteSem desmerecer o Script feito pelo Dani, mas vale ressaltar que é mais seguro e prático usar o Sistema Premium do Tibia.
-
Cook deu reputação a Danihcv em [ Pedido ] Sistema de VIP que da pra vender em siteAdicione essa tag ao arquivo actions.xml (data\actions):
<action itemid="ID-DO-SCROLL" event="script" value="vipscroll.lua"/> *Não esqueça de colocar o id de um item/scroll que não está sendo usado em nenhum outro script
Crie um arquivo chamado vipscroll.lua dentro da pasta data\actions\scripts e coloque isso dentro:
function onUse(cid, item) local price = 5000000 if doPlayerRemoveMoney(cid, price) == true then local days = 30 local daysvalue = days * 24 * 60 * 60 local storageplayer = getPlayerStorageValue(cid, 13540) local timenow = os.time() if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then time = timenow + daysvalue else time = storageplayer + daysvalue end if string.find(tostring(getCreatureName(cid)),"[[Vip]]") then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.") setPlayerStorageValue(cid, 13540, time) local quantity = math.floor((getPlayerStorageValue(cid, 13540) - timenow)/(24 * 60 * 60)) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.") else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.") setPlayerStorageValue(cid, 13540, time) local name = getCreatureName(cid) db.executeQuery("UPDATE `players` SET `name` = '[Vip] "..name.."' WHERE `id` = "..getPlayerGUID(cid)..";") doRemoveCreature(cid) end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de "..price.." gp's para colocar vip.") end return true end Agora basta colocar esse item a venda no site.
-
Cook recebeu reputação de lucasromero em [Pedido] Sistema de rank
-
Cook deu reputação a xWhiteWolf em Frozen OrbEai meus queridos colegas do Tibia King, hoje vim trazer uma spell que um amigo egípcio (sim, você leu certo) pediu pra mim fazer pra ele. Sei que eu ando meio ausente mas é que a faculdade está realmente complicada e to entrando em semana de provas mas tirei esse fds pra tentar trazer algo legal pra vocês
A spell cria uma orb congelada embaixo de você que vai ficar dando dano em area enquanto roda uns efeitos de gelo, ela é bem bonita e foi um dos motivos que eu decidi fazer
Aqui tem um pequeno GIF dela funcionando:
em spells.xml coloque:
<instant name="Frozen Orb" words="exori grav frigo" lvl="80" manapercent="3" prem="1" maglv="50" exhaustion="1000" needlearn="0" event="script" value="attack/frozenorb.lua"> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> <vocation id="8"/> </instant> Note que ela remove % da mana, se quiser mudar isso troque manapercent ="3" por mana = "quantidade que vai gastar".
Agora vamos ao script:
Crie um arquivo chamado frozenorb.lua e coloque na pasta spells/scripts/attack e coloque o segundo conteúdo dentro dele:
Todas as explicações estão dentro do script, qualquer dúvida venham falar cmg.
A versão testada foi TFS 0.3.6, tibia 8.54 mas deve funcionar em 8.6 sem problema. Qualquer erro escrevam aí que eu tento ajudar.
Agradecimentos: Primeiramente à equipe do DeathZot por ter criado à spell, eu retirei a idéia de uma magia que eles fizeram pro servidor deles.
Segundamente Em segundo lugar, pro meu querido amigo, Ahmed, por ter me mostrado o vídeo e confiado em minhas habilidades de roubar idéias scripting
-
Cook deu reputação a xWhiteWolf em Tibia está zerado + preview [GPS SYSTEM]Graças ao nosso marvilhoso colega Elwyn o tibia foi zerado hoje dia 09/03/2015 haha. Ele lançou uma função crucial pra fazer qualquer script relacionado à movimentação ao combinar o algoritmo de pathFinding da source à uma função Lua.
Sei que muita gente não frequenta a seção de programming OU não entendeu nada doque eu falei mas pqp, deem uma rápida olhada noque dá pra criar:
Isso é um GIF de um sistema que eu to tentando fazer desde novembro de 2014 e que agora eu finalmente consegui terminar graças à genialidade desse mito. Trata-se de uma talkaction que vc digita !Lugarquevcquerir e o personagem vai andando automaticamente até o local e quando chega ele manda uma msg avisando que vc chegou ao destino, semelhante a um GPS!!!!!11111
Fora que com isso podemos controlar os movimentos do NPCS!!!!111 Dá pra fazer uma fucking quest que vc tem que seguir o npc até um altar secreto e seilá, ele é um npc normal que vende backpack/rope/shovel mas qnd dá 18h de um certo dia ele visita a tumba e volta pra cidade (e vc tem que seguir ele pra descobrir isso). SUCH RPG!!!!!
Sei lá, eu animei demais com isso >.<
As possibilidades são tantas que eu não consigo nem me conter AUHIEUHIUHI dá pra fazer MUITA coisa cara, inclusive vou tentar trazer os scripts relacionados à essa função pra vocês.
Se você gostou das idéias, sério, não clica em gostei no meu tópico, vai lá no tópico do elwyn e clica... ele é o verdadeiro mito que resolveu isso.
-
Cook recebeu reputação de Danihcv em [Simples] Onde Fica O Arquivo Para Trocar As Mensagens Que Aparecem No Seu ServerÉ importante ressaltar que quase nunca o Script vem nomeado como msg.lua
O nome pode muito bem ser outro, para ficar mais fácil identificar dependendo da distro, pode ser verificado o intervalo entre as mensagens.
-
-
Cook deu reputação a xWhiteWolf em Mass Healing@Schiffert, acredito que sim mas pra ter certeza só colocar e testar.. se der erro posta o erro que tento arrumar pra rodar em 1.0 tb
-
Cook deu reputação a xWhiteWolf em Mass HealingFala galera, hoje vim trazer um script bem simples que eu criei faz um tempo mas vejo que muita gente procura algo do gênero e não encontra então decidi postar.
Explicação: É um script de uma spell semelhante às poções do League of Legends, você usa e ela fica recuperando vida por um tempo. Realmente muito útil quando você está caçando e não quer ficar usando exura toda hora.
Por ser bem simples eu vou deixar as explicações dentro do próprio script:
local config = { cooldown = 15, -- tempo entre uma magia e outra tempo = 10, -- tempo em segundos que ficará healando percent = 5, --- porcentagem da vida que cura storage = 45382, effect = 12 --- efeito que vai sair } function onCastSpell(cid, var) if os.time() - getPlayerStorageValue(cid, config.storage) >= config.cooldown then for i = 1, config.tempo do addEvent(function() if isCreature(cid) then local lifedraw = math.ceil(getCreatureMaxHealth(cid) * (config.percent)/100) local pos = getPlayerPosition(cid) doCreatureAddHealth(cid, lifedraw, 1) doSendAnimatedText(pos, "+"..lifedraw , TEXTCOLOR_GREEN) doSendMagicEffect(pos, config.effect) end end, 1000*i) end doPlayerSetStorageValue(cid, config.storage, os.time()) else doPlayerSendCancel(cid, "Your Mass Healing is at cooldown, you must wait "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, config.storage))).." seconds.") end return true end e no spells.xml
<instant name="TK" words="masshealing" lvl="8" mana="40" prem="0" selftarget="1" aggressive="0" exhaustion="1500" needlearn="0" event="script" value="especiais/healingtime.lua"> </instant> Como ela é por addEvent eu teria que fazer um gif pra mostrar o funcionamento mas acho que essa fotinho dá um exemplo de como funciona: ela recupera 5% da vida a cada segundo durante 10 segundos.
Espero que gostem e façam bom proveito
-
Cook deu reputação a Snowsz em [Sistema] AttackSpeed - Sem sourceBom, postei este tópico nessa área e não em globalevents por que não considero que lá deem muitas visualizações em globalevents, não é por que quero ganhar reputação ou algo do tipo, mas para ajudar quem precisa de tal coisa.
Resumindo: Este script é um globalevent que a cada 2 segundos muda o attackspeed de um item conforme o skill fist fighting do player, funcionando como um sistema de attackspeed com source, quanto mais skill, mais rápido ele ataca, mas como este sistema não utiliza sources, eu fiz o melhor que eu pude.
Testado em um TFS 0.4
Lag: Não se se irá causar lag, pouco lag, ou muito lag, eu fiz em globalevent por causa do seu intervalo que pode ser configurável para mais ou para menos, não pensei muito em usar o creatureevent por conta que o onThink ou onAttack fica se repetindo a cada meio segundo se não me engano, então, preferi fazer desta forma.
Instalação:
Na pasta globalevents/scripts crie um arquivo com extensão .lua com nome de playerattackspeed(ficando playerattackspeed.lua) e ponha isso dentro:
function onThink(interval) local multi = 20 local skill = 0 for _, pid in ipairs(getPlayersOnline()) do local slotLeft, slotRight = getPlayerSlotItem(pid, CONST_SLOT_LEFT), getPlayerSlotItem(pid, CONST_SLOT_RIGHT) if isCreature(pid) then if slotLeft.uid > 0 then if (multi*getPlayerSkill(pid, skill)) >= 1999 then doItemSetAttribute(slotLeft.uid, "attackspeed", 1) else doItemSetAttribute(slotLeft.uid, "attackspeed", 2000-(multi*getPlayerSkill(pid, skill))) end elseif slotRight.uid > 0 then if (multi*getPlayerSkill(pid, skill)) >= 1999 then doItemSetAttribute(slotRight.uid, "attackspeed", 1) else doItemSetAttribute(slotRight.uid, "attackspeed", 2000-(multi*getPlayerSkill(pid, skill))) end end end end return true end Agora volte uma pasta e vá só para globalevents lá você encontrará um arquivo chamado globalevents com extensão .xml(sendo globalevents.xml) nele adicione a tag antes das duas últimas linhas:
<globalevent name="PlayerAttackSpeed" interval="2000" event="script" value="playerattackspeed.lua"/> Bom, o script foi instalado com sucesso.
Configuração:
No arquivo com extensão final .lua você pode modificar o id do skill em "local skill = 0", 0 significa o skill fist fighting, você pode ir alternando
Ainda no arquivo com extensão final .lua pode-se alterar o "local multi = 20", o 20 é a multiplicação do skill, ou seja, skill x 20, quando o skill configurado(eu deixei fist fighting) atingir 100 com o multi em 20, ele chegará ao máximo de attackspeed, após isso mesmo que ele pegue skill 1000 continuará essa mesma velocidade por conta de limitações que o tibia impõe nas suas sources, se quiser que ele ataque ainda mais rápido deverá mudar se não me engano só uma linha nas sources.
Agora no arquivo globalevents.xml você pode alterar a tag, mudando interval, 1000 é igual a um segundo, ou seja, no script ta configurado para a cada 2 segundos alterar o attackspeed conforme a configuração, você pode alterar para quanto quiser, lembre-se 1000 é um segundo, ou seja, se colocar 5000 fica 5 segundos de intervalo para o script agir.
Espero que gostem!
Talvez quando eu estiver mais avançado em lua eu possa criar uma segunda versão que possa atacar mais rápido, mas, no momento nem penso nisso
Versão Creaturescripts - Créditos: detoneitormen
(Obs: Não testei esta versão, só copiei do modo que ele escreveu.)
function onThink(cid, interval) local multi = 200 local skill = 2 local limite = 99 local slotLeft, slotRight = getPlayerSlotItem(cid, CONST_SLOT_LEFT), getPlayerSlotItem(cid, CONST_SLOT_RIGHT) if last_interval == nil then last_interval= os.clock() end if (os.clock() - last_interval) > 1 then if slotLeft.uid > 0 then if (multi*getPlayerSkill(cid, skill)) >= limite then doItemSetAttribute(slotLeft.uid, "attackspeed", 1) else doItemSetAttribute(slotLeft.uid, "attackspeed", 2000-(multi*getPlayerSkill(cid, skill))) end elseif slotRight.uid > 0 then if (multi*getPlayerSkill(cid, skill)) >= limite then doItemSetAttribute(slotRight.uid, "attackspeed", 1) else doItemSetAttribute(slotRight.uid, "attackspeed", 2000-(multi*getPlayerSkill(cid, skill))) end end last_interval= os.clock() return true end return false end A configuração é igual a minha versão, só muda a variável "limite" e "multi", para deixar igual ao meu, basta trocar:
Isso:
local limite = 99 Por isso:
local limite = 1999 E isso:
local multi = 200 Por isso:
local multi = 20 Obrigado detoneitormen.
-
Cook deu reputação a xWhiteWolf em Buraco NegroEssa spell foi feita originalmente pro Yazzo numa versão 7.6 do tibia, eu tenho ela salva desde essa época e apenas adaptei e removi umas coisas inúteis (que agora tem função pra isso). A spell não funciona tão bem quanto funcionava naquela época porque muita coisa mudou mas ela funciona e não apresenta nenhum erro então não vejo o porque de não postar já que pode servir de base pra outros scripts de vocês.
Ela faz um buraco negro e puxa todos que estão na area em direção ao centro (caso seja possível)
Vou colocar duas versões (a primeira é a original arrumada pra rodar em 8.54 e a segundas é ela com algumas funções novas)
versão1:
versão2:
spells.xml
<instant name="Dark Hole" words="buraco negro" lvl="160" mana="500" prem="1" exhaustion="2000" needlearn="0" event="script" value="especiais/buraco negro.lua"> <vocation id="6"/> <vocation id="7"/> <vocation id="5"/> </instant> Espero que gostem e estudem o código dela! haha
Uma imagem da versão 1:
e uma da versão 2:
-
Cook deu reputação a xWhiteWolf em Mostrar o tempo da Magic WallEae galera, hoje vou fazer uma pequena demonstração de como usar a função doShowTimeByPos, uma das mais novas funções adicionadas na New Lib, que agora está em versão 1.2.
A função:
Se seu server for 0.3.6/0.4 você só vai precisar adicionar essa linha marcada:
do contrário, se ele for das revs mais novas como 1.0 você irá adicionar essa linha:
Esses valores são a duração (20 segundos que é o tempo de duração da magic wall) e 20/35 é o TALKTYPE do tipo monster (cor laranja), seguindo a tabela do data\lib\constant.lua:
TALKTYPE_FIRST = 1 TALKTYPE_WHISPER = 2 TALKTYPE_YELL = 3 TALKTYPE_PRIVATE_PN = 4 TALKTYPE_PRIVATE_NP = 5 TALKTYPE_PRIVATE = 6 TALKTYPE_CHANNEL_Y = 7 TALKTYPE_CHANNEL_W = 8 TALKTYPE_RVR_CHANNEL = 9 TALKTYPE_RVR_ANSWER = 10 TALKTYPE_RVR_CONTINUE = 11 TALKTYPE_BROADCAST = 12 TALKTYPE_CHANNEL_RN = 13 TALKTYPE_PRIVATE_RED = 14 TALKTYPE_CHANNEL_O = 15 TALKTYPE_CHANNEL_RA = 17 TALKTYPE_MONSTER = 19 TALKTYPE_MONSTER_YELL = 20 Aqui tem uma imagem de como fica no server.
Note que eu fiz pra magic wall mas vale pra qualquer item que tenha duration, pra quests, pra contar tempo de invencibilidade de alguma spell ou oque você quiser, use a criatividade e explore o máximo dessa função. Abraços.
-
Cook deu reputação a Percy em Baiak Clássico 0.1 - Relembre o velho Baiak! (8.60)• Baiak Clássico 0.1 - Relembre o velho Baiak! (8.60) •
Servidor feito pelo Baiak e Editado por mim
Fala galera estou aqui para apresentar Baiak Clássico, Eu Trabalhei um tempo neste servidor e coloquei Online algumas vezes, o Baiak vem como novos teleports, um templo renovado, vocações balanceadas e um distro estável.Então, tá esperando o que? Confira logo!
• O Que Contêm no Servidor:
├ Mapa Baiak YurOTS editado com algumas novidades.
├ Várias Quests
├ Vocações Balanceadas com Fast Attack.
├ Cidade detalhada
├ Training Offline com Exit.
├ Bug do Rep System Arrumado
├ Mapa Compacto. Pesa Apenas 7,8mb
└ TFS Estável já compilado.
• Fotos do Baiak Classic •
SS #1 - Templo
• Fotos do Baiak Classic •
SS #2 - Novos Teleports
• Opções de Download do OTserver •
MediaFire
4shared
• Scan via VirusTotal •
• Créditos:
├ Baiak Lula
├ The Forgotten Server
├ DoidinMapper
├ Daniel (Pelos Separators)
└ Percy
-
Cook deu reputação a Emersonssss em [Talk][AntiBot]function TeleportBot(cid) if getPlayerStorageValue(cid, 934563) ~= -1 then doPlayerPopupFYI(cid, "Seu personagem foi teleportado para Templo, por uso de Bot 100% AFK") doTeleportThing(cid, getPlayerMasterPos(cid)) setPlayerStorageValue(cid, 934563, -1) end return true end function CheckBot(cid) local numer = math.random(2, 999) if isPlayer(cid) then doPlayerPopupFYI(cid, "Seu personagem esta sendo verificado por Bot AFK!\n\nVocê tem 1 minutos para responder.\n\nPor favor digite\n\n!check info, "..numer.."") setPlayerStorageValue(cid, 934563, numer) addEvent(TeleportBot, 60000, cid) end return true end function onSay(cid, words, param, channel) local param = param:lower() local t = string.explode(param, ",") local Numero = tonumber(t[2]) if (t[1] == "add") then if getPlayerGroupId(cid) < 2 then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem permissão para fazer Verificações!") else doBroadcastMessage(""..getCreatureName(cid).." envio uma verificação de BOT para o player "..getCreatureName(getPlayerByName(t[2]))..".") doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foi enviado uma verificação para o player : "..getCreatureName(getPlayerByName(t[2])).."") CheckBot(getPlayerByName(t[2])) return true end elseif (t[1] == "info") then if Numero == nil then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa digitar o valor.") end if getPlayerStorageValue(cid, 934563) == -1 then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem verificações pendentes.") end if getPlayerStorageValue(cid, 934563) ~= -1 and getPlayerStorageValue(cid, 934563) == Numero then setPlayerStorageValue(cid, 934563, -1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Obrigado por fazer a verificação, Bom jogo!!") end end return true end Sistema Bem simples:
Oque acontece você ADM está la ocupado arrumando algum bug e vem um player e fala "ADM o cara ta de bot" ai vai vc la fica falando "tae?tae?tae?".....Seus problemas acabaram.
O sistema manda um POPUP (Qual o elfbot não é capaz de reconhecer) e manda 1 sequencia de numero e da 1 minuto para o player falar os numeros, caso não? será teleportado para o templo padrão.
<talkaction log="yes" words="!check" event="script" value="CheckBot.lua"/> Comando :
!check add, NICK --Adc o player para Checar se esta de bot ! !check info, NUMERO --Comando que o player precisa informar para não ser teleportado. O sistema é simples e não faz verificação de pzLocked ele solicita apenas o valor.
Sempre de esse comando a player que realmente confia fazer a verificação, para que não tenha Power Abuses.
Somente Tutor + pode executa-lo.
Desculpe ficar fora do TK, não tenho muito tempo para programar(pois sou iniciante).
-
Cook deu reputação a leonardobo em (Resolvido)[PEDIDO] SCRIPT !Em data/actions/scripts crie um arquivo chamado itemlevel.lua e adicione o seguinte código:
function onUse(cid, item) local config = { leveladd = 300, -- Quantidade de level ao clicar no item. item = 11389, -- ID do item Usado. tempo = 10, -- Tempo para usar novamente caso não queira deixa um zero storage = 241123 } if os.time() - getPlayerStorageValue(cid, config.storage) >= config.tempo then doPlayerSetStorageValue(cid, config.storage, os.time()) else doPlayerSendCancel(cid, "Voce so pode usar apos "..(config.tempo - (os.time() - getPlayerStorageValue(cid, config.storage))).." segundos.") return true end doPlayerAddLevel(cid, config.leveladd) doRemoveItem(item.uid, 1) return true end em data/actions no arquivo actions.xml adicione a seguinte tag:
<action itemid="1138" script="itemlevel.lua"/> ItemID é o ID do item que você vai usar para executar a função.
Função do Script:
Ao usar sera acrescentado +300 leveis no player que utilizou o item, o item sera removido, e se o player tentar usar novamente terá um Tempo de 10 segundos.
OBS: Eu testei e funciono perfeitamente aqui.
Abraços,
Se quiser o script de outra forma, diga que eu faço, se ajudei deixa aquele gostei e melhor resposta ai .
-
Cook deu reputação a xWhiteWolf em [Spell] Katara's SenseEssa spell foi pensada pra ser um dobrador de agua removendo agua da grama e fazendo ela morrer... não sei se combinaria.
-
Cook deu reputação a xWhiteWolf em [Spell] Katara's SenseFala pessoal do TK, hoje vim trazer uma spell bem bonita que veio na minha cabeça.
em 14:06 desse vídeo dá pra ver oque eu tentei criar
http://tvuol.uol.com.br/video/avatar--livro-3-fogo--ep-48--a-manipuladora-de-fantoches-04028C98306ED8A90326/
mas por conta dos efeitos precários que o Tibia possui não ficou tão legal qnt eu imaginei mas em todo caso eu decidi compartilhar o código com vocês.
O resultado final foi esse daqui:
Se vocês se interessaram é só criar um arquivo em spells/scripts e colocar isso daqui dentro dele:
function onCastSpell(cid, var) local config = { spins = 1, delay = 120 } local k = checkGroundInArray(getPositionsByDirection(cid), grass) if #k < 1 then doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) doPlayerSendCancel(cid, "You need to be around grass to cast this spell.") return false end for i = 1, #k do addEvent(function() if isPlayer(cid) then local pos = k[i] local grama = getThingFromPos(pos) doTransformItem(grama.uid, driedgrass[math.random(1, #driedgrass)]) a = (i < 9) and doSendMagicEffect(pos, 1) or doSendMagicEffect(pos, 53) doSendDistanceShoot(pos, getThingPos(cid), 36) end end, (config.delay/2) * i) end range = #k > 4 and 7 or 5 addEvent(function() if isPlayer(cid) then local pos = k[i] local lastPos = false for i = 1, range do local position = getPositionByDirection(getCreaturePosition(cid), getCreatureLookDirection(cid), i) if isWalkable(position, false, true, true) then local creature = getTopCreature(position) if (creature.uid > 0) then doSendDistanceShoot(getCreaturePosition(cid), getCreaturePosition(creature.uid), 36) doTargetCombatHealth(cid, creature.uid, COMBAT_PHYSICALDAMAGE, -142 * (#k - 1), -150 * (#k - 1), CONST_ME_NONE) break end lastPos = position end if lastPos then doSendDistanceShoot(getCreaturePosition(cid), lastPos, 36) end end end end, (config.delay + (4 * config.delay * config.spins)) ) addEvent(function() for j = 1, #k do addEvent(function() local pos = k[j] local grama = getThingFromPos(pos) if isInArray(driedgrass, grama.itemid) then doTransformItem(grama.uid, grass[math.random(1, #grass)]) end end, (config.delay/2) * j) end end, config.delay * 100) spinRotate(cid, config.spins, config.delay) return true end e em spells.xml vc adiciona:
<instant name="TK" words="kataras sense" lvl="8" mana="35" prem="0" casterTargetOrDirection="1" exhaustion="1500" needlearn="0" event="script" value="nomedoarquivo.lua"> </instant> OBS: Note que esse script usa funções da new library. Você pode conseguir essas funções aqui: http://www.tibiaking.com/forum/topic/46015-new-library-v-10/
Espero que tenham curtido, esse é só o começo! Testada em TFS 0.3.6 Tibia 8.54.
-
Cook deu reputação a KekezitoLHP em Fist Fighting/AttackspeedNome: Fist Fighting/Attackspeed
Tipo: C++
Autor: Oneshot
Já vi alguns pedidos no fórum sobre a skill Fist Fighting, onde quanto mais você treinasse ela, mais rápido você atacaria no jogo, e parece que isto é um feature do Tibia. Como é uma modificação muito fácil nas sources, resolvi passar aí para a galera.
Por padrão, o intervalo entre ataques do Tibia é 2000ms, ou seja, um ataque físico a cada dois segundos. Eu fiz uma pequena modificação nas sources onde o Fist Fighting seria inversamente proporcional ao tal intervalo, ou seja, quanto maior o valor da skill, menor seria o intervalo.
Fiz de um modo que um jogador com Fist Fighting de nível 200, então, teria uma redução de 75% no intervalo de ataque, ou seja, um ataque a cada meio segundo ou dois ataques por segundo
Leve em consideração que ele pega como base o attackspeed da vocação ou da arma usada, ou seja, se seu servidor já tem o tal chamado "fast attack", de nada adianta adicionar esse código C++.
Abra seu player.cpp, procure por isso:
Player::getAttackSpeed() Substitua toda a função, dependendo da versão de seu servidor:
0.3.6
uint32_t Player::getAttackSpeed() { Item* weapon = getWeapon(); if(weapon && weapon->getAttackSpeed() != 0) return std::ceil(weapon->getAttackSpeed() * (1 - (getSkill(SKILL_FIST, SKILL_LEVEL) * 0.00375))); return std::ceil(vocation->getAttackSpeed() * (1 - (getSkill(SKILL_FIST, SKILL_LEVEL) * 0.00375))); } 0.4
uint32_t Player::getAttackSpeed() const { return std::ceil(((weapon && weapon->getAttackSpeed() != 0) ? weapon->getAttackSpeed() * (1 - (getSkill(SKILL_FIST, SKILL_LEVEL) * 0.00375)) : (vocation->getAttackSpeed() / std::max((size_t)1, getWeapons().size()) * (1 - (getSkill(SKILL_FIST, SKILL_LEVEL) * 0.00375))))); } Isso adiciona uma utilidade para a skill Fist Fighting que em muitos dos servidores é algo deixado de lado e inútil.
-
Cook deu reputação a Natanael Beckman em GesiorACC 2019 8.60 UPDATE 29/06/2019Atualização de 29/06/2019.
Olá meus amigos, essa é a minha última contribuição free que faço na área de OTserver, fiz uma atualização bem completa do Gesior comparando com os que existem disponíveis, não vou falar muito pois grande parte já conhecem... Vou apenas posta algumas imagem das mudanças feitas.
Sempre gostei de evoluir e de oferecer aos demais uma facilidade de obter um material grátis e de qualidade, nunca utilizei meu pouco conhecimento para prejudicar os demais, pelo o contrario sempre foi na intenção de ajudar e se em algum momento falhei, falhei inconscientemente.
- Foi mudado algumas imagens de layout para renovar a estrutura.
- Server Info + Most Power Ful Guilds na mesma estrura.
- Create Account exigindo senhas com letras minusculas, maiúsculas e números, fortalecendo
a segurança do seu cliente e dificultando futuras dores de cabeças.
- Adicionado o mecanismo que identifica os valores de Premuim Points e Backup Points.
- Algumas mudanças de layout.
- Nome do player abaixo linkado.
- Adicionado um Box de doação, com a intenção apenas de complementar
o layout enriquecendo a pagina.
- Fixado o bug edit town, e melhorado o layout.
- Characters.php refeito, nesta imagem é uma visão de uma conta com access admin.
- Visão normal.
- Inventário completo.
- Guilds com visão ampliada.
- Detalhes...
- Novo SHOP com as estrutura de layout melhorada e modernizada.
- Sem BUGs lembre-se do CTRL + F5 para atualizar os cookies nesta pagina.
- Detalhes...
- Detalhes...
- Detalhes...
- Histórico do SHOP...
DOWNLOAD SITE
SHOP.LUA XAMPP 1.7.3 DATABASE LIMPA MYSQL DATABASE COMPLETA MYSQL TUTORIAIS ÚTEIS E COMPATÍVEIS PARA O SITE: PAGSEGURO AUTOMATICO SHOPGUILD BACKUP_POINTS SISTEMA VIP_TIME Créditos: Gesior.pl(WEBMaster) Felipe Monteiro(WEBMaster, WEBDesigner) Natanael Beckman(WEBNada) Nailan (WEBMaster) Ivens Pontes (WEBMaster) Marcio Porto (WEBMaster) Danyel Varejão (Programmer LUA, C++)
-
Cook deu reputação a Natanael Beckman em DEV C++ Compilando TFS no WindowsTudo bem!
-
Cook deu reputação a Natanael Beckman em DEV C++ Compilando TFS no WindowsQuando eu falo TFS... é TFS puro, você deve ter pego alguma editada!
Fico feliz por ter conseguido solucionar!
E parabéns... Só 1 REP? =C
-
Cook deu reputação a Natanael Beckman em DEV C++ Compilando TFS no WindowsO.o
Great, obrigado meu amigo, sempre que precisar poste, caso eu saiba sem duvidas irei ajudar!
-
Cook deu reputação a Lyu em Doação Rápida.Olá pessoal, fiz esse script para facilitar algumas ações como por exemplo você sair de um lugar longe do templo para fazer uma transferência no banco, com esse script você poderá enviar dinheiro para algum player online de onde você estiver, se você não tiver dinheiro em sua mochila automaticamente irá descontar de sua conta no banco a não ser se você não tenha haha, o legal também é que se você não tiver dinheiro em sua mochila e tiver no banco você pode doar para você mesmo e em seguida o dinheiro sairá da sua conta diretamente pra mochila
Como usar? - É fácil e simples de usar, apenas use o comando /doar Fulano, quantidade.
1º - vai em data/talkactions/talkactions.xml e adicione esta tag : <talkaction words="!doar;/doar" event="script" value="doar.lua"/> 2º - crie um arquivo lua chamado doar na pasta data/talkactions/script e insira o seguinte código : --[[ script created by Ladyazaleia with love. ]]-- function onSay(cid, words, param) local tmp = param.explode(param, ',') if not tmp[1] then return doPlayerSendCancel(cid, 'Command param required.') elseif not tmp[2] then return doPlayerSendCancel(cid,'you need to specify the value.') end if isPlayer(getCreatureByName(tmp[1])) then if getPlayerBalance(cid) >= tonumber(tmp[2]) and setPlayerBalance(cid, getPlayerBalance(cid) - tmp[2]) or doPlayerRemoveMoney(cid, tmp[2]) then doPlayerAddMoney(getCreatureByName(tmp[1]), tmp[2]) else return doPlayerSendCancel(cid, "you're not have money.") end else return doPlayerSendCancel(cid, 'player not is on-line or not exists.') end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'donation of '..tmp[2]..' gold coins sent.') return doPlayerSendCancel(getCreatureByName(tmp[1]), 'you received a donation from '..getCreatureName(cid)..'.') end obs : o valor será em gold coins.
pronto, agora é só usar e ser feliz, aqui vai um simples exemplo de uso :
/doar Ladyazaleia, 1
"ganhei um gold coin :/"
créditos : Halls Santos or Ladyazaleia.
-
Cook deu reputação a Bizzle em [TalkAction] Suicidio[TalkAction] Suicídio
Essa talkaction (comando), se o player não estiver na protection zone e se ele tiver level superior a 100, fará com que o mesmo simplesmente se mate, cometa suicídio. Mas pra quê isso? bom, eu não sei bem pra quê..talvez para ele se matar quando estiver morrendo para um player e assim não ter seu nome na fraglist desse player, ou porquê ele tá depre mesmo. A vida tibiana tem fases difíceis..heuaha
Enfim, vamos lá. Vá até a pasta data/talkactions/scripts, crie um arquivo nomeado de killmyself.lua e adicione o script:
Para configurar o level e/ou a storage, apenas modifique onde estão os respectivos valores no script (em negrito):
Para quê serve a storage no script acima? Ela tem como função verificar se o player possui determinado valor da mesma, e assim, prosseguir ou não com a confirmação de suicídio e/ou com o suicídio.
Agora volte ao diretório anterior (data/talkactions), abra o arquivo talkactions.xml como bloco de notas e adicione a tag:
<talkaction log="yes" words="!suicide" event="script" value="killmyself.lua"/>
Agora apenas use !suicide e acabe com a sua vida sem usar laminas, sem se machucar, sem sentir dor, sem gastar a gilete do seu pai, sem nada.. -
Cook deu reputação a Nogard em Jump SystemEu poderia jurar que já havia algo do tipo no fórum, porém dei uma pesquisada e não encontrei, então estarei postando.
Como o nome já diz, seria um script que possibilita o jogador pular obstáculos pré-configurados, simples assim. Script simples, porém útil, creio eu. Vá em Data/Talkactions, abra o arquivo talkactions.xml, adicione a tag: <talkaction words="!jump" event="script" value="jump.lua"/> Ainda em Talkactions, abra a pasta scripts, crie um novo arquivo .lua e o nomeie de jump, cole isso em seu interior: ---[Jump basic, made by Nogard]---- function onSay (cid, words, param) local obstacle = {1285, 1534, 2785} if not isInArray(obstacle, getThingFromPos(getPlayerLookPos(cid)).itemid) then doPlayerSendCancel(cid, 'You do not can jump this.') return false end local direction = getDirectionTo(getCreaturePosition(cid), getPlayerLookPos(cid)) addEvent(doTeleportThing, 1*1000, cid, getPlayerLookPos(cid)) addEvent(doMoveCreature, 2*1000, cid, direction) doSendAnimatedText(getCreaturePosition(cid), 'Jumping', 8) doPlayerSetNoMove(cid, true) addEvent(doPlayerSetNoMove, 2*1000, cid, false) return true end No caso, eu apenas coloquei um arbusto, uma cerca, e uma pedra como obstáculo. Para configurar, basta adicionar os Id's entre os colchetes, separando com vírgula. local obstacle = {1285, 1534, 2785} É isso, até.