@Technic
Test:
Lua:function onStepIn(cid, item, position, fromPosition) -- Script by BomBa if item.actionid == 5566 if isPlayer(cid) == TRUE then local storageOnRemove = 449933 setPlayerStorageValue(cid, storageOnRemove, 1) end return TRUE -- Script by BomBa end if item.actionid == 6655 -- Script by BomBa local positions = { spikeSword = {x=100, y=10, z=1, stackpos=255}, fieldPos = {{x=100, y=10, z=1, stackpos=1}, {x=100, y=10, z=1, stackpos=1}, {x=100, y=10, z=1, stackpos=1}, {x=100, y=10, z=1, stackpos=1}} } if isPlayer(cid) == TRUE then local storageOnRemove = 449933 if getPlayerStorageValue(cid, storageOnRemove) == 1 then for a = 4, table.maxn(positions.fieldPos) do doRemoveItem(getThingfromPos(positions.fieldPos[a]).uid, 1) addEvent(onCreateSwordOfFury, 60000) setPlayerStorageValue(cid, storageOnRemove, 2) elseif getPlayerStorageValue(cid, storageOnRemove) == 2 then doPlayerSendCancel(cid, "Sorry, not possible.") end end end return TRUE -- Script by BomBa end function onCreateSwordOfFury() -- Script by BomBa local createAgain = FALSE if createAgain == TRUE then local positions = { spikeSword = {x=100, y=10, z=1}, fieldPos = {{x=100, y=10, z=1}, {x=100, y=10, z=1}, {x=100, y=10, z=1}, {x=100, y=10, z=1}} } local fieldId = 1487 doCreateItem(2383, 1, positions.spikeSword) for b = 4, table.maxn(positions.fieldPos) do doCreateItem(fieldId, 1, positions.fieldPos[b]) end return TRUE end return TRUE -- Script by BomBa end
Reward System: When I give 2 talons NPC teleport me into a choose position.
Type Of Script: NPC
Priority: High
Reason: Because I cannot open my server without this script
Public
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 creatureSayCallback(cid, type, msg)
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
local storage = 5000 --Set a storage value
local place = {x=1000, y=1000, z=7}
if(msgcontains(msg, 'talon Tp please') or msgcontains(msg, 'talons')) then
npcHandler:say("Do you wanna ride the Boat to the place for 2 talons?", cid)
talkState[talkUser] = 1
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
if(doPlayerRemoveItem(cid, 2151, 2) == TRUE) then
npcHandler:say("Off you go!", cid)
doTeleportThing(cid,place)
talkState[talkUser] = 0
else
npcHandler:say("Sorry, you don\'t have enough money.", cid)
talkState[talkUser] = 0
end
elseif(msgcontains(msg, 'no') and talkState[talkUser] > 0) then
npcHandler:say("Then not.", cid)
talkState[talkUser] = 0
end
return TRUE
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
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 creatureSayCallback(cid, type, msg)
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
local storage = 5000 --Set a storage value
local place = {x=1000, y=1000, z=7}
if(msgcontains(msg, 'talon Tp please') or msgcontains(msg, 'talons')) then
npcHandler:say("Do you wanna ride the Boat to the place for 2 talons?", cid)
talkState[talkUser] = 1
elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
if(doPlayerRemoveItem(cid, 2151, 100) == TRUE) then
npcHandler:say("Off you go!", cid)
doTeleportThing(cid,place)
talkState[talkUser] = 0
else
npcHandler:say("Sorry, you don\'t have enough money.", cid)
talkState[talkUser] = 0
end
elseif(msgcontains(msg, 'no') and talkState[talkUser] > 0) then
npcHandler:say("Then not.", cid)
talkState[talkUser] = 0
end
return TRUE
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
-You talk to the NPC and he gives you a mission to kill 400 rats.
-Then the quest would appear in the quest log saying "You have killed 0/400 rats." Then every rat you kill, that count goes up by one, so if you killed 57 rats after you were given the mission, it would show "You have killed 57/400 rats.".
-Then after you kill 400 rats, you will go back to the NPC and he will give you a prize.
-Then you ask him for another mission and this time its a different monster or different kill count, so on so forth.
local function checkStackpos(item, position)
position.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
local thing = getThingFromPos(position)
position.stackpos = STACKPOS_TOP_FIELD
local field = getThingFromPos(position)
return (item.uid == thing.uid or thing.itemid < 100 or field.itemid == 0)
end
function onUse(cid, item, fromPosition, itemEx, toPosition)
if(getItemLevelDoor(item.itemid) > 0) then
if(item.actionid == 189) then
if(isPremium(cid) ~= TRUE) then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")
return TRUE
end
doTransformItem(item.uid, item.itemid + 1)
doTeleportThing(cid, toPosition, TRUE)
return TRUE
end
local gender = item.actionid - 186
if(isInArray({PLAYERSEX_FEMALE, PLAYERSEX_MALE, PLAYERSEX_GAMEMASTER}, gender) == TRUE) then
local playerGender = getPlayerSex(cid)
if(playerGender ~= gender) then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")
return TRUE
end
doTransformItem(item.uid, item.itemid + 1)
doTeleportThing(cid, toPosition, TRUE)
return TRUE
end
local skull = item.actionid - 180
if(skull >= 0 and skull < 6) then
local playerSkull = getCreatureSkullType(cid)
if(playerSkull ~= skull) then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")
return TRUE
end
doTransformItem(item.uid, item.itemid + 1)
doTeleportThing(cid, toPosition, TRUE)
return TRUE
end
local group = item.actionid - 150
if(group >= 0 and group < 30) then
local playerGroup = getPlayerGroupId(cid)
if(playerGroup < group) then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")
return TRUE
end
doTransformItem(item.uid, item.itemid + 1)
doTeleportThing(cid, toPosition, TRUE)
return TRUE
end
local vocation = item.actionid - 100
if(vocation >= 0 and vocation < 50) then
local playerVocationInfo = getVocationInfo(getPlayerVocation(cid))
if(playerVocationInfo.id ~= vocation and playerVocationInfo.fromVocation ~= vocation) then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")
return TRUE
end
doTransformItem(item.uid, item.itemid + 1)
doTeleportThing(cid, toPosition, TRUE)
return TRUE
end
if(item.actionid == 190 or (item.actionid ~= 0 and getPlayerLevel(cid) >= (item.actionid - getItemLevelDoor(item.itemid)))) then
doTransformItem(item.uid, item.itemid + 1)
doTeleportThing(cid, toPosition, TRUE)
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")
end
return TRUE
end
if(isInArray(specialDoors, item.itemid) == TRUE) then
if(item.actionid == 100 or (item.actionid ~= 0 and getPlayerStorageValue(cid, item.actionid) > 0)) then
doTransformItem(item.uid, item.itemid + 1)
doTeleportThing(cid, toPosition, TRUE)
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The door seems to be sealed against unwanted intruders.")
end
return TRUE
end
if(isInArray(keys, item.itemid) == TRUE) then
if(itemEx.actionid > 0) then
if(item.actionid == itemEx.actionid and doors[itemEx.itemid] ~= nil) then
doTransformItem(itemEx.uid, doors[itemEx.itemid])
return TRUE
end
doPlayerSendCancel(cid, "The key does not match.")
return TRUE
end
return FALSE
end
if(isInArray(horizontalOpenDoors, item.itemid) == TRUE and checkStackpos(item, fromPosition)) then
local newPosition = toPosition
newPosition.y = newPosition.y + 1
local doorPosition = fromPosition
doorPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
local doorCreature = getThingfromPos(doorPosition)
if(doorCreature.itemid ~= 0) then
if(getTileInfo(doorPosition).protection and not getTileInfo(newPosition).protection and doorCreature.uid ~= cid) then
doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
else
doTeleportThing(doorCreature.uid, newPosition, TRUE)
if(isInArray(closingDoors, item.itemid) ~= TRUE) then
doTransformItem(item.uid, item.itemid - 1)
end
end
return TRUE
end
doTransformItem(item.uid, item.itemid - 1)
return TRUE
end
if(isInArray(verticalOpenDoors, item.itemid) == TRUE and checkStackpos(item, fromPosition)) then
local newPosition = toPosition
newPosition.x = newPosition.x + 1
local doorPosition = fromPosition
doorPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
local doorCreature = getThingfromPos(doorPosition)
if(doorCreature.itemid ~= 0) then
if(getTileInfo(doorPosition).protection and not getTileInfo(newPosition).protection and doorCreature.uid ~= cid) then
doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
else
doTeleportThing(doorCreature.uid, newPosition, TRUE)
if(isInArray(closingDoors, item.itemid) ~= TRUE) then
doTransformItem(item.uid, item.itemid - 1)
end
end
return TRUE
end
doTransformItem(item.uid, item.itemid - 1)
return TRUE
end
if(doors[item.itemid] ~= nil and checkStackpos(item, fromPosition)) then
if(item.actionid == 0) then
doTransformItem(item.uid, doors[item.itemid])
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.")
end
return TRUE
end
return FALSE
end