[Tutorial] Wat is OnPlayerRequestClass en hoe maak je het.
#1

Tutorial

Wat is een OnPlayerRequestClass en hoe maak ik het?

Hallo,

Vandaag ga ik jullie uitleggen wat OnPlayerRequestClass is, wat voor functie het heeft en hoe je het maakt.

Wat is OnPlayerRequestClass?

OnPlayerRequestClass laat de jou gekozen skins zien die je heb gemaakt met AddPlayerClass, ik vertel jullie straks hoe je dat maakt. Zoals ik al zei laat OnPlayerRequestClass jou gekozen skins zien.

Hier heb je een voorbeeld:



Zoals jullie op de foto kunnen zien, zien jullie dat er een bouwvakker staat te dansen op het podium in de club. Laten we als voorbeeld deze na-maken. Ik zal jullie stapje voor stapje uitleggen hoe dat moet.

De coordinaten opslaan.

De coordinaten opslaan, zoals het kopje al beschrijft gaan we de coordinaten opslaan. Wat voor coordinaten gaan we opslaan? We gaan de coordinaten opslaan van de plek waar de speler moet staan (dus in dit geval op het podium in de club). We gaan de coordinaten opslaan waar de camera naartoe hoort te kijken. En we gaan de coordinaten opslaan waar de speler naar toe hoort te kijken.

Zoals jullie zien ziet de OnPlayerRequestClass er zo uit:

Quote:

public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}

Dat gaan we meteen veranderen. Dit is namelijk de basis OnPlayerRequestClass waar je dus geen karakters ziet. Omdat alles dezelfde richting in kijkt.

Ik ga jullie even een snelle korte uitleg geven wat voor functie deze 3 dingen hebben, voordat we gaan beginnen.

SetPlayerPos = De Plaats waar de speler komt te staan (dus in dit geval op het podium in de club)
SetPlayerCameraPos = De Plaats waar de camera komt te staan (dus is dit geval tegen over het podium zodat hij de speler aan kan kijken.
SetPlayerCameraLookAt = De plaats waar de speler naar kijkt.

Oke nu jullie dit weten gaan we de coordinaten opslaan.

Aller eerst gaan we ingame, loop naar de club. En sta vervolgens op het podium, we gaan nu de coordinaten voor de SetPlayerPos opslaan, en we slaan ze ook meteen op voor de SetPlayerCameraLookAt SetPlayerPos en SetPlayerCameraLookAt hebben namelijk de zelfde coordinaten nodig.
Alright hier heb je een screenshot dat ik de coordinaten van de SetPlayerPos heb gesaved:



Als je je class selection het liefste in een gebouw heb zoals in dit geval, moet je /interior ingame typen. Waarom moet je dat doen? Simpel je zit in een interior en een interior heb een ander ID dan dat je gewoon buiten bent. Als je buiten bent is je Interior ID standaard 0. Maar als je in de club bent is je Interior ID 17.
Hier heb je een screenshot:



Dus dan gebruiken we dit: SetPlayerInterior om aan te geven welk interior dit is. Dit komt er zo uit te zien:
SetPlayerInterior(playerid,17); het getal 17 is het Interior ID van de club.
Dit
Quote:

SetPlayerInterior(playerid,17);

zetten we boven SetPlayerPos

Nu we die coordinaten en het Interior ID hebben, moeten we niet vergeten of de speler nou naar het noorden of naar het oosten kijkt.
In dit geval kijkt de speler naar het zuiden.

Hoe laten we de speler naar het zuiden kijken?

Dat doen we als volgt, als we weten waar de speler naar kijkt gebruiken we: SetPlayerFacingAngle
Dus in dit geval komt het er zo uit zien: SetPlayerFacingAngle( playerid, 180 );
De FacingAngles kun je >HIER< vinden.

De SetPlayerFacingAngle zet je gewoon tussen de SetPlayerPos en de SetPlayerCameraLookAt.

En klaar is kees, nu gaan we de coordinaten opslaan waar de camera komt te staan.

De CameraPos komt tegen over de SetPlayerPos te staan, hier heb je een screenshot:



Oke nu we dat gedaan hebben gaan we de coordinaten pakken die we zojuist gesaved hebben. De coordinaten zijn opgeslagen in Savedpositions.
Nou open Savedpositions, en dan zien jullie als het goed is dit:



Deze 2 hebben we namelijk nodig.

Het vervangen van de coordinaten

We gaan nu de coordinaten laten vervangen van deze 3:

Quote:

SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);

Hoe gaan we dat doen? Nou we pakken de eerste 6 coordinaten van de opgeslagen positie.
Dus deze:



Waarom slaan we het getal 105 over? Nou omdat het getal 105 de skin is die ik zojuist had. Als je de posities saved met CJ's skin dus skin ID 0, dan was het getal niet 105, maar 0.
Dus altijd het eerste getal overslaan.

Alright, nu hebben we deze 6 coordinaten gekopiлrd
Quote:

487.5279,-5.9335,1002.0781

.
De SetPlayerPos en SetPlayerCameraLookAt coordinaten worden vervangen door de zojuist opgeslagen en gekopierde coordinaten.

Dus dan komt er als volgt zo uit te zien:

Voor:
Quote:

SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);

Quote:

SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);

Na:
Quote:

SetPlayerPos(playerid, 487.5279,-5.9335,1002.0781);

Quote:

SetPlayerCameraLookAt(playerid, 487.5279,-5.9335,1002.0781);

Oke dat is gedaan nu gaan we de SetPlayerCameraPos coordinaten vervangen door de nieuwe coordinaten.
En we pakken weer de eerste 6 coordinaten. Weer het zelfde verhaal we slaan het getal 105 over dus het eerste getal, omdat dat het skin ID is.

Dus we kopiлren alleen deze:



Nu gaan we de oude coordinaten vervangen door de zojuist gekopierde coordinaten.

Voor:
Quote:

SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);

Na:
Quote:

SetPlayerCameraPos(playerid, 487.4542,-11.0282,1000.6797);

Nu we alles in het gehele hebben vervangen ziet de OnPlayerRequestClass er zo uit:

Quote:

public OnPlayerRequestClass(playerid, classid)
{
SetPlayerInterior(playerid,17);
SetPlayerPos(playerid, 487.5279,-5.9335,1002.0781);
SetPlayerFacingAngle(playerid, 180);
SetPlayerCameraPos(playerid, 487.4542,-11.0282,1000.6797);
SetPlayerCameraLookAt(playerid, 487.5279,-5.9335,1002.0781);
return 1;
}

Maar we zijn nog niet klaar...
We hebben nog geen skins toegevoegd.
Dus we gaan nu naar
Quote:

OnGameModeInit()

Wat kun je doen in OnGameModeInit?
Met OnGameModeInit, kun je je skins kiezen die in je OnPlayerRequestClass komen te staan.
Laten we even snel 3 skins toevoegen.
Stel jij wil graag CJ, Sweet, Ryder en Big Smoke in je OnPlayerRequestClass hebben. Dan doen we als volgt dit:

Quote:

public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
AddPlayerClass(269, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
AddPlayerClass(270, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
AddPlayerClass(271, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}

Waarom dit?
Nou AddPlayerClass maakt de skins, en zorgt dat ze ergens spawnen, en je kan zorgen dat ze eventuele wapens hebben.
Achter AddPlayerClass(
Zie je als het goed is: 0, 269, 270 en 271. Waarom heb ik dat gedaan? Nou we willen graag CJ, Big Smoke, Sweet en Ryder in ons OnPlayerRequestClass hebben.

0 = Het skin id van CJ
269 = Het skin id van Big Smoke
270 = Het skin id van Sweet
271 = Het skin id van Ryder

Het hoeft natuurlijk niet persй in die volgorde..

>HIER< vind je alle skin IDs

Nu we dit hebben allemaal hebben gedaan is jou OnPlayerRequestClass zo goed als af.
Maar je kan er nog veel meer mee je kan bijvoorbeeld nog texten toevoegen en animaties en nog vййl meer. Maar hoe je dat doet zal ik in m'n volgende tutorial uitleggen.

NOTE: Vergeet niet dit:
Quote:

SetPlayerInterior(playerid,0);

in
Quote:

public OnPlayerSpawn(playerid)

te zetten.

Ik hoop dat jullie hier iets van hebben opgestoken.


Veel succes!
Reply
#2

Goede en duidelijke tut, good work
Reply
#3

Quote:
Originally Posted by -Danny-
Посмотреть сообщение
Goede en duidelijke tut, good work
Thank you
Reply
#4

Ziet er inderdaad goed uit.
Reply
#5

Ziet er zelfs perfect uit!
Reply
#6

Netjes uitgelegd!!



Edit Ik lees net dat je niet meer actief bent. Dus deze reactie van me heeft ook weinig zin gehad
Reply
#7

nice, heb die van jou overgenomen.
alleen als je dan spawnt zit je in een gebouw..
als je dan /kill doet spawn je wel op de normale spawn plaats.
Reply
#8

Quote:
Originally Posted by swell
Посмотреть сообщение
nice, heb die van jou overgenomen.
alleen als je dan spawnt zit je in een gebouw..
als je dan /kill doet spawn je wel op de normale spawn plaats.
Dat lijkt me logisch. De plek is in een gebouw. Dit is alleen een class menu, dus waar jij je skins ziet die je gekozen heb. Dit is geen spawn zone. Als je dat zou willen zou je de coцrdinaten van die plek moeten op slaan.
Reply
#9

Ik heb het geprobeerd te maken, maar werkt niet. Iemand die alsnog kan helpen/download plaatsen hiervoor? Kan ook in PM.
Reply
#10

Ik heb ййn foutje weten te ontdekken. Zoals je ziet gebruik jij 3x dezelfde coцrdinaten. Dan kan de camera toch nooit
op het character schijnen?

pawn Код:
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
- WebGh0st
Reply
#11

Quote:
Originally Posted by WebGh0st
Посмотреть сообщение
Ik heb ййn foutje weten te ontdekken. Zoals je ziet gebruik jij 3x dezelfde coцrdinaten. Dan kan de camera toch nooit
op het character schijnen?

pawn Код:
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
- WebGh0st
Dat is een voorbeeld, om te laten zien wat het is, als je verder leest zie je dat ik in later in de tutorial uitleg hoe we er 1 zelf maken
Reply
#12

thanks voor het helpen
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)