Ir para conteúdo

Leoxtibia

Visconde
  • Total de itens

    489
  • Registro em

  • Última visita

  • Dias Ganhos

    15

Tudo que Leoxtibia postou

  1. Leoxtibia

    War System

    Bom, então segue o esquema assim: Vá em talkactions>scripts, copie um arquivo qualquer e renomeie para guildwar.lua, apague tudo e cole isto: function onSay(cid, words, param, channel) for x = 640, 689 do -- coordenadas x para a sala do time 1 for y = 324, 367 do -- coordenadas y para a sala do time 1 local m = getTopCreature({x=x, y=y, z=7}).uid if m ~= 0 and isPlayer(m) then doTeleportThing(m, {x=659, y=370, z=7}) -- edita a posição para onde o time 1 irá end end end return true end Em talkactions.xml você coloca <talkaction words="/guildum" acess="5" event="script" value="guildwar.lua"/> Depois, você faz outro arquivo com outro nome e so edita as posições da 2ª sala e a posição para onde o time 2 irá. Ai você coloca essa tag: <talkaction words="/guilddois" acess="5" event="script" value="[b]nomedoseuarquivo[/b].lua"/> Lembrando que só god pode usar o comando! Vlw
  2. Leoxtibia

    War System

    Olha é assim, o comando /guildwar vai teleportar todos os players que estiverem na sua sala, para a arena. Você quer que os times fiquem em salas diferentes e vão a locais diferentes?
  3. Leoxtibia

    War System

    Pronto, então desconsidere o script da alavanca e você só precisa levar em conta o do /guildwar e editar a área onde os players estão (os tiles que você falou), que nem eu explikei lá emcima.
  4. Leoxtibia

    War System

    As pessoas dos tiles? Você quer usar o comando /guildwar para teleportar os players para uma área, e de lá.. os próprios players se teleportarem pela alavanca para a arena?
  5. Sobre o problema do !buyhouse... Tenta substituir seu doors.lua por esse: local function checkStackpos(item, position) position.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE local thing = getThingFromPos(position) position.stackpos = STACKPOS_TOP_FIELD local field = getThingFromPos(position) return (item.uid == thing.uid or thing.itemid < 100 or field.itemid == 0) end local function doorEnter(cid, item, toPosition) doTransformItem(item.uid, item.itemid + 1) doTeleportThing(cid, toPosition) end function onUse(cid, item, fromPosition, itemEx, toPosition) if(fromPosition.x ~= CONTAINER_POSITION and isPlayerPzLocked(cid) and getTileInfo(fromPosition).protection) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) return true end if(getItemLevelDoor(item.itemid) > 0) then if(item.actionid == 189) then if(not isPremium(cid)) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.") return true end doorEnter(cid, item, toPosition) return true end local gender = item.actionid - 186 if(isInArray({PLAYERSEX_FEMALE, PLAYERSEX_MALE, PLAYERSEX_GAMEMASTER}, gender)) then if(gender ~= getPlayerSex(cid)) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.") return true end doorEnter(cid, item, toPosition) return true end local skull = item.actionid - 180 if(skull >= SKULL_NONE and skull <= SKULL_BLACK) then if(skull ~= getCreatureSkullType(cid)) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.") return true end doorEnter(cid, item, toPosition) return true end local group = item.actionid - 150 if(group >= 0 and group < 30) then if(group > getPlayerGroupId(cid)) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.") return true end doorEnter(cid, item, toPosition) return true end local vocation = item.actionid - 100 if(vocation >= 0 and vocation < 50) then local playerVocationInfo = getVocationInfo(getPlayerVocation(cid)) if(playerVocationInfo.id ~= vocation and playerVocationInfo.fromVocation ~= vocation) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.") return true end doorEnter(cid, item, toPosition) return true end if(item.actionid == 190 or (item.actionid ~= 0 and getPlayerLevel(cid) >= (item.actionid - getItemLevelDoor(item.itemid)))) then doorEnter(cid, item, toPosition) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.") end return true end if(isInArray(specialDoors, item.itemid)) then if(item.actionid == 100 or (item.actionid ~= 0 and getPlayerStorageValue(cid, item.actionid) > 0)) then doorEnter(cid, item, toPosition) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The door seems to be sealed against unwanted intruders.") end return true end if(isInArray(keys, item.itemid)) then if(itemEx.actionid > 0) then if(item.actionid == itemEx.actionid and doors[itemEx.itemid] ~= nil) then doTransformItem(itemEx.uid, doors[itemEx.itemid]) return true end doPlayerSendCancel(cid, "The key does not match.") return true end return false end if(isInArray(horizontalOpenDoors, item.itemid) and checkStackpos(item, fromPosition)) then local newPosition = toPosition newPosition.y = newPosition.y + 1 local doorPosition = fromPosition doorPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE local doorCreature = getThingfromPos(doorPosition) if(doorCreature.itemid ~= 0) then local pzDoorPosition = getTileInfo(doorPosition).protection local pzNewPosition = getTileInfo(newPosition).protection if((pzDoorPosition and not pzNewPosition and doorCreature.uid ~= cid) or (not pzDoorPosition and pzNewPosition and doorCreature.uid == cid and isPlayerPzLocked(cid))) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) else doTeleportThing(doorCreature.uid, newPosition) if(not isInArray(closingDoors, item.itemid)) then doTransformItem(item.uid, item.itemid - 1) end end return true end doTransformItem(item.uid, item.itemid - 1) return true end if(isInArray(verticalOpenDoors, item.itemid) and checkStackpos(item, fromPosition)) then local newPosition = toPosition newPosition.x = newPosition.x + 1 local doorPosition = fromPosition doorPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE local doorCreature = getThingfromPos(doorPosition) if(doorCreature.itemid ~= 0) then if(getTileInfo(doorPosition).protection and not getTileInfo(newPosition).protection and doorCreature.uid ~= cid) then doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) else doTeleportThing(doorCreature.uid, newPosition) if(not isInArray(closingDoors, item.itemid)) then doTransformItem(item.uid, item.itemid - 1) end end return true end doTransformItem(item.uid, item.itemid - 1) return true end if(doors[item.itemid] ~= nil and checkStackpos(item, fromPosition)) then if(item.actionid == 0) then doTransformItem(item.uid, doors[item.itemid]) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.") end return true end return false end Vlw ai, abraços
  6. Talvez esse tópico te ajude: http://www.xtibia.com/forum/topic/134869-action-estatua-que-teleporta-o-player-apenas-se-ele-tiver-x-item/ Dá olhada aí =P
  7. Bom, ainda estou aprendendo a scripting e usei algumas coisas de outros membros e explica o script longo. Esse script que fará com que uma chest adicione SKILL. Acho que deve funcionar.. testa aí! Vá a pasta lib e procure o arquivo 050-function.lua e adicione isso lá no final (crédito Vodkart) Agora em actions>scripts crie um arquivo.lua e cole isso (créditos meu =P) Em actions.xml coloque essa tag: <action actionid="XXXX" event="script" value="arquivo.lua"/> Em XXXX adicione o actionid da chest. Como disse, ainda sou iniciante (só tive uma aula kk)... acho que o tamanho do script poderia ser diminuido mas deve funcionar! Vlw aí, abraço!
  8. Leoxtibia

    War System

    Se eu entendi você quer uma alavanca que leve os players para um local e depois, os players que estiverem nesse local sejam teleportados para a arena assim que você usar o comando certo? Estou aprendendo a scripting ainda, mas vê ai se funciona =P va em actions>scripts copie um arquivo qualquer, renomeie para alavanca.lua, apague tudo e nele cole: function onUse(cid, item, frompos, item2, topos) local pos = {x= 100, y = 40, z = 7} --- posição da sua arena doTeleportThing(cid, pos) doSendMagicEffect(getPlayerPosition(cid), 10) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voce foi teleportado para a sala de espera. Aguarde o evento ser aberto!") end Agora em actions.xml adicione o seguinte: <action uniqueid="XXXX" event="script" value="alavanca.lua"/> Em XXXX você troca pelo unique id que você colocou na sua alavanca pelo map editor. Agora o comando /guildwar: (créditos Vodkart) Vá em talkactions>scripts, copie um arquivo qualquer e renomeie para guildwar.lua, apague tudo e cole isto: function onSay(cid, words, param, channel) for x = 640, 689 do for y = 324, 367 do local m = getTopCreature({x=x, y=y, z=7}).uid if m ~= 0 and isPlayer(m) then doTeleportThing(m, {x=659, y=370, z=7}) -- edita a posição da sua arena end end end return true end Ali em for x = 640, 689 você troca pela coordenada x do canto superior esquerdo da sua "sala de espera" e pela coordenada x do canto inferior direito, respectivamente. Na parte for y, você segue o mesmo raciocinio. E em doTeleportThing(m, {x=659, y=370, z=7}) edita a posição para onde os players serão levados. Agora em talkactions.xml você adiciona a tag: <talkaction words="/guildwar" acess="5" event="script" value="guildwar.lua"/> Como disse, to começando agora, então usei o script do Vodkart. Ainda tô aprendendo, mas acho que vai servir. Vlw =P
  9. Então segue isso aqui. Você só vai precisar editar a questão das coordenadas que você quer colocar. Vá para data>npcs e copie um arquivo.xml qualquer. Renomeie para Major.xml, apague tudo e coloque isso dentro <npc name="Major" script="addon.lua" walkinterval="0" floorchange="0"> <health now="100" max="100"/> <look type="134" head="78" body="88" legs="0" feet="88" addons="3"/> <parameters> <parameter key="message_greet" value="Ola bravo aventureiro, eu tenho informacoes sobre addon quests. Diga {addon} para saber mais" /> <parameter key="message_farewell" value="Ate mais." /> <parameter key="message_walkaway" value="Ate mais." /> </parameters> </npc> Agora va em npcs>scripts e crie um aquivo addon.lua e coloque isso dentro local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid -- Conversa Jogador/NPC if(msgcontains(msg, 'addon')) then selfSay('Sobre quais desses addons voce quer saber? Posso falar sobre o {citizen}, {beggar}, {summoner}.', cid) elseif(msgcontains(msg, 'citizen')) then selfSay('O addon citizen est\á localizado na area y ao norte de z.', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'beggar')) then selfSay('O addon citizen est\á localizado na area y ao norte de z.', cid) talkState[talkUser] = 2 elseif(msgcontains(msg, 'summoner')) then selfSay('O addon citizen est\á localizado na area y ao norte de z.', cid) talkState[talkUser] = 3 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Para adicionar mais é só colocar lá entre {} e depois adicionar isso antes do primeiro end elseif(msgcontains(msg, 'summoner')) then selfSay('O addon citizen est\á localizado na area y ao norte de z.', cid) talkState[talkUser] = 3 Lembrando de mudar em talkState[talkUser] = 3 Espero que ajude.. Vlw =P
  10. Desculpe, mas ainda não está arrumado.
  11. O seu funciona também, mas vai mandar a mensagem "Desculpe Você Não E premium" mesmo quando o player for teleportado.^^
  12. Aí está! local config = { pos = {x = 110, y = 45, z = 7}, ----posição para onde o player eh mandado days = 1 --- quantos dias de premium para usar a alavanca } function onUse(cid, item, frompos, topos) if(getPlayerPremiumDays(cid) >= config.days) then doTeleportThing(cid, config.pos) doSendMagicEffect(getPlayerPosition(cid), 10) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voce precisa ser premium account.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) end end Em actions.xml você poe isso: <action uniqueid="XXXX" event="script" value="alavanca.lua"/> E em XXXX, o uniqueid da alavanca. Vlw, abraço!
  13. Ainda deu a mesma coisa brother =S
  14. Aí cara, tenta fazer assim.. substitua seu potions.lua por esse: local config = { removeOnUse = "no", usableOnTarget = "yes", -- can be used on target? (fe. healing friend) splashable = "no", realAnimation = "no", -- make text effect visible only for players in range 1x1 healthMultiplier = 1.0, manaMultiplier = 1.0 } config.removeOnUse = getBooleanFromString(config.removeOnUse) config.usableOnTarget = getBooleanFromString(config.usableOnTarget) config.splashable = getBooleanFromString(config.splashable) config.realAnimation = getBooleanFromString(config.realAnimation) local POTIONS = { [8704] = {empty = 7636, splash = 2, health = {50, 100}}, -- small health potion [7618] = {empty = 7636, splash = 2, health = {100, 200}}, -- health potion [7588] = {empty = 7634, splash = 2, health = {200, 400}, level = 50, vocations = {3, 4, 7, 8}, vocStr = "knights and paladins"}, -- strong health potion [7591] = {empty = 7635, splash = 2, health = {500, 700}, level = 80, vocations = {4, 8}, vocStr = "knights"}, -- great health potion [8473] = {empty = 7635, splash = 2, health = {800, 1000}, level = 130, vocations = {4, 8}, vocStr = "knights"}, -- ultimate health potion [7620] = {empty = 7636, splash = 7, mana = {70, 130}}, -- mana potion [7589] = {empty = 7634, splash = 7, mana = {110, 190}, level = 50, vocations = {1, 2, 3, 5, 6, 7}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion [7590] = {empty = 7635, splash = 7, mana = {200, 300}, level = 80, vocations = {1, 2, 5, 6}, vocStr = "sorcerers and druids"}, -- great mana potion [8472] = {empty = 7635, splash = 3, health = {200, 400}, mana = {110, 190}, level = 80, vocations = {3, 7}, vocStr = "paladins"} -- great spirit potion } local exhaust = createConditionObject(CONDITION_EXHAUST) setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100)) function onUse(cid, item, fromPosition, itemEx, toPosition) local potion = POTIONS[item.itemid] if(not potion) then return false end if(not isPlayer(itemEx.uid) or (not config.usableOnTarget and cid ~= itemEx.uid)) then if(not config.splashable) then return false end if(toPosition.x == CONTAINER_POSITION) then toPosition = getThingPos(item.uid) end doDecayItem(doCreateItem(2016, potion.splash, toPosition)) return TRUE end if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) then doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED) return TRUE end if(((potion.level and getPlayerLevel(cid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(cid)))) and not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) then doCreatureSay(itemEx.uid, "Only " .. potion.vocStr .. (potion.level and (" of level " .. potion.level) or "") .. " or above may drink this fluid.", TALKTYPE_ORANGE_1) return TRUE end local health = potion.health if(health and not doCreatureAddHealth(itemEx.uid, math.ceil(math.random(health[1], health[2]) * config.healthMultiplier))) then return false end local mana = potion.mana if(mana and not doPlayerAddMana(itemEx.uid, math.ceil(math.random(mana[1], mana[2]) * config.manaMultiplier))) then return false end doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE) if(not realAnimation) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1) else for i, tid in ipairs(getSpectators(getCreaturePosition(cid), 1, 1)) do if(isPlayer(tid)) then doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1, false, tid) end end end end Vlw aí!
  15. Aí galera, será que alguém poderia me dizer por que tá dando esse erro quando tento executar o comando /woe /!/SETUP para adicionar o woe na database? A msg que aparece ingame é not valid param e no distro é essa: [04/06/2012 08:45:37] [Error - TalkAction Interface] [04/06/2012 08:45:37] data/talkactions/scripts/woe.lua:onSay [04/06/2012 08:45:37] Description: [04/06/2012 08:45:37] ./_woe.lua:14: attempt to call field 'query' (a nil value) [04/06/2012 08:45:37] stack traceback: [04/06/2012 08:45:37] ./_woe.lua:14: in function 'setup' [04/06/2012 08:45:37] data/talkactions/scripts/woe.lua:8: in function <data/talkactions/scripts/woe.lua:5> Aí vão os arquivos _woe e o woe (talkactions): _woe.lua woe.lua (talkactions) Se alguém puder ajudar...desde já agradeço e rep+ Será que alguém sabe o problema?
  16. Vlw mesmo velho! Funcionando certinho! Quando liberar o Rep te reputo ^^
  17. Não funciona também, será que alguém aí não sabe o erro ou tem um que possa teleportar caso o player tenha o item mas não o remova?
  18. Mas eu quero que o npc não verifique se ele tem o item, mas não remova. Aí vai remover não é?
  19. Não funcionou, eu retirei essa linha e mesmo assim não funcionou doPlayerRemoveItem(cid,itemid,1) Eu quero que o Npc só teleport se ele tiver o item 2345 mas que não remova o item =S
  20. Certo, aquilo era o erro do distro... mas se eu não quiser que remova o item como faz?
  21. Aí galera, eu tenho o script desse Npc que teleporta se tiver X item, mas não deve remover o item. local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local pos = {x=921,y=714,z=7} -------------- Pos para onde o player sera levado local itemid = 2345 ----------------- Id do item que vai ser removido do player function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if (not npcHandler:isFocused(cid)) then return false end if msgcontains(msg, "quest") or msgcontains(msg, "help") then selfSay("Eu posso te levar a um lugar por um "..getItemNameById(itemid).." fale {travel} se quiser viajar.", cid) talkState[cid] = 0 elseif msgcontains(msg, 'travel') then selfSay("Boa viagem.", cid) doTeleportThing(cid, pos) else selfSay("Voce nao tem o item necessario.", cid) end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Mas ta aparecendo o seguinte erro, alguém sabe como resolver ou teria um funcionando? [03/06/2012 18:45:52] [Warning - NpcScript::NpcScript] Cannot load script: data/npc/scripts/telequest.lua [03/06/2012 18:45:52] data/npc/scripts/telequest.lua:31: '<eof>' expected near 'end'
  22. É, percebi também que o script não funcionava pq eu tinha mandado num tópico um script parecido com esse e o Vodkart falou de uns erros que também tem nesse. Só falei porque eu não tinha avisado que minha dúvida já tinha sido resolvida. ^^
  23. Boa muleque! Testei aqui e tá funcionando certinho cara! Quando liberar meus reps aqui eu reputo ^^
  • Quem Está Navegando   0 membros estão online

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