Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 05/13/15 em todas áreas

  1. Tutorial Mod OtClient

    L3K0T e um outro reagiu a Golf por uma resposta no tópico

    2 pontos
    Olá, 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. Launcher AutoUpdate C#

    premii reagiu a GabrielSapient por uma resposta no tópico

    1 ponto
    Galera 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.
  3. 1. 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: Xellath
  4. Advanced Sound

    leonardoviana reagiu a vyctor17 por uma resposta no tópico

    1 ponto
    Eai 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 ©
  5. Sprites Digicerb

    Sexyboyy reagiu a Thiago Rulexz por uma resposta no tópico

    1 ponto
    Bom 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 Imagem
  6. Nolis Show Off

    Polguilo reagiu a Cat por uma resposta no tópico

    1 ponto
  7. Npc Auction Versão 1.0 [Atualizado]

    FeehLoveCes reagiu a Vodkart por uma resposta no tópico

    1 ponto
    Versõ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.rar
  8. [C++] Cor das mensagens nos channels

    PlaYerZ reagiu a Deadpool por uma resposta no tópico

    1 ponto
    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 CM
  9. 1 ponto
    Eba 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 quites
  10. [NPC] Papai Noel - Que dá presente

    Rodrigo94 reagiu a Danihcv por uma resposta no tópico

    1 ponto
    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!
  11. 1 ponto
    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 Fireelement
  12. Resetando Seu Server Sem Deletar Players ou Items

    Miragem reagiu a LeoTK por uma resposta no tópico

    1 ponto
    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 f9
  13. [8.6] Lumast Map V1.0.0 70% Proprio (Xp Alta)

    xainvi reagiu a Slaake por uma resposta no tópico

    1 ponto
    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)
  14. [Projeto] New Styller

    Kiriharae reagiu a luanluciano93 por uma resposta no tópico

    1 ponto
    Olá 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!
  15. adicionando uma storagemzinha

    xandeloko reagiu a Flavio S por uma resposta no tópico

    1 ponto
    Andei 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 end
  16. adicionando uma storagemzinha

    Sanieg reagiu a Flavio S por uma resposta no tópico

    1 ponto
    Vinicius 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 CODE
  17. [Showoff] New City

    runeraserver reagiu a Heyron por uma resposta no tópico

    1 ponto
    Sobre 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:
  18. (Resolvido)[AJUDA] Script

    fironfox reagiu a Sanieg por uma resposta no tópico

    1 ponto
    tente 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 end
  19. adicionando uma storagemzinha

    xandeloko reagiu a Sanieg por uma resposta no tópico

    1 ponto
    Npc 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.
  20. [Showoff] New City

    PsyMcKenzie reagiu a runeraserver por uma resposta no tópico

    1 ponto
    Obrigado 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 vindas
  21. (Resolvido)Erro ao usar item (PC)

    Wend II reagiu a Snowsz por uma resposta no tópico

    1 ponto
    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 end
  22. Eu 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! Vlw
  23. (Resolvido)Pedido Tile limit's script

    Gustavo12345 reagiu a Fir3element por uma resposta no tópico

    1 ponto
    config.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 end
  24. (Resolvido)Paralyze

    ScythePhantom reagiu a Tibia2015br por uma resposta no tópico

    1 ponto
    local 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) end
  25. [Showoff] New City

    Heyron reagiu a runeraserver por uma resposta no tópico

    1 ponto
    30% @Reds, obrigado pela dica!! @RetornoDeLaug, valeuu!! @Ceos, valeu pelas dicas!!
  26. (Resolvido)[ARENA] BUG MOVEMENT

    falling reagiu a 1027929 por uma resposta no tópico

    1 ponto
    Na 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 zzz
  27. [PROJETO] Digitamers

    xyto reagiu a Caronte por uma resposta no tópico

    1 ponto
    Boa sorte com o projeto, e que você encontre aqui o que precisa...
  28. Talvez esse tópico pode lhe ser útil. Procure utilizar a barra de pesquisa quando você ter problemas com coisas simples desse tipo.
  29. [Pedido]Sistema de Loteria

    CarlosHenrique7457 reagiu a zipter98 por uma resposta no tópico

    1 ponto
    Nã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?
  30. [Pedido]Sistema de Loteria

    CarlosHenrique7457 reagiu a zipter98 por uma resposta no tópico

    1 ponto
    Corrigido.
  31. 1 ponto
    Por nada, precisando to ai
  32. [Pedido]Sistema de Loteria

    CarlosHenrique7457 reagiu a zipter98 por uma resposta no tópico

    1 ponto
    Ops, 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.
  33. (Resolvido)ip do servidor

    augustods reagiu a Fir3element por uma resposta no tópico

    1 ponto
    Port Forwarding
  34. [Pedido]Sistema de Loteria

    CarlosHenrique7457 reagiu a zipter98 por uma resposta no tópico

    1 ponto
    Globalevent: 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() end
  35. [Pedido]Sistema de Loteria

    CarlosHenrique7457 reagiu a zipter98 por uma resposta no tópico

    1 ponto
    Use 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?
  36. Equipe Para Baiak 8.6

    elli reagiu a Matheus Miranda por uma resposta no tópico

    1 ponto
    estou interessado se por acaso voce ainda precisar manda msgm inbox!
  37. (Resolvido)Erro TFS 1.1

    Balkalima reagiu a Wakon por uma resposta no tópico

    1 ponto
    Nunca 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/
  38. [Pedido]Sistema de Loteria

    xandeloko reagiu a zipter98 por uma resposta no tópico

    1 ponto
    Em 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 185
  39. 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 end
  40. 1 ponto
    protocolgame.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); }
  41. RME MAP EDITOR

    komuki zkm reagiu a Hallow por uma resposta no tópico

    1 ponto
    Gente,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.
  42. [Action] Player Effect

    anthonyx22 reagiu a Vodkart por uma resposta no tópico

    1 ponto
    no 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 60
  43. [C#] Joga da Véia

    Reds reagiu a Skydangerous por uma resposta no tópico

    1 ponto
    Ah, 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é.
  44. Poderia conserta 1 error da scripth

    Wakon reagiu a 345sat por uma resposta no tópico

    -1 pontos
    aonde 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
Líderes está configurado para São Paulo/GMT-03:00

Informação Importante

Confirmação de Termo