Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''talkaction''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • xTibia - Notícias e Suporte
    • Regras
    • Noticias
    • Soluções
    • Projetos Patrocinados
    • Tutoriais para Iniciantes
    • Imprensa
  • OTServ
    • Notícias e Debates
    • OTServlist
    • Downloads
    • Recursos
    • Suporte
    • Pedidos
    • Show-Off
    • Tutoriais
  • OFF-Topic
    • Barzinho do Éks
    • Design
    • Informática

Encontrar resultados em...

Encontrar resultados que contenham...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


Sou

  1. Nome: Advanced Poll System Tipo: Talkaction Autor: Oneshot Fala, meus queridos. Peregrinando pela seção de Pedidos e Dúvidas, vi um pedido do membro sarioyana que despertou minha vontade de programar sistemas um pouco mais elaborados. O pedido dele se trata de um sistema de votação, onde o responsável pelo servidor pode iniciar uma votação com quantas opções desejar. Fiz algo bem simples, você só precisa configurar os storages no ínicio do script, caso você já esteja usando os que estão por padrão. Abra seu arquivo talkactions.xml e adicione isso: <talkaction log="yes" words="/newpoll;/endpoll" access="5" event="script" value="pollsystem.lua"/> <talkaction words="/vote;/poll" event="script" value="pollsystem.lua"/> Crie um novo arquivo chamado pollsystem.lua em data/talkactions/scripts e adicione isso: local POLL_STORAGE = 80000 local OPTIONS_STORAGE = 80001 local PLAYER_STORAGE = 80000 local function getTotalVotes() local options = table.unserialize(getStorage(OPTIONS_STORAGE)) local amount = 0 for _, option in ipairs(options) do amount = amount + option[2] end return amount end local function getMostVotedOption() local options = table.unserialize(getStorage(OPTIONS_STORAGE)) local value, ret = 0 for _, option in ipairs(options) do if option[2] > value then value = option[2] ret = option[1] end end return ret end function onSay(cid, words, param, channel) param = param or "" if param == "" and not words == "/poll" then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The command ".. words .." need parameters.") end local parameters, vote = {} if(words == "/newpoll") then if getStorage(POLL_STORAGE) ~= -1 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry, but there is a poll in progress.\nIf you want to start a new poll, type /endpoll.") end parameters = string.explode(param, ",") if #parameters < 3 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The command /newpoll needs a poll and at least two options.") end if parameters[1] then local options = {} for i = 2, #parameters do table.insert(options, {parameters[i], 0}) end if #options < 2 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Insert at least two options after the poll") end doSetStorage(POLL_STORAGE, parameters[1]) options = table.serialize(options) doSetStorage(OPTIONS_STORAGE, options) doBroadcastMessage("A new poll is in progress with the title '".. getStorage(POLL_STORAGE) .."?'!\nSee the status with /poll and vote with /vote.") end elseif(words == "/vote") then vote = tonumber(param) or -1 local options = table.unserialize(getStorage(OPTIONS_STORAGE)) if getStorage(POLL_STORAGE) == -1 then return doPlayerSendCancel(cid, "There is not a poll in progress.") end if vote == -1 then return doPlayerSendCancel(cid, "You need to choose a option to vote.") end if getCreatureStorage(cid, PLAYER_STORAGE) == 1 then print(getCreatureStorage(cid, PLAYER_STORAGE)) return doPlayerSendCancel(cid, "You cannot vote two times.") end if vote > #options then return doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) end options[vote][2] = options[vote][2] + 1 doSetStorage(OPTIONS_STORAGE, table.serialize(options)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have voted in the option ".. options[vote][1] .." successfully!") doCreatureSetStorage(cid, PLAYER_STORAGE, 1) elseif(words == "/poll") then local options = table.unserialize(getStorage(OPTIONS_STORAGE)) if getStorage(POLL_STORAGE) == -1 then return doPlayerSendCancel(cid, "There is not a poll in progress.") end local text = "ADVANCED poll SYSTEM\n\n".. getStorage(POLL_STORAGE) .."?\n" local count = 1 for _, option in ipairs(options) do text = text .."\n#".. count .." ".. option[1] .." ".. (getTotalVotes() == 0 and 0 or math.floor((option[2]/getTotalVotes()) * 100)) .."%\n" count = count + 1 end doPlayerPopupFYI(cid, text) elseif(words == "/endpoll") then if getStorage(POLL_STORAGE) == -1 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "There is not a poll to be ended.") end if not getMostVotedOption() then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Wait at least one vote to end this poll.") end doBroadcastMessage("The poll '".. getStorage(POLL_STORAGE) .."?' has been finished!\nThe most voted option was ".. getMostVotedOption() ..".") doSetStorage(POLL_STORAGE, -1) doSetStorage(OPTIONS_STORAGE, -1) for _, player in ipairs(getPlayersOnline()) do doCreatureSetStorage(player, PLAYER_STORAGE, -1) end db.executeQuery("UPDATE `player_storage` SET value = -1 WHERE `key` = ".. PLAYER_STORAGE ..";") end return true end E pronto, o sistema está instalado. Basta agora no jogo com um GOD digitar: /newpoll pergunta,opção1,opção2,opção3,... E para finalizar a enquete /endpoll Jogadores podem usar os comandos abaixo para visualizar o estado da enquete e votar, respectivamente. /poll /vote O comando /vote deve ser seguido do número da opção que aparece no comando /poll Irei postar em breve um vídeo, fiquem ligados. Um grande abraço.
  2. Ola galerinha xtibiana. Eu resolvi fazer uma versão superior do report system usando db. Segue o link da versão demo: http://www.xtibia.com/forum/topic/198470-report-sytem-beta/ Esta versão utiliza banco de dados assim fica mais fácil de manipular e o administrador poderá ver os reports "In-Game" além de que eles serão excluídos apos serem lidos. A lista e ordenada pelo level do player "evitando as vezes você ler primeiros possíveis floods". Vamos a instalação. Vá em lib e crie um arquivo lua chamado de report e coloque isto: function getReportByGuid(guid) local shop = db.getResult("SELECT * FROM `report` WHERE `id` = ".. guid ..";") return shop:getDataString("report") end function doPlayerAddReport(cid, report) db.executeQuery("INSERT INTO `report` (`id`, `report`, `level`) VALUES (" .. getPlayerGUID(cid) .. ", '" .. report .. "', " .. getPlayerLevel(cid) .. ");") return true end function showReports(cid) local rep = db.getResult("SELECT * FROM `report` WHERE `id` ORDER BY `level`") str = "Reports Ativos:\n\n" if rep:getID() == -1 then doShowTextDialog(cid, 1387, "Não ha reports disponiveis!") return true end while true do local list = rep:getDataString("report") local players = rep:getDataInt("id") local name = getPlayerNameByGUID(players) str = str .. list .. " -("..players..")- Name ("..name..")]\n\n" db.executeQuery("DELETE FROM `report` WHERE `id` = ".. players.." and `report` = '".. list .."';") if not rep:next() then doShowTextDialog(cid, 1397, str) break end end end Agora vá em talkactions e crie um arquivo LUA chamado de report e coloque este codigo: function onSay(cid, words, param, channel) local time = 4 ---- Exhaustion cada numeral equivale a 1 hora. if param == "" or not param or param == " " then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "E necessario escrever o report") and false end if exhaustion.get(cid, 23246) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você atingiu o limite de reports espere o limite sair") and false end if #param <= 4 then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O seu report deve conter mais de 4 caracteres") and false end exhaustion.set(cid, 23246, time*36000*1000) doPlayerAddReport(cid, param) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns seu report foi enviado para nosso banco de dados logo ele sera visto\nA equipe agradece") return true end Agora continue em talkactions e crie um arquivo lua chamado de logreport e coloque isto: function onSay(cid, words, param, channel) showReports(cid) return true end Agora vá em talkactions.xml e coloque esta tags: Dicas:
  3. Eai pessoal, há alguns dias eu fiz o Buy House totalmente em lua, e hoje então resolvi postar o script: O que ele faz: Compra a house quando o player estiver olhando na porta da house. Script: local function getBoolean(x) local e = false if type(x) == "boolean" then e = x else e = getBooleanFromString(x) end return e end function onSay(cid, words, param, channel) if not isPlayer(cid) or getBoolean(getConfigValue('buyableAndSellableHouses')) == false then return true end local pos = getPlayerLookPos(cid) local tile = getTileInfo(pos) if not tile then doPlayerSendCancel(cid, "You have to be looking at door of flat you would like to purchase.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return true end local house = getHouseFromPos(pos) if not house then doPlayerSendCancel(cid, "You have to be looking at door of flat you would like to purchase.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return true end local doorPos = getThingFromPos({ x=pos.x, y=pos.y, z=pos.z, stackpos=1}).itemid if not isItemDoor(doorPos) then doPlayerSendCancel(cid, "You have to be looking at door of flat you would like to purchase.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return true end local houseInfo = getHouseInfo(house) local guild = houseInfo.guildHall local guid = getPlayerGUID(cid) if guild == false then if getHouseByPlayerGUID(guid) then doTeleportThing(cid,getHouseEntry(getHouseByPlayerGUID(guid))) doPlayerSendCancel(cid, "You already rent another house.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return true end local accountHouses = tonumber(getConfigValue('housesPerAccount')) local account = getPlayerAccountId(cid) local housesInAccountsql = db.getResult("SELECT `p`.`account_id` FROM `houses` h LEFT JOIN `players` p ON `h`.`owner` = `p`.`id` WHERE `p`.`account_id` = " .. account .. " AND `guild` = 0;") local housesInAccount = housesInAccountsql:getID() == -1 and 0 or housesInAccountsql:getRows(free) housesInAccountsql:free() if accountHouses > 0 and housesInAccount >= accountHouses then doPlayerSendCancel(cid, "You may own only " .. accountHouses .. " house\'s per account.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return true end if getBoolean(getConfigValue('houseNeedPremium')) == true and not isPremium(cid) then doPlayerSendCancel(cid, RETURNVALUE_YOUNEEDPREMIUMACCOUNT) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return true end local levelToBuyHouse = tonumber(getConfigValue('levelToBuyHouse')) if getPlayerLevel(cid) < levelToBuyHouse then doPlayerSendCancel(cid, "You have to be at least Level " .. levelToBuyHouse .. " to purchase a house.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return true end else if not getPlayerGuildId(cid) or getPlayerGuildLevel(cid) ~= GUILDLEVEL_LEADER then doPlayerSendCancel(cid, "You have to be at least a guild leader to purchase a hall.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return true end local guildHouses = getPlayerGuildId(cid) local housesInGuildsql = db.getResult("SELECT `owner` FROM `houses` WHERE `owner` = " .. guildHouses .. " AND `guild` = 1;"):getRows(free) local housesInGuild = housesInGuildsql:getID() == -1 and 0 or housesInGuildsql:getRows(free) housesInGuildsql:free() if housesInGuild ~= 0 then doPlayerSendCancel(cid, "Your guild rents already another hall.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return true end end if getHouseOwner(house) ~= 0 then doPlayerSendCancel(cid, "This flat is already owned by someone else.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return true end if getPlayerMoney(cid) < getHousePrice(house) or not doPlayerRemoveMoney(cid, getHousePrice(house)) then doPlayerSendCancel(cid, "You do not have enough money.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return true end setHouseOwner(house, guid, true) local ret = "You have successfully bought this " if guild == true then ret = ret .. "hall" else ret = ret .. "house" end ret = ret .. ", remember to leave money at " if guild == true then ret = ret .. "guild owner " end if getBoolean(getConfigValue('bankSystem')) then ret = ret .. "bank or " end ret = ret .. "depot of this town for rent." doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, ret) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_BLUE) return true end Tag XML: <talkaction words="!buyhouse" filter="word-spaced" event="script" value="nome do seu script.lua"/> Como Funciona: O player fica em frente a porta da house, fala o comando, se estiver tudo certo ele compra a house. Bom é isso xP
  4. Descrição: é um comando para enviar items direto ao depot do jogador, mesmo ele estando online ou offline! Testado: em Versão Sqlite, não sei se suporta versão Mysql/Sql additemdepot.lua function doPlayerAddDepotItems(pid, item, count) --By magus and edited by vodkart local item,count = {item},{(count or 1)} for k,v in ipairs(item) do local ls = db.getResult("SELECT `sid` FROM `player_depotitems` WHERE `player_id` = "..pid.." ORDER BY `sid` DESC LIMIT 1") return db.executeQuery("INSERT INTO `player_depotitems` (`player_id`, `sid`, `pid`, `itemtype`, `count`, `attributes`) VALUES ("..pid..", "..(ls:getDataInt("sid")+1)..", 101, "..v..", "..count[k]..", '')") or false end end function onSay(cid, words, param) local t = string.explode(param:lower(),",") if not t[1] then doPlayerSendCancel(cid, "digite Nome, Item ID, quantidade.") return true elseif not getPlayerByNameWildcard(t[1]) and not getPlayerGUIDByName(t[1]) then doPlayerSendCancel(cid, "Você deve digitar um Nome Válido.") return true elseif not tonumber(t[2]) or not tonumber(t[3]) or tonumber(t[3]) < 1 or tonumber(t[3]) > 999 or not isItemStackable(t[2]) and tonumber(t[3]) > 10 then doPlayerSendCancel(cid, "você deve digitar NOME,ID,QUANTIDADE(maior que 0"..(not isItemStackable(t[2]) and " até 10 se não for empilhavel." or " até 1000 se for empilhavel.")..").") return true elseif not isItemMovable(t[2]) or not getItemNameById(tonumber(t[2])) then doPlayerSendCancel(cid, "Este item não existe ou não pode ser adicionado ao jogador.") return true end local player = getPlayerByNameWildcard(t[1]) if player then local parcel = doCreateItemEx(ITEM_PARCEL) if isItemStackable(t[2]) or tonumber(t[3]) == 1 then doAddContainerItem(parcel, t[2], t[3]) else for i = 1, t[3] do doAddContainerItem(parcel, t[2], 1) end end doPlayerSendMailByName(getPlayerNameByGUID(getPlayerGUIDByName(t[1])), parcel, 1) else local getPlayer = getPlayerGUIDByName(t[1]) if isItemStackable(t[2]) or tonumber(t[3]) == 1 then doPlayerAddDepotItems(getPlayer, t[2], t[3]) else for i = 1, t[3] do doPlayerAddDepotItems(getPlayer, t[2], 1) end end end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"você adicionou "..t[3].." "..getItemNameById(t[2]).." ao depot do jogador "..t[1]) return true end Tag <talkaction log="yes" access="5" words="/adddepot" event="script" value="additemdepot.lua"/> Exemplo de uso: /adddepot vodkart,2160,500 ou adddepot vodkart,2494,6
  5. Editado: Script com a versão 2 testado em outras versões de pokemon. Fiz o script para o player se movimentar sozinho (!walk). O Script pode conter alguns bugs pois testei pouco. Vá em data/talkactions/talkactions.xml e adicione: <talkaction words="!walk" event="script" value="walk.lua"/> Em data/talkactions/scripts/ crie um arquivo chamado walk.lua e adicione: V1: Testado apenas no pokemon DxP V3 V2: Testado em outras versões do pokemon. local function checkSpeed(cid) local playerSpeed = getCreatureSpeed(cid) local speed = 350 - (playerSpeed / 10) return speedendlocal function checkTile(cid, pos) if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return 1 else return doTileQueryAdd(cid, pos) endendlocal function walk(cid) if not isPlayer(cid) then return true end local speed = checkSpeed(cid) local poslook = getCreatureLookPosition(cid) if getPlayerStorageValue(cid, 43221) == 1 then if checkTile(cid, poslook) == 1 then doMoveCreature(cid, getPlayerLookDir(cid)) addEvent(walk, speed, cid) else setPlayerStorageValue(cid, 43221, 0) doPlayerSetNoMove(cid, false) end endendfunction onSay(cid, words, param) if getPlayerStorageValue(cid, 43221) == 1 then setPlayerStorageValue(cid, 43221, -1) doPlayerSetNoMove(cid, false) else setPlayerStorageValue(cid, 43221, 1) doPlayerSetNoMove(cid, true) local speed = checkSpeed(cid) addEvent(walk, speed, cid) endreturn trueend Usei uma formula que achei parecida com o movimento do player (voando e andando). Como é um script baseado em eventos, ele usa miliseconds e não consegui fazer usar a velocidade do player, caso acharem que a velocidade está baixa, alterem a linha abaixo para a formula desejada. local speed = 350 - (playerSpeed / 10) -- formula para o movimento.
  6. Galera, encontrei um dive por talk que está funcionando porém quando eu mergulho o pokemon morre e quando eu volto pra superficie eu não vou direto pro surf Script que faz o player mergulhar Script que faze o player emergir Se alguém puder me ajudar além do REP vai ganhar um Lugarzinho no meu coração haha ❤️
  7. -= Advanced Reset System 2.0 =- By: MarcelloMkez Fala galerinha, to aqui dinovo , mas agora e com a versão 2.0 do meu 'Advanced Reset System'. E como prometido, trazendo algumas novidades: _________________________________________________________________________________________________________________________________ - Resets agora armazenados diretamente na 'DataBase', acabando com o sistema de Storages, e com o problema dos resets atrasados no look; - Opções para Abilitar e Desabilitar Condições como por exemplo: 'look = true' , [true,false] configurando como achar melhor; - E agora '[sTAGES]', para 'premmy' (Premium Account) e 'free' (Free Account); - Instala o System e cria a Tabela de Resets com o comando "/installreset"; OBS: Sistema testado em 'Mysql' não tenho certeza si funciona em 'sql'; e Testando em: 8.50 (TFS 0.3.6) e 8.6 (TFS 0.4.0) __________________________________________________________________________________________________________________________________ Vá em data/Talkactions, e crie um arquivo .lua e nomeie para advancedResetSystem.lua e Adicione Isso: --[[ <(Advanced Reset System 2.0)> Autor: MarcelloMkez. Contato: (marcello_dirt@hotmail.com) Versão: 2.0 Testado em: 8.50 e 8.60 TFS: 0.3.6 and 0.4.0 Fórum: http://www.xtibia.com/forum/topic/142463-advanced-reset-system-20/ -=[Características]=- ~( Versão 2.0 )~ - Resets agora Armazenados na DataBase; (Sem Valor de Storage) - Instala o System e cria a Tabela de Resets com o comando "/installreset"; - Resets no Look do jogador ex: 22:10 You see Marcello [Reset 2] (Level 8). He is an elder druid.; - [sTAGES] para "Premium Account" e "Free Account"; ]] --=[Functions]=-- -- installReset()' [instala o Sistema.] -- tableResetInstall()' [Verifica Se o Sistema ja foi instaladao.] -- nowReseting()' [Verifica, retorna o erro ou reseta.] -- getPlayerReset(cid)' [Pega numero de resets do player.] -- checLevelStageReset(cid)' [Verifica o Level para Resetar.] -- newReset(cid)' [Verifica todas as Condições de Reset.] -- addValue(value)' [Adiciona numero de resets.] --=[Comandos de Jogadores]=-- -- "/installreset" -- Só será usado uma vez, para instalar o sistema. -- "!resetar" -- Para Resetar. function onSay(cid, words, param) if words =="!resetar" then --[ Condições de Reset ] -- local coNdConf = { needPz = true, -- Precisa estar em Pz pra resetar? [true, false] needPa = false, -- Precisa ser Premium Account Pra resetar? [true, false] withe = false, -- Players com Pk Withe podem resetar? [true, false] red = false, -- Players com Pk Red pode resetar? [true, false] battle = false, -- Players precisão estar sem battle pra resetar? [true, false] teleport = true, -- Teleportar Player para o templo após resetar? [true, false] look = false, -- Aparecer Resets no Look do Player? [true, false] pid = getPlayerGUID(cid), -- Não Mexer. --[ Configurações do Reset ] -- resetConf = { Level = 350, -- Level Necessário para Resetar. [Valor] backLvl = 8, -- Level que voltará após o Reset. [Valor] time = 5, -- Tempo para o Player deslogar ao resetar, em segundos. [Valor] }, } --[[>> STAGES <<]]-- x=true;X=true -- Não Mexer. local stage = {Abilitar = {x}, Desabilitar = {}, --<< Abilitar Stages?? >>-- [{x};{}] -- [RESETS] | [PREMMY] | [FREE] stage1= {resets= 4, premmy= 330, free= 350}, stage2= {resets= 9, premmy= 340, free= 355}, -- EXPLICANDO e Configurando stages. (Se estiver Abilitado [Abilitar = {x}]) stage3= {resets= 14, premmy= 355, free= 360}, -- resets = Número de resets para o Stage; stage4= {resets= 19, premmy= 360, free= 365}, -- premmy = Level necessário para Premium Accounts; stage5= {resets= 24, premmy= 370, free= 380}, -- free = Level necessário para Free Accounts; stage6= {resets= 29, premmy= 380, free= 390}, -- Coloque em Ordem... stage7= {resets= 35, premmy= 400, free= 410}, -- [OBS: MARQUE UM "X" PARA ABILITAR OU DESABILITAR OS STAGES] stage8= {resets= 40, premmy= 410, free= 440}, -- EX: para desabilitar mude: Abilitar = {}, Desabilitar = {x} stage9= {resets= 45, premmy= 450, free= 450}, stage10={resets= 50, premmy= 465, free= 465}, } --[[>> FIM STAGES <<]]-- --=[Pega Valor de Resets]=-- function getPlayerReset(cid) local qr = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";") rss = qr:getDataInt("reset", coNdConf.pid) if rss < 0 then rss = 0 end return rss end local success = " ~~ Sucesso! ~~ \nVocê tem agora "..(getPlayerReset(cid)+1).." resets. \nVocê será deslogado em "..coNdConf.resetConf.time.." segundos." ;err = doPlayerSendTextMessage local qrt = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";");rss_db = qrt:getDataInt("reset", coNdConf.pid) local lvl_query = "UPDATE `players` SET `level` = "..(coNdConf.resetConf.backLvl)..", `experience` = 0 WHERE `id`= " .. coNdConf.pid .. ";" local reset_query = "UPDATE `players` SET `reset` = "..(getPlayerReset(cid)+(1)).." WHERE `id`= " .. coNdConf.pid .. ";" local nolook_query = "UPDATE `players` SET `description` = '' WHERE `players`.`id`= " .. coNdConf.pid .. ";" local look_query = "UPDATE `players` SET `description` = ' [Reset "..(getPlayerReset(cid)+(1)).."]' WHERE `players`.`id`= " .. coNdConf.pid .. ";" --=[Reseta]=-- function addValue(value) if coNdConf.look == false then doRemoveCreature(cid) db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(nolook_query) else doRemoveCreature(cid) db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(look_query) return LUA_NO_ERROR end end function nowReseting() if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Level Necessário Para o Reset ["..coNdConf.resetConf.Level.."]. Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." level's para você Resetar. -") return true end if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then doPlayerPopupFYI(cid, success) addEvent(addValue, coNdConf.resetConf.time*1000, value) else doPlayerPopupFYI(cid, success) addEvent(doTeleportThing, coNdConf.resetConf.time*900, cid, getTownTemplePosition(getPlayerTown(cid))) addEvent(addValue, coNdConf.resetConf.time*1000, value) return true end end --[sTAGES Nao mexer em nada.]-- function checkLevelStageReset(cid) local stages = { {resets= stage.stage1.resets, premmy= stage.stage1.premmy, free= stage.stage1.free}, {resets= stage.stage2.resets, premmy= stage.stage2.premmy, free= stage.stage2.free}, {resets= stage.stage3.resets, premmy= stage.stage3.premmy, free= stage.stage3.free}, {resets= stage.stage4.resets, premmy= stage.stage4.premmy, free= stage.stage4.free}, {resets= stage.stage5.resets, premmy= stage.stage5.premmy, free= stage.stage5.free}, {resets= stage.stage6.resets, premmy= stage.stage6.premmy, free= stage.stage6.free}, {resets= stage.stage7.resets, premmy= stage.stage7.premmy, free= stage.stage7.free}, {resets= stage.stage8.resets, premmy= stage.stage8.premmy, free= stage.stage8.free}, {resets= stage.stage9.resets, premmy= stage.stage9.premmy, free= stage.stage9.free}, {resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free}, } local resets = getPlayerReset(cid) for i, tab in ipairs(stages) do if resets <= tab.resets then coNdConf.resetConf.Level = isPremium(cid) and tab.premmy or tab.free break end end if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then err(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Level Necessário Para o Reset ["..coNdConf.resetConf.Level.."]. Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." level's para você Resetar. -") return TRUE end if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then doPlayerPopupFYI(cid, success) addEvent(addValue, coNdConf.resetConf.time*1000, value) else doPlayerPopupFYI(cid, success) addEvent(addValue, coNdConf.resetConf.time*1000, value) addEvent(doTeleportThing, coNdConf.resetConf.time*900, cid, getTownTemplePosition(getPlayerTown(cid))) return true end end function newReset(cid) if(coNdConf.needPz == true) and (getTilePzInfo(getCreaturePosition(cid)) == LUA_ERROR) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar em Protection Zone Para Resetar. -") return TRUE end if(coNdConf.needPa == true) and not isPremium(cid) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa ser Premium Account para Resetar. -") return TRUE end if(coNdConf.withe == false) and (getCreatureSkullType(cid) == 3) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Withe. -") return TRUE end if(coNdConf.red == false) and (getCreatureSkullType(cid) == 4) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Red. -") return TRUE end if(coNdConf.battle == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar sem Battle para Resetar. -") return TRUE end local xy = {true,false} table.insert(stage.Abilitar, false) table.insert(stage.Desabilitar, false) if stage.Abilitar[1] == xy[1] and stage.Desabilitar[1] == xy[2] then checkLevelStageReset(cid) elseif stage.Abilitar[1] == xy[2] and stage.Desabilitar[1] == xy[1] then nowReseting() else doPlayerPopupFYI(cid, "LUA_ERROR; Configure corretamente o Sistema de STAGES!") end return true end function tableResetInstall() print(not rss_db and LUA_ERROR or "Tabela de Resets: Instalada ... [success] ") addEvent(newReset, 1000, cid) return false end if tableResetInstall() then end end --=[install System]=-- function installReset() if db.executeQuery("ALTER TABLE `players` ADD reset INT(11) NOT NULL DEFAULT 0;") then print("[MarcelloMkez] -= Advanced Reset System 2.0 por DataBase =- Instalado com sucesso!") return TRUE end print('[Advanced Reset System/MarcelloMkez] Não foi possível instalar o Sistema.') return FALSE end local tt = { "Preparando Instalação...", "Instalando: TableReset Db...", "Instalando: getPlayerReset()...", "Instalando: addValue()...", "Instalando: checkLevelStageReset()...", "Instalando: newReset() and nowReseting()...", "Finalizando Instalação...", "...", success = { "Iniciando...", "function: TableReset Db... [success]", "function: getPlayerReset()... [success]", "function: addValue(value)... [success]", "function: checkLevelStageReset()... [success]", "function: newReset() and nowReseting()... [success]", "Fim da Instalação. ", "by: ~~ MarcelloMkez ~~ \nContato: marcello_dirt@hotmail.com", inst = {"MarcelloMkez","Advanced Reset System 2.0 por DataBase" }, }, } if words == "/installreset" and getPlayerAccess(cid) >= 3 then function install() if installReset() then print(""..tt.success[7].."") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,""..tt.success[8].."") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "["..tt.success.inst[1].."] -="..tt.success.inst[2].."=- Instalado com sucesso!") else print("["..tt.success.inst[1].."] FALHA NA INSTALAÇÃO! [O sistema ja foi instalado].") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "["..tt.success.inst[1].."] FALHA NA INSTALAÇÃO! [O sistema ja foi instalado].") end return 1 end function concl(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[7].."") print(""..tt[8].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[7].."") doPlayerSendTextMessage(cid, typetx,""..tt[8].."") addEvent(install, 1000,cid) end function finall(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[6].."") print(""..tt[7].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[6].."") doPlayerSendTextMessage(cid, typetx,""..tt[7].."") addEvent(concl, 3000,cid) end function installDd(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[5].."") print(""..tt[6].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[5].."") doPlayerSendTextMessage(cid, typetx,""..tt[6].."") addEvent(finall, 1000,cid) end function installCc(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[4].."") print(""..tt[5].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[4].."") doPlayerSendTextMessage(cid, typetx,""..tt[5].."") addEvent(installDd, 1000,cid) end function installBb(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[3].."") print(""..tt[4].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[3].."") doPlayerSendTextMessage(cid, typetx,""..tt[4].."") addEvent(installCc, 1000,cid) end function installAa(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[2].."") print(""..tt[3].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[2].."") doPlayerSendTextMessage(cid, typetx,""..tt[3].."") addEvent(installBb, 1000,cid) end function toInstall() local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[1].."") print(""..tt[2].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[1].."") doPlayerSendTextMessage(cid, typetx,""..tt[2].."") addEvent(installAa, 1000,cid) end function preparation() local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt[1].."") doPlayerSendTextMessage(cid, typetx,""..tt[1].."") addEvent(toInstall, 3000,cid) end if preparation() then end end return 1 end --=[by: MarcelloMkez]=-- E em Talkactions.xml adicione isso: <talkaction words="!resetar;/installreset" event="script" value="advancedResetSystem.lua"/> Instalando o Sistema - Após adicionar o script em TalkActions e em Talkactions.xml Use o comando "/installreset" em jogo, OBS: o System so pode ser Instalado pelo GOD! A a instalação será mostrada no default, e no Distro! Apos isso, Sistema Instalado! 'Explicando stages: Stage 1: stage1= {resets= 4, premmy= 330, free= 350}, resets: ---- Quantidade de Resets para o stage. premmy: ---- Level que Premmium Accounts podera Resetar. (no caso ate 4 resets) free: ------ Level que Free Accounts podera Resetar. (no caso ate 4 resets) --- Bom como vcs pode ver, vai ate o 'Stage 10': stage10={resets= 50, premmy= 465, free= 465}, --- Intao irei explicar, caso queiram adicionar mais stages... Use 'Ctrl + G' com o script aberto, e digite 71, e aperte enter, logo ira direcionar para linha 71 que no caso é esta: stage10={resets= 50, premmy= 465, free= 465}, - Abaixo dela adicione uma exatamente igual, so modificando o numero do stage ficando assim: stage10={resets= 50, premmy= 465, free= 465}, stage11={resets= 55, premmy= 465, free= 465}, Agora na linha 134 vai ta esta: {resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free}, Voce faz a mesma coisa adicionando embaixo da linha 134 porem mudando os numeros, ficando assim: {resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free}, {resets=stage.stage11.resets, premmy=stage.stage11.premmy, free=stage.stage11.free}, Pronto, Ja esta adicionado o 'Stage 11' xD, Assim voce pode adicionar quantos stages quiser, basta configurar corretamente... Mais duvidas postem aqui. Aqui termino o post! espero que gostem, grato: ~~MarcelloMkez~~
  8. Olá amigos do Xtibia, venho trazer um tutorial simples, mas interessante, que exibe uma caixa de diálogo com texto contendo todas as quests do seu servidor. Atenção: Testado somente em TFS 0.3/0.4 Vamos lá! Vá em Data/Talkactions/Scripts e crie um arquivo.lua chamado quest_log.lua e adicione o script: ---------------- QUEST LOG BY YAN18 ----------------- -- NOME DA QUEST NO ÍNDICE, O NÍVEL E STORAGE NO VALOR -- local quests = { ["Cerulean City"] = {level = 30, storage = 32500}, ["Fire Stone"] = {level = 50, storage = 32501}, ["Boost Machine"] = {level = 100, storage = 32502} } function onSay(cid, words, param) local quest_completada = "- Quests completadas: \n\n" local quest_incompleta = "\n- Quests não completadas: \n\n" for i, _ in pairs (quests) do if (getPlayerLevel(cid) >= quests[i].level) and (getPlayerStorageValue(cid, quests[i].storage) < 1) then quest_incompleta = quest_incompleta .. "* " ..i.. " - Nível: " ..quests[i].level.. " \n" elseif (getPlayerLevel(cid) >= quests[i].level) and (getPlayerStorageValue(cid, quests[i].storage) >= 1) then quest_completada = quest_completada .."* " ..i.. " - Nível: " ..quests[i].level.. " \n" end end if quest_completada == "- Quests completadas: \n\n" then quest_completada = quest_completada .. " Nenhuma quest foi completada ainda. \n\n" elseif quest_incompleta == "\n- Quests não completadas: \n\n" then quest_incompleta = quest_incompleta .. " Todas as quests foram completadas." end local quest = quest_completada .. quest_incompleta return doShowTextDialog(cid, 1811, quest) end Agora abra o talkactions.xml que fica em Data/Talkactions/talkctions.xml e adicione a tag: <talkaction words="!quest" event="script" value="quest_log.lua"/> Deixei o comando !quest ali em words na tag xml, mas você pode colocar outro comando de sua preferência. Explicação: Adicione todas as quests do servidor na tabela quests, colocando o nome dela como índice, o level e storage (preste bem atenção para colocar a storage correta) como valores. Em caso de dúvidas, só seguir o exemplo que fiz. Também fiz verificação para ver se todas as quests do jogo (que você colocar na tabela) foram feitas ou não, e também fiz verificação de nível do jogador por quest, ou seja, os jogadores só verão as quests que eles tem nível para fazer. De resto não tem muito o que mexer, só se quiser reduzir ou aumentar a quantidade de espaço entre as linhas, mas ai é da preferência de cada um. Caso queira retirar a verificação de nível do jogador (pare verem todas as quests) só mudar isso: for i, _ in pairs (quests) do if (getPlayerLevel(cid) >= quests[i].level) and (getPlayerStorageValue(cid, quests[i].storage) < 1) then quest_incompleta = quest_incompleta .. "* " ..i.. " - Nível: " ..quests[i].level.. " \n" elseif (getPlayerLevel(cid) >= quests[i].level) and (getPlayerStorageValue(cid, quests[i].storage) > 1) quest_completada = quest_completada .."* " ..i.. " - Nível: " ..quests[i].level.. " \n" end end Para isso: for i, _ in pairs (quests) do if getPlayerStorageValue(cid, quests[i].storage) < 1 then quest_incompleta = quest_incompleta .. "* " ..i.. " - Nível: " ..quests[i].level.. " \n" else quest_completada = quest_completada .."* " ..i.. " - Nível: " ..quests[i].level.. " \n" end end Se fizer tudo corretamente, é para aparecer essa janela com as informações e nível da(s) quest(s): Essa janela é criada na função doShowTextDialog, e o segundo parâmetro dela é um item que aparece como ícone, geralmente deixam 0 (e recomendo deixar 0 como padrão), mas tem base que o id do item 0 aparece como algum item do jogo (as vezes montanhas ou outros itens de ambiente), então deixei um blackboard, até para ficar mais coerente hehe. Você também pode criar um item para representar essa janela, mas vai da preferência e criatividade de cada um. Se você tiver source, pode até criar uma janela com título de "Quests" para ficar mais bonito a interface, mas vai de cada um. OBS: Em alguns servidores pode ser que dê crash na distro por conta do item passado no segundo parâmetro da função doShowTextDialog(cid, id_item, texto), precisa ficar atento nisso. Qualquer dúvida só perguntar! Abraços e fiquem com Deus!
  9. Tutorial refeito em: https://www.xtibia.com/forum/topic/251549-quest-log-em-janela/?tab=comments#comment-1759135
  10. Olá! Estava perambulando por aí e vi que muitas pessoas querem o sistema de trade off para o 1.2. Haja visto que não fora encontrado na internet, resolvi modificá-lo e trazer ao ekz. Sem mais delongas, vamos a instalação: em data/talkactions/talkactions.xml abra o arquivo e adicione a seguinte: <talkaction words="!oferta" separator=" " script="trade_site.lua" /> Agora, vá para data/talkactions/scripts crie um arquivo chamado trade_site.lua e coloque este código dentro: Para visualizar, clique aqui. Pronto. A parte "lua" foi feita. Agora, vamos para a parte do website. Em seu banco de dados, execute a seguinte query: CREATE TABLE `auction_system` ( `id` int(11) NOT NULL auto_increment, `player` int(11), `item_id` int(11), `item_name` varchar(255), `count` int(11), `cost` int(11), `date` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; Logo depois, execute essa: ALTER TABLE `players` ADD `auction_balance` INT( 11 ) NOT NULL DEFAULT '0'; A parte do mysql está concluída. Agora vamos para à criação do arquivo. Na pasta do seu site crie um arquivo chamado trade_site.php, em seguida adicione o code: http://pastebin.com/bBR6nnGz Em layouts.php adicione: <a href='?subtopic=trade_site'> <div id='submenu_trade_site' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'> <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> <div id='ActiveSubmenuItemIcon_experiencetable' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> <div class='SubmenuitemLabel'>Trade Off</div> <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> </div></a> Após realizar todos estes processos, basta utilizar os seguintes comandos no jogo: !oferta add, itemName, itemPrice, itemCountexemplo: !oferta add,plate armor,500,1!oferta comprar,AuctionIDexemplo: !offer comprar,1943!oferta remover,AuctionIDexemplo: !oferta remover,1943!oferta sacar, qtdUse este comando para sacar uma determinada quantidade de gps.!oferta saldoUse este comando para saber seu saldo de vendas.!oferta infoUse este comando caso tenha dúvidas para utilizar os comandos acima. Logs de atualização(ões)! v1.0.190% dos erros reportados foram corrigidos. São eles: °Você ter o item e ele reporta que não tem. °Colocar quantidade ilimitada de itens. Limite agora funcional. °Itens proibidos não podem mais ser colocados à venda. °Entre outros erros de programação arrumados.v2.0°Erros até então reportados arrumados. °Novos comandos: !oferta saldo e !oferta info °Comando !oferta sacar alterado para !oferta sacar, qtd °Novas mensagens. °Conteúdo totalmente traduzido. Espero que seja útil! Att, Lumus Créditos por criar: vDk otland. Ps.: não sou especialista em lua, se alguém se disponibilizar a melhorar, e otimizar o scripts, sinta-se à vontade.
  11. Pessoal, acabo de inventar um system de correr que é uma talkaction, e não spell. Vamos ao script: 1° - Vá na pasta do seu ot/data/talkactions/scripts, adicione um arquivo chamado correr.lua, abra-o e coloque isso dentro: 2° - Vá em talkactions.xml, abra em forma de bloco de notas e adicione isso la dentro: Pronto, script feito, se quiser adicionar algo a + nele, tipo, uma mensagem quando a pessoa falar correr, é só adicionar essa linha: Se quiser mudar a velocidade que a pessoa ganha, é só mudas o número 1000000 por qualquer outro que você quiser. Se quiser que seja somente para premium, adicione isso na seguna linha (dps de function onSay(cid, words, param)): Gostaram do script? Rep + E pessoal, não copiei de ninguém, mas por o script ser muito simples, várias pessoas já devem ter...
  12. Olá galerinha, eu tava sem fazer nada, e resolvi trazer um sistema de duelo, que conta vitorias e derrotas. Eu achei que seria bem legal, os jogadores chamando os outros para um duelo limpo e talz. , SISTEMA 100% Meu. Testado no TFS By OrochiElf v1.0 Bom, no sistema tem as seguintes funçoes : Invite, -- Convida para o duelo Accept, -- Aceita o convite Recuse, -- Recusa o Convite Cancel, -- Cancela o convite Check, -- Verifica quem voce convidou ou quem te convidou Status -- Checa a vitoria e a derrota Como usar : /duel comado, player Exemplo : /duel invite, Tony /duel accept, Tony /duel recuse, Tony /duel cancel, Tony /duel check /duel status, Tony Bom, vamos a instalaçao. primeiro, vá em data/talkaction/script, crie um arquivo chamado : duel.lua e adicione dentro http://pastebin.com/3HUMPCYs TAG <talkaction words="/duel" hide="yes" event="script" value="duel.lua"/> Agora vamos em creaturescript/scripts e dentro crie um arquivo chamado dueldie.lua e dentro adicione http://pastebin.com/QH2UeQTR Em login.lua, antes do ultimo return true, adicione registerCreatureEvent(cid, "DuelDie") TAG <event type="death" name="DuelDie" event="script" value="dueldie.lua"/> Qualquer bug, avise.
  13. Faaala galera!!! Bom, vamos lá a mais um script que eu fiz agora a tarde. Antes de vocês falarem que já existe, eu quero dizer que eu fiz esse script agora a tarde sem nem olhar para os scripts de cadeia já existentes e que só fiz este script, porque um cara da seção de pedidos me pediu ajuda. O script que eu fiz é diferente dos já existentes, porque é possível especificar o tempo e o motivo pelo próprio comando. Primeira Versão: Segunda Versão: Fase de Testes O que mudou: Na primeira versão a cadeia é por tempo, e você configura o tempo no próprio comando da talkaction. Na segunda versão a cadeia é por fiança, você estipula um valor de fiança e o jogador não pode sair de lá até ter sua fiança paga, ou ele mesmo pagar sua própria fiança. Mais algumas informações de rotina: Servidor Testado: New Styller Yourots 0.7.5 Acho que é isso, se tiver algum erro se manifestem, até mais.
  14. Vá até "Data > Talkactions" no arquivo "Talkactions.xml" adicione a seguinte linha: <talkaction words="/emptyhouses" script="mhi.lua" /> Em seguida "Data > Talkactions > Scripts" e crie "mhi.lua" e adicione: function onSay(player, words, param) if not player:getGroup():getAccess() then return true end for _, house in ipairs(Game.getHouses()) do if house:getOwnerGuid() == 0 then -- else house:setOwnerGuid(0) house:setAccessList(256, "") house:setAccessList(257, "") house:setAccessList(1, "") end end print("Items moved to depot.") return false end Verifique se o jogador que executa o comando tem acesso. Quando o proprietário é definido como "0", todos os itens são movidos para o depósito do proprietário. Créditos: kito2 .
  15. Galera, esse talkaction funciona da seguinte forma, se você não tiver dinheiro no inventario do personagem e tiver no banco, o talkaction remove o dinheiro do banco automaticamente e te dá as blessings. --[[ Desenvolvido por Farathor (Eduardo Rodrigues) ]] --local bless = {1, 2, 3, 4, 5} local cost = 100000 function onSay(cid, words, param) for i = 1, table.maxn(bless) do if(getPlayerBlessing(cid, bless[i])) then doPlayerSendCancel(cid, "Você já comprou todas as blessings possíveis.") return true end end if getPlayerMoney(cid) >= cost then doPlayerRemoveMoney(cid, cost) for i = 1, table.maxn(bless) do doPlayerAddBlessing(cid, bless[i]) [ end doCreatureSay(cid, "Blessed!" ,19) doSendMagicEffect(getPlayerPosition(cid), 49) elseif getPlayerBalance(cid) >= cost then doPlayerSetBalance(cid, getPlayerBalance(cid) - cost) for i = 1, table.maxn(bless) do doPlayerAddBlessing(cid, bless[i]) end doCreatureSay(cid, "Blessed!" ,19) doSendMagicEffect(getPlayerPosition(cid), 49) else doPlayerSendCancel(cid, "Você não possuí dinheiro suficiente para pagar a bless (100k).") end return true end
  16. Eae Galerinha do Xtibia, estou aqui para trazer um "Sistema" que não achei no fórum e fuçando aqui acabei encontrando, O sistema serve para deixar as skills e o Goback "Vá Charmander", em laranja seguindo a imagem: http://imgur.com/a/MoN1I http://imgur.com/a/KCN7j Então vamos ao assunto... Primeiramente vá em "Data/lib", abra o arquivo some functions.lua e procure por: doCreatureSay(cid, mbk, TALKTYPE_SAY) e mude para: doCreatureSay(cid, mbk, TALKTYPE_ORANGE_1) Até aqui editamos só para ficar em laranja o Soltar e Voltar o Pokemon... Para mudar as skills vá em "Data/Talkactions" abra o arquivo move1.lua e procure por: doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_SAY) e mude para para: doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_ORANGE_1) e para mudar o soltar o pokemon para ficar em laranja vá em "Actions" abra o arquivo Goback.lua e procure por "doCreatureSay(cid, mgo, TALKTYPE_SAY)",e troque por "doCreatureSay(cid, mgo, TALKTYPE_ORANGE_1) é isso então qualquer erro deixe ai que eu tento ajudar :3, lembrando que não sou "Scripter", eu só entendo um pouco. OBS: Testado apenas em PDA, e desculpe pela mal organização não sei colocar Spoiler, deixa ai nos comentários como faz que eu edito o tópico. OBS: Meu servidor https://www.facebook.com/pokemonlegendaryy/ /\/\/\/\/\//\/\/\/\//\/\/\/\/\/\ O server está em manutenção mais fique ligado para quando voltar. Se Ajudei REP+.
  17. Olá galera. Teria como eu executar uma talkaction "/Castle Start" por uma globalevent numa determinada hora do dia "18:00" sem a presença do god online???? Ajudem, +rep pra qualquer tipo de dicas!!!! Obrigado
  18. Como funciona? Bounty System é um script que visa o pvp. Um player diz o comando /bounty [prize],[nick]. e a partir daí o player que foi colocado em [nick] passa a ser procurado, e o primeiro a matá-lo ganha uma recompensa. Vamos lá... Execute os comandos em seu PhpMyAdmin: Vá em data/creaturescripts/scripts/,e crie um arquivo bounty.lua e cole isto: Vá em data/creaturescripts/scripts/ e coloque isto em login.lua : Vá em data/talkactions/talkactions.xml e coloque:
  19. Bom galera eu estou precisando de uma script para poder comprar item por talkactions, procurei no fórum e não achei nada a respeito. tipo se alguma pessoa digitar !booststone e tiver o item certo para efetuar a compra, ela recebe a stone no inventorio. Acho que é só mais isso mesmo, desde já agradeço. REP+
  20. FALA FAMILIA XTIBIA, QUERIA MUITO ESSE SCRIPT.. EX:. AO CLICAR NA PORTA OU PASSAR NO PISO, APARECESSE " VOCÊ SÓ PODE PASSAR COM X RESETS". E QUERIA CRIAR VÁRIOS LOCAIS COM ESSE TIPO DE SCRIPT MUDANDO SÓ OS RESETS! MEU SISTEMA DE RESET.LUA QUEM PODER AJUDAR, AGRADEÇO. ABRAÇOS!
  21. Ola Galera venho aqui posta um system de vip criador por EddyHavoc (TibiaKing) então decidir reviver o tropico com a autorização do EddyHavoc Versão Testada:TFS 0.3.6 - 8.54 - 8.60 Creditos pelas modificações: Kydrai,Nicekid e Marcryzius e EddyHavoc Creditos pelas publicações: EddyHavoc e Vodkart Contem - Compra Vip pela talkaction ( Comando !buyvip ) -- ou sem o comando. - Tile para somente Players Vip passarem ( conta também com função os.time ) - verifica quantos dias de Vip o character ainda possui. - Administradores (GOD) podem adicionar e remover dias de Vip para characters. -- Administradores (GOD) podem checar dias de Vip dos Players. -- É adicionado [VIP] ao nome e retirado quando a vip Acabar. GOD Adicionando e Removendo dias de Vip Comprando VIP e Checando dia da sua VIP Quote Comando: comprar vip: !buyvip checkar dias de vip: !vipdays God checkar dias de vip do character: /checkvip Nick exemplo: /checkvip Nicekid God adionar dias ao character: /addvip Nick,dias exemplo: /addvip Nicekid,5 aqui adicionei 5 dias de vip. God Retirar dias de Vip do character: /delvip Nick,dias exemplo: /delvip Nicekid,5 aqui retirei 5 dias de vip. Primeiro passo vá até talkactions/scripts Crie um arquivo.lua e renomeie para systemvip.lua dentro coloque: Price : Custo em gp da vip days : quantos dias sera adicionado apos o player fala !buyvip Vá em talkactions.xml e adicione esta tag. <talkaction words="!vipdays;!buyvip;/checkvip;/addvip;/delvip" script="systemvip.lua"/> Tile "PISO" VIP Vá em movements/scripts crie um arquivo e coloque isto dentro Agora vá em movements.xml e adicione esta tag. <movevent type="StepIn" uniqueid="13700" event="script" value="vipe.lua"/> FIM DA VIP creaturescript/script crie um arquivo.lua e renomeie para endvip.lua e cole isso dentro dele: Vá em creaturescript.xml e adicione esta tag. <event type="login" name="CheckVip" script="endvip.lua"/> Pronto seu vip foi feito com sucesso !
  22. E aí galera, beleza? Venho trazer esse script aqui que eu encontrei num server que eu baxei (não sei quem é o autor), e achei muito interessante. O que ele faz? Se você for GOD, ele cria um TP com as coordenadas digitadas no param da talkaction na sua frente, desde que a posição na sua frente não seja um player ou um item não~tile. function onSay(player, words, param) if player:getAccountType() < ACCOUNT_TYPE_GOD then return true end local split = param:split(",") if tonumber(split[3]) == nil then player:sendCancelMessage("Insufficient parameters.") return false end local msg = nil for i = 1, #split do split[i] = tonumber(split[i]) end local direction = { [0] = function(ps) ps.y = ps.y - 1 return ps end, [1] = function(ps) ps.x = ps.x + 1 return ps end, [2] = function(ps) ps.y = ps.y + 1 return ps end, [3] = function(ps) ps.x = ps.x - 1 return ps end } local teleporter = direction[player:getDirection()](player:getPosition()) if isCreature(Tile(teleporter):getTopCreature()) then msg = "You cannot create a teleport on top of a player." end if Tile(teleporter):getTopDownItem() then msg = "You cannot create a teleport on top of an item." end if not msg then msg = "Teleport created to cordinates: {X: "..split[1].." Y: "..split[2].." Z: "..split[3].."}." doCreateTeleport(1387, {x = split[1], y = split[2], z = split[3]}, teleporter) end player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, msg) return falseend Créditos: ???, se alguém souber favor dizer
  23. Olá, tem vários comandos !eject pelo fórum, porém nenhum dos que encontrei funcionou comigo, talvez pelo fato de eu usar SQLITE. Precisava muito desse comando no meu servidor, alguém possui um que funcione com SQLITE?
  24. Olá xTibianos, eu to com um bug muito tenso em um script (ou os dois?) eu uso um script de transformação que mantem as cores que o player usa na roupa, antes do player se transformar ele pode mudar as cores à vontade que as cores vão mudar na hora, mas depois que ele se transforma, ele mantem as cores, mas se o player for trocar de cor ela não muda, só se ele desloga e logar de novo, ai ela muda para a cor que ele escolheu, alguém pode me ajudar? Se necessário eu posto meu script de transform aqui. Ah eu também uso um creaturescript que mantem a outfit na vocação, ele usa a mesma tag do script de transform, essa abaixo:
  25. Olá xTibianos, eu tenho uma dúvida pequena, queria saber se existe alguma função onde o player fica parado quando executa a spell/talkaction, e que esse tempo seja configurável, existe algo assim?
×
×
  • Criar Novo...