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

Solved Big Problem on my OT

LoveSong

New Member
Joined
Dec 16, 2007
Messages
185
Reaction score
0
Hello... I have much problems with my promoter on my Server :/
Maybe anyone can help me...

I'm using Aries 4.0 Server 8.1... Works great for me...
Exept the NPC...

Everytime when im saying hi to Orlan(My promoter)
and then poromotion he say: Do you wanna buy promotion for 20k?

when i'm saying yes this error comes:

uo0001nu1.jpg



Help me please... my OT needs promo :/
 
Last edited:
This is my script that dont work...

PHP:
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 ' .. getCreatureName(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, ' .. getCreatureName(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 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 20k?')
				talk_state = 1
			end

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

		elseif talk_state == 1 then
			if msgcontains(msg, 'yes') then
				if pay(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 pay(cid,7000) then
					buyPrem(cid, 7)
					selfSay('You have 7 days of premium more!')
				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, ' .. getCreatureName(cid) .. '!')
			focus = 0
			talk_start = 0
		end
	end
end


function onCreatureChangeOutfit(creature)

end


function onThink()
  	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
 
I think this will work like Marcinek Paladinek said.

PHP:
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 20k?')
                talk_state = 1
            end

        elseif msgcontains(msg, 'premium') or msgcontains(msg, 'premmy') then
            selfSay('Do you want to buy 7 days of premium for 2k?')
            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,2000) then
                    doPlayerAddPremiumDays(cid, 7)
                    selfSay('You have 7 days of premium more!')
                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
 
Code:
if doPlayerRemoveMoney(cid,2000) then

you have to add whether TRUE or FALSE:

Code:
if doPlayerRemoveMoney(cid, 2000) == TRUE then

;p
 
Back
Top