
MarQuiiM
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
MarQuiiM recebeu reputação de cleitonbandeira em Templates "RealBaiak" 25/08/16Bom dia // Boa Tarde // Boa Noite
Venho Trazer a vocês a Templates do RealBaiak Atualizada ! DEIXA O REP+
Meu amigo @pablobion Quem pediu , espero Contar pelo menos com seu REP++
OBS: Todos os servidores Onlines Aceitam com as regras "Sujeito a Exposto na Internet".
Bom , Espero ter Ajudado !! Deixa um REP+ Fuiz.
-
MarQuiiM deu reputação a xWhiteWolf em Novo Sistema de Trainer [0.36~0.4]Olá meus caros do Tibia King, hoje vim trazer pra vocês um sistema que bolei pra um concurso em outro fórum mas acabei ficando descontente e nunca cheguei a disponibilizar.
Eu gostaria de agradecer inicialmente à três acontecimentos que sem eles não seriam possíveis a criação desse sistema.
- A otlist obrigar que os servidores utilizem anti idle
- Os mages do meu servidor reclamarem que não dava pra treinar ml nos trainers
- Ao @Storm Night, que embora tenha me irritado muito nesse tópico aqui , botou a sementinha dessa idéia na minha cabeça.
Explicação É a combinação de dois sistemas que eu ja havia feito, o primeiro escolhe entre todas as salas de treiner aquela que está vazia pra te alocar e o segundo te mantém alimentado e rodando pra simular o anti idle. (Nota: ele não impede o anti idle de fato, se vc quiser fazer isso vc vai precisar editar o script de anti idle que vc utiliza pra ignorar players com determinado storage e adicionar o storage no player quando ele entrar na sala e tirar ao sair.. mas não sei até que ponto isso pode provocar ban da OTservlist por isso decidi não ensinar isso aqui.)
Sem mais delongas, talk is cheap, show me the code.
Idéia Basicamente dá pra reduzir toda a idéia do código nessa foto aqui:
Você tem diversas salas com trainers nesse formato (pode ser em linha reta horizontal ou vertical tb, mas assim fica melhor distribuído). Você inclusive pode criar salas no meio do void de forma que a distancia de uma vc nao consiga ver a outra e vai ser uma experiencia muito amigável para o player ver que está treinando sozinho na paz. Ao entrar no tp ele te aloca na primeira sala vazia, se não houverem salas vazias ele retorna que não tem posições livres
Instalação Você precisa criar as salinhas dos trainers equidistantemente, ou seja, tendo a mesma distância A em X e mesma distância B em Y. Sério, se vc errar nessa parte é porque vc não sabe oque significa equidistante. Vai pesquisar preguiçoso!! Já aviso que não vou dar suporte quanto à isso.
Você vai precisar criar salas parecidas com isso daqui:
Perceba que não tem como ter acesso a essa sala, não tem como ser puxado pra fora do trainer, não tem dor de cabeça nenhuma e quando o player quiser sair ele só entra no tp e volta pro templo ou pra onde vc definir.
Nesse teleport da sala vc adiciona o actionid 14877 e não bota nenhuma posição nele.
Naquele tile que o player irá ficar que inclusive tem id diferente vc bota actionid 14878.
Agora seleciona a area dessa sala no rme e vai copiando e colando percebendo sempre se vc tá criando as salas com mesma distância em X. Se o ponto inicial de uma sala é 140 e vc quer que todas tenham 12 sqm de distancia vc cria em 152, 164, 178.. por aí vai.
Quando terminar as salas que quiser e tiver montado as linhas e colunas da forma que desejou, vc vai criar um tp principal pra alocar os players nessa sala:
Lembrando que ele não deve ter posição no rme, vc só bota o actionID 14876 e deixa a toPos dele 0, 0, 0. Ele não tem q te teleportar pra nenhum lugar pois a posição será decidida por script.
Se você fez tudo certo até agora vc deve ter algo +- assim:
O importante é manter a distancia certinha entre cada sala. Aí no caso eu fiz rX = 11 e rY = 8 (é a terceira ou quarta vez q eu to falando isso, se vcs errarem pqp eu vou ficar muito irritado);
Vc não bota os trainers, e ali embaixo do spawn vc tem que botar um outro obstáculo pra impedir que o player ande pra baixo e dê a sala como livre.
Feito isso só adicionar os scripts abaixo:
movements.xml
<movevent type="StepIn" actionid="14876" event="script" value="trainertp.lua"/> <movevent type="StepIn" actionid="14877" event="script" value="trainertp2.lua"/> <movevent type="StepIn" actionid="14878" event="script" value="foodtrainer.lua"/>
movements/scripts/trainertp.lua:
movements/scripts/trainertp2.lua:
movements/scripts/foodtrainer.lua:
FIM, qualquer dúvida ou comentário ou sugestão coloquem abaixo. Se gostou REP+, se não gostou REP+ pq deu trabalho e vai ser útil pra alguém, mesmo que de estudo.
Abraços do Lobo.
E ao cara do outro fórum que ficou falando que ia dar erro e quis ficar me corrigindo e mandando scripts sem noção pra "mostrar" que sabia de lua:
-
MarQuiiM deu reputação a Vodkart em [Mod] Automatic Raids [Dia E Hora Marcada]Automatic Raids.xml
<?xml version="1.0" encoding="UTF-8"?> <mod name="Automatic Raids" version="1.0" author="Vodkart And xotservx" contact="tibiaking.com" enabled="yes"> <config name="raids_func"><![CDATA[ days = { ["Monday"] = { ["21:30"] = {nome = "Orshabaal", pos = {fromPosition = {x=184, y=55, z=7},toPosition = {x=188, y=58, z=7}},m = {"5 Fire Devil", "2 Orshabaal"}, Time = 15}, ["21:33"] = {nome = "Dragon", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}},m = {"100 Dragon"}, Time = 20} }, ["Sunday"] = { ["10:08"] = {nome = "Demon", pos = {fromPosition = {x=202, y=11, z=7},toPosition = {x=204, y=12, z=7}}, m = {"1 Demon"}, Time = 15}, ["10:46"] = {nome = "Hydra", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}}, m = {"7 Hydra", "4 Cyclops"}, Time = 20} } } ]]></config> <globalevent name="AutomaticRaids" interval="60" event="script"><![CDATA[ domodlib('raids_func') function onThink(interval, lastExecution) if days[os.date("%A")] then hours = tostring(os.date("%X")):sub(1, 5) tb = days[os.date("%A")][hours] if tb then function removeCreature(tb) for x = ((tb.pos.fromPosition.x)-10), ((tb.pos.toPosition.x)+10) do for y = ((tb.pos.fromPosition.y)-10), ((tb.pos.toPosition.y)+10) do local m = getTopCreature({x=x, y=y, z= tb.pos.fromPosition.z}).uid if m ~= 0 and isMonster(m) then doRemoveCreature(m) end end end end doBroadcastMessage("The invasion of " .. tb.nome .. " started") for _,x in pairs(tb.m) do for s = 1, tonumber(x:match("%d+")) do pos = {x = math.random(tb.pos.fromPosition.x, tb.pos.toPosition.x), y = math.random(tb.pos.fromPosition.y, tb.pos.toPosition.y), z = tb.pos.fromPosition.z} doSummonCreature(x:match("%s(.+)"), pos) end end addEvent(removeCreature, tb.Time*60*1000, tb) end end return true end ]]></globalevent> </mod> Configuração: days = { ["Monday"] = { ["21:30"] = {nome = "Orshabaal", pos = {fromPosition = {x=184, y=55, z=7},toPosition = {x=188, y=58, z=7}},m = {"5 Fire Devil", "2 Orshabaal"}, Time = 1}, ["21:33"] = {nome = "Dragon", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}},m = {"100 Dragon"}, Time = 2} }, ["Tuesday"] = { ["10:44"] = {nome = "Demon", pos = {fromPosition = {x=184, y=55, z=7},toPosition = {x=188, y=58, z=7}}, m = {"5 Demon", "8 Fire Devil"}, Time = 1}, ["10:46"] = {nome = "Hydra", pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}}, m = {"7 Hydra", "4 Cyclops"}, Time = 2} } } ["DIA"] = { ["HORA DA INVASÃO"] = {nome = "NOME DA INVASÃO", pos = {começo e final da área}, monster = {"MONSTROS"}, Time = para remover os monstro} } O dia da invasão é colocada entre " " e somente dia em inglês e a primeira letra maiúscula, exemplo: "Saturday" Depois são as hora da invasão, que é colocada entre " " e somente a hora e minuto, segundos não precisa exemplo: "15:00" As Posições estão entre { } adicionando as posições x, y e z, é o começo e final da área exemplo: pos = {fromPosition = {x=197, y=57, z=7},toPosition = {x=203, y=60, z=7}} fromPosition -- começo da área onde vai acontecer a raid toPosition -- final da área onde vai acontecer a raid Os monters tem um modo especial de configurar, vc coloca entre { }, e cada monstro entre " ", e entre as " " vc adiciona "QUANTIDADE MONSTRO", e para adicionar mais tipos de monstro se separa por virgulas, exemplo: {"40 Water Elemental", "5 Cyclops"} Time é uma função extra, é para caso ninguém participe do evento os monstros não fiquem pelo mapa, e é em minutos, exemplo: Time = 15
-
MarQuiiM deu reputação a MySticaL em [PEDIDO] Npc Que Troca Nome Do Jogador...Amigo não entendi o "negócio de 5 pontos", mais editei esse script aqui e traduzi para você usar no caso ele renomeia o player por certo item e quantidade. "CONFIGURAVEL"
Em Npc crie um arquivo chamado renameplayers.xml, após isso coloque o seguinte código nele.
<?xml version="1.0" encoding="UTF-8"?> <npc name="Renomeador" script="renn.lua" walkinterval="0" floorchange="0"> <health now="150" max="150"/> <look type="299" head="114" body="119" legs="114" feet="114" corpse="2212"/> <parameters> <parameter key="message_greet" value="Olá |PLAYERNAME|, Deseja trocar seu nome por apenas 5 Pontos?"/> </parameters> </npc> Em Npc/script crie um arquivo chamado renn.lua, após isso coloque o seguinte código nele.
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talk = {} local name = {} 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 onPlayerEndTrade(cid) npcHandler:nPlayerEndTrade(cid) end function onPlayerCloseChannel(cid) npcHandler:nPlayerCloseChannel(cid) end function creatureGreetCallback(cid) talk[cid] = name[cid] = '' return true end local chars = {' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'} RET_VALID = 1 RET_EXISTS = 2 RET_INVALID = 3 local function validName(name) if getPlayerGUIDByName(name) ~= nil then return RET_EXISTS end local notAllowed = {"god", "gm", "cm", "tutor", "help", "admin"} for _, naw in pairs(notAllowed) do if (name:lower():find(naw .. " ") or name:lower() == naw or name:lower():find("admin")) then return RET_INVALID end end for i = 1, name:len() do if not(isInArray(chars, name:sub(i,i))) then return RET_INVALID end end return RET_VALID end local function getValid(name, opt) local function tchelper(first, rest) return first:upper()..rest:lower() end return opt and name:gsub("(%a)([%w_']*)", tchelper) or name:gsub("^%l", string.upper) end local config = { type = 'item', money = 10000, -- = ignore item = {2159, 20}, -- Item, quantidade everyFirstLetterCapital = true } function messageDefaultCallback(cid, type, msg) if not(npcHandler:isFocused(cid)) then return false end if msgcontains(msg, "yes") and talk[cid] == then selfSay("Ok, Qual o nome Desejado?", cid) talk[cid] = 1 elseif talk[cid] == 1 then local v = getValid(msg:lower(), config.everyFirstLetterCapital) local ret = validName(v) if ret == RET_VALID then selfSay("Então você quer '" .. v .. "' para ser seu nickname novo, irá custar: " .. (config.type == "money" and (config.money .. " gold") or (config.item[2] .. ' ' .. (config.item[2] > 1 and getItemPluralNameById(config.item[1]) or getItemNameById(config.item[1])))) .. "?", cid) talk[cid], name[cid] = 2, v else if ret == RET_INVALID then selfSay(msg .. " Não é um nome válido, diga me outro nome", cid) elseif ret == RET_EXISTS then selfSay(msg .. " Já existe diga-me outro nome", cid) end end elseif talk[cid] == 2 then if msgcontains(msg, "yes") then if (config.type == 'money' and doPlayerRemoveMoney(cid, config.money)) or (config.type ~= 'money' and doPlayerRemoveItem(cid, config.item[1], config.item[2])) then local curName = getPlayerName(cid) doRemoveCreature(cid) db.executeQuery("UPDATE players SET name = '"..name[cid].."' WHERE name = '"..curName.."';") else selfSay("Você não tem 5 Pontos :(", cid) talk[cid] = end else selfSay("Talvez mais tarde.", cid) talk[cid] = end end return true end npcHandler:setMessage(MESSAGE_FAREWELL, "Tchau.") npcHandler:setMessage(MESSAGE_WALKAWAY, "Até logo!") npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, messageDefaultCallback) npcHandler:setCallback(CALLBACK_FAREWELL, creatureFarewell) npcHandler:setCallback(CALLBACK_CREATURE_DISAPPEAR, creatureFarewell) npcHandler:setCallback(CALLBACK_GREET, creatureGreetCallback) npcHandler:addModule(FocusModule:new()) Como configurar:
local config = {
type = 'item', -- Não mecha
money = 10000, -- ignore
item = {2159, 20}, -- Item, quantidade
everyFirstLetterCapital = true
-
MarQuiiM deu reputação a KotZletY em [PEDIDO] Npc Que Troca Nome Do Jogador...Ta na mão: Vá em data/npc/scripts e crie um arquivo chamado Troca de Nick.lua e coloque esse Script dentro:
Agora vá em: data/npc e crie um arquivo chamado Troca de Nick.xml e coloque isso dentro:
Agora basta usar... xD
Bom dentro do Script coloquei comentários para você ver onde alterar e o que alterar para ficar a seu gosto. Caso não entenda é só falar...
Esse Script peguei aqui no TK, estava para trocar o nick por dinheiro apenas, então alterei para troca por itens, e pela quantidade que você deseja.
Qualquer coisa to aqui.
-
MarQuiiM deu reputação a KotZletY em [PEDIDO] Script De Mensagem ao Logar No OtVá em data/creaturescripts/scripts e abra o arquivo login.lua
e adicione essa função antes do último returne true:
local txt = [[ Sua mensagem vem escrita aqui. Bom jogo! ]] doPlayerPopupFYI(cid, txt) E coloque a mensagem que você quer dentro dos parâmetros. [[ aqui dentro e não fora! xD Hu3hu3hu3 ]]
Qualquer duvida tamo ae! xD
-
MarQuiiM deu reputação a Yan Liima em [PEDIDO] Script De Mensagem ao Logar No OtWodboWars correto? fique avontade para pedir qualquer coisa, trabalhei lá, fui o responsavel pelo sucesso daquele servidor. Fui o que concertei várias coisa daquele servidor, inclusive ensinei ao Arkam a mexer com OTs. Até acontecer certas coisa...
Fique avontade para pedir qualquer coisa, tenho o servidor e estarei disponibilizando cada script daquele servidor para você amigo xD
-
MarQuiiM deu reputação a DukeeH em [URGENTE] Z DA GUILDNão são scripts, é source, por ser derivado eu acho que você precisa usar as sources do projeto. Não é algo que você consegue simplesmente colocar em eu servidor.
Segue o melhor 8.6 com war system pra você dar uma olhada: