
penisagudo
Membro
-
Registro em
-
Última visita
Solutions
-
penisagudo's post in (Resolvido)[TFS1.2] Exercise Weapons was marked as the answer@Enforc
Teste esse e veja se resolve.
local skills = { [32384] = {id=SKILL_SWORD,voc=4}, -- KNIGHT [32385] = {id=SKILL_AXE,voc=4}, -- KNIGHT [32386] = {id=SKILL_CLUB,voc=4}, -- KNIGHT [32387] = {id=SKILL_DISTANCE,voc=3,range=CONST_ANI_SIMPLEARROW}, -- PALADIN [32388] = {id=SKILL_MAGLEVEL,voc=2,range=CONST_ANI_SMALLICE}, -- DRUID [32389] = {id=SKILL_MAGLEVEL,voc=1,range=CONST_ANI_FIRE}, -- SORCERER [32124] = {id=SKILL_SWORD,voc=4}, -- KNIGHT [32125] = {id=SKILL_AXE,voc=4}, -- KNIGHT [32126] = {id=SKILL_CLUB,voc=4}, -- KNIGHT [32127] = {id=SKILL_DISTANCE,voc=3,range=CONST_ANI_SIMPLEARROW}, -- PALADIN [32128] = {id=SKILL_MAGLEVEL,voc=2,range=CONST_ANI_SMALLICE}, -- DRUID [32129] = {id=SKILL_MAGLEVEL,voc=1,range=CONST_ANI_FIRE} -- SORCERER } local houseDummies = {32143, 32144, 32145, 32146, 32147, 32148} local freeDummies = {32142, 32149} local skillRate = configManager.getNumber(configKeys.RATE_SKILL) local magicRate = configManager.getNumber(configKeys.RATE_MAGIC) local function start_train(pid,start_pos,itemid,fpos, bonusDummy) local player = Player(pid) if player ~= nil then local pos_n = player:getPosition() if start_pos:getDistance(pos_n) == 0 and getTilePzInfo(pos_n) then if player:getItemCount(itemid) >= 1 then local exercise = player:getItemById(itemid,true) if exercise:isItem() then if exercise:hasAttribute(ITEM_ATTRIBUTE_CHARGES) then local charges_n = exercise:getAttribute(ITEM_ATTRIBUTE_CHARGES) if charges_n >= 1 then exercise:setAttribute(ITEM_ATTRIBUTE_CHARGES,(charges_n-1)) local voc = player:getVocation() if skills[itemid].id == SKILL_MAGLEVEL then if not bonusDummy then player:addManaSpent(math.ceil(500*magicRate)) else player:addManaSpent(math.ceil(500*magicRate)*1.1) -- 10% end else if not bonusDummy then player:addSkillTries(skills[itemid].id, 1*skillRate) else player:addSkillTries(skills[itemid].id, (1*skillRate)*1.1) -- 10% end end fpos:sendMagicEffect(CONST_ME_HITAREA) if skills[itemid].range then pos_n:sendDistanceEffect(fpos, skills[itemid].range) end local training = addEvent(start_train, voc:getAttackSpeed(), pid,start_pos,itemid,fpos) player:setStorageValue(Storage.isTraining,1) else exercise:remove(1) player:sendTextMessage(MESSAGE_INFO_DESCR, "Your training weapon vanished.") stopEvent(training) player:setStorageValue(Storage.isTraining,0) end end end end else player:sendTextMessage(MESSAGE_INFO_DESCR, "Your training has stopped.") stopEvent(training) player:setStorageValue(Storage.isTraining,0) end else stopEvent(training) if player then -- verificar se o player ainda existe (logado), caso esteja, enviar mensagem de erro e parar treino. isso evita erros no console player:sendTextMessage(MESSAGE_INFO_DESCR, "Your training has stopped.") player:setStorageValue(Storage.isTraining,0) end end return true end function onUse(player, item, fromPosition, target, toPosition, isHotkey) local start_pos = player:getPosition() if player:getStorageValue(Storage.isTraining) == 1 then player:sendTextMessage(MESSAGE_INFO_DESCR, "You are already training.") return false end if target:isItem() then if isInArray(houseDummies,target:getId()) then if not skills[item.itemid].range and (start_pos:getDistance(target:getPosition()) > 1) then player:sendTextMessage(MESSAGE_INFO_DESCR, "Get closer to the dummy.") stopEvent(training) return true end player:sendTextMessage(MESSAGE_INFO_DESCR, "You started training.") start_train(player:getId(),start_pos,item.itemid,target:getPosition(), true) elseif isInArray(freeDummies, target:getId()) then if not skills[item.itemid].range and (start_pos:getDistance(target:getPosition()) > 1) then player:sendTextMessage(MESSAGE_INFO_DESCR, "Get closer to the dummy.") stopEvent(training) return true end player:sendTextMessage(MESSAGE_INFO_DESCR, "You started training.") start_train(player:getId(),start_pos,item.itemid,target:getPosition(), false) end end return true end
-
penisagudo's post in (Resolvido)[URGENTE] SHOP System In Game was marked as the answer@Usuaruio
Vamos la entao faz assim.
Em actions.xml você coloca: Sendo que no X você coloca o valor do Unique que desejar e não esqueça de colocar o nome do seu script desejado.
<action uniqueid="6063-6065" event="script" value="nomedoarquivo.lua"/>
Após isso crie um arquivo com mesmo nome e coloque isso dentro:
local chests = { [6063] = {itemNecessario = x, amountNecessario = 1 , itemRecebido = 2184, amount = 1}, [6064] = {itemNecessario = x, amountNecessario = 1 , itemRecebido = 6528, amount = 1}, [6065] = {itemNecessario = x, amountNecessario = 1 , itemRecebido = 5803, amount = 1} } -- Como editar: --Entre []: significa o unique ID do báu que voce colocara no mapa --itemNecessario: É o item necessario para voce trocar (sua Moeda de troca) --itemRecebido: É o ID do item que será dado ao jogador que abrir o báu --amount: É a quantidade de items que o player vai receber } function onUse(cid,item,fromPosition,itemEx,toPosition) local v = chests[itemRecebido.uid] if getPlayerItemCount(cid, v.itemNecessario) ~= v.amountNecessario then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Voce não tem a quantidade necessaria para troca.") elseif getPlayerFreeCap(cid) < (getItemWeightById(v.itemRecebido)*v.amount) then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Voce nao tem " .. (getItemWeightById(v.itemRecebido)*v.amount) .. " cap para trocar o item") end if getPlayerItemCount(cid, v.itemNecessario) == v.amountNecessario then doPlayerAddItem(cid, v.itemRecebido, v.amount) else for i = 1, v.amount do doPlayerAddItem(cid, v.itemRecebido, v.amount) end end return doPlayerSendTextMessage(cid,22,"Voce recebeu: " .. getItemNameById(v.itemRecebido) .. ".") end
Deixei tudo explicado no script caso ainda tenha duvidas você so precisara mexer nessa parte:
[6065] = {itemNecessario = x, amountNecessario = 1 , itemRecebido = 5803, amount = 1} -- Como editar:
--Entre []: significa o unique ID do báu que voce colocara no mapa
--itemNecessario: É o item necessario para voce trocar (sua Moeda de troca)
--itemRecebido: É o ID do item que será dado ao jogador que abrir o báu
--amount: É a quantidade de items que o player vai receber
Você pode colocar quantos baús quiser em apenas 1 script lembrando sempre de editar os numeros das uniquesIds no actions.xml conforme a seguir colocando sempre o menor - maior numero da Unique.
<action uniqueid="6063-6065" event="script" value="nomedoarquivo.lua"/> Não se esqueça de colocar as uniques nos baús no Mapa editor.
Qualquer duvida ou erro me reporte.
-
penisagudo's post in (Resolvido)[Suporte] - Dúvidas em relação ao RME was marked as the answerPossivelmente cara quando você esta colocando os monstros no mapa você clica e arrasta gerando teoricamente mais de 1 monstro no mapa por segundo fazendo com que o RME não entenda o tempo para o respawn adequado.
Tente da seguinte forma e faça o teste, abre um bicho dando duplo clique em cima e verifica o Spawn Interval nao esta como "0".
Se mudar vai funcionar.
-
penisagudo's post in (Resolvido)item se transforma em estatua dentro da mochila quando eu relogo meu char was marked as the answer@Tyrisfall
1 - Database:
- Acesse sua database;
- Clique em player_items.
- Depois clique em Estrutura:
- Na linha itemtype, clique para mudar:
- Depois, em Tipo:
- Altere para INT e valor 11:
- O resultado final deverá ser esse:
- O mesmo procedimento deverá ser feito para itemtype e count para a tabela player_depotitems, player_inboxitems e player_rewards.
- Ou apenas executar essas queries na database > SQL:
ALTER TABLE `player_items` CHANGE `itemtype` `count` INT(11) NOT NULL DEFAULT '0'; ALTER TABLE `player_depotitems` CHANGE `itemtype` `count` INT(11) NOT NULL DEFAULT '0'; ALTER TABLE `player_inboxitems` CHANGE `itemtype` `count` INT(11) NOT NULL DEFAULT '0'; ALTER TABLE `player_rewards` CHANGE `itemtype` `count` INT(11) NOT NULL DEFAULT '0'; 2 - Créditos
mattyx14 (queries SQL)
penisagudo (tutorial)
-
penisagudo's post in (Resolvido)teleport storage was marked as the answer@Vitorelias
Cria um arquivo dentro de data/movements/script com nome que desejar e coloque isso dentro.
function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) local config{ storage = , --coloca o valor da storage que você quiser posSemStorage = {x = 1974, y = 1375, z = 14}, -- posição sem storage posComStorage = {x = 2032, y = 1285, z = 12} -- posição com storage } if getPlayerStorageValue(cid, config.storage) >= 1 then doTeleportThing(cid, config.posComStorage, false) doSendMagicEffect(config.posComStorage, CONST_ME_TELEPORT) doPlayerSendTextMessage(cid, 22, "Voce foi teleportado") else doTeleportThing(cid, config.posSemStorage, false) doPlayerSendTextMessage(cid, 22, "Voce foi teleportado") doSendMagicEffect(config.posSemStorage, CONST_ME_TELEPORT) end return true end
Em movements.xml coloque isso, colocando o número da action que quiser e mudando nome do arquivo que colocou ali em cima.
<movevent type=“StepIn” actionid=“X” event=“script” value=“nomedoarquivo.lua”/>
após isso abra seu mapa editor e no teleport onde quer colocar deixe as posições tudo em 0 e no actionID coloque o mesmo que colocou na tag do movements.
se der algum erro me reporte!