Ir para conteúdo

Kydrai

Visconde
  • Total de itens

    250
  • Registro em

  • Última visita

  • Dias Ganhos

    14

Tudo que Kydrai postou

  1. Kydrai

    Esportes

    O primeiro: Pode não estar 100% e talvez tenha algumas coisas desnecessárias. actions/actions.xml <action actionid="1011" script="peso.lua"/> <action actionid="1010" script="peso.lua"/> actions/scripts/peso.lua lib/peso.lua globalevents/scripts/start.lua Caso exista, coloque: setPesoDescriptions() Se não: Anexei uma imagem pra ajudar. Configurando posições: PESO_POS = { ["Levantamento 01"] = { pos1 = {x=122, y=122, z=7}, -- player 1 pos2 = {x=122, y=120, z=7}, -- player 2 pos3 = {x=120, y=121, z=7, stackpos=1}, -- alavanca pos4 = {x=121, y=122, z=7, stackpos=1}, -- peso 1 pos5 = {x=121, y=120, z=7, stackpos=1} -- peso 2 }, ["Levantamento 02"] = { pos1 = {x=122, y=122, z=7}, -- player 1 pos2 = {x=122, y=120, z=7}, -- player 2 pos3 = {x=120, y=121, z=7, stackpos=1}, -- alavanca pos4 = {x=121, y=122, z=7, stackpos=1}, -- peso 1 pos5 = {x=121, y=120, z=7, stackpos=1} -- peso 2 }, } Prêmios: peso:reward(7369, 7371, 7370) -- recompensa(winner, looser, draw)
  2. Da uma olhada neste tópico: http://www.xtibia.com/forum/topic/128042-resolvido/
  3. Tenta assim: -- By Kydrai function onTimer() local wl = {x=1042, y=1020, z=7} local wall = getTileItemById(wl, 9780) local wltime = 1 * 60 doRemoveItem(wall.uid, 1) addEvent(doCreateItem, wltime * 1000, 9780, 1, wl) return TRUE end getTileItemById(wl, 9780) -> Pega o item na posição wl com id 9780.
  4. Acho que não da pra mudar o uid, pelo menos eu n sei como. Não pode ser action id não? Ai seria algo como: doSetItemActionId(doCreateItem(9789, 1, wl), 1009)
  5. No TFS 0.3.6 sei pode ser assim: doItemSetAttribute(doCreateItem(9789, 1, wl), "uid", 9780)
  6. No TFS 0.3.6 funcionou. ------Roller Coaster System by Colex------- -- Lib RollerCoaster = {} function RollerCoaster:onChangeLevel(cid, fromZ, toZ) return TRUE end function RollerCoaster:onMove(cid, rail, railInfo, pos) return TRUE end function RollerCoaster:onChangeSpeed(cid, power) if power == 2 then doSendAnimatedText(getCreaturePosition(cid),"TROC TROC",210) else doSendAnimatedText(getCreaturePosition(cid),"TSSSIIIIII",210) end return TRUE end function RollerCoaster:onTypeChange(cid, fromType, toType) return TRUE end function RollerCoaster:onExitQuery(cid) return TRUE end function RollerCoaster:onExit(cid) return TRUE end function RollerCoaster:onEnterQuery(cid, cart) return TRUE end function RollerCoaster:onEnter(cid, cartID) return TRUE end -- End Lib local TRAINS = {7131, 7132} local all = {7121, 7122, 7123, 7124, 7125, 7126, 7133, 7134, 7135, 7136} local ACTION_TRAIN = {1001, 1002} local RAILS = { {id = all[1], dirs = {{dir = SOUTH, out = 2},{dir = NORTH, out = 2}}}, {id = all[2], dirs = {{dir = EAST, out = 1},{dir = WEST, out = 1}}}, {id = all[3], dirs = {{dir = EAST, out = 1},{dir = SOUTH, out = 2}}}, {id = all[4], dirs = {{dir = WEST, out = 1},{dir = SOUTH, out = 2}}}, {id = all[5], dirs = {{dir = EAST, out = 1},{dir = NORTH, out = 2}}}, {id = all[6], dirs = {{dir = WEST, out = 1},{dir = NORTH, out = 2}}}, {id = all[7], stop = 1}, {id = all[8], stop = 1}, {id = all[9], stop = 1}, {id = all[10], stop = 1}, } local SLOW = 500 local FAST = 200 local INCREASE = 50 local DECREASE = 50 local DOWN_INCREASE = 450 local UP_DECREASE = 155 local INFOS = {} TRUE = 1 FALSE = 0 function getRail(pos) local stack = 1 local found = 0 local rail repeat pos.stackpos = stack rail = getThingfromPos(pos) if rail.itemid == 0 then break end for i, r in ipairs(RAILS) do if (rail.itemid == r.id) then found = 1 break end end stack = stack + 1 until (found == 1) return rail end function moveTrain(cid) local params = INFOS[cid] local pos = getCreaturePosition(cid) local rail = getRail(pos) local dir = -1 local newid for i,r in ipairs(RAILS) do if rail.itemid == r.id then if RollerCoaster:onMove(cid, rail, r, pos) == FALSE then table.remove(INFOS, cid) return 1 end if r.stop ~= nil then if r.stop == 1 then RollerCoaster:onExitQuery(cid) addEvent(exitTrain, 2000, cid) return 1 end end local change = rail.actionid - 1000 local power = 0 local power = change doChangeType(cid, r.id, INFOS[cid].beforeid) info = r.dirs[iNFOS[cid].type] dir = info.dir if power == 1 or power == 2 then if RollerCoaster:onChangeSpeed(cid, power) then if power == 2 then INFOS[cid].speed = INFOS[cid].speed - INCREASE elseif power == 1 then INFOS[cid].speed = INFOS[cid].speed + DECREASE end end end if INFOS[cid].currZ ~= pos.z then if RollerCoaster:onChangeLevel(cid, INFOS[cid].currZ, pos.z) then if INFOS[cid].currZ > pos.z then INFOS[cid].speed = INFOS[cid].speed + UP_DECREASE elseif params.currZ < pos.z then params.speed = params.speed - DOWN_INCREASE end end end if params.speed < 1 then params.speed = 1 end params.currZ = pos.z newid = TRAINS[info.out] INFOS[cid].beforeid = r.id break end end if dir ~= -1 then doSetItemOutfit(cid, newid, -1) doMoveCreature(cid, dir) addEvent(moveTrain, params.speed, cid) else RollerCoaster:onExitQuery(cid) addEvent(exitTrain, 2000, cid) end end function exitTrain(cid) table.remove(INFOS, cid) RollerCoaster:onExit(cid) doSetItemOutfit(cid, TRAINS[1], 0) local pos = getCreaturePosition(cid) pos.y = pos.y - 1 doTeleportThing(cid, pos, 1) doCreatureSetNoMove(cid, 0) end function enterTrain(cid, item, type) if RollerCoaster:onEnter(cid, item) then doSetItemOutfit(cid, item, -1) local pos = getCreaturePosition(cid) table.insert(INFOS, cid, {type = type, speed = SLOW, currZ = pos.z}) addEvent(moveTrain, 1000, cid) end end function getSpeed(cid) if INFOS[cid].speed ~= nil then return INFOS[cid].speed end return FALSE end function setSpeed(cid, speed) if INFOS[cid].speed ~= nil then INFOS[cid].speed = speed return TRUE end return FALSE end function onUse(cid, item, fromPosition, itemEx, toPosition) if isInArray(ACTION_TRAIN, item.actionid) then if RollerCoaster:onEnterQuery(cid, item) then doTeleportThing(cid, toPosition, 1) doCreatureSetNoMove(cid, 1) addEvent(enterTrain, 500, cid, item.itemid, item.actionid-1000) end end return TRUE end ----"No Scripting Needed" System----- local change = {} change[all[1]] = {all[3], all[4]} change[all[2]] = {all[4], all[6]} change[all[3]] = {all[1], all[4], all[6]} change[all[4]] = {all[1], all[2], all[3], all[5], all[6]} change[all[5]] = {all[4]} change[all[6]] = {all[2], all[3], all[4]} change[all[7]] = {} change[all[8]] = {} change[all[9]] = {} change[all[10]] = {} function doChangeType(cid, id, beforeID) if table.getn(change[id]) > 0 then if isInArray(change[id],beforeID) then if INFOS[cid].type == 1 then INFOS[cid].type = 2 else INFOS[cid].type = 1 end end end end
  7. Tem o jeito do apocarai que é por movements, aí vc precisa colocar para aprender a magia no spells.xml (needlearn="1"). movements.xml <movevent type="Equip" itemid="xxxx" slot="ring" event="script" value="script.lua"/> <movevent type="DeEquip" itemid="xxxx" slot="ring" event="script" value="script.lua"/> script.lua local magia = "Light Healing" -- nome da magia function onEquip(cid, item, slot) return doPlayerLearnInstantSpell(cid, magia) end function onDeEquip(cid, item, slot) if getPlayerLearnedInstantSpell(cid, magia) then doPlayerUnlearnInstantSpell(cid, magia) end return TRUE end
  8. Olha um exemplo do exura, não sei se tem outra forma: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 0.15, 0, 0.43, 0) function onCastSpell(cid, var) if getPlayerSlotItem(cid, CONST_SLOT_RING).itemid == xxxx then return doCombat(cid, combat, var) end doPlayerSendCancel(cid, "Você precisa estar equipando o item ##### para usar esta magia.") return FALSE end Onde ta CONST_SLOT_RING pode ser: CONST_SLOT_FIRST = 1 CONST_SLOT_HEAD = CONST_SLOT_FIRST CONST_SLOT_NECKLACE = 2 CONST_SLOT_BACKPACK = 3 CONST_SLOT_ARMOR = 4 CONST_SLOT_RIGHT = 5 CONST_SLOT_LEFT = 6 CONST_SLOT_LEGS = 7 CONST_SLOT_FEET = 8 CONST_SLOT_RING = 9 CONST_SLOT_AMMO = 10 CONST_SLOT_LAST = CONST_SLOT_AMMO O xxxx deve ser trocado pelo id do item.
  9. O certo é doBroadcastMessage, minúsculo e maiúsculo fazem diferença.
  10. Da algum erro? Senão acho que tem que mudar a linha: <action itemid="8905;8906;8907;8908;8909" event="script" value="shield.lua"/> Para: <action fromid="8905" toid="8909" event="script" value="shield.lua"/> ou: <action itemid="8905-8909" event="script" value="shield.lua"/> ou ainda: <action itemid="8905" event="script" value="shield.lua"/> <action itemid="8906" event="script" value="shield.lua"/> <action itemid="8907" event="script" value="shield.lua"/> <action itemid="8908" event="script" value="shield.lua"/> <action itemid="8909" event="script" value="shield.lua"/> Ve tbm se os ids são esses msm.
  11. actions.xml <action itemid="8905;8906;8907;8908;8909" event="script" value="shield.lua"/> actions/scripts/shield.lua -- By Kydrai function onUse(cid, item, fromPosition, itemEx, toPosition) local id = item.itemid < 8909 and item.itemid + 1 or item.itemid - 4 doTransformItem(item.uid, id) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você transformou o "..getItemNameById(item.itemid).." em "..getItemNameById(id)..".") return TRUE end 15:48 Você transformou o rainbow shield em fiery rainbow shield. 15:48 Você transformou o fiery rainbow shield em icy rainbow shield. 15:48 Você transformou o icy rainbow shield em sparking rainbow shield. 15:48 Você transformou o sparking rainbow shield em terran rainbow shield. 15:49 Você transformou o terran rainbow shield em rainbow shield. Ele vai mudando o shield, é isso mesmo?
  12. actions.xml <action itemid="7529" event="script" value="tp.lua"/> actions/scripts/tp.lua -- By Kydrai function onUse(cid, item, fromPosition, itemEx, toPosition) local tp = { -- "from" é a posição inicial onde o player deve estar e "to" para onde o player será teleportado. {from = {x=89, y=129, z=7}, to = {x=96, y=129, z=7}}, {from = {x=89, y=130, z=7}, to = {x=96, y=130, z=7}}, } local playerPos = getCreaturePosition(cid) for i, pos in pairs(tp) do if pos.from.x == playerPos.x and pos.from.y == playerPos.y and pos.from.z == playerPos.z then doTeleportThing(cid, pos.to) doSendMagicEffect(playerPos, CONST_ME_POFF) doSendMagicEffect(pos.to, CONST_ME_TELEPORT) return TRUE end end doSendMagicEffect(playerPos, CONST_ME_POFF) doPlayerSendCancel(cid, "Você não pode ser teleportado deste local.") return TRUE end Pra configurar faz assim: local tp = { -- "from" é a posição inicial onde o player deve estar e "to" para onde o player será teleportado. {from = {x=89, y=129, z=7}, to = {x=96, y=129, z=7}}, {from = {x=89, y=129, z=7}, to = {x=96, y=129, z=7}}, {from = {x=89, y=129, z=7}, to = {x=96, y=129, z=7}}, {from = {x=89, y=130, z=7}, to = {x=96, y=130, z=7}}, {from = {x=89, y=129, z=7}, to = {x=96, y=129, z=7}}, {from = {x=89, y=129, z=7}, to = {x=96, y=129, z=7}}, }
  13. Kydrai

    [Npc] De Stamina

    <?xml version="1.0" encoding="ISO-8859-1"?> <npc name="Nome" floorchange="0" walkinterval="4000"> <health now="150" max="150"/> <look type="133" head="20" body="120" legs="75" feet="13"/> <interaction range="3" idletime="30"> <interact keywords="hi" focus="1"> <keywords>hello</keywords> <response> <action name="script"> <![CDATA[ selfSay("Olá " .. getCreatureName(cid) .. ", eu vendo {stamina}.", cid) ]]> </action> </response> </interact> <interact keywords="bye" focus="0"> <keywords>farewell</keywords> <response text="Good bye."/> </interact> <interact keywords="stamina"> <response> <action name="script"> <![CDATA[ selfSay("Você quer comprar 60 minutos de stamina por 10000 gp's?", cid) ]]> </action> <interact keywords="yes"> <response> <action name="script"> <![CDATA[ local minutes = 60 local price = 10000 if doPlayerRemoveMoney(cid, price) then doPlayerAddStamina(cid, minutes) selfSay("Thanks.", cid) else selfSay("Você não possui "..price.." gp's.", cid) end ]]> </action> </response> </interact> <interact keywords="no"> <response> <action name="script"> <![CDATA[ selfSay("Ok.", cid) ]]> </action> </response> </interact> </response> </interact> </interaction> </npc>
  14. Vc pode fazer que nem a mana rune. Só mudar o doPlayerAddMana(cid, quantidade) para doPlayerAddStamina(cid, minutes) Link da mana rune: http://www.xtibia.com/forum/topic/120239-fazendo-manarune/
  15. Oq da pra fazer é usar essas funções: setItemAttack(uid, attack) setItemExtraAttack(uid, extraattack) setItemDefense(uid, defense) setItemArmor(uid, armor) setItemExtraDefense(uid, extradefense) setItemAttackSpeed(uid, attackspeed) setItemHitChance(uid, hitChance) setItemShootRange(uid, shootRange) Ficaria assim por exemplo: local functions = { ["attack"] = {s = setItemAttack, g = getItemAttack}, ["extraattack"] = {s = setItemExtraAttack, g = getItemExtraAttack}, ["defense"] = {s = setItemDefense, g = getItemDefense}, ["extradefense"] = {s = setItemExtraDefense, g = getItemDefense}, ["armor"] = {s = setItemArmor, g = getItemArmor}, ["attackspeed"] = {s = setItemAttackSpeed, g = getItemAttackSpeed}, ["hitchance"] = {s = setItemHitChance, g = getItemHitChance}, ["shootrange"] = {s = setItemShootRange, g = getItemShootRange}, } function onSay(cid, words, param) local opt = string.explode(param, ",") local item = getPlayerSlotItem(cid, CONST_SLOT_AMMO).uid local f = opt[1] and opt[2] and functions[opt[1]:lower()] or FALSE if f then f.s(item, f.g(item) + opt[2]) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, getItemName(item).." has been upgrated.") else doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "A função "..opt[1].." não existe ou o parâmetro está incorreto.") end return TRUE end Skill só por movements.
  16. No cliente do tibia só da pra modificar o nome das skills e não criar, ai vc precisaria de um editor hex. Se vc entende bem de programação poderia editar o YATC e o servidor para que tenha as novas skills. Haja vocação.
  17. Kydrai

    [ Resolvido ]

    Acho que é getCreatureByName("name")
  18. Não, nada vê cara. Como eu disse no outro tópico a função mudou. Se quiser continuar com a anterior vai data/lib/050-function.lua e coloca: function getItemAttack(uid) return getItemAttribute(uid, "attack") end
  19. Eles foram modificados. No 0.3.5 era: getItemAttack(uid) Agora no 0.3.6 se não me engano é: getItemAttribute(uid, "attack") A mesma coisa acontece com todos os outros atributos dos items ("armor", "defense", ...).
  20. Baseado no seu script fica algo +- assim: local porta = 9090 -- uid da porta local item2 = 5901 -- lixo local lvl = 90 -- level necessário para passar local dentro = {x=, y=, z=} local fora = {x=, y=, z=} function onUse(cid, item, fromPosition, itemEx, toPosition) if item.uid == porta then doPlayerSendTextMessage(cid, 21, "Você terá que arrombar a porta!") else if getPlayerLevel(cid) >= lvl then doPlayerSendTextMessage(cid, 21, "Você conseguil arrombar a porta!") local pos = getCreaturePosition(cid) if pos.x == dentro.x and pos.y == dentro.y and pos.z == dentro.z then doTeleportThing(cid, fora) else doTeleportThing(cid, dentro) end doSendMagicEffect(toPosition, 2) else doPlayerSendCancel(cid, "Você nao tinha level suficiente, por isso quebrou sua Crownbar!") doTransformItem(item.uid, item2) doSendMagicEffect(toPosition, 3) end end return TRUE end <action uniqueid="9090" event="script" value="arrombamento.lua"/> <action itemid="2416" event="script" value="arrombamento.lua"/>
  21. Kydrai

    [Resolvido]

    Não testei: creaturescripts/scripts/tp.lua function removeTp(tpId, tpPos) local tp = getThingfromPos(tpPos) if tp.itemid == tpId then doRemoveItem(tp.uid, 1) doSendMagicEffect(tpPos, CONST_ME_POFF) end end function onDeath(cid) local tpId = 1387 local tpPos = getCreaturePosition(cid) -- onde aparece o tp local tpToPos = {x=, y=, z=} -- destino local tpTime = 5 local tp = doCreateTeleport(tpId, tpToPos, tpPos) doCreatureSay(cid, "O teleport irá sumir em "..tpTime.." segundos.", TALKTYPE_ORANGE_1) addEvent(removeTp, tpTime*1000, tpId, getThingPos(tp)) return TRUE end creaturescripts/creaturescripts.xml <event type="death" name="tp" event="script" value="tp.lua"/> Ai no arquivo xml do monster desejado coloca: <script> <event name="tp"/> </script>
  22. No lugar de: function onCastSpell(cid, var) if doPlayerRemoveItem(cid, 2352, 1) then return doCombat(cid, combat, var) else doPlayerSendCancel(cid, "You need a crystal arrow to cast this spell") end return 0 end Coloca: function onCastSpell(cid, var) if getPlayerSlotItem(cid, CONST_SLOT_AMMO).itemid == 2352 and doPlayerRemoveItem(cid, 2352, 1) then return doCombat(cid, combat, var) end doPlayerSendCancel(cid, "You need a crystal arrow to cast this spell") return FALSE end
  23. Ainda ta tudo errado. Aconselho vc a procurar tutoriais sobre o if primeiro. Ou então escrever a lógica do funcionamento do script.
  24. A idéia é boa. Mas como isso funcionou? O script ta todo bagunçado, coisas desnecessárias e com erros. Não seria unique id? porta = 9090 -- Unic ID da porta dentro = {x=512, y=509, z=7} fora = {x=515, y=509, z=7} player1 = getThingfromPos(player1pos) Use variáveis locais. player1pos não exite. player1 desnecessário. doPlayerAddItem(cid, item2[, canDropOnMap]) O certo seria: doPlayerAddItem(cid, item2) if item.uid == porta then doPlayerSendTextMessage(cid, 21, "Você terá que arrombar a porta!") end elseif getPlayerLevel(cid) >= 90 and item.id == item1 then else doPlayerSendTextMessage(cid, 21, "Você conseguil arrombar a porta!") doSendMagicEffect(topos, 2) doTeleportThing(player1.uid,dentro) elseif player1 == dentro doTeleportThing(player1.uid,fora) end O if se usa assim: if ... then ... elseif ... then ... elseif ... then ... else ... end Tem mais alguns erros por ai ainda.
  25. <talkaction words="!buyvida" event="script" value="vida.lua"/> function onSay(cid, words, param) local money = 10 local health = 100 if doPlayerRemoveMoney(cid, money) then setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) + health) else doPlayerSendCancel(cid, "Você precisa de "..money.." gp's") end return TRUE end <talkaction words="!buymana" event="script" value="mana.lua"/> function onSay(cid, words, param) local money = 10 local mana = 100 if doPlayerRemoveMoney(cid, money) then setCreatureMaxMana(cid, getCreatureMaxMana(cid) + mana) else doPlayerSendCancel(cid, "Você precisa de "..money.." gp's") end return TRUE end
  • Quem Está Navegando   0 membros estão online

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