What's new
  • logo_cipsoft
    Latest servers:
    New servers will open on: 19th Feb 2025:
    Noctalia (Open PvP) Ignitera (Open PvP) us_logo Xybra (Open PvP)

Actions [7.?][8.x] System dxwigni (Levers system)

Status
Not open for further replies.

Gandhi

Active User
Joined
Aug 7, 2013
Messages
80
Reaction score
19
Witam, postanowilem wrzucic kilka moich starych skryptow, ktore sa w necie, takze i na to forum.

Licze na konstruktywna krytyke.

Chyba ka?dy pami?ta, jak na wielu, szczeg?lnie starych silnikach ka?da d?wignia na mapie ma sw?j oddzielny skrypt. Takie rozwi?zanie jednak trawi du?o pami?ci, tak wi?c polecam alternatyw? do tego - jeden system, w kt?rym mo?esz zapisa? wszystkie d?wignie.

Mo?liwo?ci, jakie niesie ze sob? ten skrypt:
  • mo?liwo?? ustawiania d?wigni z uniqueid oraz actionid
  • ustawienia wielu pozycji do usuwania/tworzenia przedmiot?w
  • opcjonalne ustawienie wiadomo?ci po przeci?gni?ciu d?wigni
  • prosta konfiguracja, wystarczy tylko doda? jedn? linijk? do configu i masz dzia?aj?c? d?wigni?

A oto skrypt:
data/actions/scripts/levers.lua
[lua]
local config = {
actions_id = {
-- dzwignie z ustawionym action id
},
unique_id = {
-- dzwignie z ustawionym unique id
[9991] = {positions = {{x=663, y=428, z=7, stackpos=1}}, itemid = 1355, actions = {
[1945] = {action = 'remove', message = 'Odblokowales przejscie.'},
[1946] = {action = 'create', message = 'Zablokowales przejscie.'},
}}
},
messages = {
defaultRemove = "You're cleared your way from the lock.",
defaultCreate = "You're created the lock on your way.",
messageType = 20
},
switches = {
-- mozesz ustawic zaawansowane zmienianie dzwigni, jesli bedzie potrzeba (zmiana itemid po kliknieciu)
[1945] = {itemTransformTo = 1946},
[1946] = {itemTransformTo = 1945}
}
}

function onUse(cid, item, frompos, item2, topos)
local switch = config.actions_id[item.actionid] or config.unique_id[item.uid]
if(switch == nil) then
return 0
end
local thing, action = 0, switch.actions[item.itemid]
if(action == nil) then
return 0
end
if(action.action == 'remove') then
for k, v in pairs(switch.positions) do
thing = getThingfromPos(v)
if(thing.itemid == switch.itemid) then
doRemoveItem(thing.uid, 1)
doPlayerSendTextMessage(cid, config.messages.messageType, (action.message ~= nil and action.message or config.messages.defaultRemove))
end
end
elseif(action.action == 'create') then
for k, v in pairs(switch.positions) do
thing = getThingfromPos(v)
if(thing.itemid ~= switch.itemid) then
doCreateItem(switch.itemid, 1, switch.position)
doPlayerSendTextMessage(cid, config.messages.messageType, (action.message ~= nil and action.message or config.messages.defaultCreate))
end
end
end
doTransformItem(item.uid, (config.switches[item.itemid] and config.switches[item.itemid].itemTransformTo or item.itemid))
return 1
end[/lua]
Code:
<action uid="9991" event="script" value="levers.lua"/>
 
Status
Not open for further replies.
Top