Ir para conteúdo

ghunalma

Membro
  • Registro em

  • Última visita

Tudo que ghunalma postou

  1. Fiz tudo direitinho sim amigo, mas não funcionou.
  2. Não funcionou amigos, infelizmente. Ele nao da erro nenhum, mas quando abro o bau in game, nao vem as recompensas nem acusa nenhum erro na distro. local config = { [1234] = { -- ActionId do baú rewards { [1] = {itemId = 5886, amount = 50} [2] = {itemId = 5899} [3] = {itemId = 5888} -- Item ID e quantidade, por padrão quantidade é 1 }, storage = 213213 }, [1235] = { rewards = { [1] = {itemId = 2160, amount = 55} }, storage = 213213 } } function onUse(cid, item, fromPos, item2, count, toPos) local tmpConfig = config[item.actionid] if tmpConfig == nil then return false end if player:getStorageValue(tmpConfig.storage) > 0 then doPlayerSendTextMessage(cid, 22, 'It is empty.') return true end local weight = 0 for i = 1, #tmpConfig.rewards do local reward = tmpConfig.rewards[i] local weightReward = getItemWeightById(reward.itemId, reward.amount or 1) weight = weight + weightReward end if getPlayerFreeCap(cid) < weight then doPlayerSendTextMessage(cid, 22, 'You have found a reward. It weighs '.. weight ..'.00 and it is too heavy.') return true end local backpack = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK).uid local freeSlots = math.max(0, getContainerCap(backpack) - getContainerSize(backpack)) if freeSlots < #tmpConfig.rewards then doPlayerSendTextMessage(cid, 22, 'You have found a reward, but you need a free slot.')?? return true end for i = 1, #tmpConfig.rewards do local reward = tmpConfig.rewards[i] doPlayerSendTextMessage(cid, 22, 'You have found a '.. getItemNameById(reward.itemId) ..'.') doPlayerAddItem(cid, reward.itemId, reward.amount or 1) end setPlayerStorageValue(cid, tmpConfig.storage, 1) return true end O meu codigo de teste, editei e coloquei esses itens de addon, e fiz outro bau para ficar com 2 testando. Nenhum dos dois funcionou, nem trocando o storage pra ficar diferente.
  3. Valeu, vou testar e jaja posto de funcionou. Obrigado. Nao funcionou aqui amigo. Nem com a modificação do @lordzetros citou.
  4. Mas e se eu quiser por mais de um item no mesmo bau, como exemplo uma MPA e um MMS no mesmo bau? E muito obrigado.
  5. Bom dia, estou com uma duvida em um script, ja tentei colocar quantidade do item, mas nao estou conseguindo fazer funcionar. Alguém pode me ajudar? ? Ex. TFS 0.4; function onUse(cid, item, fromPos, item2, count, toPos) local _ = { [1] = {aid = 1234, item = 2160,25}, -- Aqui gostaria de colocar a quantidade 25 e colocar mais de um item em um unico bau. [2] = {aid = 1235, item = 2195}, [3] = {aid = 1231, item = 3121}, } for i = 1, #_ do _.storage = 202049 + i end for i, valor in ipairs(_) do if item.actionid == valor.aid then if getPlayerFreeCap(cid) >= getItemWeightById(valor.item, 1) then if getPlayerStorageValue(cid, valor.storage) == -1 then if doPlayerAddItem(cid, valor.item, 1, false) then doPlayerSendTextMessage(cid, 22, 'You have found a '..getItemNameById(valor.item)..'.') setPlayerStorageValue(cid, valor.storage, 1) else doPlayerSendTextMessage(cid, 22, 'You have found a '..getItemNameById(valor.item)..', but you need a free slot.') end else doPlayerSendTextMessage(cid, 22, 'It is empty.') end else doPlayerSendTextMessage(cid, 22, 'You have found a '..getItemNameById(valor.item)..'. It weighs '..getItemWeightById(valor.item, 1)..'.00 and it is too heavy.') end break end end return true end Gostaria de colocar mais de um item no bau e quantidade, mas manter esse esquema de script pois iria facilitar muito organizar as quests do meu servidor. Obrigado! Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
  6. Amigo Natanael Backman, poderia me dar uma ajuda? Meu site é pelo Xamp, eu uso o domínio .com e está apresentando o seguinte erro quando se inicia uma trasação ( quando clica em finalizar a compra dos points no site). Transação inválida. Sempre inicie transações a partir de sites confiáveis. Meu skype é ghun001 se possível me da uma força lá! Agradeço desde já!
  7. Olá, meu systema de VIP está até funcionando, só que, eu queria por um item que adicionasse vip ao ser usado. Eu uso esse script aqui, mas quando uso o item, ele some, a mensagem aparece, mas não consigo entrar no tile da vip. function onUse(cid, item, fromPosition, itemEx, toPosition) local config={ removeOnUse = "yes" -- remover quando usar ("yes" or "no") } local days = 15 -- dias que serão adicionados local daysvalue = days * 24 * 60 * 60 local storageplayer = getPlayerStorageValue(cid, 15000) local timenow = os.time() if getPlayerStorageValue(cid, 15000) - os.time() <= 0 then time = timenow + daysvalue else time = storageplayer + daysvalue end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.") setPlayerStorageValue(cid, 15000, time) local quantity = math.floor((getPlayerStorageValue(cid, 15000) - timenow)/(24 * 60 * 60)) doSendMagicEffect(getPlayerPosition(cid), math.random(28,30)) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.") if (config.removeOnUse == "yes") then doRemoveItem(item.uid, 1) end return TRUE end Alguém pode me ajudar!? Por favor! Edit: meu sistema de vip é o MOCK. Website gesior, versão 8.60
  8. Vlw! xD Pow vei, ja tentei substituir mais n rolou! =(
  9. =( ... mas valeu a intenção! xD Sim ja tentei por outro script no doors.lua no 050 function, mas de nada adiantou. =[ Ha sim, =[. achei que tivesse.
  10. Ok. Vou testar aqui. Edito jaja! Como cria spoiler mano?? Pra n fik essa coisa feia grande aqui no forum, Na proxima eu ja vou saber como se faz! =P Edit: N funfou! =(
  11. Não consigo postar o action.lua pq ele é muito grande e eu não sei postar spoiler. =[
  12. Versão: 9.81 Versão do Server: OTX server (2.51) Doors.lua 050-funcqion (lib) function isInArray(array, value, caseSensitive) if(caseSensitive == nil or caseSensitive == false) and type(value) == "string" then local lowerValue = value:lower() for _, _value in ipairs(array) do if type(_value) == "string" and lowerValue == _value:lower() then return true end end else for _, _value in ipairs(array) do if (value == _value) then return true end end end return false end function doPlayerGiveItem(cid, itemid, amount, subType) local item = 0 if(isItemStackable(itemid)) then item = doCreateItemEx(itemid, amount) if(doPlayerAddItemEx(cid, item, true) ~= RETURNVALUE_NOERROR) then return false end else for i = 1, amount do item = doCreateItemEx(itemid, subType) if(doPlayerAddItemEx(cid, item, true) ~= RETURNVALUE_NOERROR) then return false end end end return true end function doPlayerGiveItemContainer(cid, containerid, itemid, amount, subType) for i = 1, amount do local container = doCreateItemEx(containerid, 1) for x = 1, getContainerCapById(containerid) do doAddContainerItem(container, itemid, subType) end if(doPlayerAddItemEx(cid, container, true) ~= RETURNVALUE_NOERROR) then return false end end return true end function doPlayerTakeItem(cid, itemid, amount) return getPlayerItemCount(cid, itemid) >= amount and doPlayerRemoveItem(cid, itemid, amount) end function doPlayerSellItem(cid, itemid, count, cost) if(not doPlayerTakeItem(cid, itemid, count)) then return false end if(not doPlayerAddMoney(cid, cost)) then error('[doPlayerSellItem] Could not add money to: ' .. getPlayerName(cid) .. ' (' .. cost .. 'gp).') end return true end function doPlayerWithdrawMoney(cid, amount) if(not getBooleanFromString(getConfigInfo('bankSystem'))) then return false end local balance = getPlayerBalance(cid) if(amount > balance or not doPlayerAddMoney(cid, amount)) then return false end doPlayerSetBalance(cid, balance - amount) return true end function doPlayerDepositMoney(cid, amount) if(not getBooleanFromString(getConfigInfo('bankSystem'))) then return false end if(not doPlayerRemoveMoney(cid, amount)) then return false end doPlayerSetBalance(cid, getPlayerBalance(cid) + amount) return true end function doPlayerAddStamina(cid, minutes) return doPlayerSetStamina(cid, getPlayerStamina(cid) + minutes) end function isPremium(cid) return (isPlayer(cid) and (getPlayerPremiumDays(cid) > 0 or getBooleanFromString(getConfigValue('freePremium')))) end function getMonthDayEnding(day) if(day == "01" or day == "21" or day == "31") then return "st" elseif(day == "02" or day == "22") then return "nd" elseif(day == "03" or day == "23") then return "rd" end return "th" end function getMonthString(m) return os.date("%B", os.time{year = 1970, month = m, day = 1}) end function getArticle(str) return str:find("[AaEeIiOoUuYy]") == 1 and "an" or "a" end function doNumberFormat(i) local str, found = string.gsub(i, "(%d)(%d%d%d)$", "%1,%2", 1), 0 repeat str, found = string.gsub(str, "(%d)(%d%d%d),", "%1,%2,", 1) until found == 0 return str end function doPlayerAddAddons(cid, addon) for i = 0, table.maxn(maleOutfits) do doPlayerAddOutfit(cid, maleOutfits[i], addon) end for i = 0, table.maxn(femaleOutfits) do doPlayerAddOutfit(cid, femaleOutfits[i], addon) end end function getTibiaTime(num) local minutes, hours = getWorldTime(), 0 while (minutes > 60) do hours = hours + 1 minutes = minutes - 60 end if(num) then return {hours = hours, minutes = minutes} end return {hours = hours < 10 and '0' .. hours or '' .. hours, minutes = minutes < 10 and '0' .. minutes or '' .. minutes} end function doWriteLogFile(file, text) local f = io.open(file, "a+") if(not f) then return false end f:write("[" .. os.date("%d/%m/%Y %H:%M:%S") .. "] " .. text .. "\n") f:close() return true end function getExperienceForLevel(lv) lv = lv - 1 return ((50 * lv * lv * lv) - (150 * lv * lv) + (400 * lv)) / 3 end function doMutePlayer(cid, time) local condition = createConditionObject(CONDITION_MUTED, (time == -1 and time or time * 1000)) return doAddCondition(cid, condition, false) end function doSummonCreature(name, pos) local cid = doCreateMonster(name, pos, false, false) if(not cid) then cid = doCreateNpc(name, pos) end return cid end function getPlayersOnlineEx() local players = {} for i, cid in ipairs(getPlayersOnline()) do table.insert(players, getCreatureName(cid)) end return players end function getPlayerByName(name) local cid = getCreatureByName(name) return isPlayer(cid) and cid or nil end function isPlayer(cid) return isCreature(cid) and cid >= AUTOID_PLAYERS and cid < AUTOID_MONSTERS end function isPlayerGhost(cid) return isPlayer(cid) and (getCreatureCondition(cid, CONDITION_GAMEMASTER, GAMEMASTER_INVISIBLE, CONDITIONID_DEFAULT) or getPlayerFlagValue(cid, PLAYERFLAG_CANNOTBESEEN)) end function isMonster(cid) return isCreature(cid) and cid >= AUTOID_MONSTERS and cid < AUTOID_NPCS end function isNpc(cid) -- Npc IDs are over int32_t range (which is default for lua_pushnumber), -- therefore number is always a negative value. return isCreature(cid) and (cid < 0 or cid >= AUTOID_NPCS) end function isUnderWater(cid) return isInArray(underWater, getTileInfo(getCreaturePosition(cid)).itemid) end function doPlayerAddLevel(cid, amount, round) local experience, level, amount = 0, getPlayerLevel(cid), amount or 1 if(amount > 0) then experience = getExperienceForLevel(level + amount) - (round and getPlayerExperience(cid) or getExperienceForLevel(level)) else experience = -((round and getPlayerExperience(cid) or getExperienceForLevel(level)) - getExperienceForLevel(level + amount)) end return doPlayerAddExperience(cid, experience) end function doPlayerAddMagLevel(cid, amount) local amount = amount or 1 for i = 1, amount do doPlayerAddSpentMana(cid, getPlayerRequiredMana(cid, getPlayerMagLevel(cid, true) + 1) - getPlayerSpentMana(cid), false) end return true end function doPlayerAddSkill(cid, skill, amount, round) local amount = amount or 1 if(skill == SKILL__LEVEL) then return doPlayerAddLevel(cid, amount, round) elseif(skill == SKILL__MAGLEVEL) then return doPlayerAddMagLevel(cid, amount) end for i = 1, amount do doPlayerAddSkillTry(cid, skill, getPlayerRequiredSkillTries(cid, skill, getPlayerSkillLevel(cid, skill) + 1) - getPlayerSkillTries(cid, skill), false) end return true end function isPrivateChannel(channelId) return channelId >= CHANNEL_PRIVATE end function doBroadcastMessage(text, class) local class = class or MESSAGE_STATUS_WARNING if(type(class) == 'string') then local className = MESSAGE_TYPES[class] if(className == nil) then return false end class = className elseif(class < MESSAGE_FIRST or class > MESSAGE_LAST) then return false end for _, pid in ipairs(getPlayersOnline()) do doPlayerSendTextMessage(pid, class, text) end print("> Broadcasted message: \"" .. text .. "\".") return true end function doPlayerBroadcastMessage(cid, text, class, checkFlag, ghost) local checkFlag, ghost, class = checkFlag or true, ghost or false, class or TALKTYPE_BROADCAST if(checkFlag and not getPlayerFlagValue(cid, PLAYERFLAG_CANBROADCAST)) then return false end if(type(class) == 'string') then local className = TALKTYPE_TYPES[class] if(className == nil) then return false end class = className elseif(class < TALKTYPE_FIRST or class > TALKTYPE_LAST) then return false end for _, pid in ipairs(getPlayersOnline()) do doCreatureSay(cid, text, class, ghost, pid) end print("> " .. getCreatureName(cid) .. " broadcasted message: \"" .. text .. "\".") return true end function doCopyItem(item, attributes) local attributes = ((type(attributes) == 'table') and attributes or { "aid" }) local ret = doCreateItemEx(item.itemid, item.type) for _, key in ipairs(attributes) do local value = getItemAttribute(item.uid, key) if(value ~= nil) then doItemSetAttribute(ret, key, value) end end if(isContainer(item.uid)) then for i = (getContainerSize(item.uid) - 1), 0, -1 do local tmp = getContainerItem(item.uid, i) if(tmp.itemid > 0) then doAddContainerItemEx(ret, doCopyItem(tmp, true).uid) end end end return getThing(ret) end function doSetItemText(uid, text, writer, date) local thing = getThing(uid) if(thing.itemid < 100) then return false end doItemSetAttribute(uid, "text", text) if(writer ~= nil) then doItemSetAttribute(uid, "writer", tostring(writer)) if(date ~= nil) then doItemSetAttribute(uid, "date", tonumber(date)) end end return true end function getItemWeightById(itemid, count, precision) local item, count, precision = getItemInfo(itemid), count or 1, precision or false if(not item) then return false end if(count > 100) then -- print a warning, as its impossible to have more than 100 stackable items without "cheating" the count print('[Warning] getItemWeightById', 'Calculating weight for more than 100 items!') end local weight = item.weight * count return precission and weight or math.round(weight, 2) end function choose(...) local arg, ret = {...} if type(arg[1]) == 'table' then ret = arg[1][math.random(#arg[1])] else ret = arg[math.random(#arg)] end return ret end function doPlayerAddExpEx(cid, amount) if(not doPlayerAddExp(cid, amount)) then return false end local position = getThingPosition(cid) doPlayerSendTextMessage(cid, MESSAGE_EXPERIENCE, "You gained " .. amount .. " experience.", amount, COLOR_WHITE, position) local spectators, name = getSpectators(position, 7, 7), getCreatureName(cid) for _, pid in ipairs(spectators) do if(isPlayer(pid) and cid ~= pid) then doPlayerSendTextMessage(pid, MESSAGE_EXPERIENCE_OTHERS, name .. " gained " .. amount .. " experience.", amount, COLOR_WHITE, position) end end return true end function getItemTopParent(uid) local parent = getItemParent(uid) if(not parent or parent.uid == 0) then return nil end while(true) do local tmp = getItemParent(parent.uid) if(tmp and tmp.uid ~= 0) then parent = tmp else break end end return parent end function getItemHolder(uid) local parent = getItemParent(uid) if(not parent or parent.uid == 0) then return nil end local holder = nil while(true) do local tmp = getItemParent(parent.uid) if(tmp and tmp.uid ~= 0) then if(tmp.itemid == 1) then -- a creature holder = tmp break end parent = tmp else break end end return holder end function valid(f) return function(p, ...) if(isCreature(p)) then return f(p, ...) end end end Desculpa o spam, pois n sei fazer spoiler. Tive que dividir em 2 partes, pois n estava conseguindo postar devido ao tamanho dos scripts.
  13. Quando abro uma quest door ou magic door, aparece esse erro na janela do servidor. Ajuda por favoor!! Meu host ta rodadando e o server ta parado por causa deste erro. Exemplo: Eu no lvl 100 abro uma porta de lvl 100, após abrir o char n anda pro sqm dela, ou seja, ela fica aberta, podendo outro char assim, lvl mais baixo entrar nela. [31/3/2014 16:11:35] [Error - Action Interface] [31/3/2014 16:11:35] data/actions/scripts/other/doors.lua:onUse [31/3/2014 16:11:35] Description: [31/3/2014 16:11:35] data/lib/050-function2.lua:10: bad argument #1 to 'ipairs' (table expected, got nil) [31/3/2014 16:11:35] stack traceback: [31/3/2014 16:11:35] [C]: in function 'ipairs' [31/3/2014 16:11:35] data/lib/050-function2.lua:10: in function 'isInArray' [31/3/2014 16:11:35] data/actions/scripts/other/doors.lua:86: in function <data/actions/scripts/other/doors.lua:11>

Informação Importante

Confirmação de Termo