Histórico de Curtidas
-
lano deu reputação a Natanael Beckman em [GlobalEvents] ServeSave - Shutdown/AutomáticoGalera é um script muito simples, porém pra mim é muito ÚTIL.
Abra a pasta data/globalevents/scripts crie um arquivo .lua com o nome GlobalSave.lua, em seguida adicone o code:
function prepareShutdown(minutes) if(minutes <= 0) then doSetGameState(GAMESTATE_SHUTDOWN) return false end if(minutes == 1) then doBroadcastMessage("Server is going down in " .. minutes .. " minute for global save, please log out now!") elseif(minutes <= 3) then doBroadcastMessage("Server is going down in " .. minutes .. " minutes for global save, please log out.") else doBroadcastMessage("Server is going down in " .. minutes .. " minutes for global save.") end shutdownEvent = addEvent(prepareShutdown, 60000, minutes - 1) return true end function onTime() return prepareShutdown(5) -- Quantos minutos pra executar o ServeSave. end Ajustes:
Quando quiser modificar os minutos altere: -return prepareShutdown(5) - (5) = 5 minutos, eu recomendo no mínimo 5 minutos, em outras palavras não mexa. Em globalevents.xml adicione a tag seguinte:
<globalevent name="GlobalSave" time="05:30" event="script" value="GlobalSave.lua"/> No meu ServeSave é feito as 05:30 da manhã, modifique pro horário desejado!
Em config.lua verifique essa regra:
Se tiver TRUE deixa, assim ele fecha o .exe se não tiver no seu config.lua não tem problema closeInstanceOnShutdown = true -
-
-
Esse tutorial é só isso, clique em GOSTEI, e comente no tópico, muito obrigado!
--------------------------------------------------------------------------------------------------------------------------------------------------------
AUTO RESTART
--------------------------------------------------------------------------------------------------------------------------------------------------------
Pra você que utiliza Windows esse é perfeito:
Dezon OT Admin [restarter]
Pra você que utiliza Linux:
Baixe esse arquivo, TFS.SH, bote dentro da pasta do seu OT.
Esse arquivo está configurado pra abrir outro arquivo chamado tfs caso o seu seja outro nome mude pra esse, tfs.
Sempre que for abrir seu OT execute esse comando ./tfs.sh& e assim toda vez que o OT cair ele renicia automaticamente.
-
lano deu reputação a tetheuscunha em SNOWBAL EVENT TIBIAJa sei qual e o erro. Também tive ele. Agora estou na faculdade assim que chega em casa eu mando pra voce a correção. Ate 22:30 eu posto aqui.
-
lano deu reputação a tetheuscunha em SNOWBAL EVENT TIBIATesta esse aqui. O meu estava dando o mesmo erro, fui la e configurei uma linha, mais nao me recordo qual! kkkkk, ja faz um tempinho que modifiquei. Testa esse e me fala se funcionou.
-------------------------
Tenta esse. No SQLITEStudio aperte ALT + E e coloque esse codigo la dentro e aperte F9.
Ja este comando
ALTER TABLE `players` ADD `sbw_points` int(11); E da mesma forma do de cima ALT + E / Colar nas linhas que tem la/ F9
-
lano deu reputação a Absolute em SNOWBAL EVENT TIBIAOlá amigos, membros, visitantes, papagaios, enfim...
Depois de muito me pedirem o evento SNOWBAL WAR EVENT, trago ele 100% pra vocês.
Como funciona?
Os jogadores irão se divertir em uma emocionante partida de guerra de bolas de neve. O objetivo principal do evento é derrubar o número máximo de jogadores durante uma partida - atirando bolas de neve contra seus inimigos. O jogador que mais pontos fizer até o termino do evento será o vencedor (recompensa pode ser configurada).
Sem delongas, vamos ao que interessa...
Em data/actions abra o seu actions.xml e insira a seguinte linha:
<action actionid="7900" event="script" value="snowballaction.lua" />
Em data/actions/scripts crie um arquivo com o nome de snowballaction.lua e insira o seguinte conteúdo:
function onUse(cid, item, frompos, item2, topos) if item.actionid == 7900 then if(SBW_AMMOINFI) then doPlayerSendTextMessage(cid, 27, "as bolas de neve sao infinitas, nao ha necessidade que voce compre-as.") else if (getPlayerStorageValue(cid, SBW_SCORE) > 0) and (getPlayerStorageValue(cid, SBW_AMMO) < 30) then doPlayerSetStorageValue(cid, SBW_SCORE, getPlayerStorageValue(cid, SBW_SCORE)-1) doPlayerSetStorageValue(cid, SBW_AMMO, getPlayerStorageValue(cid, SBW_AMMO)+SBW_AMMOBUY) doPlayerSendTextMessage(cid, 27, "Voce trocou " .. SBW_AMMOBUY .. "x bolas de neve por 1 ponto de placar.") doSendMagicEffect(getCreaturePosition(cid),4) else doPlayerSendTextMessage(cid, 27, "Voce nao possui pontos de jogo o suficiente ou ja esta carregando muitas bolas de neve.") end end end end
Em data/talkactions abra o seu talkactions.xml e insira a seguinte linha:
<talkaction words="!snowball" event="script" value="snowballtalk.lua"/>
Em data/talkactions/scripts crie um arquivo com o nome de snowballtalk.lua e insira o seguinte conteúdo:
function onSay(cid, words, param, channel) local k = string.explode(param, ",") if(k[1] ~= nil) then if(string.upper(k[1]) == 'INFO') then local score = {} local output = "Voce tem " .. getPlayerStorageValue(cid, SBW_SCORE) .. " pontos.\nVoce tem "..getPlayerStorageValue(cid, SBW_AMMO).."x municoes.\n------------------\nO maior matador:\n" for _, pid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(pid, SBW_INEVENT) then table.insert(score, {getCreatureName(pid), getPlayerStorageValue(pid, SBW_SCORE)}) end end local lx = table.getn(score) if(lx > 3) then lx = 3 end table.sort(score, function(a, b) return a[2] > b[2] end) for k = 1,lx do output = output .. k..". "..score[k][1] .." [".. score[k][2] .."].\n" end doPlayerPopupFYI(cid, output) end if (string.upper(k[1]) == 'ATIRAR') then if(getPlayerStorageValue(cid, SBW_INEVENT) == 1) and not getTileInfo(getThingPos(cid)).protection then if getPlayerStorageValue(cid, SBW_EXAUSTHED) <= 1 then if(getPlayerStorageValue(cid, SBW_AMMO) > 0) then if SBW_STATUS == 'on' then if(SBW_AMMOINFI == false) then doPlayerSetStorageValue(cid, SBW_AMMO, getPlayerStorageValue(cid, SBW_AMMO)-1) end doPlayerSetStorageValue(cid, SBW_EXAUSTHED, 2) lineAnimation(getPlayerLookDirection(cid),getCreaturePosition(cid),12,cid,1,0,1,0,0,0,1,0) addEvent(doPlayerSetStorageValue, SBW_SHOOTEXAUSTHED, cid, SBW_EXAUSTHED, 1) if (getPlayerStorageValue(cid, SBW_AMMO) ~= 1) then doPlayerSendTextMessage(cid, 27, "Restam "..getPlayerStorageValue(cid, SBW_AMMO).."x bolas de neve.") else doPlayerSendTextMessage(cid, 27, "Usando sua ultima bola de neve, recarregue.") end end else doPlayerSendCancel(cid, "Voce esta sem bolas de neve, recarregue no centro do campo ou mate um inimigo.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) end else doPlayerPopupFYI(cid, "Acalme-se voce deve esperar para atirar novamente.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) return false end else doPlayerPopupFYI(cid, "Voce precisa estar dentro evento ou fora da pz.") doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF) end end end return true end function lineAnimation(lookDir,playerPos,effect,cid,fvar,fpos,ffound,fposV,fcheck,fvcid,floopCounter,fvpid, name) local var = fvar local pos = fpos local found = ffound local posV = fposV local check = fcheck local vcid = fvcid local loopCounter = floopCounter local vpid = fvpid local storage = SBW_EXAUSTHED if var < 2 then vcid = cid end pos = playerPos if not isInWallArray(convert(lookDir,pos)) then--isInWallArray({x=convert(lookDir,pos).x, y=convert(lookDir,pos).y,z=convert(lookDir,pos).z}) then --isInArray(t.onShoot.misc.walls_id, getThingfromPos({x=convert(lookDir,pos).x, y=convert(lookDir,pos).y,z=convert(lookDir,pos).z, stackpos=0}).itemid) then doSendDistanceShoot(pos, convert(lookDir,pos),effect) pos = convert(lookDir,pos) var=var+1 posV = convertV(lookDir,playerPos) for _, pid in ipairs(getPlayersOnline()) do if (getCreaturePosition(pid).x == pos.x and getCreaturePosition(pid).y == pos.y and getCreaturePosition(pid).z == pos.z) then --if loopCounter > 2 then vpid = pid --end if (vpid ~= vcid) then if var > 2 then if (getCreaturePosition(pid).x == posV.x and getCreaturePosition(pid).y == posV.y and getCreaturePosition(pid).z == posV.z) then killPlayer(pid,pos,getCreatureName(vcid)) if (lookDir == 0) or (lookDir == 2) then var = 6 else var = 8 end end end killPlayer(pid,pos,vcid) if (lookDir == 0) or (lookDir == 2) then var = 6 else var = 8 end end end loopCounter = loopCounter +1 end if (lookDir == 0) or (lookDir == 2) then if var ~= 6 then addEvent(lineAnimation, SBW_BALLSPEED, lookDir,pos,effect,nil,var,pos,found,posV,check,vcid,loopCounter,vpid) else var = 1 end else if var ~= 8 then addEvent(lineAnimation, SBW_BALLSPEED, lookDir,pos,effect,nil,var,pos,found,posV,check,vcid,loopCounter,vpid) else var = 1 end end else doSendMagicEffect(convert(lookDir,pos),2) var = 1 end end local ret = {} function convert(lookDir,pos) local positions = { [0] = {x = pos.x, y = pos.y-1, z = pos.z}, [1] = {x = pos.x+1, y = pos.y, z = pos.z}, [2] = {x = pos.x, y = pos.y+1, z = pos.z}, [3] = {x = pos.x-1, y = pos.y, z = pos.z} } ret = positions[lookDir] return ret end local ret = {} function convertV(lookDir,pos) local positions = { [0] = {x = pos.x, y = pos.y+1, z = pos.z}, [1] = {x = pos.x-1, y = pos.y, z = pos.z}, [2] = {x = pos.x, y = pos.y-1, z = pos.z}, [3] = {x = pos.x+1, y = pos.y, z = pos.z} } ret = positions[lookDir] return ret end function isInWallArray(pos) for k = 0, table.getn(SBW_WALLSID) do if getTileItemById(pos, SBW_WALLSID[k]).itemid == SBW_WALLSID[k] then --this doesn't even make sense but tried other ways and it gave errors, so meh 2lazy2search return true end end return false end function killPlayer(cid, pos, killer) local t_l = SBW_AREA[1] local b_r = SBW_AREA[2] local posti = {} local isPossibleToTeleportPlayer = false while (isPossibleToTeleportPlayer == FALSE) do posti = Position(math.random(t_l.x,b_r.x), math.random(t_l.y, b_r.y), 7) if isInWallArray(posti) == FALSE then isPossibleToTeleportPlayer = TRUE end end doTeleportThing(cid, posti) doSendMagicEffect(pos,2) doSendMagicEffect(posti,6) doSendAnimatedText(pos, ""..getCreatureName(killer).." ", 55) doPlayerSendTextMessage(cid, 27, "Voce morreu para "..getCreatureName(killer)..".") doPlayerSetStorageValue(killer, SBW_SCORE, getPlayerStorageValue(killer, SBW_SCORE)+SBW_POINTSKILL) doPlayerSendTextMessage(killer, 27, "You've killed "..getCreatureName(cid)..".") if SBW_LOSTSCORE then doPlayerSetStorageValue(cid, SBW_SCORE, getPlayerStorageValue(cid, SBW_SCORE)-1) end if SBW_RESETAMMO then doPlayerSetStorageValue(cid, SBW_AMMO, SBW_MINAMMO) end end
Em data/globalevents abra o seu globalevents.xml e insira a seguinte linha:
<globalevent name="StartSBW" time="19:00" event="script" value="events/snowballglobalevent.lua"/>
Em data/globalevents/scripts crie um arquivo com o nome de snowballglobalevent.lua e insira o seguinte conteúdo:
function onTime() function isInWallArray(pos) for k = 0, table.getn(SBW_WALLSID) do if (getTileItemById(pos, SBW_WALLSID[k]).itemid == SBW_WALLSID[k]) then return true end end return false end function endsnowball() local score = {} if not SBW_USEWAIT then doRemoveItem(getTileItemById(SBW_TP, 1387).uid) end for _, pid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(pid, SBW_INEVENT) > 0 then table.insert(score, {getCreatureName(pid), getPlayerStorageValue(pid, SBW_SCORE)}) doPlayerSetStorageValue(pid, SBW_INEVENT, 0) doPlayerSetStorageValue(pid, SBW_SCORE, 0) doPlayerSetStorageValue(pid, SBW_AMMO, 0) doTeleportThing(pid, SBW_TPEND) end end table.sort(score, function(a, b) return a[2] > b[2] end) --local random_item = SBW_REWARDS[math.random(1, #SBW_REWARDS)] local hora = os.date("%X") local data = os.date("%x") if table.getn(score) > 0 then if SBW_ADDREWARD then for _, pid in ipairs(getPlayersOnline()) do if getCreatureName(pid) == score[1][1] then for op,ad in pairs(SBW_REWARDS) do doPlayerAddItem(pid, ad[1], ad[2]) end break end end end db.query("INSERT INTO `snowballwar` VALUES ('', ".. db.escapeString(score[1][1]) .. ",".. score[1][2] ..", ".. db.escapeString(data) ..", ".. db.escapeString(hora) ..");") db.query("UPDATE `players` SET `sbw_points`=`sbw_points`+".. score[1][2] .." WHERE `name` = " .. db.escapeString(score[1][1]) .. ";") doBroadcastMessage("[SNOWBALL EVENT] encerrou-se, parabens ao jogador "..score[1][1].." que venceu o SnowBall Event com "..score[1][2].." pontos.") end return true end local t_l = SBW_AREA[1] local b_r = SBW_AREA[2] function moveToEvent() for _, pid in ipairs(getPlayersOnline()) do if isInRange(getCreaturePosition(pid), SBW_WAITROOM[1], SBW_WAITROOM[2]) then local posti = {} local isPossibleToTeleportPlayer = false while (isPossibleToTeleportPlayer == FALSE) do posti = Position(math.random(t_l.x,b_r.x), math.random(t_l.y, b_r.y), 7) if (isInWallArray(posti) == FALSE) then isPossibleToTeleportPlayer = TRUE end end doTeleportThing(pid, posti) doPlayerSetStorageValue(pid, SBW_INEVENT, 1) doPlayerSetStorageValue(pid, SBW_AMMO, SBW_MINAMMO) doPlayerSetStorageValue(pid, SBW_SCORE, 0) doPlayerSendTextMessage(pid, 27, "[SNOWBALL WAR] Seja bem vindo, aqui estao os comandos que voce vai usar durante o evento\n!snowball atirar --Atirar uma bola de neve.\n!snowball info --Isso mostra seus pontos de jogos e a quantia de bolas de neve que voce tem. Tambem mostra o ranking de pontos do evento.\n Recarregue suas bolas de neve clicando em frente ao gerador no centro do campo.\nAltamente recomendado adicionar estes comandos a sua hotkeys.") end end doRemoveItem(getTileItemById(SBW_TP, 1387).uid) addEvent(endsnowball, SBW_DURATION*1000*60) doBroadcastMessage(SBW_MSGSTART) end local time = os.date("*t") local timeopen1 = math.ceil(SBW_TIMEWAIT / 4) local timeopen2 = math.ceil(SBW_TIMEWAIT / 2) if (SBW_STARTAUTO) and (isInArray(SBW_DAYS,time.wday)) then doBroadcastMessage(SBW_MSGWARNING) if SBW_USEWAIT then addEvent(doBroadcastMessage, timeopen1*1000*60, "[SNOWBALL WAR] - Resta(m) ".. timeopen2 .." minuto(s) para iniciar o evento!") if (timeopen2 ~= timeopen1) then addEvent(doBroadcastMessage, timeopen2*1000*60, "[SNOWBALL WAR] - Resta(m) ".. timeopen1 .." minuto(s) para iniciar o evento!") end addEvent(moveToEvent, SBW_TIMEWAIT*1000*60) doCreateTeleport(1387, SBW_TPGO, SBW_TP) else if SBW_TFS == "0.3" then doItemSetAttribute(doCreateItem(1387, SBW_TP), "aid", 2880) else doSetItemActionId(doCreateItem(1387, SBW_TP), 2880) end if(SBW_DURATION > 0) then addEvent(endsnowball, SBW_DURATION*1000*60) end end end return true end
Em data/movements abra o seu movements.xml e insira a seguinte linha:
<movevent type="StepIn" actionid ="2880" event="script" value="snowballmovement.lua"/>
Em data/movements/scripts crie um arquivo com o nome de snowballglobalmovement.lua e insira o seguinte conteúdo:
function onStepIn(cid, item, pos) doTeleportThing(cid, SBW_TPGO) doBroadcastMessage("[SNOWBALL WAR] O " ..getCreatureName(cid).. " player esta participando do evento snowball.", MESSAGE_STATUS_CONSOLE_ORANGE) doPlayerSetStorageValue(cid, SBW_INEVENT, 1) doPlayerSetStorageValue(cid, SBW_AMMO, SBW_MINAMMO) doPlayerSetStorageValue(cid, SBW_SCORE, 0) end
Já estamos quase terminando!
Agora em data/lib crie um arquivo com o nome de SBW.lua com o seguinte conteúdo:
-- This script is part of Snow Ball War Event Tibiaking Absolute -- -- This program is free software: you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation, either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see <http://www.gnu.org/licenses/>. -- // -- POSIÇÕES IMPORTANTES SBW_AREA = {{x = 1214, y = 1205, z = 7}, {x = 1251, y = 1242, z = 7}}-- AREA DO EVENTO | Canto superior esquerdo / inferior direito SBW_WAITROOM = {{x = 1229, y = 1220, z = 6}, {x = 1235, y = 1226, z = 6}} -- AREA DE ESPERA | Canto superior esquerdo / inferior direito SBW_TP = {x = 165, y = 45, z = 7} -- local onde teleport sera criado (entrada de jogadores) SBW_TPGO = {x = 1232, y = 1223, z = 6} -- local onde teleport vai levar (saida de jogadores) SBW_TPEND = {x = 155, y = 54, z = 7} -- local onde serao teleport ao final do evento SBW_GERADOR = {x = 1232, y = 1223, z = 7} -- local onde gerador vai ficar -- CONFIGURAÇÕES DO EVENTO SBW_DAYS = {1,2,3,4,5,6,7} -- dias de semana que vai abrir SBW_DURATION = 10 -- duração do evento em minutos SBW_POINTSKILL = 1 -- pontos de jogo por morte SBW_AMMOBUY = 20 -- quantia de munições compradas por cada ponto SBW_MINAMMO = 50 -- munição inicial dos jogadores SBW_TIMEWAIT = 3 -- tempo na sala de espera em minutos SBW_AMMOINFI = false SBW_LOSTSCORE = true SBW_RANDOMIZE = true SBW_RESETAMMO = true SBW_STARTAUTO = true SBW_USEWAIT = true --PREMIO DO EVENTO SBW_ADDREWARD = true SBW_REWARDS = { {6527,500}, {2345,1} } -- // Não mexa daqui para baixo SBW_TFS = "0.4" -- STORAGES SBW_EXAUSTHED = 2455 SBW_INEVENT = 2460 SBW_SCORE = 2465 SBW_AMMO = 2400 SBW_WALLSID = {5324,7003,7021,6712,7023,7002,6713,6714,6869,6822,6823,6824,6825,6826,6827,6828,6829,6830,6831,6832,6833,6707,6708,6709,6710,6711,2698,2697,7020,6719,6720,6721,6722,6723,6724,6725,6726,6727,6761,6762,6768,6769,4608,4609,4610,4611,4612,4613,4614,4615,4616,4617,4618,4619,4620,4621,4622,4623,4624,4625,4664,4665,4666,7008,7009,7010,7011,8239,7004,7005,7006,7007,6627,6628,6629,6630,6631,6632,6633,6634,6635,6636,6637,6638,7022} SBW_BALLSPEED = 150 SBW_SHOOTEXAUSTHED = 1000 SBW_SHOOTDIR = 0 SBW_STATUS = 'on' -- MENSAGENS SBW_MSGWARNING = "[SNOWBALL WAR] Abriu o teleport de ingresso para o evento, para participar se dirija ate o templo do servidor." SBW_MSGSTART = "[SNOWBALL WAR] O teleport foi removido e o evento foi iniciado, boa sorte a todos participantes." A frente das configuração solicitadas explica onde devem ser modificados.
E por fim, vá até o seu banco de dados (phpmyadmin) e insira a seguinte query:
CREATE TABLE IF NOT EXISTS `snowballwar` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `score` int(11) NOT NULL, `data` varchar(255) NOT NULL, `hora` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `id` (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Ainda no phpmyadmin execute:
ALTER TABLE `players` ADD `sbw_points` int(11);
Importe o arquivo SNOWBALL.otbm em seu mapa!
Imagem do mapa:
Download do mapa: https://www.sendspace.com/file/mae37z
Scan do mapa: https://www.virustotal.com/pt/file/94a507c71ef4cc241e415f2a8290441f7fa77809d804e24be18e9581a85c4740/analysis/1479161634/
É importante lembrar que peguei o script de um autor e realizei as modificações o tornando público para a comunidade exclusiva do TIBIAKING.
Espero que façam um ótimo proveito.
See you later.
-
lano recebeu reputação de Kreter em Itens iniciais não funcionamTenta esse aki
coloca em creaturescripts/scripts/firstitems.lua
local commonItems = { -- ITEMS ALL VOCS RECEIVE {itemid=2120, count=1}, -- rope {itemid=5710, count=1}, -- shovel {itemid=1988, count=1}, -- backpack } local firstItems = { { -- SORC ITEMS {itemid=2482, count=1}, -- hat {itemid=2484, count=1}, -- cape {itemid=2468, count=1}, -- legs {itemid=2643, count=1}, -- bots {itemid=2175, count=1}, -- spellbook {itemid=2412, count=1}, -- katana }, { -- DRUID ITEMS {itemid=2323, count=1}, -- hat of the mad {itemid=8871, count=1}, -- focus cape {itemid=7730, count=1}, -- blue legs {itemid=2195, count=1}, -- boots of haste {itemid=8902, count=1}, -- spellbook of mind control {itemid=2183, count=1}, -- hailstorm rod {itemid=2268, count=1}, -- sd {itemid=2273, count=1}, -- uh {itemid=7590, count=1}, -- gmp {itemid=2293, count=1}, -- mw {itemid=2269, count=1}, -- wg {itemid=2278, count=1}, -- para }, { -- PALADIN ITEMS {itemid=2482, count=1}, -- hat {itemid=2484, count=1}, -- cape {itemid=2468, count=1}, -- legs {itemid=2643, count=1}, -- bots {itemid=2175, count=1}, -- spellbook {itemid=5907, count=1}, -- slingshot }, { -- KNIGHT ITEMS {itemid=2493, count=1}, -- demon helmet {itemid=2472, count=1}, -- magic plate armor {itemid=2470, count=1}, -- golden legs {itemid=2195, count=1}, -- boots of haste {itemid=2514, count=1}, -- mastermind shield {itemid=2431, count=1}, -- Stonecutter Axe {itemid=7620, count=1}, -- mp {itemid=7591, count=1}, -- ghp {itemid=8473, count=1}, -- uhp {itemid=2313, count=1}, -- explosion {itemid=2293, count=1}, -- mw } } for _, items in ipairs(firstItems) do for _, item in ipairs(commonItems) do table.insert(items, item) end end function onLogin(cid) if getPlayerGroupId(cid) < 2 then local hasReceivedFirstItems = getPlayerStorageValue(cid, 67708) if hasReceivedFirstItems == -1 then --[[local backpack = ]]doPlayerAddItem(cid, 1988, 1) local giveItems = firstItems[getPlayerVocation(cid)] if giveItems ~= nil then for _, v in ipairs(giveItems) do --doAddContainerItem(backpack, v.itemid, v.count or 1) doPlayerAddItem(cid, v.itemid, v.count or 1) end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You have recieved your equipment") setPlayerStorageValue(cid, 67708, 1) end end end return TRUE end coloca essa tag em creaturescripts.xml <event type="login" name="FirstItems" event="script" value="firstitems.lua"/>
-
lano recebeu reputação de boymc em [AJUDA] como fazer um premium tileEm movements/scripts crie um arquivo.lua e cole isto dentro:
local npos = {x=1, y=1, z=1} --- posição para onde sera teleportado function onStepIn(cid, item, position, fromPosition, toPosition) if isPremium(cid) then doTeleportThing(cid, npos) doSendMagicEffect(npos,10) else doTeleportThing(cid, fromPosition) doPlayerSendCancel(cid, "Você não é premium.") end return true end Em movements.xml cole a tag: <movevent type="StepIn" actionid="ACTIONIDDOTILE" event="script" value="NOMEDOSEUARQUIVO.lua"/>
-
lano recebeu reputação de Sanieg em Fazendo um programa DDos Attack em DelphiEae Jovems!!
Venho aqui ensinar a vcs fazerem um programa ddos com ping em delphi.
Vamos precisar de:
,1timer,2edit,1SpinEdit,1checkbox,1memo,1IdIcmpClient, 1buttom, Em private voce coloca: function EstaVivo(IP: String): boolean; Declare abaixo de {$R *.dfm}: function TForm1.EstaVivo(IP: String): boolean; begin with IdIcmpClient1 do begin Host := IP; ReceiveTimeout := 500; Ping; if ReplyStatus.BytesReceived > 0 then result := true else result := false; end; end; Der 2 clique no IdIcmpClient e adicione o seguinte código : Memo1.Lines.Add('Derrubando :' + (edit1.Text) +' Bytes Sendo Enviando : '+ IntToStr(AReplyStatus.BytesReceived )); Clique no IdIcmpClient depois em "events" der 2 click no Onstatus e adicione o seguinte código : Memo1.Lines.Add(AStatusText); Der 2 Clique no checkbox e Adicione o código : if CheckBox1.Checked = true then begin Edit1.Enabled := false; SpinEdit1.Enabled := false; Timer1.Enabled := true; end; if CheckBox1.Checked = false then begin Edit1.Enabled := true; SpinEdit1.Enabled := true; Timer1.Enabled := false; end; De dois click no Button e coloque isso: if EstaVivo(Edit2.Text) then ShowMessage('Online') else ShowMessage('Offline'); e por ultimo deixe o enabled do timer em false é interval 100 quanto menor mais rapido, É de 2 clique no timer e adicione o código : IdICMPClient1.Port := SpinEdit1.Value; IdICMPClient1.Host := Edit1.Text; IdICMPClient1.Ping();
O meu ficou assim:
Pra quem nao conseguiu fazer é que um programa ddos vou coloca o meu para download Abaixo.
download:Attack Ddos.rar
-
lano recebeu reputação de Augusto em [Tutorial] Hide icon para bandeja de sistemaVideo aula
Codigos usados
form1.show; form1.hide; form1.close; trayicon1.visible:=true trayicon1.visible:=false
Trayicon:TrayIcon.zip
-
lano recebeu reputação de Steeven em [AJUDA] como fazer um premium tileEm movements/scripts crie um arquivo.lua e cole isto dentro:
local npos = {x=1, y=1, z=1} --- posição para onde sera teleportado function onStepIn(cid, item, position, fromPosition, toPosition) if isPremium(cid) then doTeleportThing(cid, npos) doSendMagicEffect(npos,10) else doTeleportThing(cid, fromPosition) doPlayerSendCancel(cid, "Você não é premium.") end return true end Em movements.xml cole a tag: <movevent type="StepIn" actionid="ACTIONIDDOTILE" event="script" value="NOMEDOSEUARQUIVO.lua"/>
-
lano recebeu reputação de gabrielg50 em Fazendo um programa DDos Attack em DelphiEae Jovems!!
Venho aqui ensinar a vcs fazerem um programa ddos com ping em delphi.
Vamos precisar de:
,1timer,2edit,1SpinEdit,1checkbox,1memo,1IdIcmpClient, 1buttom, Em private voce coloca: function EstaVivo(IP: String): boolean; Declare abaixo de {$R *.dfm}: function TForm1.EstaVivo(IP: String): boolean; begin with IdIcmpClient1 do begin Host := IP; ReceiveTimeout := 500; Ping; if ReplyStatus.BytesReceived > 0 then result := true else result := false; end; end; Der 2 clique no IdIcmpClient e adicione o seguinte código : Memo1.Lines.Add('Derrubando :' + (edit1.Text) +' Bytes Sendo Enviando : '+ IntToStr(AReplyStatus.BytesReceived )); Clique no IdIcmpClient depois em "events" der 2 click no Onstatus e adicione o seguinte código : Memo1.Lines.Add(AStatusText); Der 2 Clique no checkbox e Adicione o código : if CheckBox1.Checked = true then begin Edit1.Enabled := false; SpinEdit1.Enabled := false; Timer1.Enabled := true; end; if CheckBox1.Checked = false then begin Edit1.Enabled := true; SpinEdit1.Enabled := true; Timer1.Enabled := false; end; De dois click no Button e coloque isso: if EstaVivo(Edit2.Text) then ShowMessage('Online') else ShowMessage('Offline'); e por ultimo deixe o enabled do timer em false é interval 100 quanto menor mais rapido, É de 2 clique no timer e adicione o código : IdICMPClient1.Port := SpinEdit1.Value; IdICMPClient1.Host := Edit1.Text; IdICMPClient1.Ping();
O meu ficou assim:
Pra quem nao conseguiu fazer é que um programa ddos vou coloca o meu para download Abaixo.
download:Attack Ddos.rar
-
lano deu reputação a Skyligh em Pessa Sua singGoole .
http://i12.servimg.com/u/f12/17/59/31/94/sem_ta26.png
Lano
http://i12.servimg.com/u/f12/17/59/31/94/sem_ta27.png
-
lano recebeu reputação de B1911M em Fazendo um programa DDos Attack em DelphiEae Jovems!!
Venho aqui ensinar a vcs fazerem um programa ddos com ping em delphi.
Vamos precisar de:
,1timer,2edit,1SpinEdit,1checkbox,1memo,1IdIcmpClient, 1buttom, Em private voce coloca: function EstaVivo(IP: String): boolean; Declare abaixo de {$R *.dfm}: function TForm1.EstaVivo(IP: String): boolean; begin with IdIcmpClient1 do begin Host := IP; ReceiveTimeout := 500; Ping; if ReplyStatus.BytesReceived > 0 then result := true else result := false; end; end; Der 2 clique no IdIcmpClient e adicione o seguinte código : Memo1.Lines.Add('Derrubando :' + (edit1.Text) +' Bytes Sendo Enviando : '+ IntToStr(AReplyStatus.BytesReceived )); Clique no IdIcmpClient depois em "events" der 2 click no Onstatus e adicione o seguinte código : Memo1.Lines.Add(AStatusText); Der 2 Clique no checkbox e Adicione o código : if CheckBox1.Checked = true then begin Edit1.Enabled := false; SpinEdit1.Enabled := false; Timer1.Enabled := true; end; if CheckBox1.Checked = false then begin Edit1.Enabled := true; SpinEdit1.Enabled := true; Timer1.Enabled := false; end; De dois click no Button e coloque isso: if EstaVivo(Edit2.Text) then ShowMessage('Online') else ShowMessage('Offline'); e por ultimo deixe o enabled do timer em false é interval 100 quanto menor mais rapido, É de 2 clique no timer e adicione o código : IdICMPClient1.Port := SpinEdit1.Value; IdICMPClient1.Host := Edit1.Text; IdICMPClient1.Ping();
O meu ficou assim:
Pra quem nao conseguiu fazer é que um programa ddos vou coloca o meu para download Abaixo.
download:Attack Ddos.rar
-
lano deu reputação a Vodkart em Map Change 2.0é um script que muda de mapa a cada X horas(ou minutos)
na pasta mods crie um arquivo.xml e renomeie para
ChangeMap.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <mod name="ChangeMap" version="2.0" author="Vodkart" contact="none.com" enabled="yes"> <config name="map_func"><![CDATA[ info = { [0] = 1, [1] = 3, [2] = 4 } storage = 789520 ]]></config> <event type="login" name="Check Map" event="script"><![CDATA[ domodlib('map_func') function onLogin(cid) if getGlobalStorageValue(storage) == -1 then setGlobalStorageValue(storage, 0) end doTeleportThing(cid, getTownTemplePosition(info[getGlobalStorageValue(storage)])) return true end ]]></event> <globalevent name="ChangeMap" interval="3600" event="script"><![CDATA[ domodlib('map_func') function onThink(interval, lastExecution) doBroadcastMessage('The map will be changed again in 1 hour.') setGlobalStorageValue(storage, getGlobalStorageValue(storage) < #info and getGlobalStorageValue(storage)+1 or 0) for _, pid in ipairs(getPlayersOnline()) do doPlayerSetTown(pid, info[getGlobalStorageValue(storage)]) doRemoveConditions(pid, true) doCreatureAddHealth(pid, getCreatureMaxHealth(pid)) doCreatureAddMana(pid, getCreatureMaxMana(pid)) doTeleportThing(pid, getTownTemplePosition(getPlayerTown(pid))) end return true end]]></globalevent> </mod> Explicação: No info é o id das town para adicionar mais mapas é só colocar uma virgula no último e adicionar o novo town_id [3] = 5, [4] = ??
e o tempo você muda nessa parte interval="3600"
no caso está para 1 hora
-
lano deu reputação a Vodkart em [Sistema] Battlefield Event! V.1Mapa BattleField Feito Por AnneMotta :
Mapa Battlefield.rar
Scan: https://www.virustot...sis/1346548669/
Imagens do mapa
Descrição:
- O evento é automático e acontece em determinado dia e hora da semana
- Logo após é aberto um teleport então apenar um número limitado de players entra no evento
- São formados por dois times, os "Black Assassins" e os "Red Barbarians"
- Os times são balanceados automaticamente, quando o último jogador entra, esse teleport é fechado e depois de 5 minutos o evento começa, os 5 minutos são para os players ter tempo de planejar um ataque.
- O sistema tem por finalidade matar todos do time inimigo, e os players que sobreviverem recebem um prêmio.
Bônus:
- Durante o evento é mostrado na tela somente dos jogadores que estão no evento um placar de times.
- Até o último player entrar no evento, ficam mandando broadcast dizendo quanto players faltam para dar inicio ao jogo.
- Se o evento abrir e não atingir a meta de players colocada, o evento é finalizado e os players voltam para o templo.
Lembre-se:
- De colocar Pvp Tool na área
- De colocar área NoLogout
Imagens:
Instalação:
Data > Lib Data > CreatureScript > Script Data > GlobalEvents > Scripts Data > Movements > Script Configurações do evento -
lano deu reputação a alfbru em Moobot Source - (Neobot Clone)Postado originalmente por Cupquake em: 21/02/2012
Esse bot foi feito por um membro do tp e ele disponibilizou o source porém o link quebrou, e a pouco tempo consegui o source então vou compartilhar com vocês, as funções estão bem legais e foi programador em Delphi XE2.
moobot_src.rar
-
lano deu reputação a alfbru em Sistema de Usuarios - Delphi 7Eai galera, um tempo atras eu fiz um sistema de usuários e postei em meu blog, e decidi postar aqui para aqueles que querem entender como funciona um banco de dados sql, não está muito complexo, mas já dá para ter uma base para estudar.
Inicio:
Cadastro e visualização:
Pesquisa:
Espero que façam bom proveito, até a próxima!
Controle Source.rar
-
lano recebeu reputação de MatheusFiesta em (RESOLVIDO) TFSThe Forgotten Server é o executavel do ot allisom tbm e um o real server tbm e um.
-
lano recebeu reputação de alfbru em [Tutorial] Hide icon para bandeja de sistemaVideo aula
Codigos usados
form1.show; form1.hide; form1.close; trayicon1.visible:=true trayicon1.visible:=false
Trayicon:TrayIcon.zip
-
lano deu reputação a Slaake em Formação de Team RadBr 4Eae galera, bora jogar um OT ? Mas nao dakeles que abre em um dia e fecha no outro, vamos jogar um server sério, que tal irmos jogar o RadBr ? Mas ai, vamos jogar o Sv 4 pois é o mais novo.
Vamos jogar ? Quem fo joga fala ae : D
-
lano recebeu reputação de kraudy em Anel que da hpClaro eu achei que vc acharia melhor com porcentage entao troca por esse
local storage = 50780 -- Config << -- local condition1 = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition1, CONDITION_PARAM_TICKS, -1) setConditionParam(condition1, CONDITION_PARAM_STAT_MAXHITPOINTS, 200) local function StopSuperForm(cid) if (getPlayerStorageValue(cid, storage) == 1) then setPlayerStorageValue(cid, storage, 0) doRemoveCondition(cid, CONDITION_ATTRIBUTES) end return TRUE end function onEquip(cid, item, slot) setPlayerStorageValue(cid, storage, 1) doAddCondition(cid, condition1) return TRUE end function onDeEquip(cid, item, slot) return StopSuperForm(cid) end
vai dar 200 de hp esse ai da um gostei ai do lado!!
-
lano recebeu reputação de Cronnous em Ajuda Nouse RingFazendo a task dos minotaur ou matando o boss que da invasao o the honed fox.
-
lano recebeu reputação de gabrielcruzes em [AJUDA] como fazer um premium tileEm movements/scripts crie um arquivo.lua e cole isto dentro:
local npos = {x=1, y=1, z=1} --- posição para onde sera teleportado function onStepIn(cid, item, position, fromPosition, toPosition) if isPremium(cid) then doTeleportThing(cid, npos) doSendMagicEffect(npos,10) else doTeleportThing(cid, fromPosition) doPlayerSendCancel(cid, "Você não é premium.") end return true end Em movements.xml cole a tag: <movevent type="StepIn" actionid="ACTIONIDDOTILE" event="script" value="NOMEDOSEUARQUIVO.lua"/>
-
lano deu reputação a alfbru em Achando porcentagem, e trabalhando com mutiplicação e divisão no Delphi 7Boa tarde galerinha, estou aqui para mais um tutorial, vou ensinar a achar porcentagem no delphi, Mãos a obra!
Introdução:
Mas teóricamente falando, como iremos achar a porcentagem?
Digamos que você tem um valor (Exp: 250), e você quer achar o equivalente a 35% do valor, para achar no papel fariamos assim:
250 * 35 = 8750
8750 / 100 = 87,5;
Ou seja, 35% de 250 é equivalente a 87,5.
Ok já entendi, mas como vou usar isso no delphi?
Simplesmente assim:
Esses (v1, v2, v3) serão nossos códigos para realizar as operações matemáticas no delphi, integer significa que eles tem valor numérico. Vamos fazer uma conta no delphi que retorne para uma label, a porcentagem de certo valor. Para isso iremos adicionar 2 Edits, 1 Button, 4 Labels. E deixe seu form parecido com este:
Código:
No button coloque o seguinte código:
Entendendo o código:
StrToInt - Transforma o valor de String(Texto) para Integer(Numérico);
v1*v2 - Mutiplicação dos valores referente a v1 e v2;
v3 Div 100 - Divisão do valor gerado em v3 por 100.
E funcionou?
Claro que sim! Tudo funcionando, agora você já sabe trabalhar com mutiplicação e divisão, além de achar porcentagem pelo delphi 7.
Fonte:
http://balfprogramador.blogspot.com
-
lano recebeu reputação de izaias.araujo em Usando Spellbook como arma?Va na pasta items em item.xml abra no seu editor procure por Spellbook e troque por isso
</item> <item id="2175" article="a" name="spellbook"> <attribute key="weight" value="2300" /> <attribute key="weaponType" value="wand" /> <attribute key="shootType" value="death" /> <attribute key="range" value="3" /> volte va na pasta weapons abra weapon.xml com seu editor e adicione isso </wand> <wand id="2175" level="19" mana="5" min="27" max="33" type="death" event="function" value="default"> <vocation id="2"/>
^ vc edita como quer ai
-
lano recebeu reputação de gsthefano em PF PRECISO DE AJUDA !Vc vai precisar aprender a mexer com remere's map editor para editar o map do seu ot e colocar o bau onde vc quer procure tutoriais.
ja para vc fazer o player ganha os items vc tem que usa um script que faz ele ganha items au clicar no bau mais primeiro aprenda a ser maping.