dedeath Geplaatst: 17 maart 2008 Rapport Geplaatst: 17 maart 2008 heey mensen. hek5 =CreateObject(975,639.209,-2392.466,30.540,0.0,0.0,0.0); hek6 =CreateObject(975,630.401,-2392.464,30.540,0.0,0.0,-180.000); hoe zorg ik ervoor dat als ik er voor ga hij automatich open gaat?? Reageren
.Timothy Geplaatst: 17 maart 2008 Rapport Geplaatst: 17 maart 2008 (bewerkt) Ik weet niet of het werkt, maar je zou eens deze functie kunnen gebruiken met een 'if'. Ik bedoel dan iets van dit: if (IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy)) { MoveObject(objectid, Float:X, Float:Y, Float:Z, Float:Speed); } Voorwaarde is wel dat je beschikt over de Useful Functions include die je hier kunt downloaden. P.S. Ik weet het niet zeker, maar het zou dus kúnnen werken Bewerkt: 17 maart 2008 door VWO-er Reageren
dedeath Geplaatst: 17 maart 2008 Auteur Rapport Geplaatst: 17 maart 2008 Ik weet niet of het werkt, maar je zou eens deze functie kunnen gebruiken met een 'if'. Ik bedoel dan iets van dit: if (IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy)) { MoveObject(objectid, Float:X, Float:Y, Float:Z, Float:Speed); } Voorwaarde is wel dat je beschikt over de Useful Functions include die je hier kunt downloaden. P.S. Ik weet het niet zeker, maar het zou dus kúnnen werken Sorry ik snap hem niet ik weet niet wat ik presies moet doen Reageren
Azer Geplaatst: 17 maart 2008 Rapport Geplaatst: 17 maart 2008 P.S. Ik weet het niet zeker, maar het zou dus kúnnen werken In het begin van SA:MP 0.2 ooit zoiets gemaakt, zou gewoon nog moeten werken: forward GateCheck(); new gate; public OnGameModeInit() { gate = CreateObject(971, 213.78, 1875.31, 12.33, 0.00, 0.00, 0.00); SetTimer("GateCheck", 1000, 1); return 1; } public GateCheck() { for(new i=0; i<MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { if(IsPlayerInArea(i, 210, 218, 1872, 1880)){ MoveObject(gate, 222.78, 1875.31, 12.33, 3); } else { MoveObject(gate, 213.78, 1875.31, 12.33, 3); } } } } IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); if (x > minx && x < maxx && y > miny && y < maxy) return 1; return 0; } Reageren
Sandra Geplaatst: 17 maart 2008 Rapport Geplaatst: 17 maart 2008 In het begin van SA:MP 0.2 ooit zoiets gemaakt, zou gewoon nog moeten werken: //code Nee, dat werkt niet: - new gate moet niet bij OnGameModeInit staan, maar bovenaan het script. - De 'return false' in de GateCheck-functie kan weg, die heeft geen nut en geeft een warning. >>> Door Azer: Meh inderdaad, bedankt inmiddels aangepast <<< Reageren
dedeath Geplaatst: 18 maart 2008 Auteur Rapport Geplaatst: 18 maart 2008 P.S. Ik weet het niet zeker, maar het zou dus kúnnen werken In het begin van SA:MP 0.2 ooit zoiets gemaakt, zou gewoon nog moeten werken: forward GateCheck(); public OnGameModeInit() { new gate; gate = CreateObject(971, 213.78, 1875.31, 12.33, 0.00, 0.00, 0.00); SetTimer("GateCheck", 1000, 1); return 1; } // ignore the warning public GateCheck() { for(new i=0; i<MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { if(IsPlayerInArea(i, 210, 218, 1872, 1880)){ MoveObject(gate, 222.78, 1875.31, 12.33, 3); return false; } else { MoveObject(gate, 213.78, 1875.31, 12.33, 3); } } } } IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); if (x > minx && x < maxx && y > miny && y < maxy) return 1; return 0; } if(IsPlayerInArea(i, 210, 218, 1872, 1880)){ wat houd dit in kan ik dit ook gebruiken?? Reageren
.Timothy Geplaatst: 18 maart 2008 Rapport Geplaatst: 18 maart 2008 (bewerkt) Ja, je kan dat ook gebruiken. Voorwaarde is wel dat je de volgende code ergens in je script neerzet (handigste is bovenaan, boven de OnGameModeInit-callback, doe ik in ieder geval). IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); if (x > minx && x < maxx && y > miny && y < maxy) return 1; return 0; } En ik geloof dat Azer de 'forward'-regel van de IsPlayerInArea-functie ook is vergeten. Hierbij: Deze code zet je helemaal boven aan je script, onder de define-regels. forward IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy); Bewerkt: 18 maart 2008 door VWO-er Reageren
dedeath Geplaatst: 18 maart 2008 Auteur Rapport Geplaatst: 18 maart 2008 Ja, je kan dat ook gebruiken. Voorwaarde is wel dat je de volgende code ergens in je script neerzet (handigste is bovenaan, boven de OnGameModeInit-callback, doe ik in ieder geval). IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); if (x > minx && x < maxx && y > miny && y < maxy) return 1; return 0; } En ik geloof dat Azer de 'forward'-regel van de IsPlayerInArea-functie ook is vergeten. Hierbij: Deze code zet je helemaal boven aan je script, onder de define-regels. forward IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy); if(IsPlayerInArea(i, 210, 218, 1872, 1880)){ maar ik bedoel moet ik er geen andere coord in doen ?? Reageren
.Timothy Geplaatst: 18 maart 2008 Rapport Geplaatst: 18 maart 2008 Tuurlijk, je moet jouw coördinaten erin zetten. Anders zal er op de plek van Azer jouw poort (die bij wijze van spreken aan de andere kant van de staat San Andreas staat) opengaan/dichtgaan. Je moet die dus natuurlijk wel veranderen. Reageren
dedeath Geplaatst: 18 maart 2008 Auteur Rapport Geplaatst: 18 maart 2008 Tuurlijk, je moet jouw coördinaten erin zetten. Anders zal er op de plek van Azer jouw poort (die bij wijze van spreken aan de andere kant van de staat San Andreas staat) opengaan/dichtgaan. Je moet die dus natuurlijk wel veranderen. maar ik bedoel dit if(IsPlayerInArea(i, 210, 218, 1872, 1880 moet ik die coords ook veranderen want volgens mij is dat geen coord Reageren
.Timothy Geplaatst: 18 maart 2008 Rapport Geplaatst: 18 maart 2008 Ik denk dat jij bedoelt dat er geen decimalen achter staan. Jij wil er denk ik iets als dit hebben: if(IsPlayerInArea(i, 210.31, 218.341, 1872.52, 1880.87)) Die decimalen (hierboven gemarkeerd in een vetgedrukt lettertype) hoeven er niet per sé achter te staan. Het kunnen net zo goed hele getallen zijn. Die decimalen gebruiken we als we de locatie preciezer willen aangeven, denk aan het object precies op een muur zetten. Die decimalen hóeven er niet bij, maar mógen er wel bij. Het zijn dus wel coördinaten, alleen lijken ze wat anders. Als dit nog niet is wat je bedoelt, leg 't dan beter uit Reageren
dedeath Geplaatst: 18 maart 2008 Auteur Rapport Geplaatst: 18 maart 2008 Ik denk dat jij bedoelt dat er geen decimalen achter staan. Jij wil er denk ik iets als dit hebben:if(IsPlayerInArea(i, 210.31, 218.341, 1872.52, 1880.87)) Die decimalen (hierboven gemarkeerd in een vetgedrukt lettertype) hoeven er niet per sé achter te staan. Het kunnen net zo goed hele getallen zijn. Die decimalen gebruiken we als we de locatie preciezer willen aangeven, denk aan het object precies op een muur zetten. Die decimalen hóeven er niet bij, maar mógen er wel bij. Het zijn dus wel coördinaten, alleen lijken ze wat anders. Als dit nog niet is wat je bedoelt, leg 't dan beter uit dus als ik dat ie automatish open gaat moet ik een coord hebben die er net voor staat?? Reageren
.Timothy Geplaatst: 18 maart 2008 Rapport Geplaatst: 18 maart 2008 (bewerkt) Hoeft niet. Met de IsPlayerInArea-functie geef je een gebied op. Ik maak even een voorbeeld: Let niet op mijn briljante Paint-kunsten, zolang je begrijpt wat ik bedoel Even een korte uitleg: De rode stip is de xmin. De groene stip is de xmax. Ook tussen deze coördinaten gaat de poort open. De roze stip is de ymin. De oranje stip is de ymax. Ook tussen deze coördinaten gaat de poort open. Ook tussen de xmin en ymin gaat de poort open, en tussen de de xmax en ymax ook. Eigenlijk in dat hele gebied wat op elke mogelijke coördinaat, wat tussen de coördinaten die je zelf hebt ingegeven, ligt, gaat de poort open. Kortom, in dat hele gebied gaat de poort open. Je moet dus in tegenstelling tot andere commando's als AddStaticVehicle 4 coördinaten invoeren. Niet één, wat ik uit jouw zin op maak. Je hoeft dus ook niet op precies, maar dan ook precies hetzelfde coördinaat te staan. Edit: Rechthoeken kunnen dus blijkbaar alleen... Bewerkt: 19 maart 2008 door VWO-er Reageren
Azer Geplaatst: 18 maart 2008 Rapport Geplaatst: 18 maart 2008 En ik geloof dat Azer de 'forward'-regel van de IsPlayerInArea-functie ook is vergeten. Hierbij: Deze code zet je helemaal boven aan je script, onder de define-regels. forward IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy); Is ook niet verplicht (compiler geeft alleen een waarschuwing voor public functions). Reageren
Sandra Geplaatst: 18 maart 2008 Rapport Geplaatst: 18 maart 2008 @VWO-er: IsPlayerInArea is alleen voor rechthoeken, dus allemaal hoeken van 90 graden. 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.