Forum Poświęcone OTS
Na poczatku informuje, żeby nie było 'to nie twój skrypt'.
To nie ja jestem autorem tego skryptu, lecz Colex'a.
W folderze data/npc/scripts tworzymy plik o nazwie bank.lua i wklejamy do niego:
---------NPC Banker by Colex----------- focus = 0 talk_start = 0 target = 0 dep = 0 wit = 0 trans = 0 following = false attacking = false --ALTERE DE ACORDO COM A SUA VERSÃO -----IDs---- gold_id = 2148 plat_id = 2152 crys_id = 2160 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) nome = creatureGetName(cid) --------------------------------------Begin---------------------------------------------- if (msgcontains(msg, 'hi') or msgcontains(msg, 'hello')) and (focus == 0) and getDistanceToCreature(cid) < 4 then if io.open("data/bank/"..nome..".dat", "r") then io.close(); else newAccount(nome) end dep = 0 wit = 0 trans = 0 selfSay('Hello ' .. nome .. '! Well come to the local bank, what do you want to do? here you can access your bank account saying (deposit, withdraw, balance, transfer).') focus = cid talk_start = os.clock() elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then selfSay('Sorry, ' .. creatureGetName(cid) .. '! I talk to you in a minute.') end --------------------------------------Deposit---------------------------------------------- if dep == 0 then if (msgcontains(msg, 'deposit')) and (focus == cid) and getDistanceToCreature(cid) < 4 then selfSay('How much do you wish to deposit?') dep = 1 wit = 0 trans = 0 talk_start = os.clock() end end if dep == 1 then if (focus == cid) and getDistanceToCreature(cid) < 4 then n = getNumber(msg) if n ~= 0 then talk_start = os.clock() selfSay('Do you really want to deposit '..n..' gold pieces?') dep = 2 end end end if dep == 2 and (focus == cid) and getDistanceToCreature(cid) < 4 then if (msgcontains(msg, 'yes')) then dep = 0 talk_start = os.clock() if pay(cid,n) then addMoney(nome,n) selfSay('Deposit Succesful!') else selfSay('Sorry, you dont have enought money!') end end if (msgcontains(msg, 'no')) then selfSay('Ok then.') dep = 0 talk_start = os.clock() end end -------------------------------------------Withdraw--------------------------------------- if wit == 0 then if (msgcontains(msg, 'withdraw')) and (focus == cid) and getDistanceToCreature(cid) < 4 then selfSay('How much do you wish to withdraw?') dep = 0 trans = 0 wit = 1 talk_start = os.clock() end end if wit == 1 then if (focus == cid) and getDistanceToCreature(cid) < 4 then n = getNumber(msg) if n ~= 0 then talk_start = os.clock() selfSay('Do you really want to withdraw '..n..' gold pieces?') wit = 2 end end end if wit == 2 and (focus == cid) and getDistanceToCreature(cid) < 4 then if (msgcontains(msg, 'yes')) then wit = 0 talk_start = os.clock() if n <= getMoney(nome) then takeMoney(nome,n) gold = n plat = 0 crys = {} crys[1] = 0 i = 1 repeat if gold >= 100 then plat = plat + 1 gold = gold - 100 end until gold < 100 repeat if plat >= 100 then if crys[i] == 100 then i = i + 1 crys[i] = 0 end crys[i] = crys[i] + 1 plat = plat - 100 end until plat < 100 if crys[1] > 0 then repeat buy(cid,crys_id,crys[i],0) i = i-1 until i == 0 end if plat > 0 then buy(cid,plat_id,plat,0) end if gold > 0 then buy(cid,gold_id,gold,0) end selfSay('withdraw successful!') else selfSay('Sorry, you dont have enought money in your account!') end end if (msgcontains(msg, 'no')) then selfSay('Ok then.') wit = 0 talk_start = os.clock() end end -------------------------------------------Balance--------------------------------------- if (msgcontains(msg, 'balance')) and (focus == cid) and getDistanceToCreature(cid) < 4 then selfSay('You have got '..getMoney(nome)..' gold pieces in your bank account.') dep = 0 wit = 0 trans = 0 talk_start = os.clock() end -------------------------------------------Transfer--------------------------------------- if trans == 4 and (focus == cid) and getDistanceToCreature(cid) < 4 then if io.open("data/bank/"..rec..".dat", "r") then io.close(); else newAccount(rec) end if (msgcontains(msg, 'yes')) then Transfer(nome,rec,quant) selfSay('The money was successfuly transfered!') trans = 0 talk_start = os.clock() elseif (msgcontains(msg, 'no')) then selfSay('Ok then!') trans = 0 talk_start = os.clock() end end if trans == 3 and (focus == cid) and getDistanceToCreature(cid) < 4 then if io.open("data/players/"..msg..".xml", "r") then io.close(); rec = msg selfSay('Do you want to transfer '..quant..' gps to '..rec..'?') trans = 4 talk_start = os.clock() else selfSay('This name does not exist!') trans = 0 talk_start = os.clock() end end if trans == 2 and (focus == cid) and getDistanceToCreature(cid) < 4 then if (msgcontains(msg, 'yes')) then if getMoney(nome) >= quant then selfSay('Who do you want to trasnfer the money to?') trans = 3 talk_start = os.clock() else selfSay('Sorry, you do not have enough money!') trans = 0 talk_start = os.clock() end elseif (msgcontains(msg, 'no')) then selfSay('Ok then!') talk_start = os.clock() trans = 0 end end if trans == 1 and (focus == cid) and getDistanceToCreature(cid) < 4 then quant = getNumber(msg) if quant > 0 then selfSay('Do you really want to transfer '..quant..' gold pieces?') trans = 2 talk_start = os.clock() end end if trans == 0 then if (msgcontains(msg, 'transfer')) and (focus == cid) and getDistanceToCreature(cid) < 4 then selfSay('How much do you want to transfer?') dep = 0 wit = 0 trans = 1 talk_start = os.clock() end end -------------------------------------------End-------------------------------------------- if (msgcontains(msg, 'bye')) and (focus == cid) and getDistanceToCreature(cid) < 4 then selfSay('Have a nice day Sir!') focus = 0 dep = 0 wit = 0 trans = 0 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 dep = 0 wit = 0 trans = 0 end if focus ~= 0 then if getDistanceToCreature(focus) > 5 then selfSay('Good bye then.') focus = 0 dep = 0 wit = 0 trans = 0 end end end function getNumber(txt) x = string.gsub(txt,"%a","") x = tonumber(x) if x ~= nill and x > 0 then return x else return 0 end end function getMoney(name) file = io.open("data/bank/"..name..".dat", "r") x = file:read("*number") file:close() return x end function newAccount(name) file = io.open("data/bank/"..name..".dat", "w") file:write("0") file:close() return 1 end function addMoney(name,money) file = io.open("data/bank/"..name..".dat", "r") x = file:read("*number") x = x + money file:close() file = io.open("data/bank/"..name..".dat", "w") file:write(x) file:close() return 1 end function takeMoney(name,money) file = io.open("data/bank/"..name..".dat", "r") x = file:read("*number") x = x - money file:close() file = io.open("data/bank/"..name..".dat", "w") file:write(x) file:close() return 1 end function Transfer(name1,name2,money) takeMoney(name1,money) addMoney(name2,money) return 1 end
Nastepnie w data/npc towrzymy plik Bankier.xml w którym wpisujemy
<?xml version="1.0"?> <npc name="Bankier" script="data/npc/scripts/bank.lua" access="3" lookdir="2" autowalk="25"> <mana now="800" max="800"/> <health now="200" max="200"/> <look type="130" head="0" body="88" legs="88" feet="88" addons="1"/> </npc>
Offline