Histórico de Curtidas
-
Baiakzik recebeu reputação de SliceFalso em [Pedido] Colorir essa imagemse puder ser amanha eu deixo ela perfect, vo te que sai agora e talvez nem entro mais hoje
-
Baiakzik recebeu reputação de SliceFalso em [Pedido] Colorir essa imagemDava sim eu fiz ela bem rapido mesmo kkk por causa de alguns problemas aqui mais ta bom?? ou quer q melhora algo?
-
Baiakzik recebeu reputação de SliceFalso em [Pedido] Colorir essa imagemPronto fiz uma aqui veja se fico ao seu agrado...
Print:
-
Baiakzik deu reputação a Skyligh em Logica da programação luaOla galera do tk
muitos como eu tem um problema na logica da programação lua como eu mais andei lendo uns texto da programação e estou entendendo melhor então vou explica-los +- o resumo dela
O que é Lua?
Quais as origens de Lua?
Como contribuir para a comunidade Lua?
Por que escolher Lua?
Lua é rápida
Lua é portátil
Lua é embutível
Lua é poderosa (e simples)
Lua é pequena
Incluir Lua numa aplicação não aumenta quase nada o seu tamanho. O pacote de Lua 5.2.1, contendo o código fonte e a documentação, ocupa 245K comprimido e 960K descompactado. O fonte contém cerca de 20000 linhas de C. No Linux, o interpretador Lua contendo todas as bibliotecas padrões de Lua ocupa 182K e a biblioteca Lua ocupa 243K.
Lua é livre
Lua tem importância global
Créditos
LuaOrg (Pelo Texto)
Skyligh (Pela Postagem)
-
Baiakzik deu reputação a Skyligh em [PEDIDO] - Modificação de scripts1 - script
local effect = 30 -- Efeito que vai usar local storage = 65534 -- Storage que o player precisa ter local tempo = 30 -- Tempo em segundos function onLogin(cid) if getPlayerStorageValue(cid, storage) == 1 then SendEffect(cid) end return TRUE end function SendEffect(cid) doCreatureSay(cid, "VIP" , 19) db.executeQuery("UPDATE `players` SET `name` = '(VIP) "..getCreatureName(cid).."' WHERE `id` = "..getPlayerGUID(cid)..";") addEvent(SendEffect, tempo*1000, cid) return TRUE end 2 - script function onUse(cid, item, itemEx, toPosition, fromPosition) if getPlayerStorageValue(cid, 1500) ~= 1 then setPlayerStorageValue(cid, 1500, 1) doPlayerAddOutfit(cid, 294, 3) doPlayerAddOutfit(cid, 294, 3) doPlayerSendTextMessage(cid, 22, "Você Ganhou Um Novo Outfit.") else doPlayerSendCancel(cid, "O Baú Está Vazio.") return true end return true end 3 - script o mais proximo que eu consegui foi um do oneshot que fica por um certo tempo local i = { ["12:00"] = {nome = "Vip Coin Meio Dia", pos = {x=10159, y=10059, z=7}, monster = {"1 vip coin", "50 Fire Devil", "4 lord vampire"}}, ["00:00"] = {nome = "vip coin da meia noite", pos = {x=10159, y=1059, z=7}, monster = {"1 vip coin"}}, ["06:00"] = {nome = "Vip Coin da manha", pos = {x=10159, y=10059, z=7}, monster = {"1 vip coin", "50 Fire Devil", "4 lord vampire"}}, } function onThink(interval, lastExecution) hours = tostring(os.date("%X")):sub(1, 5) tb = i[hours] if tb then doBroadcastMessage(hours .. " - " .. tb.nome .. " Iníciou.") doBroadcastMessage(hours .. " - " .. tb.nome .. " está rolando venham templo!") for _,x in pairs(tb.monster) do for s = 1, tonumber(x:match("%d+")) do doSummonCreature(x:match("%s(.+)"), tb.pos) end end doBroadcastMessage("No-PVP ativado para o evento.") setWorldType(1) addEvent(setWorldType, 2 * 60 * 1000, 2) end return true end 4 - script function onStepIn(cid, item, position, fromPosition) local promos = { [1] = "[Bem Vindo ao Server, qualquer dúvida, problema, sugestões contate a STAFF, e podera receber premios.]", } for i = 1, #promos do setPlayerStorageValue(cid,1237, 1) -- nao mexa doPlayerPopupFYI(cid, promos[i]) return TRUE end if getPlayerStorageValue(cid,1237) >= 1 then doPlayerSendTextMessage(cid, 22, "Desculpe voce ja passo por aki") end return true end
-
Baiakzik deu reputação a Skyligh em [ACTIONS] Tm System -Olá pessoal, venho hoje aqui para postar um sistema de pokemon muito procurado, o famoso, Tm System. Siga o tutorial a risca ou seu trabalho será invão.
Quote
Seu Funcionameto: Basícamente funciona assim; ele adiciona um "Attack" novo a um pokemon ou substitui um existente, dependendo da vontado do player.
Versões testadas: Qualquer derivado do PDA
http://www.havencrest.co.uk/images/page-divider 2.jpg
Vamos ao que interessa, vá em actions.xml e cole a seguinte tag:
<action itemid="id do item que será usado" event="script" value="tmSystem.lua"/> Atenção o item que será usado no system, não deve ter o attributo "Usable" ou você terá erros. Agora crie um arquivo em {data/actions/scripts} chamado tmSystem.lua e cole o seguinte script dentro:
function onUse(cid, item, frompos, item2, topos) local tm = tmabilities local pokemon = getCreatureSummons(cid)[1] local slotball = getPlayerSlotItem(cid, 8).uid local tmname = getItemNameById(item2.itemid) local i = item2.itemid if #getCreatureSummons(cid) == 0 then return doPlayerSendCancel(cid, "Need pokemon to learn a "..tmname..".") end if getItemAttribute(slotball, "TM") == tmname then return doPlayerSendCancel(cid, "Your pokemon was learned this TM.") end if isInArray(tm[""..tmname..""], getPokemonName(pokemon)) then doPlayerSetVocation(cid, 49) openChannelDialog(cid) else doPlayerSendCancel(cid, "This TM not compatible in your pokemon.") end return true end http://www.havencrest.co.uk/images/page-divider 2.jpg Agora vamos em {creaturescripts.xml} e colaremos a seguinte tag:
<event type="joinchannel" name="TmChoose" event="script" value="tmsys.lua"/> Agora crie o arquivo tmsys.lua em {creaturescripts/scripts} e cole isso dentro:
[CODE] function onJoinChannel(cid, channelId, users, isTv) if getPlayerVocation(cid) == 49 then else return true end local summon = getCreatureSummons(cid)[1] local moves = movestable[getCreatureName(summon)] local n = 1 for a = 1, 12 do local b = getNewMoveTable(moves, a) if b then n = n + 1 end end for b = 13, 23 do if channelId == b then local tm = tmabilities local pokemon = getCreatureSummons(cid)[1] local slotball = getPlayerSlotItem(cid, 8).uid local slotm = getPlayerSlotItem(cid, 9) local tmname = getItemNameById(slotm.itemid) if n >= channelId - 11 then doPlayerSendTextMessage(cid, 27, "Congralutions! Your "..getPokemonName(pokemon).." learn a new TM ("..tmname..").") doItemSetAttribute(slotball, "TM", tmname) doItemSetAttribute(slotball, "TMN", channelId - 11) doSendMagicEffect(getThingPosition(pokemon), 28) doSendMagicEffect(getThingPosition(pokemon), 29) doRemoveItem(slotm.uid) if useKpdoDlls then doUpdateMoves(cid) end else doPlayerSendCancel(cid, "Put tm on at last empty slot.") end return false end end return true end http://www.havencrest.co.uk/images/page-divider 2.jpgNesta parte você precisa de muita atenção, você terá que criar 10 channels como no modelo abaixo:
<channel id="13" name="[Put on M1]"> <vocation id="49"/> </channel> <channel id="14" name="[Put on M2]"> <vocation id="49"/> </channel> Em channel id você seguira a ordem 13 a 23, em vocations id pode deixar do jeito que esta. Agora crie uma vocation com o id 49 ou cole a seguinte tag no vocations.xml:
<vocation id="49" name="TM" description="pokemon trainer" needpremium="0" gaincap="0" gainhp="55" gainmana="0" gainhpticks="0" gainhpamount="0" gainmanaticks="0" gainmanaamount="0" manamultiplier="1.1" attackspeed="-1" soulmax="251" gainsoulticks="-1" fromvoc="1" lessloss="0"> <formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/> <skill fist="2" club="2" sword="2" axe="2" distance="2" shielding="2" fishing="2" experience="1.1"/> </vocation> Imagem Postada http://www.havencrest.co.uk/images/page-divider 2.jpgAgora vamos em {data/lib} e crie um arquivo chamado tmSystem.lua e cole as seguintes linhas nele:
tmabilities = { ["Solar Beam"] = {"Blastoise", "Venusaur", "Charizard"}, ["Fire Blast"] = {"Blastoise", "Venusaur", "Charizard"}, } Nesta parte você edita, para cada magia[""] = nome dos pokemons que poderam ter essa magia por tm. Tipo do jeito que esta ai, se você for tentar colocar um fire blast em um bulba não vai pegar.. Para adicionar mais magias, basta copiar a linha e colocar o nome da magia nova e seus respectivos pokemons. http://www.havencrest.co.uk/images/page-divider 2.jpg Preste atenção, para cada magia feita, terá que haver um item com o nome da magia. E o id deste item deve ser colocado na tag da actions. ou seja(exemplo): abra o item.xml pegue o item que deseje usar e coloque o nome "Solar Beam"(do mesmo jeito da lib), pegue o id dele e cole na tag da actions. Espero que tenham intendido está parte. http://www.havencrest.co.uk/images/page-divider 2.jpg A ultima parte da instalção, vamos em {data/talkactions/scripts} e abra o arquivo move1.lua e substitua a parte de "if it = 1" até o ultimo "end" antes da parte "if not move then":
local msgs = {"use ", ""} function doAlertReady(cid, id, movename, n, cd) if not isCreature(cid) then return true end local myball = getPlayerSlotItem(cid, 8) if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(myball.uid).." - "..movename.." (m"..n..") is ready!") return true end local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid) if not p or #p <= 0 then return true end for a = 1, #p do if getItemAttribute(p[a], cd) == "cd:"..id.."" then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (m"..n..") is ready!") return true end end end function onSay(cid, words, param, channel) if param ~= "" then return true end if string.len(words) > 3 then return true end if #getCreatureSummons(cid) == 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need a pokemon to use moves.") return 0 end --alterado v1.5 local mypoke = getCreatureSummons(cid)[1] if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end if getCreatureName(mypoke) == "Evolution" then return true end if getCreatureName(mypoke) == "Ditto" or getCreatureName(mypoke) == "Shiny Ditto" then name = getPlayerStorageValue(mypoke, 1010) --edited else name = getCreatureName(mypoke) end --local name = getCreatureName(mypoke) == "Ditto" and getPlayerStorageValue(mypoke, 1010) or getCreatureName(mypoke) local it = string.sub(words, 2, 3) local move = movestable[name].move1 local cdzin = "move"..it.."" local slotball = getPlayerSlotItem(cid, 8).uid local tmname = getItemAttribute(slotball, "TM") if it == "2" then if getItemAttribute(slotball, "TMN") == 2 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move2 end elseif it == "3" then if getItemAttribute(slotball, "TMN") == 3 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move3 end elseif it == "4" then if getItemAttribute(slotball, "TMN") == 4 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move4 end elseif it == "5" then if getItemAttribute(slotball, "TMN") == 5 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move5 end elseif it == "6" then if getItemAttribute(slotball, "TMN") == 6 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move6 end elseif it == "7" then if getItemAttribute(slotball, "TMN") == 7 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move7 end elseif it == "8" then if getItemAttribute(slotball, "TMN") == 8 then move = {name = ""..tmname.."", level = 0, cd =15, dist = 0, target = 0} else move = movestable[name].move8 end elseif it == "9" then if getItemAttribute(slotball, "TMN") == 9 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move9 end elseif it == "10" then if getItemAttribute(slotball, "TMN") == 10 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move10 end elseif it == "11" then if getItemAttribute(slotball, "TMN") == 11 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move11 end elseif it == "12" then if getItemAttribute(slotball, "TMN") == 12 then move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0} else move = movestable[name].move12 end end if not move then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.") return true end if getPlayerLevel(cid) < move.level then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need be atleast level "..move.level.." to use this move.") return true end if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (move.cd + 2) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have to wait "..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).." seconds to use "..move.name.." again.") return true end if getTileInfo(getThingPos(mypoke)).protection then doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.") return true end if getPlayerStorageValue(mypoke, 3894) >= 1 then return doPlayerSendCancel(cid, "You can't attack because you is with fear") --alterado v1.3 end --alterado v1.6 if (move.name == "Team Slice" or move.name == "Team Claw") and #getCreatureSummons(cid) < 2 then doPlayerSendCancel(cid, "Your pokemon need be in a team for use this move!") return true end --alterado v1.6 if isCreature(getCreatureTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getCreatureTarget(cid))) and math.random(1, 100) <= 10 then local target = getCreatureTarget(cid) if isCreature(getMasterTarget(target)) then --alterado v1.6 doSendMagicEffect(getThingPos(target), 211) doSendAnimatedText(getThingPos(target), "TOO BAD", 215) doTeleportThing(target, getClosestFreeTile(target, getThingPos(mypoke)), false) doSendMagicEffect(getThingPos(target), 211) doFaceCreature(target, getThingPos(mypoke)) return true --alterado v1.6 end end if move.target == 1 then if not isCreature(getCreatureTarget(cid)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You don\'t have any targets.") return 0 end if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then return 0 end if getCreatureHealth(getCreatureTarget(cid)) <= 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your have already defeated your target.") return 0 end if not isCreature(getCreatureSummons(cid)[1]) then return true end if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > move.dist then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Get closer to the target to use this move.") return 0 end if not isSightClear(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid)), false) then return 0 end end local newid = 0 if isSleeping(mypoke) or isSilence(mypoke) then --alterado v1.5 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't do that right now.") return 0 else newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd) end doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_SAY) local summons = getCreatureSummons(cid) --alterado v1.6 addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin) for i = 2, #summons do if isCreature(summons[i]) and getPlayerStorageValue(cid, 637501) >= 1 then docastspell(summons[i], move.name) --alterado v1.6 end end docastspell(mypoke, move.name) doCreatureAddCondition(cid, playerexhaust) if useKpdoDlls then doUpdateCooldowns(cid) end return 0 end Até que enfim.. Se fizeram tudo certo o sistema vai funcionar se não.... Caso não itendam alguma parte da explicação podem me perguntar por aqui...
Creditos
Smix
-
Baiakzik deu reputação a Skyligh em Evil SpritEvil Spirit
Olá, venho trazer esta spell Evil Spirit, que fiz baseada na magia do MuOnline.
-- SPELL EVIL SPIRIT BY: XOTSERVX -- local min, max = 100, 200 -- dano function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function getPosDirs(p, dir) return dir == 1 and {x=p.x-1, y=p.y, z=p.z} or dir == 2 and {x=p.x-1, y=p.y+1, z=p.z} or dir == 3 and {x=p.x, y=p.y+1, z=p.z} or dir == 4 and {x=p.x+1, y=p.y+1, z=p.z} or dir == 5 and {x=p.x+1, y=p.y, z=p.z} or dir == 6 and {x=p.x+1, y=p.y-1, z=p.z} or dir == 7 and {x=p.x, y=p.y-1, z=p.z} or dir == 8 and {x=p.x-1, y=p.y-1, z=p.z} end function posIgual(pos1, pos2) return pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z and true or false end effect = 62 distance = 31 damage = COMBAT_DEATHDAMAGE evilspirit = { walk = function (cid, min, max, pos, rounds, ultimapos) if rounds == 0 then return true end if not isCreature(cid) then return true end posdisp = {} for _, dir in pairs({1, 5, 7, 3}) do if isWalkable(getPosDirs(pos, dir)) and not posIgual(getPosDirs(pos, dir), getThingPos(cid)) and not posIgual(getPosDirs(pos, dir), ultimapos) then table.insert(posdisp, getPosDirs(pos, dir)) end end if #posdisp < 1 then return true end posesc = posdisp[math.random(1, #posdisp)] ultimapos = pos doSendDistanceShoot(pos, posesc, distance) doAreaCombatHealth(cid, damage, posesc, 0, -min, -max, effect) addEvent(evilspirit.walk, 140, cid, -min, -max, posesc, rounds - 1, ultimapos) end } function onUse(cid,item,item2,frompos,pos,topos) evilspirit.walk(cid, 10, 20, getThingPos(cid), 40, {x=1, y=1, z=1}) for i = 1, 13 do addEvent(evilspirit.walk, i * math.random(300, 500), cid, min, max, getThingPos(cid), 40, {x=1, y=1, z=1}) end return true end
créditos
Xotserv
As configurações está no script, vcs montam a tag agora. Ai vai um video paraver como tá:
-
Baiakzik deu reputação a Skyligh em Sistema De AdvertênciaOlá pessoal, venho lhes trazer um sistema, que por minha parte achei legal, feito por mim ele se chama Advertence System.
Funciona basicamente em cima de advertências; que o player poderá receber caso uma ocasião aconteça. Só existem duas ocasiões até o momento, porque fiquei sem ideias de mais. Vamos ver(ler) um exemplo:
Quote
Um player coloca PremiumAccount em um ot(o seu ot), após o login dele ele recebera um item que terá uma imagem de uma Exclamação.
Quando ele clicar nesse item(com o botão direito) será enviada uma mensagem para ele com a Advertência "Parabéns, você agora é premium account.".
Há mais um ocasião em que o player pode e recebera uma advertência; quando ele for FreeAccount.
Chega de Delongas e vamos ao que interessa.
Crie um arquivo no diretório data/actions/scripts chamado(nomeado) advertenciaSystemAction.lua abra-o e cole o seguinte código dentro:
function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid, advertenceStorage) == 1 then doPlayerPopupFYI(cid, advertencia_Premium) doRemoveItem(item.uid, 1) elseif getPlayerStorageValue(cid, advertenceStorage) == 2 then doPlayerPopupFYI(cid, msgNotIsPremium) doRemoveItem(item.uid, 1) end end Agora abra o arquivo actions.XML encontrado no diretório data/actions e cole a tag a seguir: <action itemid="" script="advertenciaSystemAction.lua"/> Agora vamos em data/creaturescript/script e em seguida crie um arquivo chamado(nomeado) advertenciaSystemCreatureScript.lua e cole o seguinte código dentro: function onLogin(cid) doPlayerSendIconAdvertencia(cid, premium) doPlayerSendIconAdvertencia(cid, notpremium) return true end Agora vamos abrir o arquivo creaturescript.XML e colaremos a tag abaixo: <event type="login" name="advertenciaSystem" event="script" value="advertenciaSystemCreatureScript.lua"/> Agora vamos a parte final dos scripts, vá até a pasta data/lib e crie um arquivo chamado(nomeado) advertenciaSystemLib.lua e cole o seguinte código dentro: ----------- Mensagens de Advertencias ----------- advertencia_Premium = "Congrulations, you now is a player Premium." msgNotIsPremium = ""..getCreatureName(cid)..", you dont have a premium. You need buy! /n Go to WebSite this ot for more informations." ----------- Mensagens de Advertencias ----------- ----------- Configuração Gerais ----------- iconAdvertence = advertenceStorage = 8274 ----------- Configuração Gerais ----------- --[[ Tabela dos Tipos de Advertencias contidos nesta Versão 1.0 types = { ["premium"] ["notpremium"] } ]]-- function doPlayerSendIconAdvertencia(cid, type) if type == "premium" and getPlayerPremiumDays(cid) > 0 then doPlayerAddItem(cid, iconAdvertence, 1) setPlayerStorageValue(cid, advertenceStorage, 1) elseif type == "notpremium" and getPlayerPremiumDays(cid) < 1 then doPlayerAddItem(cid, iconAdvertence, 1) setPlayerStorageValue(cid, advertenceStorage, 2) end end end
Agora vamos colocar a imagem do Ícone de Advertência em seu cliente.
Programas necessários:
Quote
DatEditor 8.54-8.60
ItemOtEditor 8.54-8.60
Imagem do Icone.png
Siga o tutorial abaixo a risca caso contrário será inútil sua tentativa.
Abra o DatEditor com o seu cliente como na imagem abaixo:
Depois de feito vá ate o botão no “FILE->New->Item” como na imagem abaixo:
Anote o itemtype do novo item:
Agora vá ao botão “Import->Sprites” e procure a imagem do Ícone que você salvou.
Agora aperte a tecla “INSERT” do seu teclado e a sua imagem irá aparecer deste lado <<:
Agora aperte “CTRL+S” para salvar e pronto a 1ª parte de adicionar o item ao seu ot esta completa. Vamos agora introduzir o item no item.XML, abra o ItemOtEditor com o item.OTB do seu ot. Após feito isso vá a “Other” e procure qualquer um dos últimos itens da mesma lista e selecione-o.
Em “sid” você colocara o “itemtype” do DatEditor que lhe mandei gravar. Agora marque a opção “Pickupable” agora salve e pronto.
Abra seu item.XML e cole a seguinte linha:
<item id="idDoItemDaListaOther" article="a" name="Advertence Icon"></item>
idDoItemDaListaOther = Nesta parte você coloca o id do item da lista other que você selecionou. Pegue este mesmo id e vá na lib colocalo lá.
Uffffa Terminou...
Espero que gostem, façam criticas e reportem bugs. Mais por favor reportem bugs e não erro de instalação. Quem quiser postar mais advertências podem me dizer que eu faço...
Créditos:
Formatação: SmiX
Scripts: SmiX
Tutorial: SmiX
-
Baiakzik deu reputação a Skyligh em [Resolvido]Script de Aol Infinito, problema com Red Skull@Fortation acho que não ira funcionar assim se não ira dropar para todos os players também
editei o script.
function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if isPlayer(cid) == true then if (getPlayerSlotItem(cid, 2).itemid == 10219) then doCreatureSetDropLoot(cid, false) doSendMagicEffect(getCreaturePosition(cid), CONST_ME_HOLYAREA) return TRUE end if getPlayerSkullType(cid) < 5 then doCreatureSetDropLoot(cid, true) return true end end end
-
Baiakzik deu reputação a Skyligh em Entendo .luaOlá galera do tibiaking, hoje estou trazendo um tutorial para vocês que querem entender a linguagem.lua
Entendendo A Linguagem.lua
Então vamos aprender a linguagem .
Abaixo irei amostrar todos os significado do ((if , end , else , elseif , then , and)) traduzido para o português
if - Se then - Então end - Fim else - senão elseif - senãose and - e Functions Iniciais De Um Script Agora irei ensina-los qual e as functions certas para iniciar um script function onUse(cid, item, frompos, item2, topos) -- Action function onLogin(cid) -- so se for usa alguma tag no login.lua utilize essa function ela serve para creaturescripts. function onAdvance(cid, skill, oldLevel, newLevel) -- creaturescripts function onSay(cid, words, param) -- talkactions function onStepIn(cid, item, pos) -- movements
Funções.lua : http://tibiaking.com...26-funcoes-lua/
Estudando Sobre If
nossa primeira estrutura de controle e o if, como em todas as linguagens de programação, ela e uma estrutura que introduz um desvio condicional
ou seja, um desvio de execução natural do programa
Em outras palavras, se a condição dada pela expressão for satisfatória, será executado um bloco de comandos, caso a condição não seja satisfatória, o bloco de comando será ignorado.
Alem do if temos seu complemento que e chamado de ELSE.
Essa expressão complementa o if, fazendo com que seja executado caso a expressão seja a negação da expressão do if.
No caso, caso a verificação seja falsa (quando lua não e 1) ele pulará o que tem depois do then mas irá parar no else e executara o que tem depois do else.
Diferente do IF, o ELSE não pode ser colocado separado de um IF, ou seja,
para usar um ELSE é necessário ter um IF anteriormente, podendo ser junto como um ELSEIF fazendo quem que outra expressão seja executada em caso de um retorno contrário à expressão.
os ELSEIF fornecem um métodos mais conveniente para verificar muitas alternativas em uma instrução.
Formalmente equivale aos comandos IF-THEN-ELSE-IF-THEN aninhados, mas somente necessita de um END, que serve para fechar o nosso "IF"
Créditos
Skyligh 100 % (Criação e postagem)
-
Baiakzik deu reputação a Skyligh em Runa Heal Por Lvliae galera hoje trago um script que a runa reala por level e da seguinte maneira
o player e level 100 ele so podera heala de 200 a 300 e assim vai
então vamos la
Va em data / script / actions / e crie um arquivo.lua e renomeie para runalvl
e add
function onUse(cid, item, fromPosition, itemEx, toPosition) local min100 = 200 -- quanto o lvl 100 vai curar no minimo local max100 = 400 -- quanto o lvl 100 vai curar no maximo local min300 = 500 -- quanto o lvl 300 vai curar no minimo local max300 = 700 -- quanto o lvl 300 vai curar no maximo local min400 = 900 -- quanto o lvl 400 vai curar no minimo local max400 = 1100 -- quanto o lvl 400 vai curar no maximo local lvl1,lvl2,lvl3 = 100,300,400 -- modificaçao do level ta de 100 , 300 , 400 dps so mudar local storage = 11548 local exhau = 3 -- quantos segundos pra usar denovo a potion if getPlayerLevel(cid) <= lvl1 and doPlayerAddMana(itemEx.uid, math.random(min100, max100)) then return true elseif getPlayerLevel(cid) <= lvl2 and doPlayerAddMana(itemEx.uid, math.random(min100, max100)) then return true elseif getPlayerLevel(cid) <= lvl3 and doPlayerAddMana(itemEx.uid, math.random(min100, max100)) then return true elseif (getPlayerStorageValue(cid, storage) <= os.time()) then setPlayerStorageValue(cid,config.s,os.time()+exhau) doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE) doCreatureSay(itemEx.uid, "Curado..", TALKTYPE_ORANGE_1) return true end end dps em actions.xml <action itemid="ID DA RUNA" script="runalvl.lua"/>
créditos
Skyligh 90 % (Pela Criação e postagem)
lugk123 10 % (Pelo pedido do script)
-
Baiakzik deu reputação a Skyligh em Bonus Lvl PlayerIae galera eu to com um script de bonus no lvl do player Ex : O Player E Lvl 100 ele fala !bonus ele recebera 1kk 100 lvl's e 1 item ! mais so podera usar uma vez então vamos la
em data / talkactions / scripts / renome algum arquivo para bonuslvl.lua
e adicione
function onSay(cid, words) local storage = 5999 -- storage local level = 200 -- quantos levels ele vai receber local level1 = 300 -- que level precisa ser pra usar o comando local money = 100000 -- quanto de grana ele vai receber local item = 8880 -- id do item if getPlayerStorageValue(cid, storage) >= 1 then doPlayerSendTextMessage(cid, 22, "Desculpe voce ja uso o comando") return true elseif getPlayerLevel(cid,level) then doPlayerSendTextMessage(cid, 22, "Desculpe voce nao tem level suficiente") return true end doPlayerAddLevel(cid, level) doPlayerAddItem (cid, item, 1) doPlayerAddMoney(cid, money) setPlayerStorageValue(cid, storage, 1) doPlayerSendTextMessage(cid, 22, "Voce recebeu 5000 lvl's e um item") return true end e em talkactions.xml <talkaction words="!bonus" script="bonuslvl.lua"/>
créditos
Skyligh 90 % ((Postagem e script))
renanvmp 10 % ((Pela Ideia do pedido do script))
-
Baiakzik deu reputação a Skyligh em Adidionando staminaIae galera hoje eu venho trazer um script que as vezes e muito necessário em ot's
Como , Funciona Quase Todos Sabem O Que E A Stamina Mais Para Os Que Não Sabe Irei Explicar : Stamina E Uma Forma De Definir A Experiência Do Personagem Ou Player Que Faz Com Que Eles Upem Mais Rápido Ou Mais Devagar Quanto Mais Cheia Estiver A Stamina Significa Que E Rápido E Se Tiver Baixa E Devagar
Então Vamos La
Va Em Data / Talkaction / Scripts / Renome Algum Arquivo Para Stamina E Adicione
function onSay(cid, words, param) local config = { stamina = 10, -- Quantos Minutos O Player Vai Ter De Stamina price = 10000, -- Quanto Vai Ser A Stamina s = 11548, -- Nao Mexa exhau = 600 -- Quantos Segundos Para Usar O Comando Denovo } if getPlayerStorageValue(cid, config.s) <= os.time() then doPlayerSendTextMessage(cid,22,"Desculpe Espere 90 Minutos Para Usar O Comando Novamente") return true elseif not doPlayerRemoveMoney(cid, config.price) then doPlayerSendTextMessage(cid,22,"Você Não Tem Dinheiro Suficiente") return true end doPlayerAddStamina(cid, config.stamina) setPlayerStorageValue(cid, config.s,os.time()+config.exhau) doPlayerSendTextMessage(cid,22,"Você Comprou Stamina Por 10 Minutos") return true end Em Talkactions.xml <talkaction words="!stamina" script="stamina.lua"/>
Créditos
Skyligh 100 % (Postagem E Criação)
-
Baiakzik deu reputação a Skyforever em [Talkaction] !buypremium day'sVodkart obrigado pela funçao rep+
-
Baiakzik deu reputação a ricardo3 em [Talkaction] Create TeleportINTERESSANTE
-
Baiakzik deu reputação a Skyforever em [Talkaction] Create TeleportTipo: TalkAction.
Testado: Sim, 8.6 TFS 0.3.6.
@Oque Faz?.
Muitos gods/adms tem problemas ao criar teleport exêmplo pelo /i você não pode esconder ele bem então resolvi criar essa talkaction para ajudar os donos de otserv.
@Instalando.
Vá em /data/talkactions/talkactions.xml e adicione a seguinte tag:
<talkaction log="yes" access="4" words="!teleport" event="script" value="createTp.lua"/> agora vá em /data/talkactions/scripts copie um arquivo da extensão .lua e renomeie para createTp.lua e adicione o seguinte conteúdo nele function onSay(cid, words, param, channel) local T = string.explode(param, ",") local toPos = {x = T[1], y = T[2], z = T[3]} if not param or not tonumber(T[1]) or not tonumber(T[2]) or not tonumber(T[3]) then doPlayerSendTextMessage(cid, 27, "Error, talkaction incorrect only numbers accepted, for example: !comando positionX, positionY, positionZ (!comando 1000, 1000, 7).") return true end doCreateTeleport(1387, toPos, getPosByDir(ultimapos, getCreatureLookDirection(cid), 1)) doSendMagicEffect(getPosByDir(ultimapos, getCreatureLookDirection(cid), 1), math.random(28, 30)) doSendAnimatedText(getPosByDir(ultimapos, getCreatureLookDirection(cid), 1), "TELEPORT", math.random(1, 255)) doPlayerSendTextMessage(cid, 28, "You has been created teleport for the pos ( X: " .. T[1] .. " | Y: " .. T[2] .. " | Z: " .. T[3] .. ".") return true end
@TÓPICO ATUALIZADO 7 DE DEZEMBRO DE 2012, 14:23, POIS HAVIA BUGS NELE, SCRIPT CORRIGIDO E FUNCIONANDO.
-
Baiakzik deu reputação a Skyforever em [Talkaction] !buypremium day'sEae galera do TK vim aqui trazer 2 scripts meu de !buypremium
vamos ao primeiro script
primeiramente va em talkactions.xml e adcione essa tag
<talkaction words="!buypremium" event="script" value="buypremium.lua"/> depois vá em /data/talkactions/scripts cria um arquivo buypremium e adcione isso dentro Como funciona você fala !buypremium 5 compra 5 dias de premium por 100 gps cada um preço editavel no script Vamos ao segundo script de buypremium em talkactions.xml adcione essa tag: <talkaction words="!buypremium" event="script" value="buypremium.lua"/> em /data/talkactions/scripts cria um arquivo e renomeie para buypremium e adcione isso dentro Explicando [1] = {price = 1000}, --- dias de premium, quanto ira custar [7] = {price = 7000}, [15] = {price = 15000}, [30] = {price = 30000}, [50] = {price = 50000}, [100] = {price = 100000}, }
em colchetes e quantos dias ira custar, price e alto explicativo para você adcionar mais opçoes do adcionar uma nova linha!
se gostaram REP+
@EDIT
só pra avisar não pode comprar mais de um ano de premium account
@EDIT2
Quem copiou antes copia denovo
-
Baiakzik deu reputação a Sociopata em Instalando Rme 8.70Veja bem, aqui você vai aprender a instalar uma versão não oficial do RME 8.7, eu já vou avisando que não é recomendado o uso por usuários iniciantes, de qualquer forma, todos podem instalar, basta seguir os passos do tutorial.
0.1 - Faça uma cópia de segurança antes de substituir QUALQUER COISA.
1 - Primeiro, instale o Tibia 8.7. Caso não o tenha, baixe AQUI
2 - Abra o RME
3 - Crie um novo mapa 8.60 (CTRL + P)
4 - Vá em File > Preferences > Client Versions
5 - Desmarque "Check File Signatures"
6 - Na mesma janela, em "Version 8.60 search patch", clique em Browse e encontre a pasta do tibia 8.70. Dê OK mas não feche o RME
7 - Download o OTB 8.7 http://www.4shared.c...ons_RME_87.html
8 - Copie e cole o items.otb que você acabou de baixar na pasta C:\Arquivos de Programas\Remere's Map Editor\data\860\ e substitua o já existente.
Copie também os arquivos "extensions_byzbizo_87" e "extensions_byzbizo_full v110 for 862" para a pasta C:\Arquivos de Programas\Remere's Map Editor\data\860\extensions.
9 - Abra a janela do RME (Que você não deve ter fechado) e aperte f5. Caso foi solicitado a pasta 8.60, vá na pasta 8.70.
ATENçãO!
Depois de fazer isso, se você tentar abrir qualquer outro mapa 8.7 irá aparecer a seguinte mensagem:
ERROR
Unsupported client version! (8)
ERROR
Error loading map!
Para contornar o erro, basta abrir o RME normalmente, criar um novo mapa (CTRL + N), depois vá em File > Import > Import Map, verifique se está tudo assim:
Depois é só clicar em Browse e carregar o seu mapa.
Creditos
Alissow
Sociopata
-
Baiakzik deu reputação a Anyur em Remere's Map Editor 8.70 - AtualizadoMeu Remere's esse.
Logo irei postar um mais atualizado, se quiser pode pegar, mas coloca meus créditos aí?
Eu que estou fazendo as mudanças sozinho.
Abraços.