Ir para conteúdo

Oneshot

Marquês
  • Total de itens

    1347
  • Registro em

  • Última visita

  • Dias Ganhos

    36

Tudo que Oneshot postou

  1. Consigo fazer o primeiro, mas creio eu, que o segundo é impossível. Por o acaso dá para sincronizar um site, como o Twitter, com o sistema LUA de um OpenTibia?
  2. Qual a versão do Tibia? Sem informações, fica difícil de realizar teu pedido, rapaz.
  3. 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 if msgcontains(msg, 'inquisitor') then selfSay('The churches of the gods entrusted me with the enormous and responsible task to lead the inquisition. I leave the field work to inquisitors who I recruit from fitting people that cross my way. If you wanna {join} in the inquisition, ask me why!' ,cid) talkState[talkUser] = 1 elseif talkState[talkUser] == 1 then if msgcontains(msg, 'join') then selfSay('Do you want to join the inquisition?', cid) talkState[talkUser] = 2 end elseif msgcontains(msg, 'mission') then if getPlayerStorageValue(cid,20000) == 1 then selfSay('Your mission is simple,You must enter in the retreat and destruct the Shadow Nexus. Then report to me about your mission.', cid) setPlayerStorageValue(cid,20000,2) setPlayerStorageValue(cid,15202,1) elseif getPlayerStorageValue(cid,20000) == 2 then selfSay('Are you so crazy? You don\'t have finished this mission.', cid) elseif getPlayerStorageValue(cid,20000) == 3 then selfSay('Did you destructed the shadow nexus?', cid) talkState[talkUser] = 3 elseif getPlayerStorageValue(cid,20000) == 4 then selfSay('Sorry, no missions yet!', cid) end elseif msgcontains(msg, 'yes') then if talkState[talkUser] == 2 then selfSay('So be it. Now you are a member of the inquisition. You might ask me for a {mission} to raise in my esteem.', cid) setPlayerStorageValue(cid,20000,1) elseif msgcontains(msg, 'yes') and talkState[talkUser] = 3 then selfSay('Congratulations! Now you can get your reward in the room to the north, in addition you can use the Demonhunter Outfit.', cid) doPlayerAddExp(cid,1500000) doPlayerAddOutfitId(cid,20,0) setPlayerStorageValue(cid,20000,4) setPlayerStorageValue(cid,15203,1) elseif talkState[talkUser] == 5 then selfSay('Ok, Good Looky. Then report to me about your mission.', cid) setPlayerStorageValue(cid,15201,4) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  4. 1 function onSay(cid, words, param, channel) 2 if getPlayerItemCount(cid, 2127) >= 1 then 3 doSummonMonster(cid, Demon) 4 doRemoveItem(2127, 1) 5 else 6 doPlayerSendCancel(cid, 'You don\'t have the required item to use this talkaction') 7 end 8 end Preste atenção na linha 2 do script acima, ele que verifica se o jogador tem ou não o item de id 2127, Emerald Bangle. A linha 4 é a responsável por remover o item do jogador, se você quiser, pode removê-la e é só ter o item para usar a talkaction, sem que este seja removido. A linha 3 é o que o script irá fazer quando a talkaction for pronunciada, pode ser várias coisas, teleportar, remover item de algum lugar, matar alguém... A linha 6 é a responsável por mandar a mensagem de cancelar, se o jogador não tiver o item necessário.
  5. function onSay(cid, words, param, channel) if getPlayerItemCount(cid, id do item) >= 1 then doSummonMonster(cid, Demon) doRemoveItem(id do item, 1) else doPlayerSendCancel(cid, 'You don\'t have the required item to use this talkaction') end end Bom, se o jogador usar a talkaction e o comando verificar que ele tem 1 ou mais itens requiridos, irá sumonar um Demon. Se não, irá mandar a mensagem que o jogador não tem o item requirido para usar a talkaction.
  6. Oneshot

    [Npc] Addon

    local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) 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 buyAddons(cid, message, keywords, parameters, node) --TODO: buyAddons function in modules.lua if(not npcHandler:isFocused(cid)) then return false end local addon = parameters.addon local cost = parameters.cost local premium = (parameters.premium ~= nil and parameters.premium) if isPlayerPremiumCallback == nil or (isPlayerPremiumCallback(cid) and premium) then if doPlayerRemoveMoney(cid, cost) then doPlayerAddAddons(cid, addon) npcHandler:say('There, you are now able to use all addons!', cid) else npcHandler:say('Sorry, you do not have enough money.', cid) end else npcHandler:say('I only serve customers with premium accounts.', cid) end keywordHandler:moveUp(1) return true end local node1 = keywordHandler:addKeyword({'first addon'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want to buy the first addons set for 5000 gold coins?'}) node1:addChildKeyword({'yes'}, buyAddons, {addon = 1, cost = 50000, premium = true}) node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Too expensive, eh?'}) local node2 = keywordHandler:addKeyword({'second addon'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Would you like to buy the second addons set for 10000 gold coins?'}) node2:addChildKeyword({'yes'}, buyAddons, {addon = 2, cost = 200000, premium = true}) node2:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, moveup = 1, text = 'Too expensive, eh?'}) keywordHandler:addKeyword({'addon'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I sell the first addons set for 5000 gold coins and the second addons set for 10000 gold coins.'}) npcHandler:addModule(FocusModule:new())
  7. A geração de hoje em dia tem preguiça de ler e procurar as coisas. Se vocês abrissem seu config.lua, não só para mudar o IP veriam essa partezinha aqui. -- Item usage timeBetweenActions = 200 timeBetweenExActions = 1000 checkCorpseOwner = true hotkeyAimbotEnabled = true maximumDoorLevel = 500 As duas primeiras variáveis timeBetweenActions e timeBetweenExActions podem ser diminuídas para que o exhausted entre usar um item e usar uma magia seja mínimo. Porque queria ou não, uma escada é um item e quando você sobe ela, no Tibia, você está usando-a.
  8. Não é possível, o ACC Manager é compilado nas sources do executável, logo não é um script LUA. Se você tiver conhecimento em C++, acho que você consegue fazer o quer com o ACC Manager.
  9. A dúvida do rapaz quanto a isso foi sanada via Messenger. Creio que já não há necessidade desde tópico continuar aberto, Reportado. Att. Bruno
  10. 1 - Sim, tem. Você deverá colocar o nome da nova classe, ou, substituir o novo nome pelo nome velho, assim dizendo. Mas eu aconselho que quando você registar suas magias no spells.xml, use a seguinte estrutura, em vez de: <vocation name="nome da vocação"/> Use: <vocation id="id da vocação"/> Porque assim, quando você mudar o nome da vocação no vocations.xml, não será preciso substituir um monte de nomes no spells.xml. 2 - Também há uma maneira de empurrar players com magias. Creio eu que é usando a função getThingPosition através dos parâmetros x, y e z. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 42) function onGetFormulaValues(cid, level, maglevel, factor) local magicDamage = maglevel + level return -(magicDamage * 0.5), -(magicDamage * 0.7) end function onCastSpell(cid, var) newpos = {x=(getThingPosition(getCreatureTarget(cid)).x)+2, y=(getThingPosition(getCreatureTarget(cid)).y), z=(getThingPosition(getCreatureTarget(cid)).z)} doTeleportThing(getCreatureTarget(cid), newpos) return doCombat(cid, combat, var) end O script que eu fiz acima, é uma magia básica que faz aquele efeito de tornado de gelo e empurra a criatura 2 sqms na horizontal.
  11. @amoeba13 Tudo que você falou não ajuda em nada, porque simplesmente o comando /attr é uma função e não um script em LUA. @jpmo15 O comando /attr nos OTservs 8.54 continua normal quando você quer editar monstros. Mas para editar itens, você deverá escrever assim: /attr set key "value As chaves ou keys são os tipos de atributos dos itens, como: attack, defense, extraattack, extradefense. E o value é o valor do atributo: 100, 200 e etcétera.
  12. O problema está em seus items.xml. Para Wild Growth, procure por isto no arquivo: <item id="1499" article="a" name="rush wood"> <attribute key="type" value="magicfield"/> Substitua por isto: <item id="1499" article="a" name="rush wood"> <attribute key="type" value="magicfield"/> <attibute key="decayTo" value="0"/> <attribute key="duration" value="45"/> Para Magic Wall, procure por isto: <item id="1497" article="a" name="magic wall"> <attribute key="type" value="magicfield"/> </item> E substitua por isto: <item id="1497" article="a" name="magic wall"> <attribute key="type" value="magicfield"/> <attribute key="decayTo" value="0"/> <attribute key="duration" value="45"/> </item>
  13. Poste o conteúdo do seu vocations.xml para que eu possa ajudá-lo.
  14. Analisando o script não percebi nenhum erro, Mas acho que erro está no próprio actions.xml. Você assimilou uma UID para o báu que dá esses itens? Pelo Map Editor? Se não, abra seu map editor e vá até o baú e coloque a UID que está no script que eu vou te passar. function onUse(cid, item, frompos, item2, topos) queststatus = getPlayerStorageValue(cid, 4998) if item.uid == 8507 then if queststatus = -1 then doPlayerSendTextMessage(cid,22,"Bem Vindo ao CSTibia!") doPlayerAddItem(cid, 1988, 1) doAddContainerItem(container, 2493, 1) doAddContainerItem(container, 2470, 1) doAddContainerItem(container, 2472, 1) doAddContainerItem(container, 2195, 1) doAddContainerItem(container, 8930, 1) doAddContainerItem(container, 2498, 1) doAddContainerItem(container, 2656, 1) doAddContainerItem(container, 7730, 1) doAddContainerItem(container, 2514, 1) doAddContainerItem(container, 8910, 1) doAddContainerItem(container, 8922, 1) doAddContainerItem(container, 7368, 100) doAddContainerItem(container, 2268, 99) doAddContainerItem(container, 8473, 1) doAddContainerItem(container, 7590, 1) doAddContainerItem(container, 7589, 1) doAddContainerItem(container, 2273, 99) doAddContainerItem(container, 2173, 1) setPlayerStorageValue(cid, 4998, 1) else doPlayerSendTextMessage(cid,22,"Est\á vazio") end else return 0 end return 1 end Em vermelho, é a UID que você deverá colocar no baú No seus actions.xml, adicione isto: <action uniqueid="8507" script="coloque o nome do script aqui"/>
  15. Vejamos, Os scripts das poções de classes, como a Mastermind Potion, ficam localizados na pasta Actions. Para habilitar o uso dessas poções, você deverá editar as actions de cada poção. Usarei, como exemplo, a Mastermind Potion: local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, 300000) setConditionParam(condition, CONDITION_PARAM_STAT_MAGICPOINTS, 40) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, -30) function onUse(cid, item, frompos, item2, topos) if(isInArray({1,2,5,6,9,10}, getPlayerVocation(cid)) == TRUE) then var = numberToVariant(cid) doTargetCombatCondition(0, cid, condition, CONST_ME_MAGIC_RED) doRemoveItem(item.uid, 1) else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"This potion can only be consumed by sorcerers and druids.") return 1 end end Os números em vermelho são os IDS respectivos das classes que podem usar a Mastermind Potion. No caso: 1 = Sorcerer 2 = Druid 5 = Master Sorcerer 6 = Elder Druid 9 = Warlock - Evolução de Master Sorcerer 10 = Shaman - Evolução de Elder Druid
  16. Caro amigo, Esta não é a seção correta. Mas estarei atendendo seu pedido. Editarei este post com o script. @editado Não consegui fazer algo perfeito. Não testei para ver se funciona, mas parece estar bom. Dei mais foco para o level nesse script. Veja se está bom. O script segue abaixo local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA) setCombatParam(combat, COMBAT_PARAM_USECHARGES, TRUE) local area = createCombatArea(AREA_SQUARE1X1) setCombatArea(combat, area) function getSpellDamage(cid, level, weaponSkill) damage_min = (level+weaponSkill) damage_max = (level*3.8+weaponSkill*-0.5) if(damage_max < damage_min) then local tmp = damage_max damage_max = damage_min damage_min = tmp end return -damage_min, -damage_max end function onCastSpell(cid, var) return doCombat(cid, combat, var) end
  17. Caro colega, Para mim você só substituiu as palavras utevo res por summoner. Ou estou enganado? @Editado Hmm, desculpem-me não percebi que este é um tópico revivido.
  • Quem Está Navegando   0 membros estão online

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