Ir para conteúdo

Posts Recomendados

Olá , alguem ai pode me explicar o que eu devo mecher para funcionar?

 

Script Snake System:

 

 

 

 

lugar3.jpg

 

O que é aid ;)

 

 

--[[

Script by Mock the bear

]]

SNAKE = {

_VERSION="1.0 by mock",

---Snake config

itemid=1739,

freeglobalstorage=28103,

itemFood=6394,

controlpos={x=1013,y=1164,z=6},

exitpos = {x=1009,y=1157,z=7},

centerpos={x=1012,y=1163,z=7},

timer = function(cid,n,pos_,time)

local pos_ = pos_ or {{SNAKE.centerpos}}

setGlobalStorageValue(SNAKE.freeglobalstorage,cid)

if not isPlayer(cid) then

SNAKE.clean()

return

end

for i,pos in pairs(pos_) do

SNAKE.find_and_delete(pos[1])

if i == 1 then

pos[2] = SNAKE.copypos(pos[1])

pos[1] = getPosByDir({x=pos[1].x,y=pos[1].y,z=pos[1].z,stackpos=255},getCreatureLookDir(cid))

else

pos[2] = SNAKE.copypos(pos[1])

pos[1] = pos_[i-1][2]

end

local ret,p,walk = SNAKE.check(pos[1])

if ret == 1 or ret == 3 then

addEvent(doTeleportThing,1000,cid,SNAKE.exitpos)

addEvent(doCreatureSay,1100,cid,'Points '..(#pos_-1)..'.')

SNAKE.clean()

setGlobalStorageValue(SNAKE.freeglobalstorage,0)

return

end

if ret == 2 then

doRemoveItem(p.uid,-1)

if p.itemid == SNAKE.itemFood then

pos_[#pos_+1] = {pos[2],pos[2]}

for i=1,5 do

addEvent(doSendMagicEffect,100*i,pos[1],29)

end

SNAKE.generateFood()

end

end

doCreateItem(SNAKE.itemid,1,pos[1])

 

end

local plpos = getCreaturePosition(cid)

local generated = {}

for i=0,3 do

generated = getPosByDir({x=SNAKE.controlpos.x,y=SNAKE.controlpos.y,z=SNAKE.controlpos.z},i)

end

for i,pos in pairs(generated) do

if SNAKE.samepos(plpos,pos) then

 

doTeleportThing(cid,SNAKE.controlpos,false)

end

addEvent(doSendMagicEffect,100,pos,56,cid)

end

addEvent(SNAKE.timer,time,cid,n,pos_,time)

end,

copypos = function(p)

return {x=p.x,y=p.y,z=p.z,stackpos=p.stackpos}

end,

samepos = function(p1,p2)

if p1.x == p2.x and p2.y == p2.y then

return true

end

return false

end,

generateFood = function()

local pp = {x=SNAKE.centerpos.x+math.random(-6,6),y=SNAKE.centerpos.y+math.random(-4,4),z=SNAKE.centerpos.z}

for i=1,5 do

addEvent(doSendMagicEffect,100*i,pp,30)

end

doCreateItem(SNAKE.itemFood,1,pp)

end,

clean = function()

for y=-4,4 do

for x=-6,6 do

local pp = {x=SNAKE.centerpos.x+x,y=SNAKE.centerpos.y+y,z=SNAKE.centerpos.z}

for i=250,255 do

pp.stackpos = i

local p = getThingFromPos(pp)

if p.itemid ~= 0 then

doRemoveItem(p.uid,-1)

doSendMagicEffect(pp,15)

end

end

end

end

end,

check = function(pos)

for i=1,10 do

pos.stackpos = i

local p = getThingFromPos(pos)

if p.itemid == SNAKE.itemid then

return 1,p,true

elseif not SNAKE.isWalkable(pos) then

return 3,p,false

elseif p.itemid ~= 0 then

return 2,p

end

end

return false

end,

find_and_delete = function(pos)

for i=0,255 do

pos.stackpos = 255-i

local p = getThingFromPos(pos)

if p.itemid == SNAKE.itemid then

return doRemoveItem(p.uid,1)

end

end

end,

isWalkable = function(pos, creature, proj, pz)-- by Nord

if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end

if getTopCreature(pos).uid > 0 and creature then return false end

if getTileInfo(pos).protection and pz then return false, true end

local n = not proj and 3 or 2

for i = 0, 255 do

pos.stackpos = i

local tile = getTileThingByPos(pos)

if tile.itemid ~= 0 and not isCreature(tile.uid) then

if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then

return false

end

end

end

return true

end,

}

 

 

 

Football

 

 

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

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), getThingPos(team1pos), TRUE)

end

for i = 1 , #team2pos do

doTeleportThing(getGlobalStorageValue(team2pos), getThingPos(team2pos), TRUE)

end

end

doSendMagicEffect(pos, CONST_ME_BATS)

doTeleportThing(ball.uid, ballpos, TRUE)

doSendMagicEffect(ballpos, CONST_ME_MAGIC_GREEN)

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

 

 

 

 

 

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

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

teamToPoss = toPoss

teamOutfit = 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.lookHead

outfit.lookBody = teamOutfit.lookBody

outfit.lookLegs = teamOutfit.lookLegs

outfit.lookFeet = teamOutfit.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

 

 

 

 

 

function onAddItem(moveitem, tileitem, pos)

if(moveitem.itemid ~= 2109 and tileitem.actionid <= 23310) then -- remove trash

match = football_positions_uids[tileitem.actionid-23300]

exitPos = getThingPos(match[1])

doSendMagicEffect(exitPos, CONST_ME_BATS)

doTeleportThing(moveitem.uid, exitPos, TRUE)

else -- goal or trash (ignore) in gate

if(moveitem.itemid == 2109 and tileitem.actionid > 23310) then

for i = 1, #football_positions_uids do

match = football_positions_uids

if(match[8] == tileitem.actionid) then

footballGoal(pos, moveitem, match[6], match[7], match[3], getThingPos(match[2]))

break

elseif(match[9] == tileitem.actionid) then

footballGoal(pos, moveitem, match[6], match[7], match[2], getThingPos(match[3]))

break

end

end

end

end

return TRUE

end

 

function onStepIn(cid, item, position, fromPosition)

if(item.actionid <= 23304) then

match = football_positions_uids[item.actionid-23300]

if(getCreatureSpeed(cid) ~= match[10]) then

doRemoveCondition(cid, CONDITION_HASTE)

doChangeSpeed(cid, match[10] - getCreatureSpeed(cid))

end

end

return TRUE

end

 

 

 

 

 

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

for p = 1, #teamPoss do

team_players = team_players .. getCreatureName(getGlobalStorageValue(teamPoss[p]))

if p ~= #teamPoss then

team_players = team_players .. ", "

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

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

 

 

 

Quem souber configurar e me explicar certinho o que eu devo mecher para funcionar :)

Editado por SkyDangerous
Link para o comentário
https://xtibia.com/forum/topic/138352-como-configurar-esses-script/
Compartilhar em outros sites

×
×
  • Criar Novo...