Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 10/12/11 em todas áreas
-
New Repel System
JS Lotus e 2 outros reagiu a nyuchiha por um tópico no fórum
Ola a todos, venho lhes trazer um script criado por mim recentemente. Quem ja jogou Pokemon de GB,GBA etc sabe qual a função do Repel e o quanto ele é importante. O Script é divido em 2 partes, O Repel ( Que é uma potion ) e um script de Movements que vou explicar a função logo abaixo. Algumas informações sobre como ele funciona. Então vamos la : . <~~ Repel ~~> <~~ Parte do Movements ~~> Um Video para ficar + facil de entender a função dele...3 pontos -
Bank System =D
lovemetal e um outro reagiu a angeldoido por um tópico no fórum
Ola galera vo coloka um script ake mto bom, player fala !deposit VALOR ou !depositeall e deposita todo seu dinheiro, pra tira !withdraw VALOR Ou !whitdrawall ppra tira tudo versao testada 8.60,8.62 e 9.10 Vamos la vai em \data\talkactions\scripts e dentro de script cria outra pasta Bank ficando assim \data\talkactions\scripts\Bank Coloka os seguinte script la dentro 1°-- balance.lua function onSay(cid, words, param) local config = { bankSystemEnabled = getBooleanFromString(getConfigInfo('bankSystem')), playerIsFighting = hasCondition(cid, CONDITION_INFIGHT) } if config.bankSystemEnabled == TRUE then if config.playerIsFighting == FALSE then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Your account balance is " .. getPlayerBalance(cid) .. ".") return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Bank can not be used in fight.") return TRUE end else return FALSE end end 2°--deposit.lua function onSay(cid, words, param) local config = { bankSystemEnabled = getBooleanFromString(getConfigInfo('bankSystem')), playerIsFighting = hasCondition(cid, CONDITION_INFIGHT) } if config.bankSystemEnabled == TRUE then if config.playerIsFighting == FALSE then if(param == "") then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Command requires param.") return TRUE end local m = tonumber(param) if(not m) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Command requires numeric param.") return TRUE end m = math.abs(m) if m <= getPlayerMoney(cid) then doPlayerDepositMoney(cid, m) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Alright, you have added the amount of " .. m .. " gold to your balance. You can withdraw your money anytime you want to. Your account balance is " .. getPlayerBalance(cid) .. ".") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You do not have enough money.") end return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Bank can not be used in fight.") return TRUE end else return FALSE end end 3°--deposit_all.lua function onSay(cid, words, param) local config = { bankSystemEnabled = getBooleanFromString(getConfigInfo('bankSystem')), playerIsFighting = hasCondition(cid, CONDITION_INFIGHT) } if config.bankSystemEnabled == TRUE then if config.playerIsFighting == FALSE then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Alright, you have added the amount of " .. getPlayerMoney(cid) .. " gold to your balance. You can withdraw your money anytime you want to.") doPlayerDepositAllMoney(cid) return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Bank can not be used in fight.") return TRUE end else return FALSE end end 4°--transfer.lua function onSay(cid, words, param) local config = { bankSystemEnabled = getBooleanFromString(getConfigInfo('bankSystem')), playerIsFighting = hasCondition(cid, CONDITION_INFIGHT) } if config.bankSystemEnabled == TRUE then if config.playerIsFighting == TRUE then if(param == "") then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Command requires param.") return TRUE end local t = string.explode(param, ",") local m = tonumber(t[2]) local tmp = string.explode(t[2], ",") if(not m) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "No money specified.") return TRUE end m = math.abs(m) if m <= getPlayerBalance(cid) then if playerExists(t[1]) then doPlayerTransferMoneyTo(cid, t[1], m) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You have transferred " .. m .. " gold to " .. t[1] .. ". Your account balance is " .. getPlayerBalance(cid) .. " gold.") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Player " .. t[1] .. " does not exist.") end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "There is not enough gold on your account. Your account balance is " .. getPlayerBalance(cid) .. ". Please tell the amount of gold coins you would like to transfer.") end return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Bank can not be used in fight.") return TRUE end else return FALSE end end 5°--transfer_all.lua function onSay(cid, words, param) local config = { bankSystemEnabled = getBooleanFromString(getConfigInfo('bankSystem')), playerIsFighting = hasCondition(cid, CONDITION_INFIGHT) } if config.bankSystemEnabled == TRUE then if(param == "") then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Command requires param.") return TRUE end local t = string.explode(param, ",") if playerExists(param) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You have transferred " .. getPlayerBalance(cid) .. " gold to " .. param .. ".") doPlayerTransferAllMoneyTo(cid, param) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Player " .. param .. " does not exist.") return TRUE end else return FALSE end end 6°--withdraw.lua function onSay(cid, words, param) local config = { bankSystemEnabled = getBooleanFromString(getConfigInfo('bankSystem')), playerIsFighting = hasCondition(cid, CONDITION_INFIGHT) } if config.bankSystemEnabled == TRUE then if config.playerIsFighting == FALSE then local m = tonumber(param) if(param == "") then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Command requires param.") return TRUE end if(not m) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Command requires numeric param.") return TRUE end m = math.abs(m) if m <= getPlayerBalance(cid) then doPlayerWithdrawMoney(cid, m) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Here you are, " .. m .. " gold. Your account balance is " .. getPlayerBalance(cid) .. ".") else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "There is not enough gold on your account.") end return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Bank can not be used in fight.") return TRUE end else return FALSE end end 7° e ultimo---withdraw_all.lua function onSay(cid, words, param) local config = { bankSystemEnabled = getBooleanFromString(getConfigInfo('bankSystem')), playerIsFighting = hasCondition(cid, CONDITION_INFIGHT) } if config.bankSystemEnabled == TRUE then if config.playerIsFighting == FALSE then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Here you are, " .. getPlayerBalance(cid) .. " gold.") doPlayerWithdrawAllMoney(cid) return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Bank can not be used in fight.") return TRUE end else return FALSE end end Feito Tudo isso va em data\talkactions\talkactions.xml e coloque as seguintes linhas . <talkaction words="!balance" event="script" value="Bank/balance.lua" /> <talkaction words="!deposit" event="script" value="Bank/deposit.lua" /> <talkaction words="!withdraw" event="script" value="Bank/withdraw.lua" /> <talkaction words="!depositall" event="script" value="Bank/deposit_all.lua" /> <talkaction words="!withdrawall" event="script" value="Bank/withdraw_all.lua" /> SE PREFERIREM FAZE DOWNLOAD AKI ESTA [download]http://www.4shared.com/file/1VBeZD2r/Bank.html?[/download] Lenbrando que o script n é meu so tenho fais tempo n sei o nome do dono pode ser q ta na tag dentro dos script PESO DESCULPA PELO TOPICO DESORGANIZADO, N SO MTO DE FASE POSTAGEMS 40% (by: ???) 60% (by:eu por ter trasido ao xtibia) Se tiver algum outro post igual ou parecido me desculpe...Se gostaram +REP2 pontos -
Uns dias atras estava correndo atras de um tutorial pra ensinar isso, depois de muito esforço, consegui achar, pois a maioria que sabia fazer isso, não compartilhava, então segue o tutorial ai.Esse tutorial é para que ninguem tenha acesso a account manager para trocar senha ou deletar Primeiramente vá na database do seu servidor vá em accounts procure pela conta name 1 e senha 1 (provavelmente será a primeira) depois disso vá em page access e modifique para 2 Após transfira os characters "samples" do account manager para outra conta deixe só o proprio Account Manager na acc. Em seguida abra a pasta do seu site depois abra a pasta config e logo depois abra o arquivo config.php Procure por // ACC MAKER OPTIONS config $config['site']['access_news'] = 2; // access level needed to edit news $config['site']['access_admin_panel'] = 3; // access level needed to open admin panel e modifique para // ACC MAKER OPTIONS config $config['site']['access_news'] = 3; // access level needed to edit news $config['site']['access_admin_panel'] = 3; // access level needed to open admin panel Feito isso volta a pasta do seu site e abra o arquivo accountmanagement.php logo depois do <?PHP adicione isso if($group_id_of_acc_logged == 2) $main_content .= '<h1>Account Manager Bloqueado.'; else Pronto após executar todos os passos seu account manager estará bloqueado para acessos no site Ele ficara impossibilitado de mudar o password do account manager pelo site . Credito: Desconhecido, pois de onde eu peguei, estava copia de outro trabalho, pois não peguei o original, por isso o motivo dos creditos desconhecidos2 pontos
-
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.1 ponto
-
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: Vodkart1 ponto
-
[ ~> Fazendo Seu Próprio Client <~ ] Fala Tibianos , Pokemianos , WODBOianos do Xtibia, Hoje estou aqui com o meu primeiro tutorial , com o objetivo de explicar tim tim por tim tim como fazer um Client.. Como eh meu primeiro tutorial estou começando com algo facil , espero que todos gostem: 1° passo , criando o executar do seu client com ip proprio : 2° passo , mudando a Pic do Client: 3° passo , mudando o icone do seu client: 4° passo , traduzindo seu client: 5° passo , criando um instalador para seu client: Link dos Programas usados: Então eh isso pessoal , espero ajudar alguem com esse Tutorial. Fico Devendo Imagens , + logo colocarei para facilitar Thx Edit: Imagens Adicionadas , espero que fique + facil de compreender.1 ponto
-
Crystal Server Olá Venho lhes trazer novamente o Crystal Server, agora que o post do TFS 0.4 foi cair na internet por um Ex-TFS Developer liberou, este server não é mais "ilegal", por tanto ninguém pode vir aqui e fechar alegando isto. Conta do GOD é 222222/password IpChanger 8.71 http://www.speedysha..._IP_Changer.rar As features do server são as mesma das versões anteriores, com alguma modificações, sendo asism o projeto volta para a versão 0.1.0, já que estou reiniciando o servidor [ CHANGELOG Project Name Crystal Server Version: 0.1.2 Codename: Ice Fenix License: GNU GPLv3 Forum: http://vapus.net/ ] [ Legenda A = Adicionado M = Modificado D = Deletado ] [ Mudanças [ 0.1.2 A = data/spells/scripts/attack/strong energy strike.lua A = data/spells/scripts/attack/strong flame strike.lua A = data/spells/scripts/attack/strong ice strike.lua A = data/spells/scripts/attack/strong terra strike.lua A = data/spells/scripts/attack/ultimate energy strike.lua A = data/spells/scripts/attack/ultimate flame strike.lua A = data/spells/scripts/attack/ultimate ice strike.lua A = data/spells/scripts/attack/ultimate terra strike.lua A = data/creaturescripts/scripts/channelevents.lua A = data/talkactions/scripts/skill.lua A = data/talkactions/scripts/giveitem.lua A = data/talkactions/scripts/nextinfo.lua A = data/talkactions/scripts/mounts.lua A = data/talkactions/scripts/save.lua A = data/actions/scripts/tools/sneaky stabber of eliteness.lua A = data/actions/scripts/tools/squeezing gear of girlpower.lua A = data/actions/scripts/tools/whacking driller of fate.lua A = data/actions/scripts/other/icrease.lua A = data/actions/scripts/other/decrease.lua M = CServer.exe M = Config.lua M = data/creaturescripts/creaturescripts.xml M = data/creaturescripts/scripts/login.lua M = data/talkactions/scripts/multicheck.lua M = data/talkactions/scripts/createitem.lua M = data/talkactions/talkactions.xml M = data/actions/actions.xml M = data/lib/000-constant.lua M = data/XML/channels.xml M = data/spells/spells.xml M = data/items/items.xml M = data/items/items.otb M = data/monster/ M = data/npc/ M = data/actions/scripts/quests/annichest.lua M = data/actions/scripts/quests/pitschest.lua D = data/creaturescripts/scripts/guildmotd.lua D = data/creaturescripts/scripts/stagesconfig.lua D = data/creaturescripts/scripts/skillstagesadvance.lua D = data/creaturescripts/scripts/skillstageslogin.lua D = data/talkactions/scripts/ping.lua ] ] [ 0.1.2 Atualizada toda pasta de monstros - use a nova (Tryller, Commedinhass) Atualizado items.xml e items.otb (Tryller) Corda não puxa mais players (TFS) Server não usa mais cryptopp e vahash encriptações (TFS, Tryller) Adicionado ferramentas Squeezing (Tryller) Adicionado nova função lua doAccountSave(accountId) (Tryller) Adicionado talkaction para o player ver quantos dias de premium ele tem - !premium (Tryller) Adicionado talkaction para o player ver quando que ele precisa de exp e de mana spent para proximo level e ml - !exp;!mana (Tryller) Adicionado talkaction para o GOD dar items aos players - /giveitem (Mr.Ez) Adicionado config para descidir se player ganha os mounts no login (Tryller) Adicionado talkaction para o player comprar mounts - !mount (Tryller) Adicionado increase e decrease actions para arquivos lua (TFS) Adicionado English Chat (Tryller) Adicionado fair fight (TFS, Tryller) Adicionado SKULL_ORANGE (TFS, Tryller) Adicionado pvp blessing (TFS, Tryller Adicionado algumas spells 8.7 (Tryller) Adicionado fightExhausted e healExhausted no config.lua (OpenTibia SVN, Tryller) Adicionado CONDITION_PSYCAL agora é CONDITION_BEED (TFS) Adicionado comando para comprar aol e bp's (Tryller) Adicionado um save para quando o player abrir o guild chat (Tryller) Corrigido Erro em database - use a nova (Tryller) Corrigido erro ao cria items não Stackaveis (Tryller) Corrigido problema de server ficar caindo usando comando /i (Stian, Tryller) Corrigido um erro em house storage na hora do server save (TFS, Tryller) Corrigido Stealth Ring (TFS, Tryller) Corrigido um erro com commando /mc (TFS) Corrigido problema de debug após ganhar level 534+ (Tryller) Corrigido bugs no war system (TFS) Corrigido bug de clonar (TFS, Tryller) Corrigido erro de combar nas magias (Tryller) Corrigido problema com commando /skill (Tryller) Corrigido erro no life crystal (Tryller) Corrigido falas dos npcs - use a nova pasta (Tryller) Corrigido bug no aol criada por GOD (Tryller) Corrigidos Bugs reportados (Tryller) Deletado talkaction !ping (Tryller) Deletado stages para ml e skills (Tryller) ] [ 0.1.1 Deletado commands.xml e movido os comandos para talkactions (Tryller) Corrigido um erro na conexão quando o player deslogava (Tryller) Corrigido um erro que causava alto uso da CPU (3lite, Tryller) Possibilidade de poder entrar em versão 8.70 e 8.71 (Tryller) Modificada a cor da fala do account manager (Tryller) Corrigido efeito da magia Wrath of Nature (Tryller) Adicionado skills e nivel mágico por estágio (Mr.Ez) Possibilidade de compilar o server usando Code::Blocks (Stian) Corrigido alguns erros em cooldowns (Comedinhas, Tryller) Nova feature para mounts no config.lua mountsOnlyPremium (Tryller) Nova feature no config.lua useMultiClient (OpenTibia SVN, Tryller) Corrigido um erro nas casas (Mr.Ez) Novas funções lua doPlayerSetWalkthrough(cid, uid, walkthrough), isNpcName(name), isMonsterName(name), getHouseBedCount(houseid), getHouseDoorCount(houseid), getHouseTilesCount(houseid) (OpenTibia SVN, Tryller) Novas funções lua doPlayerSendPing(cid), getPlayerPing(cid), getPlayerLastPing(cid), getPlayerLastPong(cid) (Mock, Tryller) Corrigido um erro quando o player deslogava (Mr.Ez) Adicionado Ground Cache suporte (Elf, Tryller) Corrigido bug do Exeta Vis e outra magias de conjurar (TFS, Tryller) Corrigido erro de quando player usava Walk through (OpenTibia SVN, Tryller) Adicionada a nova condition e novo damage 8.7 - CONDITION_BLEEDING, COMBAT_BLEEDDAMAGE (Tryller) Adicionado sistema de achievements (Mr.Ez) Adicionado limit de items no depot configuravel no config.lua (Tryller) Adiciona useRandomExperienceColor no config.lua (Tryller) ] [ 0.1.0 Suporte para Tibia Client 8.71 (Tryller) Adicionado Items (OTB) 8.70 (OpenTibia SVN) Adicionado Items (XML) 8.70 (OpenTibia SVN, Tryller) Adicionado Evolutions map (Xizaozu, Erimith, Tryller) Novos tipos de menssagens MESSAGE_STATUS_CONSOLE_YEALOW, e MESSAGE_STATUS_CONSOLE_CYAN (Tryller) Modificado tipos de falas do Account Manager (Tryller) Adicionado sistema de montaria (Stian, Tryller) Adicionado sistema de cooldown (Stian) ] Downloads Server v0.1.2 v0.1.1 PL1<- Baixe isto apóes ter baixado a versão 0.1.1 v0.1.1 <-- após baixar esta versão baixe 0.1.1 PL1 para correção do bug de não ganhar items v0.1.0 Source - Tags http://vapus.net/svn...=Crystal+Server1 ponto
-
..:: Editando Itens ::.. Versão no qual o tutorial foi feito: 8.5 Bom pessoal, como so vi um tutorial que explicava apenas como editava o ataque e a defesa de uma ice rapier, resolvi fazer esse tutorial para os iniciantes explicando tudo direitinho para que não haja problemas ou dúvidas. Se você não sabia editar ou criar itens novos pro seu servidor, depois desse tutorial vai saber como tudo isso é moleza :lol: Sim o tutorial tem que ser grande pois tem tudo e está bem explicado na minha opinião ._. O que será explicando no tutorial: - Como mudar o ataque e defesa de uma arma ou shield - Como colocar pra um item dar ml ou skill - Colocar pra uma arma ser de duas mãos - Como mudar o arm de um equipamento (ex: Legs, Helmets, Armors, Necklaces, etc..) - Como colocar pra uma arma ter dano elemental - Como colocar proteção ou não de um elemento a um equip - Como adicionar velocidade a um item (Ex: BOH e Coconut shoes) E MUITO MAIS... E agora ao tutorial: 1- Antes de tudo vá na pasta do seu servidor e vá em data/items/items.xml e abra. 1.1 - Assim que abrir o itens.xml Procure (Ctrl+F) pela Focus Cape e encontrará isso: 1.2 - Explicando os Attributes <attribute key="weight" value="2100"/> Este atribute é o da o peso do item, ou seja, a focus cape pesa 21 oz. (Nota 100 = 1 oz) Este atribute é obrigatorio em todos os itens. <attribute key="armor" value="9"/> Este atribute dá o armor ou a "arm" ao item. Lembrando que esse atribute só pode ser usado apenas em equipamentos. <attribute key="slotType" value="body"/> Este atribute é o que vai selecionar onde o item vai ser equipado, em outras palavras, o tipo do item se ele vai ser uma armadura, uma arma, um colar e por ai vai... Ele também é obrigatorio em todos os equips. Caso queira aqui vai uma pequena lista: <attribute key="magiclevelpoints" value="1"/> Esse atribute dá ML (magic level) ao item. ---------------------------------------------------------------- ARMAS 2 - Para explicar os atributes das armas usarei a Bright Sword: 2.1 - Bom, como todos sabem no tibia existe três tipos de armas que no qual são : Axes, Swords e Clubs Então vamos começar por esse atribute: <attribute key="weaponType" value="sword"/> Este é o atribute que faz a arma ser um axe,sword ou club. No caso a Bright sword é uma sword xD. Se quiser mudar basta mudar o value="sword" para value="axe" ou value="club". <attribute key="defense" value="30"/> Este atribute dá a defesa/def á arma que também é usad em shields. <attribute key="attack" value="36"/> Atributo que seleciona o ataque da arma. Pelo amor de deus, não usem isso em shields ou equips... tenham bom senso ' <attribute key="slotType" value="two-handed"/> Este atributo não tem na Bright Sword por que ela é de uma mão, mais caso queira deixar de 2 mãos basta apenas usar esse atribute. <attribute key="extradef" value="1" /> Este atribute da defesa extra ao item, como por exemplo a bright sword é (atk:36 def:30+1) e como vocês também ja viram em alguma database ou no tibia mesmo itens com esse +1, 2, 3, etc... 2.2 - Adicionando Dano elemental em uma Arma: <attribute key="elementFire" value="10"/> Dano de fire <attribute key="elementEarth" value="10"/> Dano de earth <attribute key="elementIce" value="10"/> Dano de gelo <attribute key="elementEnergy" value="10"/> Dano de energy <attribute key="elementHoly" value="10"/> Dano de holy <attribute key="elementDeath" value="10"/> Dano de death <attribute key="elementPhysical" value="10"/> Dano fisico ' Usado um desses o elemento diminuirá o ataque da arma, ou seja, a Bright sword por exemplo se eu usar o atribute: <attribute key="elementFire" value="10"/> Ela ficará com (atk:26 + 10 fire damage def:30) [36-10=26] ---------------------------------------------------------------- BOWS, CROSSBOWS E SPEARS 3 - Agora para explicar essa categoria irei usar a Bow, a arrow e a spear. 3.1 - Primeira a Arrow. <attribute key="slotType" value="ammo"/> Com este atribute a arrow deve ficar no lugarzinho da flecha para ser usada. <attribute key="hitChance" value="90"/> A chance de sucesso do player de acertar o alvo, ou seja, o player com uma arrow tem 90% de chance de acertar um Dwarf por exemplo. <attribute key="ammoType" value="arrow"/> Neste atribute ou você coloca arrow que será utilizado apenas por Bows/Arcos ou bolt que será apenas usado por Crossbow/Besta. <attribute key="shootType" value="arrow"/> Animação no qual a flecha aparecerá indo em direção ao alvo. Lista das animações: <attribute key="weaponType" value="ammunition"/> Este Atribute faz o item virar uma munição. Coloque ele Apenas em arrows e bolts. <attribute key="ammoAction" value="removecount"/> Ele serve para remover 1 arrow/bolt por tiro. Aconselho não mecher ai. 3.2 - E agora a Bow: <attribute key="weaponType" value="distance"/> Come ste atribute a bow fica sendo uma arma de distância <attribute key="ammoType" value="arrow"/> Usando este atribute a bow precisará de algum tipo de arrow para atirar. <attribute key="range" value="6"/> Com este atribute você determina a distancia da qual ele pode atirar, ou seja, a bow pode atirar a 6 quadrados de distância. 3.3 - Vamos a Spear: <attribute key="breakChance" value="10"/> Essa atribute dá a spear uma chance (10%) de quebrar a cada hit. <attribute key="ammoAction" value="moveback"/> Esse atribute faz com que a spear em vez de ficar no chão volte para sua mão sem ter que usar o atribute de charges. o resto eu expliquei com a bow e a arrow. ---------------------------------------------------------------- NECKLACES E AMULETS 4- Vamos começar com os Necklaces e Amulets e para isso eu escolhir o Elven amulet. <attribute key="charges" value="50"/> Esse atribute dá a quantidade de cargas/charges ao amuleto. <attribute key="showcharges" value="1"/> Essa atribute serve para quando o player der look no amuleto mostrar a quantidade de charges ele tem. Obs: Não mexa ai. <attribute key="showattributes" value="1"/> Esse atribute serve para mostrar tudo que ele absorve. <attribute key="absorbPercentAll" value="5"/> Esse attribute serve para o amuleto absorver todos os tipos de danos em 5%. Caso queira que absorva um elemento em especifico aqui vai uma lista: Obs¹: Caso queira que ele receba mais dano em vez de absorver basta colocar o " - " na frente do número. (exemplo: <attribute key="absorbPercentPhysical" value="-10"/> ) Obs²: Esses atributes também pode ser usado em shields,equips e até em rings. ---------------------------------------------------------------- RINGS 5 - Bom, o tutorial está quase no fim faltando apenas os Rings e as Backpacks. Então vamos ao que interessa, e para isso escolhi o Power Ring OBS: Certfique-se que ao editar ring, ver se está editando o ring certo, ou seja, o que brilha quando é equipado... 5.1 - Explicando os Attributes <attribute key="duration" value="300"/> Essa atribute dá o tempo que o item durará equipado, ou seja, o power ring dura 30 minutos (Nota 10 = 1 min) <attribute key="decayTo" value="0"/> Essa atribute faz com quer, quando o tempo do power ring acabar ele "some" <attribute key="transformDeEquipTo" value="2166"/> Essa atribute diz em qual item ele tranformará quando desequipar o power ring. Recomendo não mexer ai. <attribute key="skillFist" value="5"/> Essa atribute aumenta seu Fist Fighting em 5 pontos. <attribute key="showduration" value="1"/> Esse atribute serve para quando o player der look no ring mostrar quando tempo ele ainda tem. Recomendo de novo que não mexa ai. <attribute key="manashield" value="1"/> Esse atribute faz com que o player fique em estado de "utamo vita". Não precisa mexer no "1". <attribute key="healthGain" value="1"/> -- HP ganho <attribute key="healthTicks" value="3000"/> -- Tempo nescessario (1000 = 1 segundo) Esses atributes tem que ser usados em conjunto. Eles fazem com que você recupera 1 de HP a cada 3 segundos. <attribute key="manaGain" value="4"/> -- MP ganho <attribute key="manaTicks" value="3000"/> -- Tempo nescessario (1000 = 1 segundo) Esses atributes tem que ser usados em conjunto. Eles fazem com que você recupera 4 de MP a cada 3 segundos. <attribute key="speed" value="20"/> Esse atribute aumenta a velocidade em "20" niveis, se quiser aumentar ou diminuir você ja sabe como xD <attribute key="skillSword" value="4"/> Essa atribute aumenta seu skill de sword em +4 <attribute key="skillAxe" value="4"/> Essa atribute aumenta seu skill de axe em +4 <attribute key="skillClub" value="4"/> Essa atribute aumenta seu skill de club em +4 <attribute key="skillShield" value="4"/> Essa atribute aumenta seu skill de shield em +4 <attribute key="suppressDrunk" value="1"/> Essa atribute deixa você imune a ficar bebum/bêbado/tonto/drunk/ etc... ' <attribute key="invisible" value="1"/> Essa atribute deixa você invisivél como se estivesse usando "utana vid" ---------------------------------------------------------------- BACKPACKS E BAGS 6 - Bom galerinha, esse é o ultimo item do tutorial e também o mais simples Então pra fechar com chave de ouro escolhi a Crown Backpack: <attribute key="containerSize" value="20"/> É esse atribute que dá slots pras backpacks e bags. No caso a Crown backpack tem 20 slots. Finish....1 ponto
-
[Tutorial] M1 Ao M12
jhonnyyakato reagiu a GMRaphael por um tópico no fórum
Primeiramente Se Ja Existir Um Tópico De M1 ao M12 Completos e Com Fotos Pode Excluir Este Tópico. Dae Galera do XTibia Estou Aqui Para Encinar a Vocêr Como Adcionar o Sistema Completo de Ataques de Pokemons Para Adcionar Em Seus Serve. As Imagens Estão Dentro dos Spoilers. 1º Passo: Anexem o Arquivo e Extraiam na Sua Area de Trabalho. 2º Passo: Copiem Todos os Arquivos e Salvem Em DATA/TALKACTIONS/SCRIPTS. 3º Passo: Abram o Arquivo Talkactions.XML (XML) E Adcione Esta Tag: <talkaction words="m1" case-sensitive="no" event="script" value="move1.lua"/> <talkaction words="m2" case-sensitive="no" event="script" value="move2.lua"/> <talkaction words="m3" case-sensitive="no" event="script" value="move3.lua"/> <talkaction words="m4" case-sensitive="no" event="script" value="move4.lua"/> <talkaction words="m5" case-sensitive="no" event="script" value="move5.lua"/> <talkaction words="m6" case-sensitive="no" event="script" value="move6.lua"/> <talkaction words="m7" case-sensitive="no" event="script" value="move7.lua"/> <talkaction words="m8" case-sensitive="no" event="script" value="move8.lua"/> <talkaction words="m9" case-sensitive="no" event="script" value="move9.lua"/> <talkaction words="m10" case-sensitive="no" event="script" value="move10.lua"/> <talkaction words="m11" case-sensitive="no" event="script" value="move11.lua"/> <talkaction words="m12" case-sensitive="no" event="script" value="move12.lua"/> Assim: Ta Feito o Script. Agora é Só se Divertir. Bom... Script Simples Até... Mas Que Muita Gente Estava Procurando. Espero Ter Ajudado Todos do XTibia. M1 Até o M12.rar1 ponto -
[8.60] War On Rookgaard 2 Team
ibne reagiu a Toridox4ever por um tópico no fórum
Rookwar - V.0.2 Based on TFS 0.3.6 Client 8.60 2 Teams Red Team Green Team Content: Creating your own accounts 1 / 1, You begin to level 100, Entering receives your skills, you do not lose items to die only in Red and black skull, By killing a player receives 500gps, Automatic broadcast, Map Rookgaard (edited), Red team temple, Green team temple, Global Temple, Trainers, Depot, Shops. Depot, Shops. Npcs: Npc Skuller sell Sacred skull for remove skulls and frags, Npc Varkhal sell first and secconds addons, Npc Amuletero sell amulets, Npc Donal sell food, Npc Pancho the seller of loot. Scripts: mods/remove_skulls.xml, creaturescripts/deathBroadcast.lua, creaturescripts/onkill.lua, creaturescripts/skills.lua, creaturescripts/onlogout.lua, creaturescripts/firstitems.lua, movements/Green.lua, movements/Red.lua. Screens Shots: Account god: Acc: god Pass: god Download::up: 4Shared :up: Scan Rook: :up: Virus Total :up: Download Dlls: :up: 4Shared :up: Creditos: Morrison (ajudante) Toridox4ever Pela Editação ! Luiziin@reggae.com (Msn) Este Poste de Ajudo ? Aperte no1 ponto -
Vamos lá Primeiro vá em: data/actions/script e criei 1 arquivo chamado: goback.lua va em goback.lua e adiciona: vá em: data/actions/actions.xml e adicione: se no seu ja estiver essa tag não mecha. Como Mudar Level, Ganho de Life e Vida? Simples. level = 20 - em Azul é o level para usar o pokemon, para mudar basta alterar o numero azul cons = 43 - em Vermelho o tanto de life que o pokemon irá ganha por level, para mudar basta alterar o numero vermelho vida = 1200 - em Verde o tanto de life do pokemon, para mudar basta alterar o numero verde se ajudei de REP+1 ponto
-
[Pokémon] Adicionando Novos Items
Kenndy reagiu a BrunooAngel por um tópico no fórum
Olá Galera do :XTibia_smile: , primeiramente bem-vindos ao meu novo topico, hoje vim aqui ensinar a vocês como "Adicionar Novos Items Em seu Servidor de Pokémon", Muita gente ja me adicionou no msn falando que quando iam adicionar os items que postei dava erro no items.otb, na verçao e etc... Resolvi postar esse tutorial bem simples, Vamos Lá! -> Passo 1: Faça download do OT ITEM EDITOR 0.3.7 e o extraia na pasta do seu servidor, apos fazer isso va na pasta do seu client e copie seu TIBIA.DAT e seu TIBIA.SPR [OBS: tem que ser o do tibia global se nao ira dar erro], Abra-o e clique em File > Load OTB e Selecione Seu "ITEMS.OTB" -> Passo 2: Baixe um pacotao de items em .IDC ou adicione em seu DAT EDITOR, apos adiciona-lo ou importa-lo veja seu "ITEM TYPE" Agora Va no seu item editor novamente e clique no "+" Do lado do "DEPRECATED" e faça igual a foto abaixo: -> Passo 3: Agora clique sobre o lado direito do ITEM ID [no meu caso é 113] e clique em GROUND [se for piso] / CONTAINER [se for mochila ou coisa do tipo] / None [se for qualquer outro tipo de item, como no caso um POKEMON EGG/Parede e etc...], no meu caso é "NONE", entao cliquei nele, apos clikar no "NONE" clique no "-" do lado do "DEPRECATED" e clique no '+' do lado do "OTHER", apos fazer isso abaixe tudo e veja la em baixo o seu item id [no meu caso é 113], se ele estiver la clique em: File > Save As > Selecione seu items.otb > OK! pronto item adicionado, agora feche o "OT ITEM EDITOR" e vamos a configurar! -> Passo 4: agora va na PASTA DO SEU OT > DATA > ITEMS > E abra seu "ITEMS.XML", Agora procure um item parecido com o seu [no meu caso e um POKEMON EGG] e adicione uma linha parecida com essa: <item id="113" name="Pokemon Egg" /> Configurando a linha: <item id="ID DO ITEM DO ITEM EDITOR" name="nome do item" /> se for um corpse, copie uma linha do corpse do items.xml e faça como acima, e assim vai! Feche e salve o ITEMS.XML, e se seu servidor estiver ONLINE fexe-o e o coloque online novamente, entrando no seu ot fale /i NOME DO ITEM no meu caso: /i Pokemon Egg e la vai estar ele!, Espero ter ajudado :smile_positivo:1 ponto -
OTx Server Versión V1.4.2 - Lightbringer Gold OTX Server Versión 1.4.2 - Lightbringer Gold Based Versión on The Forgotten Server Version 0.3.6 - Crying Damson Descrição: Descrição: Este referido como Lançamento OTX Server Version v1.4.2 -.(Lightbringer Gold) inclui d em extras intermináveis, upgrades, reparações, etc, Ela também vai voltar para o suporte a protocolos de idade 8.54/57 - 8,60-8,62 - 8.70/71 - 9,10 ea novidade de um suporte de protocolo 9.20/31. Importante para protocolos mais antigos: Otimização do código - tornando-o mais estável do que já era. Uma nova config "allowedMaxSizedPackets", que ajuda quando se trata o pacote enviado ao servidor (como bots para o seu servidor tornando-os mais seguros e não por qualquer falhacoisas crasee externo). Adicionado um Firewall Linux poderoso (iptables-firewall) que você encontrará no download. Correção de erros As fórmulas de experiência a perder, pois isso é otimizado para o seu sistema 8.62-8.70/71 OrangeSkull e PvpBless. Também corrige o erro de / ghost que causou GM por Invisiblesdebug GM. No protocolo 8.70/71 Montagens sistema foi melhorado consideravelmente, tornando Magias semelhante a 9.x 8.70/71 protocolo também inclui um sistema semelhante ao 9.xchamado "Casa do sistema de armazenamento de dados", quefaz com que o servidor mantenha x60 vezes mais rápido do que ele fez. O que é importante no protocolo de 9,10 - 9.20/31 está incluído no "general-info-log" para cada download (eles são mais eficientes seguro e confiável). Mais informações sobre o pool de progresso, e mais em"general-info-log" para cada protocolo. ChangeLoGFiles: alterações nas versões (1.3.1 a 1.4.2) "8.5xa9.1x" - e (1.4.1 a 1.4.2) "9,20 a 9.20/31" http://pastebin.com/YeR39jP3 Consola 1.2 Consola 1.2.1 A principal melhoria nesta distribuição eo mais notável é o items.xml sistema de atualização e monstros em todos os protocolos dando assim uma semelhança com o que é Tibia RL ou o que era nas versões anteriores e também um sistema de otimização guilda e evitando assim a realizar a clonagem caixa através da mídia nos protocolos de ambos 8.5xa 8.6xy apresenta uma interface que você já perdeu e desde que eu dignou a colocá-lo novamente (GUI) OT eXe Server OTX Server 1.0.0 Version - "Corona" - 07/09/2011 OTX Server 1.1.0 Version - "Silver" - 07/29/2011 OTX Server 1.2.1 Version - "Fantasy" - 08/07/2011 OTX Server 1.3.1 Version - "Moon Princess" - 09/08/2011 OTX Server 1.4.1 Version - "Lightbringer" - 04/10/2011 OTX Server 1.4.2 Version - "Lightbringer Gold" - 30/10/2011 OTX Server 2.0.0 Version - "The Second" - ??/12/2011 Download Server - SVN Info & Extras: DownLoad Server: OTX Server Server Versión 1.4.2 - Lightbringer Gold Caso em que o link não funcionar Farmacopeia e cole este link em sua barra de endereços. http://fileserve.com/list/c2vQaAV SCANS: OtLand IP Changer OTX Server 1.4.2 - 8.54-57 OTX Server 1.4.2 - 8.60 OTX Server 1.4.2 - 8.62 OTX Server 1.4.2 - 8.70-71 OTX Server 1.4.2 - 9.10 OTX Server 1.4.2 - 9.20-31 SVN Info: SVN SERVER: http://otservdata.go...m/svn/branches/ SVN Viewer: http://code.google.c...ata/source/list Report Bug: Qualquer falha para denunciá-lo neste servidor para resolver Tópico rapidamente. Informação: Todas as funções, as reparações, anexações e alterações em arquivos "general-info-log.txt & description.log". Compilar: No arquivo "README-howcompilelinux-howcompilewindows.log" incluído no download "OTX Server v1.4.1". Uniform Server Descripción (WEB + MySQL Service): Se você usou eu recomendo usar MySQL Uniform Server em vez de XAMPP, XAMPP como é muito instável. XAMPP + Modern AAC = Page rendered in: 0.0554 seconds. XAMPP + MySQL service = 70Mb aprx/ Uniform Server + Modern AAC = Page rendered in: 0.0219 seconds. Uniform Server + MySQL service = 28Mb aprx/ Tutorial: http://otland.net/f4...-0-3-6-a-77593/ Version: 6.0.5 Windows 7/2008 32 & 64bit users. 6.0.5 download from SourceForge.net Version: 5.6.15 Windows XP 32bit users. 5.6.15 download from SourceForge.net Notas: Server Info: [ OTX Server 1.2.2 Version - "Fantasy Edition" - Path 2 Especial Features: 0% * GUI System "All Protocols" compiled with "-D__GUI_SYSTEM__" 0% * Pokemon Code "OnLy 8.54-57" compiled with "-D__POKEMON_SYSTEM__" Addeds: * Fixes: * New Config(s) + Modifield(s) + Deleted(s): * SVN Client: Usada SVN Tortoise para ver as mudanças na. Requisitos: DLLPACK este utilizado para este download SERVIDOR (OBRIGATóRIO).Uma vez que é compiladoo com Code:: Blocks e Microsoft Visual Basic C + + 2010 e tem diferentes ".dll Kind regards a despedir-me... Se você gostou do post que você tem pontos terno Creditos: By Martyx1 ponto
-
Eae Reis Dos Scripts Presiso de uma ajuda no meu server de pokemon Um Script De Shiny Stone quem puder ajuda Agradeço Vlw ae edit Poke Tibia 8.541 ponto
-
Show Off Betinhowz666 - Bevolutions
xAlucard reagiu a betinhowz666 por um tópico no fórum
Mostrarei aqui um mapa que estou desenvolvendo (mechendo) Usarei ele em meu ot 8.70 que terá sistemas únicos. Talves postarei este projeto para a galera ao termino dele Mapa base Delyria Evolutions postado por min aqui no xtibia. Agora o mapa está retirado uns bugs e passado para 8.60X Postarei as fotos ao longo do tópico Vamos as fotos ! Obs: Se achar que mereço um REP+ como incentivo será bem vindo. Obs²: Se a imagem não abrir é só atualizar a pagina até pegar. Usei o BR Img para hospedar as imagens.1 ponto -
[Tutorial] Spells
Sugismundo reagiu a Deadlock por um tópico no fórum
Bom. muitos tem duvidas no fato de como almentar o dano mudar os efeitos a area e tudo mais sobre as magias entao vou explica-las. Crie Um Bloco de Notas Com O Nome DE "exemplo" Sem Aspas Nesse Tutorial Usaremos o Seguinte Script, sendo uma magia de ataque em area que podera sempre ser usada como base. -Damage Type- Nesse Script temos como Damage o formato COMBAT_PHYSICALDAMAGE que pode ser trocado por qualquer um desses: -Efeito- Temos como efeito CONST_ME_FIREAREA que pode ser trocado por qualquer um desses: -Formula- A Formula desta magia é COMBAT_FORMULA_LEVELMAGIC, -2.0, 0, -1.0, 0 Ou Seja o Dano Dela ira variar do seu Level e de Seu Magic Level.(Aconselho sempre Usar FORMULA_LEVELMAGIC. e Alterar Somente no 2.0 e no 1.0 nunca mudar os que estao somente 0)Vamos usar como exemplo que -2.0, seria o level e -1.0 o magic level ou seja a magia ira Hitar muito mais quando o player upar 1 Level do que quando upar 1 Magic Level,Porem se fosse mudado para -0.8 e 1.0 Se o Player Almentasse 1 magic level iria hitar mais do que se upasse 1 Level. PS:É aconselhavel sempre que mexer na formula testar a magia para verificar o Damage. -Area- Neste Caso a Area Vai Ser 8 Quadrados exatos em volta do player. o Numero 2 Representa a posição do Player. O numero 1 Representara onde a magia ira acertar O Numero 0 Será somente espaço onde você pode colocar o Numero 1 -Spells.xml- <instant group="attack" spellid="137" name="NOME DA MAGIA" words="OQUE O PLAYER DIGITARA PARA MANDAR A MAGIA" lvl="30" mana="45" selftarget="1" prem="1" cooldown="4000" groupcooldown="2000" needlearn="0" script="attack/exemplo.lua"> <vocation name="Sorcerer"/> <vocation name="Master Sorcerer"/> </instant> Grat'Z DeadLock1 ponto -
[Gesior Acc] Adicionando Comerbox
Gabriel Couto reagiu a SkyDangerous por um tópico no fórum
Script Retirado por SkyDangerous Se quiser o script que faça ou procure em outro forum. Até +1 ponto -
[Pokémon] Adicionando Novos Items
BrunooAngel reagiu a Zikawinchester por um tópico no fórum
Bom tutorial, apesar de eu ja saber, mais ajudara mtas pessoas com duvidas, Boa bruninho.1 ponto -
Site Não Entra
luuisinhoo reagiu a pessoa93 por um tópico no fórum
Pra você entrar, é só pelo 127.0.0.1 ou localhost mesmo. O no-ip é só pra quem está fora do seu pc, ou seja, quem for jogar seu servidor. Mais quem estiver na sua internet só pode entrar com 127.0.0.11 ponto -
Eai, no arquivo creaturescripts/scripts/login.lua, antes do return coloque isso: if getPlayerStorageValue(cid, 13540) > os.time() then if getPlayerStorageValue(cid, 122131) == 1 and isInArray({ 5, 6, 7, 8 }, getPlayerVocation(cid)) then doPlayerSetVocation(cid, getPlayerVocation(cid)+4) end else if isInArray({ 9, 10, 11, 12 }, getPlayerVocation(cid)) then doPlayerSetVocation(cid, getPlayerVocation(cid)-4) end end Eu fiz assim, quando fala com o npc ganha uma storage no script de exemplo 122131, ou seja, se ele ja comprou a promotion ele tem a storage, se não comprou não tem. No login, ele verifica se é vip, se for ele verifica se ele tem a storage e se a vocação estar errada ele corrige. E se o player não for vip, a vocação é corrigida. Bom é isso, qualquer dúvida só pedir1 ponto
-
function onSay(cid, words, param) local moneyID = 9971 local bankStorage = 23815 local param = string.explode(param, ",") if getPlayerStorageValue(cid, bankStorage) == -1 then setPlayerStorageValue(cid, bankStorage, 0) doPlayerSendTextMessage(cid, 18, "Oh, I see this is your first time using our bank system. Here you are, your first bank account.") return TRUE end if words == "!balance" then doPlayerSendTextMessage(cid, 18, getPlayerStorageValue(cid, bankStorage) < 1 and "You don\'t have any "..getItemNameById(moneyID).." in your bank account." or "You have "..getPlayerStorageValue(cid, bankStorage).." "..getItemNameById(moneyID).." in your bank account.") return TRUE end if not param[1] then doPlayerSendCancel(cid, "Command requires param.") return TRUE end if not tonumber(param[1]) and param[1] ~= "all" then doPlayerSendCancel(cid, "Command requires numeric param or \'all\'.") return TRUE end if words == "!deposit" then if param[1] == "all" then if getPlayerItemCount(cid, moneyID) >= 1 then doPlayerSendTextMessage(cid, 18, "You\'ve deposited "..getPlayerItemCount(cid, moneyID).." "..getItemNameById(moneyID).." in your bank account, you have now "..getPlayerItemCount(cid, moneyID)+getPlayerStorageValue(cid, bankStorage).." "..getItemNameById(moneyID).." in your bank account.") setPlayerStorageValue(cid, bankStorage, getPlayerStorageValue(cid, bankStorage)+getPlayerItemCount(cid, moneyID)) doPlayerRemoveItem(cid, moneyID, getPlayerItemCount(cid, moneyID)) else doPlayerSendCancel(cid, "You don\'t have any "..getItemNameById(moneyID).." in your bag to deposit.") end return TRUE end if getPlayerItemCount(cid, moneyID) >= tonumber(param[1]) then setPlayerStorageValue(cid, bankStorage, getPlayerStorageValue(cid, bankStorage)+param[1]) doPlayerRemoveItem(cid, moneyID, param[1]) doPlayerSendTextMessage(cid, 18, "You\'ve deposited "..param[1].." "..getItemNameById(moneyID).." to your bank account, you have now "..getPlayerStorageValue(cid, bankStorage).." "..getItemNameById(moneyID).." in your bank account.") else doPlayerSendCancel(cid, "You don\'t have enough money in your bag.") end elseif words == "!withdraw" then if param[1] == "all" then if getPlayerStorageValue(cid, bankStorage) >= 1 then doPlayerSendTextMessage(cid, 18, "You\'ve withdrawned "..getPlayerStorageValue(cid, bankStorage).." "..getItemNameById(moneyID).." from your bank account, you have now 0 "..getItemNameById(moneyID).." in your bank account.") doPlayerAddItem(cid, moneyID, getPlayerStorageValue(cid, bankStorage)) setPlayerStorageValue(cid, bankStorage, 0) else doPlayerSendCancel(cid, "You don\'t have any "..getItemNameById(moneyID).." in your bag to deposit.") end return TRUE end if getPlayerStorageValue(cid, bankStorage) >= tonumber(param[1]) then doPlayerAddItem(cid, moneyID, param[1]) setPlayerStorageValue(cid, bankStorage, getPlayerStorageValue(cid, bankStorage)-param[1]) doPlayerSendTextMessage(cid, 18, "You\'ve withdrawned "..param[1].." "..getItemNameById(moneyID).." from your bank account, you have now "..getPlayerStorageValue(cid, bankStorage).." "..getItemNameById(moneyID).." in your bank account.") else doPlayerSendCancel(cid, "You don\'t have enough money in your bank account.") end elseif words == "!transfer" then if not isPlayer(getPlayerByName(param[2])) then doPlayerSendCancel(cid, "Player with name "..param[2].." doesn\'t exists or is offline.") return TRUE end player = getPlayerByName(tostring(param[2])) if getPlayerItemCount(cid, moneyID) >= tonumber(param[1]) then if getPlayerStorageValue(player, bankStorage) == -1 then setPlayerStorageValue(player, bankStorage, 0) doPlayerSendTextMessage(player, 18, "Your new bank account has been created.") end setPlayerStorageValue(player, bankStorage, getPlayerStorageValue(player, bankStorage)+param[1]) doPlayerRemoveItem(cid, moneyID, param[1]) doPlayerSendTextMessage(cid, 18, "You\'ve transfered "..param[1].." "..getItemNameById(moneyID).." from your bag to "..param[2].."\'s bank account.") doPlayerSendTextMessage(player, 18, "You\'ve received "..param[1].." "..getItemNameById(moneyID).." from "..getCreatureName(cid)..", it was deposited to your bank account. You have now "..getPlayerStorageValue(player, bankStorage).." "..getItemNameById(moneyID).." in your bank account.") elseif getPlayerStorageValue(cid, bankStorage) >= tonumber(param[1]) then if getPlayerStorageValue(player, bankStorage) == -1 then setPlayerStorageValue(player, bankStorage, 0) doPlayerSendTextMessage(player, 18, "Your new bank account has been created.") end setPlayerStorageValue(player, bankStorage, getPlayerStorageValue(player, bankStorage)+param[1]) setPlayerStorageValue(cid, bankStorage, getPlayerStorageValue(cid, bankStorage)-param[1]) doPlayerSendTextMessage(cid, 18, "You\'ve transfered "..param[1].." "..getItemNameById(moneyID).." from your bank account to "..param[2].."\'s bank account, you have now "..getPlayerStorageValue(cid, bankStorage).." "..getItemNameById(moneyID).." in your bank account.") doPlayerSendTextMessage(player, 18, "You\'ve received "..param[1].." "..getItemNameById(moneyID).." from "..getCreatureName(cid)..", it was deposited to your bank account. You have now "..getPlayerStorageValue(player, bankStorage).." "..getItemNameById(moneyID).." in your bank account.") else doPlayerSendCancel(cid, "You don\'t have enough money in your bag or bank account.") end end return TRUE end Tags: <talkaction words="!deposit;!withdraw;!transfer;!balance" event="script" value="bankSystem.lua"/> Funcionando 100%, qualquer erro que tenha dado poste aqui.1 ponto
-
Eai, tente assim: local exhaust = createConditionObject(CONDITION_EXHAUST) setConditionParam(exhaust, CONDITION_PARAM_SUBID, 2) setConditionParam(exhaust, CONDITION_PARAM_TICKS, 10 * 1000) function onCastSpell(cid, var) return doAddCondition(getCreatureTarget(cid), exhaust) end Não tenho certeza se funcionará, mas dar muted no player na minha opinião não é a melhor solução1 ponto
-
ok. troque seu firstitems lua por esse e o vocations por1 ponto
-
AMIGO... pelo q vi nao tem nada errado com o monster ^^ o problema é de algum conflito que ele ta tendo com outro arquivo do server ... pegue um outro servidos, ponha o monstro nele e teste ... se nao der o erro, ai é certeza disso ... você terá que identificar no que nao está de acordo com o script . por exemplo: se nao existe tal item q da de loot .. dependendendo do distro pode gerar debug, que é o que está acontecendo TESTA AI .. SE FUNFAR, ME AVISA E DA UM REP + PRA TIRA ESSE REP - Q TENHO AQUI N SEI PQ :S vlw!1 ponto
-
[Tutorial] Como Add M1.. Em Shinys..
natanaelrox reagiu a Zikawinchester por um tópico no fórum
BrunooAngel Valeu, te amo tb ema loca. @Topic Cara to ficano triste, ninguem comenta nem pra falar se funcionou ou não assim eu fico maguado. :frown:1 ponto -
aki esta 1 exemplo e rattata...vai comçar com 10 hundread dollar function onUse(cid, item, frompos, item2, topos) if getPlayerStorageValue(cid, 15215) <= 0 then doPlayerAddItem(cid, 2160, 10)---aki muda a quantia de dinheiro doPlayerSendTextMessage(cid, 20,"Bem vindo ao Pokemon Server!") setPlayerStorageValue(cid, 15215, 1) local rat = {x=1031,y=1010,z=5} local cat = {x=1029,y=1010,z=5} local wee = {x=1027,y=1010,z=5} local pox = getTownTemplePosition(1) local health = 325 local maxhealth = 325 local description = "Contains a Rattata." local poke1 = "This is Rattata's pokeball. HP = ["..health.."/"..maxhealth.."]" item = doCreateItemEx(2219) doItemSetAttribute(item, "poke", poke1) doItemSetAttribute(item, "nome", "Rattata") doItemSetAttribute(item, "apelido", "Rattata") doItemSetAttribute(item, "description", description) doPlayerAddItemEx(cid, item, true) doTransformItem(item, 2222) doPlayerSendTextMessage(cid, 27, "You got your first pokemon! Here is some experience to help you on your way.") doPlayerSendTextMessage(cid, 27, "Don\'t forget to use your pokedex on every undiscovered pokemon!") doPlayerAddExp(cid, 800) doTeleportThing(cid, pox) doPlayerAddItem(cid, 2152, 30) doSendMagicEffect(pox, 21) doPlayerAddSoul(cid, 1) setPlayerStorageValue(cid, 54842, "Rattata, ") return TRUE else doPlayerSendTextMessage(cid, 20, "Você já pegou seu pokemon") end end creio que fly ,ride e surf seja em order qual systema de order vc usa?? os outros vejo aos poucos1 ponto
-
Va na pasta /data/talkactions/scripts/ , abra o arquivo "online.lua" com o bloco de notas, apague tudo que tenha dentro e coloque o seguinte codigo : Se gostou e funcionou, REP+ ^^1 ponto
-
Que isso tamo ai pra isso se ajudei rep + :]1 ponto
-
Estude mais, pois, tochas em cima de cortinas? como? Olhe um pouco o "errepege" (rpg) antes de fazer algumas coisas, e depois, que terminar, veja se tem sentido, pois, a coisas que nem no "Mundo Tibia" é possivel. (como colocar uma tocha emcima de uma cortina,e ainda ela n pegar fogo,etodos acharem normal) PS: Tochas do geito errado. (comodisseacima) nature? dentro do templo? tão proximoaos depots? por mim,não está certo.1 ponto
-
[New] Poortari Yurots 8.6 07/09/11
Gustavo18O reagiu a poortari por um tópico no fórum
Bom, vim postar aqui um baiak que eu mesmo editei, com teleports etc.. - O que mudou do baiak original ? - City Editada - Novos Tps - Sala de quests - Vip Editada - Novos Itens - Novos Npcs - Novos Monstros - Armas Vip Totalmente + ROXS ~ Bem, não vou ficar falando, apenas baixem e digam o que acharam SS : MONSTERS. ARMAS VIP. NPCS. QUEST ROOM. SET VIP. TEMPLE. TREINERS. Scan: Scan Aqui Download: Download @Qualquer bug reportar pra mim ! [ gabrielportari@hotmail.com ] Creditos : Baiak [ Criador do mapa ] Eu [ Editado o map 100% ]1 ponto -
[Ajuda] Items Iniciais No Meu Global
Felpx reagiu a matheusalvez por um tópico no fórum
pega o script que ta aque Data / Creaturescript / Script / Firstitems.lua ae aonde ta se eu nao me ingano o , firstItems[1] é pros sorc, firstItems[2] pros druid, firstItems[3] para paladin, e firstItems[4] para knight. 2173, -- Amuleto 2525, -- shield 2428, -- Weapont 2124, -- ring 2457, -- helmet 2647, -- legs 2643 -- boots ____________________ doAddContainerItem(bag, 2160, 2) -- Dinheiro ( para todos) doAddContainerItem(bag, 2554, 1) -- a pá doAddContainerItem(bag, 2120, 1) -- corda doAddContainerItem(bag, 7618, 1) -- health potion doAddContainerItem(bag, 8602, 1) -- a sword essa parte voce pode adicionar mais itens ___________________ local bag = doPlayerAddItem(cid, 11235, 1) -- id da backpack ou bag inicial __________________ doPlayerAddItem(cid, 2463, 1) -- Armor (mude as duas com o msm id) else doPlayerAddItem(cid, 2463, 1) -- Armor (mude as duas com o msm id) coloquei cores para melhor visualizaçao obs:delete o mod1 ponto -
Teleport Rune
kiliblink reagiu a angeldoido por um tópico no fórum
ta editado vei, o tempo facil colokei como segundo pra deixa o player + ancioso SKOAKPOSAKPOS Tipow no meu ta 5 minuto acho q 250 seg =D1 ponto -
1 ponto
-
1 ponto
-
Não atrapalha topico não eu te conheço infeliz Alguem + pode me ajudar com esse problema??-1 pontos