-
Total de itens
2553 -
Registro em
-
Última visita
-
Dias Ganhos
72
Tudo que zipter98 postou
-
Depois que o jogador fala offers, o NPC "finaliza" o diálogo com o jogador. Aí, você tem que falar buy/trade novamente.
-
poketibia Spell Que Faz Monstro Trocar Cor Da Outfit Aleatoriamente.
pergunta respondeu ao Developer Berg de zipter98 em Scripts
Tem sim. Você prefere configurar as cores possíveis, bem como combinações, ou sortir valores aleatórios que correspondem as colorações possíveis do Tibia? -
Use a seguinte tabela. É comum quem não está familiarizado com Lua ter problemas em configurar tabelas, não se preocupe. local config = { [8300] = {amount = 1, requires = {{2177, 10}, {2160, 1}}}, [6529] = {amount = 1, requires = {{5944, 1}}}, } Feliz Natal pra você também :^)
-
poketibia Spell Que Faz Monstro Trocar Cor Da Outfit Aleatoriamente.
pergunta respondeu ao Developer Berg de zipter98 em Scripts
Levando em consideração o fato do código não apresentar erros que o impedissem de ser executado, além da configuração estar correta, o que nos resta é um problema no próprio servidor. Entretanto, sem as sources, infelizmente não temos descobrir. Como esta base do KPDO veio com muitos bugs, se eu estiver correto não será nenhuma surpresa. -
Duas travessões seguidas fazem o servidor interpretar o que vem a seguir como um comentário, que, no caso, não é interpretado como uma parte efetiva do código. Tire-os, juntamente com as reticências (como lhe informei anteriormente), e seja feliz.
-
poketibia Spell Que Faz Monstro Trocar Cor Da Outfit Aleatoriamente.
pergunta respondeu ao Developer Berg de zipter98 em Scripts
OK, troque por este código e veja se alguma coisa é imprimida no console: local Kecleon_config = { [FIREDAMAGE] = {lookBody = 113, lookHead = 110, lookLegs = 115, lookFeet = 113}, [WATERDAMAGE] = {lookBody = 107, lookHead = 106, lookLegs = 107, lookFeet = 105}, --etc } print(0) function onStatsChange(cid, attacker, type, combat, value) print(1) if getCreatureName(cid) == "Kecleon" then print(2) local color = Kecleon_config[combat] if color then print(3) color.lookType = getCreatureOutfit(cid).lookType doSetCreatureOutfit(cid, color, -1) end end return true end -
Sim, é dessa maneira que você pensou. Entretanto, para evitar erros você deve retirar as reticências (coloquei apenas como um indicativo que você pode configurar quantos itens quiser). De todo modo, cometi uma pequena confusão no nome de uma variável. Corrigido.
-
poketibia Spell Que Faz Monstro Trocar Cor Da Outfit Aleatoriamente.
pergunta respondeu ao Developer Berg de zipter98 em Scripts
Sim, tem que registrar em login.lua. E, por precaução, também registre no arquivo .xml do Kecleon (data/monsters). -
poketibia Spell Que Faz Monstro Trocar Cor Da Outfit Aleatoriamente.
pergunta respondeu ao Developer Berg de zipter98 em Scripts
Hm, esse evento foi registrado? De qualquer maneira, podemos fazer um script separado com o intuito de apenas mudar a coloração do Kecleon. O registro é normal, logo suponho que você saiba fazer. local Kecleon_config = { [FIREDAMAGE] = {lookBody = 113, lookHead = 110, lookLegs = 115, lookFeet = 113}, [WATERDAMAGE] = {lookBody = 107, lookHead = 106, lookLegs = 107, lookFeet = 105}, --etc } function onStatsChange(cid, attacker, type, combat, value) if getCreatureName(cid) == "Kecleon" then local color = Kecleon_config[combat] if color then color.lookType = getCreatureOutfit(cid).lookType doSetCreatureOutfit(cid, color, -1) end end return true end -
poketibia Spell Que Faz Monstro Trocar Cor Da Outfit Aleatoriamente.
pergunta respondeu ao Developer Berg de zipter98 em Scripts
Você usou uma spell do elemento psíquico no Kecleon? Como é o único combate configurado na tabela, é o único que funcionará. Para todo caso, troque: if nickshiny == "Kecleon" then local color = Kecleon_config[combatee] if color then color.lookType = getCreatureOutfit(cid).lookType doSetCreatureOutfit(cid, color, -1) end end por: if nickshiny == "Kecleon" then print(1) local color = Kecleon_config[combatee] if color then print(2) color.lookType = getCreatureOutfit(cid).lookType doSetCreatureOutfit(cid, color, -1) end end E informe o que for imprimido no console. -
poketibia Spell Que Faz Monstro Trocar Cor Da Outfit Aleatoriamente.
pergunta respondeu ao Developer Berg de zipter98 em Scripts
Não vai mudar para nada aleatoriamente. Usando valores numéricos, você configura as cores de cada parte do corpo do Kecleon na tabela. Você pode colocar quantas indexes quiser nesta tabela, entretanto só vão funcionar aquelas que tiverem combates existentes no servidor. Ex.: local Kecleon_config = { [FIREDAMAGE] = {lookBody = 113, lookHead = 110, lookLegs = 115, lookFeet = 113}, [WATERDAMAGE] = {lookBody = 107, lookHead = 106, lookLegs = 107, lookFeet = 105}, --etc } -
poketibia Spell Que Faz Monstro Trocar Cor Da Outfit Aleatoriamente.
pergunta respondeu ao Developer Berg de zipter98 em Scripts
Acima de: function onStatsChange(cid, attacker, enps, combatee, value) coloque: local Kecleon_config = { --[combat] = {lookBody = xxx, lookHead = xxx, lookLegs = xxx, lookFeet = xxx}, } combat - tipo de combate correspondente ao elemento. Exemplos: GRASSDAMAGE, FIREDAMAGE, WATERDAMAGE, ICEDAMAGE, etc. lookBody, lookHead, lookLegs e lookFeet - responsáveis pela coloração da outfit. Como os nomes sugerem, lookBody é a coloração do corpo, lookHead da cabeça, etc. -
poketibia Spell Que Faz Monstro Trocar Cor Da Outfit Aleatoriamente.
pergunta respondeu ao Developer Berg de zipter98 em Scripts
No que você mandou, ué. -
poketibia Spell Que Faz Monstro Trocar Cor Da Outfit Aleatoriamente.
pergunta respondeu ao Developer Berg de zipter98 em Scripts
Sem acesso ao sistema de vantagem e desvantagem é simplesmente impossível aplicar esta resistência de elementos do Kecleon. Entretanto, a troca da cor da outfit é bem simples e consiste num pequeno bloco de código. Tabela de configuração: local Kecleon_config = { --[combat] = {lookBody = xxx, lookHead = xxx, lookLegs = xxx, lookFeet = xxx}, } Recomendo colocá-la fora do callback. Depois, abaixo de: if not x then return false end coloque: if nickshiny == "Kecleon" then local color = Kecleon_config[combatee] if color then color.lookType = getCreatureOutfit(cid).lookType doSetCreatureOutfit(cid, color, -1) end end -
Configuração da tabela: [ID_do_item_vendido] = {amount = quantidade, requires = {{ID_do_item_trocado, quantidade}, {ID_do_item_trocado, quantidade}, etc}}, Código: local config = { --[itemid] = {amount = x, requires = {{itemid, amount}, {itemid, amount}, ...}}, } local options = "" for sell, info in pairs(config) do local itens_required = "" for i = 1, #info.requires do if itens_required == "" then itens_required = info.requires[i][2].."x "..getItemNameById(info.requires[i][1]) else itens_required = itens_required..(i == #info.requires and " and " or ", ")..info.requires[i][2].."x "..getItemNameById(info.requires[i][1]) end end options = options.."\n"..info.amount.."x "..getItemNameById(sell).." - "..itens_required end 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, "trade") or msgcontains(msg, "buy") then selfSay("Hello. To see my offers, say {offers}; to buy something, tell me the item's name.", cid) talkState[talkUser] = 1 elseif msgcontains(msg, "offers") and talkState[talkUser] == 1 then doPlayerPopupFYI(cid, options) talkState[talkUser] = 0 elseif talkState[talkUser] == 1 then local item = config[getItemIdByName(msg)] if not item then selfSay("Sorry, I don't recognize this item. Try another one.") return true end for i = 1, #item.requires do if getPlayerItemCount(cid, item.requires[i][1]) < item.requires[i][2] then selfSay("Sorry, you don't have "..item.requires[i][2].."x "..getItemNameById(item.requires[i][1])..".", cid) talkState[talkUser] = 0 return true end end selfSay("OK, here yours "..item.amount.."x "..getItemNameById(getItemIdByName(msg)).."!", cid) for i = 1, #item.requires do doPlayerRemoveItem(cid, item.requires[i][1], item.requires[i][2]) end doPlayerAddItem(cid, getItemIdByName(msg), item.amount) talkState[talkUser] = 0 end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
-
poketibia Spell Que Faz Monstro Trocar Cor Da Outfit Aleatoriamente.
pergunta respondeu ao Developer Berg de zipter98 em Scripts
É, parece que o cálculo do dano baseado em vantagem e desvantagem é escrito nas sources. Neste arquivo seria possível alterar a cor do Kecleon, mas a resistência ao elemento não seria viável, visto que o elemento primário dele é levado em consideração na fórmula em C++. A não ser que as funções getCombatByType e doMoveHealth façam mais do que o nome sugere. Sem o código delas, entretanto, não tenho como tirar conclusões. -
poketibia Spell Que Faz Monstro Trocar Cor Da Outfit Aleatoriamente.
pergunta respondeu ao Developer Berg de zipter98 em Scripts
O sistema de vantagem/desvantagem é escrito em Lua ou C++? Se for a primeira opção, então é possível fazer isso com alterações apenas em uma arquivo (localizado em data/creaturescripts/scripts com callback onStatsChange). Caso encontre-o, por gentileza, poste-o aqui para podermos te ajudar. Entretanto, se for escrito nas sources, lamento. -
poketibia Spell Que Faz Monstro Trocar Cor Da Outfit Aleatoriamente.
pergunta respondeu ao Developer Berg de zipter98 em Scripts
Você quer fazer igual na PxG? Porque, pelo menos no caso deles, o que altera a cor do Kecleon não é a spell propriamente dita, e sim o elemento dela. Ou me enganei e você quer apenas uma magia específica para isso? -
pedido Não poder atacar player com x lvl de diferença
pergunta respondeu ao narutomaniacos de zipter98 em Scripts
data/creaturescripts/scripts local level_difference = x --Diferença de level. function onTarget(cid, target) if isPlayer(cid) and isPlayer(target) then local level = math.abs(getPlayerLevel(cid) - getPlayerLevel(target)) return level < level_difference end return true end function onStatsChange(cid, attacker, type, combat, value) if isPlayer(cid) and isPlayer(attacker) and type == STATSCHANGE_HEALTHLOSS then local level = math.abs(getPlayerLevel(cid) - getPlayerLevel(attacker)) return level < level_difference end return true end Tags: <event type="statschange" name="lv_diff_SC" event="script" value="nome_do_arquivo.lua"/> <event type="target" name="lv_diff_target" event="script" value="nome_do_arquivo.lua"/> Não se esqueça de registrar ambos os eventos em login.lua. -
Suponho que saiba fazer a tag. data/talkactions/scripts: local config = { itemid = 6103, --Item necessário para trocar de vocação. level = 50000, --Level necessário. reset_amount = 10, --Quantidade mínima de resets necessária. reset_func = getPlayerReset, --Função responsável por retornar quantos resets o jogador possui. vocations = { --["vocation_name"] = id, ["knight"] = 1, ["paladin"] = 2, --etc } } function onSay(cid, words, param) local vocation = config.vocations[param:lower()] if config.reset_func(cid) < config.reset_amount then doPlayerSendCancel(cid, "You need "..config.reset_amount.." resets.") return true elseif getPlayerLevel(cid) < config.level then doPlayerSendCancel(cid, "You need at least level "..config.level..".") return true elseif not vocation then doPlayerSendCancel(cid, "This vocation doesn't exist or isn't available by this command.") return true elseif vocation == getPlayerVocation(cid) then doPlayerSendCancel(cid, "You already belong to this vocation.") return true elseif not doPlayerRemoveItem(cid, config.itemid, 1) then doPlayerSendCancel(cid, "You need 1x "..getItemNameById(config.itemid)..".") return true end doPlayerSendTextMessage(cid, 27, "Congratulations, now you're a "..param.."!") doPlayerSetVocation(cid, vocation) return true end
-
Você configura o uniqueid na tag. local config = { itemid = xxx, --ID da MW. remove_time = 60, --Tempo em segundos para as MW serem removidas. positions = { {x = x, y = y, z = z}, --Posições onde as MW serão criadas. {x = x, y = y, z = z}, {x = x, y = y, z = z}, --etc } } function onStepIn(cid) if not isPlayer(cid) then return true end for i = 1, #config.positions do local item = getTileItemById(config.positions[i], config.itemid).uid if item == 0 then doCreateItem(config.itemid, 1, config.positions[i]) addEvent(function() doRemoveItem(getTileItemById(config.positions[i], config.itemid).uid) end, config.remove_time * 1000) end end return true end
-
No código da spell, abaixo de: function onCastSpell(cid, var) coloque: if getPlayerReset(cid) < 1 then doPlayerSendCancel(cid, "You can't cast this spell.") return true end
-
pedido [movements] urgente script teleporta player e não monster
pergunta respondeu ao Dennyz Dias de zipter98 em Scripts
local toPos = {x = x, y = y, z = z} --Posição para onde será teleportado. function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end doTeleportThing(cid, toPos) return true end -
http://www.lua.org/
-
Abaixo de: function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) coloque: if not isPlayer(cid) then return true end if not HaveCharaterAcess(cid) then doPlayerSendCancel(cid, "Você não é vip, portanto o manapool não irá healar sua mana.") doTeleportThing(cid, fromPosition) return true end
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.