Faits:
Faits:
A. Par jugement du 16 décembre 2003, le Tribunal correctionnel de l'arrondissement de l'Est vaudois a notamment condamné X._, ressortissant macédonien né en 1967, pour infraction grave et contravention à la LStup, tentative de recel, complicité de tentative de vol, infraction à la LSEE et violation grave des règles de la circulation routière, à la peine de 7 ans de réclusion. Il a déclaré cette peine complémentaire à deux autres, prononcées, respectivement, le 12 novembre 1998 et le 16 novembre 2000 par le Juge d'instruction de l'arrondissement de l'Est vaudois. Il a en outre ordonné l'expulsion de l'accusé du territoire suisse pour une durée de 15 ans.
Statuant le 12 juillet 2004 sur le recours en nullité et en réforme interjeté par le condamné contre ce jugement, la Cour de cassation pénale du Tribunal cantonal vaudois l'a partiellement admis et a réduit la peine privative de liberté à 6 ans et 9 mois de réclusion. Pour le surplus, elle a écarté le recours et confirmé le jugement qui lui était déféré.
Statuant le 12 juillet 2004 sur le recours en nullité et en réforme interjeté par le condamné contre ce jugement, la Cour de cassation pénale du Tribunal cantonal vaudois l'a partiellement admis et a réduit la peine privative de liberté à 6 ans et 9 mois de réclusion. Pour le surplus, elle a écarté le recours et confirmé le jugement qui lui était déféré.
B. Cet arrêt retient, en résumé, ce qui suit.
B.a De l'été 1998 au 23 avril 2000, date de son arrestation, X._ a commis de nombreuses infractions à la LStup.
Il a notamment mis directement sur le marché 130,6 g de cocaïne pure, s'est livré au courtage d'environ 500 g de cette drogue et, en échange de commissions en nature et en argent, a conduit à Berne un toxicomane désireux de se procurer de la cocaïne.
Il a également participé à la réception de 7 kg d'héroïne et de 700 g de cocaïne importés du Kosovo par le dénommé Y._, obtenant en contrepartie une somme de 5000 fr. et 22 g de cocaïne. Sur requête de Y._, il a en outre transporté une partie de cette drogue, soit 3 kg d'héroïne et 700 g de cocaïne, de l'appartement où elle se trouvait, à Bösingen, dans le canton de Fribourg, jusqu'au domicile d'un trafiquant installé à Villeneuve.
X._ a par ailleurs été pressenti par Y._ et son état-major pour faire la mule, moyennant une commission de 2500 à 3000 fr. par kilo. C'est ainsi qu'il a acquis un véhicule de marque Chrysler Voyager, avec lequel il s'est rendu dans les Balkans en vue d'importer en Suisse entre 15 et 20 kg d'héroïne. Aucune importation effective n'a toutefois pu être établie.
X._ a encore cherché à vendre 2 kg d'héroïne qu'il détenait.
De plus, pendant quatre ou cinq jours, il s'est substitué, dans le rôle de vendeur, à un trafiquant dénommé Z._. A ce titre, il a notamment cédé 30 à 40 g d'héroïne et entreposé 600 g de cocaïne que celui-ci lui avait confiés.
Enfin, l'accusé a mis en relation deux importants trafiquants de drogue, B._ et D._, avec le grossiste Y._, opération qui a permis aux deux premiers nommés d'acheter 100 à 200 g d'héroïne. Il a également servi d'intermédiaire dans le paiement de cette transaction et a conduit B._ et D._ à Lucerne, où ceux-ci entendaient se procurer de l'héroïne.
Grâce aux activités susmentionnées, X._ a réalisé un bénéfice net de l'ordre de 17'000 francs et a perçu une commission de 5'000 francs. Il a par ailleurs consommé plus d'une centaine de grammes de cocaïne, qu'il a prélevée sur les diverses quantités mentionnées ci-dessus.
B.b A deux reprises, X._ a enfreint la LCR, commettant un excès de vitesse et conduisant sous l'emprise de la cocaïne.
Il s'est également rendu coupable d'infraction à la LSEE, pour avoir importé des Balkans de faux permis de séjour suisses et en avoir cédé deux, notamment en extinction d'une dette de 1'000 francs.
Enfin, l'accusé s'est rendu coupable de tentative de recel, pour avoir aidé un camarade à négocier des cartes de crédit volées, ainsi que de complicité de tentative de vol, pour avoir prêté assistance à des cambriolages qui ont échoué.
Enfin, l'accusé s'est rendu coupable de tentative de recel, pour avoir aidé un camarade à négocier des cartes de crédit volées, ainsi que de complicité de tentative de vol, pour avoir prêté assistance à des cambriolages qui ont échoué.
C. Dans son recours cantonal, X._ s'est notamment plaint d'une violation de l'art. 411 let. g CPP/VD, reprochant aux premiers juges d'avoir aggravé la peine au motif qu'il avait agi en qualité d'affilié à une bande formée pour se livrer au trafic de stupéfiants, alors que l'accusation n'avait pas été aggravée sur ce point conformément à l'<ref-law>/VD.
La cour cantonale a admis le bien-fondé de ce grief. Elle a toutefois estimé qu'il ne se justifiait pas d'annuler le jugement attaqué, mais de rectifier l'état de fait retenu, en ce sens que l'accusé ne s'était pas livré à un trafic de stupéfiants en qualité d'affilié à une bande, et d'en tirer les conséquences au stade de la fixation de la peine, en réduisant la quotité de celle-ci. A cet égard, observant que l'élément retenu à tort n'avait joué qu'un rôle très relatif dans la fixation de la peine et ne pouvait donc entraîner qu'une diminution très relative de celle-ci, elle a considéré qu'il se justifiait d'opérer une réduction de 3 mois de la sanction infligée, qu'elle a dès lors fixée à 6 ans et 9 mois de réclusion.
Pour le surplus, la cour cantonale a écarté aussi bien les autres moyens de nullité que les moyens de réforme du recourant. Elle a notamment dénié une violation par les premiers juges de l'<ref-law> ainsi que des art. 13, 63 et 55 CP.
Pour le surplus, la cour cantonale a écarté aussi bien les autres moyens de nullité que les moyens de réforme du recourant. Elle a notamment dénié une violation par les premiers juges de l'<ref-law> ainsi que des art. 13, 63 et 55 CP.
D. X._ forme un recours de droit public et un pourvoi en nullité au Tribunal fédéral. Dans le premier, il se plaint d'une violation de son droit d'être entendu et d'une application arbitraire du droit cantonal de procédure. Dans le second, il invoque une violation de l'art. 19 ch. 1 al. 4 et de l'art. 19 ch. 1 al. 3 et 6 LStup ainsi qu'une violation des art. 13, 63 et 55 CP. Il conclut à l'annulation de l'arrêt attaqué, en sollicitant l'assistance judiciaire.

Le Tribunal fédéral considère en droit:
I. Recours de droit public
I. Recours de droit public
1. Saisi d'un recours de droit public, le Tribunal fédéral ne peut entrer en matière que sur les griefs d'ordre constitutionnel invoqués et suffisamment motivés dans l'acte de recours (cf. art. 90 al. 1 let. b OJ; <ref-ruling> consid. 3c p. 43; <ref-ruling> consid. 1b p. 536; <ref-ruling> consid. 1c p. 76, 492 consid. 1b p. 495 et les arrêts cités).
1. Saisi d'un recours de droit public, le Tribunal fédéral ne peut entrer en matière que sur les griefs d'ordre constitutionnel invoqués et suffisamment motivés dans l'acte de recours (cf. art. 90 al. 1 let. b OJ; <ref-ruling> consid. 3c p. 43; <ref-ruling> consid. 1b p. 536; <ref-ruling> consid. 1c p. 76, 492 consid. 1b p. 495 et les arrêts cités).
2. Le recourant se plaint d'une violation de son droit d'être entendu et d'une violation arbitraire du droit cantonal de procédure, plus précisément de l'art. 411 let. g CPP/VD en relation avec les art. 353, 354 et 433a CPP/VD. Il reproche à la cour cantonale d'avoir remédié elle-même au vice évoqué sous let. C ci-dessus, en rectifiant l'état de fait du jugement de première instance et en réduisant la peine, au lieu d'annuler ce jugement. Il fait valoir que cette manière de procéder l'a empêché de préparer sa défense et de se déterminer sur la peine avant qu'il ne soit statué à nouveau sur celle-ci.
2.1 Le contenu du droit d'être entendu est déterminé en premier lieu par le droit cantonal de procédure, dont le Tribunal fédéral ne contrôle l'application et l'interprétation que sous l'angle restreint de l'arbitraire. Dans tous les cas, l'autorité cantonale doit cependant observer les garanties minimales découlant directement de l'art. 29 al. 2 Cst., dont le Tribunal fédéral examine librement si elles ont été respectées (<ref-ruling> consid. 3 p. 194; <ref-ruling> consid. 2a p. 21/22).
Le principe de l'accusation est une composante du droit d'être entendu consacré par l'art. 29 al. 2 Cst. et peut aussi être déduit des art. 32 al. 2 Cst. et 6 ch. 3 CEDH, qui n'ont à cet égard pas de portée distincte. Il implique que le prévenu sache exactement les faits qui lui sont imputés et quelles sont les peines et mesures auxquelles il est exposé, afin qu'il puisse s'expliquer et préparer efficacement sa défense (ATF <ref-ruling> consid. 2a p. 21). Il n'empêche pas l'autorité de jugement de s'écarter de l'état de fait ou de la qualification juridique retenus dans la décision de renvoi ou l'acte d'accusation, à condition toutefois que les droits de la défense soient respectés (ATF <ref-ruling> consid. 2a et c p. 21 ss). Si l'accusé est condamné pour une autre infraction que celle visée dans la décision de renvoi ou l'acte d'accusation, il faut examiner s'il pouvait, eu égard à l'ensemble des circonstances d'espèce, s'attendre à cette nouvelle qualification juridique des faits, auquel cas il n'y a pas violation de ses droits de défense (ATF <ref-ruling> consid. 2d/bb p. 24).
Selon la jurisprudence, une violation du droit d'être entendu peut être réparée dans le cadre d'un recours si l'intéressé a eu l'occasion de se faire entendre par l'autorité saisie du recours et si la cognition de cette autorité n'est pas moindre que celle de l'autorité qui a statué en première instance. Une telle réparation est toutefois exclue lorsqu'il s'agit d'une violation particulièrement grave des droits des parties et elle doit demeurer l'exception (<ref-ruling> consid. 4 p. 183 et les arrêts cités).
2.2 L'art. 411 let. g CPP/VD ouvre la voie du recours en nullité en cas de violation d'une règle essentielle de procédure autre que celles prévues aux lettres a à f de cette disposition, si cette violation a été de nature à influer sur la décision attaquée. Or, l'arrêt attaqué admet que, pour avoir retenu à la charge du recourant la circonstance aggravante du trafic en bande au sens de l'<ref-law>, sans avoir aggravé l'accusation conformément à l'<ref-law>/VD, les premiers juges ont violé une règle essentielle de procédure au sens de l'art. 411 let. g CPP/VD. Le grief du recourant pris d'une violation par la cour cantonale de cette dernière disposition, lequel revient à lui reprocher d'avoir nié l'existence du vice invoqué, est donc privé de fondement.
De même, l'arrêt attaqué admet que les premiers juges n'ont pas respecté le prescrit de l'<ref-law>/VD, selon lequel le tribunal ne peut s'écarter des faits retenus à la charge de l'accusé dans l'arrêt ou l'ordonnance de renvoi ou de leur qualification juridique que si les conditions prévues aux art. 354 et 355 CPP/VD sont remplies. Autrement dit, il reconnaît que les premiers juges se sont écartés de la décision de renvoi sans procéder de la manière exigée par le droit cantonal de procédure en pareil cas. C'est d'ailleurs précisément en cela que réside la violation par les premiers juges de l'art. 411 let. g CPP/VD, reconnue par la cour cantonale. Le reproche fait à cette dernière d'avoir méconnu ou nié que les <ref-law>/VD n'avaient pas été respectés est donc également privé de fondement.
Quant à l'<ref-law>/VD - qui permet à la cour de cassation vaudoise, saisie d'un recours en nullité, de revoir librement les faits ou d'ordonner des mesures d'instruction lorsque l'état de fait du jugement présente des insuffisances, des lacunes ou des contradictions ou encore lorsqu'il existe des doutes sérieux sur des faits importants -, le recourant allègue vainement qu'il ne garantit pas son droit d'être entendu, car la rectification de l'état de fait par la cour cantonale ne le prive pas moins de la possibilité de préparer sa défense. Cette disposition se borne à prévoir la possibilité pour la cour de cassation vaudoise de revoir librement les faits, respectivement d'ordonner les mesures d'instruction nécessaires, dans les cas qu'elle énumère. Elle n'exclut pas que le recourant soit préalablement mis en état de faire valoir ses droits de défense. Le recourant n'établit en tout cas pas le contraire conformément aux exigences de motivation de l'art. 90 al. 1 let. b OJ.
Le grief tiré d'une violation arbitraire des dispositions du droit cantonal de procédure invoquées par le recourant doit par conséquent être rejeté dans la mesure où il est recevable.
2.3 Comme la cour cantonale a admis une violation par les premiers juges du principe de l'accusation, la seule question qui se pose sous l'angle du droit d'être entendu garanti par l'art. 29 al. 2 Cst. est de savoir si, en réparant ce vice dans le cadre du recours dont elle était saisie, elle a violé cette garantie constitutionnelle, autrement dit si les conditions auxquelles une telle guérison peut être opérée (cf. supra, consid. 2.1) sont réalisées en l'espèce.
De jurisprudence constante, le droit d'être entendu garanti par la Constitution fédérale n'implique pas celui de s'exprimer oralement devant l'autorité appelée à statuer. Il faut, mais il suffit, que le justiciable ait pu le faire par écrit (<ref-ruling> consid. 9b p. 219; <ref-ruling> consid. 4c et les références citées). Or, en l'espèce, le recourant a eu la possibilité de se déterminer par écrit sur une violation par les premiers juges du principe de l'accusation et les conséquences à en tirer, puisqu'il a pu faire valoir ses arguments à ce sujet dans son recours cantonal. A cet égard, le recourant qui était assisté d'un avocat, ne pouvait ignorer la jurisprudence relative à la réparation en instance supérieure d'une violation du droit d'être entendu, ni, par conséquent, qu'il lui appartenait de faire valoir, dans son recours déjà, ses arguments quant à la réduction de la peine pouvant résulter de l'admission de son grief de violation du principe de l'accusation.
Estimant qu'elle pouvait réparer elle-même le vice invoqué par le recourant, la cour cantonale a rectifié l'état de fait du jugement de première instance dans le sens souhaité par le recourant, soit en constatant que ce dernier n'avait pas agi en qualité d'affilié à une bande formée pour se livrer au trafic illicite de stupéfiant. Il n'est à juste titre pas contesté que, dans le cas d'espèce, la suppression de cette circonstance aggravante n'entraînait pas de modification du verdict de culpabilité, puisque le cas devait de toute manière être qualifié de grave au sens de l'<ref-law> en raison de la quantité de drogue sur laquelle a porté le trafic du recourant (cf. <ref-ruling> consid. 2c p. 268), mais ne pouvait avoir d'incidence que sur la quotité de la peine. Or, s'agissant de la fixation de la peine, la cour cantonale, qui était par ailleurs saisie d'un moyen et de conclusions de réforme tendant à une réduction de celle-ci, jouissait d'une cognition libre et entière (cf. <ref-law>/VD), donc qui n'était pas moindre que celle des premiers juges.
Ainsi les conditions auxquelles la jurisprudence admet qu'une violation du droit d'être entendu puisse être réparée en instance de recours sont réalisées en l'espèce. Au reste, le vice de procédure allégué, qui, en l'espèce, ne pouvait avoir qu'une incidence mesurée sur la fixation de la peine, n'est pas d'une gravité telle qu'il doive être considéré comme une violation particulièrement grave des droits de partie du recourant, qui exclurait sa réparation en instance supérieure. Par conséquent, la réparation par la cour cantonale d'une violation par les premiers juges du principe de l'accusation ne viole pas le droit d'être entendu du recourant garanti par l'art. 29 al. 2 Cst.
Ainsi les conditions auxquelles la jurisprudence admet qu'une violation du droit d'être entendu puisse être réparée en instance de recours sont réalisées en l'espèce. Au reste, le vice de procédure allégué, qui, en l'espèce, ne pouvait avoir qu'une incidence mesurée sur la fixation de la peine, n'est pas d'une gravité telle qu'il doive être considéré comme une violation particulièrement grave des droits de partie du recourant, qui exclurait sa réparation en instance supérieure. Par conséquent, la réparation par la cour cantonale d'une violation par les premiers juges du principe de l'accusation ne viole pas le droit d'être entendu du recourant garanti par l'art. 29 al. 2 Cst.
3. Au vu de ce qui précède, le recours de droit public doit être rejeté dans la mesure où il est recevable.
II. Pourvoi en nullité
II. Pourvoi en nullité
4. Saisie d'un pourvoi en nullité, la Cour de cassation contrôle l'application du droit fédéral (art. 269 PPF) sur la base d'un état de fait définitivement arrêté par l'autorité cantonale (cf. art. 277bis et 273 al. 1 let. b PPF). Le raisonnement juridique doit donc être mené sur la base des faits retenus dans la décision attaquée, qui lient la Cour de cassation et dont le recourant n'est pas recevable à s'écarter (<ref-ruling> consid. 1 p. 66/67; <ref-ruling> consid. 1 p. 55, 81 consid. 2a p. 83 et les arrêts cités).
4. Saisie d'un pourvoi en nullité, la Cour de cassation contrôle l'application du droit fédéral (art. 269 PPF) sur la base d'un état de fait définitivement arrêté par l'autorité cantonale (cf. art. 277bis et 273 al. 1 let. b PPF). Le raisonnement juridique doit donc être mené sur la base des faits retenus dans la décision attaquée, qui lient la Cour de cassation et dont le recourant n'est pas recevable à s'écarter (<ref-ruling> consid. 1 p. 66/67; <ref-ruling> consid. 1 p. 55, 81 consid. 2a p. 83 et les arrêts cités).
5. Le recourant conteste qu'il puisse être considéré comme coauteur de l'infraction réprimée par l'<ref-law> en raison de sa participation à la réception de 7 kg d'héroïne et de 700 g de cocaïne importés du Kosovo (cf. supra, let. B.a al. 3), soutenant que, dans ce cas, il a agi comme complice de l'infraction sanctionnée par l'<ref-law>.
5.1 Il est vrai que la motivation cantonale quant à la qualification juridique du comportement reproché au recourant dans le cas litigieux est peu claire. De prime abord, elle peut en effet donner à penser qu'il lui est reproché d'avoir, en qualité de coauteur, participé à la mise dans le commerce, au sens de l'<ref-law>, des 7 kg d'héroïne et des 700 g de cocaïne importés du Kosovo. En réalité, comme cela résulte du raisonnement des juges cantonaux, ce dont il est fait grief au recourant c'est d'avoir, avec ses comparses, pris des mesures en vue de la mise dans le commerce de cette drogue, donc d'avoir enfreint l'<ref-law> aux fins d'une mise dans le commerce, au sens de l'<ref-law>, de la drogue en question.
En revanche et contrairement à ce que laisse entendre le recourant, il ressort clairement de l'arrêt attaqué que, dans le cas litigieux, il n'a pas été retenu qu'il aurait agi en bande au sens de l'<ref-law>. Son argumentation tendant à réfuter que cette circonstance aggravante puisse être retenue est donc vaine.
La seule question est donc de savoir si, comme le retient en définitive l'arrêt attaqué, le recourant a pris des mesures en vue de la mise dans le commerce de la drogue litigieuse ou si, comme il le soutient, on peut tout au plus lui reprocher une complicité à l'importation de celle-ci.
5.2 L'arrêt attaqué constate que le recourant et le dénommé F._ ont gagné Zürich dans une voiture conduite par G._. Sur place, ils ont démonté la roue de secours du camion dans laquelle était cachée la drogue qui avait été importée et l'ont chargée dans la voiture. Après quoi, G._ a rejoint avec la voiture un garage se trouvant à Bösingen, dans le canton de Fribourg, où le recourant et F._ se sont de leur côté rendus en train. A cet endroit, ils ont déchiré le pneu et pris possession de la drogue. En échange de sa collaboration à cette opération, le recourant a reçu 5'000 francs et a pu prélever 22 g de cocaïne sur la livraison.
Il en résulte que le comportement du recourant a consisté à collaborer, non pas à l'importation, soit à l'introduction en Suisse, des 7 kg d'héroïne et 700 g de cocaïne en question, mais à la réception et à l'acheminement en Suisse de cette drogue en vue de son écoulement sur le marché. Ce faisant, le recourant a accompli personnellement l'un des actes que la loi érige en délit indépendant, soit celui réprimé par l'<ref-law>, qui consiste à prendre des mesures en vue de la réalisation de l'un des actes mentionnés aux alinéas 1 à 5 de l'<ref-law>, en l'occurrence une mise dans le commerce au sens de l'alinéa 4. Il a donc agi comme auteur de l'infraction en cause (<ref-ruling> consid. 2c p. 400; <ref-ruling> consid. 2b p. 73), non pas comme simple complice de l'infraction d'importation, qui n'a pas été retenue à sa charge et qui était d'ailleurs achevée lorsqu'il est intervenu, puisque la drogue avait déjà été introduite en Suisse.
Le grief est par conséquent infondé.
Le grief est par conséquent infondé.
6. Le recourant soutient que l'arrêt attaqué viole l'<ref-law> dans la mesure où il retient que, pour avoir acquis un véhicule de marque Chrysler Voyager et s'être rendu avec celui-ci dans les Balkans en vue d'importer en Suisse entre 15 et 20 kg d'héroïne (cf. supra, let. B.a al. 4), le recourant a enfreint cette disposition en relation avec l'<ref-law>, c'est-à-dire pris des mesures en vue de l'importation de cette drogue.
6.1 L'infraction consistant à prendre des mesures en vue du trafic de stupéfiants (<ref-law>) vise la tentative ainsi que les actes préparatoires spécifiques relatifs aux comportements délictueux définis aux alinéas 1 à 5 de l'<ref-law> (<ref-ruling> consid. 2a p. 200; <ref-ruling> consid. 1a p. 310). De simples intentions ou projets de commettre l'une des infractions réprimées par les alinéas 1 à 5 de l'<ref-law> ne suffisent pas à sa réalisation. Il faut que l'auteur ait manifesté par un comportement déterminé sa décision de la commettre (ATF <ref-ruling> consid. 1a p. 310/311). En outre, l'existence d'une mesure prise à des fins illicites ne doit pas déjà être admise lorsque le comportement de l'auteur pourrait tout aussi bien servir un but licite, mais seulement lorsque sa destination est clairement reconnaissable d'après son apparence extérieure (ATF <ref-ruling> consid 1d p. 312/313).
6.2 L'arrêt attaqué, qui seul peut faire l'objet du pourvoi (art. 268 ch. 1 PPF), constate que le recourant a été pressenti par Y._ et son état-major, qui désiraient importer entre 15 et 20 kg d'héroïne des Balkans en Suisse, pour faire la mule moyennant une commission de 2'500 à 3'000 francs par kilo, que le recourant a alors acquis un véhicule Chrysler Voyager et s'est rendu avec celui-ci dans les Balkans entre la fin décembre 2001 et le 14 janvier 2002 et qu'il a admis pendant l'instruction que l'achat du véhicule avait pour but d'importer de l'héroïne.
Au vu des faits ainsi retenus, l'arrêt attaqué ne viole pas le droit fédéral en tant qu'il retient que le recourant a pris des mesures, au sens de l'<ref-law>, en vue de l'importation de stupéfiants, au sens de l'<ref-law>. Le recourant, qui a acquis le véhicule et s'est rendu dans les Balkans avec celui-ci n'en est manifestement pas resté au stade des intentions ou projets. Il est au reste irrecevable à contester la constatation cantonale, qui relève du fait et lie donc la Cour de céans (cf. supra, consid. 4), selon laquelle c'est dans le but d'importer de la drogue qu'il a acquis le véhicule et s'est rendu avec celui-ci dans les Balkans. Dès lors, toute son argumentation visant à faire admettre que, ce but n'étant pas établi, les juges cantonaux auraient fait une interprétation extensive et insoutenable de l'<ref-law> en admettant que le seul fait d'avoir acquis le véhicule et de s'être rendu dans les Balkans avec celui-ci tombait sous le coup de cette disposition est irrecevable.
Fondé exclusivement sur une rediscussion des faits retenus, le grief est par conséquent irrecevable.
Fondé exclusivement sur une rediscussion des faits retenus, le grief est par conséquent irrecevable.
7. Le recourant se plaint d'une violation de l'<ref-law>, au motif que les juges cantonaux n'auraient pas suffisamment tenu compte de ses problèmes d'addiction à la drogue pour déterminer la diminution de sa responsabilité pénale.
7.1 Au cours de la procédure, le recourant a été soumis à une expertise psychiatrique, qui, tenant notamment compte du fait qu'il présentait alors depuis cinq à six ans une dépendance à la cocaïne, concluait à une légère diminution de sa responsabilité pénale. Estimant qu'ils n'avaient pas de raison de se distancier de cette expertise, les juges cantonaux en ont adopté les conclusions. En conséquence, ils ont retenu que la responsabilité du recourant au moment des faits était diminuée dans une mesure légère et ont réduit la peine en proportion. Le grief du recourant revient dès lors à reprocher aux juges cantonaux de ne pas s'être écartés de l'expertise.
7.2 Selon la jurisprudence, le juge apprécie en principe librement une expertise. Il ne peut toutefois s'en écarter sans motifs valables et sérieux. Il est notamment admis qu'il le fasse, lorsque, dans son rapport, l'expert s'est contredit, lorsqu'il s'est écarté dans un rapport complémentaire de l'avis exprimé dans un premier rapport, lorsqu'une nouvelle expertise ordonnée aboutit à des conclusions différentes ou encore lorsqu'une expertise est fondée sur des pièces ou sur des témoignages dont la valeur probante ou le contenu sont appréciés différemment par le juge. Il faut donc que des circonstances bien établies viennent ébranler sérieusement la crédibilité de l'expertise pour que le juge puisse s'en écarter et il doit alors motiver sa décision sur ce point (<ref-ruling> consid. 5 p. 8; <ref-ruling> consid. 7b p. 226; <ref-ruling> consid. 3a p. 130).
7.3 En l'espèce, aucune des circonstances dont la jurisprudence précitée admet qu'elles puissent justifier de s'écarter d'une expertise n'est établie ni d'ailleurs alléguée par le recourant.
Ce dernier n'en reproche pas moins aux juges cantonaux de s'en être tenus aux conclusions de l'expertise, au motif qu'il existerait une jurisprudence cantonale, selon laquelle la responsabilité pénale d'une personne toxico-dépendante est en principe considérée comme moyennement diminuée et que la cour cantonale s'en serait écartée sans explication. La cour cantonale nie toutefois l'existence d'une telle jurisprudence, en précisant qu'elle ne résulte nullement de l'arrêt cantonal dont le recourant se prévalait devant elle. Or, le recourant se borne à réaffirmer qu'une telle jurisprudence existerait, sans aucunement l'établir, notamment sans citer une quelconque décision cantonale à l'appui. Force est donc de constater que le pourvoi, sur ce point, repose sur une pure allégation, qui n'est en rien démontrée. Partant, il est irrecevable.
Au demeurant, à supposer qu'il existerait une jurisprudence cantonale admettant par principe que la responsabilité pénale d'une personne toxico-dépendante doit être considérée comme moyennement diminuée, sa conformité au droit fédéral serait plus que douteuse.
Au demeurant, à supposer qu'il existerait une jurisprudence cantonale admettant par principe que la responsabilité pénale d'une personne toxico-dépendante doit être considérée comme moyennement diminuée, sa conformité au droit fédéral serait plus que douteuse.
8. Le recourant critique la fixation de la peine qui lui a été infligée. Il reproche à la cour cantonale d'avoir nié que les premiers juges n'avaient nullement tenu compte de sa situation personnelle et de ses mobiles, du trouble qu'il présente à dire d'expert et de son addiction à la drogue ainsi que de son bon comportement durant l'enquête et en détention. Il se plaint également de ce que les premiers juges aient retenu qu'il s'était lié à un grand trafiquant, Y._, et avait occupé une place non négligeable dans la hiérarchie des trafiquants, alors que ce fait ne serait établi par aucune pièce du dossier.
8.1 Pour fixer la peine, le juge dispose d'un large pouvoir d'appréciation. Un pourvoi en nullité portant sur la quotité de la peine ne peut donc être admis que si la sanction a été fixée en dehors du cadre légal, si elle est fondée sur des critères étrangers à l'<ref-law>, si les éléments d'appréciation prévus par cette disposition n'ont pas été pris en compte ou enfin si la peine apparaît exagérément sévère ou clémente au point que l'on doive parler d'un abus du pouvoir d'appréciation (<ref-ruling> consid. 6.1 p. 20 s. et les arrêts cités).
Les éléments pertinents pour la fixation de la peine ont été exposés de manière détaillée dans les <ref-ruling> consid. 1 et 116 IV 288 consid. 2a et rappelés récemment dans l'<ref-ruling> consid. 6.1, auxquels on peut donc se référer.
8.2 Autant que le recourant se plaint de l'omission de prendre en considération les divers éléments qu'il cite, son grief est dépourvu de tout fondement. Comme le relève l'arrêt attaqué, les premiers juges ont dûment tenu compte, au stade de la fixation de la peine, de tous les éléments invoqués par le recourant. Cela résulte clairement des pages 22 et 23 du jugement de première instance.
Quant à l'importance de son rôle dans le trafic, tel que retenu par les premiers juges, il ne résulte pas de l'arrêt attaqué que le recourant s'en soit plaint dans son recours cantonal. Sur ce point, il ne critique d'ailleurs aucun passage de l'arrêt attaqué, qui peut seul faire l'objet du pourvoi (art. 268 ch. 1 PPF), mais s'en prend directement au jugement de première instance. Au demeurant, dans la mesure où il prétend que l'importance de son rôle dans le trafic ne résulterait d'aucune pièce du dossier, donc ne serait pas établie, il se livre à une critique de l'appréciation des preuves, irrecevable dans un pourvoi en nullité (<ref-ruling> consid. 2a p. 83; <ref-ruling> consid. 1a p. 186; <ref-ruling> consid. 2b p. 317).
Pour le surplus, le recourant ne prétend pas ou du moins plus en instance fédérale que la peine qui lui a été infligée serait, de par sa quotité, excessive et on ne le voit du reste pas. La peine d'espèce a été fixée dans le cadre légal et, au vu des faits retenus et des éléments pertinents à prendre en considération, on ne saurait dire qu'elle serait à ce point sévère que les juges cantonaux doivent se voir reprocher un abus de leur pouvoir d'appréciation.
Le grief de violation de l'<ref-law> doit dès lors être rejeté dans la mesure où il est recevable.
Le grief de violation de l'<ref-law> doit dès lors être rejeté dans la mesure où il est recevable.
9. Le recourant conteste le prononcé de son expulsion. Faisant valoir qu'il est arrivé à l'âge de 20 ans en Suisse, où il a obtenu un permis B, qu'il n'a plus aucun lien avec son pays d'origine et que son épouse, dont il a eu deux enfants, est d'origine portugaise, il soutient que la mesure contestée est par trop sévère au vu de ses graves conséquences sur la cellule familiale.
9.1 Bien qu'elle soit de manière prépondérante une mesure servant à la protection de la sécurité publique, l'expulsion est aussi une peine accessoire réprimant une infraction. Elle doit donc être fixée en tenant compte non seulement du but de sécurité publique qu'elle remplit mais aussi des critères qui régissent la fixation d'une peine, soit d'après la culpabilité du délinquant, eu égard aux mobiles, aux antécédents et à la situation personnelle de celui-ci. Le juge dispose à cet égard d'un large pouvoir d'appréciation, de sorte que la Cour de cassation n'intervient que s'il s'est fondé sur des critères non pertinents ou s'il a abusé de son pouvoir d'appréciation en prenant une décision exagérément sévère ou clémente (<ref-ruling> consid. 1 p. 108 s.).
La jurisprudence exige de ne prononcer qu'avec retenue l'expulsion d'un étranger qui vit depuis longtemps en Suisse, y est bien intégré et n'a plus guère de relation avec l'étranger et qu'une expulsion pourrait donc frapper lourdement (<ref-ruling> consid. 1 p. 109; <ref-ruling> consid. 1b p. 223). Elle ne l'exclut cependant pas, même dans le cas d'un étranger au bénéfice d'un permis d'établissement, soit d'un permis C (<ref-ruling> consid. 1 p. 109; <ref-ruling>).
9.2 Selon les constatations de fait cantonales, le recourant est arrivé en Suisse en 1987, soit à l'âge de 20 ans. Il a d'abord travaillé au noir comme nettoyeur d'installations de cuisine. Par la suite, il a obtenu un permis B et a travaillé, de 1996 à 1998, dans des cabarets. Dans l'intervalle, en 1991, il a épousé une ressortissante portugaise. Le couple a eu deux enfants, nés respectivement en mars 1999 et en été 2002.
Le recourant figure au casier judiciaire à raison de six inscriptions, échelonnées de 1996 à 2000. Les quatre premières sanctions répriment des contraventions à la LCR et un vol. La cinquième, prononcée le 12 novembre 1998, réprime une tentative d'infraction à la LStup, pour laquelle il s'est vu infliger une peine de 30 jours d'emprisonnement. La sixième, prononcée le 16 novembre 2000, lui a valu une peine de même durée pour conduite en état d'ébriété et contraventions à la LCR.
Dès 1991, le recourant s'est adonné à l'alcool et au jeu, puis, à partir de 1996, à la cocaïne. Les actes de trafic qui lui sont reprochés se sont étalés de l'été 1998 au 23 avril 2002, date de son arrestation, et portent sur de très importantes quantités de drogue dure, étant en outre observé que son rôle dans le trafic a été considérable. Il doit en outre répondre de diverses autres infractions, notamment contre le patrimoine, ainsi que de violation grave des règles de la circulation routière.
9.3 Au vu des faits ainsi retenus, il a été admis à juste titre que le recourant a porté une lourde atteinte à l'ordre public suisse, en répandant et contribuant à répandre dans le pays des quantités de produits stupéfiants qualifiées non sans raison d'"effarantes".
Certes, le recourant est depuis 1987, soit depuis quelque 17 ans, en Suisse, où il bénéficie d'un permis B et a fondé une famille. Dès 1991, il a toutefois commencé à s'adonner à l'alcool et au jeu, puis à la cocaïne, et, dès 1996, à la délinquance. Depuis 1998, il ne semble plus avoir travaillé. C'est au demeurant à cette époque qu'ont commencé les actes de trafic qui lui sont reprochés et ceux-ci se sont poursuivis jusqu'à son arrestation, en avril 2000, ce qui montre que la naissance de son premier enfant, en mars 1999, ne l'a pas dissuadé de commettre de graves infractions. Sous cet angle, il est malvenu de se prévaloir aujourd'hui de sa situation familiale, puisque, pendant longtemps, il ne s'est aucunement soucié des conséquences possibles de son comportement sur celle-ci. Par ailleurs et comme l'a relevé la cour cantonale, l'épouse du recourant n'est pas de nationalité suisse et rien n'indique qu'elle ne pourrait pas retourner avec ses enfants, encore en bas âge, dans son pays, le Portugal, et que le recourant ne pourrait les y suivre, étant en outre observé que rien ne laisse non plus entrevoir que le recourant ne pourrait rentrer, avec sa famille, dans son pays, la Macédoine. Au demeurant, on ignore quelles sont en l'état les intentions de l'épouse du recourant ni même si elle a maintenu des relations avec ce dernier, qui ne sont du moins pas invoquées.
Compte tenu de l'ensemble de ce qui précède, on ne saurait dire que les juges cantonaux, qui se sont fondés sur des critères pertinents, auraient abusé de leur pouvoir d'appréciation en prononçant l'expulsion du recourant.
Quant à la durée de cette mesure, elle n'est pas remise en cause par le recourant, qui ne conteste au demeurant pas ou du moins plus en instance fédérale le refus de l'assortir du sursis. Il n'y a dès lors pas lieu d'examiner ces points, étant rappelé que les conclusions d'un pourvoi doivent être interprétées à la lumière de leur motivation, qui circonscrit les points litigieux devant le Tribunal fédéral (<ref-ruling> consid. 1 p. 66; <ref-ruling> consid. 1; <ref-ruling> consid. 1).
Quant à la durée de cette mesure, elle n'est pas remise en cause par le recourant, qui ne conteste au demeurant pas ou du moins plus en instance fédérale le refus de l'assortir du sursis. Il n'y a dès lors pas lieu d'examiner ces points, étant rappelé que les conclusions d'un pourvoi doivent être interprétées à la lumière de leur motivation, qui circonscrit les points litigieux devant le Tribunal fédéral (<ref-ruling> consid. 1 p. 66; <ref-ruling> consid. 1; <ref-ruling> consid. 1).
10. Le pourvoi doit ainsi être rejeté dans la mesure où il est recevable.
III. Frais et dépens
III. Frais et dépens
11. Comme le recours de droit public et le pourvoi étaient d'emblée dépourvus de chances de succès, l'assistance judiciaire ne peut être accordée (art. 152 al. 1 OJ) et le recourant, qui succombe, supportera les frais (art. 156 al. 1 OJ; art. 278 al. 1 PPF), dont le montant sera fixé en tenant compte de sa situation financière.

Par ces motifs, le Tribunal fédéral prononce:
Par ces motifs, le Tribunal fédéral prononce:
1. Le recours de droit public est rejeté dans la mesure où il est recevable.
1. Le recours de droit public est rejeté dans la mesure où il est recevable.
2. Le pourvoi en nullité est rejeté dans la mesure où il est recevable.
2. Le pourvoi en nullité est rejeté dans la mesure où il est recevable.
3. La requête d'assistance judiciaire est rejetée.
3. La requête d'assistance judiciaire est rejetée.
4. Un émolument judiciaire global de 1'600 francs est mis à la charge du recourant.
4. Un émolument judiciaire global de 1'600 francs est mis à la charge du recourant.
5. Le présent arrêt est communiqué en copie à la mandataire du recourant, au Ministère public du canton de Vaud et au Tribunal cantonal du canton de Vaud, Cour de cassation pénale.
Lausanne, le 22 novembre 2004
Au nom de la Cour de cassation pénale
du Tribunal fédéral suisse
Le président: La greffière: