LOSTACCOUNT.PHP 2.0 (BR + NO SEND E-MAIL)
Olá amigos, ai vai um arquivo php criado pelo Gesior.pl e totalmente reconfigurado por mim.
• Totalmente em portugûes. • Não envia e-mail. (ele define uma nova senha se você tiver a RK) • Configuravel para o tipo de gesior (old gesior e new gesior)
Basta substituir esse código pelo código que esta dentro do arquivo 'lostaccount.php' no seu gesior, configurar a 3ª, 4ª, 5ª e a 154ª linha (bem simples) e pronto!
Só isso pessoal, abraços e até mais! Qualquer dúvida manda PM! Ajudei/Gostou REP+
Informações:
Tasks adquiridas ou canceladas em NPC As tasks podem ser feitas repetidas vezes, mas somente uma vez por dia e apenas uma de cada vez (tempo configurável) Comando para acompanhar o andamento da task Atualização (31/08/13) > agora é possível ganhar itens a cada vez que a task é terminada Atualização (05/09/13) > VÁRIOS bugs corrigidos e algumas novas opções adicionadas Agora você pode escolher se quer que as tasks sejam feitas por level ou na ordem Recomendo a todos os que baixaram alguma versão anterior que atualizem
Códigos:
Tags:
Em creaturescripts.xml, adicione:
<event type="kill" name="Tasks" script="taskkill.lua"/>
Em talkactions.xml, adicione:
<talkaction words="!countkills" event="script" value="countkills.lua"/>
No arquivo creaturescripts/scripts/login.lua, adicione:
registerCreatureEvent(cid, "Tasks")
Scripts:
Crie um arquivo tasklib.lua em lib
Crie um arquivo countkills.lua e adicione em talkactions/scripts
Crie um arquivo taskkill.lua em creaturescripts/scripts
Crie um arquivo NomedoNPC.xml em npcs
Crie um arquivo tasks.lua em npcs/scripts
Configuração:
É feita toda no tasklib.lua:
Configuração dos monstros:
taskmonsters ={[1] = {'rotworm', killstotal = 100},[2] = {'cyclop','cyclops','cyclops smith','cyclops drone', killstotal = 100},[3] = {'dragon','dragon lord','frost dragon', killstotal = 100}}
- O [número] deve seguir a ordem
- A primeira parte deve ser o nome dos monstros da task no singular. Por isso existem 'cyclop' (singular) e 'cyclops' (nome do monstro)
- Os nomes de todos os monstros de cada task devem aparecer. Por exemplo, na task de cyclops, qualquer tipo deles servirá para completar a task.
- killstotal é a quantidade de monstros que você deve matar para terminar a task.
Configuração das recompensas:
taskreward = -- em gps{[1] = {money = 5000,xp = 20000, points = 3}, -- nenhum item será adicionado e 3 pontos de task serão adicionados[2] = {money = 10000,xp = 50000, item = 2458}, -- 1 item(2458) será adicionado e nenhum ponto de task[3] = {money = 20000,xp = 75000,item = 2458,amount = 2, points = 5} -- aqui serão adicionados 2 itens com id 2458 (se ele for amontoável - stackable) e 5 pontos de task}
- O [número] deve ter a mesma ordem dos monstros
- money é a quantidade de dinheiro que cada um ganha ao terminar a task correspondente
- xp é a quantidade de experiência ganha ao terminar a task correspondente
- item é o ID do item que ganha ao terminar a task correspondente
- points significa quantos pontos de task o personagem irá ganhar quando terminar a task correspondente
Adicionando novos monstros:
- Vou explicar com um exemplo de como adicionar uma task de hydra/serpent spawn
No taskmonsters: (REPARE NA VÍRGULA QUANDO ADICIONEI UMA NOVA LINHA!)
taskmonsters ={[1] = {'rotworm', killstotal = 100},[2] = {'cyclop','cyclops','cyclops smith','cyclops drone', killstotal = 100},[3] = {'dragon','dragon lord','frost dragon', killstotal = 100},[4] = {'hydras e serpent spawn','hydra','serpent spawn',killstotal = 200}}
No taskrewards:
taskreward = -- em gps{[1] = {money = 5000,xp = 20000, points = 3}, -- nenhum item será adicionado e 3 pontos de task serão adicionados[2] = {money = 10000,xp = 50000, item = 2458}, -- 1 item(2458) será adicionado e nenhum ponto de task[3] = {money = 20000,xp = 75000,item = 2458,amount = 2, points = 5}, -- aqui serão adicionados 2 itens com id 2458 (se ele for amontoável - stackable) e 5 pontos de task[4] = {money = 30000, xp = 5000, item = 2450, amount = 1, points = 3}}
Agora na função doStartTask(cid) - somente se quiser que as tasks sejam feitas por level -
O que aconteceu:
- Antes até o lvl 20 o jogador recebia a task dos rotworms, até o lvl 50, a task dos cyclops e daí pra frente, task dos dragons.
- As tasks iniciais são as mesmas, mas até o lvl 80 é a task dos dragons e daí pra frente, o jogador receberá a task das hydras e serpent spawns.
Considerações finais:
O sistema de pontos apenas adiciona e checa a quantidade de pontos: você deve escolher se quer adicionar alguma coisa a partir deles.
Testei profundamente e corrigi todos os erros que encontrei, postem se encontrarem mais algum, enviem o log do erro que farei o possível para consertar.
Mt bom o servidor, um dos melhores que já vi, sem bugs, ADM sempre atento aos players!
Otserver mt dedicado parabéns, vo lá pegar TOP e já volto ai kkkk
Parabéns pelo otserver!!
Provavelmente vocês estão pensando "mas que diabo de OTS é esse?", afinal, já faz 2 anos desde que a ultima versão foi lançada (http://www.xtibia.co...10-86-completo/) e desde lá prometemos algo que não foi cumprido - até agora -, uma versão nova. ENFIM, TEMOS AGORA A MAIS NOVA VERSÃO DE UM DOS SERVIDORES MAIS AVACALHADOS JOGADOS DOS ULTIMOS TEMPOS. Mas eu tenho uma má noticia, está incompleto.
Sim, o mapa está inacabado. Muitas coisas que eu planejei fazer nele eu não completei. Boa parte o Comedinha ajudou a terminar, adicionando o resto dos caminhos básicos e os monstros. mas mapa inacabado não quer dizer que não está jogável, quer dizer que faltou detalhar (Ex: x:55 y: 137 z: 9, x: 104 y: 140 z: 7, etc).
A ultima versão foi baixada mais de 50 mil vezes e esperamos que essa versão faça o mesmo sucesso.
VAMOS BAIXAR E JOGAR, SEUS LINDOS
Créditos Gerais:
Sobre o OT/Mapa:
Principais quests:
-Annihilator
-Inquisition Quest
-Pits of inferno
-Demon Oak
-Solar axe quest
-HOTA
-MPA quest
-The Challenger
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]:
Atualização nº 2 [3.4]:
Atualização 3.5 [06/08/2009]:
Atualização Patch 3.5.1 [07/08/2009]:
Atualização 3.6 [10/08/2009]:
Atualização 3.7! Beta [18/12/2009]:
Atualização 3.7 Patch 1 [27/12/2009]:
Atualização 3.8 [17/01/2010]:
Atualização 3.8 Minor Patch 1 [17/01/2010]:
Atualização 3.9 [15/02/2010]:
Atualização 4.0 [15/02/2010]:
Atualização 4.11! [11/07/2010]:
Atualização 5.0!!!!! [17/03/2013]
- Atualizado para a versão 9.83 (Comedinhasss, Tfs Team)
- Sistemas novos para a nova versão, montaria, war system, etc. (Comedinhasss, Tfs Team)
- Rep System e Antbot Removido. (Comedinhasss)
- 64 Quests reformuladas. (Comedinhasss/Alissow)
- Novo sistema de dicas a cada 15 min. - (Comedinhasss)
- Novo sistema de map marks ao entrar no servidor. (Comedinhasss)
- Organização geral em Actions e Moveevents. (Comedinhasss)
- Nova organização nos monstros agora usando os que não tem no tibia original na pasta monsters em mods. (Comedinhasss)
- Npcs sem utilidade removidos (Comedinhasss)
- Alavanca de runas e potions reformuladas (Comedinhasss, Alissow)
- Bug PZ nas Hydras arrumado (Alissow)
- Cidade principal parcialmente reformulada (Alissow)
- Cidade de Flam totalmente reformulada (Alissow)
- As lojas agora não são mais areas PZ (Alissow)
- Corrigido erros em portas que não deveriam abrir, e portas que não deveriam fechar (Alissow)
- Continente de Zao removido? (Alissow)
- Arrumado bugs onde podia-se pegar items na ferumbras tower e vários outros lugares (Alissow)
- Arrumado caminho da "inquisition" (Alissow)
- Respawns recolocados em algumas áreas de yalahar, dragons, elfs Hydras, Dark magicians e apprentices (Alissow)
- Nova entrada para arena (Svargrond) na cidade principal e funcionando! (Alissow)
- Elevado nível de dificuldade da Arena (Svargrond) (Alissow)
- Nova localização da Ferumbras Tower (Alissow)
- Cidade de Mistyc removida (Alissow)
- Novo sistema premium igual ao global. (Comedinhasss)
- Sistema de bless reformulado e agora por items. (Comedinhasss)
- Sistema de portais/teleports (Comedinhasss, Alissow)
- Sistema offline training (Comedinhasss, TFS)
- Sistema de casamento trocado (Comedinhasss, Outros)
- Spells (OTX)
IP Changer: http://www.mediafire...6stsdskhljaa0c1
-Atenção-
- Acc do God: admin/admin
- LEIA o tópico antes de postar qualquer coisa ou duvida
- Reportem se houver algum bug
- Offline Train Level configurado no config.lua em levelToOfflineInBed
- As estatuas de offline que ficam no templo não funcionam por serem enfeites
- Para tirar o , previewer do nome, no config.lua em serverPreview mude para false
- Todos os addons são vendidos menos o demon que o comedinha acabou esquecendo de coloca
- Comandos personalizados: /ta - itens pro sv inteiro, /tp - locais do mapa, /p - tem na assinatura do comedinha ensinando, /e - abrir e fechar portal(open, close).
- Para usar os portais você primeiro deve explorar a área indo até ela
- Tem alguns segredinhos e lugares escondidos muito legais para vocês descobrirem
- Favor, não usar o nosso distro sem o nosso consenso, obrigado.
Amigo o Distro é usado em 4 Servidores Global , e isso não acontece não, e quando testei também isso não acontecia, e Perder loot erro no distro? Acho que isso não existe, Problema no seu "creaturescripts" em algum script relacionado do mesmo.
Obrigado até mais.
Olá caro amigos do XTibia. Venho aqui apresentar pra vocês no momento a melhor REV 3884 100% works.
Quando eu digo 100% works, são todos os bugs e erros fixados, apresentamos os seguinte conteúdo nessa REV:
- Fix/Patch Hotkey que pode haver lag/freeze no servidor.
- Limite de peso de items no Mailbox 5000oz.
- Anti-Push Enable 1sec.
- PushTime Enable 1sec. (config.lua mudar pushCreatureDelay = 1 * 1)
- Anti-Divulgação 100% (Não pode enviar links nem com espaço (ex: www .site. com)).
- Anti-Clone items NPC (Hotkey Elfbot Patched/Fixed)
- Proteção para jogador não levar debug.
- Anti-Lag (correções na REV 0.4 , 0% de erros ao compilar)
- Fix/Patched server closed connection MySQL.
- Level e Vocação apareçem na tela de Login.
- Auto Attack + Runa + Spells ao mesmo tempo. (Não tem exhaust É UM BUG DA REV 3884 CORRIGIDO POR MIM)
- All hits works 100% players/monsters
- Script já incluso na source para não ser banido da OTServlist.org
Protocolo: 8.60
Tipo de Distro: CONSOLE
E outras coisas que não me lembro por colocar, mais enfim, é a REV 3884 mais segura que eu fiz no momento...
Essa versão é FREE, vou fazer mais atualizações, porém não vou postar, então usem e abusem dessa ultima atualização!
Crio qualquer tipo de Distro com Dual Weapons, ou qualquer outro comando a escolha ( skype: igorp999 )
Downloads:
Download (pasta data caso queira passar seu TFS para 0.4)
http://www.sendspace.com/file/qjekej
ATENÇÃO: Tome cuidado ao passar, peça a alguem experiente, pois podera bugar e parar o funcionamento de vários scripts do teu ATS.
Se baixou com WAR SYSTEM leia abaixo como terminar a instalação.
Execute essa SQL em sua database.
CREATE TABLE IF NOT EXISTS `guild_wars` ( `id` INT NOT NULL AUTO_INCREMENT, `guild_id` INT NOT NULL, `enemy_id` INT NOT NULL, `begin` BIGINT NOT NULL DEFAULT '0', `end` BIGINT NOT NULL DEFAULT '0', `frags` INT UNSIGNED NOT NULL DEFAULT '0', `payment` BIGINT UNSIGNED NOT NULL DEFAULT '0', `guild_kills` INT UNSIGNED NOT NULL DEFAULT '0', `enemy_kills` INT UNSIGNED NOT NULL DEFAULT '0', `status` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `status` (`status`), KEY `guild_id` (`guild_id`), KEY `enemy_id` (`enemy_id`) ) ENGINE=InnoDB;
ALTER TABLE `guild_wars` ADD CONSTRAINT `guild_wars_ibfk_1` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `guild_wars_ibfk_2` FOREIGN KEY (`enemy_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE;
ALTER TABLE `guilds` ADD `balance` BIGINT UNSIGNED NOT NULL AFTER `motd`;
CREATE TABLE IF NOT EXISTS `guild_kills` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `guild_id` INT NOT NULL, `war_id` INT NOT NULL, `death_id` INT NOT NULL ) ENGINE = InnoDB;
ALTER TABLE `guild_kills` ADD CONSTRAINT `guild_kills_ibfk_1` FOREIGN KEY (`war_id`) REFERENCES `guild_wars` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `guild_kills_ibfk_2` FOREIGN KEY (`death_id`) REFERENCES `player_deaths` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `guild_kills_ibfk_3` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE;
ALTER TABLE `killers` ADD `war` INT NOT NULL DEFAULT 0;
Entre na pasta do seu OTServ/data/talkactions/talkactions.xml
Crie um arquivo dentro da scripts na talkactions chamado "WAR.LUA"
talkactions/scripts/war.lua
function onSay(cid, words, param, channel) local guild = getPlayerGuildId(cid) if(not guild or getPlayerGuildLevel(cid) < GUILDLEVEL_LEADER) then doPlayerSendChannelMessage(cid, "", "You cannot execute this talkaction.", TALKTYPE_CHANNEL_W, 0) return true end
local t = string.explode(param, ",") if(not t[2]) then doPlayerSendChannelMessage(cid, "", "Not enough param(s).", TALKTYPE_CHANNEL_W, 0) return true end
local enemy = getGuildId(t[2]) if(not enemy) then doPlayerSendChannelMessage(cid, "", "Guild \"" .. t[2] .. "\" does not exists.", TALKTYPE_CHANNEL_W, 0) return true end
if(enemy == guild) then doPlayerSendChannelMessage(cid, "", "You cannot perform war action on your own guild.", TALKTYPE_CHANNEL_W, 0) return true end
local enemyName, tmp = "", db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. enemy) if(tmp:getID() ~= -1) then enemyName = tmp:getDataString("name") tmp:free() end
if(isInArray({"accept", "reject", "cancel"}, t[1])) then local query = "`guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild if(t[1] == "cancel") then query = "`guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy end
tmp = db.getResult("SELECT `id`, `begin`, `end`, `payment` FROM `guild_wars` WHERE " .. query .. " AND `status` = 0") if(tmp:getID() == -1) then doPlayerSendChannelMessage(cid, "", "Currently there's no pending invitation for a war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end
if(t[1] == "accept") then local _tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild) local state = _tmp:getID() < 0 or _tmp:getDataInt("balance") < tmp:getDataInt("payment")
_tmp:free() if(state) then doPlayerSendChannelMessage(cid, "", "Your guild balance is too low to accept this invitation.", TALKTYPE_CHANNEL_W, 0) return true end
db.executeQuery("UPDATE `guilds` SET `balance` = `balance` - " .. tmp:getDataInt("payment") .. " WHERE `id` = " .. guild) end
query = "UPDATE `guild_wars` SET " local msg = "accepted " .. enemyName .. " invitation to war." if(t[1] == "reject") then query = query .. "`end` = " .. os.time() .. ", `status` = 2" msg = "rejected " .. enemyName .. " invitation to war." elseif(t[1] == "cancel") then query = query .. "`end` = " .. os.time() .. ", `status` = 3" msg = "canceled invitation to a war with " .. enemyName .. "." else query = query .. "`begin` = " .. os.time() .. ", `end` = " .. (tmp:getDataInt("end") > 0 and (os.time() + ((tmp:getDataInt("begin") - tmp:getDataInt("end")) / 86400)) or 0) .. ", `status` = 1" end
query = query .. " WHERE `id` = " .. tmp:getDataInt("id") if(t[1] == "accept") then doGuildAddEnemy(guild, enemy, tmp:getDataInt("id"), WAR_GUILD) doGuildAddEnemy(enemy, guild, tmp:getDataInt("id"), WAR_ENEMY) end
tmp:free() db.executeQuery(query) doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. msg, MESSAGE_EVENT_ADVANCE) return true end
if(t[1] == "invite") then local str = "" tmp = db.getResult("SELECT `guild_id`, `status` FROM `guild_wars` WHERE `guild_id` IN (" .. guild .. "," .. enemy .. ") AND `enemy_id` IN (" .. enemy .. "," .. guild .. ") AND `status` IN (0, 1)") if(tmp:getID() ~= -1) then if(tmp:getDataInt("status") == 0) then if(tmp:getDataInt("guild_id") == guild) then str = "You have already invited " .. enemyName .. " to war." else str = enemyName .. " have already invited you to war." end else str = "You are already on a war with " .. enemyName .. "." end
tmp:free() end
if(str ~= "") then doPlayerSendChannelMessage(cid, "", str, TALKTYPE_CHANNEL_W, 0) return true end
local frags = tonumber(t[3]) if(frags ~= nil) then frags = math.max(10, math.min(1000, frags)) else frags = 100 end
local payment = tonumber(t[4]) if(payment ~= nil) then payment = math.max(100000, math.min(1000000000, payment)) tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild)
local state = tmp:getID() < 0 or tmp:getDataInt("balance") < payment tmp:free() if(state) then doPlayerSendChannelMessage(cid, "", "Your guild balance is too low for such payment.", TALKTYPE_CHANNEL_W, 0) return true end
db.executeQuery("UPDATE `guilds` SET `balance` = `balance` - " .. payment .. " WHERE `id` = " .. guild) else payment = 0 end
local begining, ending = os.time(), tonumber(t[5]) if(ending ~= nil and ending ~= 0) then ending = begining + (ending * 86400) else ending = 0 end
if(not isInArray({"end", "finish"}, t[1])) then return false end
local status = (t[1] == "end" and 1 or 4) tmp = db.getResult("SELECT `id` FROM `guild_wars` WHERE `guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy .. " AND `status` = " .. status) if(tmp:getID() ~= -1) then local query = "UPDATE `guild_wars` SET `end` = " .. os.time() .. ", `status` = 5 WHERE `id` = " .. tmp:getDataInt("id") tmp:free() doGuildRemoveEnemy(guild, enemy) doGuildRemoveEnemy(enemy, guild)
db.executeQuery(query) doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. (status == 4 and "mend fences" or "ended up a war") .. " with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE) return true end
if(status == 4) then doPlayerSendChannelMessage(cid, "", "Currently there's no pending war truce from " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end
tmp = db.getResult("SELECT `id`, `end` FROM `guild_wars` WHERE `guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild .. " AND `status` = 1") if(tmp:getID() ~= -1) then if(tmp:getDataInt("end") > 0) then tmp:free() doPlayerSendChannelMessage(cid, "", "You cannot request ending for war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end
local query = "UPDATE `guild_wars` SET `status` = 4, `end` = " .. os.time() .. " WHERE `id` = " .. tmp:getDataInt("id") tmp:free()
db.executeQuery(query) doBroadcastMessage(getPlayerGuildName(cid) .. " has signed an armstice declaration on a war with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE) return true end
doPlayerSendChannelMessage(cid, "", "Currently there's no active war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0) return true end
Crie um arquivo dentro da scripts na talkactions chamado "BALANCE.LUA"
talkactions/scripts/balance.lua
local function isValidMoney(value) if(value == nil) then return false end
return (value > 0 and value <= 99999999999999) end
function onSay(cid, words, param, channel) local guild = getPlayerGuildId(cid) if(guild == 0) then return false end
local t = string.explode(param, ' ', 1) if(getPlayerGuildLevel(cid) == GUILDLEVEL_LEADER and isInArray({ 'pick' }, t[1])) then if(t[1] == 'pick') then local money = { tonumber(t[2]) } if(not isValidMoney(money[1])) then doPlayerSendChannelMessage(cid, '', 'Invalid amount of money specified.', TALKTYPE_CHANNEL_W, 0) return true end
local result = db.getResult('SELECT `balance` FROM `guilds` WHERE `id` = ' .. guild) if(result:getID() == -1) then return false end