memba 2 #1 Oluşturuldu: Ekim 19, 2017 Merhaba Sorunum Karakter Login Olunca Hangi Zone olursa olsun 0,0 Kordinatlarında Başlaması SpeedHack Fonsiyonundan Kaynaklanabileceği @ TheChucky Arkadaşımız Tarafından Söylendi Fonsiyonum Bu Şekilde void CUser::SpeedHackUser() { if (!isInGame() || isGM()) return; int16 nMaxSpeed = 45; if (GetFame() == COMMAND_CAPTAIN || isRogue()) nMaxSpeed = 92; else if (isWarrior() || isMage() || isPriest() || isKurian()) nMaxSpeed = 69; if (m_sSpeed > nMaxSpeed /*|| m_sSpeed { DateTime time; Disconnect(); g_pMain->SendFormattedNotice("%s is currently disconnect for speed hack.",Nation::ALL,GetName().c_str()); g_pMain->WriteCheatLogFile(string_format("[ SpeedHack - %d:%d:%d ] %s is Disconnected.", time.GetHour(),time.GetMinute(),time.GetSecond(),GetName().c_str())); } } 1 Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
HKS 340 #2 Ekim 19, 2017 tarihinde gönderildi Karakterde Genie Time gözükuyormu sağ üstte ? bunla alakalı olacağını sanmıyorum Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
OzkanOzdemir 1.531 Admin #3 Ekim 19, 2017 tarihinde gönderildi SpeedHackUser fonksiyonunun neresinde koordinat belirtiyor yada koordinat ile oynama var? Eğer ki client taraflı gelen Speed değeri belli bir kontrole göre uyuşmuyorsa Disconnect(); yani bağlantıyı kapatma işlemi gerçekleşiyor bu kadar başka bir işlem mevcut değil. Böyle bir kontrol zaten saçmalık ötesi istemci üzerinden gelen Speed değerine göre kontrol yapılmış 3. parti programlar ile Speed değeri her zaman sabit olarak gönderilse sizin SpeedHackUser fonksiyonu yalan olacak. Ayrıca sana chat üzerinden gerekli değerlendirmeleri ve açıklamayı yapmıştım onlara düzgünce göz atabilirsin. 1) LOAD_USER_DATA prosedüründeki veri tipi veya veri sırası server tarafıyla uyuşmadığı için koordinatları yanlış çekiyor olabilir. 2) WIZ_MYINFO paketinde veri tipi veya veri sırası istemci ile uyuşmadığı için server koordinatları yanlış gönderiyor olabilir. 3) START_POSITION tablosu boş yada koordinatlar 0, 0 olarak ayarlanmıştır. 4) UPDATE_USER_DATA prosedüründeki veri tip veya veri sırası server tarafıyla uyuşmadığı için koordinatları yanlış gönderiyor olabilir. 1 Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
TheChucky 22 #4 Ekim 19, 2017 tarihinde gönderildi Merhabalar paylaştığın fonksiyon MoveProcess() fonksiyonu içerisinde kullanılan bir fonksiyon bunun yanı sıra serverın paket(WIZ_SPEEDHACK_CHECK) ile gönderdiği SpeedHackTime() fonksiyonu mevcut paylaştığın fonksiyon başlangıcındaki gibi;Alıntıif (!isInGame() || isGM()) return; SpeedHackTime() fonksiyonu başlangıcınada aynı kontrolü belirtmen gerekiyor. Bahsettiğim fonksiyon sende farklı olabilir o yüzden bahsedilen paketin hangi fonksiyonu kullandığını kontrol edebilirsin. Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
memba 2 #5 Konu Sahibi Ekim 19, 2017 tarihinde gönderildi @ OzkanOzdemir Onları Kontrol Etmiştim Gözden Kaçırdığım Birşey mi anlamadım Load_User_Data bu şekilde USE [kn_online] GO /****** Object: StoredProcedure [dbo].[LOAD_USER_DATA] Script Date: 19/10/2017 14:32:03 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[LOAD_USER_DATA] @strAccountID varchar(21), @strCharID varchar(21) AS DECLARE @strCharID1 varchar(21), @strCharID2 varchar(21), @strCharID3 varchar(21), @strCharID4 varchar(21) SELECT @strCharID1 = ISNULL(strCharID1, ''), @strCharID2 = ISNULL(strCharID2, ''), @strCharID3 = ISNULL(strCharID3, ''), @strCharID4 = ISNULL(strCharID4, '') FROM ACCOUNT_CHAR WHERE strAccountID = @strAccountID IF (@strCharID NOT IN(@strCharID1, @strCharID2, @strCharID3, @strCharID4)) RETURN DECLARE @ Knights int, @ Knights2 int, @Zone int, @Kc int SELECT @ Knights=Knights,@Zone =Zone from USERDATA where strUserID=@strCharID select @Kc = Cashpoint from tb_user where strAccountID=@strAccountID SELECT @ Knights2=count(*) from KNIGHTS where IDNum=@ Knights IF (@ Knights2 = 0) BEGIN UPDATE USERDATA SET KNIGHTS=0,FAME=0 WHERE strUserID=@strCharID END if (@Zone = 21 or @Zone = 22) begin UPDATE USERDATA SET PX=81360,PZ=42940,Zone=21 WHERE strUserID=@strCharID END if (@Kc begin UPDATE TB_USER set cashpoint = 1 where strAccountID=@strAccountID END SELECT Nation, Race, Class, HairRGB, [Rank], Title, [Level],bLevelRebirth, [Exp], Loyalty, Face, City, Knights, Fame, Hp, Mp, Sp, Strong, Sta, Dex, Intel, Cha, Authority, Points, Gold, Zone, Bind, PX, PZ, PY, dwTime, strSkill, strItem, strSerial, strVIPItem, strVIPSerial,sQuestCount,sQuestUseCount, sAchieveQuestCount, strQuest,strQuestUse, strAchieveQuest, MannerPoint, LoyaltyMonthly, strItemTime, strVIPItemTime, strMemo, sGenieTime, strGenieOptions, strAchieveQuestKill, strRebStats, SkillTitle, CoverTitle, VIPStorePassword, VIPStoreMinute, iMonsterDefeatedCount, iUserDefeatedCount, iUserDeathCount, iAchievementPoint,LastOnline FROM USERDATA WHERE strUserID = @strCharID Select Kısımını Kontol Ettim Sorun Görünmüyor. START_POSITION tablosundaki kordinatlar Tamam. UPDATE_USER_DATA şu şekilde USE [kn_online] GO /****** Object: StoredProcedure [dbo].[UPDATE_USER_DATA] Script Date: 19/10/2017 15:01:13 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[UPDATE_USER_DATA] @strCharID char(21), @bNation tinyint, @bRace tinyint, @sClass smallint, @nHair int, @bRank tinyint, @bTitle tinyint, @bLevel tinyint, @bRebLevel tinyint, @iExp bigint, @nLoyalty int, @bFace tinyint, @bCity tinyint, @sClanID smallint, @bFame tinyint, @sHp smallint, @sMp smallint, @sSp smallint, @bStr tinyint, @bSta tinyint, @bDex tinyint, @bIntel tinyint, @bCha tinyint, @bAuthority tinyint, @sPoints smallint, @nCoins int, @bZone tinyint, @sBind smallint, @iPosX int, @iPosZ int, @iPosY int, @dwTime int, @sQuestCount smallint, @sQuestUseCount smallint, @sAchieveQuestCount int, @strSkill varchar(10), @strItem binary(592), @strSerial binary(592), @strVIPItem binary(392), @strVIPSerial binary(392), @strQuest binary(600), @strQuestUse binary(1296), @strAchieveQuest binary(1500), @nMannerPoint int, @nLoyaltyMonthly int, @strItemTime binary(592), @strVIPItemTime binary(392), @strMemo char(21), @sGenieTime smallint, @strGenieOptions char(100), @strAchieveQuestKill varchar(3000), @strRebStats binary(50), @dtUpdateClan int, @SkillTitle int, @CoverTitle int, @VipTime int, @iMonsterDefeatedCount int, @iUserDefeatedCount int, @iUserDeathCount int, @iAchievementPoint int, @LastOnline int AS UPDATE USERDATA SET Nation = @bNation, Race = @bRace, Class = @sClass, HairRGB = @nHair, [Rank] = @bRank, Title = @bTitle, [Level] = @bLevel, bLevelRebirth = @bRebLevel, [Exp] = @iExp, Loyalty = @nLoyalty, Face = @bFace, City = @bCity, Knights = @sClanID, Fame = @bFame, Hp = @sHp, Mp = @sMp, Sp = @sSp, Strong = @bStr, Sta = @bSta, Dex = @bDex, Intel = @bIntel, Cha = @bCha, Authority = @bAuthority, Points = @sPoints, Gold = @nCoins, [Zone] = @bZone, Bind = @sBind, PX = @iPosX, PZ = @iPosZ, PY = @iPosY, dwTime = @dwTime, sQuestCount = @sQuestCount, sQuestUseCount = @sQuestUseCount, sAchieveQuestCount = @sAchieveQuestCount, strSkill = @strSkill, strItem = @strItem, strSerial = @strSerial, strVIPItem = @strVIPItem, strVIPSerial = @strVIPSerial, strQuest = @strQuest, strQuestUse = @strQuestUse, strAchieveQuest = @strAchieveQuest, MannerPoint = @nMannerPoint, LoyaltyMonthly = @nLoyaltyMonthly, strItemTime = @strItemTime, strVIPItemTime = @strVIPItemTime, strMemo = @strMemo, sGenieTime = @sGenieTime, strGenieOptions = @strGenieOptions, strAchieveQuestKill = @strAchieveQuestKill, strRebStats = @strRebStats, dtUpdateTime = GETDATE(), dtUpdateClan = @dtUpdateClan, SkillTitle = @SkillTitle, CoverTitle = @CoverTitle, VIPStoreMinute = @VipTime, iMonsterDefeatedCount = @iMonsterDefeatedCount, iUserDefeatedCount = @iUserDefeatedCount, iUserDeathCount = @iUserDeathCount, iAchievementPoint = @iAchievementPoint, LastOnline = @LastOnline WHERE strUserID = @strCharID BURADA Bir sıkıntı olabilir Onu İnceliyorum Suan Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
OzkanOzdemir 1.531 Admin #6 Ekim 19, 2017 tarihinde gönderildi Öyle sadece prosedürü açıp baktığın sürece sadece bakmış olursun hiç bir şey anlamazsın. Server taraflı LOAD_USER_DATA ve UPDATE_USER_DATA prosedürlerinin CALL edildiği fonksiyon içinde prosedürlere yollanan parametrelerin veri tiplerine ve veri sırasını karşılaştıracaksın. Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
memba 2 #7 Konu Sahibi Ekim 19, 2017 tarihinde gönderildi Onların Hepsini Karşılaştırdım Birebir Tutuyor. Şöyle ki Karakter Logout Olunca Tüm Veriler Yazılıyor Login Sırasında Userdatada Kordinatları olmasına Rağmen 0,0 Kordinatlarına Atıyor Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
EveryBodyFool 198 #8 Ekim 20, 2017 tarihinde gönderildi Oyundan çıkınca USERDATA da kayıtlı kordinatların doğru gözüküyor mu? Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
PENTAGRAM 921 #9 Ekim 21, 2017 tarihinde gönderildi AlıntıOnların Hepsini Karşılaştırdım Birebir Tutuyor. Şöyle ki Karakter Logout Olunca Tüm Veriler Yazılıyor Login Sırasında Userdatada Kordinatları olmasına Rağmen 0,0 Kordinatlarına Atıyor SetMap veya SetRegion fonksiyonlarını kontrol et. Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
memba 2 #10 Konu Sahibi Ekim 21, 2017 tarihinde gönderildi Soru Giderildi.SpeedHackTime() fonksiyonundaki Eksiklikten Kaynaklanıyormuş.Aynı Sorunu Yaşayanlar Fonksiyonun Başına AŞAĞIDAKİ Kodu Ekleyebilirsiniz.if (!isInGame() || isGM()) return; 1 Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş
TheChucky 22 #11 Ekim 21, 2017 tarihinde gönderildi AlıntıSoru Giderildi. SpeedHackTime() fonksiyonundaki Eksiklikten Kaynaklanıyormuş. Aynı Sorunu Yaşayanlar Fonksiyonun Başına AŞAĞIDAKİ Kodu Ekleyebilirsiniz. if (!isInGame() || isGM()) return; geçmiş olsun hadi :F Mesajı raporla İletiyi paylaş Link to post Sitelerde Paylaş