Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 06/18/12 em todas áreas

  1. Bom pessoal,venho trazer-lhes hoje um trabalho,de meses de mim e de daniel devotti,fizemos um servidor Igual o refugia. e agora venho compartilhar com vocês. SENHA DO GOD account:god senha:GOD Spells Knights :ezzori,ezzori gran. Magos :exevo gran frigo,exevo gran mas mort,exevo gran mas ghost,aurora. Paladinos :exevo gran mas mort,aurora. Sistemas Pet system com mais de 50 pets,Incluindo Pets Donates que você pode vender em seu site! Sistemas de arena duels Para teams ou duplas no segundo andar no templo! Sistema de VIP Coins e (VIP) no nome Igual do Refugia Original! TASK SYSTEM! Sistema De Reborn Monster! adicionado 16/09/11 Ao matar um monstro ele tem 50% de chance de renascer igual no refugia! Items Mais de 100 items editados únicos do servidor! items free bons,quests com items editados e etc. Quests Anihilator demon helmet Aqua quest vermilion quest Pits of inferno Lord vampire quest refugia legs multi Quest dentre várias outras. Screen Shots Trainer's Templo Free Teleports Vip Teleports Free Teleportes para cidades Segundo andar do templo Montanha City Vip City Free NPC's DOWNLOAD: http://adf.ly/IGQ9S http://adf.ly/IGQDJ (SCAN DESATUALIZADO) Créditos Subwat (Gean Riot) Refugia.com.br daniel freire devotti curtiu REP+ Este tópico recebeu destaque em nosso portal!
    2 pontos
  2. Opa, fala xTibia '-'.. Vi que muitas pessoas estavam querendo fazer um site para seu servidor e não sabem como fazer... Então resolvi postar um tutorial completíssimo aqui.. O que vamos precisar? -&amp;gt; Xampp ( 1.6.5 ) - Download - http://www.oldapps.com/xampp.php?old_xampp=38 -&amp;gt; Gesior Acc. Maker ( 0.3.8 ) - Download - http://www.mediafire.com/?u0bao9bcp9ua5vr -&amp;gt; Um servidor de sua escolha.Pode ser qualquer um desde que tenha o arquivo .mysql. PS: NÃO RESPONDO A QUEM TIVER O ERRO DO INSTALL.PHP . ESSE ERRO É CAUSADO POR CAUSA DA UTILIZAÇÃO DE OUTRA VERSÃO DO XAMPP E DO GESIOR, POR ESSE MOTIVO EU COLOQUEI O XAMPP 1.6.5 QUE ESTÁ FUNCIONANDO! NÃO USE A VERSÃO MAIS RECENTE DO XAMPP! Vamos ao tutorial! Espere... vai criar um site sem saber como funciona? O site de seu servidor será feito em PHP. E o que vai ter nele? Os jogadores de seu servidor poderão criar suas contas, ver notícias do servidor, ver outros jogadores, criar guildas, e muito mais dependendo de como você manusear seu website. OBS1 : É altamente recomendável que escolha uma forte senha para sua conta de Admin. Pois se seu servidor tiver sucesso, certamente "hackers" tentarão atacar sua database e seu servidor. OBS 2: Seu site ficará online apenas quando o Xampp estiver ativo com o Apache e MySQL sendo executados, ou seja, apenas quando você estiver no computador. Para seu site ficar online 24 horas, você precisaria de uma hospedagem para php. Agora que já temos tudo, vamos começar !! 1°) Abra o instalador do XamPP, e instale-o. 2°) Selecione aonde a pasta do XamPP ficará salva. (de preferência algum lugar de fácil acesso) 3°) Deixe apenas a primeira e a segunda opções marcadas e clique em Next. 4°) Aguarde o fim da instação e provavelmente uma tela preta irá aparecer. 5°) Após o fim da instalação, clique em Yes para abrir o XamPP e dê Start em Apache e MySQL. 6°) Clique em Admin do Apache. Você será redirecionado para a sua localhost (endereço que apenas você entra). Clique em Português (Brasil). 7°) No canto esquerdo do site , clique na Aba Segurança. Vá descendo até achar " http://localhost/sec...mppsecurity.php " . Clique. OBS : Se você não conseguiu abrir a página de Segurança, vá na pasta do seu Xampp/security/htdocs/lang e renomeie o arquivo pt para pt_br . 8°) Após ter clicado, deverá ser redirecionado para uma página parecida com essa: OBS :Faça o numero 1 e depois clique em Alterar Senha. Depois Faça o numero 3 e clique em Tornar Seguro o Diretorio do XamPP. 9°) Após ter feito isso, dê Stop no MySql (no XamPP) e dê Start denovo. Agora vá em seu navegador e digite : localhost/phpmyadmin 10°) Digite a senha que foi criada há pouco tempo que eu disse que era para a criação do banco de dados. 11°) Minimize seu navegador e vá na pasta de seu servidor, e abra o arquivo config.lua. Tire todos os espaços iniciais e as "frases" iniciadas com o sinal de " - " . Veja : 12°) Não feche o config.lua ainda, vá descendo até achar informações sobre a database de seu servidor ... algo parecido com isto : sqlType = "mysql" &amp;lt;- se estiver em sqlite, mude para mysql sqlHost = "localhost" sqlPort = 3306 sqlUser = "root" sqlPass = "123456" &amp;lt; - coloque a senha que foi criada para entrar no banco de dados. sqlDatabase = "otserv" &amp;lt; - coloque o nome de sua database , coloque " otserv " para facilitar. sqlFile = "otserv.s3db" &amp;lt; - de prefencia, coloque " otserv.s3db " ( o mesmo nome de sua database ) sqlKeepAlive = 0 mysqlReadTimeout = 10 mysqlWriteTimeout = 10 encryptionType = "plain" 13°) Salve e feche o config.lua. Agora vamos voltar a pagina minimizada (localhost/phpmyadmin) : 14°) Clique na aba Importar na parte superior da tela. 15°) Agora Selecione o Arquivo para Importar. Selecione o arquivo terminado em .sql que fica na pasta de seu servidor e clique em Executar no canto inferior direito. 16°) Pronto !! A database de seu servidor foi criada. Agora vamos instalar os arquivos do site. 17°) Abra a pasta do XamPP/htdocs. Apague tudo que tem dentro de htdocs e cole tudo o que veio dentro da pasta do Gesior ACC. 18°) Abra o XamPP novamente e clique em Admin do Apache. 19°) Uma nova pagina foi aberta, agora você terá que fazer mais 5 passos rápidos. 19.1) Set Server Path Coloque o diretório da pasta de seu servidor. Ex : C:\Users\user\Desktop\Tibia Server Clique em Set Server Path. 19.2) Check database connection 19.3) Add tables and columns to DB 19.4) Agora desça e clique no botão. 19.5) Set Admin Account Coloque uma senha SEGURA pois esse será o password do administrador do site e servidor. 19.6) Load Monsters from OTS Carregue os monstros do servidor. 19.7) Load Spells from OTS Carregue as magias do servidor. 20°) Agora você deverá ser redirecionado para seu site, e você pode acessá-lo pelo localhost ou pelo ip do seu servidor. Para acessar sua database, digite em seu navegador : localhost/phpmyadmin Pronto !! Seu site foi criado :] Colocando seu site online pelo 8090 e Desbloqueando a porta 8090 : 1° - Acesse a pasta do XamPP/apache/conf e abra o arquivo httpd com o bloco de notas. Procure por : Listen 80 E por : ServerName localhost:80 Substitua todos os 80 por 8090. 2° - Dentro da pasta conf, abra a pasta extra, e em seguida abra httpd-ssl e procure por : Listen 443 E por: <virtualhost _default_:443=""> Substitua esses 443 por 4499. Agora vá em seu firewall e Adicione a Porta 8090 e Porta 80 e marca a opção TCP. Se usar Roteador, desbloqueie as portas também. Site por porta 80 localhost Site por porta 8090 localhost:8090 Colocando seu site online pela porta 80 (A porta 80 seria o ip normal de seu servidor. Exemplo : teste.servegame.com. ) A porta 80 não necessita de nada no final. Para que as pessoas entrem pela porta 80, não necessita mudar nada na pasta do Xampp. Pois ela ja está configurada para entrarem. Só é necessário desbloquear a porta 80 no seu modem ou roteador. E desbloquear a porta 80 pelo Firewall também. VIDEO AULA - FEITA EM 2/4/2012 (DESCULPA , AS VEZES TENHO QUE PENSAR QUANDO FALO EM PORTUGUES, PORQUE NAO MORO NO BRASIL)!! Créditos : 100% por Mim :] Não mexo mais com Tibia, mas ainda respondo a qualquer dúvida que eu esteja capacitado a responder (:
    1 ponto
  3. MarcelloMendes

    [Advanced Reset System 2.0]

    -= Advanced Reset System 2.0 =- By: MarcelloMkez Fala galerinha, to aqui dinovo , mas agora e com a versão 2.0 do meu 'Advanced Reset System'. E como prometido, trazendo algumas novidades: _________________________________________________________________________________________________________________________________ - Resets agora armazenados diretamente na 'DataBase', acabando com o sistema de Storages, e com o problema dos resets atrasados no look; - Opções para Abilitar e Desabilitar Condições como por exemplo: 'look = true' , [true,false] configurando como achar melhor; - E agora '[sTAGES]', para 'premmy' (Premium Account) e 'free' (Free Account); - Instala o System e cria a Tabela de Resets com o comando "/installreset"; OBS: Sistema testado em 'Mysql' não tenho certeza si funciona em 'sql'; e Testando em: 8.50 (TFS 0.3.6) e 8.6 (TFS 0.4.0) __________________________________________________________________________________________________________________________________ Vá em data/Talkactions, e crie um arquivo .lua e nomeie para advancedResetSystem.lua e Adicione Isso: --[[ <(Advanced Reset System 2.0)> Autor: MarcelloMkez. Contato: (marcello_dirt@hotmail.com) Versão: 2.0 Testado em: 8.50 e 8.60 TFS: 0.3.6 and 0.4.0 Fórum: http://www.xtibia.com/forum/topic/142463-advanced-reset-system-20/ -=[Características]=- ~( Versão 2.0 )~ - Resets agora Armazenados na DataBase; (Sem Valor de Storage) - Instala o System e cria a Tabela de Resets com o comando "/installreset"; - Resets no Look do jogador ex: 22:10 You see Marcello [Reset 2] (Level 8). He is an elder druid.; - [sTAGES] para "Premium Account" e "Free Account"; ]] --=[Functions]=-- -- installReset()' [instala o Sistema.] -- tableResetInstall()' [Verifica Se o Sistema ja foi instaladao.] -- nowReseting()' [Verifica, retorna o erro ou reseta.] -- getPlayerReset(cid)' [Pega numero de resets do player.] -- checLevelStageReset(cid)' [Verifica o Level para Resetar.] -- newReset(cid)' [Verifica todas as Condições de Reset.] -- addValue(value)' [Adiciona numero de resets.] --=[Comandos de Jogadores]=-- -- "/installreset" -- Só será usado uma vez, para instalar o sistema. -- "!resetar" -- Para Resetar. function onSay(cid, words, param) if words =="!resetar" then --[ Condições de Reset ] -- local coNdConf = { needPz = true, -- Precisa estar em Pz pra resetar? [true, false] needPa = false, -- Precisa ser Premium Account Pra resetar? [true, false] withe = false, -- Players com Pk Withe podem resetar? [true, false] red = false, -- Players com Pk Red pode resetar? [true, false] battle = false, -- Players precisão estar sem battle pra resetar? [true, false] teleport = true, -- Teleportar Player para o templo após resetar? [true, false] look = false, -- Aparecer Resets no Look do Player? [true, false] pid = getPlayerGUID(cid), -- Não Mexer. --[ Configurações do Reset ] -- resetConf = { Level = 350, -- Level Necessário para Resetar. [Valor] backLvl = 8, -- Level que voltará após o Reset. [Valor] time = 5, -- Tempo para o Player deslogar ao resetar, em segundos. [Valor] }, } --[[>> STAGES <<]]-- x=true;X=true -- Não Mexer. local stage = {Abilitar = {x}, Desabilitar = {}, --<< Abilitar Stages?? >>-- [{x};{}] -- [RESETS] | [PREMMY] | [FREE] stage1= {resets= 4, premmy= 330, free= 350}, stage2= {resets= 9, premmy= 340, free= 355}, -- EXPLICANDO e Configurando stages. (Se estiver Abilitado [Abilitar = {x}]) stage3= {resets= 14, premmy= 355, free= 360}, -- resets = Número de resets para o Stage; stage4= {resets= 19, premmy= 360, free= 365}, -- premmy = Level necessário para Premium Accounts; stage5= {resets= 24, premmy= 370, free= 380}, -- free = Level necessário para Free Accounts; stage6= {resets= 29, premmy= 380, free= 390}, -- Coloque em Ordem... stage7= {resets= 35, premmy= 400, free= 410}, -- [OBS: MARQUE UM "X" PARA ABILITAR OU DESABILITAR OS STAGES] stage8= {resets= 40, premmy= 410, free= 440}, -- EX: para desabilitar mude: Abilitar = {}, Desabilitar = {x} stage9= {resets= 45, premmy= 450, free= 450}, stage10={resets= 50, premmy= 465, free= 465}, } --[[>> FIM STAGES <<]]-- --=[Pega Valor de Resets]=-- function getPlayerReset(cid) local qr = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";") rss = qr:getDataInt("reset", coNdConf.pid) if rss < 0 then rss = 0 end return rss end local success = " ~~ Sucesso! ~~ \nVocê tem agora "..(getPlayerReset(cid)+1).." resets. \nVocê será deslogado em "..coNdConf.resetConf.time.." segundos." ;err = doPlayerSendTextMessage local qrt = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";");rss_db = qrt:getDataInt("reset", coNdConf.pid) local lvl_query = "UPDATE `players` SET `level` = "..(coNdConf.resetConf.backLvl)..", `experience` = 0 WHERE `id`= " .. coNdConf.pid .. ";" local reset_query = "UPDATE `players` SET `reset` = "..(getPlayerReset(cid)+(1)).." WHERE `id`= " .. coNdConf.pid .. ";" local nolook_query = "UPDATE `players` SET `description` = '' WHERE `players`.`id`= " .. coNdConf.pid .. ";" local look_query = "UPDATE `players` SET `description` = ' [Reset "..(getPlayerReset(cid)+(1)).."]' WHERE `players`.`id`= " .. coNdConf.pid .. ";" --=[Reseta]=-- function addValue(value) if coNdConf.look == false then doRemoveCreature(cid) db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(nolook_query) else doRemoveCreature(cid) db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(look_query) return LUA_NO_ERROR end end function nowReseting() if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Level Necessário Para o Reset ["..coNdConf.resetConf.Level.."]. Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." level's para você Resetar. -") return true end if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then doPlayerPopupFYI(cid, success) addEvent(addValue, coNdConf.resetConf.time*1000, value) else doPlayerPopupFYI(cid, success) addEvent(doTeleportThing, coNdConf.resetConf.time*900, cid, getTownTemplePosition(getPlayerTown(cid))) addEvent(addValue, coNdConf.resetConf.time*1000, value) return true end end --[sTAGES Nao mexer em nada.]-- function checkLevelStageReset(cid) local stages = { {resets= stage.stage1.resets, premmy= stage.stage1.premmy, free= stage.stage1.free}, {resets= stage.stage2.resets, premmy= stage.stage2.premmy, free= stage.stage2.free}, {resets= stage.stage3.resets, premmy= stage.stage3.premmy, free= stage.stage3.free}, {resets= stage.stage4.resets, premmy= stage.stage4.premmy, free= stage.stage4.free}, {resets= stage.stage5.resets, premmy= stage.stage5.premmy, free= stage.stage5.free}, {resets= stage.stage6.resets, premmy= stage.stage6.premmy, free= stage.stage6.free}, {resets= stage.stage7.resets, premmy= stage.stage7.premmy, free= stage.stage7.free}, {resets= stage.stage8.resets, premmy= stage.stage8.premmy, free= stage.stage8.free}, {resets= stage.stage9.resets, premmy= stage.stage9.premmy, free= stage.stage9.free}, {resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free}, } local resets = getPlayerReset(cid) for i, tab in ipairs(stages) do if resets <= tab.resets then coNdConf.resetConf.Level = isPremium(cid) and tab.premmy or tab.free break end end if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then err(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Level Necessário Para o Reset ["..coNdConf.resetConf.Level.."]. Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." level's para você Resetar. -") return TRUE end if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then doPlayerPopupFYI(cid, success) addEvent(addValue, coNdConf.resetConf.time*1000, value) else doPlayerPopupFYI(cid, success) addEvent(addValue, coNdConf.resetConf.time*1000, value) addEvent(doTeleportThing, coNdConf.resetConf.time*900, cid, getTownTemplePosition(getPlayerTown(cid))) return true end end function newReset(cid) if(coNdConf.needPz == true) and (getTilePzInfo(getCreaturePosition(cid)) == LUA_ERROR) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar em Protection Zone Para Resetar. -") return TRUE end if(coNdConf.needPa == true) and not isPremium(cid) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa ser Premium Account para Resetar. -") return TRUE end if(coNdConf.withe == false) and (getCreatureSkullType(cid) == 3) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Withe. -") return TRUE end if(coNdConf.red == false) and (getCreatureSkullType(cid) == 4) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Red. -") return TRUE end if(coNdConf.battle == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar sem Battle para Resetar. -") return TRUE end local xy = {true,false} table.insert(stage.Abilitar, false) table.insert(stage.Desabilitar, false) if stage.Abilitar[1] == xy[1] and stage.Desabilitar[1] == xy[2] then checkLevelStageReset(cid) elseif stage.Abilitar[1] == xy[2] and stage.Desabilitar[1] == xy[1] then nowReseting() else doPlayerPopupFYI(cid, "LUA_ERROR; Configure corretamente o Sistema de STAGES!") end return true end function tableResetInstall() print(not rss_db and LUA_ERROR or "Tabela de Resets: Instalada ... [success] ") addEvent(newReset, 1000, cid) return false end if tableResetInstall() then end end --=[install System]=-- function installReset() if db.executeQuery("ALTER TABLE `players` ADD reset INT(11) NOT NULL DEFAULT 0;") then print("[MarcelloMkez] -= Advanced Reset System 2.0 por DataBase =- Instalado com sucesso!") return TRUE end print('[Advanced Reset System/MarcelloMkez] Não foi possível instalar o Sistema.') return FALSE end local tt = { "Preparando Instalação...", "Instalando: TableReset Db...", "Instalando: getPlayerReset()...", "Instalando: addValue()...", "Instalando: checkLevelStageReset()...", "Instalando: newReset() and nowReseting()...", "Finalizando Instalação...", "...", success = { "Iniciando...", "function: TableReset Db... [success]", "function: getPlayerReset()... [success]", "function: addValue(value)... [success]", "function: checkLevelStageReset()... [success]", "function: newReset() and nowReseting()... [success]", "Fim da Instalação. ", "by: ~~ MarcelloMkez ~~ \nContato: marcello_dirt@hotmail.com", inst = {"MarcelloMkez","Advanced Reset System 2.0 por DataBase" }, }, } if words == "/installreset" and getPlayerAccess(cid) >= 3 then function install() if installReset() then print(""..tt.success[7].."") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,""..tt.success[8].."") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "["..tt.success.inst[1].."] -="..tt.success.inst[2].."=- Instalado com sucesso!") else print("["..tt.success.inst[1].."] FALHA NA INSTALAÇÃO! [O sistema ja foi instalado].") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "["..tt.success.inst[1].."] FALHA NA INSTALAÇÃO! [O sistema ja foi instalado].") end return 1 end function concl(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[7].."") print(""..tt[8].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[7].."") doPlayerSendTextMessage(cid, typetx,""..tt[8].."") addEvent(install, 1000,cid) end function finall(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[6].."") print(""..tt[7].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[6].."") doPlayerSendTextMessage(cid, typetx,""..tt[7].."") addEvent(concl, 3000,cid) end function installDd(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[5].."") print(""..tt[6].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[5].."") doPlayerSendTextMessage(cid, typetx,""..tt[6].."") addEvent(finall, 1000,cid) end function installCc(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[4].."") print(""..tt[5].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[4].."") doPlayerSendTextMessage(cid, typetx,""..tt[5].."") addEvent(installDd, 1000,cid) end function installBb(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[3].."") print(""..tt[4].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[3].."") doPlayerSendTextMessage(cid, typetx,""..tt[4].."") addEvent(installCc, 1000,cid) end function installAa(cid) local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[2].."") print(""..tt[3].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[2].."") doPlayerSendTextMessage(cid, typetx,""..tt[3].."") addEvent(installBb, 1000,cid) end function toInstall() local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt.success[1].."") print(""..tt[2].."") doPlayerSendTextMessage(cid, typetx,""..tt.success[1].."") doPlayerSendTextMessage(cid, typetx,""..tt[2].."") addEvent(installAa, 1000,cid) end function preparation() local typetx = MESSAGE_STATUS_CONSOLE_BLUE print(""..tt[1].."") doPlayerSendTextMessage(cid, typetx,""..tt[1].."") addEvent(toInstall, 3000,cid) end if preparation() then end end return 1 end --=[by: MarcelloMkez]=-- E em Talkactions.xml adicione isso: <talkaction words="!resetar;/installreset" event="script" value="advancedResetSystem.lua"/> Instalando o Sistema - Após adicionar o script em TalkActions e em Talkactions.xml Use o comando "/installreset" em jogo, OBS: o System so pode ser Instalado pelo GOD! A a instalação será mostrada no default, e no Distro! Apos isso, Sistema Instalado! 'Explicando stages: Stage 1: stage1= {resets= 4, premmy= 330, free= 350}, resets: ---- Quantidade de Resets para o stage. premmy: ---- Level que Premmium Accounts podera Resetar. (no caso ate 4 resets) free: ------ Level que Free Accounts podera Resetar. (no caso ate 4 resets) --- Bom como vcs pode ver, vai ate o 'Stage 10': stage10={resets= 50, premmy= 465, free= 465}, --- Intao irei explicar, caso queiram adicionar mais stages... Use 'Ctrl + G' com o script aberto, e digite 71, e aperte enter, logo ira direcionar para linha 71 que no caso é esta: stage10={resets= 50, premmy= 465, free= 465}, - Abaixo dela adicione uma exatamente igual, so modificando o numero do stage ficando assim: stage10={resets= 50, premmy= 465, free= 465}, stage11={resets= 55, premmy= 465, free= 465}, Agora na linha 134 vai ta esta: {resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free}, Voce faz a mesma coisa adicionando embaixo da linha 134 porem mudando os numeros, ficando assim: {resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free}, {resets=stage.stage11.resets, premmy=stage.stage11.premmy, free=stage.stage11.free}, Pronto, Ja esta adicionado o 'Stage 11' xD, Assim voce pode adicionar quantos stages quiser, basta configurar corretamente... Mais duvidas postem aqui. Aqui termino o post! espero que gostem, grato: ~~MarcelloMkez~~
    1 ponto
  4. Kydrai

    Vip System By Account V1.0

    Vip System by Account 1.0 By Kydrai Este é um vip system por account, ou seja, um sistema de vip válido para todos os characters de uma determinada conta. O script foi testado no TFS 0.3.6 - 8.54. E no site Gesior 0.3.4 beta4. Em caso de erros ou dúvidas é só postar. Funções do Script Função necessária para começar a usar o script: installVip() -> Cria a coluna no banco de dados para usar o sistema de vip (testei somente em sqlite, mas acredito que funcione em mysql) Funções que utilizam o account id: doTeleportPlayersByAccount(acc, topos) -> Teleporta todos os players da account getVipTimeByAccount(acc) -> Pega o tempo de vip setVipTimeByAccount(acc, time) -> Edita o tempo de vip getVipDaysByAccount(acc) -> Pega o tempo de vip em dias isVipAccount(acc) -> Verifica se é vip addVipDaysByAccount(acc, days) -> Adiciona dias de vip doRemoveVipDaysByAccount(acc, days) -> Remove dias de vip getVipDateByAccount(acc) -> Pega a data e hora que irá terminar a vip Funções que utilizam o creature id (cid): doTeleportPlayers(cid, topos) -> Teleporta todos os players da account getVipTime(cid) -> Pega o tempo de vip setVipTime(cid, time) -> Edita o tempo de vip getVipDays(cid) -> Pega o tempo de vip em dias isVip(cid) -> Verifica se é vip addVipDays(cid, days) -> Adiciona dias de vip doRemoveVipDays(cid, days) -> Remove dias de vip getVipDate(cid) -> Pega a data e hora que irá terminar a vip Inserindo as funções Abra a pasta data/lib, crie um arquivo lua e coloque: vipAccount.lua --[[ Name: Vip System by Account Version: 1.0 Author: Kydrai Forum: http://www.xtibia.com/forum/topic/136543-vip-system-by-account-v10/ [Functions] -- Install installVip() -- By Account doTeleportPlayersByAccount(acc, topos) getVipTimeByAccount(acc) setVipTimeByAccount(acc, time) getVipDaysByAccount(acc) isVipAccount(acc) addVipDaysByAccount(acc, days) doRemoveVipDaysByAccount(acc, days) getVipDateByAccount(acc) -- By Player doTeleportPlayers(cid, topos) getVipTime(cid) setVipTime(cid, time) getVipDays(cid) isVip(cid) addVipDays(cid, days) doRemoveVipDays(cid, days) getVipDate(cid) ]]-- -- Install function installVip() if db.executeQuery("ALTER TABLE `accounts` ADD viptime INT(15) NOT NULL DEFAULT 0;") then print("[Vip System] Vip System instalado com sucesso!") return TRUE end print("[Vip System] Não foi possível instalar o Vip System!") return FALSE end -- By Account function doTeleportPlayersByAccount(acc, topos) if db.executeQuery("UPDATE `players` SET `posx` = "..topos.x..", `posy` = "..topos.y..", `posz` = "..topos.z.." WHERE `account_id` = "..acc..";") then return TRUE end return FALSE end function getVipTimeByAccount(acc) local vip = db.getResult("SELECT `viptime` FROM `accounts` WHERE `id` = "..acc..";") if vip:getID() == -1 then print("[Vip System] Account not found!") return FALSE end return vip:getDataInt("viptime") end function setVipTimeByAccount(acc, time) if db.executeQuery("UPDATE `accounts` SET `viptime` = "..time.." WHERE `id` = "..acc..";") then return TRUE end return FALSE end function getVipDaysByAccount(acc) local vipTime = getVipTimeByAccount(acc) local timeNow = os.time() local days = math.ceil((vipTime - timeNow)/(24 * 60 * 60)) return days <= 0 and 0 or days end function isVipAccount(acc) return getVipDaysByAccount(acc) > 0 and TRUE or FALSE end function addVipDaysByAccount(acc, days) if days > 0 then local daysValue = days * 24 * 60 * 60 local vipTime = getVipTimeByAccount(acc) local timeNow = os.time() local time = getVipDaysByAccount(acc) == 0 and (timeNow + daysValue) or (vipTime + daysValue) setVipTimeByAccount(acc, time) return TRUE end return FALSE end function doRemoveVipDaysByAccount(acc, days) if days > 0 then local daysValue = days * 24 * 60 * 60 local vipTime = getVipTimeByAccount(acc) local time = vipTime - daysValue setVipTimeByAccount(acc, (time <= 0 and 1 or time)) return TRUE end return FALSE end function getVipDateByAccount(acc) if isVipAccount(acc) then local vipTime = getVipTimeByAccount(acc) return os.date("%d/%m/%y %X", vipTime) end return FALSE end -- By Player function doTeleportPlayers(cid, topos) doTeleportPlayersByAccount(getPlayerAccountId(cid), topos) end function getVipTime(cid) return getVipTimeByAccount(getPlayerAccountId(cid)) end function setVipTime(cid, time) return setVipTimeByAccount(getPlayerAccountId(cid), time) end function getVipDays(cid) return getVipDaysByAccount(getPlayerAccountId(cid)) end function isVip(cid) return isVipAccount(getPlayerAccountId(cid)) end function addVipDays(cid, days) return addVipDaysByAccount(getPlayerAccountId(cid), days) end function doRemoveVipDays(cid, days) return doRemoveVipDaysByAccount(getPlayerAccountId(cid), days) end function getVipDate(cid) return getVipDateByAccount(getPlayerAccountId(cid)) end Exemplos de uso Talkaction GOD: /installvip /addvip name, days /removevip name, days /checkvip name Player: /buyvip /vipdays talkactions.xml: <talkaction log="yes" access="5" words="/installvip;/addvip;/removevip;/checkvip" event="script" value="vipaccgod.lua"/> <talkaction words="/buyvip;/vipdays" event="script" value="vipaccplayer.lua"/> vipaccgod.lua: function onSay(cid, words, param, channel) local t = param:explode(",") local name, days = t[1], tonumber(t[2]) if words == "/installvip" then if installVip() then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Vip System instalado com sucesso!") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Não foi possível instalar o Vip System!") end elseif words == "/addvip" then if name then if days then local acc = getAccountIdByName(name) if acc ~= 0 then addVipDaysByAccount(acc, days) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você adicionou "..days.." dia(s) de vip ao "..name..", agora ele possui "..getVipDaysByAccount(acc).." dia(s) de vip.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este player não existe.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode adicionar essa quantidade de dia(s) de vip.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode adicionar dia(s) de vip a este player.") end elseif words == "/removevip" then if name then if days then local acc = getAccountIdByName(name) if acc ~= 0 then doRemoveVipDaysByAccount(acc, days) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você retirou "..days.." dia(s) de vip do "..name..", agora ele possui "..getVipDaysByAccount(acc).." dia(s) de vip.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este player não existe.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode retirar essa quantidade de dia(s) de vip.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode retirar dia(s) de vip a este player.") end elseif words == "/checkvip" then if name then local acc = getAccountIdByName(name) if acc ~= 0 then local duration = getVipDateByAccount(acc) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O "..name.." possui "..getVipDaysByAccount(acc).." dias de vip."..(duration and (" Ela irá durar até "..duration..".") or "")) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este player não existe.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode visualizar os dias de vip a este player.") end end return TRUE end vipaccplayer.lua: function onSay(cid, words, param, channel) if words == "/buyvip" then local price = 1000000 local days = 30 if doPlayerRemoveMoney(cid, price) then addVipDays(cid, days) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você adicionou "..days.." dia(s) de vip, agora você possui "..getVipDays(cid).." dia(s) de vip.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa de "..price.." para adicionar "..days.." dia(s) de vip.") end elseif words == "/vipdays" then local duration = getVipDate(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or "")) end return TRUE end Movement (Tile) Coloque actionid 15000 em um tile onde somente os vips poderão passar. movements.xml: <movevent type="StepIn" actionid="15000" event="script" value="viptile.lua"/> viptile.lua: function onStepIn(cid, item, position, fromPosition) if isVip(cid) == FALSE then doTeleportThing(cid, fromPosition, false) doSendMagicEffect(position, CONST_ME_MAGIC_BLUE) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Somente players vip podem passar.") end return TRUE end Creaturescript (Login) Quando player logar irá verificar se a vip do player acabou, se sim então irá teleportar todos os players da account para o templo, se não irá mostrar o tempo da vip. creaturescripts.xml: <event type="login" name="viplogin" script="viplogin.lua"/> viplogin.lua: function onLogin(cid) local vip = isVip(cid) if getVipTime(cid) > 0 and vip == FALSE then local townid = 1 doPlayerSetTown(cid, townid) local templePos = getTownTemplePosition(getPlayerTown(cid)) doTeleportThing(cid, templePos, false) setVipTime(cid, 0) doTeleportPlayers(cid, templePos) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua Vip acabou!") elseif vip == TRUE then local duration = getVipDate(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or "")) end return TRUE end Action (Door) Coloque actionid 15001 na door onde somente os vips poderão passar. Use a porta gate of expertise (id: 1227) actions.xml: <action actionid="15001" script="vipdoor.lua"/> vipdoor.lua: function onUse(cid, item, fromPosition, itemEx, toPosition) if isVip(cid) == FALSE then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Somente players vip podem passar.") elseif item.itemid == 1227 then doTransformItem(item.uid, item.itemid + 1) doTeleportThing(cid, toPosition) end return TRUE end NPC (Vendedor de VIP) vipnpc.xml: <?xml version="1.0" encoding="UTF-8"?> <npc name="Vendedor de VIP" script="vipnpc.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="128" head="17" body="54" legs="114" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|, I sell {vip} days."/> </parameters> </npc> vipnpc.lua: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function buyVip(cid, message, keywords, parameters, node) if(not npcHandler:isFocused(cid)) then return false end if doPlayerRemoveMoney(cid, parameters.price) then addVipDays(cid, parameters.days) npcHandler:say('Thanks, you buy '..parameters.days..' vip days. You have '..getVipDays(cid)..' vip days.', cid) else npcHandler:say('Sorry, you don\'t have enough money.', cid) end npcHandler:resetNpc() return true end local node1 = keywordHandler:addKeyword({'vip'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want buy 30 vip days for 1000000 gp\'s?'}) node1:addChildKeyword({'yes'}, buyVip, {price = 1000000, days = 30}) node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Ok, then.', reset = true}) npcHandler:addModule(FocusModule:new()) Erros e Soluções Configurando o Gesior Com essa configuração irá aparecer o vip status do player no site e será possível vender vip pelo site. Se eu esqueci de alguma coisa é só avisar. accountmanagement.php Depois de: if(!$account_logged->isPremium()) $account_status = '<b><font color="red">Free Account</font></b>'; else $account_status = '<b><font color="green">Premium Account, '.$account_logged->getPremDays().' days left</font></b>'; Adicione: if(!$account_logged->isVip()) $account_vip_status = '<b><font color="red">Not Vip Account</font></b>'; else $account_vip_status = '<b><font color="green">Vip Account, '.$account_logged->getVipDays().' days left</font></b>'; Depois de: <td class="LabelV" >Account Status:</td><td>'.$account_status.'</td></tr><tr style="background-color:'.$config['site']['darkborder'].';" > Adicione: <td class="LabelV" >Account Vip Status:</td><td>'.$account_vip_status.'</td></tr><tr style="background-color:'.$config['site']['darkborder'].';" > pot/OTS_Account.php Substitua: private $data = array('email' => '', 'blocked' => false, 'rlname' => '','location' => '','page_access' => 0,'lastday' => 0,'premdays' => 0, 'created' => 0); Por: private $data = array('email' => '', 'blocked' => false, 'rlname' => '','location' => '','page_access' => 0,'lastday' => 0,'premdays' => 0, 'created' => 0, 'viptime' => 0); Substitua: $this->data = $this->db->query('SELECT ' . $this->db->fieldName('id') . ', ' . $this->db->fieldName('name') . ', ' . $this->db->fieldName('password') . ', ' . $this->db->fieldName('email') . ', ' . $this->db->fieldName('blocked') . ', ' . $this->db->fieldName('rlname') . ', ' . $this->db->fieldName('location') . ', ' . $this->db->fieldName('page_access') . ', ' . $this->db->fieldName('premdays') . ', ' . $this->db->fieldName('lastday') . ', ' . $this->db->fieldName('created') . ' FROM ' . $this->db->tableName('accounts') . ' WHERE ' . $this->db->fieldName('id') . ' = ' . (int) $id)->fetch(); Por: $this->data = $this->db->query('SELECT ' . $this->db->fieldName('id') . ', ' . $this->db->fieldName('name') . ', ' . $this->db->fieldName('password') . ', ' . $this->db->fieldName('email') . ', ' . $this->db->fieldName('blocked') . ', ' . $this->db->fieldName('rlname') . ', ' . $this->db->fieldName('location') . ', ' . $this->db->fieldName('page_access') . ', ' . $this->db->fieldName('premdays') . ', ' . $this->db->fieldName('viptime') . ', ' . $this->db->fieldName('lastday') . ', ' . $this->db->fieldName('created') . ' FROM ' . $this->db->tableName('accounts') . ' WHERE ' . $this->db->fieldName('id') . ' = ' . (int) $id)->fetch(); Substitua: $this->db->query('UPDATE ' . $this->db->tableName('accounts') . ' SET ' . $this->db->fieldName('password') . ' = ' . $this->db->quote($this->data['password']) . ', ' . $this->db->fieldName('email') . ' = ' . $this->db->quote($this->data['email']) . ', ' . $this->db->fieldName('blocked') . ' = ' . (int) $this->data['blocked'] . ', ' . $this->db->fieldName('rlname') . ' = ' . $this->db->quote($this->data['rlname']) . ', ' . $this->db->fieldName('location') . ' = ' . $this->db->quote($this->data['location']) . ', ' . $this->db->fieldName('page_access') . ' = ' . (int) $this->data['page_access'] . ', ' . $this->db->fieldName('premdays') . ' = ' . (int) $this->data['premdays'] . ', ' . $this->db->fieldName('lastday') . ' = ' . (int) $this->data['lastday'] . ' WHERE ' . $this->db->fieldName('id') . ' = ' . $this->data['id']); Por: $this->db->query('UPDATE ' . $this->db->tableName('accounts') . ' SET ' . $this->db->fieldName('password') . ' = ' . $this->db->quote($this->data['password']) . ', ' . $this->db->fieldName('email') . ' = ' . $this->db->quote($this->data['email']) . ', ' . $this->db->fieldName('blocked') . ' = ' . (int) $this->data['blocked'] . ', ' . $this->db->fieldName('rlname') . ' = ' . $this->db->quote($this->data['rlname']) . ', ' . $this->db->fieldName('location') . ' = ' . $this->db->quote($this->data['location']) . ', ' . $this->db->fieldName('page_access') . ' = ' . (int) $this->data['page_access'] . ', ' . $this->db->fieldName('premdays') . ' = ' . (int) $this->data['premdays'] . ', ' . $this->db->fieldName('viptime') . ' = ' . (int) $this->data['viptime'] . ', ' . $this->db->fieldName('lastday') . ' = ' . (int) $this->data['lastday'] . ' WHERE ' . $this->db->fieldName('id') . ' = ' . $this->data['id']); Depois de: public function getPremDays() { if( !isset($this->data['premdays']) || !isset($this->data['lastday']) ) { throw new E_OTS_NotLoaded(); } return $this->data['premdays'] - (date("z", time()) + (365 * (date("Y", time()) - date("Y", $this->data['lastday']))) - date("z", $this->data['lastday'])); } Adicione: public function getVipDays() { if( !isset($this->data['viptime']) || !isset($this->data['lastday']) ) { throw new E_OTS_NotLoaded(); } return ceil(($this->data['viptime'] - time()) / (24*60*60)); } Depois de: public function isPremium() { return ($this->data['premdays'] - (date("z", time()) + (365 * (date("Y", time()) - date("Y", $this->data['lastday']))) - date("z", $this->data['lastday'])) > 0); } Adicione: public function isVip() { return ceil(($this->data['viptime'] - time()) / (24*60*60)) > 0; } characters.php Substitua: if($config['site']['show_vip_status']) { $id = $player->getCustomField("id"); if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD WIDTH=10%>Vip Status:</TD>'; $vip = $SQL->query('SELECT * FROM player_storage WHERE player_id = '.$id.' AND `key` = '.$config['site']['show_vip_storage'].';')->fetch(); if($vip == false) { $main_content .= '<TD><span class="red"><B>NOT VIP</B></TD></TR>'; } else { $main_content .= '<TD><span class="green"><B>VIP</B></TD></TR>'; } $comment = $player->getComment(); $newlines = array("\r\n", "\n", "\r"); $comment_with_lines = str_replace($newlines, '<br />', $comment, $count); if($count < 50) $comment = $comment_with_lines; if(!empty($comment)) { if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD VALIGN=top>Comment:</TD><TD>'.$comment.'</TD></TR>'; } } Por: if($config['site']['show_vip_status']) { $id = $player->getCustomField("id"); if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD WIDTH=10%>Account Vip Status:</TD>'; if(!$account->isVip()) { $main_content .= '<TD><span class="red"><B>NOT VIP</B></TD></TR>'; } else { $main_content .= '<TD><span class="green"><B>VIP</B></TD></TR>'; } $comment = $player->getComment(); $newlines = array("\r\n", "\n", "\r"); $comment_with_lines = str_replace($newlines, '<br />', $comment, $count); if($count < 50) $comment = $comment_with_lines; if(!empty($comment)) { if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD VALIGN=top>Comment:</TD><TD>'.$comment.'</TD></TR>'; } } shopsystem.php (+Créditos ao GM Bekman) Substitua: if($buy_offer['type'] == 'pacc') { $player_premdays = $buy_player_account->getCustomField('premdays'); $player_lastlogin = $buy_player_account->getCustomField('lastday'); $save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_pacc').' (id, to_name, to_account, from_nick, from_account, price, pacc_days, trans_state, trans_start, trans_real) VALUES (NULL, '.$SQL->quote($buy_player->getName()).', '.$SQL->quote($buy_player_account->getId()).', '.$SQL->quote($buy_from).', '.$SQL->quote($account_logged->getId()).', '.$SQL->quote($buy_offer['points']).', '.$SQL->quote($buy_offer['days']).', \'realized\', '.$SQL->quote(time()).', '.$SQL->quote(time()).');'; $SQL->query($save_transaction); $buy_player_account->setCustomField('premdays', $player_premdays+$buy_offer['days']); $account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']); $user_premium_points = $user_premium_points - $buy_offer['points']; if($player_premdays == 0) { $buy_player_account->setCustomField('lastday', time()); } $main_content .= '<h2>PACC added!</h2><b>'.$buy_offer['days'].' days</b> of Premium Account added to account of player <b>'.$buy_player->getName().'</b> for <b>'.$buy_offer['points'].' premium points</b> from your account.<br />Now you have <b>'.$user_premium_points.' premium points</b>.<br /><a href="index.php?subtopic=shopsystem">GO TO MAIN SHOP SITE</a>'; } Por: if($buy_offer['type'] == 'pacc') { $player_viptime = $buy_player_account->getCustomField('viptime'); $player_lastlogin = $buy_player_account->getCustomField('lastday'); $save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_pacc').' (id, to_name, to_account, from_nick, from_account, price, pacc_days, trans_state, trans_start, trans_real) VALUES (NULL, '.$SQL->quote($buy_player->getName()).', '.$SQL->quote($buy_player_account->getId()).', '.$SQL->quote($buy_from).', '.$SQL->quote($account_logged->getId()).', '.$SQL->quote($buy_offer['points']).', '.$SQL->quote($buy_offer['days']).', \'realized\', '.$SQL->quote(time()).', '.$SQL->quote(time()).');'; $SQL->query($save_transaction); if($player_viptime > 0) $buy_player_account->setCustomField('viptime', $player_viptime + ($buy_offer['days'] * 24 * 60 * 60)); else $buy_player_account->setCustomField('viptime', time() + ($buy_offer['days'] * 24 * 60 * 60)); $account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']); $user_premium_points = $user_premium_points - $buy_offer['points']; if($player_viptime == 0) { $buy_player_account->setCustomField('lastday', time()); } $main_content .= '<h2>VIP Days added!</h2><b>'.$buy_offer['days'].' days</b> of Vip Account added to account of player <b>'.$buy_player->getName().'</b> for <b>'.$buy_offer['points'].' premium points</b> from your account.<br />Now you have <b>'.$user_premium_points.' premium points</b>.<br /><a href="index.php?subtopic=shopsystem">GO TO MAIN SHOP SITE</a>'; } Links Úteis 01- [Gesior Acc] Vendedo Vip Pelo Pacc Créditos: GM Bekman 02- Double Exp Para Vip Créditos: Vodkart 03- Outfits Só Para Jogadores Vips Créditos: Vodkart
    1 ponto
  5. Este tópico foi 'mesclado', foram utilizados três outros tópicos para forma este, assim ficando mais organizado e tudo em somente um local. Creditos: ArthurFavilla e locosporot Dúvidas Frequentes sobre Mapping/Remeres ArthurFavilla Responde: Locosporot Responde: Comandos rápidos do Remeres [Atalhos] cdmanga responde:
    1 ponto
  6. GTA-OT by BEDDY - EXCLUSIVO XTIBIA.COM NÃO AUTORIZO POSTAGEM EM OUTRO FORUM! Depois de meses trabalhando, finalmente saiu!! Agora voces podem aproveitar esta ja é uma versao definitiva! GTA v1.1 Servidor Tibia GTA Alguma vez voce pensou que poderia jogar GTA no TIBIA? Agora é sua chance! Venha para o Tibia GTA e fassa sua Gangue, pegue em armas, mate todo mundo! Dirija, moto, bicicleta, skate!! Distro Totalmente Extavel Sem bugs Sem virus Sem motherfuckingthings! Apenas alegria! - O QUE TEM NO SERVIDOR: •2 Classes: RENEGADO e JUSTICEIRO •O player ao upar um level, ganha "POINTS" para trocar por LIFE OU MANA assim torna o jogo mais sensivel •BOOK DE GUIA na criação do CHAR ADICIONADO, para players não ficarem perdidos. •Mapa Proprio •40+ quests •Arena PVP - Sistema de Arma - Sistema de Moto, Bike e Skate. - Todos os NPCs funcionando e vendendo os itens corretamente. •Cada vocation com sua outfit •Ja existe vips e donates (ajuste conforme o nescessario) - Jetpack (Nescessario ter conbustivel para jetpack na BP para funcionar) - Armas, Clubs, Armors, Helmets, Legs, Shoes, Shields - TOTALMENTE CORRETO com DEVIDOS SPRITES. - Cidade totalmente tematizada - O QUE FALTA NO SERVIDOR: •AJUSTAR LIFE/HIT/LOOT DE MONSTROS (LOOKTYPE JÁ ESTA ARRUMADO) •CARRO(NAO IMPLEMENTADO) - SISTEMAS: •Colheita de maconha - Existe varias mudas espalhadas pelo servidor, usando o cortador de maconha, voce pode remove-las e utiliza-las e ganhar EXP! •Sistema de WoE - Guerra para ver quem será o dono do castelo! O dono do castelo ganha acesso para uma ilha da maconha! SCREENSHOTS: • • MAPINHA: 1- DEPOT, SHOPPING DE ITENS, UTILIDADES 2- VENDEDOR DE ARMAS 3- VENDEDOR DE VEICULOS 4- TEMPLO 5- MEDICO, COMPRAR CURE ITEMS 6- VENDEDOR DE OUTFITS 7- VENDEDOR DE MUNICOES DOWNLOAD: http://depositfiles....files/dq8r1spji http://depositfiles....files/dq8r1spji (INCLUSO: SERVIDOR, CLIENTE, MINI MAP, CREATURES PARA MAP EDITOR) SCAN: (by KASPERSKY PRO) CREDITOS: Beddy Agradeço aos que colaboraram: Vodkart Vilden Oneshot Jhon992 SkyDangerous Agradecimentos: Azeroth OT - Servidor Base Sprites - Maioria de Unknows GOSTOU? DA REP POIS FOI TENSO FAZER ISSO ! REP+ PRA MIM! ATENÇÂO: MAPA CIDADE DOKA http://depositfiles....files/o902rex8i Creditos: - Beddy - Quilante - pelo mapa ser seu. Estou meio sem tempo de terminar, mas aguardem que eu lanço o mapa completo!
    1 ponto
  7. Faz tempo que estou querendo colaborar com Xtibia, e hoje lá vai um mini tutorial para ajudar quem estiver com alguma dificuldade ao tentar abrir o seu map no remeres. Eu procurei diversos Tutoriais para tentar sanar meu problema com map editor, não encontrando nenhum que resolvesse eu fiz um teste e deu certo, e agora vou compartilhar. "Meu problema não era quando eu tentava criar um mapa do zero, mas sim quando eu queria editar os mapas de outros autores." para executar este tutorial eu usei o seguinte mapa: Map:> mastermap.otbm Autor:> Brun123 Tutorial: Se ao tentar abrir seu Map com o Remeres e ele aparecer com o "chão" vermelho em algumas partes, ou com partes do tibia como na imagem abaixo: Feche o Remeres e faça o seguinte: ►►Vá na pasta "C:\Arquivos de Programa\Remere's Map Editor\data\854" (Porque a pasta "854"?Essa é a pasta com os arquivos compatíveis com a versão do poketibia 8.54) Se você fizer tudo certo irá ver esses arquivos dentro da pasta: ►► Minimize esta pasta e agora vá em seu "Ot" ...data\ e copie os arquivos "items.xml" e "items.otb" e cole-os na pasta "C:\Arquivos de Programa\Remere's Map Editor\data\854" (vai perguntar se deseja substituir clique em ok) ►► Agora procure pelo arquivo "creatures.xml" na pasta do seu "Ot" e também cole-o na pasta "C:\Arquivos de Programa\Remere's Map Editor\data\854" e pronto. Atenção: para visualizar seu mapa e fazer edições nele abra-o diretamente sem abrir o Remere's por exemplo clique duas vezes em "mastermap.otbm" Ao abrir o mapa diretamente pelo Remeres ficará assim: Você só estará vendo seu minimap apertando a tecla "M", mas o resto do conteúdo não. Ao abrir seu mapa cicando duas vezes no ìcone "seu mapa.otbm" o Remeres irá carregar as configurações e aperecerá essa informação: Clique em "ok" e seu mapa será carregado. Depois poderá aparecer esta outra informação no seu editor: Caso essa mensagem apareça é por que o mapa foi salvo em uma versão mais antiga do Remeres e fica ao seu critério atualizar ou não. ►E como meu já disse abra seu mapa diretamente sem executar o Remere Clicando diretamente no icone do "seumap.otb": Você verá que seu mapa agora está completo sem nenhum erro! Mas espere, ao clicar em Pallete/Creature Pallete não estiver visualizando as imagens de seus pokemons, Shiny/pokes e nem dos NPC's então você deverá exporta-los: ►Vá no menu superior do Remere e Clique em "File" depois em "Import►Import Monsters/NPC..." Irá abrir uma janela para que você aponte onde estão esses arquivos tipo "xml". Eles estão em "...\data\monster\pokes" aperte "Ctrl+A" para selecionar todos os aquivos tipo "xml" depois clique em "Abrir". ►Faça a mesma coisa com os demais arquivos: Seus "NPC's" estão em "...\data\NPC" Carregue esses Arquivos também. Seus "Pokemons Shiny" estão em "...\data\monster\pokes\Shiny". Pronto tudo carregado com êxito e você pode editar o mapa do jeito que quiser. Meu primeiro Tutorial espero ter postado no lugar certo e que possa ajudar quem está com o mesmo problema que eu tive. Desculpem algum erro ou se fui muito repetitivo, pois eu vi que em alguns tutoriais tem muito Flood por causa dos usuários que não entenderam bem o que foi escrito. Falow ai galera, e quem sabe até um próximo tutorial ! Pasta Data do Remere's com as modificações do tutorial >> http://ads.tt/4ZGomA
    1 ponto
  8. Bem-vindo ao meu novo e primeiro tutorial que eu fiz para ajudar vcs ! Vamos começar agora: Teremos os seguintes passos= Estrutura: primeira coisa que você precisa fazer é a estrutura das montanhas. E pra que a montanha vai ser utilizada. Como Wolf Monte ( Montanha de Lobos ), ou simplesmente para fazer mapa maneiro. Tenho um exemplo aqui: Detalhes: Bem, quando adicionar os detalhes certifique-se de que a montanha não é overspammed com pedras, para os jogadores poderem andar. Tipo, aqui ta um estilo comum e muito detalhado para uma montanha: Ok, essa foi a parte básica da montanha , agora vamos para as outras coisas que você talvez precisa de saber quando fazer a montanha, 1 deles é a "escada". Em muitos mapas notei que quando o mapeador faz uma montanha, ele faz 2 ou 3 escadas direto junto. 2 Exemplos de escada. Agora, vamos para os detalhes em torno da montanha. Este tipo faz a montanha olhar mais "caído" ou que algumas pedras caiu de uma falésia. 1 exemplo aqui: Exemplo de detalhes em torno da montanha, faz um olhar mais "realista". Agora, os motivos para os detalhes! Detalhes sao essenciais pois deixam o servidor mais realista e uma forma de atracao aos players! 1 exemplo aqui: Detalhes em torno da montanha sao "fundamentais". Bem, foi isso galera, espero que isso ajude voces. Tutorial, feito por Renan ! E vocês sabem, se eu ajudei, tem sempre uma "Rep +", ueheuahe!! Paz! Créditos = Eu =) e meu amigo que me ajudou com os erros =)
    1 ponto
  9. Laug

    Evendhoria Ats [Retorno]

    Alternative Tibia Server Protocolo: 8.60 Introdução O Evendhoria é um projeto RPG baseado na era "medieval" com toque de "fantasia", com histórias dentro do jogo que levam o jogador para locais novos com muitos desafios nas "quests". Raças No momento haverá apenas 2 raças: Humanos e Bestas. Sistemas Haverá outros sistemas. Imagens ---- Equipe ______________________________________________________________ Mappers: Laug, Mophus, Left4Dead RPG Maker: Critical Scripter: Caotic Spriter: Vagas Colaborador: Beeki ______________________________________________________________
    1 ponto
  10. Insaend

    Pokemon Bulbassaur

    vai um vídeo de um pokemon em perspectiva.... Espero que gostem...
    1 ponto
  11. Enzo Caue

    Elepe Sudden - Menera

    Nome - Elepe Sudden Mundo - Menera Level - 20 Ml - 13 Vocação - Druid Screen'Shoots Por inquanto é isso, quando tiver algo melhor , venho compartilhar com vocês ='.D
    1 ponto
  12. Olá galera, então, eu tentei usar varios scripts de aol red skull amulet (inclusive o do Vodkart) mas nenhum funcionou, continua perdendo loot inclusive o amuleto equipado (não sei por que..) foi tudo instalado corretamente: ID amulet: 2196 "Broken Amulet" creaturescripts/creaturescripts.xml <event type="preparedeath" name="RedSkullAmulet" event="script" value="script.lua"/> creaturescripts/scripts/login.lua registerCreatureEvent(cid, "RedSkullAmulet") creaturescripts/scripts/script.lua function onPrepareDeath(cid, deathList) if getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).itemid == 2196 then if getCreatureSkullType(cid) <= 5 then doSetCreatureDropLoot(cid, false) end end return true end Aguardo galera, vlw ae
    1 ponto
  13. Prezyoso

    Novo Patch, Novos Servidores!

    Não Sei Se Perceberam Mas Tibia Esta Crescendo E Melhorando Cada Vez Mais. A Cipsoft cresce cada vez mais e acaba conseguindo deixar o jogo cada vez mais real e melhor. Mas Para Conseguir Deixar O Tibia Como Esta Hoje com a Infinidade De Itens, Sistema de Montaria, Addons, Monstros Etc, Eles trabalharam Muito Duro Desde As Versões Mais Antigas Até Agora 9.54 Aqui Vai Uma Lista Das Versões E Informaçoes Dos Sistemas,Cidades,Monstros,Itens Adicionados: Cidades Versões e Informaçoes Do Crescimento Do Jogo Novos Servidores E Patch Mensagem original de Craban Queridos jogadores de Tibia, Hoje anunciamos a abertura pública de dois mundos de teste. Aurora(Europa) e Aurera(America) Personagens existentes em servidores localizados na Alemanha foram copiados para o mundo-teste "Aurora", e todos os personagens existentes em servidores localizados nos EUA foram copiados para o mundo-teste "Aurera". Notem que a palavra "copiados" significa que o que acontece com seus personagens em test servers não os afetará em servidores reais. Se a sua premium acabar dentro dos test servers, lamentamos, mas não há nada que você ou nós possamos fazer - os servidores reais e os de teste são totalmente separados e não há como pagar por premium time para os test servers. E finalmente, você deve sempre seguir as Regras de Tibia, pois elas também valem nos test servers! O que mudou? Nós fizemos muitas modificações técnicas no servidor, e elas precisam ser testadas. Não há nada especial para fazer, então apenas entre no game, converse com amigos, enfrente monstros, faça o que você gosta de fazer em Tibia e divirta-se. Em caso de problemas, nós saberemos através dos arquivos de registro do servidor. Mudamos o client de Tibia para melhorar a compatibilidade com o Windows Vista ao utilizar a engine gráfica 'DirectX9' no jogo. Se você tem Windows Vista (ou Windows 7) faça login nos mundos de teste, certifique-se de usar a engine gráfica do 'DirectX9' e aí é só jogar. Adicionalmente, fizemos mudanças na detecção automática de hardware para melhor reconhecer o Windows 7. Fazendo isso, esperamos verificar se há algum problema específico ao rodar o jogo em Windows 7 ou não. Se você estiver utilizando o Windows 7, também faça login nos servidores para teste. Finalmente, se o seu client de Tibia travar, nós pedimos que vocês enviem o client crash reports (aquela janela de erro) na próxima vez que logar nos test servers. Esses reports são muito importante para nós, pois sem eles, nós não sabemos se há problemas com o client ou não. Com o Novo Patch, Veio o Novo Client 9.54, Voce Pode Baixalo Clicando Aqui. Com Os Servdores Veio Tambem a Lista De Espera: Os Servidores Fizeram Sucesso E Estão Bombando E As Guilds Já Estão Sendo Formadas Para Dominar Os Servidores Onde eu posso falar sobre os test servers? Pra Mim E Uma Otima Oportunidade para aqueles que enjoaram de Otserv e Tibia, Pois A Xp E Dobrada Como Loot Etc. E Tambem e Vantagem para A Cipsoft Pois, Com Isso Podera Testar Novos Locais, Systems Etc, Sem Precisar Abrir Otro Test Server. Divirtam-se,
    1 ponto
  14. Critical

    [8.60] --> Baiak Link By [Adm] Z1K4 <--

    Tópico aprovado; Atenciosamente, Critical.
    1 ponto
  15. Nem analisei teu direito e vi que não ia funcionar então criei o meu. E agora que fui olhar seu script que percebi que a única coisa que falta no teu script é a "msg" ali que não vai funcionar. E ja que criei o script tbm, pra não perder o post em vão, ta ele ai: Vai em data/movements/scripts, duplica um arquivo e nomeia para "stone_tile" sem as aspas e nele cole: local stone_id = 391 -- id da stone local position_stone = {x=2456,y=2466,z=7, stackpos=1} -- x,y,z põe as posições em que criara a pedra function onStepIn(cid, item, topos) if isPlayer(cid) then if getThingfromPos(position_stone).uid > 0 then doRemoveItem(getThingfromPos(position_stone).uid) end doCreateItem(stone_id, 1, position_stone) end return true end Em movements.xml cole a tag: <movevent type="StepIn" actionid="20302" event="script" value="stone_tile.lua"/> E por último basta por o actionid 20302 no tile do seu server, com o Mapa Editor.
    1 ponto
  16. mysticChem

    Venda Backpack Com Set Dentro

    Preciso urgente, gostaria de um sistema para modern acc , que no shop tenha opção de comprar set inteiros em backpakes, tipo logo como admin e vou na guia Add Backpack set Id Backpack: xxxx Id Itens Dentro: xxxx, xxxx, xxxx Points: xx uso modern acc desde já obrigado!
    1 ponto
  17. Kelvin24

    Venda Backpack Com Set Dentro

    Também estou precisando desse sistema alguém para ajudar?
    1 ponto
  18. Vodkart

    Problema Com !resetar

    troque addEvent(newReset, 1000, cid) por newReset(cid)
    1 ponto
  19. 1 ponto
  20. masquete se acha o fodao kkkkkkkkkk
    1 ponto
  21. local runa = 2394 local msg = "Equipe a %s na mão, para poder atirar." local attackmin, attackmax = 300, 340 -- attack minimo, attack maximo local ring = { -- [iddoitemnoslotdoring] = acrescimonohit [1234] = 30, [1235] = 50 } function onCastSpell(cid, var) local left, right = getPlayerSlotItem(cid, CONST_SLOT_LEFT), getPlayerSlotItem(cid, CONST_SLOT_RIGHT) if not isInArray({left.itemid, right.itemid}, runa) then return doPlayerSendCancel(cid, msg:format(getItemNameById(runa))) end if doPlayerRemoveItem(cid, 2543, 1) then -- troque pelo id da bolt target = getCreatureTarget(cid) if (target <= 0) then doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Selecione um target.") return false end hit = (math.random(attackmin,attackmax) + getPlayerSkillLevel(cid, SKILL_DISTANCE) / 3) if ring[getPlayerSlotItem(cid, CONST_SLOT_RING).itemid] then hit = hit + ring[getPlayerSlotItem(cid, CONST_SLOT_RING).itemid] end doTargetCombatHealth(cid, target, COMBAT_PHYSICALDAMAGE, -hit, -hit, CONST_ME_MORTAREA) doSendDistanceShoot(getCreaturePos(cid), getCreaturePos(target), CONST_ANI_BOLT) return true else doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você não possui balas.") end return false end @Edited: - Arrumado.
    1 ponto
  22. vudi

    Pokemon Supreme® {Atualizado²}

    Concordo eu tbm mas n quero mais joga server fail! faliu n =] mas se você é uma daquelas crianças que não sabem esperar, só ir na seção de download e baxar um ot pra você, você abre e ele é todo seu pode fazer oque quizer com ele n sei esperar to esperando desdo ano passado entaum se vc não sabe esperar eu te ensino sem problemas Concordo eu tbm mas n quero mais joga server fail! faliu n =] mas se você é uma daquelas crianças que não sabem esperar, só ir na seção de download e baxar um ot pra você, você abre e ele é todo seu pode fazer oque quizer com ele n sei esperar to esperando desdo ano passado entaum se vc não sabe esperar eu te ensino sem problemas Eragon diz logo oque aconteceu , ou projeto acabo pow, os cara ta certo a 5 meses atraz voce disse que faltava apenas 1 hoster e agora falta oque? ligar o ot? FAIL OT SERVE , MODERADORES TIRA OS REP QUE ELE GANHO COM ESSE POST TODO
    1 ponto
  23. Ceraii

    Tibia Pan 8.60 - Exclusivo Xtibia

    mt bo nao rep menos __________________ Membro suspenso.
    1 ponto
  24. removido, funciona só em algumas versões...
    1 ponto
  25. jhon992

    Magia [Pula 3 Sqm]

    local quantSqm = 3 -- quantidade de sqms function teleportPlayer(cid, position) if (isPlayer(cid)) then local o = 1 local positions = {} for i=1, quantSqm do if getPlayerLookDir(cid) == 0 then position = {x=position.x, y=position.y-1, z=position.z} elseif getPlayerLookDir(cid) == 1 then position = {x=position.x+1, y=position.y, z=position.z} elseif getPlayerLookDir(cid) == 2 then position = {x=position.x, y=position.y+1, z=position.z} elseif getPlayerLookDir(cid) == 3 then position = {x=position.x-1, y=position.y, z=position.z} end if isWalkable(position) then o = o+1 end positions[#positions+1] = position end if o > quantSqm then doTeleportThing(cid, position) for i=1, #positions do doSendMagicEffect(positions[i], CONST_ME_TELEPORT) end return true else doPlayerSendCancel(cid, "Você não pode atravesar isso!") return false end end end function isWalkable(pos, creature, pz, proj) -- nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end local creature = getTopCreature(pos) if creature.type > 0 then return false end if getTilePzInfo(pos) and not pz then return false end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function onCastSpell(cid, var) if teleportPlayer(cid, getPlayerPosition(cid)) then return true end end
    1 ponto
  26. Oneshot

    Magia [Pula 3 Sqm]

    sarioyana, Para correto funcionamento do código deste post, siga as instruções com exatidão, prestando atenção para salvar as extensões pedidas corretamente. - Abra o arquivo 050-function.lua com um Bloco de Notas em /data/lib e, no final, adicione o seguinte código: function isWalkable(position, cid) position.stackpos = 0 if getTileThingByPos(position).uid ~= 0 then local tile = getTileInfo(position) if tile.protection == false and tile.house == false and getTopCreature(position).uid == 0 and doTileQueryAdd(cid, position) == RETURNVALUE_NOERROR then return true end end return false end - Crie um novo arquivo chamado dash.lua em /data/spells/scripts e adicione o seguinte código function onCastSpell(cid, var) local direction = getCreatureLookDirection(cid) local size = 3 local toPosition = getPositionByDirection(getThingPosition(cid), direction, size) if isWalkable(toPosition, cid) then doSendMagicEffect(getThingPosition(cid), CONST_ME_POFF) doTeleportThing(cid, toPosition) doSendMagicEffect(getThingPosition(cid), CONST_ME_POFF) else doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE) end return true end - Abra o arquivo spells.xml e adicione a seguinte linha: <instant name="Dash" words="dash" lvl="20" mana="18" exhaustion="2000" needlearn="0" event="script" value="dash.lua"/> Antes de: </spells> Reporte no tópico quaisquer resultados.
    1 ponto
  27. Fabiano0921

    Ebot World Edited By Gabrielsv

    Ficou Muito Bom ! Mais Poderia me dar os Crétidos Po eu Ter Lançado ele no Xtibia Por ser um Projeto Meu! Abraços.
    1 ponto
  28. Slicer

    [Encerrado] [Pokemon] Dúvidas? - Pda

    @all na real esquece.. ja arrumei.. alias pra quem ta com problema de player n ganhando exp ou n dando pra dar catch nos pokes.. vai em creaturescripts/script/pokeexp.lua e retire essa linha... if not isCreature(cid) then return true end @Dudu08267 ta ae mano ^^ tpw.. da pra tu editar os itens q pede.. mexendo na tabela itens e no nome dos itens q o npc pede e da pra tu modificar o premio no final da quest.. eu coloquei a box 3 pq achu q eh isso q tinhas em mente.. mas podes alterar como quiser.. e se tiver um pouco de conhecimento em scripts pode alterar mais partes tb.. ^^ fica a tua escolha.. mas concelho.. sempre q for mexer em algu nele, faça um backup... e tb eu n testei todas as funcionalidades do npc.. mas parece ta tudo certo... ;x qlqr coisa soh flar... NPC BOX 3 +/- parecido com o do PxG...
    1 ponto
  29. Slicer

    [Encerrado] [Pokemon] Dúvidas? - Pda

    @Dudu08267 vai no spawn.lua e acha essa parte.. local function doShiny(cid) if isCreature(cid) then if isSummon(cid) then return true end if getPlayerStorageValue(cid, 74469) >= 1 then return true end e embaixo disso coloca.. if isNpcSummon(cid) then return true end pronto ^^ @PauloMuller mais um pra se exibir ;/ por favor.. se n tem intensao de postar pra geral, poste esse tpw de foto soh no topico de divulgaçao do seu serv... obrigado...
    1 ponto
  30. Boa! REP :button_ok:
    1 ponto
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...