-
Total de itens
416 -
Registro em
-
Última visita
-
Dias Ganhos
5
Tudo que drakylucas postou
-
sistema Arena Sobrevivencia Event System
tópico respondeu ao drakylucas de drakylucas em Mods, funções e outros
um amigo nosso... parça de old times ele num manja qse nd de scripting, mas sabe mapear bem e também da boas ideias pos servidores, alem do mais oq mais falta nesse mundo é criatividade, e ele tem muita -
sistema Arena Sobrevivencia Event System
tópico respondeu ao drakylucas de drakylucas em Mods, funções e outros
vlw... e sim, fui eu.. nao faço plagios.... ee galera se vcs duvidam q posso ser bom, eu e + 2 colegas (thalia e tk) vamos começar um projeto... logo + postarei teasers de sistemas feitos por nós -
sistema Arena Sobrevivencia Event System
tópico respondeu ao drakylucas de drakylucas em Mods, funções e outros
se vc postasse o erro, ajudaria ¬¬ -
sistema Arena Sobrevivencia Event System
tópico respondeu ao drakylucas de drakylucas em Mods, funções e outros
EDIT: Achei o erro (mais o erro foi do fórum, nao meu ¬¬).. eu salvei uma copia do meu script (q enviei no forum) e testei copiando e colando do forum... o forum apagou um parenteses na linha 122 ¬¬... é só colocar o parenteses que vai funciona.. eu atualizei aqui, copia dinovo o script e testa agora subwat EEEEEEEEEEEE Xtibianos em geral, vale lembra que só contam jogadores no evento que não são acesso acima de XX (definidos na configuração do mesmo), entao se o teleport for criado e você entrar com o GM, não irá funcionar mesmo.. crie um char normal e teste -
sistema Arena Sobrevivencia Event System
tópico respondeu ao drakylucas de drakylucas em Mods, funções e outros
comecei a faze la pas 2 e poco (hr q flei com vc vodk).. fiz ateh as 5 e poco, parei pa i pa academia, voltei e terminei de ajeita os detalhes tals, dae postei dicas de outros sistemas plz? -
sistema Arena Sobrevivencia Event System
um tópico no fórum postou drakylucas Mods, funções e outros
Bom, esse sistema é requisitado por muitos donos de servidores.. sempre quando pedem as pessoas fazem e enviam por PM, por ser meio dificil... Essa é minha versão desse sistema Créditos 90% Draky Lucas (eu) 10% Vodkart (uma função que utilizei e me explicou como funcionaria o sistema, q os players nao sabem explica direito kk) O que ele é? o GM do servidor digita /arena X, onde o X é o numero de jogadores necessarios para o evento começar.. supondo que o GM digitou /arena 5: o evento criaria um teleport na posição configurada; esperaria 5 players entrarem nesse teleport (não contando os GM's.. também configuravel); assim que o 5º player entrasse, o evento esperaria um delay (configuravel) e sumonaria os bixos de cada level do evento (monstros e leveis configuraveis), e assim que criasse os monstros, contaria o mesmo delay varias veses para ir avançando de nivel (e criando mais monstros), os que sobreviverem ao ultimo nivel (configuravel) ganham premios (configuraveis). Não se morre no evento e não se adquire loot dos monstros, mas ganha exp dos monstros também! [SIM, É CONFUSO DE ENTENDER.. COLOQUE NO SERVIDOR E VEJA VOCÊ MESMO] TESTADO COM The Lost Server 8.6 (Caso dê erro de storage, é pq não sei se no TFS/Baiak tem as funçoes setStorage com esse nome, mas me avise que eu arrumo a versão TFS/BAIAK) Instalando o sistema: Mapa: Script: na pasta onde fica o executavel do server, há uma pasta chamada Mods, entre nela e crie um arquivo chamado arena.xml e nele coloque isso: [PS: Editado 01:39 - 14/07/2012 por correção de um erro ortográfico do forum que comeu um parenteses do script] <?xml version="1.0" encoding="UTF-8"?> <mod name="Arena" version="1.0" author="DrakyLucas" contact="XTibia" enabled="yes"> <config name="arena_config"><![CDATA[ config = { delay = 60, -- tempo de um level para o outro posicaoPlayer = {x = 37,y = 96,z = 7}, -- posição q o player vai cair dps de entra no TP posicaoArena = {{x = 35,y = 94,z = 7},{x = 42,y = 99,z = 7}}, premio = { {2160,70}, {2152,50}, }, -- ID, Quantidade... só aceita de 1 a 100 por vez, e você pode adicionar quantos itens quiser. storage = 15444, -- não mecha.. posicaoTp = {x = 37, y = 91, z = 7}, -- posicao que o teleporte vai aparecer acesso = 3, -- acesso minimo para ser ignorado pelo evento, e o mesmo acesso para poder inicializa-lo } -- você pode adicionar quantos leveis desejar -- [NumeroDoLevel] = {{"Nome",Quantidade},{"Nome",Quantidade},{"Nome",Quantidade},{"Nome",Quantidade},{"Nome",Quantidade}}, leveis = { [1] = {{"Dragon",5}}, [2] = {{"Dragon",5},{"Dragon Lord",2}}, [3] = {{"Dragon Lord",5}}, [4] = {{"Demodras",2},{"Demon",1}}, [5] = {{"Demon",5},{"Orshabaal",1},{"Ferumbras",1}}, } function abrirTeleport(n) doItemSetAttribute(doCreateItem(1387, config.posicaoTp), "aid", 2941) -- cria o tp e deixa aid 2941 doBroadcastMessage("O Evento arena vai começar! teleport foi aberto e faltam ".. n .. " pessoas para o evento iniciar!") doSetStorage(config.storage, n) end function fecharTPeAguardarEvento() doRemoveItem(getTileItemById(config.posicaoTp, 1387).uid,100) doBroadcastMessage("O evento ja concluio " .. #getPlayersInArena() .. " players e começará em " .. config.delay .. " segundos!") addEvent(evento,config.delay*1000,1) end function HaveCreatureArena(area, remove, clean) -- função do Vodkart 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 remove ~= false and m ~= 0 and isMonster(m) then doRemoveCreature(m) end if clean ~= false then doCleanTile(pos, false) end end end end function resetEvento() doSetStorage(config.storage, -1) end function criarMonstros(lv) local monstro = leveis[lv] local area = {config.posicaoArena[1],config.posicaoArena[2]} for i = 1,#monstro do for k=1,monstro[i][2]do pos = {x=math.random(area[1].x,area[2].x), y=math.random(area[1].y,area[2].y), z=area[1].z} monstrinho = doCreateMonster(monstro[i][1], pos) registerCreatureEvent(monstrinho, "removerCorpse") end end end function evento(i) if #getPlayersInArena() == 0 then doBroadcastMessage("Ninguem sobreviveu a arena =/") doBroadcastMessage("EVENTO TERMINADO!") HaveCreatureArena({config.posicaoArena[1],config.posicaoArena[2]}, true, true) -- remove monstros, itens da arena resetEvento() return true end if i == (#leveis +1) then HaveCreatureArena({config.posicaoArena[1],config.posicaoArena[2]}, true, true) doBroadcastMessage("Evento finalizado, " .. #getPlayersInArena() .. " sobreviveram ao evento!") for _, pid in ipairs(getPlayersInArena()) do doPlayerSendTextMessage(pid,22,"Parabens, você sobreviveu ao evento!") addItens(pid) doTeleportThing(pid,getTownTemplePosition(getPlayerTown(pid))) end resetEvento() return true end for _, pid in ipairs(getPlayersInArena()) do doPlayerSendTextMessage(pid,22,"GoGo Nivel " .. i .. " !!!") end criarMonstros(i) addEvent(evento,config.delay*1000,i+1) end function addItens(pid) for i=1,#config.premio do doPlayerAddItem(pid,config.premio[i][1],config.premio[i][2]) end doPlayerSendTextMessage(pid,22,"Parabens, voce recebeu seus premios!") end function getPlayersInArena() local t = {} for _, pid in pairs(getPlayersOnline()) do if getPlayerAccess(pid) < config.acesso then if isInRange(getCreaturePosition(pid), config.posicaoArena[1], config.posicaoArena[2]) then table.insert(t, pid) end end end return t end ]]></config> <talkaction words="/arena" event="buffer"><![CDATA[ domodlib('arena_config') if getPlayerAccess(cid) < config.acesso then return doPlayerSendCancel(cid,"Voce nao tem acesso para esse comando") end if tonumber(param) ~= nil then -- se o parametro é numerico if tonumber(param) > 0 then doSetStorage(config.storage, param) abrirTeleport(param) end else doPlayerSendTextMessage(cid,19,"Digite /arena e um numero.. \n exemplo: \n/arena 5") end ]]></talkaction> <movevent type="StepIn" actionid="2941" event="script"><![CDATA[ domodlib('arena_config') if getPlayerAccess(cid) > config.acesso then doTeleportThing(cid, config.posicaoPlayer) return false end -- GM nao conta doSetStorage(config.storage,getStorage(config.storage) - 1) doTeleportThing(cid, config.posicaoPlayer) registerCreatureEvent(cid, "naoAtacarPlayer") registerCreatureEvent(cid, "morrerNaArena") if getStorage(config.storage) <= 0 then fecharTPeAguardarEvento() end return true ]]></movevent> <event type="login" name="VerSeTaNaArenaEExpulsa" event="script"><![CDATA[ domodlib('arena_config') if isInRange(getCreaturePosition(cid), config.posicaoArena[1], config.posicaoArena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true ]]></event> <event type="combat" name="naoAtacarPlayer" event="script"><![CDATA[ domodlib('arena_config') if isPlayer(cid) and isPlayer(target) then if isInRange(getPlayerPosition(cid), config.posicaoArena[1], config.posicaoArena[2]) and isInRange(getPlayerPosition(target), config.posicaoArena[1], config.posicaoArena[2]) then doPlayerSendCancel(cid, "Nao ataque seus amigos.") return false end end return true ]]></event> <event type="death" name="removerCorpse" event="script"><![CDATA[ domodlib('arena_config') doCreatureSay(cid,"Ninguem terá meu loot! Buaahahahha",1) pos = getCreaturePosition(cid) addEvent(doCleanTile,1,pos, false) return true ]]></event> <event type="statschange" name="morrerNaArena" event="script"><![CDATA[ domodlib('arena_config') if isInRange(getPlayerPosition(cid), config.posicaoArena[1], config.posicaoArena[2]) then if type == STATSCHANGE_HEALTHLOSS then if isPlayer(cid) then if value >= getCreatureHealth(cid) then doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid))) doPlayerSendTextMessage(pid,22,"Você morreu na arena =/.. veja pelo lado positivo, você nao perdeu nada!") doCreatureAddHealth(cid,getCreatureMaxHealth(cid) - getCreatureHealth(cid)) return false end end end end return true ]]></event> </mod> pronto, sistema adicionado.. agora vamos configurar: Tempo entre cada level Posição que está em branco na foto Posições que estão em azul na foto Premios (copie e cole como está, mude valores, adicione mais itens.. não há um limite de premios) Posição que o TP aparecerá para os players entrarem no event Acesso minimo para dar /arena X Monstros de cada Level (Obs: você pode adicionar quantos leveis desejar para o evento) Possiveis Erros: caso dê erro citado por algumas pessoas no forum (logo abaixo) é porque vocês utilizam uma distro diferente da minha e incompativel com UTF-8 então mudem <?xml version="1.0" encoding="UTF-8"?> por <?xml version="1.0" encoding="ISO-8859-1"?> e tudo deverá funcionar. Correção do erro feita pelo usuario KUNGLOW obrigado pela atenção Obrigado .. EXCLUSIVO XTIBIA -
parabens cara... a ideia foi boa (do cara que fez o pedido) e você soube aplicar lua muito bem sobre a ideia ^^ ficou mt bom.. rep+
-
talkaction /travel 100% By Drakylucas
tópico respondeu ao drakylucas de drakylucas em Actions e Talkactions
vlw.. vou tenta (pq ñ sei se minha ideia irá funcionar) dar uma limpada no script... é que originalmente eu fiz com poucas verificações, sem house, sem muitas mensagens, entao tava codigo limpo, porem ao colocar as verificações de usar ou nao level, custo, etc começou a sujar o codigo nas mensagens =/... vo tenta dar uma limpada e se consegui posto aqui, e se nao consegui edito esse post falando que não consegui kk EDIT: Não consegui =/... nada que mude o código significativamente.. apenas mudei o começo do script, para ficar um pouco mais organizado o entendimento.. mas nada que mude significativamente =/ de: if param == "" or (destino == nil and string.lower(param) ~= "house") then -------------- Verificar destino existente if destino == nil and param ~= "" and param ~= "house" then doPlayerSendTextMessage(cid,19,"Destino Invalido \n\n") end if destino == nil and string.lower(param) ~= "house" then -------------- Verificar destino existente if param ~= "" then doPlayerSendTextMessage(cid,19,"Destino Invalido \n\n") end da uma ajuda ae pa diminui a parte das 4 verificações ?(custo = true, level = true) em diante?? é que as mensagens não da para serem colocadas em uma tabela por causa do for, ele acusaria o V e o K de nil caso estivesse setando em uma tabela =/ Pesso que continuem a me criticar, somente assim poderei melhorar -
normalmente quando você baixa uma distro original (exemplo o TFS 0.4 ), no mesmo link tem as sources para download as sources são o que compoem o executavel.. ou seja, vc tem que ter as sources para modificar....
-
talkaction /travel 100% By Drakylucas
tópico respondeu ao drakylucas de drakylucas em Actions e Talkactions
demorei pra posta pq o xtibia ta caindo =/ atualizado conforme sua dica vlw ae... ow vei da uma ideia de algum sistema ae kaposaops.. ta tenso ser criativo em tibia =x -
bom, o sistema é parecido com o do Bronson Server (/ir), quem ja jogou sabe mais ou menos como é, porém totalmente configuravel. eu fiz ele, e só depois vi que havia um no forum com a mesma funçao http://www.xtibia.co...-talk-para-vip/ <-- créditos Vodkart esse é meu sistema, como poderão ver, está parecido com o sistema do Vodkart porem esse é mais configuravel, podendo configurar skulls, leveis (minimos e maximos), ir para house (dica do vodkart), etc. em Data-> talkactions -> talkactions.xml abaixo de <talkactions> coloque <talkaction log="yes" words="/travel" event="script" value="custom/travel.lua"/> agora em data->talkactions->scripts crie uma pasta chamada custom, dentro dessa pasta crie um arquivo chamado travel.lua e coloque isso: --[[ **** <CRÉDITOS> **** ]] -- -- 100% DrakyLucas -- Exclusivo XTIBIA -- Não postar em outros fórums sem a devida autorização -- Não comercializar esse script --[[ **** </CRÉDITOS> **** ]] -- -- PS: Utilizavel com Premium Account, para utiliza-lo com vip-system, fazer as modificações adequadas. local config = { pkRed = true, -- true para RED poder teleportar, false para não poder. pkBlack = false, -- true para BLACK poder teleportar, false para não poder. premium = true, -- true se precisar de premium, false se free poder teleportar. usaLevel = true, -- true para necessitar de level para viajar, false para não precisar de level custo = false, -- true para custar a viagem protectionzone = false, -- tem que estar em protection-zone house = true, -- se pode utilizar o /travel house } -- colocar apenas letras minusculas --[[ Caso esteja configurado acima que não precisa de level, por exemplo, deixe qualquer valor nos campos de level que ele não será mostrado a nenhum jogador. --]] local destinos = { ["cassino"] = {levelMinimo = 1, levelMaximo = 999999, preco = 1000, posicao = {x = 38,y = 84,z = 7}}, ["narnia"] = {levelMinimo = 10, levelMaximo = 15, preco = 100000, posicao = {x = 42,y = 84,z = 7}}, ["castelo de hogwarts"] = {levelMinimo = 6, levelMaximo = 500, preco = 1000000, posicao = {x = 47,y = 84,z = 7}}, } function onSay(cid, words, param, channel) local destino = destinos[string.lower(param)] ----------------- verificar existencia do destino que player digitou if destino == nil and string.lower(param) ~= "house" then -------------- Verificar destino existente if param ~= "" then doPlayerSendTextMessage(cid,19,"Destino Invalido \n\n") end --------------- --------------- Mostrar Destinos existentes doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Utilize /travel e o nome do lugar na frente.") if(getHouseByPlayerGUID(getPlayerGUID(cid)) ~= nil and config.house == true)then doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Você tem uma casa, experimente /travel house") end if config.usaLevel == true and config.custo == true then -- precisa de level e dê custo doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Local - Level Minimo - Level Maximo - Preço") for k,v in pairs(destinos) do doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,k .. " - " .. v.levelMinimo .. " - " ..v.levelMaximo.. " - " ..v.preco .. " gps") end elseif config.usaLevel == true and config.custo == false then -- precisa só de level doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Local - Level Minimo - Level Maximo") for k,v in pairs(destinos) do doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,k .. " - " .. v.levelMinimo .. " - " ..v.levelMaximo) end elseif config.usaLevel == false and config.custo == true then -- precisa só de custo doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Local - Preço") for k,v in pairs(destinos) do doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,k .. " - " ..v.preco .. " gps") end else -- não precisa de level e nem de custo doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Local") for k,v in pairs(destinos) do doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,k) end end --------------- return true end ----------------- if config.premium == true and not isPremium(cid) then return doPlayerSendTextMessage(cid,19,"Você precisa ser premium account para usufruir deste comando.") end if getCreatureCondition(cid, CONDITION_INFIGHT) == true then return doPlayerSendTextMessage(cid,19,"Você não pode viajar com fight.") end if config.pkRed == true and getPlayerSkullType(cid) == SKULL_RED then return doPlayerSendTextMessage(cid,19,"Você não pode viajar com RED SKULL.") end if config.pkBlack == true and getPlayerSkullType(cid) == SKULL_BLACK then return doPlayerSendTextMessage(cid,19,"Você não pode viajar com BLACK SKULL.") end if config.protectionzone == true and getTilePzInfo(getCreaturePosition(cid)) == false then return doPlayerSendTextMessage(cid,19,"Você não pode viajar fora da protection-zone.") end if string.lower(param) == "house" then if(getHouseByPlayerGUID(getPlayerGUID(cid)) ~= nil )then doSendMagicEffect(getCreaturePosition(cid),27) doTeleportThing(cid, getHouseInfo(getHouseByPlayerGUID(getPlayerGUID(cid))).entry) doSendMagicEffect(getCreaturePosition(cid),27) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Você viajou para sua casa") return true else return doPlayerSendTextMessage(cid,19,"Você não tem uma casa em seu nome.") end end if(getPlayerLevel(cid) < destino.levelMinimo or getPlayerLevel(cid) > destino.levelMaximo) and config.usaLevel == true then return doPlayerSendTextMessage(cid,19,"Você tem que estar entre os leveis " .. destino.levelMinimo.. " e " .. destino.levelMaximo .. " para poder ir a " .. string.lower(param) .. ".") end if(getPlayerMoney(cid) < destino.preco)and config.custo == true then return doPlayerSendTextMessage(cid,19,"Essa viagem custa " .. destino.preco.. " gps e você só tem " .. getPlayerMoney(cid) .. ".. Consiga dinheiro e tente novamente.") end if config.custo == true then doPlayerRemoveMoney(cid, destino.preco) end doSendMagicEffect(getCreaturePosition(cid),27) doTeleportThing(cid,destino.posicao) doSendMagicEffect(getCreaturePosition(cid),27) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Você viajou para ".. string.lower(param)) return true end acho que nem preciso explicar aqui como configura, ja deixei comentado no script e é facil o entendimento da configuração. Gostou? COMENTE!
-
bom.. duvida bem simples, é que faz tempo que não mecho com LUA então nao me recordo. tem uma tabela (exemplo:) local tabela = { ["xd"] = {x = 10, y = 50}, ["xp"] = {x = 11,y = 30}, } quero saber como faço para mostrar em uma mensagem (pode ser no print mesmo) os nomes do campo do lado esquerdo com seus respectivos valores.. exemplo de como ficaria a mensagem: o que não to conseguindo fazer é ler o que esta entre colchetes [], para emiti-los numa mensagem... vlw. EDIT duvida sanada: for k,v in pairs(tabela) do print(k .." - " .. v.x .. " - " .. v.y) end
-
bom galera.. alguns me conhecem, outros não, prazer.. DrakyLucas.. faz tempo que não mecho com Tibia, tanto por preguiça, quanto por falta de tempo. Fiz esse scriptzin para aquecer um pouco.. espero que gostem.. é bem legal para OTs sérios ou até para OTs brincalhões. Esse script é um sistema de cassino.. o player vai puxar uma alavanca, irão aparecer 3 monstros (1 por vez) em sua frente, se os três forem iguais o player ganha a aposta, caso contrario apenas perde seu dinheiro. exclusivo XTibia em! Testado com TFS 0.3.6 Lost Server - 8.60 Peço que abram os spoilers a seguir sequencialmente, para não se perderem na instalação. Instalação Mapa: Actions.xml Cassino.lua Finalizar Créditos Edited: 12/07/2012 11:38 AM -> concertei um possivel bug Por favor, comente sua opinião e dê ideias de outros sistemas legais para eu fazer.
-
[Sistema] Castle Guild War - Dominio De Castelo
tópico respondeu ao drakylucas de drakylucas em Mods, funções e outros
teleporta sim você instalou exatamente como está ai? configurou corretamente as posições? ;p -
Como Eu Posso Deixar Os Jogadores Upar Mais De Nivel 717K [High Exp Ot!]
tópico respondeu ao elmasmalo1 de drakylucas em Lixeira Pública
Não da..TALVEZ dê para fazer isso na source do servidor, mas não me pergunte como.. ow entao faz um teste, no banco de dados do server, pega um char nesse level maximo e coloca ele no lvl 800000 manualmente e vê se ele volta a upar.. caso dê certo eu faço um script pa muda o level pa 800k qnd chega no lvl 717k =p -
sei la, tipo esse dae não vai causar lag pois o player preso vai te que pisa no quadrado pa sair, ja uma verificação de segundo em segundo ou minuto em minuto poderia causar lag em servidores muito cheios. pq segundo em segundo ou minuto em minuto? pq tipo, o ADM pode colocar quanto tempo cada player fica na cadeia por sí só, entao um global event teria de contar esse tempo diferente pa cada jogador =p O Que eu poderia fazer é um addEvent pa solta a pessoa automaticamente dps do tempo preso, só que se ela deslogar nao funcionaria [só se fizesse duas verificações, caso esteja online só teleporte e offline mude no banco de dados, só que acho do jeito que fiz mais facil e util =p] enfim, vlw tb pela crítica =D flw =D
-
Iae XTibianos, belezinha? =p Bom, hoje não tinha nada para fazer, ninguém importante online no MSN, etc e já fazia tempo que não fazia nenhum script (até porque estudava dia inteiro, então não tinha tempo), resolvi fazer um sistema de prisão. Como funciona? Você, ADM ou GM de um servidor está cansado daqueles players enxerem saco, porém acha que não é um motivo que mereça uma punição severa como o banimento, pode utilizar esse sistema para prender o jogador por determinado tempo. Exemplo de uso: /prender Lucas,15 isso irá prender o jogador Lucas por 15 minutos. Adicionando o Sistema ao seu servidor: Primeiramete, na pasta raiz (onde fica o executável) do seu servidor, entre na pasta MODS Copie qualquer ARQUIVO com extenção XML da pasta MODS e cole na mesma pasta, mudando o seu nome para prisao.xml dentro do prisao.xml, coloque isso: <?xml version="1.0" encoding="UTF-8"?> <mod name="Prisao System" version="1.0" author="Draky Lucas" contact="Forum XTIBIA" enabled="yes"> <config name="prisao_config"><![CDATA[ --------------- CONFIG -------------- config = { pos = {x = 1000,y = 1000,z = 7}, -- posição do centro da cadeia [mapa] storage = 27271, -- nao é necessario alterar [armazena o tempo da prisao em segundos] } function getTime(s) -- função by : mkalo local n = math.floor(s / 60) s = s - (60 * n) return n, s end --------------- FIM CONFIG --------------- ]]></config> <talkaction words="/prender" access="3" event="buffer"><![CDATA[ domodlib('prisao_config') local t = param:explode(",") local nome, tempo = t[1], tonumber(t[2]) if nome and tempo then local guid = getPlayerGUIDByName(nome)or 0 if isPlayer(guid) then doPlayerSendTextMessage(guid,19,"Voce foi preso por "..tempo.. " minutos!") doTeleportThing(guid,config.pos) setPlayerStorageValue(guid,config.storage,os.time() + tempo*60) doPlayerSendTextMessage(cid,19,"Voce prendeu o jogador "..nome.. " por "..minutos.." minutos") else doPlayerSendCancel(cid,"O Jogador "..nome.." nao existe ou esta offline.") end else doPlayerSendTextMessage(cid,19,"Formato incorreto. \nPara prender alguem digite: /prender Nome_do_jogador,tempo_em_minutos") end return true ]]></talkaction> <movevent type="StepIn" actionid="27271" event="buffer"><![CDATA[ domodlib('prisao_config') if(os.time() < getPlayerStorageValue(cid,config.storage) then local minutos,segundos = getTime(getPlayerStorageValue(cid,config.storage) - os.time()) doTeleportThing(cid, fromPosition, false) doSendMagicEffect(position, CONST_ME_MAGIC_BLUE) return doPlayerSendCancel(cid,"Espere mais "..minutos.." minuto(s) e "..segundos.." segundo(s) para poder sair da cadeia") end doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid))) doSendMagicEffect(position, CONST_ME_MAGIC_BLUE) doPlayerSendTextMessage(cid,19,"Se cometer outro crime será punido mais severamente.") return true ]]></movevent> </mod> Configurando: Script: No inicio do script, na parte de config, apenas altere a POSIÇÃO da prisão. Mapa: Crie uma prisão, todos os tiles protection-zone, coloque um piso diferente nela, e nesse piso coloque a ACTION ID 27271 _________________________________________________________ PS: Não tenho nenhum servidor aqui em casa, então pedi para um amigo testar e ele me falou que funcionou, qualquer erro poste que eu arrumo PS²: Script exclusivo ao XTibia. Reportarei caso postem em outros fórums. Créditos: Draky Lucas (pelo script) / MatheusMkalo (pela função getTime(s)) Postem as críticas ae ;P aceito elogios e também xingamentos com fundamentos vlw? =D
-
[Sistema] Castle Guild War - Dominio De Castelo
tópico respondeu ao drakylucas de drakylucas em Mods, funções e outros
=D obrigado a todos =d preciso de ideias.. tava parando de mexer com OT pq nao tinha tempo, agora to de férias.. da ideia de SISTEMAS ae.. =P PS: nao modificarei mais esse script do castle.. nao me pessam pa deixar 1h etc etc.. -
O texto fico otimo, parabens.. o que fiquei triste é saber que o vencedor só tem 3 posts e nenhum rep.. talvez ele nem entre no xtibia direito =/ parabens =D
-
[Arquivado]Até Quantos Players Um Vps Aguenta Com Mapa Global?
tópico respondeu ao yasha de drakylucas em Noticias - Arquivo
sim sim, eu já imaginava isso mesmo, já tenho outro projeto pronto com um mapa de 20 mega, ai da pra colocar tranquilo né? roda sim.. tinha um OT de WAR, o mapa era 12 MB e chegou 120 players sem lag com apenas 1gb de ram.. detalhe é que o OT era de War.... o Global nao roda em 1gb nao, só que esse de 20 mb roda sussa. -
bem bolado... não to mexendo + com pokemons porem irá ajudar muita gente =D rep+ [esse foi merecido, faz tempo q o xtibia nao tem scripts inovadores ;D]
-
se for somente para tibia, leia tutoriais no xtibia msmo sobre if,else.. for.. loops em gerais.. pa vc ter introduão dps vem aqui na seção de pedidos, ve os pedidos + faceis e tente resolve-los e ir testando em sua casa mesmo [pegue pedidos ja resolvidos] dae vc compara a sua resolução com a de outros, vê oq poderia melhorar e aprende.. ou simplismente leia bastante scripts e va copiando e colando algumas linhas ateh intende-las =D
-
nao usa paralyse.. seta a speed da criatura doChangeSpeed(cid,-getCreatureSpeed(cid) + 90) faz ele puxar uma função a ada 1 segundo verificando se esta com a storage da bandeira..... fiz isso no btkserver e funciona normal ateh hj =D http://btkserver.servegame.com/ qlqr coisa avisa se nao intender [+ nao vou passar pronto]
-
creio que nao seja possivel, pois em uma mesma mensagem não pode haver 2 cores =/
-
fiz na pressa.. testa ae.. function onSay(cid, words, param, channel) local vocation,knight,paladin,druid,sorc = 0,0,0,0,0 for _,pid in ipairs(getPlayersOnline()) do vocation = getPlayerVocation(pid) if vocation > 4 and vocation < 9 then -- com promotion vocation = vocation - 4 elseif vocation > 8 then -- com segunda promotion vocation = vocation - 8 end if vocation == 1 then sorc = sorc + 1 elseif vocation == 2 then druid = druid + 1 elseif vocation == 3 then paladin = paladin + 1 else knight = knight + 1 end end local msg = "\nPlayers Online: "..(#getPlayersOnline()).."\nSorcerer: ".. sorc .."\nDruid: ".. druid .."\nPaladin: ".. paladin .."\nKnight: ".. knight .. "" return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg) end edited: agora deve funcionar normalmente
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.