[7.92-8.0][Actions] Krzesło elektryczne
Witam.
Kiedyś gdy zaczynałem bawić się (bo nic innego nie umiałem) ots'ami w mej głowie pojawił się pomysł zrobienia skryptu na krzesło elektryczne...
Ostatnio postanowiłem zrobić ots (tym razem rpg), niestety projekt ten raczej nie wypali... Jednak zrobiłem kilka skryptów i postanowiłem dodać najciekawszy z nich - krzesło elektryczne.
Na początek będzie potrzebna nam taka sala:
http://img78.imageshack.us/img78/1908/salapx8.png
Następnie tworzymy w ots\data\actions\scripts plik krzeslo.lua i wklejamy do niego następujący tekst:
Kod:
-- Krzeslo elektryczne zrobione przez Smoczek Leon --
-- Electric chair by Smoczek Leon --
function onUse(cid, item, frompos, item2, topos)
if item.uid == 7666 and item.itemid == 1945 then
player1pos = {x=330, y=355, z=12, stackpos=253} -- pozycja krzesla
player1 = getThingfromPos(player1pos)
if player1.itemid > 0 then
player1heal = getPlayerHealth(player1.uid)
player1mana = getPlayerMana(player1.uid)
smierc = (player1mana) + (player1heal)
skazany = getPlayerName(player1.uid)
doPlayerAddHealth(player1.uid,-smierc)
doSendMagicEffect(player1pos,11)
doTransformItem(item.uid,item.itemid+1)
else
doPlayerSendCancel(cid,"Nie ma kogo zabic :(")
end
elseif item.uid == 7666 and item.itemid == 1946 then
cialopos = {x=330, y=355, z=12, stackpos=2} -- pozycja krzesla - nie zmieniaj czerwonego!
cialo = getThingfromPos(cialopos)
cialo2pos = {x=330, y=355, z=12, stackpos=1} -- pozycja krzesla - nie zmieniaj czerwonego!
cialo2 = getThingfromPos(cialo2pos)
newpos = {x=332, y=355, z=12} -- pozycja ciala po przeniesieniu
doRemoveItem(cialo2.uid,1)
doTeleportThing(cialo.uid,newpos)
doTransformItem(item.uid,item.itemid-1)
else
return 0
end
return 1
end
i dodajemy linijkę w actions.xml
Kod:
<action uniqueid="7666" script="krzeslo.lua" />
A teraz skrypt wysyłający osoba na krzesło.
ots\data\talkactions\scripts execution.lua
Kod:
-- Krzeslo elektryczne zrobione przez Smoczek Leon --
-- Electric chair by Smoczek Leon --
function onSay(cid, words, param)
skazany = getPlayerByName(param)
krzeslo = {x=330, y=355, z=12}
if getPlayerAccess(cid) >= 1 then
if isPlayer(skazany) == 1 then
if words == "execution" then
doTeleportThing(skazany, krzeslo)
mayNotLogout(skazany, 10)
doPlayerSay(cid, "Player "..param.." condemn to electric chair", 9)
end
else
doPlayerSendCancel(cid,"Player is not online.")
end
end
end
UWAGA!!! opcja mayNotLogout która nie pozwala się wylogować skazanemu jest tylko na devlandzie! Jeśli używasz innego silnika wklej ten skrypt:
Kod:
-- Krzeslo elektryczne zrobione przez Smoczek Leon --
-- Electric chair by Smoczek Leon --
local condition = createConditionObject(COMBAT_ENERGYDAMAGE)
addDamageCondition(condition, 20000, 3000, -0)
function onSay(cid, words, param)
skazany = getPlayerByName(param)
krzeslo = {x=330, y=355, z=12}
if getPlayerAccess(cid) >= 1 then
if isPlayer(skazany) == 1 then
if words == "execution" then
doTeleportThing(skazany, krzeslo)
doTargetCombatCondition(0, skazany, condition, CONST_ME_NONE)
doPlayerSay(cid, "Player "..param.." condemn to electric chair", 9)
end
else
doPlayerSendCancel(cid,"Player is not online.")
end
end
end
W talkactions.xml dodajemy linijke
Kod:
<talkaction words="execution" script="execution.lua" />
Pogrubioną czcionką napisałem pozycje krzesła.
I będzie działało to tak:
GM/God/Tutor zauważył osobę która używa np mc albo tibie auto. Wpisuje execution "nick_gracza i osoba ta jest teleportowana na krzesło. Następnie gm może dać wiadomość że zaraz odbędzie się egzekucja tego i tego zioma. Następnie ciągnie za czerwoną gałeczkę (Dog in the Fod:P). Skazany zostaje porażony prądem i umiera. Drugie pociągnięcie usunie krew z pod krzesła i przeteleportuje ciało na wybrane współrzędne
Koniec, dziękuje za uwagę :)
Może zrobi ktoś inny sposób teleportowania??
Krzeselko elektryczne dziala bez problemow....ale co do teleportu...hmmm mam silnik evo 0.7.8 i tak ajk innym z tym silnikiem teleportacja nie dziala.... znaczy pewnie jest tak jak ktos pisal z blednym odnajdowaniem postaci.. bo po wpisaniu komendy tp na krzeslo pisze ze ten player nie jeest online a przeciez jest..... Ktoś potrafi zmodyfikowac to tak zeby dzialao??
"Player is not online.!!!!!!!!!"
Już wcześniej pisałem egzekucja działa.... Player ginie.... Ale co z tym teleportem. Po wpisaniu komendy>>>>> execution "KAT"<<<(taki player stworzony w celach testów) pojawia się tekst "Player is not online." ale przecież jak widać to na obrazku stoi przede mną wiec jest online.
hXXp://img413.imageshack.us/img413/4656/bladbp4.jpg
w miejsce "XX" wpisać "tt"
Wydaje mi sie że tak jak ktoś tu wcześniej pisał problem tkwi w odnajdywaniu graczy. Posiadam Evolution 0.7.8 na SVN 0.6.0 od Xidaozu... ten zamieszczony gdzieś tutaj. Na innych silnikach tp działa ale na tym konkretnym nie. Ktoś proponował rozwiązanie problemu które miałoby wyglądać tak:
"<talkaction words="execution" script="scripts execution.lua" />"
ktoś zaproponował to rozwiązanie ponieważ można się walnać na nazwaniu pliku execution.lua
ots\data\talkactions\scripts execution.lua
Ja się nie pomyliłem i skrypt ten na tym silniku nie działa (na ZORZIN np działa)... Jeśli ktoś zna sposób na rozwiązanie tego problemu niech się nim podzieli bo zamierzam zbudować swojego OTS'a właśnie na wspomnianym wcześniej EVO