
penisagudo
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
penisagudo recebeu reputação de Katiau em (Resolvido)item se transforma em estatua dentro da mochila quando eu relogo meu char@Tyrisfall
1 - Database:
- Acesse sua database;
- Clique em player_items.
- Depois clique em Estrutura:
- Na linha itemtype, clique para mudar:
- Depois, em Tipo:
- Altere para INT e valor 11:
- O resultado final deverá ser esse:
- O mesmo procedimento deverá ser feito para itemtype e count para a tabela player_depotitems, player_inboxitems e player_rewards.
- Ou apenas executar essas queries na database > SQL:
ALTER TABLE `player_items` CHANGE `itemtype` `count` INT(11) NOT NULL DEFAULT '0'; ALTER TABLE `player_depotitems` CHANGE `itemtype` `count` INT(11) NOT NULL DEFAULT '0'; ALTER TABLE `player_inboxitems` CHANGE `itemtype` `count` INT(11) NOT NULL DEFAULT '0'; ALTER TABLE `player_rewards` CHANGE `itemtype` `count` INT(11) NOT NULL DEFAULT '0'; 2 - Créditos
mattyx14 (queries SQL)
penisagudo (tutorial)
-
penisagudo recebeu reputação de Steeven em (Resolvido)[URGENTE] SHOP System In Game@Usuaruio
Vamos la entao faz assim.
Em actions.xml você coloca: Sendo que no X você coloca o valor do Unique que desejar e não esqueça de colocar o nome do seu script desejado.
<action uniqueid="6063-6065" event="script" value="nomedoarquivo.lua"/>
Após isso crie um arquivo com mesmo nome e coloque isso dentro:
local chests = { [6063] = {itemNecessario = x, amountNecessario = 1 , itemRecebido = 2184, amount = 1}, [6064] = {itemNecessario = x, amountNecessario = 1 , itemRecebido = 6528, amount = 1}, [6065] = {itemNecessario = x, amountNecessario = 1 , itemRecebido = 5803, amount = 1} } -- Como editar: --Entre []: significa o unique ID do báu que voce colocara no mapa --itemNecessario: É o item necessario para voce trocar (sua Moeda de troca) --itemRecebido: É o ID do item que será dado ao jogador que abrir o báu --amount: É a quantidade de items que o player vai receber } function onUse(cid,item,fromPosition,itemEx,toPosition) local v = chests[itemRecebido.uid] if getPlayerItemCount(cid, v.itemNecessario) ~= v.amountNecessario then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Voce não tem a quantidade necessaria para troca.") elseif getPlayerFreeCap(cid) < (getItemWeightById(v.itemRecebido)*v.amount) then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Voce nao tem " .. (getItemWeightById(v.itemRecebido)*v.amount) .. " cap para trocar o item") end if getPlayerItemCount(cid, v.itemNecessario) == v.amountNecessario then doPlayerAddItem(cid, v.itemRecebido, v.amount) else for i = 1, v.amount do doPlayerAddItem(cid, v.itemRecebido, v.amount) end end return doPlayerSendTextMessage(cid,22,"Voce recebeu: " .. getItemNameById(v.itemRecebido) .. ".") end
Deixei tudo explicado no script caso ainda tenha duvidas você so precisara mexer nessa parte:
[6065] = {itemNecessario = x, amountNecessario = 1 , itemRecebido = 5803, amount = 1} -- Como editar:
--Entre []: significa o unique ID do báu que voce colocara no mapa
--itemNecessario: É o item necessario para voce trocar (sua Moeda de troca)
--itemRecebido: É o ID do item que será dado ao jogador que abrir o báu
--amount: É a quantidade de items que o player vai receber
Você pode colocar quantos baús quiser em apenas 1 script lembrando sempre de editar os numeros das uniquesIds no actions.xml conforme a seguir colocando sempre o menor - maior numero da Unique.
<action uniqueid="6063-6065" event="script" value="nomedoarquivo.lua"/> Não se esqueça de colocar as uniques nos baús no Mapa editor.
Qualquer duvida ou erro me reporte.
-
penisagudo recebeu reputação de Toruk em (Resolvido)[TFS1.2] Exercise Weapons@Enforc
Teste esse e veja se resolve.
local skills = { [32384] = {id=SKILL_SWORD,voc=4}, -- KNIGHT [32385] = {id=SKILL_AXE,voc=4}, -- KNIGHT [32386] = {id=SKILL_CLUB,voc=4}, -- KNIGHT [32387] = {id=SKILL_DISTANCE,voc=3,range=CONST_ANI_SIMPLEARROW}, -- PALADIN [32388] = {id=SKILL_MAGLEVEL,voc=2,range=CONST_ANI_SMALLICE}, -- DRUID [32389] = {id=SKILL_MAGLEVEL,voc=1,range=CONST_ANI_FIRE}, -- SORCERER [32124] = {id=SKILL_SWORD,voc=4}, -- KNIGHT [32125] = {id=SKILL_AXE,voc=4}, -- KNIGHT [32126] = {id=SKILL_CLUB,voc=4}, -- KNIGHT [32127] = {id=SKILL_DISTANCE,voc=3,range=CONST_ANI_SIMPLEARROW}, -- PALADIN [32128] = {id=SKILL_MAGLEVEL,voc=2,range=CONST_ANI_SMALLICE}, -- DRUID [32129] = {id=SKILL_MAGLEVEL,voc=1,range=CONST_ANI_FIRE} -- SORCERER } local houseDummies = {32143, 32144, 32145, 32146, 32147, 32148} local freeDummies = {32142, 32149} local skillRate = configManager.getNumber(configKeys.RATE_SKILL) local magicRate = configManager.getNumber(configKeys.RATE_MAGIC) local function start_train(pid,start_pos,itemid,fpos, bonusDummy) local player = Player(pid) if player ~= nil then local pos_n = player:getPosition() if start_pos:getDistance(pos_n) == 0 and getTilePzInfo(pos_n) then if player:getItemCount(itemid) >= 1 then local exercise = player:getItemById(itemid,true) if exercise:isItem() then if exercise:hasAttribute(ITEM_ATTRIBUTE_CHARGES) then local charges_n = exercise:getAttribute(ITEM_ATTRIBUTE_CHARGES) if charges_n >= 1 then exercise:setAttribute(ITEM_ATTRIBUTE_CHARGES,(charges_n-1)) local voc = player:getVocation() if skills[itemid].id == SKILL_MAGLEVEL then if not bonusDummy then player:addManaSpent(math.ceil(500*magicRate)) else player:addManaSpent(math.ceil(500*magicRate)*1.1) -- 10% end else if not bonusDummy then player:addSkillTries(skills[itemid].id, 1*skillRate) else player:addSkillTries(skills[itemid].id, (1*skillRate)*1.1) -- 10% end end fpos:sendMagicEffect(CONST_ME_HITAREA) if skills[itemid].range then pos_n:sendDistanceEffect(fpos, skills[itemid].range) end local training = addEvent(start_train, voc:getAttackSpeed(), pid,start_pos,itemid,fpos) player:setStorageValue(Storage.isTraining,1) else exercise:remove(1) player:sendTextMessage(MESSAGE_INFO_DESCR, "Your training weapon vanished.") stopEvent(training) player:setStorageValue(Storage.isTraining,0) end end end end else player:sendTextMessage(MESSAGE_INFO_DESCR, "Your training has stopped.") stopEvent(training) player:setStorageValue(Storage.isTraining,0) end else stopEvent(training) if player then -- verificar se o player ainda existe (logado), caso esteja, enviar mensagem de erro e parar treino. isso evita erros no console player:sendTextMessage(MESSAGE_INFO_DESCR, "Your training has stopped.") player:setStorageValue(Storage.isTraining,0) end end return true end function onUse(player, item, fromPosition, target, toPosition, isHotkey) local start_pos = player:getPosition() if player:getStorageValue(Storage.isTraining) == 1 then player:sendTextMessage(MESSAGE_INFO_DESCR, "You are already training.") return false end if target:isItem() then if isInArray(houseDummies,target:getId()) then if not skills[item.itemid].range and (start_pos:getDistance(target:getPosition()) > 1) then player:sendTextMessage(MESSAGE_INFO_DESCR, "Get closer to the dummy.") stopEvent(training) return true end player:sendTextMessage(MESSAGE_INFO_DESCR, "You started training.") start_train(player:getId(),start_pos,item.itemid,target:getPosition(), true) elseif isInArray(freeDummies, target:getId()) then if not skills[item.itemid].range and (start_pos:getDistance(target:getPosition()) > 1) then player:sendTextMessage(MESSAGE_INFO_DESCR, "Get closer to the dummy.") stopEvent(training) return true end player:sendTextMessage(MESSAGE_INFO_DESCR, "You started training.") start_train(player:getId(),start_pos,item.itemid,target:getPosition(), false) end end return true end
-
penisagudo recebeu reputação de MatCollier em TFS [1.2] Market Clientes 10 e 11@MatCollier testa esses aqui e ve se funciona, são clientes mais atualizados:
https://github.com/opentibiabr/tools
-
penisagudo recebeu reputação de bpm91 em procuro de alguem q faz job com ts 0.4Cara explica um pouco melhor seu problema é tenta colocar uma foto para eu poder entender o que acontece
-
penisagudo recebeu reputação de Tyrisfall em (Resolvido)item se transforma em estatua dentro da mochila quando eu relogo meu char@Tyrisfall
1 - Database:
- Acesse sua database;
- Clique em player_items.
- Depois clique em Estrutura:
- Na linha itemtype, clique para mudar:
- Depois, em Tipo:
- Altere para INT e valor 11:
- O resultado final deverá ser esse:
- O mesmo procedimento deverá ser feito para itemtype e count para a tabela player_depotitems, player_inboxitems e player_rewards.
- Ou apenas executar essas queries na database > SQL:
ALTER TABLE `player_items` CHANGE `itemtype` `count` INT(11) NOT NULL DEFAULT '0'; ALTER TABLE `player_depotitems` CHANGE `itemtype` `count` INT(11) NOT NULL DEFAULT '0'; ALTER TABLE `player_inboxitems` CHANGE `itemtype` `count` INT(11) NOT NULL DEFAULT '0'; ALTER TABLE `player_rewards` CHANGE `itemtype` `count` INT(11) NOT NULL DEFAULT '0'; 2 - Créditos
mattyx14 (queries SQL)
penisagudo (tutorial)
-
penisagudo deu reputação a luanluciano93 em (Resolvido)[TFS1.2] Bug script !blessfunction onSay(cid) local player = Player(cid) local totalBlessPrice = getBlessingsCost(player:getLevel()) * 5 * 0.5 if player:getBlessings() == 5 then player:sendCancelMessage("You already have been blessed!", cid) elseif player:removeMoneyNpc(totalBlessPrice) then player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have been blessed by all of eight gods!") for b = 1, 8 do if not player:hasBlessing(b) then player:addBlessing(b, 1) end end player:setStorageValue(999563, 1) player:getPosition():sendMagicEffect(CONST_ME_HOLYAREA) else player:sendCancelMessage("You don't have enough money. You need " .. totalBlessPrice .. " to buy bless.", cid) end return false end
-
penisagudo deu reputação a Yan Liima em [PEDIDO] Premium account e itens para iniciantes por comando@penisagudo já ajudei ele em um outro fórum. Script:
<talkaction words="!starterkit" event="script" value="starterkit.lua"/> LUA:
local config = { level = 20, -- Apartir de que level não irá receber days = 7, -- Dias de Premium Account(VIP) que irá receber items = {{2160,100}, {2161,1}, {2162,1}}, -- ID do item,QUANTIDADE storage = 233486 -- str, não mexa } function onSay(cid, words, param) if getPlayerLevel(cid) > config.level then doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você precisa ter no maximo level "..config.level.." para receber o kit inicial.") elseif getPlayerStorageValue(cid, config.storage) < 0 then for _,ab in pairs(config.items) do doPlayerAddItem(cid, ab[1], ab[2]) end doPlayerAddPremiumDays(cid, config.days) setPlayerStorageValue(cid, config.storage, 1) doPlayerSendTextMessage(cid, 25, "Você acabou de ganhar o kit inicial!") else doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "Você já pegou seu kit inicial.") end return true end Essa funcionaria para qualquer player da conta. Caso queira apenas que funcione uma vez por account::
-
penisagudo recebeu reputação de luanluciano93 em (Resolvido)teleport storage@Vitorelias
Cria um arquivo dentro de data/movements/script com nome que desejar e coloque isso dentro.
function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) local config{ storage = , --coloca o valor da storage que você quiser posSemStorage = {x = 1974, y = 1375, z = 14}, -- posição sem storage posComStorage = {x = 2032, y = 1285, z = 12} -- posição com storage } if getPlayerStorageValue(cid, config.storage) >= 1 then doTeleportThing(cid, config.posComStorage, false) doSendMagicEffect(config.posComStorage, CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, 22, "Voce foi teleportado") else doTeleportThing(cid, config.posSemStorage, false) doPlayerSendTextMessage(cid, 22, "Voce foi teleportado") doSendMagicEffect(config.posSemStorage, CONST_ME_TELEPORT) end return true end
Em movements.xml coloque isso, colocando o número da action que quiser e mudando nome do arquivo que colocou ali em cima.
<movevent type=“StepIn” actionid=“X” event=“script” value=“nomedoarquivo.lua”/>
após isso abra seu mapa editor e no teleport onde quer colocar deixe as posições tudo em 0 e no actionID coloque o mesmo que colocou na tag do movements.
se der algum erro me reporte!
-
penisagudo deu reputação a Absolute em ERRO EVENTO DEFEND THE TOWERSEste erro está ocorrendo porque a quantidade de campos não bate com a quantidade de valores que estão sendo inseridos na tabela.
Troque as querys para:
CREATE TABLE IF NOT EXISTS `dtt_players` ( `id` int(11) NOT NULL AUTO_INCREMENT, `pid` bigint(20) NOT NULL, `team` int(5) NOT NULL, `ip` bigint(50) NOT NULL, PRIMARY KEY (`id`), KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `dtt_results` ( `id` int(11) NOT NULL AUTO_INCREMENT, `frags_blue` int(11) NOT NULL, `frags_red` int(11) NOT NULL, `towers_blue` int(11) NOT NULL, `towers_red` int(11) NOT NULL, `data` varchar(255) CHARACTER SET utf8 COLLATE utf8_swedish_ci NOT NULL, `hora` varchar(255) CHARACTER SET utf8 COLLATE utf8_swedish_ci NOT NULL, PRIMARY KEY (`id`), KEY `id` (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
-
penisagudo deu reputação a Natanael Beckman em DEV C++ Compilando TFS no WindowsDEV C++, aprenda a compila uma source TFS!
Downloads(Baixe de acordo as configurações do seu windows):
DEV C++ CONFIGURADO PARA 32BITS
DEV C++ CONFIGURADO PARA 64BITS
REV 3884 TFS 0.4
Certo, feitos os downloads, extrai DEV C++ no Disco C e REV 3884 em Documentos.
======================================
Abra o DEV C++:
======================================
======================================
Abra a Source:
======================================
======================================
Localize a pasta da Source e abra o arquivo TheForgottenServer.dev, Documentos> trunk.r3884> dev-cpp> TheForgottenServer.dev:
======================================
=============================================================
======================================
Aguarde carregar todos os arquivos:
======================================
======================================
Vamos adicionar o parâmetro -D__CONSOLE__ no teclado digita ALT + P, clique em parameters e adicione o parâmetro... Feito? clique em OK:
======================================
======================================
Vamos compilar Source, no teclado digite CTRL+F9 e aguarde finalizar o processo:
======================================
======================================
Se der tudo certo em Log vai estar como mostra a imagem abaixo:
======================================
======================================
Verifique na pasta Documentos> trunk.r3884> dev-cpp você vai encontrar o arquivo TheForgottenServer.exe e pronto meu parabéns você compilou!
======================================
===========================================
Só isso galera tutorial rápido resumido e útil!
Créditos Natanael Beckman!
===========================================
Caso você adquira uma source com apenas os arquivos .cpp e .h e não sabe como compilar o projeto, abaixo vamos explicar:
Na pasta onde está localizado os arquivos .cpp e .h crie uma pasta chamada dev-cpp, e dentro dela adicione uma imagem icone.
Abra o DEV-C++, clique em File> New> Project:
Logo em seguida selecione Empty Project, em name terá o nome Project1 altere utilize o nome quer quiser, após isso clique em OK e em seguida selecione a pasta dev-cpp que criamos:
Agora selecione a opção Win32GUI caso use source OTX ou TFS selecione Win32Console ao lado << Browse selecione a imagem do icone que está na pasta Dev-Cpp.
No mesmo menu na aba Parameters em C++ compiler adicione os seguintes parâmetros:
-D__ENABLE_SERVER_DIAGNOSTIC__ -D__ROOT_PERMISSION__ -D__GROUND_CACHE__ -D__USE_SQLITE__ -D__USE_MYSQL__ -D__CONSOLE__ -D__WAR_SYSTEM__ E em Linker adicione as seguintes libs:
-lboost_filesystem -lboost_thread -lboost_system -lboost_regex -lsqlite3 -lwsock32 -llua5.1 -lws2_32 -leay32 -lmysql -lxml2 -lgmp -lz -s No mesmo Menu na aba Build Option escreva na segunda coluna horizontal escreva Obj e dê OK. Na lateral terá o nome do seu projeto o meu no caso é The Forgotten Server, clique com o botão direito do mouse em cima do nome e clique na opção Add Project: Selecione na pasta da sua source todos os arquivos .cpp e .h após isso salva o projeto e já pode compilar CTRL+F9: OpenSSL 0.9.8 1º baixe http://devpaks.org/details.php?devpak=73 2° abra Dev-Cpp > Tools > Packager Manager > Install > Seleciona o arquivo baixado e instala, fecha abre e testa!
Clica aqui \/ -
penisagudo deu reputação a Bruno Carvalho em Como conseguir todas as sprites do tibiaDesde o lançamento do flash cliente, o processo de conseguir as imagens do tibia se tornou muito fácil!
Passo a passo
Basta entrar neste site https://secure.tibia.com/flash-regular-bin/catalog-content.xml
Abrir as urls com final .png (Exemplo http://static.tibia.com/flash-regular-data/sprites-ff80b440fa7ee964e7584adf04a226ccc99aa197f5bed551eb8da82e9255dd73.png)
Salvar a parte desejada em seu computador
E fazer o recorte para 32x32 (Como neste tutorial: http://www.tibiaking.com/forum/topic/42673-tutorial-cortando-sprites-32x32-r%C3%A1pido/)
Depois é só utilizar as sprites como bem entender. Este método é o mesmo utilizado por fansites oficiais do tibia.
-
penisagudo deu reputação a xWhiteWolf em Tibia Guitar Hero [0.3.6~0.4]Fala pessoal, hoje vim trazer pra vocês um sistema que eu desenvolvi em outro fórum e decidi trazer pra cá
Chega de falatório e vamos direto aos negócios:
Introdução: O sistema em si é uma cópia dos jogos de ritmo (GuitarFreaks, Band Hero, Rocksmith e o próprio Guitar Hero). Neste jogo pequenas notas irão cair pela tela até atingir um local especial, onde você poderá usar as teclas (Shift + 7, Shift + 8, Shift + 9, ou apenas 7, 9 e 9 [com Num Lock desativado]) para escolher as direções que as notas estão afim de "ativá-las". Uma vez ativada a nota ela será "queimada" e será considerado 1 acerto. Caso você não consiga ativar a nota e ela passar direto, um efeito de fumaça indicará o "Miss", o mesmo vale para se você tentar ativar uma região sem notas.
Sistema de pontuação: Haverão 3 classificadores estatísticos para cada música tocada, sendo eles:
Notas acertadas: O principal fator de ponto, ele que definirá seu recorde e o valor máximo q ele pode assumir será o número de notas da música.
Movimentos errados: Quantidade de movimentos que você fez para alguma região que não possuia notas, conta como pontuação punitiva.
Notas passadas/erradas: Quantidade de notas que você deixou escapar, note que as notas acertadas + notas passadas compõe o número total de notas da música.
Por enquanto o sistema não possui nenhum preço para se jogar mas também não possui nenhuma recompensa, fiz com o intuito de ser apenas um mini game divertido dentro do Tibia. Porém o código é livre e está disponibilizado aqui embaixo pra qualquer um modificar como desejar.
Video explicativo: Dificuldades: O mini game possui 3 dificuldades, porém essa quantidade é tão configurável quanto as pré definições de cada dificuldade. Além da quantidade de notas ser diferente, a velocidade com que elas descem e consequentemente o tempo que você tem pra acertá-las fica diminuido.
Diferenciais: Um forte diferencial desse sistema é que ele foi feito seguindo todas as regras possíveis pra melhorar seu desempenho, desde funções recursivas leves até separação em funções encapsuladas que carregam apenas as informações necessárias. O sistema contém também algumas seguranças que serão explicadas mais abaixo juntamente com o código para prevenir bugs e garantir diversão sem dores de cabeça!
Instalação (Map Editor): Primeiramente faça uma área parecida com essa daqui:
Não precisa ser igualzinha, apenas seguir a mesma proporção
Agora use a ferramenta de No-Logout para setar os quadradinhos que contém UID e UID2 escritos como No-Logout, isso vai impedir que players desloguem e fiquem presos dentro da sala (se eles derem exit, quando eles relogarem estarão do lado de fora da sala)
Ainda olhando a foto acima, coloque 42320 nos pisos que estão escritos UID, e 42319 no piso que contém UID2.
Nas alavancas, coloque uid 2819 em todas elas e coloque actionid 101 para a alavanca do fácil, 102 na alavanca do médio e 103 na do dificil;
A regra é sempre 100 + dificuldade, como nós estamos utilizando apenas 3 será do 101 ao 103.
Note que se você esquecer ou colocar uma dificuldade não existente o sistema adotará a dificuldade 1 como padrão para aquela alavanca.
Se chegou até aqui, meus parabéns. Muito provável que você tenha feito tudo certo. Agora vamos à parte do código.
Instalação (scripts): Em actions.xml insira essa linha
<action uniqueid="2819" event="script" value="GHtest.lua"/> Agora em data/actions/scripts crie um arquivo com extensão.lua e chameo de GHtest. Insira o seguinte bloco de instruções dentro dele:
<movevent type="StepIn" uniqueid="42320;42319" event="script" value="GHTestmov.lua"/> Por fim crie um arquivo chamado GHTestmov.lua em data/movements/scripts e preencha seu conteúdo com as linhas abaixo:
Configurando seu sistema (básico):
Para as pessoas que querem configurar apenas as coisas básicas, você pode fazê-lo nas primeiras linhas de cada script (actions/movements) ou alterando diretamente na lib, irei ensinar passo a passo aqui oque significa cada coisa.
Alterando a lib As coisas básicas que podem ser alteradas na lib são as seguintes:
dif = { -- [dificuldade] = notas que serao tocadas (nil = vazio, 0 = primeira posicao, 1 = segunda e 2 = terceira) [1] = {nil,nil,0,1,2,nil,nil,2,1,1,0,0,2,0,1}, [2] = {nil,nil,0,1,1,2,1,1,0,0,2,0,1,nil,1,2,1,1,0,0,2,0,1}, [3] = {nil,nil,0,nil,1,nil,1,1,0,0,2,0,1,1,1,nil,0,2,1,1,0,0,2,1,1,0,nil,2,2,1,1,1,1,2} } delay = { -- delay entre cada nota de acordo com a dificuldade [dificuldade] = delay [1] = 500, [2] = 400, [3] = 300 } recorde = { -- salva os recordes de cada dificuldade separadamente [1] = 12724, [2] = 12725, [3] = 12726 } dif separa como será cada música de cada dificuldade, as notas sempre serão nesse exato formato. nil significa que não estarei usando posição nenhuma naquela linha, 0 significa a primeira posição (nota verde), 1 significa segunda opção (nota vermelha) e 2 significa terceira opção (nota azul). Eu aconselho a começar todas as músicas com 2 ou mais 'nil' para dar tempo de o player entender que vai começar. A distribuição que eu usei foi meio que aleatória então sinta-se a vontade pra mudar tanto o tamanho das musicas quanto a variedade de notas.
delay é a tabela que oganiza os delays de cada dificuldade, isso significa que para a dificuldade 1(fácil) nós temos 500 milisegundos para cada mudança de nota (1000 milisegundos = 1 segundo), ou seja, a cada 2 passadas de nota temos 1 segundo dentro da sala. No modo hard a cada 300 milisegundos mudamos a nota, deixando o jogo muito mais rápido e dificil.
recorde é a tabela que possui os storages que irão salvar os recordes nas respectivas dificuldades.
Alterando actions local storage_point = 12721 -- storage que salva os pontos local storage_erradas = 12722 -- storage que salva as notas erradas local storage_passadas = 12723 -- storage que salva as notas que passaram Apenas mude os storages
Alterando movements local itemid = 1680 --- coloque o id da nota do meio local npos = {x = 141, y = 51, z = 7} -- posicao que ira nascer a primeira nota local storage_point = 12721 -- storage que salva os pontos local storage_erradas = 12722 -- storage que salva as notas erradas local storage_passadas = 12723 -- storage que salva as notas que passaram aconselho mexer somente nos storages, mantendo igual à action.
Só abra o spoiler abaixo se você estiver descontente com a forma que seu código roda e tiver certeza absoluta de que você tem o conhecimento necessário para alterar as coisas que vou explicar.
-
penisagudo deu reputação a Pepeco em Pedidos de Script@mateusmoretti Coloca o nome exato do seu monstro, caso nao funcione, voce coloca o print ali, para pegar o nome dele.
-- Created by Pepeco -- local im = { [1] = {item = {2160, 5}, monster = {"Rat"}}, [2] = {item = {2148, 5}, monster = {"Rotworm"}} } function onKill(cid, target, lastHit) if isPlayer(cid) and not isPlayer(target) then for _, all in pairs(im) do -- print(getCreatureName(target)) -- Caso nao funcione, tente usar isso para pegar o nome exato do seu monstro. if getCreatureName(target) == all.monster[1] then doPlayerAddItem(cid, all.item[1], all.item[2]) end end end return true end em creaturescript coloque
<event type="kill" name="Monsteritem" event="script" value="Monsteritem.lua"/> depois vai em login.lua e coloque
registerCreatureEvent(cid, "Monsteritem") Nao esqueça de avaliar o codigo, lá encima /\
-
penisagudo deu reputação a DeCarvalho em [Sistema][TFS 1.1 1.2][WindowsModal]Crafting AvançadoBem, esse é mais um sistema do RazorBlade, assim como no outro, pedi autorização para estar trazendo para cá. Esse sistema é bem complexo e enorme e, claro, pode ser alterado da maneira que lhe convir.
Espero que quem usar e testar de um rep, pois traduzir, ajeitar o conteúdo, testar para ver se tem erros e reportar demora né.. estou trazendo pois sei que muitos brs não sabem o mínimo de inglês e acho que esses deveriam ao menos agradecer pelo trabalho de disponibilizar aqui.. Enfim.. novamente, Vamos começar
Esse sistema é composto de 3 ferramentas distintas.: Smith(forja de items), Smelt(derretimento de items), tanning (tratar a pele) Caracteristicas
Bem são mais de 2mil linhas de códigos vamos realmente começar?!?! -- ACTIONS Em actions.xml adicione isto
Crie um arquivo scripts/crafting/smith.lua e adicione isso
Crie um arquivo scripts/crafting/smelt.lua e adicione isso
Crie um arquivo scripts/crafting/tan.lua e adicione isso
-- CREATURESCRIPTS Em creaturescripts.xml adicione isso
Crie um arquivo em creaturescripts/scripts/smith.lua e adicione isso
Crie um arquivo em creaturescripts/scripts/smelt.lua e adicione isso
Crie um arquivo em creaturescripts/scripts/tan.lua e adicione isso
Em creaturescripts/scripts/login.lua adicione isso em qualquer area que seja depois da primera sessão de login
e registre os eventos no final
-- SESSÃO DATA
Em global.lua adicione
Crie o arquivo smith.lua e adicione isso
Crie o arquivo smelt.lua e adicione isso
Crie o arquivo tan.lua e adicione isso
Crie o arquivo skills.lua e adicione isso
-- SESSÃO DATA 1
Caso pretenda usar achievement para os sets é necessário adicionar mais 2 linhas ao global.lua
Crie o arquivo achievements.lua e adicione isso
Crie o arquivo sets.lua e adicione isso
-- CONSIDERAÇÕES FINAIS
O sistema foi testado em TFS 1.1 e 1.2 e esta funcionando sem problemas.
Eu fiz testes usando o tfs 1.2 mas não usei o sistema de achievements, o resto todo que testei esta funcionando perfeitamente..
Por favor, antes de qualquer pergunta leia atentamente todas as informações..
Obs.: Curtiu, usou, testou.. da um rep ae.. isso mostra que valeu a pena gastar o tempo procurando algo interessante, pedindo autorização e tudo mais para trazer para cá.. além de não arrancar pedaço..
-
penisagudo deu reputação a Menino aleatorio em (Resolvido)Tipo um Anti-MClocal config = {
max = 1, -- Número de players permitido com o mesmo IP.
group_id = 1 -- Kikar apenas player com o group id 1.
}
local accepted_ip_list = {} -- Lista dos players permitidos a usar MC, exemplo: {"200.85.3.60", "201.36.5.222"}
local function antiMC(p)
if #getPlayersByIp(getPlayerIp(p.pid)) >= p.max then
doRemoveCreature(p.pid)
end
return true
end
function onLogin(cid)
if getPlayerGroupId(cid) <= config.group_id then
if isInArray(accepted_ip_list,doConvertIntegerToIp(getPlayerIp(cid))) == false then
addEvent(antiMC, 1000, {pid = cid, max = config.max+1})
end
end
return true
end
Não sei se é isso aqui que vc esta pedindo mas é 1 anti mc onde a pessoa só podera logar 1 conta com o mesmo ip.
o problema são que jogadores de lan house não podem jogar o servidor
-
penisagudo deu reputação a AgaSsI em [Actions] Stamina DollNome do Script: Stamina Doll
Autor: Não sei o autor, pois foi um amigo meu que me passou!
Testado em: Styller 8.6
É um script simples e util, bom para servidores com mapa Global com site.
Instalando: Vá em ...data/actions/scripts, e crie um arquivo chamado stamina-refuel.lua e cole isto dentro:
Código:
function onUse(cid, item, fromPosition, itemEx, toPosition) local cfg = {} cfg.refuel = 42 * 60 * 1000 if(getPlayerStamina(cid) >= cfg.refuel) then doPlayerSendCancel(cid, "Your stamina is already full.") elseif(not isPremium(cid)) then doPlayerSendCancel(cid, "You must have a premium account.") else doPlayerSetStamina(cid, cfg.refuel) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Your stamina has been refilled.") doRemoveItem(item.uid) end return true end Em actions cole a seguinte tag: Código: <action itemid="ID DO SEU DOLL AQUI" script="stamina-refuel.lua"/>
Onde está "ID DO SEU DOLL AQUI", coloque o número do doll que você deseja. Geralmente utilizam Santa Doll ou Nightmare Doll.
*6512
*11138
Grato!
-
penisagudo deu reputação a ViitinG em [creaturescripts] Senha para portaBom para quem não sabe como funciona o script,é basicamente uma senha para conseguir abrir uma porta e após um tempo a porta se fecha automaticamente,podendo ser configurado o tempo/senha/porta.
• Adicionando o script •
Em "data/creaturescripts/creaturescripts.xml" adicione está tag :
<event type="textoparaporta" name="Senha" event="script" value="senhaporta.lua"/> Em "data/creaturescripts/scripts/login.lua" adicione está tag no final do script :
registerCreatureEvent(cid, "Senha") Em "data/creaturescripts/scripts/senhaporta.lua" adicione este script :
local uniqueids = {8049, 8050} local passwords = { ["TibiaKing"] = {doorpos = {x = 163, y = 36, z = 7}, doorid = 6257, blackboardpos = {x = 162, y = 36, z = 7}, blackboardid = 1811, uniqueid = 8049, doorclosetime = 10}, ["TK"] = {doorpos = {x = 1000, y = 1000, z = 7}, doorid = 1213, blackboardpos = {x = 1000, y = 1000, z = 7}, blackboardid = 1811, uniqueid = 8050, doorclosetime = 10} } function onTextEdit(cid, item, newText) local x = passwords[newText] local function onCloseDoor() if(getTileItemById(x.doorpos,x.doorid+1).uid) > 0 then doTransformItem(getTileItemById(x.doorpos,x.doorid+1).uid, x.doorid) doSendMagicEffect(x.doorpos, CONST_ME_MAGIC_RED) end end for _, check in pairs(uniqueids) do if item.uid == check then if x and item.uid == x.uniqueid then if(getTileItemById(x.doorpos,x.doorid).uid) > 0 then doTransformItem(getTileItemById(x.doorpos,x.doorid).uid, x.doorid + 1) doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_GREEN) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'Sua Senha "'..newText..'" esta correta, voce pode entrar.') addEvent(onCloseDoor,x.doorclosetime*1000) doRemoveItem(item.uid, 1) local blackboard = doCreateItem(x.blackboardid,1,x.blackboardpos) doItemSetAttribute(blackboard, "uid", x.uniqueid) else doRemoveItem(item.uid, 1) local blackboard = doCreateItem(x.blackboardid,1,x.blackboardpos) doItemSetAttribute(blackboard, "uid", x.uniqueid) doPlayerSendCancel(cid, 'A porta ja esta aberta, feche-a ou espera ela se fechar.') end else doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) doPlayerSendCancel(cid, 'Sua senha "'..newText..'" esta incorreta.') end end end return true end • Configurando •
Creditos : Limos
Imagens :
-
penisagudo deu reputação a porxmex em Erro house (nao salva)Já arrumei, caso seja isso aqui esta a solução muito simples ! do mesmo gosto de contribuir com vcs do forum Abraço
-
penisagudo deu reputação a Lyu em Anti-Abuse [Proibir palavrões]Fala pessoal, fiz este script para evitar palavrões em meu servidor e agora irei disponibilizá-lo.
Crie um arquivo xml chamado antiabuse.xml e adicione isto dentro :
<?xml version="1.0" encoding="UTF-8"?> <mod name="Anti-Abuse System" version="1.0" author="Ladyazaleia" contact="https://www.facebook.com/wustehs" enabled="yes"> <config name="antiabuse-config"><![CDATA[ words_ = {"porra","viado","caralho","buceta","puta","piroca","baiak","xereca","viadinho","cu","vai se fuder","filho da puta","seu cu","minha pica"} cancel = "There is a word '%s' that you cannot use." ]]></config> <talkaction default="yes" filter="quotation" logged="no" hidden="yes" event="script"><![CDATA[ domodlib('antiabuse-config') for _, v in pairs(words_) do if(words:lower():find(v)) then return doPlayerSendCancel(cid, cancel:format(v)) end end ]]></talkaction> </mod> Na tabela words_..
Adicione a palavra que você deseja proibir de ser dita em seu servidor.
testado em TFS 0.4
qualquer erro, nos avise.
obs : desculpe os palavrões pesados ae u.u
Créditos : EU