SaKing Geplaatst: 27 juli 2009 Rapport Geplaatst: 27 juli 2009 Hallo, Ik wil graag dat er op een bepaald punt in de server tol moet worden betaald, om verder te kunnen. Ik heb dit namelijk in Las Venturas Playground bij LV Airport gezien. Maar nu wil ik dat in mijn eigen server. Heeft iemand zo'n script, en misschien wat uitleg? Dan hoor ik dat graag.. Groetjes SaKing Reageren
Remi-X Geplaatst: 27 juli 2009 Rapport Geplaatst: 27 juli 2009 Zou met CheckPoints kunnen, of met AreaCheck. Kies maar welke je wilt hebben, dan geef ik daar wel een uitleg van: -CheckPoints: Er word een checkpoint voor de ingang van bijvoorbeeld Las Venturas Airport gezet, die eventueel onzichtbaar is. Zodra je deze betreed, word je gevraagd om een prijsje te betalen. -AreaCheck: Een heel gebied, zoals Las Venturas Airport word een uitgezonder gebied. Zodra je deze, maakt niet uit van welke kanten, betreed, word er om tol gevraagd. Dus ook als je met een helicopter over het hekje gaat, en dan probeert te landen. Your choice Reageren
SaKing Geplaatst: 27 juli 2009 Auteur Rapport Geplaatst: 27 juli 2009 Zou met CheckPoints kunnen, of met AreaCheck. Kies maar welke je wilt hebben, dan geef ik daar wel een uitleg van:-CheckPoints: Er word een checkpoint voor de ingang van bijvoorbeeld Las Venturas Airport gezet, die eventueel onzichtbaar is. Zodra je deze betreed, word je gevraagd om een prijsje te betalen. -AreaCheck: Een heel gebied, zoals Las Venturas Airport word een uitgezonder gebied. Zodra je deze, maakt niet uit van welke kanten, betreed, word er om tol gevraagd. Dus ook als je met een helicopter over het hekje gaat, en dan probeert te landen. Your choice Nou dan wil ik graag de Area Check. Zou het ook mogelijk zijn om het over heel San fierro te kunnen laten gaan? Zo ja, welke coordinaten moet ik dan hebben? Alvast bedankt, SaKing Reageren
Remi-X Geplaatst: 27 juli 2009 Rapport Geplaatst: 27 juli 2009 Areacheck, oke Plaats deze code onderaan je script: stock 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; } Die code controleert of jij in een opgegeven gebied komt. Nu moet je aan de goede coördinaten komen van het gebied. Dat kan ik 2 manieren: 1. Linksboven in je gebied /save gebruiken, en rechtsonder ook. Toch zal ik voor de volgende gaan, dat is zo makkelijk: 2. X-Treme's Visual Mapper: Maak snel een gebied met de goede coördinaten Hoe maak ik dan een gebied? IsPlayerInArea(playerid, Minimale X positie, Maximale X positie, Minimale Y positie, Maximale Y positie); Voorbeeld: if(IsPlayerInArea(playerid, 4532.5, 264.0, 5332.4, 566.0)) //Coördinaten verzin ik ter plekke { SendClientMessage(playerid, COLOR, "You entered a zone!"); } Nu willen we natuurlijk wel dat er regelmatig word gecontroleert of je al in een zone bent. Plaats dit bovenaan je script: new AreaCheckTimer; forward AreaCheck(); Ga nu naar OnGameModeInIt. Zet dit erin: AreaCheckTimer = SetTimer("AreaCheck", 500, true); Dit zorgt ervoor dat de callback AreaCheck om de 500 Milliseconden word doorlopen. Die callback gaan we nu maken. Hier maken we een nieuwe callback. Die callback kan je ergens onderaan je script plaatsen, maar het liefst boven je STOCK die we net hebben gemaakt. public Areacheck() { for(new i=0; i < MAX_PLAYERS; i++) // Alle playerid's doorlopen, de naam 'playerid' heet nu 'i' { if(IsPlayerInArea(i, 4532.5, 264.0, 5332.4, 566.0)) { //Doe wat je wilt als je de zone betreed } else if(IsPlayerInArea(i, 4566.5, 1345.3, 5464.0, 3567.0)) { //Doe weer wat je wilt, als je een andere zone betreed } else { //Doe wat je wilt als je alle andere zones betreed, of niet meer in een zone bent } } return 1; } Ik hoop dat dat duidelijk is, zoniet, zeg het maar Voor de zekerheid nog even de volle code: #include <a_samp> new AreaCheckTimer; forward AreaCheck(); OnGameModeInit() { AreaCheckTimer = SetTimer("AreaCheck", 500, true); return 1; } OnGameModeExit() { KillTimer(AreaCheckTimer); // Als de GameMode word afgesloten, de timer ook return 1; } public Areacheck() { for(new i=0; i < MAX_PLAYERS; i++) // Alle playerid's doorlopen, de naam 'playerid' heet nu 'i' { if(IsPlayerInArea(i, 4532.5, 264.0, 5332.4, 566.0)) { //Doe wat je wilt als je de zone betreed } else if(IsPlayerInArea(i, 4566.5, 1345.3, 5464.0, 3567.0)) { //Doe weer wat je wilt, als je een andere zone betreed } else { //Doe wat je wilt als je alle andere zones betreed, of niet meer in een zone bent } } return 1; } stock 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
SaKing Geplaatst: 27 juli 2009 Auteur Rapport Geplaatst: 27 juli 2009 Areacheck, oke Plaats deze code onderaan je script: stock 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; } Die code controleert of jij in een opgegeven gebied komt. Nu moet je aan de goede coördinaten komen van het gebied. Dat kan ik 2 manieren: 1. Linksboven in je gebied /save gebruiken, en rechtsonder ook. Toch zal ik voor de volgende gaan, dat is zo makkelijk: 2. X-Treme's Visual Mapper: Maak snel een gebied met de goede coördinaten Hoe maak ik dan een gebied? IsPlayerInArea(playerid, Minimale X positie, Maximale X positie, Minimale Y positie, Maximale Y positie); Voorbeeld: if(IsPlayerInArea(playerid, 4532.5, 264.0, 5332.4, 566.0)) //Coördinaten verzin ik ter plekke { SendClientMessage(playerid, COLOR, "You entered a zone!"); } Nu willen we natuurlijk wel dat er regelmatig word gecontroleert of je al in een zone bent. Plaats dit bovenaan je script: new AreaCheckTimer; forward AreaCheck(); Ga nu naar OnGameModeInIt. Zet dit erin: AreaCheckTimer = SetTimer("AreaCheck", 500, true); Dit zorgt ervoor dat de callback AreaCheck om de 500 Milliseconden word doorlopen. Die callback gaan we nu maken. Hier maken we een nieuwe callback. Die callback kan je ergens onderaan je script plaatsen, maar het liefst boven je STOCK die we net hebben gemaakt. public Areacheck() { for(new i=0; i < MAX_PLAYERS; i++) // Alle playerid's doorlopen, de naam 'playerid' heet nu 'i' { if(IsPlayerInArea(i, 4532.5, 264.0, 5332.4, 566.0)) { //Doe wat je wilt als je de zone betreed } else if(IsPlayerInArea(i, 4566.5, 1345.3, 5464.0, 3567.0)) { //Doe weer wat je wilt, als je een andere zone betreed } else { //Doe wat je wilt als je alle andere zones betreed, of niet meer in een zone bent } } return 1; } Ik hoop dat dat duidelijk is, zoniet, zeg het maar Voor de zekerheid nog even de volle code: #include <a_samp> new AreaCheckTimer; forward AreaCheck(); OnGameModeInit() { AreaCheckTimer = SetTimer("AreaCheck", 500, true); return 1; } OnGameModeExit() { KillTimer(AreaCheckTimer); // Als de GameMode word afgesloten, de timer ook return 1; } public Areacheck() { for(new i=0; i < MAX_PLAYERS; i++) // Alle playerid's doorlopen, de naam 'playerid' heet nu 'i' { if(IsPlayerInArea(i, 4532.5, 264.0, 5332.4, 566.0)) { //Doe wat je wilt als je de zone betreed } else if(IsPlayerInArea(i, 4566.5, 1345.3, 5464.0, 3567.0)) { //Doe weer wat je wilt, als je een andere zone betreed } else { //Doe wat je wilt als je alle andere zones betreed, of niet meer in een zone bent } } return 1; } stock 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; } Ok bedankt, ik ga het eens proberen!! SaKing 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.