Tudo que Vodkart postou
-
(Resolvido)[PEDIDO] effect no monstro ao player aparecer na tela
function onThink(cid, interval, lastExecution) local monster_name = "Boss Iziris" -- nome do monstro local storage, exhausted = 986542, 60 local effect = 45 local t = getSpectators(getPlayerPosition(cid), 7, 5, false) -- tela do player 7x5 sqm (pode alterar) if t then for _, ret in ipairs(t) do if isMonster(ret) and getCreatureName(ret) == monster_name and getGlobalStorageValue(storage) <= os.time() then setGlobalStorageValue(storage, os.time()+exhausted) doSendMagicEffect(getCreaturePosition(ret), effect) end end end return true end @Brunds acho que não dá certo, porque o cid dos monstros é único, digamos que para todos os demons seja 38374767
-
(Resolvido)Colocar Look Para mostrar...
@mullino entao deixa eu ver o script que adiciona dodge e critical, usei pela storage ali dos códigos: local dodge, critic = 48902,48903
-
Spell Rune
então para evitar que induza o jogador ao erro, vou colocar para funcionar só em uma bp, sendo que por exemplos os IDS configurados sejam: potion : 9999 parcel: 9998 BP: 9997 ao dar use na Bp que tem 20 slots, se tiver uma BP dentro de outra BP - vai retornar um erro ou dentro desses 20 slots tenha um ID que não esteja naquela lista, por exemplo de uma golden legs, vai retornar erro dizendo que dentro da BP tem item que não pode ser desintegrado.
-
Necessito de ajuda com Função de Backpack para NPC
posta o npc inteiro
-
(Resolvido)[PEDIDO] effect no monstro ao player aparecer na tela
Não tem dificuldade nesse código, só fazer pelo creaturescript no onTarget, para que se estiver na tela do monstro (7x7 sqm que é a visão do montro e não me engano), vai soltar uns efeitos de area ou no player, no monstro, etc... ---------------------------------- registra no onLogin e cria a tag function onThink(cid, interval, lastExecution) local monster_name = "Boss Iziris" -- nome do monstro local storage = 986542 local effect = 45 local var = {} local t = getSpectators(getPlayerPosition(cid), 7, 5, false) -- tela do player 7x5 sqm (pode alterar) if t then for _, ret in ipairs(t) do if isMonster(ret) and getCreatureName(ret) == monster_name then var[#var+1] = ret end end if #var > 0 then setPlayerStorageValue(cid, storage, 1) doSendMagicEffect(getCreaturePosition(var[1]), effect) else setPlayerStorageValue(cid, storage, 0) end end return true end
-
Spell Rune
então qualquer BP vai dar para desintegrar, mas ela tem que estar vazia? Se tiver uma potion dentro, ele não vai contar tipo: Dinheiro da BP + Dinheiro da Potion
-
(Resolvido)Colocar Look Para mostrar...
@mullino function getPlayerFrags(cid) local time = os.time() local times = {today = (time - 86400), week = (time - (7 * 86400))} local contents, result = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (time - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC") if(result:getID() ~= -1) then repeat local content = {date = result:getDataInt("date")} if(content.date > times.today) then table.insert(contents.day, content) elseif(content.date > times.week) then table.insert(contents.week, content) else table.insert(contents.month, content) end until not result:next() result:free() end local size = { day = table.maxn(contents.day), week = table.maxn(contents.week), month = table.maxn(contents.month) } return size.day + size.week + size.month end function getDeathsAndKills(cid, type) -- by vodka local query,d = db.getResult("SELECT `player_id` FROM "..(tostring(type) == "kill" and "`player_killers`" or "`player_deaths`").." WHERE `player_id` = "..getPlayerGUID(cid)),0 if (query:getID() ~= -1) then repeat d = d+1 until not query:next() query:free() end return d end function GetPatenteLook(cid) local ranks, kills = { [{0, 9}] = "Iniciante", [{10, 49}] = "Ganguests", [{50, 99}] = "Assassino", [{100, 149}] = "Dead", [{150, 199}] = "Sanguinario", [{200, math.huge}] = "Killer" },getDeathsAndKills(cid, "kill") for v , r in pairs(ranks) do if kills >= v[1] and kills <= v[2] then return r end end end function getResets(cid) local query = db.getResult("SELECT `resets` FROM `players` WHERE `id`= "..getPlayerGUID(cid)) return query:getDataInt("resets") <= 0 and 0 or query:getDataInt("resets") end local dodge, critic = 48902,48903 function onLogin(cid) registerCreatureEvent(cid, "newlook") return true end function onLook(cid, thing, position, lookDistance) if isPlayer(thing.uid) and thing.uid ~= cid then doPlayerSetSpecialDescription(thing.uid,"\n[Reset: "..getResets(thing.uid).."] [Critical: "..getPlayerStorageValue(thing.uid, critic).."] [Dodge: "..getPlayerStorageValue(thing.uid, dodge).."]\n"..(getPlayerSex(thing.uid) == 0 and "Ela" or "Ele").." Matou ["..getDeathsAndKills(thing.uid, "kill").."]Players.\n"..(getPlayerSex(thing.uid) == 0 and "Ela" or "Ele").." Morreu ["..getDeathsAndKills(thing.uid, "death").."] Vezes...\nSua Patente é "..GetPatenteLook(thing.uid)..".") return true elseif thing.uid == cid then doPlayerSetSpecialDescription(cid,"\n[Reset: "..getResets(cid).."] [Critical: "..getPlayerStorageValue(cid, critic).."] [Dodge: "..getPlayerStorageValue(cid, dodge).."]\nVoce Matou ["..getDeathsAndKills(cid, "kill").."]Players.\nVoce Morreu ["..getDeathsAndKills(cid, "death").."] Vezes...\nSua Patente é "..GetPatenteLook(cid)..".") local string = 'You see yourself.' if getPlayerFlagValue(cid, PLAYERFLAG_SHOWGROUPINSTEADOFVOCATION) then string = string..' You are '.. getPlayerGroupName(cid) ..'.' elseif getPlayerVocation(cid) ~= 0 then string = string..' You are '.. getPlayerVocationName(cid) ..'.' else string = string..' You have no vocation.' end string = string..getPlayerSpecialDescription(cid)..'\n' if getPlayerGuildId(cid) > 0 then string = string..' You are ' .. (getPlayerGuildRank(cid) == '' and 'a member' or getPlayerGuildRank(cid)) ..' of the '.. getPlayerGuildName(cid) string = getPlayerGuildNick(cid) ~= '' and string..' ('.. getPlayerGuildNick(cid) ..').' or string..'.' end if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEECREATUREDETAILS) then string = string..'\nHealth: ['.. getCreatureHealth(cid) ..' / '.. getCreatureMaxHealth(cid) ..'], Mana: ['.. getCreatureMana(cid) ..' / '.. getCreatureMaxMana(cid) ..'].' string = string..'\nIP: '.. doConvertIntegerToIp(getPlayerIp(cid)) ..'.' end if getPlayerFlagValue(cid, PLAYERCUSTOMFLAG_CANSEEPOSITION) then string = string..'\nPosition: [X:'.. position.x..'] [Y:'.. position.y..'] [Z:'.. position.z..'].' end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, string) return false end return true end
-
[CREATURESCRIPT] Como eu tiro esse error?
O erro é bem simples, tem uma linha que seria essa: local lvl = getPlayerLevel(target) deveria estar depois de checar se realmente o target é player, porque no caso se atacar um monstro vai retornar esses erros tudo, então deveria estar depois dessa linha: if isPlayer(cid) and isPlayer(target) then ficando: function onKill(cid, target, lastHit) local exp1 = 1 local exp11 = 2 local exp2 = 3 local exp22 = 6 local exp3 = 9 local exp33 = 18 local exp4 = 27 local exp44 = 54 local exp5 = 81 local exp55 = 162 local exp6 = 243 if isPlayer(cid) and isPlayer(target) then local lvl = getPlayerLevel(target) if getPlayerIp(cid) == getPlayerIp(target) then doCreatureSay(cid, "Voce nao recebe EXP por matar MC", TALKTYPE_ORANGE_1) return true end if getPlayerLevel(target) > 1 and getPlayerLevel(target) < 5000 and getPlayerLevel(cid) > 1 then doSendAnimatedText(getPlayerPosition(cid), "10000000", 215) doPlayerAddExperience(cid, getPlayerLevel(cid) * exp1 * lvl) elseif getPlayerLevel(target) > 5000 and getPlayerLevel(target) < 10000 and getPlayerLevel(cid) > 1 then doSendAnimatedText(getPlayerPosition(cid), "20000000", 215) doPlayerAddExperience(cid, getPlayerLevel(cid) * exp11 * lvl) elseif getPlayerLevel(target) > 10000 and getPlayerLevel(target) < 15000 and getPlayerLevel(cid) > 1 then doSendAnimatedText(getPlayerPosition(cid), "30000000", 215) doPlayerAddExperience(cid, getPlayerLevel(cid) * exp2 * lvl) elseif getPlayerLevel(target) > 15000 and getPlayerLevel(target) < 20000 and getPlayerLevel(cid) > 1 then doSendAnimatedText(getPlayerPosition(cid), "40000000", 215) doPlayerAddExperience(cid, getPlayerLevel(cid) * exp22 * lvl) elseif getPlayerLevel(target) > 20000 and getPlayerLevel(target) < 25000 and getPlayerLevel(cid) > 1 then doSendAnimatedText(getPlayerPosition(cid), "50000000", 215) doPlayerAddExperience(cid, getPlayerLevel(cid) * exp3 * lvl) elseif getPlayerLevel(target) > 25000 and getPlayerLevel(target) < 30000 and getPlayerLevel(cid) > 1 then doSendAnimatedText(getPlayerPosition(cid), "60000000", 215) doPlayerAddExperience(cid, getPlayerLevel(cid) * exp33 * lvl) elseif getPlayerLevel(target) > 30000 and getPlayerLevel(target) < 35000 and getPlayerLevel(cid) > 1 then doSendAnimatedText(getPlayerPosition(cid), "70000000", 215) doPlayerAddExperience(cid, getPlayerLevel(cid) * exp4 * lvl) elseif getPlayerLevel(target) > 35000 and getPlayerLevel(target) < 40000 and getPlayerLevel(cid) > 1 then doSendAnimatedText(getPlayerPosition(cid), "80000000", 215) doPlayerAddExperience(cid, getPlayerLevel(cid) * exp44 * lvl) elseif getPlayerLevel(target) > 40000 and getPlayerLevel(target) < 45000 and getPlayerLevel(cid) > 1 then doSendAnimatedText(getPlayerPosition(cid), "90000000", 215) doPlayerAddExperience(cid, getPlayerLevel(cid) * exp5 * lvl) elseif getPlayerLevel(target) > 45000 and getPlayerLevel(target) < 50000 and getPlayerLevel(cid) > 1 then doSendAnimatedText(getPlayerPosition(cid), "100000000", 210) doPlayerAddExperience(cid, getPlayerLevel(cid) * exp55 * lvl) elseif getPlayerLevel(target) > 50000 and getPlayerLevel(target) < 90000 and getPlayerLevel(cid) > 1 then doSendAnimatedText(getPlayerPosition(cid), "110000000", 210) doPlayerAddExperience(cid, getPlayerLevel(cid) * exp6 * lvl) end end return true end fica ai de aprendizagem.
-
Ajuda com sistema de Reset
@Weeeh16 tem sim, qual o sistema e os códigos que vc utiliza?
-
(Resolvido)Colocar Look Para mostrar...
qual teu sistema de critical e dodge? o reset vai aparecer como no look? [Resets: 50][Critical: 10][Dodge: 100] ??? olha que estranho que ficaria kkk
-
Ajuda com sistema de Reset
local config = { level_remain= 130, exp_remain= 34963300, levels_reset= {1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000} } function getPlayerResets(cid) local consulta = db.getResult("SELECT `reset` FROM `players` WHERE `id` = "..getPlayerGUID(cid)) return consulta:getDataInt('reset') <= 0 and 0 or consulta:getDataInt('reset') end function setPlayerReset(cid) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) doRemoveCreature(cid) db.query("UPDATE `players` SET `level` = "..config.level_remain..", `experience` = "..config.exp_remain..", `reset` = `reset`+1 WHERE `id` = "..getPlayerGUID(cid)) return true end function onSay(cid, words, param, channel) if (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then doPlayerSendTextMessage(cid,22,"Você Precisa estar sem Battle para Resetar.") return TRUE end local resets = getPlayerResets(cid) if (getPlayerLevel(cid) >= config.levels_reset[resets+1]) then setPlayerReset(cid) else doPlayerSendTextMessage(cid,22,"Voce nao tem level minimo para o reset.") end return true end
-
(Resolvido)[Erro] Script deixa você com Pontos negativo
function onTradeAccept(cid, target, item, targetItem) if isPlayer(cid) and isPlayer(target) then if item.itemid == Points_Trade.Document_ItemID then local var = DocumentPoints(item) if getPlayerPoints(cid) >= var then doPlayerSendTextMessage(target, MESSAGE_STATUS_WARNING, "Você recebeu ".. var .." premium points.") doPlayerAddPoints(target, var) doPlayerRemovePoints(cid, var) addEvent(doPlayerRemoveItem, 1, target, Points_Trade.Document_ItemID, 1) end end if targetItem.itemid == Points_Trade.Document_ItemID then local var = DocumentPoints(targetItem) if getPlayerPoints(target) >= var then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você recebeu ".. var .." premium points.") doPlayerAddPoints(cid, var) doPlayerRemovePoints(target, var) addEvent(doPlayerRemoveItem, 1, cid, Points_Trade.Document_ItemID, 1) end end end return true end function onTradeRequest(cid, target, item) if item.itemid == Points_Trade.Document_ItemID then if getPlayerPoints(cid) < DocumentPoints(item) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você não tem ".. DocumentPoints(item) .." para realizar uma troca.") return false end end return true end
-
(Resolvido)[Erro] Script deixa você com Pontos negativo
@Phineasz testa assim: function onTradeAccept(cid, target, item, targetItem) if isPlayer(cid) and isPlayer(target) then if getGlobalStorageValue(895413) <= os.time() then if item.itemid == Points_Trade.Document_ItemID then doPlayerSendTextMessage(target, MESSAGE_STATUS_WARNING, "Você recebeu ".. DocumentPoints(item) .." premium points.") doPlayerAddPoints(target, DocumentPoints(item)) doPlayerRemovePoints(cid, DocumentPoints(item)) addEvent(doPlayerRemoveItem, 1, target, Points_Trade.Document_ItemID, 1) end if targetItem.itemid == Points_Trade.Document_ItemID then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você recebeu ".. DocumentPoints(targetItem) .." premium points.") doPlayerAddPoints(cid, DocumentPoints(targetItem)) doPlayerRemovePoints(target, DocumentPoints(targetItem)) addEvent(doPlayerRemoveItem, 1, cid, Points_Trade.Document_ItemID, 1) end setGlobalStorageValue(895413, os.time()+2) end end return true end function onTradeRequest(cid, target, item) if item.itemid == Points_Trade.Document_ItemID then if getPlayerPoints(cid) < DocumentPoints(item) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você não tem ".. DocumentPoints(item) .." para realizar uma troca.") return false end end return true end
-
(Resolvido)[Erro] Script deixa você com Pontos negativo
@Phineasz Mano, só editei aquela parte ali, mas era pra copiar tudo ne function onTradeAccept(cid, target, item, targetItem) if isPlayer(cid) and isPlayer(target) then if item.itemid == Points_Trade.Document_ItemID then local var = DocumentPoints(item) if doPlayerRemovePoints(cid, var) then doPlayerSendTextMessage(target, MESSAGE_STATUS_WARNING, "Você recebeu ".. var .." premium points.") doPlayerAddPoints(target, var) addEvent(doPlayerRemoveItem, 1, target, Points_Trade.Document_ItemID, 1) end return true end if targetItem.itemid == Points_Trade.Document_ItemID then local ret = DocumentPoints(targetItem) if doPlayerRemovePoints(target, ret) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você recebeu ".. DocumentPoints(targetItem) .." premium points.") doPlayerAddPoints(cid, ret) addEvent(doPlayerRemoveItem, 1, cid, Points_Trade.Document_ItemID, 1) end return true end end return true end function onTradeRequest(cid, target, item) if item.itemid == Points_Trade.Document_ItemID then if getPlayerPoints(cid) < DocumentPoints(item) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você não tem ".. DocumentPoints(item) .." para realizar uma troca.") return false end end return true end
-
(Resolvido)[Erro] Script deixa você com Pontos negativo
@Phineasz parece que esta repetindo 2x o código. function onTradeAccept(cid, target, item, targetItem) if isPlayer(cid) and isPlayer(target) then if item.itemid == Points_Trade.Document_ItemID then local var = DocumentPoints(item) if doPlayerRemovePoints(cid, var) then doPlayerSendTextMessage(target, MESSAGE_STATUS_WARNING, "Você recebeu ".. var .." premium points.") doPlayerAddPoints(target, var) addEvent(doPlayerRemoveItem, 1, target, Points_Trade.Document_ItemID, 1) end return true end if targetItem.itemid == Points_Trade.Document_ItemID then local ret = DocumentPoints(targetItem) if doPlayerRemovePoints(target, ret) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você recebeu ".. DocumentPoints(targetItem) .." premium points.") doPlayerAddPoints(cid, ret) addEvent(doPlayerRemoveItem, 1, cid, Points_Trade.Document_ItemID, 1) end return true end end return true end testa assim, se continuar duplicando eu coloco outra coisa.
-
(Resolvido)[Erro] Script deixa você com Pontos negativo
troca essa função: function getPlayerPoints(cid) local AccountID = getPlayerAccountId(cid) local Points = 0 local Result = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = ".. AccountID .."") if Result:getID() ~= -1 then Points = Result:getDataInt("premium_points") end return tonumber(Points) end por essa: function getPlayerPoints(cid) local AccountID = getPlayerAccountId(cid) local Result = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = ".. AccountID) return Result:getDataInt("premium_points") <= 0 and 0 or Result:getDataInt("premium_points") -- DataInt é number. end e o script do npc deixa assim: 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 greetCallback(cid) talkState[cid] = 0 return true end function creatureSayCallback(cid, type, msg) if (not npcHandler:isFocused(cid)) then return false end if talkState[cid] == nil or talkState[cid] == 0 then Count_Points = tonumber(msg) if isInArray(Points_Trade.Points, Count_Points) then npcHandler:say("Do you want to buy a premium points transfer document that will transfer ".. Count_Points .." premium points, right?", cid) talkState[cid] = 1 else npcHandler:say("Escolha um numero entre ".. table.concat(Points_Trade.Points, ', ') ..".", cid) talkState[cid] = 0 end elseif talkState[cid] == 1 then if msgcontains(msg, 'yes') then if getPlayerPoints(cid) >= Count_Points then local Document = doCreateItemEx(Points_Trade.Document_ItemID) doItemSetAttribute(Document, "name", "".. Count_Points .." premium points transfer document") doItemSetAttribute(Document, "points", Count_Points) doPlayerAddItemEx(cid, Document) doPlayerRemovePoints(cid, Count_Points) npcHandler:say("Você obteve um documento que vale ".. Count_Points .." premium points, use ele no trade com alguem.", cid) talkState[cid] = 0 else npcHandler:say("Desculpe, mas voce nao tem ".. Count_Points .." Points.", cid) talkState[cid] = 0 end else npcHandler:say("Ok, volte mais tarde.", cid) talkState[cid] = 0 end end return true end npcHandler:setMessage(MESSAGE_GREET, "Ola |PLAYERNAME|. Eu vendo alguns utensílios e Premium Points transfers para você transferir pontos para outros jogadores, lembre-se para comprar use '10,ppt' para 10 pontos.") npcHandler:setCallback(CALLBACK_GREET, greetCallback) npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
-
(Resolvido)[ERRO] Effect ao item dropar de um monstro!
@Yamborghini local stone_effects = { --[itemid] = effect, --Ex.: [11447] = 297, [11442] = 298, } local function sendEffStone(cid, pos, stones) if not isCreature(cid) then return true end for i = 1, 255 do pos.stackpos = i local item = getTileThingByPos(pos) if item.uid ~= 0 then if isContainer(item.uid) then if isContainer(item.uid) and getContainerSize(item.uid) > 0 then for slot=0, (getContainerSize(item.uid)-1) do local stone = getContainerItem(item.uid, slot) if isInArray(stones, stone.itemid) and stone_effects[stone.itemid] then doSendMagicEffect({x= pos.x+1, y= pos.y, z= pos.z}, stone_effects[stone.itemid]) end end end end end end end function onKill(cid, target) local stones = {11453, 11441, 11442, 11443, 11444, 11445, 11446, 11447, 11448, 11449, 11450, 11451, 11452, 11454, 12244, 12232, 12242, 12417, 12419, 12245, 12401, 12402, 12403, 12404, 12405, 12406, 12407, 12408, 12409, 12410, 12411, 12412, 12413, 12414} --id de todas as stones if ehMonstro(target) and isPlayer(cid) then local pos = getThingPos(target) local pid = getCreatureSummons(cid)[1] addEvent(sendEffStone, 150, pid, pos, stones) end return true end
-
(Resolvido)Coal Basin acendendo e apagando
ta mas essa strong potion funciona no seu ot? porque como seria uma "action" teria que editar o script do potion que heala para atribur nova função...
-
(Resolvido)[ERRO] Effect ao item dropar de um monstro!
local stone_effects = { --[itemid] = effect, --Ex.: [11447] = 297, [11442] = 298, } local function sendEffStone(cid, pos, stones) if not isCreature(cid) then return true end for i = 1, 255 do pos.stackpos = i local item = getTileThingByPos(pos) if item.uid ~= 0 then if isContainer(item.uid) then if isContainer(item.uid) and getContainerSize(item.uid) > 0 then for slot=0, (getContainerSize(item.uid)-1) do local stone = getContainerItem(item.uid, slot) if isInArray(stones, stone.itemid) and stone_effects[stone.itemid] then doSendMagicEffect(pos, stone_effects[stone.itemid]) end end end end end end end function onKill(cid, target) local stones = {11453, 11441, 11442, 11443, 11444, 11445, 11446, 11447, 11448, 11449, 11450, 11451, 11452, 11454, 12244, 12232, 12242, 12417, 12419, 12245, 12401, 12402, 12403, 12404, 12405, 12406, 12407, 12408, 12409, 12410, 12411, 12412, 12413, 12414} --id de todas as stones if ehMonstro(target) and isPlayer(cid) then local pos = getThingPos(target) local pid = getCreatureSummons(cid)[1] addEvent(sendEffStone, 150, pid, pos, stones) end return true end
-
(Resolvido)Modificação de Script
function onSay(cid, words, param) local charge_price = 1 -- quantidade por carga do item abaixo local item_id = 2159 -- id do item que será removido local slotShield = nil local slotArmor = nil local slotLegs = nil local slotHelmet = nil local slotBoots = nil local slotWeapon = nil local slots = { [1] = {slot=slotHelmet, lib=helmets}, [4] = {slot=slotArmor, lib=armors}, [5] = {slot=slotShield, lib=shields}, [6] = {slot=slotShield, lib=shields}, [7] = {slot=slotLegs, lib=legs}, [8] = {slot=slotBoots, lib=boots} } if weapons[getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid] then slotWeapon = CONST_SLOT_RIGHT elseif weapons[getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid] then slotWeapon = CONST_SLOT_LEFT end if shields[getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid] then slotShield = CONST_SLOT_RIGHT elseif shields[getPlayerSlotItem(cid, CONST_SLOT_LEFT).itemid] then slotShield = CONST_SLOT_LEFT end local price = 0 if param == "weapon" then if slotWeapon ~= nil then if (getItemAttribute(getPlayerSlotItem(cid, slotWeapon).uid, "Charges") == "Broken") then price = (weapons[getPlayerSlotItem(cid, slotWeapon).itemid].charge) else price = ((weapons[getPlayerSlotItem(cid, slotWeapon).itemid].charge) - (getItemAttribute(getPlayerSlotItem(cid, slotWeapon).uid, "Charges"))) end if doPlayerRemoveItem(cid, item_id, price*charge_price) then doItemSetAttribute(getPlayerSlotItem(cid, slotWeapon).uid, "Charges", weapons[getPlayerSlotItem(cid, slotWeapon).itemid].charge) setItemName(getPlayerSlotItem(cid, slotWeapon).uid, getItemNameById(getPlayerSlotItem(cid, slotWeapon).itemid)..' [Dur: '.. (getItemAttribute(getPlayerSlotItem(cid, slotWeapon).uid, "Charges")) ..'/'.. weapons[getPlayerSlotItem(cid, slotWeapon).itemid].charge ..']') doPlayerSendTextMessage(cid, 22, "Sua weapon foi reparada.") doSendMagicEffect(getPlayerPosition(cid), 29) else doPlayerSendTextMessage(cid, 23, "Desculpe mas você não tem "..(price*charge_price).."x "..getItemNameById(item_id).." para reparar sua weapon") return true end else doPlayerSendTextMessage(cid, 23, "Seu slot de weapon esta vazio.") end return true end if param == "shield" then if slotShield ~= nil then if (getItemAttribute(getPlayerSlotItem(cid, slotShield).uid, "Charges") == "Broken") then price = (shields[getPlayerSlotItem(cid, slotShield).itemid].charge) else price = ((shields[getPlayerSlotItem(cid, slotShield).itemid].charge) - (getItemAttribute(getPlayerSlotItem(cid, slotShield).uid, "Charges"))) end if doPlayerRemoveItem(cid, item_id, price*charge_price) then doItemSetAttribute(getPlayerSlotItem(cid, slotShield).uid, "Charges", shields[getPlayerSlotItem(cid, slotShield).itemid].charge) setItemName(getPlayerSlotItem(cid, slotShield).uid, getItemNameById(getPlayerSlotItem(cid, slotShield).itemid)..' [Dur: '.. (getItemAttribute(getPlayerSlotItem(cid, slotShield).uid, "Charges")) ..'/'.. shields[getPlayerSlotItem(cid, slotShield).itemid].charge ..']') setItemDefense(getPlayerSlotItem(cid, slotShield).uid, shields[getPlayerSlotItem(cid, slotShield).itemid].def) doPlayerSendTextMessage(cid, 22, "Seu shield foi reparado.") doSendMagicEffect(getPlayerPosition(cid), 29) else doPlayerSendTextMessage(cid, 23, "Desculpe mas você não tem "..(price*charge_price).."x "..getItemNameById(item_id).." para reparar seu shield.") return true end else doPlayerSendTextMessage(cid, 23, "Seu slot de shield esta vazio.") end return true end if param == "armor" then i = 4 if slots[i].lib[getPlayerSlotItem(cid, i).itemid] then slots[i].slot = i if (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges") == "Broken") then price = (slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) else price = ((slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) - (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges"))) end if doPlayerRemoveItem(cid, item_id, price*charge_price) then doItemSetAttribute(getPlayerSlotItem(cid, i).uid, "Charges", slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) setItemName(getPlayerSlotItem(cid, i).uid, getItemNameById(getPlayerSlotItem(cid, i).itemid)..' [Dur: '.. (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges")) ..'/'.. slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge ..']') setItemArmor(getPlayerSlotItem(cid, i).uid, slots[i].lib[getPlayerSlotItem(cid, i).itemid].arm) doPlayerSendTextMessage(cid, 22, "Seu armor foi reparado.") doSendMagicEffect(getPlayerPosition(cid), 29) else doPlayerSendTextMessage(cid, 23, "Desculpe mas você não tem "..(price*charge_price).."x "..getItemNameById(item_id).." para reparar sua armor") return true end else doPlayerSendTextMessage(cid, 23, "Seu slot de armor esta vazio.") end return true end if param == "legs" then i = 7 if slots[i].lib[getPlayerSlotItem(cid, i).itemid] then slots[i].slot = i if (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges") == "Broken") then price = (slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) else price = ((slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) - (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges"))) end if doPlayerRemoveItem(cid, item_id, price*charge_price) then doItemSetAttribute(getPlayerSlotItem(cid, i).uid, "Charges", slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) setItemName(getPlayerSlotItem(cid, i).uid, getItemNameById(getPlayerSlotItem(cid, i).itemid)..' [Dur: '.. (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges")) ..'/'.. slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge ..']') setItemArmor(getPlayerSlotItem(cid, i).uid, slots[i].lib[getPlayerSlotItem(cid, i).itemid].arm) doPlayerSendTextMessage(cid, 22, "Sua legs foi reparada.") doSendMagicEffect(getPlayerPosition(cid), 29) else doPlayerSendTextMessage(cid, 23, "Desculpe mas você não tem "..(price*charge_price).."x "..getItemNameById(item_id).." para reparar sua legs.") return true end else doPlayerSendTextMessage(cid, 23, "Seu slot de legs esta vazio.") end return true end if param == "boots" then i = 8 if slots[i].lib[getPlayerSlotItem(cid, i).itemid] then slots[i].slot = i if (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges") == "Broken") then price = (slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) else price = ((slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) - (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges"))) end if doPlayerRemoveItem(cid, item_id, price*charge_price) then doItemSetAttribute(getPlayerSlotItem(cid, i).uid, "Charges", slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) setItemName(getPlayerSlotItem(cid, i).uid, getItemNameById(getPlayerSlotItem(cid, i).itemid)..' [Dur: '.. (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges")) ..'/'.. slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge ..']') setItemArmor(getPlayerSlotItem(cid, i).uid, slots[i].lib[getPlayerSlotItem(cid, i).itemid].arm) doPlayerSendTextMessage(cid, 22, "Sua boots foi reparada.") doSendMagicEffect(getPlayerPosition(cid), 29) else doPlayerSendTextMessage(cid, 23, "Desculpe mas você não tem "..(price*charge_price).."x "..getItemNameById(item_id).." para reparar sua bota.") return true end else doPlayerSendTextMessage(cid, 23, "Seu slot de boots esta vazio.") end return true end if param == "helmet" then i = 1 if slots[i].lib[getPlayerSlotItem(cid, i).itemid] then slots[i].slot = i if (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges") == "Broken") then price = (slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) else price = ((slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) - (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges"))) end if doPlayerRemoveItem(cid, item_id, price*charge_price) then doItemSetAttribute(getPlayerSlotItem(cid, i).uid, "Charges", slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) setItemName(getPlayerSlotItem(cid, i).uid, getItemNameById(getPlayerSlotItem(cid, i).itemid)..' [Dur: '.. (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges")) ..'/'.. slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge ..']') setItemArmor(getPlayerSlotItem(cid, i).uid, slots[i].lib[getPlayerSlotItem(cid, i).itemid].arm) doPlayerSendTextMessage(cid, 22, "Seu helmet foi reparado.") doSendMagicEffect(getPlayerPosition(cid), 29) else doPlayerSendTextMessage(cid, 23, "Desculpe mas você não tem "..(price*charge_price).."x "..getItemNameById(item_id).." para reparar sua bota") return true end else doPlayerSendTextMessage(cid, 23, "Seu slot de helmet esta vazio.") end return true end local pricetotal = 0 for i=1, 8 do if slots[i] ~= nil then if slots[i].lib[getPlayerSlotItem(cid, i).itemid] then slots[i].slot = i if (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges") == "Broken") then pricetotal = ((slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) + pricetotal) else pricetotal = (((slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) - (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges"))) + pricetotal) end end end end if slotWeapon ~= nil then if (getItemAttribute(getPlayerSlotItem(cid, slotWeapon).uid, "Charges") == "Broken") then pricetotal = ((weapons[getPlayerSlotItem(cid, slotWeapon).itemid].charge) + pricetotal) else pricetotal = (((weapons[getPlayerSlotItem(cid, slotWeapon).itemid].charge) - (getItemAttribute(getPlayerSlotItem(cid, slotWeapon).uid, "Charges"))) + pricetotal) end end if doPlayerRemoveItem(cid, item_id, pricetotal*charge_price) then for i=1, 8 do if slots[i] ~= nil then if slots[i].lib[getPlayerSlotItem(cid, i).itemid] then slots[i].slot = i if isShield(getPlayerSlotItem(cid, i).uid) then setItemDefense(getPlayerSlotItem(cid, i).uid, slots[i].lib[getPlayerSlotItem(cid, i).itemid].def) elseif not isWeapon(getPlayerSlotItem(cid, i).uid) then setItemArmor(getPlayerSlotItem(cid, i).uid, slots[i].lib[getPlayerSlotItem(cid, i).itemid].arm) end doItemSetAttribute(getPlayerSlotItem(cid, i).uid, "Charges", slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge) setItemName(getPlayerSlotItem(cid, i).uid, getItemNameById(getPlayerSlotItem(cid, i).itemid)..' [Dur: '.. (getItemAttribute(getPlayerSlotItem(cid, i).uid, "Charges")) ..'/'.. slots[i].lib[getPlayerSlotItem(cid, i).itemid].charge ..']') end end end if slotWeapon ~= nil then doItemSetAttribute(getPlayerSlotItem(cid, slotWeapon).uid, "Charges", weapons[getPlayerSlotItem(cid, slotWeapon).itemid].charge) setItemName(getPlayerSlotItem(cid, slotWeapon).uid, getItemNameById(getPlayerSlotItem(cid, slotWeapon).itemid)..' [Dur: '.. (getItemAttribute(getPlayerSlotItem(cid, slotWeapon).uid, "Charges")) ..'/'.. weapons[getPlayerSlotItem(cid, slotWeapon).itemid].charge ..']') end doPlayerSendTextMessage(cid, 22, "Seus itens foram reparados.") doSendMagicEffect(getPlayerPosition(cid), 30) else doPlayerSendTextMessage(cid, 23, "Desculpe, Você não possui "..(pricetotal*charge_price).."x "..getItemNameById(item_id).." para reparar todos os itens") return true end return TRUE end
-
Jogador com maior storage ganhar premio
@Woah41 local config = { storage = 589648, -- vai voltar a parede em 5 minutos reward = {2160, 10} -- item id e quantidade } function onTimer() local players = getPlayersOnline() if #players <= 0 then return true end table.sort(players, function(a, b) return getPlayerStorageValue(a, config.storage) > getPlayerStorageValue(b, config.storage) end) doPlayerAddItem(players[1], config.reward[1], config.reward[2]) return true end TAG <globalevent name="reward timer" time="19:00" event="script" value="nome do seu script.lua"/> Caso der erro na função main, troque o "onTimer()" por "onTime()"
-
(Resolvido)Task system 3.0 nao conta mostros
@leozincorsair troca essa linha: if isMonster(target) and not isSummon(target) then por if isMonster(target) then
-
Logo Para Servidor
Este tópico foi movido para a área correta. Esta é uma mensagem automática! Pedimos que leia as regras do fórum!
-
Ajuda com runa
@Pifafa tenta trocar doPlayerAddHealth(cid, math.random(1065, 1695)) por doCreatureAddHealth(cid, math.random(1065, 1695))
-
(Resolvido)AJUDA SCRIPTS ACTION - TFS 0.4
galera ele só quer poder adicionar mais itens conforme os points, digamos que com 12 points vem aquela porrada de itens... exemplo assim: local lever = { [7200] = {amount = 12, items = {{2474,1},{12568,1},{2469,1},{11114,1},{2181,1},{7365,1},{8905,1},{12001,1}}}, [7138] = {amount = 200, items = {{7903,1},{7884,1},{7885,1},{7886,1},{8911,1},{7363,1},{7460,1},{7390,1}}}, [7146] = {amount = 300, items = {{7900,1},{7899,1},{7894,1},{7891,1},{12597,1},{12391,1},{3974,1},{2446,1}}} } function getItemsLevers(cid, items) local backpack = doPlayerAddItem(cid, 1999, 1) -- backpackID for _, i_i in ipairs(items) do local item, amount = i_i[1],i_i[2] if isItemStackable(item) or amount == 1 then doAddContainerItem(backpack, item, amount) else for i = 1, amount do doAddContainerItem(backpack, item, 1) end end end end function getItemsFromList(items) local str = '' if table.maxn(items) > 0 then for i = 1, table.maxn(items) do str = str .. items[i][2] .. ' ' .. getItemNameById(items[i][1]) if i ~= table.maxn(items) then str = str .. ', ' end end end return str end local storage,exausted = 98762, 2 function onUse(cid,item,fromPosition,itemEx,toPosition) if not lever[item.actionid] then return true end local var = lever[item.actionid] if getotfunPoints(cid) < var.amount then return doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Você precisa de "..var.amount.." Ot Fun points.") elseif getPlayerStorageValue(cid, storage) >= os.time() then return doPlayerSendCancel(cid, "espere " .. getPlayerStorageValue(cid, storage) - os.time() .. " alguns segundos e tente novamente.") end getItemsLevers(cid, var.items) doPlayerSendTextMessage(cid,22,"Você Acaba De Adquirir: " .. getItemsFromList(var.items)) doPlayerRemoveotfunPoints(cid,var.amount) setPlayerStorageValue(cid, storage, os.time()+exausted) doSendMagicEffect(getCreaturePosition(cid), math.random(28,30)) doTransformItem(item.uid, item.itemid == 1740 and 1740 or 1740) -- troque aqui o id da alavanca return true end -------------------------------- agora você pode adicionar quantos items quiser, só colocar {itemid, amount} exemplo: items = {{2173,1},{2160,10}} ai para adicionar mais itens ficaria: items = {{2173,1},{2160,10},{2494,1}}