Ir para conteúdo

akumaserv

Campones
  • Total de itens

    17
  • Registro em

  • Última visita

Histórico de Reputação

  1. Upvote
    akumaserv deu reputação a Doidin em [Oficial] We Do Ots 0.1.1 (Beta Version)   
    A partir de agora não é mais Real Server e sim We Do OTS, para você conferir mais clique aqui.
     
    Até mais,
    Doidin.
  2. Upvote
    akumaserv deu reputação a Alissow em Alissow Ots 4.11 [11/07/2010] 8.6 Completo!   
    Alissow OTs 4.11!

    Esta versão 4.11 foi meio apressada, só adicionamos as features novas do 8.6.
    Aproveitem.

    Créditos:
    Alissow
    Comedinha
    Luis
    Nirk
    TFS Team
    Viniply
    Xedegux

    Sobre o OT/Mapa:
    Principais quests:
    -Annihilator
    -Inquisition Quest
    -Pits of inferno
    -Demon Oak
    -Solar axe quest
    -HOTA
    -MPA quest
    -The Challenger

    Monstros:
    -Total monstros: 10292
    -Total spawn: 5587+

    Cidades:
    -12 Cidades
    -200 Houses+-

    Raids/Invasões:
    -Rat
    -Orshabaal
    -Ghazbaran
    -Giant spider/The old window
    -Ferumbras
    -Morgaroth

    Spells:
    -Magias editadas para balanceamento das vocações


    Changelog
    Atualização [3.4 BETA]:
    - Removido áreas não usadas no mapa, diminuindo o tamanho em MBs
    - Adicionado Anti Magebomb System
    - Corrigido bugs no npc addon
    - Adicionado sistema onde os npcs falam sozinhos (Igual como foi adicionado no global). First ;]
    - Adicionado Elf village em Venonh ( bem parecida com a do global ;])
    - Potions desaparecem quando usadas
    - Corrigido sistema de Up
    - Corrigido sistema de Monster Counter
    - Nova dragon lair em Mirand Theraan (Subsolo)
    - Adicionado porta de level, que protege leveis baixos acessarem os demons da cidade de Flam
    - Ampliado deserto da cidade de Mirand Theraan
    - Adicionado Ilha de Goroma
    - Adicionado Forbidden islands
    - Ampliado floresta da cidade de alfon e colocado área de macacos parecida com Banuta.
    - Ligação de alfon com Mirand Theraan
    - Corrigido bugs reportados nas portas das casas
    - Corrigido posição dos buracos e escadas
    - Adicionado beds em todas as casas
    - Corrigido bugs em casas de yalahar
    - Adicionado Blue legs quest ( Koshei The Deathless global)
    - Corrigidas quase todas as areas de Yalahar
    - Teleports em Yalahar substituidos por NPCs de teleport do global
    - Corrigido pequenos erros no npc Capitao Coruja, e adicionado viagem à goroma
    - diminuido ataque do Eye of the seven
    - Ice rapier agora quebra
    - Corrigido npc Banker
    - Adicionado quase todos os items 8.5
    - Adicionado medusa
    - Adicionado Todos os outfits novos
    - Corrigido NPC Banker (que dava dinheiro) Script By Ta4e
    - Corrigido Annihilator Quest
    - Adicionado Notice System
    - Adicionado novo distro, compilado por Comedinha


    Atualização nº 2 [3.4]:
    Otserv atualizado...
    Corrigido debugs frequentes
    Corrigido debugs na magia exevo pan
    Corrigido bugs nos npcs Roy e Firewalker
    Adicionados mais novos items 8.5, agora temos 90% dos items novos...

    Atualização 3.5 [06/08/2009]:
    - Cidade principal (dorion) totalmente reformada
    - corrigido blue legs quest
    - Corrigido alavancas de compra de potions
    - Adicionado alavancas de compra de runas
    - Corrigido npc Bank
    - Adicionado NPC King Arthas, que vende promotion
    - Adicionado npc Rashid, que vende items.
    - Arrumado Wild Growth rune
    - Arrumado Utani Hur
    - Magias reajustadas
    - Novo estilo de server save
    - Ilha de mystic reformulada (by Nirk)
    - Adicionado nova magia para knights "Exkordium".
    - Adicionado nova magia para mages (promoted) "Exura Seil".
    - Adicionado nova magia para mages (promoted) "Exevo Gran Frigo". (arrumar -> sem exhausted nem gasta mana)
    - Adicionados novos monstros.
    - Adicionado quest challenge (lvl 250)
    - Corrigido bug do Dead Cyclops
    - Bug aol Arrumado
    - Poi Modificada
    - Corrigido teleports ghouls yalahar
    - Modificada demon helmet quest, assim como o premio da quest
    - Corrigido nome do Hallowed axe
    - Corrigido bug das houses
    - Corrigido bug dos items andaveis

    Atualização Patch 3.5.1 [07/08/2009]:
    - Corrigido erro na inicialização do Ot
    - Bug das potions corrigido
    - Bug do aol corrigido (pelomenos pra mim)
    - Bug dos outfits corrigido
    - Corrigido erros nas escadas na ilha PvP
    - O monstro The Fastest Turtle agora não morre, se tornando um monstro apenas para atrapalhar
    - Retirada suposta quest dos 3 hellhounds e 1 minishabaal
    - Adicionado teleport de retorno na Ferumbras Tower
    - Corrigido posições da raid de The old widow
    - Corrigido bug das escadas nas minas de demons
    - Corrigido alguns bugs vistos no mapa

    Atualização 3.6 [10/08/2009]:
    - Arrumado bugs criticos
    - Arrumado comando !promote/!demote
    - Atualizado Items.xml
    - Bug das Beds arrumado
    - Modificações na cidade, como, nature e caves
    - Nova sala de treino
    - Adicionado comando !highscores

    Atualização 3.7! Beta [18/12/2009]:
    - Guildhall support (Elf)
    - Nova deathlist(Elf, OpenTibia SVN)
    - Frags funcionando (Elf)
    - Atualizado monstros e items (slawkens, KaczooH, Elf)
    - Novas talkactions: /commands, /wp, /storage, /config, /promote & /demote. (slawkens)
    - Novas funções lua
    - Novos creatureevents (slawkens, Elf)
    - Novos configuráveis (Elf, slawkens)
    - Modificado ataque de monstros existentes (especialmente outfits e velocidade) (Elf)
    - Monstros reorganizados & atualizados (Nem todos) (slawkens)
    - Melhorado sistema de banimentos (Elf)
    - Reescrita janela de Rule Violation (Elf)
    - Arrumado Stamina (Elf, OpenTibia SVN)
    - Casas agora são salvas nas modificações do dono (Elf)
    - Escadas de yalahar funcionando perfeitamente (Elf, Talaturen)
    - Sistema de nado & waterball completo (slawkens)
    - Monstros invisiveis não são mais mandandos ao client (anti bot) (OpenTibia SVN)
    - Anti-dash (OpenTibia SVN)
    - Sistema de leilão de casas, possibilidade de usar site para vender casas (house_actions table) (OpenTibia SVN, Elf)
    - Salvando bot actions para /logs/bots por cada player. Por exemplo, bot pode enviar mensagem com mais de 255 caracteres (slawkens)
    - Novos raid events- item spawning & disappearing and more (Elf)
    - Modificações no NPC system (Elf)
    - NPCs OutfitModule (Elf)
    - Completo 8.53 support, com wars (Elf)
    - Completo 8.54 support (Elf)
    - Arrumado NPC voices (Elf)
    - Players serão informados quando o Gamemaster logar ou ficar invisivel (slawkens)
    - Arrumado Player Deaths (Elf, slawkens)
    - Arrumado Abuso de PZ (slawkens)
    - Portas agora não ajudam players a entrar em PZ (slawkens)
    - Magic level formula (OpenTibia SVN, KaczooH)
    - Memory leaks (Elf)
    - Queries optimization (Talaturen)
    - Janelas podem ser abertas do lado de fora da casa- agora apenas GMs podem fazer isso (slawkens)
    - arrumado Efeitos para o Ghost (GM)- configuravel (slawkens)
    - Corrigido >> Ghost debugging players (OpenTibia SVN, Elf)
    - Corrigido erro na promotion (Elf)
    - Corrigido vários erros no console. (slawkens)
    - Corrigido Spam de magias (Elf)
    - Corrigido stamina premium (Elf)
    - Corrigido Clean (Elf)
    - Corrigido vários outfits (Elf)
    - Corrigido Ghost (Elf)
    - Todas as correções no OpenTibia SVN (Open Tibia SVN, Elf)
    - Corrigido Todos os crashes possiveis (Elf)
    - Npcs Corrigidos (Comedinha)
    - Distro Reformulado (comedinha)
    - Bugs de reports arrumados (Comedinha)
    - Novos outfits (Alissow)
    - Actions Arrumadas (Comedinha)
    - Libs trocadas (Comedinha)
    - Talkactions bugadas arrumadas (Comedinha)
    - Reforma na área Sul da cidade Dorion (Alissow)
    - Adicionado monstros 8.54 (Alissow)
    - Corrigido bug das potions infinitas (Alissow)

    Atualização 3.7 Patch 1 [27/12/2009]:
    - Rampa na frente da loja de foods retirada (Alissow)
    - Arrumado bugs de mapa em anknor (Alissow)
    - Bug na Lib dos npcs corrigido (Alissow)
    - Bug do acc manager arrumado! (Alissow)
    - Magias "Exkordium" e "Ice Storm" arrumadas (Alissow)
    - Monstros 8.54 funcionando (Alissow)
    - 2º Addon Yalaharian arrumado (Alissow)
    - Addons Warmaster adicionados no NPC Addoner (Alissow)
    - Pequenas modificações na cidade principal, Dorion, para melhora da jogabilidade (Alissow)
    - Comando /Deathlist retirado (Alissow)
    - Magic Wall Rune arrumada (Alissow)
    - Quest Annihilator arrumada (Alissow)
    - "Your depot contain x items" Arrumado (Alissow)
    - Addons reorganizados, mais facil aggora (Alissow)
    - Tempo de Red skull e Black skull reduzidos para 24 e 42 horas (Alissow)
    - Reduzida porcentagem de morte (Alissow)
    - Acrescentado chance de critical hits (Alissow)
    - ShowHealingDamage Adicionado (Alissow)
    - Várias partes do mapa remapeadas (Alissow)
    - NPCs para recarga de Soft boots & Firewalker boots arrumados [Não testado] (Alissow)
    - Comando !frags arrumado! (Alissow)
    - Agora é possivel fazer addons sem precisar do comando !buypremium (Alissow)


    Atualização 3.8 [17/01/2010]:
    - Arrumado bug nas escadas do Dlair (Alissow)
    - Todos os bugs nos NPCs arrumados (Comedinha)
    - Novas talkactions [a pedidos] (Comedinha)
    - Deathlist arrumada (Comedinha)
    - Novo Distro (Comedinha)
    - MySQL Atualizada (Comedinha)
    - Firewarker boots não é mais gasta quando não está usando (Comedinha)
    - Problemas com items no Rashid arrumados (Alissow, Comedinha, Comunidade)
    - O NPC Banker foi corrigido, mas achei mais seguro retira-lo, visto que ninguem usava e poderia causar outro tipo de bug
    - Ilha (Sim aqui é uma ilha) de Zao adicionada (Alissow, Barker)
    - Monstros 8.54 aperfeiçoados (Alissow, Markithu, Zkum)
    - Reduzido danos da magia Exkordium (Alissow)
    - Os npcs Dark Rodo e Rachel vendem Blank Runes (Alissow)
    - Magias que não hitavam anteriormente foram arrumadas (Alissow)
    - Comando !buypremium arrumado (Alissow)
    - Arena PVM - Mais conhecida como Arena Svargrond - FUNCIONANDO!!! (Alissow)
    - Magia LightChain Retirada (Alissow)
    - Adicionado um sisteminha legal no templo (Alissow)
    - NPC Rashid retirado (Alissow)

    Atualização 3.8 Minor Patch 1 [17/01/2010]:
    - Comando Deathlist retirado novamente, fizemos testes equivocados.
    Se você é uma das 16 pessoas que baixou a versão anterior (3.8) não precisa baixar esta, basta retirar o comando !deathlist e /deathlist do seu Talkactions.xml, Os comandos causam quedas no servidor.

    Atualização 3.9 [15/02/2010]:
    - Cidade principal (Dorion) reformada, novo templo, novo depot, novo porto, novos npcs :] (Alissow)
    - Adicionado Reputation System (Comedinha, Cybermaster)
    - Adicionado !bless system (Comedinha)
    - /info melhorado (Comedinha)
    - Jail System (Comedinha)
    - Bug chatinho nos tiles pretos arrumado.
    - Magic Wall Funcionando! (Alissow)
    - Agora você pode fazer bolos e pães :] (Comedinha, Jean, Ojani)
    - Adicionado sistema de casamento (Comedinha, ScorpiOOn93, Alissow)
    - Loot The Fastest Turtle diminuido (Alissow)
    - Loot e experiencia do Feromous mais baixo (Alissow)
    - Sistema de parceis para Dorion funcionando (Alissow)
    - Guildwar System (Comedinha)
    - Anti MageBomb System (Comedinha, Huggen)
    - Adicionado Anti Nuker - Esse funciona! (Comedinha)
    - Adicionado Map Marks, para os players novos (Alissow, Comedinha)


    Atualização 4.0 [15/02/2010]:
    - Cidade Mountain totalmente reformada (Alissow)
    - Montanha de Goblins de Dorion reformada (Alissow)
    - Demonic Castle de Dorion reformado (Alissow)
    - Cidade de Venonh modificada (Luis)
    - Distro atualizado, funcionando nos clients 8.54, 8.55, 8.56 e 8.57 (Comedinha)
    - Comando !bless retirado (Alissow)
    - O NPC Ermes não vende mais items de decoração (Alissow)
    - Arrumado bugs na Ferumbras Tower (Alissow)
    - O comando !AFK on agora mantem o player parado (Comedinha)
    - Arrumado bugs nas escadas da área de DeathFans (Alissow)
    - Comando !Deathlist funcionando! (Alissow, Doidinmapper, GT Thionix)
    - Sistema de REP atualizado (Comedinha)
    - Sistema de Polls (Comedinha)
    - Banco por comandos (Comedinha)
    - Novos comandos de addon e accounts (Comedinha)
    - Sistema de futebol completo! (Comedinha)
    - Sistema Antibot (Comedinha)
    - Magia Spared Hur modificada (Alissow, Orzeleagle)
    - Adicionado sistema de montaria (Alissow, unknown666)
    - Adicionado Canivetes (Alissow, Siramix)
    - Nova hunt Subaquatica (Luis)

    Atualização 4.11! [11/07/2010]:
    - Versão 8.6, todos os items, outfits e monstros novos (Comedinhasss, Fireelement)
    - Adicionados os novos monstros 8.6 (Alissow)
    - Bug das potions arrumado (Comedinha, Matheusmkalo, Gabriel linhares, Fireelement)
    - Erros das runas arrumado (Comedinha, Gabriel linhares, Matheusmkalo, fireelement)


    Download
    Servidor: 4shared
    Tamanho: 17,416 KB
    Download: http://www.4shared.com/file/ez8XKrju/860_Alissow_Ots_411.html

    Link protegido: http://lix.in/-8d4bc0
    Scan VirusTotal: http://www.virustotal.com/pt/analisis/983abb574dbb957a75aa1fd29eb804065f775e6a0c43216aa277686d32bce22a-1263702373

    Atenção

    - Acc do God: god/god
    - LEIA o tópico antes de postar qualquer coisa ou duvida
    - Reportem se houver algum bug
    - A database fica na pasta schemas+Database
    - Proibido o uso do nosso distro sem o nosso consenso, obrigado.


    Andei percebendo que há muitos mapas feitos por mim em outros servidores postados aqui no xtibia, eu não sei se vocês sabem, mas isso é PLÁGIO.
    Eu não sou uma pessoa egoista, tudo que eu posto aqui no XTibia é para ser compartilhado, mas desde que mantenham os devidos créditos.
    Será denunciado qualquer tipo de "roubo" sem minha autorização para beneficio próprio. Eu sei que vocês não se importam muito com isso, eu também não deveria me
    importar, mas é o tempo e a dedicação de outra pessoa que vocês estão roubando, então peço gentilmente aos que tem conhecimento desses mapas, que me apontem.
    Não tem graça trabalhar horas e horas e ser roubado em dois minutos.
     
  3. Upvote
    akumaserv deu reputação a Kydrai em Vip System By Account V1.0   
    Vip System by Account 1.0


    By Kydrai

     
    Este é um vip system por account, ou seja, um sistema de vip válido para todos os characters de uma determinada conta.
     
    O script foi testado no TFS 0.3.6 - 8.54.
    E no site Gesior 0.3.4 beta4.
    Em caso de erros ou dúvidas é só postar.
     

    Funções do Script


    Função necessária para começar a usar o script:
    installVip() -> Cria a coluna no banco de dados para usar o sistema de vip (testei somente em sqlite, mas acredito que funcione em mysql)
     
    Funções que utilizam o account id:
    doTeleportPlayersByAccount(acc, topos) -> Teleporta todos os players da account
    getVipTimeByAccount(acc) -> Pega o tempo de vip
    setVipTimeByAccount(acc, time) -> Edita o tempo de vip
    getVipDaysByAccount(acc) -> Pega o tempo de vip em dias
    isVipAccount(acc) -> Verifica se é vip
    addVipDaysByAccount(acc, days) -> Adiciona dias de vip
    doRemoveVipDaysByAccount(acc, days) -> Remove dias de vip
    getVipDateByAccount(acc) -> Pega a data e hora que irá terminar a vip
     
    Funções que utilizam o creature id (cid):
    doTeleportPlayers(cid, topos) -> Teleporta todos os players da account
    getVipTime(cid) -> Pega o tempo de vip
    setVipTime(cid, time) -> Edita o tempo de vip
    getVipDays(cid) -> Pega o tempo de vip em dias
    isVip(cid) -> Verifica se é vip
    addVipDays(cid, days) -> Adiciona dias de vip
    doRemoveVipDays(cid, days) -> Remove dias de vip
    getVipDate(cid) -> Pega a data e hora que irá terminar a vip
     

    Inserindo as funções


    Abra a pasta data/lib, crie um arquivo lua e coloque:
    vipAccount.lua

    --[[ Name: Vip System by Account Version: 1.0 Author: Kydrai Forum: http://www.xtibia.com/forum/topic/136543-vip-system-by-account-v10/ [Functions] -- Install installVip() -- By Account doTeleportPlayersByAccount(acc, topos) getVipTimeByAccount(acc) setVipTimeByAccount(acc, time) getVipDaysByAccount(acc) isVipAccount(acc) addVipDaysByAccount(acc, days) doRemoveVipDaysByAccount(acc, days) getVipDateByAccount(acc) -- By Player doTeleportPlayers(cid, topos) getVipTime(cid) setVipTime(cid, time) getVipDays(cid) isVip(cid) addVipDays(cid, days) doRemoveVipDays(cid, days) getVipDate(cid) ]]-- -- Install function installVip() if db.executeQuery("ALTER TABLE `accounts` ADD viptime INT(15) NOT NULL DEFAULT 0;") then print("[Vip System] Vip System instalado com sucesso!") return TRUE end print("[Vip System] Não foi possível instalar o Vip System!") return FALSE end -- By Account function doTeleportPlayersByAccount(acc, topos) if db.executeQuery("UPDATE `players` SET `posx` = "..topos.x..", `posy` = "..topos.y..", `posz` = "..topos.z.." WHERE `account_id` = "..acc..";") then return TRUE end return FALSE end function getVipTimeByAccount(acc) local vip = db.getResult("SELECT `viptime` FROM `accounts` WHERE `id` = "..acc..";") if vip:getID() == -1 then print("[Vip System] Account not found!") return FALSE end return vip:getDataInt("viptime") end function setVipTimeByAccount(acc, time) if db.executeQuery("UPDATE `accounts` SET `viptime` = "..time.." WHERE `id` = "..acc..";") then return TRUE end return FALSE end function getVipDaysByAccount(acc) local vipTime = getVipTimeByAccount(acc) local timeNow = os.time() local days = math.ceil((vipTime - timeNow)/(24 * 60 * 60)) return days <= 0 and 0 or days end function isVipAccount(acc) return getVipDaysByAccount(acc) > 0 and TRUE or FALSE end function addVipDaysByAccount(acc, days) if days > 0 then local daysValue = days * 24 * 60 * 60 local vipTime = getVipTimeByAccount(acc) local timeNow = os.time() local time = getVipDaysByAccount(acc) == 0 and (timeNow + daysValue) or (vipTime + daysValue) setVipTimeByAccount(acc, time) return TRUE end return FALSE end function doRemoveVipDaysByAccount(acc, days) if days > 0 then local daysValue = days * 24 * 60 * 60 local vipTime = getVipTimeByAccount(acc) local time = vipTime - daysValue setVipTimeByAccount(acc, (time <= 0 and 1 or time)) return TRUE end return FALSE end function getVipDateByAccount(acc) if isVipAccount(acc) then local vipTime = getVipTimeByAccount(acc) return os.date("%d/%m/%y %X", vipTime) end return FALSE end -- By Player function doTeleportPlayers(cid, topos) doTeleportPlayersByAccount(getPlayerAccountId(cid), topos) end function getVipTime(cid) return getVipTimeByAccount(getPlayerAccountId(cid)) end function setVipTime(cid, time) return setVipTimeByAccount(getPlayerAccountId(cid), time) end function getVipDays(cid) return getVipDaysByAccount(getPlayerAccountId(cid)) end function isVip(cid) return isVipAccount(getPlayerAccountId(cid)) end function addVipDays(cid, days) return addVipDaysByAccount(getPlayerAccountId(cid), days) end function doRemoveVipDays(cid, days) return doRemoveVipDaysByAccount(getPlayerAccountId(cid), days) end function getVipDate(cid) return getVipDateByAccount(getPlayerAccountId(cid)) end

    Exemplos de uso


    Talkaction
     
    GOD:
    /installvip
    /addvip name, days
    /removevip name, days
    /checkvip name
     
    Player:
    /buyvip
    /vipdays
     
    talkactions.xml:

    <talkaction log="yes" access="5" words="/installvip;/addvip;/removevip;/checkvip" event="script" value="vipaccgod.lua"/> <talkaction words="/buyvip;/vipdays" event="script" value="vipaccplayer.lua"/>
    vipaccgod.lua:

    function onSay(cid, words, param, channel) local t = param:explode(",") local name, days = t[1], tonumber(t[2]) if words == "/installvip" then if installVip() then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Vip System instalado com sucesso!") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Não foi possível instalar o Vip System!") end elseif words == "/addvip" then if name then if days then local acc = getAccountIdByName(name) if acc ~= 0 then addVipDaysByAccount(acc, days) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você adicionou "..days.." dia(s) de vip ao "..name..", agora ele possui "..getVipDaysByAccount(acc).." dia(s) de vip.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este player não existe.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode adicionar essa quantidade de dia(s) de vip.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode adicionar dia(s) de vip a este player.") end elseif words == "/removevip" then if name then if days then local acc = getAccountIdByName(name) if acc ~= 0 then doRemoveVipDaysByAccount(acc, days) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você retirou "..days.." dia(s) de vip do "..name..", agora ele possui "..getVipDaysByAccount(acc).." dia(s) de vip.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este player não existe.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode retirar essa quantidade de dia(s) de vip.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode retirar dia(s) de vip a este player.") end elseif words == "/checkvip" then if name then local acc = getAccountIdByName(name) if acc ~= 0 then local duration = getVipDateByAccount(acc) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "O "..name.." possui "..getVipDaysByAccount(acc).." dias de vip."..(duration and (" Ela irá durar até "..duration..".") or "")) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este player não existe.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não pode visualizar os dias de vip a este player.") end end return TRUE end
    vipaccplayer.lua:

    function onSay(cid, words, param, channel) if words == "/buyvip" then local price = 1000000 local days = 30 if doPlayerRemoveMoney(cid, price) then addVipDays(cid, days) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você adicionou "..days.." dia(s) de vip, agora você possui "..getVipDays(cid).." dia(s) de vip.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa de "..price.." para adicionar "..days.." dia(s) de vip.") end elseif words == "/vipdays" then local duration = getVipDate(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or "")) end return TRUE end
    Movement (Tile)
     
    Coloque actionid 15000 em um tile onde somente os vips poderão passar.
     
    movements.xml:

    <movevent type="StepIn" actionid="15000" event="script" value="viptile.lua"/>
     
    viptile.lua:

    function onStepIn(cid, item, position, fromPosition) if isVip(cid) == FALSE then doTeleportThing(cid, fromPosition, false) doSendMagicEffect(position, CONST_ME_MAGIC_BLUE) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Somente players vip podem passar.") end return TRUE end
    Creaturescript (Login)
     
    Quando player logar irá verificar se a vip do player acabou, se sim então irá teleportar todos os players da account para o templo, se não irá mostrar o tempo da vip.
     
    creaturescripts.xml:

    <event type="login" name="viplogin" script="viplogin.lua"/>
     
    viplogin.lua:

    function onLogin(cid) local vip = isVip(cid) if getVipTime(cid) > 0 and vip == FALSE then local townid = 1 doPlayerSetTown(cid, townid) local templePos = getTownTemplePosition(getPlayerTown(cid)) doTeleportThing(cid, templePos, false) setVipTime(cid, 0) doTeleportPlayers(cid, templePos) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sua Vip acabou!") elseif vip == TRUE then local duration = getVipDate(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você possui "..getVipDays(cid).." dia(s) de vip."..(duration and (" Ela irá durar até "..duration..".") or "")) end return TRUE end
    Action (Door)
     
    Coloque actionid 15001 na door onde somente os vips poderão passar. Use a porta gate of expertise (id: 1227)
     
    actions.xml:

    <action actionid="15001" script="vipdoor.lua"/>
     
    vipdoor.lua:

    function onUse(cid, item, fromPosition, itemEx, toPosition) if isVip(cid) == FALSE then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Somente players vip podem passar.") elseif item.itemid == 1227 then doTransformItem(item.uid, item.itemid + 1) doTeleportThing(cid, toPosition) end return TRUE end
    NPC (Vendedor de VIP)
     
    vipnpc.xml:

    <?xml version="1.0" encoding="UTF-8"?> <npc name="Vendedor de VIP" script="vipnpc.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="128" head="17" body="54" legs="114" feet="0" addons="2"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|, I sell {vip} days."/> </parameters> </npc>
     
    vipnpc.lua:

    local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function buyVip(cid, message, keywords, parameters, node) if(not npcHandler:isFocused(cid)) then return false end if doPlayerRemoveMoney(cid, parameters.price) then addVipDays(cid, parameters.days) npcHandler:say('Thanks, you buy '..parameters.days..' vip days. You have '..getVipDays(cid)..' vip days.', cid) else npcHandler:say('Sorry, you don\'t have enough money.', cid) end npcHandler:resetNpc() return true end local node1 = keywordHandler:addKeyword({'vip'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Do you want buy 30 vip days for 1000000 gp\'s?'}) node1:addChildKeyword({'yes'}, buyVip, {price = 1000000, days = 30}) node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Ok, then.', reset = true}) npcHandler:addModule(FocusModule:new())
     

    Erros e Soluções


     

    Configurando o Gesior


    Com essa configuração irá aparecer o vip status do player no site e será possível vender vip pelo site.
    Se eu esqueci de alguma coisa é só avisar.
     
    accountmanagement.php
    Depois de:

    if(!$account_logged->isPremium()) $account_status = '<b><font color="red">Free Account</font></b>'; else $account_status = '<b><font color="green">Premium Account, '.$account_logged->getPremDays().' days left</font></b>';
    Adicione:

    if(!$account_logged->isVip()) $account_vip_status = '<b><font color="red">Not Vip Account</font></b>'; else $account_vip_status = '<b><font color="green">Vip Account, '.$account_logged->getVipDays().' days left</font></b>';
    Depois de:

    <td class="LabelV" >Account Status:</td><td>'.$account_status.'</td></tr><tr style="background-color:'.$config['site']['darkborder'].';" >
    Adicione:

    <td class="LabelV" >Account Vip Status:</td><td>'.$account_vip_status.'</td></tr><tr style="background-color:'.$config['site']['darkborder'].';" >
     
    pot/OTS_Account.php
    Substitua:

    private $data = array('email' => '', 'blocked' => false, 'rlname' => '','location' => '','page_access' => 0,'lastday' => 0,'premdays' => 0, 'created' => 0);
    Por:

    private $data = array('email' => '', 'blocked' => false, 'rlname' => '','location' => '','page_access' => 0,'lastday' => 0,'premdays' => 0, 'created' => 0, 'viptime' => 0);
    Substitua:

    $this->data = $this->db->query('SELECT ' . $this->db->fieldName('id') . ', ' . $this->db->fieldName('name') . ', ' . $this->db->fieldName('password') . ', ' . $this->db->fieldName('email') . ', ' . $this->db->fieldName('blocked') . ', ' . $this->db->fieldName('rlname') . ', ' . $this->db->fieldName('location') . ', ' . $this->db->fieldName('page_access') . ', ' . $this->db->fieldName('premdays') . ', ' . $this->db->fieldName('lastday') . ', ' . $this->db->fieldName('created') . ' FROM ' . $this->db->tableName('accounts') . ' WHERE ' . $this->db->fieldName('id') . ' = ' . (int) $id)->fetch();
    Por:

    $this->data = $this->db->query('SELECT ' . $this->db->fieldName('id') . ', ' . $this->db->fieldName('name') . ', ' . $this->db->fieldName('password') . ', ' . $this->db->fieldName('email') . ', ' . $this->db->fieldName('blocked') . ', ' . $this->db->fieldName('rlname') . ', ' . $this->db->fieldName('location') . ', ' . $this->db->fieldName('page_access') . ', ' . $this->db->fieldName('premdays') . ', ' . $this->db->fieldName('viptime') . ', ' . $this->db->fieldName('lastday') . ', ' . $this->db->fieldName('created') . ' FROM ' . $this->db->tableName('accounts') . ' WHERE ' . $this->db->fieldName('id') . ' = ' . (int) $id)->fetch();
    Substitua:

    $this->db->query('UPDATE ' . $this->db->tableName('accounts') . ' SET ' . $this->db->fieldName('password') . ' = ' . $this->db->quote($this->data['password']) . ', ' . $this->db->fieldName('email') . ' = ' . $this->db->quote($this->data['email']) . ', ' . $this->db->fieldName('blocked') . ' = ' . (int) $this->data['blocked'] . ', ' . $this->db->fieldName('rlname') . ' = ' . $this->db->quote($this->data['rlname']) . ', ' . $this->db->fieldName('location') . ' = ' . $this->db->quote($this->data['location']) . ', ' . $this->db->fieldName('page_access') . ' = ' . (int) $this->data['page_access'] . ', ' . $this->db->fieldName('premdays') . ' = ' . (int) $this->data['premdays'] . ', ' . $this->db->fieldName('lastday') . ' = ' . (int) $this->data['lastday'] . ' WHERE ' . $this->db->fieldName('id') . ' = ' . $this->data['id']);
    Por:

    $this->db->query('UPDATE ' . $this->db->tableName('accounts') . ' SET ' . $this->db->fieldName('password') . ' = ' . $this->db->quote($this->data['password']) . ', ' . $this->db->fieldName('email') . ' = ' . $this->db->quote($this->data['email']) . ', ' . $this->db->fieldName('blocked') . ' = ' . (int) $this->data['blocked'] . ', ' . $this->db->fieldName('rlname') . ' = ' . $this->db->quote($this->data['rlname']) . ', ' . $this->db->fieldName('location') . ' = ' . $this->db->quote($this->data['location']) . ', ' . $this->db->fieldName('page_access') . ' = ' . (int) $this->data['page_access'] . ', ' . $this->db->fieldName('premdays') . ' = ' . (int) $this->data['premdays'] . ', ' . $this->db->fieldName('viptime') . ' = ' . (int) $this->data['viptime'] . ', ' . $this->db->fieldName('lastday') . ' = ' . (int) $this->data['lastday'] . ' WHERE ' . $this->db->fieldName('id') . ' = ' . $this->data['id']);
    Depois de:

    public function getPremDays() { if( !isset($this->data['premdays']) || !isset($this->data['lastday']) ) { throw new E_OTS_NotLoaded(); } return $this->data['premdays'] - (date("z", time()) + (365 * (date("Y", time()) - date("Y", $this->data['lastday']))) - date("z", $this->data['lastday'])); }
    Adicione:

    public function getVipDays() { if( !isset($this->data['viptime']) || !isset($this->data['lastday']) ) { throw new E_OTS_NotLoaded(); } return ceil(($this->data['viptime'] - time()) / (24*60*60)); }
    Depois de:

    public function isPremium() { return ($this->data['premdays'] - (date("z", time()) + (365 * (date("Y", time()) - date("Y", $this->data['lastday']))) - date("z", $this->data['lastday'])) > 0); }
    Adicione:

    public function isVip() { return ceil(($this->data['viptime'] - time()) / (24*60*60)) > 0; }
     
    characters.php
    Substitua:

    if($config['site']['show_vip_status']) { $id = $player->getCustomField("id"); if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD WIDTH=10%>Vip Status:</TD>'; $vip = $SQL->query('SELECT * FROM player_storage WHERE player_id = '.$id.' AND `key` = '.$config['site']['show_vip_storage'].';')->fetch(); if($vip == false) { $main_content .= '<TD><span class="red"><B>NOT VIP</B></TD></TR>'; } else { $main_content .= '<TD><span class="green"><B>VIP</B></TD></TR>'; } $comment = $player->getComment(); $newlines = array("\r\n", "\n", "\r"); $comment_with_lines = str_replace($newlines, '<br />', $comment, $count); if($count < 50) $comment = $comment_with_lines; if(!empty($comment)) { if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD VALIGN=top>Comment:</TD><TD>'.$comment.'</TD></TR>'; } }
    Por:

    if($config['site']['show_vip_status']) { $id = $player->getCustomField("id"); if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD WIDTH=10%>Account Vip Status:</TD>'; if(!$account->isVip()) { $main_content .= '<TD><span class="red"><B>NOT VIP</B></TD></TR>'; } else { $main_content .= '<TD><span class="green"><B>VIP</B></TD></TR>'; } $comment = $player->getComment(); $newlines = array("\r\n", "\n", "\r"); $comment_with_lines = str_replace($newlines, '<br />', $comment, $count); if($count < 50) $comment = $comment_with_lines; if(!empty($comment)) { if(is_int($number_of_rows / 2)) { $bgcolor = $config['site']['darkborder']; } else { $bgcolor = $config['site']['lightborder']; } $number_of_rows++; $main_content .= '<TR BGCOLOR="'.$bgcolor.'"><TD VALIGN=top>Comment:</TD><TD>'.$comment.'</TD></TR>'; } }
     
    shopsystem.php (+Créditos ao GM Bekman)
    Substitua:

    if($buy_offer['type'] == 'pacc') { $player_premdays = $buy_player_account->getCustomField('premdays'); $player_lastlogin = $buy_player_account->getCustomField('lastday'); $save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_pacc').' (id, to_name, to_account, from_nick, from_account, price, pacc_days, trans_state, trans_start, trans_real) VALUES (NULL, '.$SQL->quote($buy_player->getName()).', '.$SQL->quote($buy_player_account->getId()).', '.$SQL->quote($buy_from).', '.$SQL->quote($account_logged->getId()).', '.$SQL->quote($buy_offer['points']).', '.$SQL->quote($buy_offer['days']).', \'realized\', '.$SQL->quote(time()).', '.$SQL->quote(time()).');'; $SQL->query($save_transaction); $buy_player_account->setCustomField('premdays', $player_premdays+$buy_offer['days']); $account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']); $user_premium_points = $user_premium_points - $buy_offer['points']; if($player_premdays == 0) { $buy_player_account->setCustomField('lastday', time()); } $main_content .= '<h2>PACC added!</h2><b>'.$buy_offer['days'].' days</b> of Premium Account added to account of player <b>'.$buy_player->getName().'</b> for <b>'.$buy_offer['points'].' premium points</b> from your account.<br />Now you have <b>'.$user_premium_points.' premium points</b>.<br /><a href="index.php?subtopic=shopsystem">GO TO MAIN SHOP SITE</a>'; }
    Por:

    if($buy_offer['type'] == 'pacc') { $player_viptime = $buy_player_account->getCustomField('viptime'); $player_lastlogin = $buy_player_account->getCustomField('lastday'); $save_transaction = 'INSERT INTO '.$SQL->tableName('z_shop_history_pacc').' (id, to_name, to_account, from_nick, from_account, price, pacc_days, trans_state, trans_start, trans_real) VALUES (NULL, '.$SQL->quote($buy_player->getName()).', '.$SQL->quote($buy_player_account->getId()).', '.$SQL->quote($buy_from).', '.$SQL->quote($account_logged->getId()).', '.$SQL->quote($buy_offer['points']).', '.$SQL->quote($buy_offer['days']).', \'realized\', '.$SQL->quote(time()).', '.$SQL->quote(time()).');'; $SQL->query($save_transaction); if($player_viptime > 0) $buy_player_account->setCustomField('viptime', $player_viptime + ($buy_offer['days'] * 24 * 60 * 60)); else $buy_player_account->setCustomField('viptime', time() + ($buy_offer['days'] * 24 * 60 * 60)); $account_logged->setCustomField('premium_points', $user_premium_points-$buy_offer['points']); $user_premium_points = $user_premium_points - $buy_offer['points']; if($player_viptime == 0) { $buy_player_account->setCustomField('lastday', time()); } $main_content .= '<h2>VIP Days added!</h2><b>'.$buy_offer['days'].' days</b> of Vip Account added to account of player <b>'.$buy_player->getName().'</b> for <b>'.$buy_offer['points'].' premium points</b> from your account.<br />Now you have <b>'.$user_premium_points.' premium points</b>.<br /><a href="index.php?subtopic=shopsystem">GO TO MAIN SHOP SITE</a>'; }
     

    Links Úteis


    01- [Gesior Acc] Vendedo Vip Pelo Pacc
    Créditos: GM Bekman
     
    02- Double Exp Para Vip
    Créditos: Vodkart
     
    03- Outfits Só Para Jogadores Vips
    Créditos: Vodkart
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...