MajorGames4 1 Odesláno: 4. Únor, 2018 Share Odesláno: 4. Únor, 2018 Ahojte, robím FS na Carmenu, a chcem sa len spýtať že ako mám spraviť, aby sa dané auto spawnulo pred hráča? Link to comment Share on other sites More sharing options...
0 rEf 53 Odesláno: 4. Únor, 2018 Share Odesláno: 4. Únor, 2018 (upraveno) Zjistíš si pozici hráče tudíž new Float:x, Float:y, Float:z, Float:a; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, a); a vytvoříš vozidlo CreateVehicle(411, x, y, z, a, -1, -1, -1); pak si jen doladíš jestli to chceš vedle nebo před X či Y +2.0 třeba Edited 4. Únor, 2018 by rEf Link to comment Share on other sites More sharing options...
0 MajorGames4 1 Odesláno: 5. Únor, 2018 Author Share Odesláno: 5. Únor, 2018 (upraveno) Takto to asi nie je správne že? :/ Lebo keď zadám ID, spadne server. (PS: Mám tam pridané definície...) Spoiler new Float:x,Float:y,Float:z; gpp(id, x, y, z); if(getpm(id) < 10) return scm(id,-1,"[!] Nemáš dostatok peňazí!"); cv(strval(inputtext),x,y,z,-1,-1,60); scm(id,-1,"[!] Tvoje vozidlo bolo úspešne vytvorené!"); Edited 5. Únor, 2018 by MajorGames4 Link to comment Share on other sites More sharing options...
0 rEf 53 Odesláno: 5. Únor, 2018 Share Odesláno: 5. Únor, 2018 Nechápu moc ty zkratky každopádně x, y, z kde máš angle? podívej se na sa-mp wiki jak co funguje ... pro vozidlo potřebuješ 4 spawn pozice Link to comment Share on other sites More sharing options...
0 rEf 53 Odesláno: 5. Únor, 2018 Share Odesláno: 5. Únor, 2018 http://wiki.sa-mp.com/wiki/CreateVehicle Link to comment Share on other sites More sharing options...
0 ]Virus[ 1 Odesláno: 5. Únor, 2018 Share Odesláno: 5. Únor, 2018 před 7 hodinami, MajorGames4 said: Takto to asi nie je správne že? :/ Lebo keď zadám ID, spadne server. (PS: Mám tam pridané definície...) Hide contents new Float:x,Float:y,Float:z; gpp(id, x, y, z); if(getpm(id) < 10) return scm(id,-1,"[!] Nemáš dostatok peňazí!"); cv(strval(inputtext),x,y,z,-1,-1,60); scm(id,-1,"[!] Tvoje vozidlo bolo úspešne vytvorené!"); Skus: new Float:x, Float:y, Float:z; // Souřadnice x,y,z takže kde stojí hráč new Float:angle;// Souřadnice angle takže pohled GetPlayerPos(playerid, x, y, z);// Zisti souřadnice hráče GetPlayerFacingAngle(playerid, angle);// Zisti hračovy pohled if(GetPlayerMoney(playerid) < 10) return SendClientMessage(playerid, -1, "[!] Nemáš dostatok peňazí!"); // Zisti jestlí hráč má 10$ CreateVehicle(strval(inputtext), x, y, z, angle, -1, -1, 60);// Vytvoří auto na pozici x,y,z,angle SendClientMessage(playerid, -1, "[!] Tvoje vozidlo bolo úspešne vytvorené!"); // Pošle správu Jinak tohle je kod pro playerid tudíž hráč co vyvolává tuhle akci s id a kdyby jsi chtěl pro id který nemá ten kdo to vyvolává tak new ID; a psát místo playerid - ID Link to comment Share on other sites More sharing options...
0 ]Virus[ 1 Odesláno: 5. Únor, 2018 Share Odesláno: 5. Únor, 2018 před 7 hodinami, rEf said: Nechápu moc ty zkratky každopádně x, y, z kde máš angle? podívej se na sa-mp wiki jak co funguje ... pro vozidlo potřebuješ 4 spawn pozice On má: gpp jako GetPlayerPos getpm jako GetPlayerMoney cv jako CreateVehicle scm jako SendClientMessage Link to comment Share on other sites More sharing options...
0 DuFF 79 Odesláno: 5. Únor, 2018 Share Odesláno: 5. Únor, 2018 (upraveno) Ak chceš spawnúť vozidlo vždy pred hráča, bojím sa, že sa budeš musieť pohrať s goniometrickými funkciami, pretože v závislosti od rotácie hráča (GetPlayerFacingAngle) budeš musieť upraviť x a y spawnovaného auta. Dá sa to spraviť tak, že si zistíš rotáciu hráča (angle), vyrobíš si jednotkový vektor v tvare (cos angle; sin angle), ten potom vynásobíš vzdialenosťou, v ktorej chceš mať auto od hráča a pripočítaš ho k súradniciam hráča. Tak dostaneš súradnice auta... Potom je tam ešte jeden menší problém s facing angle v GTA, uhly v GTA nejdú v smere ale v protismere hodinových ručičiek, preto mám v kóde používam 360 - angle. Spoiler SpawnVehicleInFrontOfPlayer(playerid, model, Float:distance = 2.0) { new Float:x; new Float:y; new Float:z; new Float:angle; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, angle); CreateVehicle(model, x + floatcos(360 - angle, degrees) * distance, y + floatsin(360 - angle, degrees) * distance, z, angle + 90, random(256), random(256), -1); } Podobný príklad nájdeš v ukážkovom kóde: http://wiki.sa-mp.com/wiki/Floatsin Prípadne môžeš využiť funkciu priamo z wiki: Spoiler GetPosInFrontOfPlayer(playerid, Float:distance, &Float:x, &Float:y, &Float:z) { if(GetPlayerPos(playerid, x, y, z)) // this functions returns 0 if the player is not connected { new Float:z_angle; GetPlayerFacingAngle(playerid, z_angle); x += distance * floatsin(-z_angle, degrees); // angles in GTA go counter-clockwise, so we need to reverse the retrieved angle y += distance * floatcos(-z_angle, degrees); return 1; // return 1 on success, the actual coordinates are returned by reference } return 0; // return 0 if the player isn't connected } SpawnVehicleInFrontOfPlayer(playerid, model, Float:distance = 2.0) { new Float:x; new Float:y; new Float:z; new Float:angle; GetPlayerFacingAngle(playerid, angle); GetPosInFrontOfPlayer(playerid, distance, x, y, z); CreateVehicle(model, x, y, z, angle + 90, random(256), random(256), -1); } Dúfam, že tieto kódy fungujú, netestoval som ich, mali by spawnovať vozidlá pred hráča a v takom uhle, že sa pred hráčom objavia dvere vodiča. Edited 5. Únor, 2018 by DuFF Link to comment Share on other sites More sharing options...
0 Tanga 131 Odesláno: 5. Únor, 2018 Share Odesláno: 5. Únor, 2018 (upraveno) Ja len pre úplnosť, keďže ja by som to nevedel, lebo v škole som nič nerobil.. Sinus/kosinus sa používa pri vyjadrení vzťahu medzi 2 stranami a uhlom medzi nimi v pravouhlom trojuholniku. Platí, že sin(θ) = protilahla/prepona cos(θ) = prilahla/prepona, kde θ (čítaj theta) je uhol a "protilahla" a "prepona" su dlžky danych stran... (protilahla/prilahla oproti uhlu). A teda, pre preponu dĺžky 1 môžeme vety prepísať ako sin(θ) = protilahla/1 = protilahla cos(θ) = prilahla/1 = prilahla Obrázok vyššie tiež môžeš brať tak, že je to pohlad na hráča z vtáčej perspektívy (zhora) a θ je uhol, kam sa hráč pozerá. Ty teda namiesto vytvorenia auta na hráčovej pozícii, toto auto chceš posunúť po "stranách trojuholníka", aby sa nespawnlo na hráčovi, ale pred ním.Ako je z kružnice s polomerom 1 zrejmé, protilahla a prilahla budú tiež desatinné čísla medzi 0 a 1. Toto desatinné číslo následne treba vynásobiť vzdialenosťou (2 metre?) v ktorej chceš od seba to auto vytvoriť. Tiež keďže samp používa divné uhly, musíš použiť ich záporné hodnoty... Toto bolo také vysvetlenie toho princípu, čo duff myslel. Kódy spomenuté pred ním podľa mňa nie sú správne (ich autori nepochopili ako si to myslel). Ak máš ešte nejaké otázky, môžeš sa pýtať. Niekto určite pomôže. Edited 5. Únor, 2018 by Tanga viac detajlov, snad lepšie 1 Link to comment Share on other sites More sharing options...
0 rEf 53 Odesláno: 5. Únor, 2018 Share Odesláno: 5. Únor, 2018 (upraveno) Mě jen napadlo že místo toho aby se to vozidlo objevilo před ním nebo vedle to už záleží jak si s tím pohraješ tak bych možná použil PutPlayerInVehicle aby se spawnul přímo v autě :-D Stejně si do toho auta bude sedat. (hádám) Edited 5. Únor, 2018 by rEf Link to comment Share on other sites More sharing options...
0 rEf 53 Odesláno: 5. Únor, 2018 Share Odesláno: 5. Únor, 2018 (upraveno) Udělám příklad ačkoliv už tam není ani potřeba moc angle no napíšu ti ho tam. new vozitko, Float:x, Float:y, Float:z, Float:angle; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, angle); vozitko = CreateVehicle(411, x, y, z, angle, -1, -1, 60); PutPlayerInVehicle(playerid, vozitko, 0); Krom toho 60 na respawn je moc málo dej si víc ... Edited 5. Únor, 2018 by rEf Link to comment Share on other sites More sharing options...
0 ForestCZE 2 Odesláno: 18. Únor, 2018 Share Odesláno: 18. Únor, 2018 (upraveno) Mimo funkce: GetXYInFrontOfPlayer(playerid, &Float:vx, &Float:vy, Float:vdistance) { new Float:va; GetPlayerPos(playerid, vx, vy, va); GetPlayerFacingAngle(playerid, va); if(GetPlayerVehicleID(playerid)) { GetVehicleZAngle(GetPlayerVehicleID(playerid), va); } vx += (vdistance * floatsin(-va, degrees)); vy += (vdistance * floatcos(-va, degrees)); } A v příkazu: new Float:xyza[4]; GetPlayerPos(playerid, xyza[0], xyza[1], xyza[2]); GetXYInFrontOfPlayer(playerid, xyza[0], xyza[1], 5.0); GetPlayerFacingAngle(playerid, xyza[3]); CreateVehicle(strval(inputtext), xyza[0], xyza[1], xyza[2]+2.0, xyza[3]+90.0, -1, -1, 5000); Edited 18. Únor, 2018 by ForestCZE Link to comment Share on other sites More sharing options...
Dotaz
MajorGames4 1
Ahojte, robím FS na Carmenu, a chcem sa len spýtať že ako mám spraviť, aby sa dané auto spawnulo pred hráča?
Link to comment
Share on other sites
11 odpovědí na tuto otázku
Recommended Posts