Por drakath, 15 de jun. de 2012 em Scripts
info
Grupo: Campones
Registrado: 06/01/11
Posts: 8
Reputação: +2
Char no Tibia: Toma te cru
O Meu BUG é o seguinte: o cara compra segunda promotion, e vai certim, o npc promove o player, mais o cara desloga, ele volta pra promotion anterior.
se o cara der uma magia quando ele for promovido o servidor inteiro CAI.
no executador quando promove o player aparece o seguinte erro:
ERROR - NPC INTERFACE data/npc/scripts/segunda.lua:onthink DESCRIPTION: data/npc/scripts/segunda.lua:112: attemp to compare number with nil stack traceback: data/npc/scripts/segunda.lua:112: in function ( data/npc/scripts/segunda.lua:104)
ERROR - NPC INTERFACE
data/npc/scripts/segunda.lua:onthink
DESCRIPTION:
data/npc/scripts/segunda.lua:112: attemp to compare number with nil stack traceback:
data/npc/scripts/segunda.lua:112: in function ( data/npc/scripts/segunda.lua:104)
O SCRIPT DO NPC
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 ! I sell second promotion.') focus = cid talk_start = os.clock() elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then selfSay('Sorry,! I talk to you in a minute.') elseif focus == cid then talk_start = os.clock() if msgcontains(msg, 'promotion') or msgcontains(msg, 'second promotion') then if getPlayerVocation(cid) > 8 then selfSay('Sorry, you are already promoted.') talk_state = 0 elseif getPlayerLevel(cid) < 600 then selfSay('Sorry, you need level 600 to buy second promotion.') talk_state = 0 elseif not isPremium(cid) then selfSay('Sorry, you must be premium to buy second promotion.') talk_state = 0 else selfSay('Do you want to buy promotion for 5kk?') 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,5000000) 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 selfSay('/premium '.. creatureGetName(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() 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
local focus = 0
local talk_start = 0
local target = 0
local days = 0
function onThingMove(creature, thing, oldpos, oldstackpos)
end
function onCreatureAppear(creature)
function onCreatureDisappear(cid, pos)
if focus == cid then
selfSay('Good bye then.')
focus = 0
talk_start = 0
function onCreatureTurn(creature)
function msgcontains(txt, str)
return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))
function onCreatureSay(cid, type, msg)
msg = string.lower(msg)
if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then
selfSay('Hello ! I sell second promotion.')
focus = cid
talk_start = os.clock()
elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then
selfSay('Sorry,! I talk to you in a minute.')
elseif focus == cid then
if msgcontains(msg, 'promotion') or msgcontains(msg, 'second promotion') then
if getPlayerVocation(cid) > 8 then
selfSay('Sorry, you are already promoted.')
talk_state = 0
elseif getPlayerLevel(cid) < 600 then
selfSay('Sorry, you need level 600 to buy second promotion.')
elseif not isPremium(cid) then
selfSay('Sorry, you must be premium to buy second promotion.')
else
selfSay('Do you want to buy promotion for 5kk?')
talk_state = 1
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,5000000) then
doPlayerSetVocation(cid, getPlayerVocation(cid)+4)
selfSay('You are now promoted!')
selfSay('Sorry, you do not have enough money.')
elseif talk_state == 2 then
if pay(cid,7000) then
selfSay('/premium '.. creatureGetName(cid) ..', 7')
selfSay('You have 7 days of premium more!')
elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then
selfSay('Good bye, ' .. creatureGetName(cid) .. '!')
function onCreatureChangeOutfit(creature)
function onThink()
if (os.clock() - talk_start) > 30 then
if focus > 0 then
selfSay('Next Please...')
if focus ~= 0 then
if getDistanceToCreature(focus) > 5 then
ID Das vocações:
lll [5] Master Sorcerer lll [6] Elder Druid lll [7] Royal Paladin lll [8] Elite Knight lll
Segunda Promotion
lll [9] Super Sorcerer lll [10] Super Druid lll [11] Super Paladin lll [12] Super Knight lll
-----------------------------------------------------------------------------
Tem como postar o script arrumado, ou algum outro script de segunda promotion?
O ID, preço, etc, ja ta arrumado, e pq meu ot é todo editado.
Removam o tópico, eu ja consegui resolver o erro.
Vocations.xml estava bugado...
Editado Junho 15 por drakath
info
Grupo: Campones
Registrado: 06/01/11
Posts: 8
Reputação: +2
Char no Tibia: Toma te cru
O Meu BUG é o seguinte: o cara compra segunda promotion, e vai certim, o npc promove o player, mais o cara desloga, ele volta pra promotion anterior.
se o cara der uma magia quando ele for promovido o servidor inteiro CAI.
no executador quando promove o player aparece o seguinte erro:
O SCRIPT DO NPC
ID Das vocações:
lll [5] Master Sorcerer lll [6] Elder Druid lll [7] Royal Paladin lll [8] Elite Knight lll
Segunda Promotion
lll [9] Super Sorcerer lll [10] Super Druid lll [11] Super Paladin lll [12] Super Knight lll
-----------------------------------------------------------------------------
Tem como postar o script arrumado, ou algum outro script de segunda promotion?
O ID, preço, etc, ja ta arrumado, e pq meu ot é todo editado.
Removam o tópico, eu ja consegui resolver o erro.
Vocations.xml estava bugado...
Editado Junho 15 por drakath