Histórico de Curtidas
-
fezeRa recebeu reputação de Nysman em Arrumando AcentosPara concertar isso, abra o arquivo com o programa NOTEPAD++ vai em Formatar, e escolhe: Converter para UTF-8 (sem bom), todos os acentos serão corrigidos.
-
fezeRa deu reputação a Lyu em Channel Help Mute (TFS 0.4)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
-
fezeRa deu reputação a Vodkart em (Resolvido)Contagem de tempo por Storage#Resolvido via Discord TK!
Foi modificado action/lib e criado talkactions + função que retorna em tempo real o tempo, exemplo da alavanca + rank em tempo real em uso (para teste)
e depois final do evento (teste)
-
fezeRa deu reputação a WooX em (Resolvido)Usar potion e abrir corpos mortos/puxar ringProcure pela função bool Actions::useItemEx e onde estiver assim:
player->setNextActionTask(NULL); player->stopWalk(); player->setNextAction(OTSYS_TIME() + g_config.getNumber(ConfigManager::EX_ACTIONS_DELAY_INTERVAL) - SCHEDULER_MINTICKS); Altere para:
int32_t potions[] = {7620, 7589, 7590}; // IDs potions int16_t potionID = item->getID(); if(std::find(std::begin(potions), std::end(potions), potionID) == std::end(potions)) { player->setNextAction(OTSYS_TIME() + g_config.getNumber(ConfigManager::EX_ACTIONS_DELAY_INTERVAL)); } player->stopWalk();
Lembrando que isso vai retirar o exausted exActions de todas os items adicionados ali, terá que ser adicionado exausted no script lua das poções.
-
fezeRa deu reputação a Guizek69 em (Resolvido)Usar potion e abrir corpos mortos/puxar ring@WooX agradeço muito a ajuda!
Meus problemas foram solucionados.
Segue enredo para quem tem o mesmo problema para compilar:
Vá ate a pasta de sua source e abra o arquivo Makefile
Procure por:
Substitua por:
Isso resolve o problema da compilação.
Após isso, você terá que adicionar exaustao a cada potion que foi adicionada a função na source.
Vá até a pasta Actions de seu OT.
Abra o script de cada potion adicionada e procure por:
Logo abaixo, adicione:
Sendo:
23006 = storage para exaustar (fica a seu criterio, mas tem que ser o mesmo para todas as potions adicionadas)
0.95 = tempo de exaustao (sempre em segundos! No meu caso, 0.95 milesimos de segundo)
Boa sorte a todos,
-
fezeRa deu reputação a floW em [Pedido] Historico de Resets do Personagem.Boa noite,
Gostaria de saber se existe no fórum ou alguém estaria disposto a fazer aqui ao meu pedido e ficar pra galera do TK.
Na página characters, haver um historico de resets.
Como abaixo:
(no meu caso o reset é por storage 378378, e também uso uma coluna na tabela players para somar os resets para poder utilizar no highscores)
-
fezeRa deu reputação a floW em [Pedido] Historico de Resets do Personagem.@Coltera Obrigado irmão pela dicassa que você mandou.
Mas eu manjo quase nada de php haushdahu
-
fezeRa deu reputação a Coltera em [Pedido] Historico de Resets do Personagem.@floW
* Cria uma tabela no banco de dados com as colunas(Você pode colocar quantas colunas quiser, basta ter a ideia); Exemplo: id(auto increment) player_id(id do jogador) reset_level(level resetado) reset_date(data que foi resetado) * Em PHP você irá puxar a tabela que foi criada; Recomendo usar foreach. Exemplo: foreach($SQL->query("Monte sua query") as $info) { /* Código */ } * E dentro do script de reset coloque uma query inserindo as colunas pra quando o jogador resetar inserir as informações nas colunas; Estou sem tempo para criar este histórico; :\
-
fezeRa deu reputação a Reds em NPC Concede Bônus aos PlayersEstou trazendo 1 script por semana (geralmente na terça-feira) e caso você tenha alguma sugestão, poste aqui ou mande em mensagem privada a ideia, podendo ser o da próxima semana.
Olá pessoal, estou trazendo outro script para o TibiaKing, este NPC faz parte de uma série de NPC's que eu posicionei em meu servidor em locais estratégicos, concedendo bônus diferentes para os jogadores.
Em seus NPC's, crie um arquivo XML e coloque o seguinte:
<?xml version="1.0" encoding="UTF-8"?> <npc name="Luke" script="data/npc/scripts/speedbuff.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="152" head="95" body="95" legs="29" feet="56" addons="2" corpse="6080"/> <parameters> <parameter key="message_greet" value="Ola, voce gostaria de um bonus?" /> </parameters> </npc>
E dentro da pasta de scripts dos seus NPC's crie um arquivo LUA e coloque:
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 local config ={ effectTime = 10, -- tempo em minutos maxLevel = 125, -- level maximo para receber influencer = 2, -- multiplicador da velocidade aumentada timeStorage = 319203 -- storage para o tempo } local function downSpeed(cid, speed) doChangeSpeed(cid, -speed) 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, "bonus") then local level = getPlayerLevel(cid) if level < config.maxLevel then if os.time() > getPlayerStorageValue(cid, config.timeStorage) then setPlayerStorageValue(cid, config.timeStorage, config.effectTime * 60 + os.time()) local speed = config.maxLevel - level doChangeSpeed(cid, speed * config.influencer) addEvent(downSpeed, 60 * config.effectTime, cid, speed * config.influencer) selfSay('Voce recebeu um bonus de velocidade.', cid) else local minutesText local secondsText local seconds = math.floor((getPlayerStorageValue(cid, config.timeStorage) - os.time()) % 60) + 1 local minutes = math.floor((getPlayerStorageValue(cid, config.timeStorage) - os.time()) / 60) minutesText = minutes .." minutos e " secondsText = seconds .." segundos." if seconds == 60 then minutes = minutes + 1 end if minutes == 0 then minutesText = "" end if seconds == 0 or seconds == 60 then if minutes > 0 then minutesText = minutes .." minutos." end secondsText = "" end selfSay('Voce ja possui o bonus, ele expira em ' ..minutesText ..secondsText, cid) end else selfSay('O bonus de velocidade so e aplicado para jogadores de level menor de que '..config.maxLevel..".", cid) end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Explicando o código: com essas configurações o NPC irá:
- Conceder ao jogador 10 minutos de bônus de velocidade para jogadores level 125 ou menos.
- O jogador que receber o bônus terá velocidade igual a um jogador de level 125.
- Impedir o jogador de pegar o bônus diversas vezes.
- Todas as configurações podem ser alteradas na variável "config" no topo do código.
Qualquer dúvida deixe nos comentários e lembre de enviar a sua sugestão
-
fezeRa deu reputação a WooX em (Resolvido)Alteração DistroAdicionaram no repositório, faz as alterações.
https://github.com/mattyx14/otxserver/commit/3b9f089b1cdf260e4fe64f6f43380ef77169b400
-
fezeRa deu reputação a Lyu em Anti Divulgação em LUAOlá @You Know Nothing, vejo que você está afim de utilizar este meu script por mais antigo que seja. Bom, aqui está a correção para o seu problema :
local domains = {'org', 'no-ip', 'net', 'com', 'pl', 'biz', 'servegame', 'br', 'sytes', 'info'} local symbols = {'.', ',', ';', '-'} function onSay(cid, words) for _, w in ipairs(domains) do for _, s in ipairs(symbols) do if(words:lower():gsub(' ', ''):find(s .. w, 1, true)) then return doPlayerSendCancel(cid, 'Você não tem permissão para divulgar outros servidores.') end end end end
-
fezeRa deu reputação a WooX em Push com exhaust com outras actionsPrecisa ser realizada uma alteração na source, você possui a sources do servidor?
-
fezeRa deu reputação a Vodkart em (Resolvido)[Pedido] Checkagem de Monstrofunction getMonsterInArena(area) local t = {} for x = area[1].x - 1, area[2].x + 1 do for y = area[1].y - 1, area[2].y + 1 do local pos = {x=x, y=y, z=area[1].z} local m = getTopCreature(pos).uid if m ~= 0 and isMonster(m) then t[#t+1] = m end end end return t end local position = {{x = 541, y = 34, z = 7}, {x = 560, y = 55, z = 7}} -- começo e final da arena function onThink(interval) if #getMonsterInArena(position) > 0 then doSendAnimatedText(position[1], "Vivo", 50) -- pos onde o efeito vai aparecer end return true end
-
fezeRa deu reputação a Cat em [NPC] Elfo Ferreiro V1.0Testado em: TFS 1.0 (10.31)
Funciona em: TFS 1.0 e TFS 0.4
Descrição: Você leva uma determinada espada até o npc, fala com ele, ele vai pegar essa espada e ficar com ela por um certo tempo (3min), claro, você irá pagar uma quantia. Ao retornar, sua espada estará melhorada (no caso dos ids utilizados o npc irá trocar o item). Se houver algum bug, reporte que arrumaremos.
Créditos: Jamison, Daniel.
---------- • ----------
Diálogo:
22:21 Daniel [250]: hi
22:21 Blacksmith Elf: Hello Daniel! I'm a Blacksmith Elf, I can transform your item!
22:21 Daniel [250]: transform
22:21 Blacksmith Elf: From time to time fate smiles upon those who take great risks and have strong dreams! If you have money, we can try to transform your umbral swords, axes, clubs, bows, crossbows or spellbooks.
22:21 Daniel [250]: club
22:21 Blacksmith Elf: One handed or two handed?
22:21 Daniel [250]: one handed
22:21 Blacksmith Elf: Do you want to spend your money to transform your crude umbral mace, yes or no?
22:21 Daniel [250]: yes
22:21 Blacksmith Elf: Great! Alright, I need a while to finish this club for you. Come ask me later. 22:22 Daniel [250]: hi
22:22 Blacksmith Elf: Hello Daniel! I'm a Blacksmith Elf, I can transform your item!
22:22 Daniel [250]: transform
22:22 Blacksmith Elf: Have you left anything here to transform ?
22:22 Daniel [250]: yes
22:22 Blacksmith Elf: You must wait until : 22:24:49. 22:25 Daniel [250]: hi
22:25 Blacksmith Elf: Hello Daniel! I'm a Blacksmith Elf, I can transform your item!
22:25 Daniel [250]: transform
22:25 Blacksmith Elf: Have you left anything here to transform ?
22:25 Daniel [250]: yes
22:25 Blacksmith Elf: Here you have it.
---------- • ----------
Fotos
---------- • ----------
Script:
data/npc/Blacksmith Elf.lua
data/npc/scripts/blacksmith_elf.lua
-
-
fezeRa recebeu reputação de Vodkart em (Resolvido)Modificar Script de Encher VidaNão rolou
-
fezeRa recebeu reputação de KotZletY em (Resolvido)Modificar Script de Encher Vidaup
-
fezeRa deu reputação a Vodkart em Mudar elemento da Wande se não usar addEvent? já tentou?
@Toulouse
tenta assim:
w = { [12031] = {ef = 36, sh = 3, dmg = COMBAT_FIREDAMAGE}, [12032] = {ef = 42, sh = 28, dmg = COMBAT_ICEDAMAGE}, [12033] = {ef = 45, sh = 38, dmg = COMBAT_POISONDAMAGE}, [12034] = {ef = 17, sh = 31, dmg = COMBAT_DEATHDAMAGE}, [12035] = {ef = 11, sh = 35, dmg = COMBAT_ENERGYDAMAGE}, [12036] = {ef = 49, sh = 37, dmg = COMBAT_HOLYDAMAGE} } function onUseWeapon(cid, var) local min, max = 300, 300 -- dano minimo e maximo local target = getCreatureTarget(cid) for stor, info in pairs(w) do if getPlayerStorageValue(cid, stor) == 1 then if target ~= 0 then doSendDistanceShoot(getThingPos(cid), getThingPos(target), info.sh) doAreaCombatHealth(cid, info.dmg, getThingPos(target), 0, -min, -max, info.ef) return true end end end return true end
-
fezeRa recebeu reputação de Vodkart em Mudar elemento da WandA 3 opção resolveu
-
fezeRa deu reputação a Vodkart em (Resolvido)Double Potion que marca o Tempon testei
function onSay(cid, words, param) local str,c ="# INFO EXP Potions #\n\n",2 for i = 61002, 61005 do str = str.."[X"..c.."] -> "..(getPlayerStorageValue(cid, i) - os.time() <= 0 and "Não ativo" or "voce tem "..convertTime(getPlayerStorageValue(cid, i) - os.time()).." de exp potion").."\n" c = c + 1 end return doShowTextDialog(cid, 6579, str) end
-
fezeRa deu reputação a Vodkart em (Resolvido)Double Potion que marca o Tempojoga essa função na sua lib:
function convertTime(a) if(type(tonumber(a)) == "number" and a > 0) then if (a <= 3599) then local minute = math.floor(a/60) local second = a - (60 * minute) if(second == 0) then return ((minute)..((minute > 1) and " minutos" or " minuto")) else return ((minute ~= 0) and ((minute>1) and minute.." minutos e " or minute.." minuto e ").. ((second>1) and second.." segundos" or second.." segundo") or ((second>1) and second.." segundos" or second.. " segundo")) end else local hour = math.floor(a/3600) local minute = math.floor((a - (hour * 3600))/60) local second = (a - (3600 * hour) - (minute * 60)) if (minute == 0 and second > 0) then return (hour..((hour > 1) and " horas e " or " hora e "))..(second..((second > 1) and " segundos" or " segundo")) elseif (second == 0 and minute > 0) then return (hour..((hour > 1) and " horas e " or " hora e "))..(minute..((minute > 1) and " minutos" or " minuto")) elseif (second == 0 and minute == 0) then return (hour..((hour > 1) and " horas" or " hora")) end return (hour..((hour > 1) and " horas, " or " hora, "))..(minute..((minute > 1) and " minutos e " or " minuto e "))..(second..((second > 1) and " segundos" or " segundo")) end end end
e a talk vc usa assim:
function onSay(cid, words, param, channel) local potion_storage = 61002 return doPlayerSendTextMessage(cid, 25, getPlayerStorageValue(cid, potion_storage) - os.time() <= 0 and "voce nao tem exp potion no momento." or "voce tem "..convertTime(getPlayerStorageValue(cid, potion_storage) - os.time()).." de exp potion") end
-
fezeRa deu reputação a WooX em Como diminuir exhaust da SDPode ser em outra parte sim, mas não é creature.h, essa parada que tu mandou não tem nada a ver. Me envia seu game.cpp.
-
fezeRa deu reputação a WooX em Como diminuir exhaust da SDParece estar tudo nos conformes, envia spells.cpp.
-
fezeRa deu reputação a WooX em Como diminuir exhaust da SDFinalmente! Acredito que o problema esteja aqui, compila e testa ai.
-
fezeRa deu reputação a WooX em Como diminuir exhaust da SDModifiquei a checagem de exhausted, eu sinceramente recomendo você usar a last release do OTX 2 direto do github do mattyx, não vai mais ter que se preocupar com esse problema e outros que ainda podem surgir.
https://github.com/mattyx14/otxserver/tree/otxserv2/path_8_6x
Mas se insistir nessa deixa seu spells.h ai também, agora to de saída, mas amanha vejo pra você.