Movements Samoch?d w Tibii!

Status
Zamknięty.

Xafaso

Advanced User
Zarejestrowany
Dołączył
Kwiecień 8, 2008
Posty
217
Liczba reakcji
15
Witam, nie mog?em si? powstrzyma? by tego tutaj nie da?.

Dodajemy do global.lua:
function isWall(id)
local walls = {1025, 1032, 1028, 1030, 1035, 1027, 1219, 4645, 4647, 4646, 4644}
if isInArray(walls, id) == 1 then
return 1
else
return 0
end
end

Teraz wchodzimy w data/movements/scripts i robimy plik o nazwie car.lua a w nim:
local storages = {
isMoving = 12550,
direction = 12551,
speed = 12552
}
function CarMoveLeft(x)
cpos = x.Cpos
Car = getThingfromPos(cpos)
newpos = {x=x.pos.x-1, y=x.pos.y, z=x.pos.z}
doCreateItem(7267,1,newpos)
doTeleportThing(x.cid, newpos)
doRemoveItem(Car.uid,1)
end
function CarMoveRight(x)
cpos = x.Cpos
Car = getThingfromPos(cpos)
newpos = {x=x.pos.x+1, y=x.pos.y, z=x.pos.z}
doCreateItem(7267,1,newpos)
doTeleportThing(x.cid, newpos)
doRemoveItem(Car.uid,1)
end
function CarMoveUp(x)
cpos = x.Cpos
Car = getThingfromPos(cpos)
newpos = {x=x.pos.x, y=x.pos.y-1, z=x.pos.z}
doCreateItem(7266,1,newpos)
doTeleportThing(x.cid, newpos)
doRemoveItem(Car.uid,1)
end
function CarMoveDown(x)
cpos = x.Cpos
Car = getThingfromPos(cpos)
newpos = {x=x.pos.x, y=x.pos.y+1, z=x.pos.z}
doCreateItem(7266,1,newpos)
doTeleportThing(x.cid, newpos)
doRemoveItem(Car.uid,1)
end
function onStepIn(cid, item, pos)
if isPlayer(cid) == 1 then
local status = {
isMoving = getPlayerStorageValue(cid, storages.isMoving),
direction = getPlayerStorageValue(cid, storages.direction),
speed = getPlayerStorageValue(cid, storages.speed)
}
if status.speed <= 0 then
setPlayerStorageValue(cid, storages.speed, 500)
status.speed = 800
elseif status.speed >= 2500 then
setPlayerStorageValue(cid, storages.speed, 500)
status.speed = 800
end
CarPos = getThingPos(item.uid)
if status.isMoving == 1 then
if status.direction == 1 then
CheckLeft = getThingfromPos({x = pos.x-1, y = pos.y, z = pos.z, stackpos = 1})
if isWall(CheckLeft.itemid) == 1 or isCreature(CheckLeft.uid) == 1 then
setPlayerStorageValue(cid, storages.direction, 2)
x = {cid = cid, pos = pos, Cpos = CarPos}
addEvent(CarMoveRight, status.speed, x)
else
x = {cid = cid, pos = pos, Cpos = CarPos}
addEvent(CarMoveLeft, status.speed, x)
end
elseif status.direction == 2 then
CheckRight = getThingfromPos({x = pos.x+1, y = pos.y, z = pos.z, stackpos = 1})
if isWall(CheckRight.itemid) == 1 or isCreature(CheckRight.uid) == 1 then
setPlayerStorageValue(cid, storages.direction, 1)
x = {cid = cid, pos = pos, Cpos = CarPos}
addEvent(CarMoveLeft, status.speed, x)
else
x = {cid = cid, pos = pos, Cpos = CarPos}
addEvent(CarMoveRight, status.speed, x)
end
elseif status.direction == 3 then
CheckUp = getThingfromPos({x = pos.x, y = pos.y-1, z = pos.z, stackpos = 1})
if isWall(CheckUp.itemid) == 1 or isCreature(CheckUp.uid) == 1 then
setPlayerStorageValue(cid, storages.direction, 4)
x = {cid = cid, pos = pos, Cpos = CarPos}
addEvent(CarMoveDown, status.speed, x)
else
x = {cid = cid, pos = pos, Cpos = CarPos}
addEvent(CarMoveUp, status.speed, x)
end
elseif status.direction == 4 then
CheckDown = getThingfromPos({x = pos.x, y = pos.y+1, z = pos.z, stackpos = 1})
if isWall(CheckDown.itemid) == 1 or isCreature(CheckDown.uid) == 1 then
setPlayerStorageValue(cid, storages.direction, 3)
x = {cid = cid, pos = pos, Cpos = CarPos}
addEvent(CarMoveUp, status.speed, x)
else
x = {cid = cid, pos = pos, Cpos = CarPos}
addEvent(CarMoveDown, status.speed, x)
end
end
elseif status.isMoving == -1 then
setPlayerStorageValue(cid, storages.isMoving, 1)
end
end
end

Teraz do movements.xml dodajemy:
<movevent event="StepIn" itemid="7267" script="car.lua" />
<movevent event="StepIn" itemid="7266" script="car.lua" />

Teraz wchodzimy w data/talkactions/scripts i robimy plik o nazwie car.lua a w nim:
local storages = {
isMoving = 12550,
direction = 12551,
speed = 12552
}
function onSay(cid, words, param)
local status = {
isMoving = getPlayerStorageValue(cid, storages.isMoving),
direction = getPlayerStorageValue(cid, storages.direction),
speed = getPlayerStorageValue(cid, storages.speed)
}
local controls = {
["up"] = {storage = storages.direction, new = 3, txt = "up"},
["down"] = {storage = storages.direction, new = 4, txt = "down"},
["left"] = {storage = storages.direction, new = 1, txt = "left"},
["right"] = {storage = storages.direction, new = 2, txt = "right"},
["speedup"] = {storage = storages.speed, new = status.speed-50, txt = "fast"},
["speeddown"] = {storage = storages.speed, new = status.speed+50, txt = "slow"},
["stop"] = {storage = storages.direction, new = -1, txt = "stop"}
}
if status.isMoving == 1 then
ctrl = controls[param]
if (ctrl ~= nil) then
setPlayerStorageValue(cid, ctrl.storage, ctrl.new)
doPlayerSay(cid, ctrl.txt, TALKTYPE_SAY)
else
doSendMagicEffect(getPlayerPosition(cid), 2)
doPlayerSendCancel(cid, "Invalid operation.")
end
else
doPlayerSendCancel(cid, "You are not in a car.")
end
end

Do talkactions.xml dodajemy:
<talkaction words="car" script="car.lua" />

I to wszystko, acha i tutaj macie jeszcze filmik (my?l?, ?e wszystko on dobrze t?umaczy, je?li nie to mog? napisa?).
Link - YouTube - Tibia Car System

Skrypt nie jest m?j! Kiedy? te? mia?em podobny samochodzik zrobiony przez mnie, ale to na Tibi? 7.92 i ?w samochodzik by? z skrzynki ;d
 
Jest par? b??d?w, a mianowicie, gdy skr?casz w prawo, samoch?d ustawiony jest w lewo, tak samo gdy jedziesz do g?ry, samoch?d ustawiony jest w d??.
 
Mi niestety skrypcik nie dzia?a :/ Pisze "Invalid Operation" :/ Szkoda ale fajnie na filmiku wygl?da :D
 
Swietny skrypt. I strasznie du?o roboty z nim pewnie by?o ... :/
 
Ehm.. Prosz? O Poprawienie Tego Skryptu Bo To Naprawde Ciekawa Rzecz Bo Mi Pisze Invalid Operation A Je?eli To Ja Co? ?le Zrobi?em To Napiszcie Jak Mam To Zrobi?!!
 
Skrypt nei jest twoj widzialem go na otfans... wiec napisz Uzytkownika...
 
Prosze o pomoc xd

Prosze o pomoc xd

Prosze O Pomoc Bo Nie Wiem O Co Chodzi W Tym, Ze Jak Zrobie Sobie Samochodzik I Wsiadam Na Niego I Pisze Car To Mi Wyskakuje Invalid Operation :/ A Taki Fajny Skrypt ! Dalbym 100/10 Xd
 
=(

=(

Powiedzcie dlaczego po wejsciu na "car" nie dzia?a mi mimo gadania comend?
W kt?rym miejscu w global.lua to wklei??
 
Fajny skrypt. Kto? musia? w?o?y? w niego du?o wysi?ku.

A takie pytanie... Czy jak kto? stoi obok kierowcy i wypowiada kom?dy to samoch?d te? reaguje?
 
#UP
Nie powinien reagowa?.

#Topic
Nie wiem co wy ?le robicie, przecie? wszystko jest napisane tak jak powinno to by? zrobione. Pr?bowa? kto? testowa? ten skrypt na TFS ?
 
Mi te? nie dzia?a : ( jak pisze car to tez "Invalid operation." i jeszcze raz : ( ?e nie dzia?a :( :( :(
 
Ja na sql - Devlandzie testowa?em i dzia?a.
Ale nie dzia?a na xml - Evolution :(
 
No to fajnie :/ Ja mam silnik aries 0.4.0 xml , wi?c mi nie pujdzie tak? Wi?c prosz? tego co zrobi? ten skrypt aby zrobi? go na xml aries , evolution ;] Nie powinien mie? problemu z tym bo sam robi? skrypcik :D
 
?wietne eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
 
- Sprawdzcie czy dzia?a ten skrypt na TFS, bo napewno powinien.
- Sprawdzcie czy dobre id dajecie, acha i jeszcze zobaczcie tak - Nie wyczarowywujcie tego "samochodu" tylko postawcie go w MapEdytorze na waszej mapie i zobaczcie czy b?dzie dzia?a?.
 
Kod:
setPlayerStorageValue(cid, ctrl.storage, ctrl.new)
doPlayerSay(cid, ctrl.txt, TALKTYPE_SAY)
else
doSendMagicEffect(getPlayerPosition(cid), 2)
doPlayerSendCancel(cid, "Invalid operation.")
end
else

Gdzie trzeba wypowiedziec komende "car" aby nie wyskoczy?o "Invalid operation" :D?

Aaa.. postawi?em w MapEditorze : nie dzia?a :cool:

A w skryptach trzeba zmieni? "pozycje" czyli : x , y , z ?? :D
 
Ostatnia edycja:
nie dzia?a mi ten skrypt wpakowa?em go na Evo by Dami
pisze "Invalid Operation" pomo?e mi kto??
 
xD To proste w obslodze i ciekwe 10/10
 
Status
Zamknięty.
Back
Do góry