Jump to content

LeoPetryScript

Campones
  • Content Count

    20
  • Joined

  • Last visited

  • xPoints

    0 [ Donate ]

About LeoPetryScript

Informações

  • Forma que conheci o xTibia
    Otservs
  • Sou
    Scripter

Recent Profile Visitors

56 profile views
  1. quando player sofrer um ataque de 1000, receber só 800 de dano que no caso seria (80/100) no caso abaixo, o player recebe os 1000 de dano + 20%, teria que ser - 20% function onStatsChange(cid, attacker, type, combat, value, summons) local summons = getCreatureSummons(cid) local angel = "death angel [0]" if #summons >= 1 then for j = 1, #summons do if getCreatureName(summons[j]):lower() == string.lower(angel) then if type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS then dano = math.ceil(value*0.2) doTargetCombatHealth(attacker, cid, combat, -dano, -dano, 255) end else return true end end end return true end
  2. setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) + config.health)
  3. quando abre o server : OTSYS_SQLITE3_PREPARE<>: SQLITE ERROR: no such table: guild_wars <SELECT "id", "guild_id", "enemy_id" FROM "guild_wars" WHERE "status" IN (1,4) AND "end" > 0 AND "end" <1596753249> quando loga algum player : OTSYS_SQLITE3_PREPARE<>: SQLITE ERROR: no such column: k.war <SELECT "pk"."player_id", "pd"."date" FROM "player_killers" pk LEFT JOIM "killers" k ON "pk"."kill_id" = "k"."id" LEFT JOIN "player_deaths" pd ON "k"."death_id" = "pd"."id" WHERE "pd"."player_id" = 3 AND "k"."unjustified" = 1 AND "pd"."date" >= 1596148675 AND "k"."war" = 0> como resolvo isso?
  4. REP++ Então Marshmello, tive que fazer apenas algumas modificações razas pra funcionar perfeitamente =D créditos a você pela script, mas ai vai a funcional:: function SendEffect(cid) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE, "Você está sem o Efeito de Gemas.") return TRUE end local storages = {77000,77001,77002,77003} local time = os.time() function onLogin(cid) local e = 1 and 2 and 3 and 4 for i = e, #storages do if getPlayerStorageValue(cid, 77000) - time > 1 then doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE, "Você está sob o Efeito da Task Gem.") elseif getPlayerStorageValue(cid, 77001) - time > 1 then doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE, "Você está sob o Efeito da Ring Gem.") elseif getPlayerStorageValue(cid, 77002) - time > 1 then doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE, "Você está sob o Efeito da Fishing Gem.") elseif getPlayerStorageValue(cid, 77003) - time > 1 then doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE, "Você está sob o Efeito da Mining Gem.") elseif getPlayerStorageValue(cid, storages[i]) - time < 1 then doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE, "Você está sem Efeito de Gemas.") end end return true end Muito obrigado por seu tempo, pode mover o topico para resolvido
  5. então man, funcionou, mas da 1 mensagem por storage, queria que fosse uma só mensagem sacas? se tiver sob efeito de alguma delas aparece uma msg q ta sob efeito, se n tiver sob efeito de nenhuma, aparece só uma msg q n está
  6. Eu tentei montar um script onde quando o player logar e as storages estiverem menores que os.time enviar uma mensagem e se tiver maior que os.time mandar outra... alguém poderia arruma-lá pra mim? local storage = 77000 local storage2 = 77001 local storage3 = 77002 local storage4 = 77003 local tempo = os.time() function onLogin(cid) local a = getPlayerStorageValue(cid, Storage) local b = getPlayerStorageValue(cid, Storage2) local c = getPlayerStorageValue(cid, Storage3) local d = getPlayerStorageValue(cid, Storage4) if a and b and c and d < tempo then SendEffect(cid) end if a and b and c and d > tempo then doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE, "Você está sob o Efeito de Gemas.") end return true end function SendEffect(cid) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE, "Você está sem o Efeito de Gemas.") return TRUE end
  7. Estou testando essa sctipt, mas ela não está funcionando alguém poderia modifica-lo para quando o monstro morrer, todos os players que estiverem na area determinada ganham pontos a mais de storage? ex: setPlayerStorageValue(cid, 29111, (getplayerstoragevalue(cid, 29111)) + 10) :: function onDeath(cid) local name = "Ferumbras" local Storage = 29111 local Sto = getPlayerStorageValue(cid, 29111) local pontos = 15 local from = {x= 1092, y= 1073, z= 6} local to = {x= 1093, y= 1075, z= 6} local tp = name[getCreatureName(cid)] if tp then if isInArea(getThingPos(cid), from, to) then if isPlayer(cid) then setPlayerStorageValue(cid, Storage, Sto + pontos) end end end return TRUE end (ta tudo errado provavelmente)
  8. O player vai poder comprar apenas uma vez ou quantas vezes quiser? então, não sei qual o seu tfs, espero que funcione, testei aqui crie o buylife.lua na pasta de talkactions e cole isso: (para que nao bugue os acentos certifique de formatar em ANSI) local config = { minLevel = 100, -- Level necessário para comprar. cost = 10000000, -- Custo. health = 10000 -- Quanto de life irá comprar mana = -- nao foi usado para knight } function onSay(cid, words, param) if not isKnight(cid) then -- se for para outra vocaçao, apenas mude 'Knight' para 'Sorcerer' ou 'Druid' ou 'Paladin' doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você precisa ser Knight para comprar vida.") return TRUE end if(getPlayerLevel(cid) < config.minLevel) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você precisa ser level " .. config.minLevel .. " para comprar vida.") elseif(doPlayerRemoveMoney(cid, config.cost) ~= TRUE) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Para comprar vida é necessário 10kk.") else setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) + config.health) doCreatureAddHealth(cid,config.health) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Parabéns, você adquiriu " .. config.health .. " de vida permanente.") doSendAnimatedText(getThingPos(cid), "+10000 HP", 180) doSendMagicEffect(getCreaturePosition(cid), math.random(28,28)) end return TRUE end ------------------------------------------------------------------ -- Caso queira dar mana, altere os parametros -- setCreatureMaxMana(cid, getCreatureMaxMana(cid) + config.mana) -- doCreatureAddMana(cid,config.mana) -- doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Parabéns, você adquiriu " .. config.mana .. " de mana permanente.") -- doSendAnimatedText(getThingPos(cid), "+valor MP", 180) -- doSendMagicEffect(getCreaturePosition(cid), math.random(28,28)) --------------------------------------------------------------- e lá em talkactions.xml cole: <talkaction words="!buylife" event="script" value="buylife.lua"/>
  9. Gostaria de uma ajuda, não sei se é necessario uma script ou pode ser mudado no items.xml.... Um life/mana ring que ao invés de healar "200" de life por segundo, healasse por exemplo: 5% de life por segundo consegui fazer os script após algum esforço: crie um arquivo lua com o nome que quiser, no meu caso 'ringmana.lua' e adicione: --script de heal ring por porcentagem-- --Creditos ao Leo-- function onEquip(cid, item, slot) if getPlayerStorageValue(cid, 29110) == 1 then SendEffect(cid) end return true end function onDeEquip(cid, item, slot) setPlayerStorageValue(cid, 29110, -1) if item.itemid == 2124 then -- id do ring quando equipado doTransformItem(item.uid, 2123) -- id do ring quando nao equipado end return true end function SendEffect(cid) if not isPlayer(cid) then return end local delay = 1000 -- tempo em milisegundos para healar dnovo local maxh = getCreatureMaxHealth(cid) local maxm = getCreatureMaxMana(cid) local mpe = 10 * maxm / 100 -- no '10' é a porcentagem que vai healar de mana local hpe = 10 * maxh / 100 -- no '10' é a porcentagem que vai healar de life if getPlayerStorageValue(cid, 29110) == 1 then if getCreatureHealth(cid) < maxh or getCreatureMana(cid) < maxm then doCreatureAddHealth(cid, hpe) doCreatureAddMana(cid, mpe) addEvent(SendEffect, delay, cid) else addEvent(SendEffect, delay, cid) end end end depois crie outro arquivo .lua no meu caso 'ringequip.lua' e adicione : function onEquip(cid, item, slot) setPlayerStorageValue(cid, 29110, 1) if item.itemid == 2123 then -- item quando nao equipado doTransformItem(item.uid, 2124) -- item quando equipado end return true end depois em movements.xml adicione: <movevent type="Equip" itemid="2124" slot="ring" event="script" value="ringmana.lua"/> -- item equipado <movevent type="DeEquip" itemid="2124" slot="ring" event="script" value="ringmana.lua"/> -- item equipado <movevent type="Equip" itemid="2123" slot="ring" event="script" value="ringequip.lua"/> -- item quando nao equipado
  10. De cabeçar eu não lembro, porém eu mudava a linha que dava erro, e quando arrumava aquela, outra dava problema, exemplo de uma que foi simples é "cid:sendtextmessage" meu tfs não reconheceu esse comando. Mesmo não dando nenhum erro no carregamento das movements, quando pisava no sqm ou dava erro, ou nada acontecia E outra coisa simples foi o tempo, você colocou 60000 ms oq já seria 60 seg, então ficou 60s * 5 * 60 Fico grato pela ajuda de qualquer forma, obrigado por tentar resolver meu problema
  11. Eu gostei dessa script pra usar na quest, porém teria como se nao for player, for monstro no sqm, tambem reconhecer como sqm preenchido?
  12. Deu erro, mudei varias linhas pra ver se dava certo, continuava dando erro, então eu pensei no sistema de colocar storage... sistema resolvido : ---sistema de Kick por tempo--- local pos = {x = 1081, y = 1081, z = 9} -- localização para onde vai local tempo = 2 -- tempo em minutos function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) setPlayerStorageValue(cid, 29109, 1) addEvent(function() if getPlayerStorageValue(cid, 29109) == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você foi jogado para fora.") -- para não bugar acento deixe em codificação ANSI doTeleportThing(cid, pos) setPlayerStorageValue(cid, 29109, 0) end end, tempo*60*1000) return true end function onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor) doPlayerSetStorageValue(cid, 29109, 0) return true end No Movements XML: <movevent type="StepIn" uniqueid="xxxx" event="script" value="Nome do arquivo.lua"/> <movevent type="StepOut" uniqueid="xxxx" event="script" value="Nome do arquivo.lua"/>
  13. vou testar, xml só precisa stepin ou stepout tbm? [27/07/2020 23:16:29] [Error - MoveEvents Interface] [27/07/2020 23:16:29] data/movements/scripts/tpStorages.lua:onStepIn [27/07/2020 23:16:29] Description: [27/07/2020 23:16:29] data/movements/scripts/tpStorages.lua:11: attempt to index local 'cid' (a number value) [27/07/2020 23:16:29] stack traceback: [27/07/2020 23:16:29] data/movements/scripts/tpStorages.lua:11: in function 'TimerToKick' [27/07/2020 23:16:29] data/movements/scripts/tpStorages.lua:28: in function <data/movements/scripts/tpStorages.lua:26>
  14. Assim, é uma sala onde só pode entrar uma pessoa por vez, pois é uma sala de fusão e são colocados os itens em cima do altar para fazer a fusão. Entra na sala por uma porta que teleporta pra dentro. Então como só pode entrar uma pessoa por vez, alguém pode entrar e ficar lá trancando a sala, pra não acontecer isso eu preciso de um script de que se o player fica na sala por mais de tantos minutos, ele é jogado pra fora, assim como está acontecendo, porém, se sair pela porta, cancele esse teleport, pois ele ja saiu da sala.
  15. acabei de testar, ele continua teleportando para fora mesmo depois de sair do sqm
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...