
Baned
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
Baned deu reputação a Pedriinz em (Resolvido)[DUVIDA] FUNÇÃO ON USEVish @vankk provavelmente você está correto.
Mas deve ter alguma maneira de fazer o que ele deseja no 0.4 também...
Edit:
Coloque o parametro; allowfaruse="1", na tag do item em actions.xml
E vai poder usar de longe.
-
Baned deu reputação a Kemmlly em Verificar andar do player (z)@Baned
if getCreaturePosition(cid).z == 10 then
-
Baned deu reputação a Dennyz em Exhausted MagicWall rune!Amigo tente
-
Baned deu reputação a Wakon em (Resolvido)Ajuda em script de inserçãoFiz um com onKill pra você:
function onKill(cid, target) local cidID, targetID = getPlayerGUID(cid), getPlayerGUID(target) local targetREP = db.getResult("SELECT `rep` FROM `players` WHERE `id` = " .. targetID .. ";") local rep = targetREP:getDataInt("rep") if isPlayer(cid) and isPlayer(target) then if getPlayerLevel(cid) >= 750 and getPlayerLevel(target) >= 750 then db.executeQuery("UPDATE `players` SET `rep` = `rep` + " .. 1 .. " WHERE `id` = " .. cidID .. ";") if rep > 0 then db.executeQuery("UPDATE `players` SET `rep` = `rep` - " .. 1 .. " WHERE `id` = " .. targetID .. ";") end end end return true end TAG:
<event type="kill" name="repNew" event="script" value="arquivo.lua"/> E não esqueça de registrar no login.lua!
registerCreatureEvent(cid, "repNew") Coloquei também uma checagem de rep para não deixar o player com rep negativo, se você quiser tirar é só remover essas linhas:
if rep > 0 then db.executeQuery("UPDATE `players` SET `rep` = `rep` - " .. 1 .. " WHERE `id` = " .. targetID .. ";") end
-
Baned recebeu reputação de RogerQC em Server Status - Geseior + Dedicado ServerCoreSe voce está usando linux, tem que dar permisão no arquivo config dentro da pasta var/www/config/ o config do status!
-
Baned recebeu reputação de Pro Kimo em [8.60] Aggrox OTX V2Qual versão do OTX foi utilizada?
-
Baned deu reputação a Patrick Jean em Removendo Account SaltNome do Script: Removendo Account Salt
Autor: Henke Rula
Servidor Testado: OTX Server 9.8x e outras versões também serve
Descrição: Mesmo tendo a opção no config.lua, não é retirado o salt do banco de dados.
Então modifiquei nas sources forçando não criar o Salt na tabela.
Requisitos: Sources do Servidor
Abrir "iologindata.cpp" e procure por :
query << "SELECT `name`, `password`, `salt`, `premdays`, `lastday`, `key`, `warnings` FROM `accounts` WHERE `id` = " << accountId << " LIMIT 1"; E Troque por:
query << "SELECT `name`, `password`, `premdays`, `lastday`, `key`, `warnings` FROM `accounts` WHERE `id` = " << accountId << " LIMIT 1"; Logo abaixo verá essa opção que você deve remover:
account.salt = result->getDataString("salt"); Procure por :
query << "SELECT `id`, `password`, `salt`, `premdays`, `lastday`, `key`, `warnings` FROM `accounts` WHERE `name` " << db->getStringComparer() << db->escapeString(name) << " LIMIT 1"; E troque por:
query << "SELECT `id`, `password`, `premdays`, `lastday`, `key`, `warnings` FROM `accounts` WHERE `name` " << db->getStringComparer() << db->escapeString(name) << " LIMIT 1"; Logo abaixo verá essa opção que você deve remover:
account.salt = result->getDataString("salt"); Como podem verificar, eu removi o salt da consulta sql e removi a função também.
O começo da consulta pode variar entre query e dbquery dependendo da sua distro.
Procure por:
password = salt + password; E troque por:
password = password; E logo abaixo procure por:
query << "INSERT INTO `accounts` (`id`, `name`, `password`, `salt`) VALUES (NULL, " << db->escapeString(name) << ", " << db->escapeString(password) << ", " << db->escapeString(salt) << ")"; E troque por:
query << "INSERT INTO `accounts` (`id`, `name`, `password`) VALUES (NULL, " << db->escapeString(name) << ", " << db->escapeString(password) << ")"; A modificação é muito simples e 100% funcional e livre de bugs. (Testei e funcionou)
Vale lembrar que essa modificação é muito útil para aqueles que querem ter seu servidor criando contas in-game ou por site.
Estou aberto a sugestões e críticas construtivas.
-
Baned deu reputação a Vodkart em (Resolvido)Teleportar players de uma area Xfunction onTime() local area = {{x=32592,y=32663,z=7},{x=32594,y=32666,z=7}} local topos = {x=32623, y=32660, z=7} local remove, clean = true, true for x = area[1].x - 1, area[2].x + 1 do for y = area[1].y - 1, area[2].y + 1 do local pos = {x=x, y=y, z=area[1].z} local m = getTopCreature(pos).uid if remove ~= false and m ~= 0 and isMonster(m) then doRemoveCreature(m) end if clean ~= false then doCleanTile(pos, false) end if m ~= 0 and isPlayer(m) then doTeleportThing(m, topos) end end end return true end
-
Baned deu reputação a MaXwEllDeN em [Resolvido] [Pedido] Movements - Bloquear Pushfunction isPosInArray(array, pos) for _, v in pairs(array) do if v.x == pos.x and v.y == pos.y and v.z == pos.z then return true end end return false end local pos = { {x = 751, y = 752, z = 7}, {x = 251, y = 752, z = 7}, } function onPush(cid, target) if isPlayer(target) and isPosInArray(pos, getThingPos(target)) then doPlayerSendCancel(cid, "Você não pode empurrar este player.") return false end return true end
-
Baned deu reputação a Vodkart em (Resolvido)[DUVIDA] SCRIPT SÓ FUNCIONA DEPOIS DO RELOADhttp://www.tibiaking.com/forum/topic/49367-toplevel-effect/page-4
leia o primeiro post
-
Baned deu reputação a Sanieg em (Resolvido)[PEDIDO] Alavanca recompensa se tiver 100 fragslocal function getPlayFrags(cid) local time = os.time() local times = {today = (time - 86400), week = (time - (7 * 86400))} local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC") if(result:getID() ~= -1) then repeat local content = {date = result:getDataInt("date")} if(content.date > times.today) then table.insert(contents.day, content) elseif(content.date > times.week) then table.insert(contents.week, content) else table.insert(contents.month, content) end until not result:next() result:free() end local size = {day = table.maxn(contents.day),week = table.maxn(contents.week),month = table.maxn(contents.month)} return size.day + size.week + size.month end function onUse(cid, fromPos, item, toPos) local item = 2160 --IDDOITEM if getPlayerStorageValue(cid, 19245) >= 1 then doPlayerSendCancel(cid, "Voce ja completou a quest.") return LUA_ERROR end if getPlayFrags(cid) < 100 then doPlayerSendCancel(cid, "Voce precisa possuir 100 frags.") return false end doPlayerAddItem(cid, item, 1) doPlayerSendTextMessage(cid, 19, "Voce recebeu seu premio.") setPlayerStorageValue(cid, 19245, 1) return true end
-
Baned recebeu reputação de Sanieg em (Resolvido)[PEDIDO] Alavanca recompensa se tiver 100 fragsObrigado, porem faltou por um storage, pois, se o player ficar clicando ele fica ganhando o item....
-
Baned deu reputação a Snowsz em (Resolvido)[pedido] talkaction muda outfit de todos q estao usando citizenCara, seu script não tem nada a ver, por favor, poderia estudar mais?
Não testei:
local antigaOutfit = 128 local novaOutfit = 300 function onSay(cid, words, param) for k,v in pairs(getPlayersOnline()) do if getCreatureOutfit(v).lookType == antigaOutfit then local look = getCreatureOutfit(v) look.lookType = novaOutfit doCreatureChangeOutfit(cid, look) end end return true end -
Baned deu reputação a Sanieg em (Resolvido)[pedido] talkaction muda outfit de todos q estao usando citizenfunction onSay(cid, words, param) local exploparam = string.explode(param,",") local onlines = getCreatureOufit(getOnlinePlayers(), exploparam[1]) if param == isNumber(param) then if onlines ~= true then doPlayerSendCancel(cid, "Ninguem com essa outfit encontrado.") end doCreatureChangeOutfit(onlines, exploparam[2]) else doPlayerSendCancel(cid, "Complete com numeros no seguinte exemplo: OUTFITANTERIOR, NOVAOUTFIT") end return true end
-
Baned deu reputação a Matheus Lirou em PEDIDO FALUMIRAqui Esta Amigo Faça Bom Proveito: http://www.4shared.com/file/jUPW-Oxf/Copia_Falumir.html?Quem
-
Baned deu reputação a elton123 em (Resolvido)[PEDIDO] Paralyze ao passar no SQM...cara eu acho que esse vai funciona ai
-- config elton123 local velocidade = 0.9 local life = 0.5 local periodo = 15 -- tempo em segundos -- config elton123 local condition = createConditionObject(CONDITION_PARALYZE) setConditionParam(condition, CONDITION_PARAM_TICKS, periodo*1000) setConditionFormula(condition, -velocidade, 0, -velocidade, 0) function onStepIn(cid, item, pos, fromPos) if isPlayer (cid) then doAddCondition(cid,condition) doCreatureAddHealth(cid,-(getCreatureHealth(cid)*life)) end return true end -
Baned deu reputação a elton123 em (Resolvido)[PEDIDO] Paralyze ao passar no SQM...seria assim?
-- config elton123 local velocidade = 0.9 local life = 0.5 local periodo = 10 -- tempo em segundos -- config elton123 function onStepIn(cid, item, pos, fromPos) if isPlayer (cid) then doChangeSpeed(cid,-(getCreatureSpeed(cid)*velocidade)) doCreatureAddHealth(cid,-(getCreatureHealth(cid)*life)) addEvent(velocidadeNormal,periodo*1000,cid) end return true end function velocidadeNormal(cid) if isPlayer (cid) then doChangeSpeed(cid,getCreatureBaseSpeed(cid)) end return true end -
Baned deu reputação a zipter98 em (Resolvido)Remover monstro X positionlocal monster = { name = "Monk", pos = {x = x, y = y, z = z}, } function onTime() local c = getTopCreature(monster.pos).uid if c > 0 and isMonster(c) and getCreatureName(c) == monster.name then doRemoveCreature(c) end return true end
-
Baned deu reputação a Wend II em (Resolvido)Remover monstro X positionerro meu desculpa, tente esse
Créditos: Jamison
Em data/globalevents/cria um arquivo chamado removemonster.lua
local config = { fromPos = {x=556,y=451,z=6}, -- posição superior esquerda do mapa, da area em que esta mapeado a area. toPos = {x=566,y=456,z=6}, -- posição inferior direita do mapa, da area em que esta mapeado a area. boss = "Nomedomonstroaqui" -- Aqui você bota o nome do monstro que você quer remover } function onTimer() removeMonsterInArea(fromPos, toPos) return true end function removeMonsterInArea() -- by Daaniel Gay local positionsCheck = {} for i = config.fromPos.x, config.toPos.x do positionsCheck[#positionsCheck+1] = {x=i, y = config.fromPos.y, z = config.fromPos.z, stackpos = 0} for j = config.fromPos.y+1, config.toPos.y do positionsCheck[#positionsCheck+1] = {x=i, y = j, z = config.fromPos.z, stackpos = 0} end end for j=1, #positionsCheck do for i = 0, 255 do positionsCheck[j].stackpos = i local tile = getTileThingByPos(positionsCheck[j]) if isMonster(tile.uid) then if getCreatureName(tile.uid) == config.boss then doRemoveCreature(tile.uid) end end end end end
TAG:
<globalevent name="removemonster" time="03:00" event="script" value="removemonster.lua"/>
time="03:00" representa 3horas AM
Obs* : Ele vai remover, mas depois vai ter o respawn que você configurou no Map Editor
-
Baned deu reputação a Lyu em Battle Arena SystemBattle Arena System 8.60 com NPC
Testado em OTX Server & TFS 0.4
@Atualizado : É super importante o uso de uma distro que possua a função "doPlayerOpenChannel". surgirá o seguinte erro caso a função não seja encontrada : [string "loadBuffer"]:8: attempt to call global 'doPlayerOpenChannel' (a nil value) se a sua não tem, basta você compilar suas sources ou usar qualquer outra que possua.
Battle Arena é um sistema onde permite o ganho de notificações dentro de um canal chamado 'Battle Arena Channel' e experiências dentro de uma
arena fechada, que pode ser acessada ao falar com um NPC chamado 'Battle Arena Manager'. As notificações são baseadas em jogos FPS como por exemplo Counter Strike 1.6, Gunz - The Duel e outros, que ao matar alguém, aparece uma mensagem escrito algo como:
Você derrotou Neguin_Owna.
ao morrer :
Neguin_Owna derrotou você.
para outras pessoas :
Neguin_Owna derrotou Ladyazaleia.
As experiências são calculadas automaticamente após derrotar alguém, segue abaixo uma pequena explicação : Neguin_Owna é level 100; a rateExperience do meu config.lua é 350; se eu matar o Neguin_Owna, o sistema irá multiplicar 350 vezes(*) 100 e eu ganharei 35000 de experiência. Você ganhou 35000 ponto(s) de experiência.
Para ter acesso à arena, será necessário falar com o NPC 'Battle Arena Manager. Nada complicado, qualquer um conseguirá trocar uns papos com ele. Keywords : hi; participar; ok; cancelar; bye.
Mas e o mapa? então pessoal, infelizmente eu não tive criatividade pra criar uma arena apropriada pra encaixar no sistema, então vocês terão que utilizar as suas arenas pvp's ou criar outra pro sistema, minhas dicas são :
Agora vamos instalar o sistema..
1 - Na pasta data/Lib, crie um arquivo battle-config.lua e dentro adicione isso :
2 - Na pasta data/XML, abra o arquivo channels.xml e adicione isso antes do </channels> :
3 - Na pasta data/Npc, crie um arquivo Battle Arena Manager.xml e dentro adicione isso:
4 - E por último e mais importante, na pasta Mods, crie um arquivo battle-mod.xml e adicione isso:
As configurações são modificadas apenas no arquivo battle-config.lua, vou explicar :
FPS_EVENTNAME : Nome do evento;
FPS_FINISHTIME : Dentro do evento, jogadores não poderão atacar uns aos outros enquanto esse tempo não esgotar após o comando /fps close ser executado.
Configure algum numero a cima de 2 para uma melhor segurança;
FPS_LIMITEPLAYERS : Limite de jogadores;
FPS_SHOWGODNAMEAFTERBAN : true = Mostra o nome do GM na mensagem do banido; false = Mostra o nome 'Admininstrador';
FPS_ENABLEEXPERIENCE : true = Habilita a experiência; false = Desabilita;
FPS_BLOCKIP : true = Jogadores que tentarem usar MC pra ganhar exp fácil, não conseguirão atacar seus próprios chars; false = permite isso;
FPS_CHANNEL : ID do Battle Arena Channel. não mude essa ID, apenas se a mesma estiver em uso;
FPS_SPAWNPLAYER : Posições que servirão de respawn para os jogadores que morrerem. Se você quiser remover as posições aleatórias e deixar só uma,
edite o FPS_SPAWNPLAYER deixando apenas uma posição, assim :
FPS_SPAWNPLAYER = {
{x = 261, y = 619, z = 7}
}
mas eu prefiro com posições aleatórias, fica bem mais legal.
Fiz alguns comandos :
Player(s) :
/fps status - Mostra informações sobre a arena, quantos jogadores estão lá, o limite, e outros.
Gamemaster(s) :
/fps status
/fps open - Abre a arena;
/fps close - Fecha a arena;
/fps ban, nomedojogador - Bloquear um jogador;
/fps unban, nomedojogador - Desbloquear um jogador;
Para um jogador sair da arena, ele precisa ir até um lugar com protection Zone(Setores) e pressionar
CTRL + Q, não vai deslogar! ele vai se retirar da arena indo diretamente pro templo;
Créditos : Halls Santos (eu).
-
Baned deu reputação a Flavio S em (Resolvido){alavanca que teleporta 4x4 players}^ luanluciano93 pode ocorrer um problema com seu script nessa linha aqui :
local guild1 = getPlayerGuildId(cid) supomos que o cid, esteja na :
config.positions2[1][1])
logo toda config,position = guild 1, seria verificado com o id da guild 2.
e aqui tb :
doBroadcastMessage("Começou uma batalha entre ".. getPlayerGuildName(cid) .." e ".. getPlayerGuildName(getTopCreature(config.positions2[1][1]).uid) ..".") dependendo se o cid for da guild 2 :
vai enviar : "guild 2 x guild 2".
teria que ser :
local guild1 = getPlayerGuildId(getTopCreature(config.positions[1][1]).uid) doBroadcastMessage("Começou uma batalha entre ".. getPlayerGuildName(getTopCreature(config.positions[1][1]).uid) .." e ".. getPlayerGuildName(getTopCreature(config.positions2[1][1]).uid) ..".", MESSAGE_STATUS_WARNING) e Vinicius Xxgamexx o broadcast tem que estar fora do for se não ele vai enviar a mensagem em toda vez que rodar o teleport das posições.
doBroadcastMessage("Começou uma batalha entre ".. getPlayerGuildName(getTopCreature(config.positions[1][1]).uid) .." e ".. getPlayerGuildName(getTopCreature(config.positions2[1][1]).uid) ..".", MESSAGE_STATUS_WARNING) -- Teleportando posições 1 for i = 1, #config.positions2 do local creature = getTopCreature(config.positions2[i][1]).uid local storage2 = 10046 local guilda1 = getPlayerGuildName(getTopCreature(config.positions[i][1]).uid) local guilda2 = getPlayerGuildName(getTopCreature(config.positions2[i][1]).uid doTeleportThing(creature, config.positions2[i][2]) setPlayerStorageValue(creature, storage2, 1) doBroadcastMessage("Começou uma batalha entre ".. guilda1 .." e ".. guilda2 ..".") doPlayerSendTextMessage(creature, 27, "You started the quest.") doSendMagicEffect(getThingPos(creature), 33) end return true end -
Baned deu reputação a luanluciano93 em (Resolvido){alavanca que teleporta 4x4 players}@, verdade, vlw por avisar!
SCRIPT ARRUMADO ACIMA.
-
Baned deu reputação a Flavio S em (Resolvido){alavanca que teleporta 4x4 players}^ Tb teria que colocar o broadcast antes de começar a teleportar os players, pois o getTopCreature() retornaria nil por não ter ninguém no local.
doBroadcastMessage("Começou uma batalha entre ".. getPlayerGuildName(getTopCreature(config.positions[1][1]).uid) .." e ".. getPlayerGuildName(getTopCreature(config.positions2[1][1]).uid) ..".", MESSAGE_STATUS_WARNING) -- Teleportando posições 1 -
Baned deu reputação a luanluciano93 em (Resolvido){alavanca que teleporta 4x4 players}@, vlw, mero descuido.
-
Baned deu reputação a luanluciano93 em (Resolvido){alavanca que teleporta 4x4 players}Não testei.
local config = { positions = { {{x=535, y=1597, z=4}, {x=535, y=2000, z=4}}, {{x=535, y=1597, z=4}, {x=535, y=2000, z=4}}, {{x=535, y=1597, z=4}, {x=535, y=2000, z=4}}, {{x=535, y=1597, z=4}, {x=535, y=2000, z=4}}, }, positions2 = { {{x=535, y=1597, z=4}, {x=535, y=2000, z=4}}, {{x=535, y=1597, z=4}, {x=535, y=2000, z=4}}, {{x=535, y=1597, z=4}, {x=535, y=2000, z=4}}, {{x=535, y=1597, z=4}, {x=535, y=2000, z=4}}, }, } function onUse(cid, item, fromPosition, item2, toPosition) -- Checando posições 1 for i = 1, #config.positions do if not isPlayer(getTopCreature(config.positions[i][1]).uid) then return doPlayerSendCancel(cid, "Nao existe players em todas as posicoes.") and doSendMagicEffect(getThingPos(cid), 2) end local guild1 = getPlayerGuildId(cid) if getPlayerGuildId(getTopCreature(config.positions[i][1]).uid) ~= guild1 then return doPlayerSendCancel(cid, "Alguem player nao e da guild correta.") and doSendMagicEffect(getThingPos(cid), 2) end end -- Checando posições 2 for i = 1, #config.positions2 do if not isPlayer(getTopCreature(config.positions2[i][1]).uid) then return doPlayerSendCancel(cid, "Not enough players.") and doSendMagicEffect(getThingPos(cid), 2) end local guild2 = getPlayerGuildId(getTopCreature(config.positions2[1][1]).uid) if getPlayerGuildId(getTopCreature(config.positions2[i][1]).uid) ~= guild2 then return doPlayerSendCancel(cid, "Alguem player nao e da guild correta.") and doSendMagicEffect(getThingPos(cid), 2) end end -- Teleportando posições 1 for i = 1, #config.positions do local creature = getTopCreature(config.positions[i][1]).uid doTeleportThing(creature, config.positions[i][2]) doPlayerSendTextMessage(creature, 27, "You started the quest.") doSendMagicEffect(getThingPos(creature), 33) end -- Teleportando posições 1 for i = 1, #config.positions2 do local creature = getTopCreature(config.positions2[i][1]).uid doTeleportThing(creature, config.positions2[i][2]) doPlayerSendTextMessage(creature, 27, "You started the quest.") doSendMagicEffect(getThingPos(creature), 33) end return true end