
Shadow.Styller
Membro
-
Registro em
-
Última visita
Histórico de Curtidas
-
Shadow.Styller deu reputação a WooX em [DÚVIDA]Como usar o for nessa situação ?Participe do nosso clube de estudos, quando tiver alguma duvida relacionada a linguagem, pode perguntar lá.
-
Shadow.Styller deu reputação a WooX em [DÚVIDA]Como usar o for nessa situação ?@Shadow.Styller Você pode adicionar esse for na própria função, verificando assim todas as áreas contidas na tabela positionsToCheck.
E você utiliza da seguinte maneira:
-
Shadow.Styller deu reputação a lordefmorte em [NPC Guard] Ataca Skulls e Monsters, Invasoresacredito que fiz ago errado por favo ver se tem ago errado aqui
no data\npc criei um arquivo xml como o nome de defender dentro dele botei isso
<?xml version="1.0"?> <npc name="Defender" script="defender.lua" access="5" lookdir="2" autowalk="25"> <mana now="800" max="800"/> <health now="200" max="200"/> <look type="131" head="116" body="94" legs="78" feet="115" addons="3"/> </npc> local level = 10 -- Quanto o NPC irar tirar. local maglevel = 10 -- Quanto o NPC Irar tirar. local min_multiplier = 2.1 -- Quanto o NPC Irar tirar. local max_multiplier = 4.2 -- Quanto o NPC Irar tirar. local Attack_message = "An Invader, ATTACK!!!" -- A mensagem queo NPC irar falar quanto detectar um invasor.
dentro de data\npc\scripts criei um arquivo lua como o nome de defender detro botei isso
local level = 10 ----- change this to make the npc hit more/less---------------------|damage_min = (level * 2 + maglevel * 3) * min_multiplier | local maglevel = 10 ----- change this to make the npc hit more/less -----------------|damage_max = (level * 2 + maglevel * 3) * max_multiplier | local min_multiplier = 2.1 ----- change this to make the npc hit more/less ----------|damage_formula = math.random(damage_min,damage_max) | local max_multiplier = 4.2 ----- change this to make the npc hit more/less --------------------------------------------------------------------- local check_interval = 5 ----- change this to the time between checks for a creature (the less time the more it will probably lag :S) local radiusx = 7 ----- change this to the amount of squares left/right the NPC checks (default 7 so he checks 7 squares left of him and 7 squares right (the hole screen) local radiusy = 5 ----- change this to the amount of squares left/right the NPC checks (default 5 so he checks 5 squares up of him and 5 squares down (the hole screen) local Attack_message = "An Invader, ATTACK!!!" ----- change this to what the NPC says when he sees a monster(s) local town_name = "Archgard" ----- the name of the town the NPC says when you say "hi" local Attack_monsters = TRUE ----- set to TRUE for the npc to attack monsters in his area or FALSE if he doesnt local Attack_swearers = TRUE ----- set to TRUE for the npc to attack players that swear near him or FALSE if he doesnt local Attack_pkers = TRUE ----- set to TRUE for the npc to attack players with white and red skulls or FALSE if he doesnt local health_left = 10 ----- set to the amount of health the npc will leave a player with if they swear at him (ie at 10 he will hit the player to 10 health left) local swear_message = "Take this!!!" ----- change this to what you want the NPC to say when he attackes a swearer local swear_words = {"shit", "fuck", "dick", "cunt"} ----- if "Attack_swearers" is set to TRUE then the NPC will attack anyone who says a word in here. Remember to put "" around each word and seperate each word with a comma (,) local hit_effect = CONST_ME_MORTAREA ----- set this to the magic effect the creature will be hit with, see global.lua for more effects local shoot_effect = CONST_ANI_SUDDENDEATH ----- set this to the magic effect that will be shot at the creature, see global.lua for more effects local damage_colour = TEXTCOLOR_RED ----- set this to the colour of the text that shows the damage when the creature gets hit ------------------end of config------------------ local check_clock = os.clock() ----- leave this local focus = 0 ----- leave this function msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)')) end function onCreatureSay(cid, type, msg) msg = string.lower(msg) health = getCreatureHealth(cid) - health_left if ((string.find(msg, '(%a*)hi(%a*)'))) and getDistanceToCreature(cid) < 4 then selfSay('Hello ' .. creatureGetName(cid) .. '! I am a defender of '..town_name..'.') doNpcSetCreatureFocus(cid) focus = 0 end if msgcontains(msg, 'time') then selfSay('The time is ' .. getWorldTime() .. '.') end if messageIsInArray(swear_words, msg) then if Attack_swearers == TRUE then selfSay('' .. swear_message ..' ') doCreatureAddHealth(cid,-health) doSendMagicEffect(getThingPos(cid),17) doSendAnimatedText(getThingPos(cid),health,180) doNpcSetCreatureFocus(cid) focus = 0 end end end function getMonstersfromArea(pos, radiusx, radiusy, stack) local monsters = { } local starting = {x = (pos.x - radiusx), y = (pos.y - radiusy), z = pos.z, stackpos = stack} local ending = {x = (pos.x + radiusx), y = (pos.y + radiusy), z = pos.z, stackpos = stack} local checking = {x = starting.x, y = starting.y, z = starting.z, stackpos = starting.stackpos} repeat creature = getThingfromPos(checking) if creature.itemid > 0 then if isCreature(creature.uid) == TRUE then if isPlayer(creature.uid) == FALSE then if Attack_monsters == TRUE then table.insert (monsters, creature.uid) check_clock = os.clock() end elseif isPlayer(creature.uid) == TRUE then if Attack_pkers == TRUE then if getPlayerSkullType(creature.uid) > 0 then table.insert (monsters, creature.uid) check_clock = os.clock() end end end end end if checking.x == pos.x-1 and checking.y == pos.y then checking.x = checking.x+2 else checking.x = checking.x+1 end if checking.x > ending.x then checking.x = starting.x checking.y = checking.y+1 end until checking.y > ending.y return monsters end function onThink() if (Attack_monsters == TRUE and Attack_pkers == TRUE) or (Attack_monsters == TRUE and Attack_pkers == FALSE) or (Attack_monsters == FALSE and Attack_pkers == TRUE) then if (os.clock() - check_clock) > check_interval then monster_table = getMonstersfromArea(getCreaturePosition(getNpcCid( )), radiusx, radiusy, 253) if #monster_table >= 1 then selfSay('' .. Attack_message ..' ') for i = 1, #monster_table do doNpcSetCreatureFocus(monster_table[i]) local damage_min = (level * 2 + maglevel * 3) * min_multiplier local damage_max = (level * 2 + maglevel * 3) * max_multiplier local damage_formula = math.random(damage_min,damage_max) doSendDistanceShoot(getCreaturePosition(getNpcCid( )), getThingPos(monster_table[i]), shoot_effect) doSendMagicEffect(getThingPos(monster_table[i]),hit_effect) doSendAnimatedText(getThingPos(monster_table[i]),damage_formula,damage_colour) doCreatureAddHealth(monster_table[i],-damage_formula) check_clock = os.clock() focus = 0 end elseif table.getn(monster_table) < 1 then focus = 0 check_clock = os.clock() end end end focus = 0 end -
Shadow.Styller deu reputação a Kemmlly em Apenas certo monstro dar mais XP para quem tem certa storageA ideia é interessante e você está no caminho certo, vou fazer isso e compartilhar com vocês, além de usar no meu OT.
-
Shadow.Styller deu reputação a Kemmlly em [AJUDA] Criar uma quest estilo Main Quest ou Golden3 vocações diferentes ou 3 player qualquer?
-
Shadow.Styller deu reputação a Orochi Elf em Fly System BETA - 100% sourcesFly System BETA
Fala galera, hoje eu estou aqui para mostrar o fly system que eu desenvolvi inteiramente nas sources.
Uma observação sobre o vídeo, o tile branco que vocês vão ver é apenas para demonstração.
Sobre o sistema:
Este sistema é totalmente desenvolvido dentro das sources, e sua funcionalidade depende apenas de 1 tile, diferentemente das versões já criadas que usam 9 tiles (1 para o player ficar em cima, e os outros 8 em volta do jogador para captação do próximo passo), assim diminuindo o consumo desnecessário de memória.
-
Shadow.Styller deu reputação a Linus em [TFS 1.X] Chuva de itemsAh duas versões do script, em globalevent ou talkaction use a que preferir.
-- GLOBALEVENT --
globalevents.xml :
<globalevent type="startup" name="RainItems" script="rainitems.lua"/> rainitems.lua
local config = { items = {{8306,1}, {2157,2}, {7735,1}, {8306,1}, {2184,1}, {9932,1}, {8306,1}, {9693,1}, {2148, 100}}, interval = 1000, -- time between checks areas = { [1] = { startHour = 19, startMin = 15, waves = 10, interval = 10000, chancePerTile = 10, -- % maxItemsPerWave = 15, from = {x = 1021, y = 994, z = 7}, to = {x = 1024, y = 998, z = 7} }, [2] = { startHour = 18, startMin = 43, waves = 10, interval = 10000, chancePerTile = 10, maxItemsPerWave = 15, from = {x = 1026, y = 995, z = 7}, to = {x = 1028, y = 1001, z = 7} } } } local executed = {} function Position.isPathable(pos) local tile = Tile(pos) if tile == nil then return false end return not tile:hasFlag(TILESTATE_BLOCKSOLID) end function rainWave(arena) local from = config.areas[arena].from local to = config.areas[arena].to local items_spawned = 0 for x = from.x, to.x do for y = from.y, to.y do for z = from.z, to.z do if math.random(1, 100) < config.areas[arena].chancePerTile and items_spawned < config.areas[arena].maxItemsPerWave then local pos = {x = x, y = y, z = z} if Position(pos):isPathable() then local item = math.random(1, #config.items) doCreateItem(config.items[item][1], math.random(1, config.items[item][2]), pos) Position(pos):sendMagicEffect(CONST_ME_MAGIC_RED) items_spawned = items_spawned + 1 end end end end end end function startRain(arena) broadcastMessage("Rain item event begins!") for i = 1, config.areas[arena].waves do if i == 1 then rainWave(arena) else addEvent(rainWave, config.areas[arena].interval * (i - 1), arena) end end addEvent(broadcastMessage, config.areas[arena].interval * (config.areas[arena].waves - 1), "Rain items event ended.") end function checkRain() local hour = tonumber(os.date("%H")) local min = tonumber(os.date("%M")) if not executed[hour] then executed[hour] = {} end for i = 1, #config.areas do if hour == config.areas[i].startHour and min == config.areas[i].startMin then if not executed[hour][min] then startRain(i) addEvent(checkRain, config.interval) executed[hour][min] = true end end if tonumber(os.date("%H", os.time() + (30 * 60))) == config.areas[i].startHour and tonumber(os.date("%M", os.time() + (30 * 60))) == config.areas[i].startMin then if not executed[hour][min] then broadcastMessage("Rain items event will start in 30 minutes.") addEvent(checkRain, config.interval) executed[hour][min] = true end end if tonumber(os.date("%H", os.time() + (1 * 60))) == config.areas[i].startHour and tonumber(os.date("%M", os.time() + (1 * 60))) == config.areas[i].startMin then if not executed[hour][min] then broadcastMessage("Rain items event will start in 1 minute.") addEvent(checkRain, config.interval) executed[hour][min] = true end end end addEvent(checkRain, config.interval) end function onStartup() addEvent(checkRain, 100) end -- TALKACTION --
talkactions.xml
<talkaction words="/rainitems" separator=" " script="rainitems_command.lua"/> rainitems_command.lua
local config = { items = {{8306,1}, {2157,2}, {7735,1}, {8306,1}, {2184,1}, {9932,1}, {8306,1}, {9693,1}, {2148, 100}}, interval = 1000, -- time between checks areas = { [1] = { waves = 10, interval = 10000, chancePerTile = 10, -- % maxItemsPerWave = 15, from = {x = 1021, y = 994, z = 7}, to = {x = 1024, y = 998, z = 7} }, [2] = { waves = 10, interval = 10000, chancePerTile = 10, maxItemsPerWave = 15, from = {x = 1026, y = 995, z = 7}, to = {x = 1028, y = 1001, z = 7} } } } function Position.isPathable(pos) local tile = Tile(pos) if tile == nil then return false end return not tile:hasFlag(TILESTATE_BLOCKSOLID) end function rainWave(arena) local from = config.areas[arena].from local to = config.areas[arena].to local items_spawned = 0 for x = from.x, to.x do for y = from.y, to.y do for z = from.z, to.z do if math.random(1, 100) < config.areas[arena].chancePerTile and items_spawned < config.areas[arena].maxItemsPerWave then local pos = {x = x, y = y, z = z} if Position(pos):isPathable() then local item = math.random(1, #config.items) doCreateItem(config.items[item][1], math.random(1, config.items[item][2]), pos) Position(pos):sendMagicEffect(CONST_ME_MAGIC_RED) items_spawned = items_spawned + 1 end end end end end end function startRain(arena) broadcastMessage("Rain item event begins!") for i = 1, config.areas[arena].waves do if i == 1 then rainWave(arena) else addEvent(rainWave, config.areas[arena].interval * (i - 1), arena) end end addEvent(broadcastMessage, config.areas[arena].interval * (config.areas[arena].waves - 1), "Rain items event ended.") end function onSay(player, words, param) if not player:getGroup():getAccess() then return false end if tonumber(param) then startRain(tonumber(param)) else player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, words .. " eventid") end return false end Créditos zbisu.
-
Shadow.Styller deu reputação a Viny 13 em SISTEMA DE ADDON COMPLETOBom gente esses dias o @Ceetros postou um sistema de Addon, que funciona no fly, ride e surf
Só vou repostar aqui pra vocês, pois ele só postou no outro forum
Vá em actions/scripts e crie um arquivo chamado addon.lua.
Adicione isso lá:
function onUse(cid, item, fromPosition, itemEx, toPosition) local addons = { [ID DO ITEM] = {pokemon= "NOME DO POKEMON" , looktype = LOOKTYPE NORMAL, fly = FLY, SE NÃO TIVER PONHA 0, ride = RIDE, SE NÃO TIVER PONHA 0, surf = SE NÃO TIVER SURF PONHA 0}, } if #getCreatureSummons(cid) > 0 then doPlayerSendCancel(cid, "Please back your pokemon.") return false end local addon = addons[item.itemid].looktype local fly = addons[item.itemid].fly local ride = addons[item.itemid].ride local surf = addons[item.itemid].surf local pb = getPlayerSlotItem(cid, 8).uid local pk = addons[item.itemid].pokemon if getItemAttribute(pb,"poke") ~= pk then doPlayerSendCancel(cid, "Sorry, you can't use this addon on this poke.") return false end if getItemAttribute(pb,"addon") >= 0 then doRemoveItem(item.uid, 1) doPlayerSendTextMessage(cid, 27, "Congratulations! Now your pokemon will use the addon.") doSetItemAttribute(pb,"addon",addon) doSetItemAttribute(pb,"addonfly",fly) doSetItemAttribute(pb,"addonride",ride) doSetItemAttribute(pb,"addonsurf",surf) return true end return true end
Em actions.xml adicione:
<action itemid="ID;ID;ID" event="script" value="addon.lua"/> Agora em actions/goback.lua antes de:
else doPlayerSendCancel(cid, "This pokemon is fainted.") end return true end Adicione:
local pk = getCreatureSummons(cid)[1] local pb = getPlayerSlotItem(cid, 8).uid local look = getItemAttribute(pb,"addon") if not look then doSetItemAttribute(pb,"addon",0) end if look > 0 then doSetCreatureOutfit(pk, {lookType = look}, -1) end Em lib/order.lua encontre:
local pokemon = flys[getPokemonName(getCreatureSummons(cid)[1])] doPlayerSendTextMessage(cid, 27, "Type \"up\" or \"h1\" to fly higher and \"down\" or \"h2\" to fly lower.") doChangeSpeed(cid, -getCreatureSpeed(cid)) local speed = 500 + PlayerSpeed/5 + getSpeed(sid) * 6 * speedRate doChangeSpeed(cid, speed) setPlayerStorageValue(cid, 54844, speed) doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) setPlayerStorageValue(cid, 17000, 1) Abaixo adicione:
local addonfly= getPlayerSlotItem(cid, 8).uid local addofly = getItemAttribute(addonfly,"addonfly") if not addofly then doSetItemAttribute(addonfly,"addonfly",0) end if addofly > 0 then doSetCreatureOutfit(cid, {lookType = addofly}, -1) end Continuando em order.lua Encontre:
local pokemon = rides[getPokemonName(getCreatureSummons(cid)[1])] doChangeSpeed(cid, -getCreatureSpeed(cid)) local speed = 150 + PlayerSpeed + getSpeed(sid) * 5 * speedRate doChangeSpeed(cid, speed) setPlayerStorageValue(cid, 54844, speed) doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) setPlayerStorageValue(cid, 17001, 1) Em baixo adicione:
local addonride = getPlayerSlotItem(cid, 8).uid local addoride = getItemAttribute(addonride,"addonride") if not addoride then doSetItemAttribute(addonride,"addonride",0) end if addoride > 0 then doSetCreatureOutfit(cid, {lookType = addoride}, -1) end Agora em movements/surf.lua encontre:
doSetCreatureOutfit(cid, {lookType = surfs[getPokemonName(getCreatureSummons(cid)[1])].lookType + 351}, -1) doCreatureSay(cid, ""..getPokeName(getCreatureSummons(cid)[1])..", lets surf!", 1) doChangeSpeed(cid, -(getCreatureSpeed(cid)))
E troque por:
local addonsurf = getPlayerSlotItem(cid, 8).uid local addosurf = getItemAttribute(addonsurf,"addonsurf") if not addosurf then doSetItemAttribute(addonsurf,"addonsurf",0) doSetCreatureOutfit(cid, {lookType = surfs[getPokemonName(getCreatureSummons(cid)[1])].lookType + 351}, -1) end if addosurf > 0 then doSetCreatureOutfit(cid, {lookType = addosurf}, -1) end doCreatureSay(cid, ""..getPokeName(getCreatureSummons(cid)[1])..", lets surf!", 1) doChangeSpeed(cid, -(getCreatureSpeed(cid))) No mesmo arquivo ache:
doSummonMonster(cid, pokemon) Logo abaixo adicione:
local pk = getCreatureSummons(cid)[1] local balla = getPlayerSlotItem(cid, 8).uid local balladdon = getItemAttribute(balla,"addon") if not balladdon then doSetItemAttribute(balla,"addon",0) end if balladdon > 0 then doSetCreatureOutfit(pk, {lookType = balladdon}, -1) end Por ultimo em actions/order.lua encontre:
doPlayerSay(cid, ""..getPokeName(getCreatureSummons(cid)[1])..", let me get down!", 1) doRegainSpeed(cid) --alterado v1.7 doRemoveCondition(cid, CONDITION_OUTFIT) Abaixo adicione:
local pkjg = getCreatureSummons(cid)[1] local pkza = getPlayerSlotItem(cid, 8).uid local pkxd = getItemAttribute(pkjg,"addon") if not pkxd then doSetItemAttribute(pkza,"addon",0) elseif pkxd > 0 then doSetCreatureOutfit(pkjg, {lookType = pkxd}, -1) end Caso não tenha addon box vá data/actions/scripts e adicione isso:
Explicando:
local addons = {12803,12804,12805,12806,12807,2135,2136,2137,2138,2139,2142} ( Onde tá os numeros é o id da sua addon )
onde tá 12802 ( é o id da addon box )
Onde tá (1, 11 ) é a quantidade de items que tem na box,sempre que for adicionar uma aumente o numero pois pode falhar.
EM DATA/ACTIONS/ACTIONS.XML
ADICIONE ESTA TAG :
<action itemid="ID DA SUA ADDON BOX" event="script" value="addon box.lua"/>
Pra finalizar Vá em creaturescripts/scripts/login.lua Troque tudo por:
-
Shadow.Styller deu reputação a palubo em Como criar uma nova skillFala, galera! Beleza?
Sou novo aqui no TK e queria trazer algo para vocês. Dei uma procurada e não achei nada do tipo, então creio que esse tutorial possa ajudar algumas pessoas!
O que vou ensinar a vocês é como criar uma skill direto na source, o que permite que você utilize comandos como "getPlayerSkill", "doPlayerAddSkillTry" etc em seus scripts em Lua. Esse tutorial NÃO serve para criar skills de "combate", como sword, axe etc. Esse tipo de skill envolve vários outros parâmetros além do que mostrarei aqui. Quem sabe eu faça um tutorial sobre isso daqui um tempo.
Preview de uma skill que criei para meu projeto:
Para este tutorial, eu usei:
Sources do The Forgotten Server 0.3.7: Aqui serão feitas várias edições, criando a nova skill e tudo que é necessário para a skill funcionar corretamente. Microsoft Visual Studio 2010 Professional: Utilizei para compilar o TFS com as novas edições. Se não souber compilar, procure em outros tópicos aqui do fórum. Não é meu objetivo aqui ensinar como compilar. É necessário compilar com o MVS? Não. Se você preferir, pode fazer com outros programas. Notepad++: Usei porque acho um editor de texto simples, prático e funcional. Não gosto de editar os códigos no MVS. Porém sinta-se à vontade para usar o editor que quiser. haha SQLiteStudio 2.1.4: Será necessário para fazer pequenas alterações para que seu banco de dados funcione corretamente. Se você utiliza MySQL, terá que fazer essas edições por outro programa. Sources do OTClient: Como utilizo o OTClient em meu servidor, usarei ele para demonstrar como adicionar a barrinha à janela de Skill. Se você utiliza outro client, infelizmente, não poderei dar suporte, já que nunca editei outros clients. Codeblocks: Usei para compilar o OTClient. Mas pode ser feito com o MVS também. A escolha é sua! Passo 1 - Editar a source do TFS:
Passo 2 - Editar o OTClient:
Passo 3 - Editar o TFS:
Passo 4 - Editar a database:
Pronto! Seu servidor já está configurado com a nova skill! Agora você poderá usar Lua para configurá-la!
Vou dar um exemplo MUITO simples de como isso poderia ser feito em Lua:
Claro que essa action acima é algo muito simples, mas, tendo o servidor já configurado, acredito que essas modificações abram uma gama de possibilidades imensas a todos que querem desenvolver uma nova skill. Espero que tenham gostado e que o tutorial seja útil para alguém! haha
Qualquer erro ou bug, me avisem!
Atenciosamente,
Auro Mota.
-
Shadow.Styller deu reputação a LeoTK em [PEDIDO]Sistema de Cards@vankk
ele quer um itemID sumone um monstro com aspectos selvagens que use spells sozinho e que não possa ser usado order nele, no pokemon o comando order serve para voar,montar,nadar. ele quer que o pokemon "selvagem" dure 6 horas e que não ataque o sumonador apenas o target do sumonador pelo que eu entendi é isso
-
Shadow.Styller deu reputação a vankk em [PEDIDO]Sistema de CardsEu até faria, mas eu não manjo de Pokemon, se você explicar melhor em linguagem de programação quem sabe eu não possa te ajudar?
-
Shadow.Styller deu reputação a tioj em Ditto Memory System por talkactionTpw o sistema de ditto que hj em dia alguns servers usam é assim que identifica o ditto, Pq se vc tentar usar o comando com ele transformado não pega por causa desse sistema diferente do ditto
-
Shadow.Styller deu reputação a zipter98 em Ditto Memory System por talkaction@tioj
Escrevi o sistema para apenas o Ditto comum, visto que nem todo servidor possui sua forma shiny. Mais tarde altero o código para funcionar com ambas as formas.
@wisac
Leia o tópico, wtf.
-
Shadow.Styller deu reputação a zipter98 em Ditto Memory System por talkactionOK, isto não é exatamente um sistema, visto que é composto por um único arquivo com um único callback, mas enfim.
Antes de começar a desenvolver o tópico, digo-lhes: o código é para poketibia, não outros derivados ou Tibia comum.
Introdução:
A pedidos de um amigo, resolvi escrever este script. Por não programar em OTClient, optei por escrevê-lo em uma talkaction. Para aqueles que não conhecem o sistema, consiste em praticidade para as transformações do Ditto: ao invés de repetir o cansativo processo de procurar o pokémon que deseja-se copiar, você pode simplesmente salvá-lo na memória do Ditto para, sempre que quiser, transformá-lo em um único comando.
Você pode configurar quantos slots de "memória" quiser.
Para usar os comandos, você deve colocar uma pokebola com um Ditto no slot 8/feet (a.k.a "pokeball slot"). Alguns, no entanto, necessitam também que o pokémon esteja "solto".
Comandos:
/memory check Use este comando para verificar os atuais slots de seu Ditto. /memory forget [slot] Use este comando para deletar uma memória salva, respectiva ao slot indicado. Ex.: /memory forget 1 /memory save [slot] Use este comando para salvar uma memória, respectiva ao slot indicado. A memória salva será do pokémon que seu Ditto estará transformado no momento. Ex.: /memory save 3 /memory [slot] Use este comando para transformar seu Ditto no pokémon que estiver armazenado no slot indicado. Ex.: /memory 2 PS: Você também pode usar !memory.
Instalação:
Em data/talkactions/scripts, crie um arquivo com extensão .lua, nomeie-o dittomemory e coloque o seguinte conteúdo:
Em data/talkactions, abra o arquivo talkactions.xml e coloque a seguinte tag: <talkaction words="/memory;!memory" event="script" value="dittomemory.lua"/> Versão testada: 8.54 Servidor testado: PDA by Slicer, versão 1.9 É um código bem simples, escrito em poucos minutos. Resolvi postá-lo pois gostei do resultado apresentado. Para alguns, pode não ser tão útil; para outros, espero que sim. É isso aí, até mais. -
Shadow.Styller deu reputação a Danihcv em [NPC] Papai Noel - Que dá presenteBom galera, sei que o natal acabou de passar, porém esqueci de postar esse system antes...
Fiz uma versão 2.0 do meu npc de natal (papai noel).
Agora ao invés do bom velhinho entregar diretamente o item, vc recebe uma caixa que ao clicar vc recebe um item 100% aleatorio (dentre os itens que foram programados dentro do script).
Funciona assim: o player vai até o papai noel e fala: hi, aí o papai noel fala ho-ho-ho... aí o player responde sim (ou yes) e então o player recebe uma caixa. Ao clicar na caixa, o player recebe um dos itens, que estiverem programados no script, de forma aleatoria.
Então vamo lá.
Pra adicionar esse system, primeiro vá na pasta data/npc e crie um arquivo chamado Papai Noel.xml e coloque isso dentro:
<?xml version="1.0" encoding="UTF-8"?> <npc name="Papai Noel" script="data/npc/scripts/papai_noel.lua" walkinterval="1500" speed="100" walkradius="2" floorchange="0"> <health max="100" now="100"/> <look type="160" head="0" body="113" legs="94" feet="132" addons="0" mount="0"/> <parameters> <!--MESSAGES--> <parameter key="message_greet" value="HO-HO-HO, |PLAYERNAME| bem-vindo. Voce gostaria de um presente?"/> <parameter key="message_farewell" value="HO-HO-HO, tenha um feliz natal, |PLAYERNAME|."/> </parameters> </npc> Agora vá na pasta data/npc/scripts e crie um arquivo chamado papai_noel.lua e coloque isso dentro:
Agora vá na pasta data/actions e adicione essa tag dentro do arquivo actions.xml:
<action itemid="11401" event="script" value="giftbox.lua"/> Agora va na pasta data/actions/scripts e crie um arquivo chamado giftbox.lua e coloque isso dentro:
local items = { [1]=2160, --ID do item 1 [2]=2157, --ID do item 2 [3]=2121} --ID do item 3 local stor = (11401+os.date("%Y")) --Nao mexa function onUse(cid) if getPlayerStorageValue(cid, stor) ~= 1 then a = math.random(1, #items) doPlayerAddItem(cid, items[a], 1) setPlayerStorageValue(cid, stor, 1) else doPlayerSendCancel(cid, "Voce ja pegou seu presente.") end doPlayerRemoveItem(cid, 11401, 1) return true end E isso é tudo pessoal!
-
Shadow.Styller deu reputação a Danihcv em [TUTORIAL] Formatando textos em PHPBom galera dessa vez trago pra vcs um tutorial simples de como editar (formatar) textos em suas páginas PHP.
1°) Negrito
Para deixar um texto em negrito basta definir esse texto com <b> (no inicio) e </b> (no final). Então o seguinte código:
<b>Essa frase esta em negrito!</b> Teria esse efeito:
Essa frase esta em negrito!
1.1°) Modo alternativo
Outro modo de escrever em negrito é usando <strong> e </strong>
Apesar do strong não ser destinado à isso tem o mesmo efeito de negrito.
2°) Sublinhado
Para deixar um texto sublinhado basta definir esse texto com <u> (no inicio) e </u> (no final). Então o seguinte código:
<u>Essa frase esta sublinhada!</u> Teria esse efeito:
Essa frase esta sublinhada!
3°) Itálico
Para deixar um texto em itálico basta definir esse texto com <i> (no inicio) e </i> (no final). Então o seguinte código:
<i>Essa frase esta em italico!</i> Teria esse efeito:
Essa frase esta em italico!
3.1°) Modo alternativo
Outro modo de escrever em itálico é usando <em> e </em>
4°) Riscado
Para deixar um texto riscado basta definir esse texto com <s> (no inicio) e </s> (no final). Então o seguinte código:
<s>Essa frase esta riscada!</s> Teria esse efeito:
Essa frase esta riscada!
5°) Mudando a fonte do texto
Para mudar a fonte basta colocar <font face='FONTE QUE VC DESEJA'> (preste atenção aqui, pois o nome da fonte deve estar entre aspas simples!) no inicio e </font> no final da frase. Então o seguinte código:
<font face='Times New Roman'> Fonte massa! </font> Teria esse efeito:
Fonte massa!
6°) Mudando a cor do texto
Para mudar a cor basta colocar <font color='COR (EM INGLES) QUE VC DESEJA ou código html'> (preste atenção aqui, pois a cor deve estar escrita em inglês e entre aspas simples! O mesmo serve para o código html, deve estar entre aspas simples!) no inicio e </font> no final da frase. Então o seguinte código:
<font color='red'>Ta vermelho!</font> <font='blue'>Ta azul!</font> Teria esse efeito:
Ta vermelho! Ta azul!
6.1°) Tabela de cores em html
Aqui tem um link onde vc pode pegar o código html das cores de sua preferência para usar no código acima:
http://www.flextool.com.br/tabela_cores.html
7°) Mudando o tamanho do texto
Bom aqui tem uma diferença da formatação de texto normal. Existem 7 tamanhos de fonte em php:
O tamanho 2 é o tamanho padrão dos textos. Para mudar o tamanho da fonte basta usar o código <font size='TAMANHO QUE VC DESEJA (de 1 a 7)'> (preste atenção aqui, pois o tamanho deve estar escrito entre aspas simples!) no inicio e </font> no final da frase. Então o seguinte código:
<font size='5'>Tamanho 5!</font> Teria esse efeito:
Tamanho 5
8°) Textos especiais (subscrito e sobrescrito)
Para deixar um texto subscrito basta usar <sub> (no inicio) e </sub> (no final). Então o seguinte código:
X<sub>5</sub> Teria o seguinte efeito:
X5 (OBS: não ficaria em negrito! Eu apenas coloquei negrito para chamar atenção!)
Para deixar um texto sobrescrito basta usar <sup> (no inicio) e </sup> (no final). Então o seguinte código:
X<sup>3</sup> Teria o seguinte efeito:
X3 (OBS: não ficaria em negrito! Eu apenas coloquei negrito para chamar atenção!)
9°) Iniciando uma nova linha
Para iniciar uma nova linha basta usar <br> no inicio da frase que inicia a nova linha. Então o seguinte código:
<br>Se liga, linha 1 <br> <br> <br>Agora linha 4 Teria o seguinte efeito:
Obs.: Não necessita fechar esse comando usando </br> pois ao declarar um <br> ele já inicia outra linha mesmo que a anterior "não tenha sido fechada".
10°) Juntando os efeitos
Você pode usar os comandos de size, color e face (fonte) em um só comando <font> da seguinte maneira:
Ou seja, o seguinte código:
<br><font face='times new roman' color='#0000FF' size='5'> Olha que loko! </font> Teria o seguinte efeito:
Olha que loko!
Vc pode concatenar todos os efeitos acima da forma que vc quiser, basta ter atenção! Por exemplo, o seguinte código:
Aqui ta sem nada! <b>A partir daqui ta tudo em negrito... <font face='times new roman' color='##D2691E' size='6'>A partir daqui ta em negrito, azul, outra fonte, outro tamanho e em outra cor... </font> <i>A partir daqui ta em italico </i>Agora ta sem italico... </b>Agora ta sem negrito... </font>Agora ta da forma padrão! Teria o seguinte efeito:
Aqui ta sem nada! A partir daqui ta tudo em negrito... A partir daqui ta em negrito, azul, outra fonte, outro tamanho e em outra cor... A partir daqui ta em italico Agora ta sem italico... Agora ta sem negrito... Agora ta da forma padrão!
_____________________________________________________________________________________
---------------------------------------------------------------------------------------------------------------------------
AGORA É A SUA VEZ!!!
Poste aqui um texto de sua autoria e editado da forma ensinada do jeito que vc quiser!
Eu darei REP+ a todo post que estiver editado de forma correta!
E isso é tudo pessoal!
-
Shadow.Styller deu reputação a Kimoszin em [Tutorial] IF, Else, Then, Elseif, And e OrOla galerinha, hoje vou ensinar a vc's como usar if, else, elseif, and e or em lua
If, Else, ElseIF, Then
Agora vamos ver oque é oque:
Entendo o Script
function onSay(cid, words) -- Função aoFalar if getPlayerVocation(cid) == 4 then -- Se a vocação do player for igual a 4 entao doPlayerSendTextMessage(cid, 22, "Eu sou um Knight") -- Mandar uma mensagem com o texto, dizendo sua vocação elseif getPlayerVocation(cid) == 3 then -- Se nao, se a vocação do player for igual a 3 entao doPlayerSendTextMessage(cid, 22, "Eu sou um Paladin") -- Mandar uma mensagem com o texto, dizendo sua vocação else -- Se nao doPlayerSendTextMessage(cid, 22, "Eu nao estou na lista") -- Mandar uma mensagem com o texto, dizendo um que nao esta na lista end -- Fecha o IF end -- Fecha o Script Regras Entendo o Script And: function onSay(cid, words) -- Função aoFalar if getCreatureHealth(cid) > 500 and getCreatureMana(cid) > 100 then -- Se a vida da criatura for maior que 500 E se a mana da criatura for maior que 100 entao doPlayerSendCancel(cid, "Eu tenho 500 de health e 100 de mana, ") -- Manda uma mensagem end -- Fecha o if end -- Fecha o Script[/code] [b]Or:[/b] [code]function onSay(cid, words) -- Função aoFalar if getCreatureHealth(cid) > 500 or getCreatureMana(cid) > 100 then -- Se a vida da criatura for maior que 500 ou se a mana da criatura for maior que 100 entao doPlayerSendCancel(cid, "Eu tenho 500 de health e 100 de mana, ") -- Manda uma mensagem end -- Fecha o if end -- Fecha o Script
Regras
É isso pessoal,
Abraços
And e Or Agora vamos ver oque é oque: -
Shadow.Styller deu reputação a Featzen em Smeargle System[PXG]Bom, como um individuo(Vudi) não sabe cumprir o que fala, vou postar o sistema aqui.(não cabe ao post explicar aqui)
Bom, aqui está o smeargle system, igual o da PxG. Vamos lá.
1 - Vá na pasta Lib, substitua seu cooldown bar.lua por isso:
2 - Ainda no Lib, no fim(depois do ultimo end) do Some Functions.lua, adicione isso:
3 - Agora no order.lua, do Actions, em baixo de:
if getTileThingByPos(checkpos).uid <= 0 then return true end Adicione:
4 - Se seu servidor ja tiver os spells, sketch 1, sketch 2... Substitua por esses:
Se não, use os mesmos acima, não esqueça de adicionar no spells.xml.
5 - Agora, vá em talkactions/scripst, abra o move1.lua e substitua:
Pronto, se tiver feito tudo certo, funcionará.
Como ficará:
Como usar:
Créditos: Eu(Todo o script)
-
Shadow.Styller deu reputação a Featzen em Smeargle System[PXG]É, acho que sim, kk.
-
Shadow.Styller deu reputação a maiconmnt em [PEDIDO]Efeito no chão que tira life do playerhumm entendi.
nesse caso nesse momento não irei poder te ajudar amigo, pois esta além das minhas habilidades, estou aprendendo lua agora também.
mas logo alguém vai vim aqui te ajudar pode ficar tranquilo.
obrigado pelo rep +
UP
-
Shadow.Styller deu reputação a maiconmnt em [PEDIDO]Efeito no chão que tira life do playernão sei se é bem isso que você quer, mas vou tentar ajudar.
em movements.xml cri um arquivo chamado drown.lua e cole isso:
em movements.xml adicione essas duas linhas:
Explicação:
-5000 aqui é o tanto que será arrancado de life quando pisar no chão
2000 aqui é o tempo de hit para hit, nesse caso o player sofrerá dando a cada 2 segundos, sendo 1000 igual a 1 segundo.
itemid == 114 aqui basta voce trocar o 114 pelo id do item que voce quer que quando o player tiver usando ele não tome hit. no meu ot esta assim, e acho que fica mais interessante também, mas se não quiser que tenha item creio que é so excluir essa linha inteira.
e em movements xml onde tem itemid=113 corresponde ao id do chão que você vai usar no rme. procure colocar um tile que não tenha em outras partes do mapa. eu utilizei o otitemeditor para criar um chão único em meu server, se quiser criar um chão de id próprio para isso procure um tutorial aqui no tibiaking ou me mande pm que tento te ajudar, pois não tem erro.
Abraços, espero que tenha te ajudado.
mas se não for bem isso que voce quer, espero que possa encontrar logo o que procura.
fique em paz.
-
Shadow.Styller deu reputação a paulo thush em Map Poketibia 8.54Ola galera muito tempo sem criar nada né resolvi criar algumas cave de poketibia 8.54 nao sei pra qual server pra voçes ai e questao de voçes irei mostrar algumas imagens
1 Andar
Pra quem nao ta conseguindo ve a foto URL abaixo
http://tinypic.com/r/11vlbeo/6
2 Andar
Pra quem nao ta conseguindo ve a foto URL abaixo
http://tinypic.com/r/ilc9ow/6
Mapa todo
Pra quem nao ta conseguindo ve a foto URL abaixo
http://tinypic.com/r/zu1mhj/6
Download
Clique aki
Scan que eu saiva nao presiza né o 4shared ja tem seu propio scan de arquivos
Credito
100% eu
gosto galera comente,Critica,é sempre REP+ né