• 01-04.05.2026 - DOUBLE EXP / SKILL EVENT!

Actions D?wignie usuwaj?c? dan? ?cian? - jeden plik .lua

Status
Zamknięty.

ErMex

Egzekucja
Przyjaciel forum
Dołączył
Grudzień 1, 2010
Posty
574
Liczba reakcji
177
Na pro?b? u?ytkownika tego postu: http://tibia.net.pl/actions/480514-dzwignia-usuwajaca-sciane.html#post1258508 postanowi?em zrobi? mu ten skrypt, a stary wywali? do kosza :d.
PHP:
	<action fromaid="3200" toaid="3202" event="script" value="remove_wall.lua"/>
remove_wall.lua:
PHP:
local sciany = {
	[3200] = {pos_wall = {x=1013, y=1025, z=7, stackpos=1}}, -- pozycje
	[3201] = {pos_wall = {x=1013, y=1026, z=7, stackpos=1}},
	[3202] = {pos_wall = {x=1013, y=1024, z=7, stackpos=1}}
	}
function onUse(cid, item, frompos, item2, topos)
local zmienna = sciany[item.actionid] 
local ITEM_ID = 5268 -- id sciany
	if item.itemid == 1945 then
        doTransformItem(item.uid, 1946)
        doRemoveItem(getThingfromPos(zmienna.pos_wall).uid, 1)
        doPlayerSendTextMessage(cid,25, "You removed wall!") -- tekst
	elseif(item.itemid == 1946) then
		doTransformItem(item.uid, 1945)
        doCreateItem(ITEM_ID, 1, zmienna.pos_wall)
	end
return 1
end
Opis:
W jednym skrypcie mo?emy ustawi? par? ?cian oraz par? d?wigni, kt?re b?d? usuwa? ?cian?. Odpowiednia d?wignia usuwa odpowiedni? ?cian?.

Obja?nienie:
To w kwadratowych nawiasach np. [3200] - jest to actionid d?wigni. Odpowiednie actionid, kt?re mamy w nawiasach kwadratowych usuwaj?/tworz? ?cian?, kt?rej wsp??rz?dne mamy wpisane obok nawiasu po prawek stronie. Jak co? niejasne to piszcie.​
 
Odp: D?wignie usuwaj?c? dan? ?cian? - jeden plik .lua

a o co chodzi z tymi pozycjami to stack poz 1 ? i jak doda? by usuwa? wi?cej ?cian ? i czy to musi byc ?ciana czy mo?e by? np kamie? :D
Wielkie dzi?ki za skrypt. Bless Ya man! =]

//ErMex
Te stackposy nie zmieniaj :P Aby usuwa? wi?cej ni? jedn? ?cian? trzeba u?y? p?tli (napisz w dziale request to Ci zrobi?). Tak, mo?e by? to r?wnie? i kamie?.
 
Ostatnio edytowane przez moderatora:
Odp: D?wignie usuwaj?c? dan? ?cian? - jeden plik .lua

Nie sprawdzasz czy kamie? istnieje. Zr?b jaki? porz?dny config dla skryptu, a nie ?e podpisujesz cz??? kodu komentarzem, tak samo z id kamienia, dla ka?dej pozycji powinno by? odr?bne. Bardzo s?abo.
Notka moderatorska:
Ja go przerabia?em a nie pisa?em od nowa... Nic nie dodawa?em, opr?cz tabeli, innych zmiennych wszystko jest takie samo.
http://tibia.net.pl/kosz-biblioteki/480514-dzwignia-usuwajaca-sciane.html
// ErMex
 
Ostatnio edytowane przez moderatora:
Odp: D?wignie usuwaj?c? dan? ?cian? - jeden plik .lua

M?g? by kto? przerobi? mi skrypt, aby m?g? usuwa? 3 ?ciany? Bo zrobi?em bram? i dok?adnie tak jest:

[3200] = {pos_wall = {x=969, y=1025, z=7, stackpos=1}, {x=969, y=1026, z=7, stackpos=1}, {x=969, y=1027, z=7, stackpos=1}}, -- pozycje

Co do skryptu, bardzo ?adny, ale repucik dopiero jak pomo?esz. ;D
 
Odp: D?wignie usuwaj?c? dan? ?cian? - jeden plik .lua

PHP:
local sciany = {
                [3200] = {id_kamienia = 1304, pos_walls = {{x=1013, y=1025, z=7},{x=1013, y=1025, z=7},{x=1013, y=1025, z=7}}}, -- pozycje
                [3201] = {id_kamienia = 1304, pos_walls = {{x=1013, y=1025, z=7},{x=1013, y=1025, z=7}}},
                [3202] = {id_kamienia = 1304, pos_walls = {{x=1013, y=1025, z=7}}}
                }
function onUse(cid, item, frompos, item2, topos)
local v = sciany[item.actionid]
for s = 1, #v.pos_walls do
	if item.itemid == 1945 then
		for i = 254, 1, -1 do
			v.pos_walls[s].stackpos = i
			if getThingFromPos(v.pos_walls[s]).itemid == v.id_kamienia then
				doTransformItem(item.uid, 1946)
				doRemoveItem(getThingFromPos(v.pos_walls[s]).uid, 1)
				return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You removed wall!") -- tekst
			else
				return doPlayerSendCancel(cid, 'Sorry, not possible.')
			end
		end
	elseif item.itemid == 1946 then
		doTransformItem(item.uid, 1945)
		return doCreateItem(v.id_kamienia, 1, v.pos_walls[s])
	end
end
return true
end
Nie testowa?em.
 
Ostatnia edycja:
Odp: D?wignie usuwaj?c? dan? ?cian? - jeden plik .lua

#up
tak, przy pi?ciu ?cianach 5x255 stackpos?w masz 1k powt?rze? p?tli,
tak kto? sobie poklika kilka razy i zaje*any serwer.


nie testowane:
PHP:
local itemz = {
                [3200] = {
                    id = 1304,
                    pos = {
                        {x=666, y=666, z=7},
                        {x=666, y=665, z=7},
                        {x=666, y=664, z=7},
                    }
                }
                
function onUse(cid, item, frompos, item2, topos)
    local get = itemz[item.actionid]
    local status = 0
    if not(get) then return TRUE end
    for _,p in ipairs(get.pos) do
        p.stackpos = 1
        local g = getThingFromPos(p)
        if(g.itemid > 0 and (not(isMovable(g.uid)) and not(isPlayer(g.uid))))then
			status = status-1
        else
            status = status+1
        end
    end
    for _,x in ipairs(get) do
        local p = x.pos
        local id = x.id
		local c = #p
        p.stackpos = 1
        local g = getThingFromPos(p)
        if(status == -c)then
             doRemoveItem(getThingFromPos(p).uid, 1)
        elseif(status == c)then
            doCreateItem(id, 1, p)
		else
			doPlayerSendCancel('Sorry, not possible.')
        end
    end
    doTransformItem(item.uid, (item.itemid == 1945) and 1946 or 1945)
    return TRUE
end
 
Ostatnia edycja:
Odp: D?wignie usuwaj?c? dan? ?cian? - jeden plik .lua

Ani Oskara skrypt nie dzia?a, ani skrypt Ersiu.

Skrypt oskara nie wywala b??d?w w konsoli, ale tw?j Ersiu tak.

b9gis7.jpg


Mam taki skrypt:

PHP:
local poss = {
[1] = {x=970, y=1025, z=6},
[2] = {x=970, y=1026, z=6},
[3] = {x=970, y=1027, z=6},
[4] = {x=970, y=1028, z=6}
}
 
local lever = {
[1] = {x=969, y=1028, z=6,stackpos = 1},
[2] = {x=971, y=1028, z=6,stackpos = 1}
}
function onUse(cid, item, frompos, item2, topos)
        if item.itemid == 1945 then
                    for i = 3, 4 do
                            if getTileItemById(poss[i],1526).itemid > 0 then
                               doRemoveItem(getThingFromPos(poss[i]).uid)
                            end
                    end
                    for i = 1, #poss do
                             if getTileItemById(poss[i],1526).itemid ~= nil then
	                            doTransformItem(getThingFromPos(poss[i]).uid,413)
                             end
                    end
                    for i = 1, #lever do
                             if getThingFromPos(lever[i]).itemid == 1945 then
                                doTransformItem(getThingFromPos(lever[i]).uid,1946)
                             end
                    end
        elseif item.itemid == 1946 then
                    for i = 1, 2 do
                             if getTileItemById(poss[i],413).itemid ~= nil then
	                            doTransformItem(getThingFromPos(poss[i]).uid,1526)
                             end
                    end
                    for i = 3, 4 do
                             if getTileItemById(poss[i],413).itemid ~= nil then
	                            doTransformItem(getThingFromPos(poss[i]).uid,1526)
		                        doCreateItem(4799,poss[i])
                             end
                    end
                    for i = 1, #lever do
                             if getThingFromPos(lever[i]).itemid == 1946 then
                                doTransformItem(getThingFromPos(lever[i]).uid,1945)
                             end
                    end
        end
	return true
end


Ale jest baardzo d?ugi...I jak chc? zrobi? ?eby pojawia?y si? kraty, to pod kratami jest czarne pole.
 
Odp: D?wignie usuwaj?c? dan? ?cian? - jeden plik .lua

Teraz dzia?a:
PHP:
local sciany = {
                [1001] = {id_kamienia = 1304, pos_walls = {{x=1862, y=1174, z=7},{x=1864, y=1174, z=7},{x=1866, y=1174, z=7}}}, -- pozycje
                [3201] = {id_kamienia = 1304, pos_walls = {{x=1013, y=1025, z=7},{x=1013, y=1025, z=7}}},
                [3202] = {id_kamienia = 1304, pos_walls = {{x=1013, y=1025, z=7}}}
                }
function onUse(cid, item, frompos, item2, topos)
local v = sciany[item.actionid]
for s = 1, #v.pos_walls do
	v.pos_walls[s].stackpos = 1
    if item.itemid == 1945 then
		if getThingFromPos(v.pos_walls[s]).itemid == v.id_kamienia then
			doTransformItem(item.uid, 1946)
			doRemoveItem(getThingFromPos(v.pos_walls[s]).uid, 1)
			if s == #v.pos_walls then
				if #v.pos_walls > 1 then x = 's' else x = '' end
				return doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'You removed all '..#v.pos_walls..' wall'..x..'!') -- tekst
			end
		else
			return doPlayerSendCancel(cid, 'Sorry, not possible.')
		end
    elseif item.itemid == 1946 then
		if getThingFromPos(v.pos_walls[s]).itemid ~= v.id_kamienia then
			doCreateItem(v.id_kamienia, 1, v.pos_walls[s])
		end
		doTransformItem(item.uid, 1945)
	end
end
return true
end

#down
Nie jestem ?aden 'ziomu?' i nie przerobi? Ci tego.
 
Ostatnia edycja:
Odp: D?wignie usuwaj?c? dan? ?cian? - jeden plik .lua

Ziomu? m?g?by? mi przerobi? tego skrypta,?e jak usuwam ?cian? to ona pojawia si? po 1minucie?
 
Status
Zamknięty.
Back
Do góry