christiandb
Member
login.lua:
ushuriel.lua in createscripts:
creaturescripts.xml:
ushuriel.lua in movements:
movements.xml
the tp:
It doesn't give an error :S
Thanks in advance,
Chris~
Code:
-- ### CONFIG ###
-- message send to player by script "type" (types you can check in "global.lua")
SHOP_MSG_TYPE = 19
-- time (in seconds) between connections to SQL database by shop script
SQL_interval = 30
-- ### END OF CONFIG ###
SQL_COMUNICATION_INTERVAL = SQL_interval * 1000
function onLogin(cid)
if(InitShopComunication == 0) then
local eventServ = addEvent(sql_communication, SQL_COMUNICATION_INTERVAL, {})
InitShopComunication = eventServ
end
registerCreatureEvent(cid, "PlayerDeath")
registerCreatureEvent(cid, "Ushuriel")
registerCreatureEvent(cid, "Zugurosh")
registerCreatureEvent(cid, "Madareth")
registerCreatureEvent(cid, "Golgordan")
registerCreatureEvent(cid, "Annihilon")
registerCreatureEvent(cid, "Hellgorak")
return TRUE
end
function sql_communication(parameters)
local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';")
if(result_plr:getID() ~= -1) then
while(true) do
id = tonumber(result_plr:getDataInt("id"))
action = tostring(result_plr:getDataString("action"))
delete = tonumber(result_plr:getDataInt("delete_it"))
cid = getPlayerByName(tostring(result_plr:getDataString("name")))
if isPlayer(cid) == TRUE then
local itemtogive_id = tonumber(result_plr:getDataInt("param1"))
local itemtogive_count = tonumber(result_plr:getDataInt("param2"))
local container_id = tonumber(result_plr:getDataInt("param3"))
local container_count = tonumber(result_plr:getDataInt("param4"))
local add_item_type = tostring(result_plr:getDataString("param5"))
local add_item_name = tostring(result_plr:getDataString("param6"))
local received_item = 0
local full_weight = 0
if add_item_type == 'container' then
container_weight = getItemWeightById(container_id, 1)
if isItemRune(itemtogive_id) == TRUE then
items_weight = container_count * getItemWeightById(itemtogive_id, 1)
else
items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count)
end
full_weight = items_weight + container_weight
else
full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
if isItemRune(itemtogive_id) == TRUE then
full_weight = getItemWeightById(itemtogive_id, 1)
else
full_weight = getItemWeightById(itemtogive_id, itemtogive_count)
end
end
local free_cap = getPlayerFreeCap(cid)
if full_weight <= free_cap then
if add_item_type == 'container' then
local new_container = doCreateItemEx(container_id, 1)
local iter = 0
while iter ~= container_count do
doAddContainerItem(new_container, itemtogive_id, itemtogive_count)
iter = iter + 1
end
received_item = doPlayerAddItemEx(cid, new_container)
else
local new_item = doCreateItemEx(itemtogive_id, itemtogive_count)
received_item = doPlayerAddItemEx(cid, new_item)
end
if received_item == RETURNVALUE_NOERROR then
doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.')
db.executeQuery("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";")
db.executeQuery("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";")
else
doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.')
end
else
doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.')
end
end
if not(result_plr:next()) then
break
end
end
result_plr:free()
end
local eventServ = addEvent(sql_communication, SQL_COMUNICATION_INTERVAL, parameters)
end
Code:
function onKill(cid, target)
local minutes = 3 -- How long people will be able to pass the teleport
local seconds = 1 -- This is in a addition with minutes
local monstername = "Ushuriel" -- Put the Monster name in there which has to be defeated
if (isPlayer(target) ~= TRUE) then
if (getCreatureName(target) == monstername) then
setGlobalStorageValue(5000,1)
addEvent(timeToPas,(1000*60*minutes) + (1000*seconds))
else
return FALSE
end
else
return FALSE
end
return TRUE
end
function timeToPas()
setGlobalStorageValue(5000,-1)
return TRUE
end
Code:
<?xml version="1.0" encoding="UTF-8"?>
<creaturescripts>
<event type="login" name="PlayerLogin" script="login.lua"/>
<event type="death" name="PlayerDeath" script="playerdeath.lua"/>
<event type="kill" name="Hellgorak" script="hellgorak.lua"/>
<event type="kill" name="Annihilon" script="annihilon.lua"/>
<event type="kill" name="Golgordan" script="golgordan.lua"/>
<event type="kill" name="Madareth" script="madareth.lua"/>
<event type="kill" name="Ushuriel" script="ushuriel.lua"/>
<event type="kill" name="Zugurosh" script="zugurosh.lua"/>
</creaturescripts>
Code:
function onStepIn(cid, item, frompos, item2, topos)
local teleporter = 33330 -- actionid of the tp
local getValue = TRUE -- only TRUE or FALSE work on it (shall the player get a storagevalue so it can be noticed that he has defeated that boss?)
local storagevalue = 33330 -- storagevalue which he'll get if the option "getValue" is set as "TRUE"
local pos = {x=33094,y=31453,z=10} -- position where he should be teleported
if item.actionid == teleporter then
if getGlobalStorageValue(500) == TRUE then
doTeleportThing(cid,pos,0)
doPlayerSendTextMessage(cid,21,"You where granted to leave this place.")
if (getValue == TRUE) then
setPlayerStorageValue(cid,storagevalue,1)
elseif (getValue == FALSE) then
return TRUE
end
else
doPlayerSendCancel(cid,"You have to defeat the Boss first to get through this.")
end
end
return TRUE
end
Code:
<movevent event="StepIn" actionid="33330" script="inquisition/ushuriel.lua"/>
Code:
16:37 You see a magic forcefield.
ItemID: [1387].
ActionID: [33330].
Position: [X: 33137] [Y: 31502] [Z: 7]
It doesn't give an error :S
Thanks in advance,
Chris~