Bvural41 1
Bvural41
mannaxxx 1
mannaxxx
Agora Metin2 1
Agora Metin2
Mt2Hizmet 1
Mt2Hizmet
berkmenoo 1
berkmenoo
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Hikaye Ekle

[C++] Karakter İtem Yang Kopyalama Fix!

  • Konuyu başlatan Konuyu başlatan BeviS
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 50
  • Görüntüleme Görüntüleme 12K

Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!

sol elle sağ kulağı kaşımanın bir anlamı yok
UNIQUE INDEX `login`(`login`) USING BTREE,
Bu login alanını benzersiz olması için kullanılıyor zaten çoğu alt yapıda bu şekilde mevzuda oyunun destek ekibini yada yönetimden birilerini kandırarak admin panelden yada doğrudan db üzerinden değiştirtmeleri önüne geçmek zor en temizi login alanının değiştirilmesinin engellenmesi yada tunganın dediği gibi login yerine id baktırmak olabilir.

Ben trigger ile login alınanının değiştirilmesini engellendim.

DELIMITER $$
CREATE TRIGGER trigger_account_login BEFORE UPDATE ON account FOR EACH ROW
BEGIN
IF NEW.login <> OLD.login THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'login değiştirilemez!';
END IF;
END $$
DELIMITER;
 
ID kontrolü yeterli olur derseniz şunu uygulayabilirsiniz

void CInputLogin::CharacterSelect(LPDESC d, const char* data)

Altına ekle

if (!c_r.players[pinfo->index].dwID)
{
d->SetPhase(PHASE_CLOSE);
return;
}
 
Bu login alanını benzersiz olması için kullanılıyor zaten çoğu alt yapıda bu şekilde mevzuda oyunun destek ekibini yada yönetimden birilerini kandırarak admin panelden yada doğrudan db üzerinden değiştirtmeleri önüne geçmek zor en temizi login alanının değiştirilmesinin engellenmesi yada tunganın dediği gibi login yerine id baktırmak olabilir.

Ben trigger ile login alınanının değiştirilmesini engellendim.

DELIMITER $$
CREATE TRIGGER trigger_account_login BEFORE UPDATE ON account FOR EACH ROW
BEGIN
IF NEW.login <> OLD.login THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'login değiştirilemez!';
END IF;
END $$
DELIMITER;
Loginin benzersiz olması ile ilgili bir problem değil bu. Hesap oyundayken loginin değiştirilmesi ile ilgili bir problem. Login alanı zaten değiştirilmiyor. Sadece oyun sahibi manuel olarak böyle bir müdahale gerçekleştirebilir. Aynı oyun sahibi manuel olarak herhangi bir hesaba ep,gold,level de verebilir.


ID kontrolü yeterli olur derseniz şunu uygulayabilirsiniz

void CInputLogin::CharacterSelect(LPDESC d, const char* data)

Altına ekle

if (!c_r.players[pinfo->index].dwID)
{
d->SetPhase(PHASE_CLOSE);
return;
}
burada PID var mı diye kontrol ediyor. Konudaki olayla alakası olmamayı geçtim sorgunun olduğu yer de login değil karakter seçme.
 
Loginin benzersiz olması ile ilgili bir problem değil bu. Hesap oyundayken loginin değiştirilmesi ile ilgili bir problem. Login alanı zaten değiştirilmiyor. Sadece oyun sahibi manuel olarak böyle bir müdahale gerçekleştirebilir. Aynı oyun sahibi manuel olarak herhangi bir hesaba ep,gold,level de verebilir.



burada PID var mı diye kontrol ediyor. Konudaki olayla alakası olmamayı geçtim sorgunun olduğu yer de login değil karakter seçme.
Anlamadım yazdığını bana mı dedin verdiğim trigger zaten login değiştirmeyi engelliyor biz de bu oltaya ta 2018 de düşmüş olup 2018 den buya bildiğim bir bug destek ekibini kandırarak admin panelden kullanıcı adı yani logini değiştirmişti, bunu admin biri harici yapamıyor kullanıcılar bu triggerla olayı engellemiştim aslında temel sorun duruyordu ama günü kurtarmıştım ve böyle bilmeyenlerin değiştirmeyesini sağlamıştım :)
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst