Histórico de Curtidas
-
Blackmotion recebeu reputação de kiyumedd em (Resolvido)[URGENTE] Player Não Salva Erro MYSQL [SOccorro ajuda]Execute todos os comandos abaixo no seu phpmyadmin :
ALTER TABLE `players` ADD `cast` VARCHAR(255) not null default ''; ...
DROP TABLE IF EXISTS `bans`; CREATE TABLE `bans` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `type` tinyint(1) NOT NULL COMMENT '1 - ip banishment, 2 - namelock, 3 - account banishment, 4 - notation, 5 - deletion', `value` int(10) unsigned NOT NULL COMMENT 'ip address (integer), player guid or account number', `param` int(10) unsigned NOT NULL DEFAULT '4294967295' COMMENT 'used only for ip banishment mask (integer)', `active` tinyint(1) NOT NULL DEFAULT '1', `expires` int(11) NOT NULL, `added` int(10) unsigned NOT NULL, `admin_id` int(10) unsigned NOT NULL DEFAULT '0', `comment` text NOT NULL, `reason` int(10) unsigned NOT NULL DEFAULT '0', `action` int(10) unsigned NOT NULL DEFAULT '0', `statement` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `type` (`type`,`value`), KEY `active` (`active`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; ...
DROP TABLE IF EXISTS `player_depotitems`; CREATE TABLE `player_depotitems` ( `player_id` int(11) NOT NULL, `sid` int(11) NOT NULL COMMENT 'any given range, eg. 0-100 is reserved for depot lockers and all above 100 will be normal items inside depots', `pid` int(11) NOT NULL DEFAULT '0', `itemtype` int(11) NOT NULL, `count` int(11) NOT NULL DEFAULT '0', `attributes` blob NOT NULL, UNIQUE KEY `player_id_2` (`player_id`,`sid`), KEY `player_id` (`player_id`), CONSTRAINT `player_depotitems_ibfk_1` FOREIGN KEY (`player_id`) REFERENCES `players` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Algumas pessoas conseguiram resolver o problema com esse método
-
Blackmotion deu reputação a Wise em (Resolvido)Script de Transform [Me explique!]Sinceramente, que dor de cabeça ver esse spoiler.
Me explica o que você quer que aconteça, como acontece esse "transform", que eu vejo se posso fazer de forma simplificada.
E informe a versão do servidor e do distro, se possível.
-
Blackmotion recebeu reputação de Lord Hades em (Resolvido)[RME] Falha ao localizar tibia.dat e tibia.spr no Tibia 10.53Primeiramente esse numero dat="0x54128727" spr="0x54128755" você tem que abrir o .dat e o.srp no HexEditor pra pegar ...
Pra abrir o seu rme 10.53 baixar esse rme aqui >https://mega.co.nz/#!e1NzxQAR!bAUuZ8mDzh4G-3vur9pxHovpwvqPqGu79G2x7Nln6l8<
dps que abri-lo vai pedir pra localizar o .dat e .spr do 10.55 você seleciona a pasta com tal arquivos, se não tiver, baixa um client 10.55 qualquer por aew, dps só ir em Open e procurar seu mapa 10.53 e abri-lo, sem problemas
-
Blackmotion deu reputação a Danihcv em Logo ThunderCoreAssim está bom?
-
Blackmotion deu reputação a Danihcv em Logo ThunderCoreAssim?
Eu diminuí o brilho de todos os entalhes na vdd. Tava achando mt claro no geral.
-
Blackmotion deu reputação a Caronte em Lib 000-ConstOlá pessoal, venho mais uma vez trazer um tutorial simples, e tentar explicar tudo claramente, esse tutorial pode ficar grande dependendo do desenrolar dele, pois é um pack de tutoriais, então vou usar spoilers para ajudar na formatação do tópico.
Nota: as informações usadas abaixo, podem ser tanto usadas com o nome, quanto com o número, e podem ser encontradas na pasta lib no arquivo 000-const
https://pastebin.com/0FfPcg7y
line4
Coordenadas:
Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas.
Explicando:
doMoveCreature(cid, direction): Serve para mover tanto o player quanto o monstro.
Combate:
Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas.
Parâmetros de condição:
Condições:
Slots:
Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas.
Participação: xWhiteWolf
Const_ani e Const_me:
Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas.
Talktypes and message types:
[title][/title]
Tutoriais concluídos por ordem de formatação (podem ser alterados assim mesmo):
Coordenadas, e suas direções. Combat (ainda há coisas a serem adicionadas). Slots. CONST_ME and CONST_ANI
Os assuntos do tópico poderão se diminuídos ou aumentados de acordo com o desenrolar do tempo,
gostaria de apoio, e não me incomodaria se alguém se propusesse fazer algum tutorial, eles serão supervisionados por mim e formatados por mim, para serem postados neste tópico.
Esse tópico demorou e vai demorar muito para fazer
cada tutorial, então eu não me importo com um obrigado e REP+,
OBS.: Um obrigado vale bem mais do que um REP+
-
Blackmotion recebeu reputação de f..silva em (Resolvido)[Pedido] Npc Teleport com LevelNão testei sou novo nesses bang de script ...
carlos.lua
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} 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 local cfg = { toPos = {x=1789, y=3667, z=7}, -- Posição level = 50, -- Level necessário price = 30 -- Dinheiro cobrado } function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'travel') then selfSay('You are sure you want to go?', cid) talkState[talkUser] = 1 elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then if getPlayerLevel(cid) >= cfg.level then if doPlayerRemoveMoney(cid, cfg.price) then doTeleportThing(cid, cfg.toPos) talkState[talkUser] = 0 else selfSay('You don\'t have enough money.', cid) end else selfSay('You need level having above '.. cfg.level ..'.', cid) end elseif msgcontains(msg, 'no') then selfSay('bye', cid) end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) carlos.xml
<?xml version="1.0" encoding="UTF-8"?> <npc name="Carlos" script="data/npc/scripts/carlos.lua" walkinterval="25" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="128" head="114" body="12" legs="57" feet="114" addons="0" /> <parameters> <parameter key="message_greet" value="Hello, |PLAYERNAME|! Would like to {travel} ?"/> <parameter key="message_walkaway" value="Hey, where you go ?"/> <parameter key="message_farewell" value="Bye!"/> </parameters> </npc> #Edit
-
Blackmotion recebeu reputação de linhhares em (Resolvido)[Pedido] Npc Teleport com LevelNão testei sou novo nesses bang de script ...
carlos.lua
local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} 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 local cfg = { toPos = {x=1789, y=3667, z=7}, -- Posição level = 50, -- Level necessário price = 30 -- Dinheiro cobrado } function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'travel') then selfSay('You are sure you want to go?', cid) talkState[talkUser] = 1 elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then if getPlayerLevel(cid) >= cfg.level then if doPlayerRemoveMoney(cid, cfg.price) then doTeleportThing(cid, cfg.toPos) talkState[talkUser] = 0 else selfSay('You don\'t have enough money.', cid) end else selfSay('You need level having above '.. cfg.level ..'.', cid) end elseif msgcontains(msg, 'no') then selfSay('bye', cid) end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) carlos.xml
<?xml version="1.0" encoding="UTF-8"?> <npc name="Carlos" script="data/npc/scripts/carlos.lua" walkinterval="25" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="128" head="114" body="12" legs="57" feet="114" addons="0" /> <parameters> <parameter key="message_greet" value="Hello, |PLAYERNAME|! Would like to {travel} ?"/> <parameter key="message_walkaway" value="Hey, where you go ?"/> <parameter key="message_farewell" value="Bye!"/> </parameters> </npc> #Edit
-
Blackmotion recebeu reputação de kaleudd em (Resolvido)Muitas Duvidas GesiorSuas perguntas são alguém que pelo menos nem tentou fazer sozinho... vê esse vídeo(3 da suas perguntas serão resolvidas) :
Só que baixa esse > XAMPP < ...
E no lugar do gesior se baixa um website de Poketibia... na seção de download de websites tem várias ... (ai a sua ultima pergunta está resolvida também);
-
Blackmotion recebeu reputação de Lord Hades em Gesior 1.0 Moderado Por Min -V1desculpe-me viajei aqui HAUSHAUHSHUA
ALTER TABLE `players` ADD `cast` tinyint(4) NOT NULL DEFAULT '0' -
Blackmotion deu reputação a Raell5 em O TK quer você!Só que, tem muitos "Individuos" que, somente entram para equipe por Status ou REP+ e este não e o espirito creio eu.
Também não e por tempo, que se entra na equipe assim magina nego de 2010 todos agora na equipe.
E outra, tem muitos que pegão mapas e scripts e colocam seus nomes por cima de trabalhos bem feitos.
e ainda poem nome ou "edited by MAX2020" não e por ai que se pensa em entrar na equipe pegando mapas e scripts de grandes membros.
-
Blackmotion recebeu reputação de cliverson em (Resolvido)Preciso muito da sua AJUDA! Compra IN-GAME.9693 é o id do baú ?
vou tentar fazer aqui sou novo em script, mas vou ver o que da pra fazer
-
Blackmotion recebeu reputação de Jonnieh em (Resolvido)Erro Shiny Stone.lualocal evo = { ["Alakazam"] = {"Shiny Alakazam", 1}, ["Blaziken"] = {"Shiny Blaziken", 1}, ["Charizard"] = {"Shiny Charizard", 1}, ["Tyranitar"] = {"Shiny Tyranitar", 1}, ["Ninetales"] = {"Shiny ninetales", 1}, ["Scyther"] = {"Shiny Scyther", 1}, ["Arcanine"] = {"Shiny Arcanine", 1}, ["Blastoise"] = {"Shiny Blastoise", 1}, ["Onix"] = {"Shiny Onix", 1}, ["Snorlax"] = {"Shiny Snorlax", 1}, ["Golbat"] = {"Shiny Golbat", 1}, ["Crobat"] = {"Shiny Crobat", 1}, ["Muk"] = {"Shiny Muk", 1}, ["Dragonair"] = {"Shiny Dragonair", 1}, ["Marowak"] = {"Shiny Marowak", 1}, } local balls = { [2394] = {newBall = 2394}, [2391] = {newBall = 2391}, [2393] = {newBall = 2393}, [2392] = {newBall = 2392}, [12832] = {newBall = 12832}, } function onUse(cid, item, fromPosition, itemEx, toPosition) if isMonster(itemEx.uid) and getCreatureMaster(itemEx.uid) == cid then local monster = getCreatureName(itemEx.uid) if evo[monster] then if getPlayerItemCount(cid, item.itemid) >= evo[monster][2] then doPlayerSendTextMessage(cid, 27, "Parabens! Seu "..getPokeName(itemEx.uid).." evoluiu para "..evo[monster][1].."!") local health, maxHealth = getCreatureHealth(itemEx.uid), getCreatureMaxHealth(itemEx.uid) doSendMagicEffect(getThingPos(itemEx.uid), 18) doRemoveCreature(itemEx.uid) doPlayerRemoveItem(cid, item.itemid, evo[monster][2]-1) doRemoveItem(item.uid, 1) doSummonMonster(cid,evo[monster][1]) local pokeball = getPlayerSlotItem(cid, 8) doItemSetAttribute(pokeball.uid, "poke", evo[monster][1]) doItemSetAttribute(pokeball.uid, "level", pokes[evo[monster][1]].level) doItemSetAttribute(ball, "hp", 1) doItemSetAttribute(ball, "happy", 110) local pk = getCreatureSummons(cid)[1] local getShinyPokeballs = balls[getPlayerSlotItem(cid, 8).itemid] doTransformItem(getPlayerSlotItem(cid, 8).uid, getShinyPokeballs.newBall) adjustStatus(pk, pokeball.uid, true, false, true) return TRUE else return doPlayerSendTextMessage(cid, 27, "You need atleast ".. evo[monster][2] .." stones to do it!") end end end return FALSE end -
Blackmotion deu reputação a Orochi Elf em [C++] Pokemon Ghost System[C++] Pokemon Ghost System
Fala galera do TibiaKing, hoje eu venho postar pra vocês um conteúdo que particularmente eu acho muito bom.
Esse sistema faz com que o pokemon cuja o nome seja "Gastly, Haunter ou Gengar" (é possível adicionar mais pokemons), passe por dentro das paredes.
Instalação:
Vá em creature.cpp, e procure por
void Creature::getPathSearchParams(const Creature* creature, FindPathParams& fpp) const { fpp.fullPathSearch = !hasFollowPath;
E abaixo adicione:
if(creature->isPlayerSummon()) { if(!creature->getMaster()->hasCondition(CONDITION_INFIGHT)) { if(creature->getName() == "Gengar") fpp.clearSight = false; if(creature->getName() == "Haunter") fpp.clearSight = false; if(creature->getName() == "Gastly") fpp.clearSight = false; } }
Espero que façam bom uso
Créditos:
Tony Araújo (OrochiElf)
-
Blackmotion deu reputação a Danihcv em [TUTORIAL] Resolvendo qualquer erro na data baseOpa, galerinha do TK, pro meu primeiro tutorial resolvi fazer uma solução de um problema que desde que cheguei no TK, vejo que ocorre com uma certa frequência. Os erros da data base.
Neste tutorial vou ensinar a resolver os erros do tipo No such table, Insert into, No such column, ... has no column named... etc.
1°) NO SUCH TABLE
Bom, para o erro No such table, basta vc visualizar qual table está faltando. Para isso basta ler o erro na distro:
No caso da imagem, está faltando a table: player_statements
Para resolver este e qualquer outro problema deste tipo, caso sua data base seja sqlite,
basta abrir sua data base pelo Sqlite Studio(download: http://sqlitestudio.pl/?act=download) e clicar em Open SQL query editor:
Mas caso sua data base seja Mysql abra pelo phpMyadmin, ou por outro editor de sua preferencia.
1.1°) EXECUTANDO OS COMANDOS PARA RESOLVER O PROBLEMA
Bom, dependendo da table que estiver faltando, vc irá colocar seu respectivo comando, segue abaixo TODOS os comandos básicos necessários para que sua data base fique Ok! : (VC VAI PEGAR O COMANDO REFERENTE À TABLE QUE VC QUER!!!)
account_viplist
Sqlite
accounts
Sqlite
bans
Sqlite
environment_killers
Sqlite
global_storage
Sqlite
guild_invites
Sqlite
guild_kills
Sqlite
guild_ranks
Sqlite
guild_wars
Sqlite
guilds
Sqlite
house_auctions
Sqlite
house_data
Sqlite
house_lists
Sqlite
houses
Sqlite
killers
Sqlite
market_history
Sqlite
market_offers
Sqlite
player_deaths
Sqlite
player_depotitems
Sqlite
player_inboxitems
Sqlite
player_items
Sqlite
player_killers
Sqlite
player_namelocks
Sqlite
player_skills
Sqlite
player_spells
Sqlite
player_statements
Sqlite
player_storage
Sqlite
player_viplist
Sqlite
players
Sqlite
server_config
Sqlite
server_motd
Sqlite
server_record
Sqlite
server_reports
Sqlite
tile_items
Sqlite
tile_store
Sqlite
tiles
Sqlite
announcements
Sqlite
pagsegurotransacoes
Sqlite
player_advances
Sqlite
reports
Sqlite
thanks
Sqlite
z_bug_logs
Sqlite
z_featured_article
Sqlite
z_forum
Sqlite
z_helpdesk
Sqlite
z_monsters
Sqlite
z_network_box
Sqlite
z_news_tickers
Sqlite
z_ots_comunication
Sqlite
z_polls
Sqlite
z_polls_answers
Sqlite
z_poll_votes
Sqlite
z_shop_history_item
Sqlite
z_shop_history_pacc
Sqlite
z_shop_offer
Sqlite
z_spells
Sqlite
z_news_big
Sqlite
2°) No such column / "NOME DA TABLE" has no column named "NOME DA COLUMN QUE FALTA" / Insert into
Bom, para resolver esse problema vc deve identificar em qual TABLE está essa coluna que falta. Para isso, basta ler o erro como na imagem:
No caso da imagem, está faltando a column WORLD_ID dentro da table MARKET_OFFERS. Para resolver, vc deve executar excluir a sua table MARKET_OFFERS existante em sua data base, e em seguida, executar o domando da da market_offers, encontrado acima, logicamente isso só se aplica ao caso da imagem, depende do seu caso, vc deve excutar o comando da table que estiver sendo referida no erro. Mas antes de executá-lo vc deve excluir a sua table EXISTENTE, para então executar o comando.
ESTA FORMA DE RESOLUÇÃO SE APLICA AOS TRÊS CASOS: NO SUCH COLUMN, ...HAS NO COLUMN NAMED... e INSERT INTO.
Bom galera, é isso.
SE ENCONTRAREM, OU SE DEPARAREM COM ALGUM ERRO, BASTA ME PEDIR AJUDA QUE EU DAREI TOTAL SUPORTE PARA VOCÊS!
SE ESTIVR FALTANDO MAIS ALGUMA TABLE QUE EU NÃO COLOQUEI AQUI, PF ME INFORMEM E EU ATUALIZAREI O TÓPICO!!!
Lembrem-se, se eu te ajudei, por favor, deem REP++ pois foi meio trabolhoso fazer este tutorial todo...
ESTOU A DISPOSIÇÃO DE TODOS! Tanto por PM quanto por SKYPE, e até mesmo por aqui, pois vou checar este tópico regularmente!!
Espero ter ajudado!!
Abraços.
-
Blackmotion recebeu reputação de xmaster0 em Com sources tudo é possivel?se tu souber programar tudo é possível, a pergunta é se tu é capaz de fazer isso
-
Blackmotion deu reputação a Beeny em O TK quer você!acho que todo mundo já sabia disso
anyway
-
Blackmotion deu reputação a GOD Falumir em TFS 3884 - 8.6 - War System - (Anti SALT) - MUITO ESTÁVELFinalmente galera consegui resolver o problema do salt, muitas pessoas estavam com este problema, pesquisei bem por horas e finalmente encontrei a solução, para quem estava com o problema do Account Manager criar conta e não logar no gesior e vice versa, agora está resolvido .. obs: usem o sistema SHA1. Para quem tentou esse sistema: http://www.tibiaking.com/forum/topic/40463-distro-tfs-04-ant-dv-war-system-no-otbm-check-no-gerar-salt-acc-manager-pega-junto-com-site-em-sha1/ , E NÃO Conseguiu resolver, está é a solução.
AVISO: Deu trabalho para fazer, se puderem me ajudar com +REP irei agradecer.
TFS compatível com baiaks e outros servidores estando 100% estável, estou postando a TFS PRONTA para uso e também está incluso as Sources para quem quiser compilar.
NÃO SE ESQUEÇAM DO +REP, ESPERO TER AJUDADO.
DOWNLOAD: (SEM WAR SYSTEM MAS PODE SER COMPILADO) SOURCES+EXECUTÁVEL
http://www.4shared.com/rar/1UkZ4SFaba/TFS_86_-_War_System_e_Anti_SAL.html?
SOMENTE EXECUTÁVEL COMPILADO COM WAR SYSTEM E ANTI SALT
http://www.4shared.com/rar/4KijpSs0ba/TheForgottenServer.html?
SCAN:
https://www.virustotal.com/sv/file/9ac2a228444c7d5b08f42d657ee5a82a9963a7674cde58e2b8b5c25dd40cadf8/analysis/1417440333/
-
Blackmotion recebeu reputação de Azinhawk em (Resolvido)Featured article (help)posta seu latestnews.php aqui
-
Blackmotion deu reputação a Yugami em [Script Spell] Dai Kamuinão sou um script nem nada,mas mesmo assim ja consigui arruma muintas spells minhas pra ficar do geito que eu gosto entretanto ainda to Iniciante,mas eu tinha um Spell aki chamda "Kamui Me" e arrumei ela,para só levar o target a tal de "Dai Kamui" que augums dos Cara do TK estão atras,segue o tutorial abaixo.
Va em Pasta Do Ot/Data/Spells e Abra o Spells.xml e add éssa tag.
<instant name="Dai Kamui" words="Dai kamui" lvl="225" mana="10000" aggressive="1" exhaustion="2000" needtarget="1" range="7" needlearn="0" event="script" value="kamui prision.lua"> <vocation id="76"/> <vocation id="77"/> </instant> apóis adiciona click CTRL+S para salva e feche,agora vai em Pasta Do Ot/Data/Spells/Scripts copie qualquer arquivo.lua e adicione isso abaixo.
function onCastSpell(cid, var) local Tile1 = {x=1566, y=1293, z=7} -- para onde o player é teleportado local from1,to1 = {x=1509, y=1259, z=7},{x=1509, y=1255, z=7} -- ponto 1 ao ponto 2 de onde ele sera levado. local pos = getCreaturePosition(cid) local target = getCreatureTarget(cid) local targetpos = getCreaturePosition(target) local time = 30 -- tempo para voltar em segundos local exausted = 5 -- tempo em minutos que vai ficar sem usa a spell(se não quiser exausted deixe "0") if isInRange(pos, from1, to1) then doPlayerSendCancel(cid, "Você nao pode usar o Kamui aqui!") return FALSE end local function Teleport_Target(target) doTeleportThing(target, targetpos) end if isPlayer(cid) and getPlayerAccess(cid) < 3 and getPlayerStorageValue(cid, 17457)-os.time() > 1 then local seetime = getPlayerStorageValue(cid, 17457)-os.time() local minutes, seconds = math.floor(seetime/60), math.floor(seetime%60) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde "..minutes.." minuto(s) e "..seconds.." segundo(s) para usar novamente!") return false end if isPlayer(target) then doTeleportThing(target, Tile1) doSendMagicEffect(targetpos, 196) addEvent(Teleport_Target, time*1000, target) doCreatureSay(cid, "Dai Kamui", TALKTYPE_MONSTER) setPlayerStorageValue(cid, 17457, exausted*60+os.time()) else doPlayerSendCancel(cid, "Voce so pode usar esta magia em players!") end end
Até Onde eu sei 100% dos creditos é meu!!
-
Blackmotion deu reputação a Smart Maxx em [GlobalEvents] Perfect Zombie Event 100% automaticoPrimeiramente o evento foi testado num servidor 8.6, TFS 0.4, sem apresentar nenhum problema.
Em data/creaturescripts/scripts crie o arquivo zombieevent.lua :
local config = { playerCount = 2001, -- Storage dos players que entram e sai do evento goblet = 5805, -- Troféu que vai pro vencedor do evento rewards = {2195, 2152, 2160}, -- Recompensas. moneyReward = {2160, 10, 1}, -- {moneyId, quantidade, usar}1 pra usar 0 pra não usar} -- Area que o zumbi vai spawnar fromPosition = {x = 543, y = 578, z = 7}, -- top de fromPosition até toPosition = {x = 577, y = 600, z = 7} -- em baixo toPostion } function onStatsChange(cid, attacker, type, combat, value) if isPlayer(cid) and isMonster(attacker) then if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then if getGlobalStorageValue(config.playerCount) >= 2 then doBroadcastMessage(getPlayerName(cid) .. " have been eated by Zombies!", MESSAGE_STATUS_CONSOLE_RED) local corpse = doCreateItem(3058, 1, getPlayerPosition(cid)) doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)-1) elseif getGlobalStorageValue(config.playerCount) == 1 then if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then doBroadcastMessage(getPlayerName(cid) .. " won the Zombie event! Congratulations!", MESSAGE_STATUS_WARNING) local goblet = doPlayerAddItem(cid, config.goblet, 1) doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(cid) .. " for winning the Zombie event.") local corpse = doCreateItem(3058, 1, getPlayerPosition(cid)) doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) for _,items in ipairs(config.rewards) do doPlayerAddItem(cid, items, 1) end if config.moneyReward[3] == 1 then doPlayerAddItem(cid, config.moneyReward[1], config.moneyReward[2]) end end for x = config.fromPosition.x, config.toPosition.x do for y = config.fromPosition.y, config.toPosition.y do for z = config.fromPosition.z, config.toPosition.z do areapos = {x = x, y = y, z = z, stackpos = 253} getMonsters = getThingfromPos(areapos) if isMonster(getMonsters.uid) then doRemoveCreature(getMonsters.uid) end end end end end return false end end return true end Na mesma pasta em login.lua antes do ultimo return true adicione :
registerCreatureEvent(cid, "zombieevent") Agora em data/creaturescripts adicione em creturescripts.XML :
<!-- ZOMBIE EVENT --> <event type="statschange" name="zombieevent" event="script" value="zombieevent.lua"/> Agora vamos em data/monster crie uma pasta com o nome ZombieEvent e dentro dessa pasta crie o arquivo chamado event zombie.XML :
<?xml version="1.0" encoding="UTF-8"?><monster name="Event Zombie" nameDescription="an event zombie" race="undead" experience="280" speed="100" manacost="0"> <health now="500" max="500"/> <look type="311" corpse="9875"/> <targetchange interval="5000" chance="50"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="0"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="0"/> </flags> <attacks> <attack name="melee" interval="2000" min="-35000" max="-35000"/> </attacks> <defenses armor="15" defense="10"/> <immunities> <immunity paralyze="1"/> <immunity invisible="1"/> </immunities> <voices interval="5000" chance="10"> <voice sentence="You wont last long!"/> <voice sentence="Mmmmh.. braains!"/> </voices> <loot> <item id="2148" countmax="1" chance="100000"/><!-- gold coin --> </loot> </monster> voltando pra pasta data/monster abra o arquivo monsters.XML e adicione :
<!-- ZombieEvent --> <monster name="event zombie" file="ZombieEvent/event zombie.xml"/> tudo ok até aqui ... então vamos pra pasta data/movements/scripts crie zombieevent.lua :
local config = { playerCount = 2001, -- Storage do players do evento maxPlayers = 20, -- Maximo de players pra partiparem do evento minLevel = 17 -- Level minimo pra entrar no evento } function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) if getPlayerLevel(cid) < config.minLevel then addEvent(tpBack, 1000, cid, fromPosition) doPlayerSendCancel(cid, "You need to be at least level " .. config.minLevel .. ".") return false end if getGlobalStorageValue(config.playerCount) < config.maxPlayers then setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)+1) if getGlobalStorageValue(config.playerCount) == config.maxPlayers then doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(config.playerCount) .. " players]! The event will soon start.") else doBroadcastMessage(getPlayerName(cid) .. " entered the Zombie event! Currently " .. getGlobalStorageValue(config.playerCount) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED) end else addEvent(tpBack, 1000, cid, fromPosition) doPlayerSendCancel(cid, "The event is full. There is already " .. config.maxPlayers .. " players participating in the quest.") return false end print(getStorage(config.playerCount) .. " Players in the zombie event.") return true end function tpBack(cid, fromPosition) doTeleportThing(cid, fromPosition, true) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) end voltando pra data/movements abra o arquivo movements.XML e adicione :
<!-- ZOMBIE event --> <movevent type="StepIn" actionid="2008" event="script" value="zombieevent.lua"/> agora vamos pra parte mais importante e que devemos mais prestar atenção...
em data/globalevents/scripts crie zombieevent.lua :
local config = { semana_mes = "semana", days = {1,2,3,4,5,6,7}, -- Dia das semanas que irá acontecer o evento goblet = 5805, -- Troféu que vai pro vencedor do evento rewards = {2195, 2152, 2160}, -- Recompensas. moneyReward = {2160, 10, 1},-- {moneyId, quantidade, usar}1 pra usar 0 pra não usar} playerCount = 2001, -- Storage dos players que entram e sai do evento zombieCount = 2002, -- Storage do zombie do event teleportActionId = 2008, -- Action ID do teleport teleportPosition = {x = 652, y = 1020, z = 7, stackpos = 1}, -- Onde o teleport é criado teleportToPosition = {x = 559, y = 589, z = 7}, -- Pra onde será teleportado teleportId = 1387, -- ID do teleporte timeToStartEvent = 2, -- Minutos que o portal irá ficar aberto até os player entrarem timeBetweenSpawns = 20, -- Segundos dps do evento ser startado começarem a aparecer os zombie zombieName = "event zombie", -- Nome do zombie sumonado playersNeededToStartEvent = 3, -- Players necessários pro evento ser iniciado -- Area que o zumbi vai spawnar fromPosition = {x = 543, y = 578, z = 7}, -- top de fromPosition até toPosition = {x = 577, y = 600, z = 7} -- -- em baixo toPostion } function onTime() local time = os.date("*t") if (config.semana_mes == "semana" and isInArray(config.days,time.wday)) or (config.semana_mes == "mes" and isInArray(config.days,time.day)) or config.semana_mes == "" then local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition) doItemSetAttribute(tp, "aid", config.teleportActionId) doBroadcastMessage("Zombie event starting in " .. config.timeToStartEvent .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING) setGlobalStorageValue(config.playerCount, 0) setGlobalStorageValue(config.zombieCount, 0) addEvent(startEvent, config.timeToStartEvent * 1000 * 60) end return TRUE end function startEvent() local fromp, top = config.fromPosition, config.toPosition if getGlobalStorageValue(config.playerCount) >= config.playersNeededToStartEvent then addEvent(spawnZombie, config.timeBetweenSpawns * 1000) doBroadcastMessage("Good luck in the zombie event people! The teleport has closed!", MESSAGE_STATUS_WARNING) for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do areapos = {x = x, y = y, z = z, stackpos = 253} getPlayers = getThingfromPos(areapos) if isPlayer(getPlayers.uid) then doPlayerSendTextMessage(getPlayers.uid, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. config.timeBetweenSpawns .. " seconds! Good luck!") pvgaylord() end end end end else doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. config.playersNeededToStartEvent .. " players is needed!", MESSAGE_STATUS_WARNING) for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do areapos = {x = x, y = y, z = z, stackpos = 253} getPlayers = getThingfromPos(areapos) if isPlayer(getPlayers.uid) then doTeleportThing(getPlayers.uid, getTownTemplePosition(getPlayerTown(getPlayers.uid)), false) doSendMagicEffect(getPlayerPosition(getPlayers.uid), CONST_ME_TELEPORT) end end end end end end function spawnZombie() if getGlobalStorageValue(config.playerCount) >= 2 then pos = {x = math.random(config.fromPosition.x, config.toPosition.x), y = math.random(config.fromPosition.y, config.toPosition.y), z = math.random(config.fromPosition.z, config.toPosition.z)} doSummonCreature(config.zombieName, pos) doSendMagicEffect(pos, CONST_ME_MORTAREA) setGlobalStorageValue(config.zombieCount, getGlobalStorageValue(config.zombieCount)+1) doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(config.zombieCount) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED) addEvent(spawnZombie, config.timeBetweenSpawns * 1000) else local fromp, top = config.fromPosition, config.toPosition for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do areapos = {x = x, y = y, z = z, stackpos = 253} cid = getThingfromPos(areapos).uid if isPlayer(cid) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false) doBroadcastMessage(getCreatureName(cid)..' has survived at zombie event!') for _,items in ipairs(config.rewards) do doPlayerAddItem(cid, items, 1) end if config.moneyReward[3] == 1 then doPlayerAddItem(cid, config.moneyReward[1], config.moneyReward[2]) end doBroadcastMessage(getPlayerName(cid) .. " won the Zombie event! Congratulations!", MESSAGE_STATUS_WARNING) local goblet = doPlayerAddItem(cid, config.goblet, 1) doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(cid) .. " for winning the Zombie event.") elseif isMonster(cid) then doRemoveCreature(cid) end end end end end end function pvgaylord() local fromp, top, p, m = config.fromPosition, config.toPosition, 0, 0 for x = fromp.x, top.x do for y = fromp.y, top.y do for z = fromp.z, top.z do local areapos = {x = x, y = y, z = z, stackpos = 253} local cid = getThingfromPos(areapos).uid if isPlayer(cid) then p = p+1 elseif isMonster(cid) then m = m+1 end end end end if p ~= getGlobalStorageValue(config.playerCount) then setGlobalStorageValue(config.playerCount, p) end if p < 2 then return true end addEvent(pvgaylord,100,nil) end na mesma pasta crie o arquivo fechazombie.lua :
local teleportPos = {x = 652, y = 1020, z = 7, stackpos = 1} -- Posição em que se abre o teleport local teleportId = 1387 function onTimer() for i = 1, 255 do teleportPos.stackpos = i if getThingFromPos(teleportPos).itemid == teleportId then doRemoveItem(getThingFromPos(teleportPos).uid, 1) end end return true end agora em data/globalevents abra o arquivo globalevents.XML e adicione :
<globalevent name="zombieevent" time="23:41" event="script" value="zombieevent.lua"/> <globalevent name="zombieventt" time="23:43" event="script" value="fechazombie.lua"/> Importante : time="Horário que irá acontecer o evento" e no fechazombie coloque 2 minutos a mais da hora que vc colocou pra iniciar, para assim fechar o teleport na hora em que o evento é startado (configuração padrão do script, se alterar lá terá que alterar aqui tb)
Agora só abrir e desfrutar do seu novo sistema...
Download de mapas :
http://tibiaking.com...apa-modificado/ - tiago.bordin1988
http://tibiaking.com...mbie-event-v10/ - ricardo3
http://tibiaking.com...map-86-inovado/ - OhGod
http://www.speedysha...ombieEvent.otbm
Créditos...
Fausto32
Sociopata
Orochi Elf
Phowned
Smart Maxx
-
Blackmotion deu reputação a Smart Maxx em [Original] Azeroth RPGbastar trocar no config.lua para mysql se tem vários tutoriais no fórum de como fazer isso;
-
Blackmotion deu reputação a Smart Maxx em [Original] Azeroth RPG> o Servidor creio que seria considerado bem leve comparado aos global full e baiak que já vi e editei ...
> Zombie event é automático podendo ser programado a qualquer hora que queira, Castle of honor por opção minha eu não editei(só algumas mudança e bugs corrigidos) e deixei por comando para acompanhar de perto o sistema pois gosto dele, o battlefield é por comando tb mas recentemente editei e deixei automático(talvez eu coloque na próxima versão).
>As spells do servidor são as msm encontrada nos tibias 8.6.
-
Blackmotion deu reputação a Smart Maxx em [Original] Azeroth RPGJá tinham me alertado pelo sobre isso;
Db adicionada ao tópico.
-
Blackmotion deu reputação a Smart Maxx em [Original] Azeroth RPGAzeroth Server
Versão: 8.60
Distro: TFS 0.4
Mapa Base: Yourots Edited e Mix Yourots
Esse mapa particularmente foi um dos mais divertidos e legais que já gostei de editar...
Hoje venho trazer a versão que podemos talvez chamar de v2.0 desse magnfico serve focado em rpg.
Não tem como eu citar tudo que foi acrescentado e editado porque foi muitas coisas mesmo é só consigo lembrar das recentes ...
Inicialmente o mapa contem 7 cidades que são elas :
Azeroth Avalon Zatur Liberty Bay Gloria Sand Trap Tiquanda Estou trabalhando com um amigo em um mapa, que seria o novo continente desse serve com mais 9 cidades... talvez mais em breve eu posto algo relacionado à isso.
> Mapa RPG bem detalhado para Ots Low e Mid rate.
> Inúmeras invasões automáticas, Low e High lvl (ou iniciadas pelo comando /raid "nome").
> NPCs de Travel/Boat diferentes para cada cidade.
> Mais de 70 quests (além das principais) espalhadas pelo mapa.
> Quests especiais com NPCs
> Arena PvP sem perda de items.
> Sistema de Guerras pelo Castelo [entre guilds]
> Sistema de Refinamento e Slot (mais detalhes abaixo).
> Sistema de Mineração
> Scripts e sistemas aprimorados para o servidor
> Distro SEM erro algum
> Principais Quests:
Annihilator
Blue Legs
Pits of Inferno
MMS
The Inquisition
The Death
FireWalker Boots
Demon Helmet
Draken
Hell Conquer
______________________________________________________________________________________________________________________
V2.0
> Muitas correções no mapa
> Ajustes nos scripts de Slot
> Ajustes nos scripts de Mineração
> Ajustes em alguns npcs
> Adicionado mais 4 npcs pro futuro novo continente
> Adicionado Battlefield Evento funcionado 100% (comando /battlefield "numero de players")
> Adicionado Evento Zombie 100% automatico
> Pequenas alterações no Castle of Honor
> Balanceado sistemas de minério
> Mais de 40 Quest adicionadas
> Adicionado comando de expulsar player inativo da house
> Corrigido muitos bugs encontrados ao decorrer da edição do serve
> Adicionada muitas hunts (Hunts do nosso querido @Daniel implementadas)
> e muito mais ...
Edição e postagem(leia):
É Autorizado edições e repostagens do Azeroth Server (aliás, não posso proibir isso) mas peço a vocês que pelo menos respeitem o estilo do mapa. Eu não sei se poderei dar continuidade a ele, mas trata-se de um projeto RPG.
Pensa só, Vmspk teve um trabalhão pra editar o server, ele fez tudo com mais amor do que o arroz que sua mãe faz com sazón, e você vai baixar, encher de teleportes e hunts quadradas, colocar armas com atk de 350000, sistemas VIPs sem propósito algum, vai copiar o tópico, retirar meus créditos e postar novamente? Reconsidere, pois não há nada mais desmotivador para um desenvolvedor do que isso, ver seu trabalho cair em desuso, como aconteceu com o Styller YourOts, Vancini e Baiak, que agora é um monstro sem pé nem cabeça (alguns gostam desse tipo de server, tudo bem, mas essa não é a proposta deste servidor).
Se teve boas ideias e quer editar o servidor para postar, fique à vontade, mas não nos decepcione. !
Não há teleports diretos para hunts ou quests.
Não há items ou monstros editados(além dos trainers).
Não há sistema VIP, VIP 2, VIP 3, VIP 345456364.
Não há raids com monstros excessivamente fortes nas cidades iniciais.
Créditos
< Unknow YourOts Edited >
< Mix Yourots Team >
< Crystal Server Team >
< Tryller >
< Mock >
< TFS Team >
< TonyHanks >
< Centera World >
< Vmspk >
<EddyHavoc>
<Smart Maxx>
<Daniel>
<White Wolf>
<Absolute>
< e muitos outros ... >
Otserv : http://www.mediafire.com/download/43t9eh6te2e1v7c/otserv.rar
Scan : https://www.virustotal.com/pt/file/7a4ae609b0dda80af75d6ff6aefa122e0f42c067983c353baa55cece17ad0c55/analysis/1416407066/
Db : https://www.mediafire.com/?xwj5piwca7ff2xz