Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 03/31/14 em todas áreas
-
[8.54] Remakes PxG até 07/03
f0st e 2 outros reagiu a jeanflamengo por um tópico no fórum
Oi povo do Xtibia, sou o adm do PxC e vim aqui disponibilizar para vocês umas sprites de remakes da PxG em formato .obd .Arquivo contidos \/: Olha a Imagem e.e \/ .Downloads em .obd em png .Créditos .EdMignari por disponibilizar um MegaPack com todos as spr da PxG .Para Euzito por localiza-las, renomear e distribuir para vocês e.e .joaopera por colocar em formato de png Se Gosto agradeça sua mão não vai cair e.e3 pontos -
Fala galera do xtibia, Hoje estou trazendo o servidor PDA by: Bolz editado por mim, Passei um bom tempo Editando ele Espero que gostem;; • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Prints; ├ Download; └ Creditos. • Informações Basicas • • Erros do servidor • • PrintScreen • • Download's • Servidor PDA by: Bolz [Editado Por Mim ] http://www.4shared.com/rar/06OG8lB5ba/pda_by_bolz_verso_god_anna.html? OTClient:: http://www.4shared.com/rar/x5LgTQKLce/OTclient.html? @Atualizado 02/04/2014 • Menu: ├ Ediçoes; ├ Prints; ├ Download; • Edições / ajustes • • PrintScreen • • Download's • Servidor PDA by: Bolz [Editado Por Mim v2 ] http://www.4shared.com/rar/_lB31rwxba/PDA_By_Bolz_Verso_GOD_anna_v2.html? OTclient v2:: http://www.4shared.com/rar/aiqka_kQce/OTclient_v2.html? • Creditos • Slicer (pelo servidor) Brun123 (por alguns scripts, e por criar o pda) Stylo Maldoso (pelo mapa) Bolz (por editar Maior Parte do Server) Eu ( por Corrigir Varios bugs e Editar varias coisas no Servidor) Gabrielsales ( pelos Systemas:: "Held item", "Ditto system" ) valakas ( Por ter ajudado a resolve o Bug da Barra de Ataques do OTclient v2) Xtibia (por alguns scripts) Cometem OQ acharam do Server Tou parando com as atualizações por enquanto POr causa das Provas (Tenho que Passa) Mais quando terminar as Aulas posto Nova atualiazação... Obrigado a Todos que Elogiaram minha edição nesse Belo servidor2 pontos
-
Mammoths!
vital900 e um outro reagiu a JustinnoTibianno por um tópico no fórum
Mammoths Ótima hunt para se caçar no level 30~40. Entretando esse tutorial é direcionado a knights de nível médio que não são ricos e querem fazer uma grana. Vamos lá? Informações da Hunt Localização: Svargrond. Respawn: No tamanho certo pra lucrar, se estiver sozinho o respawn nunca ficará lento. Exp/hora: 40k/hora (não importa). Gold/hora: 3k/hora. (mais os itens). Perigo: Baixo Ocupação: Média/Alta Vocação, level e skills Vocação: Knight Level: 60 Skill: 80/80 Informações da criatura Nome: Mammoth HP: 320 XP: 160 Ataque: 0-110 Forte contra físico (mesmo assim é fácil de matar com o skill recomendado). Loots 0-40 gold coins 0-2 mammoth tusk (100gp cada). mammoth whopper (300gp cada). thick fur (150gp cada). tusk shield (850gp cada). furry club (1.000gp cada). winter wolf fur (20gp cada). badger fur (15gp cada). - O preço da furry club e do mammoth whopper estão de acorco com o preço que o Rashid compra, se você não tem completa a The Travelling Trader Quest completa, poderá vender estes itens por preços provavelmente menores do market. Equipamentos recomendados Crown Helmet Knight Armor Knight Legs Fur Boots Dragon Shield Armas do nível 40 já tem um bom dano // Suprimentos 5 strong health potions (apenas emergências). 20 mana potions (apenas emergências). Spells Úteis Exura: apenas quando estiver com a life no amarelo. Utura: apenas em situações críticas (quando você estiver com a vida quase no red). Como chegar lá Só um detalhe: No caminho você verá uns Huskys (). Por favor, não mate-os! Se fizer isso, os npc's da cidade só irão falar contigo novamente depois de você pagar uma multa. (1~2k). Eis o mapa da hunt Algumas dicas: - Faça seu caminho pelos cantos, evite se jogar direto no meio. - Sempre que dropar food dos mammoth (e como dropra), não é necessário ficar guardando ela, apenas jogue-a no chão, logo você verá que o local fica repleto de food. - Não esqueça de entrar nos menores caminhos da área, há mammoths por todos os locais. - Além de Mammoths, existem Badgers e Winter Wolfs aos montes, quando você tiver enfrentando um Mammoth + 2 criaturas, mate-as primeiro, pra evitar porrada free. Por fim, vou mostrar o meu lucro caçando 3 horas nos Mammoths. (tirando a orange backpack é óbvio). Lucro: Gold Coins: 9.000 (aproximadamente). 1 Furry Club: 1.000 4 Tusk Shield: 3.400 10 Mammoth Whopper: 3.000 84 Mammoth Tusk: 8.400 36 Thick Fur: 5.400 20 Winter Wolf Fur: 400 35 Badger Fur: 525 Gastos: 1 Strong Mana Potion (só usei uma). 100gp Total: 31.025 gold coins Então, acharam o resultado satisfatório?2 pontos -
Vamos tentar né2 pontos
-
Não vou fazer isso pois jungle é uma floresta e florestas são bem cheias de detalhes e variedade de plantas. Eu achei bacana aquele telhado pois é bem diferente mas como ta todo mundo falando que está ruim ( (ainda prefiro o outro)2 pontos
-
Show Off [ Projeto]
BrenoNeto e um outro reagiu a dyego2008 por um tópico no fórum
Galera vim postar mais uma imagem para não deixar o tópico parado e para verem que o projeto continua. A parede no estilo Espartano, a Lamparina, aquele fogo que tentei fazer alguma coisa kkkk, uma tampa de bueiro. O Tópico continua ativo e quero pedir desculpas se ofendi ou magoei alguém no forum xD. OBS: as sprites ainda não estão 100% e se alguém ver erros ou onde tenho que melhorar Por favor, fico grato.2 pontos -
2 pontos
-
OtClient - Tutorial Básico #1
TkZeCo reagiu a BananaFight por um tópico no fórum
OtClient - Tutorial Básico #1 Aula 1 : Editando mod/Modules Bom galera, hoje eu vou ensinar vocês a como editar mod/Modules, e também como posiciona-los na janela. OBS: Quando eu falar Janela, estou me referindo aos objetos: MainWindow, Botton etc Passo 1 entendendo os arquivos Dentro da maioria das pasta no OtClient existirão 3 arquivos com as seguintes extensões: .lua.otmod.otui Cada uma dessas extensões executam um papel EXTREMAMENTE importante dentro do mod/module que você pretende criar, Mais será explicado mais para a frente, Nessa aula vamos mexer apenas no arquivo ".otui". Passo 2 Indentação Uma das coisas mais importante dentro dos arquivos ".otui" é a indentação, pois se você errar um espaçamento qualquer você pode estar 'bugando' todo o funcionamento da sua mod/module. Vou ensinar a vocês o modo certo de indentar seus códigos para que não tenham erros. MainWindowid: tutorialWindowsize: 80 80&save: true Dentro dos arquivos '.otui' só é permitido a indentação com a tecla "Espaço", Caso você tente usar "Tab" para indentar seu código ele vai dar erro e não irá funcionar. A indentação deve ser feita com apenas 2 espaços, e sempre seguindo a ordem do item que você ta criando. Exemplo: MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5 Como o Botão 'Button1' vai ficar dentro da janela ' tutorialWindow', ele tem que ficar a uma distancia de 2 espaços da janela 'MainWindow', Caso eu quebre esse espaçamento provavelmente poderei ter bugs na hora de abrir esse mod/module dentro do client. Outra coisa para tomar cuidado é quando for dar linha para adicionar outra janela, nessa linha em que separa uma janela não pode conter nem um espaço e nenhum comando. Exemplo: Certo MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5 Errado MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5 Vocês não conseguem ver a diferença, mais tente selecionar os dois códigos que vão entender melhor, o que eu falei. Agora a organização e edição de cada janela dentro do arquivo '.otui' deve seguir o mesmo principio de 2 espaços de distancia. Exemplo: Certo MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5 Errado MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5 E também esta Errado desta forma MainWindowid: tutorialWindowsize: 80 80&save: trueButtonid: Button1anchors.top: parent.topanchors.right: parent.rightmargin-left: 5 Como o botão vai aparecer dentro da janela 'MainWindow' ele tem que ficar a 2 espaçamento dela pois se eu deixar os 2 na mesma posição é como se eu estivesse dizendo ao script que são duas janelas separadas e o botton vai aparecer por conta própria quando eu executar o mod/module. Passo 3 conhecendo as janelas Existem diversos modos de se criar uma janela onde vai aparecer vários botoes textos e etc, Mais sempre vai ter uma janela que será a matriz de todos, onde todos deverão aparecer, que no nosso exemplo é : MainWindowid: tutorialWindowsize: 80 80&save: true Esse código é nossa janela principal, É nela que vai aparecer tudo que queremos mostrar com no script, Agora vou mostrar o que cada função que tem dentro de MainWindow faz. MainWindowid: esse é o ID do MainWindow, Supondo que tenham 2 MainWindow, é com esse id que vamos diferencia-lassize: aqui é onde configuramos a largura e altura da janela, nessesariamente nessa ordem&save: isso fica para as próximas aulas Não precisamos usar necessariamente size para mostrar o tamanho ou largura da janela, podemos utilizar por exemplo : width: 80height: 80 Esses 2 códigos podem ser utilizados no lugar de size e farão exatamente a mesma coisa. Caso você tenha editado ou criado algum mod/modules para testar esses códigos que mostrei acima, percebeu que na janela não aparece nome e nem nada do gênero e é isso que irei mostrar agora. !text: tr('Texto') - Essa função adiciona o texto na janela em que você adicionar esta linhaicon: img.png - Esta função pega a sua imagem e usa ela de icone para a janela ( neste caso a imagem tem que estar na mesma pasta que o arquivo '.otui', e isso só irá funcionar dependendo do tipo da janela matriz, veremos em outros tutoriais.) Com esses dois Código você consegue personalizar a janela onde irão aparecer os botoes, textos etc que você pretende fazer. Exemplo: MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: true Agora vamos começar a criar botoes, escrever textos e etc. Vamos começar adicionando uma Label que vai mostrar o texto 'Olá Xtibia'. MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftmargin-top: 5margin-left: 5 Como vocês podem ver apareceram algumas funções novas, que são elas : anchors.top: parent.topanchors.left: parent.leftanchors.right: parent.rightanchors.bottom: parent.bottomanchors.top: prev.topanchors.left: prev.leftanchors.right: prev.rightanchors.bottom: prev.bottommargin-top: 5margin-left: 5margin-right: 5margin-bottom: 5 Com essas funões nós determinamos onde cada item da nossa janela vai ficar. Entendendo as novas funções anchors.top: parent.top Com a linha 'anchors.top:' estamos dizendo que a posição do meu item vai ser definida para cima, agora adicionando 'parent.top' estamos dizendo que a posição do meu item deve se Colada com começo da Janela, e isso segue para left, right, bottom também. agora se no lugar de 'parent.top' eu usar 'prev.top' eu estou dizendo que meu item vai ficar colado com a parte de cima do item que tem encima, Confuso eu sei mais vou dar um exemplo: MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.left Ali no script acima eu estou mandando a Label1 ficar colada com a borda de cima da janela principal, e a esquerda, Já na Label2, eu estou mando ela ficar colada com a Label1 ( pois a label1 que esta encima ) e também ficar colada com a borda da janela principal. Isso se aplica a todos os lados, se eu usar prev.left, eu vou estar dizendo que a label2 tem que ficar exatamente do lado esquerdo da label1. As funções 'margin-top: 5' vão fazer com que meu item fique com a distancia de 5 pixel ( Não tenho certeza se são pixels ) do item que esta acima MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.leftmargin-top: 5 Nesse Exemplo eu fiz a label2 ficar a 5 pixel abaixo da Label1, e isso é a mesma coisa se eu ultilizar left, right, bottom eu vou pegar uma distancia do que estiver do lado do meu item ou embaixo etc. Mais agora nós não precisamos nos prender a ficar somente com parent, e prev na hora de criar um item. podemos utilizar o id de um item como referencia de onde deve ficar meu item, como no exemplo : MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.leftmargin-top: 5Labelid: Label3!text: tr('Xtibia OtClient')anchors.top: parent.topanchors.left: Label1.left Nesse Exemplo eu fiz com que a Label3 ficasse a esquerda da Label1, e grudada a margem da janela principal, mais eu também poderia fazer ela ficar embaixo da Label1, e grudada ao lado direito da margem da janela principal. MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.topanchors.left: parent.leftmargin-top: 5Labelid: Label3!text: tr('Xtibia OtClient')anchors.top: Label1.topanchors.right: parent.right Mais caso você for testar isso vai perceber que o Label2 vai ficar encima do Label1 e ao invés do Label3 ficar embaixo do Label1 ele vai ficar do lado, Para corrigir esses pequenos erros você pode juntar códigos como no exemplo : MainWindowid: tutorialWindow!text: tr('Tutorial Window')size: 80 80&save: trueLabelid: Label1!text: tr('Olá Xtibia')anchors.top: parent.topanchors.left: parent.leftLabelid: Label2!text: tr('Xtibia o melhor')anchors.top: prev.bottomanchors.left: parent.leftmargin-top: 5Labelid: Label3!text: tr('Xtibia OtClient')anchors.top: Label1.bottomanchors.right: parent.right Pelo Simples fato de eu ter trocado top por bottom agora o script sabe que a Label2 tem que ficar no fim da Label1 e o mesmo para a Label3, e por isso usamos margin, para deixa uma distancia entre cada item, e para ficar mais organizado. Bom acho que é isso, Caso eu lembre de algo relevante estarei editando e adicionando mais coisas, Espero que gostem e quais quer DUVIDAS relacionadas AO TÓPICO é só fazer um comentário aqui embaixo que estarei respondendo. @Edit, Infelizmente o Xtibia Quebrou a indentação, mais lembre-se é sempre 2 espaços.1 ponto -
Akatsuki System + Heart System Introdução - tava vendo muitas pessoas precisando desses dois sistema então resolvi criar o meu próprio. - Não ta igual ao do NTOUltimate pois nunca joguei esse servidor. O que tem no Akatsuki system 1.0? - Verifica se sua vocação pode fazer parte da akatsuki - Verificar sua vocação e adiciona outra diferente? - Troca de outfit dependendo da sua vocação - Da bonus de hp e mp - Adicionar o nome [Akatsuki] no seu nick exemplo [Akatsuki] RigBy - Aplica uma storage quando você entra pra akatsuki (com isso da pra você fazer bonusXp) - storage é 85798723243 valor 1 O que tem no Heart System - Ele só te da o coração se você for acima de tal level - adiciona o nome da pessoa no coração Vamos la a script Npc.xml <?xml version="1.0" encoding="UTF-8"?> <npc name="[Akatsuki] Tobi" script="data/npc/scripts/AkatsukiSystem.lua" walkinterval="2000" speed="0" floorchange="0"> <health now="100" max="100"/> <look type="128" head="0" body="0" legs="0" feet="0" addons="0"/> <parameters> <parameter key="message_greet" value="Hello You who joins {akatsuki}?"/> </parameters> </npc> Npc/Script/AkatsukiSystem.lua -- Do not remove the credits -- -- [NPC] Akatsuki System -- -- developed by Rigby -- -- Especially for the Xtibia.com -- local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} 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 level = 1 -- Level preciso pra entra para akatsuki local itemid = 5943 -- id do coração local quantidade = 6 -- quantos hearts e preciso local bonushp = 300000 -- quanto de bonus de life vai ganha local bonusmp = 30000 -- quanto de bonus de mana vai ganha local config = { --[Vocation] = ( Nova Vocation, New Outfit ) [1] = { 5, 128}, [2] = { 6, 129}, [3] = { 7, 130}, [4] = { 8, 131}, } function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'akatsuki') then if getPlayerVocation(cid) ~= config then if getPlayerStorageValue(cid, 85798723243) == -1 then if getPlayerLevel(cid) >= level then selfSay('Are you sure you want to join the Akatsuki?.', cid) talkState[talkUser] = 1 else selfSay('You there and very weak, vain talk to you when you have level '..level..'.', cid) end else selfSay('You already part of the akatsuki!', cid) end else selfSay('Do not need you now!', cid) end end if talkState[talkUser] == 1 and msgcontains(msg, 'yes') then selfSay('To prove their loyalty, you have to bring '..quantidade..' {hearts}.', cid) talkState[talkUser] = 2 end if talkState[talkUser] == 2 and msgcontains(msg, 'hearts') then if getPlayerItemCount(cid, 5943) >= 6 then local voc = config[getPlayerVocation(cid)] doPlayerSetVocation(cid, voc[1]) local outfit = {lookType = voc[2]} doCreatureChangeOutfit(cid, outfit) setCreatureMaxHealth(cid, getCreatureMaxHealth(cid)+bonushp) setCreatureMaxMana(cid, getCreatureMaxMana(cid)+bonusmp) doCreatureAddHealth(cid, getCreatureMaxHealth(cid)) doPlayerRemoveItem(cid, 5943, 6) doCreatureAddMana(cid, getCreatureMaxMana(cid)) setPlayerStorageValue(cid,85798723243,1) db.executeQuery("UPDATE `players` SET `name` = '[Akatsuki] "..getCreatureName(cid).."' WHERE `id` = "..getPlayerGUID(cid)..";") addEvent(doRemoveCreature, 5*1000, cid, true) doPlayerSendTextMessage(cid,25,'You will be kicked in 5 seconds to enter the akatsuki!') selfSay('Congratulations now you are part of akatsuki.', cid) talkState[talkUser] = 0 else selfSay('No use to fool me, you do not have '..quantidade..' hearts, goes behind.', cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Heart System Creaturescript/script/heartsystem -- Do not remove the credits -- -- [CREATURESCRIPT] Heart System -- -- developed by Rigby -- -- Especially for the Xtibia.com -- function onKill(cid, target, lastHit) local item = 5943 -- id do coração local level = 300 -- level necessário para tira o coração if isPlayer(cid) and isPlayer(target) then if getPlayerLevel(target) >= level then local add = doPlayerAddItem(cid, item, 1) doItemSetAttribute(add, "description","Esse coração é de "..getPlayerName(target).." que foi morto no level "..getPlayerLevel(target).." por "..getPlayerName(cid)..".") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Voce Mato " ..getPlayerName(target).. ".") doSendMagicEffect(getPlayerPosition(cid),12) end end return true end Creaturescript.xml Tag <event type="kill" name="HeartSys" event="script" value="heartsystem.lua"/> Podem comenta duvidas, opiniões ou melhoramento para que haja a versão 2.01 ponto
-
Modificador de attackspeed em Item e/ou skill.
Leon25 reagiu a henriqueberro por um tópico no fórum
Versão: 0.3.6pl1 TFS Função: Adiciona a velocidade de ataque de acordo com uma determinada skill e/ou arma. Autor: henriqueberro (eu). Aviso: A unidade que usamos aqui é o milissegundo (ms). 1ms = 0,001s 1s = 1000ms Instalação em player.cpp, procure a função: uint32_t Player::getAttackSpeed() e substitua ela inteira por: uint32_t Player::getAttackSpeed() { int32_t weaponAttackSpeed = 0; int32_t minimumAttackSpeed = 500; Item* weapon = getWeapon(); if(weapon && weapon->getAttackSpeed() != 0) weaponAttackSpeed = floor ((int)weapon->getAttackSpeed()); // FORMULA int32_t attackSpeed = vocation->getAttackSpeed() - (getSkill(SKILL_CLUB, SKILL_LEVEL) * 20) - weaponAttackSpeed; // CHECA A VELOCIDADE MÍNIMA if (attackSpeed && attackSpeed < minimumAttackSpeed) return minimumAttackSpeed; return attackSpeed; } Explicando Definimos um mínimo de velocidade caso a formula retorne um valor menor que 500, verificamos se a arma tem modificador de velocidade, ou seja, se a tag 'attackspeed' está definida no items.xml e então calculamos e retornamos o total. O total é definido pela seguinte formula: (Velocidade de Ataque da Vocations.xml ) - ( Skill Club * 20 ) - ( Velocidade de Ataque da Tag 'attackspeed' do Items.xml ) Configurações 500 - O Valor mínimo de velocidade de ataque, SKILL_CLUB - A skill que vai modificar a velocidade de ataque. 20 - O multiplicador, como default está definida 0,02 segundos a menos por skill. Como definir a tag no items.xml Embaixo do item desejado adicione a seguinte tag: <attribute key="attackspeed" value="X"/> Espero que ajude alguém e qualquer problema estou a disposição, me corrija se estiver errado pois não testei, apenas desenvolvi a lógica e fiz o teste de compilação, o código inteiro é de minha autoria e livre para modificações e uso, abraços.1 ponto -
onDropLoot(cid, item)
Soulviling reagiu a caotic por um tópico no fórum
Ola galera xtibianaaa. Event droploot acontece quando um monstro ou player dropa 1 item. Vamos la: Vá em creatureevent.cpp e procure: bool CreatureEvents::playerLogin(Player* player) { //fire global event if is registered bool result = true; for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it) { if(it->second->getEventType() == CREATURE_EVENT_LOGIN && !it->second->executeLogin(player) && result) result = false; } return result; } Logo em seguida coloque: bool CreatureEvents::dropLoot(Creature* creature, Item* item) { bool result = true; for(CreatureEventList::iterator it = m_creatureEvents.begin(); it != m_creatureEvents.end(); ++it) { if(it->second->getEventType() == CREATURE_EVENT_DROPLOOT && !it->second->executeDropLoot(creature, item)) result = false; } return result; } Procure: else if(tmpStr == "preparedeath") m_type = CREATURE_EVENT_PREPAREDEATH; Coloque em seguida: else if(tmpStr == "droploot") m_type = CREATURE_EVENT_DROPLOOT; Logo apos procure: case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath"; Coloque abaixo: case CREATURE_EVENT_DROPLOOT: return "onDropLoot"; Procure: case CREATURE_EVENT_PREPAREDEATH: return "cid, deathList"; Coloque embaixo: case CREATURE_EVENT_DROPLOOT: return "cid, item"; Procure: uint32_t CreatureEvent::executeLogout(Player* player, bool forceLogout) { //onLogout(cid, forceLogout) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(player->getPosition()); std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(player) << std::endl; scriptstream << "local forceLogout = " << (forceLogout ? "true" : "false") << std::endl; scriptstream << m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ char desc[35]; sprintf(desc, "%s", player->getName().c_str()); env->setEventDesc(desc); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(player->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(player)); lua_pushboolean(L, forceLogout); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::cout << "[Error - CreatureEvent::executeLogout] Call stack overflow." << std::endl; return 0; } } Coloque logo apos: uint32_t CreatureEvent::executeDropLoot(Creature* creature, Item* item) { //onDropLoot(cid, item) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(creature->getPosition()); std::stringstream scriptstream; scriptstream << "local cid = " << env->addThing(creature) << std::endl; env->streamThing(scriptstream, "item", item, env->addThing(item)); scriptstream << m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ char desc[35]; sprintf(desc, "%s", player->getName().c_str()); env->setEventDesc(desc); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(creature->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(creature)); LuaScriptInterface::pushThing(L, item, env->addThing(item)); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::cout << "[Error - CreatureEvent::executeDropLoot] Call stack overflow." << std::endl; return 0; } } Vá em creatureevent.h e procure:CREATURE_EVENT_PREPAREDEATH, Coloque abaixo: CREATURE_EVENT_DROPLOOT Procure: uint32_t executeTarget(Creature* creature, Creature* target); Coloque abaixo: uint32_t executeDropLoot(Creature* creature, Item* item); Vá em player.h na função: void Player::dropLoot(Container* corpse) Troque por esta função: void Player::dropLoot(Container* corpse) { if(!corpse || lootDrop != LOOT_DROP_FULL) return; uint32_t start = g_config.getNumber(ConfigManager::BLESS_REDUCTION_BASE), loss = lossPercent[LOSS_CONTAINERS], bless = getBlessings(); while(bless > 0 && loss > 0) { loss -= start; start -= g_config.getNumber(ConfigManager::BLESS_REDUCTION_DECREAMENT); bless--; } uint32_t itemLoss = (uint32_t)std::floor((5. + loss) * lossPercent[LOSS_ITEMS] / 1000.); for(int32_t i = SLOT_FIRST; i < SLOT_LAST; ++i) { Item* item = inventory[i]; if(!item) continue; Creature* creature = NULL; bool deny = false;item creature = g_game.getCreatureByID(getID()); CreatureEventList droploot = getCreatureEvents(CREATURE_EVENT_DROPLOOT); for(CreatureEventList::iterator it = droploot.begin(); it != droploot.end(); ++it) { if(!(*it)->executeDropLoot(this, item)) deny = true; } if(!deny) { uint32_t rand = random_range(1, 100); if(skull > SKULL_WHITE || (item->getContainer() && rand < loss) || (!item->getContainer() && rand < itemLoss)) { g_game.internalMoveItem(NULL, this, corpse, INDEX_WHEREEVER, item, item->getItemCount(), 0); sendRemoveInventoryItem((slots_t)i, inventory[(slots_t)i]); } } } } Vá em monster.cpp e procure: void MonsterType::dropLoot(Container* corpse) { Item* tmpItem = NULL; for(LootItems::const_iterator it = lootItems.begin(); it != lootItems.end() && !corpse->full(); ++it) { uint32_t owner = corpse->getCorpseOwner(); Creature* creature = g_game.getCreatureByID(owner); if((tmpItem = createLoot(*it)) && g_creatureEvents->dropLoot(creature, tmpItem)) { if(Container* container = tmpItem->getContainer()) { if(createChildLoot(container, (*it))) corpse->__internalAddThing(tmpItem); else delete container; } else corpse->__internalAddThing(tmpItem); } } corpse->__startDecaying(); uint32_t ownerId = corpse->getCorpseOwner(); if(!ownerId) return; Player* owner = g_game.getPlayerByID(ownerId); if(!owner) return; LootMessage_t message = lootMessage; if(message == LOOTMSG_IGNORE) message = (LootMessage_t)g_config.getNumber(ConfigManager::LOOT_MESSAGE); if(message < LOOTMSG_PLAYER) return; std::stringstream ss; ss << "Loot of " << nameDescription << ": " << corpse->getContentDescription() << "."; if(owner->getParty() && message > LOOTMSG_PLAYER) owner->getParty()->broadcastMessage((MessageClasses)g_config.getNumber(ConfigManager::LOOT_MESSAGE_TYPE), ss.str()); else if(message == LOOTMSG_PLAYER || message == LOOTMSG_BOTH) owner->sendTextMessage((MessageClasses)g_config.getNumber(ConfigManager::LOOT_MESSAGE_TYPE), ss.str()); } Evento em uso: function onDropLoot(cid, item) local block = {2221, 1221, 2922} for i=1, #block do if item.itemid == block[i] then return false end end return true end1 ponto -
[WODBO] DBWarrior (Re-up)
yagoshira004 reagiu a Animal Pak por um tópico no fórum
Informações - Novo Mapa; - Novas Vocações; - Novas Magias; - Novos Monstros; - Novos Comandos e Sistemas; - !aol / Transform / Revert / Fusion /!spells/ Reborn 100%; - Novos Itens; - Novos Monstros; - Missões 100%; - Novas Quests; - Servidor 100% estável; - E Mais! Imagens: Download Server e Cliente Mediafire Scan Server e Cliente Virustotal ta uma ##!!, tem 44MB de arquivo, acredito que não seja necessário! Créditos DBWarrior Team ediberto23 BT SmoOkeR1 ponto -
[Pokemon] Servidor Skyfall - Completo
Josemir rosendo reagiu a Gabrieltxu por um tópico no fórum
Conteudo Retirado.1 ponto -
[PDA] New Ditto System[PXG]
steelpzeza reagiu a gabrielbsales por um tópico no fórum
Bom, esse ditto system: -Copia o pokemon e o balanceia sem necessidade de puxa-lo. -Copias Habilidades... Primeiramente, vá no some functions.lua - Localizado na pasta lib. E adicione isto no final(depois do ultimo end): Bom, essas são as funções de transformar e destransformar. Agora, vá no order.lua - Localizado no actions/scripts. E procure por: -------- TRANSFORM ---------- Apague tudo aqui dentro, até o: -------- LIGHT -------------- Ali dentro, bote: Pronto, ditto ja está tranformando, agora falta o !revert, para isso vá em talkactions/scripts e crie um arquivo(.lua) com nome de dittorevert, e dentro coloque: Agora, no talkactions.xml adicione esta linha: <talkaction words = "!revert;/revert" hide="yes" event = "script" value = "dittorevert.lua"/> Se fizer tudo corretamente, funcionará normalmente. Gif: Créditos: Gabrielbsales(sou op faço tudo solo)1 ponto -
É com grande alegria e satisfação que vos trago a CENTÉSIMA EDIÇÃO do concurso cultural (...) Como de costume, funcionará como as demais edições. Entretanto, contaremos com algumas diferenças em relação a premiação e calendário. * Se você é desenvolvedor de um projeto, ou até mesmo já tem o seu servidor online, você não pode ficar de fora dessa. Mais abaixo, tudo será melhor explicado. SUGESTÕES E DÚVIDAS DEVERÃO SER POSTADOS (AQUI) APENAS COMENTÁRIOS ESTÃO LIBERADOS NESTE TÓPICO. LIVRE (Deixe sua imaginação decolar!) 1° Lugar: 3 Pontos de reputação + Gold Award EXCLUSIVA #ADS100 + (KIT Banner+Logo) OU Layout FATIADO (Apenas Layout) TOTALMENTE GRÁTIS! 2° Lugar: 2 Pontos de reputação + Silver Award EXCLUSIVA #ADS100 3° Lugar: 1 Ponto de reputação + Bronze Award EXCLUSIVA #ADS100 OBSERVAÇÕES: 1. A premiação está sendo inteiramente oferecida por mim mesmo (Tonynh). (Awards Exclusivas + KIT (Banner+Logo) ou Layout) 2. Caso o vencedor escolha o Layout, este será feito sob encomenda para você! (Você pode escolher de sites/blogs/portfólios pessoais até a reformulação do site do seu servidor!) 2.2 Na escolha do Layout, será fornecido apenas as imagens fatiadas (Apenas design) 3. Na escolha de um KIT (Banner + Logo) serão oferecidos de 2 a 3 modelos de cada um. Concurso: 30/03/2014 até 13/04/2014 (23:59) Votação: 14/04/2014 até 20/04/2014 (23:59) Resultado: 21/04/2014. AS IMAGENS DEVEM SER POSTADAS NESTE TÓPICO ATÉ A DATA MARCADA. QUE OS JOGOS COMECEM!1 ponto
-
Decidir fazer um narutibia 8.60 (eu ia desenvolver um 9.60 mas ia da muito trabalho pela falta de recurso) para relembrar vários servidores do 7.81 (Extnl, Nso ,Nwo, etc..). Com sistema de org e algum sistemas próprio feito por min. Aqui sera postado todas as noticias do desenvolvimento do projeto Noticias:13/03/2014 Noticias:18/03/2014 Noticias 05/04/20141 ponto
-
[Encerrado]Procura-se Spriters
Madarada reagiu a BananaFight por um tópico no fórum
Bom dia, Estou recrutando spriters para o meu projeto de Digimon. O projeto atualmente se encontra em desenvolvimento, e falta pessoas qualificadas para a função de spriting, Eu preciso de ajuda nessa parte, na criação de monstros, outfits, cenários e itens novos. Se quiser se candidatar a vaga, me mande uma pm. Nome: ? Skype: ? Estilo: Cenário, ou Outfits... Exemplo de sua sprite1 ponto -
[Arquivado]O que você procura?
RastaLegion reagiu a Tonynh por um tópico no fórum
Saudações XTibianos, Para quem não me conhece, meu nome é Anthony Stephen, e sou o atual moderador da seção de Design e OFF-Topic. (Também fui coordenador de design, e trabalhei na imprensa do fórum) Visando a movimentação e o crescimento das seções, venho através deste tópico indagar o seguinte tema: "O QUE VOCÊ PROCURA?" Apenas reflitam com as perguntas abaixo: (Mas se quiserem respondê-las, sintam-se a vontade) Você se considera um usuário sanguessuga? (Aquele que só entra no fórum em busca de atender as suas necessidades, e não perde alguns segundos nem para agradecer?) Você se considera um usuário que não só busca, mas que também fornece informações? (Aquele que não se preocupa apenas com si mesmo, e sim com o crescimento de toda comunidade OpenTibia, doando tutoriais ou até mesmo resolvendo uma simples dúvida de um colega de fórum) ! Pode não parecer, mas são essas duas perguntas que definem os usuários deste fórum. ! Então, vos lanço mais algumas perguntas: QUAL O SEU OBJETIVO AQUI DENTRO? O QUE FALTA NA SUA SEÇÃO FAVORITA? O QUE SERIA UM CONTEÚDO MAIS ATRATIVO? De antemão, é bom deixar alguns avisos. * Lembre-se que não estou obrigando ninguém a ajudar e contribuir com a comunidade, e sim focando no crescimento e melhoria das seções... E com esse objetivo atingido, todos ganham, não é mesmo? * Lembre-se também que todo o trabalho aqui dentro é de forma voluntária! (...) você faz sua parte?1 ponto -
Bom dia. Gostaria de uma spell que fizesse o seguinte: Ao utilizar a spell, identifica se ha algum corpse em frente, se tiver ganha HP e some o corpse (de preferencia um efeito legal no corpse). Se nao, o personagem recebe a mensagem "Sorry, not possible'. Tentei pegar o script da animated dead rune, so que a runa funciona with crossairs, entao nao consigo verificar a posiçao em frente ao player para saber. Obrigado! --EDIT: Resolvido: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setHealingFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 5, 5, 5, 6) function onCastSpell(cid, var) local position = getCreatureLookPosition(cid) position.stackpos = 255 local corpse = getThingFromPos(position) if(corpse.uid > 0 and isCorpse(corpse.uid)) then doRemoveItem(corpse.uid) doCombat(cid, combat, var) doSendMagicEffect(getThingPosition(cid), CONST_ME_MAGIC_BLUE) doSendMagicEffect(position, 65) return true else doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) doSendMagicEffect(position, CONST_ME_POFF) return false end end1 ponto
-
Teleporte por level
lucasromero reagiu a DuuhCarvalho por uma questão
function onStepIn(cid, item, position, fromPosition) local pos1 = {x = 1027, y = 912, z = 5} -- Posicao que sera levado if getPlayerLevel(cid) >= 120 and getPlayerLevel(cid) <= 140 then doTeleportThing(cid, pos1) else doPlayerSendCancel(cid, "Voce nao pode entrar nesse Tp.") doTeleportThing(cid, fromPosition, true) end return true end1 ponto -
Entrada - Ntobrasil (basico)
ntofriendswar reagiu a alanmtd por um tópico no fórum
Olá meu caro, admiro você por tentar ajudar a seção de web. Agora vamos a um comentário mais voltado a web realmente... Acho essa entrada uma das piores que vi em todo meu tempo mexendo com ots, não digo a sua que está perfeita replica da nto, mas sim a deles, uma coisa muito sem graça e monótona... Ele poderiam ter trabalhado melhor na mesma. POr fim, após isso que disse a sua entrada em questão disso ficou a desejar, mas parabéns pelo serviço. Espero ver uma entrada excelente da próxima vez! Abraços meu amigo. Bom como eu disse nao é uma coisa perfeita , Mas.... tinha amigos aki querendo eu fiz mais vlw pelo comentario , eu também nao gosto masi tem gente que gosta . Vou fazer um aki que eu pesquisei aki e achei uma entrada bem legal estou fazendo ele postarei aki quando terminar.1 ponto -
vai em creaturescripts, deve ter um script: <event type="login" name="entrou" script="entrou.lua"/> <event type="logout" name="saiu" script="saiu.lua"/ basta apagar.1 ponto
-
torcendo para o alexclusive nao participar.. se nao já perdi.. asodijasi sem tipografia mesmo pq sei lá;; nao consegui encaixar1 ponto
-
Pretendo, mais acho que vou atualizando de Pouco em Pouco, Blz? esse foi o servidor menos bugado que e encontrei se diver bug só falar ai pra eu dar um geito aqui antes que descubra do pior geito.. O servidor tem Autoloot ? se quiser eu passo o sistema de auto loot pra pda que fiz pra ti manda pvd ai te explico como adc e tals Depois falo contigo.. Depois, tou saindo agora..1 ponto
-
[Resolvido] Held Item
gabrielbsales reagiu a zipter98 por uma questão
Não li o código por inteiro, então não sei se você já havia feito isso. Mas, ao invés de usar onThink (como o Slicer disse), você poderia chamar doRegenerateWithHeld diretamente na função adjustStatus, localizada em level system.lua. E, é claro, deve haver um evento contínuo na função doRegenerateWithHeld. E quando me refiro à um evento contínuo, quero dizer algo do tipo: function Model() return addEvent(Model, 1000) end1 ponto -
[Resolvido] Ajuda com ADDON SISTEM! (Centurion Base)
lucasweich reagiu a Techrlz por uma questão
Certo, Feliz em ter ajudado.1 ponto -
[Resolvido] Quero Coloca Tempo Nessa scripts Me ajuda pfv
DelsonShoes reagiu a DuuhCarvalho por uma questão
function onSay(cid, words, param) local time = X -- tempo em segundos. local storage = X -- storage. if getPlayerStorageValue(cid, storage) - os.time() <= 0 then if doPlayerRemoveItem(cid,2160,10) == TRUE then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voce Desbugou!") doSendMagicEffect(getPlayerPosition(cid), 12) setPlayerStorageValue(cid, storage, os.time()+time) addLevel(cid, 1) else doPlayerSendCancel(cid, "Presisa De 10 Gold Para Desbugar!") doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Presisa De 10 Gold Para Desbugar!") doSendMagicEffect(getPlayerPosition(cid), 2) end else doPlayerSendCancel(cid, "Você só poder usar esse script a cada "..time.." Segundos.") end end1 ponto -
NÃO PASSA NA PORTA COM TAL STORAGE
victorcx reagiu a DuuhCarvalho por uma questão
function onUse(cid, item, frompos, item2, topos) local storage = 123 -- storage . if getPlayerStorageValue(cid, storage) <= 0 then doTeleportThing(cid, topos) doSendMagicEffect(topos, 10) else doPlayerSendTextMessage(cid, 22, "Para passar aqui você não deve ter X storage!") end return true end1 ponto -
Table + For + if
DuuhCarvalho reagiu a dalvorsn por uma questão
"o else só vai ser executado se o player tiver todas as storages .." claro que não, qualquer if que a condição seja false, vai buscar um elseif ou else, no caso quando qualquer uma das storages for > 0 o else será executado1 ponto -
Table + For + if
BananaFight reagiu a dalvorsn por uma questão
Tu ta dando return, dai o loop para né '-' O restante está correto.1 ponto -
action que tira 50 % do meu life se eu usa-la
Wiihtop reagiu a DuuhCarvalho por uma questão
function onUse(cid, item, frompos, item2, topos) local item1 = 2160 local health = 50 -- % local mana = 50 -- % local h = (getCreatureHealth(cid))*(health)/(100) local m = (getCreatureMana(cid))*(mana)/(100) doCreatureAddHealth(cid, -h) doCreatureAddMana(cid, -m) doTransformItem(item.uid, item1) doCreatureSay(cid, 'HAHAI', TALKTYPE_ORANGE_1) return true end1 ponto -
Damage Em Ground
edu6279 reagiu a DuuhCarvalho por uma questão
CONDITION_NONE CONDITION_POISON CONDITION_FIRE -- Fire (Fogo) CONDITION_ENERGY CONDITION_LIFEDRAIN CONDITION_HASTE CONDITION_PARALYZE CONDITION_OUTFIT CONDITION_INVISIBLE CONDITION_LIGHT CONDITION_MANASHIELD CONDITION_INFIGHT CONDITION_DRUNK CONDITION_EXHAUSTED CONDITION_FOOD CONDITION_REGENERATION CONDITION_SOUL CONDITION_DROWN CONDITION_MUTED Duvida Sanada ?1 ponto -
A MELHOR ASSINATURA #100!
Tonynh reagiu a JonatasLucasf por um tópico no fórum
não ficou muito bom mais ta aí oque vale é participar para aprender mais1 ponto -
Ao Clicar na Alavanca
JonatasLucasf reagiu a DuuhCarvalho por uma questão
Tópico movido para Pedidos e dúvidas resolvidos.1 ponto -
Programa Atualizado * Suporte para várias linguas [English, Polish, Portuguese] * Lista de objetos. * Barra de progresso ao import e exportar. * Detecta clientes estendidos. * Teclas de atalho. * Suporte pra todas as assinaturas 8.00 - 10.37 * Exibe o tamanho exato de um objeto. * Correções e melhorias na interface.1 ponto
-
novo download pronto, basta vc baixar. Download: Distro 8.601 ponto
-
[Resolvido] Ajuda com ADDON SISTEM! (Centurion Base)
lucasweich reagiu a Techrlz por uma questão
Ao adicionar o addon faça o script setar uma variavel, logo apos fazer isso coloque para o seu goback ler essa variavel.1 ponto -
1 ponto
-
[8.54] Remakes PxG até 07/03
StyloMaldoso reagiu a JG6 por um tópico no fórum
stylo se vc quiser eu te mando só manda uma pm q eu tenho em png e em obd1 ponto -
Death System Introdução: Vamos pessoal participar da oms, esse sistema faz com que quando um player mate o outro apareça um ceifeiro vindo pega a alma dele. Vamos la começar a add a script Em creaturescript/script, crie DeathSystem.lua -- Do not remove the credits -- -- [CREATURESCRIPT] Death System -- -- developed by Rigby to help DuuhCarvalho -- -- Especially for the Xtibia.com -- function onDeath(cid, corpse, killer) local pos = getCreaturePosition(cid) local monster = 'ceifeiro' local timer = 3 -- quanto tempo vai demorar pra sumir function removeMonster() for _, pid in ipairs(getCreatureSummons(killer[1])) do doRemoveCreature(pid) end return true end if isPlayer(cid) and isPlayer(killer[1]) then doConvinceCreature(killer[1], doCreateMonster(monster, pos)) doSendAnimatedText(getThingPos(cid), "DEATH!", 125) doSendMagicEffect(getThingPos(cid), 65) addEvent(removeMonster, timer*1000) end return true end Creaturescript.xml tag <event type="death" name="DeathSystem" event="script" value="DeathSystem.lua"/> Login.lua antes do ultimo return true registerCreatureEvent(cid, "DeathSystem") Agora vamos criar o ceifeiro em monster crie um ceifeiro.xml <?xml version="1.0" encoding="UTF-8"?> <monster name="Ceifeiro" nameDescription="a ceifeiro" race="blood" experience="0" speed="0" manacost="220"> <health now="9999999999999" max="9999999999999"/> <look type="300" corpse="5971"/> <targetchange interval="2000" chance="0"/> <strategy attack="100" defense="0"/> <flags> <flag skull="5"/> <flag summonable="1"/> <flag attackable="1"/> <flag hostile="0"/> <flag illusionable="1"/> <flag convinceable="1"/> <flag pushable="1"/> <flag canpushitems="0"/> <flag canpushcreatures="0"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="8"/> </flags> <defenses armor="1" defense="2"/> <immunities> <immunity physical="0"/> <immunity energy="0"/> <immunity fire="0"/> <immunity poison="0"/> <immunity lifedrain="0"/> <immunity paralyze="0"/> <immunity outfit="0"/> <immunity drunk="0"/> <immunity invisible="0"/> </immunities> <voices interval="2000" chance="100"> <voice sentence="HAHAHAHA"/> </voices> </monster> em monsters.xml adicione essa tag antes do ultimo </monsters> <monster name="Ceifeiro" file="ceifeiro.xml"/> Espero que gostem.1 ponto
-
Outland, Main Quest, Cyber Wolrd, Outlands, Liga Pokémon, acho que é a mesma coisa kkkk', mas vai demorar :v1 ponto
-
PDA By: Bolz:: Versão [GOD anna]
yukirosama reagiu a Wend ll por um tópico no fórum
@Over Vou Fazer oq você está dizendo, Pode dizer uns Systemas que posso pegar Lá?1 ponto -
em seu creaturescripits procure por showvoc e adicione isso function onLook(cid, thing, position, lookDistance) if isPlayer(thing.uid) then local type = getPlayerStorageValue(thing.uid, 89745) doPlayerSetSpecialDescription(thing.uid, "\n "..(getPlayerSex(cid) == 0 and "She" or "He").." are "..(type < 0 and "Shinobi" or type == 1 and "Genin" or type == 2 and "Chunin" or type == 3 and "Jounin" or type == 6 and "Akatsuki" or type == 7 and "Hokage" or type == 4 and "Anbu" or type == 5 and "Captain Anbu")) end return true end agr so por npc ou tile pra te adicionar storage ex if (getPlayerStorageValue(cid,89745) > 6) then Akatsuki /\ if (getPlayerStorageValue(cid,89745) > 7) then Hokage Simples Se funcionou Da um Rep ai1 ponto
-
Fairy Tail Online [FTO]
viniciusdrika reagiu a Frenvius por um tópico no fórum
Mais um exemplar, ainda não atualizado1 ponto -
Simples, primeiro abra seu Config.lua localizado na pasta rais do serve, em seguida, procure por mapName = "nomedomapa onde tem NOME DO MAPA, você coloca o nome que ta no mapa que você que usar, em seguida, pega o mapa que você vai usar, que tem o mesmo nome que você colocou aqui "mapName = " .. e joga na pasta data/world. fim1 ponto
-
{SHOW OFF} RastaLegion
RastaLegion reagiu a Meunometemvinteletra por um tópico no fórum
Nossa, nada a comentar quanto a 2ª foto, está divina. A 3ª foto também está ótima 0 map bugs e uma área totalmente agradável.. Muito bom o ShowOff, Reputado!1 ponto -
Vou fazer o meu, vou deixar 24hrs de Bot e vou entrar so pra tirar as Prints é depois quando pegar lvl 100 vou fazer um sorteio do char aki1 ponto
-
Spriting a Arte do pontinho. Seu mundo de muitos pontos Apresentação: Meu nome e Insaend ( Wanderson Carlos D. S. ) sou sprite a algum tempo frequento o xtibia a um bom tempo porem aprendi muitas das coisas que sei no fórum da Perspective45.org. Não venho fazer propaganda do fórum mas acho errado que aqueles que passaram por la o ignorem pois ele foi um marco na minha vida assim como o Xtibia foi para as outras áreas que gosto de fazer em relação ao Otserve. Venho por meio deste tópico mostrar e ensinar o que sei para todos os usuários ou não usuários do fórum. Não sou o melhor do brasil nem do meu estado não acho que eu nem vocês podemos dizer que não damos conta de chegar perto de quem admiramos Proposta: Quero ajudar todos os usuários a entender que a arte de pixel não e nada alem de dedicação e treinamento com orientação correta. Um pixel arte (Spriting/Sprite) nada mais e do que um retrato desenhado com pequenos detalhes que para o olho humano forma uma grande arte (desafio). Tendo em mente que teremos um longo caminho eu iniciarei esse trabalho assim como também iniciei a minha caminhada. Sim como pequenos itens e suas formas para que possamos depois melhorar ainda mais para outros itens (sprite) Spriteing “perspectiva 45ª” A forma com que vou tratar o trabalho da spriter e em perspectiva 45 graus então peço que tentem sempre acompanhar todo o contexto e absorver o máximo de informações que forem lhes passadas para que não percam tempo com outros tipo de sprite confundido assim suas mentes! Trabalhos/Tutoriais 1 - Iremos iniciar com tutorias sobre itens: 1.01 - Outline 1.02 - Iluminação/Sombreamento 1.03 - Volume 1.04 - Tons 1.05 - Textura PS: no tutorial estarei mostrando como fazer e não como colocá-las em seus projetos e Arquivos de jogos, fica para uma próxima! 2 - Trabalharemos o cenário com isso teremos que fazer vários tutorias essa no mais sera a parte mais complicada pois abrange muitos tipos de sprites e cada um com seu mode de fazer em um geral todos dentro de um só objetivo. 2.01 - Perspectiva 2.02 - Outline (Em construção) 2.03 - Iluminação/Sombreamento 2.04 - Volume 2.05 - Tons 2.06 - Textura · Trabalharemos em cenário com os temas: Piso(floor), natureza”plantas, arvores, relevos, pedras, paredes de pedras e terra”(nature), itens para enfeite(items for garnish). PS: no tutorial estarei mostrando como fazer e não como colocá-las em seus projetos e Arquivos de jogos, fica para uma próxima! PS: muitas das imagens contida nessa gif não são de minha autoria tendo vários membros do perspectiva45 como autores! 3 - Criaturas/monstros, estaremos trabalhando como fazer criaturas sejam elas monstros personagens: personagem para jogar (character), Monstros (creaturas)... 3.01 - Perspectiva 3.02 - Outline 3.03 - Anatomia 3.04 - Iluminação/Sombreamento 3.05 - Volume 3.06 - Tons 3.07 - Textura 3.08 - Movimento · Dentre muitas coisas pequenas que iremos trabalhar abordando ainda o tema de Criatura com toda certeza o mais complexo de todos devido cada individuo ter diferentes tipos de serem feitos e trabalhados. PS: no tutorial estarei mostrando como fazer e não como colocá-las em seus projetos e Arquivos de jogos, fica para uma próxima! Conclusão Espero ajudar o máximo de pessoas com os tutorias e peço que nas paginas que forem feitas com os tutorias cada um que tenha um duvida postem a no tópico correspondente que sempre que eu tiver um tempo ou puder ajudar eu ajudarei, não estarei respondendo perguntas por PM pois sua duvida também pode ser a de seu amigo usuário, não darei dicas fora dos tópicos e não responderem perguntas off! Estarei postando os link se assim for preciso com atualização deste tópico na primeira pagina sendo assim logo abaixo do agradecimento! Obrigado e aproveitem. ATT Insaend Links já upados: A arte do Pontinho - Outline 1.01 A arte do Pontinho - Iluminação e Sombreamento 1.02 A arte do Pontinho - Volume 1.03 A arte do Pontinho - Tom 1.04 A arte do Pontinho - Texturas 1.05 A arte do Pontinho - Perspectiva 2.01 A arte do Pontinho - Outline 2.02 (Em construção) Aguardem Mais link's...1 ponto
-
Tenta usar o UniServ. Alem de ser mais facil, é bem melhor que xampp.1 ponto
-
[Dicas] Iniciantes
tatotheus reagiu a Desnecessario por um tópico no fórum
1 ponto