• 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!

NPC NPC Mission (experience for mission)

kawon

o.O
Joined
Mar 16, 2009
Messages
555
Reaction score
29
Location
Poland
NPC Mission (experience for mission) UPDATE 01.01.11!!!

Hello :)

This NPC add experience when we finish missions :)


UPDATE 01.01.2011!! New version!! Hi/quest/mission/ no more!

Created in /data/npc file mission.xml and paste this:
PHP:
<?xml version="1.0" encoding="UTF-8"?>

<npc name="Mission" script="mission.lua" walkinterval="2000" floorchange="0">
	<health now="100" max="100"/>
	<look type="325" head="29" body="4" legs="20" feet="96" addons="3" corpse="2212"/>
	<parameters>
		<parameter key="message_greet" value="Hello |PLAYERNAME|. What brings you to me? You want start the {quest}?"/>
	</parameters>

</npc>

Next, created in /data/npc/scripts file mission.lua and paste this:
PHP:
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)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if(msgcontains(msg, 'quest')) then
selfSay('To start this quest tell {mission}', cid) --This is just an example, In this script added 4 mission for you ;)
end
	if(msgcontains(msg, 'mission')) then
		if(getPlayerStorageValue(cid,700) < 1) then
			selfSay('Your first mission will be to get 100 {tarantula egg}.', cid)
			talkState[talkUser] = 1
		elseif (getPlayerStorageValue(cid,701) < 1) then
				selfSay('Your next mission will be to get 150 {strands of medusa hair}.', cid)
				talkState[talkUser] = 1
		elseif (getPlayerStorageValue(cid,702) < 0) then
				selfSay('Your next mission will be to get 300 {red dragon scales}.', cid)
				talkState[talkUser] = 1
		elseif (getPlayerStorageValue(cid,703) < 0) then
				selfSay('Your next mission will be to get 400 {green dragon scales}.', cid)
				talkState[talkUser] = 1
				
				
				
				
		elseif (getPlayerStorageValue(cid,703) == 1) then --zmieniac w zaleznosci od ostatniego storage!!
				selfSay('You have done all missions.', cid)
				talkState[talkUser] = 1
				
				
				
				
		end
		---------------------------------------
		elseif(msgcontains(msg, 'tarantula egg') and talkState[talkUser] == 1 and (getPlayerStorageValue(cid,700) < 1)) then
		if(doPlayerRemoveItem(cid, 11198, 100) == TRUE) then
			setPlayerStorageValue(cid,700,1)
			doPlayerAddPercentLevel(cid, 5) 
			selfSay('Thank you.', cid)
			talkState[talkUser] = 0
		else
			selfSay('To end mission you need have 100 {tarantula egg}.', cid)
		end
		---------------------------------------
		elseif(msgcontains(msg, 'strands of medusa hair') and talkState[talkUser] == 1  and (getPlayerStorageValue(cid,701) < 1) and (getPlayerStorageValue(cid,700) == 1)) then
		if(doPlayerRemoveItem(cid, 11226, 150) == TRUE) then
			setPlayerStorageValue(cid,701,1)
			doPlayerAddPercentLevel(cid, 7) 
			selfSay('Thank you.', cid)
			talkState[talkUser] = 0
		else
			selfSay('To end mission you need have 150 {strands of medusa hair}.', cid)
		end
		---------------------------------------
		elseif(msgcontains(msg, 'red dragon scales') and talkState[talkUser] == 1  and (getPlayerStorageValue(cid,702) < 1) and (getPlayerStorageValue(cid,701) == 1)) then
		if(doPlayerRemoveItem(cid, 5882, 300) == TRUE) then
			setPlayerStorageValue(cid,702,1)
			doPlayerAddPercentLevel(cid, 6) 
			selfSay('Thank you.', cid)
			talkState[talkUser] = 0
		else
			selfSay('To end mission you need have 300 {red dragon scales}.', cid)
		end
		---------------------------------------
		elseif(msgcontains(msg, 'green dragon scales') and talkState[talkUser] == 1 and (getPlayerStorageValue(cid,703) < 1) and (getPlayerStorageValue(cid,702) == 1)) then
		if(doPlayerRemoveItem(cid, 5920, 400) == TRUE) then
			setPlayerStorageValue(cid,703,1)
			doPlayerAddPercentLevel(cid, 5) 
			selfSay('Thank you.', cid)
			talkState[talkUser] = 0
		else
			selfSay('To end mission you need have 400 {green dragon scales}.', cid)
		end
		------------------------------------------
		
	end
end	
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Go to data/lib/050-function.lua and paste: (function by Oskar1121)
PHP:
function doPlayerAddPercentLevel(cid, percent)
    local player_lv, player_lv_1 = getExperienceForLevel(getPlayerLevel(cid)), getExperienceForLevel(getPlayerLevel(cid)+1)
    local percent_lv = ((player_lv_1 - player_lv) / 100) * percent
    doPlayerAddExperience(cid, percent_lv)
end

If you like this, please Rep Me ;)
I greet all ;)
 
Last edited:
Can you make this appear on the quest window??? You know, the one beside the options and all that..
 
@UP:
Omg please don't write in this forum ;(((
Change 'second mission' to 'third mission' and added new items..
Update first post for amiroslo...
 
Excelent NPC!
Do you know how to make that missions like "Kill 20 minos to obtain this"?
 
Excelent NPC!
Do you know how to make that missions like "Kill 20 minos to obtain this"?

you need creaturescript that counts kills :p and sets storage +1 when player kills minotaur
 
[26/06/2010 02:43:40] [Error - LuaScriptInterface::loadFile] data/npc/scripts/mission.lua:25: ')' expected near 'MEAT'
[26/06/2010 02:43:40] [Warning - NpcScript::NpcScript] Cannot load script: data/npc/scripts/mission.lua
[26/06/2010 02:43:40] data/npc/scripts/mission.lua:25: ')' expected near 'MEAT'
 
Back
Top