Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 12/16/13 em todas áreas
-
Sparta Map RPG/Normal Exp
vinnevinne e 2 outros reagiu a malaria25 por um tópico no fórum
Mapa original feito em Guanambi-Bahia. RPG com EXP de 15x 3x RAT. Máquinas e fontes para obter addons / montagens. Muita incluído-guest Poi + anni (RL) Formadores offline no templos. Lugares chefe (tarefas) Mapa versão 9.81 Use para 8,6 Use para 9,6 Use para 9,86 Use para 10,22 Links! https://www.mediafire.com/?23o4hsgpfaz33w3 Like? +repp3 pontos -
Esse mapa de rookgaard pode ser usando desta versão 9.80 até 10.37 basta converter! Parte das missões onde começa - 100% Kraknaknork's demon area - 100% Rookgaard incluído as cavernas e respawns - 100% Nova Island of Destine - 100% Area Premium - 100% Area Free - 100% ~Imagens~ Tempo e a cidade Banco. Subterrâneo do banco. Subterrâneo Caverna de spiders Area de orcs e snack Parte de cima da torre dos orcs Subterrâneo da torre dos orcs Mais abaixo da torre dos orcs Area das primeira missões de quando começa Respawn da primeira missão Area norte de rookgaard Subterrâneo do cemitério de rookgaard Entrada da quest da katana Nova area da island of destine Todos respawn de npcs das novas missões Area onde escolhe as vocações Quest dos items Cavernas das 4 vocações Area onde morre pro kraknaknork's demon Ainda tem muito mais! espero que gostem. Download ----> http://www.4shared.com/rar/oXZf5pr_/rook.html <---- Donwload Scan ----> https://www.virustotal.com/pt/url/7d957734b4517e8dec6ac7a11d1089e3937aba58c44adc9d3f0f74422180e97d/analysis/1387167265/ <---- Scan Por BrunoWots.2 pontos
-
2 pontos
-
Avatar - Assinatura - Banner - Sign - Background -
BrunooMaciell e um outro reagiu a Benny por uma questão
Caralho, curti demais a img do panda ..2 pontos -
No Remeres, vá em : Map > Properties E troca o Client Version pra versão do .spr e .dat que você importou pro Remeres. Em : File > Preferences > Client Version Ponha o Default Client Version na versão do .spr e .dat importado também. Obs.: Detalhe que se no seu mapa tem sprites modificadas e etc, você precisa importar o .spr e .dat do client que o servidor roda esse mapa, pro Remeres. É óbvio que o Remeres não irá ler um mapa que tenha sprites custom, com o .spr e .dat padrões do Tibia.2 pontos
-
function onUse(cid, item) local pos1 = {x=198, y=822, z=8, stackpos=253} local newpos1 = {x=195, y=814, z=8} local thing = getThingFromPos if getPlayerStorageValue(cid,34601) == 1 then if (isPlayer(thing(pos1).uid)) then doTeleportThing(thing(pos1).uid, newpos1) end else doPlayerSendCancel(cid, "Você não pode usar essa alavanca sem ter completado a X quest.") end return doPlayerSendCancel(cid, "Parabens.") end2 pontos
-
Digitibia Server
alissonfgp reagiu a Gabrieltxu por um tópico no fórum
Fala ai galera estava andando na net ate que me deparei com um Server de Digitibia Otimo para como base Bom vou falar agora as Informaçoes Sobre o Server! ►Informações:◄ Servidor 8.54; Novas Sprites; Digimons 50%; Ataques 50% Hunts Adicionadas; Novos Comandos; Novos Itens; Base 100%, liberado para quem quiser editar / adicionar novas coisas! ►Imagens◄ ►Download:◄ Cliente Incluso com dat e spr; http://www.4shared.c...igi_Tibia.html? ►Scan:◄ https://www.virustot...sis/1359480865/ ►Créditos◄ pobredobrega Animal Pak Insaend Equipe Digiwo OBS: Server feito base do pokemon Flash mais como vcs Sabem não muda Muita coisa para Pokemon a Digimon! OBS²: Não foi Eu que criei o Server então Não vou Prometer Atualizaçoes Sobre ele! Mais vou fikar Esperto Para se o criador passar uma Atualização do Server!1 ponto -
PDA World v1 Eu tive um projeto pokemon que estava em desenvolvimento o servidor ja teve varias versões mais esta a v1 do PWO. O servidor usa apenas OTC(otclient) a troca de client vai diminuir drasticamente a qualidade do servidor. *Sistemas da versão v1 do PWO* +Bonus System(Alguns sistemas não foram corrigidos logo postarei um patch) Bugs Encontrados(Não listei todos/atenção os bugs foram corridos se houver algum um possivel patch será disponiblizado) Olds Prints News Prints Server V1: http://speedy.sh/NHrsr/Server.rar ou http://www.4shared.com/rar/im3XJWYo/Server.html? OtClient: http://www.mediafire.com/download/oxxtpbc42u3r7yp/World_Pokemon.rar ou http://speedy.sh/fGf4k/World-Pokemon.rar Scan(Este negocio de scan e uma chatisse ):https://www.virustotal.com/pt/file/874d9e4feee133f67bb1d375d93d95bdfb91beede4c0d261bb655bf52aef4283/analysis/1379170687 Configurações Agradecimentos: Patch sqlite+account manager .rar1 ponto
-
Antes de mais nada execute essas querys no seu banco de dados ALTER TABLE `guilds` ADD `frags` INT(11) NOT NULL DEFAULT 0; ALTER TABLE `guilds` ADD `acesstime` INT(15) NOT NULL DEFAULT 0; Não sabe executar a query? abra o spoiler e aprenda! Sistema Por Mod Npc (obs: o NPC funciona caso você use MOD tbm) Configuração1 ponto
-
[9.83] Alissow OTS 5.0! [17 / 03 / 2013]
jeanflamengo reagiu a Alissow por um tópico no fórum
Alissow OTS 5.0!!!!! [17/03/ 2013] Provavelmente vocês estão pensando "mas que diabo de OTS é esse?", afinal, já faz 2 anos desde que a ultima versão foi lançada (http://www.xtibia.co...10-86-completo/) e desde lá prometemos algo que não foi cumprido - até agora -, uma versão nova. ENFIM, TEMOS AGORA A MAIS NOVA VERSÃO DE UM DOS SERVIDORES MAIS AVACALHADOS JOGADOS DOS ULTIMOS TEMPOS. Mas eu tenho uma má noticia, está incompleto. Sim, o mapa está inacabado. Muitas coisas que eu planejei fazer nele eu não completei. Boa parte o Comedinha ajudou a terminar, adicionando o resto dos caminhos básicos e os monstros. mas mapa inacabado não quer dizer que não está jogável, quer dizer que faltou detalhar (Ex: x:55 y: 137 z: 9, x: 104 y: 140 z: 7, etc). A ultima versão foi baixada mais de 50 mil vezes e esperamos que essa versão faça o mesmo sucesso. VAMOS BAIXAR E JOGAR, SEUS LINDOS Créditos Gerais: Sobre o OT/Mapa: Principais quests: -Annihilator -Inquisition Quest -Pits of inferno -Demon Oak -Solar axe quest -HOTA -MPA quest -The Challenger Monstros: -Total monstros: 10292 -Total spawn: 5587+ Cidades: -12 Cidades -200 Houses+- Raids/Invasões: -Rat -Orshabaal -Ghazbaran -Giant spider/The old window -Ferumbras -Morgaroth Spells: -Magias editadas para balanceamento das vocações Changelog Atualização [3.4 BETA]: Atualização nº 2 [3.4]: Atualização 3.5 [06/08/2009]: Atualização Patch 3.5.1 [07/08/2009]: Atualização 3.6 [10/08/2009]: Atualização 3.7! Beta [18/12/2009]: Atualização 3.7 Patch 1 [27/12/2009]: Atualização 3.8 [17/01/2010]: Atualização 3.8 Minor Patch 1 [17/01/2010]: Atualização 3.9 [15/02/2010]: Atualização 4.0 [15/02/2010]: Atualização 4.11! [11/07/2010]: Atualização 5.0!!!!! [17/03/2013] - Atualizado para a versão 9.83 (Comedinhasss, Tfs Team) - Sistemas novos para a nova versão, montaria, war system, etc. (Comedinhasss, Tfs Team) - Rep System e Antbot Removido. (Comedinhasss) - 64 Quests reformuladas. (Comedinhasss/Alissow) - Novo sistema de dicas a cada 15 min. - (Comedinhasss) - Novo sistema de map marks ao entrar no servidor. (Comedinhasss) - Organização geral em Actions e Moveevents. (Comedinhasss) - Nova organização nos monstros agora usando os que não tem no tibia original na pasta monsters em mods. (Comedinhasss) - Npcs sem utilidade removidos (Comedinhasss) - Alavanca de runas e potions reformuladas (Comedinhasss, Alissow) - Bug PZ nas Hydras arrumado (Alissow) - Cidade principal parcialmente reformulada (Alissow) - Cidade de Flam totalmente reformulada (Alissow) - As lojas agora não são mais areas PZ (Alissow) - Corrigido erros em portas que não deveriam abrir, e portas que não deveriam fechar (Alissow) - Continente de Zao removido? (Alissow) - Arrumado bugs onde podia-se pegar items na ferumbras tower e vários outros lugares (Alissow) - Arrumado caminho da "inquisition" (Alissow) - Respawns recolocados em algumas áreas de yalahar, dragons, elfs Hydras, Dark magicians e apprentices (Alissow) - Nova entrada para arena (Svargrond) na cidade principal e funcionando! (Alissow) - Elevado nível de dificuldade da Arena (Svargrond) (Alissow) - Nova localização da Ferumbras Tower (Alissow) - Cidade de Mistyc removida (Alissow) - Novo sistema premium igual ao global. (Comedinhasss) - Sistema de bless reformulado e agora por items. (Comedinhasss) - Sistema de portais/teleports (Comedinhasss, Alissow) - Sistema offline training (Comedinhasss, TFS) - Sistema de casamento trocado (Comedinhasss, Outros) - Spells (OTX) Screenshots: Mais screenshots: Clique Aqui Download: Windows: http://www.mediafire...cap2yi5jee5e7an (Tam: 16MB) Linux (Debian): http://www.mediafire...5lu3476fd8jcnc8 (Tam: 7MB) Link Protegido Windows: http://lix.in/-d3c97c Link Protegido Linux (Debian): http://lix.in/-d5501d Scan Virus Total: https://www.virustot...sis/1363492837/ IP Changer: http://www.mediafire...6stsdskhljaa0c1 -Atenção- - Acc do God: admin/admin - LEIA o tópico antes de postar qualquer coisa ou duvida - Reportem se houver algum bug - Offline Train Level configurado no config.lua em levelToOfflineInBed - As estatuas de offline que ficam no templo não funcionam por serem enfeites - Para tirar o , previewer do nome, no config.lua em serverPreview mude para false - Todos os addons são vendidos menos o demon que o comedinha acabou esquecendo de coloca - Comandos personalizados: /ta - itens pro sv inteiro, /tp - locais do mapa, /p - tem na assinatura do comedinha ensinando, /e - abrir e fechar portal(open, close). - Para usar os portais você primeiro deve explorar a área indo até ela - Tem alguns segredinhos e lugares escondidos muito legais para vocês descobrirem - Favor, não usar o nosso distro sem o nosso consenso, obrigado. - Se você gostou, clique no ali embaixo ó1 ponto -
Pet System OOP
PostadorHunter reagiu a Oneshot por um tópico no fórum
Pet System OOP Boa tarde, pessoal. Depois de ver muitos sistemas de pet para Tibia, resolvi desenvolver o meu próprio sistema de pets. O diferencial do meu sistema é que ele é orientado a objetos. Sim, ele trata o pet do jogador como um objeto em Lua e suas ações como métodos. Essa ainda é uma versão básica, que irei aprimorar aos poucos, igual fiz com meu Forge System e Refine System. Por se tratar de uma biblioteca orientada a objetos, ele pode ser usado por qualquer scripter em diversos sistemas, e se bem adaptado, dá até para fazer um Poketibia orientado a objetos. Aliás, os comandos estão bastante semelhantes a Pokétibia. Instalação 1. Crie um arquivo em data/lib com o nome pet-system.lua e cole o conteúdo abaixo: -- This script is part of Pet System -- Copyright (C) 2013 Oneshot -- -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see <http://www.gnu.org/licenses/>. -- storages for pet system PET_UID = 80001 PET_SPECIE = 80002 PET_LEVEL = 80003 PET_EXPERIENCE = 80004 PET_HEALTH = 80005 PET_HEALTHMAX = 80006 PET_MANA = 80007 PET_MANAMAX = 80008 PET_EXHAUST = 80009 PET_ALIVE = 80010 Pets = {} -- class for pet species PetSpecie = { type = "", basehp = 0, basemp = 0, gainhp = 0, gainmp = 0, spells = {}, evolution = "", evolve = 0, } -- class for pets Pet = { it = nil, attributes = nil, level = 0, experience = 0, health = 0, healthmax = 0, mana = 0, manamax = 0, } -- create new instances of PetSpecie function PetSpecie:new(type, basehp, basemp, gainhp, gainmp, spells, evolution, evolve) local new_specie = { type = type, basehp = basehp, basemp = basemp, gainhp = gainhp, gainmp = gainmp, spells = spells, evolution = evolution, evolve = evolve, } local obj = setmetatable(new_specie, {__index = self}) Pets[type:lower()] = obj return obj end -- create new instances of Pet function PetSpecie:create() local new_pet = { it = nil, attributes = self, level = 1, experience = 0, health = self.basehp, healthmax = self.basehp, mana = self.basemp, manamax = self.basemp, } return setmetatable(new_pet, {__index = Pet}) end -- summon a player pet for the first time function Pet:hatch(cid) if getCreatureStorage(cid, PET_SPECIE) ~= -1 then return doPlayerSendCancel(cid, "You already have a pet.") end local pet = doCreateMonster(self.attributes.type, getCreaturePosition(cid)) if not pet then return false end if not doConvinceCreature(cid, pet) then doRemoveCreature(pet) return false end self:setit(pet) setCreatureMaxHealth(pet, self.healthmax) doCreatureAddHealth(pet, self.healthmax) doCreatureSetStorage(cid, PET_SPECIE, self.attributes.type) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your new pet has born.") self:save() doSendMagicEffect(getCreaturePosition(pet), CONST_ME_HOLYDAMAGE) return self end -- make player pet say something function Pet:say(strt) doCreatureSay(self.it, strt, TALKTYPE_ORANGE_1) end -- gather a summoned player pet back function Pet:back() self:save() doSendMagicEffect(self:position(), CONST_ME_POFF) doCreatureSay(getCreatureMaster(self.it), "It's enough, ".. getCreatureName(self.it)) doRemoveCreature(self.it) end -- free a player pet forever function Pet:release() local cid = getCreatureMaster(self.it) doCreatureSay(cid, "Good bye, ".. getCreatureName(self.it) .."... :'(") doCreatureSetStorage(cid, PET_UID, -1) doCreatureSetStorage(cid, PET_SPECIE, -1) doCreatureSetStorage(cid, PET_LEVEL, -1) doCreatureSetStorage(cid, PET_EXPERIENCE, -1) doCreatureSetStorage(cid, PET_HEALTH, -1) doCreatureSetStorage(cid, PET_HEALTHMAX, -1) doCreatureSetStorage(cid, PET_MANA, -1) doCreatureSetStorage(cid, PET_MANAMAX, -1) doSendMagicEffect(self:position(), CONST_ME_POFF) doRemoveCreature(self.it) end -- add experience to player pet function Pet:addexperience(value) local prevLevel = self.level local nextLevelExp = getExperienceForLevel(self.level + 1) self.experience = self.experience + value while self.experience >= nextLevelExp do self.healthmax = self.healthmax + self.attributes.gainhp self.manamax = self.manamax + self.attributes.gainmp self.level = self.level + 1 nextLevelExp = getExperienceForLevel(self.level + 1) end if prevLevel ~= self.level then self.mana = self.manamax self.health = self.healthmax doPlayerSendTextMessage(getCreatureMaster(self.it), MESSAGE_STATUS_CONSOLE_BLUE, "Your pet advanced from level ".. prevLevel .." to level ".. self.level ..".") setCreatureMaxHealth(self.it, self.healthmax) doCreatureAddHealth(self.it, getCreatureMaxHealth(self.it)) self:save() if self.attributes.evolution then if self.attributes.evolve and self.level >= self.attributes.evolve then doCreatureSay(getCreatureMaster(self.it), "What's happening?!") addEvent(function() local cid = getCreatureMaster(self.it) local position = self:position() doRemoveCreature(self.it) local pet = doCreateMonster(self.attributes.evolution, position) if not doConvinceCreature(cid, pet) then doRemoveCreature(pet) call_pet(cid) return end doCreatureSetStorage(cid, PET_UID, pet) setCreatureMaxHealth(pet, self.healthmax) doCreatureAddHealth(pet, getCreatureMaxHealth(pet)) doSendMagicEffect(getCreaturePosition(pet), CONST_ME_MORTAREA) doCreatureSetStorage(cid, PET_SPECIE, self.attributes.evolution) end, 100) end end end end -- make pet cast a spell function Pet:cast(index) local cid = getCreatureMaster(self.it) if not self.attributes.spells[index] then return doPlayerSendCancel(cid, "This spell is unknown.") end local spell = self.attributes.spells[index] if self.level < spell.level then doPlayerSendCancel(cid, "Your pet doesn't have enough level to cast this spell.") return end if self.mana < spell.mana then doPlayerSendCancel(cid, "Your pet doesn't have enough mana to cast this spell.") return end if getCreatureStorage(cid, PET_EXHAUST) > os.clock() then doSendMagicEffect(self:position(), CONST_ME_POFF) doPlayerSendCancel(cid, "Your pet is exhausted.") return end if spell.target then local target = getCreatureTarget(self.it) if target == 0 then doPlayerSendCancel(cid, "First, select a target.") return end spell.range = spell.range or 1 if getDistanceBetween(self:position(), getCreaturePosition(target)) > spell.range then doPlayerSendCancel(cid, "Too far to cast spell.") return end doSendDistanceShoot(self:position(), getCreaturePosition(target), spell.shooteffect) doTargetCombatHealth(self.it, target, spell.type, -spell.min, -spell.max, spell.effect) else doAreaCombatHealth(self.it, spell.type, self:position(), (spell.area or 0), -min, -max, spell.effect) end self.mana = self.mana - spell.mana doCreatureSetStorage(cid, PET_EXHAUST, os.clock() + (spell.exhaust / 1000)) doCreatureSay(cid, getCreatureName(self.it) ..", use ".. spell.name .."!") self:say(spell.name) end -- set pet uid function Pet:setit(uid) self.it = uid end -- get player pet position function Pet:position() return getCreaturePosition(self.it) end -- move player pet to a direction function Pet:move(direction) local toPosition = getPosByDir(self:position(), direction, 1) if getCreatureStorage(getCreatureMaster(self.it), PET_EXHAUST) > os.clock() then doSendMagicEffect(self:position(), CONST_ME_POFF) doPlayerSendCancel(cid, "Your pet is exhausted.") return end if queryTileAddThing(self.it, toPosition) == RETURNVALUE_NOERROR then doMoveCreature(self.it, direction) doCreatureSetStorage(cid, PET_EXHAUST, os.clock() + 0.5) doCreatureSay(cid, "Move, ".. getCreatureName(self.it) .."!") end end -- save player pet attributes function Pet:save() local cid = getCreatureMaster(self.it) doCreatureSetStorage(cid, PET_UID, self.it) doCreatureSetStorage(cid, PET_SPECIE, getCreatureName(self.it)) doCreatureSetStorage(cid, PET_LEVEL, self.level) doCreatureSetStorage(cid, PET_EXPERIENCE, self.experience) doCreatureSetStorage(cid, PET_HEALTH, self.health) doCreatureSetStorage(cid, PET_HEALTHMAX, self.healthmax) doCreatureSetStorage(cid, PET_MANA, self.mana) doCreatureSetStorage(cid, PET_MANAMAX, self.manamax) end -- get player pet and return instance function get_pet(cid) local uid, it = getCreatureStorage(cid, PET_UID) for _, pet in ipairs(getCreatureSummons(cid)) do if pet == uid then it = pet break end end if not it then return false end local this_pet = { it = it, attributes = Pets[getCreatureName(it):lower()], level = getCreatureStorage(cid, PET_LEVEL), experience = getCreatureStorage(cid, PET_EXPERIENCE), health = getCreatureHealth(it), healthmax = getCreatureMaxHealth(it), mana = getCreatureStorage(cid, PET_MANA), manamax = getCreatureStorage(cid, PET_MANAMAX), } return setmetatable(this_pet, {__index = Pet}) end -- summon a existing player pet function call_pet(cid) if get_pet(cid) then return doPlayerSendCancel(cid, "You cannot summon your pet more than one time.") end if getCreatureStorage(cid, PET_SPECIE) == -1 then return doPlayerSendCancel(cid, "You don't have a pet.") end if getCreatureStorage(cid, PET_ALIVE) == 0 then return doPlayerSendCancel(cid, "You need to revive your pet") end local pet = doCreateMonster(getCreatureStorage(cid, PET_SPECIE), getCreaturePosition(cid)) if not pet then return false end if not doConvinceCreature(cid, pet) then doRemoveCreature(pet) return false end local health, healthmax = getCreatureStorage(cid, PET_HEALTH), getCreatureStorage(cid, PET_HEALTHMAX) setCreatureMaxHealth(pet, healthmax) doCreatureAddHealth(pet, healthmax) doCreatureAddHealth(pet, (health - healthmax)) doCreatureSay(cid, "Go, ".. getCreatureName(pet) .."!") doSendMagicEffect(getCreaturePosition(pet), CONST_ME_MAGIC_GREEN) doCreatureSetStorage(cid, PET_UID, pet) return true end -- is pet function is_pet(cid) return getCreatureMaster(cid) == 0 and false or isPlayer(getCreatureMaster(cid)) end dofile(getDataDir() .."/lib/pet-spells.lua") Pet_Rat = PetSpecie:new("Rat", 20, 0, 5, 5, {[1] = Rock_Throw, [2] = Dark_Bite}, "Cave Rat", 14) Pet_Cave_Rat = PetSpecie:new("Cave Rat", 40, 20, 10, 10, {[1] = Dark_Bite}, "Munster", 32) Pet_Munster = PetSpecie:new("Munster", 100, 50, 20, 20, {[1] = Dark_Bite}, false, false) 2. Crie um arquivo em data/lib com o nome pet-spells.lua e cole o código abaixo: -- This script is part of Pet System -- Copyright (C) 2013 Oneshot -- -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see <http://www.gnu.org/licenses/>. dofile("data/spells/lib/spells.lua") Dark_Bite = { name = "Dark Bite", level = 1, mana = 100, type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_BLOCKHIT, shooteffect = CONST_ANI_SMALLSTONE, target = true, range = 1, min = 300, max = 500, area = 0, exhaust = 1000, } Rock_Throw = { name = "Rock Throw", level = 1, mana = 10, type = COMBAT_PHYSICALDAMAGE, effect = CONST_ME_BLOCKHIT, shooteffect = CONST_ANI_NONE, target = true, range = 1, min = 20, max = 25, area = 0, exhaust = 1000, } 3. Crie um arquivo em data/talkactions/scripts, chamado pet-talkactions.lua e cole o conteúdo abaixo: -- This script is part of Pet System -- Copyright (C) 2013 Oneshot -- -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see <http://www.gnu.org/licenses/>. function onSay(cid, words, param, channel) param = string.explode(param, ":") if param[1]:lower() == "go" then if getTilePzInfo(getCreaturePosition(cid)) then return doPlayerSendCancel(cid, "You cannot call your pet at protection zone.") end local pet = get_pet(cid) if pet then return doPlayerSendCancel(cid, "You cannot call your pet two times.") end call_pet(cid) return true elseif param[1]:lower() == "back" then local pet = get_pet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end pet:back() return true elseif param[1]:lower() == "release" then local pet = get_pet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end pet:release() return true elseif param[1]:lower() == "cast" then local pet = get_pet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end local index = tonumber(param[2]) or 1 pet:cast(index) return true elseif param[1]:lower() == "say" then local pet = get_pet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end pet:say(param[2]) return true elseif param[1]:lower() == "move" then local pet = get_pet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end if not isInArray({"north", "south", "east", "west"}, param[2]:lower()) then return doPlayerSendCancel(cid, "Invalid direction.") end pet:move((_G[param[2]:upper()] or NORTH)) return true elseif param[1]:lower() == "addexp" then local pet = get_pet(cid) if not pet then return doPlayerSendCancel(cid, "Please call your pet first.") end if getPlayerGroupId(cid) < 3 then return doPlayerSendCancel(cid, "You cannot use this command.") end pet:addexperience(tonumber(param[2]) or 0) return true end return true end 4. No talkactions.xml <talkaction words="/pet" event="script" value="pet-talkactions.lua"/> 5. Crie um arquivo em data/creaturescripts/scripts com o nome pet-creaturescripts.lua e adicione o conteúdo abaixo: -- This script is part of Pet System -- Copyright (C) 2013 Oneshot -- -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see <http://www.gnu.org/licenses/>. function onKill(cid, target, lastHit) local pet = get_pet(cid) if not isMonster(target) or getMonsterInfo(getCreatureName(target)) and getMonsterInfo(getCreatureName(target)).experience == 0 then return true end if not pet then return true end pet:addexperience(getMonsterInfo(getCreatureName(target)).experience) return true end function onDeath(cid, corpse, deathList) if not is_pet(cid) then return true end local master = getCreatureMaster(cid) doPlayerSendTextMessage(master, MESSAGE_EVENT_ADVANCE, "Your pet is dead.") doCreatureSetStorage(master, PET_ALIVE, 0) doCreatureSetStorage(master, PET_HEALTH, getCreatureMaxHealth(cid)) return true end 6. No arquivo login.lua de data/creaturescripts/scripts, adicione: registerCreatureEvent(cid, "PetKill") 7. No arquivo creaturescripts.xml, adicione: <event type="kill" name="PetKill" event="script" value="pet-creaturescripts.lua"/> <event type="death" name="PetDeath" event="script" value="pet-creaturescripts.lua"/> 8. Em cada arquivo XML de cada monstro que servirá como pet, adicione: <script> <event name="PetDeath"/> </script> 9. Mude o flag convinceable de cada monstro que será um tipo de pet. <flag convinceable="1"/> 10. Crie um arquivo chamado pet trainer.lua em data/npc/scripts, adicione: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local petState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end local PetPrices = { ["rat"] = {1000, 200}, } function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_PRIVATE and 0 or cid if msgcontains(msg, "sell") then local say = "I can offer you these pet species: " for pet_name, k in pairs(PetPrices) do local first = true if Pets[pet_name] then say = say .. (first == true and "" or ", ") .."{".. pet_name .. "}" first = false end end selfSay(say, cid) talkState[talkUser] = 1 elseif msgcontains(msg, "revive") then if getCreatureStorage(cid, PET_SPECIE) == -1 then selfSay("You don't have a pet", cid) return true end if getCreatureStorage(cid, PET_ALIVE) == 0 then if doPlayerRemoveMoney(cid, PetPrices[getCreatureStorage(cid, PET_SPECIE):lower()][2]) then selfSay("Your pet is now alive.", cid) doCreatureSetStorage(cid, PET_ALIVE, 1) else selfSay("Sorry, you need ".. PetPrices[getCreatureStorage(cid, PET_SPECIE)][2] .." gold.", cid) end else selfSay("Sorry, your pet is alive.", cid) end elseif talkState[talkUser] == 1 then if PetPrices[msg] then selfSay("A good choice, so do you want to buy a ".. msg .." pet? It will cost ".. PetPrices[msg][1] .." gold.", cid) talkState[talkUser] = 2 petState[talkUser] = msg else selfSay("Sorry, I don't know this pet specie", cid) end elseif talkState[talkUser] == 2 then if msgcontains(msg, "yes") then if get_pet(cid) or getCreatureStorage(cid, PET_SPECIE) ~= -1 then selfSay("Sorry, you already have a pet.", cid) return true end local pet = petState[talkUser] if getPlayerMoney(cid) < PetPrices[pet][1] then selfSay("Sorry, you don't have enough money", cid) return true end selfSay("This is your new pet, take care of it.", cid) Pets[pet]:create():hatch(cid) elseif msgcontains(msg, "no") then selfSay("Then not.", cid) talkState[talkUser] = 0 end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) 11. Crie um arquivo chamado Pet Trainer.xml em data/npc, adicione: <?xml version="1.0" encoding="UTF-8"?> <npc name="Pet Trainer" script="pet trainer.lua" walkinterval="0" floorchange="0"> <health now="100" max="100"/> <look type="128" head="17" body="54" legs="114" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|, I {sell} and {revive} pets."/> </parameters> </npc> Configuração O Pet System OOP é todo orientado a objetos. Para criar novas raças de pet é muito, mas muito simples mesmo. Basta uma linha: PetSpecie:new("Rat", 20, 0, 5, 5, {[1] = Rock_Throw, [2] = Dark_Bite}, "Cave Rat", 14) Como segue o modelo abaixo: PetSpecie:new(NOME_DO_MONSTRO, HP_INICIAL, MP_INICIAL, HP_POR_LEVEL, MP_POR_LEVEL, {[1] = MAGIA_1, [2] = MAGIA_2, [3] = MAGIA_3, ...}, NOME_DA_EVOLUÇÃO, LEVEL_DA_EVOLUÇÃO) Caso você não queira que o pet evolua, coloque os dois parâmetros como false. E para criar novas magias, é só seguir o mesmo modelo das duas magias padrão dentro de pet-spells.lua. Demonstração Este sistema está no Github sob a licença Gnu GPL v3. Você pode baixar os scripts aqui. Abraços.1 ponto -
Global Server [1.0 ~~ 10.30]
abrita reagiu a alissonfgp por um tópico no fórum
~~ Update e Bugs Concertados ~~ * Warzones I, II, III * Yalahar Quest * Blue Legs Quest * BrowseField, New Party and Guild System * Convertido Para Versão 1.0 * The Spikes Areas Adicionados * Respawns de Drefia Concertado * Tasks * Doors de venore * Houses * Raids * Novos items 10.22/10.30 adicionados * Rookgaard e Eventos foram removidos OBS: * Não funciona Sqlite, somente mysql * Só tenho na versão 64bits(se alguem ter 32bits posta ai se possivel) * Bugs reportem que eu removo, como essa source é nova e tem umas diferenças comparada as outras pode aparecer varios bugs... * Novas areas estarei colocando nesse msm post... Updates aqui https://github.com/Alissonfgp/Global-Server Creditos Alissonfgp (EU) Links MEGA: Mega 4shared: http://www.4shared.com/rar/rCRaebrs/10_Global_Server_1030_by_Aliss.html Scan 4Shared: https://www.virustotal.com/pt-br/url/3356a44b28e2719924e71c38083b24b191df1d1b126ac42e3a106e13931f6584/analysis/1387136127/ Sources: https://github.com/otland/forgottenserver (By Mark Samman) DataBase(schemas) IMGS The Spikes Novos Items Pits of Inferno Warzones Yalahar Quest1 ponto -
1 ponto
-
Arena Sobrevivencia Event System
turox reagiu a drakylucas por um tópico no fórum
Bom, esse sistema é requisitado por muitos donos de servidores.. sempre quando pedem as pessoas fazem e enviam por PM, por ser meio dificil... Essa é minha versão desse sistema Créditos 90% Draky Lucas (eu) 10% Vodkart (uma função que utilizei e me explicou como funcionaria o sistema, q os players nao sabem explica direito kk) O que ele é? o GM do servidor digita /arena X, onde o X é o numero de jogadores necessarios para o evento começar.. supondo que o GM digitou /arena 5: o evento criaria um teleport na posição configurada; esperaria 5 players entrarem nesse teleport (não contando os GM's.. também configuravel); assim que o 5º player entrasse, o evento esperaria um delay (configuravel) e sumonaria os bixos de cada level do evento (monstros e leveis configuraveis), e assim que criasse os monstros, contaria o mesmo delay varias veses para ir avançando de nivel (e criando mais monstros), os que sobreviverem ao ultimo nivel (configuravel) ganham premios (configuraveis). Não se morre no evento e não se adquire loot dos monstros, mas ganha exp dos monstros também! [SIM, É CONFUSO DE ENTENDER.. COLOQUE NO SERVIDOR E VEJA VOCÊ MESMO] TESTADO COM The Lost Server 8.6 (Caso dê erro de storage, é pq não sei se no TFS/Baiak tem as funçoes setStorage com esse nome, mas me avise que eu arrumo a versão TFS/BAIAK) Instalando o sistema: Mapa: Script: na pasta onde fica o executavel do server, há uma pasta chamada Mods, entre nela e crie um arquivo chamado arena.xml e nele coloque isso: [PS: Editado 01:39 - 14/07/2012 por correção de um erro ortográfico do forum que comeu um parenteses do script] <?xml version="1.0" encoding="UTF-8"?> <mod name="Arena" version="1.0" author="DrakyLucas" contact="XTibia" enabled="yes"> <config name="arena_config"><![CDATA[ config = { delay = 60, -- tempo de um level para o outro posicaoPlayer = {x = 37,y = 96,z = 7}, -- posição q o player vai cair dps de entra no TP posicaoArena = {{x = 35,y = 94,z = 7},{x = 42,y = 99,z = 7}}, premio = { {2160,70}, {2152,50}, }, -- ID, Quantidade... só aceita de 1 a 100 por vez, e você pode adicionar quantos itens quiser. storage = 15444, -- não mecha.. posicaoTp = {x = 37, y = 91, z = 7}, -- posicao que o teleporte vai aparecer acesso = 3, -- acesso minimo para ser ignorado pelo evento, e o mesmo acesso para poder inicializa-lo } -- você pode adicionar quantos leveis desejar -- [NumeroDoLevel] = {{"Nome",Quantidade},{"Nome",Quantidade},{"Nome",Quantidade},{"Nome",Quantidade},{"Nome",Quantidade}}, leveis = { [1] = {{"Dragon",5}}, [2] = {{"Dragon",5},{"Dragon Lord",2}}, [3] = {{"Dragon Lord",5}}, [4] = {{"Demodras",2},{"Demon",1}}, [5] = {{"Demon",5},{"Orshabaal",1},{"Ferumbras",1}}, } function abrirTeleport(n) doItemSetAttribute(doCreateItem(1387, config.posicaoTp), "aid", 2941) -- cria o tp e deixa aid 2941 doBroadcastMessage("O Evento arena vai começar! teleport foi aberto e faltam ".. n .. " pessoas para o evento iniciar!") doSetStorage(config.storage, n) end function fecharTPeAguardarEvento() doRemoveItem(getTileItemById(config.posicaoTp, 1387).uid,100) doBroadcastMessage("O evento ja concluio " .. #getPlayersInArena() .. " players e começará em " .. config.delay .. " segundos!") addEvent(evento,config.delay*1000,1) end function HaveCreatureArena(area, remove, clean) -- função do Vodkart for x = area[1].x - 1, area[2].x + 1 do for y = area[1].y - 1, area[2].y + 1 do local pos = {x=x, y=y, z=area[1].z} local m = getTopCreature(pos).uid if remove ~= false and m ~= 0 and isMonster(m) then doRemoveCreature(m) end if clean ~= false then doCleanTile(pos, false) end end end end function resetEvento() doSetStorage(config.storage, -1) end function criarMonstros(lv) local monstro = leveis[lv] local area = {config.posicaoArena[1],config.posicaoArena[2]} for i = 1,#monstro do for k=1,monstro[i][2]do pos = {x=math.random(area[1].x,area[2].x), y=math.random(area[1].y,area[2].y), z=area[1].z} monstrinho = doCreateMonster(monstro[i][1], pos) registerCreatureEvent(monstrinho, "removerCorpse") end end end function evento(i) if #getPlayersInArena() == 0 then doBroadcastMessage("Ninguem sobreviveu a arena =/") doBroadcastMessage("EVENTO TERMINADO!") HaveCreatureArena({config.posicaoArena[1],config.posicaoArena[2]}, true, true) -- remove monstros, itens da arena resetEvento() return true end if i == (#leveis +1) then HaveCreatureArena({config.posicaoArena[1],config.posicaoArena[2]}, true, true) doBroadcastMessage("Evento finalizado, " .. #getPlayersInArena() .. " sobreviveram ao evento!") for _, pid in ipairs(getPlayersInArena()) do doPlayerSendTextMessage(pid,22,"Parabens, você sobreviveu ao evento!") addItens(pid) doTeleportThing(pid,getTownTemplePosition(getPlayerTown(pid))) end resetEvento() return true end for _, pid in ipairs(getPlayersInArena()) do doPlayerSendTextMessage(pid,22,"GoGo Nivel " .. i .. " !!!") end criarMonstros(i) addEvent(evento,config.delay*1000,i+1) end function addItens(pid) for i=1,#config.premio do doPlayerAddItem(pid,config.premio[i][1],config.premio[i][2]) end doPlayerSendTextMessage(pid,22,"Parabens, voce recebeu seus premios!") end function getPlayersInArena() local t = {} for _, pid in pairs(getPlayersOnline()) do if getPlayerAccess(pid) < config.acesso then if isInRange(getCreaturePosition(pid), config.posicaoArena[1], config.posicaoArena[2]) then table.insert(t, pid) end end end return t end ]]></config> <talkaction words="/arena" event="buffer"><![CDATA[ domodlib('arena_config') if getPlayerAccess(cid) < config.acesso then return doPlayerSendCancel(cid,"Voce nao tem acesso para esse comando") end if tonumber(param) ~= nil then -- se o parametro é numerico if tonumber(param) > 0 then doSetStorage(config.storage, param) abrirTeleport(param) end else doPlayerSendTextMessage(cid,19,"Digite /arena e um numero.. \n exemplo: \n/arena 5") end ]]></talkaction> <movevent type="StepIn" actionid="2941" event="script"><![CDATA[ domodlib('arena_config') if getPlayerAccess(cid) > config.acesso then doTeleportThing(cid, config.posicaoPlayer) return false end -- GM nao conta doSetStorage(config.storage,getStorage(config.storage) - 1) doTeleportThing(cid, config.posicaoPlayer) registerCreatureEvent(cid, "naoAtacarPlayer") registerCreatureEvent(cid, "morrerNaArena") if getStorage(config.storage) <= 0 then fecharTPeAguardarEvento() end return true ]]></movevent> <event type="login" name="VerSeTaNaArenaEExpulsa" event="script"><![CDATA[ domodlib('arena_config') if isInRange(getCreaturePosition(cid), config.posicaoArena[1], config.posicaoArena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true ]]></event> <event type="combat" name="naoAtacarPlayer" event="script"><![CDATA[ domodlib('arena_config') if isPlayer(cid) and isPlayer(target) then if isInRange(getPlayerPosition(cid), config.posicaoArena[1], config.posicaoArena[2]) and isInRange(getPlayerPosition(target), config.posicaoArena[1], config.posicaoArena[2]) then doPlayerSendCancel(cid, "Nao ataque seus amigos.") return false end end return true ]]></event> <event type="death" name="removerCorpse" event="script"><![CDATA[ domodlib('arena_config') doCreatureSay(cid,"Ninguem terá meu loot! Buaahahahha",1) pos = getCreaturePosition(cid) addEvent(doCleanTile,1,pos, false) return true ]]></event> <event type="statschange" name="morrerNaArena" event="script"><![CDATA[ domodlib('arena_config') if isInRange(getPlayerPosition(cid), config.posicaoArena[1], config.posicaoArena[2]) then if type == STATSCHANGE_HEALTHLOSS then if isPlayer(cid) then if value >= getCreatureHealth(cid) then doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid))) doPlayerSendTextMessage(pid,22,"Você morreu na arena =/.. veja pelo lado positivo, você nao perdeu nada!") doCreatureAddHealth(cid,getCreatureMaxHealth(cid) - getCreatureHealth(cid)) return false end end end end return true ]]></event> </mod> pronto, sistema adicionado.. agora vamos configurar: Tempo entre cada level Posição que está em branco na foto Posições que estão em azul na foto Premios (copie e cole como está, mude valores, adicione mais itens.. não há um limite de premios) Posição que o TP aparecerá para os players entrarem no event Acesso minimo para dar /arena X Monstros de cada Level (Obs: você pode adicionar quantos leveis desejar para o evento) Possiveis Erros: caso dê erro citado por algumas pessoas no forum (logo abaixo) é porque vocês utilizam uma distro diferente da minha e incompativel com UTF-8 então mudem <?xml version="1.0" encoding="UTF-8"?> por <?xml version="1.0" encoding="ISO-8859-1"?> e tudo deverá funcionar. Correção do erro feita pelo usuario KUNGLOW obrigado pela atenção Obrigado .. EXCLUSIVO XTIBIA1 ponto -
Aulas de História com Tibia - Maias Incas e Astecas
RastaLegion reagiu a xMeEnsina por um tópico no fórum
Opa Galera, Estou fazendo algumas aulas de história com o Tibia dêem uma olhada. http://www.youtube.com/watch?v=K0_Xu4YUkVw1 ponto -
Olá minhas amigas e amigos,já fazia um tempo que procurava esse script,ai resolvi tentar criar sozinho,mas não deu certo,depois que desisti,um tempo depois,achei sem querer o script num ot Alissow,que baixei para buscar idéias de novos scripts, RSRSRSRS,quando a gente procura nunca acha né ? acabou que achei por acaso. O que é o script ? É um script que deixa uma marcação no MINI-MAP do jogador dando informações do lugar,ótimo pra quem ter ots com map próprio,vc pode usar essas marcações quantas vezes quiser,indicando hunts,npcs,locais perigosos,para ajudar na jogabilidade do player. 100% funcional e simples,pode testar a eficiência é garantida,vale a pena usar! Créditos: 1% pra mim que divulguei aqui no site! 99% pro ot alissow e seus criadores! Ao script agora >>> Abra a pasta data/creaturescripts/scripts crie um arquivo.lua com o nome de "mapmark.lua" sem aspas e cole a seguinte função! local config = { storage = 030220122041, version = 1, marks = { {mark = 10, pos = {x = 2281, y = 2516, z = 7}, desc = "Derus Temple!"}, {mark = 15, pos = {x = 2340, y = 2508, z = 7}, desc = "Derus DP!"}, {mark = 16, pos = {x = 2355, y = 2526, z = 7}, desc = "Paladin seller!"} } } local f_addMark = doPlayerAddMapMark if(not f_addMark) then f_addMark = doAddMapMark end function onThink(cid, interval) if(isPlayer(cid) ~= TRUE or getPlayerStorageValue(cid, config.storage) == config.version) then return end for _, m in pairs(config.marks) do f_addMark(cid, m.pos, m.mark, m.desc ~= nil and m.desc or "") end setPlayerStorageValue(cid, config.storage, config.version) return TRUE end bom creio eu que já é auto-explicativo,mas se alguem tiver dúvidas pode perguntar,se é que é possivel não entender esse script! agora vá em data/creaturescripts/login.lua e add essa tag: registerCreatureEvent(cid, "MapMark") quase acabando,vá agora registrar TUDO que você fez,vá na pasta data/creaturescript/creaturescript.xml e add essa tag depois desse simbolo aqui >>> /> <event type="think" name="MapMark" event="script" value="mapmark.lua"/> Prontinho galera mais uma coperação pro xtibia,eu busquei esse tuto encontrei e pode ser util pra mais gente! REP+ ? ABRAÇOS PESSOAL XD1 ponto
-
Criando Novos Items
PrisonDoom13 reagiu a 35383 por um tópico no fórum
Pessoal vamos começar sei que não sou um bom scripter mas vou tentar não chorar pelas criticas Com esse script você nao precisara editar nada somente adicionar os scripts. Vá na pasta do seu OT data/lib e criei um arquivo.lua e renomeie para Item.lua apague tudo dentro e cole isso: function doPlayerAddEditedItem(cid, itemid) local newxml = io.open("data/items/newitems.xml", "r") local configs = {} for i in newxml:read("*a"):gmatch("<item (.-)</item>") do local itemid = tonumber(i:match('id="(.-)"')) local itemconfig = { ["spriteid"] = tonumber(i:match('spriteid.-=.-"(.-)"')), ["article"] = i:match('article.-=.-"(.-)"'), ["name"] = i:match('name.-=.-"(.-)"'), ["description"] = i:match('key.-=.-"description".-value.-=.-"(.-)"'), ["defense"] = tonumber(i:match('key.-=.-"defense".-value.-=.-"(.-)"')), ["attack"] = tonumber(i:match('key.-=.-"attack".-value.-=.-"(.-)"')), ["extradefense"] = tonumber(i:match('key.-=.-"extradef".-value.-=.-"(.-)"')), ["armor"] = tonumber(i:match('key.-=.-"armor".-value.-=.-"(.-)"')), ["extraattack"] = tonumber(i:match('key.-=.-"extraatk".-value.-=.-"(.-)"')), } configs[itemid] = itemconfig end if configs[itemid] then local item = doPlayerAddItem(cid, configs[itemid].spriteid) for i,x in pairs(configs[itemid]) do doItemSetAttribute(item, i, x) end end end Pronto agora vá na pasta do ot/data/items e crie um arquivo xml e renomeie para novositems.xml apague tudo dentro e coloque isso: <?xml version="1.0" encoding="UTF-8"?> <items> <item id="100" spriteid="2400" article="a" name="magic edited sword"> <attribute key="description" value="Arma editada." /> <attribute key="defense" value="45" /> <attribute key="attack" value="100" /> <attribute key="extradef" value="10" /> <attribute key="extraatk" value="10" /> </item> <item id="101" spriteid="2472" article="a" name="master plate armor"> <attribute key="description" value="Armor editada." /> <attribute key="armor" value="19" /> </item> </items> Bom como vocês podem ver os arquivos XML ele guarda os items adicionais a ele ele funciona como o items.xml que tambem está na pasta os atributos são: ♦ "description" ♦ "defense" ♦ "attack" ♦ "extradefense" ♦ "armor" ♦ "extraattack" Para adicionar os novos itemids aos players use doPlayerAddEditedItem(cid, ITEMID) em vez de doPlayerAddItem... :aaskull: Até mais.... :aaskull:1 ponto -
local items = {{2160, 100}, {5151, 1}, {2551, 50}} for _, b in pairs(items) do doPlayerAddItem(cid, b[1], b[2]) end1 ponto
-
@Testado Em data/movements/scripts crie um arquivo chamado tileregen.lua e adicione isso dentro: function onStepIn(cid, item, position, fromPosition, param, words) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) doCreatureAddMana(cid, getCreatureMaxMana(cid)) doPlayerSendCancel(cid, "Você encheu sua mana e seu health ao maximo!") doSendMagicEffect(getPlayerPosition(cid), 28) return TRUE end Logo após vá até a pasta data/movements e abra o arquivo movements.xml e adicione a seguinte tag: <movevent type="StepIn" uniqueid="26261" event="script" value="tileregen.lua" /> Ai basta você abrir o seu mapa no RME e adicionar a uniqueID 26261 no piso que ira regenerar a mane e o health do player, abraço.1 ponto
-
Se você quiser continuar com esse sistema de REP no seu servidor você pode removê-lo e procurar um outro aqui no fórum, é bem fácil de encontrar e simples de aplicar. Aparar esse erro vai te dar muito trabalho, você vai perder muito tempo. O melhor é removê-lo mesmo, e caso queira, adicionar o sistema novamente do zero. @Edit. Completando mais minha resposta. Para você remover o sistema, aqui vai um pequeno tutorial feito pelo usuário "Adriano Swatt" neste post aqui. Vá em "CreatureScripts" e abra o arquivo "CreatureScript.xml" e remova as tags abaixo <event type="look" name="repLook" event="script" value="rep/repLook.lua"/> <event type="kill" name="repMonster" event="script" value="rep/repMonster.lua"> <event type="kill" name="repKill" event="script" value="rep/repKill.lua"/> Agora vá na pasta "Mods" situada na pasta data. Ache o arquivo "rep_system", abra-o e edite onde está assim : <mod name="Cyber's REPutation System" revision="5.0" author="Cybermaster" contact="otland.net" enabled="yes"> Se não tiver assim, procure por "enabled" e mude seu valor para "no"... ficando assim : <mod name="Cyber's REPutation System" revision="5.0" author="Cybermaster" contact="otland.net" enabled="no"> ~ ~ ~ Não sei se isso irá te ajudar, o sistema de REP do seu servidor pode ser outro, porém, espero ter ajudado. E aqui alguns sistemas de REP caso vc queira adicionar devolta : 1. Aqui 2. Aqui Enjoy1 ponto
-
Server-side: doSendPlayerExtendedOpcode(cid, 51, getPlayerStorageValue(cid, xxxxx)) Client-side: ProtocolGame.registerExtendedOpcode(51, function (protocol, opcode, buffer) print(buffer) end) esse eh o exemplo q tenhu aki... -nunca testei-1 ponto
-
1 ponto
-
FUNCIONA DO MESMO JEITO MANO, SIMPLES E FÁCIL!1 ponto
-
Abra o seu mapeditor,clique com direito no bau da quest,adicione o valor no actionid: 7000 No data/actions/actions.xml adicione. Agora na pasta scripts,copie um arquivo,e renomeie para questbauzin.lua ,apague tudo dentro,e cole. Modifique o IDBOOSTSTONE para o ID do boost stone,pois voce nao colocou qual o ID dela,e pronto.1 ponto
-
Quest que da HP
rafanh20 reagiu a roriscrave por uma questão
function onUse(cid, item, frompos, item2, topos) if item.uid == 1452 then queststatus = getPlayerStorageValue(cid,1452) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"Você ganhou 100.000 de mana!.") local health = 100000 setCreatureMaxMana(cid, getCreatureMaxMana(cid) + mana) setPlayerStorageValue(cid,1452,1) else doPlayerSendTextMessage(cid,22,"Você pegou sua hp!") end else return 0 end return 1 end da o rep ai ne fera ta de sacanagem edit: lembra de mudar a storage 1452 para outra qualquer1 ponto -
1 ponto
-
Não intendi o NeonCube =/ Como assim não entendeu .. O intuito do software, ou como usar .. Qualquer coisa me adiciona no skype, te ajudo !1 ponto
-
[PEDIDO] CLIENT POKEMON
TcharlesTargas reagiu a SkyDarkyes por uma questão
De nada ^^ Reportado para que movam.1 ponto -
Como dar cargo no seu OtServe !
Miinerva reagiu a FrankUzumaki por um tópico no fórum
Espero ter ajudado ! De um +REP porque deu muito trabalho montar esse tópico pra vocês e não custa nada né galera Obrigado pela iniciativa é realmente melhor dar Cargo pelo SQL Studio alem de ser mais rapido, enfim apenas uma observação.. não peça Rep pois está contido nas regras punimento para o mesmo. Obrigado Novamente e Boa Sorte! Ok, desculpa por pedir REP ;/1 ponto -
[PEDIDO] CLIENT POKEMON
TcharlesTargas reagiu a SkyDarkyes por uma questão
Download:http://www.4shared.com/file/MzmEA2LN/Tibia.html?1 ponto -
Acho que só o obito quebrou o flow cara huaejiaej Mas sim, chegando em casa, já te dou "aulas" HAEHAUHEAU Boa avu, Flinkton.1 ponto
-
Você faz pedidos bem difíceis e interessantes, heim... Bom, aqui vai o primeiro script. Salve como booktext.lua em creaturescripts/scripts: Salve como text_action em actions/scripts: Tag actions.xml (não esqueça de mudar o book_id pro id do book que vai ler o texto) <action itemid="book_id" event="script" value="text_action.lua"/> Tag creaturescripts.xml: <event type="textedit" name="book_text" event="script" value="booktext.lua"/> Login.lua: registerCreatureEvent(cid, "book_text") Para ler, use um livro que não mande caixa de texto ou desative (editando o .dat) de um livro qualquer, porque não dá pra impedir a caixa com o texto do próprio livro por script. Outra coisa, mesmo você tendo pedido caracteres ilimitados, existe um limite (não sei qual) que passa a dar erro na hora de mandar a caixa de textos. Deixei como padrão 999, se quiser mudar é só mexer na primeira linha do creaturescript.1 ponto
-
Creio que a ordem dos parâmetros está errada. Testei aqui com essa função e funcionou: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 36) function onGetFormulaValues(cid, level, weaponSkill, weaponAttack, factor) damage_min = (weaponSkill + weaponAttack / 70) * 1.6 damage_max = (weaponSkill + weaponAttack / 70) * 1.7 return - math.max(damage_min, damage_max), - math.min(damage_min, damage_max) end local area = createCombatArea(AREA_CIRCLE3X3) setCombatArea(combat, area) setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onCastSpell(cid, var) return doCombat(cid, combat, var) end1 ponto
-
Ótimo servidor porém, que pena que o servidor não é sqlite ;( e também não sei se é verdade, mas a maioria dos computadores são 32 bits.1 ponto
-
Achei os mapas fáceis.. Porém, o #1 não tem um 'spam' desnecessário de itens..1 ponto
-
[Encerrado] Sprite And Dat Editor 9.80 +
shutup reagiu a SkyDarkyes por um tópico no fórum
http://www.xtibia.com/forum/topic/202369-spr-editor-854981-versao-13/ O Dat editor o vendedor é o Cristofer mesmo,acho que é uns 30$+1 ponto -
Eu preferia mythera dominada, pelo menos não era zoado o mundo E outra, muitos players inocentes foram banidos, mesmo não tendo feito nada, NADA MESMO acabaram sendo deletados.1 ponto
-
1 ponto
-
1 ponto