$NeoSyp$ Geplaatst: 12 oktober 2007 Rapport Geplaatst: 12 oktober 2007 Hallo beste lezer, ik heb een heel erg groot probleem. Nu heb ik laatst mijn eigen stad gecreeerd met Sa-Mp. Hierin rijdt dus een metro. Je kunt er ook missies doen etc. De eerst missie luidt: Haal pakje daar op en breng daarheen. Qua missie niet moeilijk. In deze missie maak je kennis met de metro, die je vaak zult moeten gebruiken (auto's zijn namelijk erg duur in mijn stad). Hierbij moet je allereerst naar het station toe lopen. Daarvoor verschijnt een marker als je deze missie start. Ok, daar ga ik heen. Alles goed en wel, ik loop naar beneden, om de metro te nemen. Dan, als je dichtbij bent (dit ziet Sa-Mp met behulp van een om de fractie van een seconde getimede update) krijg je een checkpoint te zien, voor de metro. Je krijgt ook een stationsnummer(rauw) aangewezen, dat het nummer van het station is. Dit heet SubwayN. Bij station 1 staat er dus zodra je dichtbij komt, in de code: SubwayN = 1; (bij station 1). Vervolgens, als je deze maker instapt, checkt hij je N nummer (in dit geval 1) en zet hij daarbij een Y nummer. Je bent nu dus een SubwayY = 1; . Nu kun je met een command kiezen naar welk station je gaat. Als je weer wegloopt, krijg je weer N en Y 0. Maar er zit ergens een fout, die ik maar niet kan vinden (en verscheidene mensen die ik heb geraadpleegd ook niet). Namelijk, als je dichtbij komt, zie je de checkpoint wel, maar raar genoeg krijg je geen N nummer aangewezen, terwijl dit wel in de code staat. Als je dan dus erin loopt, en een command invoert, krijg je de melding dat je niet op een station bent. Het ligt in ieder geval niet aan de Y benoeming, dat heb ik al gechecked met een /GetN functie. Daarbij blijft hij 0 (dus hij komt niet toe aan Y benoeming). Echter, als ik wat rommel met de returns in deze public UPDATE () , dan kan ik het soort van fixen. Als ik er nu heenga, doet alles het perfect. Alles verschijnt, ik krijg keurig netjes een N aangewezen, de commands werken. Dit had ik allereerst. Tot ik tot de pijnlijke ontdekking kwam, dat alleen id 0 deze checkpoints te zien zou krijgen. Dus ik zou als enige het kunnen gebruiken. Dat heeft uiteraard geen zin. Dus zou iemand mij kunnen vertellen wat de fout is? GRaag het eerst testen voordat je antwoordt, want ik heb al zoveel mogelijkheden getest, dat het waarschijnlijk is dat hij het niet perfect zal (al ziet het er goed uit). Ik zou het erg op prijs stellen! Het deel van de code waar het om gaat: public UPDATE () { new Float:data[3]; for(new i=0;i<MAX_PLAYERS;i++){ GetPlayerPos(i,data[0],data[1],data[2]); if(data[2] <0){ SetPlayerHealth(i,0); DisablePlayerCheckpoint(i); } else if(data[0] <3023.0281 && data[0] >3018.5688 && data[1] <3404.1743 && data[1] >3397.0088 && data[2] >3 && data[2] <4){ SetPlayerCheckpoint(i,3020.7849,3399.2693,3.4045,1); SubwayN[i] = 1; } else if(data[0] <3005.5222 && data[0] >3000.6565 && data[1] <3665.5686 && data[1] >3660.7305 && data[2] >3 && data[2] <4){ SetPlayerCheckpoint(i,3002.9680,3663.1748,3.5582,1); SubwayN[i] = 2; } else if(data[0] <3008.4739 && data[0] >2997.9734 && data[1] <3857.9041 && data[1] >3856.1501 && data[2] >3 && data[2] <4){ SetPlayerCheckpoint(i,3001.9846,3857.1279,3.5412,1); SubwayN[i] = 3; } else if(data[0] <2904.3804 && data[0] >2901.2075 && data[1] <3662.5034 && data[1] >3651.8130 && data[2] >3 && data[2] <4){ SetPlayerCheckpoint(i,2902.7861,3656.1492,3.4411,1); SubwayN[i] = 4; } else if(MissionA[i] == 1 && MissionN[i] == 1 && MissionP[i] == 1){ SetPlayerCheckpoint(i,3039.9910,3404.1995,17.4217,1); } else DisablePlayerCheckpoint(i); SubwayN[i] = 0; SubwayY[i] = 0; } return 1; } Misschien wil je mijn hele script inzien, zodat je het zelf kunt testen (doe dit aub). Dat kan door hem hier te downloaden. Ik heb deze hulp erg nodig, en ook erg snel nodig! Dus reageer aub voor morgenavond, want mijn hele gamemode rust op dit soort functies! Als dit niet wordt opgelost, is de hele gemakte stad (waar ik ongeveer 10 uur aan heb gewerkt) nutteloos. As Melhoras, NeoSyp Reageren
Simbad Geplaatst: 13 oktober 2007 Rapport Geplaatst: 13 oktober 2007 (bewerkt) Hallo, ik heb je script getest in me eentje maar als ik de checkpoint inkwam kreeg ik geen tekst en ik kon ook niet teleporteren naar andere stations (/sjesus bv) dan stond er "you are not at a station" maar daar gaat het niet om, het gaat er toch om dat playerid's hoger dan 0 dit hele systeem niet te zien krijgen? checkpoints enzo? Bewerkt: 13 oktober 2007 door Simbad Reageren
Simbad Geplaatst: 13 oktober 2007 Rapport Geplaatst: 13 oktober 2007 ik heb dit probleem zelf ook gehad met een for loop die blijkbaar alleen bij playerid 0 werkt, khad als oplossing een dubbele for loop, ik weet niet of het een bug is van samp of gewoon een scriptfout, maar in iedergeval was een dubbele for bij mij de oplossing. dus vervang: for(new i=0;i<MAX_PLAYERS;i++){ is voor for(new playerid=0;playerid<MAX_PLAYERS;playerid++){ for(new i=0;i<MAX_PLAYERS;i++){ playerid word in het script nooit gebruikt en zit er voor jan lul bij, misschien een domme rare oplossing maar ik weet zo even geen andere. Reageren
Flame^ Geplaatst: 14 oktober 2007 Rapport Geplaatst: 14 oktober 2007 als je die code gebruikt loopt je script dus 200 keer 200 keer, lijkt me nou niet bepaald nodig.. Reageren
Simbad Geplaatst: 14 oktober 2007 Rapport Geplaatst: 14 oktober 2007 Mja, weet jij een betere oplossing dan? Reageren
$NeoSyp$ Geplaatst: 14 oktober 2007 Auteur Rapport Geplaatst: 14 oktober 2007 (bewerkt) Ok, ik ben er ongeveer achtergekomen waar het aan ligt. Het ligt aan het for(new i=0;i<MAX_PLAYERS;i++){ gedeelte. Wat je voor i= invult, is het id waar hetg voor zal werken. Als ik nu bijvoorbeeld 1 invoer, doet hij het niet langer voor mij, maar voor degene die id 1 is. Weet iemand hoe ik ervoor kan zorgen dat daar iets als id ... tm id ... staat? Een voorbeeld zou ik erg op prijs stellen. PS: HEt maximaal aantal spelers is momenteel 25, dus voer aub in 0 tm 25. As Melhoras, NeoSyp Bewerkt: 14 oktober 2007 door $NeoSyp$ Reageren
Simbad Geplaatst: 14 oktober 2007 Rapport Geplaatst: 14 oktober 2007 een for loop is gemaakt om alle spelers bij langs te gaan zoals jij hem daar hebt, hij begint indd bij 0, en als je dat veranderd naar 1 dan begint bij bij 1.. maar hij hoort alle 200 spelers bij langs te gaan (200 spelers is max van samp) dus ik weet zo ook niet het probleem, terwijl ik het zelf ook is had, maar toch opgelost heb.. heeel raar. Reageren
$NeoSyp$ Geplaatst: 14 oktober 2007 Auteur Rapport Geplaatst: 14 oktober 2007 Dan ligt het misschien aan de constructie van de rest? DAt hij hem geen kans geeft te loopen? Kan iemand die er echt veel verstand van heeft er eventjes aub goed naar kijken? Dank jullie wel... As Melhoras, NeoSyp Reageren
Simbad Geplaatst: 14 oktober 2007 Rapport Geplaatst: 14 oktober 2007 (bewerkt) Ik zou haast zeggen dat het aan sa-mp ligt, maar dat zal natuurljk wel weer niet zo zijn dus.. maare, voeg me anders toe op msn dan testen we het wel even en klooien we wat, misschien lukt het wel Edit: << email weggehaalt >> Bewerkt: 15 oktober 2007 door Simbad Reageren
$NeoSyp$ Geplaatst: 15 oktober 2007 Auteur Rapport Geplaatst: 15 oktober 2007 Ok, ik zal je wel toevoegen. Mocht iemand nog denken van "He, dat moet zo joh!" dan hoor ik het wel, he? (PS @ Simbad: niet toegestaan email/msn adressen te vermelden in topics) As Melhoras, NeoSyp 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.