• logo_cipsoft
    Nowe serwery zostały otwarte 19 Lut 2025:
    Noctalia (Open PvP) Ignitera (Open PvP) us_logo Xybra (Open PvP)

[x.x][Skrypty] Zam?wienia

Status
Zamknięty.
Odp: [x.x][Skrypty] Zam?wienia

Gelio a da si? z jak?? funkcj? zrobi? podpunkt 3.?
A do podpunktu 2 to ?eby si? tak robi?o arz mana dojdzie do ko?ca ;]
 
Odp: [x.x][Skrypty] Zam?wienia

Witam mam dla Ciebie pewn? pro?b?. Da?by? rade wykona? takie co??
Rodzaj: actions(chyba)
Wersja tibii: 8.4
O czym ma by? skrypt: Chodzi mi o to, ?e po zabiciu monstera pojawia si? TP.
(Prosz? nie wkleja? mi tego potwora z firewalker bootsow nie mog? si? w nim po?apa?)
Skrypt:
Kod:
local pozycjaTP = {x=123, y=123, z=7}    -- Na jakiej pozycji ma si? robi? teleport
local gdzieTP = {x=123, y=123, z=7}     -- Gdzie ten teleport ma teleportowa?
local ile = 2*60      -- Na ile sekund teleport ma si? tworzy?. Pocz?tkowo na 2 minuty. Po tym czasie teleport znika.
local id = 1234     -- ID teleportu

function onKill(cid, target)
local tp = doCreateTeleport(id, gdzieTP, pozycjaTP)
addEvent(doRemoveItem,ile,tp,1)
return TRUE
end
Potem do data/creaturescripts/creaturescripts.xml:
Kod:
<event type="kill" name="Teleport" script="nazwa tego skruptu.lua" />
Nast?pnie do data/creaturescripts/scripts/login.lua dodaj:
Kod:
registerCreatureEvent(cid,"Teleport")
Powinno dzia?a?. Oficjalnie og?aszam, ?e wszystkie skrypty a? do tego skryptu (wy?ej) zosta?y zrobione. Teraz b?d? robi? nast?pne.

@AoW2
Opisz to bardziej (punkty 2 i 3) to mo?e si? uda.

@kropa997
Nie da si?. PVP arena jest wbudowana w silnik, tak wi?c nic nie poradz?.

@Sqrdi
Daj jakie? przyk?ady czy co? takiego, bo tyle co si? dowiedzia?em, to ?e trzeba po?o?y? chichen feathers i tyle. Albo to opisz sensownie, na temat albo daj przyk?ady.

@Kamarm
Oto skrypt na backpacki:
Kod:
-- D?wignia do Backpack?w
local itemy = {
[1234] = {item = 2050, ile = 5, cap = 500, backpack = 2000, koszt = 500000, ladunki = 5},
[1235] = {item = 2350, ile = 20, cap = 580, backpack = 2001, koszt = 5000000, ladunki = 2}
}
-- Tutaj uzupe?niasz tak:
-- [action id d?wigni] = {item = id runy lub innego itemu, ile = ile tych item?w ma by? w bp, cap = ile wa?y bp z tymi rzeczami, backpack = id backpacka, koszt = ile kosztuje ca?y backpack tych rzeczy w gp, ladunki = ile ?adunk?w ma mie? runa/inna rzecz}
-- Wa?ne, ?eby nie dawa? do tego skryptu d?wigni, kt?ra nie ma actionid

function onUse(cid, item, frompos, item2, topos)
local cap = getPlayerFreeCap(cid)
local dzwignia = itemy[item.actionid]
if(cap < dzwignia.cap) then
	doPlayerSendCancel(cid,"It's too heavy. You need to have ".. dzwignia.cap .." capacity.")
	return TRUE
end
if(doPlayerRemoveMoney(cid,dzwignia.koszt) == FALSE) then
	doPlayerSendCancel(cid,"You don't have enought gold. You need to have ".. dzwignia.koszt .." gold coins.")
	return TRUE
end
local bp = doPlayerAddItem(cid,dzwignia.backpack,1)
for i=1, dzwignia.ile do
	doAddContainerItem(bp,dzwignia.item,dzwignia.ladunki)
end
doPlayerSendCancel(cid,"Here you are.")
return TRUE
end
Oto skrypt na pojedyncz? run?:
Kod:
-- D?wignia do Backpack?w
local itemy = {
[1234] = {item = 2050, ladunki = 5, koszt = 200},
[1235] = {item = 2350, ladunki = 2, koszt = 500}
}
-- Tutaj uzupe?niasz tak:
-- [action id d?wigni] = {item = id runy, ladunki = ile ?adunk?w, koszt = cena w gp 
-- Wa?ne, ?eby nie dawa? do tego skryptu d?wigni, kt?ra nie ma actionid

function onUse(cid, item, frompos, item2, topos)
local dzwignia = itemy[item.actionid]
if(doPlayerRemoveMoney(cid,dzwignia.koszt) == FALSE) then
	doPlayerSendCancel(cid,"You don't have enought gold. You need to have ".. dzwignia.koszt .." gold coins.")
	return TRUE
end
local bp = doPlayerAddItem(cid,dzwignia.item,dzwignia.ladunki)
doPlayerSendCancel(cid,"Here you are.")
return TRUE
end
My?l?, ?e wiesz co wpisa? w actions.xml.

@Daniel of Arcania
A ja poprosz?, ?eby? si? zamkn??. Ty ju? nie dostaniesz ?adnego skrypta... Ostatni, jaki dostajesz to ten pierwszy, bo oczywi?cie drugi to prosisz o rzeczy, kt?re si? da USTAWI? W SILNIKU!. Masz i si? ciesz:
Kod:
local pos = {x=123, y=123, z=7}
local promoID = 2     -- Ile promocji daje np.: 2 = profesja pocz?tkowa + 4*2
function onUse(cid, item, frompos, item2, topos)
doRemoveItem(item.uid,1)
doTeleportThing(cid,pos)
doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR,"Dostales promocje.")
setPlayerPromotionLevel(cid,promoID)
return TRUE
end

@Cinu
Kowol ju? Ci odpisa?.

@Adamex
Mog? ci zrobi?, ze mo?na jednego monstera na xxx czasu, bo tak jak normalne summony to si? nie da.

@Mondez
Spr?buj ten:
Kod:
local SKINS = {
	-- Przedmioty
	[5892] = {25000, 2472},
}
local pozycja = {x=1004, y=983, z=7}    -- Pozycja, na jakiej jest u?ywany item.
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local skin = SKINS[itemEx.itemid]
    if(toPosition.x == pozycja.x and toPosition.y == pozycja.y and toPosition.z == pozycja.z) then
		if(skin == nil) then
			doPlayerSendCancel(cid, "To jest niemozliwe.")
			return TRUE
		end
		local random = math.random(1, 5)
		if random == 1 then
			doSendMagicEffect(toPosition, CONST_ME_GROUNDSHAKER)
			doPlayerAddItem(cid, skin[2], 1)
					doPlayerSendTextMessage(cid, 22, "Swietnie, wlasnie wykules przedmiot")
		elseif(skin[3] and random >= skin[3]) then
			doSendMagicEffect(toPosition, CONST_ME_GROUNDSHAKER)
			doPlayerAddItem(cid, skin[4], 1)
					doPlayerSendTextMessage(cid, 22, "Swietnie, wlasnie wykules przedmiot")
		else
			doSendMagicEffect(toPosition, CONST_ME_POFF)
			doPlayerSendTextMessage(cid, 22, "Nie udalo sie.")
		end
		doTransformItem(itemEx.uid, 2223)
    else
		doPlayerSendCancel(cid,"Mozesz to zrobic tylko na kowadle.")
	end
end

@Topi
Oto skrypt:
Kod:
local ileMany = 100     -- Ile many si? dostaje

function onUse(cid, item, frompos, item2, topos)
doPlayerAddMana(cid,ileMany)
doRemoveItem(item.uid,1)    -- Usu? t? linijk? ?eby scroll by? niesko?czony
return TRUE
end
Nie wiem jak go doda? na 7.6. To musisz zrobi? sam.

Pozdrawiam,
Gelio
 
Ostatnia edycja:
Odp: [x.x][Skrypty] Zam?wienia

Witam ci? Gelio.
Potrzebuj? skrypta do Talkactions pod evo 0.7.8, tibia 7.92.Chodzi mi oto ?eby za pomoc? komendy summonowa? sie monster, ale tylko jeden, po wysummonowaniu si? go nie nie mo?na ju? go wi?cej summonowa? p?ki nie zginie, je?eli ci u?atwi to prac? to prosz? masz tu oto skrypt do przer?bki:
Kod:
function onSay(cid, words, param)
	playerpos = getPlayerPosition(cid)
	mana = getPlayerMana(cid)
	vocation = getPlayerVocation(cid)
	if mana >= 2550 and vocation == 1 then
		if getPlayerSkill(cid,6) >= 90 then
		creature = doSummonCreature("Gamabunta", playerpos)
		doConvinceCreature(cid, creature)
		doPlayerAddMana(cid, -2550)
			doPlayerSay(cid,"Kuchiyose no Jutsu",16)
		else
		doPlayerSendCancel(cid,"You do not have enough chakra control level") 
		end
	else
	doPlayerSendCancel(cid,"You can't summon this creature")
end
	if mana >= 2550 and vocation == 24 then
		if getPlayerSkill(cid,6) >= 90 then
		creature = doSummonCreature("Gamabunta", playerpos)
		doConvinceCreature(cid, creature)
		doPlayerAddMana(cid, -2550)
			doPlayerSay(cid,"Kuchiyose no Jutsu",16)
		else
		doPlayerSendCancel(cid,"You do not have enough chakra control level") 
		end
	else
	doPlayerSendCancel(cid,"You can't summon this creature")
end
end
Je?eli by?oby to mo?liwe, to zr?b go jak najszybciej bo m?j ots ju? chodzi a nie moge prowadzi? tego skryptu bo nuubki wal? po 10 monster?w
Pozdrawiam Adamex.

@Gelio
Ok summon co 5 MIN, a jak zrobisz to poka? mi gdzie si? czas ustawia. Pozdrawiam
 
Ostatnia edycja:
Odp: [x.x][Skrypty] Zam?wienia

Gelio :(

Dalej nie dzia?a .... Gdy stoje na tym pos i daje w bp te wykucie nie dziala
Gdy stoje na tym pos i wale obok tego nie dziala
Gdy stoje na tym pos i kamien jest podemna i daje use dalej nie dziala
I og?lnie nie dzia?a w ?aden spos?b :(

@Edit
O lool
To dzia?a teraz tylko jak m?otej le?y na tym pos.. i jak use witch m?otkiem z tego ustalonego pos na kamien to dopiero dzia?a ;|
Dasz rade jako? przerobi? skrypt ?eby to nie by? skrypt na m?otek, tylko na kamie?, ?eby to kamie? musia? le?e? na x pos a nie m?otek .. ??

Linijka :
Kod:
	<action itemid="2557" script="kowal.lua"/>

id 2557 = to id m?otka

a id kamienia to = 5892
Skrypt :
Kod:
local SKINS = {
	-- Przedmioty
	[5892] = {25000, 2472},
}
local pozycja = {x=1004, y=983, z=7}    -- Pozycja, na jakiej jest u?ywany item.
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local skin = SKINS[itemEx.itemid]
    if(fromPosition.x == pozycja.x and fromPosition.y == pozycja.y and fromPosition.z == pozycja.z) then
		if(skin == nil) then
			doPlayerSendCancel(cid, "To jest niemozliwe.")
			return TRUE
		end
		local random = math.random(1, 5)
		if random == 1 then
			doSendMagicEffect(toPosition, CONST_ME_GROUNDSHAKER)
			doPlayerAddItem(cid, skin[2], 1)
					doPlayerSendTextMessage(cid, 22, "Swietnie, wlasnie wykules przedmiot")
		elseif(skin[3] and random >= skin[3]) then
			doSendMagicEffect(toPosition, CONST_ME_GROUNDSHAKER)
			doPlayerAddItem(cid, skin[4], 1)
					doPlayerSendTextMessage(cid, 22, "Swietnie, wlasnie wykules przedmiot")
		else
			doSendMagicEffect(toPosition, CONST_ME_POFF)
			doPlayerSendTextMessage(cid, 22, "Nie udalo sie.")
		end
		doTransformItem(itemEx.uid, 2223)
    else
		doPlayerSendCancel(cid,"Mozesz to zrobic tylko na kowadle.")
	end
    return TRUE
end
 
Ostatnia edycja:
Odp: [x.x][Skrypty] Zam?wienia

Gelio ?ap Wyt?umaczone:
2.Rodzaj: Spells
Name:Charge
tibia: 8.0
opis:Przy efekcie nr "5" ?aduje ci mane po 200 a hp po 350 1 raz
3.Rodzaj:Spells
Name:Power Down
tibia 8.0
opis:Zabiera ci mane do 10 i nie odrasta przy efekcie nr "16" (Mo?na u?y? jaki? funkcji)
 
Odp: [x.x][Skrypty] Zam?wienia

Rodzaj: Creaturescripts?
Wersja tibii: 8.41/8.42 (TFS 0.3.4)
O czym ma by? skrypt: Skrypt ma zlicza?, oraz wy?wietla? fragi zdobyte przez gracza (Typ ?wiata: war)
(Komenda !frags zlicza fragi ale tylko te "unjustfied" czy jako? tak, a ja chce wszystkie... ;d )
Szczeg??y/Screeny:
Chc? aby fragi wy?wietla?y si? tak:
zu2ipy.jpg


Je?eli b?d? musia? edytowa? co? w sourcach to nie ma problemu jak co?.
 
Odp: [x.x][Skrypty] Zam?wienia

Poszukuje scrypta na itemy kt?re wymieni? ni?ej
oto one :
Rodzaj : Items
Wersja Tibi : 8.40
1.Nazwa: Freezing Staff
Wysy?a gwiazdke obra?e? zadaj?cych od 450hp, a? do 700hp, przy jednoczesnym zu?yciu 40 many. Jej zasi?g to 6 SQM, a zadawane przez ni? obra?enia s? od ?ywiolu - smier?, oraz scrypt ?eby atakowa?o
2.Nazwa: Crystal Arrow
Ma nieograniczony zasi?g, a jej celno?? to 90%.Atakuje z energi 2x400,3x200,4x125 i jest od 100 lvla. <<<Chcia?bym ?eby ta strza?a wygl?da?a tak cho?by strza?a lodowa, oraz scrypt ?eby atakowa?o
3.Nazwa: Assassin Star
Bro? dla Palladyna od 1 levla. Posiada 100 atk, i zabiera hp od ognia 3x 200, Zasi?g broni to 5 SQM, a celno?? 80%, oraz scrypt ?eby atakowa?o
_______________________________________________________________
Oczywi?cie za Pomoc reput :D
 
Aa Gelio jak zrobi?em podpunkt 1.Transformation system by Piotrek1447 to jak si? wyglogowuje to mi transformacja znika :/
Da Si? Zrobi? ?eby nei znika?a??
Thx Gelio a da si? zrobi? ?eby Charge powtarza? si? 50 razy?
 
Ostatnio edytowane przez moderatora:
Odp: [x.x][Skrypty] Zam?wienia

@Wontek
Du?o trzeba by edytowa? w tym, ?eby wy?wietla?o. Najlepiej, jakby? ustawi? typ ?wiata pvp. Wtedy b?dzie nalicza? normalnie fragi. Jak przez komend? fragi b?d? dzia?a?y, to napisz na gg/pw to powiem Ci gdzie co doda?.

Je?eli ustawie typ ?wiata na pvp to war b?dzie zupe?nie bez sensu poniewa?:
B?d? skulle, gdy kto? pierwszy zacznie atakowa? osob? z white/red skullem nie zaliczy si? mu frag itp.
 
Odp: [x.x][Skrypty] Zam?wienia

Tibia 8.40
Actions
Potek co daje szybko??

id = 8474

daje troche wiecej niz utani gran hur
(widzialem podobny na forum, ale nie dzialal)

@Down

Przylaczam sie do prosby
 
Ostatnia edycja:
Odp: [x.x][Skrypty] Zam?wienia

Gelio chodzi mi o to ze tylko na kowadle mozna kuc, i chodzi mi o takie kombinacje ze np. najpierw kladzie sie chicken father i na chicken kladzie sie minotaur leather, wali sie mlotkiem i wychodza bohy.

I dasz rade z tym drugim skryptem o ktory prosilem?
 
Ostatnia edycja:
Odp: [x.x][Skrypty] Zam?wienia

Gelio Znasz Si? Chyba Na Czarach nie??
Wi?c:
Rodzaj:Spells
Wersja Tibi:8.0
Co Robi?:Czar Explosion Z Efektu nr 229. DObra ok wali... ale jako? dziwnie bo da?em zasi?g czaru i mi wyskakuje w ka?dej "1"efekt nr 229.
Tu Masz m?j temat do neigo bo nikt neichce odpisa?...
HTML:
http://tibia.net.pl/pomoc-z-ot/108898-czar-explosion-z-wodbo.html
 
Odp: [x.x][Skrypty] Zam?wienia

1.Rodzaj: actions moventes spells chyba
Name: Transformation rune
tibia: 8.40
opis:Mam rune o id 2296 i mam monstra o nazwie Mialga biore use na mialge runa i znika mialga i pojawia sie dialga
Dziex z gory Czekam juz na skripta:up:
Kiedy bedzie moje zamowienie?
bo juz troche duzo czekam
 
Odp: [x.x][Skrypty] Zam?wienia

a tak jak juz o spellach to prosilbym Cie Gelio o spell co? w rodzaju "kamikadze"
czar obszarowy zadaj?cy dmg przeciwnikowi i zabierajacy hp tak?e osobie, kt?ra go u?yje.
Najlepiej zeby zabieraj okre?lony % hp wtedy mog?bym ustawic zeby zabiera? 100% i zabija?o by wtedy odrazu lub np 10 %(takie glupie przyk?ady xd)
 
Odp: [x.x][Skrypty] Zam?wienia

A wi?c

Rodzaj:Action
Wersja:7.6
Opis: po naci?ni?ciu na Scroll ID 1948 Dodane zostaje 100 Many
 
Odp: [x.x][Skrypty] Zam?wienia

Rodzaj: np. actions
Wersja tibii: np. 8.4

* U?ywamy butelki z wod? ?wi?con? na magic wallu. Zmienia si? on na magic wall z energi?.
* Czekamy 20 sekund. Magic wall zmienia si? na magic wall z ogniem. U?ywamy butelki z wod? ?wi?con? zmienia si? na magic wall z energi?.
* Ponownie czekamy 20 sekund. Magic wall zmienia si? na magic wall z ogniem. U?ywamy butelki z wod? ?wi?con? zmienia si? na magic wall z energi?.
* I jeszcze raz czekamy 20 sekund. Magic wall zmienia si? na magic wall z ogniem. U?ywamy butelki z wod? ?wi?con? i ju? Shadow Nexus zniszczone. Teraz w ci?gu 20 sekund mo?e podej?? tyle graczy ile zdo?a i nie musz? powtarza? ca?ej czynno?ci, wystarczy ?e u?yj? swojej wody.

Szczeg??y, ew. screen
inq18.JPG


Cos bradziej zawasowanego gelio
 
Ostatnia edycja:
Odp: [x.x][Skrypty] Zam?wienia

@2x up
Znalaz?em ten skrypt na innym forum (zmie? sobie kolor wiadomo?ci)
data/creaturescripts/scripts/monster_counter.lua
Kod:
local monsters = {
	--name = storage
	["rat"] = 35001,
	["troll"] = 35002,
	["rotworm"] = 35003,
	["dragon"] = 35004,
	["dragon lord"] = 35005,
	["demon"] = 35006,
}
function onKill(cid, target)
local ja = getCreatureName(cid)
	if(isPlayer(target) ~= TRUE) then
		local name = getCreatureName(target)
		local monster = monsters[string.lower(name)]
		if(monster) then
			local killedMonsters = getPlayerStorageValue(cid, monster)
			if(killedMonsters == -1) then
				killedMonsters = 1
			end
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "" ..ja.. " killed " .. killedMonsters .. " " .. name .. "'s.")
			setPlayerStorageValue(cid, monster, killedMonsters + 1)
		end
	end
	return TRUE
end
data/creaturescripts/creaturescripts.xml
* TFS 0.2
Kod:
<event type="kill" name="KilledMonstersCounter" script="monster_counter.lua"/>
* TFS 0.3 (RC2+)
Kod:
<event type="kill" name="KilledMonstersCounter" event="script" value="monster_counter.lua"/>
3. Dodaj to co login.lua przed return TRUE
Kod:
registerCreatureEvent(cid, "KilledMonstersCounter")

Scrypt kt?ry mi poda?e? mi nie dzia?a, bo wydaje mi si?, ?e nie jest pe?ny.

Jak chce zrobi?, zeby po zabiciu potwora wyskakiwa? teleport to w samym potworze musze doda? pewn? linijk? kodu i wydaje mi sie, ?e w tym przypadku te? trzeba doda? kod bezpo?rednio do potwora, tylko nie wiem jak sformu?owa? ten kod w kt?r? linijke go wklei?, b?d? pr?bowa? zrobi? to sam ale jak kto? wie jak to zrobi? to prosze o odpowied? dam repucika


Doda?em taki kod i nic xD chyba nie w tym problem
<script><event name="KilledMonstersCounter"/></script>


//Czerwony to kolor dla kadry, pami?taj. Speeder
 
Ostatnio edytowane przez moderatora:
Odp: [x.x][Skrypty] Zam?wienia

Gelio jeszcze jedno bo jak robi?em te transformacje by Piotrek1447 to moge tam doda? efekt??
Napisz mi gdzie mam doda?...:

Kod:
--[[ Transformation system by Piotrek1447 ]]-- 

local config = 
{ 
   neededLevel = 50, 
   requiredVocation = {0,1,2,3,4,5,6}, 
   changeVocation = "yes", 
   newVocation = 2, 
   changeOutfit = "yes", 
   newOutfit = 37, 
   removeSoulPoints = "no", 
   removeSoulPointsCount = 0 
} 

local VOCATION_STORAGE = 10000 
local outfit = {lookType = config.newOutfit, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookAddons = 0} 

function onSay(cid, words, param) 
   if(getPlayerLevel(cid) <= config.neededLevel) then 
       doPlayerSendCancel(cid, "Sorry, you don\'t have required level.") 
       return TRUE 
   end 
   if(isInArray(config.requiredVocation, getPlayerVocation(cid)) ~= TRUE) then 
       doPlayerSendCancel(cid, "Sorry, you don\'t have required vocation.") 
       return TRUE 
   end 
   setPlayerStorageValue(cid, VOCATION_STORAGE, getPlayerVocation(cid)) 
   if(config.changeVocation == "yes") then 
       doPlayerSetVocation(cid, config.newVocation) 
   end 
   if(config.changeOutfit == "yes") then 
       doSetCreatureOutfit(cid, outfit, -1) 
   end 
   if(config.removeSoulPoints == "yes") then 
       if(getPlayerSoul(cid) >= config.removeSoulPointsCount) then 
           doPlayerAddSoul(cid, - config.removeSoulPointsCount) 
       else 
           doPlayerSendCancel(cid, "Sorry, you don\'t have required count of soul points.") 
       end 
   end 
   addEvent(removeMana, 100, cid) 
   return TRUE 
end 

function removeMana(cid) 
   doCreatureAddMana(cid, -1) 
   if(getCreatureMana(cid) > 0) then 
       addEvent(removeMana, 100, cid) 
   else 
       doRemoveCondition(cid, CONDITION_OUTFIT) 
       transformBack(cid) 
   end 
   return TRUE 
end 

function transformBack(cid) 
   doPlayerSetVocation(cid, getPlayerStorageValue(cid, VOCATION_STORAGE)) 
   setPlayerStorageValue(cid, VOCATION_STORAGE, 0) 
   return TRUE 
end
 
Odp: [x.x][Skrypty] Zam?wienia

Widzisz to?
Kod:
setPlayerStorageValue(cid, VOCATION_STORAGE, getPlayerVocation(cid)) 
   if(config.changeVocation == "yes") then 
       doPlayerSetVocation(cid, config.newVocation)

Pod doPlayerSetVocation~ napisz doSendMagicEffect(getCreaturePosition(cid), nr efektu)
 
Odp: [x.x][Skrypty] Zam?wienia

Gelio chyba nie czyta?e? mojego edita. Zr?b ten summon z czasem i napisz jak zmienia? czas
 
Status
Zamknięty.
Do góry