Ir para conteúdo

Oneshot

Marquês
  • Total de itens

    1347
  • Registro em

  • Última visita

  • Dias Ganhos

    36

Tudo que Oneshot postou

  1. Sim, a função mudou, mas tal getItemAttribute(uid, key) retornará valor nil se usada de modo incorreto. Boa sorte, criador do tópico.
  2. Via edição das sources, Em outras palavras, você teria que "re-compilar" o distro.
  3. Depois que o distro TheForgottenServer foi atualizado para 0.3.6, as funções getItemAttack e demais, se tornaram obsoletas, e por isso você não conseguirá usar esse sistema de refinamento em um servidor 8.54.
  4. Olá, MatheusMkalo. Crie um arquivo LUA na sua pasta spells/scripts, com o nome de crystal overdrive. Cole este conteúdo nele. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SHIVERARROW) function onGetFormulaValues(cid) level = getPlayerLevel(cid) distSkill = getPlayerSkillLevel(cid, 4) local skillTotal, levelTotal = distSkill, level / 5 return -(skillTotal * 0 + levelTotal * 0 + 3000), -(skillTotal * 0 + levelTotal * 0 + 3000) end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") 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 Logo após, abra seu arquivo spells.xml e adicione essa linha. <instant name="Crystal Overdrive" words="edevo mas frigo" lvl="100" maglv="20" mana="100" prem="0" needtarget="1" exhaustion="1000" needlearn="0" event="script" value="crystal overdrive.lua"> <vocation id="3"/> <vocation id="7"/> </instant> Lembrando que você pode configurar como quiser a linha do spells.xml. A sua Crystal Arrow+Elvish Bow funciona por causa do script que postei anteriormente?
  5. Oneshot

    [Resolvido]

    <skill id="0" multiplier="6.6"/> <skill id="1" multiplier="6.6"/> <skill id="2" multiplier="6.6"/> <skill id="3" multiplier="6.6"/> <skill id="4" multiplier="6.6"/> <skill id="5" multiplier="6.6"/> <skill id="6" multiplier="6.6"/> Essa parte do script explica tudo. Diminua o valor para um número entre 0 e 2. Alguém que dê um ataque em um monstro com esses valores multiplicativos, vai ficar com skill 500 e tantos. E vai causar um travamento no servidor mesmo. E essa parte aqui: manamultiplier="16.0" O script entende que com esse valor, o jogador com a tal classe vai demorar muito, muito tempo mesmo para ganhar um magic level.
  6. Função A doPlayerSetPromotionLevel(cid, level) Função B doPlayerSetVocation(cid, vocation) O comum erro de voltar a vocação é por causa que scripters dos servidores 8.5x usam a função B ao invés da função A. Ou seja ao invés de dar toda essa volta com um CreatureScript, por que não usar a função A em um NPC de Promotion?
  7. Autor: Oneshot Versão do Servidor*: 8.54 Comentário: Aqui está um script bem simples, ele faz com que ao se matar um jogador qualquer, o playerKiller em questão ganhe 200 GPs. Creio que este script pode ser melhor aproveitado em OTservs de War. 1 - Crie um arquivo LUA na sua pasta creaturescripts/scripts de nome recompensa, adicione este conteúdo ao arquivo: config = { reward = 200 --define o quanto o jogador ganhará } function onDeath(cid, corpse, lastHitKiller, mostDamageKiller) if(isPlayer(lastHitKiller) == TRUE) then doPlayerAddMoney(lastHitKiller, config.reward) doPlayerSendTextMessage(lastHitKiller, MESSAGE_STATUS_CONSOLE_ORANGE, "Voc\ê matou " .. getCreatureName(cid) .. " e recebeu " .. config.reward .. " GPs.") end return TRUE end 2 - Adicione essa linha ao seu creaturescripts.xml: <event type="death" name="Recompensa" script="recompensa.lua"/> 3 - E essa linha ao seu login.lua, localizado no creaturescripts/scripts. registerCreatureEvent(cid, "Recompensa") * Creio que funcionará em servidores baseados no TheForgottenServer 0.3.6pl1
  8. 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_TELEPORT = 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_GREEN = 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_TUTORIALARROW = 55 CONST_ME_TUTORIALSQUARE = 56 CONST_ME_MIRRORHORIZONTAL = 57 CONST_ME_MIRRORVERTICAL = 58 CONST_ME_SKULLHORIZONTAL = 59 CONST_ME_SKULLVERTICAL = 60 CONST_ME_ASSASSIN = 61 CONST_ME_STEPSHORIZONTAL = 62 CONST_ME_BLOODYSTEPS = 63 CONST_ME_STEPSVERTICAL = 64 CONST_ME_YALAHARIGHOST = 65 CONST_ME_BATS = 66 CONST_ME_SMOKE = 67 Mas os efeitos de monstros são 55. redspark bluebubble poff yellowspark explosionarea explosion firearea yellowbubble greenbubble blackspark teleport energy blueshimmer redshimmer greenshimmer fire greenspark mortarea greennote rednote poison yellownote purplenote bluenote whitenote bubbles dice giftwraps yellowfirework redfirework bluefirework stun sleep watercreature groundshaker hearts fireattack energyarea smallclouds holydamage bigclouds icearea icetornado iceattack stones smallplants carniphila purpleenergy yellowenergy holyarea bigplants cake giantice watersplash plantattack
  9. Oneshot

    Exori Antigo

    Substitua o conteúdo do seu arquivo berserk.lua da pasta spells/scripts/attack local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA) function onGetFormulaValues(cid, level, skill, attack, factor) local damageTotal, levelTotal = skill + attack, level / 5 return -(damageTotal * 1.5 + levelTotal), -(damageTotal * 2.5 + levelTotal) end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") local area = createCombatArea({ {1, 1, 1}, {1, 3, 1}, {1, 1, 1} }) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Substitua a tag do seu Berserk (exori) por esta, no spells.xml. . <instant name="Berserk" words="exori" lvl="35" manapercent="90" prem="1" needweapon="1" exhaustion="1000" needlearn="0" event="script" value="attack/berserk.lua"> <vocation id="4"/> <vocation id="8"/> </instant> Pronto, seu Exori está configurado do jeito oldTibia. Causa dano de 170 a 270, se usado por um Knight de lv. 100, com skill 50 equipado com um Stonecutter Axe. (suposição)
  10. - Crie um arquivo LUA com o nome de 'newhunt' na pasta npc/scripts do seu servidor. 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 local huntpos = {x=, y=, z=} if(msgcontains(msg, 'new hunt')) then if(getPlayerLevel(cid) > 199 and getPlayerLevel(cid) < 300) then if isInArray({5, 6, 7, 8}, getPlayerVocation(cid)) then doTeleportThing(cid, huntpos) else selfSay('Sorry, but this hunt is for promoted players.', cid) end else selfSay('Sorry, but this hunt is for players with level 200 from 299.', cid) end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) - Crie um arquivo XML na pasta data/npc do seu servidor. <?xml version="1.0" encoding="UTF-8"?> <npc name="Haran, the boatman" script="data/npc/scripts/newhunt.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="129" head="78" body="124" legs="123" feet="7" addons="3"/> <parameters> <parameter key="message_greet" value="Hello, |PLAYERNAME|. You want to go to a {new hunt}?"/> <parameter key="message_fareweel" value="Bye, |PLAYERNAME|"/> </parameters> </npc> - Você deverá editar uma coisa no script LUA: local huntpos = {x=, y=, z=} Coloque as coordenadas de onde o player deve ser teleportado, logo, se as coordenadas forem 1000, 1000, 7: local huntpos = {x=1000, y=1000, z=7} Como você não falou as vocações que devem ser colocadas, eu fiz para que hunt fosse para Master Sorcerer, Elder Druid, Royal Paladin e Elite Knight.
  11. Oneshot

    Talkaction Muito Importante

    function onSay(cid, words, param, channel) if(param == '') then doPlayerSendCancel(cid, "Voc\ê deve digitar um valor para o storage") end doCreatureSetStorage(cid, STORAGEID, param) return true end Registre isso no seu talkactions.xml <talkaction words="!changestorage" event="script" value="changestorage.lua"/> Fiz o script acima, pelo que eu entendi do pedido. Você quer que quando o GOD fale "!changestorage 1", o STORAGEID do GOD para que o GOD possa passar por tal sqm bloqueado, mas se você quiser que mude o valor do storageID de um player qualquer, o script acima é inútil.
  12. Olá, 7Belo. A primeira coisa que você deverá é ir em seu editor de mapa, colocar um baú no mapa e lhe dar um uniqueID, e então criar um arquivo LUA na pasta actions/scripts do seu servidor. Dentro deste arquivo LUA, você deverá colocar o seguinte conteúdo: function onUse(cid, item, frompos, item2, topos) if item.uid == uniqueID then if getCreatureStorage(cid, 9876) == -1 then doPlayerAddItem(cid, ID DO ITEM, QUANTIDADE) doPlayerSendTextMessage(cid, 22, "You have found NOME DO ITEM") doCreatureSetStorage(cid, 9876, 1) else doPlayerSendTextMessage(cid, 22, "It is empty.") end end return 1 end Logo depois no seu arquivo actions.xml: <action uniqueid="uniqueID" script="nome do arquivo.lua"/> Você deverá mudar no script: - A palavra uniqueID pelo número que você colocou no baú. - O número 9876 por qualquer número que você imagine. - ID DO ITEM pelo id do item que será encontrado no baú - QUANTIDADE, caso o item seja agrupável, como crystal coins, se não coloque 1. - NOME DO ITEM, pelo nome do item, obviamente. - nome do arquivo.lua pelo nome que você deu ao arquivo que você criou em actions/scripts
  13. Tomei a liberdade de responder o usuário novamente, - Em sua pasta data/npc, faça um arquivo XML de nome donations. Cole isto lá dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="The Donation Seller" script="data/npc/scripts/donations.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="129" head="78" body="124" legs="123" feet="7" addons="3"/> <parameters> <parameter key="message_greet" value="Oi |PLAYERNAME|. Eu vendo itens poderosos, fale {list} para saber que itens eu vendo."/> <parameter key="message_fareweel" value="Tchau, |PLAYERNAME|"/> </parameters> </npc> - Na sua pasta npc/scripts, faça um arquivo LUA de nome donations. Cole isto lá 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, 'list')) then selfSay('Eu vendo {warlord sword}, {cranial basher}, {titan axe}, {blessed wand} and {piercing bolt}. Cada uma delas custa 100 moedas.', cid) elseif(msgcontains(msg, 'warlord sword') then selfSay('Voc\ê quer comprar Warlord Sword por 100 moedas?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'cranial basher') then selfSay('Voc\ê quer comprar Cranial Basher por 100 moedas?', cid) talkState[talkUser] = 2 elseif(msgcontains(msg, 'titan axe') then selfSay('Voc\ê quer comprar Titan Axe por 100 moedas?', cid) talkState[talkUser] = 3 elseif(msgcontains(msg, 'blessed wand') then selfSay('Voc\ê quer comprar Blessed Wand por 100 moedas?', cid) talkState[talkUser] = 4 elseif(msgcontains(msg, 'piercing bolt') then selfSay('Voc\ê quer comprar Piercing Bolt por 100 moedas?', cid) talkState[talkUser] = 5 -- Confirmação da Compra elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if(doPlayerRemoveItem(cid, 6527, 100) == true) then selfSay('Obrigado por comprar!', cid) doPlayerAddItem(cid, 2408, 1) talkState[talkUser] = 0 else selfSay('Voc\ê n\ão tem 100 moedas', cid) talkState[talkUser] = 0 end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then if(doPlayerRemoveItem(cid, 6527, 100) == true) then selfSay('Obrigado por comprar!', cid) doPlayerAddItem(cid, 7415, 1) talkState[talkUser] = 0 else selfSay('Voc\ê n\ão tem 100 moedas', cid) talkState[talkUser] = 0 end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 3) then if(doPlayerRemoveItem(cid, 6527, 100) == true) then selfSay('Obrigado por comprar!', cid) doPlayerAddItem(cid, 7413, 1) talkState[talkUser] = 0 else selfSay('Voc\ê n\ão tem 100 moedas', cid) talkState[talkUser] = 0 end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 4) then if(doPlayerRemoveItem(cid, 6527, 100) == true) then selfSay('Obrigado por comprar!', cid) doPlayerAddItem(cid, 7429, 1) talkState[talkUser] = 0 else selfSay('Voc\ê n\ão tem 100 moedas', cid) talkState[talkUser] = 0 end elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 5) then if(doPlayerRemoveItem(cid, 6527, 100) == true) then selfSay('Obrigado por comprar!', cid) doPlayerAddItem(cid, 7363, 1) talkState[talkUser] = 0 else selfSay('Voc\ê n\ão tem 100 moedas', cid) talkState[talkUser] = 0 end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  14. Ah, claro! Estava me esquecendo do items.xml. Procure no seu arquivo items.xml pelo Blessed Sceptre, substitua tudo dele com isto: <item id="7429" article="a" name="blessed sceptre"> <attribute key="weight" value="3900"/> <attribute key="weaponType" value="wand"/> <attribute key="description" value="This wand is powerful!"/> <attribute key="weaponType" value="wand"/> <attribute key="range" value="5"/> </item> Para que Druids e Sorcerers usem a Wand, coloque esta tag no weapons.xml: <wand id="7429" level="LEVEL REQUERIDO" mana="MANA POR TIRO" event="script" value="blessed wand.lua"> <vocation id="1"/> <!-- Sorcerer --> <vocation id="5"/> <!-- Master Sorcerer --> <vocation id="2"/> <!-- Druid --> <vocation id="6"/> <!-- Elder Druid --> </wand>
  15. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA) function onGetFormulaValues(cid, level, maglevel) local magTotal, levelTotal = maglevel, level / 5 return -(magTotal * 1.24 + levelTotal), -(magTotal * 2.38 + levelTotal) end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") local area = createCombatArea(AREA_CROSS5X5) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Bom, com essa nova estrutura de script para as magias, você pode manipular os danos com maior exatidão. Você pode mudar os fatores multiplicados que seguem o magTotal para aumentar os danos: 1.24 e 2.38. Mas nunca deve colocar o primeiro fator maior que o segundo. No exemplo de magia acima, um template de level 100 e magic level 50, causaria um dano de 82 a 139 em uma criatura com defesa neutra a Fogo.
  16. Ah, isso é fácil. Todas as wands do meu servidor tem seu dano balanceado conforme o Magic Level do usuário. Como eu não sei qual o script da sua Sudden Death, peguei a minha própria que causava um dano razoável* e me baseei nela. Crie um arquivo LUA com o nome de blessed wand na pasta weapons/scripts do seu servidor, coloque este conteúdo lá dentro. local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH) function onGetFormulaValues(cid, level, maglevel) local magTotal, levelTotal = maglevel, level return 0, -(magTotal * 0.6 + levelTotal * 0.6 + 36) end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onUseWeapon(cid, var) return doCombat(cid, combat, var) end No seu arquivo weapons.xml, copie essa linha de configuração: <wand id="7429" level="LEVEL REQUERIDO" mana="MANA POR TIRO" event="script" value="blessed wand.lua"> <vocation id="1"/> <!-- Sorcerer --> <vocation id="5"/> <!-- Master Sorcerer --> </wand> Digamos que o jogador que use essa wand tenha level 50 e magic level 50, ele causará um dano de 0~96 por tiro. *Minha sudden death causa um dano de 0~160, usada por um jogador level 50 e magic level 50.
  17. O comando /attr nos devs 8.54 deve ser usado da seguinte maneira se você quiser editar itens: /attr set atributo "valor O atributo pode ser: attack, defense, armor e etc...
  18. 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?
  19. Qual a versão do Tibia? Sem informações, fica difícil de realizar teu pedido, rapaz.
  20. 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())
  21. 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.
  22. 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.
  23. 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())
  24. 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.
  25. 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.
  • Quem Está Navegando   0 membros estão online

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