Megadreams Geplaatst: 19 februari 2010 Rapport Geplaatst: 19 februari 2010 (bewerkt) Tutorial: Velocity Wat is velocity? Velocity is de hoeveelheid x, y, z coords van de huidige positie waarnaar de speler zich beweegt ik geef een voorbeeld: Speler: X: 2540.0 Y: 1250.0 Z: 10.0 De speler gaat nu bijvoorbeeld in een auto beginnen rijden. Velocity: X: 5.0 Y: 2.0 Z: 0.0 X+X(Velocity) = 2545.0 Y+Y(Velocity) = 1252 Z+Z(Velocity) = 10.0 De speler zal dus eindigen op die coords als de huidige actie niet onderbroken word de velocity past zich de hele tijd aan, als je stil staat is het vanzelfsprekend dat alles in de velocity op 0 staat. Functies SetPlayerVelocity(playerid, Float:x, Float:y, Float:z); Je kan met deze functie handmatig een speler zijn velocity instellen, dit werkt enkel als de speler te voet is. SetVehicleVelocity(vehicleid, Float:x, Float:y, Float:z); Stel de velocity van een voertuig in. GetPlayerVelocity(playerid, &Float:x, &Float:y, &Float:z); Verkrijg de velocity van een speler en slaag deze op. GetVehicleVelocity(vehicleid, &Float:x, &Float:y, &Float:z); Verkrijg de velocity van een voertuig en slaag deze op. Voorbeelden Je kan met velocity een speler in de lucht laten springen net als een voertuig ik geef een voorbeeld van hoe je een /jump commando maakt: // Bij OnPlayerCommandText if (!strcmp("/jump", cmdtext)) // commando /jump { if(IsPlayerInAnyVehicle(playerid)) // Kijk of de speler in een voertuig zit. { SetVehicleVelocity(GetPlayerVehicleID(playerid), 0.0, 0.0,3); // Laat voertuig springen. } else { SetPlayerVelocity(playerid,0.0,0.0,25); // Laat speler springen. } return 1; } Een speedboost functie die ook werkt te voet: // Bij OnPlayerCommandText if (!strcmp("/speed", cmdtext)) // commando /jump { new Float:x, Float:y, Float:z; if(IsPlayerInAnyVehicle(playerid)) // Kijk of de speler in een voertuig zit. { GetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z); // Haal de huidige speler velocity op. SetVehicleVelocity(GetPlayerVehicleID(playerid), x*1.2, y*1.2, z*1.2); // Stel voertuig velocity in (*1.2) } else { GetPlayerVelocity(playerid,x,y,z); // Haal de huidige speler velocity op. SetPlayerVelocity(playerid, x*1.2, y*1.2, z*1.2); // Stel speler velocity in (*1.2). } return 1; } Snelheid (in kmh) ophalen van de speler (met dank aan Wanted): stock GetPlayerSpeed(playerid) // zet dit vanonder in je gamemode! { new Float:X, Float:Y, Float:Z; if(IsPlayerInAnyVehicle(playerid)) { GetVehicleVelocity(GetPlayerVehicleID(playerid), X, Y, Z); return floatround(floatmul(floatmul(floatsqroot(floatpower(floatabs(X), 2) + floatpower(floatabs(Y), 2) + floatpower(floatabs(Z), 2)), 100), 1.621371192), floatround_round); } else { GetPlayerVelocity(playerid, X, Y, Z); return floatround(floatmul(floatmul(floatsqroot(floatpower(floatabs(X), 2) + floatpower(floatabs(Y), 2) + floatpower(floatabs(Z), 2)), 100), 1.621371192), floatround_round); } } // voorbeeld om snelheid voor speler op te halen. new Str[128]; format(Str, sizeof(Str), "Je rijd nu %d kilometer per uur!", GetPlayerSpeed(playerid)); SendClientMessage(playerid, Str); return 1; Mijn tutorial is nu afgelopen, heb je ideeën of vragen, meld het in dit topic. Bewerkt: 19 februari 2010 door megadreams Reageren
grandtheftauto... Geplaatst: 19 februari 2010 Rapport Geplaatst: 19 februari 2010 Nice tut! Vraagje: als je /speed doet rij je dan opeens 200 km per uur? dus speed boost? Verder mooie tut! Reageren
Megadreams Geplaatst: 19 februari 2010 Auteur Rapport Geplaatst: 19 februari 2010 (bewerkt) Dan rij je ongeloofelijk snel vooruit, maar dan ook enkel vooruit er word bij je huidige velocity wat bijgeteld. Bewerkt: 19 februari 2010 door megadreams Reageren
grandtheftauto... Geplaatst: 19 februari 2010 Rapport Geplaatst: 19 februari 2010 Dan rij je ongeloofelijk snel naar de coords die de velocity zal aanduiden. o.o maar kan je ook met velocity iets maken waar je 200 km rijd? en dat je dat met alt moet doen? Reageren
Megadreams Geplaatst: 19 februari 2010 Auteur Rapport Geplaatst: 19 februari 2010 Dat gaat, je kan zelfs een speedometer maken dankzij de velocity, hier is op de wiki van sa-mp een tut/voorbeeld voor met een button een speedboost en jump te maken: Samp-Wiki Reageren
Wanted Geplaatst: 19 februari 2010 Rapport Geplaatst: 19 februari 2010 AANVRAAG: Het herstellen van de indentatie, deze word verpest door het forum systeem, en ik krijg die op geen enkele manier goed. Natuurlijk wil ik dat wel even voor je doen. // Bij OnPlayerCommandText if (!strcmp("/jump", cmdtext)) // commando /jump { if(IsPlayerInAnyVehicle(playerid)) // Kijk of de speler in een voertuig zit. { SetVehicleVelocity(GetPlayerVehicleID(playerid), 0.0, 0.0,3); // Laat voertuig springen. } else { SetPlayerVelocity(playerid,0.0,0.0,25); // Laat speler springen. } return 1; } // Bij OnPlayerCommandText if (!strcmp("/speed", cmdtext)) // commando /jump { new Float:x, Float:y, Float:z; if(IsPlayerInAnyVehicle(playerid)) // Kijk of de speler in een voertuig zit. { GetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z); // Haal de huidige speler velocity op. SetVehicleVelocity(GetPlayerVehicleID(playerid), x*1.2, y*1.2, z*1.2); // Stel voertuig velocity in (*1.2) } else { GetPlayerVelocity(playerid,x,y,z); // Haal de huidige speler velocity op. SetPlayerVelocity(playerid, x*1.2, y*1.2, z*1.2); // Stel speler velocity in (*1.2). } return 1; } Verder is het een makkelijke tutorial voor beginners, die nog niets van Velocity snappen. Reageren
goudewup Geplaatst: 19 februari 2010 Rapport Geplaatst: 19 februari 2010 Zou je kunnen vertellen he je de snelheid in kilometers berekent? Verder hele mooie tutorial trouwens Reageren
Wanted Geplaatst: 19 februari 2010 Rapport Geplaatst: 19 februari 2010 Zou je kunnen vertellen he je de snelheid in kilometers berekent? Daarvoor heb ik een handige functie gemaakt. Plaats onderstaande code in je gamemode (NIET in een andere functie). stock GetPlayerSpeed(playerid) { new Float:X, Float:Y, Float:Z; if(IsPlayerInAnyVehicle(playerid)) { GetVehicleVelocity(GetPlayerVehicleID(playerid), X, Y, Z); return floatround(floatmul(floatmul(floatsqroot(floatpower(floatabs(X), 2) + floatpower(floatabs(Y), 2) + floatpower(floatabs(Z), 2)), 100), 1.621371192), floatround_round); } else { GetPlayerVelocity(playerid, X, Y, Z); return floatround(floatmul(floatmul(floatsqroot(floatpower(floatabs(X), 2) + floatpower(floatabs(Y), 2) + floatpower(floatabs(Z), 2)), 100), 1.621371192), floatround_round); } } Voorbeeld van hoe je de functie dan kan gebruiken: new Str[128]; format(Str, sizeof(Str), "Je rijd nu %d kilometer per uur!", GetPlayerSpeed(playerid)); SendClientMessage(playerid, Str); return 1; MVG, Wanted Reageren
Megadreams Geplaatst: 19 februari 2010 Auteur Rapport Geplaatst: 19 februari 2010 Daarvoor heb ik een handige functie gemaakt. Plaats onderstaande code in je gamemode (NIET in een andere functie). CODE Voorbeeld van hoe je de functie dan kan gebruiken: CODE MVG, Wanted Ik heb dat als voorbeeld in de tutorial geplaatst Reageren
GTAguillaume Geplaatst: 19 februari 2010 Rapport Geplaatst: 19 februari 2010 Nice Wanted. Hoe wist je eigenlijk dat je van de GTA coördinaten naar KM/U 1.621371192% was? Reageren
goudewup Geplaatst: 19 februari 2010 Rapport Geplaatst: 19 februari 2010 dat is vast ooit door iemand uitgerekend en doorgegeven... Maar heel erg bedankt voor de code! Reageren
Crusher!! Geplaatst: 19 februari 2010 Rapport Geplaatst: 19 februari 2010 dat is vast ooit door iemand uitgerekend en doorgegeven... Maar heel erg bedankt voor de code! Grappig.. Reageren
VonLeeuwen Geplaatst: 22 februari 2010 Rapport Geplaatst: 22 februari 2010 Hallo! Ik had nog een paar vragen nadat ik de speedcheckdinges heb zitten doorlezen/proberen te begrijpen. Het betreft deze line: floatround(floatmul(floatmul(floatsqroot(floatpower(floatabs(X), 2) + floatpower(floatabs(Y), 2) + floatpower(floatabs(Z), 2)), 100), 1.621371192), floatround_round); Ik snap dat ik er niets van hoef te snappen, maar toch wil ik er wat van snappen Na wat 'onderzoek' gedaan te hebben op wiki.sa-mp.com, ben ik tot de volgende conclusie's gekomen: Floatround = Float Afronden Floatmul = Float x Float Floatpower = Float x Getal Floatround_round = afronden naar boven (hoort bij Floatround) Klopt dit, en wat zijn dan Floatsqroot en Floatabs? Ze staan wel op de wiki, maar hier begrijp ik bijster weinig van. Hartelijk dank als je me kan antwoorden Reageren
Wanted Geplaatst: 22 februari 2010 Rapport Geplaatst: 22 februari 2010 (bewerkt) Floatsqroot is volgens mij de wortel ergens van uitrekenen, en Floatabs geeft de absolute waarde van een float. EDIT: Floatround_round = afronden naar het dichtstbijzijnde ronde getal (hoort bij Floatround) Bewerkt: 22 februari 2010 door Wanted Reageren
VonLeeuwen Geplaatst: 22 februari 2010 Rapport Geplaatst: 22 februari 2010 (bewerkt) Floatsqroot is volgens mij de wortel ergens van uitrekenen, en Floatabs geeft de absolute waarde van een float. EDIT: Floatround_round = afronden naar het dichtstbijzijnde ronde getal (hoort bij Floatround) Oké, hartelijk dank [offtopic] jippie, ben een autodief [/offtopic] Bewerkt: 22 februari 2010 door VonLeeuwen 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.