Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 08/04/15 em %
-
Limite de player por sala Introdução: Esse script pode ser bem útil para baiak onde as salas tão sempre cheia de player upando ou então para eventos. O script simplesmente checa a quantidade de player que tem dentro da sala, caso não tenha atingido o limite o player pode entrar caso não, manda uma mensagem falando que a sala esta lotada. Exemplo de uso: pode servir até para a anihilator ou demon aok, invitando que um segundo time entre na sala antes que o primeiro acabe. Caso a sala esteja lotada. Caso não. Em data/movement/script, crie LimiteArea.lua e adicione. Em movement/movement.xml Adicione essa tag E depois adicionar o actionid no piso ou teleport pelo mapa editor. O script é fácil de se configurar mas caso tenha algum problema pode posta ai que eu vou ajuda. Caso você adicione mais locais você terá que adicione na tag também.2 pontos
-
Se me permite, fiz algumas alterações(V2)? rsrs function onUse(cid, item, fromPosition, itemEx, toPosition) sorteio = { [0] = {id = 2160, count = 1, chance = 5}, [1] = {id = 7440, count = 30, chance = 1}, [2] = {id = 8925, count = 1, chance = 2}, [3] = {id = 2542, count = 1, chance = 3}, [4] = {id = 7504, count = 1, chance = 4}, [5] = {id = 8927, count = 1, chance = 5}, [6] = {id = 12298, count = 1, chance = 6}, } for i = 0, #sorteio do if (sorteio[i].chance > math.random(1, 100)) then doPlayerAddItem(cid, sorteio[i].id, sorteio[i].count) doRemoveItem(item.uid, 1) return doPlayerSendTextMessage(cid, 22 , "Parabéns você ganhou "..sorteio[i].count.." "..getItemName(sorteio[i].id)..".") end end doRemoveItem(item.uid, 1) return doPlayerSendTextMessage(cid, 22 , "Você não conseguiu tirar nenhum item.") end Features: Como pedido, agora é por chance. itens organizados na tabela separados; é possível escolher a quantidade do item que o player vai ganhar; aparece o nome e a qtd do item que ele ganhou. Ex.: 03:19 Parabéns! Você ganhou 50 crystal coin.2 pontos
-
WakiV Otclient Updater O que faz? Esse auto-updater, conta com as funções de: Checar se existe novos updates na inicialização do 'OTC', baixa os updates em diretórios especificados pelo administrador, baixa e extrai arquivos '.ZIP', reinicia o' OTC' apos terminar o download do patch, múltiplos patchs. Instalação: 1 - Crie no diretório raiz de seu site um arquivo '.txt' chamado de 'Update.txt', preencha o arquivo como o arquivo a seguir: http://pastebin.com/cdwnD6qg Obs: nesse pastebin já tem as instruções de como adicionar novos updates. 2 - Baixe o 'Updater Patcher.rar' extraia na pasta raiz do seu otclient. 3 - Depois de ter baixado o 'Updater Mod.rar', extraia e coloque a pasta do mod na pasta 'mods' do seu otclient configure o caminho para o executavel do 'updater patcher' no arquivo .lua. 4 - Agora você precisa ir na pasta raiz do seu 'otclient 'e configurar o arquivo 'Config.ini' com os seguites dados: [Geral] WebSite=http://dragonhertsserver.pusku.com/ - o seu website vai aqui é o site onde fica o 'update.txt' Client=otclient - nome do executavel do seu otclient SiteFile=Update.txt - o nome do arquivo que fica no site marcando os updates 5 - Depois de tudo configurado é só abrir o 'otclient' normalmente que o 'patcher' vai executar junto. use sempre link de download direto para adicionar um novo update. Download: Updater Mod: http://www.mediafire...Updater Mod.rar Updater Patcher: http://www.mediafire...ate patcher.rar Vídeo que mostra como o mod funciona: Imagem: Obs: Se você tem um servidor é quer usar o updater, crie um instalador definindo já o diretório do seu client para o player não precisar configurar o arquivos '.lua' Obs²: Em arquivos compactados use sempre a extenção '.ZIP' Obs³: É preciso o NET framework para rodar. Créditos: vyctor171 ponto
-
[TFS 0.3.6] Player::canWalkthrough
Scizorgame reagiu a Lordbaxx por um tópico no fórum
Bom muita gente procura esse código, e ao olhar na internet só vi disponível em um fórum porém incompleto então decidi pegar o código e postá-lo com oque faltava. Esse código é utilizado para que um player passe por outro player evitando tantas reclamações por "trapar" caminho ou algo parecido, vamos lá! Ah mais uma coisa, para funcionar é preciso que o servidor esteja em NON-PVP. OBS: Testado em tfs 0.3.6 somente! Player.cpp procure por: bool Player::canWalkthrough(const Creature* creature) const Substitua todo o código por: bool Player::canWalkthrough(const Creature* creature) const { if(creature == this || hasCustomFlag(PlayerCustomFlag_CanWalkthrough) || creature->isWalkable() || (creature->getMaster() && creature->getMaster() != this && canWalkthrough(creature->getMaster()))) return true; const Player* player = creature->getPlayer(); if(!player) return false; if((((g_game.getWorldType() == WORLD_TYPE_NO_PVP && player->getVocation()->isAttackable()) || player->getTile()->hasFlag(TILESTATE_PROTECTIONZONE) || (player->getVocation()->isAttackable() && player->getLevel() < (uint32_t)g_config.getNumber(ConfigManager::PROTECTION_LEVEL))) && player->getTile()->ground) && (!player->hasCustomFlag(PlayerCustomFlag_GamemasterPrivileges) || player->getAccess() <= getAccess())) return true; return (player->isGhost() && getGhostAccess() < player->getGhostAccess()) || (isGhost() && getGhostAccess() > player->getGhostAccess()); } Depois vá em const.h e procure por: PlayerCustomFlag_CanWearAllAddons, //2^23 = 8388608 E em baixo coloque: PlayerCustomFlag_IsWalkable, //2^24 = 16777216 PlayerCustomFlag_CanWalkthrough, //2^25 = 33554433 Provavelmente em muitas sources do tfs 0.3.6, dê não exatamente um erro mais um aviso no player.cpp na função: void Player::updateInventoryWeight() Se o aviso ocorrer substitua a função citada acima por essa: void Player::updateInventoryWeight() { inventoryWeight = 0.00; if(!hasFlag(PlayerFlag_HasInfiniteCapacity)){ for(int i = SLOT_FIRST; i < SLOT_LAST; ++i){ Item* item = getInventoryItem((slots_t)i); if(item){ inventoryWeight += item->getWeight(); } } } } Só utilize o código acima se ocorrer o "warning/aviso" sobre a função. Abraço. Os créditos ficam até o momento só ao Bruno Minervino e a fireelement. Qualquer outro envolvido será creditado.1 ponto -
[Sprites] Pokemon Adventures 4.2
valakas reagiu a Animal Pak por um tópico no fórum
Imagens: Download Spr: https://mega.co.nz/#!toVk0SCb!RoavyqtKXQMOmM4c78lm5GSX42WP4MR4bZ82_1bXsnk Scan Spr: https://www.virustotal.com/pt/file/356cc7848d06fe15af7cd6a4ddab46ab5b061ed984493c09254df44b3a87105e/analysis/1438643233/ Download Items.otb: https://mega.co.nz/#!kpklEI4S!JRpUZUxFR1y9tt9KQkFaOY6jRDZkr9hzceg2NmfCs4E Scan Items.otb; https://www.virustotal.com/pt/file/e11a9ef36384215d1a49f14be877edbbe8ebf97dd62e3e872dce087f03844bb0/analysis/1438643009/ Créditos: PAdventures Team1 ponto -
[Life Thread] Marry Meow
Administrador reagiu a Marco Oliveira por um tópico no fórum
Está é minha primeira experiencia em Tibia Global, então aceito dicas ou tutoriais de como proceder! Character: Merry Meow MUNDO: Magera LEVEL ATUAL: 44 VOCAÇÃO: Elite Knight MAGIC LEVEL: 3 SWORD LEVEL: 65 SHIELD LEVEL: 59 BALANCE: 450,000 golds STATUS: Premium Account Meus Equipamentos Atuais Skills 03-08-20151 ponto -
[Encerrado][Equipe] - CastleGames™
pedrobarbalho reagiu a Masterand por um tópico no fórum
Boa tarde meus Caros, Primeiramente gostaria de agradecer a todos diretores do fórum pelo espaço que nos é cedido gratuitamente para que possamos desenvolver nossas habilidades, expor nossos trabalhos e contribuir ao mesmo tempo não somente quanto a comunidade mas como pessoa. Antes de eu dar início a ideia do meu projeto, gostaria de frisar algumas coisas importantes que envolvem o nome castle games ou melhor dizer "Portal Castle Games". Em dias atuais muitas pessoas ainda buscam em investir em servidores privados, a minha ideia não é diferente, a diferença é a forma que queremos abordar isso como um todo e fazer a gestão disso tudo. Hoje abrir um servidor qualquer um com um pouco de leitura e treinamento consegue ter sucesso, porém o que nos diferencia dos outros é sempre buscar e inovar em sistemas onde conseguimos chegar a um nível de diversão ou um pouco diferente. Então sim, a nossa ideia futuramente é ter mais de um jogo, ser um portal de jogos privados, porém atualmente tentamos abrir dois tipos de jogos, mu online e lineage ][, sendo que com a falta de profissional e interesse em colaborar, tive que congelar o projeto. Sendo assim resolvi partir para um jogo mais simples, simples em palavras por que a complexidade de Tibia é enorme e com muitos sistemas inovadores, e pelo fato de ser um dos primeiros servidores que criei em minha vida, e levando em consideração julgando pelo meu instinto em dizer que ainda há muitos jogadores, foi ai que resolvi vir até o fórum para tentar recrutar um time competente e interessado em fazer sua reputação, expandir seus conhecimentos, ganhar com tudo isso logicamente pois lucros, lucros em qualquer empresa é automático não se foge disso até por que ninguém trabalha de "graça" em um país aonde a crise é algo épico hehe. Bom para não tornar extenso o tópico vou falar resumidamente do que precisamos como trabalhamos e o que buscamos. A nossa missão Melhorar a qualidade de desenvolvimento de jogos online, visando trazer o melhor para cada jogador, e procurando inovar a cada dia diante de cada jogo. A nossa visão Num mundo em que a tecnologia toca cada vez mais todos os aspectos do nosso quotidiano, somos um portal onde procura ser líder de soluções nas áreas de desenvolvimento de jogos online, Estilo e Diversão e Tecnologia, ambicionando ser a companhia desenvolvedora mais admirada por todos os nossos parceiros, clientes, e jogadores. Os nossos valores Encantar os jogadores Cumprir os nossos compromissos Desenvolver nossa equipe Estimular a interatividade do mundo virtual O nosso compromisso de marca Nosso compromisso com o cliente é trazer servidores estáveis e garantir a diversão de todos. Esse conceito resume nosso comprometimento de oferecer soluções que sejam avançadas, fáceis de utilizar e criadas para atender necessidades de todos os gostos. A nossa estratégia Alinhar a marca CastleGames e as nossas competências-chave em desenvolvimento de jogos online e tecnologia. Constituir parcerias com clientes-chave nas áreas de jogos e desenvolvimento. Continuar a investir na manutenção e desenvolvimento de nossos servidores. Impulsionar a produtividade por meio da transformação do negócio e da excelência operacional. Caso alguém tiver interesse na ideia e em nossa proposta, por gentileza, entre em contato. Um forte abraço e novamente, obrigado pelo espaço cedido. Vagas Disponíveis: [1] Developer [2] Game Master [2] Mapper [2] Scripter Dados necessário: Nome completo: Idade: Por que gostaria de fazer parte da equipe: Cargo pretendido: Tempo disponível: De 0 à 10, enquanto você avalia seu auto conhecimento no cargo pretendido: Costuma utilizar algum software(programa) de comunicação por áudio, como skype? raidcall, teamspeak, curse voice, etc? Caso não utilize algum desses meios acima para comunicação, estaria interessado em aprender a utilizar? E por fim entrevistarei separadamente cada interessado. OBS: A versão do servidor ainda não foi definida justamente por eu estar estruturando a equipe, já possuímos site, fórum, tudo o que é necessário. Dedicado não há necessidade até que o servidor esteja em reta final, sendo assim é disponibilizado uma máquina virtual para efetuar os testes necessários antes da migração.1 ponto -
setPlayerStorageValue
DeCarvalho reagiu a zipter98 por uma questão
Você está setando a storage no monstro que está morrendo (cid). local tpId = 1387 local tps = { ["Little Corym Charlatan"] = {pos = {x=414, y=91, z=11}, toPos = {x=409, y=93, z=11}, time = 30}, } function removeTp(tp) local t = getTileItemById(tp.pos, tpId) if t then doRemoveItem(t.uid, 1) doSendMagicEffect(tp.pos, CONST_ME_POFF) end end function onDeath(cid, corpse, deathList) local tp = tps[getCreatureName(cid)] if tp then doCreateTeleport(tpId, tp.toPos, tp.pos) doCreatureSay(cid, "A teleport appeared near and will disappear in "..tp.time.." seconds.", TALKTYPE_ORANGE_1) doCreatureSay(cid, "You have killed the disorder and proved be trustworthy", TALKTYPE_ORANGE_1) setPlayerStorageValue(deathList[1], 21321, 1) addEvent(removeTp, tp.time*1000, tp) end return true end1 ponto -
Para ser sincero, não li por inteiro esses códigos, então talvez hajam mais erros. Corrigido.1 ponto
-
1 ponto
-
Background/logo
SkyDarkyes reagiu a SkyLigh por uma questão
Resolvido? se possível marque melhor resposta para que eu possa mover Movido para entregues.1 ponto -
@@SkyDarkyes, magicEffect316 é uma função. Dentro da função, tem um loop que percorre toda a tabela: for i=1, #effect do end #effect retorna o tamando da tabela. Seria a mesma coisa no meu script: for i=1, 5 do end Então a cada posição da tabela, ele vai usar a função de efeito: doSendMagicEffect(position, effect) effect = pega o efeito de cada posição da tabela que o loop percorre... Acho que você está tão certo na sua ideia, que não está testando a nossa...1 ponto
-
Background/logo
SkyDarkyes reagiu a SkyLigh por uma questão
Esqueci de alterar a fonte sapkoaspkoas, coloquei as 2 com fonte do naruto ---------1 ponto -
Agradecemos! Boa sorte em seu projeto também. <3 Seu gato, agradeço! Obrigado Daniel, seu apoio está sendo fundamental! Obrigado! Você foi respondido, verifique seu e-mail por favor. Cuidado, as aparências enganam....1 ponto
-
Parametros
DeCarvalho reagiu a RigBy por uma questão
sendMagicEffect, não é obrigatório usar esses nomes, você pode usar o numero de quando você usa o comando !z 10 por exemplo: player:sendMagicEffect(10), ira solta aquele effect do exori. A diferencia entre ele é que: player:say, obriga o player e fala algo e outras pessoas podem ver player:sayTextMessage, aparece uma msg na tela,chat ou serv log e apenas o player pode ver No TFS 1.2 so da para ver pelas source mas no 0.4 da para ver no 000-constant TALKTYPE_FIRST = 1 TALKTYPE_SAY = TALKTYPE_FIRST TALKTYPE_WHISPER = 2 TALKTYPE_YELL = 3 TALKTYPE_PRIVATE_PN = 4 TALKTYPE_PRIVATE_NP = 5 TALKTYPE_PRIVATE = 6 TALKTYPE_CHANNEL_Y = 7 TALKTYPE_CHANNEL_W = 8 TALKTYPE_BROADCAST = 9 TALKTYPE_CHANNEL_RN = 10 TALKTYPE_PRIVATE_RED = 11 TALKTYPE_CHANNEL_O = 12 TALKTYPE_MONSTER_SAY = 13 TALKTYPE_MONSTER_YELL = 14 TALKTYPE_LAST = TALKTYPE_MONSTER_YELL TALKTYPE_TYPES = { ["say"] = TALKTYPE_SAY, ["whisper"] = TALKTYPE_WHISPER, ["yell"] = TALKTYPE_YELL, ["private-playernpc"] = TALKTYPE_PRIVATE_PN, ["private-npcplayer"] = TALKTYPE_PRIVATE_NP, ["private"] = TALKTYPE_PRIVATE, ["channel-yellow"] = TALKTYPE_CHANNEL_Y, ["channel-white"] = TALKTYPE_CHANNEL_W, ["broadcast"] = TALKTYPE_BROADCAST, ["channel-red"] = TALKTYPE_CHANNEL_RN, ["private-red"] = TALKTYPE_PRIVATE_RED, ["channel-orange"] = TALKTYPE_CHANNEL_O, ["monster"] = TALKTYPE_MONSTER, ["monster-yell"] = TALKTYPE_MONSTER_YELL, ["rvr-channel"] = TALKTYPE_RVR_CHANNEL, ["rvr-answer"] = TALKTYPE_RVR_ANSWER, ["rvr-continue"] = TALKTYPE_RVR_CONTINUE, ["channel-redanonymous"] = TALKTYPE_CHANNEL_RA } MESSAGE_FIRST = 13 MESSAGE_EVENT_ORANGE = MESSAGE_FIRST MESSAGE_STATUS_CONSOLE_ORANGE = 14 MESSAGE_STATUS_WARNING = 15 MESSAGE_EVENT_ADVANCE = 16 MESSAGE_EVENT_DEFAULT = 17 MESSAGE_STATUS_DEFAULT = 18 MESSAGE_INFO_DESCR = 19 MESSAGE_STATUS_SMALL = 20 MESSAGE_STATUS_CONSOLE_BLUE = 21 MESSAGE_STATUS_CONSOLE_RED = 22 MESSAGE_LAST = MESSAGE_STATUS_CONSOLE_RED MESSAGE_TYPES = { ["advance"] = MESSAGE_EVENT_ADVANCE, ["event"] = MESSAGE_EVENT_DEFAULT, ["white"] = MESSAGE_EVENT_DEFAULT, ["orange"] = MESSAGE_STATUS_CONSOLE_ORANGE, ["info"] = MESSAGE_INFO_DESCR, ["green"] = MESSAGE_INFO_DESCR, ["small"] = MESSAGE_STATUS_SMALL, ["blue"] = MESSAGE_STATUS_CONSOLE_BLUE, ["red"] = MESSAGE_STATUS_CONSOLE_RED, ["warning"] = MESSAGE_STATUS_WARNING, ["status"] = MESSAGE_STATUS_DEFAULT }1 ponto -
1 ponto
-
Nome completo: Rodrigo Soares Idade: 17 Por que gostaria de fazer parte da equipe: Quero me aprimorar e ajudar Cargo pretendido: GM, Também sou web designer e designer Tempo disponível: Tarde De 0 à 10, enquanto você avalia seu auto conhecimento no cargo pretendido: 8 Costuma utilizar algum software(programa) de comunicação por áudio, como skype? raidcall, teamspeak, curse voice, etc: Skype (brunn.multin)1 ponto
-
Background/logo
SkyDarkyes reagiu a SkyLigh por uma questão
Fiz a logo Não sou muito bom em tipografia mais.... se quiser que eu faça o background diga o tamanho1 ponto -
Colocar restrições no teleporte
Bruninho Santos reagiu a SkyLigh por uma questão
function onSay(cid, words, param) if getCreatureCondition(cid, CONDITION_INFIGHT) then doPlayerSendTextMessage(cid, 22, "Você precisa está sem batte para cê teleportado") return true end pos = {x=220, y=451, z=7} doSendMagicEffect(getPlayerPosition(cid),53) doPlayerSendCancel(cid,"Teleportado!") doTeleportThing(cid,pos) end Movido para seção de resolvidos.1 ponto -
[TFS1.2]Mover Parede/Pedra/Estatua
DeCarvalho reagiu a RigBy por uma questão
To meio sem tempo mas fiz aqui: Coloque o actionid "13501" nos dois coal basin. -- made by Rigby (João Vitor) local whitepearl = {id = 2143, pos = {x = 91, y = 128, z = 7}} -- id da witherpearl e a posição onde deverar que ruma ela local blackpearl = {id = 2144, pos = {x = 89, y = 122, z = 7}} -- id da blackpearl e a posição onde deverar que ruma ela local wall = {id = 1445, pos = {x = 90, y = 125, z = 7}} -- id da parede e posição dela local time = 5 -- quanto tempo ficara aberto local storage = 21321 -- storage que precissa para passar function onAddItem(moveitem, tileitem, position) getWall = getTileItemById(Position(wall.pos), wall.id) getBlack = getTileItemById(Position(whitepearl.pos), whitepearl.id) getWhite = getTileItemById(Position(blackpearl.pos), blackpearl.id) if moveitem:getId() == whitepearl.id or moveitem:getId() == blackpearl.id then if getWhite.itemid ~= 0 or getBlack.itemid ~= 0 then if getWall.itemid ~= 0 then Position(wall.pos):sendMagicEffect(3) doRemoveItem(getWall.uid, 1) moveitem:remove() addEvent(function() Game.createItem(wall.id, 1, wall.pos) Position(wall.pos):sendMagicEffect(3) end, time*1000) end end end return true end function onStepIn(creature, item, position, fromPosition) if creature:isPlayer() then if creature:getStorageValue(storage) == -1 then creature:teleportTo(fromPosition) end end return true end1 ponto -
[Encerrado][Equipe] - CastleGames™
pedrobarbalho reagiu a Masterand por um tópico no fórum
Bom dia Caros, Estarei entrando em contato com vocês pela parte da tarde, estou indo para o horário de almoço, a tarde estarei enviado convite para que possamos conversar melhor. Obrigado pelo vosso interesse, Até mais1 ponto -
[Resolvido] Mudar outfit do player
pedrobarbalho reagiu a mrlhsl por uma questão
Obg era esse mesmo só q sem o attr era só /newtype 54,nomedoplayer1 ponto -
[Resolvido] Mudar outfit do player
mrlhsl reagiu a pedrobarbalho por uma questão
mrlhsl, eu já usei esse comando uma vez, tenta esse:1 ponto -
[Encerrado][Equipe] - CastleGames™
Masterand reagiu a pedrobarbalho por um tópico no fórum
Nome completo: Pedro Ian Barbalho Gualberto Idade: 18 Por que gostaria de fazer parte da equipe: Já tive a oportunidade de ser ADM de servidores de amigos mas a principal atuação foi como Tutor, Senior Tutor e finalmente GameMaster do servidor TibiaRPGBrasil um dos servidores mais antigos e sérios do país. Amei atuar no cargo e amaria atuar de novo. Conheço todos os comandos, regras para punições, atuação em help e reportrules, eventos e o principal interação e trabalho em equipe. Cargo pretendido: GameMaster Tempo disponível: Faço faculdade de manhã de segunda a quinta e a tarde de segunda a quarta, mas os dias que eu não tenho aula eu poderei estar online a tarde toda e a noite toda. E finais de semana. De 0 à 10, enquanto você avalia seu auto conhecimento no cargo pretendido: 9, pois sempre temos algo a mais para aprender. Costuma utilizar algum software(programa) de comunicação por áudio, como skype? raidcall, teamspeak, curse voice, etc? No momento, Skype (pedro.ian.barbalho). Mas se for necessário utilizo qualquer programa. Caso não utilize algum desses meios acima para comunicação, estaria interessado em aprender a utilizar? Com certeza. Email para contato: pedro.barbalho@hotmail.com1 ponto -
Change Name
SkyLigh reagiu a Animal Pak por um tópico no fórum
Em talkactions/scripts crie um arquivo changename.lua e dentro coloque: function sugested() --GName generator local cons = {'b','c','d','f','g','h','i','j','k','l','m','n',' p','q','r','s','t','v','x','y','z'} local vog = {"a",'e','i','o','u'} local sibalas = {} for i=1,#cons do for e=1,#vog do table.insert(sibalas,1,cons[i]..vog[e]) end end local total = "" for i=1,math.random(1,2) do local nam = "" for i=1,math.random(2,4) do nam = nam..sibalas[math.random(1,#sibalas)] end if math.random(1,2) == 1 then nam = nam..vog[math.random(1,#vog)] elseif math.random(1,2) == 2 then nam = nam..cons[math.random(1,#vog)] end total = total..(i == 2 and ' ' or '')..nam:sub(1,1):upper()..nam:sub(2,-1) end return total end function onSay(cid, words, param, channel) if param == 'gen' then doCreatureSay(cid,'Suggested name: '..sugested(),1) return true end local param1,param2 = param:match('(.-)[;:,.]%s*(.+)') param = param1 or param param2 = param2 or sugested() if not param then doPlayerSendTextMessage(cid,25,'Use like this: /rename Old name, New name') return true end if param2:len() <= 2 or param2:len() > 20 then doPlayerSendTextMessage(cid,25,'Please 3-20 characters.') return true end if param2:match('[%a%d%s%u%l]+') ~= param2 then doPlayerSendTextMessage(cid,25,'Please only A-Z 0-9') return true end param2 = param2:sub(1,1):upper()..param2:sub(2,-1) local p2 = getPlayerByName(param) if p2 and isPlayer(p2) then local id = getPlayerGUID(p2) doPlayerPopupFYI(p2,'Changing your name. Please login again on your character list.') addEvent(doRemoveCreature,2000,p2) addEvent(function(id,param2) db.executeQuery("UPDATE `players` SET `name` = '"..param2.."' WHERE `id` ="..id) end,2100,id,param2) else doPlayerSendTextMessage(cid,25,'Player '..param..' not found.') return true end return TRUE end Em talkactions/talkactions.xml adicione: <talkaction log="yes" words="/name" access="5" event="script" value="changename.lua"/> Créditos: Mock The Bear1 ponto -
utilize o script do jeito que postei acima e coloque o login.lua assim function onLogin(cid) accountManager = "Account Manager" managerCounter = 0 local config = { loginMessage = getConfigValue('loginMessage'), useFragHandler = getBooleanFromString(getConfigValue('useFragHandler')) } for i, player in ipairs(getOnlinePlayers()) do if accountManager:lower() == player:lower() then managerCounter = managerCounter + 1 end end if managerCounter >= 3 then return false end local loss = getConfigValue('deathLostPercent') if(loss ~= nil) then doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10) end local accountManager = getPlayerAccountManager(cid) if(accountManager == MANAGER_NONE) then local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage if(lastLogin > 0) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str) str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "." else str = str .. " Please choose your outfit." doPlayerSendOutfitWindow(cid) end doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str) elseif(accountManager == MANAGER_NAMELOCK) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?") elseif(accountManager == MANAGER_ACCOUNT) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to manage your account and if you want to start over then type 'cancel'.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to create an account or type 'recover' to recover an account.") end if(not isPlayerGhost(cid)) then doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT) end registerCreatureEvent(cid, "Mail") registerCreatureEvent(cid, "GuildMotd") registerCreatureEvent(cid, "Idle") if(config.useFragHandler) then registerCreatureEvent(cid, "SkullCheck") end registerCreatureEvent(cid, "ReportBug") registerCreatureEvent(cid, "AdvanceSave") registerCreatureEvent(cid, "attackguild") registerCreatureEvent(cid, "advance") registerCreatureEvent(cid, "FimPremium") registerCreatureEvent(cid, "SkullCheck") registerCreatureEvent(cid, "demonOakLogout") registerCreatureEvent(cid, "demonOakDeath") registerCreatureEvent(cid, "ReportBug") registerCreatureEvent(cid, VipReceive) registerCreatureEvent(cid, "PlayerKill") registerCreatureEvent(cid, "KillingInTheNameOf") registerCreatureEvent(cid, "targetCreature") registerCreatureEvent(cid, "DeathSystem") registerCreatureEvent(cid, "KillPlayer") registerCreatureEvent(cid, "showKD") registerCreatureEvent(cid, "TiraBattle") registerCreatureEvent(cid, "tp") registerCreatureEvent(cid, "verf_taskNpc") registerCreatureEvent(cid, "taskNpc") if (InitArenaScript ~= 0) then InitArenaScript = 1 for i = 42300, 42309 do setGlobalStorageValue(i, 0) setGlobalStorageValue(i+100, 0) end end if getPlayerStorageValue(cid, 42309) < 1 then for i = 42300, 42309 do setPlayerStorageValue(cid, i, 0) end end if getPlayerStorageValue(cid, 42319) < 1 then for i = 42310, 42319 do setPlayerStorageValue(cid, i, 0) end end if getPlayerStorageValue(cid, 42329) < 1 then for i = 42320, 42329 do setPlayerStorageValue(cid, i, 0) end end if getPlayerStorageValue(cid, 42355) == -1 then setPlayerStorageValue(cid, 42355, 0) end setPlayerStorageValue(cid, 42350, 0) setPlayerStorageValue(cid, 42352, 0) -- attribute system by draky lucas if getPlayerStorageValue(cid,storagesUtilizadas.storageLevelJaPego) == -1 then for i = storagesUtilizadas.storageLevelJaPego,storagesUtilizadas.storageMana do setPlayerStorageValue(cid,i,0) end end registerCreatureEvent(cid,"avancarGanharPontos") -------------- TASK SYSTEM -------------- registerCreatureEvent(cid,"tasksystem") if getPlayerStorageValue(cid, 95673) < 0 then setPlayerStorageValue(cid, 95673, 0) end if getPlayerStorageValue(cid, 95674) < 0 then setPlayerStorageValue(cid, 95674, 0) end ----------------------------------- return true end1 ponto
-
Na linha 55, troque: (#Config.Monster + 3) por: (#Config.Monsters + 3)1 ponto
-
Aqui funciona normalmente... abre o %appData% vá aonde tá a pasta do RME/Extensions e abra o arquivo newterrains_by_alvanea.xml Procure isso: client="9.60"> Troque para: client="9.60;10.78">1 ponto
-
--[[ PERFECT UPGRADE SYSTEM 2.0 Criado por Oneshot É proibido a venda ou a cópia sem os devidos créditos desse script. ]]-- UpgradeHandler = { levels = { [1] = {90, false, false}, [2] = {80, false, false}, [3] = {70, false, false}, [4] = {60, true, false}, [5] = {40, true, true} }, broadcast = 8, attributes = { ["attack"] = 1, ["defense"] = 1, ["armor"] = 1 }, message = { console = "Trying to refine %s to level +%s with %s%% success rate.", success = "You have upgraded %s to level +%s", fail = "You have failed in upgrade of %s to level +%s", downgrade = "The upgrade level of %s has downgraded to +%s", erase = "The upgrade level of %s has been erased.", maxlevel = "The targeted %s is already on max upgrade level.", notupgradeable = "This item is not upgradeable.", broadcast = "The player %s was successful in upgrading %s to level +%s.\nCongratulations!!", invalidtool = "This is not a valid upgrade tool.", toolrange = "This upgrade tool can only be used in items with level between +%s and +%s" }, tools = { [8306] = {range = {0, 10}, info = {chance = 0, removeable = true}}, [8300] = {range = {0, 10}, info = {chance = 0, removeable = true}} }, isEquipment = function(self) local weaponType = self:getItemWeaponType() return ((weaponType > 0 and weaponType < 7) or self.item.armor ~= 0) end, setItemName = function(self, name) return doItemSetAttribute(self.item.uid, "name", name) end, chance = function(self) local chances = {} chances.upgrade = (self.levels[self.item.level + 1][1] or 100) chances.downgrade = (self.item.level * 5) chances.erase = (self.item.level * 3) return chances end } function UpgradeHandler:new(item) local obj, ret = {} obj.item = {} obj.item.level = 0 obj.item.uid = item.uid for key, value in pairs(getItemInfo(item.itemid)) do obj.item[key] = value end ret = setmetatable(obj, {__index = function(self, index) if _G[index] then return (setmetatable({callback = _G[index]}, {__call = function(self, ...) return self.callback(item.uid, ...) end})) else return UpgradeHandler[index] end end}) if ret:isEquipment() then ret:update() return ret end return false end function UpgradeHandler:update() self.item.level = (tonumber(self:getItemName():match("%+(%d+)")) or 0) end function UpgradeHandler:refine(uid, item) if not self.item then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, self.message.notupgradeable) return "miss" end local tool = self.tools[item.itemid] if(tool == nil) then doPlayerSendTextMessage(uid, MESSAGE_EVENT_DEFAULT, self.message.invalidtool) return "miss" end if(self.item.level > #self.levels) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.maxlevel:format(self.item.name)) return "miss" end if(self.item.level < tool.range[1] or self.item.level >= tool.range[2]) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_RED, self.message.toolrange:format(unpack(tool.range))) return "miss" end local chance = (self:chance().upgrade + tool.info.chance) doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, self.message.console:format(self.item.name, (self.item.level + 1), math.min(100, chance))) if(tool.info.removeable == true) then doRemoveItem(item.uid, 1) end if chance * 100 > math.random(1, 10000) then doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_ORANGE, self.message.success:format(self.item.name, (self.item.level + 1))) if (self.item.level + 1) >= self.broadcast then doBroadcastMessage(self.message.broadcast:format(getCreatureName(uid), self.item.name, (self.item.level + 1))) end self:setItemName((self.item.level > 0 and self:getItemName():gsub("%+(%d+)", "+".. (self.item.level + 1)) or (self:getItemName() .." +1"))) for key, value in pairs(self.attributes) do if getItemAttribute(self.item.uid, key) ~= nil or self.item[key] ~= 0 then doItemSetAttribute(self.item.uid, key, (self.item.level > 0 and getItemAttribute(self.item.uid, key) or self.item[key]) + value) end end return "success" else if item.itemid == 8300 then if self.item.level > 0 then self:setItemName(self:getItemName():gsub("%+(%d+)", "")) for key, value in pairs(self.attributes) do if getItemAttribute(self.item.uid, key) ~= nil or self.item[key] ~= 0 then doItemSetAttribute(self.item.uid, key, getItemAttribute(self.item.uid, key) - self.item.level * value) end end end else doRemoveItem(self.item.uid, 1) end doPlayerSendTextMessage(uid, MESSAGE_STATUS_CONSOLE_BLUE, item.itemid == 8300 and "Your item level has been reseted." or "You have broken your item while trying to upgrade it.") end end acho que agora vai1 ponto
-
Troque: local monster = Config.Monsters[getCreatureName(target):lower] por: local monster = Config.Monsters[getCreatureName(target):lower()]1 ponto
-
local Config = { Monsters = { -- ["Name"] = {amount = quantidade} ["Demon"] = {amount = 5}, ["Hydra"] = {amount = 10}, }, StoragePro = 54661, -- Não mexer se não souber editar Money = 100 -- Dinheiro } function onKill(cid, target) if not isMonster(target) and getPlayerStorageValue(cid, Config.StoragePro) >= (2 + #Config.StoragePro) then return false end local monster = Config.Monsters[getCreatureName(target):lower] if monster then local sto = getPlayerStorageValue(cid, monster) if sto < (monster.amount - 1) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Task message: [" .. (sto + 1) .. "/" .. monster.amount .. "] of " .. getCreatureName(target) .. ".") setPlayerStorageValue(cid, monster, (sto + 1)) elseif sto == (monster.amount - 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Congratulations!! you have killed" .. (sto + 1) .. "/" .. monster.amount .. "] of " .. getCreatureName(target) .. "s ands and completed the task.") setPlayerStorageValue(cid, monster, (sto + 1)) setPlayerStorageValue(cid, Config.StoragePro, (getPlayerStorageValue(cid, Config.StoragePro) + 1)) end end return true end function onLogin(cid) registerCreatureEvent('taskNpc') return true end não se esqueça em registra o script no login.lua1 ponto
-
Porta Só passa um player por vez
Xtudomuito reagiu a Alencar522 por uma questão
Tenta assim: -- Do not remove the credits -- -- [MOVEEVENT] Limite de player por sala -- -- Developed by Rigby -- -- Especially for the Xtibia.com -- function onUse(cid, item, topos) local config = { -- Config -- -- [ACTIONID] = {area = getPlayersInArea(AREA QUE IRA CHECAR (FROMPOS,TOPOS)), amountOfPlayers = QUANTIDADE QUE CABE} [212331] = {area = getPlayersInArea({x = 1030, y = 1020, z = 7}, {x = 1040, y = 1030, z = 7}), amountOfPlayers = 1} -- Config -- } if getPlayerLevel(cid) <= 299 then doPlayerSendCancel(cid, 'Você precisa de nivel 300 ou mais para passar') return true end if getPlayerStorageValue(cid, 1233256) == 1 then doTeleportThing(cid, topos,true) setPlayerStorageValue(cid, 1233256, -1) return true end if config[item.actionid] then if #config[item.actionid].area >= config[item.actionid].amountOfPlayers then return doPlayerSendCancel(cid, 'Ja tem um player, aguarde...') end setPlayerStorageValue(cid, 1233256, 1) doTeleportThing(cid, topos, true) end return true end function getPlayersInArea(fromPos, toPos) -- Function made by Vodkart local players = {} for _, pid in ipairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), fromPos, toPos) then table.insert(players, pid) end end return players end1 ponto -
Teletransportar para house por talk
Bruninho Santos reagiu a SkyLigh por um tópico no fórum
Fala galera, eu estava querendo botar um sistema no meu servidor que um player deu a ideia e curti bastante até que resolvi colocar e com isso acabei fazendo um código simples para o sistema. O QUE ELE FAZ : O sistema lhe transportara para sua house caso você tenha uma, através de uma talkaction que você digita !house caso você esteja sem battle você sera teletransportado cê não vai aparecer, uma mensagem avisando que não é posível. Vá em data/scripts/talkactions.xml e adicione a seguinte tag : <talkaction words="!house" script="house.lua"/> Agora vá em data/talkactions/scripts e crie o arquivo house.lua com o seguinte conteúdo: local efeito = 30 --- id do feito quando cê teletransportar function onSay(cid, words, param) if getCreatureCondition(cid, CONDITION_INFIGHT) then doPlayerSendTextMessage(cid, 22, "Você precisa está sem batte para se teletransportar") return true end if getHouseByPlayerGUID(getPlayerGUID(cid)) then doTeleportThing(cid, getHouseEntry(getHouseByPlayerGUID(getPlayerGUID(cid)))) doSendMagicEffect(getCreaturePosition(cid), efeito) doPlayerSendTextMessage(cid, 22, "Você foi teleportado para sua house.") else doPlayerSendTextMessage(cid, 22, "Você não tem uma house infelizmente.") end return true end Logo em seguida de um /reload talkactions e o sistema vai estar funcionando normalmente.1 ponto -
Download Scan Tutorial Rápido Baixar arquivo. Digite o diretório AAC zNote e excluir ou renomear a pasta layout. Extraia .zip no diretório zNote AAC .1 ponto
-
Double EXP
jvcasarin reagiu a Session Start por uma questão
Talkaction.XML <talkaction words="/doubleexp" access="5" event="script" value="exp.lua"/> Taltaction/script/exp.lua function onSay(cid, words, param, channel) local config = { storage = 102590, } if(param == 'cancel') then if getGlobalStorageValue(config.storage) > 0 then setGlobalStorageValue(config.storage, -1) doBroadcastMessage("Double Exp cancelado") end return true end param = tonumber(param) if(not param or param < 0) then doPlayerSendCancel(cid, "Apenas maiores que 0.") return true end if getGlobalStorageValue(config.storage) - os.time() <= 0 then setGlobalStorageValue(config.storage, os.time()+param*60*60) doBroadcastMessage("Exp bonus ativado 50% + EXP por "..param.." horas! Aproveite.") end return true end Creature.XML <event type="kill" name="ExpBonus" event="script" value="exp.lua"/> Creature/script/exp.lua function onKill(cid, target) if isPlayer(cid) and isMonster(target) then if getGlobalStorageValue(102590) - os.time() >= 1 then local exp = getExperienceStage(getPlayerLevel(cid), getVocationInfo(getPlayerVocation(cid)).experienceMultiplier) local count = ((getMonsterInfo(string.lower(getCreatureName(target))).experience*1.5*exp)/2) doPlayerAddExperience(cid, count) addEvent(doSendAnimatedText, 500, getCreaturePosition(cid), '+'..count, math.random(50,60)) end else return TRUE end return TRUE end Creature/script/login.LUA registerCreatureEvent(cid, "ExpBonus") Testa ai, não testei '-' Peguei um pouco emprestado do script globalevent do nosso amado Vodkart :31 ponto