Ir para conteúdo

comedinhasss

Herói
  • Total de itens

    520
  • Registro em

  • Última visita

  • Dias Ganhos

    7

Tudo que comedinhasss postou

  1. Primeiramente gostaria de pedir para que postasse no tópico original. http://www.xtibia.co...prision-system/ Tem até um tutorial explicando: "- O tempo pode ou não ser fixo, é só você digitar /jail (nome do player) para um tempo fixo ou /jail (nome do player), (tempo) para coloca-lo com um tempo especifico." E a tag que eu recomendei já está somente para GM+: access="3"
  2. Sim, um amigo meu utilizou no servidor dele e parece ter funcionado normalmente =D
  3. Tenta postar o erro no tópico dele para que eu possa estar verificando ._.
  4. Infelizmente não, a janela de modal dialogs foi lançada somente para 9.7+ Da para colocar pra abri tipo channel mais tenque faze umas config muito louca no creaturescripts e eu to sem tempo ._.
  5. Versão: 3.1 Versão de tibia: 9.7+ Descrição: Como muitos sabem na versão 9.7 a tfs removeu o rank system, e o tibia também adicionou os novos estilos de diálogos. Então eu resolvi fazer um novo rank system com esse sistema. Features: - Rank system em tempo real. - Janela personalisada. - Rank de Frags (Mock) TAG: <talkaction words="!rank;/rank;!ranks;/ranks" event="script" value="rank.lua"/> Script: data/talkactions/rank.lua modaldialog2 = { title = "Rank", message = "Escolha o rank que você quer visualizar:", buttons = { { id = 1, value = "Ver" }, { id = 2, value = "Cancelar" }, }, buttonEnter = 1, buttonEscape = 2, choices = { { id = 1, value = "Fist" }, { id = 2, value = "Club" }, { id = 3, value = "Sword" }, { id = 4, value = "Axe" }, { id = 5, value = "Distance" }, { id = 6, value = "Shield" }, { id = 7, value = "Fish" }, { id = 8, value = "Magic" }, { id = 9, value = "Level" }, { id = 10, value = "Frags" } }, popup = false } function callback2(cid, button, choice) if (button == 1) then local str = "" local name_now if (choice == 1) then str = "--[ Fist Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 0 ORDER BY `value` DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 2) then str = "--[ Club Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 1 ORDER BY `value` DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 3) then str = "--[ Sword Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 2 ORDER BY `value` DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 4) then str = "--[ Axe Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 3 ORDER BY `value` DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 5) then str = "--[ Distance Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 4 ORDER BY `value` DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 6) then str = "--[ Shield Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 5 ORDER BY `value` DESC;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 7) then str = "--[ Fish Rank ]--\n" query = db.getResult("SELECT `player_id`, `value` FROM `player_skills` WHERE `skillid` = 6 ORDER BY `value` DESC LIMIT 20;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(getPlayerNameByGUID(query:getDataInt("player_id"))).." - [" .. query:getDataInt("value") .. "]" k = k + 1 until not query:next() end elseif (choice == 8) then str = "--[ Magic Rank ]--\n" query = db.getResult("SELECT `maglevel`, `name` FROM `players` WHERE `group_id` < 3 ORDER BY `maglevel` DESC LIMIT 20;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(query:getDataString("name")).." - [" .. query:getDataInt("maglevel") .. "]" k = k + 1 until not query:next() end elseif (choice == 9) then str = "--[ Level Rank ]--\n" query = db.getResult("SELECT `name`, `level`, `experience` FROM `players` WHERE `group_id` < 3 ORDER BY `experience` DESC LIMIT 20;") if (query:getID() ~= -1) then k = 1 repeat if k > 20 then break end str = str .. "\n " .. k .. ". "..(query:getDataString("name")).." - [" .. query:getDataInt("level") .. "]" k = k + 1 until not query:next() end elseif (choice == 10) then str = "--[ Kills Rank ]--\n" query = db.getResult("SELECT `p`.`name` AS `name`, COUNT(`p`.`name`) as `frags` FROM `killers` k LEFT JOIN `player_killers` pk ON `k`.`id` = `pk`.`kill_id` LEFT JOIN `players` p ON `pk`.`player_id` = `p`.`id` WHERE `k`.`unjustified` = 1 GROUP BY `name` ORDER BY `frags` DESC;") if query:getID() == -1 then str = str .. "\nNinguém matou ninguém." end if (query:getID() >= 0) then k = 1 repeat if k > 20 then break end name_now, l = query:getDataString("name"), string.len(query:getDataString("name")) str = str .. "\n " .. k ..". ".. name_now .." - [" .. query:getDataInt("frags") .. "]" k = k + 1 until not query:next() end end doShowTextDialog(cid, 2529, str) end end function onSay(cid, words, param) addDialog(modaldialog2, 1002, cid, callback2); return true end Como usar: No servidor digite /rank e selecione o tipo de rank ou skill que você deseja visualizar. Video: (Antigo mais explicativo) Creditos: Comedinha (Bruno Carvalho) Mock Tutoriais de query em vários fórums. Oneshot
  6. Ele é igual o /i, mas você utiliza o /ta. Words: !ta - /ta Vlw por ajuda =D
  7. Versão: 1.1 Versão testada: 9.4+ (acho que funciona em anteriores). Descrição: O script foi criado para caso os membros da staff (CM+) do servidor quiser dar um bônus a todos os players online ele pode digitar o comando e dar o premio a todos. Tag: <talkaction words="!ta;/ta" access="4" event="script" value="createitemall.lua"/> Code: data/talkactions/createitemall.lua function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end for _, pid in ipairs(getPlayersOnline()) do local t = string.explode(param, ",") local ret = RETURNVALUE_NOERROR local pos = getCreaturePosition(cid) local id = tonumber(t[1]) if(not id) then errors(false) id = getItemIdByName(t[1]) errors(true) if(not id) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Item wich such name does not exists.") return true end end amount = t[2] if(not t[2]) then amount = 1 end local item = doCreateItemEx(id, amount) if(t[3] and getBooleanFromString(t[3])) then if(t[4] and getBooleanFromString(t[4])) then pos = getCreatureLookPosition(cid) end ret = doTileAddItemEx(pos, item) else doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_BLUE, "O "..getCreatureName(cid).." deu ("..amount.."x) "..getItemNameById(id).." para todos os players online.") ret = doPlayerAddItemEx(pid, item, true) end if(ret ~= RETURNVALUE_NOERROR) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Couldn't add item: " .. t[1]) return true end doDecayItem(item) if(not isPlayerGhost(cid)) then doSendMagicEffect(pos, CONST_ME_MAGIC_RED) end end return true end Creditos: TFS Team Comedinha (Bruno Carvalho)
  8. Versão testada: 9.4+ (Pode funcionar em anteriores) Descrição: Você já perdeu a cabeça com aquela mensagem chata de boas vindas que aparece toda hora ou aparece quando você entra no servidor pela primeira vez e remove a janela de outfit? Um novo sistema desenvolvido por mim faz aparecer essa mensagem somente para quem entra no acc manager, mas só aparece no acc manager de quem digita 1/1. TAG: data/creaturescripts/creaturescripts.xml <event type="login" name="BoasVindas" event="script" value="boasvindas.lua"/> Script: data/creaturescripts/scripts/login.lua registerCreatureEvent(cid, "BoasVindas") data/creaturescripts/scripts/boasvindas.lua local message = [[seja bem vindo ao Alissow OTs! Utilize o canal help para maiores informações. Para começar, pedimos após a criação do char, vá ao bau do lado direito do templo para tentar pegar um bonus! Enjoy xD]] function onLogin(cid) local accountManager = getPlayerAccountManager(cid) if(accountManager == MANAGER_NEW) then doPlayerPopupFYI(cid, message) end return true end Config: Em local message = [[ adicione o texto que quiser até o final ]]. Creditos: Bruno Carvalho (Comedinhasss)
  9. Demon, se quiser acesso ao antigo svn é so avisar... Muito bom o projeto, ultimamente ninguém tem mais idéia pra script...
  10. Legal, a sessão de bots eu ainda tenho dúvidas se irá dar certo no fórum...
  11. Sim sim, ele tem um limite de 5 noticias para parar de funcionar e ser necessário usar o clean.
  12. Versão do Script: V0.1 By Comedinha Versão testada: 9.4+ (pode funcionar em versões anteriores). Descrição: Quem não se lembra do velho Notice System feito pelo esk? Aquele que toda a noticia nova você tinha que abrir o txt e escrever nele as novidades? Agora não precisa mais disso. Nota: O script no momento está mais parecido com um ticker system do que um notice system. Novas Funções: - Adicionar noticias em tempo real para todo o servidor com a data. - Limpar a janela de noticias em tempo real para todo o servidor. TAG: <talkaction words="!notice;!news;/notice;/news" event="script" value="notice.lua"/> Script: local config = { add = {"add", "adicionar", "new"}, clean = {"clean", "limpar"} } function onSay(cid, words, param, channel) local t = string.explode(param, ",") if(table.isStrIn(param, config.add)) then if getPlayerGroupId (cid) >= 5 then file = io.open('data/txt/notice.txt','a+') if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end notice = file:write("\n"..getPlayerName(cid).." at " .. os.date("%d %B %Y - %X ", os.time()) .."\n"..t[2].."\n") file:close() return true end elseif(table.isStrIn(param, config.clean)) then if getPlayerGroupId (cid) >= 5 then file = io.open('data/txt/notice.txt','w') if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end notice = file:write("Server News\n") file:close() return true end return false end file = io.open('data/txt/notice.txt','r') notice = file:read(-1) doShowTextDialog(cid, 7528, notice) file:close() return true end Aviso: Na pasta data crie uma pasta chamada txt e dentro dela um arquivo chamado notice.txt. Após a instalação do script dentro do servidor digite /notice clean para não ter problemas futuros. Como usar: Para ver as noticias digite /notice Para adiconar noticias digite /notice add, (texto) Para limpar a janela de noticias digite /notice clean Créditos: Esk Comedinha (Bruno Carvalho)
  13. Oiiii sky Td Beim? @Tópic... Bots geraria brigas como eu disse... Igual está gerando com a própria discussão...
  14. Eu acho que bots é um grande chamado de novos usuários, mas acho também que vai gerar conflito entre algumas pessoas...
  15. Vlw cara, eu estou usando ele no atual Alissow Server também... Em breve quem saiba novas atualizações, com novas funções...
  16. Versão: 3.2 Versão de tibia: 9.4+ (Funciona em anteriores) Descrição: Existem muitos scripts que ajudam o administrador do servidor a cuidar dele, um deles é saber coisas sobre quem está jogando e se está sendo honesta. Eu peguei alguns scripts e estou juntando em um para diminuir o tamanho e ter uma fácil verificação. TAG: <talkaction log="yes" words="!p;/p" access="5" event="script" value="playercheck.lua"/> Script: Talkactions/scripts/playercheck.lua local config = { check = {"check", "viwer", "verificar", "ver"}, delete = {"del", "delete", "deletar"}, search = {"search", "procurar"} } function getItemsInContainer(cont, sep) local text = "" local tsep = "" local count = "" for i=1, sep do tsep = tsep.."-" end tsep = tsep..">" for i=0, getContainerSize(cont.uid)-1 do local item = getContainerItem(cont.uid, i) if isContainer(item.uid) == FALSE then if item.type > 0 then count = "("..item.type.."x)" end text = text.."\n"..tsep..getItemNameById(item.itemid).." "..count.." ("..item.itemid..")" else if getContainerSize(item.uid) > 0 then text = text.."\n"..tsep..getItemNameById(item.itemid).." ("..item.itemid..")" text = text..getItemsInContainer(item, sep+2).." ("..item.itemid..")" else text = text.."\n"..tsep..getItemNameById(item.itemid).." ("..item.itemid..")" end end end return text end function onSay(cid, words, param, channel) local slotName = {"Cabeça", "Amuleto", "Backpack", "Armor", "Mao Direita", "Mao Esquerda", "Legs", "Pés", "Ring", "Ammo Slot"} local t = string.explode(param, ",") if(table.isStrIn(param, config.check)) then if getPlayerGroupId (cid) >= 5 then local player = getPlayerByNameWildcard(t[2]) if isPlayer(player) == TRUE then local text = getPlayerName(player).."'s Equipment: " for i=1, 10 do text = text.."\n\n" local item = getPlayerSlotItem(player, i) if item.itemid > 0 then if isContainer(item.uid) == TRUE then text = text..slotName[i]..": "..getItemNameById(item.itemid).." ("..item.itemid..") "..getItemsInContainer(item, 1) else text = text..slotName[i]..": "..getItemNameById(item.itemid).." ("..item.itemid..")" end else text = text..slotName[i]..": Empty" end end doShowTextDialog(cid, 6579, text) else doPlayerSendCancel(cid, "This player is not online.") end end elseif(table.isStrIn(param, config.delete)) then if getPlayerGroupId(cid) >= 5 then local player = getPlayerByNameWildcard(t[3]) if isPlayer(player) == TRUE then count = t[4] if(not t[4]) then count = 1 end if getPlayerItemCount(player, t[2]) > 0 then if doPlayerRemoveItem(player, t[2], count) then doPlayerSendCancel(cid, "Item Deletado.") else doPlayerSendCancel(cid, "Este player não esta quantidade.") end else doPlayerSendCancel(cid, "Este player não tem o item.") end end end elseif(table.isStrIn(param, config.search)) then if getPlayerGroupId (cid) >= 5 then local player = getPlayerByNameWildcard(t[3]) local result = db.getResult("SELECT name, online FROM players WHERE id IN (SELECT player_id FROM player_items WHERE itemtype = ".. t[2] ..");") local msg = "Resultados da busca pelo item ".. t[2] .." em seu banco de dados:\n\n" if result:getID() ~= -1 then while true do local name = result:getDataString("name") local online = result:getDataInt("online") msg = msg .. name .." [".. (online == 1 and "Online" or "Offline") .."]\n" if not result:next() then break end end else msg = msg .. "O item não foi encontrado em nenhum jogador." end doShowTextDialog(cid, t[2], msg) end end return true end Explicação: Quando o god digita: /p check, (PNAME) - Ele verifica os items que o player tem. /p del, (ID), (PNAME), (COUNT) - Ele deleta o item de determinado player (Se não colocar o count ele irá remover somente 1). /p search, (ID) - Ele verifica quantos players tem tal item e se está online. Créditos: Oneshot CaioODemais Comedinha (Bruno Carvalho)
  17. Versão testada: 9.4+ (Pode funcionar em anteriores) Descrição: O script de cadeia feito por FreaksOt onde eu modifiquei e fiz algumas alterações. Alterações: - Quando prende o player ele não fica mais em um local fixo, você pode configurar para coloca-lo em outras celas. - O tempo pode ou não ser fixo, é só você digitar /jail (nome do player) para um tempo fixo ou /jail (nome do player), (tempo) para coloca-lo com um tempo especifico. -- OBS: O tempo é posto em segundos. (120 segundos = 2 minutos) TAG: <talkaction log="yes" words="/jail;!jail;/prender;!prender;/unjail;!unjail;/desprender;!desprender" access="3" event="script" value="prisao.lua"/> Script: data/talkaction/prisao.lua grouprequired = 3 jailedstoragevalue_time = 1338 jailedstoragevalue_bool = 1339 local jailpos = { [1] = {x = 59, y = 52, z =6}, [2] = {x = 59, y = 52, z =5}, [3] = {x = 55, y = 47, z =6}, [4] = {x = 55, y = 47, z =5}, [5] = {x = 55, y = 52, z =6}, [6] = {x = 55, y = 52, z =5}, [7] = {x = 59, y = 47, z =5}, [8] = {x = 63, y = 52, z =5} } local unjailpos = { x = 63, y = 54, z =6 } jail_list = {} jail_list_work = 0 function checkJailList(param) addEvent(checkJailList, 1000, {}) for targetID,player in ipairs(jail_list) do if isPlayer(player) == TRUE then if getPlayerStorageValue(player, jailedstoragevalue_time) < os.time() then doTeleportThing(player, unjailpos, TRUE) setPlayerStorageValue(player, jailedstoragevalue_time, 0) setPlayerStorageValue(player, jailedstoragevalue_bool, 0) table.remove(jail_list,targetID) doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você saiu da cadeia, tente não fazer coisas malvadas da próxima vez para não ser preso novamente. Cuide-se amigo.') end else table.remove(jail_list,targetID) end end end function onSay(cid, words, param, channel) if(param == '') then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return true end local t = string.explode(param, ",") if jail_list_work == 0 then jail_list_work = addEvent(checkJailList, 1000, {}) end local jail_time = -1 for word in string.gmatch(tostring(t[1]), "(%w+)") do if tostring(tonumber(word)) == word then jail_time = tonumber(word) end end local isplayer = getPlayerByName(t[1]) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(t[1], string.len("jail_time")+1)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(t[1], string.len("jail_time")+2)) if isPlayer(isplayer) ~= TRUE then isplayer = getPlayerByName(string.sub(t[1], string.len("jail_time")+3)) end end end local default_jail = 30 if(t[2]) then default_jail = t[2] end if jail_time ~= -1 then jail_time = jail_time * 60 else jail_time = default_jail end if (words == '!prender' or words == '/prender') then if getPlayerGroupId(cid) >= grouprequired then if isPlayer(isplayer) == TRUE then doTeleportThing(isplayer, jailpos[math.random(#jailpos)], TRUE) setPlayerStorageValue(isplayer, jailedstoragevalue_time, os.time()+jail_time) setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 1) table.insert(jail_list,isplayer) doPlayerSendTextMessage (cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você prendeu o player: '.. getCreatureName(isplayer) ..' ate ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (agora é: ' .. os.date("%H:%M:%S", os.time()) .. ').') doPlayerSendTextMessage (isplayer, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce foi preso por '.. getCreatureName(cid) ..' ate ' .. os.date("%H:%M:%S", getPlayerStorageValue(isplayer, jailedstoragevalue_time)) .. ' (agora é: ' .. os.date("%H:%M:%S", os.time()) .. ').') else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Este jogador não existe ou esta offline.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem permissão para prender players.") end elseif (words == '!desprender' or words == '/desprender') then if getPlayerGroupId(cid) >= grouprequired then if isPlayer(isplayer) == TRUE then if getPlayerStorageValue(isplayer, jailedstoragevalue_bool) == 1 then doTeleportThing(isplayer, unjailpos, TRUE) setPlayerStorageValue(isplayer, jailedstoragevalue_time, 0) setPlayerStorageValue(isplayer, jailedstoragevalue_bool, 0) table.remove(jail_list,targetID) doPlayerSendTextMessage(isplayer, MESSAGE_STATUS_CONSOLE_ORANGE, 'O player '.. getCreatureName(cid) ..' te tirou da prisão. Te vejo em breve!!!') doPlayerSendTextMessage (cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você tirou da prisão o player: '.. getCreatureName(isplayer) ..'.') else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Este jogador não está preso.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Este jogador não existe ou esta offline.") end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem permissão para prender players.") end end return true end Config: local jailpos = { -- Local das selas onde o player vai aparecer. local unjailpos = { x = 63, y = 54, z =6 } -- Local onde ele irá sair. local default_jail = 30 -- Tempo padrão. Créditos: FreaksOt Comedinha (Bruno Carvalho)
  18. Atualizado para a versão mais recente. 9.81.
  19. Galera, está rolando outro open beta, http://alissow.sotserv.com/.
  20. Sim... Fica mais leve para a pasta do otserv.
  21. Se o problema acontece em todos os servidores você provavelmente terá de modificar as sources. E vai estar bugado em todos os outros que usarem além de você. Se for em um monstro especifico abra outro e baseie o loot nele.
  22. Não muda muita coisa, o meu somente pode colocar tudo em somente 1 script e não ficar criando outros. É um mais avançado que será lançado junto ao Alissow Server 5.0.
  23. comedinhasss

    Lol

    Cara, eu melhorei e estou ajudando pra caramba, se ninguem gosta de mim não estou nem ai. Vou tentar fazer o melhor.
  24. Sim, ele é o 2 distro mais usado no mundo. Vamos postar para o publico a versão 5.0 A 4.1 está para download.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...