Peço que utilize esse codigo abaixo do replation, esta correto e com as verificações padrões.
Tem que adaptar ao seu codigo.
#pragma region >> Replation Normal
if ( item->sIndex >= 4016 && item->sIndex <= 4020 )
{
STRUCT_ITEM *dest = GetItemPointer( &pMob[ conn].MOB, pUser[ conn].Cargo, m->DestType, m->DestPos );
int nPos = 0;
if ( g_pItemList[ dest->sIndex ].nPos != NULL )
nPos = g_pItemList[ dest->sIndex ].nPos;
if ( nPos == NULL )
{
SendClientMsg(conn, "ERRO! Entre em contato com o suporte!" );
return;
}
if ( dest == NULL )
return;
if ( !m->DestType || m->DestPos >= 60 )
{
SendClientMsg( a_iConn, g_pMessageStringTable[ _NN_Only_To_Equips ] );
SendItem( conn, m->SourType, m->SourPos, item );
return;
}
if ( dest->sIndex >= 3500 && dest->sIndex <= 3507 )
{
SendClientMsg( conn, "Não é possível utilizar em cytheras." );
SendItem( conn, ITEM_PLACE_CARRY, m->SourPos, item );
return;
}
if ( nPos == 64 || nPos == 192 || nPos == 42 )
{
SendClientMsg( conn, "Possível somente para equipamentos de defesa." );
SendItem( conn, m->SourType, m->SourPos, item );
return;
}
int sanc = BASE_GetItemSanc( dest );
int ItemId = dest->sIndex;
if ( sanc > 6 || BASE_GetItemAbility( dest, EF_MOBTYPE ) != 0 && BASE_GetItemAbility( dest, EF_MOBTYPE ) != 2 )
{
SendItem( conn, m->SourType, m->SourPos, item );
return;
}
int replation = item->sIndex >= 4016 && item->sIndex <= 4020 ? item->sIndex - 4015 : item->sIndex - 4020;
if ( BASE_GetItemAbility( dest, EF_ITEMLEVEL ) != replation )
{
SendItem( conn, m->SourType, m->SourPos, item );
return;
}
SetItemBonus2( dest );
SendItem( conn, m->DestType, m->DestPos, dest );
SendEmotion( conn, 14, 3 );
AmountMinus( item );
return;
}
#pragma endregion