Ir para conteúdo

bepokemon

Visconde
  • Total de itens

    273
  • Registro em

  • Última visita

  • Dias Ganhos

    4

Tudo que bepokemon postou

  1. function onSay(cid, words, param) local timenow = os.time() if not isPlayer(getPlayerByName(param)) then doPlayerSendCancel(cid, 'Player \''..param..'\' not found.') return true end local pid = getPlayerByName(param) local quantity = math.floor((getPlayerStorageValue(pid, 13540) - timenow)/(24 * 60 * 60)) if quantity ~= 0 then doPlayerSendTextMessage(cid, 27, "The player '"..param.."' have ".. quantity .." VIP days left.") else doPlayerSendTextMessage(cid, 27, "The player '"..param.."' is not VIP.") end return true end Creditos: lordbug99 @Lordbug (offtopic) A frase que voce mandou o Google traduzir esta em falta com uma virgula, por isso foi mal traduzida. Tenta traduzir isto:
  2. Ola. Minha primeira vez pedindo algo aqui .. ahha. Entao, como nao sou webmaster, preciso de alguem que possa me fazer um script PHP que funcione da seguinte forma: 1- Seria uma box, como caracteres limitados (100) ou nao. 2- Um butao, padrao no Gesior, que salvasse o texto da box acima em alguma variavel (se eu falei merda ... nao sei nada de PHP) ou entao executasse uma query (a qual posso fazer em .LUA se precisarem). Obrigado desde ja!
  3. Pode me adicionar se precisar de alguma ajuda .. Eu estava ate agora pouco fazendo algumas video-aulas .. Muita gente me procura por algumas aulinhas basicas ..
  4. Outra dica, o sistema: Team-Battle que pode ser encontrado aqui no forum tambem usa uma funçao: startEvent() Isso cria um grande problema pra quem usa os dois sistemas. E sobre o fato de poder sumonar monstros, mesmo sendo non-pvp voce ainda pode sumonar.
  5. function () return doPlayerAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid)) end
  6. Tem muitos erros que devem ser concertados, principalmente no CreatureScripts e no fato de voce poder: Logar dentro da arena. O portal nao fechar quando tem mais que o maximo dentro da arena. Summonar monstros dentro da arena. O Zumbi trocar de alvo, oque faz ele trocar o tempo todo, e facilita muito. Tente concertar isso pra pelomenos seu topico valer a pena. OBS: O meu aqui esta 100%.
  7. Foi muito bem explicado ' Aqui vai o script (nao testado). function onUse(cid, item, frompos, item2, topos) local notAllowed = {{x=160,y=54,z=7}} -- Aqui voce coloca as posiçoes que nao pode criar portal. local tpId = 1387 local p = getCreaturePosition(cid) local x = { [0] = {x=p.x, y=p.y-1, z=p.z}, [1] = {x=p.x+1, y=p.y, z=p.z}, [2] = {x=p.x, y=p.y+1, z=p.z}, [3] = {x=p.x-1, y=p.y, z=p.z} } local tps = { pos = x[getCreatureLookDirection(cid)], toPos = {x=160, y=54, z=7}, time = 10, -- remove teleport exausted = 60, -- in seconds storage1 = 18370, -- dont edit storage2 = 97854 -- dont edit } function removeTp() local t = getTileItemById(tps.pos, tpId) if t then doRemoveItem(t.uid, 1) doSendMagicEffect(tps.pos, CONST_ME_POFF) end end function doTPSecond(cid,delay) local seconds = math.floor((getPlayerStorageValue(cid, tps.storage1) - os.time())) local msg = ''.. (seconds < 0 and 0 or seconds) ..'' doSendAnimatedText(tps.pos, msg, math.random(1,140)) if delay ~= 1 then addEvent(doTPSecond, 1000,cid, delay -1) end end if getCreatureCondition(cid, CONDITION_INFIGHT) then return true,doPlayerSendTextMessage(cid,22,"Você não pode criar um teleport quando estiver com battle!") elseif (getPlayerStorageValue(cid, tps.storage2) >= os.time()) then return true,doPlayerSendCancel(cid, "Espere " .. getPlayerStorageValue(cid, tps.storage2) - os.time() .. " para reuzalo novamente.") end if isInArray(notAllowed, tps.pos) then doSendMagicEffect(getThingPos(cid), 2) doPlayerSendCancel(cid, 'You are not allowed to place teleports there.') return true end doCreateTeleport(tpId, tps.toPos, tps.pos) setPlayerStorageValue(cid, tps.storage1, os.time()+tps.time) doTPSecond(cid, tps.time) addEvent(removeTp, tps.time*1000) setPlayerStorageValue(cid,tps.storage2,os.time()+tps.exausted) return false end
  8. Manda o Script da sua Great Spirit Potion. Ou entao altere, provavelmente no final do script isso: doRemoveItem(item.uid) Retire isso.
  9. Eu faço o barco e duel pra voce se quiser.
  10. function onDeath(cid) doCreatureSay(cid, 'Do you think that\'s all?', TALKTYPE_MONSTER) doSendMagicEffect(getThingPos(cid), 2) return doCreateMonster('Nome', getThingPos(cid)) end Registra no CreatureScripts.xml e coloca a tag: <script> <event="OqueVoceRegistrou"/> </script> Boa sorte.
  11. Bom, e achei que tudo poderia ser respondido com uma mesma resposta .. mas ai vai minha opiniao:
  12. local config = { storage = 12345, -- storage para pegar apenas uma vez id = 2333, -- id da carta text = 'Welcome! This is a text sample.' -- texto da carta } function onLogin(cid) if getPlayerStorageValue(cid, config.storage) == 1 then return true end doSetItemText(doPlayerAddItem(cid, config.id, 1), config.text) return setPlayerStorageValue(cid, config.storage, 1) end Tente isso.
  13. bepokemon

    System Pet

    Baixa um OT de pokémon. Copia os moves e algumas creature scripts e voi-lá!
  14. local config = { storage = 12345 -- Edite aqui para o storage que você quiser. } function onUse(cid, item, toPosition, itemEx, fromPosition) return setPlayerStorageValue(cid, config.storage, 1) end
  15. De um pequeno resumo de como funciona .. Não vou procurar no YouTube!
  16. Tente usar o comando? /cliport Isso vai fazer você teleportar para onde voce clicar com o mouse. Mas só se for possivél chegar ao local.
  17. Eu sei, tenho outros mods usando funçoes a questao eh que quando passei de script (que usava topositions) e coloquei em mod nao funcionou mais. E tentei muitas outras coisas tambem .. :X Seria possivel voce tentar adptar? estou meio sem tempo.
  18. A parte que conta a quantidade de monstros mortos e manda as perguntas: local config = { jailPos = {x=1061,y=920,z=7}, -- posiçao da cadeia monsterCount = 50, -- numero de monstros que vai matar antes de perguntar algo storageKills = 12345, storageChances = 12346, storageCorrect = 12347, storageAnswer = 12348 } local function sendToJail(cid, pos, message, color) if getPlayerStorageValue(cid, 12347) ~= 1 then doTeleportThing(cid, pos) if not color then color == 18 end doPlayerSendTextMessage(cid, color, message) end else setPlayerStorageValue(cid, 12347, 0) end function onKill(cid, target) if isMonster(target) then if getPlayerStorageValue(cid, config.storageKills) < 50 then setPlayerStorageValue(cid, config.storageKills, getPlayerStorageValue(cid, config.storageKills)+1) else local num1, num2, answer = math.random(0,50), math.random(0,50), num1+num2 setPlayerStorageValue(cid, config.storageKills, 0) setPlayerStorageValue(cid, config.storageChances, 3) setPlayerStorageValue(cid, config.storageAnswer, answer) doPlayerSendTextMessage(cid, 18, 'ANTI-BOT: Quanto e '..num1..' + '..num2..'? Responda dizendo \'!antibot <resposta>\'.' addEvent(sendToJail, 2*60*1000, cid, config.jailPos, "Voce foi enviado para a cadeia pelo uso de botting.", 18) return TRUE end E aqui a parte das talkactions: local config = { jailPos = {x=1061,y=920,z=7}, storageKills = 12345, storageChances = 12346, storageCorrect = 12347, storageAnswer = 12348 } local function sendToJail(cid, pos, message, color) if getPlayerStorageValue(cid, 12347) ~= 1 then doTeleportThing(cid, pos) if not color then color == 18 end doPlayerSendTextMessage(cid, color, message) end end function onSay(cid, words, param) if getPlayerStorageValue(cid, config.storageChances) == -1 then return true end if not param then doPlayerSendCancel(cid, "Param required.") return true end if getPlayerStorageValue(cid, config.storageChances) > 0 then if param == getPlayerStorageValue(cid, config.storageAnswer) then doPlayerSendTextMessage(cid, 18, "Certa resposta, obrigado por nao usar bot.") setPlayerStorageValue(cid, config.storageCorrect, 1) setPlayerStorageValue(cid, config.storageChances, -1) setPlayerStorageValue(cid, config.storageAnswer, -1) else setPlayerStorageValue(cid, config.storageChances, getPlayerStorageValue(cid, config.storageChances)-1) doPlayerSendTextMessage(cid, 18, "Resposta errada, tente novamente.") end else sendToJail(cid, config.jailPos, "Voce foi enviado para a cadeia pelo uso de botting.", 18) end end end return TRUE end OBS: Aconselho voce a colocar o tempo de sair o battle no seu servidor maior que dois minutos para evitar problemas e formas de fugir da cadeia.
  19. Sim, nao pensei nisso porque meu script anterior era de Alquimia, onde a ordem importa, mas dando um chute era soh fazer um array para os items e ir procurando. if not isInArray(array, itemid) then 'something is wrong' return true end local contains = 0 local stackStart = getTileThingFromPos(toPosition).stackpos local correctRecipe = false repeat for _,v in pairs(array) do toPosition.stackpos = stackStart item = getTileThingFromPos(toPosition) if item.type == v.count and item.itemid = v.id then contains = contains + 1 stackStart == stackStart-1 end if contains == #array then correctRecipe = true end end until stackStart == 2 if correctRecipe then -- fazer item else 'wrong recipe.' end
  20. Algumas coisas que podem ajudar: local totalArmor = 0 local maxDamage = 0 local skillByWeapon = nil local function getItemArmor(uid) if type(uid) == 'number' then return getItemAttribute(uid,'armor') else return getItemInfo(uid.itemid).armor end end end local function isArmor(uid) -- Function by Mock the bear. if (getItemInfo(uid.itemid).armor ~= 0) and (getItemWeaponType(uid.uid) == 0) then return true end return false end local function isWeapon(uid) -- Function by Mock the bear. uid = uid or 0 local f = getItemWeaponType(uid) if f == 1 or f == 2 or f == 3 then return true end return false end local function isShield(uid) -- Function by Mock the bear. uid = uid or 0 if getItemWeaponType(uid) == 4 then return true end return false end local function isBow(uid) -- Function by Mock the bear. uid = uid or 0 if getItemWeaponType(uid) == 5 then return true end return false end local function isWand(uid) -- Function by Uissu. uid = uid or 0 if getItemWeaponType(uid) == 6 then return true end return false end for x=CONST_SLOT_FIRST,CONST_SLOT_LAST do item = getPlayerSlotItem(cid, x) if item.itemid > 0 then if isArmor(item.uid) then totalArmor = totalArmor + getItemArmor(item.uid) elseif isWeapon(item.uid) then w = getItemWeaponType(item.uid) skillByWeapon = w == 1 and CONST_SKILL_SWORD or w == 2 and CONST_SKILL_CLUB or w == 3 and CONST_SKILL_AXE or nil baseAttack = getItemInfo(item.itemid).attack totalDefense = totalDefense + getItemInfo(item.itemid).defense elseif isShield(item.uid) then totalDefense = totalDefense + getItemInfo(item.itemid).defense end end end if skillByWeapon ~= nil then maxDamage = baseAttack + (baseAttack*5/100*skillByWeapon) -- segundo um site que eu pesquisei ai end armorProtection = totalArmor..'%' local attackSpeed = getVocationInfo(getPlayerVocation(cid)).attackspeed/1000 -- em segundos. local walkSpeed = getCreatureBaseSpeed(cid)..'(+'..getCreatureSpeed(cid)-getCreatureBaseSpeed(cid)..')' local text = ' -- Informaçoes gerais do seu personagem --\n Proteçao da armadura: '..armorProtection..'\n Defesa maxima: '..totalDefense..'\n Dano maximo (fisico): '..maxDamage..'\n Velocidade de ataque: '..attackSpeed..' (em segundos)\n Velocidade de movimento: '..walkSpeed..'\n Honra: em construçao.\n Patente: nao tenho nem ideia.\n Dinheiro no banco: '..getPlayerBalance(cid)..'\n Dinheiro total: '..getPlayerBalance(cid)+getPlayerMoney(cid)..'\n Sua guild nao esta em guerra (nao existe um script, so coloquei por colocar)\n\n' doSendTextDialog(cid, getItemIdByName('spellbook'), text) Nao garanto que nada funcione, mas to dando uma base.
  21. Manda o script que esta em actions .. algo relacionado ao Demon Oak ou com o ID do Axe para que possamos avaliar. Mande tambem a posiçao em que a arvore (maior) esta.
  22. =D Eu comecei a fazer agora .. esse foi meu primeiro, por isso nao esta 100% como estaria em LUA OBS: Eu namoro ._.'
  23. Coloca dentro de: data/talkactions/scripts em um arquivo chamado rankResets.lua salva e vai no talkactions.xml, encontrado na pasta data/talkactions e adiciona isso: <talkaction words="!rank reset;!rank resets" filter="word-spaced" event="script" value="rankResets.lua"/>
  24. Voce editou o X? e uma pequena aula: A funçao getCreatureSummons(cid), assim como muitas outras como por exemplo, getPlayersOnline() retorna uma tabela neste formato: summons = { [1] = {"Demon"}, [2] = {"Demon"}} Entao podemos usar um loop para pegar todos os summons, ou todos os players: for index,name in ipairs(getCreatureSummons(cid)) do end for _,pid in ipairs(getPlayersOnline()) do end Logo, como eh uma tabela agente pode verificar o numero de "indices" nesta tabela, ('[x]'), assim: #funçaoQueRetornaTabela (#getCreatureSummons) que faz a mesma coisa que: table.maxn(getCreatureSummons(cid)) Entao tem que deixar o # mesmo .. =) -- Edit Desculpe pelo meu erro, coloquei getPlayerSummons mas eh getCreatureSummons .. estava com sono ..
  25. bepokemon

    Blacksmith

    <?xml version="1.0" encoding="UTF-8"?> <mod name="Blacksmith System" version="1.0" author="Uissu" contact="xtibia.com" enabled="yes"> <description> You can use the command: /recipes (or any registered in the talkaction) to see the avaiable recipes. (In the table: Smiths) Put all the items in order in the desired position (which is in front of player as default) and use the hammer (id: 2422 as default) in the items. If you placed an existing recipe you'll receive a new item. </description> <config name="recipeList"><![CDATA[ smiths = { [1] = { name = 'scale armor',finalid = 2483,count = 1,exp = 250,type = 'Armor',level = 1, recipe = {[1] = {id=5880,count=3},[2] = {id=2467,count=1}}}, [2] = { name = 'chain armor',finalid = 2464,count = 1,exp = 1000,type = 'Armor',level = 5, recipe = {[1] = {id=5880,count=6},[2] = {id=2467,count=1}}}, [3] = { name = 'brass armor',finalid = 2465,count = 1,exp = 3000,type = 'Armor',level = 10, recipe = {[1] = {id=5880,count=10},[2] = {id=2467,count=1}}}, [4] = { name = 'plate armor',finalid = 2463,count = 1,exp = 5000,type = 'Armor',level = 15, recipe = {[1] = {id=5880,count=5},[2] = {id=5887,count=1},[3] = {id=2467,count=1}}}, [5] = { name = 'dragon scale mail',finalid = 2492,count = 1,exp = 50000,type = 'Armor',level = 50, recipe = {[1] = {id=5920,count=25},[2] = {id=2483,count=1}}}, [6] = { name = 'golden armor',finalid = 2466,count = 1,exp = 75000,type = 'Armor',level = 60, recipe = {[1] = {id=2157,count=10},[2] = {id=2465,count=1}}}, [7] = { name = 'magic plate armor',finalid = 2472,count = 1,exp = 100000,type = 'Armor',level = 100, recipe = {[1] = {id=2162,count=1},[2] = {id=5944,count=50},[3] = {id=2463,count=1}}}, [8] = { name = 'demon armor',finalid = 2494,count = 1,exp = 250000,type = 'Armor',level = 125, recipe = {[1] = {id=5944,count=10},[2] = {id=5888,count=5},[3] = {id=6500,count=25},[4] = {id=5906,count=100},[5] = {id=2464,count=1}}}, } ]]></config> <action itemid="2422" event="buffer"><![CDATA[ domodlib('recipeList') local match = FALSE local itemPos = getPlayerLookPos(cid) for x=1,table.maxn(smiths) do local r = smiths[x] for z=1,table.maxn(r.recipe) do itemPos.stackpos = z+1 local item = getThingFromPos(itemPos) local itemCount = math.max(1,item.type) if (item.itemid == r.recipe[z].id) and (itemCount == r.recipe[z].count) then if z == table.maxn(r.recipe) then match = TRUE break end end if match == TRUE then break end end if match == TRUE then if getPlayerLevel(cid) < r.level then doPlayerSendCancel(cid, "Not enough level.") return true end doCleanTile(itemPos) doCreateItem(r.finalid, r.count, itemPos) doSendAnimatedText(itemPos, "SUCCESS!", TEXTCOLOR_GREY) doSendMagicEffect(itemPos, 9) doPlayerAddExp(cid, r.exp) doSendAnimatedText(getThingPos(cid), r.exp, TEXTCOLOR_WHITE) doPlayerSendTextMessage(cid, 27, "You\'ve successfully smithed a "..r.name..". Gained "..r.exp.." experience.") break else doPlayerSendCancel(cid, "This recipe doesn\'t seems to match.") end end ]]></action> <item id="2422" article="a" name="blacksmith hammer" override="yes"/> <talkaction words="!blacksmith;!recipes;/blacksmith;/recipes" event="buffer"><![CDATA[ domodlib('recipeList') local text = 'All a blacksmith must know:\n\n' local i = 0 repeat i = i+1 local s = smiths[i].type local t = smiths[i].recipe text = text..'[Recipe #'..i..' '..s..' - '..smiths[i].name..']:\n' for n=1,table.maxn(t) do a = (table.maxn(t)+1)-n text = text..'#'..n..' - '..t[a].count..' '..getItemNameById(t[a].id)..'\n' end until i == table.maxn(smiths) doShowTextDialog(cid, 1950, text) ]]></talkaction> </mod> Voce pode editar uma receita desta maneira: [numerodepoisdoanterior] = { name = 'nome do prodruto',finalid = ID do Produto,count = Count do produto,exp = experiencia que vai dar,type = 'Tipo',level = level minimo, recipe = {[1] = {id=ID,count=QUANTIDADE},[2] = {id=ID,count=QUANTIDADE}}}, Lebrando que pode ser usado em qualquer lugar e so funciona olhando de frente para os items na hora de usar o blacksmith hammer (id 2422), se alguem conseguir, eu preciso colocar 'itemPos = toPosition' (lugar aonde usei o hammer). Nao consegui de nenhuma forma em MOD pois foi meu primeiro ... Obrigado desde ja, espero que gostem.
  • Quem Está Navegando   0 membros estão online

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