• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Need Script

haji h ali

Member
Joined
Sep 10, 2013
Messages
59
Reaction score
6
Hello, can someone please put this into script.

- I need help with this to put it in a script items ID are ( 7380 , 8930 , 8927 , 7735 , 2410 )
-- Anni-Style Chest
-- Actual annihilator loot. You get one of the following,
-- Magic Sword, Demon Armor, Stonecutter Axe, or a present box containing an annihilation bear
[14] = { aid = 45823, multi_chest = 45823, item_id = 2400 },
[15] = { aid = 45823, multi_chest = 45824, item_id = 2494 },
[16] = { aid = 45823, multi_chest = 45825, item_id = 2431 },
[17] = { aid = 45823, multi_chest = 45826, item_id = 1988, use_container = 1, container = 1990, inside = {
[1] = { item_id = 2326 }
}
},


-----------------------------------------------------------------------------------------------------
- I use this one and it works without any problems.
function onUse(cid, item, fromPosition, itemEx, toPosition)
if getPlayerStorageValue(cid, 45823) == 1 then
doPlayerSendCancel(cid, "Quest completed previously.")
return true
end
doPlayerAddItem(cid, 5944, 100, true)
setPlayerStorageValue(cid, 45017, 1)
return true
end
 
Solution
actions/scripts add:

questsystem.lua

Code:
local specialQuests = {
 [2001] = 30015 --Annihilator
}
local questsExperience = {
 [30015] = 10000
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
 if(getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) then
  doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF, cid)
  return true
 end
 local storage = specialQuests[item.actionid]
 if(not storage) then
  storage = item.uid
  if(storage > 65535) then
   return false
  end
 end
 if(getPlayerStorageValue(cid, storage) > 0) then
  doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Esta vazio.")
  return true
 end
 local items = {}
 local reward = 0
 local size = isContainer(item.uid) and getContainerSize(item.uid) or...
I do not quite understand what you want, I hope this helps:

You can use the chest system that already comes practically in all datapack
help.png
 
actions/scripts add:

questsystem.lua

Code:
local specialQuests = {
 [2001] = 30015 --Annihilator
}
local questsExperience = {
 [30015] = 10000
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
 if(getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) then
  doSendMagicEffect(getCreaturePosition(cid), CONST_ME_POFF, cid)
  return true
 end
 local storage = specialQuests[item.actionid]
 if(not storage) then
  storage = item.uid
  if(storage > 65535) then
   return false
  end
 end
 if(getPlayerStorageValue(cid, storage) > 0) then
  doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Esta vazio.")
  return true
 end
 local items = {}
 local reward = 0
 local size = isContainer(item.uid) and getContainerSize(item.uid) or 0
 if(size == 0) then
  reward = doCopyItem(item, false)
 else
  for i = 0, size do
   local tmp = getContainerItem(item.uid, i)
   if(tmp.itemid > 0) then
    table.insert(items, tmp)
   end
  end
 end
 size = table.maxn(items)
 if(size == 1) then
  reward = doCopyItem(items[1], true)
 end
 local result = ""
 if(reward ~= 0) then
  local ret = getItemDescriptions(reward.uid)
  if(reward.type > 0 and isItemRune(reward.itemid)) then
   result = reward.type .. " charges " .. ret.name
  elseif(reward.type > 0 and isItemStackable(reward.itemid)) then
   result = reward.type .. " " .. ret.plural
  else
   result = ret.article .. " " .. ret.name
  end
 else
  if(size > 20) then
   reward = doCopyItem(item, false)
  elseif(size > 8) then
   reward = getThing(doCreateItemEx(1988, 1))
  else
   reward = getThing(doCreateItemEx(1987, 1))
  end
  for i = 1, size do
   local tmp = doCopyItem(items[i], true)
   if(doAddContainerItemEx(reward.uid, tmp.uid) ~= RETURNVALUE_NOERROR) then
    print("[Warning] QuestSystem:", "Could not add quest reward")
   else
    local ret = ", "
    if(i == 2) then
     ret = " e "
    elseif(i == 1) then
     ret = ""
    end
    result = result .. ret
    ret = getItemDescriptions(tmp.uid)
    if(tmp.type > 0 and isItemRune(tmp.itemid)) then
     result = result .. tmp.type .. " charges " .. ret.name
    elseif(tmp.type > 0 and isItemStackable(tmp.itemid)) then
     result = result .. tmp.type .. " " .. ret.plural
    else
     result = result .. ret.article .. " " .. ret.name
    end
   end
  end
 end
 if(doPlayerAddItemEx(cid, reward.uid, false) ~= RETURNVALUE_NOERROR) then
  result = "Voce encontrou um item pesando " .. getItemWeight(reward.uid) .. " oz. E muito pesado ou voce nao tem espaco suficiente."
 else
  result = "You have found " .. result .. "."
  setPlayerStorageValue(cid, storage, 1)
  if(questsExperience[storage] ~= nil) then
   doPlayerAddExp(cid, questsExperience[storage])
   doSendAnimatedText(getCreaturePosition(cid), questsExperience[storage], TEXTCOLOR_WHITE)
  end
 end
 doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, result)
 return true
end

actions.xml
Code:
<action actionid="2000" event="script" value="quests/questsystem.lua"/>

Now, to add a quest, I put the actionid = "2000" and uniqueid = "1004" do not forget to add in actions.xml
Code:
 <action uniqueid ="1004" event="script" value="quests/system.lua"/>

uniqueid = "1004" works like a storage, being able to put in several chests, same in the image above.
 
Solution
Back
Top