Crusher!! Geplaatst: 22 juli 2009 Rapport Geplaatst: 22 juli 2009 (bewerkt) Tutorial SavePos, LoadPos, GetPos, MyPos Deze tutorial gaat over het maken van de commands, SavePos, LoadPos, GetPos, MyPos. zeer handig als je beginnende scripter bent en wilt gaan werken met Floats. mijn 1e post is makkelijk en mijn 2e post word het wat moeilijker!! We Beginnen met de command SavePos (Het opslaan van jouw Positie X,Y,Z) ========================================================================= ========================================================================= SavePos Het Saven van je Positie Om jouw positie te saven moet de server die onthouden. Om er voor te zorgen dat het niet steeds veranderd als iemand /SavePos doet plaatsen we [MAX_PLAYERS] achter de floats: new Float:PosX[MAX_PLAYERS]; new Float:PosY[MAX_PLAYERS]; new Float:PosZ[MAX_PLAYERS]; new Float:PosA[MAX_PLAYERS]; Het commando van SavePos is vrij makkelijk: if(strcmp(cmdtext, "/SavePos", true) == 0) { if(IsPlayerInAnyVehicle(playerid)) //Kijken of de speler in een voertuig (auto, boot, vliegtuig, ETC..) zit. { // Als speler in een voertuig zit. new Voertuig = GetPlayerVehicleID(playerid); GetVehiclePos(Voertuig, posx[playerid], posy[playerid], posz[playerid]); GetVehicleZAngle(Voertuig, zangle[playerid]); } else { // Als de speler NIET in een voertuig zit. (Lopend) GetPlayerPos(playerid, posx[playerid], posy[playerid], posz[playerid]); GetPlayerFacingAngle(playerid, zangle[playerid]); } return 1; } Het commande /SavePos. deze lijn kijkt of je in een voertuig zit, if(IsPlayerInAnyVehicle(playerid)) Zoja dan pakt de server de positie van het voertuig. om te saven. dat gaat zo GetVehiclePos(Voertuig, PosX[playerid], PosY[playerid], PosZ[playerid]); // [playerid], zorgt ervoor dat die positie alleen voor de speler is die /save heeft gedaan. GetVehicleZAngle(Voertuig, PosA[playerid]); // Hier Halen we Angle (naar welke kant het voertuig staat) op. als de speler niet in een voertuig zit. GetPlayerPos(playerid, posx[playerid], posy[playerid], posz[playerid]); // [playerid], zorgt ervoor dat die positie alleen voor de speler is die /save heeft gedaan. GetPlayerFacingAngle(playerid, zangle[playerid]); // Hier Halen we Angle op, (waar je heen kijkt), weer dat [playerid] dat ervoor zorgt dat het alleen voor de speler is die /save heeft gedaan. Dit is alles over de command /SavePos. [/size] ========================================================================= ========================================================================= LoadPos Je positie laden. We hebben net de command /SavePos gedaan dan gaan we nu verder met de command /LoadPos. Deze command is vrij simpel. if(strcmp(cmdtext, "/LoadPos", true) == 0) { if(IsPlayerInAnyVehicle(playerid)) { // als de speler in een voertuig zit. new Voertuig = GetPlayerVehicleID(playerid); SetVehiclePos(Voertuig, PosX[playerid], PosY[playerid], PosZ[playerid]); SetVehicleZAngle(VehicleID, PosA[playerid]); } else { // Als de speler NIET in een voertuig zit (Lopend) SetPlayerPos(Playerid, PosX[playerid], PosY[playerid], PosZ[playerid]); SetPlayerFacingAngle(playerid, PosA[playerid]); } return 1; } Hier heb ik niet veel over te vertellen, want ik heb dat al uitgelegd by /SavePos. alleen het enige verschil is GetVehiclePos(Voertuig, PosX[playerid], PosY[playerid], PosZ[playerid]); //SavePos SetVehiclePos(Voertuig, PosX[playerid], PosY[playerid], PosZ[playerid]); //LoadPos (deze zijn willekeurig uit de commands: /LoadPos, /SavePos) de letter "G" en "S" aan het begin ("Get"/"Set") Dit is alles over de command /LoadPos. Bewerkt: 12 september 2009 door Crusher!! Reageren
Crusher!! Geplaatst: 22 juli 2009 Auteur Rapport Geplaatst: 22 juli 2009 (bewerkt) GetPos De Positie van een speler bekijken. Dit is ook niet zo moeilijk, maar je moet wel met Multi-Param kunnen werken als je dat niet kan raad ik je aan deze tutorial te lezen: Multi-Param tutorial public OnPlayerCommandText(playerid, cmdtext[]) { new cmd[256], idx, tmp[256], Float:gpX, Float:gpY, Float:gpZ, Float:gpA, gpInterioor, String[256]; cmd = strtok(cmdtext, idx); if(strcmp(cmd, "/GetPos", true)==0) { new Get_ID; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, kleur, "Oeps, een foutje, Gebruik: /GetPos [ID]"); return 1; } GetPosID = strval(tmp); GetPlayerPos(GetPosID, gpX, gpY, gpZ); GetPlayerFacingAngle(GetPosID, gpA); GetPlayerInterioor(GetPosID, gpInterioor); format(String, sizeof(String), "Jouw positie: X: %d, Y: %d, Z: %d, Angle:%d, Interioor: %d",gpX,gpY,gpZ,gpA,gpInterioor); SendClientMessage(playerid, kleur, String); return 1; } return 0; } ergens onder aan je script plak je dit strtok(const string[], &index) { new length = strlen(string); while ((index < length) && (string[index] <= ' ')) { index++; } new result[20], offset = index; while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; return result; } Informatie volgt later!!!! ========================================================================= ========================================================================= MyPos Je eigenpositie bekijken. In deze command zit maar 1 moeilijk ding: format. je begint met new Float:MyPos_X, Float:MyPos_Y, Float:MyPos_Z, Float:MyPos_A, MyPos_String[256], MyPos_Interioor; Bij een string (MyPos_String) Moet een bepaalde grote bij, hoe dat precies zit weet ik niet maar nu gebruiken we even: 256 ( [256] ) MyPos_Interioor?, ja we gaan ook maken dat je de interioor waar je inbent kan bekijken, Moet daar geen Float: voor?, Nee want een float is met 2cijfers 0.0 of 1.1 een interioor ID is maar 1cijfer 0 of 1 of 2 of 3 enz.. enz.. niet getreurd want verder hebben we weer de Floats die we aanmaken (new Float:). if (strcmp("/getpos", cmdtext, true, 10) == 0) { GetPlayerPos(playerid, MyPos_X, MyPos_Y, MyPos_Z); GetPlayerFacingAngle(playerid, MyPos_A); GetPlayerInterioor(playerid, MyPos_Interioor); Tot hier snappen de meeste het nog nu gaan de aan de string (MyPos_String) een tekst toevoegen. format(MyPos_String, sizeof(MyPos_String), "Hier komt dan de tekst"); als je het zo gebruikt zou je net zo goed SendClientMessage kunnen gebruiken, alleen bij SendClientMessage kan je geen Floats toevoegen of andere waardes toevoegen. format(MyPos_String, sizeof(MyPos_String), "Jouw positie: X: %d, Y: %d, Z: %d, Angle:%d, Interioor: %d"); %d ??, %d linkt door naar de varible die er achter staat voorbeeld 1: %d, 2: %d één, twee De %d achter 1 linkt door naar 'één' en de %d achter de 2 linkt door naar 'twee' best simpel eigenlijk format(MyPos_String, sizeof(MyPos_String), "Jouw positie: X: %d, Y: %d, Z: %d, Angle:%d, Interioor: %d",MyPos_X, MyPos_Y, MyPos_Z, MyPos_A, MyPos_Interioor); zo wordt het , voor de gene die het nog niet snappen: Wiki Sa-mp Om de string te verstuuren gebruiken we wel SendClientMessage alleen vullen we die iets anders in, namelijk zo: SendClientMessage(playerid, kleur, MyPos_String); dit snap je vast wel je command is nu if (strcmp("/getpos", cmdtext, true, 10) == 0) { GetPlayerPos(playerid, MyPos_X, MyPos_Y, MyPos_Z); GetPlayerFacingAngle(playerid, MyPos_A); GetPlayerInterioor(playerid, MyPos_Interioor); format(MyPos_String, sizeof(MyPos_String), "Jouw positie: X: %d, Y: %d, Z: %d, Angle:%d, Interioor: %d",MyPos_X, MyPos_Y, MyPos_Z, MyPos_A, MyPos_Interioor); SendClientMessage(playerid, kleur, MyPos_String); ff return 1; dr onder enzo. if (strcmp("/getpos", cmdtext, true, 10) == 0) { GetPlayerPos(playerid, MyPos_X, MyPos_Y, MyPos_Z); GetPlayerFacingAngle(playerid, MyPos_A); GetPlayerInterioor(playerid, MyPos_Interioor); format(MyPos_String, sizeof(MyPos_String), "Jouw positie: X: %d, Y: %d, Z: %d, Angle:%d, Interioor: %d",MyPos_X, MyPos_Y, MyPos_Z, MyPos_A, MyPos_Interioor); SendClientMessage(playerid, kleur, MyPos_String); return 1; } het is nu klaar!, Dus zo maak je /MyPos CMD ========================================================================= ========================================================================= Voor nog meer tutorials kijk bij de KLIK> <KLIK Bewerkt: 21 augustus 2009 door Crusher!! 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.