Leaderboard
Popular Content
Showing content with the highest reputation on 02/07/13 in all areas
-
PServer By:DinoAdmin.
natanaelrox and 3 others reacted to DinoAdmin for a topic
•~~PServer 0.1 By DinoAdmin~~• • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Prints; ├ Download; ├ Scan; ├ Videos; └ Creditos. • Informações Basicas • • Edições / Ajustes • • Erros Do Servidor • • PrintScreen • • Download's • • Scan • • Videos • • Creditos • Bom espero que Todos Gostem do Servidor, Pois esse é o primeiro servidor que eu posto aqui no XTibia.com. Se por ventura voces acharem algum Bug no server por favor reportem aqui. Se gostarem do servidor me Incentive dando REP+ (Voce não é obrigado) Por favor comentem Sobre o Servidor aqui. Obrigado e eu posso afirmar que eu vou postar a verção 0.2 que terá a terceira Geração. Vamos aguardar e eu conto com a sua ajuda.4 points -
[Pokemon] Servidor Gabrieltxu e suas Versões
Silvaninho and 2 others reacted to Gabrieltxu for a topic
Conteudo Retirado.3 points -
[O RETORNO!] Erondino Site Server V12
YoungDree and one other reacted to LuckinhaSan for a topic
•~~Erondino Site Server V12.0 (Com Source)~~• • Menu: ├ Informações; ├ Erros; ├ Prints; ├ Download; ├ Scan; └ Creditos. • Informações Do Servidor • • Erros Do Servidor • • PrintScreen • Print 1 Print 2 Print 3 Print 4 • Download's • • Scan • • Creditos • Erondino e sua equipe LuckinhaSan Esse é meu primeiro post sobre servidor aqui na xTibia, espero que gostem... Bem, se gostou do server da um REP+, lembrando que não obrigo ninguém a dar. Comentem (:2 points -
Baiak Galaxy By Mayron Com Donate
Alvarovictor reacted to Mayronfla for a topic
Eae Galera Vim Aki hj postar meu 2º tópico Estava sem nada pa fazer e resolvi editar o baiak original by Baiak Lula. Oq Fiz? Novos Itens set de paladin, knight e mages. Donate e Itens Vip Com efeitos e muito bom. Eu Add system de montaria por item: Montaria Visual do templo totalmente modificado todo ice e muito bom para pvp. Eu add comandos: !bless, !aol. Puis tbm coandos para ver as guilds do server: !glist >> vc ve as guilds do ot !glist nome da guild exemplo (!glist The Killers) ve os membros desta guild xD. Bugs Totalmente Removidos... Nova Quest na area vip dando 6kk. Nova Arena Para pvp Area de Eventos Treiners novos muito melhores n Morrem Bichos n dropam nenhum item bom do ot. Potions Melhoradas healando bem mais É isso ae gente vamos as fotos Templo Teleports Treiner Novo Staffs Montaria Area Donate Evento Arena Cidade Vip Bom Galerinha é isso ae espero q gostem do Meu Baiak. Todos os bugs q acharem falem aki. Quem n kiser os itens galaxy e kiserem ele no npc avisa ae xD. Download DO Mapa Pelo 4 Shared: http://www.4shared.com/rar/swVLk7Ys/baiak_Galaxy.html? Pode Baixar Tranquilo n tem virus. Me Desculpem mas não sei fazer scan quem puder postar ae agradeço! Comentem ae pois este foi meu 2º Mapa aki no xtibia. Espero q vcs gostem. Conta do GOD: god/god Créditos: Baiak Lula Pelo Mapa 10% e [ADM] Mayron (EU) Pelo Novo Servidor e Scripts 90% Obrigado a todos.1 point -
Olá galerinha do Xtibia, estou aqui para postar um bom servidor derivado. Não queria estar postando esse servidor meio que forçado, tendo em vista que foi roubado e tem gente por de trás ganhando dinheiro sujo. Então sem mais delongas, ai esta o NtoShinobi que esta sendo vendido por alguem popular aqui do forum, que prefiro não citar o nome. ------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------ Mapa do servidor conta com 4 vilas -Amegakure -Suna -Mist -Konoha Consta com 14 vocações -Naruto - Sasuke - Sakura - Rock Lee- Neji - Hinata - Kiba - Shikamaru - Tenten - Gaara - Killer Bee - Kakashi - Itachi - [sistema de Graduação] -Genin -Chunin -Jounin -Anbu [sistema de Saga] -transformar -reverter -Serve para trocar a roupa do seu persoangem, ganha umas roupas novas a cada 25 level upado, dependendo da vocação, isso varia muito. -Exemplo, Naruto tem umas 10 roupas, enquanto tenten tem apenas 4. Nada afeta ao personagem, apenas visualmente mesmo. -Caso deseja alterar para ter efeito em alguma coisa, você pode editar em vocations.xml [sistema de Recompensa] -Npc Oinin coloca a cabeça de jogadores a venda por um determinado preço, e se alguem matar o jogador que tem recompensa ganha algo em troca. [Eventos do Servidor] -Evento Guerra Ninja -Evento Assassin -Evento Roube a Bandeira -Evento Tsuki no Me [sistema de Jutsus] -Posso dizer que todos os jutsus são adequados com o anime NARUTO, dando mais realidade no jogo de naruto. -Exemplo, chidori do sasuke, o personagem ao relizar pula até o jogador para acertar o jutsu. [boss] -Tem o enrredo da historia, ao qual deve matar os Boss do jogo, que na verdade são os membros da Akatsuki. -Cada Boss se encontra em uma parte do mapa, logo abaixo vai ter os detalhes do Mapa! [Task] -Npc Anbu, ele se localiza acima dos trainers, ele realiza as famosas task do opentibia no naruto. Bom.. O melhor mesmo é vocês abrirem e verem do que estou falando, e se adequarem ao jogo. =) Algumas imagems: Desde já aviso, que um bom dedicado é o começo para tudo. Eu iniciei o projeto com dedicado fracos, o que causava lag e kicks. Na minha humilde opnião, a ServerSoft é uma boa empresa de host para opentibia, tendo em vista que a equipe da mesma tem conhecimento com o mundo Opentibia. É isso ae galera, conforme o tempo eu estarei postando umas atualizaçõezinhas Link do download - Atualizado dia 29/03/2013 Updates Não irei mais atualizar o servidor por enquanto, pois existem muitos ladrões de conteudos e créditos no forum, então por hora ficara assim. LINKS PARA INICIANTES Para quem nunca criou um servidor de uma pesquisada na area de iniciantes clicando aqui. Para saber como criar um client proprio clique aqui. Ou então entre no site http://vapus.net/customclient e crie por la mesmo. E claro, todos os devidos créditos pelo projeto, mesmo sendo um único script. Naruto Open Wings v1.2 {o começo de tudo} Lks {RobinHood} Jhon992 Eskylo Vodkart Demonbholder Oneshot Slicer SkyMagmum Kydrai Christian Letti LuckOake Acredito que tem os créditos de todos(msm sendo 1 script.lua), mesmo aqueles que nem sabe que ajudaram. Caso faltou alguem é só falar =)1 point
-
[Pokemon] PDA By Slicer Pokemon dash advanced editado por slicer, vários bugs retidos. Projeto encerrado! Espero que todos tenham gostado desse 1 ano de trabalho duro! Todas as atualizações: * Leiam e sigam as instruções do Change Log dentro da pasta do patch! Downlaods: PDA By Slicer With Level System v2.9 Full -> http://www.mediafire...z2afuu75zblvmvq PDA By Slicer Without Level System v1.9 Full -> http://www.mediafire...td0l0ip9ajprrbf OTClient editado 2.8/1.8 => http://www.mediafire...1lcbs1fktpm676w Atualizações: EH OBRIGATORIO O USO DESSE CLIENT ABAIXO E USEM O .PIC TB!!!!!!!!! Client v1.9/2.9 => http://www.mediafire...77i414v1hy187fj Patch v1.9 => http://www.mediafire...da4umj3ip18jrf1 Patch v2.9 => http://www.mediafire...7nt275td9afl1fy Patch v1.9.1 => http://www.mediafire.com/?i3flwa3lrd016zl Patch v2.9.1 => http://www.mediafire.com/?m4zhjgn62uow1sp Obs: Atualizaçoes mais antigas estao dentro do spoiler acima!! OTAL.DLL: OBS: caso n esteja aparecendo a barra de moves no client normal do tibia, baixem essa .dll e coloquem na pasta onde fica o Pokemon_nibe.exe ... Otal.rar Patch Correçao! Todos olhem! Bugs na nova atualizaçao? Olhe o spoiler e veja se arruma o problema! Atualizado: 08/02/13 Créditos: Otal.rar1 point
-
[Talk] Comando Mute Atualizado
narutomaniacos reacted to Vodkart for a topic
Em talkactions/script muteplayer.lua local v = {} for k = 1, 100 do table.insert(v, createConditionObject(CONDITION_MUTED)) setConditionParam(v[k], CONDITION_PARAM_TICKS, k*60*1000) end function onSay(cid, words, param) if (words == "/mute") then local t = string.explode(param, ",") if param == '' then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") return true end local player,time,pid = getPlayerByName(t[1]),t[2],getPlayerByNameWildcard(t[1]) if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player with this name doesn\'t exist or is offline.") return TRUE end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você mutou o jogador "..t[1].." por "..time.." minutos.") doAddCondition(player, v[tonumber(time)]) setPlayerStorageValue(player, 90000, os.time()+time*60) doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Você foi mutado por "..time.." minutos.") elseif (words == "/desmute") then if param == '' then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Invalid param specified.") return true end local player = getPlayerByNameWildcard(param) if(not player)then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player not found.") return true end if getCreatureCondition(player, CONDITION_MUTED) == false then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "este jogador não está mutado.") return true end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você desmutou o jogador "..param..".") doRemoveCondition(player, CONDITION_MUTED) setPlayerStorageValue(player, 90000, -1) doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Você foi desmutado.") end return true end talkactions.xml <talkaction log="yes" words="/mute;/desmute" access="2" event="script" value="muteplayer.lua"/> Comando: /mute NOME,MINUTOS /desmute NOME Em creaturescript/script mute_check.lua local v = {} for k = 1, 100000 do table.insert(v, createConditionObject(CONDITION_MUTED)) setConditionParam(v[k], CONDITION_PARAM_TICKS, k*1000) end function onLogin(cid) if getPlayerStorageValue(cid, 90000) >= os.time() then doAddCondition(cid, v[tonumber(getPlayerStorageValue(cid, 90000) - os.time())]) end return TRUE end creaturescript.xml <event type="login" name="MutePlayer" event="script" value="mute_check.lua"/>1 point -
[9.60] Azeroth RPG
Arisen Trapzer reacted to Vmspk for a topic
Azeroth Server Updated 28/01/2013: v2.0 by Vmspk Este servidor foi disponibilizado para você gratuitamente, nunca retire os créditos Versões Anteriores: v1.0 [8.70]: http://www.xtibia.co...server-updated/ v1.1 [8.60]: http://www.xtibia.co...oth-rpg-reborn/ Versão: 9.60 Distro: TFS 0.4 Mapa Base: Yourots Edited e Mix Yourots Features: > 7 Cidades: Azeroth Avalon Zatur Liberty Bay Gloria Sand Trap Tiquanda > Mapa RPG bem detalhado para Ots Low e Mid rate. > Inúmeras invasões automáticas, Low e High lvl (ou iniciadas pelo comando /raid "nome"). > NPCs de Travel/Boat diferentes para cada cidade. > Mais de 100 quests (além das principais) espalhadas pelo mapa. > Quests especiais com NPCs > Arena PvP sem perda de items. > Sistema de Guerras pelo Castelo [entre guilds] (mais detalhes abaixo) > Sistema de Refinamento e Slot (mais detalhes abaixo). > Sistema de Mineração (mais detalhes abaixo) > Scripts e sistemas aprimorados para o servidor > Distro SEM erro algum > Equipamentos 9.60 funcionando corretamente > Novas Hunts > Raids de bosses 9.60 > Montarias por quest > Principais Quests: Annihilator Blue Legs Pits of Inferno MMS The Inquisition The Death FireWalker Boots Demon Helmet Draken Hell Conquer Prismatic Armory Deepling Abismal > 27 Raids Automáticas e configuradas: > Sistema de Guerras pelo Castelo [Honor Castle, a oeste de Azeroth] Evento automático. Quando a guerra é anunciada as guilds podem batalhar pelo controle do castelo, dando use no monumento do último andar e permanecendo assim até a guerra acabar. O último jogador a ter o controle do castelo antes do tempo acabar será o vencedor, e sua guild se tornará dona do castelo. Todos os membros da Guild ganharão uma recompensa e poderão acessar o mapa do subsolo. Os membros de outras Guilds serão teleportados para o templo e não poderão acessar o castelo. O sistema envia mensagens a todos antes de o evento começar, quando começar, quando o dono do castelo muda, antes de se finalizar e ao finalizar, relatando o conquistador do castelo e a guild vencedora. Imagens: Raids Honor Castle War Upgrade & Slot System > Histórico: V 0.2 V 0.3 V 0.4 V 1.0 V 1.1 V 2.0 Não há teleports diretos para hunts ou quests. Não há items ou monstros editados(além dos trainers). Não há sistema VIP, VIP 2, VIP 3, VIP 345456364. Não há raids com monstros excessivamente fortes nas cidades iniciais. Créditos: < Unknow YourOts Edited >< Mix Yourots Team >< Crystal Server Team >< Tryller >< Mock >< TFS Team >< TonyHanks >< Centera World >< SmoOker >< Mappers Xtibia e OtservBr >< Vmspk > (Este servidor foi disponibilizado para você gratuitamente, nunca retire os créditos) DOWNLOADS > Opcionais Utilitários - Source *Utilitários inclui: SQLite Studio + Otland Ipchanger > Servidor Azeroth Server v2.0 [MEDIAFIRE] Para entrar no servidor sem usar a internet, ponha no ipchanger localhost Se você estiver usando sqlite, vá até o config.lua e mude ingameGuildManagement = false para ingameGuildManagement = true > Scan Acc do GOD: vmspk/222222 Comandos: !war para executar a guerra pelo castelo manualmente, !reset para interromper o funcionamento da war e !castle para limpar todos os dados, ou seja, o castelo volta a ser terra de ninguém. !info para saber mais sobre as novidades do Azeroth Server. Editável na pasta do Ot, em Notícias. Comando !bless e !rank disponíveis. Para saber os IDs das pedras e outras coisas vá ao Histórico, na versão 1.0. Se acha que ter um OtServ é só baixar, abrir e largar lá, ou ainda editar chars e equipamentos para você mesmo jogar e fazer o que quiser, garanto-lhe que não vai durar 2 dias. Conheça o mapa, crie eventos, interaja com os jogadores, faça torneios Pvp, marque datas para a Honor Castle, faça updates no mapa, crie monstros, hunts e quests, dê suporte e, o mais importante, mantenha o HELP aberto, sempre. Contato: vmspk@hotmail.com Os arquivos dos ots 9.60 estavam muito errados e incompletos, ou melhor, podres. Não duvido que a maioria desses 9.60 postados aqui ou nos outros fóruns estejam infestados de bugs e coisas que não funcionam. Loots errados, monstros copiados, escadas sem registros, novos equipamentos sem movements (propriedades não faziam efeito), bordas de mapas 9.60 fora do lugar, scripts simples como os de Locked Doors em conflito com a lib, etc, etc. Tive um trampo do cão pra arrumar tudo isso. Do meu suor eu digo a vocês, dou-lhes o melhor servidor 9.60 (pelo menos por enquanto) Conheça também o 4Fun Server 9.11 point -
[8.6] GLOBAL ABSOLUTE 100% FULL
Faabiodias reacted to mkbrabsolute for a topic
Informações do Servidor: Mapa Global 100% Addon Bonus 100% Todas magias do 8.6 Todas quests do 8.6 Npcs 98% Servidor com mínimo de bug's possíveis Sem bugs de GPS. Scripts Exclusivos Guild War sistem (com escudinhos) (que gay) Todas Houses Todos Montros (Incluindo ZAO Monstros) Entre muitas outras coisas! * Cidades: - Yalahar - Carlin - Ab'Dendriel - Kazordon - Thais - Venore - Darashia - Ankramun - Edron - Port Hope - Liberty Bay - Svargrond - Cormaya - Zao (With North) - Farmine - 2 Cidades VIP * Quests: - Arena Quest - Demon Oak - Demon Helmet - Inquisition Quest - Anihileator Quest - Pits of Infernum (POI) - HOTA Quest - Sistemas de Tasks - Crown Quest - Behemonth Quest - Blue Legs - BK - Bright Sword - Naginata - Vamp Shield - Fire Axe - Mermaid Comb - Orc Fortress - Medusa Shield - Dark Shield - Noble Armor - Desert Quest - Stealth Ring - Mad Mage Room - Entre demais quests... Account do ADM: god/god (sqlite) Servidor também roda em MYSQL (é até melhor) no sqlite da um erro de coluna vip_time na distro mas não afeta na jogabilidade, qualquer coisa troque o vip system OBS: Servidor para rodar em windows é necessário mínimo 3GB de memória RAM. Imagens: DOWNLOAD: http://www.4shared.c...TE_GLOBAL.html? SCAN:https://www.virustot...sis/1360209156/ -* Créditos: Dylanaw TFS TEAM MKBRABSOLUTE e os demais aí que posso ter esquecido Ajudei? Pô REP+ Aí Bom Proveito!1 point -
Mapa igual do Naruto Shinobi.
PxNzMariaLongo reacted to Mattziin for a topic
Aew galera, Eu tava na net esses dias, e vi um lek vendendo um ot muito igual o naruto shinobi. Disse ele q comprou do beeki. ai eu comprei, e decidi postar o mapa para vcs Fotos\/ Mini Map Download do Mapa : Clique Aqui Dat e spr : Clique Aqui Espero que gostem. Créditos: RobinHood. Ao thiago que me vendeu. Ao beeki q vendeu para ele. e para mim por postar XD1 point -
[8.54] Pokemon Dash Advanced [Version = Tonynamoral]
notFoxTro reacted to tonynamoral for a topic
Olá galera , hoje eu vim postar o meu servidor de pokemon. Nele Contém Tudo o que voce conhece em um servidor PDA Ele tem de Inovador , Pokemon/Moves BAR 100% , com os pokemons mudando quando voce loga , com o status do pokemon mudando a cada hit que ele toma , as magias mudando cada vez que voce usa um pokemon , o estado , quando voce usa uma magia Nele contém também , Passive System 100%, E Muitos outros sistemas... Irei Disponibilizar o Download do Server Aqui Link -> Click Aqui <- Client com a DLL , Client Reuploadado , por min no MediaFire. (Client feito por min , porque o client POKE , que estava disponibilizado , nao estava com o LINK FREE , entao eu pus esse que encontrei no meu computador) Link -> Click Aqui <- Creditos [brun123 Mastercraft] --> Criadores do Pokemon dash Advanced (Server que eu usei como base) Tonynamoral [EU] --> Eu arrumei muitos bugs , criei restarter , coloquei o cooldown bar para funcionar. KPDO --> Pelo mapa que eu estou usando no servidor Qualquer Duvida Que For , é so perguntar !! Ajudei ?? REP+1 point -
Pokemon Mysterion - PM.
Mykez reacted to StyloMaldoso for a topic
Olá pessoal, resolvi da a volta por cima, e sim trabalha ao meu projeto de pokémon, mais não sera um servídor assim, fica online 3 meses e desapareçe do nada, e sim sempre inovando a cada dia, talvéz porque não? uns dos melhore servídor pokémon. Resolvi cria esse topíco para informa as coisas que eu e a equipe do Pokemon Mysterion realizando no servídor. O Servidor tem data prevista sim, mais não o dia e sim o mês sim, Tentaremos abrir em MARÇO no começo de março ou no fim. Intão, não sei se alguem daqui ja jogou pokemon mysterion no começo de 2011, ou no fim de 2010..era um otímo servídor, pena que fexamos por motívo de não temos lucrado o suficiente para manter o servídor online. E Sim voltei com tudo e com uma equipe boa,Temos tudo para ser uns dos melhores..Mais vocêis parão e pensa, porque vai usa o nome do servídor pokemon Mysterion.Eu acho que eu tenhu DIREITO de usa-lo o nome, pois eu que di a idéia do nome do servídor, e para não decha ele pra baixo, resolvi reabri-lo. Servidor Base: PDA v1.9 Systemas inovados ~= Icone System (completo) Egg System (construção) Quest/Task (construção) Hoje, não irei falar os systema do servidor exemplo Portrait system 100% não poxa, todo mundo sabe que no dia de hoje os servídores crescerão com a ajuda do Brun123/Slicer, não irei colokar esse systema no topíco porque todo mundo sabe que ja tem. Sobre o mapa ~= Bom o mapa irei começar quando eu termina de faze umas das varias configurações do servídor, o mapa basê sera pdaventures mais ajeitadinho e bunitinho, uma foto do icone system pra não decha o topíco feio ^^ Bom pessoal, hoje to sem tempo pra dar mais informaçoes do servídor e sim amanha dia 07/02/2013 irei postar mais fotos/prints do pokémon mysterion a você. Bom a equipe até agora é. Gabrieltxu ZerefShirou Esse é indeciso, mais nos ajuda e muito !! e Eu. Agradeço e muito o Slicer por me ajuda <31 point -
~~Informações~~: Mapa Venore 9.81; Npcs 9.81; Addons 9.81; Magias 9.81; Monstros 9.81; Items 9.81; Vendedor de Addons; Vendedor de Mounts; Vocações Balanceadas; Servidor 100% Estável; E Muito Mais! ~~Imagens~~: ~~Download~~: http://www.mediafire...3knsxkpch03axyk ~~Scan~~; https://www.virustot...sis/1358264740/ ~~Créditos~~: TFS Team Cipsoft Demonius Animal Pak1 point
-
Anti Account Manager Mage Bomb Crash Eae XTibianos... Beleza? Bom, vamos ao que interessa! Introdução Vocês devem estar se perguntando porque o nome deste tópico é tão grande, vou explicar. Sabe quando você está com seu OT numa boa, e do nada começa a dar umas travadas, então você vai ver e tem algum infeliz utilizando magebomb para logar uns 200 account manager? Então, eu tenho a solução aqui, o script faz o seguinte: Se alguem com o mesmo IP logar x Account Manager, o seu IP será banido por y dias. Porque x e y? Porque pode ser configurado através do script. Instalação Na pasta data\creaturescripts, coloque isso dentro do arquivo creaturescripts.xml: Na pasta \data\creaturescripts\scripts crie um arquivo chamado checkmcmanager.lua Então coloque isto dentro dele: Configuração Para configurar é fácil, na segunda linha do script está assim: local limit,days = 2,360 2 = número máximo de Account Manager. 360 = número de dias que o IP ficará banido. Considerações Finais É isso ae galera, espero que vocês consigam resolver esse problema. Os créditos desse script são 100% do membro Vodkart. Abraços e até mais!</event>1 point
-
Aula Deserto #1 (OÁSIS)
FenixBorges reacted to Kausen for a topic
Hoje vou explicar como criar um "OÁSIS" O que é um Oasis? .Oásis é uma área isolada de vegetação em um deserto, tipicamente vizinho a uma nascente ou fonte de água. Bom vamos começar a explicação da aula 1º Passo. Criaremos suas bordas usado 3 tipo de bordas. -Bordas de terra/água:(4644~4663) -Bordas de pedra/água:(6639~6650) -Bordas de areia/água:(7943~7954) Assim criaremos um formato que fique bonito. 2º Passo Ainda mexendo com as bordas... usando as borda de areia faremos um contorno perto das bordas de pedra, pois mais além vai ter um piso de pedra... Bordas de areia grossa:(8335~8346) Bordas de areia fina :(4773~4783) Bordas de areia espalhada:(4760~4771) OBS: Vocês pode usar umas bordas de grama para dar um charme no mapa.(nunca exagere com grama no deserto) 3º Passo. Adicionando os piso.. piso de pedra:(4405~4421) piso de terra:(103) 4º Passo. natureza. Coisa simples que muitos erram. a natureza do deserto é muito parecido com a classificação da natureza normal. a cada 4~6 sqms vocês faram os grupo de Palmeiras com caquetos e assim por diante. a cada palmeira ou caquetos grande vocês usaram de 1 a 3 caquetos pequenos perto das palmeiras ou caquetos grande, nunca saindo mais longe que 2 sqm, os tufos pode ser usado até 4 no máximo se usar a mais ficará poluído. As mangroves não são tão necessário, só se for sua opção usar para deixar um pouco mais bonito o mapa em si. 5º Passo. Os gravel tanto de pedra,terra ou areia serão adicionado nos lugares certos. Por exemplos o gravel de pedra será coloca perto das pedras grande,perceba que ela fica por cima das bordas de areia.coisa fácil é só colocar as mesmas bordas encima do gravel. 6º Passo. Agora finalizando a aula, colocaremos umas pedrinhas perto das rochas grande e encimas das gravel.. Finalizando. Que quiser colocar um barquinho em seu Oásis para dar um destaque ficara bom... perceba que tem bordas de areia por cima do barco da um olhar de que o barco ta abandonado a tempo ali. e como fazer isso? simples vá ao floor 6 e adicionas ar bordas por cima do barco. alguns falaram que na hora que o player passa ali a bordas ficará por cima dele, e dae? é pra dar um ar de grandeza ao mapa e não será visto como um bug. Ingame. Obrigado pela atenção e até a próxima aula de DESERTO. Gostou REP+1 point -
Olá pessoal, hoje venho demonstrar um otserver derivado, com sourcer, de pokemon. Estou trabalhando nele faz uma semana, junto com meus 'vizinhos de casa'. Nele há muitos sistemas, copiados inteiramente da antiga SvkE. Vou mostrar alguns deles aqui, e necessito da ajuda de vocês para sistemas interativos, um feedback de cada um. O nosso changelog abaixo: SvkE Atualizações: • Retirado alguns scripts inuteis, e otmizados outros. • Pokemons 1ª Geração(Inclusive Shinys) foram reformulados, corretamente. ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- • Hypnosis completamente funcional. • Sleep Powder deixa o monstro mimindo por 10 segundos. • Foods funcionando igual SvkE. OBS.:Chupa danilo • Pokémons selvagens não matam seu "Amigos". • Sistema de Felicidade. OBS.:Chupa danilo ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- • !CD System perfeito • Pokemons apanham de acordo com a fome. • Pokemons batem de acordo com a fome. ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- • Revive 100% funcionau. • Novas pokebolas feitas (dark, love, golden e frash). • Boost System 100% pronto. • Barco System 50% pronto. Falta colocar a rota dele. ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- ----------------------------- Bugs que danilo Achou • Concertados ------------------------------ ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- • M8 - Rest do snorlax, arrumado, ele continuava a andar. • M9 - Metronome da Clefabel. • M6 - Healarea da Wigglytuff. • M2 - Roar do Arcanine. • Nidorans não evoluiam. • M8 - "Selfheal" healava mais que o "healarea", Clefable. • M9 - Restore do Dewgong, reformulado. • Crystal Onix com move1 até move9. • M10 - Wardog do arcanine agora tem que estár colado. • T1, T2, T3 e T4 arrumados, agora sem cooldown. ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- ----------------------------- Bugs que danilo Achou • Concertados ------------------------------ ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- • Burn system, deixa o pokemon incendiado, caso seja atacado por magias prédefinidas. • Ice system, deixa o pokemon com congelado, caso seja atacado por magias prédefinidas. • Venom system, deixa o pokemon com envenenado, caso seja atacado por magias prédefinidas. • Npc que pinta bolas. • Evento, dedicado a waguinho(é wagner), suddenAttack. O player escolhe uma das raças , "Zumbies" ou "Vampiros", as quais tem a missão de acabar com a raça contraria. • Troféus dos torneios. • Torneio adiciona, 1x1. • Adicionado itens de decoração do mapa: • Pokefluts adicionadas. Espero comentários e ideias das quais vocês querem nesse servidor.1 point
-
Olá galera, para testar minhas habilidades de programador em Lua resolvi fazer um programa que cria scripts a seu gosto. Atualmente ele tem suporte para Actions, Talkactions e StepIn (Movement). Nada muito complexo, é apenas pra ajudar os iniciantes mesmo. O programa e sua source seguem em anexo na mensagem. Imagem: OBS: Programa feito em Lua. Download aqui em baixo \/ Lua Script Maker.rar1 point
-
Aula City #3
natanaeljk reacted to vital900 for a topic
Telhados & Ruas Telhados Bom, comecemos pelos tipos de telhados existentes.. Caso você vá ao local de telhados (terrain palette / Roofs).. Basicamente encontrará 8 tipos de telhados, irei mostrar como usa-los em um nível básico. Os tipos de telhados seriam: Agora usando o Auto Border você já consegue, mesmo que ‘FALHAMENTE’ montar alguns tipos de telhados.. Você pode optar por melhorar este Auto border, ou seja.. ‘Reborderizar’ os erros.. Agora, para finalizar estes 4 tipos de telhados você deve detalha-los, com oque vier a sua ‘cabeça’ e que deva combinar com ele e toda a sua obra (‘casa’ e telhado). Itens que podem ser usados.. Folhas/gramas/musgos/pedrinhas/etc.. Como o terceiro tipo de telhado é mais difícil de se dar o ‘acabamento’.. Eis como você pode fazê-lo: Finalizado assim, seus telhados. Obs: a bolota vermelha na terceira etapa do telhado, é indicando um erro que pode ocorrer, e como conserta-lo. Seguindo estes exemplos de criação de telhados, facilmente você poderá fazer telhados como estes: Créditos: SkyWar Ruas Bom, irei encinar dois tipos básicos e fáceis de ruas: TIPO A: Rua simples, boas para um local tranquilo e mais limpo. Tipo B: Rua mais detalhada, nela você deve tomar cuidado na hora de detalhar pois tudo deve ser bem posto OBS: as ruas devem ser detalhas com pedras, gramas e postes.. Já ao redor das ruas (na nature), deve-se por arvores, arbustos, gramas, pedras, flores, etc.. Você pode fazer grandes feitorias usando estes tipos de ruas, como fora bem feito pelo membro Left4Dead1 point -
TESTEI AQUI EM CASA O TUTORIAL PQ AGORA EU TENHO NET COMPARTILHADA ! Brzinhobr aqui para ensinar a criar um otserver 8.7 com net compartilhada e sem hamachi e o melhor Ip fixo ;D ! Primeiro baixe o ProXPN CLIQUE AQUI PARA BAIXAR Agora baixe o No-IP Duc não baixe do baixaki porque la é desatualisado ;] então aqui vai o link -> CLIQUE AQUI PARA BAIXAR Vamos começar ! depois que baixo o proxpn instale normalmente ! agora instale o no-ip duc que baixou quase agora ! agora vamos fazer um cadastro com o proxpn abra-o agora clique em "don't have account" la no programa proxpn vai abrir uma pagina nova clique em "No thanks, I want a proXPN Basic account" na pagina que abriu la em cima ! pronto clicou la agora coloque seu email escolha uma senha e repita a senha aceite a primeira caxinha que ta escrito "I have read and agree to the Terms of Service and Privacy Policy." e depois clique em "create an account". AGORA VAI NA CAIXA DE ENTRADA DO SEU EMAIL ABRA O EMAIL QUE RECEBEU PELO PROXPN CLIQUE NO LINK QUE TA LA PARA ATIVAR A CONTA PRONTO TA ATIVADO! Abra o proxpn novamente coloque seu email la e sua senha que escolheu no cadastro do site ! clique em connect agora espere um pouco, pronto conectou e gerou um novo ip este ip sempre ira mudar ele serve como nao fosse net compartilhada sempre abra o programa conecta e pega o novo ip e coloque no config.lua ! -------------------VAMOS AO IP DO OT---------------------- entre no site http://www.no-ip.com/newUser.php copie esse link < e coloca no navegador ! coloque seus dados la aceite os termos e pronto ! cadastro concluido . agora vamos criar o ip fixo para seus amigos entrarem ! faça login no site no-ip.com com seu email cadastrado e senha. pronto entrou agora clique em "ADD a HOST" pronto em "host name" coloque o nome do seu server sem espaço por ex: meuot.servegame.com coloco o nome la seleciono o dominio servegame.com do lado do nome do server eu recomendo "servegame.com" pronto escolheu clique em "create host" pronto ip fixo criado ! abra-o no-ip o programa, agora que abriu onde ta escrito Ip: 184.6554.6454 algo assim (local) onde ta escrito local era para tar escrito (router e had) algo assim se tibesse assim nao ia pegar so pega se for local , vc deve ta perguntando pq ta (local) pro causa do programa proxpn e ainda o ip do programa ta la ;] clique em "select hosts" aguarde um pouco e clique na caixinha do ip que apareceu . pronto ip fixo pronto ! ---------------Criando seu ot-------------------- Baixe um ot aqui na xtibia seção de downloads 8.7! baixo ele mas os sources dlls e executer extraia o ot e os dlls e os sources, cole as dlls na pasta do ot pega a pasta do source e coloque na pasta do ot ! pronto abra um arquivo chamado "config.lua" desce um pouco e vai ter: -- Connection Config ip = "127.0.0.1" <<< AQUI MUDE PARA O IP DO PROXPN SEMPRE VAI MUDAR O IP DO PROGRAMA ! bindOnlyGlobalAddress = "no" loginProtocolPort = 7171 gameProtocolPort = 7172 adminProtocolPort = 7171 statusProtocolPort = 7171 loginTries = 10 retryTimeout = 5 * 1000 loginTimeout = 60 * 1000 maxPlayers = "1000" motd = "Welcome to the Azeroth Server!" onePlayerOnlinePerAccount = "yes" allowClones = "no" serverName = "Azeroth" loginMessage = "Welcome to the Azeroth Server!" adminLogsEnabled = "no" statusTimeout = 5 * 60 * 1000 replaceKickOnLogin = "yes" DEPOIS SALVE E FECHE O ARQUIVO ABRA O OT CHAME SEUS AMIGOS PARA JOGAR ;D! Se voçe nao entendeu a parte de criar o ot ou outras partes add no msn: matheus.310@live.com! ESSE TUTO FOI CRIADOR POR MIN BRZINHOBR MATHEUS.310@LIVE.COM SE FOR COPIAR O TUTORIAL COLOQUE OS CREDITOS ! --' ODEIO QUEM NAO COLOCA ;D PROXIMO TUTO SERA MAS EXPLICATIVO E COM IMAGENS PROMETO . TESTEI AQUI EM CASA O TUTORIAL PQ AGORA EU TENHO NET COMPARTILHADA ! TUTO BY BRZINHOBR. msn: matheus.310@live.com !1 point
-
Espero que gostem , Presente para overpower .1 point
-
Faz um tempo que não posto imagens aqui então vou postar 3 de uma vez A ultima ta meio incompleta1 point
-
Na minha opinião é o novo 1.8, mas o mais usado é 1.7.3, mais ou menos. Então use-o porque também é bom! aqui o link http://downloads.sourceforge.net/project/xampp/XAMPP%20Windows/1.7.4/xampp-win32-1.7.4-VC6-installer.exe?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fxampp%2Ffiles%2FXAMPP%2520Windows%2F1.7.3%2F&ts=1360277246&use_mirror=ufpr1 point
-
Fire Aura
pokemonfox123 reacted to Oneshot for a topic
Nome: Fire Aura Autor: Oneshot Tipo: Magia Faz tempo que eu não faço magias, então eu resolvi escrever qualquer coisa e deu nisso, uma aura que fica circundando o jogador por X tempo causando dano. Crie um arquivo chamado fire aura.lua, e coloque o conteúdo abaixo: local offsets = { [0] = {{0, 0}, {1, 0}, {1, 1}, {1, 2}, {0, 2}, {-1, 2}, {-1, 1}, {-1, 0}}, [1] = {{0, 0}, {0, 1}, {-1, 1}, {-2, 1}, {-2, 0}, {-2, -1}, {-1, -1}, {0, -1}}, [2] = {{0, 0}, {-1, 0}, {-1, -1}, {-1, -2}, {0, -2}, {1, -2}, {1, -1}, {1, 0}}, [3] = {{0, 0}, {0, -1}, {1, -1}, {2, -1}, {2, 0}, {2, 1}, {1, 1}, {0, 1}} } local storage = 88888 local k = 1 local duration = 30 local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 10, 10, 2.4, 2.4) function onCastAura(cid, lastDirection) local position = getPositionByDirection(getThingPosition(cid), lastDirection, 1) local offset = offsets[lastDirection][(k > #offsets[lastDirection] and ((k % #offsets[lastDirection]) == 0 and #offsets[lastDirection] or (k % #offsets[lastDirection])) or k)] local tmp = {x = position.x + offset[1], y = position.y + offset[2], z = position.z} doCombat(cid, combat, positionToVariant(tmp)) doCreatureSetLookDirection(cid, lastDirection) if os.time() < getCreatureStorage(cid, storage) then addEvent(onCastAura, 100, cid, getCreatureLookDirection(cid)) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, "Aura effect ended.") mayNotMove(cid, false) end k = k + 1 end function onCastSpell(cid, var) doCreatureSetStorage(cid, storage, os.time() + duration) mayNotMove(cid, true) onCastAura(cid, getCreatureLookDirection(cid)) return true end No spells.xml, adicione uma linha: <instant name="Fire Aura" words="fire aura" lvl="100" mana="550" needlearn="0" event="script" value="fire aura.lua"/> A magia tem uma duração de 30 segundos, porém essa duração é configurável. Como ainda não criei uma lógica relacionando o movimento do jogador com a aura, então resolvi travar o movimento do jogador enquanto a magia é executada. Abaixo a demonstração em GIF dela. O script está bem pogado, talvez eu consiga entender melhor o padrão e melhorar a construção do código. Mude aqui efeito e tipo de dano se quiser, para criar outras auras: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -20, 10, 10, 2.4, 2.4) Abraços.1 point -
Vá em data/creaturescripts/script e crie mute_check.lua e ponah isto dentro. Em creaturescripts.xml add <event type="login" name="MutePlayer" event="script" value="mute_check.lua"/> e em data/talkactions/script crie multicheck.lua e add. Em talkactions.xml add <talkaction log="yes" words="/mute;/desmute" access="2" event="script" value="muteplayer.lua"/> em acess você pode muda quem vai usa no caso eu coloquei de tutor acima. se deseja Senior tutor 3 GM 4 CM 5 ou somente God access 6 Quem me passou esse script foi o DinoAdmin ( : Comando , /mute Shyrriro,5 /desmute Shyrriro este 5 simboliza a quantidade em minutos no caso ficarei 5 minutos sem poder falar algo :XXXX1 point
-
Erro no INSTAL.PHP
lucashdias reacted to Roksas for a question
Pra resolver vai assim, creio que seja XAMPP ENTAO. vá na pasta xampp/php, procure pelo arquivo php.ini, abra-o, Procure por: error_reporting = E_ALL Substitua por: error_reporting = E_ALL & ~E_NOTICE ;D1 point -
Mini Vilarejo 2.0
felipecolor123 reacted to vital900 for a topic
Favor, não ficar criando varios show off's, independente da sua melhora em mapping.. irei fechar o seu antigo.. espero que isto não repita.1 point -
1 point
-
Pokemon Mysterion - PM.
LuckinhaSan reacted to StyloMaldoso for a topic
kkk, né xD vlw pessoal, acabei de chega da escola, vou começar posta mais prints ! Bom só pra não perde o ritímo, irei postar algumas prints do servídor, não é nada NOSSa que daora, pois ja to terminando os icon kanto (: Chang Log: v0.0 * Icone System 90%. * todos cds arrumado inclusive kanto/shiny. (feito) Icone System. BETA ! Novo shiny igual da PxG, no total terá 9 adicionados ! só irei demostrar 3 prints contendo ele nelas. Novas balls, se você cata algum pokémon shiny a pokeball ira ficar com esse efeito, e também se você bostar algum pokémon + 10 a ball fica com esse efeito também. Não liguem pela desgornalização da minha bag uhahua ! Shiny Mr. Mime, concerteza. meu pokémon preferido *-* Agora alguns intens novo, e inclusive quando eu termina de configura TODOs icone eu vou adiciona centenas de intens novos ^^ Bom, o mapa eu irei começar a editar semana quivem..dia 15 ou 17 eu ja começo, ai ja é mais informaçoes pra voceis, equanto isso eu ajeito o servídor hehe. abraços1 point -
[Encerrado] [8.6] VIP de graça para todos no BAIAK
Nabinoide reacted to BigApple4i20 for a topic
Simples uai , Cria uma nova entrada pra ela e não fais house faça apenas um teleport ;D , caso se tiver falando das vip1 2 3 , Vai no remeres map editor Clika no piso da entrada das vip e bota 0 TI AJUDEI ? REP+ custa nd1 point -
Removendo alguém da foto (Airbrushing)
Gabriel Couto reacted to DiogoTemporario for a topic
http://en.wikipedia.org/wiki/Airbrush#Photo_retouching Bem informal, se curtirem peçam mais vídeos. Dúvidas só perguntar, flw http://www.youtube.com/watch?v=gw-b4so68EA1 point -
@Tonynh , fiz essa de homenagem e você , se não gostar eu mudo alguns detalhes1 point
-
@vital: é que estou sem internet e vi ontem a imagem, desculpe-me @topic: uma beeeem old:1 point
-
Parabens Smix, Más Uma Vez Deixando Todos Do XTibia De Boca Aberto kkkk', Brinks, Más Você Tá De Parabens, Boa Sorte Ai Manin!1 point
-
Você modificou no .dat do cliente também? Se não, tem que colocar como stackable no .dat.1 point
-
1 point
-
hum... provavelmente o problema esta aki.. local name = getItemName(item.uid):lower() manda como ta o nome de 1 poke q n ta funciona... e tb como ta o nome do corpse dele no items.xml ... -se tu n coloco nome nos corpses la, coloque q deve funcionar...-1 point
-
aii malandrinho joia? ta aii o link pra vc!1 point
-
Duvida sobre um script
pedrowarlock reacted to RicardoIanelli for a question
Ah sim, desculpa, achei que fosse esse o problema, mas agora vi realmente o que é kkkk Ontem olhei com sono, isso que dá. O problema é que a setStorage recebe como parâmetro um uint32_t e uma string, e você tá passando duas uint32_t. Tem que converter ^^ Muda isso: uint32_t stPlayerID = player->getID(); uint32_t stLeaderID = leader->getID(); leader->setStorage(93001,stPlayerID); player->setStorage(93002,stLeaderID); Pra isso: std::stringstream stPlayerID; std::stringstream stLeaderID; stPlayerID << (uint64_t)player->getID(); stLeaderID<< (uint64_t)leader->getID(); leader->setStorage(93001,stPlayerID.str()); player->setStorage(93002,stLeaderID.str());1 point -
Mapa igual do Naruto Shinobi.
ThiagoXtibiaRadbr reacted to vinnevinne for a topic
aew tem como passar o pic do client pq da erro em algumas cidades pq eu to usando o pic do nto brasil se me passar dou rep e tmbm se for possivel a pasta dat/monster,spells,talkations... plx do reep ++++1 point -
HAHA, sim, é apenas uma parte incrível do Design, é bastante demorado e difícil fazer algo do gênero, mas sempre resulta em coisas muito boas, =p1 point
-
[Encerrado] Investir
gudgustavo reacted to marciks for a topic
aew cara global se tu quizer investir é bom 9.8 atualizado pra achar scripter é dificil pq a maioria so ta querendo vaga '-' eu puiz um global 8.6 online deu mt poko player.. um exemplo, o shadow cores o top ot da ot list aquilo la é mo doidera tem uma grande equipe o pessoal manja bastante,pra investir seria bom um mapa proprio tipo o rozinx o dono começo se nao me engano do 0.. fez sucesso por isso eu digo se for fazer um global tem que caprixar mas se voce conhecer pessoas confiaveis se pode monta uma staff e criar um ot proprio com donates e tudo mais se for pra investir melhor ainda.1 point -
Woow, onde tu ta conseguindo esses mapas cara? , btw servidor testado e aprovado. Reportado para moverem.1 point
-
Aula City #1
ramonmoreti reacted to vital900 for a topic
Muralhas! Introdução Para se iniciar esta primeira aula sobre cidades, proponho um tema de nível não tão básico. Porém de extrema necessidade e de grande importância, O Grande Portão de entrada de uma cidade, as Muralhas! Materiais Você pode usar diversos tipos de materiais, irei fazer este tutorial demonstrando 2 tipos, e farei apenas uma muralha, do tipo que eu acho mais ‘fascinante’ a entrada de um reino, com vários tipos de proteção (arqueiros de vigília, guardiões, entre outros). Veja os itens que usaremos e que podemos usara para construir a estrutura : Madeira / X / Pedra Fazendo a base da muralha Como eu irei fazer ‘a cara’ (entrada) da muralha primeiro, aqui vai um exemplo de como fazê-la. Fazendo a base Primeiro eu decoro, usando itens como (estatuas, tochas, cadeiras, etc..) para depois ‘colocar o piso’. Montando o chão, com seus efeitos (o chão por ser de madeira permite ao mapper o uso de rachaduras, musgos [fungos/lodo] e até mesmo algumas gramas [as mais fracas]) usando algum destes detalhes citados, você dá um maior ar de RPG para com o seu mapa. Segundo piso Ponha o piso a sua escolha (eu fui meio infeliz em minha escolha, porém não totalmente). Coloque as bordas nos locais necessários. Agora dê o ‘acabamento’ (colocar paredes, e outros 'mini-detalhes') deste andar. Detalhe-o de sua forma. Você pode optar por fazê-lo de uma forma mais limpa, ou; -FOTO 1- Você pode optar por fazê-lo de uma forma mais 'suja' (detalhado). -FOTO 2- Terceiro piso Siga os mesmos passos, feitos até então (monte a base, ponha os detalhes e finalmente o piso). Colocarei só como ficou o resultado deste meu andar e depois o da minha muralha. Extras/Adicionais Fazendo a prolongação da muralha. Para prolongar a muralha, você deve abusar de sua criatividade, assim como em todas as áreas de seu map. Lembre-se uma área quanto mais criativa e coerente mais bela se apresentará! Vamos la! Você deve criar uma porta que dê para um corredor (opcional), para fazê-lo tirei a planta. Agora basta por o chão e detalha-lo Agora o que fazer quando para se seguir com a muralha você se depara com este impasse Têm varias formas de sair desta situação como: A que eu mais prefiro \/ Bom isto é tudo por enquanto, até a próxima aula galera. Espero que eu tenha os ajudado! Créditos: 100% vital9001 point -
escreva local antes de function onDash, pois do jeito que você está fazendo, a função é de escopo global e escreve por cima das outras funções na hora de carregar as spells, ficando: local function onDash1 point
-
[GESIOR] VictorWEBMaster 2019v
lemooca reacted to mascumbado for a topic
Nuss que massa, teu site é mto foda mesmo kra, está de parabéns, tirando lá o erro que tem mas é bem simples de vender item vip na parte vip no shop, ta show de bola, parabéns pelo trabalho REP + Ae brother, eu arrumei lá o erro que vc n conseguiu arrumar dos items vip. Se quiser ta ai. <?PHP if($config['site']['shop_system'] == 1) { if($logged) $user_premium_points = $account_logged->getCustomField('premium_points'); else $user_premium_points = 'Login first'; function getItemByID($id) { $id = (int) $id; $SQL = $GLOBALS['SQL']; $data = $SQL->query('SELECT * FROM '.$SQL->tableName('z_shop_offer').' WHERE '.$SQL->fieldName('id').' = '.$SQL->quote($id).';')->fetch(); if ($data['offer_type'] == 'pacc') { $offer['id'] = $data['id']; $offer['type'] = $data['offer_type']; $offer['days'] = $data['count1']; $offer['points'] = $data['points']; $offer['description'] = $data['offer_description']; $offer['name'] = $data['offer_name']; } elseif ($data['offer_type'] == 'item') { $offer['id'] = $data['id']; $offer['type'] = $data['offer_type']; $offer['item_id'] = $data['itemid1']; $offer['item_count'] = $data['count1']; $offer['points'] = $data['points']; $offer['description'] = $data['offer_description']; $offer['name'] = $data['offer_name']; } elseif ($data['offer_type'] == 'vipdays') { $offer['id'] = $data['id']; $offer['type'] = $data['offer_type']; $offer['days'] = $data['count1']; $offer['points'] = $data['points']; $offer['description'] = $data['offer_description']; $offer['name'] = $data['offer_name']; } elseif ($data['offer_type'] == 'itemvip') { $offer['id'] = $data['id']; $offer['type'] = $data['offer_type']; $offer['item_id'] = $data['itemid1']; $offer['item_count'] = $data['count1']; $offer['points'] = $data['points']; $offer['description'] = $data['offer_description']; $offer['name'] = $data['offer_name']; } elseif ($data['offer_type'] == 'container') { $offer['id'] = $data['id']; $offer['type'] = $data['offer_type']; $offer['container_id'] = $data['itemid2']; $offer['container_count'] = $data['count2']; $offer['item_id'] = $data['itemid1']; $offer['item_count'] = $data['count1']; $offer['points'] = $data['points']; $offer['description'] = $data['offer_description']; $offer['name'] = $data['offer_name']; } elseif ($data['offer_type'] == 'unban') { $offer['id'] = $data['id']; $offer['type'] = $data['offer_type']; $offer['points'] = $data['points']; $offer['description'] = $data['offer_description']; $offer['name'] = $data['offer_name']; } elseif ($data['offer_type'] == 'redskull') { $offer['id'] = $data['id']; $offer['type'] = $data['offer_type']; $offer['points'] = $data['points']; $offer['description'] = $data['offer_description']; $offer['name'] = $data['offer_name']; } elseif ($data['offer_type'] == 'itemlogout') { $offer['id'] = $data['id']; $offer['type'] = $data['offer_type']; $offer['points'] = $data['points']; $offer['description'] = $data['offer_description']; $offer['pid'] = $data['pid']; $offer['count1'] = $data['count1']; $offer['item_id'] = $data['itemid1']; $offer['free_cap'] = $data['free_cap']; } elseif ($data['offer_type'] == 'changename') { $offer['id'] = $data['id']; $offer['type'] = $data['offer_type']; $offer['points'] = $data['points']; $offer['description'] = $data['offer_description']; $offer['name'] = $data['offer_name']; } return $offer; } function getOfferArray() { $offer_list = $GLOBALS['SQL']->query('SELECT * FROM '.$GLOBALS['SQL']->tableName('z_shop_offer').';'); $i_pacc = 0; $i_item = 0; $i_vipdays = 0; $i_itemvip = 0; $i_container = 0; $i_unban = 0; $i_redskull = 0; $i_itemlogout = 0; $i_changename = 0; while($data = $offer_list->fetch()) { if ($data['offer_type'] == 'pacc') { $offer_array['pacc'][$i_pacc]['id'] = $data['id']; $offer_array['pacc'][$i_pacc]['days'] = $data['count1']; $offer_array['pacc'][$i_pacc]['points'] = $data['points']; $offer_array['pacc'][$i_pacc]['description'] = $data['offer_description']; $offer_array['pacc'][$i_pacc]['name'] = $data['offer_name']; $i_pacc++; } elseif ($data['offer_type'] == 'item') { $offer_array['item'][$i_item]['id'] = $data['id']; $offer_array['item'][$i_item]['item_id'] = $data['itemid1']; $offer_array['item'][$i_item]['item_count'] = $data['count1']; $offer_array['item'][$i_item]['points'] = $data['points']; $offer_array['item'][$i_item]['description'] = $data['offer_description']; $offer_array['item'][$i_item]['name'] = $data['offer_name']; $i_item++; } elseif ($data['offer_type'] == 'vipdays') { $offer_array['vipdays'][$i_vipdays]['id'] = $data['id']; $offer_array['vipdays'][$i_vipdays]['days'] = $data['count1']; $offer_array['vipdays'][$i_vipdays]['points'] = $data['points']; $offer_array['vipdays'][$i_vipdays]['description'] = $data['offer_description']; $offer_array['vipdays'][$i_vipdays]['name'] = $data['offer_name']; $i_vipdays++; } elseif ($data['offer_type'] == 'itemvip') { $offer_array['itemvip'][$i_itemvip]['id'] = $data['id']; $offer_array['itemvip'][$i_itemvip]['item_id'] = $data['itemid1']; $offer_array['itemvip'][$i_itemvip]['item_count'] = $data['count1']; $offer_array['itemvip'][$i_itemvip]['points'] = $data['points']; $offer_array['itemvip'][$i_itemvip]['description'] = $data['offer_description']; $offer_array['itemvip'][$i_itemvip]['name'] = $data['offer_name']; $i_itemvip++; } elseif ($data['offer_type'] == 'container') { $offer_array['container'][$i_container]['id'] = $data['id']; $offer_array['container'][$i_container]['container_id'] = $data['itemid2']; $offer_array['container'][$i_container]['container_count'] = $data['count2']; $offer_array['container'][$i_container]['item_id'] = $data['itemid1']; $offer_array['container'][$i_container]['item_count'] = $data['count1']; $offer_array['container'][$i_container]['points'] = $data['points']; $offer_array['container'][$i_container]['description'] = $data['offer_description']; $offer_array['container'][$i_container]['name'] = $data['offer_name']; $i_container++; } elseif ($data['offer_type'] == 'unban') { $offer_array['unban'][$i_unban]['id'] = $data['id']; $offer_array['unban'][$i_unban]['points'] = $data['points']; $offer_array['unban'][$i_unban]['description'] = $data['offer_description']; $offer_array['unban'][$i_unban]['name'] = $data['offer_name']; $i_unban++; } elseif ($data['offer_type'] == 'redskull') { $offer_array['redskull'][$i_redskull]['id'] = $data['id']; $offer_array['redskull'][$i_redskull]['points'] = $data['points']; $offer_array['redskull'][$i_redskull]['description'] = $data['offer_description']; $offer_array['redskull'][$i_redskull]['name'] = $data['offer_name']; $i_redskull++; } elseif ($data['offer_type'] == 'itemlogout') { $offer_array['itemlogout'][$i_itemlogout]['id'] = $data['id']; $offer_array['itemlogout'][$i_itemlogout]['points'] = $data['points']; $offer_array['itemlogout'][$i_itemlogout]['description'] = $data['offer_description']; $offer_array['itemlogout'][$i_itemlogout]['name'] = $data['offer_name']; $offer_array['itemlogout'][$i_itemlogout]['count1'] = $data['count1']; $offer_array['itemlogout'][$i_itemlogout]['pid'] = $data['pid']; $offer_array['itemlogout'][$i_itemlogout]['item_id'] = $data['itemid1']; $offer_array['itemlogout'][$i_itemlogout]['free_cap'] = $data['free_cap']; $i_itemlogout++; } elseif ($data['offer_type'] == 'changename') { $offer_array['changename'][$i_changename]['id'] = $data['id']; $offer_array['changename'][$i_changename]['points'] = $data['points']; $offer_array['changename'][$i_changename]['description'] = $data['offer_description']; $offer_array['changename'][$i_changename]['name'] = $data['offer_name']; $i_changename++; } } return $offer_array; } if($action == '') { unset($_SESSION['viewed_confirmation_page']); $main_content .= '<h2><center>Welcome to '.$config['server']['serverName'].' Shop</center></h2>'; $offer_list = getOfferArray(); //show list of vipdays offers if(count($offer_list['vipdays']) > 0) { $main_content .= ' <div class="TableContainer"> <div class="CaptionContainer"> <div class="CaptionInnerContainer"> <span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> <span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);"></span> <span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);"></span> <div class="Text">Enhance Account</div> <span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);"></span> <span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);"></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> </div> </div> <table class="Table5" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <div class="InnerTableContainer"> <table style="width:100%;"> <tbody> <tr> <td> <div class="TableShadowContainerRightTop"> <div class="TableShadowRightTop" style="background-image:url('.$layout_name.'/images/content/table-shadow-rt.gif);"></div> </div><div class="TableContentAndRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-rm.gif);"> <div class="TableContentContainer"> <table class="TableContent" style="border:1px solid #faf0d7;" width="100%"> <tbody> <tr bgcolor="#D4C0A1"> <td valign="middle" align="center"><b>Product</b></td> <td valign="middle" width="60%"><b>Description</b></td> <td valign="middle"> </td> </tr>'; foreach($offer_list['vipdays'] as $vipdays) { if(!is_int($number_of_rows / 2)) { $bgcolor = $config['site']['lightborder']; } else { $bgcolor = $config['site']['darkborder']; } $number_of_rows++; $main_content .= '<tr bgcolor="'.$config['site']['lightborder'].'"><td valign="middle" align="center"><img src="images/shop/vip.gif" /></td><td><b>'.$vipdays['name'].'</b> ('.$vipdays['points'].' points)<br />'.$vipdays['description'].'</td><td align="center">'; if(!$logged) $main_content .= '<input type="button" value="Login First" disabled="disabled" />'; else $main_content .= '<form action="index.php?subtopic=shopsystem&action=select_player" method=POST><input type="hidden" name="buy_id" value="'.$vipdays['id'].'"><input type="submit" value="Comprar" /></form>'; $main_content .= '</td></tr>'; } $main_content .= '</tbody> </table> </div> </div> <div class="TableShadowContainer"> <div class="TableBottomShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bm.gif);"> <div class="TableBottomLeftShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bl.gif);"></div> <div class="TableBottomRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-br.gif);"></div> </div> </div> </td> </tr> </tbody> </table> </div> </td> </tr> </tbody> </table> </div><br />';} //show list of itemsvip offers if(count($offer_list['itemvip']) > 0) { $main_content .= ' <div class="TableContainer"> <div class="CaptionContainer"> <div class="CaptionInnerContainer"> <span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> <span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);"></span> <span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);"></span> <div class="Text">Enhance Account</div> <span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);"></span> <span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);"></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> </div> </div> <table class="Table5" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <div class="InnerTableContainer"> <table style="width:100%;"> <tbody> <tr> <td> <div class="TableShadowContainerRightTop"> <div class="TableShadowRightTop" style="background-image:url('.$layout_name.'/images/content/table-shadow-rt.gif);"></div> </div><div class="TableContentAndRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-rm.gif);"> <div class="TableContentContainer"> <table class="TableContent" style="border:1px solid #faf0d7;" width="100%"> <tbody> <tr bgcolor="#D4C0A1"> <td valign="middle" align="center"><b>Product</b></td> <td valign="middle" width="60%"><b>Description</b></td> <td valign="middle"> </td> </tr>'; foreach($offer_list['itemvip'] as $itemvip) { if(!is_int($number_of_rows / 2)) { $bgcolor = $config['site']['lightborder']; } else { $bgcolor = $config['site']['darkborder']; } $number_of_rows++; $main_content .= '<tr bgcolor="'.$config['site']['lightborder'].'"><td valign="middle" align="center">'; if(file_exists('images/items/'.$itemvip['item_id'].'.gif')) { $main_content .= '<br /><img src="images/items/'.$itemvip['item_id'].'.gif" height="32" width="32"><br /><small><b>'.$itemvip['name'].'</b></small><br /> '; } else { $main_content .= '<br /> <img src="images/monsters/nophoto.png" height="32" width="32"><br /><small><b>'.$itemvip['name'].'</b></small>'; } $main_content .='</td><td><b>'.$itemvip['name'].'</b> ('.$itemvip['points'].' points)<br />'.$itemvip['description'].'</td><td align="center">'; if(!$logged) $main_content .= '<input type="button" value="Login First" disabled="disabled" />'; else $main_content .= '<form action="index.php?subtopic=shopsystem&action=select_player" method=POST> <input type="hidden" name="buy_id" value="'.$itemvip['id'].'"> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td style="border: 0px none;"> <div class="BigButton" style="background-image: url('.$layout_name.'/images/buttons/sbutton.gif);"> <div onmouseover="MouseOverBigButton(this);" onmouseout="MouseOutBigButton(this);"><div class="BigButtonOver" style="background-image: url('.$layout_name.'/images/buttons/sbutton_over.gif);"></div> <input class="ButtonText" name="Continue" alt="Continue" src="'.$layout_name.'/images/buttons/_sbutton_purchase.gif" type="image"> </div> </div> </td> </tr> </tbody> </table> </form>'; $main_content .= '</td></tr>'; } $main_content .= '</tbody> </table> </div> </div> <div class="TableShadowContainer"> <div class="TableBottomShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bm.gif);"> <div class="TableBottomLeftShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bl.gif);"></div> <div class="TableBottomRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-br.gif);"></div> </div> </div> </td> </tr> </tbody> </table> </div> </td> </tr> </tbody> </table> </div><br />';} //show list of items offers if(count($offer_list['item']) > 0 or count($offer_list['container']) > 0 or count($offer_list['itemlogout']) > 0) $main_content .= ' <div class="TableContainer"> <div class="CaptionContainer"> <div class="CaptionInnerContainer"> <span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> <span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);"></span> <span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);"></span> <div class="Text">Items</div> <span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);"></span> <span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);"></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> </div> </div> <table class="Table5" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <div class="InnerTableContainer"> <table style="width:100%;"> <tbody> <tr> <td> <div class="TableShadowContainerRightTop"> <div class="TableShadowRightTop" style="background-image:url('.$layout_name.'/images/content/table-shadow-rt.gif);"></div> </div><div class="TableContentAndRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-rm.gif);"> <div class="TableContentContainer"> <table class="TableContent" style="border:1px solid #faf0d7;" width="100%"> <tbody> <tr bgcolor="#D4C0A1"> <td valign="middle" align="center"><b>Product</b></td> <td valign="middle" width="60%"><b>Description</b></td> <td valign="middle"> </td> </tr>'; if(count($offer_list['item']) > 0) { foreach($offer_list['item'] as $item) { if(!is_int($number_of_rows / 2)) { $bgcolor = $config['site']['lightborder']; } else { $bgcolor = $config['site']['darkborder']; } $number_of_rows++; $main_content .= ' <tr bgcolor="'.$config['site']['lightborder'].'"> <td valign="middle" align="center">'; if(file_exists('images/items/'.$item['item_id'].'.gif')) { $main_content .= '<br /><img src="images/items/'.$item['item_id'].'.gif" height="32" width="32"><br /><small><b>'.$item['name'].'</b></small><br /> '; } else { $main_content .= '<br /> <img src="images/monsters/nophoto.png" height="32" width="32"><br /><small><b>'.$item['name'].'</b></small>'; } $main_content .='</td> <td>'.$item['description'].'<br /><small><b>('.$item['points'].''; if ($item['points'] == 0) $main_content .=' <o>no cost</o>'; if ($item['points'] >= 2) $main_content .=' points'; else $main_content .=' point'; $main_content .=')</b></small></td> <td valign="middle" align="center">'; if(!$logged) $main_content .= '<input type="button" value="Login First" disabled="disabled" />'; else $main_content .= ' <form action="index.php?subtopic=shopsystem&action=select_player" method="POST"> <input type="hidden" name="buy_id" value="'.$item['id'].'"> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td style="border: 0px none;"> <div class="BigButton" style="background-image: url('.$layout_name.'/images/buttons/sbutton.gif);"> <div onmouseover="MouseOverBigButton(this);" onmouseout="MouseOutBigButton(this);"><div class="BigButtonOver" style="background-image: url('.$layout_name.'/images/buttons/sbutton_over.gif);"></div> <input class="ButtonText" name="Continue" alt="Continue" src="'.$layout_name.'/images/buttons/_sbutton_purchase.gif" type="image"> </div> </div> </td> </tr> </tbody> </table> </form>'; $main_content .= '</td></tr>'; } $main_content .= '</tbody> </table> </div> </div> <div class="TableShadowContainer"> <div class="TableBottomShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bm.gif);"> <div class="TableBottomLeftShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bl.gif);"></div> <div class="TableBottomRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-br.gif);"></div> </div> </div> </td> </tr> </tbody> </table> </div> </td> </tr> </tbody> </table> </div><br />'; } //show list of containers offers if(count($offer_list['container']) > 0) { $main_content .= ' <div class="TableContainer"> <div class="CaptionContainer"> <div class="CaptionInnerContainer"> <span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> <span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);"></span> <span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);"></span> <div class="Text">Containers Of Items</div> <span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);"></span> <span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);"></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> </div> </div> <table class="Table5" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <div class="InnerTableContainer"> <table style="width:100%;"> <tbody> <tr> <td> <div class="TableShadowContainerRightTop"> <div class="TableShadowRightTop" style="background-image:url('.$layout_name.'/images/content/table-shadow-rt.gif);"></div> </div><div class="TableContentAndRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-rm.gif);"> <div class="TableContentContainer"> <table class="TableContent" style="border:1px solid #faf0d7;" width="100%"> <tbody> <tr bgcolor="#D4C0A1"> <td valign="middle" align="center"><b>Product</b></td> <td valign="middle" width="60%"><b>Description</b></td> <td valign="middle"> </td> </tr>'; foreach($offer_list['container'] as $container) { if(!is_int($number_of_rows / 2)) { $bgcolor = $config['site']['lightborder']; } else { $bgcolor = $config['site']['darkborder']; } $number_of_rows++; $main_content .= '<tr bgcolor="'.$config['site']['lightborder'].'"><td valign="middle" align="center">'; if(file_exists('images/items/'.$container['item_id'].'.gif')) { $main_content .= '<img src="images/items/'.$container['item_id'].'.gif" height="32" width="32">'; } else { $main_content .= '<img src="images/monsters/nophoto.png" height="32" width="32">'; } $main_content .='</td><td><b>'.$container['name'].'</b> ('.$container['points'].' points)<br />'.$container['description'].'</td><td align="center">'; if(!$logged) $main_content .= '<input type="button" value="Login First" disabled="disabled" />'; else $main_content .= ' <form action="?subtopic=shopsystem&action=select_player" method="POST"> <input type="hidden" name="buy_id" value="'.$container['id'].'"> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td style="border: 0px none;"> <div class="BigButton" style="background-image: url('.$layout_name.'/images/buttons/sbutton.gif);"> <div onmouseover="MouseOverBigButton(this);" onmouseout="MouseOutBigButton(this);"><div class="BigButtonOver" style="background-image: url('.$layout_name.'/images/buttons/sbutton_over.gif);"></div> <input class="ButtonText" name="Continue" alt="Continue" src="'.$layout_name.'/images/buttons/_sbutton_purchase.gif" type="image"> </div> </div> </td> </tr> </tbody> </table> </form>'; $main_content .= '</td></tr>'; } $main_content .= '</tbody> </table> </div> </div> <div class="TableShadowContainer"> <div class="TableBottomShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bm.gif);"> <div class="TableBottomLeftShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bl.gif);"></div> <div class="TableBottomRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-br.gif);"></div> </div> </div> </td> </tr> </tbody> </table> </div> </td> </tr> </tbody> </table> </div><br />';} if(count($offer_list['itemlogout']) > 0) { $main_content .= ' <div class="TableContainer"> <div class="CaptionContainer"> <div class="CaptionInnerContainer"> <span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> <span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);"></span> <span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);"></span> <div class="Text">Items Logout</div> <span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);"></span> <span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);"></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> </div> </div> <table class="Table5" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <div class="InnerTableContainer"> <table style="width:100%;"> <tbody> <tr> <td> <div class="TableShadowContainerRightTop"> <div class="TableShadowRightTop" style="background-image:url('.$layout_name.'/images/content/table-shadow-rt.gif);"></div> </div><div class="TableContentAndRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-rm.gif);"> <div class="TableContentContainer"> <table class="TableContent" style="border:1px solid #faf0d7;" width="100%"> <tbody> <tr bgcolor="#D4C0A1"> <td valign="middle" align="center"><b>Product</b></td> <td valign="middle" width="60%"><b>Description</b></td> <td valign="middle"> </td> </tr>'; foreach($offer_list['itemlogout'] as $itemlogout) { if(!is_int($number_of_rows / 2)) { $bgcolor = $config['site']['lightborder']; } else { $bgcolor = $config['site']['darkborder']; } $number_of_rows++; $main_content .= '<tr bgcolor="'.$config['site']['lightborder'].'"><td valign="middle" align="center"><img src="images/items/'.$itemlogout['id'].'.gif"></td><td><b>'.$itemlogout['name'].'</b> ('.$itemlogout['points'].' points)<br />'.$itemlogout['description'].'</td><td align="center">'; if(!$logged) $main_content .= '<input type="button" value="Login First" disabled="disabled" />'; else $main_content .= ' <form action="index.php?subtopic=shopsystem&action=select_player" method=POST> <input type="hidden" name="buy_id" value="'.$itemlogout['id'].'"> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td style="border: 0px none;"> <div class="BigButton" style="background-image: url('.$layout_name.'/images/buttons/sbutton.gif);"> <div onmouseover="MouseOverBigButton(this);" onmouseout="MouseOutBigButton(this);"><div class="BigButtonOver" style="background-image: url('.$layout_name.'/images/buttons/sbutton_over.gif);"></div> <input class="ButtonText" name="Continue" alt="Continue" src="'.$layout_name.'/images/buttons/_sbutton_purchase.gif" type="image"> </div> </div> </td> </tr> </tbody> </table> </form>'; $main_content .= '</td></tr>'; } $main_content .= '</tbody> </table> </div> </div> <div class="TableShadowContainer"> <div class="TableBottomShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bm.gif);"> <div class="TableBottomLeftShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bl.gif);"></div> <div class="TableBottomRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-br.gif);"></div> </div> </div> </td> </tr> </tbody> </table> </div> </td> </tr> </tbody> </table> </div><br />';} $main_content .= ' <div class="TableContainer"> <div class="CaptionContainer"> <div class="CaptionInnerContainer"> <span class="CaptionEdgeLeftTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> <span class="CaptionEdgeRightTop" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> <span class="CaptionBorderTop" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);"></span> <span class="CaptionVerticalLeft" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);"></span> <div class="Text">Items & Additional</div> <span class="CaptionVerticalRight" style="background-image:url('.$layout_name.'/images/content/box-frame-vertical.gif);"></span> <span class="CaptionBorderBottom" style="background-image:url('.$layout_name.'/images/content/table-headline-border.gif);"></span> <span class="CaptionEdgeLeftBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> <span class="CaptionEdgeRightBottom" style="background-image:url('.$layout_name.'/images/content/box-frame-edge.gif);"></span> </div> </div> <table class="Table5" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <div class="InnerTableContainer"> <table style="width:100%;"> <tbody> <tr> <td> <div class="TableShadowContainerRightTop"> <div class="TableShadowRightTop" style="background-image:url('.$layout_name.'/images/content/table-shadow-rt.gif);"></div> </div><div class="TableContentAndRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-rm.gif);"> <div class="TableContentContainer"> <table class="TableContent" style="border:1px solid #faf0d7;" width="100%"> <tbody> <tr bgcolor="#D4C0A1"> <td valign="middle" align="center"><b>Product</b></td> <td valign="middle" width="60%"><b>Description</b></td> <td valign="middle"> </td> </tr>'; //Pacc if(count($offer_list['changename']) > 0 or count($offer_list['pacc']) > 0 or count($offer_list['redskull']) > 0 or count($offer_list['unban']) > 0) if(count($offer_list['pacc']) > 0) foreach($offer_list['pacc'] as $pacc) { if(!is_int($number_of_rows / 2)) { $bgcolor = $config['site']['lightborder']; } else { $bgcolor = $config['site']['darkborder']; } $number_of_rows++; $main_content .= '<tr bgcolor="'.$config['site']['lightborder'].'"><td valign="middle" align="center">'.$pacc['days'].'</td><td><b>'.$pacc['name'].'</b> ('.$pacc['points'].' points)<br />'.$pacc['description'].'</td><td align="center">'; if(!$logged) $main_content .= '<input type="button" value="Login First" disabled="disabled" />'; else $main_content .= ' <form action="index.php?subtopic=shopsystem&action=select_player" method="POST"> <input type="hidden" name="buy_id" value="'.$pacc['id'].'"> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td style="border: 0px none;"> <div class="BigButton" style="background-image: url('.$layout_name.'/images/buttons/sbutton.gif);"> <div onmouseover="MouseOverBigButton(this);" onmouseout="MouseOutBigButton(this);"><div class="BigButtonOver" style="background-image: url('.$layout_name.'/images/buttons/sbutton_over.gif);"></div> <input class="ButtonText" name="Continue" alt="Continue" src="'.$layout_name.'/images/buttons/_sbutton_purchase.gif" type="image"> </div> </div> </td> </tr> </tbody> </table> </form>';} //Change Name if(count($offer_list['changename']) > 0) foreach($offer_list['changename'] as $changename) { if(!is_int($number_of_rows / 2)) { $bgcolor = $config['site']['lightborder']; } else { $bgcolor = $config['site']['darkborder']; } $number_of_rows++; $main_content .= '<tr bgcolor="'.$config['site']['lightborder'].'"><td valign="middle" align="center"><img src="images/shop/name.gif" /></td><td><b>'.$changename['name'].'</b> ('.$changename['points'].' points)<br />'.$changename['description'].'</td><td align="center">'; if(!$logged) $main_content .= '<input type="button" value="Login First" disabled="disabled" />'; else $main_content .= ' <form action="index.php?subtopic=shopsystem&action=select_player" method="POST"> <input type="hidden" name="buy_id" value="'.$changename['id'].'"> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td style="border: 0px none;"> <div class="BigButton" style="background-image: url('.$layout_name.'/images/buttons/sbutton.gif);"> <div onmouseover="MouseOverBigButton(this);" onmouseout="MouseOutBigButton(this);"><div class="BigButtonOver" style="background-image: url('.$layout_name.'/images/buttons/sbutton_over.gif);"></div> <input class="ButtonText" name="Continue" alt="Continue" src="'.$layout_name.'/images/buttons/_sbutton_purchase.gif" type="image"> </div> </div> </td> </tr> </tbody> </table> </form>';} //Remove Red Skull if(count($offer_list['redskull']) > 0) foreach($offer_list['redskull'] as $redskull) { if(!is_int($number_of_rows / 2)) { $bgcolor = $config['site']['lightborder']; } else { $bgcolor = $config['site']['darkborder']; } $number_of_rows++; $main_content .= '<tr bgcolor="'.$config['site']['lightborder'].'"><td valign="middle" align="center"><img src="images/shop/skull.gif" /></td><td><b>'.$redskull['name'].'</b> ('.$redskull['points'].' points)<br />'.$redskull['description'].'</td><td align="center">'; if(!$logged) $main_content .= '<input type="button" value="Login First" disabled="disabled" />'; else $main_content .= ' <form action="index.php?subtopic=shopsystem&action=select_player" method="POST"> <input type="hidden" name="buy_id" value="'.$redskull['id'].'"> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td style="border: 0px none;"> <div class="BigButton" style="background-image: url('.$layout_name.'/images/buttons/sbutton.gif);"> <div onmouseover="MouseOverBigButton(this);" onmouseout="MouseOutBigButton(this);"><div class="BigButtonOver" style="background-image: url('.$layout_name.'/images/buttons/sbutton_over.gif);"></div> <input class="ButtonText" name="Continue" alt="Continue" src="'.$layout_name.'/images/buttons/_sbutton_purchase.gif" type="image"> </div> </div> </td> </tr> </tbody> </table> </form>'; $main_content .= '</td></tr>';} //Unban if(count($offer_list['unban']) > 0) foreach($offer_list['unban'] as $unban){ if(!is_int($number_of_rows / 2)) { $bgcolor = $config['site']['lightborder']; } else { $bgcolor = $config['site']['darkborder']; } $number_of_rows++; $main_content .= '<tr bgcolor="'.$config['site']['lightborder'].'"><td valign="middle" align="center"><br /><img src="images/shop/ban.gif" /></td><td><b>'.$unban['name'].'</b> ('.$unban['points'].' points)<br />'.$unban['description'].'</td><td align="center">'; if(!$logged) $main_content .= '<input type="button" value="Login First" disabled="disabled" />'; else $main_content .= ' <form action="index.php?subtopic=shopsystem&action=select_player" method="POST"> <input type="hidden" name="buy_id" value="'.$unban['id'].'"> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td style="border: 0px none;"> <div class="BigButton" style="background-image: url('.$layout_name.'/images/buttons/sbutton.gif);"> <div onmouseover="MouseOverBigButton(this);" onmouseout="MouseOutBigButton(this);"><div class="BigButtonOver" style="background-image: url('.$layout_name.'/images/buttons/sbutton_over.gif);"></div> <input class="ButtonText" name="Continue" alt="Continue" src="'.$layout_name.'/images/buttons/_sbutton_purchase.gif" type="image"> </div> </div> </td> </tr> </tbody> </table> </form>'; $main_content .= '</td></tr>';} $main_content .= ' </tbody> </table> </div> </div> <div class="TableShadowContainer"> <div class="TableBottomShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bm.gif);"> <div class="TableBottomLeftShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-bl.gif);"></div> <div class="TableBottomRightShadow" style="background-image:url('.$layout_name.'/images/content/table-shadow-br.gif);"></div> </div> </div> </td> </tr> </tbody> </table> </div> </td> </tr> </tbody> </table> </div>';} elseif($action == 'select_player') { unset($_SESSION['viewed_confirmation_page']); if(!$logged) { $main_content .= '<TABLE BORDER="0" CELLSPACING="1" CELLPADDING="4" WIDTH="100%"> <TR BGCOLOR="'.$config['site']['vdarkborder'].'"> <TD CLASS=white><B>Shoping Error</B></TD> </TR> <TR BGCOLOR='.$config['site']['darkborder'].'> <td> <TABLE BORDER="0" CELLSPACING="1" cellpadding="4"> <TR> <TD>Please login first.</TD> </TR> </TABLE> </td> </tr> </TABLE>';} else { $buy_id = (int) $_REQUEST['buy_id']; if(empty($buy_id)) { $main_content .= '<TABLE BORDER="0" CELLSPACING="1" CELLPADDING="4" WIDTH="100%"> <TR BGCOLOR="'.$config['site']['vdarkborder'].'"> <TD CLASS=white><B>Shoping Error</B></TD> </TR> <TR BGCOLOR='.$config['site']['darkborder'].'> <td> <TABLE BORDER="0" CELLSPACING="1" cellpadding="4"> <TR> <TD>Please <a href="index.php?subtopic=shopsystem">select item</a> first.</TD> </TR> </TABLE> </td> </tr> </TABLE>';} else { $buy_offer = getItemByID($buy_id); if(isset($buy_offer['id'])) { //item exist in database if($buy_offer['type'] != 'changename') { if($user_premium_points >= $buy_offer['points']) { $main_content .= ' <table border="0" cellpadding="4" cellspacing="1" width="100%"> <tr bgcolor="'.$config['site']['vdarkborder'].'"> <td class="white" colspan="2"><b>Item Informations</b></td> </tr> <tr bgcolor="#D4C0A1"><td width="100"><b>Image:</b></td><td width="550">'; if(file_exists('images/items/'.$buy_offer['item_id'].'.gif')) { $main_content .= '<img src="images/items/'.$buy_offer['item_id'].'.gif" height="32" width="32">'; } else { $main_content .= '<img src="images/monsters/nophoto.png" height="32" width="32">'; } $main_content .='</td></tr> <tr bgcolor="#F1E0C6"><td width="100"><b>Name:</b></td><td width="550">'.$buy_offer['name'].'</td></tr> <tr bgcolor="#D4C0A1"><td width="100"><b>Description:</b></td><td width="550">'.$buy_offer['description'].'</td></tr> <tr bgcolor="#F1E0C6"><td width="100"><b>Cost:</b></td><td width="550">'.$buy_offer['points'].' points</td></tr> </table><br /> <form action="index.php?subtopic=shopsystem&action=confirm_transaction" method=POST> <input type="hidden" name="buy_id" value="'.$buy_id.'"> <table border="0" cellpadding="4" cellspacing="1" width="100%"> <tr bgcolor="'.$config['site']['vdarkborder'].'"> <td class="white" colspan="2"><b>Select a Player</b></td> </tr> <tr bgcolor="#D4C0A1"><td width="110"><b>Name:</b> <select name="buy_name" style="padding: 5px;">'; $players_from_logged_acc = $account_logged->getPlayersList(); if(count($players_from_logged_acc) > 0) { $players_from_logged_acc->orderBy('name'); foreach($players_from_logged_acc as $player) $main_content .= '<option>'.$player->getName().'</option>'; } else { $main_content .= 'You don\'t have any character on your account.'; } $main_content .= '</select> <input type="submit" value="Purschase"><br /><small>Character <b> your account </b> you will receive.</small></td></tr></table> </form> <form action="index.php?subtopic=shopsystem&action=confirm_transaction" method="POST"><input type="hidden" name="buy_id" value="'.$buy_id.'"> <table border="0" cellpadding="4" cellspacing="1" width="100%"> <tr bgcolor="'.$config['site']['vdarkborder'].'"> <td class="white" colspan="2"><b>Send gift</b></td> </tr> <tr bgcolor="#D4C0A1"><td width="110"><b>To player:</b> <input type="text" name="buy_name" autocomplete="off" placeholder="Character to recive '.$buy_offer['name'].'" size="25"> <input type="submit" value="Purschase to friend"><br /><small>Put in the field above the name of the character that will receive the item.</small></td></tr> </table><br /></form>'; } else { $main_content .= ' <TABLE BORDER="0" CELLSPACING="1" CELLPADDING="4" WIDTH="100%"> <TR BGCOLOR="'.$config['site']['vdarkborder'].'"> <TD CLASS="white"><b>Erro</b></td> </TR> <TR BGCOLOR='.$config['site']['darkborder'].'><TD>Para comprar <b>'.$buy_offer['name'].'</b> voce precisa de <b>'.$buy_offer['points'].' premium points</b> disponíveis.<br />Atualmente você possui <b>'.$user_premium_points.'</b> premium points.</TD> </TR> </TABLE> <br /> <table width="100%"> <tbody> <tr align="center"> <td> <table border="0" cellpadding="0" cellspacing="0"> <tbody><tr><td style="border: 0px none;"> <a href="javascript:void();" onclick=location.href="index.php?subtopic=donate"> <div class="BigButton" style="background-image: url('.$layout_name.'/images/buttons/sbutton.gif);"> <div onmouseover="MouseOverBigButton(this);" onmouseout="MouseOutBigButton(this);"><div class="BigButtonOver" style="background-image: url('.$layout_name.'/images/buttons/sbutton_over.gif);"></div> <div class="ButtonText" style="background-image:url('.$layout_name.'/images/buttons/_sbutton_buypoints.png);"></div> </div> </div> </a> </td> </tr> <tr> </tr> </tbody> </table> </td> <td> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td style="border: 0px none;"> <a href="javascript:void();" onclick=location.href="index.php?subtopic=shopsystem"><div class="BigButton" style="background-image: url('.$layout_name.'/images/buttons/sbutton.gif);"> <div onmouseover="MouseOverBigButton(this);" onmouseout="MouseOutBigButton(this);"><div class="BigButtonOver" style="background-image: url('.$layout_name.'/images/buttons/sbutton_over.gif); visibility: hidden;"></div> <input class="ButtonText" name="Back" alt="Back" src="'.$layout_name.'/images/vips/_sbutton_back.gif" type="image"> </table> </td> </tr> </tbody> </table> <p> </p>';} } else { $main_content .= '<form action="index.php?subtopic=shopsystem&action=confirm_transaction" method=POST><input type="hidden" name="buy_id" value="'.$buy_id.'"> <table border="0" cellpadding="4" cellspacing="1" width="100%"><tr bgcolor="#505050"><td colspan="2"><b class="white">Change Name</b></td></tr> <tr bgcolor="#D4C0A1"><td width="110"><b>Name:</b></td><td width="550"><select name="buy_name">'; $players_from_logged_acc = $account_logged->getPlayersList(); if(count($players_from_logged_acc) > 0) { $players_from_logged_acc->orderBy('name'); foreach($players_from_logged_acc as $player) { $main_content .= '<option>'.$player->getName().'</option>';} } else { $main_content .= 'You don\'t have any character on your account.';} $main_content .= '</select></td></tr><tr bgcolor="#F1E0C6"><td width="110"><b>New name:</b></td><td width="550"><input type="text" name="buy_from"> <input type="submit" value="Change Name"></td></tr></table><br /></form>';} } else { $main_content .= '<TABLE BORDER="0" CELLSPACING="1" CELLPADDING="5" WIDTH="100%"> <tr BGCOLOR="'.$config['site']['vdarkborder'].'"> <td CLASS="white"><b>Error</b></td> </tr> <tr BGCOLOR='.$config['site']['darkborder'].'> <td>Offer with ID <b>'.$buy_id.'</b> doesn\'t exist. Please <a href="index.php?subtopic=shopsystem">select item</a> again.</td> </tr> </TABLE>';} }}} elseif($action == 'confirm_transaction') { if(!$logged) { $main_content .= '<TABLE BORDER="0" CELLSPACING="1" CELLPADDING="4" WIDTH="100%"> <TR BGCOLOR="'.$config['site']['vdarkborder'].'"> <TD CLASS=white><B>Shoping Error</B></TD> </TR> <TR BGCOLOR='.$config['site']['darkborder'].'> <td> <TABLE BORDER="0" CELLSPACING="1" cellpadding="4"> <TR> <TD>Please login first.</TD> </TR> </TABLE> </td> </tr> </TABLE>';} else { $buy_id = (int) $_POST['buy_id']; $buy_name = stripslashes(urldecode($_POST['buy_name'])); $buy_from = stripslashes(urldecode($_POST['buy_from'])); if(empty($buy_id)) { $main_content .= 'Please <a href="index.php?subtopic=shopsystem">select item</a> first.'; } else { if($buy_offer['type'] == 'changename'){ if(!check_name_new_char($buy_from)) { $main_content .= 'Invalid name format of new name.'; }} else { $buy_offer = getItemByID($buy_id); $check_name_in_database = $ots->createObject('Player'); $check_name_in_database->find($buy_from); if($buy_offer['type'] == 'changename'){ if(!$check_name_in_database->isLoaded()) { }} if(isset($buy_offer['id'])) { //item exist in database if($user_premium_points >= $buy_offer['points']) { if(check_name($buy_name)) { $buy_player = new OTS_Player(); $buy_player->find($buy_name); if($buy_player->isLoaded()) { $buy_player_account = $buy_player->getAccount(); if($_SESSION['viewed_confirmation_page'] == 'yes' && $_POST['buy_confirmed'] == 'yes') { 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']; $main_content .= '<center><h2>VIP account added!</h2><b>'.$buy_offer['days'].' days</b> of VIP account added to the 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><br><a href="index.php?subtopic=shopsystem">Go to Shop Site</a><br>'; } elseif($buy_offer['type'] == 'unban') { $my_acc_id = $account_logged->getCustomField('id'); $datadata = $SQL->query('SELECT * FROM '.$SQL->tableName('bans').' WHERE value = '.$my_acc_id.';')->fetch(); if($datadata['value'] == $my_acc_id) { if($SQL->query('DELETE FROM bans WHERE value= '.$my_acc_id.' LIMIT 1;')) { } else { $SQL->query('DELETE FROM bans WHERE account= '.$my_acc_id.' LIMIT 1;'); } $account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']); $user_premium_points = $user_premium_points - $buy_offer['points']; $main_content .= '<center><h2>Ban Deleted!</h2><b>Your account has been unbanned for '.$buy_offer['points'].' premium points</b> from your account. <br>Now you have <b>'.$user_premium_points.' premium points</b>.<br><br><a href="index.php?subtopic=shopsystem">Go to Shop Site</a><br>'; } else { $main_content .= '<center><b>You don\'t have any bans in your account!</b><br><br><a href="index.php?subtopic=shopsystem">Go back</a><br>'; } } //////////////////////////////// elseif($buy_offer['type'] == 'itemlogout') { $my_acc_id = $buy_player->getCustomField('id'); $playerinfo = $SQL->query('SELECT * FROM '.$SQL->tableName('players').' WHERE id = '.$my_acc_id.';')->fetch(); $playerslot = $SQL->query('SELECT * FROM '.$SQL->tableName('player_items').' WHERE player_id = '.$my_acc_id.';')->fetch(); if ($playerinfo['online'] == '0') { if ($playerslot['pid'] != '10') { if ($datadata['cap'] >= $SQL->quote($buy_offer['free_cap'])) { $SQL->query('INSERT INTO player_items (player_id, pid, itemtype, count) VALUES ('.$my_acc_id.', '.$SQL->quote($buy_offer['pid']).', '.$SQL->quote($buy_offer['item_id']).', '.$SQL->quote($buy_offer['count1']).');'); $account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']); $user_premium_points = $user_premium_points - $buy_offer['points']; $main_content .= '<h2>Item received to player: '.$buy_player->getName().'!</h2><br />Now you have <b>'.$user_premium_points.' premium points</b>. <br /><a href="index.php?subtopic=shopsystem">Go to Shop Site</a>'; } else { $main_content .= '<b>You need '.$SQL->quote($buy_offer['free_cap']).' or more of cap!</b><br /><a href="index.php?subtopic=shopsystem">Go back</a>'; }} else { $main_content .= '<b>Please leave the arrow slot in blank to receive item!</b><br /><a href="index.php?subtopic=shopsystem">Go back</a>'; }} else { $main_content .= '<b>You need to be offline!</b><br /><a href="index.php?subtopic=shopsystem">Go back</a>'; } } //////////////////////////////// elseif($buy_offer['type'] == 'changename') { $my_acc_id = $buy_player->getCustomField('id'); $playerinfo = $SQL->query('SELECT * FROM '.$SQL->tableName('players').' WHERE '.$SQL->fieldName('id').' = '.$my_acc_id.';')->fetch(); $checkname = $SQL->query('SELECT * FROM '.$SQL->tableName('players').' WHERE '.$SQL->fieldName('name').' = '. $SQL->quote($buy_from) .';')->fetch(); if($playerinfo['online'] == '0') { if($checkname == false) { $SQL->query('UPDATE `players` SET `name` = '. $SQL->quote($buy_from) .' WHERE `id` = '. $my_acc_id.' ;'); $account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']); $user_premium_points = $user_premium_points - $buy_offer['points']; $main_content .= '<center><h2>Your name has been changed to '.$buy_from.'.</h2><br /><b>You have '.$user_premium_points.' premium points left</b>. <br /><br /><a href="index.php?subtopic=shopsystem">Go to Shop Site</a><br />'; } else { $main_content .= '<center><h2>Sorry, the name "<i>'.$buy_from.'</i>" does already exist.<br />Please select another name.</h2><br />'; }} else { $main_content .= '<center><h2>'.$buy_name.' has to be offline to complete transaction.</h2><br /><br /><a href="index.php?subtopic=shopsystem">Go back</a><br />'; }} //////////////////////////////// elseif($buy_offer['type'] == 'redskull') { $my_acc_id = $buy_player->getCustomField('id'); $playerinfo = $SQL->query('SELECT * FROM '.$SQL->tableName('players').' WHERE '.$SQL->fieldName('id').' = '.$my_acc_id.';')->fetch(); if($playerinfo['skull'] == '4' AND $playerinfo['online'] >= '0' AND $playerinfo['skulltime'] > '0') { $SQL->query('UPDATE killers SET unjustified=0 WHERE id IN (SELECT kill_id FROM player_killers WHERE player_id='. $my_acc_id .');'); $SQL->query('UPDATE players SET skulltime=0, skull=0 WHERE id='. $my_acc_id .';'); $account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']); $user_premium_points = $user_premium_points - $buy_offer['points']; $main_content .= '<center><h2>RedSkull Removed!</h2><br /><b>Your redskull has been removed from the player '.$buy_player->getName().'.</b> <br />Now you have<b> '.$user_premium_points.' premium points</b>.<br /><br /><a href="index.php?subtopic=shopsystem">Go to Shop Site</a><br />'; } else { $main_content .= '<center><b>'.$buy_player->getName().' has to be offline or have redskull to complete transaction!.</b><br /><br /><a href="index.php?subtopic=shopsystem">Go back</a><br />'; }} ////////////////////////// elseif($buy_offer['type'] == 'item') { $sql = 'INSERT INTO '.$SQL->tableName('z_ots_comunication').' (id, name, type, action, param1, param2, param3, param4, param5, param6, param7, delete_it) VALUES (NULL, '.$SQL->quote($buy_player->getName()).', \'login\', \'give_item\', '.$SQL->quote($buy_offer['item_id']).', '.$SQL->quote($buy_offer['item_count']).', \'\', \'\', \'item\', '.$SQL->quote($buy_offer['name']).', \'\', \'1\');'; $SQL->query($sql); $save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_item').' (id, to_name, to_account, from_nick, from_account, price, offer_id, trans_state, trans_start, trans_real) VALUES ('.$SQL->lastInsertId().', '.$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['name']).', \'wait\', '.$SQL->quote(time()).', \'0\');'; $SQL->query($save_transaction); $account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']); $user_premium_points = $user_premium_points - $buy_offer['points']; $main_content .= '<TABLE BORDER="0" CELLSPACING="1" CELLPADDING="4" WIDTH="100%"> <TR BGCOLOR="'.$config['site']['vdarkborder'].'"> <TD CLASS="white"><b>Item added successfully !</b></td> </TR> <TR BGCOLOR='.$config['site']['darkborder'].'> <TD> <b>'.$buy_offer['name'].'</b> added to 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>. </TD> </TR> </TABLE> <br /><a href="index.php?subtopic=shopsystem">MAIN SHOP SITE</a><br /><br />';} if($buy_offer['type'] == 'vipdays') { $player_vip_time = $buy_player_account->getCustomField('vip_time'); $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_vip_time > 0) $buy_player_account->setCustomField('vip_time', $player_vip_time + $buy_offer['days'] * 86400); else $buy_player_account->setCustomField('vip_time', time() + $buy_offer['days'] * 86400); $account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']); $user_premium_points = $user_premium_points - $buy_offer['points']; if ($player_vip_days >= 1) { } $main_content .= '<center><h2>VIP Days added!</h2><b>'.$buy_offer['days'].' days</b> of VIP days added to the 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 /><br /><a href="index.php?subtopic=shopsystem">Go to Shop Site</a><br />';} elseif($buy_offer['type'] == 'itemvip') { $sql = 'INSERT INTO '.$SQL->tableName('z_ots_comunication').' (id, name, type, action, param1, param2, param3, param4, param5, param6, param7, delete_it) VALUES (NULL, '.$SQL->quote($buy_player->getName()).', \'login\', \'give_item\', '.$SQL->quote($buy_offer['item_id']).', '.$SQL->quote($buy_offer['megaitems_count']).', \'\', \'\', \'megaitems\', '.$SQL->quote($buy_offer['name']).', \'\', \'1\');'; $SQL->query($sql); $save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_item').' (id, to_name, to_account, from_nick, from_account, price, offer_id, trans_state, trans_start, trans_real) VALUES ('.$SQL->lastInsertId().', '.$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['name']).', \'wait\', '.$SQL->quote(time()).', \'0\');'; $SQL->query($save_transaction); $account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']); $user_premium_points = $user_premium_points - $buy_offer['points']; $main_content .= '<center><h2>Mega Item added!</h2><b>'.$buy_offer['name'].'</b> added to 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><br><a href="index.php?subtopic=shopsystem">GO TO MAIN SHOP SITE</a><br>'; } elseif($buy_offer['type'] == 'container') { $sql = 'INSERT INTO '.$SQL->tableName('z_ots_comunication').' (id, name, type, action, param1, param2, param3, param4, param5, param6, param7, delete_it) VALUES (NULL, '.$SQL->quote($buy_player->getName()).', \'login\', \'give_item\', '.$SQL->quote($buy_offer['item_id']).', '.$SQL->quote($buy_offer['item_count']).', '.$SQL->quote($buy_offer['container_id']).', '.$SQL->quote($buy_offer['container_count']).', \'container\', '.$SQL->quote($buy_offer['name']).', \'\', \'1\');'; $SQL->query($sql); $save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_item').' (id, to_name, to_account, from_nick, from_account, price, offer_id, trans_state, trans_start, trans_real) VALUES ('.$SQL->lastInsertId().', '.$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['name']).', \'wait\', '.$SQL->quote(time()).', \'0\');'; $SQL->query($save_transaction); $account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']); $user_premium_points = $user_premium_points - $buy_offer['points']; $main_content .= '<center><h2>Container of items added!</h2><b>'.$buy_offer['name'].'</b> added to 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 /><br /><a href="index.php?subtopic=shopsystem">GO TO MAIN SHOP SITE</a><br />'; }} else { if($buy_offer['type'] != 'changename') { $set_session = TRUE; $_SESSION['viewed_confirmation_page'] = 'yes'; $main_content .= ' <table border="0" cellpadding="4" cellspacing="1" width="100%"> <tr bgcolor="#505050"><td colspan="3"><font color="white"><b>Confirm transaction</b></font></td></tr> <tr bgcolor="'.$config['site']['darkborder'].'"><td><b>Image:</b></td><td width="550" colspan="2"><img src="images/items/'.$buy_offer['item_id'].'.gif" align="absmiddle"/> <small><b>'.$buy_offer['name'].'</b></small></td></tr> <tr bgcolor="'.$config['site']['lightborder'].'"><td><b>Description:</b></td><td width="550" colspan="2">'.$buy_offer['description'].'</td></tr> <tr bgcolor="'.$config['site']['darkborder'].'"><td><b>Cost:</b></td><td width="550" colspan="2"><b>'.$buy_offer['points'].' premium points</b> from your account</td></tr> <tr bgcolor="'.$config['site']['lightborder'].'"><td><b>For Player:</b></td><td width="550" colspan="2">'.$buy_player->getName().' <small>[<a href="index.php?subtopic=characters&name='.$buy_player->getName().'" target="_blank">View Character</a>]</small></td></tr> <tr bgcolor="'.$config['site']['darkborder'].'"><td><b>Confirm Transaction ?</b></td> <td><form action="index.php?subtopic=shopsystem&action=confirm_transaction" method="POST"><input type="hidden" name="buy_confirmed" value="yes"><input type="hidden" name="buy_id" value="'.$buy_id.'"><input type="hidden" name="buy_from" value="'.urlencode($new_name).'"><input type="hidden" name="buy_name" value="'.urlencode($buy_name).'"><input type="submit" value="Accept"></form></td><td><form action="index.php?subtopic=shopsystem" method="POST"><input type="submit" value="Cancel"></form></td></tr> </table><br />'; } else { $set_session = TRUE; $_SESSION['viewed_confirmation_page'] = 'yes'; $main_content .= '<center><h2>Confirm Name Changing</h2> <table border="0" cellpadding="4" cellspacing="1" width="100%"> <tr bgcolor="#505050"><td colspan="3"><font color="white" size="4"><b>Confirm transaction</b></font></td></tr> <tr bgcolor="#D4C0A1"><td width="130"><b>Name:</b></td><td width="550" colspan="2">'.$buy_offer['name'].'</td></tr> <tr bgcolor="#F1E0C6"><td width="130"><b>Description:</b></td><td width="550" colspan="2">'.$buy_offer['description'].'</td></tr> <tr bgcolor="#D4C0A1"><td width="130"><b>Cost:</b></td><td width="550" colspan="2"><b>'.$buy_offer['points'].' premium points</b></td></tr> <tr bgcolor="#F1E0C6"><td width="130"><b>Current Name:</b></td><td width="550" colspan="2"><font color="red">'.$buy_player->getName().'</font></td></tr> <tr bgcolor="#D4C0A1"><td width="130"><b>New Name:</b></td><td width="550" colspan="2"><font color="red">'.$buy_from.'</font></td></tr> <tr bgcolor="#F1E0C6"><td width="130"><b>Change Name?</b></td><td width="275" align="left"> <form action="index.php?subtopic=shopsystem&action=confirm_transaction" method="POST"><input type="hidden" name="buy_confirmed" value="yes"><input type="hidden" name="buy_id" value="'.$buy_id.'"><input type="hidden" name="buy_from" value="'.urlencode($buy_from).'"><input type="hidden" name="buy_name" value="'.urlencode($buy_name).'"><input type="submit" value="Accept"></form></td> <td align="right"><form action="index.php?subtopic=shopsystem" method="POST"><input type="submit" value="Cancel"></form></td></tr> </table>';}}} else { $main_content .= '<TABLE BORDER="0" CELLSPACING="1" CELLPADDING="5" WIDTH="100%"> <tr BGCOLOR="'.$config['site']['vdarkborder'].'"> <td CLASS="white"><b>Error</b></td> </tr> <tr BGCOLOR='.$config['site']['darkborder'].'> <td>Player with name <b>'.$buy_name.'</b> doesn\'t exist. Please <a href="index.php?subtopic=shopsystem&action=select_player&buy_id='.$buy_id.'">select other name</a>.</td> </tr> </TABLE>'; } } else { $main_content .= '<TABLE BORDER="0" CELLSPACING="1" CELLPADDING="4" WIDTH="100%"> <TR BGCOLOR="'.$config['site']['vdarkborder'].'"> <TD CLASS=white><B>Shoping Error</B></TD> </TR> <TR BGCOLOR='.$config['site']['darkborder'].'> <td> <TABLE BORDER="0" CELLSPACING="1" cellpadding="4"> <TR> <TD>Invalid name format. Please <a href="index.php?subtopic=shopsystem&action=select_player&buy_id='.$buy_id.'">select other name</a>.</TD> </TR> </TABLE> </td> </tr> </TABLE><br />';} } else { $main_content .= '<TABLE BORDER="0" CELLSPACING="1" CELLPADDING="5" WIDTH="100%"> <tr BGCOLOR="'.$config['site']['vdarkborder'].'"> <td CLASS="white"><b>Error</b></td> </tr> <tr BGCOLOR='.$config['site']['darkborder'].'> <td>For this item you need <b>'.$buy_offer['points'].'</b> points. You have only <b>'.$user_premium_points.'</b> premium points. Please <a href="index.php?subtopic=shopsystem">select other item</a> or buy premium points.</td> </tr> </TABLE>'; }} else { $main_content .= '<TABLE BORDER="0" CELLSPACING="1" CELLPADDING="5" WIDTH="100%"> <tr BGCOLOR="'.$config['site']['vdarkborder'].'"> <td CLASS="white"><b>Error</b></td> </tr> <tr BGCOLOR='.$config['site']['darkborder'].'> <td>Offer with ID <b>'.$buy_id.'</b> doesn\'t exist. Please <a href="index.php?subtopic=shopsystem">select item</a> again.</td> </tr> </TABLE>'; }}}} if(!$set_session) { unset($_SESSION['viewed_confirmation_page']); }} if(!$logged) $main_content .= '<br /><center><div class="notice"><b>Please login to see how much points you have</b></div></center>'; else if($account_logged->getCustomField("premium_points") <= 0) $main_content .='<br /><center><div class="error">You do not have premium points available.<br /><a href="index.php?subtopic=donate">Buy now Premium Points!</a></div></center>'; else if($account_logged->getCustomField("premium_points") >= 1) $main_content .='<br /><center><div class="success" style="width: 300px;">You have <b>'.$account_logged->getCustomField("premium_points").'</b> premium points available</div></center>'; } else $main_content .= ' <TABLE BORDER="0" CELLSPACING="1" CELLPADDING="4" WIDTH="100%"> <TR BGCOLOR="'.$config['site']['vdarkborder'].'"> <TD CLASS=white><B>Shoping Status</B></TD> </TR> <TR BGCOLOR='.$config['site']['darkborder'].'> <td> <TABLE BORDER="0" CELLSPACING="1" cellpadding="4"> <TR> <TD>Inativamos o Shop para manutenção interna, dentro de poucos minutos voltaremos com nossos sistemas normalizados.<br /><b>Atenciosamente,<br /> Administração</b></TD> </TR> </TABLE> </td> </tr> </TABLE>'; ?>1 point -
[Creatureevent] Quest Para Matar "x" Quantidade De Monstros Com Npc Incluido!
geanmarcell reacted to Hudsin for a topic
Fonte: Otland Esse é apenas um exemplo. Essa quest requer que você mate 200 Dragons e/ou Dragon Lords. Creaturescript crie um arquivo lua em creaturescripts/scripts/monsterkilldragon.lua e cole o seguinte: local monsters = { --name = storage ["dragon"] = 55004, ["dragon lord"] = 55004 } function onKill(cid, target) local monster = monsters[getCreatureName(target):lower()] if(isPlayer(target) == FALSE and monster and getPlayerStorageValue(cid, 76669) == 2) then if getPlayerStorageValue(cid, monster) < 200 then local killedMonsters = getPlayerStorageValue(cid, monster) if(killedMonsters == -1) then killedMonsters = 1 end setPlayerStorageValue(cid, monster, killedMonsters + 1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have killed " .. killedMonsters .. " of 200 dragons.") else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have killed enough dragons.") setPlayerStorageValue(cid, 76669, 3) end end return TRUE end em creaturescripts/scripts/login.lua adicione: registerCreatureEvent(cid, "monsterkill") em creaturescripts/creaturescripts.xml: <event type="kill" name="monsterkill" script="monsterkill.lua"/> [/ NPC Crie o npc em npc/Martin.xml e adicione: <?xml version="1.0"?> <npc name="Martin" script="data/npc/scripts/dragon quest.lua" access="3" lookdir="2" walkinterval="2000"> <mana now="800" max="800"/> <health now="132" max="200"/> <look type="151" head="115" body="76" legs="35" feet="117" addons="1" corpse="6080"/> <parameters> <parameter key="message_greet" value="Hi, can you help me? ask me for a {mission}. "/> </parameters> </npc> em npc/scripts/dragon quest.lua adicione: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local quest = 76669 local reward = 70000 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 creatureSayCallback(cid, type, msg) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if(not npcHandler:isFocused(cid)) then return false elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then npcHandler:say("Great! I'll reward you greatly {ok}?.", cid) talkState[talkUser] = 2 elseif msgcontains(msg, "ok") and talkState[talkUser] == 2 then npcHandler:say("Okay, Hurry up!", cid) setPlayerStorageValue(cid, quest, 2) talkState[talkUser] = 0 elseif msgcontains(msg, "mission") then local str = getPlayerStorageValue(cid, quest) if(str < 2) then npcHandler:say("Great, an adventurer. I need you to slay 200 dragons for me. And then, we might be able to take out those dragon lords. Well, can you slay 200 dragons for me?", cid) talkState[talkUser] = 1 return true elseif(str == 2) then npcHandler:say("Please come back for a reward.", cid) elseif(str == 3) then npcHandler:say("200 dragons, already? You're a true dragon slayer! As I promised, here's your reward.", cid) doPlayerAddItem(cid, 2160, 30) doPlayerAddExp(cid, 1000000) doPlayerAddOutfit(cid, getPlayerSex(cid) == 0 and 142 or 134, 2) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have been rewarded with the warrior addon!") setPlayerStorageValue(cid, quest, 4) elseif(str == 4) then npcHandler:say("You have done enough for me, I will soon plan our attack!", cid) end talkState[talkUser] = 0 end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Este npc vai lhe dar um addon, 1k de exp e 300k gold. Basta mudá-lo para o que quiser Gostou? por trazer ao Xtibia Rep+ :arrow:1 point