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

[MOD] Boat Event System!

Status
Not open for further replies.

Tonks

Banned User
Joined
Mar 30, 2012
Messages
517
Reaction score
21
Location
Egypt and proud of it!
Hello folks,
I decided to showoff my last work!
Boat Event
Please Try & Comment!
XML:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="BoatSystem" enabled="yes" author="Tonks" forum="OTLand.net">

<config name="BoatSystemLib"><=!=[=C=D=A=T=A=[
mydirs= {
    [1] = {type = 1, ids = {3587, 3590, 3591}, xy = {0, -1}},
    [2] = {type = 2, ids = {3592, 3595, 3596}, xy = {1, 0}},
    [3] = {type = 1, ids = {3587, 3590, 3591}, xy = {0, 1}},
    [4] = {type = 2, ids = {3592, 3595, 3596}, xy = {-1, 0}}
}

allids = {3587, 3590, 3591, 3592, 3595, 3596}

function newEndb(endb, dir)
    local xx = endb.x
    local yy = endb.y
    for i = 1, #dir do
        xx = xx+mydirs[dir[i]].xy[1]
        yy = yy+mydirs[dir[i]].xy[2]
    end
    return {x=xx, y=yy, z=endb.z}
end

function doMoveBoat(post, dir, cid)
    local newboat = {}
    for i,s in ipairs(post) do
        local backu = getThingPos(s)
        doRemoveItem(s, 1)
        doCreateItem(mydirs[dir].ids[i], 1, {x=backu.x+mydirs[dir].xy[1], y=backu.y+mydirs[dir].xy[2], z=backu.z})
        table.insert(newboat, getThingFromPos({x=backu.x+mydirs[dir].xy[1], y=backu.y+mydirs[dir].xy[2], z=backu.z, stackpos=1}).uid)
    end
    if mydirs[dir].type ~= post.type and mydirs[dir].type == 1 then
        doCreateItem(getThing(newboat[1]).itemid, 1, {x=getThingPos(newboat[1]).x+1, y=getThingPos(newboat[1]).y-1, z=getThingPos(newboat[1]).z})
        doRemoveItem(newboat[1], 1)
        doCreateItem(getThing(newboat[3]).itemid, 1, {x=getThingPos(newboat[3]).x-1, y=getThingPos(newboat[3]).y+1, z=getThingPos(newboat[3]).z})
        doRemoveItem(newboat[3], 1)
    elseif mydirs[dir].type ~= post.type and mydirs[dir].type == 2 then
        doCreateItem(getThing(newboat[1]).itemid, 1, {x=getThingPos(newboat[1]).x-1, y=getThingPos(newboat[1]).y+1, z=getThingPos(newboat[1]).z})
        doRemoveItem(newboat[1], 1)
        doCreateItem(getThing(newboat[3]).itemid, 1, {x=getThingPos(newboat[3]).x+1, y=getThingPos(newboat[3]).y-1, z=getThingPos(newboat[3]).z})
        doRemoveItem(newboat[3], 1)
    end
    if cid then
        doTeleportThing(cid, {x=getCreaturePosition(cid).x+mydirs[dir].xy[1], y=getCreaturePosition(cid).y+mydirs[dir].xy[2], z=getCreaturePosition(cid).z}, false)
    end
end

function getPosBoat(cid, pos)
    local pcid = not pos and getCreaturePosition(cid) or pos
    local check = getThingFromPos({x=pcid.x, y=pcid.y, z=pcid.z, stackpos=1}).itemid == mydirs[1].ids[2] and 1 or 2
    if check == 1 then
        return {getThingFromPos({x=pcid.x, y=pcid.y-1, z=pcid.z, stackpos=1}).uid, getThingFromPos({x=pcid.x, y=pcid.y, z=pcid.z, stackpos=1}).uid, getThingFromPos({x=pcid.x, y=pcid.y+1, z=pcid.z, stackpos=1}).uid, type = check}
    elseif check == 2 then
        return {getThingFromPos({x=pcid.x-1, y=pcid.y, z=pcid.z, stackpos=1}).uid, getThingFromPos({x=pcid.x, y=pcid.y, z=pcid.z, stackpos=1}).uid, getThingFromPos({x=pcid.x+1, y=pcid.y, z=pcid.z, stackpos=1}).uid, type = check}
    end
return false
end

function reverse(t)
    local result = {}
    for i = #t, 1, -1 do
        table.insert(result, t[i] == 1 and 3 or t[i] == 2 and 4 or t[i] == 3 and 1 or t[i] == 4 and 2)
    end
return result
end

]=]=></config>

<movevent type="StepIn" actionid="6616" event="script"><=!=[=C=D=A=T=A=[
    domodlib("BoatSystemLib")
    local t = {4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}
    local postart = {x=968, y=1001, z=7, stackpos=1}
    local posback = {x=994, y=978, z=7, stackpos=1}
    local delay = 350
    if toPosition.x == posback.x and toPosition.y == posback.y then
        doCreatureSetNoMove(cid, true)
        for i = 1, #reverse(t) do
            addEvent(function() doMoveBoat(getPosBoat(cid), reverse(t)[i], cid) end, i*delay)
        end
        addEvent(doCreatureSetNoMove, delay*#reverse(t)+100, cid, false)
        addEvent(function() doItemSetAttribute(getThingFromPos(postart).uid, "aid", 6616) end, delay*#t+100)
    elseif toPosition.x == postart.x and toPosition.y == postart.y then
        doCreatureSetNoMove(cid, true)
        for i = 1, #t do
            addEvent(function() doMoveBoat(getPosBoat(cid), t[i], cid) end, i*delay)
        end
        addEvent(doCreatureSetNoMove, delay*#t+100, cid, false)
        addEvent(function() doItemSetAttribute(getThingFromPos(posback).uid, "aid", 6616) end, delay*#t+100)
    end
]=]=></movevent>

<movevent type="StepIn" actionid="6617" event="script"><=!=[=C=D=A=T=A=[
    domodlib("BoatSystemLib")
    if not isInArray(allids, getThingFromPos({x=toPosition.x, y=toPosition.y, z=toPosition.z, stackpos=1}).itemid) then
        doTeleportThing(cid, fromPosition, false)
    end
]=]=></movevent>
</mod>
Liked my event / game?
[REP ME]
 
Last edited by a moderator:
Isnt the system who the guy is selling, boat event?
 
Isnt the system who the guy is selling, boat event?
He want to steal my idea, and he tried to write something similar to my event. Of course it didn't.

#Topic
Why you called it "Boat Event"? Descibe how it works.
 
All I can say is stop lying and saying the scripts are urs lier.
 
Last edited:
Is this your first code? If not, what else have you released? :p

Red
 
This seems like a reasonably advanced script, and I really doubt you did it

You keep "releasing" old scripts without giving proper credits, do you really expect to get any reputation(actual reputation and not that silly bar)?

No one likes stealers!

Closed
 
Status
Not open for further replies.
Back
Top