Ir para conteúdo

Lyu

Membro
  • Registro em

  • Última visita

Tudo que Lyu postou

  1. vc esqueceu de renomear o arquivo lua para transformwall.lua, verifica ai
  2. está faltando bibliotecas. Qual tfs está tentando compilar?
  3. Lyu postou uma resposta no tópico em Códigos C++
    Introdução : Muta um jogador no canal HELP por meio de um comando. game.cpp Procure por Game::playerSay, abaixo de player->setIdleTime(0) adicione : if (channelId == CHANNEL_HELP) { std::string helpmute = "0"; player->getStorage("455010", helpmute); time_t now = time(NULL); time_t seconds = atoi(helpmute.c_str()) - now; if (seconds > 0) { std::stringstream sec; sec << "You are muted for " << seconds << " seconds on this channel."; player->sendTextMessage(MSG_STATUS_SMALL, sec.str()); return false; } } data/talkactions/scripts/helpmute.lua : function onSay(cid, words, param) if param == '' then return doPlayerSendCancel(cid, 'Informe o nome do jogador e o tempo em segundos.') end local default = 600 local tmp = string.explode(param, ',') if not isCreature(getCreatureByName(tmp[1])) then return doPlayerSendCancel(cid, 'Jogador inexistente ou off-line.') end setPlayerStorageValue(getCreatureByName(tmp[1]), 455010, os.time() + (tonumber(tmp[2]) or default)) doPlayerSendCancel(cid, 'O jogador ' .. tmp[1] .. ' foi mutado.') return true end data/talkactions/talkactions.xml : <talkaction log="yes" group="4" access="3" words="/helpmute" event="script" value="helpmute.lua"/> Como utilizar? Para impedir um jogador de falar no Channel Help, utilize o comando /helpmute Playername, segundos. Para resetar os segundos, utilize o mesmo comando só que em segundos, coloque 0. Comando disponível apenas para a acessos superiores, configuração disponível no XML talkactions.xml. Versão do TFS: 0.4 Créditos: Lyu
  4. haha boa observação! Valeu brother, abraços!
  5. Bom, se o intuito principal for apenas criar essa animação a partir da troca de outfits A e B, acho que esse caminho é suficiente xD Escolhi esse caminho por ser mais seguro, onde o personagem poderá deslogar e logar tranquilamente que já logará com a animação. Só remove a animação se remover o anel mesmo.
  6. o tempo é padrão do próprio evento onThink. Esse evento é executado a cada 1 segundo, no caso, o script.
  7. Tem como sim, mas isso é feito na source e requer uma baita modificada.
  8. Lyu postou uma resposta no tópico em Suporte Tibia OTServer
    verifique a vocação dos players. Na sua tabela de configuração só vejo suporte a vocações de 0 a 4, lembrando que existem vocações como Royal Paladin, Elite Knight etc, que vão de 5 a 8.
  9. Acho que não. Experimente mover a a lib do Upgrade para data/actions/lib, já que a única interface usada é Action Interface. O seu problema é um retorno nulo na linha 60, o que é estranhíssimo. Talvez esteja tendo problemas ao carregar as libs.
  10. Fiz aqui rapidinho, utilizei onThink por ser um método mais seguro e permitir reLogin sem interferir na troca de outfits. data/creaturescripts/scripts/outfitring.lua local config = { ring = 2205, outfits = { {lookType = 128, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookAddons = 3}, {lookType = 129, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookAddons = 3} } } function onThink(cid, interval) if getPlayerSlotItem(cid, CONST_SLOT_RING).itemid == config.ring then doSetCreatureOutfit(cid, config.outfits[os.time() % 2 == 0 and 1 or 2]) end return true end data/creaturescripts/creaturescripts.xml <event type="think" name="OutfitRing" event="script" value="outfitring.lua"/> adicionar no final de data/creaturescripts/scripts/login.lua registerCreatureEvent(cid, "OutfitRing") a configuração é na tabela config, onde você pode configurar o id do ring e as duas outfits. Abraços.
  11. Lyu postou uma resposta no tópico em Suporte Tibia OTServer
    A forma mais simplificada de fazer isso, é retornando falso no evento onChangeOutfit e dando a outfit relacionada à vocação ao criar o personagem. Assim é meio que um bloqueio para evitar que mudem a outfit de seus personagens. o evento onChangeOutift você encontra no arquivo data/events/scripts/creature.lua.
  12. Fiz aqui rapidinho, testei e aparentemente está OK. Teste e me informe caso houver erros: transformwall.lua local walls = {1058, 9119, 10180, 1039} function onUse(cid, item, _, itemEx) local tmp = {} for _, v in ipairs(walls) do tmp[v] = #walls == _ and '_last' or walls[_ + 1] end local wall = tmp[itemEx.itemid] if not wall then return false end if wall == '_last' then doRemoveItem(itemEx.uid, 1) else doTransformItem(itemEx.uid, tmp[itemEx.itemid]) end return true end actions.xml <action itemid="id_do_item" event="script" value="transformwall.lua"/> O script é em data/actions, beleza? Fiz para TFS 0.4, qualquer coisa se seu TFS for de versão superior, me avise que eu converto. Configure a tabela listando o id das paredes a serem transformadas, na ordem: local walls = {1058, 9119, 10180, 1039} a ID com cor vermelha é a que será removida ao invés de ser transformada. Abraços.
  13. É um bug no código. Altere a encoding para ANSI que aparecerá uma caractere especial na linha 732 do arquivo 050-function.lua; delete essa caractere.
  14. é um bug no código. Altera a encoding do arquivo para ANSI que irá aparecer na linha 1 uma caractere especial. Delete-a.
  15. tenta ai: local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 39) setAttackFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -2.2, -150, -2.5, 1) local combat2 = createCombatObject() setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat2, COMBAT_PARAM_EFFECT, 39) setAttackFormula(combat2, COMBAT_FORMULA_LEVELMAGIC, -2.2, -150, -2.5, 1) local combat3 = createCombatObject() setCombatParam(combat3, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat3, COMBAT_PARAM_EFFECT, 39) setAttackFormula(combat3, COMBAT_FORMULA_LEVELMAGIC, -2.2, -150, -2.5, 1) local combat4 = createCombatObject() setCombatParam(combat4, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat4, COMBAT_PARAM_EFFECT, 39) setAttackFormula(combat4, COMBAT_FORMULA_LEVELMAGIC, -2.2, -150, -2.5, 1) local combat5 = createCombatObject() setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat5, COMBAT_PARAM_EFFECT, 39) setAttackFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -2.2, -150, -2.5, 1) local area1 = createCombatArea(AREA_CIRCLE2X2) local area2 = createCombatArea(AREA_CIRCLE2X2) local area3 = createCombatArea(AREA_CIRCLE2X2) local area4 = createCombatArea(AREA_CIRCLE2X2) local area5 = createCombatArea(AREA_CIRCLE2X2) setCombatArea(combat1, area1) setCombatArea(combat2, area2) setCombatArea(combat3, area3) setCombatArea(combat4, area4) setCombatArea(combat5, area5) local function onCastSpell1(parameters) doCombat(parameters.cid, parameters.combat1, parameters.var) end local function onCastSpell2(parameters) doCombat(parameters.cid, parameters.combat2, parameters.var) end local function onCastSpell3(parameters) doCombat(parameters.cid, parameters.combat3, parameters.var) end local function onCastSpell4(parameters) doCombat(parameters.cid, parameters.combat4, parameters.var) end local function onCastSpell5(parameters) doCombat(parameters.cid, parameters.combat5, parameters.var) end function onCastSpell(cid, var) if exhaustion.get(cid,61260) == false then local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4, combat5 = combat5} addEvent(onCastSpell1, 0, parameters) addEvent(onCastSpell2, 500, parameters) addEvent(onCastSpell2, 1000, parameters) addEvent(onCastSpell2, 1500, parameters) addEvent(onCastSpell2, 2000, parameters) exhaustion.set(cid,61260,10) else doPlayerSendCancel(cid, "Cooldown[" ..exhaustion.get(cid, 61260).."]") end return false end
  16. haha pois é, eu particulamente não usaria, mas notei que tem gente que gosta, então.. rs
  17. precisa, mas não é bixo de 7 cabeças rsrs
  18. Fala clã, tudo bom? Então, vi esse tal emote spells em um servidor e decidi fazer, e também, compartilhá-lo com vocês ? O que é? É um código simpleszinho que possibilita players escolherem a cor da mensagem das spells por meio de comando, LARANJA ou AMARELO, como nas imagens abaixo: Vamos aos códigos.. abra game.cpp, na função playerSaySpell, procure por: if (result == TALKACTION_BREAK) { if (!g_config.getBoolean(ConfigManager::EMOTE_SPELLS)) { return internalCreatureSay(player, TALKTYPE_SAY, words, false); } else { return internalCreatureSay(player, TALKTYPE_MONSTER_SAY, words, false); } } else if (result == TALKACTION_FAILED) { return true; } e substitua por: if (result == TALKACTION_BREAK) { int32_t value; player->getStorageValue(203500, value); return internalCreatureSay(player, value == 1 ? TALKTYPE_MONSTER_SAY : TALKTYPE_SAY, words, false); } else if (result == TALKACTION_FAILED) { return true; } Beleza, agora precisamos de uma talkaction para fazer a alteração de storage, vamos lá.. data/talkactions/scripts/emotespells.lua: function onSay(player) local switch = player:getStorageValue(203500) == -1 and 1 or -1 player:sendTextMessage(MESSAGE_INFO_DESCR, 'emote spells: (' .. (switch == 1 and 'monster_say' or 'say') .. ')') player:setStorageValue(203500, switch) end data/talkactions/talkactions.xml: <talkaction words="!emotespells" script="emotespells.lua"/> Agora só compilar as sources e pronto? Versão do TFS: 1.3 Créditos: Lyu (isme)
  19. function onUse (cid,item,frompos,item2,topos) pos = {x=67, y=515, z=7} pos2 = getPlayerPosition(cid) UID_DO_BAU = 33334 STORAGE_VALUE = 33334 ID_DO_PREMIO = 2505 ID_DO_PREMIO2 = 2506 ID_DO_PREMIO3 = 2522 ID_DO_PREMIO4 = 8923 ID_DO_PREMIO5 = 7886 ID_DO_PREMIO6 = 2157 if getPlayerLevel(cid) >= 1000 then if item.uid == 33334 then queststatus = getPlayerStorageValue(cid,STORAGE_VALUE) if queststatus == -1 then doTeleportThing(cid,pos) doPlayerSendTextMessage(cid,22,"Parabens,Você completou a Magnata Quest.") doPlayerAddItem(cid,2505,1) doPlayerAddItem(cid,2506,1) doPlayerAddItem(cid,2522,1) doPlayerAddItem(cid,8923,1) doPlayerAddItem(cid,7886,1) doPlayerAddItem(cid,2157,10) setPlayerStorageValue(cid,STORAGE_VALUE,1) doTeleportThing(cid, pos) doSendMagicEffect(getThingPos(cid), 29) else doPlayerSendTextMessage(cid,22,"Vazio.") end end else doPlayerSendCancel(cid,'Somente players level 1000+ podem abrir este bau.') end return 1 end
  20. Lyu postou uma resposta no tópico em Suporte Tibia OTServer
    tá dizendo que na sua tabela guilds, não existe coluna chamada checkdata, tem que criar uma coluna com esse nome.
  21. Very nice my friend, thank you for shared it ?
  22. Lyu postou uma resposta no tópico em Suporte Tibia OTServer
    local config = { destination = {x = 1000, y = 1000, z = 7}, item = {2352, 1} } function onStepIn(cid, itemid, position, fromPosition) return doTeleportThing(cid, getPlayerItemCount(cid, config.item[1]) < config.item[2] and fromPosition or config.destination) end <movevent type="StepIn" actionid="38560" event="script" value="teleport.lua"/> No remere's, configure a actionid no teleport; o destino você configura pelo script mesmo.
  23. Meu amigo estava com esse problema, se forçasse saia algumas mensagens. Muito estranho essa parada, aqui no meu eu posso meter um bot de spam que não passa de jeito nenhum. Qual servidor vc usa? versão do tfs?
  24. Não! pode digitá-lo de qualquer channel

Informação Importante

Confirmação de Termo