Jump to content
Araştır
  • Diğer seçenekler ...
Sonuçları bul ...
Sonuçları bul ...
memba

Login Sırasında Karakterin 0 Noktasından Başlaması Hk.

Önerilen Mesajlar

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()));
}
}

İletiyi paylaş


Link to post
Sitelerde Paylaş
Admin
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.

İletiyi paylaş


Link to post
Sitelerde Paylaş

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.

İletiyi paylaş


Link to post
Sitelerde Paylaş
@ 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

İletiyi paylaş


Link to post
Sitelerde Paylaş
Admin
Ö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.

İletiyi paylaş


Link to post
Sitelerde Paylaş

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

İletiyi paylaş


Link to post
Sitelerde Paylaş
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.

İletiyi paylaş


Link to post
Sitelerde Paylaş

Soru Giderildi.
SpeedHackTime() fonksiyonundaki Eksiklikten Kaynaklanıyormuş.
Aynı Sorunu Yaşayanlar Fonksiyonun Başına AŞAĞIDAKİ Kodu Ekleyebilirsiniz.


if (!isInGame() || isGM())
return;

İletiyi paylaş


Link to post
Sitelerde Paylaş
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

İletiyi paylaş


Link to post
Sitelerde Paylaş

×
×
  • Yeni Oluştur...