Ir para conteúdo

Oneshot

Marquês
  • Total de itens

    1347
  • Registro em

  • Última visita

  • Dias Ganhos

    36

Tudo que Oneshot postou

  1. Crie um arquivo chamado skillstone.lua em data/actions/scripts, cole o conteúdo passado acima. Adicione a seguinte linha no actions.xml <action itemid="ID_DO_ITEM" event="script" value="skillstone.lua"/>
  2. Coloque as duas funções do script no seu arquivo 050-function.lua em data/lib
  3. Verifique se arma editada tem todas as propriedades de um bow ou crossbow.
  4. @tonynamoral Já tive o trabalho de fazer o script e testar, não darei suporte por instalação incorreta. @SmiX Só quis dizer que existe uma função que adiciona níveis de skill. @Slicer Funciona. Só colocar SKILL__MAGLEVEL no lugar de SKILL_FIST.
  5. @Roksas Não vou falar nada, mas estude mais Lua, ok? Pois desse jeito, você está parecendo o SkyLigh @Maenilse local damageTypes = {COMBAT_HOLYDAMAGE, COMBAT_FIREDAMAGE, COMBAT_ICEDAMAGE, COMBAT_PHYSICALDAMAGE, COMBAT_ENERGYDAMAGE, COMBAT_EARTHDAMAGE, COMBAT_DEATHDAMAGE} local effects = {11, 11, 11, 11, 11, 11, 11} local shootEffects = {11, 17, 18, 19, 7, 27, 28} local combats = {} for i = 0, 6 do combats[i] = createCombatObject() setCombatParam(combats[i], COMBAT_PARAM_TYPE, (damageTypes[i] or 255)) setCombatParam(combats[i], COMBAT_PARAM_EFFECT, (effects[i] or 255)) setCombatParam(combats[i], COMBAT_PARAM_DISTANCEEFFECT, (shootEffects[i] or 255)) setCombatFormula(combats[i], COMBAT_FORMULA_LEVELMAGIC, -25, -25, -25, -25) end function onUseWeapon(cid, var) for i = 0, (#combats - 1) do addEvent(doCombat, i * 100, cid, combats[i], var) end return true end
  6. Uma olhada no LUA_FUNCTIONS localizado em data/docs doPlayerAddSkill(cid, skill[, amount = 1[, round = false]]) local config = { skillName = SKILL_FIST, skillAmount = 5, magicEffect = CONST_ME_MAGIC_BLUE, removeable = "yes" } --[[ SKILL_FIST SKILL_CLUB SKILL_SWORD SKILL_AXE SKILL_DISTANCE SKILL_SHIELD SKILL_FISHING SKILL__MAGLEVEL SKILL__LEVEL ]]-- function onUse(cid, item, fromPosition, itemEx, toPosition) doPlayerAddSkill(cid, config.skillName, config.skillAmount, true) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Your ".. SKILL_NAMES[config.skillName] .." has grown up.") doSendMagicEffect(fromPosition, config.magicEffect) if getBooleanFromString(config.removeable) == true then doRemoveItem(item.uid, 1) end return true end
  7. Ah, claro, você quer utilizar Burst Arrow com Fire Axe. Faz muito sentido, isso.
  8. Procure isso no seu config.lua storeTrash Deixe assim storeTrash = true Abraços.
  9. Criei um novo resolutor de equações, agora ele detecta o grau da equação e ensina a resolver por passos. Para resolver equações do segundo grau: /calc 3x²-27 Lembrando que tudo é muito robótico, então, ele vai calcular até o fim, e se a raiz do discriminante for quebrada, ele dará raízes do tipo: -5.23123451241290439214 +3.21312309129492149 Abraços.
  10. if getPlayerWeaponId(cid) == 7438 then return doCombat(cid, combat, var) end Estranho, aqui funcionou muito bem. O ID deve ser modificado ali naquela linha, abraços.
  11. Provavelmente seu servidor possui um arquivo chamado burst_arrow.lua na pasta data/weapons/scripts, abra-o, apague tudo que há dentro dele e cole o seguinte conteúdo abaixo: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_BURSTARROW) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0) local area = createCombatArea({ {1, 1, 1}, {1, 3, 1}, {1, 1, 1} }) setCombatArea(combat, area) local function getPlayerWeaponId(cid) -- By Oneshot local ret = 0 for slot = 6, 5, -1 do local item = getPlayerSlotItem(cid, slot) if item.itemid > 0 and isInArray({1, 2, 3, 4}, getItemInfo(item.itemid).weaponType) then ret = item.itemid break end end return ret end function onUseWeapon(cid, var) if getPlayerWeaponId(cid) == 7438 then return doCombat(cid, combat, var) end doPlayerSendCancel(cid, "You cannot use this arrow with this ordinary bow.") return false end
  12. Tanto membros quanto alguns da equipe. me add msn falar com você skydangerous@xtibia.com me add também, quero falar com vcs henrom@live.com
  13. Me pediram por mensagem pessoal, uma talkaction que resolvesse strings de equações de primeiro grau. Fiz um pog interessante e ela está funcionando bem legal. 10:28 1x+3x+4x+88 = 0 10:28 8x = -88 10:28 x = -11 1. Crie um arquivo de nome calc.lua em talkactions/scripts, cole o conteúdo abaixo: local delay = 500 function onSay(cid, words, param, channel) local a = 0 local b = 0 local c = 0 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, param .." = 0") for s, x2 in string.gmatch(param, "([-+]*)%s*(%d+)x²") do param = string.gsub(param, "[-+]*%s*%d+x²", "") a = a + tonumber(s .. x2) end for s, x in string.gmatch(param, "([-+]*)%s*(%d+)x") do param = string.gsub(param, "[-+]*%s*%d+x", "") b = b + tonumber(s .. x) end for s, n in string.gmatch(param, "([-+]*)%s*(%d+)") do c = c + tonumber(s .. n) end if param == "" then return doPlayerSendCancel(cid, "O comando precisa de uma equação válida.") end addEvent(doPlayerSendTextMessage, delay, cid, MESSAGE_STATUS_CONSOLE_RED, "1. Detectar o grau da equação.") if a > 0 then local delta = (math.pow(b, 2) - (4 * a * c)) local x1, x2 if delta >= 0 then x1 = ((-b - math.sqrt(delta)) / 2 * a) x2 = ((-b + math.sqrt(delta)) / 2 * a) end addEvent(doPlayerSendTextMessage, 2 * delay, cid, MESSAGE_STATUS_CONSOLE_BLUE, "Essa é uma equação de segundo grau.") addEvent(doPlayerSendTextMessage, 3 * delay, cid, MESSAGE_STATUS_CONSOLE_RED, "2. Organizar a equação.") addEvent(doPlayerSendTextMessage, 4 * delay, cid, MESSAGE_STATUS_CONSOLE_BLUE, "".. a .."x²".. (b < 0 and (" - ".. (b * -1)) or (" + ".. b)) .."x".. (c < 0 and (" - ".. (c * -1)) or (" + ".. c)) .." = 0") addEvent(doPlayerSendTextMessage, 5 * delay, cid, MESSAGE_STATUS_CONSOLE_RED, "2. Calcular o discriminante da equação.") addEvent(doPlayerSendTextMessage, 6 * delay, cid, MESSAGE_STATUS_CONSOLE_BLUE, "D = b² - 4ac = ".. delta .."") if delta < 0 then addEvent(doPlayerSendTextMessage, 7 * delay, cid, MESSAGE_STATUS_CONSOLE_RED, "O discriminante é menor que 0, a equação não possui raízes reais.") return true elseif delta == 0 then addEvent(doPlayerSendTextMessage, 7 * delay, cid, MESSAGE_STATUS_CONSOLE_RED, "O discriminante é igual a 0, a equação possui duas raízes iguais.") addEvent(doPlayerSendTextMessage, 8 * delay, cid, MESSAGE_STATUS_CONSOLE_BLUE, "X¹ = X² = -b / 2 * a = ".. x1 .."") return true else addEvent(doPlayerSendTextMessage, 7 * delay, cid, MESSAGE_STATUS_CONSOLE_RED, "O discriminante é maior que 0, a equação possui duas raízes diferentes.") addEvent(doPlayerSendTextMessage, 8 * delay, cid, MESSAGE_STATUS_CONSOLE_BLUE, "X = (-b - ²D) / 2 * a = ".. x1 .."") addEvent(doPlayerSendTextMessage, 9 * delay, cid, MESSAGE_STATUS_CONSOLE_BLUE, "X² = (-b + ²D) / 2 * a = ".. x2 .."") return true end addEvent(doPlayerSendTextMessage, 10 * delay, cid, MESSAGE_STATUS_CONSOLE_RED, "Fácil, né?") elseif b > 0 then local x = -c/b addEvent(doPlayerSendTextMessage, 2 * delay, cid, MESSAGE_STATUS_CONSOLE_BLUE, "Essa é uma equação de primeiro grau.") addEvent(doPlayerSendTextMessage, 3 * delay, cid, MESSAGE_STATUS_CONSOLE_RED, "2. Organizar a equação.") addEvent(doPlayerSendTextMessage, 4 * delay, cid, MESSAGE_STATUS_CONSOLE_BLUE, "".. b .."x".. (c < 0 and (" - ".. (c * -1)) or (" + ".. c)) .." = 0") addEvent(doPlayerSendTextMessage, 5 * delay, cid, MESSAGE_STATUS_CONSOLE_RED, "3. Passe o que não está multiplicando x para o outro lado.") addEvent(doPlayerSendTextMessage, 6 * delay, cid, MESSAGE_STATUS_CONSOLE_BLUE, "".. b .."x = ".. -c .."") addEvent(doPlayerSendTextMessage, 7 * delay, cid, MESSAGE_STATUS_CONSOLE_RED, "4. Passe o que está multiplicando x para outro lado, dividindo.") addEvent(doPlayerSendTextMessage, 8 * delay, cid, MESSAGE_STATUS_CONSOLE_BLUE, "x = ".. x .."") addEvent(doPlayerSendTextMessage, 9 * delay, cid, MESSAGE_STATUS_CONSOLE_RED, "Facil, né?") else addEvent(doPlayerSendTextMessage, 2 * delay, cid, MESSAGE_STATUS_CONSOLE_BLUE, "Essa não é uma equação válida.") end return true end 2. Adicione a seguinte linha no seu talkactions.xml <talkaction words="/calc" event="script" value="calc.lua"/> Bugs conhecidos - Você precisa colocar todos os coeficientes, mesmo que seja 1, do contrário o burro sistema não consegue resolver. - Se você embaralhar muito a equação, talvez ocorra algum erro, por exemplo: 1x + 44 + 32 - 1x + 2x + 44 - 2x + 3x - 32 + 1x Abraços.
  14. Parabéns, meu filhote. Que bom que você voltou a ativa e migrou para cá. Ótimo tutorial, de fato. \o/
  15. Nome: Oneshot's Anti-bot Autor: Oneshot Tipo: Sistema Descrição Este é um sistema de anti-bot simples, que envia um código numérico de 6 dígitos para cada jogador online e pede para que, através de um comando, este código de verificação seja ativado. O jogador tem um limite de tempo para fazer isso, e caso não faça, este é banido por um tempo configurável ou então, preso em um certo lugar do mapa. Instalação 1. Em data/lib, crie um arquivo chamado antibot.lua e cole o conteúdo abaixo: ANTIBOT_STORAGE_1 = 109001 ANTIBOT_STORAGE_2 = 109002 ANTIBOT_STORAGE_3 = 109003 ANTIBOT_TYPE = 2 -- [1] = Banimento, [2] = Prisão ANTIBOT_DURATION = 120 -- Em segundos ANTIBOT_DURATION_DELAY = 10 -- Em segundos ANTIBOT_MESSAGE = "[Oneshot's Anti-bot]\nSeu código de verificação é %s, responda através do comando !antibot, caso contrário, será ".. (ANTIBOT_TYPE == 1 and "banido" or "preso") ..".\nVocê têm %s segundos." ANTIBOT_BAN_TIME = 24 * 60 * 60 ANTIBOT_PRISON = {x = 1019, y = 867, z = 7} ANTIBOT_PRISON_FROMPOSITION = {x = 1018, y = 865, z = 7} ANTIBOT_PRISON_TOPOSITION = {x = 1020, y = 869, z = 7} ANTIBOT_PRISON_DURATION = 3 * 60 * 60 ANTIBOT_TEMPLE = {x = 1027, y = 912, z = 5} function AntiBot(cid) if not isCreature(cid) then return end local time = getCreatureStorage(cid, ANTIBOT_STORAGE_1) local answer = getCreatureStorage(cid, ANTIBOT_STORAGE_2) if getPlayerAccess(cid) >= 3 or not(getPlayerAccountManager(cid) == MANAGER_NONE) then return end if isInRange(getThingPosition(cid), ANTIBOT_PRISON_FROMPOSITION, ANTIBOT_PRISON_TOPOSITION) then return end if time == -1 and answer == -1 then return end if os.time() >= time then doCreatureSetStorage(cid, ANTIBOT_STORAGE_1, -1) doCreatureSetStorage(cid, ANTIBOT_STORAGE_2, -1) doBroadcastMessage("[ANTI-BOT] O jogador ".. getCreatureName(cid) .." foi ".. (ANTIBOT_TYPE == 1 and "banido" or "preso") .." por uso de bot.") if ANTIBOT_TYPE == 1 then doAddAccountBanishment(getPlayerGUID(cid), 0, (os.time() + ANTIBOT_BAN_TIME), 12, 3, "[ANTI-BOT]") doRemoveCreature(cid) else doTeleportThing(cid, ANTIBOT_PRISON) doCreatureSetStorage(cid, ANTIBOT_STORAGE_3, os.time() + ANTIBOT_PRISON_DURATION) addEvent(function() if isCreature(cid) then doTeleportThing(cid, ANTIBOT_TEMPLE) end end, ANTIBOT_PRISON_DURATION * 1000) end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, ANTIBOT_MESSAGE:format(answer, (time - os.time()))) addEvent(AntiBot, ANTIBOT_DURATION_DELAY * 1000, cid) end end 2. Crie um arquivo chamado antibot.lua em data/globalevents/scripts, cole o conteúdo abaixo function onThink(interval) for _, cid in ipairs(getPlayersOnline()) do local answer = math.random(100000, 999999) doCreatureSetStorage(cid, ANTIBOT_STORAGE_1, os.time() + ANTIBOT_DURATION) doCreatureSetStorage(cid, ANTIBOT_STORAGE_2, answer) AntiBot(cid) end return true end Adicione a seguinte linha em globalevents.xml <globalevent name="antibot" interval="900" event="script" value="antibot.lua"/> 3. Crie um arquivo em data/creaturescripts/scripts, cole o conteúdo abaixo function onLogin(cid) local time = getCreatureStorage(cid, ANTIBOT_STORAGE_1) local answer = getCreatureStorage(cid, ANTIBOT_STORAGE_2) if answer == -1 then return true end if isInRange(getThingPosition(cid), ANTIBOT_PRISON_FROMPOSITION, ANTIBOT_PRISON_TOPOSITION) then if os.time() > getCreatureStorage(cid, ANTIBOT_STORAGE_3) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Seu tempo de prisão acabou.") doTeleportThing(cid, ANTIBOT_TEMPLE) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você ainda está preso por uso de bot.") end return true end if os.time() > ANTIBOT_STORAGE_1 then doCreatureSetStorage(cid, ANTIBOT_STORAGE_1, os.time() + ANTIBOT_DURATION) return true end AntiBot(cid) return true end Adicione a seguinte linha em seu creaturescripts.xml <event type="login" name="Antibot" event="script" value="antibot.lua"/> 4. Crie um arquivo chamado antibot.lua em data/talkactions/scripts, cole o conteúdo abaixo function onSay(cid, words, param, channel) param = tonumber(param) or "" local time = getCreatureStorage(cid, ANTIBOT_STORAGE_1) local answer = getCreatureStorage(cid, ANTIBOT_STORAGE_2) if time == -1 and answer == -1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O anti-bot não está ativado.") return true end if param == "" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Digite uma senha de verificação válida.") return true end if param ~= answer then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você digitou a senha incorreta. Digite corretamente, caso contrário, será banido.") return true end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Ótimo! Você digitou a resposta correta. O anti-bot foi desativado.") doCreatureSetStorage(cid, ANTIBOT_STORAGE_1, -1) doCreatureSetStorage(cid, ANTIBOT_STORAGE_2, -1) return true end Adicione a seguinte linha em seu talkactions.xml <talkaction words="!antibot" event="script" value="antibot.lua"/> Você pode fazer várias configurações na lib do sistema ANTIBOT_STORAGE_1 = 109001 ANTIBOT_STORAGE_2 = 109002 ANTIBOT_STORAGE_3 = 109003 ANTIBOT_TYPE = 2 -- [1] = Banimento, [2] = Prisão ANTIBOT_DURATION = 120 -- Em segundos ANTIBOT_DURATION_DELAY = 10 -- Em segundos ANTIBOT_MESSAGE = "[Oneshot's Anti-bot]\nSeu código de verificação é %s, responda através do comando !antibot, caso contrário, será ".. (ANTIBOT_TYPE == 1 and "banido" or "preso") ..".\nVocê têm %s segundos." ANTIBOT_BAN_TIME = 24 * 60 * 60 ANTIBOT_PRISON = {x = 1019, y = 867, z = 7} ANTIBOT_PRISON_FROMPOSITION = {x = 1018, y = 865, z = 7} ANTIBOT_PRISON_TOPOSITION = {x = 1020, y = 869, z = 7} ANTIBOT_PRISON_DURATION = 3 * 60 * 60 ANTIBOT_TEMPLE = {x = 1027, y = 912, z = 5} Como a duração do ban, a posição da prisão, o tempo de prisão, dentre outras coisas. Como não consegui fazer funcionar o banimento de um jogador só na versão 0.3.6pl1, sendo isto possível apenas na 0.4.0, resolvi colocar para o tipo de banimento ser na conta toda. Abraços.
  16. Deixa eu ver se eu entendi, você queria promoção, aí não quiseram te dar, aí você pediu demissão da equipe. Legal, cara.
  17. Oneshot

    Taí Um Bom Puzzle

    Não curto puzzles, mas postei pela amizade, flw.
  18. Seu lugar não é aqui, favor voltar para OTBR.
  19. Arrumei a framerate da gif e coloquei para ir e voltar.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...