GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Le poulain de gta le 17 Mars 2009, 19:33:51

Titre: Code de fin enplus
Posté par: Le poulain de gta le 17 Mars 2009, 19:33:51
Bonjour
voila j'ai une remarque

normalement sa fait cela a la fin

Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase

mais la je me retrouve avec un autre depui que j'ai mis


stock GetVehicleModelIDFromName(vehname[])
{
   new VehNames[212][] = {   // Vehicle Names - Betamaster
   {"Landstalker"},
   {"Bravura"},
   {"Buffalo"},
   {"Linerunner"},
   {"Perrenial"},
   {"Sentinel"},
   {"Dumper"},
   {"Firetruck"},
   {"Trashmaster"},
   {"Stretch"},
   {"Manana"},
   {"Infernus"},
   {"Voodoo"},
   {"Pony"},
   {"Mule"},
   {"Cheetah"},
   {"Ambulance"},
   {"Leviathan"},
   {"Moonbeam"},
   {"Esperanto"},
   {"Taxi"},
   {"Washington"},
   {"Bobcat"},
   {"Mr Whoopee"},
   {"BF Injection"},
   {"Hunter"},
   {"Premier"},
   {"Enforcer"},
   {"Securicar"},
   {"Banshee"},
   {"Predator"},
   {"Bus"},
   {"Rhino"},
   {"Barracks"},
   {"Hotknife"},
   {"Trailer 1"}, //artict1
   {"Previon"},
   {"Coach"},
   {"Cabbie"},
   {"Stallion"},
   {"Rumpo"},
   {"RC Bandit"},
   {"Romero"},
   {"Packer"},
   {"Monster"},
   {"Admiral"},
   {"Squalo"},
   {"Seasparrow"},
   {"Pizzaboy"},
   {"Tram"},
   {"Trailer 2"}, //artict2
   {"Turismo"},
   {"Speeder"},
   {"Reefer"},
   {"Tropic"},
   {"Flatbed"},
   {"Yankee"},
   {"Caddy"},
   {"Solair"},
   {"Berkley's RC Van"},
   {"Skimmer"},
   {"PCJ-600"},
   {"Faggio"},
   {"Freeway"},
   {"RC Baron"},
   {"RC Raider"},
   {"Glendale"},
   {"Oceanic"},
   {"Sanchez"},
   {"Sparrow"},
   {"Patriot"},
   {"Quad"},
   {"Coastguard"},
   {"Dinghy"},
   {"Hermes"},
   {"Sabre"},
   {"Rustler"},
   {"ZR-350"},
   {"Walton"},
   {"Regina"},
   {"Comet"},
   {"BMX"},
   {"Burrito"},
   {"Camper"},
   {"Marquis"},
   {"Baggage"},
   {"Dozer"},
   {"Maverick"},
   {"News Chopper"},
   {"Rancher"},
   {"FBI Rancher"},
   {"Virgo"},
   {"Greenwood"},
   {"Jetmax"},
   {"Hotring"},
   {"Sandking"},
   {"Blista Compact"},
   {"Police Maverick"},
   {"Boxville"},
   {"Benson"},
   {"Mesa"},
   {"RC Goblin"},
   {"Hotring Racer A"}, //hotrina
   {"Hotring Racer B"}, //hotrinb
   {"Bloodring Banger"},
   {"Rancher"},
   {"Super GT"},
   {"Elegant"},
   {"Journey"},
   {"Bike"},
   {"Mountain Bike"},
   {"Beagle"},
   {"Cropdust"},
   {"Stunt"},
   {"Tanker"}, //petro
   {"Roadtrain"},
   {"Nebula"},
   {"Majestic"},
   {"Buccaneer"},
   {"Shamal"},
   {"Hydra"},
   {"FCR-900"},
   {"NRG-500"},
   {"HPV1000"},
   {"Cement Truck"},
   {"Tow Truck"},
   {"Fortune"},
   {"Cadrona"},
   {"FBI Truck"},
   {"Willard"},
   {"Forklift"},
   {"Tractor"},
   {"Combine"},
   {"Feltzer"},
   {"Remington"},
   {"Slamvan"},
   {"Blade"},
   {"Freight"},
   {"Streak"},
   {"Vortex"},
   {"Vincent"},
   {"Bullet"},
   {"Clover"},
   {"Sadler"},
   {"Firetruck LA"}, //firela
   {"Hustler"},
   {"Intruder"},
   {"Primo"},
   {"Cargobob"},
   {"Tampa"},
   {"Sunrise"},
   {"Merit"},
   {"Utility"},
   {"Nevada"},
   {"Yosemite"},
   {"Windsor"},
   {"Monster A"}, //monstera
   {"Monster B"}, //monsterb
   {"Uranus"},
   {"Jester"},
   {"Sultan"},
   {"Stratum"},
   {"Elegy"},
   {"Raindance"},
   {"RC Tiger"},
   {"Flash"},
   {"Tahoma"},
   {"Savanna"},
   {"Bandito"},
   {"Freight Flat"}, //freiflat
   {"Streak Carriage"}, //streakc
   {"Kart"},
   {"Mower"},
   {"Duneride"},
   {"Sweeper"},
   {"Broadway"},
   {"Tornado"},
   {"AT-400"},
   {"DFT-30"},
   {"Huntley"},
   {"Stafford"},
   {"BF-400"},
   {"Newsvan"},
   {"Tug"},
   {"Trailer 3"}, //petrotr
   {"Emperor"},
   {"Wayfarer"},
   {"Euros"},
   {"Hotdog"},
   {"Club"},
   {"Freight Carriage"}, //freibox
   {"Trailer 3"}, //artict3
   {"Andromada"},
   {"Dodo"},
   {"RC Cam"},
   {"Launch"},
   {"Police Car (LSPD)"},
   {"Police Car (SFPD)"},
   {"Police Car (LVPD)"},
   {"Police Ranger"},
   {"Picador"},
   {"S.W.A.T. Van"},
   {"Alpha"},
   {"Phoenix"},
   {"Glendale"},
   {"Sadler"},
   {"Luggage Trailer A"}, //bagboxa
   {"Luggage Trailer B"}, //bagboxb
   {"Stair Trailer"}, //tugstair
   {"Boxville"},
   {"Farm Plow"}, //farmtr1
   {"Utility Trailer"} //utiltr1
   };
   for(new i = 0; i < 211; i++)
   {
      if (strfind(VehNames, vehname, true) != -1) return i + 400;
   }
   return -1;
}

et depuis j'ai sa, se n'est pas le problem mai c'est que je ne sais pas pourquoi il est la enplus

Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase

Header size:           3764 bytes
Code size:            97708 bytes
Data size:            85448 bytes
Stack/heap size:      16384 bytes; estimated max. usage=5010 cells (20040 bytes)
Total requirements:  203304 bytes


quelle script fait sa ?? (rajouter

Header size:           3764 bytes
Code size:            97708 bytes
Data size:            85448 bytes
Stack/heap size:      16384 bytes; estimated max. usage=5010 cells (20040 bytes)
Total requirements:  203304 bytes

en plus)

merci d'avance
Titre: Re : Code de fin enplus
Posté par: Azz45 le 17 Mars 2009, 22:33:34
C'est rien de grave, sa me le fait tout le temps :)
Titre: Re : Code de fin enplus
Posté par: Syg le 17 Mars 2009, 23:14:07
Ca veut dire que tu as dépassé la mémoire par défaut allouée par le script (ce qui est normal vu la taille du tableau que tu as ajouté).
Ce problème peut conduire à des débordement mémoire et donc à un comportement imprévisible du script ou à des plantages du serveur.

Pour ne plus avoir ce message, il ajouter la directive #pragma dynamic <taille> en début de script (avant les #includes).
Pour connaître la valeur de <taille>, il faut regarder le nombre de cellules nécessaires dans le message d'erreur du compilo :
estimated max. usage=5010 cells
et mettre un valeur supérieure à ce nombre.
NB : Ce nombre est une estimation, dans certains cas il peut allègrement être dépassé, notamment lorsqu'on utilise des fonctions récursives.

Dans ton cas :
#pragma dynamic 6000devrait suffire.

++
SYg
Titre: Re : Code de fin enplus
Posté par: Le poulain de gta le 18 Mars 2009, 16:43:07
merci a tous
Titre: Re : Code de fin enplus
Posté par: S!m le 19 Mars 2009, 00:19:48
Salut,

Syg, y a t'il une autre technique, en gardant la même taille de la variable, permettant d'éliminer ce problème (sauf en faire une variable globale et le #pragma dynamic)

++Sim++
Titre: Re : Code de fin enplus
Posté par: MrFredo le 19 Mars 2009, 06:57:46
Perso j'evite se genre de grand tableau dans une fonction je prefere les passer en global a tout les coup quand on met un tableau de cette taille dans une fonction il faut un pragma dynamic
Titre: Re : Code de fin enplus
Posté par: Nikko™ le 19 Mars 2009, 08:58:43
Bonjour,

Le fait d'agrandir "artificiellement" le script, ca ne peut pas engendrer des crash ou autre ?

++
nikko
Titre: Re : Code de fin enplus
Posté par: Azz45 le 19 Mars 2009, 11:35:38
Citer
Ce problème peut conduire à des débordement mémoire et donc à un comportement imprévisible du script ou à des plantages du serveur.


Nikko   :-*
Titre: Re : Code de fin enplus
Posté par: » Lukubi™ le 19 Mars 2009, 18:57:00
Nikko,  je pense pas que cela engendre des crash, a voir...

PS : GG le free post azz !  :boulz


++
MrT
Titre: Re : Re : Code de fin enplus
Posté par: Nikko™ le 19 Mars 2009, 21:55:27
Citer
Ce problème peut conduire à des débordement mémoire et donc à un comportement imprévisible du script ou à des plantages du serveur.


Nikko   :-*

T'avais pas du tout compris ma question ...  :closedeyes

++
nikko
Titre: Re : Code de fin enplus
Posté par: Azz45 le 19 Mars 2009, 22:49:13
Salut,,

J'ai pas compris xDD

Désolé
Titre: Re : Code de fin enplus
Posté par: Syg le 20 Mars 2009, 12:37:49
Non, je ne connais pas d'autre solution que le #pragma dynamic ou la déclaration en global.

Sinon, le #pragma dynamic ne conduira pas à des plantages. Au pire, si tu mets une valeur énorme, l'interpréteur ne pourra pas allouer la mémoire nécessaire.
Tu auras cette erreur :
Script[gamemodes/test.amx]: Run time error 16: "Out of memory"

++
Syg
Titre: Re : Code de fin enplus
Posté par: Nikko™ le 20 Mars 2009, 12:58:47
Merci  :)

++
nikko