Jump to content

Hulp bij het bouwen van een script.


Recommended Posts

Geplaatst:

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. :*D

Geplaatst: (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: door grasmaaier
Geplaatst:

Triple post :7, 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 :puh: . 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 :puh: .

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[]);
	}
}
}

Geplaatst: (bewerkt)

Flame, _O_

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. :klap::klap:

Flame,

Het werkt nu.

Nogmaals heel erg bedankt ik heb van deze code erg veel geleerd.

Bewerkt: door grasmaaier
Geplaatst:

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 :klap:

Geplaatst:

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]

  • 1 maand later...
Geplaatst:

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. :*D

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. :cya:

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.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...