Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 02/19/16 em todas áreas

  1. Olá EkzTibianos, tenho o prazer de informar que estarei criando conteúdos para uma nova seção! Aulas de Scripting, e conto muito com a sua presença. Se VOCÊ quer aprender LUA de um jeito fácil e descomplicado, junte-se a nós, e venha ver as aulas que vão lhe ensinar a fazer scripts do nível de quest à sistemas bem desenvolvidos. Com a minha ajuda, e talvez a ajuda de membros e equipe, vamos nos prontificar à criar um espaço de suporte na própria seção de aprendizado, para que suas dúvidas em relação à scripting sejam tiradas rápidamente. As aulas irão explicar conteúdos em etapas, cada aula antecessora será uma base para a sucessora, já tenho rascunho de conteúdos da Aula-[0], que irá trabalhar com a velha e chata lógica de programação (extremamente necessária - porém de um jeito diferente) e alguns termos que serão utilizados posteriormente. Também contaremos com Deveres de casa, para que possam por em prática o que aprenderam na aula atual, esses deveres irão render pontos para quem cumprir com sagacidade, que servirão para outra novidade que ainda virá. Estou esperando o feedback de vocês ansiosamente neste tópico, eu vou gostar muito caso tenha uma repercussão boa e que possa ajudar o máximo de pessoas possíveis...
    15 pontos
  2. Ola galera nesse topico irei mostrar alguns sprites e gifs do meu projeto Poke Tournament facebook Machop Ryu o proximo pokemon a ser adicionado será o cubone tauros skull o que acham dele? "depois faço uma gif" NOVO Squirtle Rafael remake Koffing e suas principais skills clefairy remake Eevee
    2 pontos
  3. MarcelloMendes

    [Advanced Reset System 2.0]

    -= 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~~
    1 ponto
  4. Como apagaram o meu post em outro fórum de OTSERVER, estou postando aqui, pois acho mais difícil serem amiguinhos do maior ladrão da história Lu.Lukinhas (vulgo Absolute). Este é um OTSERVER que comprei pensando que era único, mas na verdade é só o EMPORIUM traduzido e modificado. O Absolute está cobrando R$300,00 por ele e estou disponibilizando gratuitamente para vocês. Download: http://www.mediafire.com/download/no418fbhix6pobz/GlobalPACK_8.60_FULL_with_Events.zip Scan: https://www.virustotal.com/pt/file/b8481c8e8b59b8816111e36384c0e1a3918e0c68747d82c40c782f7d9f484419/analysis/1453921891/ Recomendo utilizar em Linux Debian 6. INFOS - É o servidor base dos maiores 8.6 de hoje em dia; - Possui cidades VIP novas, não encontradas em nenhum outro servidor; - Possui trainers offline; - Items VIP's já criados; - Cast System; - Thais reformulada; - Quests 99% funcionando. Não vou ajudar ninguém a utilizar. Usem o fórum para possíveis dúvidas. by: Amiguinho do Absolute Créditos: dono do EMPORIUM e acho que Absolute (mesmo que eu ache que ele não fez nada).
    1 ponto
  5. Download de algumas remakes e recoleres da pxg e poke storm. Download + Scan Créditos: Pokexgames Kaleudd PokeStorm
    1 ponto
  6. MUNlZ

    RevolutionAcc

    Bom pessoal estou desenvolvendo um site para servidores open tibia que contem painel de gerenciamento do banco de dados, algumas imagens ai.. em breve + detalhes.. Pra quem quiser ir testando o painel, já criei o repositório no github Tutorial rápido: lá no seu banco de dados, execute o seguinte comando no console é só importar o revolution.sql para o seu banco de dados e ir lá na tabela accounts na sua conta e coloque o valor 3 na coluna nivel. Acesse a pasta _panel/_app e abra o arquivo config.inc.php e configure as seguintas constantes.. //BASE DO SITE define('SERVERURL', 'http://localhost/OTPanel/'); //ENDEREÇO DO PAINEL define('SERVERNAME', 'OTPanel'); //NOME DO SERVIDOR // CONFIGRAÇÕES DO SITE #################### define('HOST', 'localhost');//HOST DO BANCO DE DADOS define('USER', 'root'); //USUARIO DO BANCO DE DADOS define('PASS', ''); //SENHA DO BANCO DE DADOS define('DBSA', ''); //NOME DO BANCO DE DADOS Tentarei atualizar o sistema umas duas vezes por semana, quem quiser contribuir é só ir no github.. https://github.com/Mun1z/RevolutionACC
    1 ponto
  7. Cara, você não coloca a tabela que eu mandei dentro de passiveschances. Sendo mais preciso, deixe-a separada no arquivo.
    1 ponto
  8. Caronte

    Juntas 2 Funções

    local function onWigetKey(widget, keyCode, keyboardModifiers, autoRepeatTicks) if keyCode == KeyUnknown then return false end if autoRepeatTicks == nil then local callback = widget.boundAloneKeyUpCombos[determineKeyComboDesc(keyCode, KeyboardNoModifier)] signalcall(callback, widget, keyCode) callback = widget.boundKeyUpCombos[determineKeyComboDesc(keyCode, keyboardModifiers)] return signalcall(callback, widget, keyCode) else local callback = widget.boundKeyPressCombos[determineKeyComboDesc(keyCode, keyboardModifiers)] return signalcall(callback, widget, keyCode, autoRepeatTicks) end end É só não usar autoRepeatTicks, para obter a outra funçao.
    1 ponto
  9. duvida sanada, conseguir achar, a função é " onWidgetKeyPress " exemplo function onWidgetKeyPress ()
    1 ponto
  10. Caronte

    Nova seção: Escola de Scripting LUA

    Serão postadas no fórum, em breve. A primeira aula já está pronta esperando o momento certo. Terá seção de suporte de dúvidas ligadas a aprendizagem, e contará com PDFs com as aulas, cada aula vai ter 1 ou mais exercícios para praticar o conteúdo aprendido.
    1 ponto
  11. SamueLGuedes

    bug no remeres

    Não sei mais soluções. única solução era tentar recuperar ou usar uma versão anterior, ver se não criou uma cópia do arquivo.
    1 ponto
  12. Skulls

    Exori Grab Vis

    Hahaha eu amo ele, destruo jogando de blitão! Obrigado!! Sim, poderia ser adaptado para um ot normal visando auxiliar vocações corpo a corpo, mas com bom senso para não ficar OP. Valeu! Como bem respondeu o Caronte dá sim, basta adaptar. Valeu ai! Muito obrigado, você e wolf sempre me ajudando / apoiando! xD Para não ficar op só com um cd gigante, dano baixo ou sem dano e não targeteable (ela ser direcional, podendo ser desviado). Atualizado mais uma vez o grab, agora finalizado com efeito em todas as direções:
    1 ponto
  13. SamueLGuedes

    bug no remeres

    seu servidor é custom (Sprites Modificadas)? porque se for, pode ser problema de sprites mal adicionadas.
    1 ponto
  14. SamueLGuedes

    bug no remeres

    Tópico Movido Este tópico foi movido de "OTServ → Mapping → Downloads Mapas → Mapas 8.6x e 8.7x" para "OTServ → Mapping → Suporte Mapping".
    1 ponto
  15. SamueLGuedes

    bug no remeres

    Possíveis soluções: Reinstale o RME. Utilize outro RME. Pode ser que o mapa esteja corrompido, veja se consegue recuperar usando uma versão anterior. O mapa pode estar com sprites extendidas, utilize um RME Extendido.
    1 ponto
  16. Danihcv

    TalkActions e Websites

    Por distração, eu acabei me esquecendo que vc queria 3 talkactions. Por isso, aqui está o script final com as 3 talkactions: *lembrando que ñ tenho como testar, e estou me baseando no q me foi dito sobre o tfs 1.2: local pointObj = 2160 --id do item "points" function getAccountPoints(player) local res = db.getResult('SELECT `premium_points` FROM `accounts` WHERE id='..player:getGuid()..'') if(res:getID() == -1) then return false end local ret = res:getDataInt("premium_points") res:free() return tonumber(ret) end function onSay(player, words, param) if (words == '!sacar') then if param ~= "" then if tonumber(param) ~= nil then if 0 >= tonumber(param) then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser acima de zero.") elseif tonumber(param) <= player:getAccountPoints() then player:addItem(pointObj, param) db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints() - param..' WHERE id='.. player:getGuid()..'') newPoints = player:getAccountPoints() player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Você ainda possui '..newPoints..' premium points em sua conta.') else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem tantos premium points assim.") end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser um numero.") end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa especificar um valor.") end elseif (words == '!saldo') then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Seu saldo no shopping atual é de '..player:getAccountPoints()..' Premium points.') elseif (words == '!depositar') then if param ~= "" then if tonumber(param) ~= nil then if 0 >= tonumber(param) then player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser acima de zero.") elseif tonumber(param) <= player:getItemCount(pointObj) then player:removeItem(pointObj, tonumber(param)) db.executeQuery('UPDATE `accounts` SET `premium_points`='..player:getAccountPoints() + tonumber(param)..' WHERE id='.. player:getGuid()..'') newPoints = player:getAccountPoints() player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Você acabou de depositar '..param..' premium points no shopping. Seu saldo agora é de '..newPoints..' premium points.') else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você não tem tantos premium points assim.") end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "O valor precisa ser um numero.") end else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa especificar um valor.") end end return true end Basta usar uma só tag em talkactions.xml apenas se atente a isso na tag:
    1 ponto
  17. Krono

    [Talkaction Mod] Rent itens System

    Ta de bobeira? dé uma inovada em seu servidor colocando novos sistemas. Veja este por exemplo. Ele dá a possibilidade de colocar itens para aluguel, ou seja ao execultar o comando o player pode adquirir um item por um tempo determinado em troca de alguma grana!. Comando para alugar o item: !rent itemname: Aluga o item desejado !rent list: Exibe a lista dos itens disponiveis para aluguel Para instalar: Crie um arquivo com o nome de rentitens.xml que deve ser intalado na pasta mods do seu servidor e insira neste arquivo o seguinte codigo. <?xml version="1.0" encoding="UTF-8"?> <mod name="Rent System" version="1.0" author="Kimoszin" contact="tibiaking.com" enabled="yes"> <config name="rent_config"><![CDATA[ messages = { sucess = MESSAGE_INFO_DESCR, fail = MESSAGE_STATUS_WARNING, } warningStorage = 45768 items = { ["knight armor"] = {id=2476, time=1, price=3000, premium=true, cap=false}, ["demon legs"] = {id=2495, time=3, price=3000, premium=true, cap=true}, ["blue legs"] = {id=7730, time=2, price=3000, premium=true, cap=true}, ["demon shield"] = {id=2520, time=1, price=3000, premium=true, cap=true}, } function doWarningItemWasRemoved(cid) if (getCreatureStorage(cid, warningStorage) > -1) then local item = items[getItemNameById(getCreatureStorage(cid, warningStorage))] doPlayerSendTextMessage(cid, messages.sucess, "Ok, "..item.time..(item.time > 1 and " minutes" or " minute").." has passed, the rent of "..getItemNameById(item.id).." ended.") doCreatureSetStorage(cid, warningStorage, -1) end end ]]></config> <talkaction words="!rent" event="buffer"><![CDATA[ domodlib('rent_config') local item, itemuid = items[param:lower()], math.random(1000, 65535) if (param == "") then return doPlayerSendTextMessage(cid, messages.fail, "Sorry, you need to inform parameters.") end if (param == "list") then local str = "~* Rent System by Kimoszin *~\n\n" for name, iten in pairs(items) do str = str..string.sub(name, 0, 1):upper()..string.sub(name, 2):lower().." - "..iten.price.."gps \n" end str = str .."\n WWW.TIBIAKING.COM" return doPlayerPopupFYI(cid, str) end if not(item) then return doPlayerSendTextMessage(cid, messages.fail, "Sorry, but it is not possible to rent this item.") end if (item.premium and not(isPremium(cid))) then return doPlayerSendTextMessage(cid, messages.fail, "You need a premium account.") end if (item.cap and not(getPlayerFreeCap(cid) >= getItemWeightById(item.id, 1, 1))) then return doPlayerSendTextMessage(cid, messages.fail, "You don't have capacity.") end if not(doPlayerRemoveMoney(cid, item.price)) then return doPlayerSendTextMessage(cid, messages.fail, "Sorry, you do not have any money.") end doItemSetAttribute(doPlayerAddItem(cid, item.id, 1), "uid", itemuid) doPlayerSendTextMessage(cid, messages.sucess, "You rented a "..getItemNameById(item.id).." for "..item.time.. (item.time > 1 and " minutes" or " minute")..".") doCreatureSetStorage(cid, warningStorage, item.id) local player_id = getPlayerGUID(cid) addEvent(function() local player = getPlayerByGUID(player_id) if not(isPlayer(player)) then db.executeQuery("DELETE FROM `player_items` WHERE `player_items`.`player_id` = "..player_id.." AND `itemtype` = "..item.id..";") else doPlayerSendTextMessage(cid, messages.sucess, "Ok, "..item.time..(item.time > 1 and " minutes" or " minute").." has passed, the rent of "..getItemNameById(item.id).." ended.") doCreatureSetStorage(cid, warningStorage, -1) doRemoveItem(itemuid, 1) end end, item.time * 60 * 1000) ]]></talkaction> <creatureevent name="rentLogin" type="login" event="buffer"><![CDATA[ domodlib('rent_config') doWarningItemWasRemoved(cid) ]]></creatureevent> </mod> Aqui você adiciona, remove ou configura os itens: items = { ["knight armor"] = {id=2476, time=1, price=3000, premium=true, cap=false}, ["demon legs"] = {id=2495, time=3, price=3000, premium=true, cap=true}, ["blue legs"] = {id=7730, time=2, price=3000, premium=true, cap=true}, ["demon shield"] = {id=2520, time=1, price=3000, premium=true, cap=true}, } Configuração: [" item name"] = {i d=itemid, time=tempo, price=valor, premium=requer premium(true/false), cap=requer capacidade(true/false) Qualquer duvida estou a disposição! espero que aproveitem. Edit: trocando o titulo para um mais claro. Credito Kimoszin
    1 ponto
  18. HeelNox

    [PDA] Stone Box

    Não sei se ja tem um script desses por aqui mais mesmo assim irei postar caso alguem esteja precisando, particulamente criei para treinar Scripting mais também irei usar em meu Servidor, o Script esta 100% funcional sem nenhum tipo de BuG. Oque ela Faz: R = Te da uma Stone (Pedra de Evolução) Aleatoriamente, podendo adicionar mais Stones ou Item's. ______________________________________________________________________________________________________________________________ Pasta/Actions/Scripts Copie e cole um arquivo ja existente, renomei-o deixando com um nome diferente, apague tudo que a dentro dele cole esse codigo: ______________________________________________________________________________________________________________________________ local temp = { exhausted = 1, storage = 2105 } local confg = { level = 25, } function onUse(cid, item, fromPosition, itemEx, toPosition) local items = {11441,11442,11443,11444,11445,11446,11447,11448,11449,11450,11451} if(getPlayerStorageValue(cid, temp.storage) > os.time() and getPlayerStorageValue(cid, temp.storage) < 100+os.time()) then doPlayerSendTextMessage(cid, 24, "Vai com calma, espere " .. getPlayerStorageValue(cid, temp.storage) - os.time() .. ' segundo' .. ((getPlayerStorageValue(cid, temp.storage) - os.time()) == 1 and "" or "s")) return true elseif getPlayerLevel(cid) < confg.level then doPlayerSendCancel(cid, "You need to be atleast level ".. confg.level ..".") return true end doPlayerAddItem(cid, items[math.random(#items)]) doRemoveItem(item.uid, 1) doSendMagicEffect(getCreaturePosition(cid), 13) setPlayerStorageValue(cid, temp.storage, os.time() + temp.exhausted) return true end ______________________________________________________________________________________________________________________________ Pasta/Actions Em Actions.xml, cole esta Tag embaixo de alguma outra. ______________________________________________________________________________________________________________________________ <action itemid="ID DA BOX" event="script" value="NOME DO ARQUIVO.lua"/> Configurando arquivo.lua ______________________________________________________________________________________________________________________________ Exhausted = 1, = Tempo de Recarga para poder usar novamente a Box (Caso não queira recomendo deixar 1 Segundo) Storage = 2105 = Não mexa já foi colocado um Número não utilizado no PDA. ________________________________________________________________________________________________________________ Level = 25, = Level necessário para poder usar a Box sendo que os jogadores level acima do colocado Usaram. ________________________________________________________________________________________________________________ local items = {11441,11442,11443,11444,11445,11446,11447,11448,11449,11450,11451} = ID's das Stones, ou Itens. ________________________________________________________________________________________________________________ doSendMagicEffect(getCreaturePosition(cid), 13) = "13" Número do Efeito que ira sair. Bom é isso, a intenção e ajudar vocês, se o Script já existe blz, fiz pra praticar. Abrçs. Ninguém comenta #Chateado IMAGEM.
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...