KO Developers

Go Back   KO Developers > Mini KO Forum (Yardım & İstek) > Genel Yardım > Çözülen Konular


Çözülen Konular Forum üyelerimiz tarafından çözüme kavuşturulmuş konular.

 
LinkBack Seçenekler Stil
Okunmamış 29 Temmuz 2017, 01:31   #1 (permalink)
Saygın Üye

KiraAmora61 - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 04 Temmuz 2017
Bulunduğu yer: İstanbul
Mesajlar: 1.010[+]
Kredi Bakiyeniz: 21.496
Ettiği teşekkür sayısı: 310
141 Mesaja 239 Kez Teşekkür Aldı

Standart 21xx PREMIUM Sistemin

Merhaba..

Sql 2014 Procedure den çeviremedim. ancak yapamadım.

LOAD_PREMIUM_SERVICE_USER

Kod:
bool CDBAgent::LoadPremiumServiceUser(string & strAccountID, CUser *pUser)
{
	if (pUser == nullptr)
		return false;

	unique_ptr<OdbcCommand> dbCommand(m_AccountDB->CreateCommand());
	if (dbCommand.get() == nullptr)
		return false;

	dbCommand->AddParameter(SQL_PARAM_INPUT, strAccountID.c_str(), strAccountID.length());
	if (!dbCommand->Execute(_T("{CALL LOAD_PREMIUM_SERVICE_USER(?)}")))
	{
		ReportSQLError(m_AccountDB->GetError());
		return false;
	}

	if (!dbCommand->hasData())
		return false;

	char strPremium[30];
	memset(strPremium, 0, sizeof(strPremium));
	uint8 bPremiumCount = 0;

	dbCommand->FetchByte(1, pUser->m_bPremiumInUse);
	dbCommand->FetchByte(2, bPremiumCount);
	dbCommand->FetchBinary(3, strPremium, sizeof(strPremium));

	for (int i = 0, index = 0; i < bPremiumCount; i++, index += 5)
	{
		uint8	bPremiumType = *(uint8*)(strPremium + index);
		uint32	iPremiumTime = *(uint32*)(strPremium + index + 1);

		if (iPremiumTime < UNIXTIME)
			continue;

		_PREMIUM_DATA *pPremium = new _PREMIUM_DATA;
		pPremium->bPremiumType = bPremiumType;
		pPremium->iPremiumTime = iPremiumTime;
		if (!pUser->m_PremiumMap.PutData(bPremiumType, pPremium))
			delete pPremium;
	}

	if (pUser->m_PremiumMap.GetSize() == 0)
	{
		_PREMIUM_DATA *pPremium = new _PREMIUM_DATA;
		pPremium->bPremiumType = PremiumTypes::Dummy_Premium;
		pPremium->iPremiumTime = uint32(UNIXTIME) + 24 * 60 * 60 * 2;
		if (!pUser->m_PremiumMap.PutData(pPremium->bPremiumType, pPremium))
			delete pPremium;
		else
			pUser->m_bPremiumInUse = PremiumTypes::Dummy_Premium;
	}
	else
	{
		if (pUser->m_PremiumMap.GetData(pUser->m_bPremiumInUse) == nullptr)
		{
			pUser->m_bPremiumInUse = NO_PREMIUM;

			foreach_stlmap(itr, pUser->m_PremiumMap)
			{
				_PREMIUM_DATA * uPrem = itr->second;
				if (uPrem == nullptr
					|| uPrem->iPremiumTime == 0)
					continue;

				pUser->m_bPremiumInUse = uPrem->bPremiumType;
				break;
			}
		}
	}

	// this is hardcoded because we don't really care about the other mode
	if (pUser->m_bPremiumInUse != NO_PREMIUM)
		pUser->m_bAccountStatus = 1; // normal premium with expiry time
	else
		pUser->m_bAccountStatus = 0;

	return true;
}
SAVE_PREMIUM_SERVICE_USER

Kod:
bool CDBAgent::SavePremiumServiceUser(CUser *pUser)
{
	if (pUser == nullptr)
		return false;

	unique_ptr<OdbcCommand> dbCommand(m_AccountDB->CreateCommand());
	if (dbCommand.get() == nullptr)
		return false;

	int8 bRet = -2; // generic error

	char strPremium[30];
	int index = 0;
	memset(strPremium, 0, sizeof(strPremium));
	int counter = 0;

	uint32 time = 0;
	foreach_stlmap(itr, pUser->m_PremiumMap)
	{
		if (itr->second == nullptr
			|| itr->second->iPremiumTime < UNIXTIME
			|| itr->second->bPremiumType == PremiumTypes::Dummy_Premium)
			continue;

		if (time < itr->second->iPremiumTime)
			time = itr->second->iPremiumTime;

		*(uint8 *)(strPremium + index) = itr->first;
		*(uint32 *)(strPremium + 1 + index) = itr->second->iPremiumTime;
		index += 5;
		counter++;
	}

	if (time > uint32(UNIXTIME))
		time = uint32(time - UNIXTIME); // total premium seconds left

	dbCommand->AddParameter(SQL_PARAM_OUTPUT, &bRet);
	dbCommand->AddParameter(SQL_PARAM_INPUT, pUser->GetAccountName().c_str(), pUser->GetAccountName().length());
	dbCommand->AddParameter(SQL_PARAM_INPUT, (char *)strPremium, sizeof(strPremium), SQL_BINARY);

	if (!dbCommand->Execute(string_format(_T("{? = CALL SAVE_PREMIUM_SERVICE_USER(?, ?, %d, %d, %d)}"),
		counter, pUser->m_bPremiumInUse == PremiumTypes::Dummy_Premium ? 0 : pUser->m_bPremiumInUse, time)))
		ReportSQLError(m_AccountDB->GetError());

	return true;
}
Alıntı:
Yardımcı olmicaksa sorun yok

__________________
Skype :
İmzalardaki resim ve linkleri görebilmeniz için mesaj sayınız 10 veya daha fazla olmalı. Şu anda 0 mesajınız var.

facebook : [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
instagram : [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

İmzalardaki resim ve linkleri görebilmeniz için mesaj sayınız 10 veya daha fazla olmalı. Şu anda 0 mesajınız var.


1.Usko ve Steam KnightOnline.exe unpack yapılır.
2.Usko ve Steam KnightOnline.exe unpack XingCode Kaldırılır.
3.Usko ve Steam [2207 ve 2207] KnightOnline.exe Unpack yapıldı.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Konu KiraAmora61 tarafından (29 Temmuz 2017 Saat 01:42 ) değiştirilmiştir.
KiraAmora61 isimli Üye şimdilik offline konumundadır  
Okunmamış 29 Temmuz 2017, 01:42   #2 (permalink)
Uvuvwevwevwe Onyetenyevwe Ugwemuhwem Osas

EveryBodyFool - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 02 Temmuz 2017
Mesajlar: 162[+]
Ettiği teşekkür sayısı: 44
59 Mesaja 157 Kez Teşekkür Aldı

Standart

Tam olarak neyi yapamadığını anlamadım?
EveryBodyFool isimli Üye şimdilik offline konumundadır  
Okunmamış 29 Temmuz 2017, 01:46   #3 (permalink)
Saygın Üye

KiraAmora61 - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 04 Temmuz 2017
Bulunduğu yer: İstanbul
Mesajlar: 1.010[+]
Kredi Bakiyeniz: 21.496
Ettiği teşekkür sayısı: 310
141 Mesaja 239 Kez Teşekkür Aldı

Standart

ALTER PROCEDURE den yapıyordum ancak uyumuyor.

Kod:
ALTER PROCEDURE [dbo].[LOAD_PREMIUM_SERVICE_USER]
@strAccountID char(20),
@strPremium int,
@bTypes tinyint OUTPUT
AS
DECLARE @bPremiumInUse tinyint

-- Get the current premium expire time and current premium type.
SELECT @bPremiumInUse = bPremiumType FROM TB_USER WHERE strAccountID = @strAccountID

SET @bTypes = @bPremiumInUse

-- Check if the last premium expire date is null/empty or
-- the hours between now and the last premium expire date is below or equal to 0

BEGIN
	SET @bTypes = 0
END
Kod:
ALTER PROCEDURE [dbo].[SAVE_PREMIUM_SERVICE_USER]
@strAccountID char(20),
@strCharID char(20),
@bType tinyint,
@sTime smallint
AS
DECLARE @dtExpiry datetime

SET @dtExpiry = DATEADD(HH, @sTime, GETDATE())

UPDATE TB_USER SET bPremiumType = @bType, dtPremiumTime = @dtExpiry, sHours = @sTime WHERE strAccountID = @strAccountID
benim yaptıkları yanlış mı acaba.

Log hatası veriyor da

Kod:
[ ODBC Error - 29.7.2017 1:28:16 ] ] Source: {CALL LOAD_PREMIUM_SERVICE_USER(?)} Error: [Microsoft][SQL Server Native Client 11.0][SQL Server]Procedure or function 'LOAD_PREMIUM_SERVICE_USER' expects parameter '@bType', which was not supplied. Description: Failed to execute statement.
[ ODBC Error - 29.7.2017 1:28:19 ] ] Source: {? = CALL SAVE_PREMIUM_SERVICE_USER(?, ?, 0, 205, 0)} Error: [Microsoft][SQL Server Native Client 11.0][SQL Server]Procedure or function SAVE_PREMIUM_SERVICE_USER has too many arguments specified. Description: Failed to execute statement.
@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

__________________
Skype :
İmzalardaki resim ve linkleri görebilmeniz için mesaj sayınız 10 veya daha fazla olmalı. Şu anda 0 mesajınız var.

facebook : [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
instagram : [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

İmzalardaki resim ve linkleri görebilmeniz için mesaj sayınız 10 veya daha fazla olmalı. Şu anda 0 mesajınız var.


1.Usko ve Steam KnightOnline.exe unpack yapılır.
2.Usko ve Steam KnightOnline.exe unpack XingCode Kaldırılır.
3.Usko ve Steam [2207 ve 2207] KnightOnline.exe Unpack yapıldı.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
KiraAmora61 isimli Üye şimdilik offline konumundadır  
Okunmamış 29 Temmuz 2017, 02:06   #4 (permalink)
Admin

Avatar Yok


Üyelik tarihi: 04 Temmuz 2017
Mesajlar: 27[+]
Kredi Bakiyeniz: 3.915
Ettiği teşekkür sayısı: 0
4 Mesaja 20 Kez Teşekkür Aldı

Standart

Prosedür ve src içindeki tanımlamalar birbiriyle uyuşmuyor.
Dawn isimli Üye şimdilik offline konumundadır  
Okunmamış 29 Temmuz 2017, 02:11   #5 (permalink)
Saygın Üye

KiraAmora61 - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 04 Temmuz 2017
Bulunduğu yer: İstanbul
Mesajlar: 1.010[+]
Kredi Bakiyeniz: 21.496
Ettiği teşekkür sayısı: 310
141 Mesaja 239 Kez Teşekkür Aldı

Standart

@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] evet sql verdigimi yanlış mı ?

Kod:
ALTER PROCEDURE [dbo].[LOAD_PREMIUM_SERVICE_USER]
@strAccountID char(20),
@strPremium int,
@bType tinyint OUTPUT
AS
DECLARE @bPremiumInUse tinyint

-- Get the current premium expire time and current premium type.
SELECT @bPremiumInUse = bPremiumType FROM TB_USER WHERE strAccountID = @strAccountID

SET @bType = @bPremiumInUse

-- Check if the last premium expire date is null/empty or
-- the hours between now and the last premium expire date is below or equal to 0

BEGIN
	SET @bType = 0
END
Kod:
ALTER PROCEDURE [dbo].[SAVE_PREMIUM_SERVICE_USER]
@strAccountID char(20),
@strCharID char(20),
@bTypes tinyint,
@sInUse smallint
AS

DECLARE @dtExpiry datetime

SET @dtExpiry = DATEADD(HH, @sInUse, GETDATE())

UPDATE TB_USER SET bPremiumType = @bTypes, dtPremiumTime = @dtExpiry, sHours = @sInUse WHERE strAccountID = @strAccountID

__________________
Skype :
İmzalardaki resim ve linkleri görebilmeniz için mesaj sayınız 10 veya daha fazla olmalı. Şu anda 0 mesajınız var.

facebook : [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
instagram : [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

İmzalardaki resim ve linkleri görebilmeniz için mesaj sayınız 10 veya daha fazla olmalı. Şu anda 0 mesajınız var.


1.Usko ve Steam KnightOnline.exe unpack yapılır.
2.Usko ve Steam KnightOnline.exe unpack XingCode Kaldırılır.
3.Usko ve Steam [2207 ve 2207] KnightOnline.exe Unpack yapıldı.

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
KiraAmora61 isimli Üye şimdilik offline konumundadır  
Okunmamış 29 Temmuz 2017, 02:11   #6 (permalink)
Uvuvwevwevwe Onyetenyevwe Ugwemuhwem Osas

EveryBodyFool - ait Kullanıcı Resmi (Avatar)


Üyelik tarihi: 02 Temmuz 2017
Mesajlar: 162[+]
Ettiği teşekkür sayısı: 44
59 Mesaja 157 Kez Teşekkür Aldı

Standart

Alıntı:
Dawn Nickli Üyeden Alıntı Mesajı göster
Prosedür ve src içindeki tanımlamalar birbiriyle uyuşmuyor.
Aynen mertin de dediği gibi prosedür parametreleri eksik onları düzelt ama presedürler ile dosya tarafında yapılan işlemler arasında hiçbir bağlantı yok. İkiside çok ayrı kodlar bir yerden bulup aldıysan çalışmaz. Silip yeniden presedürlerine göre yazman gerekiyor. Yada dosyalarına göre prosedürleri düzenlemen gerekiyor.
EveryBodyFool isimli Üye şimdilik offline konumundadır  
 


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Geçerli forum için yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
2000+ [2153] Tatto Dövme Sistemi KiraAmora61 Geliştirme 32 26 Temmuz 2018 03:50
[ISTIRAP] Clientless Source 21xx VB6 nizarss Paylaşım 63 19 Haziran 2018 14:32
1900+ Training Exp Sistemin Eklemek KiraAmora61 Geliştirme 6 16 Eylül 2017 14:30
21xx Tatto (Dövme) sistemi. KiraAmora61 Çözülen Konular 27 28 Temmuz 2017 04:54
21xx Bdw giremiyorum. KiraAmora61 Çözülen Konular 40 27 Temmuz 2017 00:51


Forum Site Hakkında
vBulletin® tarafından desteklenmektedir Versiyon 3.8.4
Telif hakkı ©2000 - 2018, Jelsoft Enterprises Ltd.

Sitemizdeki içerikler kopyalanmaya karşı DMCA ile korunmaktadır. DMCA.com Protection Status
İçerik sağlayıcı paylaşım sitelerinden biri olan kodevelopers.com Forum Adresimizde T.C.K 20.ci Madde ve 5651 Sayılı Kanun'un 4.cü maddesinin (2).ci fıkrasına göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur. kodevelopers.com hakkında yapılacak tüm hukuksal Şikayetler için admin@kodevelopers.com Mail adresimiz üzerinden iletişime geçilmesi halinde ilgili kanunlar ve yönetmelikler çerçevesinde en geç 1 (Bir) Hafta içerisinde kodevelopers.com yönetimi olarak tarafımızdan gereken işlemler yapılacak ve Avukatımız size dönüş yapacaktır.
© 2017 KO Developers ( by NERONLINEWORLD 2011/2013 )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171

Search Engine Friendly URLs by vBSEO 3.6.0