Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 09/15/17 em todas áreas
-
DEV C++ Compilando TFS no Windows
DEV C++ Compilando TFS no Windows
Gabriel485 reagiu a Natanael Beckman por uma resposta no tópico
1 pontoDEV 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 \/1 ponto -
[MODS] [8.6] Fire Storm Event - Automático
Evento for fun para colocar no seu ot, quem é atingido pelo fogo morre, o último a sobreviver ganha. O evento é automático, mas também possui um comando para dar inicio ao evento, só usar /firestart minutos exemplo: /firestart 1 Fire_Storm_Event.xml <?xml version="1.0" encoding="ISO-8859-1"?> <mod name="Fire Storm Event" version="8.6" author="Vodkart" contact="" enabled="yes"> <config name="fire_config"><![CDATA[ Fire = { storages = {172354, 172355}, -- storage Count players = {min = 2, max = 50}, -- min, max players no evento minLevel = 20, -- level minimo para entrar no event rewards = {{2160,10},{2494,1}}, -- premios que vai receber timeToStartEvent = 30, -- segundos para começar o evento CheckTime = 5, -- time to check event teleport = {{x=158, y=53, z=7}, {x=189 , y=58, z=7}}, -- posição do teleport, posição para onde o jogador vai arena = {{x=186,y=54,z=7},{x=193,y=60,z=7}} -- posição começo e final da area } Fire_Days = { ["Monday"] = {"13:00","18:00","20:00","22:00"}, ["Tuesday"] = {"13:00","18:00","20:00","22:00"}, ["Wednesday"] = {"13:00","18:00","20:00","22:00"}, ["Thursday"] = {"13:00","18:00","20:00","22:00"}, ["Friday"] = {"13:00","18:00","20:00","22:00"}, ["Saturday"] = {"13:00","18:00","20:00","22:00"}, ["Sunday"] = {"13:00","18:00","20:00","22:00"} } function removeFireTp() local t = getTileItemById(Fire.teleport[1], 1387).uid return t > 0 and doRemoveItem(t) and doSendMagicEffect(Fire.teleport[1], CONST_ME_POFF) end function ZerarStorFire() setGlobalStorageValue(Fire.storages[1], 0) setGlobalStorageValue(Fire.storages[2], 0) end function getPlayersInFireEvent() local t = {} for _, pid in pairs(getPlayersOnline()) do if isInRange(getPlayerPosition(pid), Fire.arena[1], Fire.arena[2]) then t[#t+1] = pid end end return t end function getFireRewards(cid, items) local backpack = doPlayerAddItem(cid, 1999, 1) -- backpackID for _, i_i in ipairs(items) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then doAddContainerItem(backpack, item, amount) else for i = 1, amount do doAddContainerItem(backpack, item, 1) end end end end function doFireInArea(n) if #getPlayersInFireEvent() > 1 then for i = 1, n do local pos = {x=math.random(Fire.arena[1].x, Fire.arena[2].x), y=math.random(Fire.arena[1].y,Fire.arena[2].y), z=Fire.arena[1].z} local m = getTopCreature(pos).uid doSendDistanceShoot({x = pos.x - math.random(4, 6), y = pos.y - 5, z = pos.z}, pos, CONST_ANI_FIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_HITBYFIRE) addEvent(doSendMagicEffect, 150, pos, CONST_ME_FIREAREA) if m ~= 0 and isPlayer(m) then doSendMagicEffect(getCreaturePosition(m), CONST_ME_FIREAREA) doCreatureSay(m, "Ooh Burn Burn", TALKTYPE_ORANGE_1) local corpse = doCreateItem(3058, 1, getPlayerPosition(m)) doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(m) .. ". He was killed by Fire Field.") doSendMagicEffect(getPlayerPosition(m), CONST_ME_POFF) doTeleportThing(m, getTownTemplePosition(getPlayerTown(m))) doPlayerSendTextMessage(m, MESSAGE_EVENT_ADVANCE, "[Fire Storm Event] You died burned out.") end end local x = 2700-(200*n) addEvent(doFireInArea, x <= 0 and 500 or x, n+1) elseif #getPlayersInFireEvent() == 1 then local cid = getPlayersInFireEvent()[1] doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) getFireRewards(cid, Fire.rewards) doBroadcastMessage("Fire Storm Event have finished. The winner is ".. getCreatureName(cid).. ". Congratulations.", MESSAGE_EVENT_ADVANCE) ZerarStorFire() else doBroadcastMessage("No one Won the Fire Storm Event.", MESSAGE_EVENT_ADVANCE) ZerarStorFire() end end function CheckFireEvent(delay) if getGlobalStorageValue(Fire.storages[1]) ~= (Fire.players.max+1) then if delay > 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.max then doBroadcastMessage("[Fire Stortm Event] Starting in " .. delay .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) < Fire.players.min then for _, cid in pairs(getPlayersInFireEvent()) do doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end removeFireTp() doBroadcastMessage("The Fire Storm event could not start because of to few players participating.\n At least " .. Fire.players.min .. " players is needed!", MESSAGE_STATUS_WARNING) ZerarStorFire() elseif delay == 0 and getGlobalStorageValue(Fire.storages[1]) >= Fire.players.min then removeFireTp() doBroadcastMessage("Good Lucky! The event will start on "..Fire.timeToStartEvent.." seconds. get ready!") addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1) end addEvent(CheckFireEvent, 60000, delay-1) end end ]]></config> <globalevent name="Storm_Fire_Start" interval="60" event="script"><![CDATA[ domodlib('fire_config') function onThink(interval, lastExecution) if Fire_Days[os.date("%A")] then local hrs = tostring(os.date("%X")):sub(1, 5) if isInArray(Fire_Days[os.date("%A")], hrs) and getGlobalStorageValue(Fire.storages[2]) <= 0 then local tp = doCreateItem(1387, 1, Fire.teleport[1]) doItemSetAttribute(tp, "aid", 45111) CheckFireEvent(Fire.CheckTime) setGlobalStorageValue(Fire.storages[1], 0) end end return true end]]></globalevent> <event type="login" name="Storm_Fire_Login" event="script"><![CDATA[ domodlib('fire_config') function onLogin(cid) registerCreatureEvent(cid, "FireStormBatle") if isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) end return true end]]></event> <event type="combat" name="FireStormBatle" event="script"><![CDATA[ domodlib('fire_config') if isPlayer(cid) and isPlayer(target) and isInRange(getPlayerPosition(cid), Fire.arena[1], Fire.arena[2]) then doPlayerSendCancel(cid, "You may not attack this player.") return false end return true ]]></event> <movevent type="StepIn" actionid ="45111" event="script"><![CDATA[ domodlib('fire_config') function onStepIn(cid, item, position, fromPosition) if not isPlayer(cid) then return true end if getPlayerAccess(cid) > 3 then return doTeleportThing(cid, Fire.teleport[2]) end if getPlayerLevel(cid) < Fire.minLevel then doTeleportThing(cid, fromPosition, true) doPlayerSendCancel(cid, "You need to be at least level " .. Fire.minLevel .. ".") doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE) return true end if getGlobalStorageValue(Fire.storages[1]) <= Fire.players.max then doTeleportThing(cid, Fire.teleport[2]) setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1) doBroadcastMessage(getPlayerName(cid) .. " entered the fire stortm event! Currently " .. getGlobalStorageValue(Fire.storages[1]) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED) if getGlobalStorageValue(Fire.storages[1]) == Fire.players.max then setGlobalStorageValue(Fire.storages[1], getGlobalStorageValue(Fire.storages[1])+1) removeFireTp() doBroadcastMessage("The event will start on "..Fire.timeToStartEvent.." seconds. get ready!") addEvent(doFireInArea, Fire.timeToStartEvent*1000, 1) end end return true end]]></movevent> <talkaction words="/firestart;!firestart" access="5" event="buffer"><![CDATA[ domodlib('fire_config') if getGlobalStorageValue(Fire.storages[2]) > 0 then doPlayerSendCancel(cid, "The event is already starting.") return true elseif not param or not tonumber(param) then doPlayerSendCancel(cid, "Use only numbers.") return true end local param = tonumber(param) <= 0 and 1 or tonumber(param) local tp = doCreateItem(1387, 1, Fire.teleport[1]) doItemSetAttribute(tp, "aid", 45111) CheckFireEvent(tonumber(param)) setGlobalStorageValue(Fire.storages[1], 0) setGlobalStorageValue(Fire.storages[2], 1) ]]></talkaction> <globalevent name="FireDebug-Start" type="start" event="buffer"><![CDATA[ domodlib('fire_config') ZerarStorFire() return true]]></globalevent> </mod> A configuração está explicita na lib do mods... valeu! fire lua.rar1 ponto
-
.
1 ponto
-
[8.60]Baiak Barao Editado DeathRocks
[8.60]Baiak Barao Editado DeathRocks
Jeferson Fernandi reagiu a DeathRocks por uma resposta no tópico
1 pontoFala Ae Galera do TibiaKing Estou mais um vez disponibilizando um Baiak Barao que Acabei de Editar Espero Que Gostem Oque eu Mudei e Adicionei ? -| Novo Visual do Templo -| Aura System (comando !aura on) -| Task System -| Dodge System -| Run Event (CORRIDA MALUCA) -| Reset System (ÁREA EXCLUSIVA COM CASTELO E HUNTS) para resetar fale !reset -| Guild Frags System (ÁREA EXCLUSIVA COM CASTELO E HUNTS) -| War System (100% RODANDO EM SQLITE) -| Cast System (100% Roda em Mysql ) ( Para Ativar vai em Config.lua e ache | enableCast = false | mude para true ) Duvidas entrem em http://www.tibiaking.com/forum/topic/34609-add-cast-system-pra-quem-já-tem-os-códigos-na-distro/ -| PvP Balanceado -| Varios Eventos Automaticos -| Battle Field Event -| Capture The Flag Event -| Adicionado CASTLE 24HORAS (COM CASTELO) e AVISOS DE INVASORES -| Itens DONATES -| Área DONATE ~~ (Só Entra Quem Usar o Itens) -| Vários Novos Script -| Fast Atk Arrumado -| Distro 0.4 Rodando 100% ( Se For 64x Bits) -| Refinamento ( Aprimora seu Item ) -| Level Points System Adicionado (Melhora Seu Skill) -| Frags no Look -| Npc Major Ancient (Vende Itens Exclusivos para quem tiver honor points) Obs:Consegue no GFS) -| Fly System Adicionado fale !fly -| e Muito Mais que Não Lembro -| CONFIRA ~~ ! -| SENHA DO GOD: barao/styller ~~ Algumas Imagens do Servidor ~~ CASTELO GFS Localizado na Barao City Castelo Reset System Localizado na Barao City Amostra do CASTLE War 24HORAS Vista por Cima CASTLE WAR 24 HORAS Vista por Baixo + Amostra de Invasão Donate Área Amostra de Itens Donate Amostra de Systema de Points Amostra do Refinamento TEMPLO -| Download http://www.4shared.com/rar/kv68Q66Hba/Baiak_Barao_Editado_By_DeathRo.html? -| Scan https://www.virustotal.com/pt/file/b036f248977d3b75e8fc205983b449a2fd68a942e62a48963adfcfa49fd954b8/analysis/1402686644/ -| Créditos Gostou ? então dei um +REP Não vai cair o Dedo1 ponto -
(Doação) - Baiak Futurístico Projeto Tibiaking
Eu estava desenvolvendo esse mapa para um amigo aqui de Floripa mas vou ser breve, ele desistiu e o mapa está incompleto. A ideia é que seja um baiak futurístico detalhado, um mundo mágico e diferente. Poderá ser um baiak novo, disponibilizado pela nossa comunidade e que possa ser baixado por dezenas de pessoas. Essa iniciativa tem o apoio de @Qwizer, que deu a ideia inicial. Estamos conversando sobre detalhes, esperamos manifesto de mais pessoas interessadas em se envolver com a causa. MAIS IMAGENS NOS COMENTÁRIOS ABAIXO \/1 ponto
-
Animação em staff.
Animação em staff.
C H R O N I C L E reagiu a Cain Jorge por uma resposta no tópico
1 pontoOque a Script faz ? Essa script faz o seguinte: Cria uma animação para staffs com uma frase de sua escolha,e cor. no caso essa é frase 'staff' de cor branca. Vamos ao Script ! Foto: http://joxi.ru/vAWbykxiklKvR2 Em creaturescripts/scripts crie um arquivo: staffeffect.lua Dentro do arquivo cole isto: local t = {access = 3, -- acesso mínimo para sair o efeito text = "STAFF", textcolor = COLOR_ORANGE, effect = CONST_ME_FIREWORK_YELLOW, interval = 10} function onLogin(cid) if getPlayerAccess(cid) >= t.access then SendEffect(cid, t.effect, t.text, t.interval, t.textcolor) end return true end function SendEffect(cid, effect, text, time, color) if isPlayer(cid) then doSendMagicEffect(getPlayerPosition(cid), effect) doSendAnimatedText(getPlayerPosition(cid), text, color) addEvent(SendEffect, time*1000, cid, effect, text, time, color) end return true end Em creaturescripts.xml, adicione a tag: <event type="login" name="StaffEffect" event="script" value="staffeffect.lua"/> Creditos: @Dwarfer1 ponto -
(Resolvido)Templo com base na storage
Provavelmente já exista o arquivo citizen.lua na sua pasta de movements, confira lá. function onStepIn(cid, item, position, fromPosition) if(item.actionid > 30020 and item.actionid < 30100) then local townId = (item.actionid - 30020) doPlayerSetTown(cid, townId) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You are the newest resident of " .. getTownName(townId) .. ".") end return true end <movevent type="StepIn" itemid="1387" event="script" value="citizen.lua"/> É só colocar o actionid do teleporte igual a 30020 + o id da cidade. Se venore for id 1, coloca actionid 30021, carlin for id 2, 30022 e por aí vai..1 ponto
-
Duplicar Spell
1 pontoSó coloca as funções como local function1 ponto
-
(Doação) - Baiak Futurístico Projeto Tibiaking
(Doação) - Baiak Futurístico Projeto Tibiaking
amoxicilina reagiu a Qwizer por uma resposta no tópico
1 pontovai da bom esse projeto, em breve mais detalhes.1 ponto -
Meu Serve quando dou reload movements o serve para de responder
Meu Serve quando dou reload movements o serve para de responder
Senju uchira reagiu a KotZletY por uma resposta no tópico
1 ponto@Senju uchira pode ser inúmeros fatores, mas os mais prováveis são scripts mau feitos ou distro bugada, se você usa uma distro que já veio no server, então pegue uma nova e substitua pela mesma!1 ponto -
(Resolvido)[PEDIDO] Spell que deixa player invisivel
(Resolvido)[PEDIDO] Spell que deixa player invisivel
Mark Ackerman reagiu a KotZletY por uma resposta no tópico
1 ponto@bismarkzika comentar qualquer coisa pra subir tópico é proibido, você já foi avisado várias vezes, na próxima será considerado flood, leia as regras e seja paciente. Agora estou indo dormi, pela manhã farei o script, apesar de ser simples e já existir só irei add os effects, mas deixarei para fazer pela manhã, até mais! @bismarkzika1 ponto -
TFS 0.4 Effect Text - Aumentar caracteres
@FearWar tem esse limite de caracteres nessa função, bom ou é por source ou é pelo client que aumenta a quantidade. Por script da não!1 ponto
-
Como mudar a versão de um mapa
1 pontoTutorial: Como mudar a versão de um mapa Programa: Remere's Map Editor Você baixou um mapa e ele não é compatível com seu servidor? Há duas formas de mudar a versão de um mapa: Considerações Você só pode trocar a versão de um mapa com sucesso se os itens que estiverem nele tiverem os mesmos ids para ambas as versões. Por exemplo, você não conseguirá mudar a versão de um mapa 11.0, que tem itens diferentes, para 8.60 que tem menos itens. Embora seja possível, vai bugar o mapa. Os itens não reconhecidos após a conversão serão trocados por um piso vermelho ou por outros itens aleatórios com o mesmo id dos itens antigos, porém com sprites diferentes. Realize um backup. _____________________________________________________________________________________________ Método 01 - Mudar versão do mapa através do Map Properties (ctrl + P) Abra o map editor e carregue o mapa que você quer trocar a versão. Em seguida, vá no menu superior em Map - Map Properties, ou utilize o atalho CTRL + P. Agora clique em Client Version e escolha o novo protocolo. Clique em OK. Se estiver mudando de uma versão antiga para uma nova, o mapa será atualizado e basta salvá-lo (nesses casos tem menos chance de bugs). Mas se você está mudando de uma versão superior para uma versão inferior, vai aparecer esta janela: O aviso diz que se você mudar a versão do mapa para uma versão mais antiga pode haver efeitos no mapa, ele pede pra você confirmar. Se você tem certeza, clique em SIM. Pronto, a versão foi trocada. Mas fique atento, se você ainda não configurou o diretório do client da versão nova, vai aparecer uma mensagem para que você o selecione. Observação: Nesse caso, eu troquei a versão de um mapa 10.77 para 8.60. _____________________________________________________________________________________________ Método 02 - Mudar versão do mapa importando ele Essa opção é um atalho para possíveis erros que possam ocorrer utilizando o método 01. Funciona assim: Antes de abrir seu mapa, carregue um mapa novo em branco (File - new), ele já tem que estar na versão que você quer. Agora vá ao menu superior, em File - Import - Import Map. Clique em Browse e selecione o mapa que vai ser mudado. Clique em Ok, teste e salve. ____________ Dúvidas?1 ponto
-
[Tutorial] Baixando as imagens da Store do Tibia Global para utilizar em seu Store System
[Tutorial] Baixando as imagens da Store do Tibia Global para utilizar em seu Store System
HudsonFelps reagiu a Nailanb13 por uma resposta no tópico
1 pontoThere is it. ImageCache.zip1 ponto -
[PEDIDO] Como editar um monster
[PEDIDO] Como editar um monster
BrunoWots reagiu a augustomeneghetti por uma resposta no tópico
1 pontoBom.. vamos começar por partes. Vou dar um ctrl c + ctrl v em algumas partes e vou explicando passo a passo, vale lembrar que eu não manjo 100% pois nunca me preocupei com algumas coisas.. então o que eu tiver certeza vou deixar explicito, o que for uma hipotese para mim vou falar EU ACHO. Vamos lá. <monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="275" manacost="10000"> Auto-explicativo. Utilize para mudar o nome do monstro. <monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="275" manacost="10000"> Serve para você escolher o que vai apareçer quanto você der look num monstro.. por exemplo você da look num demon.. vai apareçer "You se a demon".. ai se você quiser alterar isso, a vontade <monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="275" manacost="10000"> Raça propriamente dita, essa parte é simples de entender porém eu nunca parie para prestar atenção no que isso influencia, mas provavelmente deve influenciar em algo. <monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="275" manacost="10000"> Altere a experiencia do monstro aqui.. por exemplo, seu ot server é exp de 10x Nesse caso um demon irá lhe dar 6000 de exp * 10, ficando então 60,000 de exp, se você alterar para 7000 a exp, irá dar 70,000 de exp o demon, você tem que levar em conta a exp como 1x elevado a rate do seu server, se você quer que um monstro de 10k de exp, você vai lá e põe 10k, e por seu server ser 10x ele vai dar 100k, algo que você não quer.. nesse caso utilize 1k de exp <monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="275" manacost="10000"> Velocidade propriamente dita do monstro, altere isso para faze-lo andar mais rapido/devagar, ou deixe em zero para o monstro ficar parado <monster name="Demon" nameDescription="a demon" race="fire" experience="6000" speed="275" manacost="10000"> Provavelmente deve ser a mana necessária para sumonar o demon, mas calma lá.. ja vamos chegar num ponto onde definimos se o monstro é sumonavel ou não. ----------------------------- <health now="8200" max="8200"/> Aqui você define a health do monstro.. por exemplo <health now="500" max="8200"/> Se você fizer isso, o monstro vai ter um TOTAL de 8200 de HP, mas quando ele nascer, ele vai nascer com 500 de HP, ou seja, a barrinha de life dele vai estar no vermelho praticamente ----------------------------- <look type="35" corpse="5995"/> Aqui você define o sprite do seu monstro Não lembro de cabeça.. mas vamos fingir que o citizen outfit é look type 100, você tem o looktype 35, e quer fazer um demon com outfit de citizen, você muda para 100, ou qualquer outro valor referente ao outfit que você procura. <look type="35" corpse="5995"/> Aqui você define qual será o sprite do seu monstro quando ele morrer. Agora, vamos fazer algo mais divertido? Vamos alterar o seguinte código: " <look type="35" corpse="5995"/>" Suponha-se que você quer utilizar o outfit citizen, mas dessa maneira você não pode definir as cores, e nem fazer um monstro com addon, então agora vou te ensinar como fazer isso Insira no código as seguintes informações destacadas: <look type="35" head="114" body="114" legs="0" feet="0" addons="3" corpse="5995"/> Agora vamos as explicações: <look type="35" head="114" body="114" legs="0" feet="0" addons="3" corpse="5995"/> Define a cor do cabelo do seu monstro, porém você tem que definir com numeros, ja te ensino o macete para descobrir como conseguir esses valores No caso, 114 representa o preto, então seu monsto terá cabelo preto, se você definir como 0, será cabelo branco. <look type="35" head="114" body="114" legs="0" feet="0" addons="3" corpse="5995"/> Mesma coisa do caso acima, porém para o peitoral do corpo.. e assim por diante Basta você imaginar na ordem do Set outfit do próprio Tibia, quando você vai em ser outfit, temos as seguintes coisas: Head = Head Primary = Body Secondary = Legs Detail = feet Entendeu? Para definir os addons do seu monstro você editará a seguinte parte: <look type="35" head="114" body="114" legs="0" feet="0" addons="3" corpse="5995"/> Se você quiser que ele tenha APENAS o addon 1, deixe dessa maneira: addons="1" Para o addon 2: addons="2" Agora, você quer saber a melhor maneira de deixar o monstro como você quer? Simples, coloque seu ot server online, e pegue um char de teste, selecione nele o outfit com as cores e addons que você quer, e depois deslogue do char, feito isso abra o MYSQL (a versão que você utilizar), lá vá em editar players, se você utilizar o SQLite Studio assim como eu, logo a frente do nome do seu char de teste, vai ter as informações com o numero da cor e outfit que você selecionou <targetchange interval="5000" chance="8"/> Nessa parte você coloca um valor para definir a cada QUANTO TEMPO ele irá sorteiar baseado no valor ao lado (chance) se o monstro irá mudar seu alvo de um jogador para outro. Na parte a seguir vamos definir algumas coisas utilizando o padrão Binário, mas ai você me pergunta o que é binário? Simples, definição de verdadeiro e falso a partir de 0 e 1. Para verdadeiro utilizaremos 1, para falso 0. <flag summonable="0"/> Define se é possivel um player normal sumonar o monstro através da magia "utevo res".. no caso está definido como não, não é possivel. <flag attackable="1"/> Define se é possivel UM JOGADOR atacar o monstro, por exemplo, se você definir como 0, ao tentar atacar o monstro vai ser impossivel. <flag hostile="1"/> Define se é um monstro hostil, ou simplificando, se estiver como 1 ele te ataca, mas se estiver como 0 ele seria um rabbit da vida, pode ser atacado mas não ataca de volta. <flag illusionable="0"/> Define se é possivel utilizar a magia "utevo res ina" no monstro.. ou seja, um player comum (mage) se transformar no monstro por um determinado tempo <flag convinceable="0"/> Mesma coisa do summonable PRATICAMENTE, porém é através de uma runa que existe no jogo, se você utilizar ela num monstro ele irá virar seu summon. <flag pushable="0"/> No caso, demons não são possiveis de arrastar, mas se você alterar para 1, será possivel arrastar seu demon. <flag canpushitems="1"/> Define se o monstro em si irá arrastar itens, no caso você tacou uma parcel na frente do bixo e saiu correndo, ele arrasta ela tirando-a do seu caminho. <flag canpushcreatures="1"/> Mesma coisa do item anterior, porém com criaturas, se uma criatura entrar na frente do seu monstro, ele irá arrasta-lá para chegar até você. <flag targetdistance="1"/> A distancia que você quer que o monstro fique do jogador, exemplo: Você quer que o demon ataque o jogador a 2 sqm's de distancia, basta alterar para 2 o valor. <flag staticattack="90"/> Não sei dizer o que fazer, se alguem souber, peço que poste. <flag runonhealth="0"/> Define a vida em que o monstro irá fugir de você (porém não sei dizer se funciona como a vida mesmo ou em % da vida, se alguem puder deixar mais claro isso) --------------------------- </flags> <attacks> <attack name="melee" interval="2000" skill="100" attack="110"/> <attack name="manadrain" interval="2000" chance="13" range="7" min="0" max="-120"/> <attack name="fire" interval="2000" chance="30" range="7" radius="7" target="1" min="-150" max="-250"> <attribute key="shootEffect" value="fire"/> <attribute key="areaEffect" value="firearea"/> </attack> Nessa parte iremos trabalhar as spells do monstro. A parte destacada em negrito, é onde você coloca os ataques, ou seja, todo ataque novo que você quiser fazer OU TIRAR, terá que ser assim, e sempre terá de ser dentro do padrão, no caso eu retirar todos os ataques e deixar apenas um novo. <attacks> <attack name="melee" interval="2000" skill="100" attack="110"/> </attack> Dessa maneira o demon irá utilizar APENAS o melee skill, com um intervalo de 2000 milésimos, a parte e skill e attack basta pensar que ele é um player, vamos utilizar um exemplo. <attack name="melee" interval="2000" skill="100" attack="25"/> Isso equivale a um jogador com skill 100 utilizando uma arma com attack 25. (Por exemplo um paladino com spear) <defenses armor="55" defense="55"> <defense name="healing" interval="2000" chance="15" min="130" max="240"> <attribute key="areaEffect" value="blueshimmer"/> </defense> <defense name="speed" interval="1000" chance="8" speedchange="290" duration="5000"> <attribute key="areaEffect" value="redshimmer"/> </defense> </defenses> O critério utilizado acima nos ataques, também servem para buffs do monstro, por exemplo aqui em defense, você pode ver que ele tem uma chamada speed, que é um haste que o monstro usa para correr mais rapido. Mas esse não é o foco que irei abordar aqui. A parte em negrito aborda a defesa do monstro, mesmo criterio utilizado acima no ataque, porém para defesa. Agora, você queria adicionar uma spell de healing, correto? então vamos lá Peguei como exemplo a linha de código de um monstro do meu servidor, basta você inserir isso no seu código que estará tudo perfeito. <defense name="healing" interval="1000" chance="25" min="500000" max="50000000"> Interval define o intervalo do chance, ou seja, a cada 1000 milésimos será sortiado com uma chance de 25 de o monstro healar (detalhe, se não for sortiado dentro da chance o monsto não irá healar) entre o valor min e max, e a próposito, estou falando sortiar, mas o mais correto seria dizer: "Sortear um valor random", pois não há como definir o valor a ser sortiado (se não nem sequer seria um sorteio né?" ------------------------------------- <elements> <element physicalPercent="30"/> <element energyPercent="50"/> <element earthPercent="20"/> <element icePercent="-15"/> <element holyPercent="-15"/> <element deathPercent="20"/> </elements> Essa parte é BEM SIMPLES, é a % de defesa do monstro contra danos magicos/fisicos: Levando em conta os dados acima vamos lá: <element physicalPercent="30"/> O monstro tem uma defesa de 30% contra physical, ou seja, se você iria hitar 100 nele, o valor 100 será diminuido para 70, que será o seu hit final <element icePercent="-15"/> Aqui ja fica diferente.. DESTAQUE para o sinal de -, isso significa que o monstro É FRACO ao elemento ice, ou seja, você iria hitar 100? Seu hit final vai ser 100 + 15% = 115 de dano É essa formula para qualquer valor, por exemplo: 300 de dano (15% do valor é igual a 45), ou seja, 345 de dano de ice ----------------------------- <immunities> <immunity fire="1"/> <immunity drown="1"/> <immunity paralyze="1"/> <immunity invisible="1"/> </immunities> Aqui são as imunidades do monstro, vamos lá, 1 por 1: <immunity fire="1"/> Significa que o monsto tem 100% de proteção a fogo, então não importa o que ele não toma dano de fogo. <immunity drown="1"/> Não me lembro o que é drown, se não me engano é andar embaixo da água, se for 0 o monstro iria perder vida (SE NÃO ME ENGANO) <immunity paralyze="1"/> Ao utilizar a paralise rune no monstro, isso define se ele será afetado ou não <immunity invisible="1"/> Define se o monstro irá ver invisbilidade (utana vid ou stealth ring) Caso essa opção esteja marcado como 0, se você utilizar utana vid, o demon não irá lhe atacar por não te ver. ----------------------- <summons maxSummons="1"> <summon name="fire elemental" interval="1000" chance="12"/> </summons> O demon é um monsto que sumona bixos, no caso aqui você define em MAXSUMMONS qual o limite de bixos que ele poderá sumonar, e em baixo qual o bixo propriamente dito que será sumonado, no caso você pode alterar o fire elemental para um rat se quiser. ------------------------ <voices interval="5000" chance="10"> <voice sentence="MUHAHAHAHA!" yell="1"/> <voice sentence="Your soul will be mine!" yell="0"/> </voices> Deixei apenas as 2 opções para uma explicação mais objetiva, o primeiro em negrito é uma fala do monstro, porém está como yell=1, isso significa que quando ele falar, ele irá gritar na verdade, então será possivel ver essa fala dele de fora da tela. A fala de baixo no caso, ja representa uma simples fala qualquer que só se pode ser vista estando na mesma tela do monstro em si. ----------- ~ Enfim.. Só restou explicar a ultima parte de loot, mas com tudo que ja expliquei acima, creio que você pegou uma base e isso não será necessário né? hehe, espero que esse post tenha lhe ajudado, qualquer dúvida, basta perguntar, ajudarei no que for possivel.1 ponto -
2 VPS -
É possível sim e muito facil de fazer, o mais indicado é obter as duas vps na mesma empresa.0 pontos