grasmaaier Geplaatst: 10 augustus 2006 Rapport Geplaatst: 10 augustus 2006 Allen, Wie zou me op weg kunnen helpen om een script te bouwen waar het mogelijk is om te kiezen voor een autodief en of een politieagent en waar het dan bij mogelijk is om als politie de autodief te arresteren en naar de gevangenis te sturen waar de autodief dan 1 minuut blijft vastzitten of zijn eigen kan uitkopen ?? Dus bijna net zo'n server die al online staat van crazybob zijn cops and robbers maar dan minder uitgebreid. Ik ben een newbie in deze wereld maar kan een beetje programeren dus dat is wel makkelijk. Maar heb wel een begin nodig. Reageren
grasmaaier Geplaatst: 11 augustus 2006 Auteur Rapport Geplaatst: 11 augustus 2006 (bewerkt) Dan stel ik zelf maar de eerste vraag waar kan ik een script vinden die me op weg helpt als een Robber een auto steelt dat de politie daar een melding van krijgt en de robbber een andere kleur krijgt ?? Heb al gezocht op het sa-mp forum maar kom er niet uit op die server. Bewerkt: 11 augustus 2006 door grasmaaier Reageren
grasmaaier Geplaatst: 13 augustus 2006 Auteur Rapport Geplaatst: 13 augustus 2006 Niemand die kan helpen ?!?!?!?! Er zullen in Nederland toch ook wel coders bezig zijn ? Reageren
Flame^ Geplaatst: 14 augustus 2006 Rapport Geplaatst: 14 augustus 2006 Triple post , niet doen in het vervolg . Ik zal probere je te helpen, alhoewel ik zelf ook niet alles tot me beschikbaar heb =$ Allereerst moet je de functie 'OnPlayerStateChange' opzoeken, hiermee kan je nagaan wanneer een player van 'state' (= staat) verandert. Bijvoorbeeld wanneer een speler instapt . Dus in je script zoek je op public OnPlayerStateChange(playerid, newstate, oldstate) { return 1; } Dit zijn de verschillende states: PLAYER_STATE_NONE PLAYER_STATE_ONFOOT PLAYER_STATE_DRIVER PLAYER_STATE_PASSENGER PLAYER_STATE_EXIT_VEHICLE PLAYER_STATE_ENTER_VEHICLE_DRIVER PLAYER_STATE_ENTER_VEHICLE_PASSENGER PLAYER_STATE_WASTED PLAYER_STATE_SPAWNED Wij moeten de PLAYER_STATE_DRIVER gebruiken, aangezien de robber een auto steelt. Nu moeten wij een if-statement gaan gebruiken om te checken of de robber een auto ingaat. Ik ga er van uit dat je gTeam gebruikt om de teams te tracken. public OnPlayerStateChange(playerid, newstate, oldstate) { if(gTeam[playerid] == TEAM_ROBBERS && GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { // Om te kijken of het team 'Robbers' is en de state 'driver' is SetPlayerColor(playerid, color); //Zet de speler naar jouw kleur } return 1; } Zo, nu checkt het script dus die dingen, en zet het de speler naar een andere kleur . Nu het 'Stuur bericht naar politie' ding . Om te beginnen, er is geen voorgedefinieerde functie om messages naar teams te sturen, dus moet je een eigen functie maken, dmv te loopen door alle spelers en te kijken of hun team klopt etc . Dus mijn functie - niet getest, weet niet 100% of het werkt - is dit: public SendTeamMessage(teamid, color, const string[]) { new i; for(i = 0; i < MAX_PLAYERS; i++ ) { if(IsPlayerConnected(i) && gTeam[i] == gTeam[i]) { SendClientMessage(i, color, const string[]); } } } Plaats dit maar ergens in je script, maakt niet uit waar. Nu gaan we weer terug naar de OnPlayerStateChange, aangezien daar nog de naam etc moet worden gestuurt naar het politieteam. dus plaats je in de functie bovenaan: new playername[256]; new string[256]; // Deze is voor straks Dit is de variable waarin we de speler zijn naam gaan in bewaren. Om achter de naam te komen gebruiken we de GetPlayerName functie. GetPlayerName(playerid, playername, 256); Nu moeten we nog de tekst maken die wordt gestuurd naar het politie team. format(string, sizeof(string), "***ATTENTION ALL UNITS! %s has robbed a car!!", playername); Hiervoor gebruiken we dus die new string[256]; van eerder, en we gebruiken de variabele playername nu ook. Nu alleen nog het bericht versturen met mijn eerdere functie: SendTeamMessage(TEAM_POLICE, COLOR_RED, string); //Omdat string het bericht is Thats it . Alles bij elkaar: public OnPlayerStateChange(playerid, newstate, oldstate) { new string[256]; new playername[256]; if(gTeam[playerid] == TEAM_ROBBERS && GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { // Om te kijken of het team 'Robbers' is en de state 'driver' is SetPlayerColor(playerid, color); //Zet de speler naar jouw kleur format(string, sizeof(string), "***ATTENTION ALL UNITS! %s has robbed a car!!", playername); SendTeamMessage(TEAM_POLICE, COLOR_RED, string); } return 1; } public SendTeamMessage(teamid, color, const string[]) { new i; for(i = 0; i < MAX_PLAYERS; i++ ) { if(IsPlayerConnected(i) && gTeam[i] = gTeam[i]) { SendClientMessage(i, color, const string[]); } } } Reageren
grasmaaier Geplaatst: 20 augustus 2006 Auteur Rapport Geplaatst: 20 augustus 2006 (bewerkt) Flame, Ik ga hier is mee aan de gang, sorry voor mijn late reactie maar ik ben heel veel op het sa-mp forum bezig geweest. Computer crash gehad en nog meer van deze dingen waardoor ik geen tijd had om terug te keren naar dit forum. Mijn excuses hiervoor. Maar ik ben erweer en ik zal je melden of ik je script aan de gang krijg !!! Hoop van wel want ik was hier erg naar op zoek. Flame, Het werkt nu. Nogmaals heel erg bedankt ik heb van deze code erg veel geleerd. Bewerkt: 23 augustus 2006 door grasmaaier Reageren
grasmaaier Geplaatst: 26 augustus 2006 Auteur Rapport Geplaatst: 26 augustus 2006 ok weer wat verder nu zoek ik een script dat als een crimineel dood gaat hij in de gevangenis beland voor een bepaalde tijd en de politie gewoon terug komt in de game ? Hoe ? Coordinaten van de gevangenis heb ik maar kan de code niet vinden die er voor zorgt dat een crimineel naar de gevangenis gaat. Heb wel andere scripts gezien waar dit werkt maar deze had zoveel extra functies dat ik het niet voor mekaar krijg om alleen dit script eruit te krijgen. Alvast bedankt voor de reactie Reageren
Flame^ Geplaatst: 27 augustus 2006 Rapport Geplaatst: 27 augustus 2006 Ik raad je aan om even op de Officiele Documentatie van PAWN te bekijken op de SA-MP Wiki . Aangezien hier alleen maar basis kennis voor vereisd is, en ik niet alles ga voorkauwen. Maar om je een beetje te helpen: SetPlayerPos(playerid, &Float:x, &Float:Y, &Float:Z); SetPlayerInterior(playerid, interiorid); SetTimer(function, time, repeating); // Plus een variabele die checkt wanneer een speler gejailed is. new Jailed[MAX_PLAYERS]; bijv. Bekijk het goed en uiteindelijk moet je het kunnen oplossen, aangezien het meeste voor zich spreekt. [bTW: Stop met dubbelposten, dankje] Reageren
grasmaaier Geplaatst: 27 augustus 2006 Auteur Rapport Geplaatst: 27 augustus 2006 Flame, Bedankt voor deze geste, heb het werkend naardat jij me op de goede weg had gezet. Reageren
Timmie_NL Geplaatst: 16 oktober 2006 Rapport Geplaatst: 16 oktober 2006 Heeii allemaal. Ik ben pas begonnen met scripten. Maar ik weet niet goed hoe dat werkt en ik vind het eigenlijk leuk om te doen. Mijn vragen zijn : -Hoe activeer je een script. -Is het ook mogelijk om het in de gewone San Andreas game te spelen. -Hoe zet je een script in elkaar ? ( geef a.u.b. een paar voorbeelden ) Alvast bedankt. 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.