
Tudo que Wise postou
-
Ajuda com Otserver
Porquê a compilação não deu certo? Qual(is) o(s) erro(s)? Se você estiver utilizando o Dev-C++, verifique se fez as atualizações disponíveis para ele, há uma possibilidade desse ser o problema (se não houver bugs na source).
-
(Resolvido)FLECHA DE GELO
Use uma munição que contenha esse efeito de shoot type (CONST_ANI_SHIVERARROW). Se você no caso não tiver o item com esse efeito, basta adicionar então em items.xml, como os membros disseram. Exemplo do uso no infernal bolt: <item id="6529" article="an" name="infernal bolt" plural="infernal bolts"> <attribute key="weight" value="90" /> <attribute key="slotType" value="ammo" /> <attribute key="attack" value="43" /> <attribute key="maxHitChance" value="90" /> <attribute key="weaponType" value="ammunition" /> <attribute key="ammoType" value="bolt" /> <attribute key="shootType" value="shivearrow" /> <attribute key="ammoAction" value="removecount" /> </item>
-
Iniciando meu estágio no TibiaKing
Valeu, amigo. @macenamt2 As linguagens usadas no Open Tibia são basicamente Lua, C, C++, Sql, XML. Aqui no fórum, há áreas em que você pode aprender sobre scripting e programação Open Tibia com vários tutoriais. Dê uma olhada nelas (e qualquer dúvida que tiver, crie um tópico na área referente ao suporte em questão): Tutoriais de Scripting Tutoriais de Programação
-
Iniciando meu estágio no TibiaKing
Obrigado, @DeathRocks.
-
(Pedido) Não poder deslogar estando em: Surf, Ride e Fly!
Não foi minha intenção prejudicar ninguém com a imagem, amigo. Clique em Ignorar assinaturas de Suicide, em um X logo abaixo, do lado direito.
-
Iniciando meu estágio no TibiaKing
Olá, caros tibianos. Como vão? Bom, hoje eu inicio o meu estágio no TibiaKing e antes de falar um pouco sobre mim, quero deixar bem claro que enquanto eu pertencer a essa comunidade, me esforçarei ao máximo para contribuir com o conteúdo do fórum. Fazendo parte da equipe ou não, sempre vou ajudar com o que eu puder. Primeiramente, o meu nome é Renan e eu tenho 17 anos. Estudo algumas linguagens de programação e conto com um grande apoio do meu caro amigo xWhiteWolf, sempre que preciso. Eu pretendo me tornar um programador; e com todo o conhecimento que eu obter nessa minha jornada, tenho como intuito, trazer mais e mais informações que contribuam para nossa grande comunidade tibiana que é o TibiaKing. Se precisar de ajuda, crie um tópico na área referente ao que se trata; e se eu puder, com toda certeza vou te ajudar. Obrigado, é um prazer ter a oportunidade de propor desenvolvimento ao fórum.
-
(Resolvido)[Ajuda Urgente] Itens que fazer as skills
Um detalhe ou outro ficou um tanto quanto confuso, então me avise se eu não entendi muito bem o que você quis dizer. Se por exemplo, todos os rings habilitassem determinada spell, então você poderia fazer uma checagem do slot antes do callback da mesma: if getPlayerSlotItem(cid, CONST_SLOT_RING).uid < 1 then doPlayerSendCancel(cid, "You can't cast the spell without using a ring.") return false end Se forem spells pra itens distintos, você pode fazer o uso de storages. Criando movements com callback de onEquip e onDeEquip que atribuam ao player um valor dessas storages (quando ele equipar/remover o item). Depois é só fazer a checagem do valor da storage no callback da spell. Exemplo: movement script: local stor = 12345 -- storage function onEquip(cid, item, slot) setPlayerStorageValue(cid, stor, 1) return true end function onDeEquip(cid, item, slot) setPlayerStorageValue(cid, stor, -1) return true end Checagem na spell light healing (exura): local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 1.5, 2) function onCastSpell(cid, var) local stor = 12345 -- storage if getPlayerStorageValue(cid, stor) < 1 then doPlayerSendCancel(cid, "You can't cast the spell without using the item that allows it.") return false end return doCombat(cid, combat, var) end
- Alguem mi ajuda quero descompila um cliente
-
(Pedido) Não poder deslogar estando em: Surf, Ride e Fly!
Disponha.. Sim, mas acredito que não vai solucionar. Pelo que observei no script, estando em fly/ride/surf, o summon (pokemon) é removido. Então continuaria deslogando. De qualquer forma, seria: function onLogout(cid) if #getCreatureSummons(cid) > 0 then doPlayerSendCancel(cid, 'You cannot logout with your pokemon outside the pokeball.') return false end return true end
-
Virar zombie ao morrer
Adicione os creature events, é o que determinará um player como sendo um "zombie". Já a outra parte, você decide como vai querer que o player retorne a forma "humana". Daí fica a seu critério se será por uma action (item/alavanca) ou por um movement (portal/tile); basta adicionar o script referente a sua escolha.
-
Virar zombie ao morrer
Com base nos códigos do membro, a alavanca ficaria: zombielever.lua function onUse(cid, item, frompos, item2, topos) local stor = {12128, 12129} -- {storage zombie, storage humana} if getPlayerStorageValue(cid, stor[1]) > 0 or getPlayerStorageValue(cid, stor[2]) > 0 then setPlayerStorageValue(cid, stor[1], -1) setPlayerStorageValue(cid, stor[2], -1) doRemoveCondition(cid, CONDITION_OUTFIT) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doSendMagicEffect(fromPos, CONST_ME_TELEPORT) else doPlayerSendCancel(cid, "Você não está morto para usar esta alavanca.") end return true end Tag: <action actionid="ACTIONID" script="zombielever.lua"/> E o portal (sem coordenadas pré determinadas nele, apenas contendo o actionID da tag): zombieportal.lua (data/movements/scripts): function onStepIn(cid, item, pos, fromPos) local stor = {12128, 12129} -- {storage zombie, storage humana} if isPlayer(cid) and getPlayerStorageValue(cid, stor[1]) > 0 or getPlayerStorageValue(cid, stor[2]) > 0 then setPlayerStorageValue(cid, stor[1], -1) setPlayerStorageValue(cid, stor[2], -1) doRemoveCondition(cid, CONDITION_OUTFIT) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doSendMagicEffect(fromPos, CONST_ME_TELEPORT) else doTeleportThing(cid, fromPos, true) doSendMagicEffect(fromPos, CONST_ME_POFF) doPlayerSendCancel(cid, "Você não está morto para entrar no portal.") end return true end Tag: <movevent type="StepIn" actionid="ACTIONID" event="script" value="zombieportal.lua"/>
-
(Resolvido)[PEDIDO] Talkaction
donateaccess.lua (data/talkactions/scripts): function onSay(cid, words, param, channel) local stor = 12345 -- storage local p = string.explode(param, ",") local pid, ts, tn = getPlayerByNameWildcard(p[1]), tostring(p[1]), tonumber(p[2]) if (param == '') then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Enter the name of the player and the number of days you want to give access to it. Thus: /donate Player, 30') end if (not ts or not tn or p[3]) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Invalid parameter specified.') end if (tn < 1) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'You need to assign to the player at least one day of access.') end if (not pid) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Player '..ts..' not found.') end setPlayerStorageValue(pid, stor, os.time() + (tn * 86400)) doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Were assigned '..tn..' day(s) of donate access to your account.') doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'You have assigned '..tn..' day(s) of donate access to the player '..ts) return true end Tag - talkactions.xml (data/talkactions): <talkaction log="yes" words="/donate" access="5" event="script" value="donateaccess.lua"/>
-
Virar zombie ao morrer
Embora não saibamos qual distro você usa e que versão é a dele, deve funcionar sim. Caso acuse alguma função como nula, poste uma screenshot aqui. A adição dos scripts é simples (códigos do Adriano SwaTT): zombieplayer.lua (data/creaturescripts/scripts): local morto = {lookType = 48} -- lookType local cemitery = {x=177, y=168, z=7} -- Coordenada do Cemitério local stor = {12128, 12129} -- {Storage Salva que é Fantasma, Storage de Controle} local condition_outfit = createConditionObject(CONDITION_OUTFIT) setConditionParam(condition_outfit, CONDITION_PARAM_OUTFIT, true) setConditionParam(condition_outfit, CONDITION_PARAM_TICKS, -1) addOutfitCondition(condition_outfit, morto) function onPrepareDeath(cid) if isPlayer(cid) then setPlayerStorageValue(cid, stor[1], 1) setPlayerStorageValue(cid, stor[2], -1) end return true end function onLogin(cid) if getPlayerStorageValue(cid, stor[2]) < 1 then if getPlayerStorageValue(cid, stor[1]) > 0 then setPlayerStorageValue(cid, stor[2], 1) doAddCondition(cid, condition_outfit) doTeleportThing(cid, cemitery) doPlayerSendTextMessage(cid, 4, "Agora és um fantasma.") end else doPlayerSendTextMessage(cid, 4, "Ainda és um fantasma.") doAddCondition(cid, condition_outfit) end return true end Registro do creature event (preparedeath) em login.lua (data/creaturescripts/scripts): registerCreatureEvent(cid, "TurnZombie") Tags - creaturescripts.xml (data/creaturescripts): <event type="preparedeath" name="TurnZombie" event="script" value="zombieplayer.lua"/> <event type="login" name="ZombieLogin" event="script" value="zombieplayer.lua"/> revive.lua (data/actions/scripts): function onUse(cid, item, frompos, item2, topos) local stor = {12128, 12129} -- {Storage Salva que é Fantasma, Storage de Controle} if getPlayerStorageValue(cid, stor[1]) > 0 or getPlayerStorageValue(cid, stor[2]) > 0 then setPlayerStorageValue(cid, stor[1], -1) setPlayerStorageValue(cid, stor[2], -1) doRemoveItem(item.uid, 1) doRemoveCondition(cid, CONDITION_OUTFIT) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) else doPlayerSendCancel(cid, "Você não está morto para usar este item.") end return true end Tag - actions.xml (data/actions): <action itemid="ITEMID" script="revive.lua"/>
-
(Pedido) Não poder deslogar estando em: Surf, Ride e Fly!
As storages estão de acordo com o seu sistema, a checagem delas corretas. Estranho. Que tal fazer com que os players só possam fazer logout se estiverem com a pokeball fora do slot da mesma? (Imagino que eles não possam retirar a pokeball enquanto estão em surf/ride/fly) Assim resolveria esse problema.. Pelo que vi em alguns servidores de pokemon tibia, o slot da pokeball é o que seria o slot da boots. Então: pokelogout.lua function onLogout(cid) if getPlayerSlotItem(cid, CONST_SLOT_FEET).uid ~= 0 then doPlayerSendCancel(cid, 'You need to remove your pokeball from the slot to logout.') return false end return true end Não se esqueça da tag: <event type="logout" name="PokeLogout" event="script" value="pokelogout.lua"/>
-
(Pedido) Não poder deslogar estando em: Surf, Ride e Fly!
@narazaky Amigo, eu não preciso que me explique o que eu já sei. Se você colocou pra retornar true antes do fim do callback, então de que adiantou fazer a checagem? Não vou ficar dando aulinha. Se está tão certo dessa sua "lógica", pega e testa você mesmo. Quem sabe tirando a prova, não aprende melhor com seus erros.
-
(Pedido) Não poder deslogar estando em: Surf, Ride e Fly!
Se eu estou incluso nesses "outros", preste bem atenção. Não é porquê eu não te respondi mais que eu desisti de te ajudar ou que eu não sei como te ajudar, tenho compromissos e não sou obrigado a ficar atrás de você. Se quer que alguém faça algo pra você, então ao menos tenha mais respeito. O script do membro estava correto.
-
(Pedido) Não poder deslogar estando em: Surf, Ride e Fly!
Embora esteja correto, você não alterou absolutamente nada do script anterior lol
-
(Pedido) Não poder deslogar estando em: Surf, Ride e Fly!
Retornar true ao callback depois da checagem e retornar false no fim da função, não faz sentido. Isso faria com que o player que possui algumas das storages conseguisse fazer logout e os que não possuem, não. Você inverteu o correto.
-
(Pedido) Não poder deslogar estando em: Surf, Ride e Fly!
Agora que você postou os códigos do surf, a tabela está completa: Sendo as storages do fly, ride e surf, respectivamente. Tudo certo.
-
Virar zombie ao morrer
Como ele voltaria ao "normal" com esse item? Simplesmente usando-o ou uma talkaction, um npc..?
-
(Pedido) Não poder deslogar estando em: Surf, Ride e Fly!
Pelo que observei, não tem o "surf" incluso nesse script, deve estar separado. Então procure-o e poste aqui se possível. Já enquanto ao fly/ride, a tabela ficaria: function onLogout(cid) local sto = {17000, 17001} for x = 1, #sto do if getPlayerStorageValue(cid, sto[x]) < 1 then return true end end doPlayerSendCancel(cid, 'You cannot logout when you are in special situations such as surf/ride/fly.') return false end
-
(Resolvido)[PRECISO] 2 scripts (item at x Level/bless ate o level X)
No caso do seu login.lua, os creature events registrados pelo comando for antes de retornar e encerrar o callback são os que estão na tabela events. Então sempre que adicionar um novo creature event ao creaturescripts.xml e o mesmo precisar ser registrado, apenas adicione ele à mesma tabela. local events = { 'pythiusDead', 'bossesGrayIsland', 'ElementalSpheres', 'ElementalSpheresKill', 'ElementalSpheresLogin', 'WarzoneThree', 'WarzoneTwo', 'bossesWarzone', 'SvargrondArenaKill', 'PharaoKillPortal', 'inServiceOfYalaharQuestsDiseased', 'inServiceOfYalaharQuestsMorik', 'inServiceOfYalaharQuestsQuara', 'inquisitionQuestBosses', 'inquisitionQuestUngreez', 'killingInTheNameOfQuestKills', 'TaskCustom', 'Yielothax', 'Energized', 'Raging', 'MastersVoiceServants', 'wrathBoss', 'wrathZalamon', 'PlayerDeath', 'ThievesGuildNomad', 'AdvanceSave', 'SpikeDrillworm', 'SecretServiceBlackKnight', 'PremiumRate', 'LootProtection', 'blesslvl20' } function onLogin(cid) local player = Player(cid) local loginStr = 'Welcome to ' .. configManager.getString(configKeys.SERVER_NAME) .. '!' if player:getLastLoginSaved() <= 0 then loginStr = loginStr .. ' Please choose your outfit.' player:sendTutorial(1) else if loginStr ~= '' then player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr) end loginStr = string.format('Your last visit was on %s.', os.date('%a %b %d %X %Y', player:getLastLoginSaved())) end player:sendTextMessage(MESSAGE_STATUS_DEFAULT, loginStr) for i = 1, #events do player:registerEvent(events[i]) end return true end
-
[Duvida] Como vou saber a storage da minha VIP System
Se ela opera por premium days, então não tem storage alguma, não é um "vip system". Você pode usar as próprias funções de premium contidas na source pra desenvolver esses creature events de look que você citou.
-
(Pedido) Não poder deslogar estando em: Surf, Ride e Fly!
Facilitaria se você postasse os códigos contidos nos arquivos desses sistemas.
-
[URGENTE] Erro neste NPC.
<npc name="Prof" script="data/npc/scripts/professor.lua" walkinterval="0"> <health now="1000" max="1000"/> <look type="520" head="94" body="45" legs="45" feet="90" addons="0"/> <parameters> <parameter key="message_greet" value="Ola! Onde voce quer começar sua jornada: {kanto}, {johto}, {hoenn}, {sinnoh}, {unova} ou {kalos}?" /> </parameters> </npc>