Ir para conteúdo

penisagudo

Membro
  • Registro em

  • Última visita

Solutions

  1. 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  
  2. 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.
  3. penisagudo's post in (Resolvido)[Suporte] - Dúvidas em relação ao RME was marked as the answer   
    Possivelmente 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.
  4. 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)
  5. 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! 

Informação Importante

Confirmação de Termo