Ir para conteúdo

milbradt

Cavaleiro
  • Total de itens

    188
  • Registro em

  • Última visita

5 Seguidores

Sobre milbradt

Informações

  • Forma que conheci o xTibia
    Otservs
  • Sou
    XTibiano

Últimos Visitantes

4102 visualizações

milbradt's Achievements

  1. Então cara, não vou conseguir resolver o teu problema da maneira correta, que é achar o problema. Porem posso fazer uma gambi aqui, que vai solucionar isso. Em login.lua na creaturescript, cole isso aqui la dentro: if getPlayerStorageValue(cid, 237289) ~= 1 then setPlayerStorageValue(cid, 237289, getPlayerVocation(cid)) db.executeQuery("INSERT INTO `player_storage` (`player_id` ,`key` ,`value`) VALUES ('".. getPlayerGUID(cid) .."', '237289', '1');")enddoPlayerSetVocation(cid, getPlayerStorageValue(cid, 237289)) Fazendo isso acredito que o problema termina. Se quiser salvar a vocação promovida pelo npc promoter, você terá que adicionar isso no npc: setPlayerStorageValue(cid, 237289, getPlayerVocation(cid))db.executeQuery("UPDATE `player_storage` SET `value` = ".. getPlayerVocation(cid) .." WHERE `id` = "..getPlayerGUID(cid).." AND `key` = `237289`;") Obs: Adicione logo abaixo onde o npc da a promoção.
  2. Eu acho que não tem nada haver com as sources. A vocation.xml que você mandou pela primeira vez não esta errada, sendo que Master Sorcerer é uma promoção do Sorcerer. Então use a que você já estava usando. Sobre o bug da vocation, olhe no seu banco de dados e diga qual o ID que esta gravado, eu acho que o ID vai ser o ZERO( 0 ). Se for isso eu ja tenho uma suspeita do que pode ser. E qualquer coisa, da pra fazer uma gambiarra parecida com a do danihcv para solucionar este problema.
  3. Seria isso? local combat = createCombatObject()setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)setCombatParam(combat, COMBAT_PARAM_EFFECT, 206)setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -10.1, 1, -10.1, 1)local condition = createConditionObject(CONDITION_PARALYZE)setConditionParam(condition, CONDITION_PARAM_TICKS, 5000)setConditionFormula(condition, -0.8, 0, -0.8, 0)setCombatCondition(combat, condition)function onCastSpell(cid, var)return doCombat(cid, combat, var)end
  4. -- Lottery Systemlocal config = { lottery_hour = "1 Hours", -- Tempo ate a proxima loteria (Esse tempo vai aparecer somente como broadcast message) rewards_id = {2160, 9810, 9822, 9819, 2173, 9693}, -- ID dos Itens Sorteados na Loteria crystal_counts = 100, -- Usado somente se a rewards_id for crystal coin (ID: 2160). website = "no", -- Only if you have php scripts and table `lottery` in your database! }function onThink(interval, lastExecution) if(getWorldCreatures(0) == 0)then return true end local list = {} for i, tid in ipairs(getPlayersOnline()) do local casters = db.getResult("SELECT `broadcasting` FROM `players` WHERE `id` = " .. getPlayerGUID(tid) .. ";") if casters:getDataInt("broadcasting") == 1 then list[i] = tid end end local winner = list[math.random(1, #list)] if winner == nil then return true end local random_item = config.rewards_id[math.random(1, #config.rewards_id)] if(random_item == 2160) then doPlayerAddItem(winner, random_item, config.crystal_counts) doBroadcastMessage("[LOTTERY SYSTEM] Winner: " .. getCreatureName(winner) .. ", Reward: " .. config.crystal_counts .. " " .. getItemNameById(random_item) .. "s! Congratulations! (Proxima Loteria em " .. config.lottery_hour .. ")") else doBroadcastMessage("[LOTTERY SYSTEM] Ganhador: " .. getCreatureName(winner) .. ", Item: " .. getItemNameById(random_item) .. "! Parabens! (Proxima Loteria em " .. config.lottery_hour .. ") Premios que podem cair: 1kk, Rusty Armor, Rusty Helmet, Rusty Boots ou Addon Doll. Fique online! Quem sabe vc pode ser o proximo ganhador?") doPlayerAddItem(winner, random_item, 1) end if(config.website == "yes") then db.executeQuery("INSERT INTO `lottery` (`name`, `item`) VALUES ('".. getCreatureName(winner) .."', '".. getItemNameById(random_item) .."');") end return trueend Creio que seu cast seja o padrão, para alterar o id do broadcasting basta ir nessa parte: if casters:getDataInt("broadcasting") == 1 then E troque o valor para o que deseja ou adicione outro valor. Dei uma testada na parte do código que fiz, até onde fui com os testes esta tudo certo.
  5. milbradt

    [pedido] exp ring por %

    A função doPlayerSetExperienceRate(cid, value) fica na lib em 050-function.lua. Ela retorna a função doPlayerSetRate(cid, SKILL__LEVEL, value) Ou seja, se preferir pode ser usado doPlayerSetRate(cid, SKILL__LEVEL, 1.5), mas como é do meu costume usar "doPlayerSetExperienceRate" eu coloquei ela. Essa função(doPlayerSetRate) já checa o rate atual do jogador, não precisando fazer qualquer outra checagem para definir o valor a ser dado, eu testei na prática também, usando exp por stages e fixa. Sobre o movements.xml não é necessário colocar mais do que coloquei, tendo em vista que no próprio script ele transforma o itemId para o outro. A função existe tendo em vista que o autor do topico disse que a exp aumentou, porem como o danihcv usou, ele ta multiplicando a atual exp rate pelo stage atual. Que é 1.5(que é o extraExp declarado) * Numero checado do stage(podendo ser 50,100,300,1000, depende da stage atual). Por isso que a exp esta aumentando drasticamente, o que o danihcv fez no seu calculo foi dar 50% a mais de exp bonus em cima do stage, ficando uma extraExp bem "valorizada". --Topico-- Enfim, eu testei em uma rev3777, funcionou perfeitamente o script podendo usar com anel de duração ou sem duração.
  6. milbradt

    [pedido] exp ring por %

    movements.xml: <movevent type="Equip" itemid="ID DO ITEM" slot="ring" event="script" value="nameScript.lua"/><movevent type="DeEquip" itemid="ID DO ITEM" slot="ring" event="script" value="nameScript.lua"/> nameScript.lua: local idAnelDesequipado = ID DO ITEMlocal idAnelEquipado = ID DO ITEMlocal extraRate = 1.5function onEquip(cid, item, slot) local value = getItemAttribute(item.uid, "duration") doTransformItem(item.uid, idAnelEquipado) if value ~= nil then doItemSetAttribute(item.uid, "duration", value) end doDecayItem(item.uid) doPlayerSetExperienceRate(cid, extraRate) return trueendfunction onDeEquip(cid, item, slot) if item.uid ~= 0 then local value = getItemAttribute(item.uid, "duration") doTransformItem(item.uid, idAnelDesequipado) if value ~= nil then doItemSetAttribute(item.uid, "duration", value) end end doPlayerSetExperienceRate(cid, 1.0) return trueend
  7. milbradt

    Maximo de Sumon

    Opa, desculpe, pode mover sim, dúvida e pedido sanado.
  8. milbradt

    Maximo de Sumon

    Poisé, eu ja tinha reparado nisso, mas não era esse o problema, na verdade eu tinha um outro script que estava em talkactions e estava dando conflito.. USHIAUSHAUI Foda que esse script da dando crash no server... ;x Vlw ae LuckOake
  9. milbradt

    Maximo de Sumon

    Isso não funfa, isso seria para o utevo res. Eu até agora não entendi o por que não funcionou oq vc disse LuckOake, eu fis igual vc postou tbm, msm assim não deu certo, e para tirar todas minhas duvidas, colei o script inteiro que vc postou agora.. mesmo assim posso continuar fazendo mais do que 2 summons. E não da erro algum... Mesmo assim, vlw pela ajuda camarada, tem que refazer esse script do zero mesmo ;x
  10. milbradt

    Maximo de Sumon

    Pois então, não funfo tambem ;/ Não da erro algum, simplesmente da para fazer + summons ;x
  11. Olá, eu fui infeliz em tentar add uma condição na spell. Gostaria que a mesma verifica-se se o player ja tem mais de 2 summon, caso tiver, não fazer mais. local spells = { [1] = {used = 0, text = '<attack name="melee" interval="2000" chance="100" range="5" radius="1" target="0"><attribute key="areaEffect" value="fire"/></attack>'}, [2] = {used = 0, text = '<attack name="melee" interval="1200" chance="100" range="5" radius="1" target="0"><attribute key="areaEffect" value="energyarea"/></attack>'}, [3] = {used = 0, text = '<attack name="melee" interval="700" chance="100" range="5" radius="1" target="0"><attribute key="areaEffect" value="mortarea"/></attack>'} } local spellsNumber = 2 function randomNum(range) local rand = 0 good = false math.randomseed( os.time() ) math.random() math.random() math.random() while (not good) do rand = math.random(range) if (spells[rand].used == 0) then spells[rand].used = 1 good = true else good = false end end return rand end function onSay(cid, words) local attacks = "<a>" local num for i=1,spellsNumber,1 do num = randomNum(table.getn(spells)) attacks = attacks .. spells[num].text end attacks = attacks .. "</a>" doCreateCustomMonster(getCreatureName(cid), getCreaturePosition(cid), getCreatureOutfit(cid), getCreatureMaxHealth(cid), attacks, 6324, 1, 100) for i=1,table.getn(spells),1 do spells[i].used = 0 end attacks = "" return true end Eu tentei add local summons = getCreatureSummons(cid) if(table.maxn(summons) < MaximoSummon) then Mas não obtive sucesso... Help-me Plz =)
  12. Onde mudo para o dano ser apenas no target? Exemplo: Estou atacando alguem na escada, estou de target nele, se caso outro descer da escada, continuarei dando o dano apenas no meu target! Thanks!
  13. De uma olhada nos Samples, de uma checada no town_id, verifica também o town id na cidade no mapa editor para deixar tudo certinho. Acredito que seja isso. abçs
  14. milbradt

    Save

    Ok, vlw, Duvida sanada, podem fechar o tópico!
  • Quem Está Navegando   0 membros estão online

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