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

Premium accounts NPC!

jpkulik

New Member
Joined
Mar 15, 2008
Messages
208
Reaction score
2
[Released] Premium accounts NPC!

Hello World :D
That is a released NPC that's sell Premmium account and promotions.
Crédits goto who create the Johnny NPC for Evolutions, i just modified some stuff to make it works for TFS.

That is the scripts:

NPC The King.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="The King" script="data/npc/scripts/premium.lua" autowalk="1" floorchange="0">
    <health now="100" max="100"/>
    <look type="73" head="20" body="39" legs="45" feet="7" addons="0"/>
</npc>
And Script premium.lua
Code:
local focus = 0
local talk_start = 0
local target = 0
local days = 0

function onThingMove(creature, thing, oldpos, oldstackpos)

end


function onCreatureAppear(creature)

end


function onCreatureDisappear(cid, pos)
      if focus == cid then
          selfSay('Good bye then.')
          focus = 0
          talk_start = 0
      end
end


function onCreatureTurn(creature)

end


function msgcontains(txt, str)
      return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
end


function onCreatureSay(cid, type, msg)
      msg = string.lower(msg)

      if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then
         selfSay('Hello ' .. getPlayerName(cid) .. '! I sell premiums and promotions.')
         focus = cid
         talk_start = os.clock()

    elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then
          selfSay('Sorry, ' .. getPlayerName(cid) .. '! I talk to you in a minute.')

      elseif focus == cid then
        talk_start = os.clock()

        if msgcontains(msg, 'promotion') or msgcontains(msg, 'promote') then
             if getPlayerVocation(cid) > 4 then
                 selfSay('Sorry, you are already promoted.')
                 talk_state = 0
             elseif getPlayerLevel(cid) < 20 then
                selfSay('Sorry, you need level 20 to buy promotion.')
                talk_state = 0
            elseif not isPremium(cid) then
                selfSay('Sorry, you must be premium to buy promotion.')
                talk_state = 0
            else
                selfSay('Do you want to buy promotion for 20000 gold coins?')
                talk_state = 1
            end

        elseif msgcontains(msg, 'premium') or msgcontains(msg, 'premmy') then
            selfSay('Do you want to buy 7 days of premium for 50000 gold coins?')
            talk_state = 2

        elseif talk_state == 1 then
            if msgcontains(msg, 'yes') then
                if doPlayerRemoveMoney(cid,20000) then
                    doPlayerSetVocation(cid, getPlayerVocation(cid)+4)
                    selfSay('You are now promoted!')
                else
                    selfSay('Sorry, you do not have enough money.')
                end
             end
            talk_state = 0

        elseif talk_state == 2 then
            if msgcontains(msg, 'yes') then
                if doPlayerRemoveMoney(cid,50000) then
                    doPlayerAddPremiumDays(cid, 7)
                    selfSay('You have 7 days of premium time!')
                else
                    selfSay('Sorry, you do not have enough money.')
                end
            end
            talk_state = 0

          elseif msgcontains(msg, 'bye')  and getDistanceToCreature(cid) < 4 then
              selfSay('Good bye, ' .. creatureGetName(cid) .. '!')
              focus = 0
              talk_start = 0
          end
      end
end


function onCreatureChangeOutfit(creature)

end


function onThink()
    doNpcSetCreatureFocus(focus)
      if (os.clock() - talk_start) > 30 then
          if focus > 0 then
              selfSay('Next Please...')
          end
              focus = 0
      end
     if focus ~= 0 then
         if getDistanceToCreature(focus) > 5 then
             selfSay('Good bye then.')
             focus = 0
         end
     end
end
If you want to change the premium price, edit:
Code:
selfSay('Do you want to buy 7 days of premium for [COLOR=Red]50000[/COLOR] gold coins?')
and
Code:
if doPlayerRemoveMoney(cid,[COLOR=Red]50000[/COLOR])
If you want to change the premium time, edit:
Code:
selfSay('Do you want to buy [COLOR=Red]7[/COLOR] days of premium for 50000 gold coins?')
and
Code:
doPlayerAddPremiumDays(cid, [COLOR=Red]7[/COLOR])
I hope that's help some one who is looking for such a NPC.
Don't forgot to comment!CYA
 
Last edited by a moderator:
Didn't see your edit, it's correct like this.
For next time, you can also just try it and if something goes wrong post the result (problems/errors/scripts etc).

I noticed you use a TFS 1.x version so use getNpcCid instead or use TFS 1.x functions.
so what do i replace getNpcCid with? :s
 
Back
Top