Jump to content
×
×
  • Create New...

LeoPetryScript

Campones
  • Posts

    25
  • Joined

  • Last visited

About LeoPetryScript

Informações

  • Forma que conheci o xTibia
    Otservs
  • Sou
    Scripter

Recent Profile Visitors

270 profile views
  1. não sei como faz isso, ai fiz diferente aqui, coloquei pra aparecer do lado do hit "-20%" ai coloquei doTargetCombatHealth(attacker, cid, combat, dano, dano, nill)
  2. é que tem que ter tipo um return false pro dano primario, mas se eu coloco return false, n sai nenhum dano
  3. testei com um monstro que hita sempre 1100-1200 ele começou a hitar 3200 com esse efeito ativo
  4. da erro pq nao reconhece dano = "dano" - (value*0.2)
  5. tipo: eu coloquei assim da maneira que está, porém o player deveria receber 800 de dano, e não recebe, recebe 1200 assim. aí tentei colocar pra não receber o dano normal, apenas 80* dele, com um return false no final, mas daí ele não recebe nem um e nem outro edit1 -- É pra ser tipo um absorvPercentAll = 20 do items.XML mas em vez de ser no item, ser quando o player estiver com um summon
  6. 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
  7. setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) + config.health)
  8. 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?
  9. 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
  10. 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á
  11. 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
  12. 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)
  13. 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"/>
  14. 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
  15. 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
  • Recently Browsing   0 members

    • No registered users viewing this page.