sean5874 Geplaatst: 16 februari 2010 Rapport Geplaatst: 16 februari 2010 Hallo, Binnekort wil ik mijn server online gaan zetten, maar er is alleen een probleempje. De laatste tijd lagt mijn server nogal op mijn localhost, en ik heb gehoord dat sommige dingen dit kunnen veroorzaken, zoals dini, en dat MAX_PLAYERS geheugen verbruikt ofzo. Niemand wil natuurlijk op een laggy gamemode spelen. Wat kan ik eraan doen om me scripts snel te houden? Greetz sean5874 Reageren
Crusher!! Geplaatst: 16 februari 2010 Rapport Geplaatst: 16 februari 2010 (bewerkt) #include <a_samp> #undef MAX_PLAYERS #define MAX_PLAYERS 50 #include <Dini> // als je meer includes hebt hieronder max players is nu 50, kan je verandere Bewerkt: 16 februari 2010 door Crusher!! Reageren
GTAguillaume Geplaatst: 16 februari 2010 Rapport Geplaatst: 16 februari 2010 (bewerkt) Maar dan werkt je scriptje maar voor de eerst helft 50 spelers. En je kan evengoed het zo laten als die 50 het aantal maximum spelers in je server. Bewerkt: 16 februari 2010 door GTAguillaume Reageren
Remi-X Geplaatst: 17 februari 2010 Rapport Geplaatst: 17 februari 2010 #include <a_samp> #undef MAX_PLAYERS #define MAX_PLAYERS 50 #include <Dini> // als je meer includes hebt hieronder max players is nu 50, kan je verandere Dat is een goede truc om loops korter te maken, en array's kleiner te maken. Ook ik raad dit aan. Daarnaast: Heb je veel IfElse scripts? Vervang deze door de switch functie. Heb je veel array's met een grootte van 256? Veel te groot. Bijna alles in SA:MP heeft toch niet groter dan 128 nodig. Gebruik je vel malen de functie als GetPlayerName, of GetMaxPlayers? Vervang deze door variablen, zodat je deze slechts een enkele keer hoeft op te halen. Over al dit zal ik vanmiddag wel even een topic maken, aangezien ik zeker weet dat jij niet de enige bent met een wat trage server. En dan kan je het topic altijd makkelijk terug vinden, en helpt het gelijk nog eens andere mensen ook. Als je dan eventjes hebt, begin ik er zometeen aan Reageren
GTAguillaume Geplaatst: 17 februari 2010 Rapport Geplaatst: 17 februari 2010 (bewerkt) Meestal word lagg veroorzaakt door OnPlayerUpdate, ze hebben er zelf een sticky op het SA:MP forum voor gemaakt. (Klik) Oftewel heb je te traag internet/CPU of te weinig RAM. Wat ook nog zou kunnen is dat er veel spelers op je server zaten en waardoor zo het probleem ontstond, probeer dan eens server.cfg aan te passen. En heb je continue lagg, of is het enkel tijdens het runnen van een scriptje? Bewerkt: 17 februari 2010 door GTAguillaume Reageren
sean5874 Geplaatst: 17 februari 2010 Auteur Rapport Geplaatst: 17 februari 2010 (bewerkt) #include <a_samp> #undef MAX_PLAYERS #define MAX_PLAYERS 50 #include <Dini> // als je meer includes hebt hieronder max players is nu 50, kan je verandere Maar dan werkt je scriptje maar voor de eerst helft 50 spelers. En je kan evengoed het zo laten als die 50 het aantal maximum spelers in je server. Mijn server staat bepland voor ongeveer 25 spelers, ik denk niet MAX_PLAYERS een probleem gaat worden. Bedankt allebei voor het reageren! Dat is een goede truc om loops korter te maken, en array's kleiner te maken. Ook ik raad dit aan. Daarnaast:Heb je veel IfElse scripts? Vervang deze door de switch functie. Heb je veel array's met een grootte van 256? Veel te groot. Bijna alles in SA:MP heeft toch niet groter dan 128 nodig. Gebruik je vel malen de functie als GetPlayerName, of GetMaxPlayers? Vervang deze door variablen, zodat je deze slechts een enkele keer hoeft op te halen. Over al dit zal ik vanmiddag wel even een topic maken, aangezien ik zeker weet dat jij niet de enige bent met een wat trage server. En dan kan je het topic altijd makkelijk terug vinden, en helpt het gelijk nog eens andere mensen ook. Als je dan eventjes hebt, begin ik er zometeen aan Ik vrees helaas dat ik mijn geval alledrie de vragen met ja beantwoord kunnen worden. Momenteel ben ik mijn arrays aan het verbeteren. Ik snap alleen nog niet zo veel van de switch-functie. Bedankt voor je reactie! EDIT: Meestal word lagg veroorzaakt door OnPlayerUpdate, ze hebben er zelf een sticky op het SA:MP forum voor gemaakt. (Klik)Oftewel heb je te traag internet/CPU of te weinig RAM. Wat ook nog zou kunnen is dat er veel spelers op je server zaten en waardoor zo het probleem ontstond, probeer dan eens server.cfg aan te passen. En heb je continue lagg, of is het enkel tijdens het runnen van een scriptje? Momenteel staat mijn server nog niet online. De lag komt idd alleen voor tijdens het runnen van mijn eigen scripts, soms lijken sommige functies er ook door weg te vallen, zoals commands. Als ik daarna nog een keer connect, werkt alles weer uitstekend. Bewerkt: 17 februari 2010 door sean5874 Reageren
Big Boss Geplaatst: 17 februari 2010 Rapport Geplaatst: 17 februari 2010 Ik snap alleen nog niet zo veel van de switch-functie. Ik snapte die ook niet toen ik pas begon met scripten, maar het is in feite heel simpel. Je hebt een variabele die een hele boel waarden kan aannemen. Met de switch functie wordt die waarde maar 1x geëvalueerd i.p.v. elke keer apart. Stel: Als een speler in een bepaald voertuig zit moet er een special actie uitgevoerd worden. public OnPlayerStateChange(playerid, newstate, oldstate) { if(newsate == PLAYER_STATE_DRIVER) { new m = GetVehicleModel(GetPlayerVehicleID(playerid)); switch(m) // kan je vergelijken met: if(m == ...) { case 596..599: { SendClientMessage(playerid, COLOR_WHITE, "Je ben in een politie auto gestapt!"); } // 596,597,598,599 case 407, 544: { SendClientMessage(playerid, COLOR_WHITE, "Je ben in een brandweerwagen gestapt!"); } case 416: { SendClientMessage(playerid, COLOR_WHITE, "Je ben in een ambulance gestapt!"); } default: { SendClientMessage(playerid, COLOR_WHITE, "Je ben in een onbekende auto gestapt!"); } } } return 1; } Reageren
Megadreams Geplaatst: 17 februari 2010 Rapport Geplaatst: 17 februari 2010 Big Boss maakte je een typfout in newstate ik heb dat even gewijzigd en wat meer uitleg (ajoewel jij die niet zozeer meer nodig zal hebben sean(...), maar andere misschien wel ) public OnPlayerStateChange(playerid, newstate, oldstate) { if(newstate == PLAYER_STATE_DRIVER) { new m = GetVehicleModel(GetPlayerVehicleID(playerid)); switch(m) // kan je vergelijken met: if(m == ...) { case 596..599: { SendClientMessage(playerid, COLOR_WHITE, "Je ben in een politie auto gestapt!"); } // 596,597,598,599 case 407, 544: { SendClientMessage(playerid, COLOR_WHITE, "Je ben in een brandweerwagen gestapt!"); } // als m dus het voertuigmodel 407 of 544 is case 416: { SendClientMessage(playerid, COLOR_WHITE, "Je ben in een ambulance gestapt!"); } // als m dus het voertuigmodel 416 is default: { SendClientMessage(playerid, COLOR_WHITE, "Je ben in een onbekende auto gestapt!"); } // dit is het standaard dus als geen van bovenstaande cases wordt uitgevoerd. } } return 1; } Reageren
sean5874 Geplaatst: 20 februari 2010 Auteur Rapport Geplaatst: 20 februari 2010 Even nog een vraagje over de switch functie. Ik heb een wapenmenuutje, maar bij elke case moet worden gecheckt of de player een bepaald aantal geld heeft, en als dat negatief is moet de player een berichtje krijgen dat hij niet genoeg geld heeft. Normaal lukt dit wel, maar ik ken de switch functie nog maar net. Wie kan me helpen? Reageren
Big Boss Geplaatst: 20 februari 2010 Rapport Geplaatst: 20 februari 2010 switch(row) { case 0: { if(GetPlayerMoney(playerid) < 500) return SendClientMessage(playerid, COLOR_RED, "Je hebt niet genoeg geld!"); GivePlayerWeapon(playerid, ....); } case 1: { if(GetPlayerMoney(playerid) < 600) return SendClientMessage(playerid, COLOR_RED, "Je hebt niet genoeg geld!"); GivePlayerWeapon(playerid, ....); } // etc, etc, etc } Reageren
Recommended Posts
Een reactie plaatsen
Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.