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

Action Football field (scripts + maps)

Fixed for 0.3.6 !! ;)

data/lib/ create file football.lua:
PHP:
-- 1 - exit pos , 2 - team 1 ball, 3 - team 2 ball, 4 - team1frompos, 5 -team2frompos, 6 - team1topos, 7 - team2topos, 8-team1gate aid, 9 - team2game aid, 10 - speed, 11 - match time, 12 - highest uid + 1, 13 - field size
local football_positions_uids = {
		football_positions_uids[1] = {23301,23302,23303, {23304,23305,23306}, {23307,23308,23309}, {23310,23311,23312}, {23313,23314,23315}, 23311, 23312, 450, 3, 23315, {8,3}},
		football_positions_uids[2] = {23320,23321,23322, {23323,23324}, {23325,23326}, {23327,23328}, {23329,23330}, 23321, 23322, 450, 3, 23330, {6,2}},
		football_positions_uids[3] = {23340,23341,23342, {23343,23344}, {23345,23346}, {23347,23348}, {23349,23350}, 23341, 23342, 450, 3, 23350, {6,2}},
		teleport_players_on_goal = true
}


function footballGoal(pos, ball, team1pos, team2pos, goalStorage, ballpos) -- add goal to team 1/2 score, show "GOAL", animations, teleport ball and players
    setGlobalStorageValue(goalStorage, getGlobalStorageValue(goalStorage)+1)
    if(teleport_players_on_goal) then
        for i = 1 , #team1pos do
            doTeleportThing(getGlobalStorageValue(team1pos[i]), getThingPos(team1pos[i]), TRUE)
        end

        for i = 1 , #team2pos do
            doTeleportThing(getGlobalStorageValue(team2pos[i]), getThingPos(team2pos[i]), TRUE)
        end
    end
		doSendMagicEffect(pos, CONST_ME_BATS)
		doTeleportThing(ball.uid, ballpos, TRUE)
		doSendMagicEffect(ballpos, CONST_ME_MAGIC_GREEN)	
	return doSendAnimatedText(ballpos, "GOAL!", TEXTCOLOR_TEAL)
end

function footballGetBall(startFromPos, fieldSize) -- get ball uid or create new and return uid, remove all balls from football field (if any exist)
    ball = 0
    for ix = startFromPos.x - fieldSize[1], startFromPos.x + fieldSize[1] do
        for iy = startFromPos.y - fieldSize[2], startFromPos.y + fieldSize[2] do
            tmpBall = getTileItemById({x=ix, y=iy, z=startFromPos.z}, 2109)
            if(tmpBall.uid > 0) then
                if(ball == 0) then
                    ball = tmpBall.uid
                else
                    doRemoveItem(tmpBall.uid)
                end
            end
        end
    end
    if(ball == 0) then
        return doCreateItem(2109, 1, startFromPos)
    else
        return ball
    end
end

data\actions\scripts\ create file football.lua :
PHP:
function onUse(cid, item, frompos, item2, topos)
    if(item.itemid == 1945 or item.itemid == 1946) then
        match = football_positions_uids[item.actionid-23300]
        if(getGlobalStorageValue(match[1]) < 1) then
            fromPoss = {match[4], match[5]}
            toPoss = {match[6], match[7]}
            players_number = 0
            for i = 1, 2 do
                teamPoss = fromPoss[i]
                for p = 1, #teamPoss do
                    if(isPlayer(getTopCreature(getThingPos(teamPoss[p])).uid) == TRUE) then
                        players_number = players_number + 1
                    end
                end
            end
            if(players_number ~= #fromPoss[1] + #fromPoss[2]) then
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, #fromPoss[1] + #fromPoss[2] .. " players needed. Only " .. players_number .. " on start positions.")
                return false
            end
				setGlobalStorageValue(match[1], os.time() + match[11] * 60)
				ballPos = getThingPos(match[2])
				doTeleportThing(footballGetBall(getThingPos(match[2]), match[13]), ballPos, TRUE)
				addEvent(doSendAnimatedText, 4000, ballPos, "0!", TEXTCOLOR_TEAL)
				addEvent(doSendAnimatedText, 3000, ballPos, "1", TEXTCOLOR_TEAL)
				addEvent(doSendAnimatedText, 2000, ballPos, "2", TEXTCOLOR_TEAL)
				addEvent(doSendAnimatedText, 1000, ballPos, "3", TEXTCOLOR_TEAL)
            teamOutfit = {}
            for i = 1, 2 do
                teamFromPoss = fromPoss[i]
                teamToPoss = toPoss[i]
                teamOutfit[i] = getCreatureOutfit(getTopCreature(getThingPos(teamFromPoss[1])).uid)
                for p = 1, #teamFromPoss do
                    player = getTopCreature(getThingPos(teamFromPoss[p])).uid
                    setGlobalStorageValue(teamToPoss[p], player)
                    doCreatureSetNoMove(player, 1)
                    addEvent(doCreatureSetNoMove, 4000, player, 0)
                    outfit = getCreatureOutfit(player)
                    outfit.lookHead = teamOutfit[i].lookHead
                    outfit.lookBody = teamOutfit[i].lookBody
                    outfit.lookLegs = teamOutfit[i].lookLegs
                    outfit.lookFeet = teamOutfit[i].lookFeet
                    doSetCreatureOutfit(player, outfit, match[11] * 60 * 1000 + 2500)
                    doTeleportThing(player, getThingPos(teamToPoss[p]), TRUE)
                    doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_ORANGE, "Match start. You are in Team " .. i .. " on field " .. item.actionid-23300 .. ". You have " .. match[11] .. " minutes.")
                end
            end
        else
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Football field in use. Please wait.")
            return false
        end
        return true
    end
    return false
end

data\movements\scripts\ create file football.lua:
PHP:
function onThink(interval, lastExecution)
    for m = 1 , #football_positions_uids do
        match = football_positions_uids[m]
        if(getGlobalStorageValue(match[1]) == -1) then
            for t = match[1], match[12] do
                setGlobalStorageValue(t, 0)
            end
        end
        end_time = getGlobalStorageValue(match[1])
        if(end_time > 0 and end_time < os.time()) then
            toPoss = {match[6], match[7]}
            team_players = {"", ""}
            for i = 1, 2 do
                teamPoss = toPoss[i]
                for p = 1, #teamPoss do
                    team_players[i] = team_players[i] .. getCreatureName(getGlobalStorageValue(teamPoss[p]))
                    if p ~= #teamPoss then
                        team_players[i] = team_players[i] .. ", "
                    end
                end
            end
            score = "Team 1 (" .. team_players[1] .. ") - " .. getGlobalStorageValue(match[2]) .. " : " .. getGlobalStorageValue(match[3]) .. " - (" .. team_players[2] .. ") Team 2"
            doBroadcastMessage("Football field " .. m .. ". " .. score, MESSAGE_STATUS_CONSOLE_BLUE)
            for i = 1, 2 do
                teamPoss = toPoss[i]
                exitPos = getThingPos(match[1])
                for p = 1, #teamPoss do
                    doTeleportThing(getGlobalStorageValue(teamPoss[p]), exitPos, TRUE)
                    doPlayerSendTextMessage(getGlobalStorageValue(teamPoss[p]), MESSAGE_STATUS_CONSOLE_ORANGE, "You were in Team " .. i .. " on field " .. m .. ". " .. score)
                end
            end
            for i = match[1], match[12] do
                setGlobalStorageValue(i, 0)
            end
        end
    end
    return true
end
 
How can you even get errors when you just have to COPY everything? not even change a thing. Oh my focking godz!

EDIT; I didn't get a single error. Thanks for sharing!
 
[11/03/2010 15:13:18] [Error - LuaScriptInterface::loadFile] data/lib/football.lua:3: '}' expected (to close '{' at line 2) near '='
[11/03/2010 15:13:18] [Warning - LuaScriptInterface::initState] Cannot load data/lib/
 
01:08 6 players needed. Only 0 on start positions.

Any person can repair it?...

Im using: cryingdamson6pl1-gui

Thanks!
 
Reuploaded map from main post and putted it in attachments, so we never face a "dead download link".
 
Back
Top