Líderes
-
-
Fir3element
HéroiPontos1305Total de itens -
-
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 05/13/15 em todas áreas
-
Tutorial Mod OtClient
2 pontosOlá, amigos esta muito tempo parado e sem tempo para meche no meu otserv por isso esto liberando um sistema meu de tutorial client. Oque ele faz, ele abre uma janela com menus e seus texto para ajudar os player a ter uma boa jogabilidade ao o game. -versão:todas Opcodes: Nao precisa de opcodes, roda em qual quer versão otclient. 1- abra a pasta do otclient>mods>game_tutorial.zip 2- abra a pasta do otclient>mods>game_tutorial>configs.lua 2.1 em configs.lua voce vai configura todo os text que a no seu tutorial. 3- Menu texto tutorialsIndex = { "1. Exp", "2. Exp", "3. Exp" } 4- oque a no menu texto }, {name = "1.2 Exp", text = [[EXP: - EXP - HEXP - EXP - EXP Tibia King:100 ]] }, {name = "1.3 Exp", text = [[EXP: - EXP - HEXP - EXP - EXP Tibia King:100 ]] } } Se gosto mais rep.2 pontos
-
Launcher AutoUpdate C#
Launcher AutoUpdate C#
premii reagiu a GabrielSapient por uma resposta no tópico
1 pontoGalera sempre procurei um Launcher AutoUpdate para meu servidor, depois de muita pesquisa e pouco conhecimento consegui fazer um em C#, está ai: 1. Download: • Download | • Scan 2. Oque ele faz: • Verifica a existência da versão local na pasta do cliente; • Se a versão do arquivo não existir, ele assume que a versão é "1.0" e cria um arquivo de versão; • Verifica arquivo .xml no servidor de atualização; • Baixar atualizações para todas as versões maiores do que a versão atual do cliente (atualiza tudo em apenas formato de arquivo .zip); • Extrai os arquivos .zip; • Exclui os arquivos .zip após a extração; • Arquiva a versão atualizada na pasta do cliente; • E, finalmente, desbloqueia o botão "Start Game". 3. Como editar: • Abra o arquivo .sln na pasta "VS Project" com o Visual Studio: Procure por: string Server = "http://127.0.0.1/Updates/"; • Altere o http://127.0.0.1/Updates/ para qualquer URL que você estará hospedando suas atualizações. • Agora vamos procurar por: Process.Start("OTClient PkR DX9.exe", "\\Pokémon Rusty"); • Modifique o OTClient PkR DX9.exe pelo nome do .exe do seu Client. • \\Pokémon Rusty e a pasta que está seu .exe e vai ficar seu Launcher. (troque sem tirar os "\\") • No Visual Studio, selecione o controle WebBrowser(Neste caso, o nome "patchNotes") e alterar a url do "http://127.0.0.1/"para o caminho do arquivo index.html, na pasta do host: OBS: Isto á opcional, é apenas um template em .html. Você pode remove-lo e editar da maneira deseja. • Agora apenas jogue o .exe, .dll e o arquivo version da pasta "Launcher\VS Project\Launcher v2\bin\Debug ou Release" para a pasta de seu Client: Pronto! Agora e com o Site. • No host do site, apos colarmos a pasta Updates, editamos o arquivo Updates.xml, para cada atualização adicionamos um <update> fechamos com </update> como no exemplo do arquivo. Colocamos o arquivo atualização em .zip nessa mesma pasta, editando a versão e o nome no arquivo: • No arquivo version.txt colocamos a versão da nova atualização: • Uma dica para o .zip de atualização é colocar em pastas o caminho no client desejado a fazer update. Exemplo: data/things/854 nesta pasta colocaremos os arquivos que será substituído, no exemplo foi Tibia.spr e .dat. Depois compactamos e deixamos na pasta Updates, sem esquecer de colocar o nome no arquivo Updates.xml. 4. Dica • Pronto! Agora e só criar um instalador com o launcher, com atalho na área de trabalho (o launcher é o .exe que você colocou no client). Você pode modificar o launcher do jeito que quiser, o arquivo index.html e etc. Quando abrir o arquivo ele irá atualizar, liberar o botão "Start Game", e quando você clicar vai fechar o Launcher e abrir o Client. 5. Créditos Eu - Pelo launcher e pelo tutorial.1 ponto -
[0.3.6pl1] Atacar e usar runa ao mesmo tempo & usar runa enquanto corre
[0.3.6pl1] Atacar e usar runa ao mesmo tempo & usar runa enquanto corre
bim reagiu a Fir3element por uma resposta no tópico
1 ponto1. Atacar com a arma e usar runa ao mesmo tempo. Em player.cpp, procure por: else if((!weapon->hasExhaustion() || !hasCondition(CONDITION_EXHAUST, EXHAUST_COMBAT)) && weapon->useWeapon(this, tool, attackedCreature)) Troque por: else if(!weapon->hasExhaustion() && weapon->useWeapon(this, tool, attackedCreature)) 2. Usar runa enquanto corre. Em player.cpp, remova essa linha: setNextAction(OTSYS_TIME() + getStepDuration(dir)); Créditos: Xellath1 ponto -
Advanced Sound
Advanced Sound
leonardoviana reagiu a vyctor17 por uma resposta no tópico
1 pontoEai galera, pra quem conhece meu tópico de showoff já sabe oque eu estou postando . mas pra quem não conhece oque é o Advanced Sound segue o ctrl+v. é um MOD para o OTC, que permite ao OTC reproduzir diversas tipos de mídia como (.MP3, .WAV, .OGG, .MOD, .IT, .S3D, .XM). Além disso esse MOD conta com uma biblioteca de áudio 3D, e a melhor parte é que não necessita de alteração na source por parte do OTC,só no serverside se o desenvolvedor quiser ativar alguns recursos como áudio nas falas das criaturas. a parte do áudio nas criaturas não esta inclusa no download. e também não conta com áudio 3d configurado em script mais as funções estão na biblioteca se quiser é só fazer . Algumas aplicações por exemplo em servidores de pokemon ao jogar a pokebola mandar um som para o client ao capturar outro som ou falhar na captura, assim como som de batalhas, som ambiente, o limite é sua imaginação! Lista de funções pauseAll isPlaying isFinished getSoundPlayLen getSoundPlayPosition setSndPlayPos setSoundMinDistance setListenerPosition setSound3DPosition setVolume getVolume setPaused isPaused playMusic deleteSnd setReverbEnabled setEchoEnabled setDistortionEnabled Exemplo de uso em lua servidor: local colors = { TEXTCOLOR_BLUE, TEXTCOLOR_LIGHTBLUE, TEXTCOLOR_LIGHTGREEN, TEXTCOLOR_TEAL, TEXTCOLOR_PURPLE, TEXTCOLOR_PLATINUMBLUE, TEXTCOLOR_LIGHTGREY, TEXTCOLOR_DARKRED, TEXTCOLOR_RED, TEXTCOLOR_ORANGE, TEXTCOLOR_YELLOW, TEXTCOLOR_WHITE_EXP } function onSay(cid, words, param) local playerpos = getPlayerPosition(cid) local random = math.random(1, #colors) if math.max(math.abs(playerpos.x-23), math.abs(playerpos.y-30)) < 9999 then doSendAnimatedText(playerpos, "GoGoGo!", colors[random]) sendScreanSound(cid, "com_go.wav") end return true end Criaturas Falantes C++ ServerSide: Em game.cpp, procure por: bool Game::internalCreatureSay(Creature* creature, SpeakClasses type, const std::string& text, bool ghostMode, SpectatorVec* spectators/* = NULL*/, Position* pos/* = NULL*/) E abaixo de: if(!ghostMode || tmpPlayer->canSeeCreature(creature)) tmpPlayer->sendCreatureSay(creature, type, text, &destPos); Adicione: if(type == SPEAK_MONSTER_YELL or type == SPEAK_MONSTER_SAY){ tmpPlayer->sendExtendedOpcode(85, text + ".mp3|false"); } Dai é só adicionar os som a pasta e colocar o nome dele igual a fala nesse metodo só ta pra rodar mp3, tem jeito melhor de fazer isso adicionando um nova tag no .xml do monstro mais acabei ficando com preguiça e fiz assim kk' Download não autorizo o re-post em qualquer outro fórum sem minha autorização. vyctor17 - Waki-V LTDA ©1 ponto -
Sprites Digicerb
Sprites Digicerb
Sexyboyy reagiu a Thiago Rulexz por uma resposta no tópico
1 pontoBom a pedidos vim postar a sprite do digicerb... "mais a spr e dat dele já é publica mimimi" Somente até a versão 1.1 (Estou trazendo a Versão Oficial, que diga-se de passagem tirei do cliente dele hoje) Não faço ideia de que versão está o servidor dele... mais me pedirão as spr e dat... Vamos Lá xD (*OBS: Não funciona Object Builder, pelo menos aqui só funcionou no Dat Editor) Download SCAN Creditos Insaed Digiwo kbpaulo Digicerb Imagem1 ponto -
Nolis Show Off
1 ponto1 ponto
- Npc Auction Versão 1.0 [Atualizado]
Npc Auction Versão 1.0 [Atualizado]
FeehLoveCes reagiu a Vodkart por uma resposta no tópico
1 pontoVersões: Foi feito para servidores que não tem o market system, mas funciona desde o 8.54 até 9.6+ Suporta: servidores Sqlite e MySql Sobre: O Npc basicamente funciona da seguinte maneira, você "deposita" alguns items neste npc e durante "X" dias ele vende para você, claro que o npc irá cobrar "Y" preço pelo serviço... Para mais informações acessem o link que explica com imagens: http://tibiaking.com...mo-auction-npc/ Basta fazer o download, executar a query que é pedida e depois disso colocar os arquivos em seus respectivas pastas. ##ATUALIZADO Versão 1.0## - Agora a Lib foi ajustada e bugs removidos - Itens de type "others" e "ammunition" arrumados - O Npc agora devolve seus itens quando quiser - Os itens vão para o depot quando não vende o item - Nova aba de "all" que mostra todos os itens em uma janela, independente da seleção do tipo de item; obs: Antes de instalar a lib leia o arquivo txt, porque tem 2 tipos de lib, um é usado 'db.executeQuery' e o outro 'db,query'(fiz isso para o pessoal que não sabe alterar as funções) Npc Auction 1.0.rar1 ponto- [C++] Cor das mensagens nos channels
Bom, postarei como colocar para gm, adm, cm falar em red nos channels e tutores e senior tutores em orange. testado em: tfs 0.3.6 |854| pl Em chat.cpp procure por: bool ChatChannel::talk(Player* player, SpeakClasses type, const std::string& text, uint32_t _time/* = 0 e vai ter uma linha assim: if(it == m_users.end()) return false; de 2 quebra de linhas e adicione em baixo: SpeakClasses ntype = type; uint16_t channelId = getId(); if (channelId == 5) { if (player->getGroupId() == 6) { ntype = SPEAK_CHANNEL_RN; } else if (player->getGroupId() == 5) { ntype = SPEAK_CHANNEL_RN; } else if (player->getGroupId() == 4) { ntype = SPEAK_CHANNEL_RN; } else if(player->getGroupId() >= 2) { ntype = SPEAK_CHANNEL_O; } } Agora, um pouco em baixo disso que você adicionou, tem essa função: it->second->sendToChannel(player, type, text, m_id, _time); troque por essa: it->second->sendToChannel(player, ntype, text, m_id, _time); ou, é só adiciona um "n", no type da primeira linha rs Como Editar os Groups ? (player->getGroupId() == 5) "5" -> Grupo do player, no caso aqui seria CM1 ponto- [Exclusivo]Baiak ZIK VIP 15 Editado DeathRocks
[Exclusivo]Baiak ZIK VIP 15 Editado DeathRocks
brendonbh reagiu a DeathRocks por uma resposta no tópico
1 pontoEba Eba Galerinha do TK Eu Aqui do Novo para Trazer o Baiak ZIK VIP 15 que muitos me pediram para fazer Espero que Gostem da Edição |- Mudanças Ocorrida | Melhorado Mapa e Adicionado Varias Áreas | Novos Itens | Novas Questes | Novos Bichos | Adicionado VIP 15 | Retirado Bugs no Mapa... | Retirado Varios Bugs no Distro | Novo Visual do Templo | Critical System | Dodge System | Reset System,para resetar fale !reset | Guild Frags System | PvP Balanceado Agora todas vocações estão no balanço | Armas Arrumadas Para Melhor PvP | Varios Eventos | Invasões no Templo de Boss Automatico | Battle Field Event | City War | Adicionado CASTLE 24HORAS (COM CASTELO) e AVISOS DE INVASORES | Itens DONATES | Área DONATE ~~ (Só Entra Quem Usar o Itens de Premium Days) | Vários Novos Script | Fast Atk Arrumado | Frags no Look | Npc Hero Seller (Vende Itens Exclusivos para quem tiver honor points) Obs:Consegue no GFS) | Entre Muitas Outras Coisas | Confira ! | Senha do ADM: god/god | Aqui tem Algumas Imagens ! Templo Parte Direita Templo Parte Centro Treiners Abaixo do Templo Novo Visual Npc Hero Vendendo Itens Heros Castle WAR 24 Horas | Download | Scan | Créditos | Gostou ? De um GOSTEI e tamos quites1 ponto- [NPC] Papai Noel - Que dá presente
Bom galera, sei que o natal acabou de passar, porém esqueci de postar esse system antes... Fiz uma versão 2.0 do meu npc de natal (papai noel). Agora ao invés do bom velhinho entregar diretamente o item, vc recebe uma caixa que ao clicar vc recebe um item 100% aleatorio (dentre os itens que foram programados dentro do script). Funciona assim: o player vai até o papai noel e fala: hi, aí o papai noel fala ho-ho-ho... aí o player responde sim (ou yes) e então o player recebe uma caixa. Ao clicar na caixa, o player recebe um dos itens, que estiverem programados no script, de forma aleatoria. Então vamo lá. Pra adicionar esse system, primeiro vá na pasta data/npc e crie um arquivo chamado Papai Noel.xml e coloque isso dentro: <?xml version="1.0" encoding="UTF-8"?> <npc name="Papai Noel" script="data/npc/scripts/papai_noel.lua" walkinterval="1500" speed="100" walkradius="2" floorchange="0"> <health max="100" now="100"/> <look type="160" head="0" body="113" legs="94" feet="132" addons="0" mount="0"/> <parameters> <!--MESSAGES--> <parameter key="message_greet" value="HO-HO-HO, |PLAYERNAME| bem-vindo. Voce gostaria de um presente?"/> <parameter key="message_farewell" value="HO-HO-HO, tenha um feliz natal, |PLAYERNAME|."/> </parameters> </npc> Agora vá na pasta data/npc/scripts e crie um arquivo chamado papai_noel.lua e coloque isso dentro: Agora vá na pasta data/actions e adicione essa tag dentro do arquivo actions.xml: <action itemid="11401" event="script" value="giftbox.lua"/> Agora va na pasta data/actions/scripts e crie um arquivo chamado giftbox.lua e coloque isso dentro: local items = { [1]=2160, --ID do item 1 [2]=2157, --ID do item 2 [3]=2121} --ID do item 3 local stor = (11401+os.date("%Y")) --Nao mexa function onUse(cid) if getPlayerStorageValue(cid, stor) ~= 1 then a = math.random(1, #items) doPlayerAddItem(cid, items[a], 1) setPlayerStorageValue(cid, stor, 1) else doPlayerSendCancel(cid, "Voce ja pegou seu presente.") end doPlayerRemoveItem(cid, 11401, 1) return true end E isso é tudo pessoal!1 ponto- Distros Compilados [TFS 1.0 e 1.2]-[10.78] x86 - x64 + DLLs
Estarei postando Downloads das Distros [TFS 1.0 e 1.2]-[10.78] x86 e x64, para aqueles que estão tendo problemas na hora de compilar. Bom vamos lá : 1º- TFS 1.2 - 10.78 x86 ------------------- DOWNLOAD - SCANN - Novos OutFits & Mounts 2º- TFS 1.2 - 10.78 x64 ------------------- DOWNLOAD - SCANN - Novos OutFits & Mounts 3º- TFS 1.2 - 10.78 x64 Ubuntu 14.04 - DOWNLOAD - SCANN - Novos OutFits & Mounts 4º- TFS 1.0 - 10.78 x86 ------------------- DOWNLOAD - SCANN - V13 5º- TFS 1.0 - 10.78 x64 ------------------- DOWNLOAD - SCANN - V13 6º- TFS 1.0 - 10.78 x64 Ubuntu 14.04 - DOWNLOAD - SCANN - V13 Sources : Source TFS 1.0 - V13 Source TFS 1.2 - 10.78 Novos Outfits & Mounts Créditos : Bruno Minervino Mitsuig Tiroleivi Fireelement1 ponto- Resetando Seu Server Sem Deletar Players ou Items
olá galera do tibiaking esse é meu primeiro topico então desculpem erros de português bom vamos lá essa função é para server em sqlite que querem resetar sem deletar players ou items. bom primeiro vou falar que essa função pode ser editada por você mais darei algumas opções vejá abaixo algumas funções como editar mais tags siga abaixo \/ é isso espero que tenha ajudado alguma dúvida comente para resolver-mos juntos obs¹: para executar as funções na sqlite procure na parte superior open SQL query editor coloque as funções nele e aperte f91 ponto- [TUTORIAL] Como Adicionar Novos Tipos De Pokemons. "Fairy"
1 ponto- [8.6] Lumast Map V1.0.0 70% Proprio (Xp Alta)
Fala galera do Tibia King, tudo na paz ? Venho aqui apresentar meu novo trabalho. Um mapa 70% próprio. Eu estava sem nada para fazer, entao resolvi criar um mapa de bobeira, e depois de um tempim fazeno ele, comecei a gostar dele e o aprimorei. Bom, então vamos deixar de papo e vamos conhecer o mapa. Informações sobre o Map: Existem 2 cidades no Servidor. 1 city free e uma vip. 9 Hunt's Free e 5 VIP's 2 Novas Vocation's 2 Quest's. Apenas para as vocations (1 quest free e a outra vip) Fast Atk adicionado no servidor Sistema de Compra de Iten vip por baú. (Voce tendo os VIP Coins, apenas de use no Bau e voce recebe o item) Compra de Points VIP por comando (!coin) Comandos novos para VIP's (Ex.: !b \ fala para todos os players online com a sigla [VIP] antes do nome) As 2 novas vocations para adquiri-las precisa ser feito quest (First Promotion: level 300k+ = Free \ Second Promotion: level 650k+ = VIP) Bom, vamos deichar de lado o nosso papo e vamos ver as SS. Temple: Temple VIP: Amostra VIP: Comprando item vip pelo bau: Comprando item vip de 1 mes: Link de Download da Pasta: http://www.4shared.com/rar/5IGA4_CP/86_Lumast_Server_V100_3.html? Scan: https://www.virustotal.com/file/16bea002afe102c8154cf9441d9b9d04a877caa5df495d580865f1e7f65d0ad1/analysis/1336047521/ Link de Download do Distro e Dlls: http://www.4shared.com/rar/jNIieRyC/Distro_e_Dlls.html? Scan: https://www.virustotal.com/file/1a92bd4907edf59c62518eae1fe6973edbf6fbf414bbd5a8502cdc71d8145b41/analysis/1336049191/ Senha do GOD: god/god Gostou do Map ? Da um REP+ ai nao custa nada Créditos: 90% Meu 5% Doidin (Pelo Distro e Dlls) 5% de alguns membros do ****** pelos Scripts (Caso voces achem que eu copiei o topico de outro forum, nao é verdade, eu que criei o map, e postei em mais de 1 forum)1 ponto- [Projeto] New Styller
[Projeto] New Styller
Kiriharae reagiu a luanluciano93 por uma resposta no tópico
1 pontoOlá pessoal, hoje venho apresentar meu projeto particular. Sou muito fã do mapa styller, sempre em horas vagas procurava joga-lo, para quem não conhece: é um servidor estilo baiakm só que mais difícil e com mais RPG, e como tenho me interessado por versões mais atuais, resolvi criar um styller (new styller) seguindo as ultimas atualizações do TFS, seria algo parecido com o projeto do Kaique e do Jamison, aqui no fórum, o KNJ. Irei postando de pouco em pouco as atualizações, definindo o que foi feito e o que ainda pretendo fazer ... # Informações do Servidor → Versão: 10.77 (seguindo as atualizações do TFS 1.2). → Exp: 500x (Inicial - veja aqui). → Skills 50 → Magic 30 → Loot: 4 # Sistemas do Servidor → Cast System (100%) → Vip System (100% - liberado) → Reward Level System (100% - liberado) → Addons System (100%) → Mounts System (100%) → War System (100%) → Market System (100%) → Training OFF (100%) → Clean Database (100%) → Client Próprio - Opcional (100%) → Arena PVP. (100%) → Marriage System (pendente) → Quest Log (pendente) → Forja System (pendente) → Refinamento System (pendente) → Achievements System (pendente) → Cassino System (pendente) → Task System (pendente) # Eventos do Servidor → Zombi Evento. (100%) → War Anti-Entrosa (100%) → CastleWar. (100%) → BattleField Evento. (100%) → Capture The Flag. (100%) → Gran Tower. (100%) → Hour Kill. (100%) → War of Emperium. (100%) → Dota. (100%) → Coliseum. (100%) → Survival Evento. (100%) # Quests → Em breve. # Website → Em construção. (http://www.styller.org/) # Equipe → [member=luanluciano93] (administrador/scripter/webmaster) # Imagens # Pesquisa / Enquetes → Comose prevenir de disputas no Pagseguro? # Comentários de membros Curta nossa página no facebook. É isso pessoal, espero que gostem, abraços!1 ponto- adicionando uma storagemzinha
1 pontoAndei olhando o script do npc, e achei uma função que nem precisa usar a storage. local pos = {x=1050, y=1050, z=7} function onUse(player) if getPlayerClanName(player) == 'Seavell' and getPlayerClanRank(player) == 5 then -- só rank 5 ou seja terminado todas as tasks doPlayerSendTextMessage(player,"SUA MENSAGEM.") doTeleportThing(player, pos) else doPlayerSendCancel(player,"Necessario ser rank 5 ou mais do clan seavell.") end return true end1 ponto- adicionando uma storagemzinha
1 pontoVinicius recomendo ler um pouco sobre lógica de programação pois é um "end" a cada "if", e como tu usou if, elseif faria o seguinte no script : local pos = {x=1050, y=1050, z=7} -- Dica deixe a váriavel fora do callback sempre que possível. function onUse(cid) if getPlayerStorageValue(cid, 19999) >= 1 then -- se o player tiver a storage então ele vai executar o que ta dentro do if ou seja NADA --- vazio ... elseif getPlayerClanName(cid) ~= 'Seavell' then -- Mas se ele não tiver a storage ai ele vai verificar esse elseif ou seja se qual player que NÃO TENHA O CLÂ SEAVELL, vai executar o que ta dentro -- ISSO doPlayerSendTextMessage(cid,"SUA MENSAGEM.") doTeleportThing(cid, pos) else -- Caso não entre em nenhum acima, vai executar isso -- TUTS TUTS doPlayerSendCancel(cid,"Necessario concluir a task e ser do clan seavell.") end --end --end return true end -- E NÃO ESQUEÇA DO MAIS IMPORTANTE SEMPRE IDENTAR SEU CODE1 ponto- [Showoff] New City
[Showoff] New City
runeraserver reagiu a Heyron por uma resposta no tópico
1 pontoSobre as montanhas ali.. Eu aconselho você apagar algumas bordas em certos pontos dela. Ao meu ver, essa técnica melhora bastante o visual delas, e deixa as montanha menos quadrada. Um exemplo que eu fiz rapidinho:1 ponto- (Resolvido)[AJUDA] Script
1 pontotente assim: function onKill(cid, target) local targetMonster = Monster(target) if not targetMonster then return true end if getCreatureName(cid) ~= 'drillworm' then return true end local player = Player(cid) if player:getStorageValue(Storage.spikeTask.Killing) > 0 and player:getStorageValue(Storage.spikeTask.Killing) < 8 then player:setStorageValue(Storage.spikeTask.Killing, player:getStorageValue(Storage.spikeTask.Killing) + 1) end return true end1 ponto- adicionando uma storagemzinha
1 pontoNpc do segundo spoiler com a storage: agora em data/actions abra actions.xml <action actionid="6283" event="script" value="doorstorage.lua"/> agora crie o arquivo com o nome doorstorage.lua em data/actions/scripts e nele coloque: function onUse(cid) pos = {x=1050, y=1050, z=7} if getPlayerStorageValue(cid, 19999) >= 1 elseif getPlayerClanName(cid) ~= 'Seavell' then doPlayerSendTextMessage(cid,"SUA MENSAGEM.") doTeleportThing(cid, pos) else doPlayerSendCancel(cid,"Necessario concluir a task e ser do clan seavell.") end end return true end Lembrando que somente quem é do clan Seavell pode passar (que nem você pediu ) e também é necessário concluir a task do npc. Não esqueça de colocar a actionid 6283 na porta.1 ponto- [Showoff] New City
[Showoff] New City
PsyMcKenzie reagiu a runeraserver por uma resposta no tópico
1 pontoObrigado galera.. Alien Projects, segue o site abaixo: http://goldenera.net.br/ o site está um pouco lento pra abrir pois está hospedado na uol host (porcaria de servidor) em breve estarei migrando para o datacenter. Mais uma.. dicas sempre são bem vindas1 ponto- (Resolvido)Erro ao usar item (PC)
Tenta assim: function onJoinChannel(cid, channelId, users, isTv) if channelId == 10 then doShowPokemonStatistics(cid) return false end if channelId == 11 then doPlayerPopupFYI(cid, getHighscoreString(8)) return false end if channelId == 12 then doPlayerPopupFYI(cid, getHighscoreString(6)) return false end --////////////////////////////////////////////////////////////////////////////////////////-- if channelId >= 13 and channelId <= 18 then doSendAnimatedText(getThingPos(cid), (channelId-12).." Poke"..(channelId > 13 and "s" or ""), COLOR_BURN) setPlayerStorageValue(cid, 52481, (channelId-12)) if isInParty(cid) then local party = getPartyMembers(cid) if #party >= 2 then for i = 1, #party do if getPlayerStorageValue(party[i], 52481) <= -1 then --alterado v2.6 duel system setPlayerStorageValue(party[i], 52481, (channelId-12)) end end end elseif not isInParty(cid) then for _, sid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(sid, 52482) == getCreatureName(cid) then if getPlayerStorageValue(sid, 52481) == -1 then setPlayerStorageValue(sid, 52481, (channelId-12)) end end end end addEvent(doSendAnimatedText, 1000, getThingPos(cid), "BATTLE", COLOR_ELECTRIC) doPlayerSetVocation(cid, 1) return false end --////////////////////////////////////////////////////////////////////////////////////////-- if channelId >= 100 and channelId <= 10000 then local owner = getPlayerByGUID(getChannelOwner(channelId)) if isChannelTv(channelId) then if isCreature(owner) then if owner ~= cid then doPlayerWatchOther(cid, owner) local plural = #users == 1 and "" or "s" doPlayerSendChannelMessage(owner, "TV Channel", getCreatureName(cid)..' is now watching your channel (currently '..#users..' player'..plural..' watching this channel).', 15, channelId) else setPlayerStorageValue(cid, 99284, 1) end end elseif owner == cid then setPlayerStorageValue(cid, 99284, 2) end return true end return true end function onLeaveChannel(cid, channelId, users) if channelId >= 100 and channelId <= 10000 then local owner = getPlayerByGUID(getChannelOwner(channelId)) if isChannelTv(channelId) then if owner ~= cid and getCreatureOutfit(cid).lookType == 814 then doPlayerStopWatching(cid) local plural = #users == 2 and "" or "s" doPlayerSendChannelMessage(owner, "TV Channel", getCreatureName(cid)..' is not watching your channel anymore (currently '..#users - (1)..' player'..plural..' watching this channel).', 15, channelId) elseif owner == cid then setPlayerStorageValue(cid, 99284, -1) doSendAnimatedText(getThingPos(cid), "CAM OFF", 180) for stops = 1, #users do if users[stops] ~= owner then doPlayerStopWatching(users[stops]) end end end elseif owner == cid then setPlayerStorageValue(cid, 99284, -1) end return true end return true end function onMove(cid, fromPosition, toPosition) -- Código não é mais necessário, feito em c++ -- Code deprecated, made in c++ --if not canWalkOnPos(toPosition, false, false, false, true, false) and getPlayerStorageValue(cid, 17000) >= 1 then -- doTeleportThing(cid, fromPosition, false) -- doPlayerSendCancel(cid, "Sorry, not possible.") --end if getPlayerStorageValue(cid, 99284) <= 0 then return true end local speed = getCreatureSpeed(cid) local a = getWatchingPlayersFromPos(cid, fromPosition) for b = 1, #a do if getCreatureSpeed(a[b]) ~= speed then doChangeSpeed(a[b], - getCreatureSpeed(a[b])) doChangeSpeed(a[b], speed) end doTeleportThing(a[b], toPosition, true) end return true end local permited = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "x", "w", ",", "'", '"', "y", "z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", ".", "!", "@", "#", "$", "%", "&", "*", "(", ")", "-", "_", "+", "/", ";", ":", "?", "^", "~", "{", "[", "}", "]", ">", "<", "£", "¢", "¬"} function onTextEdit(cid, item, newText) if item.itemid == 12330 then if getPlayerStorageValue(cid, 99284) >= 1 then doPlayerSendCancel(cid, "You are already on air!") return false end local channelName = getCreatureName(cid).."'s TV Channel" if string.len(newText) <= 0 then doPlayerSendCancel(cid, "Your channel is going to be shown as \""..getCreatureName(cid).."'s TV Channel\".") elseif string.len(newText) > 25 then doPlayerSendCancel(cid, "Your channel name can't have more than 25 characters.") return false else channelName = newText end setPlayerStorageValue(cid, 99284, 1) setPlayerStorageValue(cid, 99285, "") setPlayerStorageValue(cid, 99285, channelName) doPlayerCreatePrivateChannel(cid, channelName) doSendAnimatedText(getThingPos(cid), "ON AIR!", COLOR_GRASS) return false end return true end1 ponto- [v32] GlobalFull 11/12 - New Asuras, Falcons, Warzones 4,5,6 . (Updates Frequentes)
[v32] GlobalFull 11/12 - New Asuras, Falcons, Warzones 4,5,6 . (Updates Frequentes)
Julionik11 reagiu a ricardomsn por uma resposta no tópico
1 pontoEu baixei o servidor, está tudo muito bonito e tudo certo, reputado! Porem, aqui não tem os monstros a lions rock, se puder postar os lions aqui pra eu baixar eu ficaria grato! Vlw1 ponto- (Resolvido)Pedido Tile limit's script
(Resolvido)Pedido Tile limit's script
Gustavo12345 reagiu a Fir3element por uma resposta no tópico
1 pontoconfig.lua, coloca o limite aqui: tileLimit = 0 movements/scripts/closingdoor.lua, substitua o seu por esse: function onStepOut(cid, item, position, fromPosition) if(getTileInfo(position).creatures > 0) then return true end local newPosition = {x = position.x, y = position.y, z = position.z} if(isInArray(verticalOpenDoors, item.itemid)) then newPosition.x = newPosition.x + 1 else newPosition.y = newPosition.y + 1 end doRelocate(position, newPosition) local tmpPos = position tmpPos.stackpos = -1 local i, tmpItem, tileCount = 1, {uid = 1}, getTileThingByPos(tmpPos) while(tmpItem.uid ~= 0 and i < tileCount) do tmpPos.stackpos = i tmpItem = getTileThingByPos(tmpPos) if(tmpItem.uid ~= item.uid and tmpItem.uid ~= 0 and not isMoveable(tmpItem.uid)) then doRemoveItem(tmpItem.uid) else i = i + 1 end end doTransformItem(item.uid, item.itemid - 1) return true end1 ponto- (Resolvido)Paralyze
(Resolvido)Paralyze
ScythePhantom reagiu a Tibia2015br por uma resposta no tópico
1 pontolocal combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED) local condition = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition, CONDITION_PARAM_TICKS, 20000) setConditionFormula(condition, -0.9, 0, -0.9, 0) setCombatCondition(combat, condition) function onCastSpell(cid, var) return doCombat(cid, combat, var) end1 ponto- [Showoff] New City
[Showoff] New City
Heyron reagiu a runeraserver por uma resposta no tópico
1 ponto30% @Reds, obrigado pela dica!! @RetornoDeLaug, valeuu!! @Ceos, valeu pelas dicas!!1 ponto- (Resolvido)[ARENA] BUG MOVEMENT
1 pontoNa linha 18 ta assim: local monster_uid = getGlobalStorageValue(arena_room+100) Adicione isso abaixo ficando assim: local monster_uid = getGlobalStorageValue(arena_room+100) monster_uid = tonumber(monster_uid) Me avisa se funcionou zzz1 ponto- [PROJETO] Digitamers
1 pontoBoa sorte com o projeto, e que você encontre aqui o que precisa...1 ponto- Como fazer para paladin poder healar no exura san em quanto ataca?
Como fazer para paladin poder healar no exura san em quanto ataca?
Fir3element reagiu a Heyron por uma resposta no tópico
1 pontoTalvez esse tópico pode lhe ser útil. Procure utilizar a barra de pesquisa quando você ter problemas com coisas simples desse tipo.1 ponto- [Pedido]Sistema de Loteria
[Pedido]Sistema de Loteria
CarlosHenrique7457 reagiu a zipter98 por uma resposta no tópico
1 pontoNão conheço as funções do banco. Se esta não funcionou, então não sei. Sobre o nome não aparecer, alterei o da primeira página e esqueci desta. Corrigido. Já quando o comando é usado sem dinheiro, erros no console?1 ponto- [Pedido]Sistema de Loteria
[Pedido]Sistema de Loteria
CarlosHenrique7457 reagiu a zipter98 por uma resposta no tópico
1 pontoCorrigido.1 ponto- [10.90] Vanaheim Global Opensource - TFS 1.2
[10.90] Vanaheim Global Opensource - TFS 1.2
JonatasLucasf reagiu a tiroleivi por uma resposta no tópico
1 pontoPor nada, precisando to ai1 ponto- [Pedido]Sistema de Loteria
[Pedido]Sistema de Loteria
CarlosHenrique7457 reagiu a zipter98 por uma resposta no tópico
1 pontoOps, como testei a loteria com apenas um vencedor, não presenciei este erro. Enfim, corrigido. Sobre as outras alterações, as farei e editarei os códigos. EDIT: Pronto, códigos alterados. Não se esqueça de adicionar a nova função.1 ponto- (Resolvido)ip do servidor
(Resolvido)ip do servidor
augustods reagiu a Fir3element por uma resposta no tópico
1 pontoPort Forwarding1 ponto- [Pedido]Sistema de Loteria
[Pedido]Sistema de Loteria
CarlosHenrique7457 reagiu a zipter98 por uma resposta no tópico
1 pontoGlobalevent: local config = { cash = xxx, --Valor inicial da loteria. limit = {1, 200}, --Número mínimo e máximo da loteria. numbers = 3, --Quantos números o player deve escolher. startTime = 5, --Tempo para as apostas serem fechadas/anunciar vencedor, em minutos. messages = { --Mensagens. "A loteria está aberta, façam suas apostas! Tempo até fechar: %d minuto(s).\nDinheiro acumulado até agora: %s.", "A loteria está fechada!\nPrêmio (individual): %s gold. Vencedor%s: %s.", "Sem vencedores na loteria!\nDinheiro acumulado [total]: %s gold.", }, storages = {9571, 9572, 9573}, } function onThink() setGlobalStorageValue(config.storages[1], 1) if getGlobalStorageValue(config.storages[2]) < 0 then setGlobalStorageValue(config.storages[2], config.cash) end broadcastMessage(config.messages[1]:format(config.startTime, pointNumber(getGlobalStorageValue(config.storages[2]))), MESSAGE_INFO_DESCR) for i = 1, config.startTime do addEvent(function() if i ~= config.startTime then broadcastMessage(config.messages[1]:format(config.startTime - i), MESSAGE_INFO_DESCR) else local sortedNumbers = {} for i = 1, config.numbers do local value = math.random(config.limit[1], config.limit[2]) if isInArray(sortedNumbers, value) then while isInArray(sortedNumbers, value) do value = math.random(config.limit[1], config.limit[2]) end end table.insert(sortedNumbers, value) end setGlobalStorageValue(config.storages[1], -1) local winners, str = getLotteryWinners(sortedNumbers, config.numbers), "" local prize = math.floor(getGlobalStorageValue(config.storages[2]) / #winners) if #winners > 0 then for i = 1, #winners do if str == "" then str = getCreatureName(winners[i]) else str = str..(i == #winners and " e " or ", ")..getCreatureName(winners[i]) end end end if str == "" then broadcastMessage(config.messages[3]:format(pointNumber(getGlobalStorageValue(config.storages[2]))), MESSAGE_INFO_DESCR) else broadcastMessage(config.messages[2]:format(pointNumber(prize), #winners > 1 and "es" or "", str), MESSAGE_INFO_DESCR) setGlobalStorageValue(config.storages[2], -1) for i = 1, #winners do if isPlayer(winners[i]) then doPlayerDepositMoney(winners[i], prize) doPlayerSendTextMessage(winners[i], MESSAGE_STATUS_CONSOLE_ORANGE, "Por vencer a loteria, você recebeu: "..prize.." gold.") end end end resetStorage(config.storages[3], config.numbers) end end, i * 60 * 1000) end return true end Talkaction: local config = { limit = {1, 200}, --Número mínimo e máximo da loteria. numbers = 3, --Quantos números o player deve escolher. price = xxx, --Preço para participar da loteria. storages = {9571, 9572, 9573}, } function onSay(cid, words, param) if getGlobalStorageValue(config.storages[1]) < 1 then doPlayerSendCancel(cid, "A loteria está fechada.") elseif getPlayerStorageValue(cid, config.storages[3]) ~= -1 then doPlayerSendCancel(cid, "Você já fez sua aposta.") elseif param == "" then doPlayerSendCancel(cid, "!apostar number1 number2 number3") elseif getPlayerMoney(cid) < config.price then doPlayerSendCancel(cid, "Você precisa de, no mínimo, "..config.price.." gold para apostar.") else local numbers = param:explode(" ") if #numbers ~= config.numbers then doPlayerSendCancel(cid, "Escolha "..config.numbers.." números, entre "..config.limit[1].." - "..config.limit[2]..".") else local str = "" for i = 1, #numbers do numbers[i] = tonumber(numbers[i]) if not numbers[i] or numbers[i] < config.limit[1] or numbers[i] > config.limit[2] then return doPlayerSendCancel(cid, "Escolha números válidos ["..config.limit[1].." - "..config.limit[2].."].") end if str == "" then str = numbers[i] else str = str..(i == #numbers and " e " or ", ")..numbers[i] end end doPlayerRemoveMoney(cid, config.price) doPlayerSendTextMessage(cid, 27, "Você escolheu os números: "..str..".") for i = 0, config.numbers - 1 do setPlayerStorageValue(cid, config.storages[3] + i, numbers[i + 1]) end addGlobalStorageValue(config.storages[2], config.price) end end return true end Em 050-function.lua (data/lib), adicione mais esta função: function pointNumber(number) if not number or not tonumber(number) then return false end local d = tostring(number):reverse() local z = {} for i = 1, d:len(), 3 do table.insert(z, d:sub(i, i + 2)) end return table.concat(z, "."):reverse() end1 ponto- [Pedido]Sistema de Loteria
[Pedido]Sistema de Loteria
CarlosHenrique7457 reagiu a zipter98 por uma resposta no tópico
1 pontoUse o novo código, como informei no meu comentário anterior. Testei o sistema como foi pedido pelo autor, e funcionou perfeitamente. Poderia dar mais detalhes sobre a personalização que você pediu do código?1 ponto- Equipe Para Baiak 8.6
Equipe Para Baiak 8.6
elli reagiu a Matheus Miranda por uma resposta no tópico
1 pontoestou interessado se por acaso voce ainda precisar manda msgm inbox!1 ponto- (Resolvido)Erro TFS 1.1
1 pontoNunca usei TFS 1.1, mais acho que é a mesma coisa, você precisa salvar como ANSI. Não sei se da pra fazer no bloco de notas, mais você pode utilizar o notepad: 1 - Abra o script com o Notepad++. 2 - Clique em formatar no menu horizontal. 3 - Clique em Codificação em ANSI. 4 - Ele irá bugar os acentos no script, ai é só você arrumar novamente e salvar o script. Notepad: http://notepad-plus-plus.org/1 ponto- [Pedido]Sistema de Loteria
1 pontoEm data/lib/050-function.lua, coloque as seguintes funções: function compareTables(c, d) for i = 1, #c do if not isInArray(d, c[i]) then return false end end return true end function addGlobalStorageValue(key, addValue) local result = db.getResult("SELECT value FROM global_storage WHERE key = "..key) setGlobalStorageValue(key, getGlobalStorageValue(key) + addValue) if result:getID() ~= -1 then db.executeQuery("UPDATE global_storage SET value = value + "..addValue.." WHERE key = "..key) result:free() else db.executeQuery("INSERT INTO global_storage VALUES ("..key..", 0, "..addValue..")") end end function resetStorage(key, count) local result = db.getResult("SELECT id FROM players WHERE online < 1") if result:getID() ~= -1 then repeat for i = 0, count - 1 do db.executeQuery("UPDATE player_storage SET value = -1 WHERE key = "..key + i.." AND player_id = "..result:getDataInt("id").." AND value != -1") end until not result:next() result:free() end for _, pid in pairs(getPlayersOnline()) do for i = 0, count - 1 do if getPlayerStorageValue(pid, key + i) ~= -1 then setPlayerStorageValue(pid, key + i, -1) end end end end function getLotteryWinners(n, count) local baseStorage, winners, cidNumbers = 9573, {}, {} for _, cid in pairs(getPlayersOnline()) do if getPlayerStorageValue(cid, baseStorage) ~= -1 then cidNumbers[cid] = {} for i = 0, count - 1 do table.insert(cidNumbers[cid], getPlayerStorageValue(cid, baseStorage + i)) end if compareTables(cidNumbers[cid], n) then table.insert(winners, cid) end end end return winners end Depois, em data/globalevents/scripts: local config = { limit = {1, 200}, --Número mínimo e máximo da loteria. numbers = 3, --Quantos números o player deve escolher. startTime = 5, --Tempo para as apostas serem fechadas/anunciar vencedor, em minutos. messages = { --Mensagens. "A loteria está aberta, façam suas apostas! Tempo até fechar: %d minuto(s).", "A loteria está fechada!\nPrêmio (individual): %d gold. Vencedor%s: %s.", "Sem vencedores na loteria!\nDinheiro acumulado [total]: %d gold.", }, storages = {9571, 9572, 9573}, } function onThink() broadcastMessage(config.messages[1]:format(config.startTime), MESSAGE_INFO_DESCR) setGlobalStorageValue(config.storages[1], 1) if getGlobalStorageValue(config.storages[2]) < 0 then setGlobalStorageValue(config.storages[2], 0) end for i = 1, config.startTime do addEvent(function() if i ~= config.startTime then broadcastMessage(config.messages[1]:format(config.startTime - i), MESSAGE_INFO_DESCR) else local sortedNumbers = {} for i = 1, config.numbers do local value = math.random(config.limit[1], config.limit[2]) if isInArray(sortedNumbers, value) then while isInArray(sortedNumbers, value) do value = math.random(config.limit[1], config.limit[2]) end end table.insert(sortedNumbers, value) end setGlobalStorageValue(config.storages[1], -1) local winners, str = getLotteryWinners(sortedNumbers, config.numbers), "" local prize = math.floor(getGlobalStorageValue(config.storages[2]) / #winners) if #winners > 0 then for i = 1, #winners do if str == "" then str = getCreatureName(winners[i]) else str = str..(i == #winners and " e " or ", ")..getCreatureName(winners[i]) end end end if str == "" then broadcastMessage(config.messages[3]:format(getGlobalStorageValue(config.storages[2])), MESSAGE_INFO_DESCR) else broadcastMessage(config.messages[2]:format(prize, #winners > 1 and "es" or "", str), MESSAGE_INFO_DESCR) setGlobalStorageValue(config.storages[2], -1) for i = 1, #winners do if isPlayer(winners[i]) then doPlayerAddMoney(winners[i], prize) doPlayerSendTextMessage(winners[i], MESSAGE_STATUS_CONSOLE_ORANGE, "Por vencer a loteria, você recebeu: "..prize.." gold.") end end end resetStorage(config.storages[3], config.numbers) end end, i * 60 * 1000) end return true end Tag: <globalevent name="Loteria" interval="10800" event="script" value="nome_do_arquivo.lua"/> Já em data/talkactions/scripts: local config = { limit = {1, 200}, --Número mínimo e máximo da loteria. numbers = 3, --Quantos números o player deve escolher. minCash = 5000, --Quantia mínima para apostar. storages = {9571, 9572, 9573}, } function onSay(cid, words, param) if getGlobalStorageValue(config.storages[1]) < 1 then doPlayerSendCancel(cid, "A loteria está fechada.") elseif getPlayerStorageValue(cid, config.storages[3]) ~= -1 then doPlayerSendCancel(cid, "Você já fez sua aposta.") elseif param == "" then doPlayerSendCancel(cid, "!apostar cash,number1 number2 number3") elseif getPlayerMoney(cid) < config.minCash then doPlayerSendCancel(cid, "Você precisa de, no mínimo, "..config.minCash.." gold para apostar.") else param = param:explode(",") if #param ~= 2 then doPlayerSendCancel(cid, "!apostar cash,number1 number2 number3") else local cash, numbers = tonumber(param[1]), param[2]:explode(" ") if not cash then doPlayerSendCancel(cid, "Aposte uma quantia númerica.") elseif cash < config.minCash then doPlayerSendCancel(cid, "Esta quantia é muito pequena. Min. gold: "..config.minCash..".") elseif getPlayerMoney(cid) < cash then doPlayerSendCancel(cid, "Aposte uma quantia que você tenha.") else if not numbers or #numbers ~= config.numbers then doPlayerSendCancel(cid, "Escolha "..config.numbers.." números, entre "..config.limit[1].." - "..config.limit[2]..".") else local str = "" for i = 1, #numbers do numbers[i] = tonumber(numbers[i]) if not numbers[i] or numbers[i] < config.limit[1] or numbers[i] > config.limit[2] then return doPlayerSendCancel(cid, "Escolha números válidos ["..config.limit[1].." - "..config.limit[2].."].") end if str == "" then str = numbers[i] else str = str..(i == #numbers and " e " or ", ")..numbers[i] end end doPlayerRemoveMoney(cid, cash) doPlayerSendTextMessage(cid, 27, "Você apostou "..cash.." gold e escolheu os números: "..str..".") for i = 0, config.numbers - 1 do setPlayerStorageValue(cid, config.storages[3] + i, numbers[i + 1]) end addGlobalStorageValue(config.storages[2], cash) end end end end return true end Tag: <talkaction words="!apostar" event="script" value="nome_do_arquivo.lua"/> Comando: !apostar cash,number1 number2 number3 Ex.: !apostar 450000,78 43 1851 ponto- (Resolvido)[AJUDA]Tile que só pode passar num intervalo de horario REP++
function onStepIn(cid, item, position, fromPosition) local hrs = tostring(os.date("%X")):sub(1, 5) if getPlayerGuildId(cid) == getGlobalStorageValue(castle.storage) or getPlayerAccess(cid) >= 3 or getGlobalStorageValue(201307242201) - os.time() > 0 then return true elseif getPlayerGuildId(cid) == 0 or hrs > "19:00" and hrs < "22:00" then doTeleportThing(cid, fromPosition) doPlayerSendTextMessage(cid, 25, "Você não tem guild ou o castelo está fechado.") return true end setGlobalStorageValue(201307242201, os.time() + 1*60) doBroadcastMessage("O player ".. getPlayerName(cid) .." invadiu o castelo, contenham-no!", 25) return true end1 ponto- (Resolvido)[PEDIDO] Hp / Mp por porcentagem %%
(Resolvido)[PEDIDO] Hp / Mp por porcentagem %%
ruanvioto reagiu a Fir3element por uma resposta no tópico
1 pontoprotocolgame.cpp, procure por: msg->put<uint16_t>(player->getHealth()); msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MAXHEALTH)); troque por: if (player->getPlayerInfo(PLAYERINFO_MAXHEALTH) > 0) { msg->put<uint16_t>(uint16_t(player->getHealth() * 100 / player->getPlayerInfo(PLAYERINFO_MAXHEALTH))); msg->put<uint16_t>(100); } else { msg->put<uint16_t>(0); msg->put<uint16_t>(0); } procure por: msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MANA)); msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MAXMANA)); troque por: if (player->getPlayerInfo(PLAYERINFO_MAXMANA) > 0) { msg->put<uint16_t>(player->getPlayerInfo(PLAYERINFO_MANA) * 100 / player->getPlayerInfo(PLAYERINFO_MAXMANA)); msg->put<uint16_t>(100); } else { msg->put<uint16_t>(0); msg->put<uint16_t>(0); }1 ponto- RME MAP EDITOR
RME MAP EDITOR
komuki zkm reagiu a Hallow por uma resposta no tópico
1 pontoGente,estou com problema ao tentar executar o RME(Remeres Map Editor) ERRO: Não foi possivel localizar o ponto de entrada do proceidmento _except_handler4_common na biblioteca de vínculo dinâmico msvcrt.dll.1 ponto- [Action] Player Effect
[Action] Player Effect
anthonyx22 reagiu a Vodkart por uma resposta no tópico
1 pontono seu tem um bug, se o jogador deslogar durante a ação irá dar erros no distro function onUse(cid, item, frompos, item2, topos) function doPlayerEffect(cid, delay) if not isCreature(cid) then return LUA_ERROR end doSendMagicEffect(getThingPos(cid), CONST_ME_HOLYAREA) if delay ~= 1 then addEvent(doPlayerEffect, 1000, cid, delay -1) end return nil end doPlayerEffect(cid, 60) doRemoveItem(item.uid, 1) return true end doPlayerEffect(cid, 60) por quantos segundos irá ficar soltando o efeito, deixei 601 ponto- [C#] Joga da Véia
[C#] Joga da Véia
Reds reagiu a Skydangerous por uma resposta no tópico
1 pontoAh, não era para eu liberar as sources, porém .. desisti do projeto de montar ela on-line. Vou liberar ela aqui, para estudos.. Tem algumas funções que estava testando --Principal using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.NetworkInformation; namespace WindowsFormsApplication1 { public partial class Form1 : Form { bool xis = true; string[,] matriz = new string[3, 3]; // Vitória X int xganha = 0; string xganhast = ""; // Vitória O int oganha = 0; string oganhast = ""; // Derrotas X int xderrota = 0; string xderrotast = ""; // Derrotas O int oderrota = 0; string oderrotast = ""; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { b11.Click += new EventHandler(BClick); b12.Click += new EventHandler(BClick); b13.Click += new EventHandler(BClick); b21.Click += new EventHandler(BClick); b22.Click += new EventHandler(BClick); b23.Click += new EventHandler(BClick); b31.Click += new EventHandler(BClick); b32.Click += new EventHandler(BClick); b33.Click += new EventHandler(BClick); foreach (Control item in this.Controls) { if (item is Button) { item.TabStop = false; } } } private void BClick(object sender, EventArgs e) { ((Button)sender).Text = this.xis ? "x" : "o"; ((Button)sender).Enabled = false; VerificarGanhador(); xis = !xis; label1.Text = string.Format("{0}, é sua vez", this.xis ? "x" : "o"); } private void EasyComputer(object sender, EventArgs e) { ((Button)sender).Text = "a"; ((Button)sender).Enabled = false; } private void VerificarGanhador() { if ( b11.Text != String.Empty && b11.Text == b12.Text && b12.Text == b13.Text || // Linha 1 b21.Text != String.Empty && b21.Text == b22.Text && b22.Text == b23.Text || b31.Text != String.Empty && b31.Text == b32.Text && b32.Text == b33.Text || b11.Text != String.Empty && b11.Text == b21.Text && b21.Text == b31.Text || b12.Text != String.Empty && b12.Text == b22.Text && b22.Text == b32.Text || b13.Text != String.Empty && b13.Text == b23.Text && b23.Text == b33.Text || b11.Text != String.Empty && b11.Text == b22.Text && b22.Text == b33.Text || b13.Text != String.Empty && b13.Text == b22.Text && b22.Text == b31.Text ) { MessageBox.Show(String.Format("Ganhador: {0}", xis ? "x" : "o"), "Vitoria", MessageBoxButtons.OK, MessageBoxIcon.Information); if (xis == true) { xganha++; xganhast = xganha.ToString(); oderrota++; oderrotast = oderrota.ToString(); label8.Text = oderrotast; label9.Text = xganhast; } else { oganha++; oganhast = oganha.ToString(); xderrota++; xderrotast = xderrota.ToString(); label10.Text = xderrotast; label7.Text = oganhast; } Reiniciar(); } else { VerificarEmpate(); } } private void VerificarEmpate() { bool todosDesabilitados = true; foreach (Control item in this.Controls) { if (item is Button && item.Enabled) { todosDesabilitados = false; break; } } if (todosDesabilitados) { MessageBox.Show(String.Format("Deu Veia"), "Atenção!!", MessageBoxButtons.OK, MessageBoxIcon.Warning); Reiniciar(); } } private void Reiniciar() { const string message = "Deseja jogar novamente?"; const string caption = "Aviso:"; var result = MessageBox.Show(message, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.No) { this.Close(); } else { foreach (Control item in this.Controls) { if (item is Button) { item.Enabled = true; item.Text = String.Empty; } } } } private void exitToolStripMenuItem_Click(object sender, EventArgs e) { const string message = "Deseja sair do jogo?"; const string caption = "Aviso:"; var result = MessageBox.Show(message, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { this.Close(); } } private void aboutToolStripMenuItem1_Click(object sender, EventArgs e) { MessageBox.Show("Desenvolvido por SkyDangerous", "About"); } private void resetGameToolStripMenuItem_Click(object sender, EventArgs e) { const string message = "Deseja reiniciar o jogo?"; const string caption = "Aviso:"; var result = MessageBox.Show(message, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { foreach (Control item in this.Controls) { if (item is Button) { item.Enabled = true; item.Text = String.Empty; } } } } private void resetAllToolStripMenuItem_Click(object sender, EventArgs e) { const string message = "Deseja reiniciar a pontuação?"; const string caption = "Aviso:"; var result = MessageBox.Show(message, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { label8.Text = label9.Text = label10.Text = label7.Text = "0"; oderrota = xderrota = oganha = xganha = 0; } } private void toolStripTextBox1_Click(object sender, EventArgs e) { } private void resetXVitóriaToolStripMenuItem_Click(object sender, EventArgs e) { if (xganha == 0) { MessageBox.Show("Aviso", "Nao pode resetar vitória sendo 0"); } else { const string message = "Deseja reiniciar a pontuação de vitória do X?"; const string caption = "Aviso:"; var result = MessageBox.Show(message, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { label9.Text = "0"; xganha = 0; } } } private void resetXDerrotasToolStripMenuItem_Click(object sender, EventArgs e) { if (xderrota == 0) { MessageBox.Show("Aviso", "Nao pode resetar derrota sendo 0"); } else { const string message = "Deseja reiniciar a pontuação de derrotas X?"; const string caption = "Aviso:"; var result = MessageBox.Show(message, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { label10.Text = "0"; xderrota = 0; } } } private void resetOVitóriasToolStripMenuItem_Click(object sender, EventArgs e) { if (oganha == 0) { MessageBox.Show("Aviso", "Nao pode resetar vitória sendo 0"); } else { const string message = "Deseja reiniciar a pontuação de vitória O?"; const string caption = "Aviso:"; var result = MessageBox.Show(message, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { label7.Text = "0"; oganha = 0; } } } private void resetODerrotasToolStripMenuItem_Click(object sender, EventArgs e) { if (oderrota == 0) { MessageBox.Show("Aviso", "Nao pode resetar derrota sendo 0"); } else { const string message = "Deseja reiniciar a pontuação de derrotas O?"; const string caption = "Aviso:"; var result = MessageBox.Show(message, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { label8.Text = "0"; xderrota = 0; } } } private void Som(object sender, EventArgs e) { //Função by SKydangerous System.Media.SystemSounds.Exclamation.Play(); } private void verificarIPToolStripMenuItem_Click(object sender, EventArgs e) { Form3 novaform = new Form3(); novaform.Show(); } private void pingarHostToolStripMenuItem_Click(object sender, EventArgs e) { Form2 novaform = new Form2(); novaform.Show(); } private void jogarToolStripMenuItem_Click(object sender, EventArgs e) { Form4 novaform = new Form4(); novaform.Show(); } private void cHATToolStripMenuItem_Click(object sender, EventArgs e) { chat novaform = new chat(); novaform.Show(); } private void easy_Click(object sender, EventArgs e) { } } } --Para pegar o ip da sua internet using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.NetworkInformation; using System.Net.Sockets; using System.IO; using System.Net; namespace WindowsFormsApplication1 { public partial class Form3 : Form { public Form3() { InitializeComponent(); } private void button2_Click(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { WebClient wb = new WebClient(); UTF8Encoding utf = new UTF8Encoding(); string st = utf.GetString(wb.DownloadData("http://myip.dk/")).ToString(); int i = st.IndexOf("IP Address:")+34; while(st.Substring(i,1) != "<") { label1.Text += st.Substring(i,1); i++; } } } } --Pingar o host using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.NetworkInformation; using System.Net.Sockets; namespace WindowsFormsApplication1 { public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void bto_ping_Click(object sender, EventArgs e) { Ping ping1 = new Ping(); PingReply resp = ping1.Send(txt_host.Text); txt_ip.Text = Convert.ToString(resp.Address); if (Convert.ToString(resp.Status) == "Success") txt_status.Text = "Ativo"; else txt_status.Text = "Inativo"; } private void bto_fechar_Click(object sender, EventArgs e) { Application.Exit(); } private void bto_Limpar_Click(object sender, EventArgs e) { txt_host.Clear(); txt_ip.Clear(); txt_status.Clear(); } } } Até.1 ponto- Poderia conserta 1 error da scripth
-1 pontosaonde trocou qual parte godback ou addons.xml agora esta dando esse error 13/05/2015 19:48:16] [Error - Action Interface] [13/05/2015 19:48:16] data/actions/scripts/goback.lua:onUse [13/05/2015 19:48:16] Description: [13/05/2015 19:48:16] data/actions/scripts/goback.lua:196: attempt to compare number with string [13/05/2015 19:48:16] stack traceback: [13/05/2015 19:48:16] data/actions/scripts/goback.lua:196: in function <data/actions/scripts/goback.lua:8> não esta trocando roupinha do pokemon + alguem pf me ajudar oi me ajudem estou precisando urgente alguem pf urgente-1 pontosLíderes está configurado para São Paulo/GMT-03:00 - Npc Auction Versão 1.0 [Atualizado]
Informação Importante
Confirmação de Termo