AD: Mt2009 - Mobile & PC - 30 January 2026 CHECK THE PRESENTATION!
Hello, the mounts are attached correctly but I can never use. When I press Ctrl+G, it changes the ones in my inventory. When I check the system logs, I see logs like this: Dec 25 03:00:41 :: COMMAND: tkj: ride
Dec 25 03:00:41 :: tkj: USE_ITEM White Lion (inven 1, cell: 1)
Dec 25 03:00:41 :: COMMAND: tkj: ride
Dec 25 03:00:41 :: tkj: USE_ITEM Wild Boar (yellow) (inven 1, cell: 1)
Dec 25 03:00:41 :: COMMAND: tkj: ride
Dec 25 03:00:41 :: tkj: USE_ITEM White Lion (inven 1, cell: 1)
Dec 25 03:00:42 :: COMMAND: tkj: ride
Dec 25 03:00:42 :: tkj: USE_ITEM How can I solve the Wild Boar (yellow) (inven 1, cell: 1) problem?
Also, the item proto is like this: 71226 ³«Å¸ ¼ÒȯÆĞ1 ITEM_COSTUME COSTUME_MOUNT 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_PKDROP | ANTI_STACK | ANTI_MYSHOP QUEST_USE_MULTIPLE | LOG NONE NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_MOV_SPEED 20 APPLY_MAX_HP 1500 APPLY_NONE 0 43200 0 0 0 20248 0 0 0 0
and i tried to fix cmd_general but it didnt work
ACMD(do_ride)
{
sys_log(0, "[DO_RIDE] Tetiklendi: %s", ch->GetName());
if (ch->IsDead() || ch->IsStun())
return;
// 1. Zaten biniyorsa in
if (ch->IsHorseRiding())
{
ch->StopRiding();
return;
}
if (ch->GetMountVnum())
{
do_unmount(ch, NULL, 0, 0);
return;
}
// 2. At varsa bin
if (ch->GetHorse() != NULL)
{
ch->StartRiding();
return;
}
// ========================================================================
// ========================================================================
LPITEM pEquipped = NULL;
int iSlotIndex = -1;
// A. Önce Kostüm Slotunu Kontrol Et
#ifdef ENABLE_MOUNT_COSTUME_SYSTEM
if (ch->GetWear(WEAR_COSTUME_MOUNT))
{
pEquipped = ch->GetWear(WEAR_COSTUME_MOUNT);
iSlotIndex = WEAR_COSTUME_MOUNT;
}
#endif
if (!pEquipped)
{
LPITEM pU1 = ch->GetWear(WEAR_UNIQUE1);
if (pU1)
{
DWORD v = pU1->GetVnum();
// Senin 71124 ve diğer mühür aralıkları
if ((v >= 71114 && v <= 71130) || (v >= 52000 && v <= 52100) || v == 71124)
{
pEquipped = pU1;
iSlotIndex = WEAR_UNIQUE1;
}
}
}
if (!pEquipped)
{
LPITEM pU2 = ch->GetWear(WEAR_UNIQUE2);
if (pU2)
{
DWORD v = pU2->GetVnum();
if ((v >= 71114 && v <= 71130) || (v >= 52000 && v <= 52100) || v == 71124)
{
pEquipped = pU2;
iSlotIndex = WEAR_UNIQUE2;
}
}
}
// --- KARAR ANI: BİNEK BULUNDU MU? ---
if (pEquipped != NULL)
{
// Binek Mob Kodunu (Value3) alıyoruz (Örn: 20114 - Beyaz Aslan)
DWORD dwMountVnum = pEquipped->GetValue(3);
if (dwMountVnum == 0)
dwMountVnum = pEquipped->GetValue(2);
if (dwMountVnum > 0)
{
ch->HorseSummon(true, dwMountVnum);
// Sonra bindir
ch->StartRiding();
}
else
{
// Mob kodu yoksa standart kullan
ch->UseItem(TItemPos(EQUIPMENT, iSlotIndex));
}
return;
}
// ========================================================================
// 3. Envanter Döngüsü
for (BYTE i = 0; i < INVENTORY_MAX_NUM; ++i)
{
LPITEM item = ch->GetInventoryItem(i);
if (NULL == item)
continue;
DWORD vnum = item->GetVnum();
bool isMount = item->IsRideItem();
// IsRideItem false dönse bile bizim vnum listesindeyse binek sayalım
if (!isMount)
{
if ((vnum >= 71114 && vnum <= 71130) || (vnum >= 52000 && vnum <= 52100) || vnum == 71124)
isMount = true;
}
if (isMount)
{
if (ch->GetWear(WEAR_UNIQUE1) && (ch->GetWear(WEAR_UNIQUE1)->GetVnum() >= 71114)) continue;
if (ch->GetWear(WEAR_UNIQUE2) && (ch->GetWear(WEAR_UNIQUE2)->GetVnum() >= 71114)) continue;
#ifdef ENABLE_MOUNT_COSTUME_SYSTEM
if (ch->GetWear(WEAR_COSTUME_MOUNT)) continue;
#endif
ch->UseItem(TItemPos(INVENTORY, i));
return;
}
}
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Atı önce çağırmalısınız."));
}
#ifdef ENABLE_MOVE_CHANNEL
ACMD(DoChangeChannel)
{
char arg1[256];
one_argument(argument, arg1, sizeof(arg1));
if (!*arg1)
return;
WORD channel = 0;
str_to_number(channel, arg1);
if (!channel)
return;
ch->ChangeChannel(channel);
}
#endif
Dec 25 03:00:41 :: tkj: USE_ITEM White Lion (inven 1, cell: 1)
Dec 25 03:00:41 :: COMMAND: tkj: ride
Dec 25 03:00:41 :: tkj: USE_ITEM Wild Boar (yellow) (inven 1, cell: 1)
Dec 25 03:00:41 :: COMMAND: tkj: ride
Dec 25 03:00:41 :: tkj: USE_ITEM White Lion (inven 1, cell: 1)
Dec 25 03:00:42 :: COMMAND: tkj: ride
Dec 25 03:00:42 :: tkj: USE_ITEM How can I solve the Wild Boar (yellow) (inven 1, cell: 1) problem?
Also, the item proto is like this: 71226 ³«Å¸ ¼ÒȯÆĞ1 ITEM_COSTUME COSTUME_MOUNT 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_PKDROP | ANTI_STACK | ANTI_MYSHOP QUEST_USE_MULTIPLE | LOG NONE NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_MOV_SPEED 20 APPLY_MAX_HP 1500 APPLY_NONE 0 43200 0 0 0 20248 0 0 0 0
and i tried to fix cmd_general but it didnt work
ACMD(do_ride)
{
sys_log(0, "[DO_RIDE] Tetiklendi: %s", ch->GetName());
if (ch->IsDead() || ch->IsStun())
return;
// 1. Zaten biniyorsa in
if (ch->IsHorseRiding())
{
ch->StopRiding();
return;
}
if (ch->GetMountVnum())
{
do_unmount(ch, NULL, 0, 0);
return;
}
// 2. At varsa bin
if (ch->GetHorse() != NULL)
{
ch->StartRiding();
return;
}
// ========================================================================
// ========================================================================
LPITEM pEquipped = NULL;
int iSlotIndex = -1;
// A. Önce Kostüm Slotunu Kontrol Et
#ifdef ENABLE_MOUNT_COSTUME_SYSTEM
if (ch->GetWear(WEAR_COSTUME_MOUNT))
{
pEquipped = ch->GetWear(WEAR_COSTUME_MOUNT);
iSlotIndex = WEAR_COSTUME_MOUNT;
}
#endif
if (!pEquipped)
{
LPITEM pU1 = ch->GetWear(WEAR_UNIQUE1);
if (pU1)
{
DWORD v = pU1->GetVnum();
// Senin 71124 ve diğer mühür aralıkları
if ((v >= 71114 && v <= 71130) || (v >= 52000 && v <= 52100) || v == 71124)
{
pEquipped = pU1;
iSlotIndex = WEAR_UNIQUE1;
}
}
}
if (!pEquipped)
{
LPITEM pU2 = ch->GetWear(WEAR_UNIQUE2);
if (pU2)
{
DWORD v = pU2->GetVnum();
if ((v >= 71114 && v <= 71130) || (v >= 52000 && v <= 52100) || v == 71124)
{
pEquipped = pU2;
iSlotIndex = WEAR_UNIQUE2;
}
}
}
// --- KARAR ANI: BİNEK BULUNDU MU? ---
if (pEquipped != NULL)
{
// Binek Mob Kodunu (Value3) alıyoruz (Örn: 20114 - Beyaz Aslan)
DWORD dwMountVnum = pEquipped->GetValue(3);
if (dwMountVnum == 0)
dwMountVnum = pEquipped->GetValue(2);
if (dwMountVnum > 0)
{
ch->HorseSummon(true, dwMountVnum);
// Sonra bindir
ch->StartRiding();
}
else
{
// Mob kodu yoksa standart kullan
ch->UseItem(TItemPos(EQUIPMENT, iSlotIndex));
}
return;
}
// ========================================================================
// 3. Envanter Döngüsü
for (BYTE i = 0; i < INVENTORY_MAX_NUM; ++i)
{
LPITEM item = ch->GetInventoryItem(i);
if (NULL == item)
continue;
DWORD vnum = item->GetVnum();
bool isMount = item->IsRideItem();
// IsRideItem false dönse bile bizim vnum listesindeyse binek sayalım
if (!isMount)
{
if ((vnum >= 71114 && vnum <= 71130) || (vnum >= 52000 && vnum <= 52100) || vnum == 71124)
isMount = true;
}
if (isMount)
{
if (ch->GetWear(WEAR_UNIQUE1) && (ch->GetWear(WEAR_UNIQUE1)->GetVnum() >= 71114)) continue;
if (ch->GetWear(WEAR_UNIQUE2) && (ch->GetWear(WEAR_UNIQUE2)->GetVnum() >= 71114)) continue;
#ifdef ENABLE_MOUNT_COSTUME_SYSTEM
if (ch->GetWear(WEAR_COSTUME_MOUNT)) continue;
#endif
ch->UseItem(TItemPos(INVENTORY, i));
return;
}
}
ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Atı önce çağırmalısınız."));
}
#ifdef ENABLE_MOVE_CHANNEL
ACMD(DoChangeChannel)
{
char arg1[256];
one_argument(argument, arg1, sizeof(arg1));
if (!*arg1)
return;
WORD channel = 0;
str_to_number(channel, arg1);
if (!channel)
return;
ch->ChangeChannel(channel);
}
#endif

