Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

sendpacket komutunun açıklaması


dory

Öne çıkan mesajlar

Selam arkadaslar, simdi sizlere herkesin merak ettiği sendpacket zımbırtısını anlatmaya calişicam :) ohohom başliyoruz,sessizlik ( :D )

Öncelikle bilmemiz gereken 3 farklı data type var, once size bunları anlatayım:
1.si BYTE: bildigimiz byte işte, (0 to 255)(bunu bilmeniz gerekmiyor)
2.si WORD: 2 byte ediyor,(0 to 65,535) bazı program dillerinde "short" da denebilyor.
3.sü DWORD (Double WORD): bu 4 byte ediyor (0 to 4,294,967,295) ve bazı program dillerinde integer olarak da kullanılabiliyor.
Bu arada eklemek istedigim bişey var:
Byte için B
Word için W
Dword için D kullanılıyor
Ancak biz B kullanmıyoruz cunku zaten Bsiz yazdıklarımızı byte olarak alıyor, default olayı.

Tamam gelelim simdi sendpacket olayına :)
sendpacket kullanırken normal byteları argument olarak birer boşlukla ayırarak yazıyoruz (sendpacket x y z )
Kendimize bir örnek seçelim, mesela quest arrow kullanabiliriz,

0xBA Packet - Quest Arrow (6 bytes)

· BYTE cmd
· BYTE active (1=on, 0=off)
· BYTE[2] xLoc
· BYTE[2] yLoc

1. adimda bizden packetımızın cmdini belirtmemizi istiyor hemen yazıyoruz:0xBA(ancak Sphere scriptlerinde x kullanmadıgımız için OBA olarak geciriyoruz)
.sendpacket 0ba
2. adim oldukca acık olarak belirtmiş, aktif olmasını istiyorsak 1, olmasını istemiyorsak 0 yapiyoruz
sendpacket 0ba 01
3.adım BYTE[2] olarak gosterdigi 2bytedan olusan wordumuz oluyor, ve x locationının koordinatlarını istiyor(atıyorum 3000 olsun)
.sendpacket 0ba 01 W3000.
4.adım da yine word kullanarak y locationı belirtiyoruz(bu da 2000 olsun)
.sendpacket 0ba 01 W3000 W2000

evet son haliyle oyunda yazıyoruz ve evet calişti, 3000'e 2000'i gosteren Quest Arrow gozuktu :)

önce sphere herşeyi hex koduna çeviriyor, yani bunu elde etmiş oluyoruz
SENDPACKET 0ba 01 W0bb8 W07d0

daha sonra word ve dwordleri bytelar haline getiriyor

SENDPACKET 0ba 01 0b 0b8 07 0b0

byte halinde gidip gelen paketleri daha iyi gorebilmeniz için,

SENDPACKET (0ba) (01) (0b 0b8) (07 0b0)

EGER BİR BYTE BİLE ATLARSANIZ CLIENTINIZ KİTLENİR,YANİ GOCER (buna dikkat :) )

tamam , devam edelim. Sıradaki ornegimiz 0xBF packet

0xBF Packet - General Info (5 bytes, plus specific message)

· BYTE cmd
· BYTE[2] len
· BYTE[2] subcmd
· BYTE[len-5] submessage

evet basliyoruz,burda ilk once bizden yine cmdi istiyor
.sendpacket 0BF
2.adimda bizden length yani uzunlugunu istiyor ancak henuz tamamlamadıgımız bişeyin ne kadar oldugunu nereden bilebiliriz ki? o yuzden xx diyorum ben
.sendpocket 0Bf WXX
3.adim: bir subcommand! 0xbf paketi tek başına birşey yapmıyor, alt komutlar ile paketin ne yapması gerektiğini belirliyor. mesela burada 400c ve üstü clientlar için çalışan aos damage gösterimini yapıcaz. bu işlem için kullanacağımız subcommand 0x22

Subcommand 0x22: Damage


* BYTE unknown, always 1
* BYTE[4] Serial
* BYTE Damage // how much damage was done ?
şimdi submessage için byte bye yazıyoruz
eh always 1 dediğine gore biz de ona uyup 1'i ekliyoruz.

.sendpacket 0bf Wxx W022 01

daha sonra burada karsımıza DWORD cıkıyor (BYTE[4]), bizden serialı istiyor, serial hepimizin bildigi gibi UID olarak da tanımlanır, karakterinize .show uid derseniz gorursunuz, elimizde 0d8e1 var, eh o olsun diyoruz ve devam ediyoruz

sendpacket 0bf Wxx W022 01 D0d8e1 , bitirmek uzereyiz devam :)
son olarak ne kadar damage verecegimizi soruyor, 35 olsun diyoruz(salladık) ve bitiyoruz
.sendpacket 0bf Wxx W022 01 D0d8e1 35
tabiki bitiremiyoruz, neden? uzunluk hesaplamadık, wxx kalamaz, hemen toplayalim uzunlugunu:

cmd 1 byte

Length 2 bytes

subcmd 2 bytes

unknown 1 byte = 1 + 2 + 2 + 1 = 6 byte

serial 4 byte = 1 + 2 + 2 + 1 + 4 = 10 byte

damage 1 byte 1 + 2 + 2 + 1 + 4 + 1 = 11 byte, işte uzunlugumuz bu :) hemen yerine koyuyoruz ve son, bitti :)

.sendpacket 0bf W11 W022 D0d8e1 01 35

yine sphere herşeyi hex koduna çeviriyor, yani bunu elde etmiş oluyoruz:

SENDPACKET 0bf W0b W022 01 D0d8e1 023

yine sonra word ve dwordleri bytelar haline getiriyor:

SENDPACKET 0bf 00 0b 00 022 01 00 00 0d8 0e1 023

byte halinde gidip gelen paketleri daha iyi gorebilmeniz için

SENDPACKET (0bf) (00 0b) (00 022) (01) (00 00 0d8 0e1) (023)

ve simdi sphere bu byteları clienta yolluyor ve hooop kafamızın üstüne yavasca beliren ve kaybolan bir 35 goruyoruz :)

Evet arkadaslar,kendi packetlarınızı hazırlayabilecek duruma geldiniz, herseyin aynı mantıkla yapildıgına dikkat ederseniz bunu kolaylikla goreceksiniz.
Yazı radiant'ın sendpacket tutorial adlı yazısından yararlanılarak legbranın yardımı ile çevrilmiştir ve paketlerde, bizim de yararlandığımız Jerrith's UO Packets Guide'dan bulunabilir.

[Bu mesaj dory tar
Link to comment
Sosyal ağlarda paylaş

güzel oldu güzel :)

bu arada, dory ile karıştırırken oluşturduğum birkaç komutu da paylaşmak isteriz,
ilkbahar > sendpacket 0bc 00 01
yaz > sendpacket 0bc 01 01
sonbahar > sendpacket 0bc 02 01
kış > sendpacket 0bc 03 01
terkedilmiş > sendpacket 0bc 04 01
felucca mouse cursor> sendpacket 0bf W6 W008 00
trammel mouse cursor> sendpacket 0bf W6 W008 00

vee en can alıcı noktaya geliyorum :P foruma gelen babcı tiplere hani logout linki verirlerdi ya, uo emu bölümüne gelenlere ise bunu vericez :D
sendpacket 0d1 01 //logout paket :lol:

neyse hayırlara vesile olsun :) çok eğlenceli paket işleri..[signature][hline]Legbra ::.. The interpreter øf gøds. Only he can translate peøples prayers and transmit them tø the invisible pøwers.
Link to comment
Sosyal ağlarda paylaş

sendpacket olayı ne? normalde server ve client arasında iletişim paketler halinde oluyor(yani zaten bu paketler gidiyor) biz bu komutlar ile kendi istedigimiz manual olarak yollayabiliyoruz. bu işe yariyor, anlatabildim sanırım?[signature][hline]- That's a jellyfish!
- Bad Squishy!

Çizimlerim [Pati Albüm]

edik: imla hatasi :)

[Bu mesaj dory tarafından 11 Temmuz 2005 17:25 tarihinde değiştirilmiştir]
Link to comment
Sosyal ağlarda paylaş

peki bir soruda benden , bu teot injection gibi programlar sendpack ile engellenebilir mi? bence olabilir ama fikir yürütmek lazım.[signature][hline]Ardhath

"Türkler öldürülebilir, lakın mağlup edilemezler. Türk askerlerini dal kılıç olmaya mecbur edecek kadar üstlerine varmamalıdır. Bir defa dal kılıç olmayı göze almış bir kaç yüz Türk meydana çıkarsa önelerinde mağlup olmamak mümkün değildir."

Napeleon BONAPART
Link to comment
Sosyal ağlarda paylaş

parayla program yapmış birkaç akıllı bu şekilde paketleri filtre ederek engellediler evet. profesyonel derecede programcılık istiyor, baştan yazmaya kalkarsanız. yani pek yaygınlaşmış birşey değil.zaten teotun yaptığı şey de bu, client içine enjekte olup paketleri modifiye edip yolluyor sunucuya,eşya al derken 1 tane değil de yüksek sayıda alırken mesela[signature][hline]- That's a jellyfish!
- Bad Squishy!

Çizimlerim [Pati Albüm]
Link to comment
Sosyal ağlarda paylaş

sizin gereksiz dediğiniz çalışma sphere communitysi tarafından gelen en önemli yeniliklerden birisi olarak tanımlanmıştı zamanında..
ayrıca yeni client kullandığınızda aos barındaki kullanılmayacak bölümleri kullandırabilmek, sezon üzerinde değişiklik yapabilmek, mouse ikonunu değiştirmek, hatta clientın hangi map dosyasını kullanmasını gerektiğini bildiren tüm bilgiler de paketler ile gönderiliyor.
yanlış oldu biraz, bu da gereksiz ise yandık :)[signature][hline]Legbra ::.. The interpreter øf gøds. Only he can translate peøples prayers and transmit them tø the invisible pøwers.
Link to comment
Sosyal ağlarda paylaş

said:
dory, 11 Temmuz 2005 03:28 tarihinde demiş ki:
ve paketlerde, bizim de yararlandığımız Jerrith's UO Packets Guide'dan bulunabilir.


biraz incele :) sen de yararlı şeyler bulacaksın. herşey ama herşey onlarla yapılabiliyor.[signature][hline]Legbra ::.. The interpreter øf gøds. Only he can translate peøples prayers and transmit them tø the invisible pøwers.
Link to comment
Sosyal ağlarda paylaş

Dword word yani 16x8 ve 2 li sistem functionlarını da at bence arkadaşlara..[signature][hline] Coder
Çözümün bir parcasi degilsen, sorunun bir parcasisindir.

-Aynalar yalancıdır bu şehrin dört yanında ayna var
-Gel biz şehrin havasına uymayalım ayrılmayalım
-Ayrılmayalım bebeğim aynalar kandırdı beni!
Link to comment
Sosyal ağlarda paylaş

said:
Coder, 12 Temmuz 2005 11:43 tarihinde demiş ki:
Dword word yani 16x8 ve 2 li sistem functionlarını da at bence arkadaşlara..


hangi functionlar? .99x versionlarındaki sendpacket galiba çevirmiyordu word ve dwordleri, revision serisinde başına D veye W yazarak sistemin kendi içinde byte haline çevirmesi sağlanabiliyor, extra bir function gerekmiyor yani? yoksa yanlış mı anladım :)[signature][hline]Legbra ::.. The interpreter øf gøds. Only he can translate peøples prayers and transmit them tø the invisible pøwers.
Link to comment
Sosyal ağlarda paylaş

gereksiz diyor yaf :)
peki bence bu sendpacket komutlarını değiştirsek ne olur?
mesela sphereserv.dan ve clientten bunların kodlarını değiştrirsek teot eski koda sızdığı için teot açılmaz .

böyle düşündüm ama patiler gereksiz dicene fikir üretse çözecer.

üstelik ha benim dediğim gibi client'tan o kodu bulacak ta teota o kodu ekleyecek te teot açacak.
teotu yüzde 90 azaltır bence dediğim sistem olursa.
yüzde 10 da yapabiliyorsa yapmaz gider program yazar yada seer-cons tarafından yakalanır.[signature][hline]Ardhath

"Türkler öldürülebilir, lakın mağlup edilemezler. Türk askerlerini dal kılıç olmaya mecbur edecek kadar üstlerine varmamalıdır. Bir defa dal kılıç olmayı göze almış bir kaç yüz Türk meydana çıkarsa önelerinde mağlup olmamak mümkün değildir."

Napeleon BONAPART
Link to comment
Sosyal ağlarda paylaş

said:
Khazab, 12 Temmuz 2005 14:54 tarihinde demiş ki:
peki bence bu sendpacket komutlarını değiştirsek ne olur?
bu şekilde sadece sendpacket komutunun ismini değiştirmiş olursun. paket sistemi değişmez ki. bi işe yaramaz yani

bu arada dory patlatmış helal olsun :)
nerden örendin kız lan bu kadar ben bilmem bunları :)

[Bu mesaj taz tarafından 12 Temmuz 2005 18:30 tarihinde değiştirilmiştir]
Link to comment
Sosyal ağlarda paylaş

said:
zergling, 12 Temmuz 2005 04:58 tarihinde demiş ki:
cok yararli seyler var :D
gecersiz soz dizilimi
linkin başındaki sphere:sphere@ bölümünü kaldırmayı akıl edebilseydin siteye ulaşabilirdin. böylelikle linke tıkladığında lapin gibi "aha link çalışmıyo saldırmaya devam edeyim" deyip :D gibi karşı tarafı tahrik edecek smileyler kullanman gerekmeyecekti.

dory, bilgiler için teşekkürler[signature][hline]ozzystalker
"uoscriptz"
Link to comment
Sosyal ağlarda paylaş

×
  • Yeni Oluştur...