• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

Annihilator nie dzialał.

Koci1994

Banned User
Joined
Dec 27, 2008
Messages
807
Reaction score
1
Witamm mam taki problem gdy ustawie 4 graczy i pociagne wajche wywal komunikat
09:48 Only players can do this quest.
Skrypt:
Code:
        -- Annihilator by Shawak v2.0

        -- CONFIG --

        local room = {     -- room with demons
        fromX = 1562,
        fromY = 475,
        fromZ = 13,
        --------------
        toX = 1567,
        toY = 479,
        toZ = 13
        }

        local monster_pos = {
        [1] = {pos = {1562, 475, 13}, monster = "Demon"},
        [2] = {pos = {1564, 475, 13}, monster = "Demon"},
        [3] = {pos = {1563, 479, 13}, monster = "Demon"},
        [4] = {pos = {1565, 479, 13}, monster = "Demon"},
        [5] = {pos = {1566, 477, 13}, monster = "Demon"},
        [6] = {pos = {1567, 477, 13}, monster = "Demon"}
        }

        local players_pos = {
        {x = 1568, y =489, z = 13, stackpos = 253},
        {x = 1567, y =489, z = 13, stackpos = 253},
        {x = 1566, y =489, z = 13, stackpos = 253},
        {x = 1565, y =489, z = 13, stackpos = 253}
        }

        local new_player_pos = {
        {x = 1565, y = 477, z = 13},
        {x = 1564, y = 477, z = 13},
        {x = 1563, y = 477, z = 13},
        {x = 1562, y = 477, z = 13}
        }

        local playersOnly = "yes"
        local questLevel = 100

        ------------------------------------------------------
        --- CONFIG END ---------------------------------------
        ------------------------------------------------------

function onUse(cid, item, fromPosition, itemEx, toPosition)
        local all_ready, monsters, player, level = 0, 0, {}, 0
        if item.itemid == 1945 then
                for i = 1, #players_pos do
                        table.insert(player, 0)
                end
                for i = 1, #players_pos do
                        player[i] = getThingfromPos(players_pos[i])
                        if player[i].itemid > 0 then
                                if string.lower("playersOnly") == "yes" then
                                        if isPlayer(cid) == TRUE then
                                                all_ready = all_ready+1
                                        end
                                else
                                        monsters = monsters+1
                                        all_ready = all_ready+1
                                end
                        end
                end
                if all_ready == #players_pos then
                        if string.lower("playersOnly") == "yes" then
                                for i = 1, #players_pos do
                                        player[i] = getThingfromPos(players_pos[i])
                                        if getPlayerLevel(player[i].uid) >= questLevel then
                                                level = level+1
                                        end
                                end
                        else
                                level = #players_pos
                        end
                        if level == #players_pos then
                                if string.lower("playersOnly") == "yes" and monsters == 0 then 
                                        for _, area in pairs(monster_pos) do
                                                        doSummonCreature(area.monster,{x=area.pos[1],y=area.pos[2],z=area.pos[3]})
                                        end
                                        for i = 1, #players_pos do
                                                doSendMagicEffect(players_pos[i], CONST_ME_POFF)
                                                doTeleportThing(player[i].uid, new_player_pos[i], FALSE)
                                                doSendMagicEffect(new_player_pos[i], CONST_ME_ENERGYAREA)
                                                doTransformItem(item.uid,1946)
                                        end
                                else
                                        doPlayerSendTextMessage(cid,19,"Only players can do this quest.")
                                end
                        else
                                doPlayerSendTextMessage(cid,19,"All Players have to be level "..questLevel.." to do this quest.")
                        end
                else
                        doPlayerSendTextMessage(cid,19,"You need "..table.getn(players_pos).." players to do this quest.")
                end
                players = {}
        elseif item.itemid == 1946 then
                local player_room = 0
                for x = room.fromX, room.toX do
                        for y = room.fromY, room.toY do
                                for z = room.fromZ, room.toZ do
                                        local pos = {x=x, y=y, z=z,stackpos = 253}
                                        local thing = getThingfromPos(pos)
                                        if thing.itemid > 0 then
                                                if isPlayer(thing.uid) == TRUE then
                                                        player_room = player_room+1
                                                end
                                        end
                                end
                        end
                end
                if player_room >= 1 then
                        doPlayerSendTextMessage(cid,19,"There is already a team in the quest room.")           
                elseif player_room == 0 then
                        for x = room.fromX, room.toX do
                                for y = room.fromY, room.toY do
                                        for z = room.fromZ, room.toZ do
                                                local pos = {x=x, y=y, z=z,stackpos = 253}
                                                local thing = getThingfromPos(pos)
                                                if thing.itemid > 0 then
                                                        doRemoveCreature(thing.uid)
                                                end
                                        end
                                end
                        end
                        doTransformItem(item.uid,1945)
                end
        end
        return TRUE
end
Gracze maja ponad 100lvl . Silnik: 0.3.5pl1
 
Debuguj... zobacz do którego warunku nie wchodzi, czy wykonuje dobrze pętle.
 
A to wyszła v2, ja używam takiego spróbój go, różni się _linijkami_ ,aha i skonfiguruj go sobie. Jeśli _będzie_ci_działać_ to daj reputa :P

Łap:

Code:
function onUse(cid, item, fromPosition, itemEx, toPosition)

        -- Annihaltor by Maxi (Shawak) v1.0

        local room = {     -- room with demons
        fromX = 1100,
        fromY = 1192,
        fromZ = 10,
        toX = 1105,
        toY = 1196,
        toZ = 10
        }

        local monster_pos = {        
        [1] = {pos = {1100,1192,10}},
        [2] = {pos = {1102,1192,10}},
        [3] = {pos = {1101,1196,10}},
        [4] = {pos = {1103,1196,10}},
        [5] = {pos = {1104,1194,10}},
        [6] = {pos = {1105,1194,10}}
        }

        local players_pos = {
        {x = 1658,y = 351,z = 13,stackpos = 253},
        {x = 1659,y = 351,z = 13,stackpos = 253},
        {x = 1660,y = 351,z = 13,stackpos = 253},
        {x = 1661,y = 351,z = 13,stackpos = 253}
        }

        local new_player_pos = {
        {x = 1659, y = 341, z = 13},
        {x = 1660, y = 341, z = 13},
        {x = 1661, y = 341, z = 13},
        {x = 1662, y = 341, z = 13}
        }

        local monster = "Demon"
        local questLevel = 100


        -- don't touch ------------
        local player = {0, 0, 0, 0}
        local all_ready = 0
        ---------------------------

        local player1 = getThingfromPos(players_pos[1])
        local player2 = getThingfromPos(players_pos[2])
        local player3 = getThingfromPos(players_pos[3])
        local player4 = getThingfromPos(players_pos[4])

        if item.itemid == 1945 then
                if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then
                        for i = 1, 4 do
                                player[i] = getThingfromPos(players_pos[i])
                                if player[i].itemid > 0 then
                                        all_ready = 1
                                end
                        end
                else    
                doPlayerSendTextMessage(cid,19,"You need 4 players to do this quest.")
                end
                if all_ready == 1 then
                        for _, area in pairs(monster_pos) do
                                doSummonCreature(monster,{x=area.pos[1],y=area.pos[2],z=area.pos[3]}) 
                        end
                        for i = 1, 4 do
                                doSendMagicEffect(players_pos[i], CONST_ME_POFF)
                                doTeleportThing(player[i].uid, new_player_pos[i], FALSE)
                                doSendMagicEffect(new_player_pos[i], CONST_ME_ENERGYAREA)
                                all_ready = 0
                        end
                        doTransformItem(item.uid,1946)
                end
        elseif item.itemid == 1946 then
                local player_room = 0
                for x = room.fromX, room.toX do
                        for y = room.fromY, room.toY do
                                for z = room.fromZ, room.toZ do
                                        local pos = {x=x, y=y, z=z,stackpos = 253}
                                        local thing = getThingfromPos(pos)
                                        if thing.itemid > 0 then 
                                                if isPlayer(thing.uid) == TRUE then
                                                        player_room = player_room+1
                                                end
                                        end
                                end
                        end
                end
                if player_room >= 1 then
                        doPlayerSendTextMessage(cid,19,"There is already a team in the quest room.")            
                elseif player_room == 0 then
                        for x = room.fromX, room.toX do
                                for y = room.fromY, room.toY do
                                        for z = room.fromZ, room.toZ do
                                                local pos = {x=x, y=y, z=z,stackpos = 253}
                                                local thing = getThingfromPos(pos)
                                                if thing.itemid > 0 then 
                                                        doRemoveCreature(thing.uid)
                                                end
                                        end
                                end
                        end
                        player_room = 0
                        doTransformItem(item.uid,1945)
                end
        end
        return TRUE
end
 
Przerobilem sobie :
Code:
function onUse(cid, item, fromPosition, itemEx, toPosition)

        -- Annihaltor by Maxi (Shawak) v1.0

        local room = {     -- room with demons    
        fromX = 1562,
        fromY = 475,
        fromZ = 13,
        toX = 1567,
        toY = 479,
        toZ = 13
        }

        local monster_pos = {
        [1] = {pos = {1562, 475, 13}},
        [2] = {pos = {1564, 475, 13}},
        [3] = {pos = {1563, 479, 13}},
        [4] = {pos = {1565, 479, 13}},
        [5] = {pos = {1566, 477, 13}},
        [6] = {pos = {1567, 477, 13}}
        }

        local players_pos = {
        {x = 1568, y =489, z = 13, stackpos = 253},
        {x = 1567, y =489, z = 13, stackpos = 253},
        {x = 1566, y =489, z = 13, stackpos = 253},
        {x = 1565, y =489, z = 13, stackpos = 253}
        }

        local new_player_pos = {
        {x = 1565, y = 477, z = 13},
        {x = 1564, y = 477, z = 13},
        {x = 1563, y = 477, z = 13},
        {x = 1562, y = 477, z = 13}
        }

        local monster = "Demon"
        local questLevel = 100

        
        -- don't touch ------------
        local player = {0, 0, 0, 0}
        local all_ready = 0
        ---------------------------

        local player1 = getThingfromPos(players_pos[1])
        local player2 = getThingfromPos(players_pos[2])
        local player3 = getThingfromPos(players_pos[3])
        local player4 = getThingfromPos(players_pos[4])

        if item.itemid == 1945 then
                if player1.itemid > 0 and player2.itemid > 0 and player3.itemid > 0 and player4.itemid > 0 then
                        for i = 1, 4 do
                                player[i] = getThingfromPos(players_pos[i])
                                if player[i].itemid > 0 then
                                        all_ready = 1
                                end
                        end
                else   
                doPlayerSendTextMessage(cid,19,"You need 4 players to do this quest.")
                end
                if all_ready == 1 then
                        for _, area in pairs(monster_pos) do
                                doSummonCreature(monster,{x=area.pos[1],y=area.pos[2],z=area.pos[3]})
                        end
                        for i = 1, 4 do
                                doSendMagicEffect(players_pos[i], CONST_ME_POFF)
                                doTeleportThing(player[i].uid, new_player_pos[i], FALSE)
                                doSendMagicEffect(new_player_pos[i], CONST_ME_ENERGYAREA)
                                all_ready = 0
                        end
                        doTransformItem(item.uid,1946)
                end
        elseif item.itemid == 1946 then
                local player_room = 0
                for x = room.fromX, room.toX do
                        for y = room.fromY, room.toY do
                                for z = room.fromZ, room.toZ do
                                        local pos = {x=x, y=y, z=z,stackpos = 253}
                                        local thing = getThingfromPos(pos)
                                        if thing.itemid > 0 then
                                                if isPlayer(thing.uid) == TRUE then
                                                        player_room = player_room+1
                                                end
                                        end
                                end
                        end
                end
                if player_room >= 1 then
                        doPlayerSendTextMessage(cid,19,"There is already a team in the quest room.")           
                elseif player_room == 0 then
                        for x = room.fromX, room.toX do
                                for y = room.fromY, room.toY do
                                        for z = room.fromZ, room.toZ do
                                                local pos = {x=x, y=y, z=z,stackpos = 253}
                                                local thing = getThingfromPos(pos)
                                                if thing.itemid > 0 then
                                                        doRemoveCreature(thing.uid)
                                                end
                                        end
                                end
                        end
                        player_room = 0
                        doTransformItem(item.uid,1945)
                end
        end
        return TRUE
end
Temat raczej do zamkniecia versja 2.0 nie działa ;p
 
local player2 = getThingfromPos(players_pos[2])

Zamiast getThingfromPos() mozna uzyc getTopCreature(). Stackpos niepotrzebny.
 
Back
Top