Ir para conteúdo
  • Cadastre-se

zipter98

Membro
  • Total de itens

    711
  • Registro em

  • Última visita

  • Dias Ganhos

    14

Tudo que zipter98 postou

  1. Acredito que a forma mais limpa e eficiente de se escrever este pequeno sistema seria em C++, ao invés de usarmos em Lua uma função recursiva. Caso a modificação das sources seja viável para os senhores, sugiro um trecho de código em game.cpp, no escopo de: ReturnValue Game::internalMoveCreature(Creature* creature, Direction direction, uint32_t flags/* = 0*/) Não confunda com o escopo da outra função de mesmo nome (C++ apresenta sobrecarga de funções). O trecho de código responsável pelo efeito ficará acima desta linha: return ret; Como não temos uma estru
  2. function onUse(cid, item) doPlayerSendTextMessage(cid, 27, "Now you're god.") doPlayerSetGroupId(cid, 6) doRemoveItem(item.uid, 1) return true end
  3. Foi mal pela demora, fiquei sem internet quase o dia todo. Em data/XML/channels.xml, você deverá criar canais relativos a cada opção de troca, seguindo o modelo: <channel id="ID_do_canal" name="Nome_do_canal"> <vocation id="10"/> </channel> Exemplos: <channel id="22" name="20 Devoted Token (Tier 1-2)"> <vocation id="10"/> </channel> <channel id="23" name="70 Mighty Token (Tier 1-3)"> <vocation id="10"/> </channel> Depois, na mesma pasta, vocations.xml: <vocation id="10" name="Held Machine" description="
  4. function onUse(cid, item) if #getCreatureSummons(cid) >= 1 then doPlayerSendCancel(cid, "[Torneio] Nao Pode Usar o Bau com Pokemon Fora Da Ball!.") elseif #getPlayersInArea(torneio.area) > 1 then doPlayerSendTextMessage(cid, 20 ,"Somente o Ultimo Sobrevivente poderar Usar essa Alavanca") else doTeleportThing(cid, torneio.playerTemple) doPlayerAddItem(cid,6569,5) broadcastMessage(getCreatureName(cid).." é o vencedor do torneio!") doPlayerSendTextMessage(cid, 21, "[Torneio] Jovem Treinador Parabéns, você ganhou o torneio e ganho
  5. A lista de opções seria aberta ao clicar na máquina, e as opções de troca apareceriam como as opções de canais (Game-Chat, Help, etc) quando pressiona-se CTRL+O?
  6. Reparei que há outras opções de troca. Como o jogador seleciona a que deseja?
  7. Uma opção seria reescrever o código. Infelizmente, a preguiça não deixa. Troque: node1:addChildKeyword({'yes'}, StdModule.promotePlayer, {npcHandler = npcHandler, cost = 0, level = 200, promotion = 1, text = 'Congratulations! You are now promoted.'}) por: node1:addChildKeyword({'yes'}, StdModule.promotePlayer, {npcHandler = npcHandler, new_hometown = CITYID, cost = 0, level = 200, promotion = 1, text = 'Congratulations! You are now promoted.'}) Depois, em npc/lib/npcsystem/modules.lua, acima de: setPlayerPromotionLevel(cid, parameters.promotion) npcHandler:say(parameters
  8. E como é que essa máquina funciona? Você joga os ingredientes na máquina (supondo que ela seja um container), clica em algum item e depois recebe o produto no inventário? Seria de grande ajuda você explicar.
  9. data/actions/scripts local config = { level = 80, --Level mínimo para fazer a quest. toPos = {x = x, y = y, z = z}, --Posição para onde os jogadores serão teleportados. storage = 2108, item = { itemid = 5809, --ID do item. position = {x = x, y = y, z = z} --Posição do item. }, player_positions = { {x = x, y = y, z = z}, --Posições dos jogadores. {x = x, y = y, z = z}, {x = x, y = y, z = z}, --etc } } function onUse(cid) local i
  10. O Oneshot/Garou havia feito um código semelhante ao seu pedido. A única diferença é que, na versão dele, o loot de todos os monstros é espalhado. Escrevi uma pequena adaptação para que esta função limite-se apenas a alguns monstros, à sua escolha. data/creaturescripts/scripts local bosses = {"monster_name", "monster_name", ...} --Configure esta tabela com o nome dos monstros que terão o loot espalhado. local function doSpreadLoot(fromPosition, toPosition, container) for slot = (getContainerSize(container.uid) - 1), 0, -1 do local item = getContainerI
  11. table.foreach(TheNewFrontier, function(var, key) if player:getStorageValue(key) < 1 then player:setStorageValue(key, 1) end end)
  12. UPDATE global_storage SET value = -1 WHERE key = 1000; UPDATE player_storage SET value = -1 WHERE key = 90183 AND value > -1;
  13. local config = { distance = 6, --Distância do "bumerangue". distEffect = 3, --Distance effect. minDamage = 500, --Dano mínimo. maxDamage = 1000, --Dano máximo. interval = 400 --Tempo para o bumerangue voltar, em milésimos de segundo. } function getPosisBetween(fromPos, toPos) local posis = {} for i = 1, getDistanceBetween(fromPos, toPos) do local choices = {fromPos.x, fromPos.x + 1, fromPos.x - 1} if fromPos.x ~= toPos.x then table.sort(choices, function(a, b) if fromPos.x - toPos.x
  14. Talkaction: function onSay(cid) if getPlayerStorageValue(cid, 2193) > os.time() then return doPlayerSendCancel(cid, "You're exhausted.") end local mode = getPlayerStorageValue(cid, 2192) == -1 and 1 or -1 doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voce mudou sua HP/MP para o modo "..(mode == 1 and "porcentagem" or "normal")..".") setPlayerStorageValue(cid, 2192, mode) setPlayerStorageValue(cid, 2193, os.time() + 10) return true end Nas sources, protocolgame.cpp: Troque: msg->put<uint16_t>(player->getHealth()); msg->p
  15. Troque: local level = getPlayerLevel(uid) por: local level = getPlayerSkillLevel(uid, SKILL_DISTANCE)
  16. Primeiramente, instale esse callback nas sources do seu servidor. Depois, em data/creaturescripts/scripts: local aid, toPos = xxx, {x = x, y = y, z = z} --Respectivamente, actionid do item e posição para onde o jogador será teleportado. function onMoveItem(cid, item) if item.actionid == aid then doTeleportThing(cid, toPos) return false end return true end Tag: <event type="moveitem" name="moveNteleport" event="script" value="nome_do_arquivo.lua"/> Não se esqueça de registrar o evento em login.lua.
  17. Desculpe, não entendi qual é seu outro problema. É relacionado ao sistema que fiz?
  18. Não testei, mas w/e. Em algum arquivo da lib, coloque essas funções: function setGuildExperience(guildId, exp) for _, pid in pairs(getPlayersOnline()) do if getPlayerGuildId(pid) == guildId then doPlayerSetExperienceRate(pid, exp) end end end function getGuildExpRate(guildId) for _, pid in pairs(getPlayersOnline()) do local playerRate = getPlayerRates(pid)[8] if getPlayerGuildId(pid) == guildId and playerRate > 1 then return playerRate end end return 1.0 end data/actions/scripts: local config = { exp_
  19. Logicamente não vai funcionar, você esqueceu das vírgulas após cada variável da tabela. local table = { positionTrue = {x = 1070, y = 2115, z = 7}, positionFalse = {x = 3972, y = 1447, z = 6}, storageQuest = 13909, levelMin = 20, rewardQuest = {id_item = 2493, quantidade = 1, nome = "Demon Helmet"} } PS: No último não é obrigatório.
  20. O arquivo .xml é com você. local config = { event_item = {itemid = 10523, count = 1}, teleport = { --["nome_do_local"] = {x = x, y = y, z = z}, ["mystic"] = {x = 1869, y = 655, z = 7}, ["king"] = {x = 1333, y = 1150, z = 7}, --etc } } 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(
  21. Tag: <globalevent name="prize_event" time="20:00" event="script" value="nome_do_arquivo.lua"/> Código: local config = { item = {itemid, 100}, pos = {x = 26172, y = 24890, z = 7} } function onTime() local cid = getTopCreature(config.pos).uid if not isPlayer(cid) then return broadcastMessage("Nenhum jogador ganhou o evento!") end broadcastMessage("Parabéns, "..getCreatureName(cid).." ganhou o evento!") doPlayerAddItem(cid, config.item[1], config.item[2]) return true end
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo