Ir para conteúdo

Volksz

Campones
  • Total de itens

    49
  • Registro em

  • Última visita

Tudo que Volksz postou

  1. function onSay(cid, words, param) if isPlayer(cid) == 1 then local NewOutfit = {lookType=78,lookHead=0,lookAddons=0,lookLegs=0,lookBody=0} OutfitTime = 5*1000 doSetCreatureOutfit(cid, NewOutfit,OutfitTime) end return 1 end
  2. AFFFFF... Se quiser te passo a talkaction pra vc mesmo add no script ai, porque nao deu, deu erro como sempre
  3. Eu tenho uma Talkaction, ela e bem grandinha, e eu queria que so certa vocaçao usasse, e quando outra pessoa tentasse aparecese embaixo como exemplo "Sorry, Not Possible", aparecesse "You not use this spell". E Pedido 2@ E so desse para usar quando o player tivesse 50 de mana, se nao tivesse não usasse. Vlew =D
  4. Volksz

    Fazem Para Min?

    By Volksz/Kay local acombat = createCombatObject() local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_GREENSTAR) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -4.0, -250, -4.0, 250) local arr = { {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 3, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1} } local area = createCombatArea(arr) setCombatArea(acombat, area) function onTargetTile(cid, pos) doCombat(cid,combat,positionToVariant(pos)) end setCombatCallback(acombat, CALLBACK_PARAM_TARGETTILE, "onTargetTile") function onCastSpell(cid, var) return doCombat(cid, acombat, var) end Está ai, a tag faça de acordo com a que seu ot precisa, Um exemplo: <instant name="Stars" words="Exori Ninja" selftarget="1" aggressive="0" lvl="9" maglv="1" mana="20" soul="0" exhaustion="1" prem="0" enabled="1" script="shuriken.lua"></instant> Nao esqueça de editar para qual classe usar se não, nao funcionará.
  5. Boa, é dificil achar uma spell usável aqui nesta seção.
  6. Volksz

    Plix Ajuda

    Pode ser assim, um mapa feito no map editor, com armadilhas escondidas?tipo tem um item ali mas um passo antes de chegar no item tem uma armadilha e o player morre e a armadilha some e ele tem que ir la denovo?
  7. Volksz

    Plix Ajuda

    Voce quer uma spell que faça um labirinto?Nao vai ser muito util no seu ot, porque pensando nao há espaço nem em hunts e pior em cidades, nao e mais facil voce fazer um item de armadilha quando o cara passa em cima ele perde hp? ou uma mina subterranea?
  8. As pessoas de hoje em dia estão cada vez mais sem cerebro...
  9. Volksz

    Troca De Outift

    uso o 8.1 :positive:
  10. Aff, nao consegui oq ue voce tentou explicar ai.., Se voce colocar para demons ser sumonados utevo res tambem ira summonar, realmente nao entendi oq voce tentou explicar.
  11. Vá em Weapons > Weapons.xml <distance id="2352" script="stunarrow.lua"/> Agora o script, em weapons/scripts crie um arquivo stunarrow.lua e adicione isto: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_STUN) setCombatFormula(combat, COMBAT_FORMULA_SKILL , 0, 0, 0, 0) local condition = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition, CONDITION_PARAM_TICKS, 5000) setConditionParam(condition, CONDITION_PARAM_SPEED, -350) setCombatCondition(combat, condition) function onUseWeapon(cid, var) doCombat(cid, combat, var) end
  12. Volksz

    Troca De Outift

    Ta dando erro no CreateChangeOutfit, eu ja tinha tentado usar ela em npc's e nao tinha dado... Ja tentei tambem Playerchangeoutfit, mas nao deu
  13. Você esta reclamando porque o iRockStar ajudou a pessoa que precisava de ajuda?Que cabimento tem isso? E ainda da um post inutil e se quiser falar com alguem em private, este nao e o lugar certo.
  14. Volksz

    [pedido]fist - Club

    Eu queria que quando o player nao tivesse nada na mao e atacasse em vez de upar o fist upasse o club. Sera que tem geito? Ou podem fazer, por favor, para mim?
  15. Volksz

    Troca De Outift

    Venho aqui pedir um NPC, ou Action que troque a outfit de um player, nao por tempo mas pernamente, que so saia quando o player quiser.
  16. Acho que ele ja conseguiu, ele queria barreira para os players nao terem acesso ao outro npc, mas ja foi feito o npc pra ele
  17. Venho aqui pedir, nao se se estou na seção certa mas.. EU venho pedir um npc que troque a outfit atual do player e remova uma que ele tenha no "Set creature outfit" in game.
  18. Entao nao vai funcionar tambem neh?
  19. Quando usar ele aumentar sua mana que ta 700/700 para 500/500, por exemplo, e quando tirar ele volta ao normal a mana do player.
  20. Acho que você quer fazer um servidor de narutibia néh?entao ta ai porque esse scrip eh de 7.81 que voce mandou, nas linhas azuis ponha o storage values iguais de todos os 5, nas linhas vermelhas sao as mensagens que o npc ira falar. Copie esse npc em 5 arquivos .lua na sua pasta NPC, e faça seus NPC, normalmente, se nao souber como fazer avise...
  21. Queria que algumas magias fossem habilitadas quando usassem o amulet, existe como?
  22. Tem um geito, eu ja vi em um 8.0, quando ativava ele removia maana ate acabar e entao desapareceria, mas muito obrigado ai, e sabe se tem algum geito de um item adicionar algumas skills de fist e shielding por um determinado tempo? Se quiser ver meu global.lua esta aí TRUE = 1 FALSE = 0 LUA_ERROR = -1 LUA_NO_ERROR = 0 NORTH = 0 EAST = 1 SOUTH = 2 WEST = 3 SOUTHWEST = 4 SOUTHEAST = 5 NORTHWEST = 6 NORTHEAST = 7 COMBAT_FORMULA_UNDEFINED = 0 COMBAT_FORMULA_LEVELMAGIC = 1 COMBAT_FORMULA_SKILL = 2 COMBAT_FORMULA_VALUE = 3 CONDITION_PARAM_OWNER = 1 CONDITION_PARAM_TICKS = 2 CONDITION_PARAM_OUTFIT = 3 CONDITION_PARAM_HEALTHGAIN = 4 CONDITION_PARAM_HEALTHTICKS = 5 CONDITION_PARAM_MANAGAIN = 6 CONDITION_PARAM_MANATICKS = 7 CONDITION_PARAM_DELAYED = 8 CONDITION_PARAM_SPEED = 9 CONDITION_PARAM_LIGHT_LEVEL = 10 CONDITION_PARAM_LIGHT_COLOR = 11 CONDITION_PARAM_SOULGAIN = 12 CONDITION_PARAM_SOULTICKS = 13 CONDITION_PARAM_MINVALUE = 14 CONDITION_PARAM_MAXVALUE = 15 CONDITION_PARAM_STARTVALUE = 16 CONDITION_PARAM_TICKINTERVAL = 17 CONDITION_PARAM_FORCEUPDATE = 18 CONDITION_PARAM_SKILL_MELEE = 19 CONDITION_PARAM_SKILL_FIST = 20 CONDITION_PARAM_SKILL_CLUB = 21 CONDITION_PARAM_SKILL_SWORD = 22 CONDITION_PARAM_SKILL_AXE = 23 CONDITION_PARAM_SKILL_DISTANCE = 24 CONDITION_PARAM_SKILL_SHIELD = 25 CONDITION_PARAM_SKILL_FISHING = 26 CONDITION_PARAM_STAT_MAXHITPOINTS = 27 CONDITION_PARAM_STAT_MAXMANAPOINTS = 28 CONDITION_PARAM_STAT_SOULPOINTS = 29 CONDITION_PARAM_STAT_MAGICPOINTS = 30 CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT = 31 CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT = 32 CONDITION_PARAM_STAT_SOULPOINTSPERCENT = 33 CONDITION_PARAM_STAT_MAGICPOINTSPERCENT = 34 COMBAT_PARAM_TYPE = 1 COMBAT_PARAM_EFFECT = 2 COMBAT_PARAM_DISTANCEEFFECT = 3 COMBAT_PARAM_BLOCKSHIELD = 4 COMBAT_PARAM_BLOCKARMOR = 5 COMBAT_PARAM_TARGETCASTERORTOPMOST = 6 COMBAT_PARAM_CREATEITEM = 7 COMBAT_PARAM_AGGRESSIVE = 8 COMBAT_PARAM_DISPEL = 9 CALLBACK_PARAM_LEVELMAGICVALUE = 1 CALLBACK_PARAM_SKILLVALUE = 2 CALLBACK_PARAM_TARGETTILE = 3 CALLBACK_PARAM_TARGETCREATURE = 4 COMBAT_NONE = 0 COMBAT_PHYSICALDAMAGE = 1 COMBAT_ENERGYDAMAGE = 2 COMBAT_POISONDAMAGE = 4 COMBAT_FIREDAMAGE = 8 COMBAT_UNDEFINEDDAMAGE = 16 COMBAT_LIFEDRAIN = 32 COMBAT_MANADRAIN = 64 COMBAT_HEALING = 128 COMBAT_DROWNDAMAGE = 256 COMBAT_ICEDAMAGE = 512 COMBAT_HOLYDAMAGE = 1024 COMBAT_DEATHDAMAGE = 2048 CONDITION_NONE = 0 CONDITION_POISON = 1 CONDITION_FIRE = 2 CONDITION_ENERGY = 4 CONDITION_LIFEDRAIN = 8 CONDITION_HASTE = 16 CONDITION_PARALYZE = 32 CONDITION_OUTFIT = 64 CONDITION_INVISIBLE = 128 CONDITION_LIGHT = 256 CONDITION_MANASHIELD = 512 CONDITION_INFIGHT = 1024 CONDITION_DRUNK = 2048 CONDITION_EXHAUSTED = 4096 CONDITION_FOOD = 8192 CONDITION_REGENERATION = 8192 CONDITION_SOUL = 16384 CONDITION_DROWN = 32768 CONDITION_MUTED = 65536 CONDITION_ATTRIBUTES = 131072 CONDITION_FREEZING = 262144 CONDITION_DAZZLED = 524288 CONDITION_CURSED = 1048576 PLAYERLOSS_EXPERIENCE = 0 PLAYERLOSS_MANA = 1 PLAYERLOSS_SKILL = 2 CONST_SLOT_HEAD = 1 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_ME_DRAWBLOOD = 0 CONST_ME_LOSEENERGY = 1 CONST_ME_POFF = 2 CONST_ME_BLOCKHIT = 3 CONST_ME_EXPLOSIONAREA = 4 CONST_ME_EXPLOSIONHIT = 5 CONST_ME_FIREAREA = 6 CONST_ME_YELLOW_RINGS = 7 CONST_ME_GREEN_RINGS = 8 CONST_ME_HITAREA = 9 CONST_ME_ENERGYAREA = 10 CONST_ME_ENERGYHIT = 11 CONST_ME_MAGIC_BLUE = 12 CONST_ME_MAGIC_RED = 13 CONST_ME_MAGIC_GREEN = 14 CONST_ME_HITBYFIRE = 15 CONST_ME_HITBYPOISON = 16 CONST_ME_MORTAREA = 17 CONST_ME_SOUND_BLUE = 18 CONST_ME_SOUND_RED = 19 CONST_ME_POISONAREA = 20 CONST_ME_SOUND_YELLOW = 21 CONST_ME_SOUND_PURPLE = 22 CONST_ME_SOUND_BLUE = 23 CONST_ME_SOUND_WHITE = 24 CONST_ME_BUBBLES = 25 CONST_ME_CRAPS = 26 CONST_ME_GIFT_WRAPS = 27 CONST_ME_FIREWORK_YELLOW = 28 CONST_ME_FIREWORK_RED = 29 CONST_ME_FIREWORK_BLUE = 30 CONST_ME_STUN = 31 CONST_ME_SLEEP = 32 CONST_ME_WATERCREATURE = 33 CONST_ME_GROUNDSHAKER = 34 CONST_ME_HEARTS = 35 CONST_ME_FIREATTACK = 36 CONST_ME_ENERGYAREA = 37 CONST_ME_SMALLCLOUDS = 38 CONST_ME_HOLYDAMAGE = 39 CONST_ME_BIGCLOUDS = 40 CONST_ME_ICEAREA = 41 CONST_ME_ICETORNADO = 42 CONST_ME_ICEATTACK = 43 CONST_ME_STONES = 44 CONST_ME_SMALLPLANTS = 45 CONST_ME_CARNIPHILA = 46 CONST_ME_PURPLEENERGY = 47 CONST_ME_YELLOWENERGY = 48 CONST_ME_HOLYAREA = 49 CONST_ME_BIGPLANTS = 50 CONST_ME_CAKE = 51 CONST_ME_GIANTICE = 52 CONST_ME_WATERSPLASH = 53 CONST_ME_PLANTATTACK = 54 CONST_ME_NONE = 255 CONST_ANI_SPEAR = 0 CONST_ANI_BOLT = 1 CONST_ANI_ARROW = 2 CONST_ANI_FIRE = 3 CONST_ANI_ENERGY = 4 CONST_ANI_POISONARROW = 5 CONST_ANI_BURSTARROW = 6 CONST_ANI_THROWINGSTAR = 7 CONST_ANI_THROWINGKNIFE = 8 CONST_ANI_SMALLSTONE = 9 CONST_ANI_SUDDENDEATH = 10 CONST_ANI_LARGEROCK = 11 CONST_ANI_SNOWBALL = 12 CONST_ANI_POWERBOLT = 13 CONST_ANI_POISON = 14 CONST_ANI_INFERNALBOLT = 15 CONST_ANI_HUNTINGSPEAR = 16 CONST_ANI_ENCHANTEDSPEAR = 17 CONST_ANI_ASSASSINSTAR = 18 CONST_ANI_GREENSTAR = 19 CONST_ANI_ROYALSPEAR = 20 CONST_ANI_SNIPERARROW = 21 CONST_ANI_ONYXARROW = 22 CONST_ANI_PIERCINGBOLT = 23 CONST_ANI_WHIRLWINDSWORD = 24 CONST_ANI_WHIRLWINDAXE = 25 CONST_ANI_WHIRLWINDCLUB = 26 CONST_ANI_ETHEREALSPEAR = 27 CONST_ANI_ICE = 28 CONST_ANI_EARTH = 29 CONST_ANI_HOLY = 30 CONST_ANI_DEATH = 31 CONST_ANI_FLASHARROW = 32 CONST_ANI_FLAMMINGARROW = 33 CONST_ANI_SHIVERARROW = 34 CONST_ANI_ENERGYBALL = 35 CONST_ANI_SMALLICE = 36 CONST_ANI_SMALLHOLY = 37 CONST_ANI_SMALLEARTH = 38 CONST_ANI_EARTHARROW = 39 CONST_ANI_EXPLOSION = 40 CONST_ANI_CAKE = 41 CONST_ANI_WEAPONTYPE = 254 CONST_ANI_NONE = 255 TALKTYPE_SAY = 1 TALKTYPE_WHISPER = 2 TALKTYPE_YELL = 3 TALKTYPE_PRIVATE = 4 TALKTYPE_CHANNEL_Y = 5 TALKTYPE_BROADCAST = 9 TALKTYPE_CHANNEL_R1 = 10 TALKTYPE_PRIVATE_RED = 11 TALKTYPE_CHANNEL_O = 12 TALKTYPE_CHANNEL_R2 = 14 TALKTYPE_ORANGE_1 = 16 TALKTYPE_ORANGE_2 = 17 MESSAGE_STATUS_WARNING = 18 MESSAGE_EVENT_ADVANCE = 19 MESSAGE_EVENT_DEFAULT = 20 MESSAGE_STATUS_DEFAULT = 21 MESSAGE_INFO_DESCR = 22 MESSAGE_STATUS_SMALL = 23 MESSAGE_STATUS_CONSOLE_BLUE = 24 MESSAGE_STATUS_CONSOLE_RED = 25 TEXTCOLOR_BLUE = 5 TEXTCOLOR_LIGHTBLUE = 35 TEXTCOLOR_LIGHTGREEN = 30 TEXTCOLOR_PURPLE = 83 TEXTCOLOR_LIGHTGREY = 129 TEXTCOLOR_DARKRED = 144 TEXTCOLOR_RED = 180 TEXTCOLOR_ORANGE = 198 TEXTCOLOR_YELLOW = 210 TEXTCOLOR_WHITE_EXP = 215 TEXTCOLOR_NONE = 255 RETURNVALUE_NOERROR = 1 RETURNVALUE_NOTPOSSIBLE = 2 RETURNVALUE_NOTENOUGHROOM = 3 RETURNVALUE_PLAYERISPZLOCKED = 4 RETURNVALUE_PLAYERISNOTINVITED = 5 RETURNVALUE_CANNOTTHROW = 6 RETURNVALUE_THEREISNOWAY = 7 RETURNVALUE_DESTINATIONOUTOFREACH = 8 RETURNVALUE_CREATUREBLOCK = 9 RETURNVALUE_NOTMOVEABLE = 10 RETURNVALUE_DROPTWOHANDEDITEM = 11 RETURNVALUE_BOTHHANDSNEEDTOBEFREE = 12 RETURNVALUE_CANONLYUSEONEWEAPON = 13 RETURNVALUE_NEEDEXCHANGE = 14 RETURNVALUE_CANNOTBEDRESSED = 15 RETURNVALUE_PUTTHISOBJECTINYOURHAND = 16 RETURNVALUE_PUTTHISOBJECTINBOTHHANDS = 17 RETURNVALUE_TOOFARAWAY = 18 RETURNVALUE_FIRSTGODOWNSTAIRS = 19 RETURNVALUE_FIRSTGOUPSTAIRS = 20 RETURNVALUE_CONTAINERNOTENOUGHROOM = 21 RETURNVALUE_NOTENOUGHCAPACITY = 22 RETURNVALUE_CANNOTPICKUP = 23 RETURNVALUE_THISISIMPOSSIBLE = 24 RETURNVALUE_DEPOTISFULL = 25 RETURNVALUE_CREATUREDOESNOTEXIST = 26 RETURNVALUE_CANNOTUSETHISOBJECT = 27 RETURNVALUE_PLAYERWITHTHISNAMEISNOTONLINE = 28 RETURNVALUE_NOTREQUIREDLEVELTOUSERUNE = 29 RETURNVALUE_YOUAREALREADYTRADING = 30 RETURNVALUE_THISPLAYERISALREADYTRADING = 31 RETURNVALUE_YOUMAYNOTLOGOUTDURINGAFIGHT = 32 RETURNVALUE_DIRECTPLAYERSHOOT = 33 RETURNVALUE_NOTENOUGHLEVEL = 34 RETURNVALUE_NOTENOUGHMAGICLEVEL = 35 RETURNVALUE_NOTENOUGHMANA = 36 RETURNVALUE_NOTENOUGHSOUL = 37 RETURNVALUE_YOUAREEXHAUSTED = 38 RETURNVALUE_PLAYERISNOTREACHABLE = 39 RETURNVALUE_CANONLYUSETHISRUNEONCREATURES = 40 RETURNVALUE_ACTIONNOTPERMITTEDINPROTECTIONZONE = 41 RETURNVALUE_YOUMAYNOTATTACKTHISPLAYER = 42 RETURNVALUE_YOUMAYNOTATTACKAPERSONINPROTECTIONZONE = 43 RETURNVALUE_YOUMAYNOTATTACKAPERSONWHILEINPROTECTIONZONE = 44 RETURNVALUE_YOUMAYNOTATTACKTHISCREATURE = 45 RETURNVALUE_YOUCANONLYUSEITONCREATURES = 46 RETURNVALUE_CREATUREISNOTREACHABLE = 47 RETURNVALUE_TURNSECUREMODETOATTACKUNMARKEDPLAYERS = 48 RETURNVALUE_YOUNEEDPREMIUMACCOUNT = 49 RETURNVALUE_YOUNEEDTOLEARNTHISSPELL = 50 RETURNVALUE_YOURVOCATIONCANNOTUSETHISSPELL = 51 RETURNVALUE_YOUNEEDAWEAPONTOUSETHISSPELL = 52 ITEM_GOLD_COIN = 2148 ITEM_PLATINUM_COIN = 2152 ITEM_CRYSTAL_COIN = 2160 function doPlayerGiveItem(cid, itemid, count, charges) local hasCharges = (isItemRune(itemid) == TRUE or isItemFluidContainer(itemid) == TRUE) if(hasCharges and charges == nil) then charges = 1 end while count > 0 do local tempcount = 1 if(hasCharges) then tempcount = charges end if(isItemStackable(itemid) == TRUE) then tempcount = math.min (100, count) end local ret = doPlayerAddItem(cid, itemid, tempcount) if(ret == LUA_ERROR) then ret = doCreateItem(itemid, tempcount, getPlayerPosition(cid)) end if(ret ~= LUA_ERROR) then if(hasCharges) then count = count-1 else count = count-tempcount end else return LUA_ERROR end end return LUA_NO_ERROR end function doPlayerTakeItem(cid, itemid, count) if(getPlayerItemCount(cid,itemid) >= count) then while count > 0 do local tempcount = 0 if(isItemStackable(itemid) == TRUE) then tempcount = math.min (100, count) else tempcount = 1 end local ret = doPlayerRemoveItem(cid, itemid, tempcount) if(ret ~= LUA_ERROR) then count = count-tempcount else return LUA_ERROR end end if(count == 0) then return LUA_NO_ERROR end else return LUA_ERROR end end function doPlayerAddMoney(cid, amount) local crystals = math.floor(amount/10000) amount = amount - crystals*10000 local platinum = math.floor(amount/100) amount = amount - platinum*100 local gold = amount local ret = 0 if(crystals > 0) then ret = doPlayerGiveItem(cid, ITEM_CRYSTAL_COIN, crystals) if(ret ~= LUA_NO_ERROR) then return LUA_ERROR end end if(platinum > 0) then ret = doPlayerGiveItem(cid, ITEM_PLATINUM_COIN, platinum) if(ret ~= LUA_NO_ERROR) then return LUA_ERROR end end if(gold > 0) then ret = doPlayerGiveItem(cid, ITEM_GOLD_COIN, gold) if(ret ~= LUA_NO_ERROR) then return LUA_ERROR end end return LUA_NO_ERROR end function doPlayerBuyItem(cid, itemid, count, cost, charges) if(doPlayerRemoveMoney(cid, cost) == TRUE) then return doPlayerGiveItem(cid, itemid, count, charges) else return LUA_ERROR end end function doPlayerSellItem(cid, itemid, count, cost) if(doPlayerTakeItem(cid, itemid, count) == LUA_NO_ERROR) then if(doPlayerAddMoney(cid, cost) ~= LUA_NO_ERROR) then error('Could not add money to ' .. getPlayerName(cid) .. '(' .. cost .. 'gp)') end return LUA_NO_ERROR else return LUA_ERROR end end DIRECTION_NORTH = 0 DIRECTION_EAST = 1 DIRECTION_SOUTH = 2 DIRECTION_WEST = 3 DIRECTION_SOUTHWEST = 4 DIRECTION_SOUTHEAST = 5 DIRECTION_NORTHWEST = 6 DIRECTION_NORTHEAST = 7 DOORSTATE_OPEN = 1 DOORSTATE_CLOSED = 2 DoorHandler = { doors = { north = { { 1212, 1214 }, { 1213, 1214 }, { 1221, 1222 }, { 1225, 1226 }, { 1229, 1230 }, { 1234, 1236 }, { 1235, 1236 }, { 1239, 1240 }, { 1243, 1244 }, { 1247, 1248 }, { 1252, 1254 }, { 1253, 1254 }, { 1257, 1258 }, { 1261, 1262 }, { 3535, 3537 }, { 3536, 3537 }, { 3538, 3539 }, { 3540, 3541 }, { 3542, 3543 }, { 5084, 5085 }, { 5098, 5100 }, { 5099, 5100 }, { 5101, 5102 }, { 5103, 5104 }, { 5116, 5118 }, { 5117, 5118 }, { 5119, 5120 }, { 5121, 5122 }, { 5123, 5124 }, { 5134, 5136 }, { 5135, 5136 }, { 5137, 5139 }, { 5138, 5139 }, { 5278, 5280 }, { 5279, 5280 }, { 5286, 5287 }, { 5290, 5291 }, { 5294, 5295 }, { 5517, 5518 }, { 5748, 5749 }, { 6253, 6254 } }, west = { { 1209, 1211 }, { 1210, 1211 }, { 1219, 1220 }, { 1223, 1224 }, { 1227, 1228 }, { 1231, 1233 }, { 1232, 1233 }, { 1237, 1238 }, { 1241, 1242 }, { 1245, 1246 }, { 1249, 1251 }, { 1250, 1251 }, { 1255, 1256 }, { 1259, 1260 }, { 3544, 3546 }, { 3545, 3546 }, { 3547, 3548 }, { 3549, 3550 }, { 3551, 3552 }, { 5082, 5083 }, { 5107, 5109 }, { 5108, 5109 }, { 5110, 5111 }, { 5112, 5113 }, { 5114, 5115 }, { 5125, 5127 }, { 5126, 5127 }, { 5128, 5129 }, { 5130, 5131 }, { 5132, 5133 }, { 5140, 5142 }, { 5141, 5142 }, { 5143, 5145 }, { 5144, 5145 }, { 5281, 5283 }, { 5282, 5283 }, { 5284, 5285 }, { 5288, 5289 }, { 5292, 5293 }, { 5515, 5516 }, { 5748, 5749 }, { 6250, 6251 }, { 6255, 6256 }, { 6263, 6264 } } } } function DoorHandler:new(o) o = o or {} -- create object if user does not provide one setmetatable(o, self) self.__index = self return o end function DoorHandler:searchArray(arr, itemid) local ret = nil local i = 1 while true do if(arr == nil) then break end local tmp = arr if(tmp[1] == itemid or tmp[2] == itemid) then ret = tmp break end i = i+1 end return ret end function DoorHandler:getDoor(item) local retDoor = { dir = 0, id = itemid, toid = 0, state = 0, minlvl = 0, keyid = 0 } local ret = self:searchArray(self.doors.north, item.itemid) if(ret == nil) then ret = self:searchArray(self.doors.west, item.itemid) if(ret ~= nil) then retDoor.dir = DIRECTION_WEST end else retDoor.dir = DIRECTION_NORTH end if(ret == nil) then return nil end if(ret[1] == item.itemid) then retDoor.state = DOORSTATE_CLOSED retDoor.toid = ret[2] else retDoor.state = DOORSTATE_OPEN retDoor.toid = ret[1] end if(item.actionid >= 1000 and item.actionid < 2000) then retDoor.minlvl = item.actionid-1000 elseif(item.actionid > 0) then retDoor.keyid = item.actionid end return retDoor end function DoorHandler:getCreatureFromPos(pos) local ret = 0 local tmp = { x=pos.x, y=pos.y, z=pos.z, stackpos=253} local creature = getThingfromPos(tmp) if(creature ~= nil and creature ~= 0 and creature.itemid > 0) then ret = creature.uid end return ret end function DoorHandler:movePlayerTo(cid, toPos) local p = getPlayerPosition(cid) local dist = math.max(math.abs(p.x-toPos.x), math.abs(p.y-toPos.y)) if(dist > 1 or p.z ~= toPos.z) then local ret = doTeleportThing(cid, toPos) return (ret == LUA_NO_ERROR) end if(dist <= 0) then return true end local dir = -1 if(p.y < toPos.y) then --SouthXXX if(p.x < toPos.x) then -- SouthEast dir = DIRECTION_SOUTHEAST elseif(p.x > toPos.x) then -- SouthWest dir = DIRECTION_SOUTHWEST else --South dir = DIRECTION_SOUTH end elseif(p.y > toPos.y) then --NorthXXX if(p.x < toPos.x) then -- NorthEast dir = DIRECTION_NORTHEAST elseif(p.x > toPos.x) then -- NorthWest dir = DIRECTION_NORTHWEST else --North dir = DIRECTION_NORTH end else -- West/East if(p.x < toPos.x) then -- East dir = DIRECTION_EAST elseif(p.x > toPos.x) then -- West dir = DIRECTION_WEST else --None dir = -1 end end if(dir == -1) then return false end local ret = doMoveCreature(cid, dir) return (ret == RETURNVALUE_NOERROR) end function DoorHandler:moveCreatures(thisDoor, doorpos) local lastcid = 0 local cid = self:getCreatureFromPos(doorpos) while (cid ~= 0 and cid ~= lastcid) do lastcid = cid if(thisDoor.dir == DIRECTION_NORTH) then local ret = doMoveCreature(cid, DIRECTION_SOUTH) if(ret ~= RETURNVALUE_NOERROR) then ret = doMoveCreature(cid, DIRECTION_NORTH) if(ret ~= RETURNVALUE_NOERROR) then local destPos = { x = doorpos.x, y = doorpos.y+1, z = doorpos.z } ret = doTeleportThing(cid, destPos) if(ret ~= LUA_NO_ERROR) then destPos = { x = doorpos.x, y = doorpos.y-1, z = doorpos.z } doTeleportThing(cid, destPos) end end end elseif(thisDoor.dir == DIRECTION_WEST) then local ret = doMoveCreature(cid, DIRECTION_EAST) if(ret ~= RETURNVALUE_NOERROR) then ret = doMoveCreature(cid, DIRECTION_WEST) if(ret ~= RETURNVALUE_NOERROR) then local destPos = { x = doorpos.x+1, y = doorpos.y, z = doorpos.z } ret = doTeleportThing(cid, destPos) if(ret ~= LUA_NO_ERROR) then destPos = { x = doorpos.x-1, y = doorpos.y, z = doorpos.z } doTeleportThing(cid, destPos) end end end end cid = self:getCreatureFromPos(doorpos) end end function DoorHandler:useDoor(item, pos, userid, key, playerGenerated) local thisDoor = self:getDoor(item) if(thisDoor == nil) then return 0 end if(key ~= nil and key.actionid ~= thisDoor.keyid) then doPlayerSendTextMessage(userid,22,"The key does not match.") return 1 end if(thisDoor.keyid > 0 and key == nil) then doPlayerSendTextMessage(userid,22,"The door is locked.") return 1 end if(thisDoor.state == DOORSTATE_OPEN and thisDoor.minlvl == 0) then self:moveCreatures(thisDoor, pos) doTransformItem(item.uid, thisDoor.toid) elseif(thisDoor.state == DOORSTATE_CLOSED) then if(thisDoor.minlvl > 0) then local lvl = getPlayerLevel(userid) if(lvl < thisDoor.minlvl) then doPlayerSendTextMessage(userid,22,"You need level " .. thisDoor.minlvl .. " to pass this door.") return 1 else doTransformItem(item.uid, thisDoor.toid) self:movePlayerTo(userid, pos) end else doTransformItem(item.uid, thisDoor.toid) end elseif(thisDoor.state == DOORSTATE_OPEN and thisDoor.minlvl > 0 and not playerGenerated) then doTransformItem(item.uid, thisDoor.toid) end return 1 end if(doorHandler == nil) then doorHandler = DoorHandler:new(nil) end function isPlayerOnPos(pos) local pos2 = pos pos2.stackpos = 253 local thing = getThingfromPos(pos2) if(thing ~= nil and thing.itemid > 0) then if(isPlayer(thing.uid)) then return true end end return false end function comparePos(pos1, pos2) return (pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z) end
  23. Muito Obrigado. funcionou :smile_positivo:
  24. Não funcionou no meu SQL, entao testei em um XML, deu o seguinte ERROR. Segue SS
  • Quem Está Navegando   0 membros estão online

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