What's new

Problem EXP Gate

Status
Not open for further replies.

Adellll

Active User
Joined
Aug 2, 2009
Messages
133
Reaction score
7
Witam. Pobra?em ots, wszystko git tylko napotka?em problem ?e EXP Gate nie dzia?aj?. Nie wiem jak naprawi? sprawnie ten problem.

Jeden z u?ytkownik?w napisa? :

Trzeba po dodawa? do kazdego exp gate'a pewna linijke a mianowicie
Kod PHP:
<attribute key="levelDoor" value="1000" />
Przyk?adowy Item powinien wygladac tak
Kod PHP:
<item id="1227" article="a" name="gate of expertise">
<attribute key="type" value="door"/>
<attribute key="blockprojectile" value="1"/>
<attribute key="levelDoor" value="1000" />
</item>

Moje pytanie brzmi, czy to jest poprawne je?li tak to gdzie to wklei?.
Lub jaki jest inny spos?b naprawy tego.


Za pomoc +
 

slumek

New User
Joined
Nov 23, 2008
Messages
7
Reaction score
0
Odp: Problem EXP Gate

wszystko masz dobrze ale sprawdz jeszcze id tych dzrwi czy tez bramki levelowej i wydaje mi sie ze powinienes to wkleic w actions i potem w actions.xml a jak nie to nie wiem
 

Batonek

Senior User
Joined
Apr 26, 2008
Messages
605
Reaction score
25
Odp: Problem EXP Gate

@up
Tego nie ma w actions. Jest to funkcja w silniku a nie skryptach.

U mnie wygl?da to tak:
Code:
    <item id="3540" article="a" name="gate of expertise">
        <attribute key="type" value="door" />
        <attribute key="levelDoor" value="1000" />
        <attribute key="blockprojectile" value="1" />
    </item>
I wszystko dzia?a jak nale?y.
Pytanie tylko: jak dodajesz lvldoor w map edytorze?
Je?eli chcesz doda? bramk? od 50lvla musisz w actionID drzwi wpisa? 1050, je?eli chcesz zrobi?, ?eby bramka by?a od 100 lvla - dodajesz w actionID drzwi 1100.
Mam nadzieje ?e pomog?em,
pozdrawiam.
 

Adellll

Active User
Joined
Aug 2, 2009
Messages
133
Reaction score
7
Odp: Problem EXP Gate

Jest to silnik z tego tematu NaxedOT

Drzwi s? ustawione :
16:51 You see a gate of expertise.
ItemID: [1261], ActionID: [1007], UniqueID: [1007].
Czyli od 7 lvl z tym ?e mam wi?kszy i te drzwi nie dzia?aj?.

@up
Gdzie to wklei? to sprawdz? mo?e akurat pomo?e ; )

@edit

doors.lua w moim ots

local function checkStackpos(item, position)
position.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
local thing = getThingFromPos(position)

position.stackpos = STACKPOS_TOP_FIELD
local field = getThingFromPos(position)

return (item.uid == thing.uid or thing.itemid < 100 or field.itemid == 0)
end

local function doorEnter(cid, item, toPosition)
doTransformItem(item.uid, item.itemid + 1)
doTeleportThing(cid, toPosition)
end

function onUse(cid, item, fromPosition, itemEx, toPosition)
if(fromPosition.x ~= CONTAINER_POSITION and isPlayerPzLocked(cid) and getTileInfo(fromPosition).protection) then
doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
return true
end

if(getItemLevelDoor(item.itemid) > 0) then
if(item.actionid == 189) then
if(not isPremium(cid)) then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")
return true
end

doorEnter(cid, item, toPosition)
return true
end

local gender = item.actionid - 186
if(isInArray({PLAYERSEX_FEMALE, PLAYERSEX_MALE, PLAYERSEX_GAMEMASTER}, gender)) then
if(gender ~= getPlayerSex(cid)) then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")
return true
end

doorEnter(cid, item, toPosition)
return true
end

local skull = item.actionid - 180
if(skull >= SKULL_NONE and skull <= SKULL_BLACK) then
if(skull ~= getCreatureSkullType(cid)) then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")
return true
end

doorEnter(cid, item, toPosition)
return true
end

local group = item.actionid - 150
if(group >= 0 and group < 30) then
if(group > getPlayerGroupId(cid)) then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")
return true
end

doorEnter(cid, item, toPosition)
return true
end

local vocation = item.actionid - 100
if(vocation >= 0 and vocation < 50) then
local playerVocationInfo = getVocationInfo(getPlayerVocation(cid))
if(playerVocationInfo.id ~= vocation and playerVocationInfo.fromVocation ~= vocation) then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")
return true
end

doorEnter(cid, item, toPosition)
return true
end

if(item.actionid == 190 or (item.actionid ~= 0 and getPlayerLevel(cid) >= (item.actionid - getItemLevelDoor(item.itemid)))) then
doorEnter(cid, item, toPosition)
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Only the worthy may pass.")
end

return true
end

if(isInArray(specialDoors, item.itemid)) then
if(item.actionid == 100 or (item.actionid ~= 0 and getPlayerStorageValue(cid, item.actionid) > 0)) then
doorEnter(cid, item, toPosition)
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "The door seems to be sealed against unwanted intruders.")
end

return true
end

if(isInArray(keys, item.itemid)) then
if(itemEx.actionid > 0) then
if(item.actionid == itemEx.actionid and doors[itemEx.itemid] ~= nil) then
doTransformItem(itemEx.uid, doors[itemEx.itemid])
return true
end

doPlayerSendCancel(cid, "The key does not match.")
return true
end

return false
end

if(isInArray(horizontalOpenDoors, item.itemid) and checkStackpos(item, fromPosition)) then
local newPosition = toPosition
newPosition.y = newPosition.y + 1
local doorPosition = fromPosition
doorPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
local doorCreature = getThingfromPos(doorPosition)
if(doorCreature.itemid ~= 0) then
local pzDoorPosition = getTileInfo(doorPosition).protection
local pzNewPosition = getTileInfo(newPosition).protection
if((pzDoorPosition and not pzNewPosition and doorCreature.uid ~= cid) or
(not pzDoorPosition and pzNewPosition and doorCreature.uid == cid and isPlayerPzLocked(cid))) then
doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
else
doTeleportThing(doorCreature.uid, newPosition)
if(not isInArray(closingDoors, item.itemid)) then
doTransformItem(item.uid, item.itemid - 1)
end
end

return true
end

doTransformItem(item.uid, item.itemid - 1)
return true
end

if(isInArray(verticalOpenDoors, item.itemid) and checkStackpos(item, fromPosition)) then
local newPosition = toPosition
newPosition.x = newPosition.x + 1
local doorPosition = fromPosition
doorPosition.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
local doorCreature = getThingfromPos(doorPosition)
if(doorCreature.itemid ~= 0) then
if(getTileInfo(doorPosition).protection and not getTileInfo(newPosition).protection and doorCreature.uid ~= cid) then
doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
else
doTeleportThing(doorCreature.uid, newPosition)
if(not isInArray(closingDoors, item.itemid)) then
doTransformItem(item.uid, item.itemid - 1)
end
end

return true
end

doTransformItem(item.uid, item.itemid - 1)
return true
end

if(doors[item.itemid] ~= nil and checkStackpos(item, fromPosition)) then
if(item.actionid == 0) then
doTransformItem(item.uid, doors[item.itemid])
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.")
end

return true
end

return false
end
 
Last edited:

Batonek

Senior User
Joined
Apr 26, 2008
Messages
605
Reaction score
25
Odp: Problem EXP Gate

Po co ustawi?e? uniqueID? Mo?e to blokuje? To co poda?em w kodzie, jest w items.xml tylko ?e Ty u?y?e? bramki o ID 1261, wi?c za tamto podmie? i nie zapomnij zmieni? mojego cytatu na id 1261.
Pozdrawiam.

@down
W takim wypadku, nie wiem.
 
Last edited:

Adellll

Active User
Joined
Aug 2, 2009
Messages
133
Reaction score
7
Odp: Problem EXP Gate

UniqueID tylko na chwile wstawi?em ?eby sprawdzi?.

Po wklejeniu tego co mi poda?e? wyskakuje mi error podczas w??czania ots ?e nie mo?e za?adowa? items.xml

Drzwi w items.xml

<item id="1261" article="a" name="gate of expertise">
<attribute key="type" value="door"/>
<attribute key="blockprojectile" value="1"/>
</item>
 
Last edited:
Status
Not open for further replies.
Top