Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 01/12/13 em todas áreas
-
Account Manager - Adicionando Escolha de Cidade
Masterzikka e 8 outros reagiu a Oneshot por um tópico no fórum
Account Manager Adicionando "Escolha de Cidade" Fala, minha galera do Éks. Vocês sabem que é minoria servidores que possuem site, uma vez que quando queremos criar um servidor (mais por lazer), é meio que inviável hostear um site junto. Os account makers, assim como são chamados os sites de servidores, dão ao jogador a opção de escolher a cidade que ele vai morar. Já o Account Manager, aquele sistema interno de administração da conta de um jogador, não possue uma opção de escolha de cidade, o que o deixa muito limitado. Principalmente para servidores derivados, onde é quase que necessário, que o jogador possa escolher sua cidade. Pensando nisso, desenvolvi uma série de modificações que irão adicionar ao seu servidor, a opção de "escolher uma cidade" no sistema do Account Manager. Instalação Você precisa seguir todos os passos abaixo com atenção o bastante para não pular nenhum, senão poderá ocorrer algum erro na compilação. Vale lembrar que não basta modificar os arquivos passados, você precisa re-compilar seu servidor e, após, substituir o executável. Vamos começar. No arquivo config.lua de seu servidor, procure por: newPlayerSpawnPosX = 95 newPlayerSpawnPosY = 117 newPlayerSpawnPosZ = 7 newPlayerTownId = 1 Apague, substituindo pelas linhas abaixo: newPlayerChooseTown = true newPlayerDefaultTownId = 1 A partir daqui, você irá precisar das sources de seu servidor. No arquivo configmanager.h e procure pelas seguintes linhas: SPAWNPOS_X, SPAWNPOS_Y, SPAWNPOS_Z, SPAWNTOWN_ID, Substitua por: DEFAULT_TOWN_ID, Procure por: START_CHOOSEVOC, Logo abaixo adicione: START_CHOOSETOWN, No arquivo configmanager.cpp, procure por: m_confNumber[sPAWNPOS_X] = getGlobalNumber("newPlayerSpawnPosX", 100); m_confNumber[sPAWNPOS_Y] = getGlobalNumber("newPlayerSpawnPosY", 100); m_confNumber[sPAWNPOS_Z] = getGlobalNumber("newPlayerSpawnPosZ", 7); m_confNumber[sPAWNTOWN_ID] = getGlobalNumber("newPlayerTownId", 1); Substitua por: m_confNumber[DEFAULT_TOWN_ID] = getGlobalNumber("newPlayerDefaultTownId", 1); Procure por: m_confBool[sTART_CHOOSEVOC] = getGlobalBool("newPlayerChooseVoc", false); Adicione logo abaixo: m_confBool[sTART_CHOOSETOWN] = getGlobalBool("newPlayerChooseTown", true); No arquivo iologindata.h, procure por: bool createCharacter(uint32_t accountId, std::string characterName, int32_t vocationId, uint16_t sex); Substitua por: bool createCharacter(uint32_t accountId, std::string characterName, int32_t vocationId, uint16_t sex, uint32_t townId); No arquivo iologindata.cpp, procure por: bool IOLoginData::createCharacter(uint32_t accountId, std::string characterName, int32_t vocationId, uint16_t sex) { if(playerExists(characterName)) return false; Vocation* vocation = Vocations::getInstance()->getVocation(vocationId); Vocation* rookVoc = Vocations::getInstance()->getVocation(0); uint16_t healthMax = 150, manaMax = 0, capMax = 400, lookType = 136; if(sex % 2) lookType = 128; uint32_t level = g_config.getNumber(ConfigManager::START_LEVEL), tmpLevel = std::min((uint32_t)7, (level - 1)); uint64_t exp = 0; if(level > 1) exp = Player::getExpForLevel(level); if(tmpLevel > 0) { healthMax += rookVoc->getGain(GAIN_HEALTH) * tmpLevel; manaMax += rookVoc->getGain(GAIN_MANA) * tmpLevel; capMax += rookVoc->getGainCap() * tmpLevel; if(level > 8) { tmpLevel = level - 8; healthMax += vocation->getGain(GAIN_HEALTH) * tmpLevel; manaMax += vocation->getGain(GAIN_MANA) * tmpLevel; capMax += vocation->getGainCap() * tmpLevel; } } Database* db = Database::getInstance(); DBQuery query; query << "INSERT INTO `players` (`id`, `name`, `world_id`, `group_id`, `account_id`, `level`, `vocation`, `health`, `healthmax`, `experience`, `lookbody`, `lookfeet`, `lookhead`, `looklegs`, `looktype`, `lookaddons`, `maglevel`, `mana`, `manamax`, `manaspent`, `soul`, `town_id`, `posx`, `posy`, `posz`, `conditions`, `cap`, `sex`, `lastlogin`, `lastip`, `skull`, `skulltime`, `save`, `rank_id`, `guildnick`, `lastlogout`, `blessings`, `online`) VALUES (NULL, " << db->escapeString(characterName) << ", " << g_config.getNumber(ConfigManager::WORLD_ID) << ", 1, " << accountId << ", " << level << ", " << vocationId << ", " << healthMax << ", " << healthMax << ", " << exp << ", 68, 76, 78, 39, " << lookType << ", 0, " << g_config.getNumber(ConfigManager::START_MAGICLEVEL) << ", " << manaMax << ", " << manaMax << ", 0, 100, " << g_config.getNumber(ConfigManager::SPAWNTOWN_ID) << ", " << g_config.getNumber(ConfigManager::SPAWNPOS_X) << ", " << g_config.getNumber(ConfigManager::SPAWNPOS_Y) << ", " << g_config.getNumber(ConfigManager::SPAWNPOS_Z) << ", 0, " << capMax << ", " << sex << ", 0, 0, 0, 0, 1, 0, '', 0, 0, 0)"; return db->query(query.str()); } Substitua por: bool IOLoginData::createCharacter(uint32_t accountId, std::string characterName, int32_t vocationId, uint16_t sex, uint32_t townId) { if(playerExists(characterName)) return false; Vocation* vocation = Vocations::getInstance()->getVocation(vocationId); Vocation* rookVoc = Vocations::getInstance()->getVocation(0); Town* town = Towns::getInstance()->getTown(townId); uint16_t healthMax = 150, manaMax = 0, capMax = 400, lookType = 136; if(sex % 2) lookType = 128; uint32_t level = g_config.getNumber(ConfigManager::START_LEVEL), tmpLevel = std::min((uint32_t)7, (level - 1)); uint64_t exp = 0; if(level > 1) exp = Player::getExpForLevel(level); if(tmpLevel > 0) { healthMax += rookVoc->getGain(GAIN_HEALTH) * tmpLevel; manaMax += rookVoc->getGain(GAIN_MANA) * tmpLevel; capMax += rookVoc->getGainCap() * tmpLevel; if(level > 8) { tmpLevel = level - 8; healthMax += vocation->getGain(GAIN_HEALTH) * tmpLevel; manaMax += vocation->getGain(GAIN_MANA) * tmpLevel; capMax += vocation->getGainCap() * tmpLevel; } } Database* db = Database::getInstance(); DBQuery query; query << "INSERT INTO `players` (`id`, `name`, `world_id`, `group_id`, `account_id`, `level`, `vocation`, `health`, `healthmax`, `experience`, `lookbody`, `lookfeet`, `lookhead`, `looklegs`, `looktype`, `lookaddons`, `maglevel`, `mana`, `manamax`, `manaspent`, `soul`, `town_id`, `posx`, `posy`, `posz`, `conditions`, `cap`, `sex`, `lastlogin`, `lastip`, `skull`, `skulltime`, `save`, `rank_id`, `guildnick`, `lastlogout`, `blessings`, `online`) VALUES (NULL, " << db->escapeString(characterName) << ", " << g_config.getNumber(ConfigManager::WORLD_ID) << ", 1, " << accountId << ", " << level << ", " << vocationId << ", " << healthMax << ", " << healthMax << ", " << exp << ", 68, 76, 78, 39, " << lookType << ", 0, " << g_config.getNumber(ConfigManager::START_MAGICLEVEL) << ", " << manaMax << ", " << manaMax << ", 0, 100, " << townId << ", " << town->getPosition().x << ", " << town->getPosition().y << ", " << town->getPosition().z << ", 0, " << capMax << ", " << sex << ", 0, 0, 0, 0, 1, 0, '', 0, 0, 0)"; return db->query(query.str()); } No arquivo player.h, procure por: int32_t managerNumber, managerNumber2; Substitua por: int32_t managerNumber, managerNumber2, managerNumber3; No arquivo player.cpp, procure por: editListId = maxWriteLen = windowTextId = rankId = 0; Adicione logo abaixo: managerNumber3 = g_config.getNumber(ConfigManager::DEFAULT_TOWN_ID); Procure por: case MANAGER_ACCOUNT: Muita atenção neste passo. Você precisará substituir todo o conteúdo do case pelo conteúdo abaixo, ou seja: Substitua isso: case MANAGER_ACCOUNT: { ... } Por isso: ZD3xYbg4[/pastebin] Demonstração Testado em The Forgotten Server 0.4 rev3884. Pode não funcionar em versões anteriores.9 pontos -
AEUHAEUHAEUHAEUHAUEHAUHEAUHEAUHEUHAEUH RI DO GSOUZA KRL +bônus gui bailando4 pontos
-
[SUPER-PACK] 698 Renders Pokémon By Overpower.
AlexandreKG e um outro reagiu a Overpower por um tópico no fórum
Eae galera beleza? denovo eu '-' Vim trazer um pack que eu fiz (peguei 1 por 1 imagem fiquei o dia inteiro hoje fazendo isso praticamente) muito bom de render pokémons. Vamos logo =x Preview: Descrição do arquivo: Um pack muito bom e de qualidade =x Tamanho : 144MB Formato : .RAR/.PNG Autor : Overpower Quantidade : 698 Renders pokémons Obrigado galera espero que gostem foi tenso pegar uma por uma imagem , eu sei que o preview está feio mais é isso =x Senha para descompactar : byoverpower Part 1 Part 2 Part 32 pontos -
2º CAMPEONATO MUNDIAL DE JV CHEQUERS
PedrinhuHenrique e um outro reagiu a Tonynh por um tópico no fórum
+bônus Pajé Bernardo + Índio Gui durante ritual (foto rara)2 pontos -
2 pontos
-
2º CAMPEONATO MUNDIAL DE JV CHEQUERS
dwhfms e um outro reagiu a guilhermes26 por um tópico no fórum
COMPETDOR GSOUZA SE APRESENTADO PRIMEIRA TENTATIVA FOI UM DESASTRE2 pontos -
Farei , Aguarde até a entrega. @Edit Saiu isso =x não achei um bg melhor para usar nela kk que combinasse '-'2 pontos
-
2 pontos
-
Spr Editor [ 8.54/9.81 ][ versão 1.3 ]
pirulitopiu reagiu a cristofermartins por um tópico no fórum
Olá, meu nome é Cristofer Martins, sou programador e gameDesigner e atualmente faço parte da equipe Digimon Adventure Online. Estou aqui para apresentar o meu Spr Editor, que desenvolvi para a equipe por que outros editores não eram funcionais/simples o suficiente. Alem disso, vi que não há sprite editores para as novas versões do Tibia, dificultando a inserção/remoção/edição/exportação de Sprites dos novos arquivos SPRs.Alem disso, um outro motivo foi que tive uma pessima experiencia com o Demonic Editor, tentei exportar as Sprites do nosso SPR para uma pasta umas 20 vezes e sempre dava algum erro no meio do caminho. Por isso desenvolvi um Editor eu mesmo. Preview: Funções( no menu ): -Add: Adiciona n sprites ao editor. Basta clicar no add que irá aparecer a janela para você seleciona todas as sprites que você quiser( multi seleção ). Essas sprites serão adicionadas no final da lista de sprites. OBS: As imagens devem ser PNG e o fundo das sprites deve ser transparente, e não rosa, como é de costume. -Replace: Substitui n sprites no editor. Selecione com Ctrl ou até com o Shift as sprites no editor que você quer substituir, depois clique no menu em Replace. Irá aparecer uma janela aonde você seleciona as imagens PNG para serem substituidas. As sprites serão substituidas na sequencia, a primeira Sprite selecionada no editor vai ser substituida com a primeira imagem selecionada na pasta. O progresso do replace pode ser visto na barra de progresso. -Delete: "Deleta" n sprites da lista.Selecione com Ctrl ou até com o Shift as sprites no editor que você quer deletar, depois clique no menu em Delete. Essas IDs das sprites que são deletadas vão aparecer "" e o ID delas, elas são sprites vazias, sem conteudo que você substiuir com novas imagens e assim aproveitar essas IDS que não estão servindo para nada. Export: Exporta n Sprites. Basta selecionar com Ctrl ou com Shift ou clicando na sprite que o editor irá exportar essa sprite com fundo transparente. Você pode facilmente exportar todas as sprites para uma pasta ou apenas aquelas que lhe interessam. O progresso da exportação pode ser visto na barra de progresso. Clear: Limpa a lista de sprites e remove as imagens da memoria. Util para criar um arquivo SPR do zero, por exemplo. Exemplo multi select( para deletar, substituir ou exportar ): Abas Extract/Compile Extract: Nessa aba você clica em SPR file para abrir o arquivo SPR, escolhe a versão dessa SPR ali no "menu" do lado daonde tá escrito "version" e clica em Extract. O programa vai começar a extrair as sprites e adiciona-las a lista( as vezes a lista fica estatica basta clicar nela que ela atualiza com as sprites novas ) e o progresso da extração pode ver na barra de progresso. Compile: Nessa aba você compila as Sprites da lista para um arquivo SPR. Para isso basta clicar em "save" e escolher o arquivo SPR que vai ser salvo, escolher a versão desse arquivo SPR como feito em Extract e clicar em "Compile!". O progresso da compilação pode ser visto na barra de progresso. Outros Search by ID: Pesquisa uma sprite pelo ID. Caso essa id exista na lista, a lista se move até a a sprite. Download: SPREditor Scan: Virus Total Caso você encontre algum bug, reporte nesse topico por favor. Aceito sugestões. Caso exista alguma versão que não seja aceita no editor e você tem a signiture(assinatura) do arquivo spr, poste aqui que eu atualizo o version.ini.1 ponto -
Subwat Kamikaze v30
Killingtabom reagiu a rogeriocene por um tópico no fórum
Novo Lançamento!!!! < King Subwat Kamikaze> OMG Oque Ha de Novo no Server? -Sistem Pet /Pet noob,Pet normal,Pet Descente e Pet Foda -Shadow vip -Shadow vocaçao -Shadow coins e Demonic coins -Novos Sets: Brutal set,Demonic Set,Shadow set e o Melhor De todos King Set E Strike Set E Adicionado Apocalypse Set (19/07/2013) -Hard Quest - Dando Brutal Set -Novo Design Do Templo E Das Hunts Sistema De Refinamento de Set Removido o bug Do GOD -Demonic Quest - Dando demonic Set -Shop De Alavanca -Vocaçoes balanceadas -Novas Runas e armas -Comando !maxlvl -Novo Design -Trainer em cima do templo -Novos Monstros Adicionado Sistema De Cassino Nova Moeda De Jogo..Apocalypse Coin (Bugs De loot em monster Removidos) Imagens: Download : http://www.4shared.com/rar/JbURldl7/novo.html? GOSTOU ??/ + REP AE PLIZ !!!!!BUGS RETIRADOS!!!!!!1 ponto -
[Tutorial]Criando Website Com Xampp
onark123 reagiu a ultimate1996 por um tópico no fórum
Opa, fala xTibia '-'.. Vi que muitas pessoas estavam querendo fazer um site para seu servidor e não sabem como fazer... Então resolvi postar um tutorial completíssimo aqui.. O que vamos precisar? -&gt; Xampp ( 1.6.5 ) - Download - http://www.oldapps.com/xampp.php?old_xampp=38 -&gt; Gesior Acc. Maker ( 0.3.8 ) - Download - http://www.mediafire.com/?u0bao9bcp9ua5vr -&gt; Um servidor de sua escolha.Pode ser qualquer um desde que tenha o arquivo .mysql. PS: NÃO RESPONDO A QUEM TIVER O ERRO DO INSTALL.PHP . ESSE ERRO É CAUSADO POR CAUSA DA UTILIZAÇÃO DE OUTRA VERSÃO DO XAMPP E DO GESIOR, POR ESSE MOTIVO EU COLOQUEI O XAMPP 1.6.5 QUE ESTÁ FUNCIONANDO! NÃO USE A VERSÃO MAIS RECENTE DO XAMPP! Vamos ao tutorial! Espere... vai criar um site sem saber como funciona? O site de seu servidor será feito em PHP. E o que vai ter nele? Os jogadores de seu servidor poderão criar suas contas, ver notícias do servidor, ver outros jogadores, criar guildas, e muito mais dependendo de como você manusear seu website. OBS1 : É altamente recomendável que escolha uma forte senha para sua conta de Admin. Pois se seu servidor tiver sucesso, certamente "hackers" tentarão atacar sua database e seu servidor. OBS 2: Seu site ficará online apenas quando o Xampp estiver ativo com o Apache e MySQL sendo executados, ou seja, apenas quando você estiver no computador. Para seu site ficar online 24 horas, você precisaria de uma hospedagem para php. Agora que já temos tudo, vamos começar !! 1°) Abra o instalador do XamPP, e instale-o. 2°) Selecione aonde a pasta do XamPP ficará salva. (de preferência algum lugar de fácil acesso) 3°) Deixe apenas a primeira e a segunda opções marcadas e clique em Next. 4°) Aguarde o fim da instação e provavelmente uma tela preta irá aparecer. 5°) Após o fim da instalação, clique em Yes para abrir o XamPP e dê Start em Apache e MySQL. 6°) Clique em Admin do Apache. Você será redirecionado para a sua localhost (endereço que apenas você entra). Clique em Português (Brasil). 7°) No canto esquerdo do site , clique na Aba Segurança. Vá descendo até achar " http://localhost/sec...mppsecurity.php " . Clique. OBS : Se você não conseguiu abrir a página de Segurança, vá na pasta do seu Xampp/security/htdocs/lang e renomeie o arquivo pt para pt_br . 8°) Após ter clicado, deverá ser redirecionado para uma página parecida com essa: OBS :Faça o numero 1 e depois clique em Alterar Senha. Depois Faça o numero 3 e clique em Tornar Seguro o Diretorio do XamPP. 9°) Após ter feito isso, dê Stop no MySql (no XamPP) e dê Start denovo. Agora vá em seu navegador e digite : localhost/phpmyadmin 10°) Digite a senha que foi criada há pouco tempo que eu disse que era para a criação do banco de dados. 11°) Minimize seu navegador e vá na pasta de seu servidor, e abra o arquivo config.lua. Tire todos os espaços iniciais e as "frases" iniciadas com o sinal de " - " . Veja : 12°) Não feche o config.lua ainda, vá descendo até achar informações sobre a database de seu servidor ... algo parecido com isto : sqlType = "mysql" &lt;- se estiver em sqlite, mude para mysql sqlHost = "localhost" sqlPort = 3306 sqlUser = "root" sqlPass = "123456" &lt; - coloque a senha que foi criada para entrar no banco de dados. sqlDatabase = "otserv" &lt; - coloque o nome de sua database , coloque " otserv " para facilitar. sqlFile = "otserv.s3db" &lt; - de prefencia, coloque " otserv.s3db " ( o mesmo nome de sua database ) sqlKeepAlive = 0 mysqlReadTimeout = 10 mysqlWriteTimeout = 10 encryptionType = "plain" 13°) Salve e feche o config.lua. Agora vamos voltar a pagina minimizada (localhost/phpmyadmin) : 14°) Clique na aba Importar na parte superior da tela. 15°) Agora Selecione o Arquivo para Importar. Selecione o arquivo terminado em .sql que fica na pasta de seu servidor e clique em Executar no canto inferior direito. 16°) Pronto !! A database de seu servidor foi criada. Agora vamos instalar os arquivos do site. 17°) Abra a pasta do XamPP/htdocs. Apague tudo que tem dentro de htdocs e cole tudo o que veio dentro da pasta do Gesior ACC. 18°) Abra o XamPP novamente e clique em Admin do Apache. 19°) Uma nova pagina foi aberta, agora você terá que fazer mais 5 passos rápidos. 19.1) Set Server Path Coloque o diretório da pasta de seu servidor. Ex : C:\Users\user\Desktop\Tibia Server Clique em Set Server Path. 19.2) Check database connection 19.3) Add tables and columns to DB 19.4) Agora desça e clique no botão. 19.5) Set Admin Account Coloque uma senha SEGURA pois esse será o password do administrador do site e servidor. 19.6) Load Monsters from OTS Carregue os monstros do servidor. 19.7) Load Spells from OTS Carregue as magias do servidor. 20°) Agora você deverá ser redirecionado para seu site, e você pode acessá-lo pelo localhost ou pelo ip do seu servidor. Para acessar sua database, digite em seu navegador : localhost/phpmyadmin Pronto !! Seu site foi criado :] Colocando seu site online pelo 8090 e Desbloqueando a porta 8090 : 1° - Acesse a pasta do XamPP/apache/conf e abra o arquivo httpd com o bloco de notas. Procure por : Listen 80 E por : ServerName localhost:80 Substitua todos os 80 por 8090. 2° - Dentro da pasta conf, abra a pasta extra, e em seguida abra httpd-ssl e procure por : Listen 443 E por: <virtualhost _default_:443=""> Substitua esses 443 por 4499. Agora vá em seu firewall e Adicione a Porta 8090 e Porta 80 e marca a opção TCP. Se usar Roteador, desbloqueie as portas também. Site por porta 80 localhost Site por porta 8090 localhost:8090 Colocando seu site online pela porta 80 (A porta 80 seria o ip normal de seu servidor. Exemplo : teste.servegame.com. ) A porta 80 não necessita de nada no final. Para que as pessoas entrem pela porta 80, não necessita mudar nada na pasta do Xampp. Pois ela ja está configurada para entrarem. Só é necessário desbloquear a porta 80 no seu modem ou roteador. E desbloquear a porta 80 pelo Firewall também. VIDEO AULA - FEITA EM 2/4/2012 (DESCULPA , AS VEZES TENHO QUE PENSAR QUANDO FALO EM PORTUGUES, PORQUE NAO MORO NO BRASIL)!! Créditos : 100% por Mim :] Não mexo mais com Tibia, mas ainda respondo a qualquer dúvida que eu esteja capacitado a responder (:1 ponto -
Baiak Extreme OTProjects 0.7 - O MELHOR BAIAK! (8.60) Servidor feito pela Otprojects. Fala galera estou aqui para apresentar o novo Baiak Extreme, A OTProjects trabalhou muito tempo neste servidor. Ele custava cerca de 35 Reais na loja da OTprojects, mas foi liberado de graça e eu estou repassando pra vocês. Este servidor é um dos Mapas Baiak mais completos, possui WoE, Dota, Coliseum, Zombie e outros Eventos. Tá esperando o que? Confira logo! Cidades: ├ Baiak City ├ Desert City ├ Hydraland ├ Yalahar (Cidade VIP) └ Thais Imagem #1: Templo - Baiak City Imagem #2: Glacial Area Imagem #3: Baiak City O Que Contêm no Servidor: ├ Eventos Exclusivos : ├DotA ├ WoE ├ Coliseum ├ Zombie Event ├ Yalahar como City VIP ├ City do Baiak Totalmente Reformulada. ├ Novos Teleports e Quests ├ War Castle ├ Novos NPC'S ├ War System. └ TFS 0.4 DEV Rev: 3777 Já Compilado. Lista Das Principais Quests (Todas Funcionando 100%): ├ The Annihilator Quest ├ Demon Helmet Quest ├ Firewalker Boots Quest ├ The Inquisition Quest ├ The Pits of Inferno Quest ├ The Demon Oak Quest └ In Service of Yalahar Quest Update 0.7: - Sem o Bug dos Stages - Com TFS 0.4 REV 3884 - O MELHOR PARA WINDOWS - Crashes no Console Removidos - Agora em MYSQL, Recomendo que usem o Xampp e o Gesior para fazer o Site. Senha do God: god/god Como Abrir o Mapa Caso dê Erro: Vai no RME Aperta em File>New>Import Map e Selecione o Mapa do Baiak Extreme. Download & Scan ATENÇÃO: UTILIZE MYSQL para Melhor Resultado! Download Os vírus acusados estão no Distro, o Servidor está Limpo! ATENÇÃO! Para o MELHOR FUNCIONAMENTO DO OT, Recomendo que USEM MYSQL! Créditos:1 ponto
-
Opá galera... infelizmente estou sem tempo pra terminar o mapa, então resolvi postar essa mierda de uma vez. Segue algumas imagens logo abaixo: ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ Download: Clique aqui.1 ponto
-
Sistema De Novos Items
Edenfield reagiu a MatheusGlad por um tópico no fórum
Bem, como todos sabem, não da pra criar 2 items com o mesmo sprite, somente editando a source e o dat etc... Usando esse sistema que eu fiz voce nao precisara editar nada somente adicionar os scripts. Primeiramente vá na pasta lib e crie um arquivo ItemsEditedLib.lua e adicione isso dentro: 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 Depois vá na pasta items e adicione um arquivo newitems.XML (XML NAO LUA!!!) e adicione isso dentro: <?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> Bem como voces podem ver, o xml guarda os novos items, o xml funciona praticamente como o items.xml so que tem um novo campo o "spriteid", nele fica o itemid original. Eu sei que ainda faltam atributos, com o tempo e com os pedidos eu vou adicionando. (É importante que voces peçam por novos atributos, porque os outros são mais complicados e eu nao vou faze-los para ninguem usar) Atributos: "description" "defense" "attack" "extradefense" "armor" "extraattack" Para adicionar os novos itemids aos players use doPlayerAddEditedItem(cid, ITEMID) em vez de doPlayerAddItem...1 ponto -
Criei esse tópico com a intenção de voces publicarem seus ultimos trabalhos e nós avaliarmos e vermos como você tem evoluido em design , mas tem regras: Poste quantas imagens quiser por dia , desde que não floode e nao seja pornografia,etc.. Não desmerecer o trabalho de um membro , apenas criticas construtivas Ex: Cara está legal mas tente melhorar a tipografia - Ex de desmerecimento: Ta horrivel isso ai cara desiste de ser designer. Sem floodar,chingar, ou brigas se houver brigas reportarei pro tonynh dar rep- e se continuar com a discussão poderá ser alertado. Sempre poste para que todos possam avaliar e saibam aceitar criticas negativas e positivas . Apenas isso pessoal bom vou começar postando o meu \/ -> Não reparem na tipografia fiz aqui para o DuMal Abraços,1 ponto
-
Tava olhando o site de upload agora, e minhas imagens ficaram na galeria auhauh As imagens são de pedidos dentro da seção, então, resolvi postá-las aqui mesmo. (Essa não foi um pedido. É um job antigo que usei de referência para o OverPower. Eu acho <risos>) E por último, um background para um client de tibia baseado em pokémon. Ignorem um pouco a qualidade, o hoster da imagem converteu para .jpg por ser muito grande. http://i.imgur.com/WGw9c.jpg Depois posto umas moderate/high aqui mesmo, ou em outro tópico oficial. Abraços.1 ponto
-
[Encerrado] Player Usar Todos Items Onde Quiser.
josedb9 reagiu a AdilsonHacker por um tópico no fórum
Affz' presiso muito resolve isso , sé alguém souber por favor me ajudem ;x1 ponto -
btw o gui mandando bem na pelada http://i.imgur.com/PvsOT.png1 ponto
-
[Talkaction] !maxlevel Funcionando!
admdestroyer reagiu a Nemat por um tópico no fórum
@VitinDruid Tenta assim ó: Se der algo de errado, fala ae.1 ponto -
Mas você está falando o quê para o Account Manager? 'warlord' ou 'a warlord'? Você tem que falar para o account manager, o que estiver no 'name' da vocação.1 ponto
-
A PROPOSITO, você agora está fazendo a mesma coisa que os demais Gears. Novamente, existe PM para conversas externas, usem-na! ASSUNTO ENCERRADO. #Tópico Gostei muito da tua última sign over, ta pegando o jeito da tipografia do zodiak auhauh, mas ficou muito legal. Gratz =p1 ponto
-
Adeus Éks
Gabriel Couto reagiu a DiogoTemporario por um tópico no fórum
cala boca cara, tu xingou o cara e vem me encher o saco denunciando ele por te alertar, deixa de ser escroto ainda faz topico de despedida e n vai embora ja que tu ta se despedindo mesmo entao vai embora banido por 7 dias1 ponto -
Mapa proprio ou uma base?
wesley_world reagiu a DarkShiny por uma questão
Protteus gostei bastante do mapa, porém para um ot exp 1000x acho que esse estilo mais sagrado não é oque chama atenção de players de nivel de exp 1000x acho que aquele templo com paredes do 8.60 grande com estilo infinity ot, entende poderia me ajudar adiciona meu msn ai yuri_luh@hotmail.com obrigado cara ja te dei o REP ontem vo ve se do hj tb1 ponto -
Caramba gente pqp ein , bennyw overpower e puricute parem de usar os tpcs para conversarem esse topc ta cheio de comentários desnecessários e floods que poderiam ser feitas por pm na boa over vc ja é experiente devia se conscientizar disso e vc bennyw tome cuidado que pode até levar rep- [quote name='Bennyyw' timestamp='1357826756' post='1435676'] Ahhhhhhhhhh over entra skype :D Olha esse coment apenas um flood idiota que não acrescenta nada nada mesmo ao tópico voc podia ter mandando uma pm pro overpower e falar isso [quote name='Bennyyw' timestamp='1357683385' post='1434235'] LOL, a minha sign que eu fiz pra ele ele curtiu ^^ Entra skype ai over? Olha dnv um flood idiota ¬¬ use a pm pra isso cara para de poluir o topico alheio aqui não é o barzinho pra ficar postando qualquer bobagem [quote name='Puricute' timestamp='1357684467' post='1434244'] Overpower ficou revoltado HAUSDHUASHD Mais um comentário desncessário , me diz oque esse coment adicionou ao tópic? Apenas um flood bobo que poderia ser evitado se fosse usado o bom senso. [quote name='Bennyyw' timestamp='1357690358' post='1434325'] Po tonynh vei tu ja ta na minha assinatura , se tu fica escrevendo esas fraaases meio tensa eo n vo ter lugar pra coloca mais a foto Ao invés de publicar isso em um topic sobre sign's poderia ter mandando pm pro tonynh e dizer isso , pois esse coment aqui no topc nao acrescentou em nada e ainda fugiu do foco que era sign's [quote] [quote name='Bennyyw' timestamp='1357683385' post='1434235'] LOL, a minha sign que eu fiz pra ele ele curtiu ^^ Entra skype ai over? Mais uma vez uma coisa que poderia ser evitada se vc usasse a pm [quote name='Bennyyw' timestamp='1357685947' post='1434259'] A seo maldito mal a net kaio =( vo entra aki Cordenador Mas oque é isso cara? Novamente existe a pm pra isso não acrescentou em nada ao topic floodou e fugiu do assunto do topic nossa mãe voce é experiente no forum isso é contra as regras que tal dar uma passadinha lá e ler algumas linhas? Me despeço por aqui. Abraços,1 ponto
-
[Conjunto] Anyur + Brund
Tonynh reagiu a Gabriel Couto por um tópico no fórum
Está com alguns bugs de borda, já corrigi =P Isso é para o Yurots Remake, área extra.1 ponto -
1 ponto
-
[Spell] Teleporte e attack
rogeriomatx reagiu a brun123 por uma questão
function onCastSpell(cid, var) local function blink(cid, target, turn) if not isCreature(cid) or not isCreature(target) or turn <= 0 then return end local dir, targetPos = {0, 1, 2, 3, 4, 5, 6, 7}, getThingPos(target) table.remove(dir, getDirectionTo(targetPos, getThingPos(cid)) + 1) doTeleportThing(cid, getPosByDir(targetPos, dir[math.random(#dir)]), false) doCreatureSetLookDir(cid, getDirectionTo(getThingPos(cid), targetPos)) local dmg = getCreatureLevel(cid) / 10 doTargetCombatHealth(cid, target, COMBAT_PHYSICALDAMAGE, -dmg * 0.9, -dmg * 1.1, CONST_ME_BLOCKHIT) addEvent(blink, 650, cid, target, (turn or 3) - 1) end if not isCreature(getCreatureTarget(cid)) then doPlayerSendCancel(cid, "You need a target.") return false end addEvent(blink, 1000, cid, target, 3) return true end1 ponto -
Amigo Ja Foi Postado Aqui No Xtibia, A Pack Para Recorta, E O Cliente Com As Sprites Ja Recortadas Em Formato IDC, Que Faclilia A Transferencia Da Sprite, Usa A Barra De Busca E Procure Por Stigal, Vejo A Assinatura Dele E Os Trabalhos Dele, Que Voce Encontrará, Ou Pesquise Por, Pokemon 5 geração, Nao Custa Nada Usar A Barra De Busca Link Cliente Com Pokemons Da 5 Geração >>Click Me<<1 ponto
-
Olá galera, a pedido do nosso amigo Manyzin, venho trazer um pack de render DBZ e renders Games.. Preview: Pack renders DBZ: Descrição: Um pack separado 1 por 1 e só imagens de qualidade. Tamanho : 77MB Formato: .RAR/.PNG Quantidade : 85 Renders Autor : Overpower Download: Pack renders Games : Descrição: Mesma coisa '-' Tamanho : 56MB Formato: .RAR/.PNG Quantidade : 101 Renders Autor : Overpower Download: Senha para descompactar : byoverpower1 ponto
-
o raciocinio tb poderia ter vindo dessa funçao aki q vem como padrao na lib.. ^^ string.timediff = function (diff) local format = { {"week", diff / 60 / 60 / 24 / 7}, {"day", diff / 60 / 60 / 24 % 7}, {"hour", diff / 60 / 60 % 24}, {"minute", diff / 60 % 60}, {"second", diff % 60} } local t = {} for k, v in ipairs(format) do local d, tmp = math.floor(v[2]), "" if(d > 0) then tmp = (k < table.maxn(format) and (table.maxn(t) > 0 and ", " or "") or " and ") .. d .. " " .. v[1] .. (d ~= 1 and "s" or "") table.insert(t, tmp) end end return t end1 ponto
-
Na hora de (fica na duvida entra no topico e ajuda)
Piabeta Kun reagiu a joadson por uma questão
abra o seu config.lua e configure sqlType = "sqlite" -- se for mysql coloque mysql aqui sqlHost = "localhost" -- não mude sqlPort = 3306 -- não mude sqlUser = "root" -- o user que você criou no mysql sqlPass = "" -- a senha que você colocou no mysql sqlDatabase = "theforgottenserver" -- a database do otserv ou então poste o mesmo para que eu possa dar uma olhada e tentar achar o problema1 ponto -
Pokemon dash advanced !
Kooask reagiu a StyloMaldoso por um tópico no fórum
Nuckdown mude o ip do config.lua ta outro.. coloka 127.0.0.1 StormAdaats use notepedd++ (deve ser assim q escreve)1 ponto -
Erro ao tentar Criar site, Ajuda urgente!
MrKirito reagiu a Piabeta Kun por uma questão
http://www.4shared.com/document/PklxTo46/db_online.html tenta essa!1 ponto -
+bônus pra divertir a moçada, eu acho auhahu http://i.imgur.com/1SFtI.png1 ponto
-
Tem do leo tbm Leo segurando uma Naja1 ponto
-
Fiz algo muito rapido em 20 minutos por que meu irmao ja vai mecher mais ta ai :1 ponto
-
Script de Teleport quando o monstro na area "x" a "y" estiver mortos.
Hamsterbob reagiu a brun123 por uma questão
ops, erro idiota meu, aqui: local areas = { [1] = { fromPosition = {x = 93, y = 125, z = 7}, -- upper-left sqm toPosition = {x = 95, y = 127, z = 7}, -- lower-right sqm creatureName = {"Rat", "Cave Rat"} } } function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) local pass = true for _, area in ipairs(areas) do local x = {min = math.min(area.fromPosition.x, area.toPosition.x), max = math.max(area.fromPosition.x, area.toPosition.x)} local y = {min = math.min(area.fromPosition.y, area.toPosition.y), max = math.max(area.fromPosition.y, area.toPosition.y)} local width = ((x.max - x.min) / 2) + 1 local lenght = ((y.max - y.min) / 2) + 1 local center = {x = x.min + width, y = y.min + lenght, z = area.fromPosition.z} local specs = getSpectators(center, width, lenght, false) if specs then for _, cn in ipairs(specs) do if type(area.creatureName) == "table" and isInArray(area.creatureName, getCreatureName(cn)) then pass = false break elseif type(area.creatureName) == "string" and getCreatureName(cn):lower() == area.creatureName:lower() then pass = false break end end end end if pass == false then doPlayerSendCancel(cid, "Sorry, you need to kill all the monsters in the area to pass.") doTeleportThing(cid, fromPosition, true) return false end return true end1 ponto -
Entrada Dark Abra / Charizard Valley
Heinekennn reagiu a Stigal por um tópico no fórum
• Script Porta Dark Abra / Charizard Valley • Nome Do Script: Porta Dark Abra / Charizard Valley Versão: 8.54 Criador: Desconhecido Obs: Pode ser utilizado tanto para porta Dark Abra, quanto porteira Charizard Valley Entrara Com Está ACTION: Vá em "Pasta Servidor > Data > Actions > Scripts", Crie um ARQUIVO.LUA com nome "darkdoor" Adicione isso dentro: function onUse (cid,item,frompos,item2,topos) pos = {x=XXX, y=YYY, z=Z} doTeleportThing(cid,pos) doSendMagicEffect(pos, CONST_ME_TELEPORT) return 1 end Salve e Feche. Agora Abra "Data > Actions > Actions.xml". Adicione essa TAG Dentro: <action actionid="AAAA" event="script" value="darkdoor.lua"/> Salve e Feche. O Player vai sair com esse Movements: Vá em "Data > Movements > Scripts", Crie um ARQUIVO.LUA com o nome de "darktile". Adicione isso dentro: local position = {x= xxxx, y= yyyy, z= zzzz} function onStepIn(cid, item, pos) doTeleportThing(cid, position) doSendMagicEffect(getThingPos(cid), 21) return TRUE end Salve e Feche. Abra "Data > Movements > Movements.xml". Adicione essa tag dentro: <movevent type="StepIn" actionid="AAAA" event="script" value="darktile.lua"/> Salve e Feche. Aviso: XXX= Posição X do pra onde o players vai teleporta YYY= Posição Y do pra onde o players vai teleporta Z= Posição Z do pra onde o players vai teleporta AAAA= Voce coloca qualquer numero q nao teja usando em actions e tabeim vai por na porta.1 ponto -
[Poketibia] Exposição Sprites De Pokemon De Unova
Strogman reagiu a narutochuuu por um tópico no fórum
Acho que deu muito trabalho para passar pra vocês mas se você quiser olha só: Sprite do Shiny Emboar, créditos ao Power Crystal, eu apenas editei ele como shiny... Se gostou da um REP ae tio1 ponto -
Npc's Para Poketibia Para Pda
emerson99211582 reagiu a Gabrieltxu por um tópico no fórum
Pow Cara Vlws tinha esses NPC's Aki faz tempo Tinha nada para fazer vim Compartilhar com vcs Do Xtibia!1 ponto -
Pronto consegui acha-lo... Procure por "-- Miscellaneous", vai aparecer igual abaixo: ---------------------------------------------------------------------------------------------------- -- Miscellaneous -- NOTE: defaultPriority works only on Windows -- promptExceptionTracerErrorBox works only with precompiled support feature, -- called "exception tracer" (__EXCEPTION_TRACER__ flag). defaultPriority = "normal" maxMessageBuffer = 4 kickIdlePlayerAfterMinutes = 15 allowChangeOutfit = "yes" allowChangeColors = "yes" disableOutfitsForPrivilegedPlayers = "no" displayGamemastersWithOnlineCommand = "no" bankSystem = "yes" saveGlobalStorage = "yes" displaySkillLevelOnAdvance = "no" spellNameInsteadOfWords = "no" emoteSpells = "no" expireReportsAfterReads = 1 ---------------------------------------------------------------------------------------------------- E o mesmo passo que o tutorial pequeno que lhe passei... maxMessageBuffer = 4 So mudar o numero "4" que e o máximo de mensagens seguidas para mutar! Obs: Se aparecer com erro e porque esse lixo do Chrome não ta funcionando direito com o Xtibia!1 ponto
-
Mega Curso De Sprites
ClaudioMar231o reagiu a olhonoporco por um tópico no fórum
Não sei se aqui é a área certa, se não for desculpe. Primeiramente queria dizer que não fiz esse tutorial. Botei os créditos no final, só estou trazendo para o xtibia. Tirei os erros de português, salvei imagem por imagem e hospedei um por uma porque meu Imageshack está com problema. São 59 imagens e tive que salvar, hospedar (uma por uma, pois o imageshack está com problema) e depois localizar e adicionar a imagem, todas elas... Espero que gostem... __________________________ •Artigo 1: Características Principais de um Sprite 1 - Tamanho 2 - Luz 3 - Perspectiva 4 - Edição •Artigo 2: Começando um sprite 1 - Introdução ao PAINT 2 - Criação de um sprite 3 - Pintura 4 - Aprimoramento •Artigo 3: Efeitos gerais - Módulo: Fireworks 1 - Magic Wand Tool 2 - Blur Tool 3 - Sharpen Tool 4 - Dodge Tool 5 - Burn Tool 6 - Smudge Tool •Artigo 4: Efeitos gerais - Módulo: PAINT 1 - Como colorir um sprite 2 - Oficina de pintura 3 - Anti-Aliasing e suas aplicações 4 - Lista de cores •Artigo 5: Efeitos particulares 1 – Jóias de enfeite 2 – Cavidades 3 – Rachaduras 4 – Sprites Envelhecidos 5 – Sprites brilhantes sem “Sharpen” Artigo 1: Características Principais de um Sprite 1- Tamanho Bom, para a galera que está começando agora a fazer sprites e não sabe por onde começar, aqui começaremos com o básico do básico, a dimensão dos sprites: De fato é bem simples: •Sprite pequeno porte (carregável) Todo sprite carregável deve possuir os padrões de sua Backpack e para isso, é preciso que ele tenha as dimensões 32x32 Pixels.. Veremos mais a frente como dimensionar sua página de edição.[Art2:1] •Sprites de médio porte Geralmente outfits, monstros humanóides, e pequenas estátuas seguem padrões com dimensão 32x32 Pixels no eixo de base(Chão) também, porém é preciso que eles se mantenham na perspectiva do Tibia •Sprites de grande porte A grande maioria dos sprites de grande porte segue um padrão de 64x64 Pixels no eixo de base(chão), é o caso de Pedras, Estátuas, Mesas, e grande parte dos itens que compõe o cenário: 2 - Luz •Direção da Luz Uma das regras mais importantes e obrigatórias: caso seu intuito em fazer sprites seja criar itens para o Tibia: A LUZ VEM DO NOROESTE, mas mesmo assim, ainda existe luz vinda das demais fontes naturais e refletida pelas superfícies. Como no esquema a seguir: Sendo assim, seu sprite recebe luz de todas as direções, mas preferencialmente pelo Noroeste. 3 - Perspectiva •A perspectiva é teoricamente bem simples também, basta você seguir os padrões de formato estabelecidos pela Cipsoft [Art1:1] e desenhar seguindo uma orientação diagonal: Como no esquema: Artigo 2: Características Principais de um Sprite 1- Introdução ao PAINT Bom galera, é fato que muitos de nós já abominaram o PAINT muitas vezes, mas uma prova de que ele é a chave para o sucesso de muitos é que, todo sprite é feito no paint, logo todos os itens mais belos bem desenhados que vocês já viram vieram do mesmo lugar, e esse lugar é o Paint. •Onde está o Paint? O primeiro de tudo é localizar o programa PAINT em seu computador, geralmente ele se encontra no seguinte endereço: Menu Iniciar/Todos os Programas/Acessórios/Paint. •Configurando as dimensões da página Assim que abrir o PAINT, é preciso configurar a página para os padrões do Tibia. Para configurar a página siga o exemplo: IMAGEM/ATRIBUTOS E configure em: 32x32 Pixels para Itens de pequeno e médio porte(carregáveis e outfits/humanóides): 64x64 Pixels Para itens de grande porte: •Principais ferramentas que utilizaremos no paint para fazer Sprites: - Lápis :Usaremos para desenhar e colorir. - Linha : Usaremos para dimensionar sprites(Perspectiva) e algumas vezes na pintura criando linhas. - Conta-gotas : Usaremos na pintura para captura de cores para o lápis. - Recorte Quadrado e Aleatório : Usaremos quando para movimentar o Sprite ou Parte dele ao longo da página - Lupa : Usaremos para aumentar seu sprite em duas, seis, oito e Doze vezes •Criação de um Sprite Certo, finalmente deixar de teorias e vamos colocar a mão na massa. Começaremos desenhando um formato apropriado, como este Tutorial foi feito para um nível Básico e Intermediário de Sprite Art, vamos começar com um formato simples, utilizando a Lupa de aumento em 8x ou 12x. Para ficar mais fácil desenhar os pixels simetricamente, o melhor é Quadricular a página apertando CTRL + G. 8x + [ Ctrl + G ] 12x + [ Ctrl + G ] Para configurar o aumento de 12x é preciso clicar exatamente na linha que limita o quadro de aumentos: Bom, vamos começar com uma espada. Veremos que até o formato mais simples pode ficar muito bom se for bem trabalhado: Formato externo - Sempre Preto - Sempre dentro do espaço exigido pela Cipsoft Formato interno - Sempre usar cores escuras mas Nunca Preto - Dividir bem as partes a serem detalhadas Pintura - A pintura inicial deve ser simples para visualizar como o sprite deve ficar - Feito isso, segue-se para Aprimoramento e Oficina de Pintura ou para o Fireworks. - Aproveite para corrigir os pixels pretos que esqueceu dentro do Sprite ;D Aprimoramento - Se preferir desenhe alguns detalhes, como a divisória da lamina e jóias de enfeite - Feito isso: Sigamos para a Oficina de Pintura! Ou para o Fireworks... Artigo 3: Efeitos gerais - Módulo: Fireworks Bom galera, pra ser sincero com vocês, eu não começaria a editar os efeitos pelo Fireworks, mas não se pode negar o fato de que muitos sprites ficam "bacanas" quando feitos no fireworks, mas na minha opinião, ele deve ser um programa de edições finais...como "escurecer isso aqui e ali" "clarear aqui", "deixar com cores mais vivas lá". Porém muitas vezes as pessoas preferem utilizar o Fireworks ou o Photoshop pra edição de efeitos então vou dar essa opção a vocês. Efeitos Gerais - Magic Wand Tool: Usada para extrair o fundo do sprite, muito usado em fakes e outras edições como efeito de "Transparência": - Blur Tool: Usada pra homogeneizar as cores, deixando-as com tons parecidos. Dando um efeito de Embaçado - Sharpen Tool: Usada principalmente para dar mais vida ao sprite, deixá-lo mais brilhante e com detalhes aparentes. O ruim é que em grande escala pode gerar riscos pretos indesejáveis. - Dodge Tool: Talvez, juntamente com a Burn Tool está seja a ferramenta mais utilizada no Fireworks. Utilizamos Dodge Tool sempre que quisermos clarear um sprite, tornando as cores mais próximas do branco: - Burn Tool: Usada para escurecer seu sprite, muito usado na porção direita dos escudos e outros equipamentos evidenciando a vinda da luz ao noroeste. Por fim, juntando todo nosso trabalho no FireWorks é visível a diferença entre o molde e o sprite final. Basta lembrar que se a luz vem do Noroeste a parte Sudeste fica mais escura em relação a parte voltada para luz porem não fica PRETA já que os raios são refletidos para todas as direções Processo de edição pelo Fireworks: - Dodge Tool para clarear a ponta da lâmina e a lateral voltada para o noroeste. - Burn Tool para escurecer a porção que mais se aproxima do cabo com mais enfoque na lateral direita do sprite - Sharpen Tool para dar vida aos pixels mais iluminados para torná-los conseqüentemente os mais brilhantes. Controle a transmissão da luz pensando nos reflexos da luz e na perda da força da luz ao longo da lâmina, já que onde a luz bate, ela é refletida aos olhos do observador, passando somente uma parte ao resto do sprite. Assim se segue em todos os pontos de luz: •Artigo 4: Efeitos gerais - Módulo: PAINT 1 - Como colorir um sprite Certo galera, acho que finalmente chegamos no meu método pessoal e mais esperado do tutorial(por mim) Daqui para frente abordaremos todo o verdadeiro trabalho de um Spriter de acordo com o meu pensamento, é um método trabalhoso, realmente trabalhoso; mas um método que torna o sprite realmente Tibiano. E realmente bonito. Pintura PAINT x Fireworks Tudo na pintura se baseia na escolha das cores e dos tons, em matéria de sprites não basta somente escolher uma ou duas cores diferentes, colorir um sprite como fizemos na pintura básica [Artigo 2:3] e depois disso apenas usar Blur Tool(Clarear) e Burn Tool(Escurecer) do Fireworks no Sprite. Para nós o Fireworks será uma ferramenta básica de edição. A escolha das cores Bom, como dito anteriormente o mais importante na pintura de um sprite é sua cor e os tons dessa cor. Geralmente usamos tons diferenciados de uma mesma cor para gerar a idéia de sombreamento e luminosidade. A utilização destes tons varia de acordo com três pontos importantes: Material a ser pintado: Metal, Bronze, Tecidos, Marfim, Ouro, Pele. Propagação de luz no material: Alguns materiais como pedras não polidas, troncos e materiais envelhecidos não propagam a luz muito bem devido a manchas e ao não polimento de suas superfícies. Reflexo da luz no Material: Tecidos, Peles, Materiais envelhecidos e pedras não polidas não devem refletir a luz como objetos polidos e bem trabalhados, essa diferença precisa existir. •Oficina de Pintura Bom a Oficina de Pintura foi um projeto meu, seguindo dicas de ótimos spriters do Mundo Fake como o Marcotonio e outros tutoriais, que continuo usando até hoje e que se baseia na reunião de várias cores e seus diferentes tons em volta do sprite a ser pintado. Sendo a pintura do sprite realizada pela captura das cores pré-definidas em Orbs coloridos com o conta-gotas. Tudo na pintura se baseia na escolha das cores e dos tons então Desenhei orbs coloridos para facilitar a captura de cores: Veremos mais pra frente como isso se aplica. •Como fazer um Orb colorido: Na verdade é bem simples quando se tem o Fireworks, basta usar a Dodge Tool para clarear e a Burn Tool para escurecer. Mas basicamente o que se deve fazer é: - Escolher uma cor e fazer um círculo - Clarear a porção noroeste e um pouco da sudeste (para dar idéia de esfera) - Escurecer o meio para intensificar o efeito de esfera e refração da luz. - Pode-se fazer isso pelo paint selecionando uma cor e escolhendo diferentes tons desta cor para colorir o círculo em forma de esfera, mas utilizando as Ferramentas do Fireworks vai lhe poupar muito trabalho. •Seguindo as etapas: Créditos: Redstrike •Como organizar minha Oficina de Pintura: - O primeiro de tudo é você desenhar seu sprite - Quando passar por todas as etapas abordadas no Artigo 2, copie seu sprite e cole em um arquivo PGN ou BPM que você chamará de Oficina de Pintura. - Lá você deve colar também suas cores pré-definidas e deixá-las em torno do sprite. - Se tiver itens antigos com uma boa distribuição de cores e tons copie-os e cole todos na Oficina Em resumo: Créditos ao Leomage pelo axe •Iniciando as etapas da pintura: Aproveitando que estamos trabalhando com uma espada, que é um sprite simples, vamos aproveitar para um mini tutorial de espadas =D Bom, pra começar vamos às regras básicas: Regra número 1 - Toda espada possui uma linha média que definirá o corte da lâmina Regra número 2 - A porção esquerda da linha média recebe mais luz do que a porção da direita. Regra número 3 - A luz não é estática, ela se propaga ao longo de todo sprite porém alguns pontos são menos iluminados como regiões de cavidades na guarda, cabo e principalmente na porção da lâmina que está voltada contra a luz, tendo o corte como barreira. Certo, vamos clarear a mente de vocês •Regra número 1: Linha média que define o corte •Selecionei as cores que usaremos na pintura desses sprite. Certo, a Linha média não é nada mais do que uma reta diagonal formada por 4 ou 5 tons diferentes da mesma cor, logo consultaremos o mesmo Orb colorido no caso...o azul-acinzentado. Também se pode capturar cores de seus antigos sprites ou imagens para possuir uma maior gama de opções. [ virei e pintei de marrom o fundo pra vocês poderem entender melhor com a lamina voltada pra luz ] -Depois pintaremos as laterais médias, lembrando sempre que a luz é dividida no local que eu chamo de Secção Transversal, ou simplesmente "ST" representado pela cor mais escura perto da ponta da linha média. Seguindo o Tutorial do Strad, podemos perceber a diferença das lâminas e saber como nossa linha média deve se comportar. - As laterais médias, são as laterais da linha média e geralmente seguem três regras: •Regra número 1: A ponta da espada recebe mais luz, logo todos os pixels devem ter tons mais claros na ponta caminhando para tons mais escuros conforme se aproximem do cabo. •Regra número 2: A lateral esquerda possui uma propagação maior da luz do que a lateral esquerda, logo os pixels são mais claros em relação a esquerda. •Regra número 3: A Secção Transversal(ST) é de extrema importância para o direcionamento do corte e da luz. No exemplo: E ao final da pintura das laterais médias: Certo, nosso Sprite está começando a ficar bonitinho hehe, agora o próximo passo é pintar as linhas das extremidades. Geralmente essa é a parte que entra o Anti Aliasing, um efeito usado muitas vezes para deixar o Sprite mais redondo( falaremos dele mais pra frente ) mas usaremos ele neste caso para deixar nosso sprite mais ponte agudo! Isso é feito utilizando Cores Escuras com Tons próximas do contorno, que no caso dos itens de Tibia é Preto. Faremos isso deixando alguns pixels mais claros perto do cabo para dar a idéia de uma superfície "Afiada". Como na imagem: - E ao acabar a lâmina partimos para a guarda. Seguindo mais três regras: •Regra número 1: A porção esquerda da guarda recebe mais luz do que a direita. Porém há pouca diferença. •Regra número 2: Cavidades, Jóias, Rachaduras e Cabos com guardas longas recebem sombreamentos à parte da guarda. •Regra número 3: A guarda não segue padrões de Secção transversal. ( pelo menos a maioria delas. ) Então vamos pintar a Guarda! Escolham cores também próximas do preto para o AA mas que mantenham a idéia dourada, reforce isso com cores mais vivas ao longo da guarda, utilizem para isso o Orb Colorido dourado. Exemplo: E por fim temos nosso Sprite totalmente feito pelo PAINT. Parabéns a todos que leram até aqui! •Vejamos uma comparação rápida entre o nosso Sprite inicial e suas edições pelo Paint e pelo Fireworks: 1 - Formato Externo 2 - Formato Interno 3 - Pintura básica 4 - Aprimoramento 5 - Rota pelo Paint 6 - Rota pelo Fireworks Façam seus julgamentos! =D Eu pessoalmente diria que a espada 100% paint ficou muito melhor, talvez clareasse mais a lâmina com o Fireworks ou usando uma técnica que vamos ver no tópico: Sprites brilhantes sem “Sharpen” [Art5:5] *OBS: Com laminas mais curtas em largura é mais fácil fazer AA •Anti-Aliasing e suas aplicações O Anti-Aliasing é uma técnica muito utilizada para "arredondar" o sprite, e quando digo arredondar eu me refiro a Diminuição dos acidentes nas armações dos pixels Isto é: Algo pra disfarçar o fato de todos serem mini-quadradinhos haha. Isso se dá com o clareamento gradual da cor que mais se assemelha ao contorno e ao sprite, muitas vezes cinza, marrom ou até mesmo azul...todos em seus tons mais próximos do preto. •Efeitos de Arredondamento Ao desenhar um círculo branco percebemos que existem muitos pontos brancos perto dos pixels pretos do contorno, isso faz com que o Sprite fique "quadrado" literalmente! haha. A correção desse efeito é fazer um pequeno degradê. •E que parta do preto do contorno até a cor do fundo. Como no nosso caso estamos utilizando a cor branca... Nada melhor do que fazer um degradê do preto para o branco usando a cor CINZA. •Efeitos de Ponta-afiada Para fazer ponta não precisamos desenhá-la no formato mas caso preferirem assim; fiz essa imagem, bem ilustrativa ao meu ver da influencia do AA no Efeito de ponta dos Sprites •Efeitos do AA na Pintura O Anti Aliasing é muito usado (e bem usado) na Alemanha e na Suécia para dar mais vida aos Sprites, evidenciando e enfatizando as cores vibrantes do interior ao invés de deixá-las soltas a mercê somente do contorno. A algum tempo fiz uma espada a qual dei o nome de Arectaris Fiz uma segunda versão dessa Sword utilizando duas técnicas de AA: •A Primeira: no cabo, utilizando um marrom bem escuro para escurecer e um marrom-acinzentado mais claro para manter a cor escura. •A Segunda: na lâmina, utilizando cores bem escuras na ponta, contrastando com a claridade dos últimos pixels e gradualmente escurecendo os pixels para formar uma ponta. Observem atentamente a Ponta dos Sprites: •OBS: Façam espadas com a largura da Arectaris no começo porque é muito complicado fazer AA de lâmina em espadas maiores a melhor que consegui acho que foi essa, preciso treinar e estudar mais isso haha •LISTA DE CORES Vou postar aqui uma série de Orbs de Pintura que estou fazendo, caso algum de vocês não tenha acesso ao Fireworks. •Artigo 5: Efeitos particulares •Jóias de enfeite Fazer jóias são realmente algo bem fácil! Na teoria, tudo que precisamos fazer é desenhar um Orb! Ou seja, uma pedra à esfera, que tenha um ponto luminoso vindo do Noroeste e que possua um ponto de claridade mediana a Sudeste, indicando que a luz passou por Refração e todos os pontos ao redor destes dois pontos de Luz são mais escuros •Refração da Luz •No exemplo Créditos - Redstrike •Cavidades A idéia de cavidades é fácil de ser entendida, vou me aproveitar novamente da Arectaris: Como todos podem ver, desenhei um ruby dentro de uma cavidade na guarda da Arectaris, essa mistura de pixels só foi capaz de passar a idéia de cavidade porque, como dito antes, a luz se propaga ao longo de todo o sprite, vindo do Noroeste. Quando chega à cavidade, a luz não consegue penetrar no buraco e chega até a borda dele ( a sudeste ) que por sua vez reflete a luz de volta à pedra, porém em menos quantidade. Por isso usei cores escuras para simbolizar as bordas internas da cavidade, e as claras, as borda externas: •Resumindo: •1 - A Luz vem do noroeste, atingindo a borda externa com grande intensidade •2 - A luz passa pela cavidade atingindo a segunda borda externa mais com menos intensidade •3 - A luz que ilumina a segunda borda externa é refletida por ela chegando a menor parte ao ruby encontrado na cavidade. Sigam o esquema •Rachaduras Rachaduras podem ser uma coisa bem complicada no começo, mas com o tempo se pega a prática e a coisa fica mais simples. Na verdade em teoria é mesmo muito simples... Basta você: Regra um: Escolher de onde e como será a rachadura Regra dois: Desenhar um risco PRETO na região da rachadura Regra três: De acordo com o fundo, escolher um tom bem claro e iluminar a porção Sudeste da rachadura e um tom bem escuro para iluminar a porção Noroeste <--- mesmo efeito que vimos em Cavidades Passo a passo temos: Créditos: CrazyMapper,Galiant e brenomadlan. Espero que tenham gostado, se gostaram Deem REP + e comentem...1 ponto -
Adeus Éks
manolomano reagiu a DinoAdmin por um tópico no fórum
Deixa a mãe de todo mundo fora disso. Alertado. eu nao falei Mãe. e sim M@e... voce entendeu errado ok? a não ser que voce nao entenda o portugues e escreva "MÃE" Assim >m@e< -.- Reportado por alertar errado. (O USUÁRIO FOI BANIDO POR ESTA POSTAGEM)0 pontos -
Adeus Éks
Gabriel Couto reagiu a DinoAdmin por um tópico no fórum
Tnc de voces... eu vo arrumar emprego com essa cara do mesmo geito que eu peguei a m@e de voces... só mostrar minha pic@ e tudo resolvido. bando de filhos da put@-1 pontos -
Ajude-me pf alguem
Piabeta Kun reagiu a gabriloko123456 por uma questão
hum tabom , pessoal pf alguem ajdua agente ?-1 pontos