-
Total de itens
54 -
Registro em
-
Última visita
Tudo que Lucas CP postou
-
Tenta assim: local steps = 3 -- quantos tiles anda? local function block(player, position, passo) position:getNextPosition(player:getDirection(), passo) position = player:getClosestFreePosition(position, false) if position.x == 0 then player:sendCancelMessage("You cannot teleport there.") return true end local tile = Tile(position) if not tile then return true end local ground = tile:getGround() if not ground then return true end if tile:hasProperty(CONST_PROP_BLOCKSOLID) then return true end if tile:hasFlag(TILESTATE_HOUSE) or tile:hasFlag(TILESTATE_PROTECTIONZONE) then return true end local items = tile:getItems() for i = 1, #items do local item = items[i] local itemType = item:getType() if itemType:getType() == ITEM_TYPE_MAGICFIELD and not itemType:isMovable() then return true end end if passo == (steps -1) then local creature = Creature(getTopCreature(position).uid) if creature then return true end end end function onCastSpell(cid, var) local player = Player(cid) if not player then return false end local position = player:getPosition() for passo = 1, (steps-1) do if block(player, position, passo) == true then player:sendCancelMessage('Sorry, not possible.') player:getPosition():sendMagicEffect(CONST_ME_POFF) return false end end player:teleportTo(position,false) return true end perdão a gambiarra
-
Editei o post acima
-
Você nao tem a criatura Rulfs, em npc/scripts rulfs.lua procura por local nome = "Rulfs" -- nome do monstro que vai parecer e coloca o nome da criatura que você quer que apareça e em creaturescript/scripts Rulfs.lua mude local monstro = "Rulfs" -- nome do monstro para o monstro que vc quer q apareça
-
em npc crie um arquivo Rulfs.xml: <?xml version="1.0" encoding="UTF-8"?> <npc name="Rulfs" script="Rulfs.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="128" head="17" body="54" legs="114" feet="0" addons="2"/> </npc> em npc/scripts crie um arquivo Rulfs.lua local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function onPlayerEndTrade(cid) npcHandler:onPlayerEndTrade(cid) end function onPlayerCloseChannel(cid) npcHandler:onPlayerCloseChannel(cid) end local nome = "Rulfs" -- nome do monstro que vai parecer local function greetCallback(cid) local msg = 'Olá '.. getCreatureName(cid) ..", vem me desafiar a um duelo?" npcHandler:say(msg,cid) npcHandler:addFocus(cid) return false end function creatureSayCallback(cid, type, msg) if string.lower(msg) == 'bye' or string.lower(msg) == 'xau' then npcHandler:resetNpc(cid) return false end if(not npcHandler:isFocused(cid)) then return false end if (msgcontains(msg, 'sim') or msgcontains(msg, 'yes')) then local pos = getCreaturePosition(getNpcId()) selfSay('Então venha.',cid) doCreatureSay(getNpcId(), "MuHuashAUhashSHUuSA", TALKTYPE_MONSTER_YELL) npcHandler:resetNpc(cid) doRemoveCreature(getNpcId()) doCreateMonster(nome, pos) end if (msgcontains(msg, 'nao') or msgcontains(msg, 'no') or msgcontains(msg, 'não')) then selfSay('Então tchau.', cid) npcHandler:resetNpc(cid) return false end return true end npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) crie um arquivo em na pasta monster com o nome Rulfs.xml: <?xml version="1.0" encoding="UTF-8"?> <monster name="Rulfs" nameDescription="a rulfs" race="blood" experience="900" speed="220" manacost="0"> <health now="1000" max="1000"/> <look type="128" head="17" body="54" legs="114" feet="0" addons="2" corpse="6080"/> <targetchange interval="5000" chance="8"/> <strategy attack="100" defense="0"/> <flags> <flag summonable="0"/> <flag attackable="1"/> <flag hostile="1"/> <flag illusionable="0"/> <flag convinceable="0"/> <flag pushable="0"/> <flag canpushitems="1"/> <flag canpushcreatures="1"/> <flag targetdistance="1"/> <flag staticattack="90"/> <flag runonhealth="500"/> </flags> <attacks> <attack name="melee" interval="2000" skill="30" attack="50" poison="150"/> <attack name="speed" interval="1000" chance="10" range="7" speedchange="-600" duration="20000"> <attribute key="areaEffect" value="redshimmer"/> </attack> <attack name="lifedrain" interval="1000" chance="40" radius="4" target="0" min="-120" max="-250"> <attribute key="areaEffect" value="rednote"/> </attack> </attacks> <defenses armor="15" defense="20"> <defense name="healing" interval="1000" chance="25" min="113" max="187"> <attribute key="areaEffect" value="blueshimmer"/> </defense> </defenses> <elements> <element firePercent="100"/> <element deathPercent="100"/> <element earthPercent="100"/> <element holyPercent="-20"/> </elements> <immunities> <immunity lifedrain="1"/> <immunity paralyze="1"/> <immunity invisible="1"/> </immunities> <voices interval="5000" chance="10"> <voice sentence="HAHAHAHAHA"/> </voices> <loot> <item id="2148" countmax="60" chance="11250"/><!-- gold coin --> <item id="2148" countmax="40" chance="11250"/><!-- gold coin --> <item id="2144" chance="2000"/><!-- black pearl --> <item id="2656" chance="650"/><!-- blue robe --> <item id="2047" chance="70000"/><!-- candle stick --> <item id="2237" chance="19000"/><!-- dirty cape --> <item id="2177" chance="50"/><!-- life crystal --> <item id="2071" chance="1333"/><!-- lyre --> <item id="2560" chance="7250"/><!-- mirror --> <item id="2411" chance="1600"/><!-- poison dagger --> <item id="2655" chance="800"/><!-- red robe --> <item id="2214" chance="860"/><!-- ring of healing --> <item id="2170" chance="8300"/><!-- silver amulet --> <item id="2134" chance="1750"/><!-- silver brooch --> <item id="2657" chance="60000"/><!-- simple dress --> <item id="2197" chance="1100"/><!-- stone skin amulet --> <item id="7589" chance="650"/><!-- strong mana potion --> <item id="2175" chance="900"/><!-- spellbook --> <item id="2143" chance="410"/><!-- white pearl --> <item id="7884" chance="240"/><!-- terra mantle --> <item id="2121" chance="410"/><!-- wedding ring --> <item id="2124" chance="100"/><!-- crystal ring --> </loot> </monster> e em monster.xml coloque isso: <monster name="Rulfs" file="Rulfs.xml"/> depois em creaturescript/scripts crie um arquivo Rulfs.lua com isso: local monstro = "Rulfs" -- nome do monstro local NPC = "Rulfs" -- nome do NPC function onKill(cid, target, damage, flags) if getCreatureName(target) == monstro then doCreateNpc(NPC, getCreaturePosition(target)) end if getCreatureName(cid) == monstro then local pos = getCreaturePosition(cid) doRemoveCreature(cid) doCreateNpc(NPC, pos) end return true end depois em login.lua cole isso antes do return true: registerCreatureEvent(cid, "desafio") e em creaturescript.xml coloque isso: <event type="kill" name="desafio" event="script" value="Rulfs.lua"/> qualquer erro retorne
-
action [TFS 1.1] Lua functions - funções
tópico respondeu ao Danihcv de Lucas CP em Tutoriais de Scripting
Bem útil. Acredito que ia ajudar mais se colocasse pra que serve cada uma, só uma dica. -
Aqui está: local pos = { [1] = {playerpos = {x = 1187, y = 1173, z = 6, stackpos=253}, nplayerpos = {x=1184, y=1157, z=7}}, [2] = {playerpos = {x = 1186, y = 1173, z = 6, stackpos=253}, nplayerpos = {x=1183, y=1157, z=7}}, [3] = {playerpos = {x = 1185, y = 1173, z = 6, stackpos=253}, nplayerpos = {x=1182, y=1157, z=7}}, [4] = {playerpos = {x = 1184, y = 1173, z = 6, stackpos=253}, nplayerpos = {x=1181, y=1157, z=7}}, [5] = {playerpos = {x = 1183, y = 1173, z = 6, stackpos=253}, nplayerpos = {x=1180, y=1157, z=7}} } local questLevel = 150 function onUse(cid, item, frompos, item2, topos) if item.uid == 7001 then if item.itemid == 1946 then for _, pid in pairs(pos) do local player = getThingfromPos(pid.playerpos) if player.itemid > 0 then local level = getPlayerLevel(player.uid) if level >= questLevel then doSendMagicEffect(pid.playerpos,2) doTeleportThing(player.uid,pid.nplayerpos) doSendMagicEffect(pid.nplayerpos,10) else doPlayerSendCancel(player.uid,"Você precisa estar no level ".. questLevel .."+.") end doTransformItem(item.uid,1945) end end elseif item.itemid == 1945 then doTransformItem(item.uid,1946) end end return true end
-
[Arquivado]Quem é você, player? Ganhe 05 REP + Conquista!
tópico respondeu ao Administrador de Lucas CP em Noticias - Arquivo
Feito, Lucas CP- 60 respostas
-
- quem é você?
- player
-
(e 2 mais)
Tags:
-
Qual erro aparece? testei aqui e esta normal. (to consultando o valor pela database, e nao pelo player:getSkillLevel(SKILL))
-
Você ta testando em TFS1.0, neste caso tem que registrar a variável player: coloca assim, antes do local pid = player:getGuid() Isso: local player = Player(player)
-
Coloca assim no código: local alavanca = { [1945] = 1946, [1946] = 1945 } if alavanca[item.itemid] then doTransformItem(item.uid,alavanca[item.itemid]) end
-
pedido Addon e Mount doll Para Iniciantes TFS 1.2 AJUDA URGENTE
pergunta respondeu ao leonardo macedo de Lucas CP em Scripts
Você tentou com o mesmo char que tentou anteriormente? Se sim, seta a storage dele em 0 e testa ai -
pedido Addon e Mount doll Para Iniciantes TFS 1.2 AJUDA URGENTE
pergunta respondeu ao leonardo macedo de Lucas CP em Scripts
Você colocou a parte do login? como so para quem logar na primeira vez? se sim, remova -
pedido Addon e Mount doll Para Iniciantes TFS 1.2 AJUDA URGENTE
pergunta respondeu ao leonardo macedo de Lucas CP em Scripts
Tente assim: Vai em actions/scripts e cria um arquivo.lua nele coloque isso: local confi = { hasStorage = { storage = 1231 -- storage livre do seu servidor }, mountDoll = { sistema = "item", -- se é por item ou da direto a mount [item / mount] itemid = 9971, -- id ou nome (caso de nome usar aspas, exemplo: "mount doll" ) da mount doll --- usar caso for dar direto a mount, sem o item mountID = 70 -- id da mount no mounts.xml }, addon = { idMale = 128, -- id do outfit male idFemale = 136, -- id do outfit female addons = 3 -- 1 = 1º addon, 2 º segundo addon, 3º todos os addons } } local storage = confi.hasStorage local addon = confi.addon local mount = confi.mountDoll local function addValores(player) if mount.sistema:lower() == "item" then player:addItem(ItemType(mount.itemid):getId(),1) elseif mount.sistema:lower() == "mount" then if player:hasMount(mount.mountID) then player:sendCancelMessage('Você já possui essa montaria') else player:addMount(mount.mountID) end else print(">> ERROR ".. mount.sistema .." SEM VALOR, USE item OU mount") player:getPosition():sendMagicEffect(CONST_ME_POFF) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, 'Ocorreu um erro, reporte a um gamemaster ID: 144.') return true end player:addOutfit(addon.idMale) player:addOutfit(addon.idFemale) player:addOutfitAddon(addon.idMale, addon.addons) player:addOutfitAddon(addon.idFemale, addon.addons) player:getPosition():sendMagicEffect(CONST_ME_FIREWORK_BLUE) player:setStorageValue(storage.storage,1) end function onUse(player, item, fromPosition, target, toPosition, isHotkey) if player:getStorageValue(storage.storage) <= 0 then addValores(player) else player:sendCancelMessage('Você já usou esse chest.') end return true end Caso alguém reportar o erro 144, foi provavelmente um nome que vc colocou errado no sistema. em actions.xml Se for actionid use essa tag: <action actionid="ACTION LIVRE DO SE SERVIDOR" script="SUA SCRIPT.lua" /> se for uniqueid use essa: <action uniqueid="UMA UID LIVRE DO SEU SERVIDOR" script="SUA SCRIPT.lua" /> LEMBRANDO DE COLOCAR O ACTION ID OU UNIQUE ID NO BAÚ DA CHEST. para usar so quem logou pela primeira vez no servidor, coloque isso em seu login.lua que fica em creatuscripts: procure por isso: if player:getLastLoginSaved() <= 0 then loginStr = loginStr .. " Please choose your outfit." player:sendOutfitWindow() else dps do else coloque isso: player:setStorageValue(AQUI_VC_POEM_A_STG_QUE_USOU_NO_SCRIPT,1) /\ NO CASO DESSA PARTE: hasStorage = { storage = 1231 -- storage livre do seu servidor }, (pensei em colocar direto na script, porem a distro ja da um update no lastlogin automaticamente) -
mude aquela script por essa: function getPlayerReset(cid) local qr = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..getPlayerGUID(cid)..";") rss = qr:getDataInt("reset", getPlayerGUID(cid)) if rss < 0 then rss = 0 end return rss end function getGlobalStorageValue(key) local qr = db.getResult("SELECT `value` FROM `global_storage` WHERE `key`= "..key..";") local r = qr:getDataInt("reset", getPlayerGUID(cid)) if r < 0 then r = -1 end return r end function setGlobalStorageValue(key, value) if getGlobalStorageValue(key) < 0 then return db.executeQuery("INSERT INTO `global_storage` (`key`, `value`) VALUES (".. key ..", ".. value ..");") else return db.executeQuery("UPDATE `global_storage` SET `value` = '".. value .."' WHERE `key` ='"..key.."'") end end local config = { storage = 12312, -- storage (coloque uma livre do seu servidor) reset = 10, -- reset minimo tempo = 1, -- tempo em hora tempoGlobal = 30, -- tempo em minutos para todos pos = {x = 123, y = 456, z = 7} -- pos que iá levar o jogador } function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid,config.storage) < 0 then setPlayerStorageValue(cid,config.storage,0) end if getPlayerReset(cid) < config.reset then doPlayerSendCancel(cid, 'Você precisa de '.. config.reset ..' reset'.. (config.reset <= 1 and '' or 's') ..' para usar este item.') return true end if getPlayerStorageValue(cid,config.storage) >= os.time() then mostrartempo = getPlayerStorageValue(cid,config.storage) doPlayerSendCancel(cid, 'Você só pode usar esse item às ' .. os.date("%X",mostrartempo ) .. ' horas.') return true end if getGlobalStorageValue(config.storage) >= os.time() then mostrartempo = getGlobalStorageValue(config.storage) doPlayerSendCancel(cid, 'Você só pode usar esse item às ' .. os.date("%X",mostrartempo ) .. ' horas.') return true end doTeleportThing(cid, config.pos) setPlayerStorageValue(cid, config.storage, os.time() + (config.tempo * 60 * 60)) setGlobalStorageValue(config.storage, os.time() + (config.tempoGlobal * 60)) return true end executa essa query na sua database: CREATE TABLE IF NOT EXISTS `global_storage` ( `key` int(11) NOT NULL, `value` bigint(20) NOT NULL, PRIMARY KEY (`key`,`value`) );
-
Se nenhum de cima dar certo, tente assim: function getPlayerReset(cid) local qr = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..getPlayerGUID(cid)..";") rss = qr:getDataInt("reset", getPlayerGUID(cid)) if rss < 0 then rss = 0 end return rss end local config = { storage = 12312, -- storage (coloque uma livre do seu servidor) reset = 10, -- reset minimo tempo = 1, -- tempo em hora pos = {x = 123, y = 456, z = 7} -- pos que iá levar o jogador } function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid,config.storage) < 0 then setPlayerStorageValue(cid,config.storage,0) end if getPlayerReset(cid) < config.reset then doPlayerSendCancel(cid, 'Você precisa de '.. config.reset ..' reset'.. (config.reset <= 1 and '' or 's') ..' para usar este item.') return true end if getPlayerStorageValue(cid,config.storage) >= os.time() then mostrartempo = getPlayerStorageValue(cid,config.storage) doPlayerSendCancel(cid, 'Você só pode usar esse item às ' .. os.date("%X",mostrartempo ) .. ' horas.') return true end doTeleportThing(cid, config.pos) setPlayerStorageValue(cid, config.storage, os.time() + (config.tempo * 60 * 60)) return true end
-
Coloca isso no montros.xml <loot> <item id="ID da chave" actionId="ACTIONID DA CHAVE" chance="140000"/><!-- chave --> </loot>
-
Mude para: elseif player:getFreeCapacity() < (ItemType(v.item):getWeight() * v.amount) then
-
Tenta mudar o if:
-
Em creaturescript/script crie um arquivo .lua e coloque isso: function onAdvance(cid, skill, oldLevel, newLevel) local pos, lvl, stg, msg = {x=210, y= 10, z= 6 }, 300, 99001, 'Sua mensagem com aspas' -- pos, level, storage para nao repetir 2x, msg if newLevel >= lvl and getPlayerStorageValue(cid, stg) <= 0 then setPlayerStorageValue(cid,stg,1) doTeleportThing(cid, pos, false) doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE, msg) return true end end e em creaturescript.xml coloque isso: <event type="advance" name="chegarlevel" event="script" value="SUA SCRIPT.lua"/> E depois em login.lua antes do return true coloque isso: registerCreatureEvent(cid, "chegarlevel") Não testei, qualquer erro coloque aqui
-
Estava vasculhando umas seções e reparei esse pequeno bug. Veja esse álbum que irá mostrar: http://imgur.com/a/l5a1v
-
Você pode editar em Game.cpp, procura a parte responsável pela mensagem do dano e no lugar do damage você coloca uma pequena formula que pega a porcentagem, exemplo: damage*100/vida da criatura
-
Não foi encontrado o arquivo: 'boost/asio.hpp' Reveja o tutorial que há neste fórum.
-
Quem Está Navegando 0 membros estão online
- Nenhum usuário registrado visualizando esta página.