Hoş Geldin, Ziyaretçi!

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

YSGBilişim
paymax

Çözüldü Silkroad mantığına oturtabileceğim Stored Procedure eğitim kaynağı önerisi

Arbys

.
Katılım
16 Eki 2022
Mesajlar
57
Çözümler
1
Alınan Beğeni
34
Ödül Puanları
18
Konum
Bulgaria
Selamlar,

MSSQL Query kısmını bitirdim ve Stored Procedure kısmına adım attım. Günlerdir gerek Türkçe gerek İngilizce çok fazla eğitim videolarını inceledim fakat Silkroad DB kısmı kafamda bir türlü bu izlediklerimle örtüşmüyor. Mantığını bir türlü oturtamadım

Videoların hepsinde temel öğretiler var ve aynı Northwind örneklerini görmekten daraldım gerçekten. Declare mantığını oturtmaya çalışıyorum 10 tane eğitim videosu izliyorsam hepsinde ki örnek aşağıda ki gibi veya çok benzeri yani çok temel . Hiç bir yardımı dokunmuyor

PHP:
Declare @id int
set @id = 1
select @id

Örnek olarak bir proje yapmak istiyorum query üzerinde çok basit ama stored procedure kısmına bir türlü dökemedim mantığı oturtamadığım için

Uzun lafın kısası Silkroad ile özleştirebileceğim örnekleri bulmam gerekiyor. Arşivinizde veya her hangi bir yerde buna uygun olduğunu düşündüğünüz makale veya eğitim videosu paylaşabilirsiniz çok memnun olurum
 

Conqueror

Vsro/Database-Editör
.
Katılım
3 Nis 2019
Mesajlar
1,504
Alınan Beğeni
2,038
Ödül Puanları
113
Konum
İstanbul
Veritabanındaki varolan prosedürleri oku nasıl çalıştığını anla. Mantığını kavrayınca kendi prosedürünü yapmak istediğin işleve göre yazabilirsin. Önce ne yapmak istediğini kafanda belirlemelisin, bütün bir bilgiyi bir anda kavramaya çalışma. Bir şeyin üzerine yoğunlaşıp deneme yanılma ile öğrenmeye çalış sonra onu geliştir.
Üst üste post gönderildiği için tek mesajda birleştirildi:

Ayrıca bazı prosedürler için forumda arama yapabilirsin.
 

Arbys

.
Katılım
16 Eki 2022
Mesajlar
57
Çözümler
1
Alınan Beğeni
34
Ödül Puanları
18
Konum
Bulgaria
Veritabanındaki varolan prosedürleri oku nasıl çalıştığını anla. Mantığını kavrayınca kendi prosedürünü yapmak istediğin işleve göre yazabilirsin. Önce ne yapmak istediğini kafanda belirlemelisin, bütün bir bilgiyi bir anda kavramaya çalışma. Bir şeyin üzerine yoğunlaşıp deneme yanılma ile öğrenmeye çalış sonra onu geliştir.
Üst üste post gönderildiği için tek mesajda birleştirildi:

Ayrıca bazı prosedürler için forumda arama yapabilirsin.
Dediğiniz gibi elimde örnek gelişmiş prosedürler var hepsini okuyorum, teorik olarak kafamda çalıştığım örnekte mevcut. Ne kadar çalışma mantığını bilmeden okunsa da bir şeyler yerine oturmuyor
 

Conqueror

Vsro/Database-Editör
.
Katılım
3 Nis 2019
Mesajlar
1,504
Alınan Beğeni
2,038
Ödül Puanları
113
Konum
İstanbul
Dediğiniz gibi elimde örnek gelişmiş prosedürler var hepsini okuyorum, teorik olarak kafamda çalıştığım örnekte mevcut. Ne kadar çalışma mantığını bilmeden okunsa da mantık oturmuyor
Daha fazla yardım için belki de kafandakini paylaşmalısın :) Ya da daha fazla araştırma yapmalısın.
 
Katılım
17 Şub 2021
Mesajlar
130
Çözümler
1
Alınan Beğeni
13
Ödül Puanları
18
Konum
Turkey
Olanı kullan demiyorum zaten ,örnek olarak bak orada prosedürleri incele diye link bıraktım zamanlada elbet çözersin :)
 

Arbys

.
Katılım
16 Eki 2022
Mesajlar
57
Çözümler
1
Alınan Beğeni
34
Ödül Puanları
18
Konum
Bulgaria
Daha fazla yardım için belki de kafandakini paylaşmalısın :) Ya da daha fazla araştırma yapmalısın.
Kafamda olan bilen için çok basit gelebilir

Farzı misal elimizde 1x exp bir proje var ve ilk 80 level olan 10 kişiye 500 silk aktarmak istiyoruz.
Bu kişilerin kontrol edilebileceği bir tablo oluşturdum. IF exists komutuyla bu tabloda o char id varsa her hangi bir işlem yapmadan return olmasını istiyorum. Eğer mevcut değilse insert komutuyla charid, charname, level girdilerinin oluşturduğum tabloya girmesini istiyorum ve chestine silk ödülünü göndereceğim.

Bu komutların hepsini yeni bir prosedür sayfası oluşturup yazmaya çalıştığımda öncelikle ben bu yeni prosedürü nasıl addlogchar ile bağlayacağım orada data2 vesaire gibi bilgileri çekeceğim bunu çözemedim. Declare mantığı ile sadece bir değişken verebiliyoruz ama ben top 10 kullanıcıyı çekmek istiyorum. Aşağıda paylaştığım query ile çekiyorum fakat bunu değişken olarak atayamıyorum

Select TOP 10 * from SRO_VT_SHARD.._Char where CurLevel=80 AND CharName16 not like '%[GM]%'
Üst üste post gönderildiği için tek mesajda birleştirildi:

Olanı kullan demiyorum zaten ,örnek olarak bak orada prosedürleri incele diye link bıraktım zamanlada elbet çözersin :)
Teşekkürler
 

TOGi

.
Katılım
10 May 2020
Mesajlar
69
Alınan Beğeni
7
Ödül Puanları
8
Konum
Hotan
Kafamda olan bilen için çok basit gelebilir

Farzı misal elimizde 1x exp bir proje var ve ilk 80 level olan 10 kişiye 500 silk aktarmak istiyoruz.
Bu kişilerin kontrol edilebileceği bir tablo oluşturdum. IF exists komutuyla bu tabloda o char id varsa her hangi bir işlem yapmadan return olmasını istiyorum. Eğer mevcut değilse insert komutuyla charid, charname, level girdilerinin oluşturduğum tabloya girmesini istiyorum ve chestine silk ödülünü göndereceğim.

Bu komutların hepsini yeni bir prosedür sayfası oluşturup yazmaya çalıştığımda öncelikle ben bu yeni prosedürü nasıl addlogchar ile bağlayacağım orada data2 vesaire gibi bilgileri çekeceğim bunu çözemedim. Declare mantığı ile sadece bir değişken verebiliyoruz ama ben top 10 kullanıcıyı çekmek istiyorum. Aşağıda paylaştığım query ile çekiyorum fakat bunu değişken olarak atayamıyorum

Select TOP 10 * from SRO_VT_SHARD.._Char where CurLevel=80 AND CharName16 not like '%[GM]%'
Üst üste post gönderildiği için tek mesajda birleştirildi:


Teşekkürler
-


ilk olarak level atlama eventını kullanman gerekiyor. 80 olan karakterleri bu event ile kontrol edebilirsin. Daha sonra boş bir tablo atamalısın database içerisine.Satırlar sırasıyla ID, Karakter_ismi, Silk_verildimi olabilir. Tablo içerisinde ID sırasıyla 1,2,3,4,......10 a kadar doldur. Karakter_ismi ve Silk_verildimi kısımlarını NULL bırakabilirsin.

Prosedur algoritması şu şekilde olabilir:

Level atlayan karakterileri @CharID ile kontrol et

Eğer @CharID level 80 ise ;
--- Yeni tablo içerisindeki @ID 1 deki @Karakter_ismi NULL ise 80 olan karakterin adını yaz
--- eğer @ID 1 deki Karakter_ismi NULL değilse (yani 1. sıraya daha önce bir karakter yazılmışsa) @ID 2 'ye yaz oda NULL değilse @ID 3 ' e yaz

bu şekilde @ID 10 ' a kadar tabloya yazdırabilirsin.

Böylece sırasıyla level 80 olmus karakterin olduğu bir listen olur elinde. Silk vermek içinde bu bu yeni yaptığın tabloyu kullanabilirsin :)(y)





-
 

Arbys

.
Katılım
16 Eki 2022
Mesajlar
57
Çözümler
1
Alınan Beğeni
34
Ödül Puanları
18
Konum
Bulgaria
-


ilk olarak level atlama eventını kullanman gerekiyor. 80 olan karakterleri bu event ile kontrol edebilirsin. Daha sonra boş bir tablo atamalısın database içerisine.Satırlar sırasıyla ID, Karakter_ismi, Silk_verildimi olabilir. Tablo içerisinde ID sırasıyla 1,2,3,4,......10 a kadar doldur. Karakter_ismi ve Silk_verildimi kısımlarını NULL bırakabilirsin.

Prosedur algoritması şu şekilde olabilir:

Level atlayan karakterileri @CharID ile kontrol et

Eğer @CharID level 80 ise ;
--- Yeni tablo içerisindeki @ID 1 deki @Karakter_ismi NULL ise 80 olan karakterin adını yaz
--- eğer @ID 1 deki Karakter_ismi NULL değilse (yani 1. sıraya daha önce bir karakter yazılmışsa) @ID 2 'ye yaz oda NULL değilse @ID 3 ' e yaz

bu şekilde @ID 10 ' a kadar tabloya yazdırabilirsin.

Böylece sırasıyla level 80 olmus karakterin olduğu bir listen olur elinde. Silk vermek içinde bu bu yeni yaptığın tabloyu kullanabilirsin :)(y)





-
Fikir için çok teşekkürler❤️
Üst üste post gönderildiği için tek mesajda birleştirildi:

Yardımcı olmaya çalışan arkadaşlara teşekkürler. Ben eğitim videoları veya makale gibi önerilerini sormuştum istediğim yanıtı pek alamadım. Ayrıca forumda bahsettiğim levele göre belirli sayıda oyuncuya ödül verme sistemini yaptım ve konu olarak forumda paylaştım. Herkese yanıtları için tekrardan teşekkürler

 
AdBlock Detected

Anlıyoruz, reklamlar can sıkıcı!

Elbette, reklam engelleme yazılımı reklamları engellemede harika bir iş çıkarır, ancak aynı zamanda web sitemizin faydalı özelliklerini de engeller. En iyi site deneyimi için lütfen AdBlocker'ınızı devre dışı bırakın.

AdBlock'u Devre Dışı Bıraktım.