mrazek44 0 Odesláno: 3. Červenec, 2014 Share Odesláno: 3. Červenec, 2014 Ahoj Byl bych rád kdyby někdo poradil ohledně pickupu. Chtěl bych pickup který změní auto, když do toho pickupu vjede aby se mu změnilo auto které tam zadám. Pokoušel jsem se o to , ale marně tím Vás moc prosím o pomoc a radu. Prosím jak bych měl postupovat. Pickupi jsem dělal, jako na port a ammo ale na auta jsem nepřišel. Děkuji Asi nějak tak to Najde se někdo, prosím. Link to comment Share on other sites More sharing options...
0 pinka123 1 Odesláno: 3. Červenec, 2014 Share Odesláno: 3. Červenec, 2014 Vyskúšaj IsPlayerinRangeOfPoint() Link to comment Share on other sites More sharing options...
0 mrazek44 0 Odesláno: 3. Červenec, 2014 Author Share Odesláno: 3. Červenec, 2014 Dík Jen nemohu přijít na ten postup Link to comment Share on other sites More sharing options...
0 Jakub Kučera 6 Odesláno: 3. Červenec, 2014 Share Odesláno: 3. Červenec, 2014 Vyskúšaj IsPlayerinRangeOfPoint() To mu vůbec nepomůže, jinak udělal jsem tady celý kód a je funkční #include <a_samp> new mojeauto[MAX_PLAYERS]; new carpickup; public OnFilterScriptInit() { print("\n--------------------------------------"); print(" ------ Pickup Car[By Expertik] --------"); print("--------------------------------------\n"); carpickup = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); return 1; } public OnFilterScriptExit() { return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { if(pickupid == carpickup) { ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Změna vozidla", "Zadejte id Vozidla", "Změnit", "Zrušit"); } return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { if (strcmp("/pickup", cmdtext, true, 10) == 0) { SetPlayerPos(playerid, 2057.8423,1313.7885,10.9077); return 1; } return 0; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == 1) { if(response) { new idauta, zprava[64]; idauta = strval(inputtext); if(idauta < 400 || idauta > 611) { SendClientMessage(playerid, 0xFFFFFFFF, "ID vozidla může pouze od 400 do 611."); } else { new idsmazanehoauta; idsmazanehoauta= GetPlayerVehicleID(playerid); DestroyVehicle(idsmazanehoauta); new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); mojeauto[playerid] = CreateVehicle(idauta, x, y, z, 82.2873, 0, 1, 60); PutPlayerInVehicle(playerid, mojeauto[playerid], 0); format(zprava, sizeof(zprava), "Vaše auto bylo změněno na auto s ID %d.", idauta); SendClientMessage(playerid, 0xFFFFFFFF, zprava); DestroyPickup(carpickup); carpickup = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); } } } return 1; } Pickup jde sebrat pouze, pokud je hráč ve vozidle Link to comment Share on other sites More sharing options...
0 Jakub Kučera 6 Odesláno: 3. Červenec, 2014 Share Odesláno: 3. Červenec, 2014 Pane bože, videl si to video? On to chce do závodu ako má MTA:DM preboha. A nie nejaký tvoj skopírovaný odniekadiaľ dialog Ak viem správne tak ten pickup čo sa dá zobrať autom je nefunkčný (polofunkčný či ako to bolo). Stačí timer & WIKI: IsPlayerInRangeOfPoint. No a aby po zmene vozidla sa auto nezastavilo tak najskôr zisti starému autu WIKI: GetVehicleVelocity a tomu novému nastav cez WIKI: SetVehicleVelocity 1. Napsal tam, že to chce na auto které zadá, tak sem pochopil dialog. 2. Nikde tu nenapsal že to je na MTA:DM Race a to že sem přiloží toto video, neznamená to že to tak chce(Ale asi máš pravdu) 3. Jsem to nikde neskopíroval Jinak by to šlo i takto #include <a_samp> new mojeauto[MAX_PLAYERS]; new carpickup; public OnFilterScriptInit() { print("\n--------------------------------------"); print(" ------ Pickup Car[By Expertik] --------"); print("--------------------------------------\n"); carpickup = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); return 1; } public OnFilterScriptExit() { return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { if(pickupid == carpickup) { new idsmazanehoauta; idsmazanehoauta= GetPlayerVehicleID(playerid); DestroyVehicle(idsmazanehoauta); new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); mojeauto[playerid] = CreateVehicle(idauta, x, y, z, 82.2873, 0, 1, 60); PutPlayerInVehicle(playerid, mojeauto[playerid], 0); DestroyPickup(carpickup); carpickup = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); } return 1; } Link to comment Share on other sites More sharing options...
0 mrazek44 0 Odesláno: 3. Červenec, 2014 Author Share Odesláno: 3. Červenec, 2014 Děkuji že pomáháte, jsem rád že se někdo našel. Jinak to potřebuji na DM závod. něco jako na tom videu. #include <a_samp>new mojeauto[MAX_PLAYERS];new carpickup;public OnFilterScriptInit(){ print("\n--------------------------------------");print(" ------ Pickup Car[by Expertik] --------");print("--------------------------------------\n"); carpickup = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); return 1;}public OnFilterScriptExit(){ return 1;}public OnPlayerPickUpPickup(playerid, pickupid){if(pickupid == carpickup){new idsmazanehoauta;idsmazanehoauta= GetPlayerVehicleID(playerid);DestroyVehicle(idsmazanehoauta);new Float:x, Float:y, Float:z;GetPlayerPos(playerid, x, y, z);mojeauto[playerid] = CreateVehicle(idauta, x, y, z, 82.2873, 0, 1, 60);PutPlayerInVehicle(playerid, mojeauto[playerid], 0);DestroyPickup(carpickup);carpickup = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1);}return 1;} Jede to, ale problém je ten že, jak vědu do pickupu auto se změní ale, nemůže se odlepit od toho pickupu a portuje se auto dokola. Ještě jednou díky za rady Link to comment Share on other sites More sharing options...
0 Jakub Kučera 6 Odesláno: 4. Červenec, 2014 Share Odesláno: 4. Červenec, 2014 Tak to zkus takto : #include <a_samp> new mojeauto[MAX_PLAYERS]; new carpickup; forward pickup(); public OnFilterScriptInit() { print("\n--------------------------------------"); print(" ------ Pickup Car[By Expertik] --------"); print("--------------------------------------\n"); carpickup = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); return 1; } public OnFilterScriptExit() { return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { if(pickupid == carpickup) { new idsmazanehoauta; idsmazanehoauta= GetPlayerVehicleID(playerid); DestroyVehicle(idsmazanehoauta); new Float:x, Float:y, Float:z, Float:a; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, a); mojeauto[playerid] = CreateVehicle(402, x, y, z, a, 0, 1, 60); PutPlayerInVehicle(playerid, mojeauto[playerid], 0); DestroyPickup(carpickup); SetTimer("pickup", 5000, false); } return 1; } public pickup() { carpickup = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); } Link to comment Share on other sites More sharing options...
0 mrazek44 0 Odesláno: 4. Červenec, 2014 Author Share Odesláno: 4. Červenec, 2014 Dík Expertik Je to dobré, ještě kdyby se to auto nepřibrzdilo tak by to bylo super, ale je to zatím nejlepší rada i když děkuji všem co se snaží poradit. Mám ještě dotaz. Jak mám udělat to aby auto které vjede do pickupu bylo rovně tak jak na něho vědu a ne bokem. Pokud někdo poradí budu mu moc vděčný. Jinak další auto jsem udělal tak to ale, ale problém je v tom že, když do něho vědu neukáže se. Zatím jsem to dal do fileskriptu, to abych si mohl v klidu vyzkoušet #include <a_samp> #if defined FILTERSCRIPT #endif new mojeauto[MAX_PLAYERS]; new carpickup; new carpickup1; forward pickup(); forward pickup1(); public OnFilterScriptInit() { carpickup = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); carpickup1 = CreatePickup(1277, 14, 2069.1807,1272.4403,10.6719, -1); return 1; } public OnFilterScriptExit() { return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { if(pickupid == carpickup) { new idsmazanehoauta; idsmazanehoauta= GetPlayerVehicleID(playerid); DestroyVehicle(idsmazanehoauta); new Float:x, Float:y, Float:z, Float:a; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, a); mojeauto[playerid] = CreateVehicle(402, x, y, z, a, 0, 1, 60); PutPlayerInVehicle(playerid, mojeauto[playerid], 0); DestroyPickup(carpickup); SetTimer("pickup", 5000, false); } if(pickupid == carpickup1) { new idsmazanehoauta; idsmazanehoauta= GetPlayerVehicleID(playerid); DestroyVehicle(idsmazanehoauta); new Float:x, Float:y, Float:z, Float:a; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, a); mojeauto[playerid] = CreateVehicle(451, x, y, z, a, 0, 1, 60); PutPlayerInVehicle(playerid, mojeauto[playerid], 0); DestroyPickup(carpickup1); SetTimer("pickup", 5000, false); } return 1; } public pickup() { carpickup = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); carpickup1 = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); } Prosím o radu Link to comment Share on other sites More sharing options...
0 LosO 5 Odesláno: 4. Červenec, 2014 Share Odesláno: 4. Červenec, 2014 sa pozri do popisu videa je tam odkaz na samp forum maš tam aj includ na to.. Link to comment Share on other sites More sharing options...
0 mrazek44 0 Odesláno: 4. Červenec, 2014 Author Share Odesláno: 4. Červenec, 2014 No sem se díval ale nějak mě to hlava nabere Prosím o radu Link to comment Share on other sites More sharing options...
0 Jakub Kučera 6 Odesláno: 4. Červenec, 2014 Share Odesláno: 4. Červenec, 2014 Dík Expertik Je to dobré, ještě kdyby se to auto nepřibrzdilo tak by to bylo super, ale je to zatím nejlepší rada i když děkuji všem co se snaží poradit. Mám ještě dotaz. Jak mám udělat to aby auto které vjede do pickupu bylo rovně tak jak na něho vědu a ne bokem. Pokud někdo poradí budu mu moc vděčný. Jinak další auto jsem udělal tak to ale, ale problém je v tom že, když do něho vědu neukáže se. Zatím jsem to dal do fileskriptu, to abych si mohl v klidu vyzkoušet #include <a_samp> #if defined FILTERSCRIPT #endif new mojeauto[MAX_PLAYERS]; new carpickup; new carpickup1; forward pickup(); forward pickup1(); public OnFilterScriptInit() { carpickup = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); carpickup1 = CreatePickup(1277, 14, 2069.1807,1272.4403,10.6719, -1); return 1; } public OnFilterScriptExit() { return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { if(pickupid == carpickup) { new idsmazanehoauta; idsmazanehoauta= GetPlayerVehicleID(playerid); DestroyVehicle(idsmazanehoauta); new Float:x, Float:y, Float:z, Float:a; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, a); mojeauto[playerid] = CreateVehicle(402, x, y, z, a, 0, 1, 60); PutPlayerInVehicle(playerid, mojeauto[playerid], 0); DestroyPickup(carpickup); SetTimer("pickup", 5000, false); } if(pickupid == carpickup1) { new idsmazanehoauta; idsmazanehoauta= GetPlayerVehicleID(playerid); DestroyVehicle(idsmazanehoauta); new Float:x, Float:y, Float:z, Float:a; GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, a); mojeauto[playerid] = CreateVehicle(451, x, y, z, a, 0, 1, 60); PutPlayerInVehicle(playerid, mojeauto[playerid], 0); DestroyPickup(carpickup1); SetTimer("pickup", 5000, false); } return 1; } public pickup() { carpickup = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); carpickup1 = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); } Prosím o radu Máš tam špatně if Musí tam být else if #include <a_samp> new mojeauto[MAX_PLAYERS]; new carpickup; new carpickup1; forward pickup(); forward pickup1(); public OnFilterScriptInit() { carpickup = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); carpickup1 = CreatePickup(1277, 14, 2069.1807,1272.4403,10.6719, -1); return 1; } public OnFilterScriptExit() { return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { if(pickupid == carpickup) { new idsmazanehoauta; idsmazanehoauta= GetPlayerVehicleID(playerid); DestroyVehicle(idsmazanehoauta); new Float:x, Float:y, Float:z, Float:a; GetPlayerPos(playerid, x, y, z); GetVehicleZAngle(GetPlayerVehicleID(i),a); mojeauto[playerid] = CreateVehicle(402, x, y, z, a, 0, 1, 60); PutPlayerInVehicle(playerid, mojeauto[playerid], 0); DestroyPickup(carpickup); SetTimer("pickup", 5000, false); } else if(pickupid == carpickup1) { new idsmazanehoauta; idsmazanehoauta= GetPlayerVehicleID(playerid); DestroyVehicle(idsmazanehoauta); new Float:x, Float:y, Float:z, Float:a; GetPlayerPos(playerid, x, y, z); GetVehicleZAngle(GetPlayerVehicleID(i),a); mojeauto[playerid] = CreateVehicle(451, x, y, z, a, 0, 1, 60); PutPlayerInVehicle(playerid, mojeauto[playerid], 0); DestroyPickup(carpickup1); SetTimer("pickup", 5000, false); } return 1; } public pickup() { carpickup = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); carpickup1 = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); } Link to comment Share on other sites More sharing options...
0 mrazek44 0 Odesláno: 4. Červenec, 2014 Author Share Odesláno: 4. Červenec, 2014 Aha dik, ale ten pickup se stejně neukáže když do něho vědu, ten první jo ale druhý ne Link to comment Share on other sites More sharing options...
0 INSANE_25_ICON 0 Odesláno: 5. Červenec, 2014 Share Odesláno: 5. Červenec, 2014 #include <a_samp> #define CV CreateVehicle public OnGameModeInit(){Create3DTextLabel("Pickup", 0x1705faff, -2030.3196,-100.7644,35.1641,40,0,1); // PIckup napíš si tam co chceš | 0x1705faff farba |a to dalšie pozicia | 40 - draw distance, 0 - virtual world, 1 - nepojde videt cez steny pickup = CreatePickup(1581,1,-2030.3196,-100.7644,35.1641); // Vytvoreni Pickup | 1581 ID objektu | 1 neviem čo znamena | to dalšie suradnicereturn 1;}public OnPlayerPickUpPickup(playerid, pickupid){if(pickupid == pickup){ new Float:X; new Float:Y;new Float:Z;CV(556,X,Y+5,Z,1,1,1,200000); // CreateVehicle | 556 ID auta | suradnice |return 1;}return 0;} A tak pokračuj ďalej. Link to comment Share on other sites More sharing options...
0 Globální moderátor Hip 191 Odesláno: 5. Červenec, 2014 Globální moderátor Share Odesláno: 5. Červenec, 2014 taková maličkost na konec, když na ten pickup vjedeš tak se to dá udělat že se změní auto, ale bohužel jen v MTA to je automaticky že můžeš jet dál. Jinak řečeno vjedeš tam, změní se ti auto, ale budeš mít nulovou rychlost. Co jsem slyšel tak existuje něco co ti jako rychlost dá ale nikdy jsem s tím nedělal Link to comment Share on other sites More sharing options...
0 Jakub Kučera 6 Odesláno: 5. Červenec, 2014 Share Odesláno: 5. Červenec, 2014 Takže, vygooglil jsem si tu rychlost, co tu psal Hipster #include <a_samp> new mojeauto[MAX_PLAYERS]; new carpickup; new carpickup1; forward pickup(); forward pickup1(); public OnFilterScriptInit() { carpickup = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); carpickup1 = CreatePickup(1277, 14, 2069.1807,1272.4403,10.6719, -1); return 1; } public OnFilterScriptExit() { return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { if(pickupid == carpickup) { new idsmazanehoauta; idsmazanehoauta= GetPlayerVehicleID(playerid); DestroyVehicle(idsmazanehoauta); new Float:x, Float:y, Float:z, Float:a; GetPlayerPos(playerid, x, y, z); GetVehicleZAngle(idsmazanehoauta,a); mojeauto[playerid] = CreateVehicle(402, x, y, z, a, 0, 1, 60); PutPlayerInVehicle(playerid, mojeauto[playerid], 0); SetVehicleSpeed(mojeauto[playerid], Float:100); DestroyPickup(carpickup); SetTimer("pickup", 5000, false); } else if(pickupid == carpickup1) { new idsmazanehoauta; idsmazanehoauta= GetPlayerVehicleID(playerid); DestroyVehicle(idsmazanehoauta); new Float:x, Float:y, Float:z, Float:a; GetPlayerPos(playerid, x, y, z); GetVehicleZAngle(idsmazanehoauta,a); mojeauto[playerid] = CreateVehicle(451, x, y, z, a, 0, 1, 60); PutPlayerInVehicle(playerid, mojeauto[playerid], 0); SetVehicleSpeed(mojeauto[playerid], Float:100); DestroyPickup(carpickup1); SetTimer("pickup1", 5000, false); } return 1; } public pickup() { carpickup = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); } public pickup1() { carpickup1 = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); } stock SetVehicleSpeed(vehicleid, Float:speed) { new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2, Float:a; GetVehicleVelocity(vehicleid, x1, y1, z1); GetVehiclePos(vehicleid, x2, y2, z2); GetVehicleZAngle(vehicleid, a); a = 360 - a; x1 = (floatsin(a, degrees) * (speed/100) + floatcos(a, degrees) * 0 + x2) - x2; y1 = (floatcos(a, degrees) * (speed/100) + floatsin(a, degrees) * 0 + y2) - y2; SetVehicleVelocity(vehicleid, x1, y1, z1); } Mělo by to fungovat Link to comment Share on other sites More sharing options...
0 Uživatel 0 Odesláno: 5. Červenec, 2014 Share Odesláno: 5. Červenec, 2014 Takže, vygooglil jsem si tu rychlost, co tu psal Hipster #include <a_samp> new mojeauto[MAX_PLAYERS]; new carpickup; new carpickup1; forward pickup(); forward pickup1(); public OnFilterScriptInit() { carpickup = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); carpickup1 = CreatePickup(1277, 14, 2069.1807,1272.4403,10.6719, -1); return 1; } public OnFilterScriptExit() { return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { if(pickupid == carpickup) { new idsmazanehoauta; idsmazanehoauta= GetPlayerVehicleID(playerid); DestroyVehicle(idsmazanehoauta); new Float:x, Float:y, Float:z, Float:a; GetPlayerPos(playerid, x, y, z); GetVehicleZAngle(idsmazanehoauta,a); mojeauto[playerid] = CreateVehicle(402, x, y, z, a, 0, 1, 60); PutPlayerInVehicle(playerid, mojeauto[playerid], 0); SetVehicleSpeed(mojeauto[playerid], Float:100); DestroyPickup(carpickup); SetTimer("pickup", 5000, false); } else if(pickupid == carpickup1) { new idsmazanehoauta; idsmazanehoauta= GetPlayerVehicleID(playerid); DestroyVehicle(idsmazanehoauta); new Float:x, Float:y, Float:z, Float:a; GetPlayerPos(playerid, x, y, z); GetVehicleZAngle(idsmazanehoauta,a); mojeauto[playerid] = CreateVehicle(451, x, y, z, a, 0, 1, 60); PutPlayerInVehicle(playerid, mojeauto[playerid], 0); SetVehicleSpeed(mojeauto[playerid], Float:100); DestroyPickup(carpickup1); SetTimer("pickup1", 5000, false); } return 1; } public pickup() { carpickup = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); } public pickup1() { carpickup1 = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, -1); } stock SetVehicleSpeed(vehicleid, Float:speed) { new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2, Float:a; GetVehicleVelocity(vehicleid, x1, y1, z1); GetVehiclePos(vehicleid, x2, y2, z2); GetVehicleZAngle(vehicleid, a); a = 360 - a; x1 = (floatsin(a, degrees) * (speed/100) + floatcos(a, degrees) * 0 + x2) - x2; y1 = (floatcos(a, degrees) * (speed/100) + floatsin(a, degrees) * 0 + y2) - y2; SetVehicleVelocity(vehicleid, x1, y1, z1); } Mělo by to fungovat Za 1. Nechápu, proč zbytečně zakládáš timer, kde vytváříš další pickupy ( Samozřejmě, pokud je například po závodě chce resetnout, pro další tak to ano ). Za 2. Nemusíš neustále u každého sebraného pickupu si zakládat další proměnné. Ten callb se týká, pokud sebere jakýkoliv pickup. To samé i z normálními proměnnami. Mít tam: new carpickup; new carpickup1; new carpickup2; new carpickup3; new carpickup4; Není zrovna idelání. Za 3: Taky, když přidáváš tu rychlost, za prvé Float: je u proměn, a za druhé 100 je moc. Co kdyby měl pomalejší auto?. Za 4: Řekni mi, jak můžeš kontrolovat ID vozidla, které jsi zníčil? Prosim (Vyzkoušeno a funguje dle přání autora ): #include <a_samp> new mojeauto[MAX_PLAYERS], carpickup[3]; public OnFilterScriptInit() { carpickup[0] = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, 0); carpickup[1] = CreatePickup(1277, 14, 2069.1807,1272.4403,10.6719, 0); carpickup[2] = CreatePickup(1277, 14, 2069.0012, 1189.341, 10.6719, 0); return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { new Float:Pos[4], idsmazanehoauta = GetPlayerVehicleID(playerid); if(pickupid == carpickup[0]) { GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]), GetVehicleZAngle(idsmazanehoauta,Pos[3]); DestroyVehicle(GetPlayerVehicleID(playerid)); //Vztoupil na první s nějakým vozidlem. mojeauto[playerid] = CreateVehicle(402, Pos[0], Pos[1], Pos[2],Pos[3], 0, 1, 60); PutPlayerInVehicle(playerid, mojeauto[playerid], 0); SetVehicleSpeed(GetPlayerVehicleID(playerid), 50.0); DestroyPickup(carpickup[0]); } else if(pickupid == carpickup[1]) { GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]), GetVehicleZAngle(idsmazanehoauta,Pos[3]); mojeauto[playerid] = CreateVehicle(412, Pos[0], Pos[1], Pos[2],Pos[3], 0, 1, 60); DestroyVehicle(idsmazanehoauta); PutPlayerInVehicle(playerid, mojeauto[playerid], 0); SetVehicleSpeed(GetPlayerVehicleID(playerid), 50.0); DestroyPickup(carpickup[1]); } else if(pickupid == carpickup[2]) { GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]), GetVehicleZAngle(idsmazanehoauta,Pos[3]); mojeauto[playerid] = CreateVehicle(412, Pos[0], Pos[1], Pos[2],Pos[3], 0, 1, 60); DestroyVehicle(idsmazanehoauta); PutPlayerInVehicle(playerid, mojeauto[playerid], 0); SetVehicleSpeed(GetPlayerVehicleID(playerid), 50.0); DestroyPickup(carpickup[2]); } return 1; } stock SetVehicleSpeed(vehicleid, Float:speed) { new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2, Float:a; GetVehicleVelocity(vehicleid, x1, y1, z1); GetVehiclePos(vehicleid, x2, y2, z2); GetVehicleZAngle(vehicleid, a); a = 360 - a; x1 = (floatsin(a, degrees) * (speed/100) + floatcos(a, degrees) * 0 + x2) - x2; y1 = (floatcos(a, degrees) * (speed/100) + floatsin(a, degrees) * 0 + y2) - y2; SetVehicleVelocity(vehicleid, x1, y1, z1); } Link to comment Share on other sites More sharing options...
0 Jakub Kučera 6 Odesláno: 5. Červenec, 2014 Share Odesláno: 5. Červenec, 2014 Za 1. Nechápu, proč zbytečně zakládáš timer, kde vytváříš další pickupy ( Samozřejmě, pokud je například po závodě chce resetnout, pro další tak to ano ). Za 2. Nemusíš neustále u každého sebraného pickupu si zakládat další proměnné. Ten callb se týká, pokud sebere jakýkoliv pickup. To samé i z normálními proměnnami. Mít tam: new carpickup; new carpickup1; new carpickup2; new carpickup3; new carpickup4; Není zrovna idelání. Za 3: Taky, když přidáváš tu rychlost, za prvé Float: je u proměn, a za druhé 100 je moc. Co kdyby měl pomalejší auto?. Za 4: Řekni mi, jak můžeš kontrolovat ID vozidla, které jsi zníčil? Prosim (Vyzkoušeno a funguje dle přání autora ): #include <a_samp> new mojeauto[MAX_PLAYERS], carpickup[3]; public OnFilterScriptInit() { carpickup[0] = CreatePickup(1277, 14, 2069.0979,1312.9354,10.6719, 0); carpickup[1] = CreatePickup(1277, 14, 2069.1807,1272.4403,10.6719, 0); carpickup[2] = CreatePickup(1277, 14, 2069.0012, 1189.341, 10.6719, 0); return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { new Float:Pos[4], idsmazanehoauta = GetPlayerVehicleID(playerid); if(pickupid == carpickup[0]) { GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]), GetVehicleZAngle(idsmazanehoauta,Pos[3]); DestroyVehicle(GetPlayerVehicleID(playerid)); //Vztoupil na první s nějakým vozidlem. mojeauto[playerid] = CreateVehicle(402, Pos[0], Pos[1], Pos[2],Pos[3], 0, 1, 60); PutPlayerInVehicle(playerid, mojeauto[playerid], 0); SetVehicleSpeed(GetPlayerVehicleID(playerid), 50.0); DestroyPickup(carpickup[0]); } else if(pickupid == carpickup[1]) { GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]), GetVehicleZAngle(idsmazanehoauta,Pos[3]); mojeauto[playerid] = CreateVehicle(412, Pos[0], Pos[1], Pos[2],Pos[3], 0, 1, 60); DestroyVehicle(idsmazanehoauta); PutPlayerInVehicle(playerid, mojeauto[playerid], 0); SetVehicleSpeed(GetPlayerVehicleID(playerid), 50.0); DestroyPickup(carpickup[1]); } else if(pickupid == carpickup[2]) { GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]), GetVehicleZAngle(idsmazanehoauta,Pos[3]); mojeauto[playerid] = CreateVehicle(412, Pos[0], Pos[1], Pos[2],Pos[3], 0, 1, 60); DestroyVehicle(idsmazanehoauta); PutPlayerInVehicle(playerid, mojeauto[playerid], 0); SetVehicleSpeed(GetPlayerVehicleID(playerid), 50.0); DestroyPickup(carpickup[2]); } return 1; } stock SetVehicleSpeed(vehicleid, Float:speed) { new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2, Float:a; GetVehicleVelocity(vehicleid, x1, y1, z1); GetVehiclePos(vehicleid, x2, y2, z2); GetVehicleZAngle(vehicleid, a); a = 360 - a; x1 = (floatsin(a, degrees) * (speed/100) + floatcos(a, degrees) * 0 + x2) - x2; y1 = (floatcos(a, degrees) * (speed/100) + floatsin(a, degrees) * 0 + y2) - y2; SetVehicleVelocity(vehicleid, x1, y1, z1); } Celkem pěkné, ale jelikož to chce do závodu, tak když hráč projede pickupem, tak zmizí a už se neobjeví, proto jsem tam měl ten timer na vytvoření po 5 sekundách (To zjištění a nastavení rychlosti jsem měl špatně, mělo to být s tim PlayerId ) Link to comment Share on other sites More sharing options...
Dotaz
mrazek44 0
Ahoj
Byl bych rád kdyby někdo poradil ohledně pickupu.
Chtěl bych pickup který změní auto, když do toho pickupu vjede aby se mu změnilo auto které tam zadám.
Pokoušel jsem se o to , ale marně tím Vás moc prosím o pomoc a radu.
Prosím jak bych měl postupovat.
Pickupi jsem dělal, jako na port a ammo ale na auta jsem nepřišel.
Děkuji
Asi nějak tak to
Najde se někdo, prosím.
Link to comment
Share on other sites
16 odpovědí na tuto otázku
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now